{"version":3,"file":"static/js/main.f4ea40c9.js","mappings":";wCAYa,IAAIA,EAAGC,EAAQ,KAASC,EAAGD,EAAQ,KAAa,SAASE,EAAEC,GAAG,IAAI,IAAIC,EAAE,yDAAyDD,EAAEE,EAAE,EAAEA,EAAEC,UAAUC,OAAOF,IAAID,GAAG,WAAWI,mBAAmBF,UAAUD,IAAI,MAAM,yBAAyBF,EAAE,WAAWC,EAAE,gHAAgH,CAAC,IAAIK,EAAG,IAAIC,IAAIC,EAAG,CAAC,EAAE,SAASC,EAAGT,EAAEC,GAAGS,EAAGV,EAAEC,GAAGS,EAAGV,EAAE,UAAUC,EAAE,CACxb,SAASS,EAAGV,EAAEC,GAAW,IAARO,EAAGR,GAAGC,EAAMD,EAAE,EAAEA,EAAEC,EAAEG,OAAOJ,IAAIM,EAAGK,IAAIV,EAAED,GAAG,CAC5D,IAAIY,IAAK,qBAAqBC,QAAQ,qBAAqBA,OAAOC,UAAU,qBAAqBD,OAAOC,SAASC,eAAeC,EAAGC,OAAOC,UAAUC,eAAeC,EAAG,8VAA8VC,EACpgB,CAAC,EAAEC,EAAG,CAAC,EACiN,SAASC,EAAEvB,EAAEC,EAAEC,EAAEsB,EAAEC,EAAEC,EAAEC,GAAGC,KAAKC,gBAAgB,IAAI5B,GAAG,IAAIA,GAAG,IAAIA,EAAE2B,KAAKE,cAAcN,EAAEI,KAAKG,mBAAmBN,EAAEG,KAAKI,gBAAgB9B,EAAE0B,KAAKK,aAAajC,EAAE4B,KAAKM,KAAKjC,EAAE2B,KAAKO,YAAYT,EAAEE,KAAKQ,kBAAkBT,CAAC,CAAC,IAAIU,EAAE,CAAC,EACpb,uIAAuIC,MAAM,KAAKC,SAAQ,SAASvC,GAAGqC,EAAErC,GAAG,IAAIuB,EAAEvB,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,CAAC,gBAAgB,kBAAkB,CAAC,YAAY,SAAS,CAAC,UAAU,OAAO,CAAC,YAAY,eAAeuC,SAAQ,SAASvC,GAAG,IAAIC,EAAED,EAAE,GAAGqC,EAAEpC,GAAG,IAAIsB,EAAEtB,EAAE,GAAE,EAAGD,EAAE,GAAG,MAAK,GAAG,EAAG,IAAG,CAAC,kBAAkB,YAAY,aAAa,SAASuC,SAAQ,SAASvC,GAAGqC,EAAErC,GAAG,IAAIuB,EAAEvB,EAAE,GAAE,EAAGA,EAAEwC,cAAc,MAAK,GAAG,EAAG,IAC1e,CAAC,cAAc,4BAA4B,YAAY,iBAAiBD,SAAQ,SAASvC,GAAGqC,EAAErC,GAAG,IAAIuB,EAAEvB,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,8OAA8OsC,MAAM,KAAKC,SAAQ,SAASvC,GAAGqC,EAAErC,GAAG,IAAIuB,EAAEvB,EAAE,GAAE,EAAGA,EAAEwC,cAAc,MAAK,GAAG,EAAG,IACxb,CAAC,UAAU,WAAW,QAAQ,YAAYD,SAAQ,SAASvC,GAAGqC,EAAErC,GAAG,IAAIuB,EAAEvB,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,UAAU,YAAYuC,SAAQ,SAASvC,GAAGqC,EAAErC,GAAG,IAAIuB,EAAEvB,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,OAAO,OAAO,OAAO,QAAQuC,SAAQ,SAASvC,GAAGqC,EAAErC,GAAG,IAAIuB,EAAEvB,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,UAAU,SAASuC,SAAQ,SAASvC,GAAGqC,EAAErC,GAAG,IAAIuB,EAAEvB,EAAE,GAAE,EAAGA,EAAEwC,cAAc,MAAK,GAAG,EAAG,IAAG,IAAIC,EAAG,gBAAgB,SAASC,EAAG1C,GAAG,OAAOA,EAAE,GAAG2C,aAAa,CAIxZ,SAASC,EAAG5C,EAAEC,EAAEC,EAAEsB,GAAG,IAAIC,EAAEY,EAAElB,eAAelB,GAAGoC,EAAEpC,GAAG,MAAQ,OAAOwB,EAAE,IAAIA,EAAES,KAAKV,KAAK,EAAEvB,EAAEG,SAAS,MAAMH,EAAE,IAAI,MAAMA,EAAE,IAAI,MAAMA,EAAE,IAAI,MAAMA,EAAE,MAP9I,SAAYD,EAAEC,EAAEC,EAAEsB,GAAG,GAAG,OAAOvB,GAAG,qBAAqBA,GADqE,SAAYD,EAAEC,EAAEC,EAAEsB,GAAG,GAAG,OAAOtB,GAAG,IAAIA,EAAEgC,KAAK,OAAM,EAAG,cAAcjC,GAAG,IAAK,WAAW,IAAK,SAAS,OAAM,EAAG,IAAK,UAAU,OAAGuB,IAAc,OAAOtB,GAASA,EAAE2B,gBAAmD,WAAnC7B,EAAEA,EAAEwC,cAAcK,MAAM,EAAE,KAAsB,UAAU7C,GAAE,QAAQ,OAAM,EAAG,CAC/T8C,CAAG9C,EAAEC,EAAEC,EAAEsB,GAAG,OAAM,EAAG,GAAGA,EAAE,OAAM,EAAG,GAAG,OAAOtB,EAAE,OAAOA,EAAEgC,MAAM,KAAK,EAAE,OAAOjC,EAAE,KAAK,EAAE,OAAM,IAAKA,EAAE,KAAK,EAAE,OAAO8C,MAAM9C,GAAG,KAAK,EAAE,OAAO8C,MAAM9C,IAAI,EAAEA,EAAE,OAAM,CAAE,CAOtE+C,CAAG/C,EAAEC,EAAEuB,EAAED,KAAKtB,EAAE,MAAMsB,GAAG,OAAOC,EARxK,SAAYzB,GAAG,QAAGgB,EAAGiC,KAAK3B,EAAGtB,KAAegB,EAAGiC,KAAK5B,EAAGrB,KAAeoB,EAAG8B,KAAKlD,GAAUsB,EAAGtB,IAAG,GAAGqB,EAAGrB,IAAG,GAAS,GAAE,CAQwDmD,CAAGlD,KAAK,OAAOC,EAAEF,EAAEoD,gBAAgBnD,GAAGD,EAAEqD,aAAapD,EAAE,GAAGC,IAAIuB,EAAEO,gBAAgBhC,EAAEyB,EAAEQ,cAAc,OAAO/B,EAAE,IAAIuB,EAAES,MAAQ,GAAGhC,GAAGD,EAAEwB,EAAEK,cAAcN,EAAEC,EAAEM,mBAAmB,OAAO7B,EAAEF,EAAEoD,gBAAgBnD,IAAaC,EAAE,KAAXuB,EAAEA,EAAES,OAAc,IAAIT,IAAG,IAAKvB,EAAE,GAAG,GAAGA,EAAEsB,EAAExB,EAAEsD,eAAe9B,EAAEvB,EAAEC,GAAGF,EAAEqD,aAAapD,EAAEC,KAAI,CAHjd,0jCAA0jCoC,MAAM,KAAKC,SAAQ,SAASvC,GAAG,IAAIC,EAAED,EAAEuD,QAAQd,EACzmCC,GAAIL,EAAEpC,GAAG,IAAIsB,EAAEtB,EAAE,GAAE,EAAGD,EAAE,MAAK,GAAG,EAAG,IAAG,2EAA2EsC,MAAM,KAAKC,SAAQ,SAASvC,GAAG,IAAIC,EAAED,EAAEuD,QAAQd,EAAGC,GAAIL,EAAEpC,GAAG,IAAIsB,EAAEtB,EAAE,GAAE,EAAGD,EAAE,gCAA+B,GAAG,EAAG,IAAG,CAAC,WAAW,WAAW,aAAauC,SAAQ,SAASvC,GAAG,IAAIC,EAAED,EAAEuD,QAAQd,EAAGC,GAAIL,EAAEpC,GAAG,IAAIsB,EAAEtB,EAAE,GAAE,EAAGD,EAAE,wCAAuC,GAAG,EAAG,IAAG,CAAC,WAAW,eAAeuC,SAAQ,SAASvC,GAAGqC,EAAErC,GAAG,IAAIuB,EAAEvB,EAAE,GAAE,EAAGA,EAAEwC,cAAc,MAAK,GAAG,EAAG,IACldH,EAAEmB,UAAU,IAAIjC,EAAE,YAAY,GAAE,EAAG,aAAa,gCAA+B,GAAG,GAAI,CAAC,MAAM,OAAO,SAAS,cAAcgB,SAAQ,SAASvC,GAAGqC,EAAErC,GAAG,IAAIuB,EAAEvB,EAAE,GAAE,EAAGA,EAAEwC,cAAc,MAAK,GAAG,EAAG,IAE5L,IAAIiB,EAAG7D,EAAG8D,mDAAmDC,EAAGC,OAAOC,IAAI,iBAAiBC,EAAGF,OAAOC,IAAI,gBAAgBE,EAAGH,OAAOC,IAAI,kBAAkBG,EAAGJ,OAAOC,IAAI,qBAAqBI,EAAGL,OAAOC,IAAI,kBAAkBK,EAAGN,OAAOC,IAAI,kBAAkBM,EAAGP,OAAOC,IAAI,iBAAiBO,EAAGR,OAAOC,IAAI,qBAAqBQ,EAAGT,OAAOC,IAAI,kBAAkBS,EAAGV,OAAOC,IAAI,uBAAuBU,EAAGX,OAAOC,IAAI,cAAcW,EAAGZ,OAAOC,IAAI,cAAcD,OAAOC,IAAI,eAAeD,OAAOC,IAAI,0BACje,IAAIY,EAAGb,OAAOC,IAAI,mBAAmBD,OAAOC,IAAI,uBAAuBD,OAAOC,IAAI,eAAeD,OAAOC,IAAI,wBAAwB,IAAIa,EAAGd,OAAOe,SAAS,SAASC,EAAG5E,GAAG,OAAG,OAAOA,GAAG,kBAAkBA,EAAS,KAAwC,oBAAnCA,EAAE0E,GAAI1E,EAAE0E,IAAK1E,EAAE,eAA0CA,EAAE,IAAI,CAAC,IAAoB6E,EAAhBC,EAAE7D,OAAO8D,OAAU,SAASC,EAAGhF,GAAG,QAAG,IAAS6E,EAAG,IAAI,MAAMI,OAAQ,CAAC,MAAM/E,GAAG,IAAID,EAAEC,EAAEgF,MAAMC,OAAOC,MAAM,gBAAgBP,EAAG5E,GAAGA,EAAE,IAAI,EAAE,CAAC,MAAM,KAAK4E,EAAG7E,CAAC,CAAC,IAAIqF,GAAG,EACzb,SAASC,EAAGtF,EAAEC,GAAG,IAAID,GAAGqF,EAAG,MAAM,GAAGA,GAAG,EAAG,IAAInF,EAAE+E,MAAMM,kBAAkBN,MAAMM,uBAAkB,EAAO,IAAI,GAAGtF,EAAE,GAAGA,EAAE,WAAW,MAAMgF,OAAQ,EAAEhE,OAAOuE,eAAevF,EAAEiB,UAAU,QAAQ,CAACuE,IAAI,WAAW,MAAMR,OAAQ,IAAI,kBAAkBS,SAASA,QAAQC,UAAU,CAAC,IAAID,QAAQC,UAAU1F,EAAE,GAAG,CAAC,MAAM2F,GAAG,IAAIpE,EAAEoE,CAAC,CAACF,QAAQC,UAAU3F,EAAE,GAAGC,EAAE,KAAK,CAAC,IAAIA,EAAEgD,MAAM,CAAC,MAAM2C,GAAGpE,EAAEoE,CAAC,CAAC5F,EAAEiD,KAAKhD,EAAEiB,UAAU,KAAK,CAAC,IAAI,MAAM+D,OAAQ,CAAC,MAAMW,GAAGpE,EAAEoE,CAAC,CAAC5F,GAAG,CAAC,CAAC,MAAM4F,GAAG,GAAGA,GAAGpE,GAAG,kBAAkBoE,EAAEV,MAAM,CAAC,IAAI,IAAIzD,EAAEmE,EAAEV,MAAM5C,MAAM,MACnfZ,EAAEF,EAAE0D,MAAM5C,MAAM,MAAMX,EAAEF,EAAErB,OAAO,EAAEyF,EAAEnE,EAAEtB,OAAO,EAAE,GAAGuB,GAAG,GAAGkE,GAAGpE,EAAEE,KAAKD,EAAEmE,IAAIA,IAAI,KAAK,GAAGlE,GAAG,GAAGkE,EAAElE,IAAIkE,IAAI,GAAGpE,EAAEE,KAAKD,EAAEmE,GAAG,CAAC,GAAG,IAAIlE,GAAG,IAAIkE,EAAG,MAAMlE,IAAQ,IAAJkE,GAASpE,EAAEE,KAAKD,EAAEmE,GAAG,CAAC,IAAIC,EAAE,KAAKrE,EAAEE,GAAG4B,QAAQ,WAAW,QAA6F,OAArFvD,EAAE+F,aAAaD,EAAEE,SAAS,iBAAiBF,EAAEA,EAAEvC,QAAQ,cAAcvD,EAAE+F,cAAqBD,CAAC,QAAO,GAAGnE,GAAG,GAAGkE,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQR,GAAG,EAAGJ,MAAMM,kBAAkBrF,CAAC,CAAC,OAAOF,EAAEA,EAAEA,EAAE+F,aAAa/F,EAAEiG,KAAK,IAAIjB,EAAGhF,GAAG,EAAE,CAC9Z,SAASkG,EAAGlG,GAAG,OAAOA,EAAEmG,KAAK,KAAK,EAAE,OAAOnB,EAAGhF,EAAEkC,MAAM,KAAK,GAAG,OAAO8C,EAAG,QAAQ,KAAK,GAAG,OAAOA,EAAG,YAAY,KAAK,GAAG,OAAOA,EAAG,gBAAgB,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,OAAOhF,EAAEsF,EAAGtF,EAAEkC,MAAK,GAAM,KAAK,GAAG,OAAOlC,EAAEsF,EAAGtF,EAAEkC,KAAKkE,QAAO,GAAM,KAAK,EAAE,OAAOpG,EAAEsF,EAAGtF,EAAEkC,MAAK,GAAM,QAAQ,MAAM,GAAG,CACxR,SAASmE,EAAGrG,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,oBAAoBA,EAAE,OAAOA,EAAE+F,aAAa/F,EAAEiG,MAAM,KAAK,GAAG,kBAAkBjG,EAAE,OAAOA,EAAE,OAAOA,GAAG,KAAK+D,EAAG,MAAM,WAAW,KAAKD,EAAG,MAAM,SAAS,KAAKG,EAAG,MAAM,WAAW,KAAKD,EAAG,MAAM,aAAa,KAAKK,EAAG,MAAM,WAAW,KAAKC,EAAG,MAAM,eAAe,GAAG,kBAAkBtE,EAAE,OAAOA,EAAEsG,UAAU,KAAKnC,EAAG,OAAOnE,EAAE+F,aAAa,WAAW,YAAY,KAAK7B,EAAG,OAAOlE,EAAEuG,SAASR,aAAa,WAAW,YAAY,KAAK3B,EAAG,IAAInE,EAAED,EAAEoG,OAC7Z,OADoapG,EAAEA,EAAE+F,eACnd/F,EAAE,MADieA,EAAEC,EAAE8F,aAClf9F,EAAEgG,MAAM,IAAY,cAAcjG,EAAE,IAAI,cAAqBA,EAAE,KAAKuE,EAAG,OAA6B,QAAtBtE,EAAED,EAAE+F,aAAa,MAAc9F,EAAEoG,EAAGrG,EAAEkC,OAAO,OAAO,KAAKsC,EAAGvE,EAAED,EAAEwG,SAASxG,EAAEA,EAAEyG,MAAM,IAAI,OAAOJ,EAAGrG,EAAEC,GAAG,CAAC,MAAMC,GAAG,EAAE,OAAO,IAAI,CAC3M,SAASwG,EAAG1G,GAAG,IAAIC,EAAED,EAAEkC,KAAK,OAAOlC,EAAEmG,KAAK,KAAK,GAAG,MAAM,QAAQ,KAAK,EAAE,OAAOlG,EAAE8F,aAAa,WAAW,YAAY,KAAK,GAAG,OAAO9F,EAAEsG,SAASR,aAAa,WAAW,YAAY,KAAK,GAAG,MAAM,qBAAqB,KAAK,GAAG,OAAkB/F,GAAXA,EAAEC,EAAEmG,QAAWL,aAAa/F,EAAEiG,MAAM,GAAGhG,EAAE8F,cAAc,KAAK/F,EAAE,cAAcA,EAAE,IAAI,cAAc,KAAK,EAAE,MAAM,WAAW,KAAK,EAAE,OAAOC,EAAE,KAAK,EAAE,MAAM,SAAS,KAAK,EAAE,MAAM,OAAO,KAAK,EAAE,MAAM,OAAO,KAAK,GAAG,OAAOoG,EAAGpG,GAAG,KAAK,EAAE,OAAOA,IAAI+D,EAAG,aAAa,OAAO,KAAK,GAAG,MAAM,YACtf,KAAK,GAAG,MAAM,WAAW,KAAK,GAAG,MAAM,QAAQ,KAAK,GAAG,MAAM,WAAW,KAAK,GAAG,MAAM,eAAe,KAAK,GAAG,MAAM,gBAAgB,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,GAAG,oBAAoB/D,EAAE,OAAOA,EAAE8F,aAAa9F,EAAEgG,MAAM,KAAK,GAAG,kBAAkBhG,EAAE,OAAOA,EAAE,OAAO,IAAI,CAAC,SAAS0G,EAAG3G,GAAG,cAAcA,GAAG,IAAK,UAAU,IAAK,SAAS,IAAK,SAAS,IAAK,YAAqB,IAAK,SAAS,OAAOA,EAAE,QAAQ,MAAM,GAAG,CACra,SAAS4G,EAAG5G,GAAG,IAAIC,EAAED,EAAEkC,KAAK,OAAOlC,EAAEA,EAAE6G,WAAW,UAAU7G,EAAEwC,gBAAgB,aAAavC,GAAG,UAAUA,EAAE,CAEtF,SAAS6G,EAAG9G,GAAGA,EAAE+G,gBAAgB/G,EAAE+G,cADvD,SAAY/G,GAAG,IAAIC,EAAE2G,EAAG5G,GAAG,UAAU,QAAQE,EAAEe,OAAO+F,yBAAyBhH,EAAEiH,YAAY/F,UAAUjB,GAAGuB,EAAE,GAAGxB,EAAEC,GAAG,IAAID,EAAEmB,eAAelB,IAAI,qBAAqBC,GAAG,oBAAoBA,EAAEgH,KAAK,oBAAoBhH,EAAEuF,IAAI,CAAC,IAAIhE,EAAEvB,EAAEgH,IAAIxF,EAAExB,EAAEuF,IAAiL,OAA7KxE,OAAOuE,eAAexF,EAAEC,EAAE,CAACkH,cAAa,EAAGD,IAAI,WAAW,OAAOzF,EAAEwB,KAAKrB,KAAK,EAAE6D,IAAI,SAASzF,GAAGwB,EAAE,GAAGxB,EAAE0B,EAAEuB,KAAKrB,KAAK5B,EAAE,IAAIiB,OAAOuE,eAAexF,EAAEC,EAAE,CAACmH,WAAWlH,EAAEkH,aAAmB,CAACC,SAAS,WAAW,OAAO7F,CAAC,EAAE8F,SAAS,SAAStH,GAAGwB,EAAE,GAAGxB,CAAC,EAAEuH,aAAa,WAAWvH,EAAE+G,cACxf,YAAY/G,EAAEC,EAAE,EAAE,CAAC,CAAkDuH,CAAGxH,GAAG,CAAC,SAASyH,EAAGzH,GAAG,IAAIA,EAAE,OAAM,EAAG,IAAIC,EAAED,EAAE+G,cAAc,IAAI9G,EAAE,OAAM,EAAG,IAAIC,EAAED,EAAEoH,WAAe7F,EAAE,GAAqD,OAAlDxB,IAAIwB,EAAEoF,EAAG5G,GAAGA,EAAE0H,QAAQ,OAAO,QAAQ1H,EAAE2H,QAAO3H,EAAEwB,KAAatB,IAAGD,EAAEqH,SAAStH,IAAG,EAAM,CAAC,SAAS4H,EAAG5H,GAAwD,GAAG,qBAAxDA,EAAEA,IAAI,qBAAqBc,SAASA,cAAS,IAAkC,OAAO,KAAK,IAAI,OAAOd,EAAE6H,eAAe7H,EAAE8H,IAAI,CAAC,MAAM7H,GAAG,OAAOD,EAAE8H,IAAI,CAAC,CACpa,SAASC,EAAG/H,EAAEC,GAAG,IAAIC,EAAED,EAAEyH,QAAQ,OAAO5C,EAAE,CAAC,EAAE7E,EAAE,CAAC+H,oBAAe,EAAOC,kBAAa,EAAON,WAAM,EAAOD,QAAQ,MAAMxH,EAAEA,EAAEF,EAAEkI,cAAcC,gBAAgB,CAAC,SAASC,EAAGpI,EAAEC,GAAG,IAAIC,EAAE,MAAMD,EAAEgI,aAAa,GAAGhI,EAAEgI,aAAazG,EAAE,MAAMvB,EAAEyH,QAAQzH,EAAEyH,QAAQzH,EAAE+H,eAAe9H,EAAEyG,EAAG,MAAM1G,EAAE0H,MAAM1H,EAAE0H,MAAMzH,GAAGF,EAAEkI,cAAc,CAACC,eAAe3G,EAAE6G,aAAanI,EAAEoI,WAAW,aAAarI,EAAEiC,MAAM,UAAUjC,EAAEiC,KAAK,MAAMjC,EAAEyH,QAAQ,MAAMzH,EAAE0H,MAAM,CAAC,SAASY,EAAGvI,EAAEC,GAAe,OAAZA,EAAEA,EAAEyH,UAAiB9E,EAAG5C,EAAE,UAAUC,GAAE,EAAG,CAC9d,SAASuI,EAAGxI,EAAEC,GAAGsI,EAAGvI,EAAEC,GAAG,IAAIC,EAAEyG,EAAG1G,EAAE0H,OAAOnG,EAAEvB,EAAEiC,KAAK,GAAG,MAAMhC,EAAK,WAAWsB,GAAM,IAAItB,GAAG,KAAKF,EAAE2H,OAAO3H,EAAE2H,OAAOzH,KAAEF,EAAE2H,MAAM,GAAGzH,GAAOF,EAAE2H,QAAQ,GAAGzH,IAAIF,EAAE2H,MAAM,GAAGzH,QAAQ,GAAG,WAAWsB,GAAG,UAAUA,EAA8B,YAA3BxB,EAAEoD,gBAAgB,SAAgBnD,EAAEkB,eAAe,SAASsH,GAAGzI,EAAEC,EAAEiC,KAAKhC,GAAGD,EAAEkB,eAAe,iBAAiBsH,GAAGzI,EAAEC,EAAEiC,KAAKyE,EAAG1G,EAAEgI,eAAe,MAAMhI,EAAEyH,SAAS,MAAMzH,EAAE+H,iBAAiBhI,EAAEgI,iBAAiB/H,EAAE+H,eAAe,CACla,SAASU,EAAG1I,EAAEC,EAAEC,GAAG,GAAGD,EAAEkB,eAAe,UAAUlB,EAAEkB,eAAe,gBAAgB,CAAC,IAAIK,EAAEvB,EAAEiC,KAAK,KAAK,WAAWV,GAAG,UAAUA,QAAG,IAASvB,EAAE0H,OAAO,OAAO1H,EAAE0H,OAAO,OAAO1H,EAAE,GAAGD,EAAEkI,cAAcG,aAAanI,GAAGD,IAAID,EAAE2H,QAAQ3H,EAAE2H,MAAM1H,GAAGD,EAAEiI,aAAahI,CAAC,CAAU,MAATC,EAAEF,EAAEiG,QAAcjG,EAAEiG,KAAK,IAAIjG,EAAEgI,iBAAiBhI,EAAEkI,cAAcC,eAAe,KAAKjI,IAAIF,EAAEiG,KAAK/F,EAAE,CACzV,SAASuI,GAAGzI,EAAEC,EAAEC,GAAM,WAAWD,GAAG2H,EAAG5H,EAAE2I,iBAAiB3I,IAAE,MAAME,EAAEF,EAAEiI,aAAa,GAAGjI,EAAEkI,cAAcG,aAAarI,EAAEiI,eAAe,GAAG/H,IAAIF,EAAEiI,aAAa,GAAG/H,GAAE,CAAC,IAAI0I,GAAGC,MAAMC,QAC7K,SAASC,GAAG/I,EAAEC,EAAEC,EAAEsB,GAAe,GAAZxB,EAAEA,EAAEgJ,QAAW/I,EAAE,CAACA,EAAE,CAAC,EAAE,IAAI,IAAIwB,EAAE,EAAEA,EAAEvB,EAAEE,OAAOqB,IAAIxB,EAAE,IAAIC,EAAEuB,KAAI,EAAG,IAAIvB,EAAE,EAAEA,EAAEF,EAAEI,OAAOF,IAAIuB,EAAExB,EAAEkB,eAAe,IAAInB,EAAEE,GAAGyH,OAAO3H,EAAEE,GAAG+I,WAAWxH,IAAIzB,EAAEE,GAAG+I,SAASxH,GAAGA,GAAGD,IAAIxB,EAAEE,GAAGgJ,iBAAgB,EAAG,KAAK,CAAmB,IAAlBhJ,EAAE,GAAGyG,EAAGzG,GAAGD,EAAE,KAASwB,EAAE,EAAEA,EAAEzB,EAAEI,OAAOqB,IAAI,CAAC,GAAGzB,EAAEyB,GAAGkG,QAAQzH,EAAiD,OAA9CF,EAAEyB,GAAGwH,UAAS,OAAGzH,IAAIxB,EAAEyB,GAAGyH,iBAAgB,IAAW,OAAOjJ,GAAGD,EAAEyB,GAAG0H,WAAWlJ,EAAED,EAAEyB,GAAG,CAAC,OAAOxB,IAAIA,EAAEgJ,UAAS,EAAG,CAAC,CACxY,SAASG,GAAGpJ,EAAEC,GAAG,GAAG,MAAMA,EAAEoJ,wBAAwB,MAAMpE,MAAMlF,EAAE,KAAK,OAAO+E,EAAE,CAAC,EAAE7E,EAAE,CAAC0H,WAAM,EAAOM,kBAAa,EAAOqB,SAAS,GAAGtJ,EAAEkI,cAAcG,cAAc,CAAC,SAASkB,GAAGvJ,EAAEC,GAAG,IAAIC,EAAED,EAAE0H,MAAM,GAAG,MAAMzH,EAAE,CAA+B,GAA9BA,EAAED,EAAEqJ,SAASrJ,EAAEA,EAAEgI,aAAgB,MAAM/H,EAAE,CAAC,GAAG,MAAMD,EAAE,MAAMgF,MAAMlF,EAAE,KAAK,GAAG6I,GAAG1I,GAAG,CAAC,GAAG,EAAEA,EAAEE,OAAO,MAAM6E,MAAMlF,EAAE,KAAKG,EAAEA,EAAE,EAAE,CAACD,EAAEC,CAAC,CAAC,MAAMD,IAAIA,EAAE,IAAIC,EAAED,CAAC,CAACD,EAAEkI,cAAc,CAACG,aAAa1B,EAAGzG,GAAG,CACnY,SAASsJ,GAAGxJ,EAAEC,GAAG,IAAIC,EAAEyG,EAAG1G,EAAE0H,OAAOnG,EAAEmF,EAAG1G,EAAEgI,cAAc,MAAM/H,KAAIA,EAAE,GAAGA,KAAMF,EAAE2H,QAAQ3H,EAAE2H,MAAMzH,GAAG,MAAMD,EAAEgI,cAAcjI,EAAEiI,eAAe/H,IAAIF,EAAEiI,aAAa/H,IAAI,MAAMsB,IAAIxB,EAAEiI,aAAa,GAAGzG,EAAE,CAAC,SAASiI,GAAGzJ,GAAG,IAAIC,EAAED,EAAE0J,YAAYzJ,IAAID,EAAEkI,cAAcG,cAAc,KAAKpI,GAAG,OAAOA,IAAID,EAAE2H,MAAM1H,EAAE,CAAC,SAAS0J,GAAG3J,GAAG,OAAOA,GAAG,IAAK,MAAM,MAAM,6BAA6B,IAAK,OAAO,MAAM,qCAAqC,QAAQ,MAAM,+BAA+B,CAC7c,SAAS4J,GAAG5J,EAAEC,GAAG,OAAO,MAAMD,GAAG,iCAAiCA,EAAE2J,GAAG1J,GAAG,+BAA+BD,GAAG,kBAAkBC,EAAE,+BAA+BD,CAAC,CAChK,IAAI6J,GAAe7J,GAAZ8J,IAAY9J,GAAsJ,SAASA,EAAEC,GAAG,GAAG,+BAA+BD,EAAE+J,cAAc,cAAc/J,EAAEA,EAAEgK,UAAU/J,MAAM,CAA2F,KAA1F4J,GAAGA,IAAI/I,SAASC,cAAc,QAAUiJ,UAAU,QAAQ/J,EAAEgK,UAAUC,WAAW,SAAajK,EAAE4J,GAAGM,WAAWnK,EAAEmK,YAAYnK,EAAEoK,YAAYpK,EAAEmK,YAAY,KAAKlK,EAAEkK,YAAYnK,EAAEqK,YAAYpK,EAAEkK,WAAW,CAAC,EAAvb,qBAAqBG,OAAOA,MAAMC,wBAAwB,SAAStK,EAAEC,EAAEsB,EAAEC,GAAG6I,MAAMC,yBAAwB,WAAW,OAAOvK,GAAEC,EAAEC,EAAM,GAAE,EAAEF,IACtK,SAASwK,GAAGxK,EAAEC,GAAG,GAAGA,EAAE,CAAC,IAAIC,EAAEF,EAAEmK,WAAW,GAAGjK,GAAGA,IAAIF,EAAEyK,WAAW,IAAIvK,EAAEwK,SAAwB,YAAdxK,EAAEyK,UAAU1K,EAAS,CAACD,EAAE0J,YAAYzJ,CAAC,CACtH,IAAI2K,GAAG,CAACC,yBAAwB,EAAGC,aAAY,EAAGC,mBAAkB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,SAAQ,EAAGC,cAAa,EAAGC,iBAAgB,EAAGC,aAAY,EAAGC,SAAQ,EAAGC,MAAK,EAAGC,UAAS,EAAGC,cAAa,EAAGC,YAAW,EAAGC,cAAa,EAAGC,WAAU,EAAGC,UAAS,EAAGC,SAAQ,EAAGC,YAAW,EAAGC,aAAY,EAAGC,cAAa,EAAGC,YAAW,EAAGC,eAAc,EAAGC,gBAAe,EAAGC,iBAAgB,EAAGC,YAAW,EAAGC,WAAU,EAAGC,YAAW,EAAGC,SAAQ,EAAGC,OAAM,EAAGC,SAAQ,EAAGC,SAAQ,EAAGC,QAAO,EAAGC,QAAO,EAClfC,MAAK,EAAGC,aAAY,EAAGC,cAAa,EAAGC,aAAY,EAAGC,iBAAgB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,eAAc,EAAGC,aAAY,GAAIC,GAAG,CAAC,SAAS,KAAK,MAAM,KAA6H,SAASC,GAAGzN,EAAEC,EAAEC,GAAG,OAAO,MAAMD,GAAG,mBAAmBA,GAAG,KAAKA,EAAE,GAAGC,GAAG,kBAAkBD,GAAG,IAAIA,GAAG2K,GAAGzJ,eAAenB,IAAI4K,GAAG5K,IAAI,GAAGC,GAAGkF,OAAOlF,EAAE,IAAI,CACzb,SAASyN,GAAG1N,EAAEC,GAAa,IAAI,IAAIC,KAAlBF,EAAEA,EAAE2N,MAAmB1N,EAAE,GAAGA,EAAEkB,eAAejB,GAAG,CAAC,IAAIsB,EAAE,IAAItB,EAAE0N,QAAQ,MAAMnM,EAAEgM,GAAGvN,EAAED,EAAEC,GAAGsB,GAAG,UAAUtB,IAAIA,EAAE,YAAYsB,EAAExB,EAAE6N,YAAY3N,EAAEuB,GAAGzB,EAAEE,GAAGuB,CAAC,CAAC,CADYR,OAAO6M,KAAKlD,IAAIrI,SAAQ,SAASvC,GAAGwN,GAAGjL,SAAQ,SAAStC,GAAGA,EAAEA,EAAED,EAAE+N,OAAO,GAAGpL,cAAc3C,EAAEgO,UAAU,GAAGpD,GAAG3K,GAAG2K,GAAG5K,EAAE,GAAE,IAChI,IAAIiO,GAAGnJ,EAAE,CAACoJ,UAAS,GAAI,CAACC,MAAK,EAAGC,MAAK,EAAGC,IAAG,EAAGC,KAAI,EAAGC,OAAM,EAAGC,IAAG,EAAGC,KAAI,EAAGC,OAAM,EAAGC,QAAO,EAAGC,MAAK,EAAGC,MAAK,EAAGC,OAAM,EAAGC,QAAO,EAAGC,OAAM,EAAGC,KAAI,IAClT,SAASC,GAAGlP,EAAEC,GAAG,GAAGA,EAAE,CAAC,GAAGgO,GAAGjO,KAAK,MAAMC,EAAEqJ,UAAU,MAAMrJ,EAAEoJ,yBAAyB,MAAMpE,MAAMlF,EAAE,IAAIC,IAAI,GAAG,MAAMC,EAAEoJ,wBAAwB,CAAC,GAAG,MAAMpJ,EAAEqJ,SAAS,MAAMrE,MAAMlF,EAAE,KAAK,GAAG,kBAAkBE,EAAEoJ,2BAA2B,WAAWpJ,EAAEoJ,yBAAyB,MAAMpE,MAAMlF,EAAE,IAAK,CAAC,GAAG,MAAME,EAAE0N,OAAO,kBAAkB1N,EAAE0N,MAAM,MAAM1I,MAAMlF,EAAE,IAAK,CAAC,CAClW,SAASoP,GAAGnP,EAAEC,GAAG,IAAI,IAAID,EAAE4N,QAAQ,KAAK,MAAM,kBAAkB3N,EAAEmP,GAAG,OAAOpP,GAAG,IAAK,iBAAiB,IAAK,gBAAgB,IAAK,YAAY,IAAK,gBAAgB,IAAK,gBAAgB,IAAK,mBAAmB,IAAK,iBAAiB,IAAK,gBAAgB,OAAM,EAAG,QAAQ,OAAM,EAAG,CAAC,IAAIqP,GAAG,KAAK,SAASC,GAAGtP,GAA6F,OAA1FA,EAAEA,EAAEuP,QAAQvP,EAAEwP,YAAY3O,QAAS4O,0BAA0BzP,EAAEA,EAAEyP,yBAAgC,IAAIzP,EAAE0K,SAAS1K,EAAE0P,WAAW1P,CAAC,CAAC,IAAI2P,GAAG,KAAKC,GAAG,KAAKC,GAAG,KACpc,SAASC,GAAG9P,GAAG,GAAGA,EAAE+P,GAAG/P,GAAG,CAAC,GAAG,oBAAoB2P,GAAG,MAAM1K,MAAMlF,EAAE,MAAM,IAAIE,EAAED,EAAEgQ,UAAU/P,IAAIA,EAAEgQ,GAAGhQ,GAAG0P,GAAG3P,EAAEgQ,UAAUhQ,EAAEkC,KAAKjC,GAAG,CAAC,CAAC,SAASiQ,GAAGlQ,GAAG4P,GAAGC,GAAGA,GAAGM,KAAKnQ,GAAG6P,GAAG,CAAC7P,GAAG4P,GAAG5P,CAAC,CAAC,SAASoQ,KAAK,GAAGR,GAAG,CAAC,IAAI5P,EAAE4P,GAAG3P,EAAE4P,GAAoB,GAAjBA,GAAGD,GAAG,KAAKE,GAAG9P,GAAMC,EAAE,IAAID,EAAE,EAAEA,EAAEC,EAAEG,OAAOJ,IAAI8P,GAAG7P,EAAED,GAAG,CAAC,CAAC,SAASqQ,GAAGrQ,EAAEC,GAAG,OAAOD,EAAEC,EAAE,CAAC,SAASqQ,KAAK,CAAC,IAAIC,IAAG,EAAG,SAASC,GAAGxQ,EAAEC,EAAEC,GAAG,GAAGqQ,GAAG,OAAOvQ,EAAEC,EAAEC,GAAGqQ,IAAG,EAAG,IAAI,OAAOF,GAAGrQ,EAAEC,EAAEC,EAAE,CAAC,QAAWqQ,IAAG,GAAG,OAAOX,IAAI,OAAOC,MAAGS,KAAKF,KAAI,CAAC,CAChb,SAASK,GAAGzQ,EAAEC,GAAG,IAAIC,EAAEF,EAAEgQ,UAAU,GAAG,OAAO9P,EAAE,OAAO,KAAK,IAAIsB,EAAEyO,GAAG/P,GAAG,GAAG,OAAOsB,EAAE,OAAO,KAAKtB,EAAEsB,EAAEvB,GAAGD,EAAE,OAAOC,GAAG,IAAK,UAAU,IAAK,iBAAiB,IAAK,gBAAgB,IAAK,uBAAuB,IAAK,cAAc,IAAK,qBAAqB,IAAK,cAAc,IAAK,qBAAqB,IAAK,YAAY,IAAK,mBAAmB,IAAK,gBAAgBuB,GAAGA,EAAE2H,YAAqB3H,IAAI,YAAbxB,EAAEA,EAAEkC,OAAuB,UAAUlC,GAAG,WAAWA,GAAG,aAAaA,IAAIA,GAAGwB,EAAE,MAAMxB,EAAE,QAAQA,GAAE,EAAG,GAAGA,EAAE,OAAO,KAAK,GAAGE,GAAG,oBACleA,EAAE,MAAM+E,MAAMlF,EAAE,IAAIE,SAASC,IAAI,OAAOA,CAAC,CAAC,IAAIwQ,IAAG,EAAG,GAAG9P,EAAG,IAAI,IAAI+P,GAAG,CAAC,EAAE1P,OAAOuE,eAAemL,GAAG,UAAU,CAACzJ,IAAI,WAAWwJ,IAAG,CAAE,IAAI7P,OAAO+P,iBAAiB,OAAOD,GAAGA,IAAI9P,OAAOgQ,oBAAoB,OAAOF,GAAGA,GAAG,CAAC,MAAM3Q,IAAG0Q,IAAG,CAAE,CAAC,SAASI,GAAG9Q,EAAEC,EAAEC,EAAEsB,EAAEC,EAAEC,EAAEC,EAAEkE,EAAEC,GAAG,IAAIF,EAAEiD,MAAM3H,UAAU2B,MAAMI,KAAK9C,UAAU,GAAG,IAAIF,EAAE8Q,MAAM7Q,EAAE0F,EAAE,CAAC,MAAMoL,GAAGpP,KAAKqP,QAAQD,EAAE,CAAC,CAAC,IAAIE,IAAG,EAAGC,GAAG,KAAKC,IAAG,EAAGC,GAAG,KAAKC,GAAG,CAACL,QAAQ,SAASjR,GAAGkR,IAAG,EAAGC,GAAGnR,CAAC,GAAG,SAASuR,GAAGvR,EAAEC,EAAEC,EAAEsB,EAAEC,EAAEC,EAAEC,EAAEkE,EAAEC,GAAGoL,IAAG,EAAGC,GAAG,KAAKL,GAAGC,MAAMO,GAAGnR,UAAU,CACjW,SAASqR,GAAGxR,GAAG,IAAIC,EAAED,EAAEE,EAAEF,EAAE,GAAGA,EAAEyR,UAAU,KAAKxR,EAAEyR,QAAQzR,EAAEA,EAAEyR,WAAW,CAAC1R,EAAEC,EAAE,GAAO,KAAa,MAAjBA,EAAED,GAAS2R,SAAczR,EAAED,EAAEyR,QAAQ1R,EAAEC,EAAEyR,aAAa1R,EAAE,CAAC,OAAO,IAAIC,EAAEkG,IAAIjG,EAAE,IAAI,CAAC,SAAS0R,GAAG5R,GAAG,GAAG,KAAKA,EAAEmG,IAAI,CAAC,IAAIlG,EAAED,EAAE6R,cAAsE,GAAxD,OAAO5R,IAAkB,QAAdD,EAAEA,EAAEyR,aAAqBxR,EAAED,EAAE6R,gBAAmB,OAAO5R,EAAE,OAAOA,EAAE6R,UAAU,CAAC,OAAO,IAAI,CAAC,SAASC,GAAG/R,GAAG,GAAGwR,GAAGxR,KAAKA,EAAE,MAAMiF,MAAMlF,EAAE,KAAM,CAE1S,SAASiS,GAAGhS,GAAW,OAAO,QAAfA,EADtN,SAAYA,GAAG,IAAIC,EAAED,EAAEyR,UAAU,IAAIxR,EAAE,CAAS,GAAG,QAAXA,EAAEuR,GAAGxR,IAAe,MAAMiF,MAAMlF,EAAE,MAAM,OAAOE,IAAID,EAAE,KAAKA,CAAC,CAAC,IAAI,IAAIE,EAAEF,EAAEwB,EAAEvB,IAAI,CAAC,IAAIwB,EAAEvB,EAAEwR,OAAO,GAAG,OAAOjQ,EAAE,MAAM,IAAIC,EAAED,EAAEgQ,UAAU,GAAG,OAAO/P,EAAE,CAAY,GAAG,QAAdF,EAAEC,EAAEiQ,QAAmB,CAACxR,EAAEsB,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAGC,EAAEwQ,QAAQvQ,EAAEuQ,MAAM,CAAC,IAAIvQ,EAAED,EAAEwQ,MAAMvQ,GAAG,CAAC,GAAGA,IAAIxB,EAAE,OAAO6R,GAAGtQ,GAAGzB,EAAE,GAAG0B,IAAIF,EAAE,OAAOuQ,GAAGtQ,GAAGxB,EAAEyB,EAAEA,EAAEwQ,OAAO,CAAC,MAAMjN,MAAMlF,EAAE,KAAM,CAAC,GAAGG,EAAEwR,SAASlQ,EAAEkQ,OAAOxR,EAAEuB,EAAED,EAAEE,MAAM,CAAC,IAAI,IAAIC,GAAE,EAAGkE,EAAEpE,EAAEwQ,MAAMpM,GAAG,CAAC,GAAGA,IAAI3F,EAAE,CAACyB,GAAE,EAAGzB,EAAEuB,EAAED,EAAEE,EAAE,KAAK,CAAC,GAAGmE,IAAIrE,EAAE,CAACG,GAAE,EAAGH,EAAEC,EAAEvB,EAAEwB,EAAE,KAAK,CAACmE,EAAEA,EAAEqM,OAAO,CAAC,IAAIvQ,EAAE,CAAC,IAAIkE,EAAEnE,EAAEuQ,MAAMpM,GAAG,CAAC,GAAGA,IAC5f3F,EAAE,CAACyB,GAAE,EAAGzB,EAAEwB,EAAEF,EAAEC,EAAE,KAAK,CAAC,GAAGoE,IAAIrE,EAAE,CAACG,GAAE,EAAGH,EAAEE,EAAExB,EAAEuB,EAAE,KAAK,CAACoE,EAAEA,EAAEqM,OAAO,CAAC,IAAIvQ,EAAE,MAAMsD,MAAMlF,EAAE,KAAM,CAAC,CAAC,GAAGG,EAAEuR,YAAYjQ,EAAE,MAAMyD,MAAMlF,EAAE,KAAM,CAAC,GAAG,IAAIG,EAAEiG,IAAI,MAAMlB,MAAMlF,EAAE,MAAM,OAAOG,EAAE8P,UAAUmC,UAAUjS,EAAEF,EAAEC,CAAC,CAAkBmS,CAAGpS,IAAmBqS,GAAGrS,GAAG,IAAI,CAAC,SAASqS,GAAGrS,GAAG,GAAG,IAAIA,EAAEmG,KAAK,IAAInG,EAAEmG,IAAI,OAAOnG,EAAE,IAAIA,EAAEA,EAAEiS,MAAM,OAAOjS,GAAG,CAAC,IAAIC,EAAEoS,GAAGrS,GAAG,GAAG,OAAOC,EAAE,OAAOA,EAAED,EAAEA,EAAEkS,OAAO,CAAC,OAAO,IAAI,CAC1X,IAAII,GAAGxS,EAAGyS,0BAA0BC,GAAG1S,EAAG2S,wBAAwBC,GAAG5S,EAAG6S,qBAAqBC,GAAG9S,EAAG+S,sBAAsBC,GAAEhT,EAAGiT,aAAaC,GAAGlT,EAAGmT,iCAAiCC,GAAGpT,EAAGqT,2BAA2BC,GAAGtT,EAAGuT,8BAA8BC,GAAGxT,EAAGyT,wBAAwBC,GAAG1T,EAAG2T,qBAAqBC,GAAG5T,EAAG6T,sBAAsBC,GAAG,KAAKC,GAAG,KACvV,IAAIC,GAAGC,KAAKC,MAAMD,KAAKC,MAAiC,SAAYhU,GAAU,OAAPA,KAAK,EAAS,IAAIA,EAAE,GAAG,IAAIiU,GAAGjU,GAAGkU,GAAG,GAAG,CAAC,EAA/ED,GAAGF,KAAKI,IAAID,GAAGH,KAAKK,IAA4D,IAAIC,GAAG,GAAGC,GAAG,QAC7H,SAASC,GAAGvU,GAAG,OAAOA,GAAGA,GAAG,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,QAAQ,KAAK,QAAQ,OAAS,QAAFA,EAAU,KAAK,QAAQ,KAAK,QAAQ,KAAK,SAAS,KAAK,SAAS,KAAK,SAAS,OAAS,UAAFA,EAAY,KAAK,UAAU,OAAO,UAAU,KAAK,UAAU,OAAO,UAAU,KAAK,UAAU,OAAO,UAAU,KAAK,WAAW,OAAO,WACzgB,QAAQ,OAAOA,EAAE,CAAC,SAASwU,GAAGxU,EAAEC,GAAG,IAAIC,EAAEF,EAAEyU,aAAa,GAAG,IAAIvU,EAAE,OAAO,EAAE,IAAIsB,EAAE,EAAEC,EAAEzB,EAAE0U,eAAehT,EAAE1B,EAAE2U,YAAYhT,EAAI,UAAFzB,EAAY,GAAG,IAAIyB,EAAE,CAAC,IAAIkE,EAAElE,GAAGF,EAAE,IAAIoE,EAAErE,EAAE+S,GAAG1O,GAAS,KAALnE,GAAGC,KAAUH,EAAE+S,GAAG7S,GAAI,MAAa,KAAPC,EAAEzB,GAAGuB,GAAQD,EAAE+S,GAAG5S,GAAG,IAAID,IAAIF,EAAE+S,GAAG7S,IAAI,GAAG,IAAIF,EAAE,OAAO,EAAE,GAAG,IAAIvB,GAAGA,IAAIuB,GAAG,KAAKvB,EAAEwB,MAAKA,EAAED,GAAGA,KAAEE,EAAEzB,GAAGA,IAAQ,KAAKwB,GAAG,KAAO,QAAFC,IAAY,OAAOzB,EAA0C,GAAxC,KAAO,EAAFuB,KAAOA,GAAK,GAAFtB,GAA4B,KAAtBD,EAAED,EAAE4U,gBAAwB,IAAI5U,EAAEA,EAAE6U,cAAc5U,GAAGuB,EAAE,EAAEvB,GAAcwB,EAAE,IAAbvB,EAAE,GAAG4T,GAAG7T,IAAUuB,GAAGxB,EAAEE,GAAGD,IAAIwB,EAAE,OAAOD,CAAC,CACvc,SAASsT,GAAG9U,EAAEC,GAAG,OAAOD,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAOC,EAAE,IAAI,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,QAAQ,KAAK,QAAQ,OAAOA,EAAE,IAAuJ,QAAQ,OAAO,EAAE,CACrN,SAAS8U,GAAG/U,GAAgC,OAAO,KAApCA,GAAkB,WAAhBA,EAAEyU,cAAsCzU,EAAI,WAAFA,EAAa,WAAW,CAAC,CAAC,SAASgV,KAAK,IAAIhV,EAAEqU,GAAoC,OAA1B,KAAQ,SAAfA,KAAK,MAAqBA,GAAG,IAAWrU,CAAC,CAAC,SAASiV,GAAGjV,GAAG,IAAI,IAAIC,EAAE,GAAGC,EAAE,EAAE,GAAGA,EAAEA,IAAID,EAAEkQ,KAAKnQ,GAAG,OAAOC,CAAC,CAC3a,SAASiV,GAAGlV,EAAEC,EAAEC,GAAGF,EAAEyU,cAAcxU,EAAE,YAAYA,IAAID,EAAE0U,eAAe,EAAE1U,EAAE2U,YAAY,IAAG3U,EAAEA,EAAEmV,YAAWlV,EAAE,GAAG6T,GAAG7T,IAAQC,CAAC,CACzH,SAASkV,GAAGpV,EAAEC,GAAG,IAAIC,EAAEF,EAAE4U,gBAAgB3U,EAAE,IAAID,EAAEA,EAAE6U,cAAc3U,GAAG,CAAC,IAAIsB,EAAE,GAAGsS,GAAG5T,GAAGuB,EAAE,GAAGD,EAAEC,EAAExB,EAAED,EAAEwB,GAAGvB,IAAID,EAAEwB,IAAIvB,GAAGC,IAAIuB,CAAC,CAAC,CAAC,IAAI4T,GAAE,EAAE,SAASC,GAAGtV,GAAS,OAAO,GAAbA,IAAIA,GAAa,EAAEA,EAAE,KAAO,UAAFA,GAAa,GAAG,UAAU,EAAE,CAAC,CAAC,IAAIuV,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,IAAG,EAAGC,GAAG,GAAGC,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAKC,GAAG,IAAIC,IAAIC,GAAG,IAAID,IAAIE,GAAG,GAAGC,GAAG,6PAA6P/T,MAAM,KAChiB,SAASgU,GAAGtW,EAAEC,GAAG,OAAOD,GAAG,IAAK,UAAU,IAAK,WAAW8V,GAAG,KAAK,MAAM,IAAK,YAAY,IAAK,YAAYC,GAAG,KAAK,MAAM,IAAK,YAAY,IAAK,WAAWC,GAAG,KAAK,MAAM,IAAK,cAAc,IAAK,aAAaC,GAAGM,OAAOtW,EAAEuW,WAAW,MAAM,IAAK,oBAAoB,IAAK,qBAAqBL,GAAGI,OAAOtW,EAAEuW,WAAW,CACnT,SAASC,GAAGzW,EAAEC,EAAEC,EAAEsB,EAAEC,EAAEC,GAAG,OAAG,OAAO1B,GAAGA,EAAE0W,cAAchV,GAAS1B,EAAE,CAAC2W,UAAU1W,EAAE2W,aAAa1W,EAAE2W,iBAAiBrV,EAAEkV,YAAYhV,EAAEoV,iBAAiB,CAACrV,IAAI,OAAOxB,IAAY,QAARA,EAAE8P,GAAG9P,KAAauV,GAAGvV,IAAID,IAAEA,EAAE6W,kBAAkBrV,EAAEvB,EAAED,EAAE8W,iBAAiB,OAAOrV,IAAI,IAAIxB,EAAE2N,QAAQnM,IAAIxB,EAAEkQ,KAAK1O,GAAUzB,EAAC,CAEpR,SAAS+W,GAAG/W,GAAG,IAAIC,EAAE+W,GAAGhX,EAAEuP,QAAQ,GAAG,OAAOtP,EAAE,CAAC,IAAIC,EAAEsR,GAAGvR,GAAG,GAAG,OAAOC,EAAE,GAAW,MAARD,EAAEC,EAAEiG,MAAY,GAAW,QAARlG,EAAE2R,GAAG1R,IAA4D,OAA/CF,EAAE2W,UAAU1W,OAAE0V,GAAG3V,EAAEiX,UAAS,WAAWxB,GAAGvV,EAAE,SAAgB,GAAG,IAAID,GAAGC,EAAE8P,UAAUmC,QAAQN,cAAcqF,aAAmE,YAArDlX,EAAE2W,UAAU,IAAIzW,EAAEiG,IAAIjG,EAAE8P,UAAUmH,cAAc,KAAY,CAACnX,EAAE2W,UAAU,IAAI,CAClT,SAASS,GAAGpX,GAAG,GAAG,OAAOA,EAAE2W,UAAU,OAAM,EAAG,IAAI,IAAI1W,EAAED,EAAE8W,iBAAiB,EAAE7W,EAAEG,QAAQ,CAAC,IAAIF,EAAEmX,GAAGrX,EAAE4W,aAAa5W,EAAE6W,iBAAiB5W,EAAE,GAAGD,EAAE0W,aAAa,GAAG,OAAOxW,EAAiG,OAAe,QAARD,EAAE8P,GAAG7P,KAAasV,GAAGvV,GAAGD,EAAE2W,UAAUzW,GAAE,EAA3H,IAAIsB,EAAE,IAAtBtB,EAAEF,EAAE0W,aAAwBzP,YAAY/G,EAAEgC,KAAKhC,GAAGmP,GAAG7N,EAAEtB,EAAEqP,OAAO+H,cAAc9V,GAAG6N,GAAG,KAA0DpP,EAAEsX,OAAO,CAAC,OAAM,CAAE,CAAC,SAASC,GAAGxX,EAAEC,EAAEC,GAAGkX,GAAGpX,IAAIE,EAAEqW,OAAOtW,EAAE,CAAC,SAASwX,KAAK7B,IAAG,EAAG,OAAOE,IAAIsB,GAAGtB,MAAMA,GAAG,MAAM,OAAOC,IAAIqB,GAAGrB,MAAMA,GAAG,MAAM,OAAOC,IAAIoB,GAAGpB,MAAMA,GAAG,MAAMC,GAAG1T,QAAQiV,IAAIrB,GAAG5T,QAAQiV,GAAG,CACnf,SAASE,GAAG1X,EAAEC,GAAGD,EAAE2W,YAAY1W,IAAID,EAAE2W,UAAU,KAAKf,KAAKA,IAAG,EAAG9V,EAAGyS,0BAA0BzS,EAAGyT,wBAAwBkE,KAAK,CAC5H,SAASE,GAAG3X,GAAG,SAASC,EAAEA,GAAG,OAAOyX,GAAGzX,EAAED,EAAE,CAAC,GAAG,EAAE6V,GAAGzV,OAAO,CAACsX,GAAG7B,GAAG,GAAG7V,GAAG,IAAI,IAAIE,EAAE,EAAEA,EAAE2V,GAAGzV,OAAOF,IAAI,CAAC,IAAIsB,EAAEqU,GAAG3V,GAAGsB,EAAEmV,YAAY3W,IAAIwB,EAAEmV,UAAU,KAAK,CAAC,CAAyF,IAAxF,OAAOb,IAAI4B,GAAG5B,GAAG9V,GAAG,OAAO+V,IAAI2B,GAAG3B,GAAG/V,GAAG,OAAOgW,IAAI0B,GAAG1B,GAAGhW,GAAGiW,GAAG1T,QAAQtC,GAAGkW,GAAG5T,QAAQtC,GAAOC,EAAE,EAAEA,EAAEkW,GAAGhW,OAAOF,KAAIsB,EAAE4U,GAAGlW,IAAKyW,YAAY3W,IAAIwB,EAAEmV,UAAU,MAAM,KAAK,EAAEP,GAAGhW,QAAiB,QAARF,EAAEkW,GAAG,IAAYO,WAAYI,GAAG7W,GAAG,OAAOA,EAAEyW,WAAWP,GAAGmB,OAAO,CAAC,IAAIK,GAAGnU,EAAGoU,wBAAwBC,IAAG,EAC5a,SAASC,GAAG/X,EAAEC,EAAEC,EAAEsB,GAAG,IAAIC,EAAE4T,GAAE3T,EAAEkW,GAAGI,WAAWJ,GAAGI,WAAW,KAAK,IAAI3C,GAAE,EAAE4C,GAAGjY,EAAEC,EAAEC,EAAEsB,EAAE,CAAC,QAAQ6T,GAAE5T,EAAEmW,GAAGI,WAAWtW,CAAC,CAAC,CAAC,SAASwW,GAAGlY,EAAEC,EAAEC,EAAEsB,GAAG,IAAIC,EAAE4T,GAAE3T,EAAEkW,GAAGI,WAAWJ,GAAGI,WAAW,KAAK,IAAI3C,GAAE,EAAE4C,GAAGjY,EAAEC,EAAEC,EAAEsB,EAAE,CAAC,QAAQ6T,GAAE5T,EAAEmW,GAAGI,WAAWtW,CAAC,CAAC,CACjO,SAASuW,GAAGjY,EAAEC,EAAEC,EAAEsB,GAAG,GAAGsW,GAAG,CAAC,IAAIrW,EAAE4V,GAAGrX,EAAEC,EAAEC,EAAEsB,GAAG,GAAG,OAAOC,EAAE0W,GAAGnY,EAAEC,EAAEuB,EAAE4W,GAAGlY,GAAGoW,GAAGtW,EAAEwB,QAAQ,GANtF,SAAYxB,EAAEC,EAAEC,EAAEsB,EAAEC,GAAG,OAAOxB,GAAG,IAAK,UAAU,OAAO6V,GAAGW,GAAGX,GAAG9V,EAAEC,EAAEC,EAAEsB,EAAEC,IAAG,EAAG,IAAK,YAAY,OAAOsU,GAAGU,GAAGV,GAAG/V,EAAEC,EAAEC,EAAEsB,EAAEC,IAAG,EAAG,IAAK,YAAY,OAAOuU,GAAGS,GAAGT,GAAGhW,EAAEC,EAAEC,EAAEsB,EAAEC,IAAG,EAAG,IAAK,cAAc,IAAIC,EAAED,EAAE+U,UAAkD,OAAxCP,GAAGxQ,IAAI/D,EAAE+U,GAAGR,GAAG/O,IAAIxF,IAAI,KAAK1B,EAAEC,EAAEC,EAAEsB,EAAEC,KAAU,EAAG,IAAK,oBAAoB,OAAOC,EAAED,EAAE+U,UAAUL,GAAG1Q,IAAI/D,EAAE+U,GAAGN,GAAGjP,IAAIxF,IAAI,KAAK1B,EAAEC,EAAEC,EAAEsB,EAAEC,KAAI,EAAG,OAAM,CAAE,CAM1Q4W,CAAG5W,EAAEzB,EAAEC,EAAEC,EAAEsB,GAAGA,EAAE8W,uBAAuB,GAAGhC,GAAGtW,EAAEwB,GAAK,EAAFvB,IAAM,EAAEoW,GAAGzI,QAAQ5N,GAAG,CAAC,KAAK,OAAOyB,GAAG,CAAC,IAAIC,EAAEqO,GAAGtO,GAA0D,GAAvD,OAAOC,GAAG6T,GAAG7T,GAAiB,QAAdA,EAAE2V,GAAGrX,EAAEC,EAAEC,EAAEsB,KAAa2W,GAAGnY,EAAEC,EAAEuB,EAAE4W,GAAGlY,GAAMwB,IAAID,EAAE,MAAMA,EAAEC,CAAC,CAAC,OAAOD,GAAGD,EAAE8W,iBAAiB,MAAMH,GAAGnY,EAAEC,EAAEuB,EAAE,KAAKtB,EAAE,CAAC,CAAC,IAAIkY,GAAG,KACpU,SAASf,GAAGrX,EAAEC,EAAEC,EAAEsB,GAA2B,GAAxB4W,GAAG,KAAwB,QAAXpY,EAAEgX,GAAVhX,EAAEsP,GAAG9N,KAAuB,GAAW,QAARvB,EAAEuR,GAAGxR,IAAYA,EAAE,UAAU,GAAW,MAARE,EAAED,EAAEkG,KAAW,CAAS,GAAG,QAAXnG,EAAE4R,GAAG3R,IAAe,OAAOD,EAAEA,EAAE,IAAI,MAAM,GAAG,IAAIE,EAAE,CAAC,GAAGD,EAAE+P,UAAUmC,QAAQN,cAAcqF,aAAa,OAAO,IAAIjX,EAAEkG,IAAIlG,EAAE+P,UAAUmH,cAAc,KAAKnX,EAAE,IAAI,MAAMC,IAAID,IAAIA,EAAE,MAAW,OAALoY,GAAGpY,EAAS,IAAI,CAC7S,SAASuY,GAAGvY,GAAG,OAAOA,GAAG,IAAK,SAAS,IAAK,QAAQ,IAAK,QAAQ,IAAK,cAAc,IAAK,OAAO,IAAK,MAAM,IAAK,WAAW,IAAK,WAAW,IAAK,UAAU,IAAK,YAAY,IAAK,OAAO,IAAK,UAAU,IAAK,WAAW,IAAK,QAAQ,IAAK,UAAU,IAAK,UAAU,IAAK,WAAW,IAAK,QAAQ,IAAK,YAAY,IAAK,UAAU,IAAK,QAAQ,IAAK,QAAQ,IAAK,OAAO,IAAK,gBAAgB,IAAK,cAAc,IAAK,YAAY,IAAK,aAAa,IAAK,QAAQ,IAAK,SAAS,IAAK,SAAS,IAAK,SAAS,IAAK,cAAc,IAAK,WAAW,IAAK,aAAa,IAAK,eAAe,IAAK,SAAS,IAAK,kBAAkB,IAAK,YAAY,IAAK,mBAAmB,IAAK,iBAAiB,IAAK,oBAAoB,IAAK,aAAa,IAAK,YAAY,IAAK,cAAc,IAAK,OAAO,IAAK,mBAAmB,IAAK,QAAQ,IAAK,aAAa,IAAK,WAAW,IAAK,SAAS,IAAK,cAAc,OAAO,EAAE,IAAK,OAAO,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,cAAc,IAAK,aAAa,IAAK,cAAc,IAAK,SAAS,IAAK,SAAS,IAAK,YAAY,IAAK,QAAQ,IAAK,aAAa,IAAK,aAAa,IAAK,eAAe,IAAK,eAAe,OAAO,EACpqC,IAAK,UAAU,OAAOgT,MAAM,KAAKE,GAAG,OAAO,EAAE,KAAKE,GAAG,OAAO,EAAE,KAAKE,GAAG,KAAKE,GAAG,OAAO,GAAG,KAAKE,GAAG,OAAO,UAAU,QAAQ,OAAO,GAAG,QAAQ,OAAO,GAAG,CAAC,IAAI8E,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAK,SAASC,KAAK,GAAGD,GAAG,OAAOA,GAAG,IAAI1Y,EAAkBwB,EAAhBvB,EAAEwY,GAAGvY,EAAED,EAAEG,OAASqB,EAAE,UAAU+W,GAAGA,GAAG7Q,MAAM6Q,GAAG9O,YAAYhI,EAAED,EAAErB,OAAO,IAAIJ,EAAE,EAAEA,EAAEE,GAAGD,EAAED,KAAKyB,EAAEzB,GAAGA,KAAK,IAAI2B,EAAEzB,EAAEF,EAAE,IAAIwB,EAAE,EAAEA,GAAGG,GAAG1B,EAAEC,EAAEsB,KAAKC,EAAEC,EAAEF,GAAGA,KAAK,OAAOkX,GAAGjX,EAAEoB,MAAM7C,EAAE,EAAEwB,EAAE,EAAEA,OAAE,EAAO,CACxY,SAASoX,GAAG5Y,GAAG,IAAIC,EAAED,EAAE6Y,QAA+E,MAAvE,aAAa7Y,EAAgB,KAAbA,EAAEA,EAAE8Y,WAAgB,KAAK7Y,IAAID,EAAE,IAAKA,EAAEC,EAAE,KAAKD,IAAIA,EAAE,IAAW,IAAIA,GAAG,KAAKA,EAAEA,EAAE,CAAC,CAAC,SAAS+Y,KAAK,OAAM,CAAE,CAAC,SAASC,KAAK,OAAM,CAAE,CAC5K,SAASC,GAAGjZ,GAAG,SAASC,EAAEA,EAAEuB,EAAEC,EAAEC,EAAEC,GAA6G,IAAI,IAAIzB,KAAlH0B,KAAKsX,WAAWjZ,EAAE2B,KAAKuX,YAAY1X,EAAEG,KAAKM,KAAKV,EAAEI,KAAK8U,YAAYhV,EAAEE,KAAK2N,OAAO5N,EAAEC,KAAKwX,cAAc,KAAkBpZ,EAAEA,EAAEmB,eAAejB,KAAKD,EAAED,EAAEE,GAAG0B,KAAK1B,GAAGD,EAAEA,EAAEyB,GAAGA,EAAExB,IAAgI,OAA5H0B,KAAKyX,oBAAoB,MAAM3X,EAAE4X,iBAAiB5X,EAAE4X,kBAAiB,IAAK5X,EAAE6X,aAAaR,GAAGC,GAAGpX,KAAK4X,qBAAqBR,GAAUpX,IAAI,CAC9E,OAD+EkD,EAAE7E,EAAEiB,UAAU,CAACuY,eAAe,WAAW7X,KAAK0X,kBAAiB,EAAG,IAAItZ,EAAE4B,KAAK8U,YAAY1W,IAAIA,EAAEyZ,eAAezZ,EAAEyZ,iBAAiB,mBAAmBzZ,EAAEuZ,cAC7evZ,EAAEuZ,aAAY,GAAI3X,KAAKyX,mBAAmBN,GAAG,EAAET,gBAAgB,WAAW,IAAItY,EAAE4B,KAAK8U,YAAY1W,IAAIA,EAAEsY,gBAAgBtY,EAAEsY,kBAAkB,mBAAmBtY,EAAE0Z,eAAe1Z,EAAE0Z,cAAa,GAAI9X,KAAK4X,qBAAqBT,GAAG,EAAEY,QAAQ,WAAW,EAAEC,aAAab,KAAY9Y,CAAC,CACjR,IAAoL4Z,GAAGC,GAAGC,GAAtLC,GAAG,CAACC,WAAW,EAAEC,QAAQ,EAAEC,WAAW,EAAEC,UAAU,SAASpa,GAAG,OAAOA,EAAEoa,WAAWC,KAAKC,KAAK,EAAEhB,iBAAiB,EAAEiB,UAAU,GAAGC,GAAGvB,GAAGe,IAAIS,GAAG3V,EAAE,CAAC,EAAEkV,GAAG,CAACU,KAAK,EAAEC,OAAO,IAAIC,GAAG3B,GAAGwB,IAAaI,GAAG/V,EAAE,CAAC,EAAE2V,GAAG,CAACK,QAAQ,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,EAAEC,iBAAiBC,GAAGC,OAAO,EAAEC,QAAQ,EAAEC,cAAc,SAAS5b,GAAG,YAAO,IAASA,EAAE4b,cAAc5b,EAAE6b,cAAc7b,EAAEwP,WAAWxP,EAAE8b,UAAU9b,EAAE6b,YAAY7b,EAAE4b,aAAa,EAAEG,UAAU,SAAS/b,GAAG,MAAG,cAC3eA,EAASA,EAAE+b,WAAU/b,IAAI+Z,KAAKA,IAAI,cAAc/Z,EAAEkC,MAAM2X,GAAG7Z,EAAE8a,QAAQf,GAAGe,QAAQhB,GAAG9Z,EAAE+a,QAAQhB,GAAGgB,SAASjB,GAAGD,GAAG,EAAEE,GAAG/Z,GAAU6Z,GAAE,EAAEmC,UAAU,SAAShc,GAAG,MAAM,cAAcA,EAAEA,EAAEgc,UAAUlC,EAAE,IAAImC,GAAGhD,GAAG4B,IAAiCqB,GAAGjD,GAA7BnU,EAAE,CAAC,EAAE+V,GAAG,CAACsB,aAAa,KAA4CC,GAAGnD,GAA9BnU,EAAE,CAAC,EAAE2V,GAAG,CAACmB,cAAc,KAA0ES,GAAGpD,GAA5DnU,EAAE,CAAC,EAAEkV,GAAG,CAACsC,cAAc,EAAEC,YAAY,EAAEC,cAAc,KAAcC,GAAG3X,EAAE,CAAC,EAAEkV,GAAG,CAAC0C,cAAc,SAAS1c,GAAG,MAAM,kBAAkBA,EAAEA,EAAE0c,cAAc7b,OAAO6b,aAAa,IAAIC,GAAG1D,GAAGwD,IAAyBG,GAAG3D,GAArBnU,EAAE,CAAC,EAAEkV,GAAG,CAAC6C,KAAK,KAAcC,GAAG,CAACC,IAAI,SACxfC,SAAS,IAAIC,KAAK,YAAYC,GAAG,UAAUC,MAAM,aAAaC,KAAK,YAAYC,IAAI,SAASC,IAAI,KAAKC,KAAK,cAAcC,KAAK,cAAcC,OAAO,aAAaC,gBAAgB,gBAAgBC,GAAG,CAAC,EAAE,YAAY,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,YAAY,GAAG,UAAU,GAAG,aAAa,GAAG,YAAY,GAAG,SAAS,GAAG,SAAS,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KACtf,IAAI,KAAK,IAAI,KAAK,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,UAAU,IAAI,aAAa,IAAI,QAAQC,GAAG,CAACC,IAAI,SAASC,QAAQ,UAAUC,KAAK,UAAUC,MAAM,YAAY,SAASC,GAAGje,GAAG,IAAIC,EAAE2B,KAAK8U,YAAY,OAAOzW,EAAEub,iBAAiBvb,EAAEub,iBAAiBxb,MAAIA,EAAE4d,GAAG5d,OAAMC,EAAED,EAAK,CAAC,SAASyb,KAAK,OAAOwC,EAAE,CAChS,IAAIC,GAAGpZ,EAAE,CAAC,EAAE2V,GAAG,CAAC0D,IAAI,SAASne,GAAG,GAAGA,EAAEme,IAAI,CAAC,IAAIle,EAAE6c,GAAG9c,EAAEme,MAAMne,EAAEme,IAAI,GAAG,iBAAiBle,EAAE,OAAOA,CAAC,CAAC,MAAM,aAAaD,EAAEkC,KAAc,MAARlC,EAAE4Y,GAAG5Y,IAAU,QAAQoe,OAAOC,aAAare,GAAI,YAAYA,EAAEkC,MAAM,UAAUlC,EAAEkC,KAAKyb,GAAG3d,EAAE6Y,UAAU,eAAe,EAAE,EAAEyF,KAAK,EAAEC,SAAS,EAAEnD,QAAQ,EAAEC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,EAAEiD,OAAO,EAAEC,OAAO,EAAEjD,iBAAiBC,GAAG3C,SAAS,SAAS9Y,GAAG,MAAM,aAAaA,EAAEkC,KAAK0W,GAAG5Y,GAAG,CAAC,EAAE6Y,QAAQ,SAAS7Y,GAAG,MAAM,YAAYA,EAAEkC,MAAM,UAAUlC,EAAEkC,KAAKlC,EAAE6Y,QAAQ,CAAC,EAAE6F,MAAM,SAAS1e,GAAG,MAAM,aAC7eA,EAAEkC,KAAK0W,GAAG5Y,GAAG,YAAYA,EAAEkC,MAAM,UAAUlC,EAAEkC,KAAKlC,EAAE6Y,QAAQ,CAAC,IAAI8F,GAAG1F,GAAGiF,IAAiIU,GAAG3F,GAA7HnU,EAAE,CAAC,EAAE+V,GAAG,CAACrE,UAAU,EAAEqI,MAAM,EAAEC,OAAO,EAAEC,SAAS,EAAEC,mBAAmB,EAAEC,MAAM,EAAEC,MAAM,EAAEC,MAAM,EAAEC,YAAY,EAAEC,UAAU,KAAmIC,GAAGrG,GAArHnU,EAAE,CAAC,EAAE2V,GAAG,CAAC8E,QAAQ,EAAEC,cAAc,EAAEC,eAAe,EAAEnE,OAAO,EAAEC,QAAQ,EAAEH,QAAQ,EAAEC,SAAS,EAAEG,iBAAiBC,MAA0EiE,GAAGzG,GAA3DnU,EAAE,CAAC,EAAEkV,GAAG,CAAC/X,aAAa,EAAEsa,YAAY,EAAEC,cAAc,KAAcmD,GAAG7a,EAAE,CAAC,EAAE+V,GAAG,CAAC+E,OAAO,SAAS5f,GAAG,MAAM,WAAWA,EAAEA,EAAE4f,OAAO,gBAAgB5f,GAAGA,EAAE6f,YAAY,CAAC,EACnfC,OAAO,SAAS9f,GAAG,MAAM,WAAWA,EAAEA,EAAE8f,OAAO,gBAAgB9f,GAAGA,EAAE+f,YAAY,eAAe/f,GAAGA,EAAEggB,WAAW,CAAC,EAAEC,OAAO,EAAEC,UAAU,IAAIC,GAAGlH,GAAG0G,IAAIS,GAAG,CAAC,EAAE,GAAG,GAAG,IAAIC,GAAGzf,GAAI,qBAAqBC,OAAOyf,GAAG,KAAK1f,GAAI,iBAAiBE,WAAWwf,GAAGxf,SAASyf,cAAc,IAAIC,GAAG5f,GAAI,cAAcC,SAASyf,GAAGG,GAAG7f,KAAMyf,IAAIC,IAAI,EAAEA,IAAI,IAAIA,IAAII,GAAGtC,OAAOC,aAAa,IAAIsC,IAAG,EAC1W,SAASC,GAAG5gB,EAAEC,GAAG,OAAOD,GAAG,IAAK,QAAQ,OAAO,IAAIogB,GAAGxS,QAAQ3N,EAAE4Y,SAAS,IAAK,UAAU,OAAO,MAAM5Y,EAAE4Y,QAAQ,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,OAAM,EAAG,QAAQ,OAAM,EAAG,CAAC,SAASgI,GAAG7gB,GAAc,MAAM,kBAAjBA,EAAEA,EAAE2a,SAAkC,SAAS3a,EAAEA,EAAE6c,KAAK,IAAI,CAAC,IAAIiE,IAAG,EAE9Q,IAAIC,GAAG,CAACC,OAAM,EAAGC,MAAK,EAAGC,UAAS,EAAG,kBAAiB,EAAGC,OAAM,EAAGC,OAAM,EAAGC,QAAO,EAAGC,UAAS,EAAGC,OAAM,EAAGC,QAAO,EAAGC,KAAI,EAAGC,MAAK,EAAGC,MAAK,EAAGC,KAAI,EAAGC,MAAK,GAAI,SAASC,GAAG9hB,GAAG,IAAIC,EAAED,GAAGA,EAAE6G,UAAU7G,EAAE6G,SAASrE,cAAc,MAAM,UAAUvC,IAAI8gB,GAAG/gB,EAAEkC,MAAM,aAAajC,CAAO,CAAC,SAAS8hB,GAAG/hB,EAAEC,EAAEC,EAAEsB,GAAG0O,GAAG1O,GAAsB,GAAnBvB,EAAE+hB,GAAG/hB,EAAE,aAAgBG,SAASF,EAAE,IAAIsa,GAAG,WAAW,SAAS,KAAKta,EAAEsB,GAAGxB,EAAEmQ,KAAK,CAAC8R,MAAM/hB,EAAEgiB,UAAUjiB,IAAI,CAAC,IAAIkiB,GAAG,KAAKC,GAAG,KAAK,SAASC,GAAGriB,GAAGsiB,GAAGtiB,EAAE,EAAE,CAAC,SAASuiB,GAAGviB,GAAe,GAAGyH,EAAT+a,GAAGxiB,IAAY,OAAOA,CAAC,CACpe,SAASyiB,GAAGziB,EAAEC,GAAG,GAAG,WAAWD,EAAE,OAAOC,CAAC,CAAC,IAAIyiB,IAAG,EAAG,GAAG9hB,EAAG,CAAC,IAAI+hB,GAAG,GAAG/hB,EAAG,CAAC,IAAIgiB,GAAG,YAAY9hB,SAAS,IAAI8hB,GAAG,CAAC,IAAIC,GAAG/hB,SAASC,cAAc,OAAO8hB,GAAGxf,aAAa,UAAU,WAAWuf,GAAG,oBAAoBC,GAAGC,OAAO,CAACH,GAAGC,EAAE,MAAMD,IAAG,EAAGD,GAAGC,MAAM7hB,SAASyf,cAAc,EAAEzf,SAASyf,aAAa,CAAC,SAASwC,KAAKZ,KAAKA,GAAGa,YAAY,mBAAmBC,IAAIb,GAAGD,GAAG,KAAK,CAAC,SAASc,GAAGjjB,GAAG,GAAG,UAAUA,EAAEiC,cAAcsgB,GAAGH,IAAI,CAAC,IAAIniB,EAAE,GAAG8hB,GAAG9hB,EAAEmiB,GAAGpiB,EAAEsP,GAAGtP,IAAIwQ,GAAG6R,GAAGpiB,EAAE,CAAC,CAC/b,SAASijB,GAAGljB,EAAEC,EAAEC,GAAG,YAAYF,GAAG+iB,KAAUX,GAAGliB,GAARiiB,GAAGliB,GAAUkjB,YAAY,mBAAmBF,KAAK,aAAajjB,GAAG+iB,IAAI,CAAC,SAASK,GAAGpjB,GAAG,GAAG,oBAAoBA,GAAG,UAAUA,GAAG,YAAYA,EAAE,OAAOuiB,GAAGH,GAAG,CAAC,SAASiB,GAAGrjB,EAAEC,GAAG,GAAG,UAAUD,EAAE,OAAOuiB,GAAGtiB,EAAE,CAAC,SAASqjB,GAAGtjB,EAAEC,GAAG,GAAG,UAAUD,GAAG,WAAWA,EAAE,OAAOuiB,GAAGtiB,EAAE,CAAiE,IAAIsjB,GAAG,oBAAoBtiB,OAAOmO,GAAGnO,OAAOmO,GAA5G,SAAYpP,EAAEC,GAAG,OAAOD,IAAIC,IAAI,IAAID,GAAG,EAAEA,IAAI,EAAEC,IAAID,IAAIA,GAAGC,IAAIA,CAAC,EACtW,SAASujB,GAAGxjB,EAAEC,GAAG,GAAGsjB,GAAGvjB,EAAEC,GAAG,OAAM,EAAG,GAAG,kBAAkBD,GAAG,OAAOA,GAAG,kBAAkBC,GAAG,OAAOA,EAAE,OAAM,EAAG,IAAIC,EAAEe,OAAO6M,KAAK9N,GAAGwB,EAAEP,OAAO6M,KAAK7N,GAAG,GAAGC,EAAEE,SAASoB,EAAEpB,OAAO,OAAM,EAAG,IAAIoB,EAAE,EAAEA,EAAEtB,EAAEE,OAAOoB,IAAI,CAAC,IAAIC,EAAEvB,EAAEsB,GAAG,IAAIR,EAAGiC,KAAKhD,EAAEwB,KAAK8hB,GAAGvjB,EAAEyB,GAAGxB,EAAEwB,IAAI,OAAM,CAAE,CAAC,OAAM,CAAE,CAAC,SAASgiB,GAAGzjB,GAAG,KAAKA,GAAGA,EAAEmK,YAAYnK,EAAEA,EAAEmK,WAAW,OAAOnK,CAAC,CACtU,SAAS0jB,GAAG1jB,EAAEC,GAAG,IAAwBuB,EAApBtB,EAAEujB,GAAGzjB,GAAO,IAAJA,EAAE,EAAYE,GAAG,CAAC,GAAG,IAAIA,EAAEwK,SAAS,CAA0B,GAAzBlJ,EAAExB,EAAEE,EAAEwJ,YAAYtJ,OAAUJ,GAAGC,GAAGuB,GAAGvB,EAAE,MAAM,CAAC0jB,KAAKzjB,EAAE0jB,OAAO3jB,EAAED,GAAGA,EAAEwB,CAAC,CAACxB,EAAE,CAAC,KAAKE,GAAG,CAAC,GAAGA,EAAE2jB,YAAY,CAAC3jB,EAAEA,EAAE2jB,YAAY,MAAM7jB,CAAC,CAACE,EAAEA,EAAEwP,UAAU,CAACxP,OAAE,CAAM,CAACA,EAAEujB,GAAGvjB,EAAE,CAAC,CAAC,SAAS4jB,GAAG9jB,EAAEC,GAAG,SAAOD,IAAGC,KAAED,IAAIC,KAAKD,GAAG,IAAIA,EAAE0K,YAAYzK,GAAG,IAAIA,EAAEyK,SAASoZ,GAAG9jB,EAAEC,EAAEyP,YAAY,aAAa1P,EAAEA,EAAE+jB,SAAS9jB,KAAGD,EAAEgkB,4BAAwD,GAA7BhkB,EAAEgkB,wBAAwB/jB,KAAY,CAC9Z,SAASgkB,KAAK,IAAI,IAAIjkB,EAAEa,OAAOZ,EAAE2H,IAAK3H,aAAaD,EAAEkkB,mBAAmB,CAAC,IAAI,IAAIhkB,EAAE,kBAAkBD,EAAEkkB,cAAc5F,SAAS6F,IAAI,CAAC,MAAM5iB,GAAGtB,GAAE,CAAE,CAAC,IAAGA,EAAyB,MAAMD,EAAE2H,GAA/B5H,EAAEC,EAAEkkB,eAAgCrjB,SAAS,CAAC,OAAOb,CAAC,CAAC,SAASokB,GAAGrkB,GAAG,IAAIC,EAAED,GAAGA,EAAE6G,UAAU7G,EAAE6G,SAASrE,cAAc,OAAOvC,IAAI,UAAUA,IAAI,SAASD,EAAEkC,MAAM,WAAWlC,EAAEkC,MAAM,QAAQlC,EAAEkC,MAAM,QAAQlC,EAAEkC,MAAM,aAAalC,EAAEkC,OAAO,aAAajC,GAAG,SAASD,EAAEskB,gBAAgB,CACxa,SAASC,GAAGvkB,GAAG,IAAIC,EAAEgkB,KAAK/jB,EAAEF,EAAEwkB,YAAYhjB,EAAExB,EAAEykB,eAAe,GAAGxkB,IAAIC,GAAGA,GAAGA,EAAEyI,eAAemb,GAAG5jB,EAAEyI,cAAc+b,gBAAgBxkB,GAAG,CAAC,GAAG,OAAOsB,GAAG6iB,GAAGnkB,GAAG,GAAGD,EAAEuB,EAAEmjB,WAAc,KAAR3kB,EAAEwB,EAAEojB,OAAiB5kB,EAAEC,GAAG,mBAAmBC,EAAEA,EAAE2kB,eAAe5kB,EAAEC,EAAE4kB,aAAa/Q,KAAKgR,IAAI/kB,EAAEE,EAAEyH,MAAMvH,aAAa,IAAGJ,GAAGC,EAAEC,EAAEyI,eAAe7H,WAAWb,EAAE+kB,aAAankB,QAASokB,aAAa,CAACjlB,EAAEA,EAAEilB,eAAe,IAAIxjB,EAAEvB,EAAEwJ,YAAYtJ,OAAOsB,EAAEqS,KAAKgR,IAAIvjB,EAAEmjB,MAAMljB,GAAGD,OAAE,IAASA,EAAEojB,IAAIljB,EAAEqS,KAAKgR,IAAIvjB,EAAEojB,IAAInjB,IAAIzB,EAAEklB,QAAQxjB,EAAEF,IAAIC,EAAED,EAAEA,EAAEE,EAAEA,EAAED,GAAGA,EAAEiiB,GAAGxjB,EAAEwB,GAAG,IAAIC,EAAE+hB,GAAGxjB,EACvfsB,GAAGC,GAAGE,IAAI,IAAI3B,EAAEmlB,YAAYnlB,EAAEolB,aAAa3jB,EAAEkiB,MAAM3jB,EAAEqlB,eAAe5jB,EAAEmiB,QAAQ5jB,EAAEslB,YAAY3jB,EAAEgiB,MAAM3jB,EAAEulB,cAAc5jB,EAAEiiB,WAAU3jB,EAAEA,EAAEulB,eAAgBC,SAAShkB,EAAEkiB,KAAKliB,EAAEmiB,QAAQ5jB,EAAE0lB,kBAAkBhkB,EAAEF,GAAGxB,EAAE2lB,SAAS1lB,GAAGD,EAAEklB,OAAOvjB,EAAEgiB,KAAKhiB,EAAEiiB,UAAU3jB,EAAE2lB,OAAOjkB,EAAEgiB,KAAKhiB,EAAEiiB,QAAQ5jB,EAAE2lB,SAAS1lB,IAAI,CAAM,IAALA,EAAE,GAAOD,EAAEE,EAAEF,EAAEA,EAAE0P,YAAY,IAAI1P,EAAE0K,UAAUzK,EAAEkQ,KAAK,CAAC0V,QAAQ7lB,EAAE8lB,KAAK9lB,EAAE+lB,WAAWC,IAAIhmB,EAAEimB,YAAmD,IAAvC,oBAAoB/lB,EAAEgmB,OAAOhmB,EAAEgmB,QAAYhmB,EAAE,EAAEA,EAAED,EAAEG,OAAOF,KAAIF,EAAEC,EAAEC,IAAK2lB,QAAQE,WAAW/lB,EAAE8lB,KAAK9lB,EAAE6lB,QAAQI,UAAUjmB,EAAEgmB,GAAG,CAAC,CACzf,IAAIG,GAAGvlB,GAAI,iBAAiBE,UAAU,IAAIA,SAASyf,aAAa6F,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAKC,IAAG,EAC3F,SAASC,GAAGxmB,EAAEC,EAAEC,GAAG,IAAIsB,EAAEtB,EAAEW,SAASX,EAAEA,EAAEY,SAAS,IAAIZ,EAAEwK,SAASxK,EAAEA,EAAEyI,cAAc4d,IAAI,MAAMH,IAAIA,KAAKxe,EAAGpG,KAAU,mBAALA,EAAE4kB,KAAyB/B,GAAG7iB,GAAGA,EAAE,CAACmjB,MAAMnjB,EAAEqjB,eAAeD,IAAIpjB,EAAEsjB,cAAuFtjB,EAAE,CAAC4jB,YAA3E5jB,GAAGA,EAAEmH,eAAenH,EAAEmH,cAAcqc,aAAankB,QAAQokB,gBAA+BG,WAAWC,aAAa7jB,EAAE6jB,aAAaC,UAAU9jB,EAAE8jB,UAAUC,YAAY/jB,EAAE+jB,aAAce,IAAI9C,GAAG8C,GAAG9kB,KAAK8kB,GAAG9kB,EAAsB,GAApBA,EAAEwgB,GAAGqE,GAAG,aAAgBjmB,SAASH,EAAE,IAAIua,GAAG,WAAW,SAAS,KAAKva,EAAEC,GAAGF,EAAEmQ,KAAK,CAAC8R,MAAMhiB,EAAEiiB,UAAU1gB,IAAIvB,EAAEsP,OAAO6W,KAAK,CACtf,SAASK,GAAGzmB,EAAEC,GAAG,IAAIC,EAAE,CAAC,EAAiF,OAA/EA,EAAEF,EAAEwC,eAAevC,EAAEuC,cAActC,EAAE,SAASF,GAAG,SAASC,EAAEC,EAAE,MAAMF,GAAG,MAAMC,EAASC,CAAC,CAAC,IAAIwmB,GAAG,CAACC,aAAaF,GAAG,YAAY,gBAAgBG,mBAAmBH,GAAG,YAAY,sBAAsBI,eAAeJ,GAAG,YAAY,kBAAkBK,cAAcL,GAAG,aAAa,kBAAkBM,GAAG,CAAC,EAAEC,GAAG,CAAC,EACpF,SAASC,GAAGjnB,GAAG,GAAG+mB,GAAG/mB,GAAG,OAAO+mB,GAAG/mB,GAAG,IAAI0mB,GAAG1mB,GAAG,OAAOA,EAAE,IAAYE,EAARD,EAAEymB,GAAG1mB,GAAK,IAAIE,KAAKD,EAAE,GAAGA,EAAEkB,eAAejB,IAAIA,KAAK8mB,GAAG,OAAOD,GAAG/mB,GAAGC,EAAEC,GAAG,OAAOF,CAAC,CAA/XY,IAAKomB,GAAGlmB,SAASC,cAAc,OAAO4M,MAAM,mBAAmB9M,gBAAgB6lB,GAAGC,aAAaO,iBAAiBR,GAAGE,mBAAmBM,iBAAiBR,GAAGG,eAAeK,WAAW,oBAAoBrmB,eAAe6lB,GAAGI,cAAc9O,YAAwJ,IAAImP,GAAGF,GAAG,gBAAgBG,GAAGH,GAAG,sBAAsBI,GAAGJ,GAAG,kBAAkBK,GAAGL,GAAG,iBAAiBM,GAAG,IAAIrR,IAAIsR,GAAG,smBAAsmBllB,MAAM,KAC/lC,SAASmlB,GAAGznB,EAAEC,GAAGsnB,GAAG9hB,IAAIzF,EAAEC,GAAGQ,EAAGR,EAAE,CAACD,GAAG,CAAC,IAAI,IAAI0nB,GAAG,EAAEA,GAAGF,GAAGpnB,OAAOsnB,KAAK,CAAC,IAAIC,GAAGH,GAAGE,IAA2DD,GAApDE,GAAGnlB,cAAuD,MAAtCmlB,GAAG,GAAGhlB,cAAcglB,GAAG9kB,MAAM,IAAiB,CAAC4kB,GAAGN,GAAG,kBAAkBM,GAAGL,GAAG,wBAAwBK,GAAGJ,GAAG,oBAAoBI,GAAG,WAAW,iBAAiBA,GAAG,UAAU,WAAWA,GAAG,WAAW,UAAUA,GAAGH,GAAG,mBAAmB5mB,EAAG,eAAe,CAAC,WAAW,cAAcA,EAAG,eAAe,CAAC,WAAW,cAAcA,EAAG,iBAAiB,CAAC,aAAa,gBAC7cA,EAAG,iBAAiB,CAAC,aAAa,gBAAgBD,EAAG,WAAW,oEAAoE6B,MAAM,MAAM7B,EAAG,WAAW,uFAAuF6B,MAAM,MAAM7B,EAAG,gBAAgB,CAAC,iBAAiB,WAAW,YAAY,UAAUA,EAAG,mBAAmB,2DAA2D6B,MAAM,MAAM7B,EAAG,qBAAqB,6DAA6D6B,MAAM,MAC/f7B,EAAG,sBAAsB,8DAA8D6B,MAAM,MAAM,IAAIslB,GAAG,6NAA6NtlB,MAAM,KAAKulB,GAAG,IAAItnB,IAAI,0CAA0C+B,MAAM,KAAKwlB,OAAOF,KACzZ,SAASG,GAAG/nB,EAAEC,EAAEC,GAAG,IAAIsB,EAAExB,EAAEkC,MAAM,gBAAgBlC,EAAEoZ,cAAclZ,EAlDjE,SAAYF,EAAEC,EAAEC,EAAEsB,EAAEC,EAAEC,EAAEC,EAAEkE,EAAEC,GAA4B,GAAzByL,GAAGR,MAAMnP,KAAKzB,WAAc+Q,GAAG,CAAC,IAAGA,GAAgC,MAAMjM,MAAMlF,EAAE,MAA1C,IAAI6F,EAAEuL,GAAGD,IAAG,EAAGC,GAAG,KAA8BC,KAAKA,IAAG,EAAGC,GAAGzL,EAAE,CAAC,CAkDpEoiB,CAAGxmB,EAAEvB,OAAE,EAAOD,GAAGA,EAAEoZ,cAAc,IAAI,CACxG,SAASkJ,GAAGtiB,EAAEC,GAAGA,EAAE,KAAO,EAAFA,GAAK,IAAI,IAAIC,EAAE,EAAEA,EAAEF,EAAEI,OAAOF,IAAI,CAAC,IAAIsB,EAAExB,EAAEE,GAAGuB,EAAED,EAAEygB,MAAMzgB,EAAEA,EAAE0gB,UAAUliB,EAAE,CAAC,IAAI0B,OAAE,EAAO,GAAGzB,EAAE,IAAI,IAAI0B,EAAEH,EAAEpB,OAAO,EAAE,GAAGuB,EAAEA,IAAI,CAAC,IAAIkE,EAAErE,EAAEG,GAAGmE,EAAED,EAAEoiB,SAASriB,EAAEC,EAAEuT,cAA2B,GAAbvT,EAAEA,EAAEqiB,SAAYpiB,IAAIpE,GAAGD,EAAE+X,uBAAuB,MAAMxZ,EAAE+nB,GAAGtmB,EAAEoE,EAAED,GAAGlE,EAAEoE,CAAC,MAAM,IAAInE,EAAE,EAAEA,EAAEH,EAAEpB,OAAOuB,IAAI,CAAoD,GAA5CmE,GAAPD,EAAErE,EAAEG,IAAOsmB,SAASriB,EAAEC,EAAEuT,cAAcvT,EAAEA,EAAEqiB,SAAYpiB,IAAIpE,GAAGD,EAAE+X,uBAAuB,MAAMxZ,EAAE+nB,GAAGtmB,EAAEoE,EAAED,GAAGlE,EAAEoE,CAAC,CAAC,CAAC,CAAC,GAAGsL,GAAG,MAAMpR,EAAEqR,GAAGD,IAAG,EAAGC,GAAG,KAAKrR,CAAE,CAC5a,SAASmoB,GAAEnoB,EAAEC,GAAG,IAAIC,EAAED,EAAEmoB,SAAI,IAASloB,IAAIA,EAAED,EAAEmoB,IAAI,IAAI7nB,KAAK,IAAIiB,EAAExB,EAAE,WAAWE,EAAEmoB,IAAI7mB,KAAK8mB,GAAGroB,EAAED,EAAE,GAAE,GAAIE,EAAES,IAAIa,GAAG,CAAC,SAAS+mB,GAAGvoB,EAAEC,EAAEC,GAAG,IAAIsB,EAAE,EAAEvB,IAAIuB,GAAG,GAAG8mB,GAAGpoB,EAAEF,EAAEwB,EAAEvB,EAAE,CAAC,IAAIuoB,GAAG,kBAAkBzU,KAAK0U,SAASve,SAAS,IAAIrH,MAAM,GAAG,SAAS6lB,GAAG1oB,GAAG,IAAIA,EAAEwoB,IAAI,CAACxoB,EAAEwoB,KAAI,EAAGloB,EAAGiC,SAAQ,SAAStC,GAAG,oBAAoBA,IAAI4nB,GAAGQ,IAAIpoB,IAAIsoB,GAAGtoB,GAAE,EAAGD,GAAGuoB,GAAGtoB,GAAE,EAAGD,GAAG,IAAG,IAAIC,EAAE,IAAID,EAAE0K,SAAS1K,EAAEA,EAAE2I,cAAc,OAAO1I,GAAGA,EAAEuoB,MAAMvoB,EAAEuoB,KAAI,EAAGD,GAAG,mBAAkB,EAAGtoB,GAAG,CAAC,CACjb,SAASqoB,GAAGtoB,EAAEC,EAAEC,EAAEsB,GAAG,OAAO+W,GAAGtY,IAAI,KAAK,EAAE,IAAIwB,EAAEsW,GAAG,MAAM,KAAK,EAAEtW,EAAEyW,GAAG,MAAM,QAAQzW,EAAEwW,GAAG/X,EAAEuB,EAAEknB,KAAK,KAAK1oB,EAAEC,EAAEF,GAAGyB,OAAE,GAAQiP,IAAI,eAAezQ,GAAG,cAAcA,GAAG,UAAUA,IAAIwB,GAAE,GAAID,OAAE,IAASC,EAAEzB,EAAE4Q,iBAAiB3Q,EAAEC,EAAE,CAAC0oB,SAAQ,EAAGC,QAAQpnB,IAAIzB,EAAE4Q,iBAAiB3Q,EAAEC,GAAE,QAAI,IAASuB,EAAEzB,EAAE4Q,iBAAiB3Q,EAAEC,EAAE,CAAC2oB,QAAQpnB,IAAIzB,EAAE4Q,iBAAiB3Q,EAAEC,GAAE,EAAG,CAClV,SAASiY,GAAGnY,EAAEC,EAAEC,EAAEsB,EAAEC,GAAG,IAAIC,EAAEF,EAAE,GAAG,KAAO,EAAFvB,IAAM,KAAO,EAAFA,IAAM,OAAOuB,EAAExB,EAAE,OAAO,CAAC,GAAG,OAAOwB,EAAE,OAAO,IAAIG,EAAEH,EAAE2E,IAAI,GAAG,IAAIxE,GAAG,IAAIA,EAAE,CAAC,IAAIkE,EAAErE,EAAEwO,UAAUmH,cAAc,GAAGtR,IAAIpE,GAAG,IAAIoE,EAAE6E,UAAU7E,EAAE6J,aAAajO,EAAE,MAAM,GAAG,IAAIE,EAAE,IAAIA,EAAEH,EAAEkQ,OAAO,OAAO/P,GAAG,CAAC,IAAImE,EAAEnE,EAAEwE,IAAI,IAAG,IAAIL,GAAG,IAAIA,MAAKA,EAAEnE,EAAEqO,UAAUmH,iBAAkB1V,GAAG,IAAIqE,EAAE4E,UAAU5E,EAAE4J,aAAajO,GAAE,OAAOE,EAAEA,EAAE+P,MAAM,CAAC,KAAK,OAAO7L,GAAG,CAAS,GAAG,QAAXlE,EAAEqV,GAAGnR,IAAe,OAAe,GAAG,KAAXC,EAAEnE,EAAEwE,MAAc,IAAIL,EAAE,CAACtE,EAAEE,EAAEC,EAAE,SAAS3B,CAAC,CAAC6F,EAAEA,EAAE6J,UAAU,CAAC,CAAClO,EAAEA,EAAEkQ,MAAM,CAAClB,IAAG,WAAW,IAAIhP,EAAEE,EAAED,EAAE6N,GAAGpP,GAAGyB,EAAE,GACpf3B,EAAE,CAAC,IAAI6F,EAAE0hB,GAAGrgB,IAAIlH,GAAG,QAAG,IAAS6F,EAAE,CAAC,IAAIC,EAAE0U,GAAGsO,EAAE9oB,EAAE,OAAOA,GAAG,IAAK,WAAW,GAAG,IAAI4Y,GAAG1Y,GAAG,MAAMF,EAAE,IAAK,UAAU,IAAK,QAAQ8F,EAAE6Y,GAAG,MAAM,IAAK,UAAUmK,EAAE,QAAQhjB,EAAEsW,GAAG,MAAM,IAAK,WAAW0M,EAAE,OAAOhjB,EAAEsW,GAAG,MAAM,IAAK,aAAa,IAAK,YAAYtW,EAAEsW,GAAG,MAAM,IAAK,QAAQ,GAAG,IAAIlc,EAAEwb,OAAO,MAAM1b,EAAE,IAAK,WAAW,IAAK,WAAW,IAAK,YAAY,IAAK,YAAY,IAAK,UAAU,IAAK,WAAW,IAAK,YAAY,IAAK,cAAc8F,EAAEmW,GAAG,MAAM,IAAK,OAAO,IAAK,UAAU,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,OAAOnW,EAC1iBoW,GAAG,MAAM,IAAK,cAAc,IAAK,WAAW,IAAK,YAAY,IAAK,aAAapW,EAAEwZ,GAAG,MAAM,KAAK6H,GAAG,KAAKC,GAAG,KAAKC,GAAGvhB,EAAEuW,GAAG,MAAM,KAAKiL,GAAGxhB,EAAE4Z,GAAG,MAAM,IAAK,SAAS5Z,EAAE8U,GAAG,MAAM,IAAK,QAAQ9U,EAAEqa,GAAG,MAAM,IAAK,OAAO,IAAK,MAAM,IAAK,QAAQra,EAAE6W,GAAG,MAAM,IAAK,oBAAoB,IAAK,qBAAqB,IAAK,gBAAgB,IAAK,cAAc,IAAK,cAAc,IAAK,aAAa,IAAK,cAAc,IAAK,YAAY7W,EAAE8Y,GAAG,IAAImK,EAAE,KAAO,EAAF9oB,GAAK+oB,GAAGD,GAAG,WAAW/oB,EAAEipB,EAAEF,EAAE,OAAOljB,EAAEA,EAAE,UAAU,KAAKA,EAAEkjB,EAAE,GAAG,IAAI,IAAQG,EAAJC,EAAE3nB,EAAI,OAC/e2nB,GAAG,CAAK,IAAIC,GAARF,EAAEC,GAAUnZ,UAAsF,GAA5E,IAAIkZ,EAAE/iB,KAAK,OAAOijB,IAAIF,EAAEE,EAAE,OAAOH,IAAc,OAAVG,EAAE3Y,GAAG0Y,EAAEF,KAAYF,EAAE5Y,KAAKkZ,GAAGF,EAAEC,EAAEF,MAASF,EAAE,MAAMG,EAAEA,EAAEzX,MAAM,CAAC,EAAEqX,EAAE3oB,SAASyF,EAAE,IAAIC,EAAED,EAAEijB,EAAE,KAAK5oB,EAAEuB,GAAGE,EAAEwO,KAAK,CAAC8R,MAAMpc,EAAEqc,UAAU6G,IAAI,CAAC,CAAC,GAAG,KAAO,EAAF9oB,GAAK,CAA4E,GAAnC6F,EAAE,aAAa9F,GAAG,eAAeA,KAAtE6F,EAAE,cAAc7F,GAAG,gBAAgBA,IAA2CE,IAAImP,MAAKyZ,EAAE5oB,EAAE0b,eAAe1b,EAAE2b,eAAe7E,GAAG8R,KAAIA,EAAEQ,OAAgBxjB,GAAGD,KAAGA,EAAEpE,EAAEZ,SAASY,EAAEA,GAAGoE,EAAEpE,EAAEkH,eAAe9C,EAAEmf,aAAanf,EAAE0jB,aAAa1oB,OAAUiF,GAAqCA,EAAEtE,EAAiB,QAAfsnB,GAAnCA,EAAE5oB,EAAE0b,eAAe1b,EAAE4b,WAAkB9E,GAAG8R,GAAG,QAC9dA,KAARE,EAAExX,GAAGsX,KAAU,IAAIA,EAAE3iB,KAAK,IAAI2iB,EAAE3iB,OAAK2iB,EAAE,QAAUhjB,EAAE,KAAKgjB,EAAEtnB,GAAKsE,IAAIgjB,GAAE,CAAgU,GAA/TC,EAAE9M,GAAGmN,EAAE,eAAeH,EAAE,eAAeE,EAAE,QAAW,eAAenpB,GAAG,gBAAgBA,IAAE+oB,EAAEnK,GAAGwK,EAAE,iBAAiBH,EAAE,iBAAiBE,EAAE,WAAUH,EAAE,MAAMljB,EAAED,EAAE2c,GAAG1c,GAAGojB,EAAE,MAAMJ,EAAEjjB,EAAE2c,GAAGsG,IAAGjjB,EAAE,IAAIkjB,EAAEK,EAAED,EAAE,QAAQrjB,EAAE5F,EAAEuB,IAAK8N,OAAOyZ,EAAEnjB,EAAE+V,cAAcsN,EAAEE,EAAE,KAAKpS,GAAGvV,KAAKD,KAAIunB,EAAE,IAAIA,EAAEE,EAAEE,EAAE,QAAQL,EAAE5oB,EAAEuB,IAAK8N,OAAO2Z,EAAEH,EAAEnN,cAAcoN,EAAEI,EAAEL,GAAGC,EAAEI,EAAKtjB,GAAGgjB,EAAE7oB,EAAE,CAAa,IAARgpB,EAAEH,EAAEK,EAAE,EAAMD,EAAhBH,EAAEjjB,EAAkBojB,EAAEA,EAAEM,GAAGN,GAAGC,IAAQ,IAAJD,EAAE,EAAME,EAAEH,EAAEG,EAAEA,EAAEI,GAAGJ,GAAGF,IAAI,KAAK,EAAEC,EAAED,GAAGH,EAAES,GAAGT,GAAGI,IAAI,KAAK,EAAED,EAAEC,GAAGF,EACpfO,GAAGP,GAAGC,IAAI,KAAKC,KAAK,CAAC,GAAGJ,IAAIE,GAAG,OAAOA,GAAGF,IAAIE,EAAExX,UAAU,MAAMxR,EAAE8oB,EAAES,GAAGT,GAAGE,EAAEO,GAAGP,EAAE,CAACF,EAAE,IAAI,MAAMA,EAAE,KAAK,OAAOjjB,GAAG2jB,GAAG9nB,EAAEkE,EAAEC,EAAEijB,GAAE,GAAI,OAAOD,GAAG,OAAOE,GAAGS,GAAG9nB,EAAEqnB,EAAEF,EAAEC,GAAE,EAAG,CAA8D,GAAG,YAA1CjjB,GAAjBD,EAAErE,EAAEghB,GAAGhhB,GAAGX,QAAWgG,UAAUhB,EAAEgB,SAASrE,gBAA+B,UAAUsD,GAAG,SAASD,EAAE3D,KAAK,IAAIwnB,EAAGjH,QAAQ,GAAGX,GAAGjc,GAAG,GAAG6c,GAAGgH,EAAGpG,OAAO,CAACoG,EAAGtG,GAAG,IAAIuG,EAAGzG,EAAE,MAAMpd,EAAED,EAAEgB,WAAW,UAAUf,EAAEtD,gBAAgB,aAAaqD,EAAE3D,MAAM,UAAU2D,EAAE3D,QAAQwnB,EAAGrG,IACrV,OAD4VqG,IAAKA,EAAGA,EAAG1pB,EAAEwB,IAAKugB,GAAGpgB,EAAE+nB,EAAGxpB,EAAEuB,IAAWkoB,GAAIA,EAAG3pB,EAAE6F,EAAErE,GAAG,aAAaxB,IAAI2pB,EAAG9jB,EAAEqC,gBAClfyhB,EAAGrhB,YAAY,WAAWzC,EAAE3D,MAAMuG,GAAG5C,EAAE,SAASA,EAAE8B,QAAOgiB,EAAGnoB,EAAEghB,GAAGhhB,GAAGX,OAAcb,GAAG,IAAK,WAAa8hB,GAAG6H,IAAK,SAASA,EAAGrF,mBAAgB8B,GAAGuD,EAAGtD,GAAG7kB,EAAE8kB,GAAG,MAAK,MAAM,IAAK,WAAWA,GAAGD,GAAGD,GAAG,KAAK,MAAM,IAAK,YAAYG,IAAG,EAAG,MAAM,IAAK,cAAc,IAAK,UAAU,IAAK,UAAUA,IAAG,EAAGC,GAAG7kB,EAAEzB,EAAEuB,GAAG,MAAM,IAAK,kBAAkB,GAAG0kB,GAAG,MAAM,IAAK,UAAU,IAAK,QAAQK,GAAG7kB,EAAEzB,EAAEuB,GAAG,IAAImoB,EAAG,GAAGvJ,GAAGpgB,EAAE,CAAC,OAAOD,GAAG,IAAK,mBAAmB,IAAI6pB,EAAG,qBAAqB,MAAM5pB,EAAE,IAAK,iBAAiB4pB,EAAG,mBACpe,MAAM5pB,EAAE,IAAK,oBAAoB4pB,EAAG,sBAAsB,MAAM5pB,EAAE4pB,OAAG,CAAM,MAAM/I,GAAGF,GAAG5gB,EAAEE,KAAK2pB,EAAG,oBAAoB,YAAY7pB,GAAG,MAAME,EAAE2Y,UAAUgR,EAAG,sBAAsBA,IAAKpJ,IAAI,OAAOvgB,EAAEue,SAASqC,IAAI,uBAAuB+I,EAAG,qBAAqBA,GAAI/I,KAAK8I,EAAGjR,OAAYF,GAAG,UAARD,GAAG/W,GAAkB+W,GAAG7Q,MAAM6Q,GAAG9O,YAAYoX,IAAG,IAAiB,GAAZ6I,EAAG3H,GAAGxgB,EAAEqoB,IAASzpB,SAASypB,EAAG,IAAIjN,GAAGiN,EAAG7pB,EAAE,KAAKE,EAAEuB,GAAGE,EAAEwO,KAAK,CAAC8R,MAAM4H,EAAG3H,UAAUyH,IAAKC,EAAGC,EAAGhN,KAAK+M,EAAa,QAATA,EAAG/I,GAAG3gB,MAAe2pB,EAAGhN,KAAK+M,MAAUA,EAAGpJ,GA5BhM,SAAYxgB,EAAEC,GAAG,OAAOD,GAAG,IAAK,iBAAiB,OAAO6gB,GAAG5gB,GAAG,IAAK,WAAW,OAAG,KAAKA,EAAEye,MAAa,MAAKiC,IAAG,EAAUD,IAAG,IAAK,YAAY,OAAO1gB,EAAEC,EAAE4c,QAAS6D,IAAIC,GAAG,KAAK3gB,EAAE,QAAQ,OAAO,KAAK,CA4BE8pB,CAAG9pB,EAAEE,GA3Bzd,SAAYF,EAAEC,GAAG,GAAG6gB,GAAG,MAAM,mBAAmB9gB,IAAIqgB,IAAIO,GAAG5gB,EAAEC,IAAID,EAAE2Y,KAAKD,GAAGD,GAAGD,GAAG,KAAKsI,IAAG,EAAG9gB,GAAG,KAAK,OAAOA,GAAG,IAAK,QAAgQ,QAAQ,OAAO,KAA3P,IAAK,WAAW,KAAKC,EAAEmb,SAASnb,EAAEqb,QAAQrb,EAAEsb,UAAUtb,EAAEmb,SAASnb,EAAEqb,OAAO,CAAC,GAAGrb,EAAE8pB,MAAM,EAAE9pB,EAAE8pB,KAAK3pB,OAAO,OAAOH,EAAE8pB,KAAK,GAAG9pB,EAAEye,MAAM,OAAON,OAAOC,aAAape,EAAEye,MAAM,CAAC,OAAO,KAAK,IAAK,iBAAiB,OAAO+B,IAAI,OAAOxgB,EAAEwe,OAAO,KAAKxe,EAAE4c,KAAyB,CA2BqFmN,CAAGhqB,EAAEE,MACje,GADoesB,EAAEwgB,GAAGxgB,EAAE,kBACvepB,SAASqB,EAAE,IAAImb,GAAG,gBAAgB,cAAc,KAAK1c,EAAEuB,GAAGE,EAAEwO,KAAK,CAAC8R,MAAMxgB,EAAEygB,UAAU1gB,IAAIC,EAAEob,KAAK+M,GAAG,CAACtH,GAAG3gB,EAAE1B,EAAE,GAAE,CAAC,SAASopB,GAAGrpB,EAAEC,EAAEC,GAAG,MAAM,CAAC+nB,SAASjoB,EAAEkoB,SAASjoB,EAAEmZ,cAAclZ,EAAE,CAAC,SAAS8hB,GAAGhiB,EAAEC,GAAG,IAAI,IAAIC,EAAED,EAAE,UAAUuB,EAAE,GAAG,OAAOxB,GAAG,CAAC,IAAIyB,EAAEzB,EAAE0B,EAAED,EAAEuO,UAAU,IAAIvO,EAAE0E,KAAK,OAAOzE,IAAID,EAAEC,EAAY,OAAVA,EAAE+O,GAAGzQ,EAAEE,KAAYsB,EAAEyoB,QAAQZ,GAAGrpB,EAAE0B,EAAED,IAAc,OAAVC,EAAE+O,GAAGzQ,EAAEC,KAAYuB,EAAE2O,KAAKkZ,GAAGrpB,EAAE0B,EAAED,KAAKzB,EAAEA,EAAE0R,MAAM,CAAC,OAAOlQ,CAAC,CAAC,SAASgoB,GAAGxpB,GAAG,GAAG,OAAOA,EAAE,OAAO,KAAK,GAAGA,EAAEA,EAAE0R,aAAa1R,GAAG,IAAIA,EAAEmG,KAAK,OAAOnG,GAAI,IAAI,CACnd,SAASypB,GAAGzpB,EAAEC,EAAEC,EAAEsB,EAAEC,GAAG,IAAI,IAAIC,EAAEzB,EAAEiZ,WAAWvX,EAAE,GAAG,OAAOzB,GAAGA,IAAIsB,GAAG,CAAC,IAAIqE,EAAE3F,EAAE4F,EAAED,EAAE4L,UAAU7L,EAAEC,EAAEmK,UAAU,GAAG,OAAOlK,GAAGA,IAAItE,EAAE,MAAM,IAAIqE,EAAEM,KAAK,OAAOP,IAAIC,EAAED,EAAEnE,EAAa,OAAVqE,EAAE2K,GAAGvQ,EAAEwB,KAAYC,EAAEsoB,QAAQZ,GAAGnpB,EAAE4F,EAAED,IAAKpE,GAAc,OAAVqE,EAAE2K,GAAGvQ,EAAEwB,KAAYC,EAAEwO,KAAKkZ,GAAGnpB,EAAE4F,EAAED,KAAM3F,EAAEA,EAAEwR,MAAM,CAAC,IAAI/P,EAAEvB,QAAQJ,EAAEmQ,KAAK,CAAC8R,MAAMhiB,EAAEiiB,UAAUvgB,GAAG,CAAC,IAAIuoB,GAAG,SAASC,GAAG,iBAAiB,SAASC,GAAGpqB,GAAG,OAAO,kBAAkBA,EAAEA,EAAE,GAAGA,GAAGuD,QAAQ2mB,GAAG,MAAM3mB,QAAQ4mB,GAAG,GAAG,CAAC,SAASE,GAAGrqB,EAAEC,EAAEC,GAAW,GAARD,EAAEmqB,GAAGnqB,GAAMmqB,GAAGpqB,KAAKC,GAAGC,EAAE,MAAM+E,MAAMlF,EAAE,KAAM,CAAC,SAASuqB,KAAK,CAC9e,IAAIC,GAAG,KAAKC,GAAG,KAAK,SAASC,GAAGzqB,EAAEC,GAAG,MAAM,aAAaD,GAAG,aAAaA,GAAG,kBAAkBC,EAAEqJ,UAAU,kBAAkBrJ,EAAEqJ,UAAU,kBAAkBrJ,EAAEoJ,yBAAyB,OAAOpJ,EAAEoJ,yBAAyB,MAAMpJ,EAAEoJ,wBAAwBqhB,MAAM,CAC5P,IAAIC,GAAG,oBAAoBC,WAAWA,gBAAW,EAAOC,GAAG,oBAAoBC,aAAaA,kBAAa,EAAOC,GAAG,oBAAoBC,QAAQA,aAAQ,EAAOC,GAAG,oBAAoBC,eAAeA,eAAe,qBAAqBH,GAAG,SAAS/qB,GAAG,OAAO+qB,GAAGI,QAAQ,MAAMC,KAAKprB,GAAGqrB,MAAMC,GAAG,EAAEX,GAAG,SAASW,GAAGtrB,GAAG4qB,YAAW,WAAW,MAAM5qB,CAAE,GAAE,CACpV,SAASurB,GAAGvrB,EAAEC,GAAG,IAAIC,EAAED,EAAEuB,EAAE,EAAE,EAAE,CAAC,IAAIC,EAAEvB,EAAE2jB,YAA6B,GAAjB7jB,EAAEoK,YAAYlK,GAAMuB,GAAG,IAAIA,EAAEiJ,SAAS,GAAY,QAATxK,EAAEuB,EAAEob,MAAc,CAAC,GAAG,IAAIrb,EAA0B,OAAvBxB,EAAEoK,YAAY3I,QAAGkW,GAAG1X,GAAUuB,GAAG,KAAK,MAAMtB,GAAG,OAAOA,GAAG,OAAOA,GAAGsB,IAAItB,EAAEuB,CAAC,OAAOvB,GAAGyX,GAAG1X,EAAE,CAAC,SAASurB,GAAGxrB,GAAG,KAAK,MAAMA,EAAEA,EAAEA,EAAE6jB,YAAY,CAAC,IAAI5jB,EAAED,EAAE0K,SAAS,GAAG,IAAIzK,GAAG,IAAIA,EAAE,MAAM,GAAG,IAAIA,EAAE,CAAU,GAAG,OAAZA,EAAED,EAAE6c,OAAiB,OAAO5c,GAAG,OAAOA,EAAE,MAAM,GAAG,OAAOA,EAAE,OAAO,IAAI,CAAC,CAAC,OAAOD,CAAC,CACjY,SAASyrB,GAAGzrB,GAAGA,EAAEA,EAAE0rB,gBAAgB,IAAI,IAAIzrB,EAAE,EAAED,GAAG,CAAC,GAAG,IAAIA,EAAE0K,SAAS,CAAC,IAAIxK,EAAEF,EAAE6c,KAAK,GAAG,MAAM3c,GAAG,OAAOA,GAAG,OAAOA,EAAE,CAAC,GAAG,IAAID,EAAE,OAAOD,EAAEC,GAAG,KAAK,OAAOC,GAAGD,GAAG,CAACD,EAAEA,EAAE0rB,eAAe,CAAC,OAAO,IAAI,CAAC,IAAIC,GAAG5X,KAAK0U,SAASve,SAAS,IAAIrH,MAAM,GAAG+oB,GAAG,gBAAgBD,GAAGE,GAAG,gBAAgBF,GAAGrC,GAAG,oBAAoBqC,GAAGvD,GAAG,iBAAiBuD,GAAGG,GAAG,oBAAoBH,GAAGI,GAAG,kBAAkBJ,GAClX,SAAS3U,GAAGhX,GAAG,IAAIC,EAAED,EAAE4rB,IAAI,GAAG3rB,EAAE,OAAOA,EAAE,IAAI,IAAIC,EAAEF,EAAE0P,WAAWxP,GAAG,CAAC,GAAGD,EAAEC,EAAEopB,KAAKppB,EAAE0rB,IAAI,CAAe,GAAd1rB,EAAED,EAAEwR,UAAa,OAAOxR,EAAEgS,OAAO,OAAO/R,GAAG,OAAOA,EAAE+R,MAAM,IAAIjS,EAAEyrB,GAAGzrB,GAAG,OAAOA,GAAG,CAAC,GAAGE,EAAEF,EAAE4rB,IAAI,OAAO1rB,EAAEF,EAAEyrB,GAAGzrB,EAAE,CAAC,OAAOC,CAAC,CAAKC,GAAJF,EAAEE,GAAMwP,UAAU,CAAC,OAAO,IAAI,CAAC,SAASK,GAAG/P,GAAkB,QAAfA,EAAEA,EAAE4rB,KAAK5rB,EAAEspB,MAAc,IAAItpB,EAAEmG,KAAK,IAAInG,EAAEmG,KAAK,KAAKnG,EAAEmG,KAAK,IAAInG,EAAEmG,IAAI,KAAKnG,CAAC,CAAC,SAASwiB,GAAGxiB,GAAG,GAAG,IAAIA,EAAEmG,KAAK,IAAInG,EAAEmG,IAAI,OAAOnG,EAAEgQ,UAAU,MAAM/K,MAAMlF,EAAE,IAAK,CAAC,SAASkQ,GAAGjQ,GAAG,OAAOA,EAAE6rB,KAAK,IAAI,CAAC,IAAIG,GAAG,GAAGC,IAAI,EAAE,SAASC,GAAGlsB,GAAG,MAAM,CAACmS,QAAQnS,EAAE,CACve,SAASmsB,GAAEnsB,GAAG,EAAEisB,KAAKjsB,EAAEmS,QAAQ6Z,GAAGC,IAAID,GAAGC,IAAI,KAAKA,KAAK,CAAC,SAASG,GAAEpsB,EAAEC,GAAGgsB,KAAKD,GAAGC,IAAIjsB,EAAEmS,QAAQnS,EAAEmS,QAAQlS,CAAC,CAAC,IAAIosB,GAAG,CAAC,EAAEC,GAAEJ,GAAGG,IAAIE,GAAGL,IAAG,GAAIM,GAAGH,GAAG,SAASI,GAAGzsB,EAAEC,GAAG,IAAIC,EAAEF,EAAEkC,KAAKwqB,aAAa,IAAIxsB,EAAE,OAAOmsB,GAAG,IAAI7qB,EAAExB,EAAEgQ,UAAU,GAAGxO,GAAGA,EAAEmrB,8CAA8C1sB,EAAE,OAAOuB,EAAEorB,0CAA0C,IAASlrB,EAALD,EAAE,CAAC,EAAI,IAAIC,KAAKxB,EAAEuB,EAAEC,GAAGzB,EAAEyB,GAAoH,OAAjHF,KAAIxB,EAAEA,EAAEgQ,WAAY2c,4CAA4C1sB,EAAED,EAAE4sB,0CAA0CnrB,GAAUA,CAAC,CAC9d,SAASorB,GAAG7sB,GAAyB,OAAO,QAA7BA,EAAEA,EAAE8sB,yBAAmC,IAAS9sB,CAAC,CAAC,SAAS+sB,KAAKZ,GAAEI,IAAIJ,GAAEG,GAAE,CAAC,SAASU,GAAGhtB,EAAEC,EAAEC,GAAG,GAAGosB,GAAEna,UAAUka,GAAG,MAAMpnB,MAAMlF,EAAE,MAAMqsB,GAAEE,GAAErsB,GAAGmsB,GAAEG,GAAGrsB,EAAE,CAAC,SAAS+sB,GAAGjtB,EAAEC,EAAEC,GAAG,IAAIsB,EAAExB,EAAEgQ,UAAgC,GAAtB/P,EAAEA,EAAE6sB,kBAAqB,oBAAoBtrB,EAAE0rB,gBAAgB,OAAOhtB,EAAwB,IAAI,IAAIuB,KAA9BD,EAAEA,EAAE0rB,kBAAiC,KAAKzrB,KAAKxB,GAAG,MAAMgF,MAAMlF,EAAE,IAAI2G,EAAG1G,IAAI,UAAUyB,IAAI,OAAOqD,EAAE,CAAC,EAAE5E,EAAEsB,EAAE,CACxX,SAAS2rB,GAAGntB,GAA2G,OAAxGA,GAAGA,EAAEA,EAAEgQ,YAAYhQ,EAAEotB,2CAA2Cf,GAAGG,GAAGF,GAAEna,QAAQia,GAAEE,GAAEtsB,GAAGosB,GAAEG,GAAGA,GAAGpa,UAAe,CAAE,CAAC,SAASkb,GAAGrtB,EAAEC,EAAEC,GAAG,IAAIsB,EAAExB,EAAEgQ,UAAU,IAAIxO,EAAE,MAAMyD,MAAMlF,EAAE,MAAMG,GAAGF,EAAEitB,GAAGjtB,EAAEC,EAAEusB,IAAIhrB,EAAE4rB,0CAA0CptB,EAAEmsB,GAAEI,IAAIJ,GAAEG,IAAGF,GAAEE,GAAEtsB,IAAImsB,GAAEI,IAAIH,GAAEG,GAAGrsB,EAAE,CAAC,IAAIotB,GAAG,KAAKC,IAAG,EAAGC,IAAG,EAAG,SAASC,GAAGztB,GAAG,OAAOstB,GAAGA,GAAG,CAACttB,GAAGstB,GAAGnd,KAAKnQ,EAAE,CAChW,SAAS0tB,KAAK,IAAIF,IAAI,OAAOF,GAAG,CAACE,IAAG,EAAG,IAAIxtB,EAAE,EAAEC,EAAEoV,GAAE,IAAI,IAAInV,EAAEotB,GAAG,IAAIjY,GAAE,EAAErV,EAAEE,EAAEE,OAAOJ,IAAI,CAAC,IAAIwB,EAAEtB,EAAEF,GAAG,GAAGwB,EAAEA,GAAE,SAAU,OAAOA,EAAE,CAAC8rB,GAAG,KAAKC,IAAG,CAAE,CAAC,MAAM9rB,GAAG,MAAM,OAAO6rB,KAAKA,GAAGA,GAAGzqB,MAAM7C,EAAE,IAAIsS,GAAGY,GAAGwa,IAAIjsB,CAAE,CAAC,QAAQ4T,GAAEpV,EAAEutB,IAAG,CAAE,CAAC,CAAC,OAAO,IAAI,CAAC,IAAIG,GAAG,GAAGC,GAAG,EAAEC,GAAG,KAAKC,GAAG,EAAEC,GAAG,GAAGC,GAAG,EAAEC,GAAG,KAAKC,GAAG,EAAEC,GAAG,GAAG,SAASC,GAAGpuB,EAAEC,GAAG0tB,GAAGC,MAAME,GAAGH,GAAGC,MAAMC,GAAGA,GAAG7tB,EAAE8tB,GAAG7tB,CAAC,CACjV,SAASouB,GAAGruB,EAAEC,EAAEC,GAAG6tB,GAAGC,MAAME,GAAGH,GAAGC,MAAMG,GAAGJ,GAAGC,MAAMC,GAAGA,GAAGjuB,EAAE,IAAIwB,EAAE0sB,GAAGluB,EAAEmuB,GAAG,IAAI1sB,EAAE,GAAGqS,GAAGtS,GAAG,EAAEA,KAAK,GAAGC,GAAGvB,GAAG,EAAE,IAAIwB,EAAE,GAAGoS,GAAG7T,GAAGwB,EAAE,GAAG,GAAGC,EAAE,CAAC,IAAIC,EAAEF,EAAEA,EAAE,EAAEC,GAAGF,GAAG,GAAGG,GAAG,GAAGuI,SAAS,IAAI1I,IAAIG,EAAEF,GAAGE,EAAEusB,GAAG,GAAG,GAAGpa,GAAG7T,GAAGwB,EAAEvB,GAAGuB,EAAED,EAAE2sB,GAAGzsB,EAAE1B,CAAC,MAAMkuB,GAAG,GAAGxsB,EAAExB,GAAGuB,EAAED,EAAE2sB,GAAGnuB,CAAC,CAAC,SAASsuB,GAAGtuB,GAAG,OAAOA,EAAE0R,SAAS0c,GAAGpuB,EAAE,GAAGquB,GAAGruB,EAAE,EAAE,GAAG,CAAC,SAASuuB,GAAGvuB,GAAG,KAAKA,IAAI6tB,IAAIA,GAAGF,KAAKC,IAAID,GAAGC,IAAI,KAAKE,GAAGH,KAAKC,IAAID,GAAGC,IAAI,KAAK,KAAK5tB,IAAIiuB,IAAIA,GAAGF,KAAKC,IAAID,GAAGC,IAAI,KAAKG,GAAGJ,KAAKC,IAAID,GAAGC,IAAI,KAAKE,GAAGH,KAAKC,IAAID,GAAGC,IAAI,IAAI,CAAC,IAAIQ,GAAG,KAAKC,GAAG,KAAKC,IAAE,EAAGC,GAAG,KACje,SAASC,GAAG5uB,EAAEC,GAAG,IAAIC,EAAE2uB,GAAG,EAAE,KAAK,KAAK,GAAG3uB,EAAE4uB,YAAY,UAAU5uB,EAAE8P,UAAU/P,EAAEC,EAAEwR,OAAO1R,EAAgB,QAAdC,EAAED,EAAE+uB,YAAoB/uB,EAAE+uB,UAAU,CAAC7uB,GAAGF,EAAE2R,OAAO,IAAI1R,EAAEkQ,KAAKjQ,EAAE,CACxJ,SAAS8uB,GAAGhvB,EAAEC,GAAG,OAAOD,EAAEmG,KAAK,KAAK,EAAE,IAAIjG,EAAEF,EAAEkC,KAAyE,OAAO,QAA3EjC,EAAE,IAAIA,EAAEyK,UAAUxK,EAAEsC,gBAAgBvC,EAAE4G,SAASrE,cAAc,KAAKvC,KAAmBD,EAAEgQ,UAAU/P,EAAEuuB,GAAGxuB,EAAEyuB,GAAGjD,GAAGvrB,EAAEkK,aAAY,GAAO,KAAK,EAAE,OAAoD,QAA7ClK,EAAE,KAAKD,EAAEivB,cAAc,IAAIhvB,EAAEyK,SAAS,KAAKzK,KAAYD,EAAEgQ,UAAU/P,EAAEuuB,GAAGxuB,EAAEyuB,GAAG,MAAK,GAAO,KAAK,GAAG,OAA+B,QAAxBxuB,EAAE,IAAIA,EAAEyK,SAAS,KAAKzK,KAAYC,EAAE,OAAO+tB,GAAG,CAAC7V,GAAG8V,GAAGgB,SAASf,IAAI,KAAKnuB,EAAE6R,cAAc,CAACC,WAAW7R,EAAEkvB,YAAYjvB,EAAEkvB,UAAU,aAAYlvB,EAAE2uB,GAAG,GAAG,KAAK,KAAK,IAAK7e,UAAU/P,EAAEC,EAAEwR,OAAO1R,EAAEA,EAAEiS,MAAM/R,EAAEsuB,GAAGxuB,EAAEyuB,GAClf,MAAK,GAAO,QAAQ,OAAM,EAAG,CAAC,SAASY,GAAGrvB,GAAG,OAAO,KAAY,EAAPA,EAAEsvB,OAAS,KAAa,IAARtvB,EAAE2R,MAAU,CAAC,SAAS4d,GAAGvvB,GAAG,GAAG0uB,GAAE,CAAC,IAAIzuB,EAAEwuB,GAAG,GAAGxuB,EAAE,CAAC,IAAIC,EAAED,EAAE,IAAI+uB,GAAGhvB,EAAEC,GAAG,CAAC,GAAGovB,GAAGrvB,GAAG,MAAMiF,MAAMlF,EAAE,MAAME,EAAEurB,GAAGtrB,EAAE2jB,aAAa,IAAIriB,EAAEgtB,GAAGvuB,GAAG+uB,GAAGhvB,EAAEC,GAAG2uB,GAAGptB,EAAEtB,IAAIF,EAAE2R,OAAe,KAAT3R,EAAE2R,MAAY,EAAE+c,IAAE,EAAGF,GAAGxuB,EAAE,CAAC,KAAK,CAAC,GAAGqvB,GAAGrvB,GAAG,MAAMiF,MAAMlF,EAAE,MAAMC,EAAE2R,OAAe,KAAT3R,EAAE2R,MAAY,EAAE+c,IAAE,EAAGF,GAAGxuB,CAAC,CAAC,CAAC,CAAC,SAASwvB,GAAGxvB,GAAG,IAAIA,EAAEA,EAAE0R,OAAO,OAAO1R,GAAG,IAAIA,EAAEmG,KAAK,IAAInG,EAAEmG,KAAK,KAAKnG,EAAEmG,KAAKnG,EAAEA,EAAE0R,OAAO8c,GAAGxuB,CAAC,CACha,SAASyvB,GAAGzvB,GAAG,GAAGA,IAAIwuB,GAAG,OAAM,EAAG,IAAIE,GAAE,OAAOc,GAAGxvB,GAAG0uB,IAAE,GAAG,EAAG,IAAIzuB,EAAkG,IAA/FA,EAAE,IAAID,EAAEmG,QAAQlG,EAAE,IAAID,EAAEmG,OAAgBlG,EAAE,UAAXA,EAAED,EAAEkC,OAAmB,SAASjC,IAAIwqB,GAAGzqB,EAAEkC,KAAKlC,EAAE0vB,gBAAmBzvB,IAAIA,EAAEwuB,IAAI,CAAC,GAAGY,GAAGrvB,GAAG,MAAM2vB,KAAK1qB,MAAMlF,EAAE,MAAM,KAAKE,GAAG2uB,GAAG5uB,EAAEC,GAAGA,EAAEurB,GAAGvrB,EAAE4jB,YAAY,CAAO,GAAN2L,GAAGxvB,GAAM,KAAKA,EAAEmG,IAAI,CAAgD,KAA7BnG,EAAE,QAApBA,EAAEA,EAAE6R,eAAyB7R,EAAE8R,WAAW,MAAW,MAAM7M,MAAMlF,EAAE,MAAMC,EAAE,CAAiB,IAAhBA,EAAEA,EAAE6jB,YAAgB5jB,EAAE,EAAED,GAAG,CAAC,GAAG,IAAIA,EAAE0K,SAAS,CAAC,IAAIxK,EAAEF,EAAE6c,KAAK,GAAG,OAAO3c,EAAE,CAAC,GAAG,IAAID,EAAE,CAACwuB,GAAGjD,GAAGxrB,EAAE6jB,aAAa,MAAM7jB,CAAC,CAACC,GAAG,KAAK,MAAMC,GAAG,OAAOA,GAAG,OAAOA,GAAGD,GAAG,CAACD,EAAEA,EAAE6jB,WAAW,CAAC4K,GACjgB,IAAI,CAAC,MAAMA,GAAGD,GAAGhD,GAAGxrB,EAAEgQ,UAAU6T,aAAa,KAAK,OAAM,CAAE,CAAC,SAAS8L,KAAK,IAAI,IAAI3vB,EAAEyuB,GAAGzuB,GAAGA,EAAEwrB,GAAGxrB,EAAE6jB,YAAY,CAAC,SAAS+L,KAAKnB,GAAGD,GAAG,KAAKE,IAAE,CAAE,CAAC,SAASmB,GAAG7vB,GAAG,OAAO2uB,GAAGA,GAAG,CAAC3uB,GAAG2uB,GAAGxe,KAAKnQ,EAAE,CAAC,IAAI8vB,GAAGrsB,EAAGoU,wBAChM,SAASkY,GAAG/vB,EAAEC,EAAEC,GAAW,GAAG,QAAXF,EAAEE,EAAE8vB,MAAiB,oBAAoBhwB,GAAG,kBAAkBA,EAAE,CAAC,GAAGE,EAAE+vB,OAAO,CAAY,GAAX/vB,EAAEA,EAAE+vB,OAAY,CAAC,GAAG,IAAI/vB,EAAEiG,IAAI,MAAMlB,MAAMlF,EAAE,MAAM,IAAIyB,EAAEtB,EAAE8P,SAAS,CAAC,IAAIxO,EAAE,MAAMyD,MAAMlF,EAAE,IAAIC,IAAI,IAAIyB,EAAED,EAAEE,EAAE,GAAG1B,EAAE,OAAG,OAAOC,GAAG,OAAOA,EAAE+vB,KAAK,oBAAoB/vB,EAAE+vB,KAAK/vB,EAAE+vB,IAAIE,aAAaxuB,EAASzB,EAAE+vB,KAAI/vB,EAAE,SAASD,GAAG,IAAIC,EAAEwB,EAAE0uB,KAAK,OAAOnwB,SAASC,EAAEyB,GAAGzB,EAAEyB,GAAG1B,CAAC,EAAEC,EAAEiwB,WAAWxuB,EAASzB,EAAC,CAAC,GAAG,kBAAkBD,EAAE,MAAMiF,MAAMlF,EAAE,MAAM,IAAIG,EAAE+vB,OAAO,MAAMhrB,MAAMlF,EAAE,IAAIC,GAAI,CAAC,OAAOA,CAAC,CAC/c,SAASowB,GAAGpwB,EAAEC,GAAuC,MAApCD,EAAEiB,OAAOC,UAAUgJ,SAASjH,KAAKhD,GAASgF,MAAMlF,EAAE,GAAG,oBAAoBC,EAAE,qBAAqBiB,OAAO6M,KAAK7N,GAAGowB,KAAK,MAAM,IAAIrwB,GAAI,CAAC,SAASswB,GAAGtwB,GAAiB,OAAOC,EAAfD,EAAEyG,OAAezG,EAAEwG,SAAS,CACrM,SAAS+pB,GAAGvwB,GAAG,SAASC,EAAEA,EAAEC,GAAG,GAAGF,EAAE,CAAC,IAAIwB,EAAEvB,EAAE8uB,UAAU,OAAOvtB,GAAGvB,EAAE8uB,UAAU,CAAC7uB,GAAGD,EAAE0R,OAAO,IAAInQ,EAAE2O,KAAKjQ,EAAE,CAAC,CAAC,SAASA,EAAEA,EAAEsB,GAAG,IAAIxB,EAAE,OAAO,KAAK,KAAK,OAAOwB,GAAGvB,EAAEC,EAAEsB,GAAGA,EAAEA,EAAE0Q,QAAQ,OAAO,IAAI,CAAC,SAAS1Q,EAAExB,EAAEC,GAAG,IAAID,EAAE,IAAIkW,IAAI,OAAOjW,GAAG,OAAOA,EAAEke,IAAIne,EAAEyF,IAAIxF,EAAEke,IAAIle,GAAGD,EAAEyF,IAAIxF,EAAEuwB,MAAMvwB,GAAGA,EAAEA,EAAEiS,QAAQ,OAAOlS,CAAC,CAAC,SAASyB,EAAEzB,EAAEC,GAAsC,OAAnCD,EAAEywB,GAAGzwB,EAAEC,IAAKuwB,MAAM,EAAExwB,EAAEkS,QAAQ,KAAYlS,CAAC,CAAC,SAAS0B,EAAEzB,EAAEC,EAAEsB,GAAa,OAAVvB,EAAEuwB,MAAMhvB,EAAMxB,EAA6C,QAAjBwB,EAAEvB,EAAEwR,YAA6BjQ,EAAEA,EAAEgvB,OAAQtwB,GAAGD,EAAE0R,OAAO,EAAEzR,GAAGsB,GAAEvB,EAAE0R,OAAO,EAASzR,IAArGD,EAAE0R,OAAO,QAAQzR,EAAqF,CAAC,SAASyB,EAAE1B,GACzd,OAD4dD,GAC7f,OAAOC,EAAEwR,YAAYxR,EAAE0R,OAAO,GAAU1R,CAAC,CAAC,SAAS4F,EAAE7F,EAAEC,EAAEC,EAAEsB,GAAG,OAAG,OAAOvB,GAAG,IAAIA,EAAEkG,MAAWlG,EAAEywB,GAAGxwB,EAAEF,EAAEsvB,KAAK9tB,IAAKkQ,OAAO1R,EAAEC,KAAEA,EAAEwB,EAAExB,EAAEC,IAAKwR,OAAO1R,EAASC,EAAC,CAAC,SAAS6F,EAAE9F,EAAEC,EAAEC,EAAEsB,GAAG,IAAIE,EAAExB,EAAEgC,KAAK,OAAGR,IAAIqC,EAAUiN,EAAEhR,EAAEC,EAAEC,EAAEywB,MAAMrnB,SAAS9H,EAAEtB,EAAEie,KAAQ,OAAOle,IAAIA,EAAE6uB,cAAcptB,GAAG,kBAAkBA,GAAG,OAAOA,GAAGA,EAAE4E,WAAW9B,GAAI8rB,GAAG5uB,KAAKzB,EAAEiC,QAAaV,EAAEC,EAAExB,EAAEC,EAAEywB,QAASX,IAAID,GAAG/vB,EAAEC,EAAEC,GAAGsB,EAAEkQ,OAAO1R,EAAEwB,KAAEA,EAAEovB,GAAG1wB,EAAEgC,KAAKhC,EAAEie,IAAIje,EAAEywB,MAAM,KAAK3wB,EAAEsvB,KAAK9tB,IAAKwuB,IAAID,GAAG/vB,EAAEC,EAAEC,GAAGsB,EAAEkQ,OAAO1R,EAASwB,EAAC,CAAC,SAASoE,EAAE5F,EAAEC,EAAEC,EAAEsB,GAAG,OAAG,OAAOvB,GAAG,IAAIA,EAAEkG,KACjflG,EAAE+P,UAAUmH,gBAAgBjX,EAAEiX,eAAelX,EAAE+P,UAAU6gB,iBAAiB3wB,EAAE2wB,iBAAsB5wB,EAAE6wB,GAAG5wB,EAAEF,EAAEsvB,KAAK9tB,IAAKkQ,OAAO1R,EAAEC,KAAEA,EAAEwB,EAAExB,EAAEC,EAAEoJ,UAAU,KAAMoI,OAAO1R,EAASC,EAAC,CAAC,SAAS+Q,EAAEhR,EAAEC,EAAEC,EAAEsB,EAAEE,GAAG,OAAG,OAAOzB,GAAG,IAAIA,EAAEkG,MAAWlG,EAAE8wB,GAAG7wB,EAAEF,EAAEsvB,KAAK9tB,EAAEE,IAAKgQ,OAAO1R,EAAEC,KAAEA,EAAEwB,EAAExB,EAAEC,IAAKwR,OAAO1R,EAASC,EAAC,CAAC,SAAS+wB,EAAEhxB,EAAEC,EAAEC,GAAG,GAAG,kBAAkBD,GAAG,KAAKA,GAAG,kBAAkBA,EAAE,OAAOA,EAAEywB,GAAG,GAAGzwB,EAAED,EAAEsvB,KAAKpvB,IAAKwR,OAAO1R,EAAEC,EAAE,GAAG,kBAAkBA,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEqG,UAAU,KAAK3C,EAAG,OAAOzD,EAAE0wB,GAAG3wB,EAAEiC,KAAKjC,EAAEke,IAAIle,EAAE0wB,MAAM,KAAK3wB,EAAEsvB,KAAKpvB,IACjf8vB,IAAID,GAAG/vB,EAAE,KAAKC,GAAGC,EAAEwR,OAAO1R,EAAEE,EAAE,KAAK4D,EAAG,OAAO7D,EAAE6wB,GAAG7wB,EAAED,EAAEsvB,KAAKpvB,IAAKwR,OAAO1R,EAAEC,EAAE,KAAKuE,EAAiB,OAAOwsB,EAAEhxB,GAAEwB,EAAnBvB,EAAEwG,OAAmBxG,EAAEuG,UAAUtG,GAAG,GAAG0I,GAAG3I,IAAI2E,EAAG3E,GAAG,OAAOA,EAAE8wB,GAAG9wB,EAAED,EAAEsvB,KAAKpvB,EAAE,OAAQwR,OAAO1R,EAAEC,EAAEmwB,GAAGpwB,EAAEC,EAAE,CAAC,OAAO,IAAI,CAAC,SAASgxB,EAAEjxB,EAAEC,EAAEC,EAAEsB,GAAG,IAAIC,EAAE,OAAOxB,EAAEA,EAAEke,IAAI,KAAK,GAAG,kBAAkBje,GAAG,KAAKA,GAAG,kBAAkBA,EAAE,OAAO,OAAOuB,EAAE,KAAKoE,EAAE7F,EAAEC,EAAE,GAAGC,EAAEsB,GAAG,GAAG,kBAAkBtB,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEoG,UAAU,KAAK3C,EAAG,OAAOzD,EAAEie,MAAM1c,EAAEqE,EAAE9F,EAAEC,EAAEC,EAAEsB,GAAG,KAAK,KAAKsC,EAAG,OAAO5D,EAAEie,MAAM1c,EAAEmE,EAAE5F,EAAEC,EAAEC,EAAEsB,GAAG,KAAK,KAAKgD,EAAG,OAAiBysB,EAAEjxB,EACpfC,GADwewB,EAAEvB,EAAEuG,OACxevG,EAAEsG,UAAUhF,GAAG,GAAGoH,GAAG1I,IAAI0E,EAAG1E,GAAG,OAAO,OAAOuB,EAAE,KAAKuP,EAAEhR,EAAEC,EAAEC,EAAEsB,EAAE,MAAM4uB,GAAGpwB,EAAEE,EAAE,CAAC,OAAO,IAAI,CAAC,SAASgxB,EAAElxB,EAAEC,EAAEC,EAAEsB,EAAEC,GAAG,GAAG,kBAAkBD,GAAG,KAAKA,GAAG,kBAAkBA,EAAE,OAAwBqE,EAAE5F,EAAnBD,EAAEA,EAAEkH,IAAIhH,IAAI,KAAW,GAAGsB,EAAEC,GAAG,GAAG,kBAAkBD,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAE8E,UAAU,KAAK3C,EAAG,OAA2CmC,EAAE7F,EAAtCD,EAAEA,EAAEkH,IAAI,OAAO1F,EAAE2c,IAAIje,EAAEsB,EAAE2c,MAAM,KAAW3c,EAAEC,GAAG,KAAKqC,EAAG,OAA2C8B,EAAE3F,EAAtCD,EAAEA,EAAEkH,IAAI,OAAO1F,EAAE2c,IAAIje,EAAEsB,EAAE2c,MAAM,KAAW3c,EAAEC,GAAG,KAAK+C,EAAiB,OAAO0sB,EAAElxB,EAAEC,EAAEC,GAAEwB,EAAvBF,EAAEiF,OAAuBjF,EAAEgF,UAAU/E,GAAG,GAAGmH,GAAGpH,IAAIoD,EAAGpD,GAAG,OAAwBwP,EAAE/Q,EAAnBD,EAAEA,EAAEkH,IAAIhH,IAAI,KAAWsB,EAAEC,EAAE,MAAM2uB,GAAGnwB,EAAEuB,EAAE,CAAC,OAAO,IAAI,CAC9f,SAASsnB,EAAErnB,EAAEE,EAAEkE,EAAEC,GAAG,IAAI,IAAIF,EAAE,KAAKoL,EAAE,KAAKkY,EAAEvnB,EAAEwnB,EAAExnB,EAAE,EAAEsnB,EAAE,KAAK,OAAOC,GAAGC,EAAEtjB,EAAEzF,OAAO+oB,IAAI,CAACD,EAAEsH,MAAMrH,GAAGF,EAAEC,EAAEA,EAAE,MAAMD,EAAEC,EAAEhX,QAAQ,IAAI4W,EAAEmI,EAAExvB,EAAEynB,EAAErjB,EAAEsjB,GAAGrjB,GAAG,GAAG,OAAOgjB,EAAE,CAAC,OAAOI,IAAIA,EAAED,GAAG,KAAK,CAACjpB,GAAGkpB,GAAG,OAAOJ,EAAErX,WAAWxR,EAAEwB,EAAEynB,GAAGvnB,EAAED,EAAEonB,EAAEnnB,EAAEwnB,GAAG,OAAOnY,EAAEpL,EAAEkjB,EAAE9X,EAAEkB,QAAQ4W,EAAE9X,EAAE8X,EAAEI,EAAED,CAAC,CAAC,GAAGE,IAAItjB,EAAEzF,OAAO,OAAOF,EAAEuB,EAAEynB,GAAGwF,IAAGN,GAAG3sB,EAAE0nB,GAAGvjB,EAAE,GAAG,OAAOsjB,EAAE,CAAC,KAAKC,EAAEtjB,EAAEzF,OAAO+oB,IAAkB,QAAdD,EAAE8H,EAAEvvB,EAAEoE,EAAEsjB,GAAGrjB,MAAcnE,EAAED,EAAEwnB,EAAEvnB,EAAEwnB,GAAG,OAAOnY,EAAEpL,EAAEsjB,EAAElY,EAAEkB,QAAQgX,EAAElY,EAAEkY,GAAc,OAAXwF,IAAGN,GAAG3sB,EAAE0nB,GAAUvjB,CAAC,CAAC,IAAIsjB,EAAE1nB,EAAEC,EAAEynB,GAAGC,EAAEtjB,EAAEzF,OAAO+oB,IAAsB,QAAlBF,EAAEiI,EAAEhI,EAAEznB,EAAE0nB,EAAEtjB,EAAEsjB,GAAGrjB,MAAc9F,GAAG,OAAOipB,EAAExX,WAAWyX,EAAE3S,OAAO,OACvf0S,EAAE9K,IAAIgL,EAAEF,EAAE9K,KAAKxc,EAAED,EAAEunB,EAAEtnB,EAAEwnB,GAAG,OAAOnY,EAAEpL,EAAEqjB,EAAEjY,EAAEkB,QAAQ+W,EAAEjY,EAAEiY,GAAuD,OAApDjpB,GAAGkpB,EAAE3mB,SAAQ,SAASvC,GAAG,OAAOC,EAAEwB,EAAEzB,EAAE,IAAG0uB,IAAGN,GAAG3sB,EAAE0nB,GAAUvjB,CAAC,CAAC,SAASmjB,EAAEtnB,EAAEE,EAAEkE,EAAEC,GAAG,IAAIF,EAAEhB,EAAGiB,GAAG,GAAG,oBAAoBD,EAAE,MAAMX,MAAMlF,EAAE,MAAkB,GAAG,OAAf8F,EAAED,EAAE3C,KAAK4C,IAAc,MAAMZ,MAAMlF,EAAE,MAAM,IAAI,IAAImpB,EAAEtjB,EAAE,KAAKoL,EAAErP,EAAEwnB,EAAExnB,EAAE,EAAEsnB,EAAE,KAAKH,EAAEjjB,EAAEsrB,OAAO,OAAOngB,IAAI8X,EAAEsI,KAAKjI,IAAIL,EAAEjjB,EAAEsrB,OAAO,CAACngB,EAAEwf,MAAMrH,GAAGF,EAAEjY,EAAEA,EAAE,MAAMiY,EAAEjY,EAAEkB,QAAQ,IAAI6W,EAAEkI,EAAExvB,EAAEuP,EAAE8X,EAAEnhB,MAAM7B,GAAG,GAAG,OAAOijB,EAAE,CAAC,OAAO/X,IAAIA,EAAEiY,GAAG,KAAK,CAACjpB,GAAGgR,GAAG,OAAO+X,EAAEtX,WAAWxR,EAAEwB,EAAEuP,GAAGrP,EAAED,EAAEqnB,EAAEpnB,EAAEwnB,GAAG,OAAOD,EAAEtjB,EAAEmjB,EAAEG,EAAEhX,QAAQ6W,EAAEG,EAAEH,EAAE/X,EAAEiY,CAAC,CAAC,GAAGH,EAAEsI,KAAK,OAAOlxB,EAAEuB,EACzfuP,GAAG0d,IAAGN,GAAG3sB,EAAE0nB,GAAGvjB,EAAE,GAAG,OAAOoL,EAAE,CAAC,MAAM8X,EAAEsI,KAAKjI,IAAIL,EAAEjjB,EAAEsrB,OAAwB,QAAjBrI,EAAEkI,EAAEvvB,EAAEqnB,EAAEnhB,MAAM7B,MAAcnE,EAAED,EAAEonB,EAAEnnB,EAAEwnB,GAAG,OAAOD,EAAEtjB,EAAEkjB,EAAEI,EAAEhX,QAAQ4W,EAAEI,EAAEJ,GAAc,OAAX4F,IAAGN,GAAG3sB,EAAE0nB,GAAUvjB,CAAC,CAAC,IAAIoL,EAAExP,EAAEC,EAAEuP,IAAI8X,EAAEsI,KAAKjI,IAAIL,EAAEjjB,EAAEsrB,OAA4B,QAArBrI,EAAEoI,EAAElgB,EAAEvP,EAAE0nB,EAAEL,EAAEnhB,MAAM7B,MAAc9F,GAAG,OAAO8oB,EAAErX,WAAWT,EAAEuF,OAAO,OAAOuS,EAAE3K,IAAIgL,EAAEL,EAAE3K,KAAKxc,EAAED,EAAEonB,EAAEnnB,EAAEwnB,GAAG,OAAOD,EAAEtjB,EAAEkjB,EAAEI,EAAEhX,QAAQ4W,EAAEI,EAAEJ,GAAuD,OAApD9oB,GAAGgR,EAAEzO,SAAQ,SAASvC,GAAG,OAAOC,EAAEwB,EAAEzB,EAAE,IAAG0uB,IAAGN,GAAG3sB,EAAE0nB,GAAUvjB,CAAC,CAG3T,OAH4T,SAASojB,EAAEhpB,EAAEwB,EAAEE,EAAEmE,GAAkF,GAA/E,kBAAkBnE,GAAG,OAAOA,GAAGA,EAAEQ,OAAO6B,GAAI,OAAOrC,EAAEyc,MAAMzc,EAAEA,EAAEivB,MAAMrnB,UAAa,kBAAkB5H,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAE4E,UAAU,KAAK3C,EAAG3D,EAAE,CAAC,IAAI,IAAI8F,EAC7hBpE,EAAEyc,IAAIvY,EAAEpE,EAAE,OAAOoE,GAAG,CAAC,GAAGA,EAAEuY,MAAMrY,EAAE,CAAU,IAATA,EAAEpE,EAAEQ,QAAY6B,GAAI,GAAG,IAAI6B,EAAEO,IAAI,CAACjG,EAAEF,EAAE4F,EAAEsM,UAAS1Q,EAAEC,EAAEmE,EAAElE,EAAEivB,MAAMrnB,WAAYoI,OAAO1R,EAAEA,EAAEwB,EAAE,MAAMxB,CAAC,OAAO,GAAG4F,EAAEkpB,cAAchpB,GAAG,kBAAkBA,GAAG,OAAOA,GAAGA,EAAEQ,WAAW9B,GAAI8rB,GAAGxqB,KAAKF,EAAE1D,KAAK,CAAChC,EAAEF,EAAE4F,EAAEsM,UAAS1Q,EAAEC,EAAEmE,EAAElE,EAAEivB,QAASX,IAAID,GAAG/vB,EAAE4F,EAAElE,GAAGF,EAAEkQ,OAAO1R,EAAEA,EAAEwB,EAAE,MAAMxB,CAAC,CAACE,EAAEF,EAAE4F,GAAG,KAAK,CAAM3F,EAAED,EAAE4F,GAAGA,EAAEA,EAAEsM,OAAO,CAACxQ,EAAEQ,OAAO6B,IAAIvC,EAAEuvB,GAAGrvB,EAAEivB,MAAMrnB,SAAStJ,EAAEsvB,KAAKzpB,EAAEnE,EAAEyc,MAAOzM,OAAO1R,EAAEA,EAAEwB,KAAIqE,EAAE+qB,GAAGlvB,EAAEQ,KAAKR,EAAEyc,IAAIzc,EAAEivB,MAAM,KAAK3wB,EAAEsvB,KAAKzpB,IAAKmqB,IAAID,GAAG/vB,EAAEwB,EAAEE,GAAGmE,EAAE6L,OAAO1R,EAAEA,EAAE6F,EAAE,CAAC,OAAOlE,EAAE3B,GAAG,KAAK8D,EAAG9D,EAAE,CAAC,IAAI4F,EAAElE,EAAEyc,IAAI,OACzf3c,GAAG,CAAC,GAAGA,EAAE2c,MAAMvY,EAAC,CAAC,GAAG,IAAIpE,EAAE2E,KAAK3E,EAAEwO,UAAUmH,gBAAgBzV,EAAEyV,eAAe3V,EAAEwO,UAAU6gB,iBAAiBnvB,EAAEmvB,eAAe,CAAC3wB,EAAEF,EAAEwB,EAAE0Q,UAAS1Q,EAAEC,EAAED,EAAEE,EAAE4H,UAAU,KAAMoI,OAAO1R,EAAEA,EAAEwB,EAAE,MAAMxB,CAAC,CAAME,EAAEF,EAAEwB,GAAG,KAAM,CAAKvB,EAAED,EAAEwB,GAAGA,EAAEA,EAAE0Q,OAAO,EAAC1Q,EAAEsvB,GAAGpvB,EAAE1B,EAAEsvB,KAAKzpB,IAAK6L,OAAO1R,EAAEA,EAAEwB,CAAC,CAAC,OAAOG,EAAE3B,GAAG,KAAKwE,EAAG,OAAiBwkB,EAAEhpB,EAAEwB,GAAdoE,EAAElE,EAAE+E,OAAc/E,EAAE8E,UAAUX,GAAG,GAAG+C,GAAGlH,GAAG,OAAOonB,EAAE9oB,EAAEwB,EAAEE,EAAEmE,GAAG,GAAGjB,EAAGlD,GAAG,OAAOqnB,EAAE/oB,EAAEwB,EAAEE,EAAEmE,GAAGuqB,GAAGpwB,EAAE0B,EAAE,CAAC,MAAM,kBAAkBA,GAAG,KAAKA,GAAG,kBAAkBA,GAAGA,EAAE,GAAGA,EAAE,OAAOF,GAAG,IAAIA,EAAE2E,KAAKjG,EAAEF,EAAEwB,EAAE0Q,UAAS1Q,EAAEC,EAAED,EAAEE,IAAKgQ,OAAO1R,EAAEA,EAAEwB,IACnftB,EAAEF,EAAEwB,IAAGA,EAAEkvB,GAAGhvB,EAAE1B,EAAEsvB,KAAKzpB,IAAK6L,OAAO1R,EAAEA,EAAEwB,GAAGG,EAAE3B,IAAIE,EAAEF,EAAEwB,EAAE,CAAS,CAAC,IAAI6vB,GAAGd,IAAG,GAAIe,GAAGf,IAAG,GAAIgB,GAAGrF,GAAG,MAAMsF,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAK,SAASC,KAAKD,GAAGD,GAAGD,GAAG,IAAI,CAAC,SAASI,GAAG5xB,GAAG,IAAIC,EAAEsxB,GAAGpf,QAAQga,GAAEoF,IAAIvxB,EAAE6xB,cAAc5xB,CAAC,CAAC,SAAS6xB,GAAG9xB,EAAEC,EAAEC,GAAG,KAAK,OAAOF,GAAG,CAAC,IAAIwB,EAAExB,EAAEyR,UAA+H,IAApHzR,EAAE+xB,WAAW9xB,KAAKA,GAAGD,EAAE+xB,YAAY9xB,EAAE,OAAOuB,IAAIA,EAAEuwB,YAAY9xB,IAAI,OAAOuB,IAAIA,EAAEuwB,WAAW9xB,KAAKA,IAAIuB,EAAEuwB,YAAY9xB,GAAMD,IAAIE,EAAE,MAAMF,EAAEA,EAAE0R,MAAM,CAAC,CACnZ,SAASsgB,GAAGhyB,EAAEC,GAAGuxB,GAAGxxB,EAAE0xB,GAAGD,GAAG,KAAsB,QAAjBzxB,EAAEA,EAAEiyB,eAAuB,OAAOjyB,EAAEkyB,eAAe,KAAKlyB,EAAEmyB,MAAMlyB,KAAKmyB,IAAG,GAAIpyB,EAAEkyB,aAAa,KAAK,CAAC,SAASG,GAAGryB,GAAG,IAAIC,EAAED,EAAE6xB,cAAc,GAAGH,KAAK1xB,EAAE,GAAGA,EAAE,CAACsyB,QAAQtyB,EAAEuyB,cAActyB,EAAEkxB,KAAK,MAAM,OAAOM,GAAG,CAAC,GAAG,OAAOD,GAAG,MAAMvsB,MAAMlF,EAAE,MAAM0xB,GAAGzxB,EAAEwxB,GAAGS,aAAa,CAACE,MAAM,EAAED,aAAalyB,EAAE,MAAMyxB,GAAGA,GAAGN,KAAKnxB,EAAE,OAAOC,CAAC,CAAC,IAAIuyB,GAAG,KAAK,SAASC,GAAGzyB,GAAG,OAAOwyB,GAAGA,GAAG,CAACxyB,GAAGwyB,GAAGriB,KAAKnQ,EAAE,CACvY,SAAS0yB,GAAG1yB,EAAEC,EAAEC,EAAEsB,GAAG,IAAIC,EAAExB,EAAE0yB,YAA+E,OAAnE,OAAOlxB,GAAGvB,EAAEixB,KAAKjxB,EAAEuyB,GAAGxyB,KAAKC,EAAEixB,KAAK1vB,EAAE0vB,KAAK1vB,EAAE0vB,KAAKjxB,GAAGD,EAAE0yB,YAAYzyB,EAAS0yB,GAAG5yB,EAAEwB,EAAE,CAAC,SAASoxB,GAAG5yB,EAAEC,GAAGD,EAAEmyB,OAAOlyB,EAAE,IAAIC,EAAEF,EAAEyR,UAAqC,IAA3B,OAAOvR,IAAIA,EAAEiyB,OAAOlyB,GAAGC,EAAEF,EAAMA,EAAEA,EAAE0R,OAAO,OAAO1R,GAAGA,EAAE+xB,YAAY9xB,EAAgB,QAAdC,EAAEF,EAAEyR,aAAqBvR,EAAE6xB,YAAY9xB,GAAGC,EAAEF,EAAEA,EAAEA,EAAE0R,OAAO,OAAO,IAAIxR,EAAEiG,IAAIjG,EAAE8P,UAAU,IAAI,CAAC,IAAI6iB,IAAG,EAAG,SAASC,GAAG9yB,GAAGA,EAAE+yB,YAAY,CAACC,UAAUhzB,EAAE6R,cAAcohB,gBAAgB,KAAKC,eAAe,KAAKC,OAAO,CAACC,QAAQ,KAAKT,YAAY,KAAKR,MAAM,GAAGkB,QAAQ,KAAK,CAC/e,SAASC,GAAGtzB,EAAEC,GAAGD,EAAEA,EAAE+yB,YAAY9yB,EAAE8yB,cAAc/yB,IAAIC,EAAE8yB,YAAY,CAACC,UAAUhzB,EAAEgzB,UAAUC,gBAAgBjzB,EAAEizB,gBAAgBC,eAAelzB,EAAEkzB,eAAeC,OAAOnzB,EAAEmzB,OAAOE,QAAQrzB,EAAEqzB,SAAS,CAAC,SAASE,GAAGvzB,EAAEC,GAAG,MAAM,CAACuzB,UAAUxzB,EAAEyzB,KAAKxzB,EAAEkG,IAAI,EAAEutB,QAAQ,KAAKC,SAAS,KAAKxC,KAAK,KAAK,CACtR,SAASyC,GAAG5zB,EAAEC,EAAEC,GAAG,IAAIsB,EAAExB,EAAE+yB,YAAY,GAAG,OAAOvxB,EAAE,OAAO,KAAgB,GAAXA,EAAEA,EAAE2xB,OAAU,KAAO,EAAFU,IAAK,CAAC,IAAIpyB,EAAED,EAAE4xB,QAA+D,OAAvD,OAAO3xB,EAAExB,EAAEkxB,KAAKlxB,GAAGA,EAAEkxB,KAAK1vB,EAAE0vB,KAAK1vB,EAAE0vB,KAAKlxB,GAAGuB,EAAE4xB,QAAQnzB,EAAS2yB,GAAG5yB,EAAEE,EAAE,CAAoF,OAAnE,QAAhBuB,EAAED,EAAEmxB,cAAsB1yB,EAAEkxB,KAAKlxB,EAAEwyB,GAAGjxB,KAAKvB,EAAEkxB,KAAK1vB,EAAE0vB,KAAK1vB,EAAE0vB,KAAKlxB,GAAGuB,EAAEmxB,YAAY1yB,EAAS2yB,GAAG5yB,EAAEE,EAAE,CAAC,SAAS4zB,GAAG9zB,EAAEC,EAAEC,GAAmB,GAAG,QAAnBD,EAAEA,EAAE8yB,eAA0B9yB,EAAEA,EAAEkzB,OAAO,KAAO,QAAFjzB,IAAY,CAAC,IAAIsB,EAAEvB,EAAEkyB,MAAwBjyB,GAAlBsB,GAAGxB,EAAEyU,aAAkBxU,EAAEkyB,MAAMjyB,EAAEkV,GAAGpV,EAAEE,EAAE,CAAC,CACrZ,SAAS6zB,GAAG/zB,EAAEC,GAAG,IAAIC,EAAEF,EAAE+yB,YAAYvxB,EAAExB,EAAEyR,UAAU,GAAG,OAAOjQ,GAAoBtB,KAAhBsB,EAAEA,EAAEuxB,aAAmB,CAAC,IAAItxB,EAAE,KAAKC,EAAE,KAAyB,GAAG,QAAvBxB,EAAEA,EAAE+yB,iBAA4B,CAAC,EAAE,CAAC,IAAItxB,EAAE,CAAC6xB,UAAUtzB,EAAEszB,UAAUC,KAAKvzB,EAAEuzB,KAAKttB,IAAIjG,EAAEiG,IAAIutB,QAAQxzB,EAAEwzB,QAAQC,SAASzzB,EAAEyzB,SAASxC,KAAK,MAAM,OAAOzvB,EAAED,EAAEC,EAAEC,EAAED,EAAEA,EAAEyvB,KAAKxvB,EAAEzB,EAAEA,EAAEixB,IAAI,OAAO,OAAOjxB,GAAG,OAAOwB,EAAED,EAAEC,EAAEzB,EAAEyB,EAAEA,EAAEyvB,KAAKlxB,CAAC,MAAMwB,EAAEC,EAAEzB,EAAiH,OAA/GC,EAAE,CAAC8yB,UAAUxxB,EAAEwxB,UAAUC,gBAAgBxxB,EAAEyxB,eAAexxB,EAAEyxB,OAAO3xB,EAAE2xB,OAAOE,QAAQ7xB,EAAE6xB,cAASrzB,EAAE+yB,YAAY7yB,EAAQ,CAAoB,QAAnBF,EAAEE,EAAEgzB,gBAAwBhzB,EAAE+yB,gBAAgBhzB,EAAED,EAAEmxB,KACnflxB,EAAEC,EAAEgzB,eAAejzB,CAAC,CACpB,SAAS+zB,GAAGh0B,EAAEC,EAAEC,EAAEsB,GAAG,IAAIC,EAAEzB,EAAE+yB,YAAYF,IAAG,EAAG,IAAInxB,EAAED,EAAEwxB,gBAAgBtxB,EAAEF,EAAEyxB,eAAertB,EAAEpE,EAAE0xB,OAAOC,QAAQ,GAAG,OAAOvtB,EAAE,CAACpE,EAAE0xB,OAAOC,QAAQ,KAAK,IAAIttB,EAAED,EAAED,EAAEE,EAAEqrB,KAAKrrB,EAAEqrB,KAAK,KAAK,OAAOxvB,EAAED,EAAEkE,EAAEjE,EAAEwvB,KAAKvrB,EAAEjE,EAAEmE,EAAE,IAAIkL,EAAEhR,EAAEyR,UAAU,OAAOT,KAAoBnL,GAAhBmL,EAAEA,EAAE+hB,aAAgBG,kBAAmBvxB,IAAI,OAAOkE,EAAEmL,EAAEiiB,gBAAgBrtB,EAAEC,EAAEsrB,KAAKvrB,EAAEoL,EAAEkiB,eAAeptB,GAAG,CAAC,GAAG,OAAOpE,EAAE,CAAC,IAAIsvB,EAAEvvB,EAAEuxB,UAA6B,IAAnBrxB,EAAE,EAAEqP,EAAEpL,EAAEE,EAAE,KAAKD,EAAEnE,IAAI,CAAC,IAAIuvB,EAAEprB,EAAE4tB,KAAKvC,EAAErrB,EAAE2tB,UAAU,IAAIhyB,EAAEyvB,KAAKA,EAAE,CAAC,OAAOjgB,IAAIA,EAAEA,EAAEmgB,KAAK,CAACqC,UAAUtC,EAAEuC,KAAK,EAAEttB,IAAIN,EAAEM,IAAIutB,QAAQ7tB,EAAE6tB,QAAQC,SAAS9tB,EAAE8tB,SACvfxC,KAAK,OAAOnxB,EAAE,CAAC,IAAI8oB,EAAE9oB,EAAE+oB,EAAEljB,EAAU,OAARorB,EAAEhxB,EAAEixB,EAAEhxB,EAAS6oB,EAAE5iB,KAAK,KAAK,EAAc,GAAG,oBAAf2iB,EAAEC,EAAE2K,SAAiC,CAAC1C,EAAElI,EAAE7lB,KAAKiuB,EAAEF,EAAEC,GAAG,MAAMjxB,CAAC,CAACgxB,EAAElI,EAAE,MAAM9oB,EAAE,KAAK,EAAE8oB,EAAEnX,OAAe,MAATmX,EAAEnX,MAAa,IAAI,KAAK,EAAsD,GAAG,QAA3Csf,EAAE,oBAAdnI,EAAEC,EAAE2K,SAAgC5K,EAAE7lB,KAAKiuB,EAAEF,EAAEC,GAAGnI,SAAe,IAASmI,EAAE,MAAMjxB,EAAEgxB,EAAElsB,EAAE,CAAC,EAAEksB,EAAEC,GAAG,MAAMjxB,EAAE,KAAK,EAAE6yB,IAAG,EAAG,CAAC,OAAOhtB,EAAE8tB,UAAU,IAAI9tB,EAAE4tB,OAAOzzB,EAAE2R,OAAO,GAAe,QAAZsf,EAAExvB,EAAE4xB,SAAiB5xB,EAAE4xB,QAAQ,CAACxtB,GAAGorB,EAAE9gB,KAAKtK,GAAG,MAAMqrB,EAAE,CAACsC,UAAUtC,EAAEuC,KAAKxC,EAAE9qB,IAAIN,EAAEM,IAAIutB,QAAQ7tB,EAAE6tB,QAAQC,SAAS9tB,EAAE8tB,SAASxC,KAAK,MAAM,OAAOngB,GAAGpL,EAAEoL,EAAEkgB,EAAEprB,EAAEkrB,GAAGhgB,EAAEA,EAAEmgB,KAAKD,EAAEvvB,GAAGsvB,EAC3e,GAAG,QAAZprB,EAAEA,EAAEsrB,MAAiB,IAAsB,QAAnBtrB,EAAEpE,EAAE0xB,OAAOC,SAAiB,MAAevtB,GAAJorB,EAAEprB,GAAMsrB,KAAKF,EAAEE,KAAK,KAAK1vB,EAAEyxB,eAAejC,EAAExvB,EAAE0xB,OAAOC,QAAQ,IAAI,EAAsG,GAA5F,OAAOpiB,IAAIlL,EAAEkrB,GAAGvvB,EAAEuxB,UAAUltB,EAAErE,EAAEwxB,gBAAgBrtB,EAAEnE,EAAEyxB,eAAeliB,EAA4B,QAA1B/Q,EAAEwB,EAAE0xB,OAAOR,aAAwB,CAAClxB,EAAExB,EAAE,GAAG0B,GAAGF,EAAEgyB,KAAKhyB,EAAEA,EAAE0vB,WAAW1vB,IAAIxB,EAAE,MAAM,OAAOyB,IAAID,EAAE0xB,OAAOhB,MAAM,GAAG8B,IAAItyB,EAAE3B,EAAEmyB,MAAMxwB,EAAE3B,EAAE6R,cAAcmf,CAAC,CAAC,CAC9V,SAASkD,GAAGl0B,EAAEC,EAAEC,GAA8B,GAA3BF,EAAEC,EAAEozB,QAAQpzB,EAAEozB,QAAQ,KAAQ,OAAOrzB,EAAE,IAAIC,EAAE,EAAEA,EAAED,EAAEI,OAAOH,IAAI,CAAC,IAAIuB,EAAExB,EAAEC,GAAGwB,EAAED,EAAEmyB,SAAS,GAAG,OAAOlyB,EAAE,CAAqB,GAApBD,EAAEmyB,SAAS,KAAKnyB,EAAEtB,EAAK,oBAAoBuB,EAAE,MAAMwD,MAAMlF,EAAE,IAAI0B,IAAIA,EAAEwB,KAAKzB,EAAE,CAAC,CAAC,CAAC,IAAI2yB,GAAG,CAAC,EAAEC,GAAGlI,GAAGiI,IAAIE,GAAGnI,GAAGiI,IAAIG,GAAGpI,GAAGiI,IAAI,SAASI,GAAGv0B,GAAG,GAAGA,IAAIm0B,GAAG,MAAMlvB,MAAMlF,EAAE,MAAM,OAAOC,CAAC,CACnS,SAASw0B,GAAGx0B,EAAEC,GAAyC,OAAtCmsB,GAAEkI,GAAGr0B,GAAGmsB,GAAEiI,GAAGr0B,GAAGosB,GAAEgI,GAAGD,IAAIn0B,EAAEC,EAAEyK,UAAmB,KAAK,EAAE,KAAK,GAAGzK,GAAGA,EAAEA,EAAEykB,iBAAiBzkB,EAAE8J,aAAaH,GAAG,KAAK,IAAI,MAAM,QAAkE3J,EAAE2J,GAArC3J,GAAvBD,EAAE,IAAIA,EAAEC,EAAEyP,WAAWzP,GAAM8J,cAAc,KAAK/J,EAAEA,EAAEy0B,SAAkBtI,GAAEiI,IAAIhI,GAAEgI,GAAGn0B,EAAE,CAAC,SAASy0B,KAAKvI,GAAEiI,IAAIjI,GAAEkI,IAAIlI,GAAEmI,GAAG,CAAC,SAASK,GAAG30B,GAAGu0B,GAAGD,GAAGniB,SAAS,IAAIlS,EAAEs0B,GAAGH,GAAGjiB,SAAajS,EAAE0J,GAAG3J,EAAED,EAAEkC,MAAMjC,IAAIC,IAAIksB,GAAEiI,GAAGr0B,GAAGosB,GAAEgI,GAAGl0B,GAAG,CAAC,SAAS00B,GAAG50B,GAAGq0B,GAAGliB,UAAUnS,IAAImsB,GAAEiI,IAAIjI,GAAEkI,IAAI,CAAC,IAAIQ,GAAE3I,GAAG,GACxZ,SAAS4I,GAAG90B,GAAG,IAAI,IAAIC,EAAED,EAAE,OAAOC,GAAG,CAAC,GAAG,KAAKA,EAAEkG,IAAI,CAAC,IAAIjG,EAAED,EAAE4R,cAAc,GAAG,OAAO3R,IAAmB,QAAfA,EAAEA,EAAE4R,aAAqB,OAAO5R,EAAE2c,MAAM,OAAO3c,EAAE2c,MAAM,OAAO5c,CAAC,MAAM,GAAG,KAAKA,EAAEkG,UAAK,IAASlG,EAAEyvB,cAAcqF,aAAa,GAAG,KAAa,IAAR90B,EAAE0R,OAAW,OAAO1R,OAAO,GAAG,OAAOA,EAAEgS,MAAM,CAAChS,EAAEgS,MAAMP,OAAOzR,EAAEA,EAAEA,EAAEgS,MAAM,QAAQ,CAAC,GAAGhS,IAAID,EAAE,MAAM,KAAK,OAAOC,EAAEiS,SAAS,CAAC,GAAG,OAAOjS,EAAEyR,QAAQzR,EAAEyR,SAAS1R,EAAE,OAAO,KAAKC,EAAEA,EAAEyR,MAAM,CAACzR,EAAEiS,QAAQR,OAAOzR,EAAEyR,OAAOzR,EAAEA,EAAEiS,OAAO,CAAC,OAAO,IAAI,CAAC,IAAI8iB,GAAG,GACrc,SAASC,KAAK,IAAI,IAAIj1B,EAAE,EAAEA,EAAEg1B,GAAG50B,OAAOJ,IAAIg1B,GAAGh1B,GAAGk1B,8BAA8B,KAAKF,GAAG50B,OAAO,CAAC,CAAC,IAAI+0B,GAAG1xB,EAAG2xB,uBAAuBC,GAAG5xB,EAAGoU,wBAAwByd,GAAG,EAAEC,GAAE,KAAKC,GAAE,KAAKC,GAAE,KAAKC,IAAG,EAAGC,IAAG,EAAGC,GAAG,EAAEC,GAAG,EAAE,SAASC,KAAI,MAAM7wB,MAAMlF,EAAE,KAAM,CAAC,SAASg2B,GAAG/1B,EAAEC,GAAG,GAAG,OAAOA,EAAE,OAAM,EAAG,IAAI,IAAIC,EAAE,EAAEA,EAAED,EAAEG,QAAQF,EAAEF,EAAEI,OAAOF,IAAI,IAAIqjB,GAAGvjB,EAAEE,GAAGD,EAAEC,IAAI,OAAM,EAAG,OAAM,CAAE,CAChW,SAAS81B,GAAGh2B,EAAEC,EAAEC,EAAEsB,EAAEC,EAAEC,GAAyH,GAAtH4zB,GAAG5zB,EAAE6zB,GAAEt1B,EAAEA,EAAE4R,cAAc,KAAK5R,EAAE8yB,YAAY,KAAK9yB,EAAEkyB,MAAM,EAAEgD,GAAGhjB,QAAQ,OAAOnS,GAAG,OAAOA,EAAE6R,cAAcokB,GAAGC,GAAGl2B,EAAEE,EAAEsB,EAAEC,GAAMk0B,GAAG,CAACj0B,EAAE,EAAE,EAAE,CAAY,GAAXi0B,IAAG,EAAGC,GAAG,EAAK,IAAIl0B,EAAE,MAAMuD,MAAMlF,EAAE,MAAM2B,GAAG,EAAE+zB,GAAED,GAAE,KAAKv1B,EAAE8yB,YAAY,KAAKoC,GAAGhjB,QAAQgkB,GAAGn2B,EAAEE,EAAEsB,EAAEC,EAAE,OAAOk0B,GAAG,CAA+D,GAA9DR,GAAGhjB,QAAQikB,GAAGn2B,EAAE,OAAOu1B,IAAG,OAAOA,GAAErE,KAAKmE,GAAG,EAAEG,GAAED,GAAED,GAAE,KAAKG,IAAG,EAAMz1B,EAAE,MAAMgF,MAAMlF,EAAE,MAAM,OAAOC,CAAC,CAAC,SAASq2B,KAAK,IAAIr2B,EAAE,IAAI41B,GAAQ,OAALA,GAAG,EAAS51B,CAAC,CAC/Y,SAASs2B,KAAK,IAAIt2B,EAAE,CAAC6R,cAAc,KAAKmhB,UAAU,KAAKuD,UAAU,KAAKC,MAAM,KAAKrF,KAAK,MAA8C,OAAxC,OAAOsE,GAAEF,GAAE1jB,cAAc4jB,GAAEz1B,EAAEy1B,GAAEA,GAAEtE,KAAKnxB,EAASy1B,EAAC,CAAC,SAASgB,KAAK,GAAG,OAAOjB,GAAE,CAAC,IAAIx1B,EAAEu1B,GAAE9jB,UAAUzR,EAAE,OAAOA,EAAEA,EAAE6R,cAAc,IAAI,MAAM7R,EAAEw1B,GAAErE,KAAK,IAAIlxB,EAAE,OAAOw1B,GAAEF,GAAE1jB,cAAc4jB,GAAEtE,KAAK,GAAG,OAAOlxB,EAAEw1B,GAAEx1B,EAAEu1B,GAAEx1B,MAAM,CAAC,GAAG,OAAOA,EAAE,MAAMiF,MAAMlF,EAAE,MAAUC,EAAE,CAAC6R,eAAP2jB,GAAEx1B,GAAqB6R,cAAcmhB,UAAUwC,GAAExC,UAAUuD,UAAUf,GAAEe,UAAUC,MAAMhB,GAAEgB,MAAMrF,KAAK,MAAM,OAAOsE,GAAEF,GAAE1jB,cAAc4jB,GAAEz1B,EAAEy1B,GAAEA,GAAEtE,KAAKnxB,CAAC,CAAC,OAAOy1B,EAAC,CACje,SAASiB,GAAG12B,EAAEC,GAAG,MAAM,oBAAoBA,EAAEA,EAAED,GAAGC,CAAC,CACnD,SAAS02B,GAAG32B,GAAG,IAAIC,EAAEw2B,KAAKv2B,EAAED,EAAEu2B,MAAM,GAAG,OAAOt2B,EAAE,MAAM+E,MAAMlF,EAAE,MAAMG,EAAE02B,oBAAoB52B,EAAE,IAAIwB,EAAEg0B,GAAE/zB,EAAED,EAAE+0B,UAAU70B,EAAExB,EAAEkzB,QAAQ,GAAG,OAAO1xB,EAAE,CAAC,GAAG,OAAOD,EAAE,CAAC,IAAIE,EAAEF,EAAE0vB,KAAK1vB,EAAE0vB,KAAKzvB,EAAEyvB,KAAKzvB,EAAEyvB,KAAKxvB,CAAC,CAACH,EAAE+0B,UAAU90B,EAAEC,EAAExB,EAAEkzB,QAAQ,IAAI,CAAC,GAAG,OAAO3xB,EAAE,CAACC,EAAED,EAAE0vB,KAAK3vB,EAAEA,EAAEwxB,UAAU,IAAIntB,EAAElE,EAAE,KAAKmE,EAAE,KAAKF,EAAElE,EAAE,EAAE,CAAC,IAAIsP,EAAEpL,EAAE6tB,KAAK,IAAI6B,GAAGtkB,KAAKA,EAAE,OAAOlL,IAAIA,EAAEA,EAAEqrB,KAAK,CAACsC,KAAK,EAAEoD,OAAOjxB,EAAEixB,OAAOC,cAAclxB,EAAEkxB,cAAcC,WAAWnxB,EAAEmxB,WAAW5F,KAAK,OAAO3vB,EAAEoE,EAAEkxB,cAAclxB,EAAEmxB,WAAW/2B,EAAEwB,EAAEoE,EAAEixB,YAAY,CAAC,IAAI7F,EAAE,CAACyC,KAAKziB,EAAE6lB,OAAOjxB,EAAEixB,OAAOC,cAAclxB,EAAEkxB,cACngBC,WAAWnxB,EAAEmxB,WAAW5F,KAAK,MAAM,OAAOrrB,GAAGD,EAAEC,EAAEkrB,EAAErvB,EAAEH,GAAGsE,EAAEA,EAAEqrB,KAAKH,EAAEuE,GAAEpD,OAAOnhB,EAAEijB,IAAIjjB,CAAC,CAACpL,EAAEA,EAAEurB,IAAI,OAAO,OAAOvrB,GAAGA,IAAIlE,GAAG,OAAOoE,EAAEnE,EAAEH,EAAEsE,EAAEqrB,KAAKtrB,EAAE0d,GAAG/hB,EAAEvB,EAAE4R,iBAAiBugB,IAAG,GAAInyB,EAAE4R,cAAcrQ,EAAEvB,EAAE+yB,UAAUrxB,EAAE1B,EAAEs2B,UAAUzwB,EAAE5F,EAAE82B,kBAAkBx1B,CAAC,CAAiB,GAAG,QAAnBxB,EAAEE,EAAEyyB,aAAwB,CAAClxB,EAAEzB,EAAE,GAAG0B,EAAED,EAAEgyB,KAAK8B,GAAEpD,OAAOzwB,EAAEuyB,IAAIvyB,EAAED,EAAEA,EAAE0vB,WAAW1vB,IAAIzB,EAAE,MAAM,OAAOyB,IAAIvB,EAAEiyB,MAAM,GAAG,MAAM,CAAClyB,EAAE4R,cAAc3R,EAAE+2B,SAAS,CAC9X,SAASC,GAAGl3B,GAAG,IAAIC,EAAEw2B,KAAKv2B,EAAED,EAAEu2B,MAAM,GAAG,OAAOt2B,EAAE,MAAM+E,MAAMlF,EAAE,MAAMG,EAAE02B,oBAAoB52B,EAAE,IAAIwB,EAAEtB,EAAE+2B,SAASx1B,EAAEvB,EAAEkzB,QAAQ1xB,EAAEzB,EAAE4R,cAAc,GAAG,OAAOpQ,EAAE,CAACvB,EAAEkzB,QAAQ,KAAK,IAAIzxB,EAAEF,EAAEA,EAAE0vB,KAAK,GAAGzvB,EAAE1B,EAAE0B,EAAEC,EAAEk1B,QAAQl1B,EAAEA,EAAEwvB,WAAWxvB,IAAIF,GAAG8hB,GAAG7hB,EAAEzB,EAAE4R,iBAAiBugB,IAAG,GAAInyB,EAAE4R,cAAcnQ,EAAE,OAAOzB,EAAEs2B,YAAYt2B,EAAE+yB,UAAUtxB,GAAGxB,EAAE82B,kBAAkBt1B,CAAC,CAAC,MAAM,CAACA,EAAEF,EAAE,CAAC,SAAS21B,KAAK,CACpW,SAASC,GAAGp3B,EAAEC,GAAG,IAAIC,EAAEq1B,GAAE/zB,EAAEi1B,KAAKh1B,EAAExB,IAAIyB,GAAG6hB,GAAG/hB,EAAEqQ,cAAcpQ,GAAsE,GAAnEC,IAAIF,EAAEqQ,cAAcpQ,EAAE2wB,IAAG,GAAI5wB,EAAEA,EAAEg1B,MAAMa,GAAGC,GAAG3O,KAAK,KAAKzoB,EAAEsB,EAAExB,GAAG,CAACA,IAAOwB,EAAE+1B,cAAct3B,GAAGyB,GAAG,OAAO+zB,IAAuB,EAApBA,GAAE5jB,cAAc1L,IAAM,CAAuD,GAAtDjG,EAAEyR,OAAO,KAAK6lB,GAAG,EAAEC,GAAG9O,KAAK,KAAKzoB,EAAEsB,EAAEC,EAAExB,QAAG,EAAO,MAAS,OAAOy3B,GAAE,MAAMzyB,MAAMlF,EAAE,MAAM,KAAQ,GAAHu1B,KAAQqC,GAAGz3B,EAAED,EAAEwB,EAAE,CAAC,OAAOA,CAAC,CAAC,SAASk2B,GAAG33B,EAAEC,EAAEC,GAAGF,EAAE2R,OAAO,MAAM3R,EAAE,CAACu3B,YAAYt3B,EAAE0H,MAAMzH,GAAmB,QAAhBD,EAAEs1B,GAAExC,cAAsB9yB,EAAE,CAAC23B,WAAW,KAAKC,OAAO,MAAMtC,GAAExC,YAAY9yB,EAAEA,EAAE43B,OAAO,CAAC73B,IAAgB,QAAXE,EAAED,EAAE43B,QAAgB53B,EAAE43B,OAAO,CAAC73B,GAAGE,EAAEiQ,KAAKnQ,EAAG,CAClf,SAASy3B,GAAGz3B,EAAEC,EAAEC,EAAEsB,GAAGvB,EAAE0H,MAAMzH,EAAED,EAAEs3B,YAAY/1B,EAAEs2B,GAAG73B,IAAI83B,GAAG/3B,EAAE,CAAC,SAASs3B,GAAGt3B,EAAEC,EAAEC,GAAG,OAAOA,GAAE,WAAW43B,GAAG73B,IAAI83B,GAAG/3B,EAAE,GAAE,CAAC,SAAS83B,GAAG93B,GAAG,IAAIC,EAAED,EAAEu3B,YAAYv3B,EAAEA,EAAE2H,MAAM,IAAI,IAAIzH,EAAED,IAAI,OAAOsjB,GAAGvjB,EAAEE,EAAE,CAAC,MAAMsB,GAAG,OAAM,CAAE,CAAC,CAAC,SAASu2B,GAAG/3B,GAAG,IAAIC,EAAE2yB,GAAG5yB,EAAE,GAAG,OAAOC,GAAG+3B,GAAG/3B,EAAED,EAAE,GAAG,EAAE,CAClQ,SAASi4B,GAAGj4B,GAAG,IAAIC,EAAEq2B,KAA8M,MAAzM,oBAAoBt2B,IAAIA,EAAEA,KAAKC,EAAE4R,cAAc5R,EAAE+yB,UAAUhzB,EAAEA,EAAE,CAACozB,QAAQ,KAAKT,YAAY,KAAKR,MAAM,EAAE8E,SAAS,KAAKL,oBAAoBF,GAAGM,kBAAkBh3B,GAAGC,EAAEu2B,MAAMx2B,EAAEA,EAAEA,EAAEi3B,SAASiB,GAAGvP,KAAK,KAAK4M,GAAEv1B,GAAS,CAACC,EAAE4R,cAAc7R,EAAE,CAC5P,SAASw3B,GAAGx3B,EAAEC,EAAEC,EAAEsB,GAA8O,OAA3OxB,EAAE,CAACmG,IAAInG,EAAEm4B,OAAOl4B,EAAEm4B,QAAQl4B,EAAEm4B,KAAK72B,EAAE2vB,KAAK,MAAsB,QAAhBlxB,EAAEs1B,GAAExC,cAAsB9yB,EAAE,CAAC23B,WAAW,KAAKC,OAAO,MAAMtC,GAAExC,YAAY9yB,EAAEA,EAAE23B,WAAW53B,EAAEmxB,KAAKnxB,GAAmB,QAAfE,EAAED,EAAE23B,YAAoB33B,EAAE23B,WAAW53B,EAAEmxB,KAAKnxB,GAAGwB,EAAEtB,EAAEixB,KAAKjxB,EAAEixB,KAAKnxB,EAAEA,EAAEmxB,KAAK3vB,EAAEvB,EAAE23B,WAAW53B,GAAWA,CAAC,CAAC,SAASs4B,KAAK,OAAO7B,KAAK5kB,aAAa,CAAC,SAAS0mB,GAAGv4B,EAAEC,EAAEC,EAAEsB,GAAG,IAAIC,EAAE60B,KAAKf,GAAE5jB,OAAO3R,EAAEyB,EAAEoQ,cAAc2lB,GAAG,EAAEv3B,EAAEC,OAAE,OAAO,IAASsB,EAAE,KAAKA,EAAE,CAC9Y,SAASg3B,GAAGx4B,EAAEC,EAAEC,EAAEsB,GAAG,IAAIC,EAAEg1B,KAAKj1B,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAIE,OAAE,EAAO,GAAG,OAAO8zB,GAAE,CAAC,IAAI7zB,EAAE6zB,GAAE3jB,cAA0B,GAAZnQ,EAAEC,EAAEy2B,QAAW,OAAO52B,GAAGu0B,GAAGv0B,EAAEG,EAAE02B,MAAmC,YAA5B52B,EAAEoQ,cAAc2lB,GAAGv3B,EAAEC,EAAEwB,EAAEF,GAAU,CAAC+zB,GAAE5jB,OAAO3R,EAAEyB,EAAEoQ,cAAc2lB,GAAG,EAAEv3B,EAAEC,EAAEwB,EAAEF,EAAE,CAAC,SAASi3B,GAAGz4B,EAAEC,GAAG,OAAOs4B,GAAG,QAAQ,EAAEv4B,EAAEC,EAAE,CAAC,SAASo3B,GAAGr3B,EAAEC,GAAG,OAAOu4B,GAAG,KAAK,EAAEx4B,EAAEC,EAAE,CAAC,SAASy4B,GAAG14B,EAAEC,GAAG,OAAOu4B,GAAG,EAAE,EAAEx4B,EAAEC,EAAE,CAAC,SAAS04B,GAAG34B,EAAEC,GAAG,OAAOu4B,GAAG,EAAE,EAAEx4B,EAAEC,EAAE,CAChX,SAAS24B,GAAG54B,EAAEC,GAAG,MAAG,oBAAoBA,GAASD,EAAEA,IAAIC,EAAED,GAAG,WAAWC,EAAE,KAAK,GAAK,OAAOA,QAAG,IAASA,GAASD,EAAEA,IAAIC,EAAEkS,QAAQnS,EAAE,WAAWC,EAAEkS,QAAQ,IAAI,QAA1E,CAA2E,CAAC,SAAS0mB,GAAG74B,EAAEC,EAAEC,GAA6C,OAA1CA,EAAE,OAAOA,QAAG,IAASA,EAAEA,EAAE4nB,OAAO,CAAC9nB,IAAI,KAAYw4B,GAAG,EAAE,EAAEI,GAAGjQ,KAAK,KAAK1oB,EAAED,GAAGE,EAAE,CAAC,SAAS44B,KAAK,CAAC,SAASC,GAAG/4B,EAAEC,GAAG,IAAIC,EAAEu2B,KAAKx2B,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAIuB,EAAEtB,EAAE2R,cAAc,OAAG,OAAOrQ,GAAG,OAAOvB,GAAG81B,GAAG91B,EAAEuB,EAAE,IAAWA,EAAE,IAAGtB,EAAE2R,cAAc,CAAC7R,EAAEC,GAAUD,EAAC,CAC7Z,SAASg5B,GAAGh5B,EAAEC,GAAG,IAAIC,EAAEu2B,KAAKx2B,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAIuB,EAAEtB,EAAE2R,cAAc,OAAG,OAAOrQ,GAAG,OAAOvB,GAAG81B,GAAG91B,EAAEuB,EAAE,IAAWA,EAAE,IAAGxB,EAAEA,IAAIE,EAAE2R,cAAc,CAAC7R,EAAEC,GAAUD,EAAC,CAAC,SAASi5B,GAAGj5B,EAAEC,EAAEC,GAAG,OAAG,KAAQ,GAAHo1B,KAAct1B,EAAEgzB,YAAYhzB,EAAEgzB,WAAU,EAAGZ,IAAG,GAAIpyB,EAAE6R,cAAc3R,IAAEqjB,GAAGrjB,EAAED,KAAKC,EAAE8U,KAAKugB,GAAEpD,OAAOjyB,EAAE+zB,IAAI/zB,EAAEF,EAAEgzB,WAAU,GAAW/yB,EAAC,CAAC,SAASi5B,GAAGl5B,EAAEC,GAAG,IAAIC,EAAEmV,GAAEA,GAAE,IAAInV,GAAG,EAAEA,EAAEA,EAAE,EAAEF,GAAE,GAAI,IAAIwB,EAAE6zB,GAAGrd,WAAWqd,GAAGrd,WAAW,CAAC,EAAE,IAAIhY,GAAE,GAAIC,GAAG,CAAC,QAAQoV,GAAEnV,EAAEm1B,GAAGrd,WAAWxW,CAAC,CAAC,CAAC,SAAS23B,KAAK,OAAO1C,KAAK5kB,aAAa,CAC1d,SAASunB,GAAGp5B,EAAEC,EAAEC,GAAG,IAAIsB,EAAE63B,GAAGr5B,GAAkE,GAA/DE,EAAE,CAACuzB,KAAKjyB,EAAEq1B,OAAO32B,EAAE42B,eAAc,EAAGC,WAAW,KAAK5F,KAAK,MAASmI,GAAGt5B,GAAGu5B,GAAGt5B,EAAEC,QAAQ,GAAiB,QAAdA,EAAEwyB,GAAG1yB,EAAEC,EAAEC,EAAEsB,IAAY,CAAWw2B,GAAG93B,EAAEF,EAAEwB,EAAXg4B,MAAgBC,GAAGv5B,EAAED,EAAEuB,EAAE,CAAC,CAC/K,SAAS02B,GAAGl4B,EAAEC,EAAEC,GAAG,IAAIsB,EAAE63B,GAAGr5B,GAAGyB,EAAE,CAACgyB,KAAKjyB,EAAEq1B,OAAO32B,EAAE42B,eAAc,EAAGC,WAAW,KAAK5F,KAAK,MAAM,GAAGmI,GAAGt5B,GAAGu5B,GAAGt5B,EAAEwB,OAAO,CAAC,IAAIC,EAAE1B,EAAEyR,UAAU,GAAG,IAAIzR,EAAEmyB,QAAQ,OAAOzwB,GAAG,IAAIA,EAAEywB,QAAiC,QAAxBzwB,EAAEzB,EAAE22B,qBAA8B,IAAI,IAAIj1B,EAAE1B,EAAE+2B,kBAAkBnxB,EAAEnE,EAAEC,EAAEzB,GAAqC,GAAlCuB,EAAEq1B,eAAc,EAAGr1B,EAAEs1B,WAAWlxB,EAAK0d,GAAG1d,EAAElE,GAAG,CAAC,IAAImE,EAAE7F,EAAE0yB,YAA+E,OAAnE,OAAO7sB,GAAGrE,EAAE0vB,KAAK1vB,EAAEgxB,GAAGxyB,KAAKwB,EAAE0vB,KAAKrrB,EAAEqrB,KAAKrrB,EAAEqrB,KAAK1vB,QAAGxB,EAAE0yB,YAAYlxB,EAAQ,CAAC,CAAC,MAAMmE,GAAG,CAAwB,QAAd1F,EAAEwyB,GAAG1yB,EAAEC,EAAEwB,EAAED,MAAoBw2B,GAAG93B,EAAEF,EAAEwB,EAAbC,EAAE+3B,MAAgBC,GAAGv5B,EAAED,EAAEuB,GAAG,CAAC,CAC/c,SAAS83B,GAAGt5B,GAAG,IAAIC,EAAED,EAAEyR,UAAU,OAAOzR,IAAIu1B,IAAG,OAAOt1B,GAAGA,IAAIs1B,EAAC,CAAC,SAASgE,GAAGv5B,EAAEC,GAAG01B,GAAGD,IAAG,EAAG,IAAIx1B,EAAEF,EAAEozB,QAAQ,OAAOlzB,EAAED,EAAEkxB,KAAKlxB,GAAGA,EAAEkxB,KAAKjxB,EAAEixB,KAAKjxB,EAAEixB,KAAKlxB,GAAGD,EAAEozB,QAAQnzB,CAAC,CAAC,SAASw5B,GAAGz5B,EAAEC,EAAEC,GAAG,GAAG,KAAO,QAAFA,GAAW,CAAC,IAAIsB,EAAEvB,EAAEkyB,MAAwBjyB,GAAlBsB,GAAGxB,EAAEyU,aAAkBxU,EAAEkyB,MAAMjyB,EAAEkV,GAAGpV,EAAEE,EAAE,CAAC,CAC9P,IAAIk2B,GAAG,CAACsD,YAAYrH,GAAGsH,YAAY7D,GAAE8D,WAAW9D,GAAE+D,UAAU/D,GAAEgE,oBAAoBhE,GAAEiE,mBAAmBjE,GAAEkE,gBAAgBlE,GAAEmE,QAAQnE,GAAEoE,WAAWpE,GAAEqE,OAAOrE,GAAEsE,SAAStE,GAAEuE,cAAcvE,GAAEwE,iBAAiBxE,GAAEyE,cAAczE,GAAE0E,iBAAiB1E,GAAE2E,qBAAqB3E,GAAE4E,MAAM5E,GAAE6E,0BAAyB,GAAI1E,GAAG,CAACyD,YAAYrH,GAAGsH,YAAY,SAAS35B,EAAEC,GAA4C,OAAzCq2B,KAAKzkB,cAAc,CAAC7R,OAAE,IAASC,EAAE,KAAKA,GAAUD,CAAC,EAAE45B,WAAWvH,GAAGwH,UAAUpB,GAAGqB,oBAAoB,SAAS95B,EAAEC,EAAEC,GAA6C,OAA1CA,EAAE,OAAOA,QAAG,IAASA,EAAEA,EAAE4nB,OAAO,CAAC9nB,IAAI,KAAYu4B,GAAG,QAC3f,EAAEK,GAAGjQ,KAAK,KAAK1oB,EAAED,GAAGE,EAAE,EAAE85B,gBAAgB,SAASh6B,EAAEC,GAAG,OAAOs4B,GAAG,QAAQ,EAAEv4B,EAAEC,EAAE,EAAE85B,mBAAmB,SAAS/5B,EAAEC,GAAG,OAAOs4B,GAAG,EAAE,EAAEv4B,EAAEC,EAAE,EAAEg6B,QAAQ,SAASj6B,EAAEC,GAAG,IAAIC,EAAEo2B,KAAqD,OAAhDr2B,OAAE,IAASA,EAAE,KAAKA,EAAED,EAAEA,IAAIE,EAAE2R,cAAc,CAAC7R,EAAEC,GAAUD,CAAC,EAAEk6B,WAAW,SAASl6B,EAAEC,EAAEC,GAAG,IAAIsB,EAAE80B,KAAkM,OAA7Lr2B,OAAE,IAASC,EAAEA,EAAED,GAAGA,EAAEuB,EAAEqQ,cAAcrQ,EAAEwxB,UAAU/yB,EAAED,EAAE,CAACozB,QAAQ,KAAKT,YAAY,KAAKR,MAAM,EAAE8E,SAAS,KAAKL,oBAAoB52B,EAAEg3B,kBAAkB/2B,GAAGuB,EAAEg1B,MAAMx2B,EAAEA,EAAEA,EAAEi3B,SAASmC,GAAGzQ,KAAK,KAAK4M,GAAEv1B,GAAS,CAACwB,EAAEqQ,cAAc7R,EAAE,EAAEm6B,OAAO,SAASn6B,GAC3d,OAAdA,EAAE,CAACmS,QAAQnS,GAAhBs2B,KAA4BzkB,cAAc7R,CAAC,EAAEo6B,SAASnC,GAAGoC,cAAcvB,GAAGwB,iBAAiB,SAASt6B,GAAG,OAAOs2B,KAAKzkB,cAAc7R,CAAC,EAAEu6B,cAAc,WAAW,IAAIv6B,EAAEi4B,IAAG,GAAIh4B,EAAED,EAAE,GAA6C,OAA1CA,EAAEk5B,GAAGvQ,KAAK,KAAK3oB,EAAE,IAAIs2B,KAAKzkB,cAAc7R,EAAQ,CAACC,EAAED,EAAE,EAAEw6B,iBAAiB,WAAW,EAAEC,qBAAqB,SAASz6B,EAAEC,EAAEC,GAAG,IAAIsB,EAAE+zB,GAAE9zB,EAAE60B,KAAK,GAAG5H,GAAE,CAAC,QAAG,IAASxuB,EAAE,MAAM+E,MAAMlF,EAAE,MAAMG,EAAEA,GAAG,KAAK,CAAO,GAANA,EAAED,IAAO,OAAOy3B,GAAE,MAAMzyB,MAAMlF,EAAE,MAAM,KAAQ,GAAHu1B,KAAQqC,GAAGn2B,EAAEvB,EAAEC,EAAE,CAACuB,EAAEoQ,cAAc3R,EAAE,IAAIwB,EAAE,CAACiG,MAAMzH,EAAEq3B,YAAYt3B,GACvZ,OAD0ZwB,EAAE+0B,MAAM90B,EAAE+2B,GAAGnB,GAAG3O,KAAK,KAAKnnB,EACpfE,EAAE1B,GAAG,CAACA,IAAIwB,EAAEmQ,OAAO,KAAK6lB,GAAG,EAAEC,GAAG9O,KAAK,KAAKnnB,EAAEE,EAAExB,EAAED,QAAG,EAAO,MAAaC,CAAC,EAAEw6B,MAAM,WAAW,IAAI16B,EAAEs2B,KAAKr2B,EAAEy3B,GAAEkD,iBAAiB,GAAGlM,GAAE,CAAC,IAAIxuB,EAAEiuB,GAAkDluB,EAAE,IAAIA,EAAE,KAA9CC,GAAHguB,KAAU,GAAG,GAAGpa,GAAhBoa,IAAsB,IAAIhkB,SAAS,IAAIhK,GAAuB,GAAPA,EAAE01B,QAAW31B,GAAG,IAAIC,EAAEgK,SAAS,KAAKjK,GAAG,GAAG,MAAaA,EAAE,IAAIA,EAAE,KAAfC,EAAE21B,MAAmB3rB,SAAS,IAAI,IAAI,OAAOlK,EAAE6R,cAAc5R,CAAC,EAAE06B,0BAAyB,GAAIzE,GAAG,CAACwD,YAAYrH,GAAGsH,YAAYZ,GAAGa,WAAWvH,GAAGwH,UAAUxC,GAAGyC,oBAAoBjB,GAAGkB,mBAAmBrB,GAAGsB,gBAAgBrB,GAAGsB,QAAQjB,GAAGkB,WAAWvD,GAAGwD,OAAO7B,GAAG8B,SAAS,WAAW,OAAOzD,GAAGD,GAAG,EACrhB2D,cAAcvB,GAAGwB,iBAAiB,SAASt6B,GAAc,OAAOi5B,GAAZxC,KAAiBjB,GAAE3jB,cAAc7R,EAAE,EAAEu6B,cAAc,WAAgD,MAAM,CAArC5D,GAAGD,IAAI,GAAKD,KAAK5kB,cAAyB,EAAE2oB,iBAAiBrD,GAAGsD,qBAAqBrD,GAAGsD,MAAMvB,GAAGwB,0BAAyB,GAAIxE,GAAG,CAACuD,YAAYrH,GAAGsH,YAAYZ,GAAGa,WAAWvH,GAAGwH,UAAUxC,GAAGyC,oBAAoBjB,GAAGkB,mBAAmBrB,GAAGsB,gBAAgBrB,GAAGsB,QAAQjB,GAAGkB,WAAWhD,GAAGiD,OAAO7B,GAAG8B,SAAS,WAAW,OAAOlD,GAAGR,GAAG,EAAE2D,cAAcvB,GAAGwB,iBAAiB,SAASt6B,GAAG,IAAIC,EAAEw2B,KAAK,OAAO,OACzfjB,GAAEv1B,EAAE4R,cAAc7R,EAAEi5B,GAAGh5B,EAAEu1B,GAAE3jB,cAAc7R,EAAE,EAAEu6B,cAAc,WAAgD,MAAM,CAArCrD,GAAGR,IAAI,GAAKD,KAAK5kB,cAAyB,EAAE2oB,iBAAiBrD,GAAGsD,qBAAqBrD,GAAGsD,MAAMvB,GAAGwB,0BAAyB,GAAI,SAASE,GAAG76B,EAAEC,GAAG,GAAGD,GAAGA,EAAE86B,aAAa,CAA4B,IAAI,IAAI56B,KAAnCD,EAAE6E,EAAE,CAAC,EAAE7E,GAAGD,EAAEA,EAAE86B,kBAA4B,IAAS76B,EAAEC,KAAKD,EAAEC,GAAGF,EAAEE,IAAI,OAAOD,CAAC,CAAC,OAAOA,CAAC,CAAC,SAAS86B,GAAG/6B,EAAEC,EAAEC,EAAEsB,GAA8BtB,EAAE,QAAXA,EAAEA,EAAEsB,EAAtBvB,EAAED,EAAE6R,sBAAmC,IAAS3R,EAAED,EAAE6E,EAAE,CAAC,EAAE7E,EAAEC,GAAGF,EAAE6R,cAAc3R,EAAE,IAAIF,EAAEmyB,QAAQnyB,EAAE+yB,YAAYC,UAAU9yB,EAAE,CACrd,IAAI86B,GAAG,CAACC,UAAU,SAASj7B,GAAG,SAAOA,EAAEA,EAAEk7B,kBAAiB1pB,GAAGxR,KAAKA,CAAI,EAAEm7B,gBAAgB,SAASn7B,EAAEC,EAAEC,GAAGF,EAAEA,EAAEk7B,gBAAgB,IAAI15B,EAAEg4B,KAAI/3B,EAAE43B,GAAGr5B,GAAG0B,EAAE6xB,GAAG/xB,EAAEC,GAAGC,EAAEgyB,QAAQzzB,OAAE,IAASC,GAAG,OAAOA,IAAIwB,EAAEiyB,SAASzzB,GAAe,QAAZD,EAAE2zB,GAAG5zB,EAAE0B,EAAED,MAAcu2B,GAAG/3B,EAAED,EAAEyB,EAAED,GAAGsyB,GAAG7zB,EAAED,EAAEyB,GAAG,EAAE25B,oBAAoB,SAASp7B,EAAEC,EAAEC,GAAGF,EAAEA,EAAEk7B,gBAAgB,IAAI15B,EAAEg4B,KAAI/3B,EAAE43B,GAAGr5B,GAAG0B,EAAE6xB,GAAG/xB,EAAEC,GAAGC,EAAEyE,IAAI,EAAEzE,EAAEgyB,QAAQzzB,OAAE,IAASC,GAAG,OAAOA,IAAIwB,EAAEiyB,SAASzzB,GAAe,QAAZD,EAAE2zB,GAAG5zB,EAAE0B,EAAED,MAAcu2B,GAAG/3B,EAAED,EAAEyB,EAAED,GAAGsyB,GAAG7zB,EAAED,EAAEyB,GAAG,EAAE45B,mBAAmB,SAASr7B,EAAEC,GAAGD,EAAEA,EAAEk7B,gBAAgB,IAAIh7B,EAAEs5B,KAAIh4B,EACnf63B,GAAGr5B,GAAGyB,EAAE8xB,GAAGrzB,EAAEsB,GAAGC,EAAE0E,IAAI,OAAE,IAASlG,GAAG,OAAOA,IAAIwB,EAAEkyB,SAAS1zB,GAAe,QAAZA,EAAE2zB,GAAG5zB,EAAEyB,EAAED,MAAcw2B,GAAG/3B,EAAED,EAAEwB,EAAEtB,GAAG4zB,GAAG7zB,EAAED,EAAEwB,GAAG,GAAG,SAAS85B,GAAGt7B,EAAEC,EAAEC,EAAEsB,EAAEC,EAAEC,EAAEC,GAAiB,MAAM,oBAApB3B,EAAEA,EAAEgQ,WAAsCurB,sBAAsBv7B,EAAEu7B,sBAAsB/5B,EAAEE,EAAEC,IAAG1B,EAAEiB,YAAWjB,EAAEiB,UAAUs6B,wBAAsBhY,GAAGtjB,EAAEsB,KAAKgiB,GAAG/hB,EAAEC,GAAK,CAC1S,SAAS+5B,GAAGz7B,EAAEC,EAAEC,GAAG,IAAIsB,GAAE,EAAGC,EAAE4qB,GAAO3qB,EAAEzB,EAAEy7B,YAA2W,MAA/V,kBAAkBh6B,GAAG,OAAOA,EAAEA,EAAE2wB,GAAG3wB,IAAID,EAAEorB,GAAG5sB,GAAGusB,GAAGF,GAAEna,QAAyBzQ,GAAGF,EAAE,QAAtBA,EAAEvB,EAAEysB,oBAA4B,IAASlrB,GAAGirB,GAAGzsB,EAAEyB,GAAG4qB,IAAIpsB,EAAE,IAAIA,EAAEC,EAAEwB,GAAG1B,EAAE6R,cAAc,OAAO5R,EAAE07B,YAAO,IAAS17B,EAAE07B,MAAM17B,EAAE07B,MAAM,KAAK17B,EAAE27B,QAAQZ,GAAGh7B,EAAEgQ,UAAU/P,EAAEA,EAAEi7B,gBAAgBl7B,EAAEwB,KAAIxB,EAAEA,EAAEgQ,WAAY2c,4CAA4ClrB,EAAEzB,EAAE4sB,0CAA0ClrB,GAAUzB,CAAC,CAC5Z,SAAS47B,GAAG77B,EAAEC,EAAEC,EAAEsB,GAAGxB,EAAEC,EAAE07B,MAAM,oBAAoB17B,EAAE67B,2BAA2B77B,EAAE67B,0BAA0B57B,EAAEsB,GAAG,oBAAoBvB,EAAE87B,kCAAkC97B,EAAE87B,iCAAiC77B,EAAEsB,GAAGvB,EAAE07B,QAAQ37B,GAAGg7B,GAAGI,oBAAoBn7B,EAAEA,EAAE07B,MAAM,KAAK,CACpQ,SAASK,GAAGh8B,EAAEC,EAAEC,EAAEsB,GAAG,IAAIC,EAAEzB,EAAEgQ,UAAUvO,EAAEkvB,MAAMzwB,EAAEuB,EAAEk6B,MAAM37B,EAAE6R,cAAcpQ,EAAE0uB,KAAK,CAAC,EAAE2C,GAAG9yB,GAAG,IAAI0B,EAAEzB,EAAEy7B,YAAY,kBAAkBh6B,GAAG,OAAOA,EAAED,EAAE6wB,QAAQD,GAAG3wB,IAAIA,EAAEmrB,GAAG5sB,GAAGusB,GAAGF,GAAEna,QAAQ1Q,EAAE6wB,QAAQ7F,GAAGzsB,EAAE0B,IAAID,EAAEk6B,MAAM37B,EAAE6R,cAA2C,oBAA7BnQ,EAAEzB,EAAEg8B,4BAAiDlB,GAAG/6B,EAAEC,EAAEyB,EAAExB,GAAGuB,EAAEk6B,MAAM37B,EAAE6R,eAAe,oBAAoB5R,EAAEg8B,0BAA0B,oBAAoBx6B,EAAEy6B,yBAAyB,oBAAoBz6B,EAAE06B,2BAA2B,oBAAoB16B,EAAE26B,qBAAqBn8B,EAAEwB,EAAEk6B,MACrf,oBAAoBl6B,EAAE26B,oBAAoB36B,EAAE26B,qBAAqB,oBAAoB36B,EAAE06B,2BAA2B16B,EAAE06B,4BAA4Bl8B,IAAIwB,EAAEk6B,OAAOX,GAAGI,oBAAoB35B,EAAEA,EAAEk6B,MAAM,MAAM3H,GAAGh0B,EAAEE,EAAEuB,EAAED,GAAGC,EAAEk6B,MAAM37B,EAAE6R,eAAe,oBAAoBpQ,EAAE46B,oBAAoBr8B,EAAE2R,OAAO,QAAQ,CAAC,SAAS2qB,GAAGt8B,EAAEC,GAAG,IAAI,IAAIC,EAAE,GAAGsB,EAAEvB,EAAE,GAAGC,GAAGgG,EAAG1E,GAAGA,EAAEA,EAAEkQ,aAAalQ,GAAG,IAAIC,EAAEvB,CAAC,CAAC,MAAMwB,GAAGD,EAAE,6BAA6BC,EAAE66B,QAAQ,KAAK76B,EAAEwD,KAAK,CAAC,MAAM,CAACyC,MAAM3H,EAAE+O,OAAO9O,EAAEiF,MAAMzD,EAAE+6B,OAAO,KAAK,CAC1d,SAASC,GAAGz8B,EAAEC,EAAEC,GAAG,MAAM,CAACyH,MAAM3H,EAAE+O,OAAO,KAAK7J,MAAM,MAAMhF,EAAEA,EAAE,KAAKs8B,OAAO,MAAMv8B,EAAEA,EAAE,KAAK,CAAC,SAASy8B,GAAG18B,EAAEC,GAAG,IAAI08B,QAAQC,MAAM38B,EAAE0H,MAAM,CAAC,MAAMzH,GAAG0qB,YAAW,WAAW,MAAM1qB,CAAE,GAAE,CAAC,CAAC,IAAI28B,GAAG,oBAAoBC,QAAQA,QAAQ5mB,IAAI,SAAS6mB,GAAG/8B,EAAEC,EAAEC,IAAGA,EAAEqzB,IAAI,EAAErzB,IAAKiG,IAAI,EAAEjG,EAAEwzB,QAAQ,CAAC7N,QAAQ,MAAM,IAAIrkB,EAAEvB,EAAE0H,MAAsD,OAAhDzH,EAAEyzB,SAAS,WAAWqJ,KAAKA,IAAG,EAAGC,GAAGz7B,GAAGk7B,GAAG18B,EAAEC,EAAE,EAASC,CAAC,CACrW,SAASg9B,GAAGl9B,EAAEC,EAAEC,IAAGA,EAAEqzB,IAAI,EAAErzB,IAAKiG,IAAI,EAAE,IAAI3E,EAAExB,EAAEkC,KAAKi7B,yBAAyB,GAAG,oBAAoB37B,EAAE,CAAC,IAAIC,EAAExB,EAAE0H,MAAMzH,EAAEwzB,QAAQ,WAAW,OAAOlyB,EAAEC,EAAE,EAAEvB,EAAEyzB,SAAS,WAAW+I,GAAG18B,EAAEC,EAAE,CAAC,CAAC,IAAIyB,EAAE1B,EAAEgQ,UAA8O,OAApO,OAAOtO,GAAG,oBAAoBA,EAAE07B,oBAAoBl9B,EAAEyzB,SAAS,WAAW+I,GAAG18B,EAAEC,GAAG,oBAAoBuB,IAAI,OAAO67B,GAAGA,GAAG,IAAI98B,IAAI,CAACqB,OAAOy7B,GAAG18B,IAAIiB,OAAO,IAAI1B,EAAED,EAAEiF,MAAMtD,KAAKw7B,kBAAkBn9B,EAAE0H,MAAM,CAAC21B,eAAe,OAAOp9B,EAAEA,EAAE,IAAI,GAAUA,CAAC,CACnb,SAASq9B,GAAGv9B,EAAEC,EAAEC,GAAG,IAAIsB,EAAExB,EAAEw9B,UAAU,GAAG,OAAOh8B,EAAE,CAACA,EAAExB,EAAEw9B,UAAU,IAAIX,GAAG,IAAIp7B,EAAE,IAAIlB,IAAIiB,EAAEiE,IAAIxF,EAAEwB,EAAE,WAAiB,KAAXA,EAAED,EAAE0F,IAAIjH,MAAgBwB,EAAE,IAAIlB,IAAIiB,EAAEiE,IAAIxF,EAAEwB,IAAIA,EAAE4mB,IAAInoB,KAAKuB,EAAEd,IAAIT,GAAGF,EAAEy9B,GAAG9U,KAAK,KAAK3oB,EAAEC,EAAEC,GAAGD,EAAEmrB,KAAKprB,EAAEA,GAAG,CAAC,SAAS09B,GAAG19B,GAAG,EAAE,CAAC,IAAIC,EAA4E,IAAvEA,EAAE,KAAKD,EAAEmG,OAAsBlG,EAAE,QAApBA,EAAED,EAAE6R,gBAAyB,OAAO5R,EAAE6R,YAAuB7R,EAAE,OAAOD,EAAEA,EAAEA,EAAE0R,MAAM,OAAO,OAAO1R,GAAG,OAAO,IAAI,CAChW,SAAS29B,GAAG39B,EAAEC,EAAEC,EAAEsB,EAAEC,GAAG,OAAG,KAAY,EAAPzB,EAAEsvB,OAAetvB,IAAIC,EAAED,EAAE2R,OAAO,OAAO3R,EAAE2R,OAAO,IAAIzR,EAAEyR,OAAO,OAAOzR,EAAEyR,QAAQ,MAAM,IAAIzR,EAAEiG,MAAM,OAAOjG,EAAEuR,UAAUvR,EAAEiG,IAAI,KAAIlG,EAAEszB,IAAI,EAAE,IAAKptB,IAAI,EAAEytB,GAAG1zB,EAAED,EAAE,KAAKC,EAAEiyB,OAAO,GAAGnyB,IAAEA,EAAE2R,OAAO,MAAM3R,EAAEmyB,MAAM1wB,EAASzB,EAAC,CAAC,IAAI49B,GAAGn6B,EAAGo6B,kBAAkBzL,IAAG,EAAG,SAAS0L,GAAG99B,EAAEC,EAAEC,EAAEsB,GAAGvB,EAAEgS,MAAM,OAAOjS,EAAEsxB,GAAGrxB,EAAE,KAAKC,EAAEsB,GAAG6vB,GAAGpxB,EAAED,EAAEiS,MAAM/R,EAAEsB,EAAE,CACnV,SAASu8B,GAAG/9B,EAAEC,EAAEC,EAAEsB,EAAEC,GAAGvB,EAAEA,EAAEkG,OAAO,IAAI1E,EAAEzB,EAAE+vB,IAAqC,OAAjCgC,GAAG/xB,EAAEwB,GAAGD,EAAEw0B,GAAGh2B,EAAEC,EAAEC,EAAEsB,EAAEE,EAAED,GAAGvB,EAAEm2B,KAAQ,OAAOr2B,GAAIoyB,IAA2E1D,IAAGxuB,GAAGouB,GAAGruB,GAAGA,EAAE0R,OAAO,EAAEmsB,GAAG99B,EAAEC,EAAEuB,EAAEC,GAAUxB,EAAEgS,QAA7GhS,EAAE8yB,YAAY/yB,EAAE+yB,YAAY9yB,EAAE0R,QAAQ,KAAK3R,EAAEmyB,QAAQ1wB,EAAEu8B,GAAGh+B,EAAEC,EAAEwB,GAAoD,CACzN,SAASw8B,GAAGj+B,EAAEC,EAAEC,EAAEsB,EAAEC,GAAG,GAAG,OAAOzB,EAAE,CAAC,IAAI0B,EAAExB,EAAEgC,KAAK,MAAG,oBAAoBR,GAAIw8B,GAAGx8B,SAAI,IAASA,EAAEo5B,cAAc,OAAO56B,EAAEi+B,cAAS,IAASj+B,EAAE46B,eAAoD96B,EAAE4wB,GAAG1wB,EAAEgC,KAAK,KAAKV,EAAEvB,EAAEA,EAAEqvB,KAAK7tB,IAAKuuB,IAAI/vB,EAAE+vB,IAAIhwB,EAAE0R,OAAOzR,EAASA,EAAEgS,MAAMjS,IAArGC,EAAEkG,IAAI,GAAGlG,EAAEiC,KAAKR,EAAE08B,GAAGp+B,EAAEC,EAAEyB,EAAEF,EAAEC,GAAyE,CAAW,GAAVC,EAAE1B,EAAEiS,MAAS,KAAKjS,EAAEmyB,MAAM1wB,GAAG,CAAC,IAAIE,EAAED,EAAEguB,cAA0C,IAAhBxvB,EAAE,QAAdA,EAAEA,EAAEi+B,SAAmBj+B,EAAEsjB,IAAQ7hB,EAAEH,IAAIxB,EAAEgwB,MAAM/vB,EAAE+vB,IAAI,OAAOgO,GAAGh+B,EAAEC,EAAEwB,EAAE,CAA6C,OAA5CxB,EAAE0R,OAAO,GAAE3R,EAAEywB,GAAG/uB,EAAEF,IAAKwuB,IAAI/vB,EAAE+vB,IAAIhwB,EAAE0R,OAAOzR,EAASA,EAAEgS,MAAMjS,CAAC,CAC1b,SAASo+B,GAAGp+B,EAAEC,EAAEC,EAAEsB,EAAEC,GAAG,GAAG,OAAOzB,EAAE,CAAC,IAAI0B,EAAE1B,EAAE0vB,cAAc,GAAGlM,GAAG9hB,EAAEF,IAAIxB,EAAEgwB,MAAM/vB,EAAE+vB,IAAI,IAAGoC,IAAG,EAAGnyB,EAAEgvB,aAAaztB,EAAEE,EAAE,KAAK1B,EAAEmyB,MAAM1wB,GAAsC,OAAOxB,EAAEkyB,MAAMnyB,EAAEmyB,MAAM6L,GAAGh+B,EAAEC,EAAEwB,GAAjE,KAAa,OAARzB,EAAE2R,SAAgBygB,IAAG,EAAyC,EAAC,OAAOiM,GAAGr+B,EAAEC,EAAEC,EAAEsB,EAAEC,EAAE,CACxN,SAAS68B,GAAGt+B,EAAEC,EAAEC,GAAG,IAAIsB,EAAEvB,EAAEgvB,aAAaxtB,EAAED,EAAE8H,SAAS5H,EAAE,OAAO1B,EAAEA,EAAE6R,cAAc,KAAK,GAAG,WAAWrQ,EAAE8tB,KAAK,GAAG,KAAY,EAAPrvB,EAAEqvB,MAAQrvB,EAAE4R,cAAc,CAAC0sB,UAAU,EAAEC,UAAU,KAAKC,YAAY,MAAMrS,GAAEsS,GAAGC,IAAIA,IAAIz+B,MAAM,CAAC,GAAG,KAAO,WAAFA,GAAc,OAAOF,EAAE,OAAO0B,EAAEA,EAAE68B,UAAUr+B,EAAEA,EAAED,EAAEkyB,MAAMlyB,EAAE8xB,WAAW,WAAW9xB,EAAE4R,cAAc,CAAC0sB,UAAUv+B,EAAEw+B,UAAU,KAAKC,YAAY,MAAMx+B,EAAE8yB,YAAY,KAAK3G,GAAEsS,GAAGC,IAAIA,IAAI3+B,EAAE,KAAKC,EAAE4R,cAAc,CAAC0sB,UAAU,EAAEC,UAAU,KAAKC,YAAY,MAAMj9B,EAAE,OAAOE,EAAEA,EAAE68B,UAAUr+B,EAAEksB,GAAEsS,GAAGC,IAAIA,IAAIn9B,CAAC,MAAM,OACtfE,GAAGF,EAAEE,EAAE68B,UAAUr+B,EAAED,EAAE4R,cAAc,MAAMrQ,EAAEtB,EAAEksB,GAAEsS,GAAGC,IAAIA,IAAIn9B,EAAc,OAAZs8B,GAAG99B,EAAEC,EAAEwB,EAAEvB,GAAUD,EAAEgS,KAAK,CAAC,SAAS2sB,GAAG5+B,EAAEC,GAAG,IAAIC,EAAED,EAAE+vB,KAAO,OAAOhwB,GAAG,OAAOE,GAAG,OAAOF,GAAGA,EAAEgwB,MAAM9vB,KAAED,EAAE0R,OAAO,IAAI1R,EAAE0R,OAAO,QAAO,CAAC,SAAS0sB,GAAGr+B,EAAEC,EAAEC,EAAEsB,EAAEC,GAAG,IAAIC,EAAEmrB,GAAG3sB,GAAGssB,GAAGF,GAAEna,QAAmD,OAA3CzQ,EAAE+qB,GAAGxsB,EAAEyB,GAAGswB,GAAG/xB,EAAEwB,GAAGvB,EAAE81B,GAAGh2B,EAAEC,EAAEC,EAAEsB,EAAEE,EAAED,GAAGD,EAAE60B,KAAQ,OAAOr2B,GAAIoyB,IAA2E1D,IAAGltB,GAAG8sB,GAAGruB,GAAGA,EAAE0R,OAAO,EAAEmsB,GAAG99B,EAAEC,EAAEC,EAAEuB,GAAUxB,EAAEgS,QAA7GhS,EAAE8yB,YAAY/yB,EAAE+yB,YAAY9yB,EAAE0R,QAAQ,KAAK3R,EAAEmyB,QAAQ1wB,EAAEu8B,GAAGh+B,EAAEC,EAAEwB,GAAoD,CACla,SAASo9B,GAAG7+B,EAAEC,EAAEC,EAAEsB,EAAEC,GAAG,GAAGorB,GAAG3sB,GAAG,CAAC,IAAIwB,GAAE,EAAGyrB,GAAGltB,EAAE,MAAMyB,GAAE,EAAW,GAARswB,GAAG/xB,EAAEwB,GAAM,OAAOxB,EAAE+P,UAAU8uB,GAAG9+B,EAAEC,GAAGw7B,GAAGx7B,EAAEC,EAAEsB,GAAGw6B,GAAG/7B,EAAEC,EAAEsB,EAAEC,GAAGD,GAAE,OAAQ,GAAG,OAAOxB,EAAE,CAAC,IAAI2B,EAAE1B,EAAE+P,UAAUnK,EAAE5F,EAAEyvB,cAAc/tB,EAAEgvB,MAAM9qB,EAAE,IAAIC,EAAEnE,EAAE2wB,QAAQ1sB,EAAE1F,EAAEw7B,YAAY,kBAAkB91B,GAAG,OAAOA,EAAEA,EAAEysB,GAAGzsB,GAAyBA,EAAE6mB,GAAGxsB,EAA1B2F,EAAEinB,GAAG3sB,GAAGssB,GAAGF,GAAEna,SAAmB,IAAInB,EAAE9Q,EAAE+7B,yBAAyBjL,EAAE,oBAAoBhgB,GAAG,oBAAoBrP,EAAEu6B,wBAAwBlL,GAAG,oBAAoBrvB,EAAEo6B,kCAAkC,oBAAoBp6B,EAAEm6B,4BAC1dj2B,IAAIrE,GAAGsE,IAAIF,IAAIi2B,GAAG57B,EAAE0B,EAAEH,EAAEoE,GAAGitB,IAAG,EAAG,IAAI5B,EAAEhxB,EAAE4R,cAAclQ,EAAEg6B,MAAM1K,EAAE+C,GAAG/zB,EAAEuB,EAAEG,EAAEF,GAAGqE,EAAE7F,EAAE4R,cAAchM,IAAIrE,GAAGyvB,IAAInrB,GAAGymB,GAAGpa,SAAS0gB,IAAI,oBAAoB7hB,IAAI+pB,GAAG96B,EAAEC,EAAE8Q,EAAExP,GAAGsE,EAAE7F,EAAE4R,gBAAgBhM,EAAEgtB,IAAIyI,GAAGr7B,EAAEC,EAAE2F,EAAErE,EAAEyvB,EAAEnrB,EAAEF,KAAKorB,GAAG,oBAAoBrvB,EAAEw6B,2BAA2B,oBAAoBx6B,EAAEy6B,qBAAqB,oBAAoBz6B,EAAEy6B,oBAAoBz6B,EAAEy6B,qBAAqB,oBAAoBz6B,EAAEw6B,2BAA2Bx6B,EAAEw6B,6BAA6B,oBAAoBx6B,EAAE06B,oBAAoBp8B,EAAE0R,OAAO,WAClf,oBAAoBhQ,EAAE06B,oBAAoBp8B,EAAE0R,OAAO,SAAS1R,EAAEyvB,cAAcluB,EAAEvB,EAAE4R,cAAc/L,GAAGnE,EAAEgvB,MAAMnvB,EAAEG,EAAEg6B,MAAM71B,EAAEnE,EAAE2wB,QAAQ1sB,EAAEpE,EAAEqE,IAAI,oBAAoBlE,EAAE06B,oBAAoBp8B,EAAE0R,OAAO,SAASnQ,GAAE,EAAG,KAAK,CAACG,EAAE1B,EAAE+P,UAAUsjB,GAAGtzB,EAAEC,GAAG4F,EAAE5F,EAAEyvB,cAAc9pB,EAAE3F,EAAEiC,OAAOjC,EAAE6uB,YAAYjpB,EAAEg1B,GAAG56B,EAAEiC,KAAK2D,GAAGlE,EAAEgvB,MAAM/qB,EAAEorB,EAAE/wB,EAAEgvB,aAAagC,EAAEtvB,EAAE2wB,QAAwB,kBAAhBxsB,EAAE5F,EAAEw7B,cAAiC,OAAO51B,EAAEA,EAAEusB,GAAGvsB,GAAyBA,EAAE2mB,GAAGxsB,EAA1B6F,EAAE+mB,GAAG3sB,GAAGssB,GAAGF,GAAEna,SAAmB,IAAI+e,EAAEhxB,EAAE+7B,0BAA0BjrB,EAAE,oBAAoBkgB,GAAG,oBAAoBvvB,EAAEu6B,0BAC9e,oBAAoBv6B,EAAEo6B,kCAAkC,oBAAoBp6B,EAAEm6B,4BAA4Bj2B,IAAImrB,GAAGC,IAAInrB,IAAI+1B,GAAG57B,EAAE0B,EAAEH,EAAEsE,GAAG+sB,IAAG,EAAG5B,EAAEhxB,EAAE4R,cAAclQ,EAAEg6B,MAAM1K,EAAE+C,GAAG/zB,EAAEuB,EAAEG,EAAEF,GAAG,IAAIqnB,EAAE7oB,EAAE4R,cAAchM,IAAImrB,GAAGC,IAAInI,GAAGyD,GAAGpa,SAAS0gB,IAAI,oBAAoB3B,IAAI6J,GAAG96B,EAAEC,EAAEgxB,EAAE1vB,GAAGsnB,EAAE7oB,EAAE4R,gBAAgBjM,EAAEitB,IAAIyI,GAAGr7B,EAAEC,EAAE0F,EAAEpE,EAAEyvB,EAAEnI,EAAEhjB,KAAI,IAAKkL,GAAG,oBAAoBrP,EAAEo9B,4BAA4B,oBAAoBp9B,EAAEq9B,sBAAsB,oBAAoBr9B,EAAEq9B,qBAAqBr9B,EAAEq9B,oBAAoBx9B,EAAEsnB,EAAEhjB,GAAG,oBAAoBnE,EAAEo9B,4BAC5fp9B,EAAEo9B,2BAA2Bv9B,EAAEsnB,EAAEhjB,IAAI,oBAAoBnE,EAAEs9B,qBAAqBh/B,EAAE0R,OAAO,GAAG,oBAAoBhQ,EAAEu6B,0BAA0Bj8B,EAAE0R,OAAO,QAAQ,oBAAoBhQ,EAAEs9B,oBAAoBp5B,IAAI7F,EAAE0vB,eAAeuB,IAAIjxB,EAAE6R,gBAAgB5R,EAAE0R,OAAO,GAAG,oBAAoBhQ,EAAEu6B,yBAAyBr2B,IAAI7F,EAAE0vB,eAAeuB,IAAIjxB,EAAE6R,gBAAgB5R,EAAE0R,OAAO,MAAM1R,EAAEyvB,cAAcluB,EAAEvB,EAAE4R,cAAciX,GAAGnnB,EAAEgvB,MAAMnvB,EAAEG,EAAEg6B,MAAM7S,EAAEnnB,EAAE2wB,QAAQxsB,EAAEtE,EAAEoE,IAAI,oBAAoBjE,EAAEs9B,oBAAoBp5B,IAAI7F,EAAE0vB,eAAeuB,IACjfjxB,EAAE6R,gBAAgB5R,EAAE0R,OAAO,GAAG,oBAAoBhQ,EAAEu6B,yBAAyBr2B,IAAI7F,EAAE0vB,eAAeuB,IAAIjxB,EAAE6R,gBAAgB5R,EAAE0R,OAAO,MAAMnQ,GAAE,EAAG,CAAC,OAAO09B,GAAGl/B,EAAEC,EAAEC,EAAEsB,EAAEE,EAAED,EAAE,CACnK,SAASy9B,GAAGl/B,EAAEC,EAAEC,EAAEsB,EAAEC,EAAEC,GAAGk9B,GAAG5+B,EAAEC,GAAG,IAAI0B,EAAE,KAAa,IAAR1B,EAAE0R,OAAW,IAAInQ,IAAIG,EAAE,OAAOF,GAAG4rB,GAAGptB,EAAEC,GAAE,GAAI89B,GAAGh+B,EAAEC,EAAEyB,GAAGF,EAAEvB,EAAE+P,UAAU4tB,GAAGzrB,QAAQlS,EAAE,IAAI4F,EAAElE,GAAG,oBAAoBzB,EAAEi9B,yBAAyB,KAAK37B,EAAE4E,SAAwI,OAA/HnG,EAAE0R,OAAO,EAAE,OAAO3R,GAAG2B,GAAG1B,EAAEgS,MAAMof,GAAGpxB,EAAED,EAAEiS,MAAM,KAAKvQ,GAAGzB,EAAEgS,MAAMof,GAAGpxB,EAAE,KAAK4F,EAAEnE,IAAIo8B,GAAG99B,EAAEC,EAAE4F,EAAEnE,GAAGzB,EAAE4R,cAAcrQ,EAAEm6B,MAAMl6B,GAAG4rB,GAAGptB,EAAEC,GAAE,GAAWD,EAAEgS,KAAK,CAAC,SAASktB,GAAGn/B,GAAG,IAAIC,EAAED,EAAEgQ,UAAU/P,EAAEm/B,eAAepS,GAAGhtB,EAAEC,EAAEm/B,eAAen/B,EAAEm/B,iBAAiBn/B,EAAEqyB,SAASryB,EAAEqyB,SAAStF,GAAGhtB,EAAEC,EAAEqyB,SAAQ,GAAIkC,GAAGx0B,EAAEC,EAAEkX,cAAc,CAC5e,SAASkoB,GAAGr/B,EAAEC,EAAEC,EAAEsB,EAAEC,GAAuC,OAApCmuB,KAAKC,GAAGpuB,GAAGxB,EAAE0R,OAAO,IAAImsB,GAAG99B,EAAEC,EAAEC,EAAEsB,GAAUvB,EAAEgS,KAAK,CAAC,IAaqLqtB,GAAGC,GAAGC,GAAGC,GAb1LC,GAAG,CAAC5tB,WAAW,KAAKqd,YAAY,KAAKC,UAAU,GAAG,SAASuQ,GAAG3/B,GAAG,MAAM,CAACu+B,UAAUv+B,EAAEw+B,UAAU,KAAKC,YAAY,KAAK,CAClM,SAASmB,GAAG5/B,EAAEC,EAAEC,GAAG,IAA0D2F,EAAtDrE,EAAEvB,EAAEgvB,aAAaxtB,EAAEozB,GAAE1iB,QAAQzQ,GAAE,EAAGC,EAAE,KAAa,IAAR1B,EAAE0R,OAAqJ,IAAvI9L,EAAElE,KAAKkE,GAAE,OAAO7F,GAAG,OAAOA,EAAE6R,gBAAiB,KAAO,EAAFpQ,IAASoE,GAAEnE,GAAE,EAAGzB,EAAE0R,QAAQ,KAAY,OAAO3R,GAAG,OAAOA,EAAE6R,gBAAcpQ,GAAG,GAAE2qB,GAAEyI,GAAI,EAAFpzB,GAAQ,OAAOzB,EAA2B,OAAxBuvB,GAAGtvB,GAAwB,QAArBD,EAAEC,EAAE4R,gBAA2C,QAAf7R,EAAEA,EAAE8R,aAA4B,KAAY,EAAP7R,EAAEqvB,MAAQrvB,EAAEkyB,MAAM,EAAE,OAAOnyB,EAAE6c,KAAK5c,EAAEkyB,MAAM,EAAElyB,EAAEkyB,MAAM,WAAW,OAAKxwB,EAAEH,EAAE8H,SAAStJ,EAAEwB,EAAEq+B,SAAgBn+B,GAAGF,EAAEvB,EAAEqvB,KAAK5tB,EAAEzB,EAAEgS,MAAMtQ,EAAE,CAAC2tB,KAAK,SAAShmB,SAAS3H,GAAG,KAAO,EAAFH,IAAM,OAAOE,GAAGA,EAAEqwB,WAAW,EAAErwB,EAAEutB,aAC7ettB,GAAGD,EAAEo+B,GAAGn+B,EAAEH,EAAE,EAAE,MAAMxB,EAAE+wB,GAAG/wB,EAAEwB,EAAEtB,EAAE,MAAMwB,EAAEgQ,OAAOzR,EAAED,EAAE0R,OAAOzR,EAAEyB,EAAEwQ,QAAQlS,EAAEC,EAAEgS,MAAMvQ,EAAEzB,EAAEgS,MAAMJ,cAAc8tB,GAAGz/B,GAAGD,EAAE4R,cAAc6tB,GAAG1/B,GAAG+/B,GAAG9/B,EAAE0B,IAAqB,GAAG,QAArBF,EAAEzB,EAAE6R,gBAA2C,QAAfhM,EAAEpE,EAAEqQ,YAAqB,OAGpM,SAAY9R,EAAEC,EAAEC,EAAEsB,EAAEC,EAAEC,EAAEC,GAAG,GAAGzB,EAAG,OAAW,IAARD,EAAE0R,OAAiB1R,EAAE0R,QAAQ,IAAwBquB,GAAGhgC,EAAEC,EAAE0B,EAA3BH,EAAEi7B,GAAGx3B,MAAMlF,EAAE,SAAsB,OAAOE,EAAE4R,eAAqB5R,EAAEgS,MAAMjS,EAAEiS,MAAMhS,EAAE0R,OAAO,IAAI,OAAKjQ,EAAEF,EAAEq+B,SAASp+B,EAAExB,EAAEqvB,KAAK9tB,EAAEs+B,GAAG,CAACxQ,KAAK,UAAUhmB,SAAS9H,EAAE8H,UAAU7H,EAAE,EAAE,OAAMC,EAAEqvB,GAAGrvB,EAAED,EAAEE,EAAE,OAAQgQ,OAAO,EAAEnQ,EAAEkQ,OAAOzR,EAAEyB,EAAEgQ,OAAOzR,EAAEuB,EAAE0Q,QAAQxQ,EAAEzB,EAAEgS,MAAMzQ,EAAE,KAAY,EAAPvB,EAAEqvB,OAAS+B,GAAGpxB,EAAED,EAAEiS,MAAM,KAAKtQ,GAAG1B,EAAEgS,MAAMJ,cAAc8tB,GAAGh+B,GAAG1B,EAAE4R,cAAc6tB,GAAUh+B,GAAE,GAAG,KAAY,EAAPzB,EAAEqvB,MAAQ,OAAO0Q,GAAGhgC,EAAEC,EAAE0B,EAAE,MAAM,GAAG,OAAOF,EAAEob,KAAK,CAChd,GADidrb,EAAEC,EAAEoiB,aAAapiB,EAAEoiB,YAAYoc,QAC3e,IAAIp6B,EAAErE,EAAE0+B,KAA0C,OAArC1+B,EAAEqE,EAA0Cm6B,GAAGhgC,EAAEC,EAAE0B,EAA/BH,EAAEi7B,GAAlB/6B,EAAEuD,MAAMlF,EAAE,MAAayB,OAAE,GAA0B,CAAwB,GAAvBqE,EAAE,KAAKlE,EAAE3B,EAAE+xB,YAAeK,IAAIvsB,EAAE,CAAK,GAAG,QAAPrE,EAAEk2B,IAAc,CAAC,OAAO/1B,GAAGA,GAAG,KAAK,EAAEF,EAAE,EAAE,MAAM,KAAK,GAAGA,EAAE,EAAE,MAAM,KAAK,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,QAAQ,KAAK,QAAQ,KAAK,QAAQ,KAAK,QAAQ,KAAK,SAAS,KAAK,SAAS,KAAK,SAASA,EAAE,GAAG,MAAM,KAAK,UAAUA,EAAE,UAAU,MAAM,QAAQA,EAAE,EAChd,KADkdA,EAAE,KAAKA,GAAGD,EAAEkT,eAAe/S,IAAI,EAAEF,IAC5eA,IAAIC,EAAE0tB,YAAY1tB,EAAE0tB,UAAU3tB,EAAEmxB,GAAG5yB,EAAEyB,GAAGu2B,GAAGx2B,EAAExB,EAAEyB,GAAG,GAAG,CAA0B,OAAzB0+B,KAAgCH,GAAGhgC,EAAEC,EAAE0B,EAAlCH,EAAEi7B,GAAGx3B,MAAMlF,EAAE,OAAyB,CAAC,MAAG,OAAO0B,EAAEob,MAAY5c,EAAE0R,OAAO,IAAI1R,EAAEgS,MAAMjS,EAAEiS,MAAMhS,EAAEmgC,GAAGzX,KAAK,KAAK3oB,GAAGyB,EAAE4+B,YAAYpgC,EAAE,OAAKD,EAAE0B,EAAEytB,YAAYV,GAAGjD,GAAG/pB,EAAEoiB,aAAa2K,GAAGvuB,EAAEyuB,IAAE,EAAGC,GAAG,KAAK,OAAO3uB,IAAI+tB,GAAGC,MAAME,GAAGH,GAAGC,MAAMG,GAAGJ,GAAGC,MAAMC,GAAGC,GAAGluB,EAAEoY,GAAG+V,GAAGnuB,EAAEkvB,SAASjB,GAAGhuB,GAAGA,EAAE8/B,GAAG9/B,EAAEuB,EAAE8H,UAAUrJ,EAAE0R,OAAO,KAAY1R,EAAC,CALrKqgC,CAAGtgC,EAAEC,EAAE0B,EAAEH,EAAEqE,EAAEpE,EAAEvB,GAAG,GAAGwB,EAAE,CAACA,EAAEF,EAAEq+B,SAASl+B,EAAE1B,EAAEqvB,KAAezpB,GAAVpE,EAAEzB,EAAEiS,OAAUC,QAAQ,IAAIpM,EAAE,CAACwpB,KAAK,SAAShmB,SAAS9H,EAAE8H,UAChF,OAD0F,KAAO,EAAF3H,IAAM1B,EAAEgS,QAAQxQ,IAAGD,EAAEvB,EAAEgS,OAAQ8f,WAAW,EAAEvwB,EAAEytB,aAAanpB,EAAE7F,EAAE8uB,UAAU,OAAOvtB,EAAEivB,GAAGhvB,EAAEqE,IAAKy6B,aAA4B,SAAf9+B,EAAE8+B,aAAuB,OAAO16B,EAAEnE,EAAE+uB,GAAG5qB,EAAEnE,IAAIA,EAAEqvB,GAAGrvB,EAAEC,EAAEzB,EAAE,OAAQyR,OAAO,EAAGjQ,EAAEgQ,OACnfzR,EAAEuB,EAAEkQ,OAAOzR,EAAEuB,EAAE0Q,QAAQxQ,EAAEzB,EAAEgS,MAAMzQ,EAAEA,EAAEE,EAAEA,EAAEzB,EAAEgS,MAA8BtQ,EAAE,QAA1BA,EAAE3B,EAAEiS,MAAMJ,eAAyB8tB,GAAGz/B,GAAG,CAACq+B,UAAU58B,EAAE48B,UAAUr+B,EAAEs+B,UAAU,KAAKC,YAAY98B,EAAE88B,aAAa/8B,EAAEmQ,cAAclQ,EAAED,EAAEqwB,WAAW/xB,EAAE+xB,YAAY7xB,EAAED,EAAE4R,cAAc6tB,GAAUl+B,CAAC,CAAoO,OAAzNxB,GAAV0B,EAAE1B,EAAEiS,OAAUC,QAAQ1Q,EAAEivB,GAAG/uB,EAAE,CAAC4tB,KAAK,UAAUhmB,SAAS9H,EAAE8H,WAAW,KAAY,EAAPrJ,EAAEqvB,QAAU9tB,EAAE2wB,MAAMjyB,GAAGsB,EAAEkQ,OAAOzR,EAAEuB,EAAE0Q,QAAQ,KAAK,OAAOlS,IAAkB,QAAdE,EAAED,EAAE8uB,YAAoB9uB,EAAE8uB,UAAU,CAAC/uB,GAAGC,EAAE0R,OAAO,IAAIzR,EAAEiQ,KAAKnQ,IAAIC,EAAEgS,MAAMzQ,EAAEvB,EAAE4R,cAAc,KAAYrQ,CAAC,CACnd,SAASu+B,GAAG//B,EAAEC,GAA8D,OAA3DA,EAAE6/B,GAAG,CAACxQ,KAAK,UAAUhmB,SAASrJ,GAAGD,EAAEsvB,KAAK,EAAE,OAAQ5d,OAAO1R,EAASA,EAAEiS,MAAMhS,CAAC,CAAC,SAAS+/B,GAAGhgC,EAAEC,EAAEC,EAAEsB,GAAwG,OAArG,OAAOA,GAAGquB,GAAGruB,GAAG6vB,GAAGpxB,EAAED,EAAEiS,MAAM,KAAK/R,IAAGF,EAAE+/B,GAAG9/B,EAAEA,EAAEgvB,aAAa3lB,WAAYqI,OAAO,EAAE1R,EAAE4R,cAAc,KAAY7R,CAAC,CAGkJ,SAASwgC,GAAGxgC,EAAEC,EAAEC,GAAGF,EAAEmyB,OAAOlyB,EAAE,IAAIuB,EAAExB,EAAEyR,UAAU,OAAOjQ,IAAIA,EAAE2wB,OAAOlyB,GAAG6xB,GAAG9xB,EAAE0R,OAAOzR,EAAEC,EAAE,CACxc,SAASugC,GAAGzgC,EAAEC,EAAEC,EAAEsB,EAAEC,GAAG,IAAIC,EAAE1B,EAAE6R,cAAc,OAAOnQ,EAAE1B,EAAE6R,cAAc,CAAC6uB,YAAYzgC,EAAE0gC,UAAU,KAAKC,mBAAmB,EAAEC,KAAKr/B,EAAEs/B,KAAK5gC,EAAE6gC,SAASt/B,IAAIC,EAAEg/B,YAAYzgC,EAAEyB,EAAEi/B,UAAU,KAAKj/B,EAAEk/B,mBAAmB,EAAEl/B,EAAEm/B,KAAKr/B,EAAEE,EAAEo/B,KAAK5gC,EAAEwB,EAAEq/B,SAASt/B,EAAE,CAC3O,SAASu/B,GAAGhhC,EAAEC,EAAEC,GAAG,IAAIsB,EAAEvB,EAAEgvB,aAAaxtB,EAAED,EAAEuzB,YAAYrzB,EAAEF,EAAEs/B,KAAsC,GAAjChD,GAAG99B,EAAEC,EAAEuB,EAAE8H,SAASpJ,GAAkB,KAAO,GAAtBsB,EAAEqzB,GAAE1iB,UAAqB3Q,EAAI,EAAFA,EAAI,EAAEvB,EAAE0R,OAAO,QAAQ,CAAC,GAAG,OAAO3R,GAAG,KAAa,IAARA,EAAE2R,OAAW3R,EAAE,IAAIA,EAAEC,EAAEgS,MAAM,OAAOjS,GAAG,CAAC,GAAG,KAAKA,EAAEmG,IAAI,OAAOnG,EAAE6R,eAAe2uB,GAAGxgC,EAAEE,EAAED,QAAQ,GAAG,KAAKD,EAAEmG,IAAIq6B,GAAGxgC,EAAEE,EAAED,QAAQ,GAAG,OAAOD,EAAEiS,MAAM,CAACjS,EAAEiS,MAAMP,OAAO1R,EAAEA,EAAEA,EAAEiS,MAAM,QAAQ,CAAC,GAAGjS,IAAIC,EAAE,MAAMD,EAAE,KAAK,OAAOA,EAAEkS,SAAS,CAAC,GAAG,OAAOlS,EAAE0R,QAAQ1R,EAAE0R,SAASzR,EAAE,MAAMD,EAAEA,EAAEA,EAAE0R,MAAM,CAAC1R,EAAEkS,QAAQR,OAAO1R,EAAE0R,OAAO1R,EAAEA,EAAEkS,OAAO,CAAC1Q,GAAG,CAAC,CAAQ,GAAP4qB,GAAEyI,GAAErzB,GAAM,KAAY,EAAPvB,EAAEqvB,MAAQrvB,EAAE4R,cAC/e,UAAU,OAAOpQ,GAAG,IAAK,WAAqB,IAAVvB,EAAED,EAAEgS,MAAUxQ,EAAE,KAAK,OAAOvB,GAAiB,QAAdF,EAAEE,EAAEuR,YAAoB,OAAOqjB,GAAG90B,KAAKyB,EAAEvB,GAAGA,EAAEA,EAAEgS,QAAY,QAAJhS,EAAEuB,IAAYA,EAAExB,EAAEgS,MAAMhS,EAAEgS,MAAM,OAAOxQ,EAAEvB,EAAEgS,QAAQhS,EAAEgS,QAAQ,MAAMuuB,GAAGxgC,GAAE,EAAGwB,EAAEvB,EAAEwB,GAAG,MAAM,IAAK,YAA6B,IAAjBxB,EAAE,KAAKuB,EAAExB,EAAEgS,MAAUhS,EAAEgS,MAAM,KAAK,OAAOxQ,GAAG,CAAe,GAAG,QAAjBzB,EAAEyB,EAAEgQ,YAAuB,OAAOqjB,GAAG90B,GAAG,CAACC,EAAEgS,MAAMxQ,EAAE,KAAK,CAACzB,EAAEyB,EAAEyQ,QAAQzQ,EAAEyQ,QAAQhS,EAAEA,EAAEuB,EAAEA,EAAEzB,CAAC,CAACygC,GAAGxgC,GAAE,EAAGC,EAAE,KAAKwB,GAAG,MAAM,IAAK,WAAW++B,GAAGxgC,GAAE,EAAG,KAAK,UAAK,GAAQ,MAAM,QAAQA,EAAE4R,cAAc,KAAK,OAAO5R,EAAEgS,KAAK,CAC7d,SAAS6sB,GAAG9+B,EAAEC,GAAG,KAAY,EAAPA,EAAEqvB,OAAS,OAAOtvB,IAAIA,EAAEyR,UAAU,KAAKxR,EAAEwR,UAAU,KAAKxR,EAAE0R,OAAO,EAAE,CAAC,SAASqsB,GAAGh+B,EAAEC,EAAEC,GAAyD,GAAtD,OAAOF,IAAIC,EAAEgyB,aAAajyB,EAAEiyB,cAAcgC,IAAIh0B,EAAEkyB,MAAS,KAAKjyB,EAAED,EAAE8xB,YAAY,OAAO,KAAK,GAAG,OAAO/xB,GAAGC,EAAEgS,QAAQjS,EAAEiS,MAAM,MAAMhN,MAAMlF,EAAE,MAAM,GAAG,OAAOE,EAAEgS,MAAM,CAA4C,IAAjC/R,EAAEuwB,GAAZzwB,EAAEC,EAAEgS,MAAajS,EAAEivB,cAAchvB,EAAEgS,MAAM/R,EAAMA,EAAEwR,OAAOzR,EAAE,OAAOD,EAAEkS,SAASlS,EAAEA,EAAEkS,SAAQhS,EAAEA,EAAEgS,QAAQue,GAAGzwB,EAAEA,EAAEivB,eAAgBvd,OAAOzR,EAAEC,EAAEgS,QAAQ,IAAI,CAAC,OAAOjS,EAAEgS,KAAK,CAO9a,SAASgvB,GAAGjhC,EAAEC,GAAG,IAAIyuB,GAAE,OAAO1uB,EAAE+gC,UAAU,IAAK,SAAS9gC,EAAED,EAAE8gC,KAAK,IAAI,IAAI5gC,EAAE,KAAK,OAAOD,GAAG,OAAOA,EAAEwR,YAAYvR,EAAED,GAAGA,EAAEA,EAAEiS,QAAQ,OAAOhS,EAAEF,EAAE8gC,KAAK,KAAK5gC,EAAEgS,QAAQ,KAAK,MAAM,IAAK,YAAYhS,EAAEF,EAAE8gC,KAAK,IAAI,IAAIt/B,EAAE,KAAK,OAAOtB,GAAG,OAAOA,EAAEuR,YAAYjQ,EAAEtB,GAAGA,EAAEA,EAAEgS,QAAQ,OAAO1Q,EAAEvB,GAAG,OAAOD,EAAE8gC,KAAK9gC,EAAE8gC,KAAK,KAAK9gC,EAAE8gC,KAAK5uB,QAAQ,KAAK1Q,EAAE0Q,QAAQ,KAAK,CAC5U,SAASgvB,GAAElhC,GAAG,IAAIC,EAAE,OAAOD,EAAEyR,WAAWzR,EAAEyR,UAAUQ,QAAQjS,EAAEiS,MAAM/R,EAAE,EAAEsB,EAAE,EAAE,GAAGvB,EAAE,IAAI,IAAIwB,EAAEzB,EAAEiS,MAAM,OAAOxQ,GAAGvB,GAAGuB,EAAE0wB,MAAM1wB,EAAEswB,WAAWvwB,GAAkB,SAAfC,EAAE8+B,aAAsB/+B,GAAW,SAARC,EAAEkQ,MAAelQ,EAAEiQ,OAAO1R,EAAEyB,EAAEA,EAAEyQ,aAAa,IAAIzQ,EAAEzB,EAAEiS,MAAM,OAAOxQ,GAAGvB,GAAGuB,EAAE0wB,MAAM1wB,EAAEswB,WAAWvwB,GAAGC,EAAE8+B,aAAa/+B,GAAGC,EAAEkQ,MAAMlQ,EAAEiQ,OAAO1R,EAAEyB,EAAEA,EAAEyQ,QAAyC,OAAjClS,EAAEugC,cAAc/+B,EAAExB,EAAE+xB,WAAW7xB,EAASD,CAAC,CAC7V,SAASkhC,GAAGnhC,EAAEC,EAAEC,GAAG,IAAIsB,EAAEvB,EAAEgvB,aAAmB,OAANV,GAAGtuB,GAAUA,EAAEkG,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,OAAO+6B,GAAEjhC,GAAG,KAAK,KAAK,EAUtD,KAAK,GAAG,OAAO4sB,GAAG5sB,EAAEiC,OAAO6qB,KAAKmU,GAAEjhC,GAAG,KAVqD,KAAK,EAA2Q,OAAzQuB,EAAEvB,EAAE+P,UAAU0kB,KAAKvI,GAAEI,IAAIJ,GAAEG,IAAG2I,KAAKzzB,EAAE49B,iBAAiB59B,EAAE8wB,QAAQ9wB,EAAE49B,eAAe59B,EAAE49B,eAAe,MAAS,OAAOp/B,GAAG,OAAOA,EAAEiS,QAAMwd,GAAGxvB,GAAGA,EAAE0R,OAAO,EAAE,OAAO3R,GAAGA,EAAE6R,cAAcqF,cAAc,KAAa,IAARjX,EAAE0R,SAAa1R,EAAE0R,OAAO,KAAK,OAAOgd,KAAKyS,GAAGzS,IAAIA,GAAG,QAAO4Q,GAAGv/B,EAAEC,GAAGihC,GAAEjhC,GAAU,KAAK,KAAK,EAAE20B,GAAG30B,GAAG,IAAIwB,EAAE8yB,GAAGD,GAAGniB,SAC7e,GAATjS,EAAED,EAAEiC,KAAQ,OAAOlC,GAAG,MAAMC,EAAE+P,UAAUwvB,GAAGx/B,EAAEC,EAAEC,EAAEsB,EAAEC,GAAGzB,EAAEgwB,MAAM/vB,EAAE+vB,MAAM/vB,EAAE0R,OAAO,IAAI1R,EAAE0R,OAAO,aAAa,CAAC,IAAInQ,EAAE,CAAC,GAAG,OAAOvB,EAAE+P,UAAU,MAAM/K,MAAMlF,EAAE,MAAW,OAALmhC,GAAEjhC,GAAU,IAAI,CAAkB,GAAjBD,EAAEu0B,GAAGH,GAAGjiB,SAAYsd,GAAGxvB,GAAG,CAACuB,EAAEvB,EAAE+P,UAAU9P,EAAED,EAAEiC,KAAK,IAAIR,EAAEzB,EAAEyvB,cAA+C,OAAjCluB,EAAEoqB,IAAI3rB,EAAEuB,EAAEqqB,IAAInqB,EAAE1B,EAAE,KAAY,EAAPC,EAAEqvB,MAAepvB,GAAG,IAAK,SAASioB,GAAE,SAAS3mB,GAAG2mB,GAAE,QAAQ3mB,GAAG,MAAM,IAAK,SAAS,IAAK,SAAS,IAAK,QAAQ2mB,GAAE,OAAO3mB,GAAG,MAAM,IAAK,QAAQ,IAAK,QAAQ,IAAIC,EAAE,EAAEA,EAAEmmB,GAAGxnB,OAAOqB,IAAI0mB,GAAEP,GAAGnmB,GAAGD,GAAG,MAAM,IAAK,SAAS2mB,GAAE,QAAQ3mB,GAAG,MAAM,IAAK,MAAM,IAAK,QAAQ,IAAK,OAAO2mB,GAAE,QACnhB3mB,GAAG2mB,GAAE,OAAO3mB,GAAG,MAAM,IAAK,UAAU2mB,GAAE,SAAS3mB,GAAG,MAAM,IAAK,QAAQ4G,EAAG5G,EAAEE,GAAGymB,GAAE,UAAU3mB,GAAG,MAAM,IAAK,SAASA,EAAE0G,cAAc,CAACm5B,cAAc3/B,EAAE4/B,UAAUnZ,GAAE,UAAU3mB,GAAG,MAAM,IAAK,WAAW+H,GAAG/H,EAAEE,GAAGymB,GAAE,UAAU3mB,GAAkB,IAAI,IAAIG,KAAvBuN,GAAGhP,EAAEwB,GAAGD,EAAE,KAAkBC,EAAE,GAAGA,EAAEP,eAAeQ,GAAG,CAAC,IAAIkE,EAAEnE,EAAEC,GAAG,aAAaA,EAAE,kBAAkBkE,EAAErE,EAAEkI,cAAc7D,KAAI,IAAKnE,EAAE6/B,0BAA0BlX,GAAG7oB,EAAEkI,YAAY7D,EAAE7F,GAAGyB,EAAE,CAAC,WAAWoE,IAAI,kBAAkBA,GAAGrE,EAAEkI,cAAc,GAAG7D,KAAI,IAAKnE,EAAE6/B,0BAA0BlX,GAAG7oB,EAAEkI,YAC1e7D,EAAE7F,GAAGyB,EAAE,CAAC,WAAW,GAAGoE,IAAIrF,EAAGW,eAAeQ,IAAI,MAAMkE,GAAG,aAAalE,GAAGwmB,GAAE,SAAS3mB,EAAE,CAAC,OAAOtB,GAAG,IAAK,QAAQ4G,EAAGtF,GAAGkH,EAAGlH,EAAEE,GAAE,GAAI,MAAM,IAAK,WAAWoF,EAAGtF,GAAGiI,GAAGjI,GAAG,MAAM,IAAK,SAAS,IAAK,SAAS,MAAM,QAAQ,oBAAoBE,EAAE8/B,UAAUhgC,EAAEigC,QAAQnX,IAAI9oB,EAAEC,EAAExB,EAAE8yB,YAAYvxB,EAAE,OAAOA,IAAIvB,EAAE0R,OAAO,EAAE,KAAK,CAAChQ,EAAE,IAAIF,EAAEiJ,SAASjJ,EAAEA,EAAEkH,cAAc,iCAAiC3I,IAAIA,EAAE2J,GAAGzJ,IAAI,iCAAiCF,EAAE,WAAWE,IAAGF,EAAE2B,EAAEZ,cAAc,QAASiJ,UAAU,qBAAuBhK,EAAEA,EAAEoK,YAAYpK,EAAEmK,aAC/f,kBAAkB3I,EAAE4N,GAAGpP,EAAE2B,EAAEZ,cAAcb,EAAE,CAACkP,GAAG5N,EAAE4N,MAAMpP,EAAE2B,EAAEZ,cAAcb,GAAG,WAAWA,IAAIyB,EAAE3B,EAAEwB,EAAE8/B,SAAS3/B,EAAE2/B,UAAS,EAAG9/B,EAAEkgC,OAAO//B,EAAE+/B,KAAKlgC,EAAEkgC,QAAQ1hC,EAAE2B,EAAEggC,gBAAgB3hC,EAAEE,GAAGF,EAAE4rB,IAAI3rB,EAAED,EAAE6rB,IAAIrqB,EAAE89B,GAAGt/B,EAAEC,GAAE,GAAG,GAAIA,EAAE+P,UAAUhQ,EAAEA,EAAE,CAAW,OAAV2B,EAAEwN,GAAGjP,EAAEsB,GAAUtB,GAAG,IAAK,SAASioB,GAAE,SAASnoB,GAAGmoB,GAAE,QAAQnoB,GAAGyB,EAAED,EAAE,MAAM,IAAK,SAAS,IAAK,SAAS,IAAK,QAAQ2mB,GAAE,OAAOnoB,GAAGyB,EAAED,EAAE,MAAM,IAAK,QAAQ,IAAK,QAAQ,IAAIC,EAAE,EAAEA,EAAEmmB,GAAGxnB,OAAOqB,IAAI0mB,GAAEP,GAAGnmB,GAAGzB,GAAGyB,EAAED,EAAE,MAAM,IAAK,SAAS2mB,GAAE,QAAQnoB,GAAGyB,EAAED,EAAE,MAAM,IAAK,MAAM,IAAK,QAAQ,IAAK,OAAO2mB,GAAE,QAClfnoB,GAAGmoB,GAAE,OAAOnoB,GAAGyB,EAAED,EAAE,MAAM,IAAK,UAAU2mB,GAAE,SAASnoB,GAAGyB,EAAED,EAAE,MAAM,IAAK,QAAQ4G,EAAGpI,EAAEwB,GAAGC,EAAEsG,EAAG/H,EAAEwB,GAAG2mB,GAAE,UAAUnoB,GAAG,MAAM,IAAK,SAAiL,QAAQyB,EAAED,QAAxK,IAAK,SAASxB,EAAEkI,cAAc,CAACm5B,cAAc7/B,EAAE8/B,UAAU7/B,EAAEqD,EAAE,CAAC,EAAEtD,EAAE,CAACmG,WAAM,IAASwgB,GAAE,UAAUnoB,GAAG,MAAM,IAAK,WAAWuJ,GAAGvJ,EAAEwB,GAAGC,EAAE2H,GAAGpJ,EAAEwB,GAAG2mB,GAAE,UAAUnoB,GAAiC,IAAI0B,KAAhBwN,GAAGhP,EAAEuB,GAAGoE,EAAEpE,EAAa,GAAGoE,EAAE1E,eAAeO,GAAG,CAAC,IAAIoE,EAAED,EAAEnE,GAAG,UAAUA,EAAEgM,GAAG1N,EAAE8F,GAAG,4BAA4BpE,EAAuB,OAApBoE,EAAEA,EAAEA,EAAE4kB,YAAO,IAAgB5gB,GAAG9J,EAAE8F,GAAI,aAAapE,EAAE,kBAAkBoE,GAAG,aAC7e5F,GAAG,KAAK4F,IAAI0E,GAAGxK,EAAE8F,GAAG,kBAAkBA,GAAG0E,GAAGxK,EAAE,GAAG8F,GAAG,mCAAmCpE,GAAG,6BAA6BA,GAAG,cAAcA,IAAIlB,EAAGW,eAAeO,GAAG,MAAMoE,GAAG,aAAapE,GAAGymB,GAAE,SAASnoB,GAAG,MAAM8F,GAAGlD,EAAG5C,EAAE0B,EAAEoE,EAAEnE,GAAG,CAAC,OAAOzB,GAAG,IAAK,QAAQ4G,EAAG9G,GAAG0I,EAAG1I,EAAEwB,GAAE,GAAI,MAAM,IAAK,WAAWsF,EAAG9G,GAAGyJ,GAAGzJ,GAAG,MAAM,IAAK,SAAS,MAAMwB,EAAEmG,OAAO3H,EAAEqD,aAAa,QAAQ,GAAGsD,EAAGnF,EAAEmG,QAAQ,MAAM,IAAK,SAAS3H,EAAEshC,WAAW9/B,EAAE8/B,SAAmB,OAAV5/B,EAAEF,EAAEmG,OAAcoB,GAAG/I,IAAIwB,EAAE8/B,SAAS5/B,GAAE,GAAI,MAAMF,EAAEyG,cAAcc,GAAG/I,IAAIwB,EAAE8/B,SAAS9/B,EAAEyG,cAClf,GAAI,MAAM,QAAQ,oBAAoBxG,EAAE+/B,UAAUxhC,EAAEyhC,QAAQnX,IAAI,OAAOpqB,GAAG,IAAK,SAAS,IAAK,QAAQ,IAAK,SAAS,IAAK,WAAWsB,IAAIA,EAAEogC,UAAU,MAAM5hC,EAAE,IAAK,MAAMwB,GAAE,EAAG,MAAMxB,EAAE,QAAQwB,GAAE,EAAG,CAACA,IAAIvB,EAAE0R,OAAO,EAAE,CAAC,OAAO1R,EAAE+vB,MAAM/vB,EAAE0R,OAAO,IAAI1R,EAAE0R,OAAO,QAAQ,CAAM,OAALuvB,GAAEjhC,GAAU,KAAK,KAAK,EAAE,GAAGD,GAAG,MAAMC,EAAE+P,UAAUyvB,GAAGz/B,EAAEC,EAAED,EAAE0vB,cAAcluB,OAAO,CAAC,GAAG,kBAAkBA,GAAG,OAAOvB,EAAE+P,UAAU,MAAM/K,MAAMlF,EAAE,MAAsC,GAAhCG,EAAEq0B,GAAGD,GAAGniB,SAASoiB,GAAGH,GAAGjiB,SAAYsd,GAAGxvB,GAAG,CAAyC,GAAxCuB,EAAEvB,EAAE+P,UAAU9P,EAAED,EAAEyvB,cAAcluB,EAAEoqB,IAAI3rB,GAAKyB,EAAEF,EAAEmJ,YAAYzK,IAC/e,QADofF,EACvfwuB,IAAY,OAAOxuB,EAAEmG,KAAK,KAAK,EAAEkkB,GAAG7oB,EAAEmJ,UAAUzK,EAAE,KAAY,EAAPF,EAAEsvB,OAAS,MAAM,KAAK,GAAE,IAAKtvB,EAAE0vB,cAAc6R,0BAA0BlX,GAAG7oB,EAAEmJ,UAAUzK,EAAE,KAAY,EAAPF,EAAEsvB,OAAS5tB,IAAIzB,EAAE0R,OAAO,EAAE,MAAMnQ,GAAG,IAAItB,EAAEwK,SAASxK,EAAEA,EAAEyI,eAAek5B,eAAergC,IAAKoqB,IAAI3rB,EAAEA,EAAE+P,UAAUxO,CAAC,CAAM,OAAL0/B,GAAEjhC,GAAU,KAAK,KAAK,GAA0B,GAAvBksB,GAAE0I,IAAGrzB,EAAEvB,EAAE4R,cAAiB,OAAO7R,GAAG,OAAOA,EAAE6R,eAAe,OAAO7R,EAAE6R,cAAcC,WAAW,CAAC,GAAG4c,IAAG,OAAOD,IAAI,KAAY,EAAPxuB,EAAEqvB,OAAS,KAAa,IAARrvB,EAAE0R,OAAWge,KAAKC,KAAK3vB,EAAE0R,OAAO,MAAMjQ,GAAE,OAAQ,GAAGA,EAAE+tB,GAAGxvB,GAAG,OAAOuB,GAAG,OAAOA,EAAEsQ,WAAW,CAAC,GAAG,OAC5f9R,EAAE,CAAC,IAAI0B,EAAE,MAAMuD,MAAMlF,EAAE,MAAqD,KAA7B2B,EAAE,QAApBA,EAAEzB,EAAE4R,eAAyBnQ,EAAEoQ,WAAW,MAAW,MAAM7M,MAAMlF,EAAE,MAAM2B,EAAEkqB,IAAI3rB,CAAC,MAAM2vB,KAAK,KAAa,IAAR3vB,EAAE0R,SAAa1R,EAAE4R,cAAc,MAAM5R,EAAE0R,OAAO,EAAEuvB,GAAEjhC,GAAGyB,GAAE,CAAE,MAAM,OAAOitB,KAAKyS,GAAGzS,IAAIA,GAAG,MAAMjtB,GAAE,EAAG,IAAIA,EAAE,OAAe,MAARzB,EAAE0R,MAAY1R,EAAE,IAAI,CAAC,OAAG,KAAa,IAARA,EAAE0R,QAAkB1R,EAAEkyB,MAAMjyB,EAAED,KAAEuB,EAAE,OAAOA,MAAO,OAAOxB,GAAG,OAAOA,EAAE6R,gBAAgBrQ,IAAIvB,EAAEgS,MAAMN,OAAO,KAAK,KAAY,EAAP1R,EAAEqvB,QAAU,OAAOtvB,GAAG,KAAe,EAAV60B,GAAE1iB,SAAW,IAAI2vB,KAAIA,GAAE,GAAG3B,OAAO,OAAOlgC,EAAE8yB,cAAc9yB,EAAE0R,OAAO,GAAGuvB,GAAEjhC,GAAU,MAAK,KAAK,EAAE,OAAOy0B,KACrf6K,GAAGv/B,EAAEC,GAAG,OAAOD,GAAG0oB,GAAGzoB,EAAE+P,UAAUmH,eAAe+pB,GAAEjhC,GAAG,KAAK,KAAK,GAAG,OAAO2xB,GAAG3xB,EAAEiC,KAAKqE,UAAU26B,GAAEjhC,GAAG,KAA+C,KAAK,GAA0B,GAAvBksB,GAAE0I,IAAwB,QAArBnzB,EAAEzB,EAAE4R,eAA0B,OAAOqvB,GAAEjhC,GAAG,KAAuC,GAAlCuB,EAAE,KAAa,IAARvB,EAAE0R,OAA4B,QAAjBhQ,EAAED,EAAEi/B,WAAsB,GAAGn/B,EAAEy/B,GAAGv/B,GAAE,OAAQ,CAAC,GAAG,IAAIogC,IAAG,OAAO9hC,GAAG,KAAa,IAARA,EAAE2R,OAAW,IAAI3R,EAAEC,EAAEgS,MAAM,OAAOjS,GAAG,CAAS,GAAG,QAAX2B,EAAEmzB,GAAG90B,IAAe,CAAmG,IAAlGC,EAAE0R,OAAO,IAAIsvB,GAAGv/B,GAAE,GAAoB,QAAhBF,EAAEG,EAAEoxB,eAAuB9yB,EAAE8yB,YAAYvxB,EAAEvB,EAAE0R,OAAO,GAAG1R,EAAEsgC,aAAa,EAAE/+B,EAAEtB,EAAMA,EAAED,EAAEgS,MAAM,OAAO/R,GAAOF,EAAEwB,GAANE,EAAExB,GAAQyR,OAAO,SAC/d,QAAdhQ,EAAED,EAAE+P,YAAoB/P,EAAEqwB,WAAW,EAAErwB,EAAEywB,MAAMnyB,EAAE0B,EAAEuQ,MAAM,KAAKvQ,EAAE6+B,aAAa,EAAE7+B,EAAEguB,cAAc,KAAKhuB,EAAEmQ,cAAc,KAAKnQ,EAAEqxB,YAAY,KAAKrxB,EAAEuwB,aAAa,KAAKvwB,EAAEsO,UAAU,OAAOtO,EAAEqwB,WAAWpwB,EAAEowB,WAAWrwB,EAAEywB,MAAMxwB,EAAEwwB,MAAMzwB,EAAEuQ,MAAMtQ,EAAEsQ,MAAMvQ,EAAE6+B,aAAa,EAAE7+B,EAAEqtB,UAAU,KAAKrtB,EAAEguB,cAAc/tB,EAAE+tB,cAAchuB,EAAEmQ,cAAclQ,EAAEkQ,cAAcnQ,EAAEqxB,YAAYpxB,EAAEoxB,YAAYrxB,EAAEQ,KAAKP,EAAEO,KAAKlC,EAAE2B,EAAEswB,aAAavwB,EAAEuwB,aAAa,OAAOjyB,EAAE,KAAK,CAACmyB,MAAMnyB,EAAEmyB,MAAMD,aAAalyB,EAAEkyB,eAAehyB,EAAEA,EAAEgS,QAA2B,OAAnBka,GAAEyI,GAAY,EAAVA,GAAE1iB,QAAU,GAAUlS,EAAEgS,KAAK,CAACjS,EAClgBA,EAAEkS,OAAO,CAAC,OAAOxQ,EAAEo/B,MAAMhuB,KAAIivB,KAAK9hC,EAAE0R,OAAO,IAAInQ,GAAE,EAAGy/B,GAAGv/B,GAAE,GAAIzB,EAAEkyB,MAAM,QAAQ,KAAK,CAAC,IAAI3wB,EAAE,GAAW,QAARxB,EAAE80B,GAAGnzB,KAAa,GAAG1B,EAAE0R,OAAO,IAAInQ,GAAE,EAAmB,QAAhBtB,EAAEF,EAAE+yB,eAAuB9yB,EAAE8yB,YAAY7yB,EAAED,EAAE0R,OAAO,GAAGsvB,GAAGv/B,GAAE,GAAI,OAAOA,EAAEo/B,MAAM,WAAWp/B,EAAEq/B,WAAWp/B,EAAE8P,YAAYid,GAAE,OAAOwS,GAAEjhC,GAAG,UAAU,EAAE6S,KAAIpR,EAAEk/B,mBAAmBmB,IAAI,aAAa7hC,IAAID,EAAE0R,OAAO,IAAInQ,GAAE,EAAGy/B,GAAGv/B,GAAE,GAAIzB,EAAEkyB,MAAM,SAASzwB,EAAEg/B,aAAa/+B,EAAEuQ,QAAQjS,EAAEgS,MAAMhS,EAAEgS,MAAMtQ,IAAa,QAATzB,EAAEwB,EAAEm/B,MAAc3gC,EAAEgS,QAAQvQ,EAAE1B,EAAEgS,MAAMtQ,EAAED,EAAEm/B,KAAKl/B,EAAE,CAAC,OAAG,OAAOD,EAAEo/B,MAAY7gC,EAAEyB,EAAEo/B,KAAKp/B,EAAEi/B,UAC9e1gC,EAAEyB,EAAEo/B,KAAK7gC,EAAEiS,QAAQxQ,EAAEk/B,mBAAmB9tB,KAAI7S,EAAEiS,QAAQ,KAAKhS,EAAE20B,GAAE1iB,QAAQia,GAAEyI,GAAErzB,EAAI,EAAFtB,EAAI,EAAI,EAAFA,GAAKD,IAAEihC,GAAEjhC,GAAU,MAAK,KAAK,GAAG,KAAK,GAAG,OAAO+hC,KAAKxgC,EAAE,OAAOvB,EAAE4R,cAAc,OAAO7R,GAAG,OAAOA,EAAE6R,gBAAgBrQ,IAAIvB,EAAE0R,OAAO,MAAMnQ,GAAG,KAAY,EAAPvB,EAAEqvB,MAAQ,KAAQ,WAAHqP,MAAiBuC,GAAEjhC,GAAkB,EAAfA,EAAEsgC,eAAiBtgC,EAAE0R,OAAO,OAAOuvB,GAAEjhC,GAAG,KAAK,KAAK,GAAe,KAAK,GAAG,OAAO,KAAK,MAAMgF,MAAMlF,EAAE,IAAIE,EAAEkG,KAAM,CAClX,SAAS87B,GAAGjiC,EAAEC,GAAS,OAANsuB,GAAGtuB,GAAUA,EAAEkG,KAAK,KAAK,EAAE,OAAO0mB,GAAG5sB,EAAEiC,OAAO6qB,KAAiB,OAAZ/sB,EAAEC,EAAE0R,QAAe1R,EAAE0R,OAAS,MAAH3R,EAAS,IAAIC,GAAG,KAAK,KAAK,EAAE,OAAOy0B,KAAKvI,GAAEI,IAAIJ,GAAEG,IAAG2I,KAAe,KAAO,OAAjBj1B,EAAEC,EAAE0R,SAAqB,KAAO,IAAF3R,IAAQC,EAAE0R,OAAS,MAAH3R,EAAS,IAAIC,GAAG,KAAK,KAAK,EAAE,OAAO20B,GAAG30B,GAAG,KAAK,KAAK,GAA0B,GAAvBksB,GAAE0I,IAAwB,QAArB70B,EAAEC,EAAE4R,gBAA2B,OAAO7R,EAAE8R,WAAW,CAAC,GAAG,OAAO7R,EAAEwR,UAAU,MAAMxM,MAAMlF,EAAE,MAAM6vB,IAAI,CAAW,OAAS,OAAnB5vB,EAAEC,EAAE0R,QAAsB1R,EAAE0R,OAAS,MAAH3R,EAAS,IAAIC,GAAG,KAAK,KAAK,GAAG,OAAOksB,GAAE0I,IAAG,KAAK,KAAK,EAAE,OAAOH,KAAK,KAAK,KAAK,GAAG,OAAO9C,GAAG3xB,EAAEiC,KAAKqE,UAAU,KAAK,KAAK,GAAG,KAAK,GAAG,OAAOy7B,KAC1gB,KAAyB,QAAQ,OAAO,KAAK,CArB7C1C,GAAG,SAASt/B,EAAEC,GAAG,IAAI,IAAIC,EAAED,EAAEgS,MAAM,OAAO/R,GAAG,CAAC,GAAG,IAAIA,EAAEiG,KAAK,IAAIjG,EAAEiG,IAAInG,EAAEqK,YAAYnK,EAAE8P,gBAAgB,GAAG,IAAI9P,EAAEiG,KAAK,OAAOjG,EAAE+R,MAAM,CAAC/R,EAAE+R,MAAMP,OAAOxR,EAAEA,EAAEA,EAAE+R,MAAM,QAAQ,CAAC,GAAG/R,IAAID,EAAE,MAAM,KAAK,OAAOC,EAAEgS,SAAS,CAAC,GAAG,OAAOhS,EAAEwR,QAAQxR,EAAEwR,SAASzR,EAAE,OAAOC,EAAEA,EAAEwR,MAAM,CAACxR,EAAEgS,QAAQR,OAAOxR,EAAEwR,OAAOxR,EAAEA,EAAEgS,OAAO,CAAC,EAAEqtB,GAAG,WAAW,EACxTC,GAAG,SAASx/B,EAAEC,EAAEC,EAAEsB,GAAG,IAAIC,EAAEzB,EAAE0vB,cAAc,GAAGjuB,IAAID,EAAE,CAACxB,EAAEC,EAAE+P,UAAUukB,GAAGH,GAAGjiB,SAAS,IAA4RxQ,EAAxRD,EAAE,KAAK,OAAOxB,GAAG,IAAK,QAAQuB,EAAEsG,EAAG/H,EAAEyB,GAAGD,EAAEuG,EAAG/H,EAAEwB,GAAGE,EAAE,GAAG,MAAM,IAAK,SAASD,EAAEqD,EAAE,CAAC,EAAErD,EAAE,CAACkG,WAAM,IAASnG,EAAEsD,EAAE,CAAC,EAAEtD,EAAE,CAACmG,WAAM,IAASjG,EAAE,GAAG,MAAM,IAAK,WAAWD,EAAE2H,GAAGpJ,EAAEyB,GAAGD,EAAE4H,GAAGpJ,EAAEwB,GAAGE,EAAE,GAAG,MAAM,QAAQ,oBAAoBD,EAAE+/B,SAAS,oBAAoBhgC,EAAEggC,UAAUxhC,EAAEyhC,QAAQnX,IAAyB,IAAI1kB,KAAzBsJ,GAAGhP,EAAEsB,GAAStB,EAAE,KAAcuB,EAAE,IAAID,EAAEL,eAAeyE,IAAInE,EAAEN,eAAeyE,IAAI,MAAMnE,EAAEmE,GAAG,GAAG,UAAUA,EAAE,CAAC,IAAIC,EAAEpE,EAAEmE,GAAG,IAAIjE,KAAKkE,EAAEA,EAAE1E,eAAeQ,KACjfzB,IAAIA,EAAE,CAAC,GAAGA,EAAEyB,GAAG,GAAG,KAAK,4BAA4BiE,GAAG,aAAaA,GAAG,mCAAmCA,GAAG,6BAA6BA,GAAG,cAAcA,IAAIpF,EAAGW,eAAeyE,GAAGlE,IAAIA,EAAE,KAAKA,EAAEA,GAAG,IAAIyO,KAAKvK,EAAE,OAAO,IAAIA,KAAKpE,EAAE,CAAC,IAAIsE,EAAEtE,EAAEoE,GAAyB,GAAtBC,EAAE,MAAMpE,EAAEA,EAAEmE,QAAG,EAAUpE,EAAEL,eAAeyE,IAAIE,IAAID,IAAI,MAAMC,GAAG,MAAMD,GAAG,GAAG,UAAUD,EAAE,GAAGC,EAAE,CAAC,IAAIlE,KAAKkE,GAAGA,EAAE1E,eAAeQ,IAAImE,GAAGA,EAAE3E,eAAeQ,KAAKzB,IAAIA,EAAE,CAAC,GAAGA,EAAEyB,GAAG,IAAI,IAAIA,KAAKmE,EAAEA,EAAE3E,eAAeQ,IAAIkE,EAAElE,KAAKmE,EAAEnE,KAAKzB,IAAIA,EAAE,CAAC,GAAGA,EAAEyB,GAAGmE,EAAEnE,GAAG,MAAMzB,IAAIwB,IAAIA,EAAE,IAAIA,EAAEyO,KAAKvK,EACpf1F,IAAIA,EAAE4F,MAAM,4BAA4BF,GAAGE,EAAEA,EAAEA,EAAE4kB,YAAO,EAAO7kB,EAAEA,EAAEA,EAAE6kB,YAAO,EAAO,MAAM5kB,GAAGD,IAAIC,IAAIpE,EAAEA,GAAG,IAAIyO,KAAKvK,EAAEE,IAAI,aAAaF,EAAE,kBAAkBE,GAAG,kBAAkBA,IAAIpE,EAAEA,GAAG,IAAIyO,KAAKvK,EAAE,GAAGE,GAAG,mCAAmCF,GAAG,6BAA6BA,IAAIpF,EAAGW,eAAeyE,IAAI,MAAME,GAAG,aAAaF,GAAGuiB,GAAE,SAASnoB,GAAG0B,GAAGmE,IAAIC,IAAIpE,EAAE,MAAMA,EAAEA,GAAG,IAAIyO,KAAKvK,EAAEE,GAAG,CAAC5F,IAAIwB,EAAEA,GAAG,IAAIyO,KAAK,QAAQjQ,GAAG,IAAI0F,EAAElE,GAAKzB,EAAE8yB,YAAYntB,KAAE3F,EAAE0R,OAAO,EAAC,CAAC,EAAE8tB,GAAG,SAASz/B,EAAEC,EAAEC,EAAEsB,GAAGtB,IAAIsB,IAAIvB,EAAE0R,OAAO,EAAE,EAkBlb,IAAIuwB,IAAG,EAAGC,IAAE,EAAGC,GAAG,oBAAoBC,QAAQA,QAAQ9hC,IAAI+hC,GAAE,KAAK,SAASC,GAAGviC,EAAEC,GAAG,IAAIC,EAAEF,EAAEgwB,IAAI,GAAG,OAAO9vB,EAAE,GAAG,oBAAoBA,EAAE,IAAIA,EAAE,KAAK,CAAC,MAAMsB,GAAGghC,GAAExiC,EAAEC,EAAEuB,EAAE,MAAMtB,EAAEiS,QAAQ,IAAI,CAAC,SAASswB,GAAGziC,EAAEC,EAAEC,GAAG,IAAIA,GAAG,CAAC,MAAMsB,GAAGghC,GAAExiC,EAAEC,EAAEuB,EAAE,CAAC,CAAC,IAAIkhC,IAAG,EAIxR,SAASC,GAAG3iC,EAAEC,EAAEC,GAAG,IAAIsB,EAAEvB,EAAE8yB,YAAyC,GAAG,QAAhCvxB,EAAE,OAAOA,EAAEA,EAAEo2B,WAAW,MAAiB,CAAC,IAAIn2B,EAAED,EAAEA,EAAE2vB,KAAK,EAAE,CAAC,IAAI1vB,EAAE0E,IAAInG,KAAKA,EAAE,CAAC,IAAI0B,EAAED,EAAE22B,QAAQ32B,EAAE22B,aAAQ,OAAO,IAAS12B,GAAG+gC,GAAGxiC,EAAEC,EAAEwB,EAAE,CAACD,EAAEA,EAAE0vB,IAAI,OAAO1vB,IAAID,EAAE,CAAC,CAAC,SAASohC,GAAG5iC,EAAEC,GAAgD,GAAG,QAAhCA,EAAE,QAAlBA,EAAEA,EAAE8yB,aAAuB9yB,EAAE23B,WAAW,MAAiB,CAAC,IAAI13B,EAAED,EAAEA,EAAEkxB,KAAK,EAAE,CAAC,IAAIjxB,EAAEiG,IAAInG,KAAKA,EAAE,CAAC,IAAIwB,EAAEtB,EAAEi4B,OAAOj4B,EAAEk4B,QAAQ52B,GAAG,CAACtB,EAAEA,EAAEixB,IAAI,OAAOjxB,IAAID,EAAE,CAAC,CAAC,SAAS4iC,GAAG7iC,GAAG,IAAIC,EAAED,EAAEgwB,IAAI,GAAG,OAAO/vB,EAAE,CAAC,IAAIC,EAAEF,EAAEgQ,UAAiBhQ,EAAEmG,IAA8BnG,EAAEE,EAAE,oBAAoBD,EAAEA,EAAED,GAAGC,EAAEkS,QAAQnS,CAAC,CAAC,CAClf,SAAS8iC,GAAG9iC,GAAG,IAAIC,EAAED,EAAEyR,UAAU,OAAOxR,IAAID,EAAEyR,UAAU,KAAKqxB,GAAG7iC,IAAID,EAAEiS,MAAM,KAAKjS,EAAE+uB,UAAU,KAAK/uB,EAAEkS,QAAQ,KAAK,IAAIlS,EAAEmG,MAAoB,QAAdlG,EAAED,EAAEgQ,oBAA4B/P,EAAE2rB,WAAW3rB,EAAE4rB,WAAW5rB,EAAEmoB,WAAWnoB,EAAE6rB,WAAW7rB,EAAE8rB,MAAM/rB,EAAEgQ,UAAU,KAAKhQ,EAAE0R,OAAO,KAAK1R,EAAEiyB,aAAa,KAAKjyB,EAAE0vB,cAAc,KAAK1vB,EAAE6R,cAAc,KAAK7R,EAAEivB,aAAa,KAAKjvB,EAAEgQ,UAAU,KAAKhQ,EAAE+yB,YAAY,IAAI,CAAC,SAASgQ,GAAG/iC,GAAG,OAAO,IAAIA,EAAEmG,KAAK,IAAInG,EAAEmG,KAAK,IAAInG,EAAEmG,GAAG,CACna,SAAS68B,GAAGhjC,GAAGA,EAAE,OAAO,CAAC,KAAK,OAAOA,EAAEkS,SAAS,CAAC,GAAG,OAAOlS,EAAE0R,QAAQqxB,GAAG/iC,EAAE0R,QAAQ,OAAO,KAAK1R,EAAEA,EAAE0R,MAAM,CAA2B,IAA1B1R,EAAEkS,QAAQR,OAAO1R,EAAE0R,OAAW1R,EAAEA,EAAEkS,QAAQ,IAAIlS,EAAEmG,KAAK,IAAInG,EAAEmG,KAAK,KAAKnG,EAAEmG,KAAK,CAAC,GAAW,EAARnG,EAAE2R,MAAQ,SAAS3R,EAAE,GAAG,OAAOA,EAAEiS,OAAO,IAAIjS,EAAEmG,IAAI,SAASnG,EAAOA,EAAEiS,MAAMP,OAAO1R,EAAEA,EAAEA,EAAEiS,KAAK,CAAC,KAAa,EAARjS,EAAE2R,OAAS,OAAO3R,EAAEgQ,SAAS,CAAC,CACzT,SAASizB,GAAGjjC,EAAEC,EAAEC,GAAG,IAAIsB,EAAExB,EAAEmG,IAAI,GAAG,IAAI3E,GAAG,IAAIA,EAAExB,EAAEA,EAAEgQ,UAAU/P,EAAE,IAAIC,EAAEwK,SAASxK,EAAEwP,WAAWwzB,aAAaljC,EAAEC,GAAGC,EAAEgjC,aAAaljC,EAAEC,IAAI,IAAIC,EAAEwK,UAAUzK,EAAEC,EAAEwP,YAAawzB,aAAaljC,EAAEE,IAAKD,EAAEC,GAAImK,YAAYrK,GAA4B,QAAxBE,EAAEA,EAAEijC,2BAA8B,IAASjjC,GAAG,OAAOD,EAAEwhC,UAAUxhC,EAAEwhC,QAAQnX,UAAU,GAAG,IAAI9oB,GAAc,QAAVxB,EAAEA,EAAEiS,OAAgB,IAAIgxB,GAAGjjC,EAAEC,EAAEC,GAAGF,EAAEA,EAAEkS,QAAQ,OAAOlS,GAAGijC,GAAGjjC,EAAEC,EAAEC,GAAGF,EAAEA,EAAEkS,OAAO,CAC1X,SAASkxB,GAAGpjC,EAAEC,EAAEC,GAAG,IAAIsB,EAAExB,EAAEmG,IAAI,GAAG,IAAI3E,GAAG,IAAIA,EAAExB,EAAEA,EAAEgQ,UAAU/P,EAAEC,EAAEgjC,aAAaljC,EAAEC,GAAGC,EAAEmK,YAAYrK,QAAQ,GAAG,IAAIwB,GAAc,QAAVxB,EAAEA,EAAEiS,OAAgB,IAAImxB,GAAGpjC,EAAEC,EAAEC,GAAGF,EAAEA,EAAEkS,QAAQ,OAAOlS,GAAGojC,GAAGpjC,EAAEC,EAAEC,GAAGF,EAAEA,EAAEkS,OAAO,CAAC,IAAImxB,GAAE,KAAKC,IAAG,EAAG,SAASC,GAAGvjC,EAAEC,EAAEC,GAAG,IAAIA,EAAEA,EAAE+R,MAAM,OAAO/R,GAAGsjC,GAAGxjC,EAAEC,EAAEC,GAAGA,EAAEA,EAAEgS,OAAO,CACnR,SAASsxB,GAAGxjC,EAAEC,EAAEC,GAAG,GAAG2T,IAAI,oBAAoBA,GAAG4vB,qBAAqB,IAAI5vB,GAAG4vB,qBAAqB7vB,GAAG1T,EAAE,CAAC,MAAM2F,GAAG,CAAC,OAAO3F,EAAEiG,KAAK,KAAK,EAAEg8B,IAAGI,GAAGriC,EAAED,GAAG,KAAK,EAAE,IAAIuB,EAAE6hC,GAAE5hC,EAAE6hC,GAAGD,GAAE,KAAKE,GAAGvjC,EAAEC,EAAEC,GAAOojC,GAAG7hC,EAAE,QAAT4hC,GAAE7hC,KAAkB8hC,IAAItjC,EAAEqjC,GAAEnjC,EAAEA,EAAE8P,UAAU,IAAIhQ,EAAE0K,SAAS1K,EAAE0P,WAAWtF,YAAYlK,GAAGF,EAAEoK,YAAYlK,IAAImjC,GAAEj5B,YAAYlK,EAAE8P,YAAY,MAAM,KAAK,GAAG,OAAOqzB,KAAIC,IAAItjC,EAAEqjC,GAAEnjC,EAAEA,EAAE8P,UAAU,IAAIhQ,EAAE0K,SAAS6gB,GAAGvrB,EAAE0P,WAAWxP,GAAG,IAAIF,EAAE0K,UAAU6gB,GAAGvrB,EAAEE,GAAGyX,GAAG3X,IAAIurB,GAAG8X,GAAEnjC,EAAE8P,YAAY,MAAM,KAAK,EAAExO,EAAE6hC,GAAE5hC,EAAE6hC,GAAGD,GAAEnjC,EAAE8P,UAAUmH,cAAcmsB,IAAG,EAClfC,GAAGvjC,EAAEC,EAAEC,GAAGmjC,GAAE7hC,EAAE8hC,GAAG7hC,EAAE,MAAM,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI0gC,KAAoB,QAAhB3gC,EAAEtB,EAAE6yB,cAAsC,QAAfvxB,EAAEA,EAAEo2B,aAAsB,CAACn2B,EAAED,EAAEA,EAAE2vB,KAAK,EAAE,CAAC,IAAIzvB,EAAED,EAAEE,EAAED,EAAE02B,QAAQ12B,EAAEA,EAAEyE,SAAI,IAASxE,IAAI,KAAO,EAAFD,IAAe,KAAO,EAAFA,KAAf+gC,GAAGviC,EAAED,EAAE0B,GAAyBF,EAAEA,EAAE0vB,IAAI,OAAO1vB,IAAID,EAAE,CAAC+hC,GAAGvjC,EAAEC,EAAEC,GAAG,MAAM,KAAK,EAAE,IAAIiiC,KAAII,GAAGriC,EAAED,GAAiB,oBAAduB,EAAEtB,EAAE8P,WAAgC0zB,sBAAsB,IAAIliC,EAAEmvB,MAAMzwB,EAAEwvB,cAAcluB,EAAEm6B,MAAMz7B,EAAE2R,cAAcrQ,EAAEkiC,sBAAsB,CAAC,MAAM79B,GAAG28B,GAAEtiC,EAAED,EAAE4F,EAAE,CAAC09B,GAAGvjC,EAAEC,EAAEC,GAAG,MAAM,KAAK,GAAGqjC,GAAGvjC,EAAEC,EAAEC,GAAG,MAAM,KAAK,GAAU,EAAPA,EAAEovB,MAAQ6S,IAAG3gC,EAAE2gC,KAAI,OAChfjiC,EAAE2R,cAAc0xB,GAAGvjC,EAAEC,EAAEC,GAAGiiC,GAAE3gC,GAAG+hC,GAAGvjC,EAAEC,EAAEC,GAAG,MAAM,QAAQqjC,GAAGvjC,EAAEC,EAAEC,GAAG,CAAC,SAASyjC,GAAG3jC,GAAG,IAAIC,EAAED,EAAE+yB,YAAY,GAAG,OAAO9yB,EAAE,CAACD,EAAE+yB,YAAY,KAAK,IAAI7yB,EAAEF,EAAEgQ,UAAU,OAAO9P,IAAIA,EAAEF,EAAEgQ,UAAU,IAAIoyB,IAAIniC,EAAEsC,SAAQ,SAAStC,GAAG,IAAIuB,EAAEoiC,GAAGjb,KAAK,KAAK3oB,EAAEC,GAAGC,EAAEmoB,IAAIpoB,KAAKC,EAAES,IAAIV,GAAGA,EAAEmrB,KAAK5pB,EAAEA,GAAG,GAAE,CAAC,CACzQ,SAASqiC,GAAG7jC,EAAEC,GAAG,IAAIC,EAAED,EAAE8uB,UAAU,GAAG,OAAO7uB,EAAE,IAAI,IAAIsB,EAAE,EAAEA,EAAEtB,EAAEE,OAAOoB,IAAI,CAAC,IAAIC,EAAEvB,EAAEsB,GAAG,IAAI,IAAIE,EAAE1B,EAAE2B,EAAE1B,EAAE4F,EAAElE,EAAE3B,EAAE,KAAK,OAAO6F,GAAG,CAAC,OAAOA,EAAEM,KAAK,KAAK,EAAEk9B,GAAEx9B,EAAEmK,UAAUszB,IAAG,EAAG,MAAMtjC,EAAE,KAAK,EAA4C,KAAK,EAAEqjC,GAAEx9B,EAAEmK,UAAUmH,cAAcmsB,IAAG,EAAG,MAAMtjC,EAAE6F,EAAEA,EAAE6L,MAAM,CAAC,GAAG,OAAO2xB,GAAE,MAAMp+B,MAAMlF,EAAE,MAAMyjC,GAAG9hC,EAAEC,EAAEF,GAAG4hC,GAAE,KAAKC,IAAG,EAAG,IAAIx9B,EAAErE,EAAEgQ,UAAU,OAAO3L,IAAIA,EAAE4L,OAAO,MAAMjQ,EAAEiQ,OAAO,IAAI,CAAC,MAAM9L,GAAG48B,GAAE/gC,EAAExB,EAAE2F,EAAE,CAAC,CAAC,GAAkB,MAAf3F,EAAEsgC,aAAmB,IAAItgC,EAAEA,EAAEgS,MAAM,OAAOhS,GAAG6jC,GAAG7jC,EAAED,GAAGC,EAAEA,EAAEiS,OAAO,CACje,SAAS4xB,GAAG9jC,EAAEC,GAAG,IAAIC,EAAEF,EAAEyR,UAAUjQ,EAAExB,EAAE2R,MAAM,OAAO3R,EAAEmG,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAiB,GAAd09B,GAAG5jC,EAAED,GAAG+jC,GAAG/jC,GAAQ,EAAFwB,EAAI,CAAC,IAAImhC,GAAG,EAAE3iC,EAAEA,EAAE0R,QAAQkxB,GAAG,EAAE5iC,EAAE,CAAC,MAAM+oB,GAAGyZ,GAAExiC,EAAEA,EAAE0R,OAAOqX,EAAE,CAAC,IAAI4Z,GAAG,EAAE3iC,EAAEA,EAAE0R,OAAO,CAAC,MAAMqX,GAAGyZ,GAAExiC,EAAEA,EAAE0R,OAAOqX,EAAE,CAAC,CAAC,MAAM,KAAK,EAAE8a,GAAG5jC,EAAED,GAAG+jC,GAAG/jC,GAAK,IAAFwB,GAAO,OAAOtB,GAAGqiC,GAAGriC,EAAEA,EAAEwR,QAAQ,MAAM,KAAK,EAAgD,GAA9CmyB,GAAG5jC,EAAED,GAAG+jC,GAAG/jC,GAAK,IAAFwB,GAAO,OAAOtB,GAAGqiC,GAAGriC,EAAEA,EAAEwR,QAAmB,GAAR1R,EAAE2R,MAAS,CAAC,IAAIlQ,EAAEzB,EAAEgQ,UAAU,IAAIxF,GAAG/I,EAAE,GAAG,CAAC,MAAMsnB,GAAGyZ,GAAExiC,EAAEA,EAAE0R,OAAOqX,EAAE,CAAC,CAAC,GAAK,EAAFvnB,GAAoB,OAAdC,EAAEzB,EAAEgQ,WAAmB,CAAC,IAAItO,EAAE1B,EAAE0vB,cAAc/tB,EAAE,OAAOzB,EAAEA,EAAEwvB,cAAchuB,EAAEmE,EAAE7F,EAAEkC,KAAK4D,EAAE9F,EAAE+yB,YACje,GAAnB/yB,EAAE+yB,YAAY,KAAQ,OAAOjtB,EAAE,IAAI,UAAUD,GAAG,UAAUnE,EAAEQ,MAAM,MAAMR,EAAEuE,MAAMsC,EAAG9G,EAAEC,GAAGyN,GAAGtJ,EAAElE,GAAG,IAAIiE,EAAEuJ,GAAGtJ,EAAEnE,GAAG,IAAIC,EAAE,EAAEA,EAAEmE,EAAE1F,OAAOuB,GAAG,EAAE,CAAC,IAAIqP,EAAElL,EAAEnE,GAAGqvB,EAAElrB,EAAEnE,EAAE,GAAG,UAAUqP,EAAEtD,GAAGjM,EAAEuvB,GAAG,4BAA4BhgB,EAAElH,GAAGrI,EAAEuvB,GAAG,aAAahgB,EAAExG,GAAG/I,EAAEuvB,GAAGpuB,EAAGnB,EAAEuP,EAAEggB,EAAEprB,EAAE,CAAC,OAAOC,GAAG,IAAK,QAAQ2C,EAAG/G,EAAEC,GAAG,MAAM,IAAK,WAAW8H,GAAG/H,EAAEC,GAAG,MAAM,IAAK,SAAS,IAAIuvB,EAAExvB,EAAEyG,cAAcm5B,YAAY5/B,EAAEyG,cAAcm5B,cAAc3/B,EAAE4/B,SAAS,IAAIpQ,EAAExvB,EAAEiG,MAAM,MAAMupB,EAAEnoB,GAAGtH,IAAIC,EAAE4/B,SAASpQ,GAAE,GAAID,MAAMvvB,EAAE4/B,WAAW,MAAM5/B,EAAEuG,aAAac,GAAGtH,IAAIC,EAAE4/B,SACnf5/B,EAAEuG,cAAa,GAAIc,GAAGtH,IAAIC,EAAE4/B,SAAS5/B,EAAE4/B,SAAS,GAAG,IAAG,IAAK7/B,EAAEoqB,IAAInqB,CAAC,CAAC,MAAMqnB,GAAGyZ,GAAExiC,EAAEA,EAAE0R,OAAOqX,EAAE,CAAC,CAAC,MAAM,KAAK,EAAgB,GAAd8a,GAAG5jC,EAAED,GAAG+jC,GAAG/jC,GAAQ,EAAFwB,EAAI,CAAC,GAAG,OAAOxB,EAAEgQ,UAAU,MAAM/K,MAAMlF,EAAE,MAAM0B,EAAEzB,EAAEgQ,UAAUtO,EAAE1B,EAAE0vB,cAAc,IAAIjuB,EAAEkJ,UAAUjJ,CAAC,CAAC,MAAMqnB,GAAGyZ,GAAExiC,EAAEA,EAAE0R,OAAOqX,EAAE,CAAC,CAAC,MAAM,KAAK,EAAgB,GAAd8a,GAAG5jC,EAAED,GAAG+jC,GAAG/jC,GAAQ,EAAFwB,GAAK,OAAOtB,GAAGA,EAAE2R,cAAcqF,aAAa,IAAIS,GAAG1X,EAAEkX,cAAc,CAAC,MAAM4R,GAAGyZ,GAAExiC,EAAEA,EAAE0R,OAAOqX,EAAE,CAAC,MAAM,KAAK,EAG4G,QAAQ8a,GAAG5jC,EACnfD,GAAG+jC,GAAG/jC,SAJ4Y,KAAK,GAAG6jC,GAAG5jC,EAAED,GAAG+jC,GAAG/jC,GAAqB,MAAlByB,EAAEzB,EAAEiS,OAAQN,QAAajQ,EAAE,OAAOD,EAAEoQ,cAAcpQ,EAAEuO,UAAUg0B,SAAStiC,GAAGA,GAClf,OAAOD,EAAEgQ,WAAW,OAAOhQ,EAAEgQ,UAAUI,gBAAgBoyB,GAAGnxB,OAAQ,EAAFtR,GAAKmiC,GAAG3jC,GAAG,MAAM,KAAK,GAAsF,GAAnFgR,EAAE,OAAO9Q,GAAG,OAAOA,EAAE2R,cAAqB,EAAP7R,EAAEsvB,MAAQ6S,IAAGv8B,EAAEu8B,KAAInxB,EAAE6yB,GAAG5jC,EAAED,GAAGmiC,GAAEv8B,GAAGi+B,GAAG5jC,EAAED,GAAG+jC,GAAG/jC,GAAQ,KAAFwB,EAAO,CAA0B,GAAzBoE,EAAE,OAAO5F,EAAE6R,eAAkB7R,EAAEgQ,UAAUg0B,SAASp+B,KAAKoL,GAAG,KAAY,EAAPhR,EAAEsvB,MAAQ,IAAIgT,GAAEtiC,EAAEgR,EAAEhR,EAAEiS,MAAM,OAAOjB,GAAG,CAAC,IAAIggB,EAAEsR,GAAEtxB,EAAE,OAAOsxB,IAAG,CAAe,OAAVpR,GAAJD,EAAEqR,IAAMrwB,MAAagf,EAAE9qB,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAGw8B,GAAG,EAAE1R,EAAEA,EAAEvf,QAAQ,MAAM,KAAK,EAAE6wB,GAAGtR,EAAEA,EAAEvf,QAAQ,IAAIoX,EAAEmI,EAAEjhB,UAAU,GAAG,oBAAoB8Y,EAAE4a,qBAAqB,CAACliC,EAAEyvB,EAAE/wB,EAAE+wB,EAAEvf,OAAO,IAAIzR,EAAEuB,EAAEsnB,EAAE6H,MACpf1wB,EAAEyvB,cAAc5G,EAAE6S,MAAM17B,EAAE4R,cAAciX,EAAE4a,sBAAsB,CAAC,MAAM3a,GAAGyZ,GAAEhhC,EAAEtB,EAAE6oB,EAAE,CAAC,CAAC,MAAM,KAAK,EAAEwZ,GAAGtR,EAAEA,EAAEvf,QAAQ,MAAM,KAAK,GAAG,GAAG,OAAOuf,EAAEpf,cAAc,CAACqyB,GAAGlT,GAAG,QAAQ,EAAE,OAAOE,GAAGA,EAAExf,OAAOuf,EAAEqR,GAAEpR,GAAGgT,GAAGlT,EAAE,CAAChgB,EAAEA,EAAEkB,OAAO,CAAClS,EAAE,IAAIgR,EAAE,KAAKggB,EAAEhxB,IAAI,CAAC,GAAG,IAAIgxB,EAAE7qB,KAAK,GAAG,OAAO6K,EAAE,CAACA,EAAEggB,EAAE,IAAIvvB,EAAEuvB,EAAEhhB,UAAUpK,EAAa,oBAAVlE,EAAED,EAAEkM,OAA4BE,YAAYnM,EAAEmM,YAAY,UAAU,OAAO,aAAanM,EAAEyiC,QAAQ,QAASt+B,EAAEmrB,EAAEhhB,UAAkCrO,OAAE,KAA1BmE,EAAEkrB,EAAEtB,cAAc/hB,QAAoB,OAAO7H,GAAGA,EAAE3E,eAAe,WAAW2E,EAAEq+B,QAAQ,KAAKt+B,EAAE8H,MAAMw2B,QACzf12B,GAAG,UAAU9L,GAAG,CAAC,MAAMonB,GAAGyZ,GAAExiC,EAAEA,EAAE0R,OAAOqX,EAAE,CAAC,OAAO,GAAG,IAAIiI,EAAE7qB,KAAK,GAAG,OAAO6K,EAAE,IAAIggB,EAAEhhB,UAAUrF,UAAU/E,EAAE,GAAGorB,EAAEtB,aAAa,CAAC,MAAM3G,GAAGyZ,GAAExiC,EAAEA,EAAE0R,OAAOqX,EAAE,OAAO,IAAI,KAAKiI,EAAE7qB,KAAK,KAAK6qB,EAAE7qB,KAAK,OAAO6qB,EAAEnf,eAAemf,IAAIhxB,IAAI,OAAOgxB,EAAE/e,MAAM,CAAC+e,EAAE/e,MAAMP,OAAOsf,EAAEA,EAAEA,EAAE/e,MAAM,QAAQ,CAAC,GAAG+e,IAAIhxB,EAAE,MAAMA,EAAE,KAAK,OAAOgxB,EAAE9e,SAAS,CAAC,GAAG,OAAO8e,EAAEtf,QAAQsf,EAAEtf,SAAS1R,EAAE,MAAMA,EAAEgR,IAAIggB,IAAIhgB,EAAE,MAAMggB,EAAEA,EAAEtf,MAAM,CAACV,IAAIggB,IAAIhgB,EAAE,MAAMggB,EAAE9e,QAAQR,OAAOsf,EAAEtf,OAAOsf,EAAEA,EAAE9e,OAAO,CAAC,CAAC,MAAM,KAAK,GAAG2xB,GAAG5jC,EAAED,GAAG+jC,GAAG/jC,GAAK,EAAFwB,GAAKmiC,GAAG3jC,GAAS,KAAK,IACtd,CAAC,SAAS+jC,GAAG/jC,GAAG,IAAIC,EAAED,EAAE2R,MAAM,GAAK,EAAF1R,EAAI,CAAC,IAAID,EAAE,CAAC,IAAI,IAAIE,EAAEF,EAAE0R,OAAO,OAAOxR,GAAG,CAAC,GAAG6iC,GAAG7iC,GAAG,CAAC,IAAIsB,EAAEtB,EAAE,MAAMF,CAAC,CAACE,EAAEA,EAAEwR,MAAM,CAAC,MAAMzM,MAAMlF,EAAE,KAAM,CAAC,OAAOyB,EAAE2E,KAAK,KAAK,EAAE,IAAI1E,EAAED,EAAEwO,UAAkB,GAARxO,EAAEmQ,QAAWnH,GAAG/I,EAAE,IAAID,EAAEmQ,QAAQ,IAAgByxB,GAAGpjC,EAATgjC,GAAGhjC,GAAUyB,GAAG,MAAM,KAAK,EAAE,KAAK,EAAE,IAAIE,EAAEH,EAAEwO,UAAUmH,cAAsB8rB,GAAGjjC,EAATgjC,GAAGhjC,GAAU2B,GAAG,MAAM,QAAQ,MAAMsD,MAAMlF,EAAE,MAAO,CAAC,MAAM+F,GAAG08B,GAAExiC,EAAEA,EAAE0R,OAAO5L,EAAE,CAAC9F,EAAE2R,QAAQ,CAAC,CAAG,KAAF1R,IAASD,EAAE2R,QAAQ,KAAK,CAAC,SAASyyB,GAAGpkC,EAAEC,EAAEC,GAAGoiC,GAAEtiC,EAAEqkC,GAAGrkC,EAAEC,EAAEC,EAAE,CACvb,SAASmkC,GAAGrkC,EAAEC,EAAEC,GAAG,IAAI,IAAIsB,EAAE,KAAY,EAAPxB,EAAEsvB,MAAQ,OAAOgT,IAAG,CAAC,IAAI7gC,EAAE6gC,GAAE5gC,EAAED,EAAEwQ,MAAM,GAAG,KAAKxQ,EAAE0E,KAAK3E,EAAE,CAAC,IAAIG,EAAE,OAAOF,EAAEoQ,eAAeqwB,GAAG,IAAIvgC,EAAE,CAAC,IAAIkE,EAAEpE,EAAEgQ,UAAU3L,EAAE,OAAOD,GAAG,OAAOA,EAAEgM,eAAeswB,GAAEt8B,EAAEq8B,GAAG,IAAIt8B,EAAEu8B,GAAO,GAALD,GAAGvgC,GAAMwgC,GAAEr8B,KAAKF,EAAE,IAAI08B,GAAE7gC,EAAE,OAAO6gC,IAAOx8B,GAAJnE,EAAE2gC,IAAMrwB,MAAM,KAAKtQ,EAAEwE,KAAK,OAAOxE,EAAEkQ,cAAcyyB,GAAG7iC,GAAG,OAAOqE,GAAGA,EAAE4L,OAAO/P,EAAE2gC,GAAEx8B,GAAGw+B,GAAG7iC,GAAG,KAAK,OAAOC,GAAG4gC,GAAE5gC,EAAE2iC,GAAG3iC,EAAEzB,EAAEC,GAAGwB,EAAEA,EAAEwQ,QAAQowB,GAAE7gC,EAAEygC,GAAGr8B,EAAEs8B,GAAEv8B,CAAC,CAAC2+B,GAAGvkC,EAAM,MAAM,KAAoB,KAAfyB,EAAE8+B,eAAoB,OAAO7+B,GAAGA,EAAEgQ,OAAOjQ,EAAE6gC,GAAE5gC,GAAG6iC,GAAGvkC,EAAM,CAAC,CACvc,SAASukC,GAAGvkC,GAAG,KAAK,OAAOsiC,IAAG,CAAC,IAAIriC,EAAEqiC,GAAE,GAAG,KAAa,KAARriC,EAAE0R,OAAY,CAAC,IAAIzR,EAAED,EAAEwR,UAAU,IAAI,GAAG,KAAa,KAARxR,EAAE0R,OAAY,OAAO1R,EAAEkG,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAGg8B,IAAGS,GAAG,EAAE3iC,GAAG,MAAM,KAAK,EAAE,IAAIuB,EAAEvB,EAAE+P,UAAU,GAAW,EAAR/P,EAAE0R,QAAUwwB,GAAE,GAAG,OAAOjiC,EAAEsB,EAAE66B,wBAAwB,CAAC,IAAI56B,EAAExB,EAAE6uB,cAAc7uB,EAAEiC,KAAKhC,EAAEwvB,cAAcmL,GAAG56B,EAAEiC,KAAKhC,EAAEwvB,eAAeluB,EAAEy9B,mBAAmBx9B,EAAEvB,EAAE2R,cAAcrQ,EAAEgjC,oCAAoC,CAAC,IAAI9iC,EAAEzB,EAAE8yB,YAAY,OAAOrxB,GAAGwyB,GAAGj0B,EAAEyB,EAAEF,GAAG,MAAM,KAAK,EAAE,IAAIG,EAAE1B,EAAE8yB,YAAY,GAAG,OAAOpxB,EAAE,CAAQ,GAAPzB,EAAE,KAAQ,OAAOD,EAAEgS,MAAM,OAAOhS,EAAEgS,MAAM9L,KAAK,KAAK,EACvf,KAAK,EAAEjG,EAAED,EAAEgS,MAAMjC,UAAUkkB,GAAGj0B,EAAE0B,EAAEzB,EAAE,CAAC,MAAM,KAAK,EAAE,IAAI2F,EAAE5F,EAAE+P,UAAU,GAAG,OAAO9P,GAAW,EAARD,EAAE0R,MAAQ,CAACzR,EAAE2F,EAAE,IAAIC,EAAE7F,EAAEyvB,cAAc,OAAOzvB,EAAEiC,MAAM,IAAK,SAAS,IAAK,QAAQ,IAAK,SAAS,IAAK,WAAW4D,EAAE87B,WAAW1hC,EAAEgmB,QAAQ,MAAM,IAAK,MAAMpgB,EAAE2+B,MAAMvkC,EAAEukC,IAAI3+B,EAAE2+B,KAAK,CAAC,MAAM,KAAK,EAAQ,KAAK,EAAQ,KAAK,GAAyJ,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAhM,KAAK,GAAG,GAAG,OAAOxkC,EAAE4R,cAAc,CAAC,IAAIjM,EAAE3F,EAAEwR,UAAU,GAAG,OAAO7L,EAAE,CAAC,IAAIoL,EAAEpL,EAAEiM,cAAc,GAAG,OAAOb,EAAE,CAAC,IAAIggB,EAAEhgB,EAAEc,WAAW,OAAOkf,GAAGrZ,GAAGqZ,EAAE,CAAC,CAAC,CAAC,MAC5c,QAAQ,MAAM/rB,MAAMlF,EAAE,MAAOoiC,IAAW,IAARliC,EAAE0R,OAAWkxB,GAAG5iC,EAAE,CAAC,MAAMgxB,GAAGuR,GAAEviC,EAAEA,EAAEyR,OAAOuf,EAAE,CAAC,CAAC,GAAGhxB,IAAID,EAAE,CAACsiC,GAAE,KAAK,KAAK,CAAa,GAAG,QAAfpiC,EAAED,EAAEiS,SAAoB,CAAChS,EAAEwR,OAAOzR,EAAEyR,OAAO4wB,GAAEpiC,EAAE,KAAK,CAACoiC,GAAEriC,EAAEyR,MAAM,CAAC,CAAC,SAASwyB,GAAGlkC,GAAG,KAAK,OAAOsiC,IAAG,CAAC,IAAIriC,EAAEqiC,GAAE,GAAGriC,IAAID,EAAE,CAACsiC,GAAE,KAAK,KAAK,CAAC,IAAIpiC,EAAED,EAAEiS,QAAQ,GAAG,OAAOhS,EAAE,CAACA,EAAEwR,OAAOzR,EAAEyR,OAAO4wB,GAAEpiC,EAAE,KAAK,CAACoiC,GAAEriC,EAAEyR,MAAM,CAAC,CACvS,SAAS4yB,GAAGtkC,GAAG,KAAK,OAAOsiC,IAAG,CAAC,IAAIriC,EAAEqiC,GAAE,IAAI,OAAOriC,EAAEkG,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,IAAIjG,EAAED,EAAEyR,OAAO,IAAIkxB,GAAG,EAAE3iC,EAAE,CAAC,MAAM6F,GAAG08B,GAAEviC,EAAEC,EAAE4F,EAAE,CAAC,MAAM,KAAK,EAAE,IAAItE,EAAEvB,EAAE+P,UAAU,GAAG,oBAAoBxO,EAAE66B,kBAAkB,CAAC,IAAI56B,EAAExB,EAAEyR,OAAO,IAAIlQ,EAAE66B,mBAAmB,CAAC,MAAMv2B,GAAG08B,GAAEviC,EAAEwB,EAAEqE,EAAE,CAAC,CAAC,IAAIpE,EAAEzB,EAAEyR,OAAO,IAAImxB,GAAG5iC,EAAE,CAAC,MAAM6F,GAAG08B,GAAEviC,EAAEyB,EAAEoE,EAAE,CAAC,MAAM,KAAK,EAAE,IAAInE,EAAE1B,EAAEyR,OAAO,IAAImxB,GAAG5iC,EAAE,CAAC,MAAM6F,GAAG08B,GAAEviC,EAAE0B,EAAEmE,EAAE,EAAE,CAAC,MAAMA,GAAG08B,GAAEviC,EAAEA,EAAEyR,OAAO5L,EAAE,CAAC,GAAG7F,IAAID,EAAE,CAACsiC,GAAE,KAAK,KAAK,CAAC,IAAIz8B,EAAE5F,EAAEiS,QAAQ,GAAG,OAAOrM,EAAE,CAACA,EAAE6L,OAAOzR,EAAEyR,OAAO4wB,GAAEz8B,EAAE,KAAK,CAACy8B,GAAEriC,EAAEyR,MAAM,CAAC,CAC7d,IAwBkNgzB,GAxB9MC,GAAG5wB,KAAK6wB,KAAKC,GAAGphC,EAAG2xB,uBAAuB0P,GAAGrhC,EAAGo6B,kBAAkBkH,GAAGthC,EAAGoU,wBAAwBgc,GAAE,EAAE6D,GAAE,KAAKsN,GAAE,KAAKC,GAAE,EAAEtG,GAAG,EAAED,GAAGxS,GAAG,GAAG4V,GAAE,EAAEoD,GAAG,KAAKjR,GAAG,EAAEkR,GAAG,EAAEC,GAAG,EAAEC,GAAG,KAAKC,GAAG,KAAKrB,GAAG,EAAElC,GAAGwD,IAASC,GAAG,KAAKxI,IAAG,EAAGC,GAAG,KAAKI,GAAG,KAAKoI,IAAG,EAAGC,GAAG,KAAKC,GAAG,EAAEC,GAAG,EAAEC,GAAG,KAAKC,IAAI,EAAEC,GAAG,EAAE,SAASvM,KAAI,OAAO,KAAO,EAAF3F,IAAK/gB,MAAK,IAAIgzB,GAAGA,GAAGA,GAAGhzB,IAAG,CAChU,SAASumB,GAAGr5B,GAAG,OAAG,KAAY,EAAPA,EAAEsvB,MAAe,EAAK,KAAO,EAAFuE,KAAM,IAAIoR,GAASA,IAAGA,GAAK,OAAOnV,GAAG9X,YAAkB,IAAI+tB,KAAKA,GAAG/wB,MAAM+wB,IAAU,KAAP/lC,EAAEqV,IAAkBrV,EAAiBA,OAAE,KAAjBA,EAAEa,OAAOohB,OAAmB,GAAG1J,GAAGvY,EAAEkC,KAAc,CAAC,SAAS81B,GAAGh4B,EAAEC,EAAEC,EAAEsB,GAAG,GAAG,GAAGokC,GAAG,MAAMA,GAAG,EAAEC,GAAG,KAAK5gC,MAAMlF,EAAE,MAAMmV,GAAGlV,EAAEE,EAAEsB,GAAM,KAAO,EAAFqyB,KAAM7zB,IAAI03B,KAAE13B,IAAI03B,KAAI,KAAO,EAAF7D,MAAOsR,IAAIjlC,GAAG,IAAI4hC,IAAGkE,GAAGhmC,EAAEilC,KAAIgB,GAAGjmC,EAAEwB,GAAG,IAAItB,GAAG,IAAI2zB,IAAG,KAAY,EAAP5zB,EAAEqvB,QAAUyS,GAAGjvB,KAAI,IAAIya,IAAIG,MAAK,CAC1Y,SAASuY,GAAGjmC,EAAEC,GAAG,IAAIC,EAAEF,EAAEkmC,cA3MzB,SAAYlmC,EAAEC,GAAG,IAAI,IAAIC,EAAEF,EAAE0U,eAAelT,EAAExB,EAAE2U,YAAYlT,EAAEzB,EAAEmmC,gBAAgBzkC,EAAE1B,EAAEyU,aAAa,EAAE/S,GAAG,CAAC,IAAIC,EAAE,GAAGmS,GAAGpS,GAAGmE,EAAE,GAAGlE,EAAEmE,EAAErE,EAAEE,IAAO,IAAImE,EAAM,KAAKD,EAAE3F,IAAI,KAAK2F,EAAErE,KAAGC,EAAEE,GAAGmT,GAAGjP,EAAE5F,IAAQ6F,GAAG7F,IAAID,EAAEomC,cAAcvgC,GAAGnE,IAAImE,CAAC,CAAC,CA2MnLwgC,CAAGrmC,EAAEC,GAAG,IAAIuB,EAAEgT,GAAGxU,EAAEA,IAAI03B,GAAEuN,GAAE,GAAG,GAAG,IAAIzjC,EAAE,OAAOtB,GAAGsS,GAAGtS,GAAGF,EAAEkmC,aAAa,KAAKlmC,EAAEsmC,iBAAiB,OAAO,GAAGrmC,EAAEuB,GAAGA,EAAExB,EAAEsmC,mBAAmBrmC,EAAE,CAAgB,GAAf,MAAMC,GAAGsS,GAAGtS,GAAM,IAAID,EAAE,IAAID,EAAEmG,IA5IsJ,SAAYnG,GAAGutB,IAAG,EAAGE,GAAGztB,EAAE,CA4I5KumC,CAAGC,GAAG7d,KAAK,KAAK3oB,IAAIytB,GAAG+Y,GAAG7d,KAAK,KAAK3oB,IAAIirB,IAAG,WAAW,KAAO,EAAF4I,KAAMnG,IAAI,IAAGxtB,EAAE,SAAS,CAAC,OAAOoV,GAAG9T,IAAI,KAAK,EAAEtB,EAAEgT,GAAG,MAAM,KAAK,EAAEhT,EAAEkT,GAAG,MAAM,KAAK,GAAwC,QAAQlT,EAAEoT,SAApC,KAAK,UAAUpT,EAAEwT,GAAsBxT,EAAEumC,GAAGvmC,EAAEwmC,GAAG/d,KAAK,KAAK3oB,GAAG,CAACA,EAAEsmC,iBAAiBrmC,EAAED,EAAEkmC,aAAahmC,CAAC,CAAC,CAC7c,SAASwmC,GAAG1mC,EAAEC,GAAc,GAAX6lC,IAAI,EAAEC,GAAG,EAAK,KAAO,EAAFlS,IAAK,MAAM5uB,MAAMlF,EAAE,MAAM,IAAIG,EAAEF,EAAEkmC,aAAa,GAAGS,MAAM3mC,EAAEkmC,eAAehmC,EAAE,OAAO,KAAK,IAAIsB,EAAEgT,GAAGxU,EAAEA,IAAI03B,GAAEuN,GAAE,GAAG,GAAG,IAAIzjC,EAAE,OAAO,KAAK,GAAG,KAAO,GAAFA,IAAO,KAAKA,EAAExB,EAAEomC,eAAenmC,EAAEA,EAAE2mC,GAAG5mC,EAAEwB,OAAO,CAACvB,EAAEuB,EAAE,IAAIC,EAAEoyB,GAAEA,IAAG,EAAE,IAAInyB,EAAEmlC,KAAgD,IAAxCnP,KAAI13B,GAAGilC,KAAIhlC,IAAEulC,GAAG,KAAKzD,GAAGjvB,KAAI,IAAIg0B,GAAG9mC,EAAEC,UAAU8mC,KAAK,KAAK,CAAC,MAAMlhC,GAAGmhC,GAAGhnC,EAAE6F,EAAE,CAAU8rB,KAAKkT,GAAG1yB,QAAQzQ,EAAEmyB,GAAEpyB,EAAE,OAAOujC,GAAE/kC,EAAE,GAAGy3B,GAAE,KAAKuN,GAAE,EAAEhlC,EAAE6hC,GAAE,CAAC,GAAG,IAAI7hC,EAAE,CAAyC,GAAxC,IAAIA,IAAY,KAARwB,EAAEsT,GAAG/U,MAAWwB,EAAEC,EAAExB,EAAEgnC,GAAGjnC,EAAEyB,KAAQ,IAAIxB,EAAE,MAAMC,EAAEglC,GAAG4B,GAAG9mC,EAAE,GAAGgmC,GAAGhmC,EAAEwB,GAAGykC,GAAGjmC,EAAE8S,MAAK5S,EAAE,GAAG,IAAID,EAAE+lC,GAAGhmC,EAAEwB,OAChf,CAAuB,GAAtBC,EAAEzB,EAAEmS,QAAQV,UAAa,KAAO,GAAFjQ,KAGnC,SAAYxB,GAAG,IAAI,IAAIC,EAAED,IAAI,CAAC,GAAW,MAARC,EAAE0R,MAAY,CAAC,IAAIzR,EAAED,EAAE8yB,YAAY,GAAG,OAAO7yB,GAAe,QAAXA,EAAEA,EAAE23B,QAAiB,IAAI,IAAIr2B,EAAE,EAAEA,EAAEtB,EAAEE,OAAOoB,IAAI,CAAC,IAAIC,EAAEvB,EAAEsB,GAAGE,EAAED,EAAE81B,YAAY91B,EAAEA,EAAEkG,MAAM,IAAI,IAAI4b,GAAG7hB,IAAID,GAAG,OAAM,CAAE,CAAC,MAAME,GAAG,OAAM,CAAE,CAAC,CAAC,CAAW,GAAVzB,EAAED,EAAEgS,MAAwB,MAAfhS,EAAEsgC,cAAoB,OAAOrgC,EAAEA,EAAEwR,OAAOzR,EAAEA,EAAEC,MAAM,CAAC,GAAGD,IAAID,EAAE,MAAM,KAAK,OAAOC,EAAEiS,SAAS,CAAC,GAAG,OAAOjS,EAAEyR,QAAQzR,EAAEyR,SAAS1R,EAAE,OAAM,EAAGC,EAAEA,EAAEyR,MAAM,CAACzR,EAAEiS,QAAQR,OAAOzR,EAAEyR,OAAOzR,EAAEA,EAAEiS,OAAO,CAAC,CAAC,OAAM,CAAE,CAHvXg1B,CAAGzlC,KAAe,KAAVxB,EAAE2mC,GAAG5mC,EAAEwB,MAAmB,KAARE,EAAEqT,GAAG/U,MAAWwB,EAAEE,EAAEzB,EAAEgnC,GAAGjnC,EAAE0B,KAAK,IAAIzB,GAAG,MAAMC,EAAEglC,GAAG4B,GAAG9mC,EAAE,GAAGgmC,GAAGhmC,EAAEwB,GAAGykC,GAAGjmC,EAAE8S,MAAK5S,EAAqC,OAAnCF,EAAEmnC,aAAa1lC,EAAEzB,EAAEonC,cAAc5lC,EAASvB,GAAG,KAAK,EAAE,KAAK,EAAE,MAAMgF,MAAMlF,EAAE,MAAM,KAAK,EAC8B,KAAK,EAAEsnC,GAAGrnC,EAAEslC,GAAGE,IAAI,MAD7B,KAAK,EAAU,GAARQ,GAAGhmC,EAAEwB,IAAS,UAAFA,KAAeA,GAAiB,IAAbvB,EAAEgkC,GAAG,IAAInxB,MAAU,CAAC,GAAG,IAAI0B,GAAGxU,EAAE,GAAG,MAAyB,KAAnByB,EAAEzB,EAAE0U,gBAAqBlT,KAAKA,EAAE,CAACg4B,KAAIx5B,EAAE2U,aAAa3U,EAAE0U,eAAejT,EAAE,KAAK,CAACzB,EAAEsnC,cAAc3c,GAAG0c,GAAG1e,KAAK,KAAK3oB,EAAEslC,GAAGE,IAAIvlC,GAAG,KAAK,CAAConC,GAAGrnC,EAAEslC,GAAGE,IAAI,MAAM,KAAK,EAAU,GAARQ,GAAGhmC,EAAEwB,IAAS,QAAFA,KAC9eA,EAAE,MAAqB,IAAfvB,EAAED,EAAEmV,WAAe1T,GAAG,EAAE,EAAED,GAAG,CAAC,IAAIG,EAAE,GAAGmS,GAAGtS,GAAGE,EAAE,GAAGC,GAAEA,EAAE1B,EAAE0B,IAAKF,IAAIA,EAAEE,GAAGH,IAAIE,CAAC,CAAqG,GAApGF,EAAEC,EAAqG,IAA3FD,GAAG,KAAXA,EAAEsR,KAAItR,GAAW,IAAI,IAAIA,EAAE,IAAI,KAAKA,EAAE,KAAK,KAAKA,EAAE,KAAK,IAAIA,EAAE,IAAI,KAAKA,EAAE,KAAK,KAAKmjC,GAAGnjC,EAAE,OAAOA,GAAU,CAACxB,EAAEsnC,cAAc3c,GAAG0c,GAAG1e,KAAK,KAAK3oB,EAAEslC,GAAGE,IAAIhkC,GAAG,KAAK,CAAC6lC,GAAGrnC,EAAEslC,GAAGE,IAAI,MAA+B,QAAQ,MAAMvgC,MAAMlF,EAAE,MAAO,CAAC,CAAW,OAAVkmC,GAAGjmC,EAAE8S,MAAY9S,EAAEkmC,eAAehmC,EAAEwmC,GAAG/d,KAAK,KAAK3oB,GAAG,IAAI,CACrX,SAASinC,GAAGjnC,EAAEC,GAAG,IAAIC,EAAEmlC,GAA2G,OAAxGrlC,EAAEmS,QAAQN,cAAcqF,eAAe4vB,GAAG9mC,EAAEC,GAAG0R,OAAO,KAAe,KAAV3R,EAAE4mC,GAAG5mC,EAAEC,MAAWA,EAAEqlC,GAAGA,GAAGplC,EAAE,OAAOD,GAAGmhC,GAAGnhC,IAAWD,CAAC,CAAC,SAASohC,GAAGphC,GAAG,OAAOslC,GAAGA,GAAGtlC,EAAEslC,GAAGn1B,KAAKY,MAAMu0B,GAAGtlC,EAAE,CAE5L,SAASgmC,GAAGhmC,EAAEC,GAAuD,IAApDA,IAAImlC,GAAGnlC,IAAIklC,GAAGnlC,EAAE0U,gBAAgBzU,EAAED,EAAE2U,cAAc1U,EAAMD,EAAEA,EAAEmmC,gBAAgB,EAAElmC,GAAG,CAAC,IAAIC,EAAE,GAAG4T,GAAG7T,GAAGuB,EAAE,GAAGtB,EAAEF,EAAEE,IAAI,EAAED,IAAIuB,CAAC,CAAC,CAAC,SAASglC,GAAGxmC,GAAG,GAAG,KAAO,EAAF6zB,IAAK,MAAM5uB,MAAMlF,EAAE,MAAM4mC,KAAK,IAAI1mC,EAAEuU,GAAGxU,EAAE,GAAG,GAAG,KAAO,EAAFC,GAAK,OAAOgmC,GAAGjmC,EAAE8S,MAAK,KAAK,IAAI5S,EAAE0mC,GAAG5mC,EAAEC,GAAG,GAAG,IAAID,EAAEmG,KAAK,IAAIjG,EAAE,CAAC,IAAIsB,EAAEuT,GAAG/U,GAAG,IAAIwB,IAAIvB,EAAEuB,EAAEtB,EAAE+mC,GAAGjnC,EAAEwB,GAAG,CAAC,GAAG,IAAItB,EAAE,MAAMA,EAAEglC,GAAG4B,GAAG9mC,EAAE,GAAGgmC,GAAGhmC,EAAEC,GAAGgmC,GAAGjmC,EAAE8S,MAAK5S,EAAE,GAAG,IAAIA,EAAE,MAAM+E,MAAMlF,EAAE,MAAiF,OAA3EC,EAAEmnC,aAAannC,EAAEmS,QAAQV,UAAUzR,EAAEonC,cAAcnnC,EAAEonC,GAAGrnC,EAAEslC,GAAGE,IAAIS,GAAGjmC,EAAE8S,MAAY,IAAI,CACvd,SAASy0B,GAAGvnC,EAAEC,GAAG,IAAIC,EAAE2zB,GAAEA,IAAG,EAAE,IAAI,OAAO7zB,EAAEC,EAAE,CAAC,QAAY,KAAJ4zB,GAAE3zB,KAAU6hC,GAAGjvB,KAAI,IAAIya,IAAIG,KAAK,CAAC,CAAC,SAAS8Z,GAAGxnC,GAAG,OAAO0lC,IAAI,IAAIA,GAAGv/B,KAAK,KAAO,EAAF0tB,KAAM8S,KAAK,IAAI1mC,EAAE4zB,GAAEA,IAAG,EAAE,IAAI3zB,EAAE6kC,GAAG/sB,WAAWxW,EAAE6T,GAAE,IAAI,GAAG0vB,GAAG/sB,WAAW,KAAK3C,GAAE,EAAErV,EAAE,OAAOA,GAAG,CAAC,QAAQqV,GAAE7T,EAAEujC,GAAG/sB,WAAW9X,EAAM,KAAO,GAAX2zB,GAAE5zB,KAAaytB,IAAI,CAAC,CAAC,SAASsU,KAAKrD,GAAGD,GAAGvsB,QAAQga,GAAEuS,GAAG,CAChT,SAASoI,GAAG9mC,EAAEC,GAAGD,EAAEmnC,aAAa,KAAKnnC,EAAEonC,cAAc,EAAE,IAAIlnC,EAAEF,EAAEsnC,cAAiD,IAAlC,IAAIpnC,IAAIF,EAAEsnC,eAAe,EAAEzc,GAAG3qB,IAAO,OAAO8kC,GAAE,IAAI9kC,EAAE8kC,GAAEtzB,OAAO,OAAOxR,GAAG,CAAC,IAAIsB,EAAEtB,EAAQ,OAANquB,GAAG/sB,GAAUA,EAAE2E,KAAK,KAAK,EAA6B,QAA3B3E,EAAEA,EAAEU,KAAK4qB,yBAA4B,IAAStrB,GAAGurB,KAAK,MAAM,KAAK,EAAE2H,KAAKvI,GAAEI,IAAIJ,GAAEG,IAAG2I,KAAK,MAAM,KAAK,EAAEL,GAAGpzB,GAAG,MAAM,KAAK,EAAEkzB,KAAK,MAAM,KAAK,GAAc,KAAK,GAAGvI,GAAE0I,IAAG,MAAM,KAAK,GAAGjD,GAAGpwB,EAAEU,KAAKqE,UAAU,MAAM,KAAK,GAAG,KAAK,GAAGy7B,KAAK9hC,EAAEA,EAAEwR,MAAM,CAAqE,GAApEgmB,GAAE13B,EAAEglC,GAAEhlC,EAAEywB,GAAGzwB,EAAEmS,QAAQ,MAAM8yB,GAAEtG,GAAG1+B,EAAE6hC,GAAE,EAAEoD,GAAG,KAAKE,GAAGD,GAAGlR,GAAG,EAAEqR,GAAGD,GAAG,KAAQ,OAAO7S,GAAG,CAAC,IAAIvyB,EAC1f,EAAEA,EAAEuyB,GAAGpyB,OAAOH,IAAI,GAA2B,QAAhBuB,GAARtB,EAAEsyB,GAAGvyB,IAAO0yB,aAAqB,CAACzyB,EAAEyyB,YAAY,KAAK,IAAIlxB,EAAED,EAAE2vB,KAAKzvB,EAAExB,EAAEkzB,QAAQ,GAAG,OAAO1xB,EAAE,CAAC,IAAIC,EAAED,EAAEyvB,KAAKzvB,EAAEyvB,KAAK1vB,EAAED,EAAE2vB,KAAKxvB,CAAC,CAACzB,EAAEkzB,QAAQ5xB,CAAC,CAACgxB,GAAG,IAAI,CAAC,OAAOxyB,CAAC,CAC3K,SAASgnC,GAAGhnC,EAAEC,GAAG,OAAE,CAAC,IAAIC,EAAE8kC,GAAE,IAAuB,GAAnBrT,KAAKwD,GAAGhjB,QAAQikB,GAAMV,GAAG,CAAC,IAAI,IAAIl0B,EAAE+zB,GAAE1jB,cAAc,OAAOrQ,GAAG,CAAC,IAAIC,EAAED,EAAEg1B,MAAM,OAAO/0B,IAAIA,EAAE2xB,QAAQ,MAAM5xB,EAAEA,EAAE2vB,IAAI,CAACuE,IAAG,CAAE,CAA4C,GAA3CJ,GAAG,EAAEG,GAAED,GAAED,GAAE,KAAKI,IAAG,EAAGC,GAAG,EAAEkP,GAAG3yB,QAAQ,KAAQ,OAAOjS,GAAG,OAAOA,EAAEwR,OAAO,CAACowB,GAAE,EAAEoD,GAAGjlC,EAAE+kC,GAAE,KAAK,KAAK,CAAChlC,EAAE,CAAC,IAAI0B,EAAE1B,EAAE2B,EAAEzB,EAAEwR,OAAO7L,EAAE3F,EAAE4F,EAAE7F,EAAqB,GAAnBA,EAAEglC,GAAEp/B,EAAE8L,OAAO,MAAS,OAAO7L,GAAG,kBAAkBA,GAAG,oBAAoBA,EAAEslB,KAAK,CAAC,IAAIxlB,EAAEE,EAAEkL,EAAEnL,EAAEmrB,EAAEhgB,EAAE7K,IAAI,GAAG,KAAY,EAAP6K,EAAEse,QAAU,IAAI0B,GAAG,KAAKA,GAAG,KAAKA,GAAG,CAAC,IAAIC,EAAEjgB,EAAES,UAAUwf,GAAGjgB,EAAE+hB,YAAY9B,EAAE8B,YAAY/hB,EAAEa,cAAcof,EAAEpf,cACxeb,EAAEmhB,MAAMlB,EAAEkB,QAAQnhB,EAAE+hB,YAAY,KAAK/hB,EAAEa,cAAc,KAAK,CAAC,IAAIqf,EAAEwM,GAAG/7B,GAAG,GAAG,OAAOuvB,EAAE,CAACA,EAAEvf,QAAQ,IAAIgsB,GAAGzM,EAAEvvB,EAAEkE,EAAEnE,EAAEzB,GAAU,EAAPixB,EAAE5B,MAAQiO,GAAG77B,EAAEkE,EAAE3F,GAAO6F,EAAEF,EAAE,IAAIkjB,GAAZ7oB,EAAEixB,GAAc6B,YAAY,GAAG,OAAOjK,EAAE,CAAC,IAAIC,EAAE,IAAIxoB,IAAIwoB,EAAEpoB,IAAImF,GAAG7F,EAAE8yB,YAAYhK,CAAC,MAAMD,EAAEnoB,IAAImF,GAAG,MAAM9F,CAAC,CAAM,GAAG,KAAO,EAAFC,GAAK,CAACs9B,GAAG77B,EAAEkE,EAAE3F,GAAGkgC,KAAK,MAAMngC,CAAC,CAAC8F,EAAEb,MAAMlF,EAAE,KAAM,MAAM,GAAG2uB,IAAU,EAAP7oB,EAAEypB,KAAO,CAAC,IAAItG,EAAE0U,GAAG/7B,GAAG,GAAG,OAAOqnB,EAAE,CAAC,KAAa,MAARA,EAAErX,SAAeqX,EAAErX,OAAO,KAAKgsB,GAAG3U,EAAErnB,EAAEkE,EAAEnE,EAAEzB,GAAG4vB,GAAGyM,GAAGx2B,EAAED,IAAI,MAAM7F,CAAC,CAAC,CAAC0B,EAAEoE,EAAEw2B,GAAGx2B,EAAED,GAAG,IAAIi8B,KAAIA,GAAE,GAAG,OAAOuD,GAAGA,GAAG,CAAC3jC,GAAG2jC,GAAGl1B,KAAKzO,GAAGA,EAAEC,EAAE,EAAE,CAAC,OAAOD,EAAEyE,KAAK,KAAK,EAAEzE,EAAEiQ,OAAO,MACpf1R,IAAIA,EAAEyB,EAAEywB,OAAOlyB,EAAkB8zB,GAAGryB,EAAbq7B,GAAGr7B,EAAEoE,EAAE7F,IAAW,MAAMD,EAAE,KAAK,EAAE6F,EAAEC,EAAE,IAAIqjB,EAAEznB,EAAEQ,KAAKgnB,EAAExnB,EAAEsO,UAAU,GAAG,KAAa,IAARtO,EAAEiQ,SAAa,oBAAoBwX,EAAEgU,0BAA0B,OAAOjU,GAAG,oBAAoBA,EAAEkU,oBAAoB,OAAOC,KAAKA,GAAGhV,IAAIa,KAAK,CAACxnB,EAAEiQ,OAAO,MAAM1R,IAAIA,EAAEyB,EAAEywB,OAAOlyB,EAAkB8zB,GAAGryB,EAAbw7B,GAAGx7B,EAAEmE,EAAE5F,IAAW,MAAMD,CAAC,EAAE0B,EAAEA,EAAEgQ,MAAM,OAAO,OAAOhQ,EAAE,CAAC+lC,GAAGvnC,EAAE,CAAC,MAAMwpB,GAAIzpB,EAAEypB,EAAGsb,KAAI9kC,GAAG,OAAOA,IAAI8kC,GAAE9kC,EAAEA,EAAEwR,QAAQ,QAAQ,CAAC,KAAK,CAAS,CAAC,SAASm1B,KAAK,IAAI7mC,EAAE6kC,GAAG1yB,QAAsB,OAAd0yB,GAAG1yB,QAAQikB,GAAU,OAAOp2B,EAAEo2B,GAAGp2B,CAAC,CACrd,SAASmgC,KAAQ,IAAI2B,IAAG,IAAIA,IAAG,IAAIA,KAAEA,GAAE,GAAE,OAAOpK,IAAG,KAAQ,UAAHzD,KAAe,KAAQ,UAAHkR,KAAea,GAAGtO,GAAEuN,GAAE,CAAC,SAAS2B,GAAG5mC,EAAEC,GAAG,IAAIC,EAAE2zB,GAAEA,IAAG,EAAE,IAAIryB,EAAEqlC,KAAqC,IAA7BnP,KAAI13B,GAAGilC,KAAIhlC,IAAEulC,GAAG,KAAKsB,GAAG9mC,EAAEC,UAAUynC,KAAK,KAAK,CAAC,MAAMjmC,GAAGulC,GAAGhnC,EAAEyB,EAAE,CAAgC,GAAtBkwB,KAAKkC,GAAE3zB,EAAE2kC,GAAG1yB,QAAQ3Q,EAAK,OAAOwjC,GAAE,MAAM//B,MAAMlF,EAAE,MAAiB,OAAX23B,GAAE,KAAKuN,GAAE,EAASnD,EAAC,CAAC,SAAS4F,KAAK,KAAK,OAAO1C,IAAG2C,GAAG3C,GAAE,CAAC,SAAS+B,KAAK,KAAK,OAAO/B,KAAItyB,MAAMi1B,GAAG3C,GAAE,CAAC,SAAS2C,GAAG3nC,GAAG,IAAIC,EAAEykC,GAAG1kC,EAAEyR,UAAUzR,EAAE2+B,IAAI3+B,EAAE0vB,cAAc1vB,EAAEivB,aAAa,OAAOhvB,EAAEwnC,GAAGznC,GAAGglC,GAAE/kC,EAAE6kC,GAAG3yB,QAAQ,IAAI,CAC1d,SAASs1B,GAAGznC,GAAG,IAAIC,EAAED,EAAE,EAAE,CAAC,IAAIE,EAAED,EAAEwR,UAAqB,GAAXzR,EAAEC,EAAEyR,OAAU,KAAa,MAARzR,EAAE0R,QAAc,GAAgB,QAAbzR,EAAEihC,GAAGjhC,EAAED,EAAE0+B,KAAkB,YAAJqG,GAAE9kC,OAAc,CAAW,GAAG,QAAbA,EAAE+hC,GAAG/hC,EAAED,IAAmC,OAAnBC,EAAEyR,OAAO,WAAMqzB,GAAE9kC,GAAS,GAAG,OAAOF,EAAmE,OAAX8hC,GAAE,OAAEkD,GAAE,MAA5DhlC,EAAE2R,OAAO,MAAM3R,EAAEugC,aAAa,EAAEvgC,EAAE+uB,UAAU,IAA4B,CAAa,GAAG,QAAf9uB,EAAEA,EAAEiS,SAAyB,YAAJ8yB,GAAE/kC,GAAS+kC,GAAE/kC,EAAED,CAAC,OAAO,OAAOC,GAAG,IAAI6hC,KAAIA,GAAE,EAAE,CAAC,SAASuF,GAAGrnC,EAAEC,EAAEC,GAAG,IAAIsB,EAAE6T,GAAE5T,EAAEsjC,GAAG/sB,WAAW,IAAI+sB,GAAG/sB,WAAW,KAAK3C,GAAE,EAC3Y,SAAYrV,EAAEC,EAAEC,EAAEsB,GAAG,GAAGmlC,WAAW,OAAOjB,IAAI,GAAG,KAAO,EAAF7R,IAAK,MAAM5uB,MAAMlF,EAAE,MAAMG,EAAEF,EAAEmnC,aAAa,IAAI1lC,EAAEzB,EAAEonC,cAAc,GAAG,OAAOlnC,EAAE,OAAO,KAA2C,GAAtCF,EAAEmnC,aAAa,KAAKnnC,EAAEonC,cAAc,EAAKlnC,IAAIF,EAAEmS,QAAQ,MAAMlN,MAAMlF,EAAE,MAAMC,EAAEkmC,aAAa,KAAKlmC,EAAEsmC,iBAAiB,EAAE,IAAI5kC,EAAExB,EAAEiyB,MAAMjyB,EAAE6xB,WAA8J,GAzNtT,SAAY/xB,EAAEC,GAAG,IAAIC,EAAEF,EAAEyU,cAAcxU,EAAED,EAAEyU,aAAaxU,EAAED,EAAE0U,eAAe,EAAE1U,EAAE2U,YAAY,EAAE3U,EAAEomC,cAAcnmC,EAAED,EAAE4nC,kBAAkB3nC,EAAED,EAAE4U,gBAAgB3U,EAAEA,EAAED,EAAE6U,cAAc,IAAIrT,EAAExB,EAAEmV,WAAW,IAAInV,EAAEA,EAAEmmC,gBAAgB,EAAEjmC,GAAG,CAAC,IAAIuB,EAAE,GAAGqS,GAAG5T,GAAGwB,EAAE,GAAGD,EAAExB,EAAEwB,GAAG,EAAED,EAAEC,IAAI,EAAEzB,EAAEyB,IAAI,EAAEvB,IAAIwB,CAAC,CAAC,CAyN5GmmC,CAAG7nC,EAAE0B,GAAG1B,IAAI03B,KAAIsN,GAAEtN,GAAE,KAAKuN,GAAE,GAAG,KAAoB,KAAf/kC,EAAEqgC,eAAoB,KAAa,KAARrgC,EAAEyR,QAAa8zB,KAAKA,IAAG,EAAGgB,GAAGnzB,IAAG,WAAgB,OAALqzB,KAAY,IAAI,KAAIjlC,EAAE,KAAa,MAARxB,EAAEyR,OAAgB,KAAoB,MAAfzR,EAAEqgC,eAAqB7+B,EAAE,CAACA,EAAEqjC,GAAG/sB,WAAW+sB,GAAG/sB,WAAW,KAChf,IAAIrW,EAAE0T,GAAEA,GAAE,EAAE,IAAIxP,EAAEguB,GAAEA,IAAG,EAAEiR,GAAG3yB,QAAQ,KA1CpC,SAAYnS,EAAEC,GAAgB,GAAbsqB,GAAGzS,GAAauM,GAAVrkB,EAAEikB,MAAc,CAAC,GAAG,mBAAmBjkB,EAAE,IAAIE,EAAE,CAACykB,MAAM3kB,EAAE6kB,eAAeD,IAAI5kB,EAAE8kB,mBAAmB9kB,EAAE,CAA8C,IAAIwB,GAAjDtB,GAAGA,EAAEF,EAAE2I,gBAAgBzI,EAAE8kB,aAAankB,QAAeokB,cAAc/kB,EAAE+kB,eAAe,GAAGzjB,GAAG,IAAIA,EAAE2jB,WAAW,CAACjlB,EAAEsB,EAAE4jB,WAAW,IAAI3jB,EAAED,EAAE6jB,aAAa3jB,EAAEF,EAAE8jB,UAAU9jB,EAAEA,EAAE+jB,YAAY,IAAIrlB,EAAEwK,SAAShJ,EAAEgJ,QAAQ,CAAC,MAAM0e,GAAGlpB,EAAE,KAAK,MAAMF,CAAC,CAAC,IAAI2B,EAAE,EAAEkE,GAAG,EAAEC,GAAG,EAAEF,EAAE,EAAEoL,EAAE,EAAEggB,EAAEhxB,EAAEixB,EAAE,KAAKhxB,EAAE,OAAO,CAAC,IAAI,IAAIixB,EAAKF,IAAI9wB,GAAG,IAAIuB,GAAG,IAAIuvB,EAAEtmB,WAAW7E,EAAElE,EAAEF,GAAGuvB,IAAItvB,GAAG,IAAIF,GAAG,IAAIwvB,EAAEtmB,WAAW5E,EAAEnE,EAAEH,GAAG,IAAIwvB,EAAEtmB,WAAW/I,GACnfqvB,EAAErmB,UAAUvK,QAAW,QAAQ8wB,EAAEF,EAAE7mB,aAAkB8mB,EAAED,EAAEA,EAAEE,EAAE,OAAO,CAAC,GAAGF,IAAIhxB,EAAE,MAAMC,EAA8C,GAA5CgxB,IAAI/wB,KAAK0F,IAAInE,IAAIoE,EAAElE,GAAGsvB,IAAIvvB,KAAKsP,IAAIxP,IAAIsE,EAAEnE,GAAM,QAAQuvB,EAAEF,EAAEnN,aAAa,MAAUoN,GAAJD,EAAEC,GAAMvhB,UAAU,CAACshB,EAAEE,CAAC,CAAChxB,GAAG,IAAI2F,IAAI,IAAIC,EAAE,KAAK,CAAC6e,MAAM9e,EAAE+e,IAAI9e,EAAE,MAAM5F,EAAE,IAAI,CAACA,EAAEA,GAAG,CAACykB,MAAM,EAAEC,IAAI,EAAE,MAAM1kB,EAAE,KAA+C,IAA1CsqB,GAAG,CAAChG,YAAYxkB,EAAEykB,eAAevkB,GAAG4X,IAAG,EAAOwqB,GAAEriC,EAAE,OAAOqiC,IAAG,GAAOtiC,GAAJC,EAAEqiC,IAAMrwB,MAAM,KAAoB,KAAfhS,EAAEsgC,eAAoB,OAAOvgC,EAAEA,EAAE0R,OAAOzR,EAAEqiC,GAAEtiC,OAAO,KAAK,OAAOsiC,IAAG,CAACriC,EAAEqiC,GAAE,IAAI,IAAIxZ,EAAE7oB,EAAEwR,UAAU,GAAG,KAAa,KAARxR,EAAE0R,OAAY,OAAO1R,EAAEkG,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GACvK,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,MAA3W,KAAK,EAAE,GAAG,OAAO2iB,EAAE,CAAC,IAAIC,EAAED,EAAE4G,cAAc1G,EAAEF,EAAEjX,cAAcoX,EAAEhpB,EAAE+P,UAAUmZ,EAAEF,EAAEiT,wBAAwBj8B,EAAE6uB,cAAc7uB,EAAEiC,KAAK6mB,EAAE8R,GAAG56B,EAAEiC,KAAK6mB,GAAGC,GAAGC,EAAEub,oCAAoCrb,CAAC,CAAC,MAAM,KAAK,EAAE,IAAID,EAAEjpB,EAAE+P,UAAUmH,cAAc,IAAI+R,EAAExe,SAASwe,EAAExf,YAAY,GAAG,IAAIwf,EAAExe,UAAUwe,EAAExE,iBAAiBwE,EAAE9e,YAAY8e,EAAExE,iBAAiB,MAAyC,QAAQ,MAAMzf,MAAMlF,EAAE,MAAO,CAAC,MAAMqpB,GAAGoZ,GAAEviC,EAAEA,EAAEyR,OAAO0X,EAAE,CAAa,GAAG,QAAfppB,EAAEC,EAAEiS,SAAoB,CAAClS,EAAE0R,OAAOzR,EAAEyR,OAAO4wB,GAAEtiC,EAAE,KAAK,CAACsiC,GAAEriC,EAAEyR,MAAM,CAACoX,EAAE4Z,GAAGA,IAAG,CAAW,CAwCldoF,CAAG9nC,EAAEE,GAAG4jC,GAAG5jC,EAAEF,GAAGukB,GAAGiG,IAAI1S,KAAKyS,GAAGC,GAAGD,GAAG,KAAKvqB,EAAEmS,QAAQjS,EAAEkkC,GAAGlkC,EAAEF,EAAEyB,GAAGmR,KAAKihB,GAAEhuB,EAAEwP,GAAE1T,EAAEojC,GAAG/sB,WAAWtW,CAAC,MAAM1B,EAAEmS,QAAQjS,EAAsF,GAApFulC,KAAKA,IAAG,EAAGC,GAAG1lC,EAAE2lC,GAAGlkC,GAAGC,EAAE1B,EAAEyU,aAAa,IAAI/S,IAAI27B,GAAG,MAhOmJ,SAAYr9B,GAAG,GAAG6T,IAAI,oBAAoBA,GAAGk0B,kBAAkB,IAAIl0B,GAAGk0B,kBAAkBn0B,GAAG5T,OAAE,EAAO,OAAuB,IAAhBA,EAAEmS,QAAQR,OAAW,CAAC,MAAM1R,GAAG,CAAC,CAgOxR+nC,CAAG9nC,EAAE8P,WAAai2B,GAAGjmC,EAAE8S,MAAQ,OAAO7S,EAAE,IAAIuB,EAAExB,EAAEioC,mBAAmB/nC,EAAE,EAAEA,EAAED,EAAEG,OAAOF,IAAIuB,EAAExB,EAAEC,GAAGsB,EAAEC,EAAEkG,MAAM,CAAC21B,eAAe77B,EAAEyD,MAAMs3B,OAAO/6B,EAAE+6B,SAAS,GAAGQ,GAAG,MAAMA,IAAG,EAAGh9B,EAAEi9B,GAAGA,GAAG,KAAKj9B,EAAE,KAAQ,EAAH2lC,KAAO,IAAI3lC,EAAEmG,KAAKwgC,KAAKjlC,EAAE1B,EAAEyU,aAAa,KAAO,EAAF/S,GAAK1B,IAAI6lC,GAAGD,MAAMA,GAAG,EAAEC,GAAG7lC,GAAG4lC,GAAG,EAAElY,IAAgB,CAFxFwa,CAAGloC,EAAEC,EAAEC,EAAEsB,EAAE,CAAC,QAAQujC,GAAG/sB,WAAWvW,EAAE4T,GAAE7T,CAAC,CAAC,OAAO,IAAI,CAGhc,SAASmlC,KAAK,GAAG,OAAOjB,GAAG,CAAC,IAAI1lC,EAAEsV,GAAGqwB,IAAI1lC,EAAE8kC,GAAG/sB,WAAW9X,EAAEmV,GAAE,IAAmC,GAA/B0vB,GAAG/sB,WAAW,KAAK3C,GAAE,GAAGrV,EAAE,GAAGA,EAAK,OAAO0lC,GAAG,IAAIlkC,GAAE,MAAO,CAAmB,GAAlBxB,EAAE0lC,GAAGA,GAAG,KAAKC,GAAG,EAAK,KAAO,EAAF9R,IAAK,MAAM5uB,MAAMlF,EAAE,MAAM,IAAI0B,EAAEoyB,GAAO,IAALA,IAAG,EAAMyO,GAAEtiC,EAAEmS,QAAQ,OAAOmwB,IAAG,CAAC,IAAI5gC,EAAE4gC,GAAE3gC,EAAED,EAAEuQ,MAAM,GAAG,KAAa,GAARqwB,GAAE3wB,OAAU,CAAC,IAAI9L,EAAEnE,EAAEqtB,UAAU,GAAG,OAAOlpB,EAAE,CAAC,IAAI,IAAIC,EAAE,EAAEA,EAAED,EAAEzF,OAAO0F,IAAI,CAAC,IAAIF,EAAEC,EAAEC,GAAG,IAAIw8B,GAAE18B,EAAE,OAAO08B,IAAG,CAAC,IAAItxB,EAAEsxB,GAAE,OAAOtxB,EAAE7K,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAGw8B,GAAG,EAAE3xB,EAAEtP,GAAG,IAAIsvB,EAAEhgB,EAAEiB,MAAM,GAAG,OAAO+e,EAAEA,EAAEtf,OAAOV,EAAEsxB,GAAEtR,OAAO,KAAK,OAAOsR,IAAG,CAAK,IAAIrR,GAARjgB,EAAEsxB,IAAUpwB,QAAQgf,EAAElgB,EAAEU,OAAa,GAANoxB,GAAG9xB,GAAMA,IACnfpL,EAAE,CAAC08B,GAAE,KAAK,KAAK,CAAC,GAAG,OAAOrR,EAAE,CAACA,EAAEvf,OAAOwf,EAAEoR,GAAErR,EAAE,KAAK,CAACqR,GAAEpR,CAAC,CAAC,CAAC,CAAC,IAAIpI,EAAEpnB,EAAE+P,UAAU,GAAG,OAAOqX,EAAE,CAAC,IAAIC,EAAED,EAAE7W,MAAM,GAAG,OAAO8W,EAAE,CAACD,EAAE7W,MAAM,KAAK,EAAE,CAAC,IAAI+W,EAAED,EAAE7W,QAAQ6W,EAAE7W,QAAQ,KAAK6W,EAAEC,CAAC,OAAO,OAAOD,EAAE,CAAC,CAACuZ,GAAE5gC,CAAC,CAAC,CAAC,GAAG,KAAoB,KAAfA,EAAE6+B,eAAoB,OAAO5+B,EAAEA,EAAE+P,OAAOhQ,EAAE4gC,GAAE3gC,OAAO1B,EAAE,KAAK,OAAOqiC,IAAG,CAAK,GAAG,KAAa,MAApB5gC,EAAE4gC,IAAY3wB,OAAY,OAAOjQ,EAAEyE,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAGw8B,GAAG,EAAEjhC,EAAEA,EAAEgQ,QAAQ,IAAIuX,EAAEvnB,EAAEwQ,QAAQ,GAAG,OAAO+W,EAAE,CAACA,EAAEvX,OAAOhQ,EAAEgQ,OAAO4wB,GAAErZ,EAAE,MAAMhpB,CAAC,CAACqiC,GAAE5gC,EAAEgQ,MAAM,CAAC,CAAC,IAAIyX,EAAEnpB,EAAEmS,QAAQ,IAAImwB,GAAEnZ,EAAE,OAAOmZ,IAAG,CAAK,IAAIpZ,GAARvnB,EAAE2gC,IAAUrwB,MAAM,GAAG,KAAoB,KAAftQ,EAAE4+B,eAAoB,OAClfrX,EAAEA,EAAExX,OAAO/P,EAAE2gC,GAAEpZ,OAAOjpB,EAAE,IAAI0B,EAAEwnB,EAAE,OAAOmZ,IAAG,CAAK,GAAG,KAAa,MAApBz8B,EAAEy8B,IAAY3wB,OAAY,IAAI,OAAO9L,EAAEM,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAGy8B,GAAG,EAAE/8B,GAAG,CAAC,MAAM6jB,GAAI8Y,GAAE38B,EAAEA,EAAE6L,OAAOgY,EAAG,CAAC,GAAG7jB,IAAIlE,EAAE,CAAC2gC,GAAE,KAAK,MAAMriC,CAAC,CAAC,IAAImpB,EAAEvjB,EAAEqM,QAAQ,GAAG,OAAOkX,EAAE,CAACA,EAAE1X,OAAO7L,EAAE6L,OAAO4wB,GAAElZ,EAAE,MAAMnpB,CAAC,CAACqiC,GAAEz8B,EAAE6L,MAAM,CAAC,CAAU,GAATmiB,GAAEpyB,EAAEisB,KAAQ7Z,IAAI,oBAAoBA,GAAGs0B,sBAAsB,IAAIt0B,GAAGs0B,sBAAsBv0B,GAAG5T,EAAE,CAAC,MAAM0pB,GAAI,CAACloB,GAAE,CAAE,CAAC,OAAOA,CAAC,CAAC,QAAQ6T,GAAEnV,EAAE6kC,GAAG/sB,WAAW/X,CAAC,CAAC,CAAC,OAAM,CAAE,CAAC,SAASmoC,GAAGpoC,EAAEC,EAAEC,GAAyBF,EAAE4zB,GAAG5zB,EAAjBC,EAAE88B,GAAG/8B,EAAfC,EAAEq8B,GAAGp8B,EAAED,GAAY,GAAY,GAAGA,EAAEu5B,KAAI,OAAOx5B,IAAIkV,GAAGlV,EAAE,EAAEC,GAAGgmC,GAAGjmC,EAAEC,GAAG,CACze,SAASuiC,GAAExiC,EAAEC,EAAEC,GAAG,GAAG,IAAIF,EAAEmG,IAAIiiC,GAAGpoC,EAAEA,EAAEE,QAAQ,KAAK,OAAOD,GAAG,CAAC,GAAG,IAAIA,EAAEkG,IAAI,CAACiiC,GAAGnoC,EAAED,EAAEE,GAAG,KAAK,CAAM,GAAG,IAAID,EAAEkG,IAAI,CAAC,IAAI3E,EAAEvB,EAAE+P,UAAU,GAAG,oBAAoB/P,EAAEiC,KAAKi7B,0BAA0B,oBAAoB37B,EAAE47B,oBAAoB,OAAOC,KAAKA,GAAGhV,IAAI7mB,IAAI,CAAuBvB,EAAE2zB,GAAG3zB,EAAjBD,EAAEk9B,GAAGj9B,EAAfD,EAAEs8B,GAAGp8B,EAAEF,GAAY,GAAY,GAAGA,EAAEw5B,KAAI,OAAOv5B,IAAIiV,GAAGjV,EAAE,EAAED,GAAGimC,GAAGhmC,EAAED,IAAI,KAAK,CAAC,CAACC,EAAEA,EAAEyR,MAAM,CAAC,CACnV,SAAS+rB,GAAGz9B,EAAEC,EAAEC,GAAG,IAAIsB,EAAExB,EAAEw9B,UAAU,OAAOh8B,GAAGA,EAAE+U,OAAOtW,GAAGA,EAAEu5B,KAAIx5B,EAAE2U,aAAa3U,EAAE0U,eAAexU,EAAEw3B,KAAI13B,IAAIilC,GAAE/kC,KAAKA,IAAI,IAAI4hC,IAAG,IAAIA,KAAM,UAAFmD,MAAeA,IAAG,IAAInyB,KAAImxB,GAAG6C,GAAG9mC,EAAE,GAAGolC,IAAIllC,GAAG+lC,GAAGjmC,EAAEC,EAAE,CAAC,SAASooC,GAAGroC,EAAEC,GAAG,IAAIA,IAAI,KAAY,EAAPD,EAAEsvB,MAAQrvB,EAAE,GAAGA,EAAEqU,GAAU,KAAQ,WAAfA,KAAK,MAAuBA,GAAG,WAAW,IAAIpU,EAAEs5B,KAAc,QAAVx5B,EAAE4yB,GAAG5yB,EAAEC,MAAciV,GAAGlV,EAAEC,EAAEC,GAAG+lC,GAAGjmC,EAAEE,GAAG,CAAC,SAASkgC,GAAGpgC,GAAG,IAAIC,EAAED,EAAE6R,cAAc3R,EAAE,EAAE,OAAOD,IAAIC,EAAED,EAAEmvB,WAAWiZ,GAAGroC,EAAEE,EAAE,CACjZ,SAAS0jC,GAAG5jC,EAAEC,GAAG,IAAIC,EAAE,EAAE,OAAOF,EAAEmG,KAAK,KAAK,GAAG,IAAI3E,EAAExB,EAAEgQ,UAAcvO,EAAEzB,EAAE6R,cAAc,OAAOpQ,IAAIvB,EAAEuB,EAAE2tB,WAAW,MAAM,KAAK,GAAG5tB,EAAExB,EAAEgQ,UAAU,MAAM,QAAQ,MAAM/K,MAAMlF,EAAE,MAAO,OAAOyB,GAAGA,EAAE+U,OAAOtW,GAAGooC,GAAGroC,EAAEE,EAAE,CAQqK,SAASumC,GAAGzmC,EAAEC,GAAG,OAAOqS,GAAGtS,EAAEC,EAAE,CACjZ,SAASqoC,GAAGtoC,EAAEC,EAAEC,EAAEsB,GAAGI,KAAKuE,IAAInG,EAAE4B,KAAKuc,IAAIje,EAAE0B,KAAKsQ,QAAQtQ,KAAKqQ,MAAMrQ,KAAK8P,OAAO9P,KAAKoO,UAAUpO,KAAKM,KAAKN,KAAKktB,YAAY,KAAKltB,KAAK4uB,MAAM,EAAE5uB,KAAKouB,IAAI,KAAKpuB,KAAKqtB,aAAahvB,EAAE2B,KAAKqwB,aAAarwB,KAAKiQ,cAAcjQ,KAAKmxB,YAAYnxB,KAAK8tB,cAAc,KAAK9tB,KAAK0tB,KAAK9tB,EAAEI,KAAK2+B,aAAa3+B,KAAK+P,MAAM,EAAE/P,KAAKmtB,UAAU,KAAKntB,KAAKmwB,WAAWnwB,KAAKuwB,MAAM,EAAEvwB,KAAK6P,UAAU,IAAI,CAAC,SAASod,GAAG7uB,EAAEC,EAAEC,EAAEsB,GAAG,OAAO,IAAI8mC,GAAGtoC,EAAEC,EAAEC,EAAEsB,EAAE,CAAC,SAAS08B,GAAGl+B,GAAiB,UAAdA,EAAEA,EAAEkB,aAAuBlB,EAAEuoC,iBAAiB,CAEpd,SAAS9X,GAAGzwB,EAAEC,GAAG,IAAIC,EAAEF,EAAEyR,UACuB,OADb,OAAOvR,IAAGA,EAAE2uB,GAAG7uB,EAAEmG,IAAIlG,EAAED,EAAEme,IAAIne,EAAEsvB,OAAQR,YAAY9uB,EAAE8uB,YAAY5uB,EAAEgC,KAAKlC,EAAEkC,KAAKhC,EAAE8P,UAAUhQ,EAAEgQ,UAAU9P,EAAEuR,UAAUzR,EAAEA,EAAEyR,UAAUvR,IAAIA,EAAE+uB,aAAahvB,EAAEC,EAAEgC,KAAKlC,EAAEkC,KAAKhC,EAAEyR,MAAM,EAAEzR,EAAEqgC,aAAa,EAAErgC,EAAE6uB,UAAU,MAAM7uB,EAAEyR,MAAc,SAAR3R,EAAE2R,MAAezR,EAAE6xB,WAAW/xB,EAAE+xB,WAAW7xB,EAAEiyB,MAAMnyB,EAAEmyB,MAAMjyB,EAAE+R,MAAMjS,EAAEiS,MAAM/R,EAAEwvB,cAAc1vB,EAAE0vB,cAAcxvB,EAAE2R,cAAc7R,EAAE6R,cAAc3R,EAAE6yB,YAAY/yB,EAAE+yB,YAAY9yB,EAAED,EAAEiyB,aAAa/xB,EAAE+xB,aAAa,OAAOhyB,EAAE,KAAK,CAACkyB,MAAMlyB,EAAEkyB,MAAMD,aAAajyB,EAAEiyB,cAC/ehyB,EAAEgS,QAAQlS,EAAEkS,QAAQhS,EAAEswB,MAAMxwB,EAAEwwB,MAAMtwB,EAAE8vB,IAAIhwB,EAAEgwB,IAAW9vB,CAAC,CACxD,SAAS0wB,GAAG5wB,EAAEC,EAAEC,EAAEsB,EAAEC,EAAEC,GAAG,IAAIC,EAAE,EAAM,GAAJH,EAAExB,EAAK,oBAAoBA,EAAEk+B,GAAGl+B,KAAK2B,EAAE,QAAQ,GAAG,kBAAkB3B,EAAE2B,EAAE,OAAO3B,EAAE,OAAOA,GAAG,KAAK+D,EAAG,OAAOgtB,GAAG7wB,EAAEoJ,SAAS7H,EAAEC,EAAEzB,GAAG,KAAK+D,EAAGrC,EAAE,EAAEF,GAAG,EAAE,MAAM,KAAKwC,EAAG,OAAOjE,EAAE6uB,GAAG,GAAG3uB,EAAED,EAAI,EAAFwB,IAAOqtB,YAAY7qB,EAAGjE,EAAEmyB,MAAMzwB,EAAE1B,EAAE,KAAKqE,EAAG,OAAOrE,EAAE6uB,GAAG,GAAG3uB,EAAED,EAAEwB,IAAKqtB,YAAYzqB,EAAGrE,EAAEmyB,MAAMzwB,EAAE1B,EAAE,KAAKsE,EAAG,OAAOtE,EAAE6uB,GAAG,GAAG3uB,EAAED,EAAEwB,IAAKqtB,YAAYxqB,EAAGtE,EAAEmyB,MAAMzwB,EAAE1B,EAAE,KAAKyE,EAAG,OAAOq7B,GAAG5/B,EAAEuB,EAAEC,EAAEzB,GAAG,QAAQ,GAAG,kBAAkBD,GAAG,OAAOA,EAAE,OAAOA,EAAEsG,UAAU,KAAKpC,EAAGvC,EAAE,GAAG,MAAM3B,EAAE,KAAKmE,EAAGxC,EAAE,EAAE,MAAM3B,EAAE,KAAKoE,EAAGzC,EAAE,GACpf,MAAM3B,EAAE,KAAKuE,EAAG5C,EAAE,GAAG,MAAM3B,EAAE,KAAKwE,EAAG7C,EAAE,GAAGH,EAAE,KAAK,MAAMxB,EAAE,MAAMiF,MAAMlF,EAAE,IAAI,MAAMC,EAAEA,SAASA,EAAE,KAAuD,OAAjDC,EAAE4uB,GAAGltB,EAAEzB,EAAED,EAAEwB,IAAKqtB,YAAY9uB,EAAEC,EAAEiC,KAAKV,EAAEvB,EAAEkyB,MAAMzwB,EAASzB,CAAC,CAAC,SAAS8wB,GAAG/wB,EAAEC,EAAEC,EAAEsB,GAA2B,OAAxBxB,EAAE6uB,GAAG,EAAE7uB,EAAEwB,EAAEvB,IAAKkyB,MAAMjyB,EAASF,CAAC,CAAC,SAAS8/B,GAAG9/B,EAAEC,EAAEC,EAAEsB,GAAuE,OAApExB,EAAE6uB,GAAG,GAAG7uB,EAAEwB,EAAEvB,IAAK6uB,YAAYrqB,EAAGzE,EAAEmyB,MAAMjyB,EAAEF,EAAEgQ,UAAU,CAACg0B,UAAS,GAAWhkC,CAAC,CAAC,SAAS0wB,GAAG1wB,EAAEC,EAAEC,GAA8B,OAA3BF,EAAE6uB,GAAG,EAAE7uB,EAAE,KAAKC,IAAKkyB,MAAMjyB,EAASF,CAAC,CAC5W,SAAS8wB,GAAG9wB,EAAEC,EAAEC,GAA8J,OAA3JD,EAAE4uB,GAAG,EAAE,OAAO7uB,EAAEsJ,SAAStJ,EAAEsJ,SAAS,GAAGtJ,EAAEme,IAAIle,IAAKkyB,MAAMjyB,EAAED,EAAE+P,UAAU,CAACmH,cAAcnX,EAAEmX,cAAcqxB,gBAAgB,KAAK3X,eAAe7wB,EAAE6wB,gBAAuB5wB,CAAC,CACtL,SAASwoC,GAAGzoC,EAAEC,EAAEC,EAAEsB,EAAEC,GAAGG,KAAKuE,IAAIlG,EAAE2B,KAAKuV,cAAcnX,EAAE4B,KAAKulC,aAAavlC,KAAK47B,UAAU57B,KAAKuQ,QAAQvQ,KAAK4mC,gBAAgB,KAAK5mC,KAAK0lC,eAAe,EAAE1lC,KAAKskC,aAAatkC,KAAKw9B,eAAex9B,KAAK0wB,QAAQ,KAAK1wB,KAAK0kC,iBAAiB,EAAE1kC,KAAKuT,WAAWF,GAAG,GAAGrT,KAAKukC,gBAAgBlxB,IAAI,GAAGrT,KAAKgT,eAAehT,KAAKwlC,cAAcxlC,KAAKgmC,iBAAiBhmC,KAAKwkC,aAAaxkC,KAAK+S,YAAY/S,KAAK8S,eAAe9S,KAAK6S,aAAa,EAAE7S,KAAKiT,cAAcI,GAAG,GAAGrT,KAAKg5B,iBAAiBp5B,EAAEI,KAAKqmC,mBAAmBxmC,EAAEG,KAAK8mC,gCAC/e,IAAI,CAAC,SAASC,GAAG3oC,EAAEC,EAAEC,EAAEsB,EAAEC,EAAEC,EAAEC,EAAEkE,EAAEC,GAAgN,OAA7M9F,EAAE,IAAIyoC,GAAGzoC,EAAEC,EAAEC,EAAE2F,EAAEC,GAAG,IAAI7F,GAAGA,EAAE,GAAE,IAAKyB,IAAIzB,GAAG,IAAIA,EAAE,EAAEyB,EAAEmtB,GAAG,EAAE,KAAK,KAAK5uB,GAAGD,EAAEmS,QAAQzQ,EAAEA,EAAEsO,UAAUhQ,EAAE0B,EAAEmQ,cAAc,CAACgU,QAAQrkB,EAAE0V,aAAahX,EAAE0oC,MAAM,KAAKnK,YAAY,KAAKoK,0BAA0B,MAAM/V,GAAGpxB,GAAU1B,CAAC,CACzP,SAAS8oC,GAAG9oC,GAAG,IAAIA,EAAE,OAAOqsB,GAAuBrsB,EAAE,CAAC,GAAGwR,GAA1BxR,EAAEA,EAAEk7B,mBAA8Bl7B,GAAG,IAAIA,EAAEmG,IAAI,MAAMlB,MAAMlF,EAAE,MAAM,IAAIE,EAAED,EAAE,EAAE,CAAC,OAAOC,EAAEkG,KAAK,KAAK,EAAElG,EAAEA,EAAE+P,UAAUsiB,QAAQ,MAAMtyB,EAAE,KAAK,EAAE,GAAG6sB,GAAG5sB,EAAEiC,MAAM,CAACjC,EAAEA,EAAE+P,UAAUod,0CAA0C,MAAMptB,CAAC,EAAEC,EAAEA,EAAEyR,MAAM,OAAO,OAAOzR,GAAG,MAAMgF,MAAMlF,EAAE,KAAM,CAAC,GAAG,IAAIC,EAAEmG,IAAI,CAAC,IAAIjG,EAAEF,EAAEkC,KAAK,GAAG2qB,GAAG3sB,GAAG,OAAO+sB,GAAGjtB,EAAEE,EAAED,EAAE,CAAC,OAAOA,CAAC,CACpW,SAAS8oC,GAAG/oC,EAAEC,EAAEC,EAAEsB,EAAEC,EAAEC,EAAEC,EAAEkE,EAAEC,GAAwK,OAArK9F,EAAE2oC,GAAGzoC,EAAEsB,GAAE,EAAGxB,EAAEyB,EAAEC,EAAEC,EAAEkE,EAAEC,IAAKwsB,QAAQwW,GAAG,MAAM5oC,EAAEF,EAAEmS,SAAsBzQ,EAAE6xB,GAAhB/xB,EAAEg4B,KAAI/3B,EAAE43B,GAAGn5B,KAAeyzB,cAAS,IAAS1zB,GAAG,OAAOA,EAAEA,EAAE,KAAK2zB,GAAG1zB,EAAEwB,EAAED,GAAGzB,EAAEmS,QAAQggB,MAAM1wB,EAAEyT,GAAGlV,EAAEyB,EAAED,GAAGykC,GAAGjmC,EAAEwB,GAAUxB,CAAC,CAAC,SAASgpC,GAAGhpC,EAAEC,EAAEC,EAAEsB,GAAG,IAAIC,EAAExB,EAAEkS,QAAQzQ,EAAE83B,KAAI73B,EAAE03B,GAAG53B,GAAsL,OAAnLvB,EAAE4oC,GAAG5oC,GAAG,OAAOD,EAAEqyB,QAAQryB,EAAEqyB,QAAQpyB,EAAED,EAAEm/B,eAAel/B,GAAED,EAAEszB,GAAG7xB,EAAEC,IAAK+xB,QAAQ,CAAC7N,QAAQ7lB,GAAuB,QAApBwB,OAAE,IAASA,EAAE,KAAKA,KAAavB,EAAE0zB,SAASnyB,GAAe,QAAZxB,EAAE4zB,GAAGnyB,EAAExB,EAAE0B,MAAcq2B,GAAGh4B,EAAEyB,EAAEE,EAAED,GAAGoyB,GAAG9zB,EAAEyB,EAAEE,IAAWA,CAAC,CAC3b,SAASsnC,GAAGjpC,GAAe,OAAZA,EAAEA,EAAEmS,SAAcF,OAAyBjS,EAAEiS,MAAM9L,IAAoDnG,EAAEiS,MAAMjC,WAAhF,IAA0F,CAAC,SAASk5B,GAAGlpC,EAAEC,GAAqB,GAAG,QAArBD,EAAEA,EAAE6R,gBAA2B,OAAO7R,EAAE8R,WAAW,CAAC,IAAI5R,EAAEF,EAAEovB,UAAUpvB,EAAEovB,UAAU,IAAIlvB,GAAGA,EAAED,EAAEC,EAAED,CAAC,CAAC,CAAC,SAASkpC,GAAGnpC,EAAEC,GAAGipC,GAAGlpC,EAAEC,IAAID,EAAEA,EAAEyR,YAAYy3B,GAAGlpC,EAAEC,EAAE,CAnB7SykC,GAAG,SAAS1kC,EAAEC,EAAEC,GAAG,GAAG,OAAOF,EAAE,GAAGA,EAAE0vB,gBAAgBzvB,EAAEgvB,cAAc1C,GAAGpa,QAAQigB,IAAG,MAAO,CAAC,GAAG,KAAKpyB,EAAEmyB,MAAMjyB,IAAI,KAAa,IAARD,EAAE0R,OAAW,OAAOygB,IAAG,EAzE1I,SAAYpyB,EAAEC,EAAEC,GAAG,OAAOD,EAAEkG,KAAK,KAAK,EAAEg5B,GAAGl/B,GAAG2vB,KAAK,MAAM,KAAK,EAAE+E,GAAG10B,GAAG,MAAM,KAAK,EAAE4sB,GAAG5sB,EAAEiC,OAAOirB,GAAGltB,GAAG,MAAM,KAAK,EAAEu0B,GAAGv0B,EAAEA,EAAE+P,UAAUmH,eAAe,MAAM,KAAK,GAAG,IAAI3V,EAAEvB,EAAEiC,KAAKqE,SAAS9E,EAAExB,EAAEyvB,cAAc/nB,MAAMykB,GAAEmF,GAAG/vB,EAAEqwB,eAAerwB,EAAEqwB,cAAcpwB,EAAE,MAAM,KAAK,GAAqB,GAAG,QAArBD,EAAEvB,EAAE4R,eAA2B,OAAG,OAAOrQ,EAAEsQ,YAAkBsa,GAAEyI,GAAY,EAAVA,GAAE1iB,SAAWlS,EAAE0R,OAAO,IAAI,MAAQ,KAAKzR,EAAED,EAAEgS,MAAM8f,YAAmB6N,GAAG5/B,EAAEC,EAAEC,IAAGksB,GAAEyI,GAAY,EAAVA,GAAE1iB,SAA8B,QAAnBnS,EAAEg+B,GAAGh+B,EAAEC,EAAEC,IAAmBF,EAAEkS,QAAQ,MAAKka,GAAEyI,GAAY,EAAVA,GAAE1iB,SAAW,MAAM,KAAK,GAC7d,GADge3Q,EAAE,KAAKtB,EACrfD,EAAE8xB,YAAe,KAAa,IAAR/xB,EAAE2R,OAAW,CAAC,GAAGnQ,EAAE,OAAOw/B,GAAGhhC,EAAEC,EAAEC,GAAGD,EAAE0R,OAAO,GAAG,CAA6F,GAA1E,QAAlBlQ,EAAExB,EAAE4R,iBAAyBpQ,EAAEk/B,UAAU,KAAKl/B,EAAEq/B,KAAK,KAAKr/B,EAAEm2B,WAAW,MAAMxL,GAAEyI,GAAEA,GAAE1iB,SAAY3Q,EAAE,MAAW,OAAO,KAAK,KAAK,GAAG,KAAK,GAAG,OAAOvB,EAAEkyB,MAAM,EAAEmM,GAAGt+B,EAAEC,EAAEC,GAAG,OAAO89B,GAAGh+B,EAAEC,EAAEC,EAAE,CAwE7GkpC,CAAGppC,EAAEC,EAAEC,GAAGkyB,GAAG,KAAa,OAARpyB,EAAE2R,MAAmB,MAAMygB,IAAG,EAAG1D,IAAG,KAAa,QAARzuB,EAAE0R,QAAgB0c,GAAGpuB,EAAE6tB,GAAG7tB,EAAEuwB,OAAiB,OAAVvwB,EAAEkyB,MAAM,EAASlyB,EAAEkG,KAAK,KAAK,EAAE,IAAI3E,EAAEvB,EAAEiC,KAAK48B,GAAG9+B,EAAEC,GAAGD,EAAEC,EAAEgvB,aAAa,IAAIxtB,EAAEgrB,GAAGxsB,EAAEqsB,GAAEna,SAAS6f,GAAG/xB,EAAEC,GAAGuB,EAAEu0B,GAAG,KAAK/1B,EAAEuB,EAAExB,EAAEyB,EAAEvB,GAAG,IAAIwB,EAAE20B,KACvI,OAD4Ip2B,EAAE0R,OAAO,EAAE,kBAAkBlQ,GAAG,OAAOA,GAAG,oBAAoBA,EAAE2E,aAAQ,IAAS3E,EAAE6E,UAAUrG,EAAEkG,IAAI,EAAElG,EAAE4R,cAAc,KAAK5R,EAAE8yB,YAC1e,KAAKlG,GAAGrrB,IAAIE,GAAE,EAAGyrB,GAAGltB,IAAIyB,GAAE,EAAGzB,EAAE4R,cAAc,OAAOpQ,EAAEk6B,YAAO,IAASl6B,EAAEk6B,MAAMl6B,EAAEk6B,MAAM,KAAK7I,GAAG7yB,GAAGwB,EAAEm6B,QAAQZ,GAAG/6B,EAAE+P,UAAUvO,EAAEA,EAAEy5B,gBAAgBj7B,EAAE+7B,GAAG/7B,EAAEuB,EAAExB,EAAEE,GAAGD,EAAEi/B,GAAG,KAAKj/B,EAAEuB,GAAE,EAAGE,EAAExB,KAAKD,EAAEkG,IAAI,EAAEuoB,IAAGhtB,GAAG4sB,GAAGruB,GAAG69B,GAAG,KAAK79B,EAAEwB,EAAEvB,GAAGD,EAAEA,EAAEgS,OAAchS,EAAE,KAAK,GAAGuB,EAAEvB,EAAE6uB,YAAY9uB,EAAE,CAAqF,OAApF8+B,GAAG9+B,EAAEC,GAAGD,EAAEC,EAAEgvB,aAAuBztB,GAAVC,EAAED,EAAEiF,OAAUjF,EAAEgF,UAAUvG,EAAEiC,KAAKV,EAAEC,EAAExB,EAAEkG,IAQtU,SAAYnG,GAAG,GAAG,oBAAoBA,EAAE,OAAOk+B,GAAGl+B,GAAG,EAAE,EAAE,QAAG,IAASA,GAAG,OAAOA,EAAE,CAAc,IAAbA,EAAEA,EAAEsG,YAAgBlC,EAAG,OAAO,GAAG,GAAGpE,IAAIuE,EAAG,OAAO,EAAE,CAAC,OAAO,CAAC,CAR2L8kC,CAAG7nC,GAAGxB,EAAE66B,GAAGr5B,EAAExB,GAAUyB,GAAG,KAAK,EAAExB,EAAEo+B,GAAG,KAAKp+B,EAAEuB,EAAExB,EAAEE,GAAG,MAAMF,EAAE,KAAK,EAAEC,EAAE4+B,GAAG,KAAK5+B,EAAEuB,EAAExB,EAAEE,GAAG,MAAMF,EAAE,KAAK,GAAGC,EAAE89B,GAAG,KAAK99B,EAAEuB,EAAExB,EAAEE,GAAG,MAAMF,EAAE,KAAK,GAAGC,EAAEg+B,GAAG,KAAKh+B,EAAEuB,EAAEq5B,GAAGr5B,EAAEU,KAAKlC,GAAGE,GAAG,MAAMF,EAAE,MAAMiF,MAAMlF,EAAE,IACvgByB,EAAE,IAAK,CAAC,OAAOvB,EAAE,KAAK,EAAE,OAAOuB,EAAEvB,EAAEiC,KAAKT,EAAExB,EAAEgvB,aAA2CoP,GAAGr+B,EAAEC,EAAEuB,EAArCC,EAAExB,EAAE6uB,cAActtB,EAAEC,EAAEo5B,GAAGr5B,EAAEC,GAAcvB,GAAG,KAAK,EAAE,OAAOsB,EAAEvB,EAAEiC,KAAKT,EAAExB,EAAEgvB,aAA2C4P,GAAG7+B,EAAEC,EAAEuB,EAArCC,EAAExB,EAAE6uB,cAActtB,EAAEC,EAAEo5B,GAAGr5B,EAAEC,GAAcvB,GAAG,KAAK,EAAEF,EAAE,CAAO,GAANm/B,GAAGl/B,GAAM,OAAOD,EAAE,MAAMiF,MAAMlF,EAAE,MAAMyB,EAAEvB,EAAEgvB,aAA+BxtB,GAAlBC,EAAEzB,EAAE4R,eAAkBgU,QAAQyN,GAAGtzB,EAAEC,GAAG+zB,GAAG/zB,EAAEuB,EAAE,KAAKtB,GAAG,IAAIyB,EAAE1B,EAAE4R,cAA0B,GAAZrQ,EAAEG,EAAEkkB,QAAWnkB,EAAEwV,aAAY,CAAC,GAAGxV,EAAE,CAACmkB,QAAQrkB,EAAE0V,cAAa,EAAG0xB,MAAMjnC,EAAEinC,MAAMC,0BAA0BlnC,EAAEknC,0BAA0BpK,YAAY98B,EAAE88B,aAAax+B,EAAE8yB,YAAYC,UAChftxB,EAAEzB,EAAE4R,cAAcnQ,EAAU,IAARzB,EAAE0R,MAAU,CAAuB1R,EAAEo/B,GAAGr/B,EAAEC,EAAEuB,EAAEtB,EAAjCuB,EAAE66B,GAAGr3B,MAAMlF,EAAE,MAAME,IAAmB,MAAMD,CAAC,CAAM,GAAGwB,IAAIC,EAAE,CAAuBxB,EAAEo/B,GAAGr/B,EAAEC,EAAEuB,EAAEtB,EAAjCuB,EAAE66B,GAAGr3B,MAAMlF,EAAE,MAAME,IAAmB,MAAMD,CAAC,CAAM,IAAIyuB,GAAGjD,GAAGvrB,EAAE+P,UAAUmH,cAAchN,YAAYqkB,GAAGvuB,EAAEyuB,IAAE,EAAGC,GAAG,KAAKzuB,EAAEoxB,GAAGrxB,EAAE,KAAKuB,EAAEtB,GAAGD,EAAEgS,MAAM/R,EAAEA,GAAGA,EAAEyR,OAAe,EAATzR,EAAEyR,MAAS,KAAKzR,EAAEA,EAAEgS,OAAQ,KAAI,CAAM,GAAL0d,KAAQpuB,IAAIC,EAAE,CAACxB,EAAE+9B,GAAGh+B,EAAEC,EAAEC,GAAG,MAAMF,CAAC,CAAC89B,GAAG99B,EAAEC,EAAEuB,EAAEtB,EAAE,CAACD,EAAEA,EAAEgS,KAAK,CAAC,OAAOhS,EAAE,KAAK,EAAE,OAAO00B,GAAG10B,GAAG,OAAOD,GAAGuvB,GAAGtvB,GAAGuB,EAAEvB,EAAEiC,KAAKT,EAAExB,EAAEgvB,aAAavtB,EAAE,OAAO1B,EAAEA,EAAE0vB,cAAc,KAAK/tB,EAAEF,EAAE6H,SAASmhB,GAAGjpB,EAAEC,GAAGE,EAAE,KAAK,OAAOD,GAAG+oB,GAAGjpB,EAAEE,KAAKzB,EAAE0R,OAAO,IACnfitB,GAAG5+B,EAAEC,GAAG69B,GAAG99B,EAAEC,EAAE0B,EAAEzB,GAAGD,EAAEgS,MAAM,KAAK,EAAE,OAAO,OAAOjS,GAAGuvB,GAAGtvB,GAAG,KAAK,KAAK,GAAG,OAAO2/B,GAAG5/B,EAAEC,EAAEC,GAAG,KAAK,EAAE,OAAOs0B,GAAGv0B,EAAEA,EAAE+P,UAAUmH,eAAe3V,EAAEvB,EAAEgvB,aAAa,OAAOjvB,EAAEC,EAAEgS,MAAMof,GAAGpxB,EAAE,KAAKuB,EAAEtB,GAAG49B,GAAG99B,EAAEC,EAAEuB,EAAEtB,GAAGD,EAAEgS,MAAM,KAAK,GAAG,OAAOzQ,EAAEvB,EAAEiC,KAAKT,EAAExB,EAAEgvB,aAA2C8O,GAAG/9B,EAAEC,EAAEuB,EAArCC,EAAExB,EAAE6uB,cAActtB,EAAEC,EAAEo5B,GAAGr5B,EAAEC,GAAcvB,GAAG,KAAK,EAAE,OAAO49B,GAAG99B,EAAEC,EAAEA,EAAEgvB,aAAa/uB,GAAGD,EAAEgS,MAAM,KAAK,EAAmD,KAAK,GAAG,OAAO6rB,GAAG99B,EAAEC,EAAEA,EAAEgvB,aAAa3lB,SAASpJ,GAAGD,EAAEgS,MAAM,KAAK,GAAGjS,EAAE,CACxZ,GADyZwB,EAAEvB,EAAEiC,KAAKqE,SAAS9E,EAAExB,EAAEgvB,aAAavtB,EAAEzB,EAAEyvB,cAClf/tB,EAAEF,EAAEkG,MAAMykB,GAAEmF,GAAG/vB,EAAEqwB,eAAerwB,EAAEqwB,cAAclwB,EAAK,OAAOD,EAAE,GAAG6hB,GAAG7hB,EAAEiG,MAAMhG,IAAI,GAAGD,EAAE4H,WAAW7H,EAAE6H,WAAWijB,GAAGpa,QAAQ,CAAClS,EAAE+9B,GAAGh+B,EAAEC,EAAEC,GAAG,MAAMF,CAAC,OAAO,IAAc,QAAV0B,EAAEzB,EAAEgS,SAAiBvQ,EAAEgQ,OAAOzR,GAAG,OAAOyB,GAAG,CAAC,IAAImE,EAAEnE,EAAEuwB,aAAa,GAAG,OAAOpsB,EAAE,CAAClE,EAAED,EAAEuQ,MAAM,IAAI,IAAInM,EAAED,EAAEqsB,aAAa,OAAOpsB,GAAG,CAAC,GAAGA,EAAEwsB,UAAU9wB,EAAE,CAAC,GAAG,IAAIE,EAAEyE,IAAI,EAACL,EAAEytB,IAAI,EAAErzB,GAAGA,IAAKiG,IAAI,EAAE,IAAIP,EAAElE,EAAEqxB,YAAY,GAAG,OAAOntB,EAAE,CAAY,IAAIoL,GAAfpL,EAAEA,EAAEutB,QAAeC,QAAQ,OAAOpiB,EAAElL,EAAEqrB,KAAKrrB,GAAGA,EAAEqrB,KAAKngB,EAAEmgB,KAAKngB,EAAEmgB,KAAKrrB,GAAGF,EAAEwtB,QAAQttB,CAAC,CAAC,CAACpE,EAAEywB,OAAOjyB,EAAgB,QAAd4F,EAAEpE,EAAE+P,aAAqB3L,EAAEqsB,OAAOjyB,GAAG4xB,GAAGpwB,EAAEgQ,OAClfxR,EAAED,GAAG4F,EAAEssB,OAAOjyB,EAAE,KAAK,CAAC4F,EAAEA,EAAEqrB,IAAI,CAAC,MAAM,GAAG,KAAKzvB,EAAEyE,IAAIxE,EAAED,EAAEQ,OAAOjC,EAAEiC,KAAK,KAAKR,EAAEuQ,WAAW,GAAG,KAAKvQ,EAAEyE,IAAI,CAAY,GAAG,QAAdxE,EAAED,EAAEgQ,QAAmB,MAAMzM,MAAMlF,EAAE,MAAM4B,EAAEwwB,OAAOjyB,EAAgB,QAAd2F,EAAElE,EAAE8P,aAAqB5L,EAAEssB,OAAOjyB,GAAG4xB,GAAGnwB,EAAEzB,EAAED,GAAG0B,EAAED,EAAEwQ,OAAO,MAAMvQ,EAAED,EAAEuQ,MAAM,GAAG,OAAOtQ,EAAEA,EAAE+P,OAAOhQ,OAAO,IAAIC,EAAED,EAAE,OAAOC,GAAG,CAAC,GAAGA,IAAI1B,EAAE,CAAC0B,EAAE,KAAK,KAAK,CAAa,GAAG,QAAfD,EAAEC,EAAEuQ,SAAoB,CAACxQ,EAAEgQ,OAAO/P,EAAE+P,OAAO/P,EAAED,EAAE,KAAK,CAACC,EAAEA,EAAE+P,MAAM,CAAChQ,EAAEC,CAAC,CAACm8B,GAAG99B,EAAEC,EAAEwB,EAAE6H,SAASpJ,GAAGD,EAAEA,EAAEgS,KAAK,CAAC,OAAOhS,EAAE,KAAK,EAAE,OAAOwB,EAAExB,EAAEiC,KAAKV,EAAEvB,EAAEgvB,aAAa3lB,SAAS0oB,GAAG/xB,EAAEC,GAAWsB,EAAEA,EAAVC,EAAE4wB,GAAG5wB,IAAUxB,EAAE0R,OAAO,EAAEmsB,GAAG99B,EAAEC,EAAEuB,EAAEtB,GACpfD,EAAEgS,MAAM,KAAK,GAAG,OAAgBxQ,EAAEo5B,GAAXr5B,EAAEvB,EAAEiC,KAAYjC,EAAEgvB,cAA6BgP,GAAGj+B,EAAEC,EAAEuB,EAAtBC,EAAEo5B,GAAGr5B,EAAEU,KAAKT,GAAcvB,GAAG,KAAK,GAAG,OAAOk+B,GAAGp+B,EAAEC,EAAEA,EAAEiC,KAAKjC,EAAEgvB,aAAa/uB,GAAG,KAAK,GAAG,OAAOsB,EAAEvB,EAAEiC,KAAKT,EAAExB,EAAEgvB,aAAaxtB,EAAExB,EAAE6uB,cAActtB,EAAEC,EAAEo5B,GAAGr5B,EAAEC,GAAGq9B,GAAG9+B,EAAEC,GAAGA,EAAEkG,IAAI,EAAE0mB,GAAGrrB,IAAIxB,GAAE,EAAGmtB,GAAGltB,IAAID,GAAE,EAAGgyB,GAAG/xB,EAAEC,GAAGu7B,GAAGx7B,EAAEuB,EAAEC,GAAGu6B,GAAG/7B,EAAEuB,EAAEC,EAAEvB,GAAGg/B,GAAG,KAAKj/B,EAAEuB,GAAE,EAAGxB,EAAEE,GAAG,KAAK,GAAG,OAAO8gC,GAAGhhC,EAAEC,EAAEC,GAAG,KAAK,GAAG,OAAOo+B,GAAGt+B,EAAEC,EAAEC,GAAG,MAAM+E,MAAMlF,EAAE,IAAIE,EAAEkG,KAAM,EAYxC,IAAImjC,GAAG,oBAAoBC,YAAYA,YAAY,SAASvpC,GAAG28B,QAAQC,MAAM58B,EAAE,EAAE,SAASwpC,GAAGxpC,GAAG4B,KAAK6nC,cAAczpC,CAAC,CACjI,SAAS0pC,GAAG1pC,GAAG4B,KAAK6nC,cAAczpC,CAAC,CAC5J,SAAS2pC,GAAG3pC,GAAG,SAASA,GAAG,IAAIA,EAAE0K,UAAU,IAAI1K,EAAE0K,UAAU,KAAK1K,EAAE0K,SAAS,CAAC,SAASk/B,GAAG5pC,GAAG,SAASA,GAAG,IAAIA,EAAE0K,UAAU,IAAI1K,EAAE0K,UAAU,KAAK1K,EAAE0K,WAAW,IAAI1K,EAAE0K,UAAU,iCAAiC1K,EAAE2K,WAAW,CAAC,SAASk/B,KAAK,CAExa,SAASC,GAAG9pC,EAAEC,EAAEC,EAAEsB,EAAEC,GAAG,IAAIC,EAAExB,EAAEijC,oBAAoB,GAAGzhC,EAAE,CAAC,IAAIC,EAAED,EAAE,GAAG,oBAAoBD,EAAE,CAAC,IAAIoE,EAAEpE,EAAEA,EAAE,WAAW,IAAIzB,EAAEipC,GAAGtnC,GAAGkE,EAAE5C,KAAKjD,EAAE,CAAC,CAACgpC,GAAG/oC,EAAE0B,EAAE3B,EAAEyB,EAAE,MAAME,EADxJ,SAAY3B,EAAEC,EAAEC,EAAEsB,EAAEC,GAAG,GAAGA,EAAE,CAAC,GAAG,oBAAoBD,EAAE,CAAC,IAAIE,EAAEF,EAAEA,EAAE,WAAW,IAAIxB,EAAEipC,GAAGtnC,GAAGD,EAAEuB,KAAKjD,EAAE,CAAC,CAAC,IAAI2B,EAAEonC,GAAG9oC,EAAEuB,EAAExB,EAAE,EAAE,MAAK,EAAG,EAAG,GAAG6pC,IAAmF,OAA/E7pC,EAAEmjC,oBAAoBxhC,EAAE3B,EAAEspB,IAAI3nB,EAAEwQ,QAAQuW,GAAG,IAAI1oB,EAAE0K,SAAS1K,EAAE0P,WAAW1P,GAAGwnC,KAAY7lC,CAAC,CAAC,KAAKF,EAAEzB,EAAEyK,WAAWzK,EAAEoK,YAAY3I,GAAG,GAAG,oBAAoBD,EAAE,CAAC,IAAIqE,EAAErE,EAAEA,EAAE,WAAW,IAAIxB,EAAEipC,GAAGnjC,GAAGD,EAAE5C,KAAKjD,EAAE,CAAC,CAAC,IAAI8F,EAAE6iC,GAAG3oC,EAAE,GAAE,EAAG,KAAK,GAAK,EAAG,EAAG,GAAG6pC,IAA0G,OAAtG7pC,EAAEmjC,oBAAoBr9B,EAAE9F,EAAEspB,IAAIxjB,EAAEqM,QAAQuW,GAAG,IAAI1oB,EAAE0K,SAAS1K,EAAE0P,WAAW1P,GAAGwnC,IAAG,WAAWwB,GAAG/oC,EAAE6F,EAAE5F,EAAEsB,EAAE,IAAUsE,CAAC,CACpUikC,CAAG7pC,EAAED,EAAED,EAAEyB,EAAED,GAAG,OAAOynC,GAAGtnC,EAAE,CAHpL+nC,GAAGxoC,UAAUkF,OAAOojC,GAAGtoC,UAAUkF,OAAO,SAASpG,GAAG,IAAIC,EAAE2B,KAAK6nC,cAAc,GAAG,OAAOxpC,EAAE,MAAMgF,MAAMlF,EAAE,MAAMipC,GAAGhpC,EAAEC,EAAE,KAAK,KAAK,EAAEypC,GAAGxoC,UAAU8oC,QAAQR,GAAGtoC,UAAU8oC,QAAQ,WAAW,IAAIhqC,EAAE4B,KAAK6nC,cAAc,GAAG,OAAOzpC,EAAE,CAAC4B,KAAK6nC,cAAc,KAAK,IAAIxpC,EAAED,EAAEmX,cAAcqwB,IAAG,WAAWwB,GAAG,KAAKhpC,EAAE,KAAK,KAAK,IAAGC,EAAEqpB,IAAI,IAAI,CAAC,EACzTogB,GAAGxoC,UAAU+oC,2BAA2B,SAASjqC,GAAG,GAAGA,EAAE,CAAC,IAAIC,EAAEyV,KAAK1V,EAAE,CAAC2W,UAAU,KAAKpH,OAAOvP,EAAEiX,SAAShX,GAAG,IAAI,IAAIC,EAAE,EAAEA,EAAEkW,GAAGhW,QAAQ,IAAIH,GAAGA,EAAEmW,GAAGlW,GAAG+W,SAAS/W,KAAKkW,GAAG8zB,OAAOhqC,EAAE,EAAEF,GAAG,IAAIE,GAAG6W,GAAG/W,EAAE,CAAC,EAEXuV,GAAG,SAASvV,GAAG,OAAOA,EAAEmG,KAAK,KAAK,EAAE,IAAIlG,EAAED,EAAEgQ,UAAU,GAAG/P,EAAEkS,QAAQN,cAAcqF,aAAa,CAAC,IAAIhX,EAAEqU,GAAGtU,EAAEwU,cAAc,IAAIvU,IAAIkV,GAAGnV,EAAI,EAAFC,GAAK+lC,GAAGhmC,EAAE6S,MAAK,KAAO,EAAF+gB,MAAOkO,GAAGjvB,KAAI,IAAI4a,MAAM,CAAC,MAAM,KAAK,GAAG8Z,IAAG,WAAW,IAAIvnC,EAAE2yB,GAAG5yB,EAAE,GAAG,GAAG,OAAOC,EAAE,CAAC,IAAIC,EAAEs5B,KAAIxB,GAAG/3B,EAAED,EAAE,EAAEE,EAAE,CAAC,IAAGipC,GAAGnpC,EAAE,GAAG,EAC/bwV,GAAG,SAASxV,GAAG,GAAG,KAAKA,EAAEmG,IAAI,CAAC,IAAIlG,EAAE2yB,GAAG5yB,EAAE,WAAW,GAAG,OAAOC,EAAa+3B,GAAG/3B,EAAED,EAAE,UAAXw5B,MAAwB2P,GAAGnpC,EAAE,UAAU,CAAC,EAAEyV,GAAG,SAASzV,GAAG,GAAG,KAAKA,EAAEmG,IAAI,CAAC,IAAIlG,EAAEo5B,GAAGr5B,GAAGE,EAAE0yB,GAAG5yB,EAAEC,GAAG,GAAG,OAAOC,EAAa83B,GAAG93B,EAAEF,EAAEC,EAAXu5B,MAAgB2P,GAAGnpC,EAAEC,EAAE,CAAC,EAAEyV,GAAG,WAAW,OAAOL,EAAC,EAAEM,GAAG,SAAS3V,EAAEC,GAAG,IAAIC,EAAEmV,GAAE,IAAI,OAAOA,GAAErV,EAAEC,GAAG,CAAC,QAAQoV,GAAEnV,CAAC,CAAC,EAClSyP,GAAG,SAAS3P,EAAEC,EAAEC,GAAG,OAAOD,GAAG,IAAK,QAAyB,GAAjBuI,EAAGxI,EAAEE,GAAGD,EAAEC,EAAE+F,KAAQ,UAAU/F,EAAEgC,MAAM,MAAMjC,EAAE,CAAC,IAAIC,EAAEF,EAAEE,EAAEwP,YAAYxP,EAAEA,EAAEwP,WAAsF,IAA3ExP,EAAEA,EAAEiqC,iBAAiB,cAAcC,KAAKC,UAAU,GAAGpqC,GAAG,mBAAuBA,EAAE,EAAEA,EAAEC,EAAEE,OAAOH,IAAI,CAAC,IAAIuB,EAAEtB,EAAED,GAAG,GAAGuB,IAAIxB,GAAGwB,EAAE8oC,OAAOtqC,EAAEsqC,KAAK,CAAC,IAAI7oC,EAAEwO,GAAGzO,GAAG,IAAIC,EAAE,MAAMwD,MAAMlF,EAAE,KAAK0H,EAAGjG,GAAGgH,EAAGhH,EAAEC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAK,WAAW+H,GAAGxJ,EAAEE,GAAG,MAAM,IAAK,SAAmB,OAAVD,EAAEC,EAAEyH,QAAeoB,GAAG/I,IAAIE,EAAEohC,SAASrhC,GAAE,GAAI,EAAEoQ,GAAGk3B,GAAGj3B,GAAGk3B,GACpa,IAAI+C,GAAG,CAACC,uBAAsB,EAAGC,OAAO,CAAC16B,GAAGyS,GAAGvS,GAAGC,GAAGE,GAAGm3B,KAAKmD,GAAG,CAACC,wBAAwB3zB,GAAG4zB,WAAW,EAAEC,QAAQ,SAASC,oBAAoB,aAC1IC,GAAG,CAACH,WAAWF,GAAGE,WAAWC,QAAQH,GAAGG,QAAQC,oBAAoBJ,GAAGI,oBAAoBE,eAAeN,GAAGM,eAAeC,kBAAkB,KAAKC,4BAA4B,KAAKC,4BAA4B,KAAKC,cAAc,KAAKC,wBAAwB,KAAKC,wBAAwB,KAAKC,gBAAgB,KAAKC,mBAAmB,KAAKC,eAAe,KAAKC,qBAAqBjoC,EAAG2xB,uBAAuBuW,wBAAwB,SAAS3rC,GAAW,OAAO,QAAfA,EAAEgS,GAAGhS,IAAmB,KAAKA,EAAEgQ,SAAS,EAAE26B,wBAAwBD,GAAGC,yBARjN,WAAc,OAAO,IAAI,EASpUiB,4BAA4B,KAAKC,gBAAgB,KAAKC,aAAa,KAAKC,kBAAkB,KAAKC,gBAAgB,KAAKC,kBAAkB,mCAAmC,GAAG,qBAAqBC,+BAA+B,CAAC,IAAIC,GAAGD,+BAA+B,IAAIC,GAAGC,YAAYD,GAAGE,cAAc,IAAIz4B,GAAGu4B,GAAGG,OAAOvB,IAAIl3B,GAAGs4B,EAAE,CAAC,MAAMnsC,IAAG,CAAC,CAACusC,EAAQ7oC,mDAAmD6mC,GAC/YgC,EAAQC,aAAa,SAASxsC,EAAEC,GAAG,IAAIC,EAAE,EAAEC,UAAUC,aAAQ,IAASD,UAAU,GAAGA,UAAU,GAAG,KAAK,IAAIwpC,GAAG1pC,GAAG,MAAMgF,MAAMlF,EAAE,MAAM,OAbuH,SAAYC,EAAEC,EAAEC,GAAG,IAAIsB,EAAE,EAAErB,UAAUC,aAAQ,IAASD,UAAU,GAAGA,UAAU,GAAG,KAAK,MAAM,CAACmG,SAASxC,EAAGqa,IAAI,MAAM3c,EAAE,KAAK,GAAGA,EAAE8H,SAAStJ,EAAEmX,cAAclX,EAAE4wB,eAAe3wB,EAAE,CAa1RusC,CAAGzsC,EAAEC,EAAE,KAAKC,EAAE,EAAEqsC,EAAQG,WAAW,SAAS1sC,EAAEC,GAAG,IAAI0pC,GAAG3pC,GAAG,MAAMiF,MAAMlF,EAAE,MAAM,IAAIG,GAAE,EAAGsB,EAAE,GAAGC,EAAE6nC,GAA4P,OAAzP,OAAOrpC,QAAG,IAASA,KAAI,IAAKA,EAAE0sC,sBAAsBzsC,GAAE,QAAI,IAASD,EAAE26B,mBAAmBp5B,EAAEvB,EAAE26B,uBAAkB,IAAS36B,EAAEgoC,qBAAqBxmC,EAAExB,EAAEgoC,qBAAqBhoC,EAAE0oC,GAAG3oC,EAAE,GAAE,EAAG,KAAK,EAAKE,EAAE,EAAGsB,EAAEC,GAAGzB,EAAEspB,IAAIrpB,EAAEkS,QAAQuW,GAAG,IAAI1oB,EAAE0K,SAAS1K,EAAE0P,WAAW1P,GAAU,IAAIwpC,GAAGvpC,EAAE,EACrfssC,EAAQK,YAAY,SAAS5sC,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,IAAIA,EAAE0K,SAAS,OAAO1K,EAAE,IAAIC,EAAED,EAAEk7B,gBAAgB,QAAG,IAASj7B,EAAE,CAAC,GAAG,oBAAoBD,EAAEoG,OAAO,MAAMnB,MAAMlF,EAAE,MAAiC,MAA3BC,EAAEiB,OAAO6M,KAAK9N,GAAGqwB,KAAK,KAAWprB,MAAMlF,EAAE,IAAIC,GAAI,CAAqC,OAA5BA,EAAE,QAAVA,EAAEgS,GAAG/R,IAAc,KAAKD,EAAEgQ,SAAkB,EAAEu8B,EAAQM,UAAU,SAAS7sC,GAAG,OAAOwnC,GAAGxnC,EAAE,EAAEusC,EAAQO,QAAQ,SAAS9sC,EAAEC,EAAEC,GAAG,IAAI0pC,GAAG3pC,GAAG,MAAMgF,MAAMlF,EAAE,MAAM,OAAO+pC,GAAG,KAAK9pC,EAAEC,GAAE,EAAGC,EAAE,EAC/YqsC,EAAQQ,YAAY,SAAS/sC,EAAEC,EAAEC,GAAG,IAAIypC,GAAG3pC,GAAG,MAAMiF,MAAMlF,EAAE,MAAM,IAAIyB,EAAE,MAAMtB,GAAGA,EAAE8sC,iBAAiB,KAAKvrC,GAAE,EAAGC,EAAE,GAAGC,EAAE2nC,GAAyO,GAAtO,OAAOppC,QAAG,IAASA,KAAI,IAAKA,EAAEysC,sBAAsBlrC,GAAE,QAAI,IAASvB,EAAE06B,mBAAmBl5B,EAAExB,EAAE06B,uBAAkB,IAAS16B,EAAE+nC,qBAAqBtmC,EAAEzB,EAAE+nC,qBAAqBhoC,EAAE8oC,GAAG9oC,EAAE,KAAKD,EAAE,EAAE,MAAME,EAAEA,EAAE,KAAKuB,EAAE,EAAGC,EAAEC,GAAG3B,EAAEspB,IAAIrpB,EAAEkS,QAAQuW,GAAG1oB,GAAMwB,EAAE,IAAIxB,EAAE,EAAEA,EAAEwB,EAAEpB,OAAOJ,IAA2ByB,GAAhBA,GAAPvB,EAAEsB,EAAExB,IAAOitC,aAAgB/sC,EAAEgtC,SAAS,MAAMjtC,EAAEyoC,gCAAgCzoC,EAAEyoC,gCAAgC,CAACxoC,EAAEuB,GAAGxB,EAAEyoC,gCAAgCv4B,KAAKjQ,EACvhBuB,GAAG,OAAO,IAAIioC,GAAGzpC,EAAE,EAAEssC,EAAQnmC,OAAO,SAASpG,EAAEC,EAAEC,GAAG,IAAI0pC,GAAG3pC,GAAG,MAAMgF,MAAMlF,EAAE,MAAM,OAAO+pC,GAAG,KAAK9pC,EAAEC,GAAE,EAAGC,EAAE,EAAEqsC,EAAQY,uBAAuB,SAASntC,GAAG,IAAI4pC,GAAG5pC,GAAG,MAAMiF,MAAMlF,EAAE,KAAK,QAAOC,EAAEmjC,sBAAqBqE,IAAG,WAAWsC,GAAG,KAAK,KAAK9pC,GAAE,GAAG,WAAWA,EAAEmjC,oBAAoB,KAAKnjC,EAAEspB,IAAI,IAAI,GAAE,KAAG,EAAM,EAAEijB,EAAQa,wBAAwB7F,GAC/UgF,EAAQc,oCAAoC,SAASrtC,EAAEC,EAAEC,EAAEsB,GAAG,IAAIooC,GAAG1pC,GAAG,MAAM+E,MAAMlF,EAAE,MAAM,GAAG,MAAMC,QAAG,IAASA,EAAEk7B,gBAAgB,MAAMj2B,MAAMlF,EAAE,KAAK,OAAO+pC,GAAG9pC,EAAEC,EAAEC,GAAE,EAAGsB,EAAE,EAAE+qC,EAAQ1B,QAAQ,8DC/T7L,IAAI75B,EAAInR,EAAQ,KAEd0sC,EAAQG,WAAa17B,EAAE07B,WACvBH,EAAQQ,YAAc/7B,EAAE+7B,yCCH1B,SAASO,IAEP,GAC4C,qBAAnCpB,gCAC4C,oBAA5CA,+BAA+BoB,SAcxC,IAEEpB,+BAA+BoB,SAASA,EAC1C,CAAE,MAAOC,GAGP5Q,QAAQC,MAAM2Q,EAChB,CACF,CAKED,GACAE,EAAOjB,QAAU,EAAjBiB,iCCzBW,IAAI9rC,EAAE7B,EAAQ,KAASiG,EAAElC,OAAOC,IAAI,iBAAiB+B,EAAEhC,OAAOC,IAAI,kBAAkBmN,EAAE/P,OAAOC,UAAUC,eAAe2nB,EAAEpnB,EAAEgC,mDAAmDm6B,kBAAkB99B,EAAE,CAACoe,KAAI,EAAG6R,KAAI,EAAGyd,QAAO,EAAGC,UAAS,GAChP,SAAS1c,EAAE9wB,EAAEF,EAAE2B,GAAG,IAAI1B,EAAEuB,EAAE,CAAC,EAAEC,EAAE,KAAKoE,EAAE,KAAiF,IAAI5F,UAAhF,IAAS0B,IAAIF,EAAE,GAAGE,QAAG,IAAS3B,EAAEme,MAAM1c,EAAE,GAAGzB,EAAEme,UAAK,IAASne,EAAEgwB,MAAMnqB,EAAE7F,EAAEgwB,KAAchwB,EAAEgR,EAAE/N,KAAKjD,EAAEC,KAAKF,EAAEoB,eAAelB,KAAKuB,EAAEvB,GAAGD,EAAEC,IAAI,GAAGC,GAAGA,EAAE46B,aAAa,IAAI76B,KAAKD,EAAEE,EAAE46B,kBAAe,IAASt5B,EAAEvB,KAAKuB,EAAEvB,GAAGD,EAAEC,IAAI,MAAM,CAACqG,SAASR,EAAE5D,KAAKhC,EAAEie,IAAI1c,EAAEuuB,IAAInqB,EAAE8qB,MAAMnvB,EAAEyuB,OAAOnH,EAAE3W,QAAQ,CAACo6B,EAAQoB,SAAS/nC,EAAE2mC,EAAQqB,IAAI5c,EAAEub,EAAQsB,KAAK7c,4BCD7V,IAAIprB,EAAEhC,OAAOC,IAAI,iBAAiBilB,EAAEllB,OAAOC,IAAI,gBAAgB9D,EAAE6D,OAAOC,IAAI,kBAAkBmtB,EAAEptB,OAAOC,IAAI,qBAAqBotB,EAAErtB,OAAOC,IAAI,kBAAkBklB,EAAEnlB,OAAOC,IAAI,kBAAkBqlB,EAAEtlB,OAAOC,IAAI,iBAAiBtC,EAAEqC,OAAOC,IAAI,qBAAqBslB,EAAEvlB,OAAOC,IAAI,kBAAkBolB,EAAErlB,OAAOC,IAAI,cAAcqtB,EAAEttB,OAAOC,IAAI,cAAcxB,EAAEuB,OAAOe,SACzW,IAAImO,EAAE,CAACmoB,UAAU,WAAW,OAAM,CAAE,EAAEI,mBAAmB,WAAW,EAAED,oBAAoB,WAAW,EAAED,gBAAgB,WAAW,GAAG9lB,EAAEpU,OAAO8D,OAAOojB,EAAE,CAAC,EAAE,SAASgE,EAAEnsB,EAAEC,EAAEwB,GAAGG,KAAK+uB,MAAM3wB,EAAE4B,KAAK0wB,QAAQryB,EAAE2B,KAAKuuB,KAAKhI,EAAEvmB,KAAKg6B,QAAQn6B,GAAGqR,CAAC,CACwI,SAASsW,IAAI,CAAyB,SAASgD,EAAEpsB,EAAEC,EAAEwB,GAAGG,KAAK+uB,MAAM3wB,EAAE4B,KAAK0wB,QAAQryB,EAAE2B,KAAKuuB,KAAKhI,EAAEvmB,KAAKg6B,QAAQn6B,GAAGqR,CAAC,CADxPqZ,EAAEjrB,UAAUqnC,iBAAiB,CAAC,EACpQpc,EAAEjrB,UAAU4sC,SAAS,SAAS9tC,EAAEC,GAAG,GAAG,kBAAkBD,GAAG,oBAAoBA,GAAG,MAAMA,EAAE,MAAMiF,MAAM,yHAAyHrD,KAAKg6B,QAAQT,gBAAgBv5B,KAAK5B,EAAEC,EAAE,WAAW,EAAEksB,EAAEjrB,UAAU6sC,YAAY,SAAS/tC,GAAG4B,KAAKg6B,QAAQP,mBAAmBz5B,KAAK5B,EAAE,cAAc,EAAgBopB,EAAEloB,UAAUirB,EAAEjrB,UAAsF,IAAIorB,EAAEF,EAAElrB,UAAU,IAAIkoB,EACrfkD,EAAErlB,YAAYmlB,EAAE/W,EAAEiX,EAAEH,EAAEjrB,WAAWorB,EAAEkP,sBAAqB,EAAG,IAAI9M,EAAE7lB,MAAMC,QAAQkgB,EAAE/nB,OAAOC,UAAUC,eAAe0yB,EAAE,CAAC1hB,QAAQ,MAAM0iB,EAAE,CAAC1W,KAAI,EAAG6R,KAAI,EAAGyd,QAAO,EAAGC,UAAS,GACtK,SAASnY,EAAEv1B,EAAEC,EAAEwB,GAAG,IAAID,EAAEtB,EAAE,CAAC,EAAE4F,EAAE,KAAKD,EAAE,KAAK,GAAG,MAAM5F,EAAE,IAAIuB,UAAK,IAASvB,EAAE+vB,MAAMnqB,EAAE5F,EAAE+vB,UAAK,IAAS/vB,EAAEke,MAAMrY,EAAE,GAAG7F,EAAEke,KAAKle,EAAE+oB,EAAE/lB,KAAKhD,EAAEuB,KAAKqzB,EAAE1zB,eAAeK,KAAKtB,EAAEsB,GAAGvB,EAAEuB,IAAI,IAAIG,EAAExB,UAAUC,OAAO,EAAE,GAAG,IAAIuB,EAAEzB,EAAEoJ,SAAS7H,OAAO,GAAG,EAAEE,EAAE,CAAC,IAAI,IAAID,EAAEmH,MAAMlH,GAAGqP,EAAE,EAAEA,EAAErP,EAAEqP,IAAItP,EAAEsP,GAAG7Q,UAAU6Q,EAAE,GAAG9Q,EAAEoJ,SAAS5H,CAAC,CAAC,GAAG1B,GAAGA,EAAE86B,aAAa,IAAIt5B,KAAKG,EAAE3B,EAAE86B,kBAAe,IAAS56B,EAAEsB,KAAKtB,EAAEsB,GAAGG,EAAEH,IAAI,MAAM,CAAC8E,SAASV,EAAE1D,KAAKlC,EAAEme,IAAIrY,EAAEkqB,IAAInqB,EAAE8qB,MAAMzwB,EAAE+vB,OAAO4D,EAAE1hB,QAAQ,CAChV,SAASsjB,EAAEz1B,GAAG,MAAM,kBAAkBA,GAAG,OAAOA,GAAGA,EAAEsG,WAAWV,CAAC,CAAoG,IAAIkwB,EAAE,OAAO,SAAS4B,EAAE13B,EAAEC,GAAG,MAAM,kBAAkBD,GAAG,OAAOA,GAAG,MAAMA,EAAEme,IAA7K,SAAgBne,GAAG,IAAIC,EAAE,CAAC,IAAI,KAAK,IAAI,MAAM,MAAM,IAAID,EAAEuD,QAAQ,SAAQ,SAASvD,GAAG,OAAOC,EAAED,EAAE,GAAE,CAA+EguC,CAAO,GAAGhuC,EAAEme,KAAKle,EAAEiK,SAAS,GAAG,CAC/W,SAASsvB,EAAEx5B,EAAEC,EAAEwB,EAAED,EAAEtB,GAAG,IAAI4F,SAAS9F,EAAK,cAAc8F,GAAG,YAAYA,IAAE9F,EAAE,MAAK,IAAI6F,GAAE,EAAG,GAAG,OAAO7F,EAAE6F,GAAE,OAAQ,OAAOC,GAAG,IAAK,SAAS,IAAK,SAASD,GAAE,EAAG,MAAM,IAAK,SAAS,OAAO7F,EAAEsG,UAAU,KAAKV,EAAE,KAAKkjB,EAAEjjB,GAAE,GAAI,GAAGA,EAAE,OAAW3F,EAAEA,EAAN2F,EAAE7F,GAASA,EAAE,KAAKwB,EAAE,IAAIk2B,EAAE7xB,EAAE,GAAGrE,EAAEktB,EAAExuB,IAAIuB,EAAE,GAAG,MAAMzB,IAAIyB,EAAEzB,EAAEuD,QAAQuyB,EAAE,OAAO,KAAK0D,EAAEt5B,EAAED,EAAEwB,EAAE,IAAG,SAASzB,GAAG,OAAOA,CAAC,KAAI,MAAME,IAAIu1B,EAAEv1B,KAAKA,EADnW,SAAWF,EAAEC,GAAG,MAAM,CAACqG,SAASV,EAAE1D,KAAKlC,EAAEkC,KAAKic,IAAIle,EAAE+vB,IAAIhwB,EAAEgwB,IAAIW,MAAM3wB,EAAE2wB,MAAMV,OAAOjwB,EAAEiwB,OAAO,CACyQuF,CAAEt1B,EAAEuB,IAAIvB,EAAEie,KAAKtY,GAAGA,EAAEsY,MAAMje,EAAEie,IAAI,IAAI,GAAGje,EAAEie,KAAK5a,QAAQuyB,EAAE,OAAO,KAAK91B,IAAIC,EAAEkQ,KAAKjQ,IAAI,EAAyB,GAAvB2F,EAAE,EAAErE,EAAE,KAAKA,EAAE,IAAIA,EAAE,IAAOktB,EAAE1uB,GAAG,IAAI,IAAI2B,EAAE,EAAEA,EAAE3B,EAAEI,OAAOuB,IAAI,CAC/e,IAAID,EAAEF,EAAEk2B,EADwe5xB,EACrf9F,EAAE2B,GAAeA,GAAGkE,GAAG2zB,EAAE1zB,EAAE7F,EAAEwB,EAAEC,EAAExB,EAAE,MAAM,GAAGwB,EAPsU,SAAW1B,GAAG,OAAG,OAAOA,GAAG,kBAAkBA,EAAS,KAAsC,oBAAjCA,EAAEqC,GAAGrC,EAAEqC,IAAIrC,EAAE,eAA0CA,EAAE,IAAI,CAO5b8E,CAAE9E,GAAG,oBAAoB0B,EAAE,IAAI1B,EAAE0B,EAAEuB,KAAKjD,GAAG2B,EAAE,IAAImE,EAAE9F,EAAEmxB,QAAQC,MAA6BvrB,GAAG2zB,EAA1B1zB,EAAEA,EAAE6B,MAA0B1H,EAAEwB,EAAtBC,EAAEF,EAAEk2B,EAAE5xB,EAAEnE,KAAkBzB,QAAQ,GAAG,WAAW4F,EAAE,MAAM7F,EAAEme,OAAOpe,GAAGiF,MAAM,mDAAmD,oBAAoBhF,EAAE,qBAAqBgB,OAAO6M,KAAK9N,GAAGqwB,KAAK,MAAM,IAAIpwB,GAAG,6EAA6E,OAAO4F,CAAC,CACzZ,SAASq7B,EAAElhC,EAAEC,EAAEwB,GAAG,GAAG,MAAMzB,EAAE,OAAOA,EAAE,IAAIwB,EAAE,GAAGtB,EAAE,EAAmD,OAAjDs5B,EAAEx5B,EAAEwB,EAAE,GAAG,IAAG,SAASxB,GAAG,OAAOC,EAAEgD,KAAKxB,EAAEzB,EAAEE,IAAI,IAAUsB,CAAC,CAAC,SAASsgC,EAAE9hC,GAAG,IAAI,IAAIA,EAAEiuC,QAAQ,CAAC,IAAIhuC,EAAED,EAAEkuC,SAAQjuC,EAAEA,KAAMmrB,MAAK,SAASnrB,GAAM,IAAID,EAAEiuC,UAAU,IAAIjuC,EAAEiuC,UAAQjuC,EAAEiuC,QAAQ,EAAEjuC,EAAEkuC,QAAQjuC,EAAC,IAAE,SAASA,GAAM,IAAID,EAAEiuC,UAAU,IAAIjuC,EAAEiuC,UAAQjuC,EAAEiuC,QAAQ,EAAEjuC,EAAEkuC,QAAQjuC,EAAC,KAAI,IAAID,EAAEiuC,UAAUjuC,EAAEiuC,QAAQ,EAAEjuC,EAAEkuC,QAAQjuC,EAAE,CAAC,GAAG,IAAID,EAAEiuC,QAAQ,OAAOjuC,EAAEkuC,QAAQC,QAAQ,MAAMnuC,EAAEkuC,OAAQ,CAC5Z,IAAI/L,EAAE,CAAChwB,QAAQ,MAAMmwB,EAAE,CAACtqB,WAAW,MAAMwqB,EAAE,CAACpN,uBAAuB+M,EAAEtqB,wBAAwByqB,EAAEzE,kBAAkBhK,GAAG,SAASwP,IAAI,MAAMp+B,MAAM,2DAA4D,CACzMsnC,EAAQ6B,SAAS,CAACC,IAAInN,EAAE3+B,QAAQ,SAASvC,EAAEC,EAAEwB,GAAGy/B,EAAElhC,GAAE,WAAWC,EAAE8Q,MAAMnP,KAAKzB,UAAU,GAAEsB,EAAE,EAAE6sC,MAAM,SAAStuC,GAAG,IAAIC,EAAE,EAAuB,OAArBihC,EAAElhC,GAAE,WAAWC,GAAG,IAAUA,CAAC,EAAEsuC,QAAQ,SAASvuC,GAAG,OAAOkhC,EAAElhC,GAAE,SAASA,GAAG,OAAOA,CAAC,KAAI,EAAE,EAAEwuC,KAAK,SAASxuC,GAAG,IAAIy1B,EAAEz1B,GAAG,MAAMiF,MAAM,yEAAyE,OAAOjF,CAAC,GAAGusC,EAAQkC,UAAUtiB,EAAEogB,EAAQoB,SAAS5tC,EAAEwsC,EAAQmC,SAASzd,EAAEsb,EAAQoC,cAAcviB,EAAEmgB,EAAQqC,WAAW5d,EAAEub,EAAQsC,SAAS1lB,EAClcojB,EAAQ7oC,mDAAmD8+B,EAAE+J,EAAQuC,IAAIzL,EACzEkJ,EAAQwC,aAAa,SAAS/uC,EAAEC,EAAEwB,GAAG,GAAG,OAAOzB,QAAG,IAASA,EAAE,MAAMiF,MAAM,iFAAiFjF,EAAE,KAAK,IAAIwB,EAAE6T,EAAE,CAAC,EAAErV,EAAE2wB,OAAOzwB,EAAEF,EAAEme,IAAIrY,EAAE9F,EAAEgwB,IAAInqB,EAAE7F,EAAEiwB,OAAO,GAAG,MAAMhwB,EAAE,CAAoE,QAAnE,IAASA,EAAE+vB,MAAMlqB,EAAE7F,EAAE+vB,IAAInqB,EAAEguB,EAAE1hB,cAAS,IAASlS,EAAEke,MAAMje,EAAE,GAAGD,EAAEke,KAAQne,EAAEkC,MAAMlC,EAAEkC,KAAK44B,aAAa,IAAIn5B,EAAE3B,EAAEkC,KAAK44B,aAAa,IAAIp5B,KAAKzB,EAAE+oB,EAAE/lB,KAAKhD,EAAEyB,KAAKmzB,EAAE1zB,eAAeO,KAAKF,EAAEE,QAAG,IAASzB,EAAEyB,SAAI,IAASC,EAAEA,EAAED,GAAGzB,EAAEyB,GAAG,CAAC,IAAIA,EAAEvB,UAAUC,OAAO,EAAE,GAAG,IAAIsB,EAAEF,EAAE8H,SAAS7H,OAAO,GAAG,EAAEC,EAAE,CAACC,EAAEkH,MAAMnH,GACrf,IAAI,IAAIsP,EAAE,EAAEA,EAAEtP,EAAEsP,IAAIrP,EAAEqP,GAAG7Q,UAAU6Q,EAAE,GAAGxP,EAAE8H,SAAS3H,CAAC,CAAC,MAAM,CAAC2E,SAASV,EAAE1D,KAAKlC,EAAEkC,KAAKic,IAAIje,EAAE8vB,IAAIlqB,EAAE6qB,MAAMnvB,EAAEyuB,OAAOpqB,EAAE,EAAE0mC,EAAQyC,cAAc,SAAShvC,GAAqK,OAAlKA,EAAE,CAACsG,SAAS4iB,EAAE2I,cAAc7xB,EAAEivC,eAAejvC,EAAEkvC,aAAa,EAAEC,SAAS,KAAKC,SAAS,KAAKC,cAAc,KAAKC,YAAY,OAAQH,SAAS,CAAC7oC,SAASyiB,EAAExiB,SAASvG,GAAUA,EAAEovC,SAASpvC,CAAC,EAAEusC,EAAQxrC,cAAcw0B,EAAEgX,EAAQgD,cAAc,SAASvvC,GAAG,IAAIC,EAAEs1B,EAAE5M,KAAK,KAAK3oB,GAAY,OAATC,EAAEiC,KAAKlC,EAASC,CAAC,EAAEssC,EAAQiD,UAAU,WAAW,MAAM,CAACr9B,QAAQ,KAAK,EAC9do6B,EAAQkD,WAAW,SAASzvC,GAAG,MAAM,CAACsG,SAAS/E,EAAE6E,OAAOpG,EAAE,EAAEusC,EAAQmD,eAAeja,EAAE8W,EAAQoD,KAAK,SAAS3vC,GAAG,MAAM,CAACsG,SAAS4qB,EAAE1qB,SAAS,CAACynC,SAAS,EAAEC,QAAQluC,GAAGyG,MAAMq7B,EAAE,EAAEyK,EAAQqD,KAAK,SAAS5vC,EAAEC,GAAG,MAAM,CAACqG,SAAS2iB,EAAE/mB,KAAKlC,EAAEm+B,aAAQ,IAASl+B,EAAE,KAAKA,EAAE,EAAEssC,EAAQsD,gBAAgB,SAAS7vC,GAAG,IAAIC,EAAEqiC,EAAEtqB,WAAWsqB,EAAEtqB,WAAW,CAAC,EAAE,IAAIhY,GAAG,CAAC,QAAQsiC,EAAEtqB,WAAW/X,CAAC,CAAC,EAAEssC,EAAQuD,aAAazM,EAAEkJ,EAAQ5S,YAAY,SAAS35B,EAAEC,GAAG,OAAOkiC,EAAEhwB,QAAQwnB,YAAY35B,EAAEC,EAAE,EAAEssC,EAAQ3S,WAAW,SAAS55B,GAAG,OAAOmiC,EAAEhwB,QAAQynB,WAAW55B,EAAE,EAC3fusC,EAAQlS,cAAc,WAAW,EAAEkS,EAAQjS,iBAAiB,SAASt6B,GAAG,OAAOmiC,EAAEhwB,QAAQmoB,iBAAiBt6B,EAAE,EAAEusC,EAAQ1S,UAAU,SAAS75B,EAAEC,GAAG,OAAOkiC,EAAEhwB,QAAQ0nB,UAAU75B,EAAEC,EAAE,EAAEssC,EAAQ7R,MAAM,WAAW,OAAOyH,EAAEhwB,QAAQuoB,OAAO,EAAE6R,EAAQzS,oBAAoB,SAAS95B,EAAEC,EAAEwB,GAAG,OAAO0gC,EAAEhwB,QAAQ2nB,oBAAoB95B,EAAEC,EAAEwB,EAAE,EAAE8qC,EAAQxS,mBAAmB,SAAS/5B,EAAEC,GAAG,OAAOkiC,EAAEhwB,QAAQ4nB,mBAAmB/5B,EAAEC,EAAE,EAAEssC,EAAQvS,gBAAgB,SAASh6B,EAAEC,GAAG,OAAOkiC,EAAEhwB,QAAQ6nB,gBAAgBh6B,EAAEC,EAAE,EACzdssC,EAAQtS,QAAQ,SAASj6B,EAAEC,GAAG,OAAOkiC,EAAEhwB,QAAQ8nB,QAAQj6B,EAAEC,EAAE,EAAEssC,EAAQrS,WAAW,SAASl6B,EAAEC,EAAEwB,GAAG,OAAO0gC,EAAEhwB,QAAQ+nB,WAAWl6B,EAAEC,EAAEwB,EAAE,EAAE8qC,EAAQpS,OAAO,SAASn6B,GAAG,OAAOmiC,EAAEhwB,QAAQgoB,OAAOn6B,EAAE,EAAEusC,EAAQnS,SAAS,SAASp6B,GAAG,OAAOmiC,EAAEhwB,QAAQioB,SAASp6B,EAAE,EAAEusC,EAAQ9R,qBAAqB,SAASz6B,EAAEC,EAAEwB,GAAG,OAAO0gC,EAAEhwB,QAAQsoB,qBAAqBz6B,EAAEC,EAAEwB,EAAE,EAAE8qC,EAAQhS,cAAc,WAAW,OAAO4H,EAAEhwB,QAAQooB,eAAe,EAAEgS,EAAQ1B,QAAQ,qCCtBla2C,EAAOjB,QAAU,EAAjBiB,iCCAAA,EAAOjB,QAAU,EAAjBiB,+BCMW,SAAS9rC,EAAE1B,EAAEC,GAAG,IAAIC,EAAEF,EAAEI,OAAOJ,EAAEmQ,KAAKlQ,GAAGD,EAAE,KAAK,EAAEE,GAAG,CAAC,IAAIsB,EAAEtB,EAAE,IAAI,EAAEuB,EAAEzB,EAAEwB,GAAG,KAAG,EAAEG,EAAEF,EAAExB,IAA0B,MAAMD,EAA7BA,EAAEwB,GAAGvB,EAAED,EAAEE,GAAGuB,EAAEvB,EAAEsB,CAAc,CAAC,CAAC,SAASqE,EAAE7F,GAAG,OAAO,IAAIA,EAAEI,OAAO,KAAKJ,EAAE,EAAE,CAAC,SAAS8F,EAAE9F,GAAG,GAAG,IAAIA,EAAEI,OAAO,OAAO,KAAK,IAAIH,EAAED,EAAE,GAAGE,EAAEF,EAAE+vC,MAAM,GAAG7vC,IAAID,EAAE,CAACD,EAAE,GAAGE,EAAEF,EAAE,IAAI,IAAIwB,EAAE,EAAEC,EAAEzB,EAAEI,OAAO+oB,EAAE1nB,IAAI,EAAED,EAAE2nB,GAAG,CAAC,IAAInY,EAAE,GAAGxP,EAAE,GAAG,EAAE6T,EAAErV,EAAEgR,GAAG8X,EAAE9X,EAAE,EAAEiY,EAAEjpB,EAAE8oB,GAAG,GAAG,EAAEnnB,EAAE0T,EAAEnV,GAAG4oB,EAAErnB,GAAG,EAAEE,EAAEsnB,EAAE5T,IAAIrV,EAAEwB,GAAGynB,EAAEjpB,EAAE8oB,GAAG5oB,EAAEsB,EAAEsnB,IAAI9oB,EAAEwB,GAAG6T,EAAErV,EAAEgR,GAAG9Q,EAAEsB,EAAEwP,OAAQ,MAAG8X,EAAErnB,GAAG,EAAEE,EAAEsnB,EAAE/oB,IAA0B,MAAMF,EAA7BA,EAAEwB,GAAGynB,EAAEjpB,EAAE8oB,GAAG5oB,EAAEsB,EAAEsnB,CAAc,EAAC,CAAC,OAAO7oB,CAAC,CAC3c,SAAS0B,EAAE3B,EAAEC,GAAG,IAAIC,EAAEF,EAAEgwC,UAAU/vC,EAAE+vC,UAAU,OAAO,IAAI9vC,EAAEA,EAAEF,EAAEoY,GAAGnY,EAAEmY,EAAE,CAAC,GAAG,kBAAkB63B,aAAa,oBAAoBA,YAAY31B,IAAI,CAAC,IAAI1U,EAAEqqC,YAAY1D,EAAQx5B,aAAa,WAAW,OAAOnN,EAAE0U,KAAK,CAAC,KAAK,CAAC,IAAIva,EAAEsa,KAAK2W,EAAEjxB,EAAEua,MAAMiyB,EAAQx5B,aAAa,WAAW,OAAOhT,EAAEua,MAAM0W,CAAC,CAAC,CAAC,IAAIC,EAAE,GAAGlI,EAAE,GAAGG,EAAE,EAAE3nB,EAAE,KAAK2vB,EAAE,EAAE7uB,GAAE,EAAGyC,GAAE,EAAGgO,GAAE,EAAGqV,EAAE,oBAAoByC,WAAWA,WAAW,KAAKuB,EAAE,oBAAoBrB,aAAaA,aAAa,KAAK1B,EAAE,qBAAqB8mB,aAAaA,aAAa,KACnT,SAAS9jB,EAAEpsB,GAAG,IAAI,IAAIC,EAAE4F,EAAEkjB,GAAG,OAAO9oB,GAAG,CAAC,GAAG,OAAOA,EAAE0zB,SAAS7tB,EAAEijB,OAAQ,MAAG9oB,EAAEkwC,WAAWnwC,GAAgD,MAA9C8F,EAAEijB,GAAG9oB,EAAE+vC,UAAU/vC,EAAEmwC,eAAe1uC,EAAEuvB,EAAEhxB,EAAa,CAACA,EAAE4F,EAAEkjB,EAAE,CAAC,CAAC,SAASuD,EAAEtsB,GAAa,GAAV8S,GAAE,EAAGsZ,EAAEpsB,IAAO8E,EAAE,GAAG,OAAOe,EAAEorB,GAAGnsB,GAAE,EAAG4pB,EAAE1F,OAAO,CAAC,IAAI/oB,EAAE4F,EAAEkjB,GAAG,OAAO9oB,GAAG4zB,EAAEvH,EAAErsB,EAAEkwC,UAAUnwC,EAAE,CAAC,CACra,SAASgpB,EAAEhpB,EAAEC,GAAG6E,GAAE,EAAGgO,IAAIA,GAAE,EAAGqZ,EAAE0I,GAAGA,GAAG,GAAGxyB,GAAE,EAAG,IAAInC,EAAEgxB,EAAE,IAAS,IAAL9E,EAAEnsB,GAAOsB,EAAEsE,EAAEorB,GAAG,OAAO1vB,MAAMA,EAAE6uC,eAAenwC,IAAID,IAAIu1B,MAAM,CAAC,IAAI/zB,EAAED,EAAEoyB,SAAS,GAAG,oBAAoBnyB,EAAE,CAACD,EAAEoyB,SAAS,KAAKzC,EAAE3vB,EAAE8uC,cAAc,IAAI5uC,EAAED,EAAED,EAAE6uC,gBAAgBnwC,GAAGA,EAAEssC,EAAQx5B,eAAe,oBAAoBtR,EAAEF,EAAEoyB,SAASlyB,EAAEF,IAAIsE,EAAEorB,IAAInrB,EAAEmrB,GAAG7E,EAAEnsB,EAAE,MAAM6F,EAAEmrB,GAAG1vB,EAAEsE,EAAEorB,EAAE,CAAC,GAAG,OAAO1vB,EAAE,IAAI4nB,GAAE,MAAO,CAAC,IAAInY,EAAEnL,EAAEkjB,GAAG,OAAO/X,GAAG6iB,EAAEvH,EAAEtb,EAAEm/B,UAAUlwC,GAAGkpB,GAAE,CAAE,CAAC,OAAOA,CAAC,CAAC,QAAQ5nB,EAAE,KAAK2vB,EAAEhxB,EAAEmC,GAAE,CAAE,CAAC,CAD1a,qBAAqBiuC,gBAAW,IAASA,UAAUC,iBAAY,IAASD,UAAUC,WAAWC,gBAAgBF,UAAUC,WAAWC,eAAe7nB,KAAK2nB,UAAUC,YAC2Q,IACzPrP,EAD6P1L,GAAE,EAAGC,EAAE,KAAKZ,GAAG,EAAEiB,EAAE,EAAE4B,GAAG,EACvc,SAASnC,IAAI,QAAOgX,EAAQx5B,eAAe2kB,EAAE5B,EAAO,CAAC,SAAS0D,IAAI,GAAG,OAAO/D,EAAE,CAAC,IAAIz1B,EAAEusC,EAAQx5B,eAAe2kB,EAAE13B,EAAE,IAAIC,GAAE,EAAG,IAAIA,EAAEw1B,GAAE,EAAGz1B,EAAE,CAAC,QAAQC,EAAEihC,KAAK1L,GAAE,EAAGC,EAAE,KAAK,CAAC,MAAMD,GAAE,CAAE,CAAO,GAAG,oBAAoBpM,EAAE8X,EAAE,WAAW9X,EAAEoQ,EAAE,OAAO,GAAG,qBAAqBiX,eAAe,CAAC,IAAI3O,EAAE,IAAI2O,eAAetO,EAAEL,EAAE4O,MAAM5O,EAAE6O,MAAMC,UAAUpX,EAAE0H,EAAE,WAAWiB,EAAE0O,YAAY,KAAK,CAAC,MAAM3P,EAAE,WAAW/Y,EAAEqR,EAAE,EAAE,EAAE,SAAS9K,EAAE1uB,GAAGy1B,EAAEz1B,EAAEw1B,IAAIA,GAAE,EAAG0L,IAAI,CAAC,SAASrN,EAAE7zB,EAAEC,GAAG40B,EAAE1M,GAAE,WAAWnoB,EAAEusC,EAAQx5B,eAAe,GAAE9S,EAAE,CAC5dssC,EAAQ54B,sBAAsB,EAAE44B,EAAQp5B,2BAA2B,EAAEo5B,EAAQ94B,qBAAqB,EAAE84B,EAAQh5B,wBAAwB,EAAEg5B,EAAQuE,mBAAmB,KAAKvE,EAAQl5B,8BAA8B,EAAEk5B,EAAQ95B,wBAAwB,SAASzS,GAAGA,EAAE2zB,SAAS,IAAI,EAAE4Y,EAAQwE,2BAA2B,WAAWjsC,GAAGzC,IAAIyC,GAAE,EAAG4pB,EAAE1F,GAAG,EAC1UujB,EAAQyE,wBAAwB,SAAShxC,GAAG,EAAEA,GAAG,IAAIA,EAAE28B,QAAQC,MAAM,mHAAmH9G,EAAE,EAAE91B,EAAE+T,KAAKk9B,MAAM,IAAIjxC,GAAG,CAAC,EAAEusC,EAAQt5B,iCAAiC,WAAW,OAAOie,CAAC,EAAEqb,EAAQ2E,8BAA8B,WAAW,OAAOrrC,EAAEorB,EAAE,EAAEsb,EAAQ4E,cAAc,SAASnxC,GAAG,OAAOkxB,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAIjxB,EAAE,EAAE,MAAM,QAAQA,EAAEixB,EAAE,IAAIhxB,EAAEgxB,EAAEA,EAAEjxB,EAAE,IAAI,OAAOD,GAAG,CAAC,QAAQkxB,EAAEhxB,CAAC,CAAC,EAAEqsC,EAAQ6E,wBAAwB,WAAW,EAC9f7E,EAAQ15B,sBAAsB,WAAW,EAAE05B,EAAQ8E,yBAAyB,SAASrxC,EAAEC,GAAG,OAAOD,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQA,EAAE,EAAE,IAAIE,EAAEgxB,EAAEA,EAAElxB,EAAE,IAAI,OAAOC,GAAG,CAAC,QAAQixB,EAAEhxB,CAAC,CAAC,EAChMqsC,EAAQh6B,0BAA0B,SAASvS,EAAEC,EAAEC,GAAG,IAAIsB,EAAE+qC,EAAQx5B,eAA8F,OAA/E,kBAAkB7S,GAAG,OAAOA,EAAaA,EAAE,kBAAZA,EAAEA,EAAEoxC,QAA6B,EAAEpxC,EAAEsB,EAAEtB,EAAEsB,EAAGtB,EAAEsB,EAASxB,GAAG,KAAK,EAAE,IAAIyB,GAAG,EAAE,MAAM,KAAK,EAAEA,EAAE,IAAI,MAAM,KAAK,EAAEA,EAAE,WAAW,MAAM,KAAK,EAAEA,EAAE,IAAI,MAAM,QAAQA,EAAE,IAAmN,OAAzMzB,EAAE,CAACoY,GAAG8Q,IAAIyK,SAAS1zB,EAAEowC,cAAcrwC,EAAEmwC,UAAUjwC,EAAEkwC,eAAvD3uC,EAAEvB,EAAEuB,EAAoEuuC,WAAW,GAAG9vC,EAAEsB,GAAGxB,EAAEgwC,UAAU9vC,EAAEwB,EAAEqnB,EAAE/oB,GAAG,OAAO6F,EAAEorB,IAAIjxB,IAAI6F,EAAEkjB,KAAKjW,GAAGqZ,EAAE0I,GAAGA,GAAG,GAAG/hB,GAAE,EAAG+gB,EAAEvH,EAAEpsB,EAAEsB,MAAMxB,EAAEgwC,UAAUvuC,EAAEC,EAAEuvB,EAAEjxB,GAAG8E,GAAGzC,IAAIyC,GAAE,EAAG4pB,EAAE1F,KAAYhpB,CAAC,EACneusC,EAAQ55B,qBAAqB4iB,EAAEgX,EAAQgF,sBAAsB,SAASvxC,GAAG,IAAIC,EAAEixB,EAAE,OAAO,WAAW,IAAIhxB,EAAEgxB,EAAEA,EAAEjxB,EAAE,IAAI,OAAOD,EAAE+Q,MAAMnP,KAAKzB,UAAU,CAAC,QAAQ+wB,EAAEhxB,CAAC,CAAC,CAAC,8BCf7JstC,EAAOjB,QAAU,EAAjBiB,cCEFA,EAAOjB,QAAU,CACf,MAAQ,EACR,MAAQ,EACR,IAAM,EACN,KAAO,EACP,OAAS,EACT,IAAM,EACN,KAAO,EACP,OAAS,EACT,MAAQ,EACR,MAAQ,EACR,OAAS,EACT,QAAU,EACV,OAAS,EACT,KAAO,KClBLiF,EAA2B,CAAC,EAGhC,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAapF,QAGrB,IAAIiB,EAASgE,EAAyBE,GAAY,CAGjDnF,QAAS,CAAC,GAOX,OAHAsF,EAAoBH,GAAUlE,EAAQA,EAAOjB,QAASkF,GAG/CjE,EAAOjB,OACf,CAGAkF,EAAoBzgC,EAAI6gC,ECxBxBJ,EAAoB3oB,EAAK0kB,IACxB,IAAIsE,EAAStE,GAAUA,EAAOuE,WAC7B,IAAOvE,EAAiB,QACxB,IAAM,EAEP,OADAiE,EAAoBjwC,EAAEswC,EAAQ,CAAE9xC,EAAG8xC,IAC5BA,CAAM,QCNd,IACIE,EADAC,EAAWhxC,OAAOixC,eAAkBC,GAASlxC,OAAOixC,eAAeC,GAASA,GAASA,EAAa,UAQtGV,EAAoB1oB,EAAI,SAASphB,EAAO2nB,GAEvC,GADU,EAAPA,IAAU3nB,EAAQ/F,KAAK+F,IAChB,EAAP2nB,EAAU,OAAO3nB,EACpB,GAAoB,kBAAVA,GAAsBA,EAAO,CACtC,GAAW,EAAP2nB,GAAa3nB,EAAMoqC,WAAY,OAAOpqC,EAC1C,GAAW,GAAP2nB,GAAoC,oBAAf3nB,EAAMyjB,KAAqB,OAAOzjB,CAC5D,CACA,IAAIyqC,EAAKnxC,OAAOk3B,OAAO,MACvBsZ,EAAoBxgB,EAAEmhB,GACtB,IAAIC,EAAM,CAAC,EACXL,EAAiBA,GAAkB,CAAC,KAAMC,EAAS,CAAC,GAAIA,EAAS,IAAKA,EAASA,IAC/E,IAAI,IAAI9/B,EAAiB,EAAPmd,GAAY3nB,EAAyB,iBAAXwK,KAAyB6/B,EAAepkC,QAAQuE,GAAUA,EAAU8/B,EAAS9/B,GACxHlR,OAAOqxC,oBAAoBngC,GAAS5P,SAAS4b,GAASk0B,EAAIl0B,GAAO,IAAOxW,EAAMwW,KAI/E,OAFAk0B,EAAa,QAAI,IAAM,EACvBZ,EAAoBjwC,EAAE4wC,EAAIC,GACnBD,CACR,MCxBAX,EAAoBjwC,EAAI,CAAC+qC,EAASgG,KACjC,IAAI,IAAIp0B,KAAOo0B,EACXd,EAAoBe,EAAED,EAAYp0B,KAASszB,EAAoBe,EAAEjG,EAASpuB,IAC5Eld,OAAOuE,eAAe+mC,EAASpuB,EAAK,CAAE/W,YAAY,EAAMF,IAAKqrC,EAAWp0B,IAE1E,ECNDszB,EAAoB/vC,EAAI,CAAC,EAGzB+vC,EAAoBhwC,EAAKgxC,GACjBznB,QAAQ0nB,IAAIzxC,OAAO6M,KAAK2jC,EAAoB/vC,GAAGixC,QAAO,CAACC,EAAUz0B,KACvEszB,EAAoB/vC,EAAEyc,GAAKs0B,EAASG,GAC7BA,IACL,KCNJnB,EAAoBvoB,EAAKupB,GAEjB,aAAeA,EAAf,qBCFRhB,EAAoBoB,SAAYJ,IAEf,ECHjBhB,EAAoBe,EAAI,CAACL,EAAKW,IAAU7xC,OAAOC,UAAUC,eAAe8B,KAAKkvC,EAAKW,SCAlF,IAAIC,EAAa,CAAC,EACdC,EAAoB,gBAExBvB,EAAoB7rC,EAAI,CAACgc,EAAKwP,EAAMjT,EAAKs0B,KACxC,GAAGM,EAAWnxB,GAAQmxB,EAAWnxB,GAAKzR,KAAKihB,OAA3C,CACA,IAAI6hB,EAAQC,EACZ,QAAWtB,IAARzzB,EAEF,IADA,IAAIg1B,EAAUryC,SAASsyC,qBAAqB,UACpCC,EAAI,EAAGA,EAAIF,EAAQ/yC,OAAQizC,IAAK,CACvC,IAAIC,EAAIH,EAAQE,GAChB,GAAGC,EAAEC,aAAa,QAAU3xB,GAAO0xB,EAAEC,aAAa,iBAAmBP,EAAoB70B,EAAK,CAAE80B,EAASK,EAAG,KAAO,CACpH,CAEGL,IACHC,GAAa,GACbD,EAASnyC,SAASC,cAAc,WAEzByyC,QAAU,QACjBP,EAAOQ,QAAU,IACbhC,EAAoBiC,IACvBT,EAAO5vC,aAAa,QAASouC,EAAoBiC,IAElDT,EAAO5vC,aAAa,eAAgB2vC,EAAoB70B,GAExD80B,EAAOxO,IAAM7iB,GAEdmxB,EAAWnxB,GAAO,CAACwP,GACnB,IAAIuiB,EAAmB,CAACC,EAAM3xB,KAE7BgxB,EAAOY,QAAUZ,EAAOa,OAAS,KACjChpB,aAAa2oB,GACb,IAAIM,EAAUhB,EAAWnxB,GAIzB,UAHOmxB,EAAWnxB,GAClBqxB,EAAOvjC,YAAcujC,EAAOvjC,WAAWtF,YAAY6oC,GACnDc,GAAWA,EAAQxxC,SAASyxC,GAAQA,EAAG/xB,KACpC2xB,EAAM,OAAOA,EAAK3xB,EAAM,EAExBwxB,EAAU7oB,WAAW+oB,EAAiBhrB,KAAK,UAAMipB,EAAW,CAAE1vC,KAAM,UAAWqN,OAAQ0jC,IAAW,MACtGA,EAAOY,QAAUF,EAAiBhrB,KAAK,KAAMsqB,EAAOY,SACpDZ,EAAOa,OAASH,EAAiBhrB,KAAK,KAAMsqB,EAAOa,QACnDZ,GAAcpyC,SAASmzC,KAAK5pC,YAAY4oC,EApCkB,CAoCX,MCvChDxB,EAAoBxgB,EAAKsb,IACH,qBAAX3oC,QAA0BA,OAAOswC,aAC1CjzC,OAAOuE,eAAe+mC,EAAS3oC,OAAOswC,YAAa,CAAEvsC,MAAO,WAE7D1G,OAAOuE,eAAe+mC,EAAS,aAAc,CAAE5kC,OAAO,GAAO,ECL9D8pC,EAAoB1xC,EAAI,UCKxB,IAAIo0C,EAAkB,CACrB,IAAK,GAGN1C,EAAoB/vC,EAAE0yC,EAAI,CAAC3B,EAASG,KAElC,IAAIyB,EAAqB5C,EAAoBe,EAAE2B,EAAiB1B,GAAW0B,EAAgB1B,QAAWb,EACtG,GAA0B,IAAvByC,EAGF,GAAGA,EACFzB,EAASziC,KAAKkkC,EAAmB,QAC3B,CAGL,IAAIC,EAAU,IAAItpB,SAAQ,CAACG,EAASopB,IAAYF,EAAqBF,EAAgB1B,GAAW,CAACtnB,EAASopB,KAC1G3B,EAASziC,KAAKkkC,EAAmB,GAAKC,GAGtC,IAAI1yB,EAAM6vB,EAAoB1xC,EAAI0xC,EAAoBvoB,EAAEupB,GAEpD7V,EAAQ,IAAI33B,MAgBhBwsC,EAAoB7rC,EAAEgc,GAfFK,IACnB,GAAGwvB,EAAoBe,EAAE2B,EAAiB1B,KAEf,KAD1B4B,EAAqBF,EAAgB1B,MACR0B,EAAgB1B,QAAWb,GACrDyC,GAAoB,CACtB,IAAIG,EAAYvyB,IAAyB,SAAfA,EAAM/f,KAAkB,UAAY+f,EAAM/f,MAChEuyC,EAAUxyB,GAASA,EAAM1S,QAAU0S,EAAM1S,OAAOk1B,IACpD7H,EAAML,QAAU,iBAAmBkW,EAAU,cAAgB+B,EAAY,KAAOC,EAAU,IAC1F7X,EAAM32B,KAAO,iBACb22B,EAAM16B,KAAOsyC,EACb5X,EAAM8X,QAAUD,EAChBJ,EAAmB,GAAGzX,EACvB,CACD,GAEwC,SAAW6V,EAASA,EAE/D,CACD,EAcF,IAAIkC,EAAuB,CAACC,EAA4B/3B,KACvD,IAKI60B,EAAUe,EALVoC,EAAWh4B,EAAK,GAChBi4B,EAAcj4B,EAAK,GACnBk4B,EAAUl4B,EAAK,GAGIw2B,EAAI,EAC3B,GAAGwB,EAASG,MAAM58B,GAAgC,IAAxB+7B,EAAgB/7B,KAAa,CACtD,IAAIs5B,KAAYoD,EACZrD,EAAoBe,EAAEsC,EAAapD,KACrCD,EAAoBzgC,EAAE0gC,GAAYoD,EAAYpD,IAGhD,GAAGqD,EAAsBA,EAAQtD,EAClC,CAEA,IADGmD,GAA4BA,EAA2B/3B,GACrDw2B,EAAIwB,EAASz0C,OAAQizC,IACzBZ,EAAUoC,EAASxB,GAChB5B,EAAoBe,EAAE2B,EAAiB1B,IAAY0B,EAAgB1B,IACrE0B,EAAgB1B,GAAS,KAE1B0B,EAAgB1B,GAAW,CAC5B,EAIGwC,EAAqBC,KAA+B,yBAAIA,KAA+B,0BAAK,GAChGD,EAAmB1yC,QAAQoyC,EAAqBhsB,KAAK,KAAM,IAC3DssB,EAAmB9kC,KAAOwkC,EAAqBhsB,KAAK,KAAMssB,EAAmB9kC,KAAKwY,KAAKssB,+KChF3EE,oQAAZ,SAAYA,GAQVA,EAAA,UAOAA,EAAA,YAMAA,EAAA,iBACD,CAtBD,CAAYA,IAAAA,EAsBX,KAqKD,MAAMC,EAAoB,WAySV,SAAAC,EAAU1tC,EAAY40B,GACpC,IAAc,IAAV50B,GAA6B,OAAVA,GAAmC,qBAAVA,EAC9C,MAAM,IAAI1C,MAAMs3B,EAEpB,CAEgB,SAAA+Y,EAAQC,EAAWhZ,GACjC,IAAKgZ,EAAM,CAEc,qBAAZ5Y,SAAyBA,QAAQ6Y,KAAKjZ,GAEjD,IAME,MAAM,IAAIt3B,MAAMs3B,EAEjB,CAAC,MAAO96B,GAAI,CACd,CACH,CASA,SAASg0C,EAAgBl3B,EAAoBiS,GAC3C,MAAO,CACLklB,IAAKn3B,EAASod,MACdxd,IAAKI,EAASJ,IACdw3B,IAAKnlB,EAET,CAKM,SAAUolB,EACdzjC,EACA0jC,EACAla,EACAxd,GAcA,YAfA,IAAAwd,IAAAA,EAAa,MAGDma,EAAA,CACVC,SAA6B,kBAAZ5jC,EAAuBA,EAAUA,EAAQ4jC,SAC1Dv0B,OAAQ,GACRw0B,KAAM,IACY,kBAAPH,EAAkBI,EAAUJ,GAAMA,EAAE,CAC/Cla,QAKAxd,IAAM03B,GAAOA,EAAgB13B,KAAQA,GAjChCpK,KAAK0U,SAASve,SAAS,IAAIgsC,OAAO,EAAG,IAoC9C,CAKgB,SAAAC,EAAUC,GAIV,IAJW,SACzBL,EAAW,IAAG,OACdv0B,EAAS,GAAE,KACXw0B,EAAO,IACOI,EAKd,OAJI50B,GAAqB,MAAXA,IACZu0B,GAAiC,MAArBv0B,EAAOzT,OAAO,GAAayT,EAAS,IAAMA,GACpDw0B,GAAiB,MAATA,IACVD,GAA+B,MAAnBC,EAAKjoC,OAAO,GAAaioC,EAAO,IAAMA,GAC7CD,CACT,CAKM,SAAUE,EAAUI,GACxB,IAAIC,EAA4B,CAAC,EAEjC,GAAID,EAAM,CACR,IAAIE,EAAYF,EAAKzoC,QAAQ,KACzB2oC,GAAa,IACfD,EAAWN,KAAOK,EAAKH,OAAOK,GAC9BF,EAAOA,EAAKH,OAAO,EAAGK,IAGxB,IAAIC,EAAcH,EAAKzoC,QAAQ,KAC3B4oC,GAAe,IACjBF,EAAW90B,OAAS60B,EAAKH,OAAOM,GAChCH,EAAOA,EAAKH,OAAO,EAAGM,IAGpBH,IACFC,EAAWP,SAAWM,EAEzB,CAED,OAAOC,CACT,CASA,SAASG,EACPC,EACAC,EACAC,EACA5tC,QAAA,IAAAA,IAAAA,EAA6B,CAAC,GAE9B,IAAI,OAAEnI,EAASC,SAASkkB,YAAY,SAAE6xB,GAAW,GAAU7tC,EACvD8tC,EAAgBj2C,EAAOk2C,QACvBlgB,EAASse,EAAO6B,IAChB9uB,EAA4B,KAE5BsI,EAAQymB,IASZ,SAASA,IAEP,OADYH,EAAcnb,OAAS,CAAEga,IAAK,OAC7BA,GACf,CAEA,SAASuB,IACPrgB,EAASse,EAAO6B,IAChB,IAAIG,EAAYF,IACZG,EAAqB,MAAbD,EAAoB,KAAOA,EAAY3mB,EACnDA,EAAQ2mB,EACJjvB,GACFA,EAAS,CAAE2O,SAAQtY,SAAUw4B,EAAQx4B,SAAU64B,SAEnD,CA+CA,SAASC,EAAUxB,GAIjB,IAAIznC,EACyB,SAA3BvN,EAAO0d,SAAS+4B,OACZz2C,EAAO0d,SAAS+4B,OAChBz2C,EAAO0d,SAAS6F,KAElBA,EAAqB,kBAAPyxB,EAAkBA,EAAKM,EAAWN,GASpD,OALAzxB,EAAOA,EAAK7gB,QAAQ,KAAM,OAC1B8xC,EACEjnC,EACsE,sEAAAgW,GAEjE,IAAImzB,IAAInzB,EAAMhW,EACvB,CApFa,MAAToiB,IACFA,EAAQ,EACRsmB,EAAcU,aAAY1B,EAAM,GAAAgB,EAAcnb,MAAO,CAAAga,IAAKnlB,IAAS,KAoFrE,IAAIumB,EAAmB,CACrB,UAAIlgB,GACF,OAAOA,GAET,YAAItY,GACF,OAAOm4B,EAAY71C,EAAQi2C,IAE7BW,MAAAA,CAAOzD,GACL,GAAI9rB,EACF,MAAM,IAAIjjB,MAAM,8CAKlB,OAHApE,EAAO+P,iBAAiBwkC,EAAmB8B,GAC3ChvB,EAAW8rB,EAEJ,KACLnzC,EAAOgQ,oBAAoBukC,EAAmB8B,GAC9ChvB,EAAW,IAAI,GAGnByuB,WAAWd,GACFc,EAAW91C,EAAQg1C,GAE5BwB,YACAK,cAAAA,CAAe7B,GAEb,IAAIj0B,EAAMy1B,EAAUxB,GACpB,MAAO,CACLE,SAAUn0B,EAAIm0B,SACdv0B,OAAQI,EAAIJ,OACZw0B,KAAMp0B,EAAIo0B,OAGd7lC,KAlGF,SAAc0lC,EAAQla,GACpB9E,EAASse,EAAOwC,KAChB,IAAIp5B,EAAWq3B,EAAemB,EAAQx4B,SAAUs3B,EAAIla,GAChDib,GAAkBA,EAAiBr4B,EAAUs3B,GAEjDrlB,EAAQymB,IAAa,EACrB,IAAIW,EAAenC,EAAgBl3B,EAAUiS,GACzC5O,EAAMm1B,EAAQJ,WAAWp4B,GAG7B,IACEu4B,EAAce,UAAUD,EAAc,GAAIh2B,GAC1C,MAAOgb,GAKP,GAAIA,aAAiBkb,cAA+B,mBAAflb,EAAM32B,KACzC,MAAM22B,EAIR/7B,EAAO0d,SAASxZ,OAAO6c,EACxB,CAEGi1B,GAAY3uB,GACdA,EAAS,CAAE2O,SAAQtY,SAAUw4B,EAAQx4B,SAAU64B,MAAO,GAE1D,EAuEE7zC,QArEF,SAAiBsyC,EAAQla,GACvB9E,EAASse,EAAO4C,QAChB,IAAIx5B,EAAWq3B,EAAemB,EAAQx4B,SAAUs3B,EAAIla,GAChDib,GAAkBA,EAAiBr4B,EAAUs3B,GAEjDrlB,EAAQymB,IACR,IAAIW,EAAenC,EAAgBl3B,EAAUiS,GACzC5O,EAAMm1B,EAAQJ,WAAWp4B,GAC7Bu4B,EAAcU,aAAaI,EAAc,GAAIh2B,GAEzCi1B,GAAY3uB,GACdA,EAAS,CAAE2O,SAAQtY,SAAUw4B,EAAQx4B,SAAU64B,MAAO,GAE1D,EAyDEY,GAAGlvB,GACMguB,EAAckB,GAAGlvB,IAI5B,OAAOiuB,CACT,CC7tBA,IAAYkB,GAAZ,SAAYA,GACVA,EAAA,YACAA,EAAA,oBACAA,EAAA,oBACAA,EAAA,aACD,CALD,CAAYA,IAAAA,EAKX,KAkRiC,IAAI13C,IAAuB,CAC3D,OACA,gBACA,OACA,KACA,QACA,aAoNI,SAAU23C,EAGdC,EACAC,EACAC,GAEA,YAFQ,IAARA,IAAAA,EAAW,KAEJC,EAAgBH,EAAQC,EAAaC,GAAU,EACxD,CAEM,SAAUC,EAGdH,EACAC,EACAC,EACAE,GAEA,IAGIxC,EAAWyC,GAFU,kBAAhBJ,EAA2BnC,EAAUmC,GAAeA,GAEvBrC,UAAY,IAAKsC,GAEvD,GAAgB,MAAZtC,EACF,OAAO,KAGT,IAAI0C,EAAWC,EAAcP,IAmM/B,SAA2BM,GACzBA,EAASE,MAAK,CAAC34C,EAAGC,IAChBD,EAAE44C,QAAU34C,EAAE24C,MACV34C,EAAE24C,MAAQ54C,EAAE44C,MAyCpB,SAAwB54C,EAAaC,GACnC,IAAI44C,EACF74C,EAAEI,SAAWH,EAAEG,QAAUJ,EAAE6C,MAAM,GAAI,GAAGi2C,OAAM,CAAChwB,EAAGuqB,IAAMvqB,IAAM7oB,EAAEozC,KAElE,OAAOwF,EAKH74C,EAAEA,EAAEI,OAAS,GAAKH,EAAEA,EAAEG,OAAS,GAG/B,CACN,CArDQ24C,CACE/4C,EAAEg5C,WAAW3K,KAAKx/B,GAASA,EAAKoqC,gBAChCh5C,EAAE+4C,WAAW3K,KAAKx/B,GAASA,EAAKoqC,kBAG1C,CA3MEC,CAAkBT,GAElB,IAAIU,EAAU,KACd,IAAK,IAAI9F,EAAI,EAAc,MAAX8F,GAAmB9F,EAAIoF,EAASr4C,SAAUizC,EAAG,CAO3D,IAAI+F,EAAUC,EAAWtD,GACzBoD,EAAUG,EACRb,EAASpF,GACT+F,EACAb,EAEH,CAED,OAAOY,CACT,CAyCA,SAAST,EAGPP,EACAM,EACAc,EACAC,QAF2C,IAA3Cf,IAAAA,EAA2C,SAC3C,IAAAc,IAAAA,EAA4C,SAClC,IAAVC,IAAAA,EAAa,IAEb,IAAIC,EAAeA,CACjBC,EACAlpB,EACAmpB,KAEA,IAAI9qC,EAAmC,CACrC8qC,kBACmB/H,IAAjB+H,EAA6BD,EAAMrD,MAAQ,GAAKsD,EAClDC,eAAuC,IAAxBF,EAAME,cACrBX,cAAezoB,EACfkpB,SAGE7qC,EAAK8qC,aAAaE,WAAW,OAC/BxE,EACExmC,EAAK8qC,aAAaE,WAAWL,GAC7B,wBAAwB3qC,EAAK8qC,aAA7B,wBACMH,EADN,4GAKF3qC,EAAK8qC,aAAe9qC,EAAK8qC,aAAa92C,MAAM22C,EAAWp5C,SAGzD,IAAIi2C,EAAOyD,EAAU,CAACN,EAAY3qC,EAAK8qC,eACnCX,EAAaO,EAAYzxB,OAAOjZ,GAKhC6qC,EAAMpwC,UAAYowC,EAAMpwC,SAASlJ,OAAS,IAC5Ci1C,GAGkB,IAAhBqE,EAAMlpB,MACN,4FACuC6lB,EAAI,MAE7CqC,EAAcgB,EAAMpwC,SAAUmvC,EAAUO,EAAY3C,KAKpC,MAAdqD,EAAMrD,MAAiBqD,EAAMlpB,QAIjCioB,EAAStoC,KAAK,CACZkmC,OACAuC,MAAOmB,EAAa1D,EAAMqD,EAAMlpB,OAChCwoB,cACA,EAaJ,OAXAb,EAAO51C,SAAQ,CAACm3C,EAAOlpB,KAAS,IAAAwpB,EAE9B,GAAmB,KAAfN,EAAMrD,MAA0B,OAAX2D,EAACN,EAAMrD,OAAN2D,EAAYh0C,SAAS,KAG7C,IAAK,IAAIi0C,KAAYC,EAAwBR,EAAMrD,MACjDoD,EAAaC,EAAOlpB,EAAOypB,QAH7BR,EAAaC,EAAOlpB,EAKrB,IAGIioB,CACT,CAgBA,SAASyB,EAAwB7D,GAC/B,IAAI8D,EAAW9D,EAAK/zC,MAAM,KAC1B,GAAwB,IAApB63C,EAAS/5C,OAAc,MAAO,GAElC,IAAKg6C,KAAUC,GAAQF,EAGnBG,EAAaF,EAAMG,SAAS,KAE5BC,EAAWJ,EAAM72C,QAAQ,MAAO,IAEpC,GAAoB,IAAhB82C,EAAKj6C,OAGP,OAAOk6C,EAAa,CAACE,EAAU,IAAM,CAACA,GAGxC,IAAIC,EAAeP,EAAwBG,EAAKhqB,KAAK,MAEjDqqB,EAAmB,GAqBvB,OAZAA,EAAOvqC,QACFsqC,EAAapM,KAAKsM,GACP,KAAZA,EAAiBH,EAAW,CAACA,EAAUG,GAAStqB,KAAK,QAKrDiqB,GACFI,EAAOvqC,QAAQsqC,GAIVC,EAAOrM,KAAK4L,GACjB5D,EAAKwD,WAAW,MAAqB,KAAbI,EAAkB,IAAMA,GAEpD,CAaA,MAAMW,EAAU,YACVC,EAAsB,EACtBC,EAAkB,EAClBC,EAAoB,EACpBC,EAAqB,GACrBC,GAAgB,EAChBC,EAAW5H,GAAoB,MAANA,EAE/B,SAASyG,EAAa1D,EAAc7lB,GAClC,IAAI2pB,EAAW9D,EAAK/zC,MAAM,KACtB64C,EAAehB,EAAS/5C,OAS5B,OARI+5C,EAASnF,KAAKkG,KAChBC,GAAgBF,GAGdzqB,IACF2qB,GAAgBL,GAGXX,EACJiB,QAAQ9H,IAAO4H,EAAQ5H,KACvBX,QACC,CAACiG,EAAOyC,IACNzC,GACCgC,EAAQ13C,KAAKm4C,GACVR,EACY,KAAZQ,EACAN,EACAC,IACNG,EAEN,CAiBA,SAAS7B,EAIPgC,EACAvF,EACAwC,QAAY,IAAZA,IAAAA,GAAe,GAEf,IAAI,WAAES,GAAesC,EAEjBC,EAAgB,CAAC,EACjBC,EAAkB,IAClBrC,EAA2D,GAC/D,IAAK,IAAI9F,EAAI,EAAGA,EAAI2F,EAAW54C,SAAUizC,EAAG,CAC1C,IAAIxkC,EAAOmqC,EAAW3F,GAClBzuB,EAAMyuB,IAAM2F,EAAW54C,OAAS,EAChCq7C,EACkB,MAApBD,EACIzF,EACAA,EAASlzC,MAAM24C,EAAgBp7C,SAAW,IAC5CgF,EAAQs2C,EACV,CAAErF,KAAMxnC,EAAK8qC,aAAcC,cAAe/qC,EAAK+qC,cAAeh1B,OAC9D62B,GAGE/B,EAAQ7qC,EAAK6qC,MAkBjB,IAfGt0C,GACDwf,GACA2zB,IACCS,EAAWA,EAAW54C,OAAS,GAAGs5C,MAAMlpB,QAEzCprB,EAAQs2C,EACN,CACErF,KAAMxnC,EAAK8qC,aACXC,cAAe/qC,EAAK+qC,cACpBh1B,KAAK,GAEP62B,KAICr2C,EACH,OAAO,KAGTnE,OAAO8D,OAAOw2C,EAAen2C,EAAMu2C,QAEnCxC,EAAQhpC,KAAK,CAEXwrC,OAAQJ,EACRxF,SAAU+D,EAAU,CAAC0B,EAAiBp2C,EAAM2wC,WAC5C6F,aAAcC,EACZ/B,EAAU,CAAC0B,EAAiBp2C,EAAMw2C,gBAEpClC,UAGyB,MAAvBt0C,EAAMw2C,eACRJ,EAAkB1B,EAAU,CAAC0B,EAAiBp2C,EAAMw2C,eAEvD,CAED,OAAOzC,CACT,CAiHgB,SAAAuC,EAIdI,EACA/F,GAEuB,kBAAZ+F,IACTA,EAAU,CAAEzF,KAAMyF,EAASlC,eAAe,EAAOh1B,KAAK,IAGxD,IAAKm3B,EAASC,GA4ChB,SACE3F,EACAuD,EACAh1B,QADa,IAAbg1B,IAAAA,GAAgB,QACb,IAAHh1B,IAAAA,GAAM,GAEN0wB,EACW,MAATe,IAAiBA,EAAKkE,SAAS,MAAQlE,EAAKkE,SAAS,MACrD,eAAelE,EAAf,oCACMA,EAAK9yC,QAAQ,MAAO,MAD1B,qIAGsC8yC,EAAK9yC,QAAQ,MAAO,MAAK,MAGjE,IAAIo4C,EAA8B,GAC9BM,EACF,IACA5F,EACG9yC,QAAQ,UAAW,IACnBA,QAAQ,OAAQ,KAChBA,QAAQ,qBAAsB,QAC9BA,QACC,qBACA,CAAC24C,EAAWC,EAAmB7B,KAC7BqB,EAAOxrC,KAAK,CAAEgsC,YAAW7B,WAA0B,MAAdA,IAC9BA,EAAa,eAAiB,gBAIzCjE,EAAKkE,SAAS,MAChBoB,EAAOxrC,KAAK,CAAEgsC,UAAW,MACzBF,GACW,MAAT5F,GAAyB,OAATA,EACZ,QACA,qBACGzxB,EAETq3B,GAAgB,QACE,KAAT5F,GAAwB,MAATA,IAQxB4F,GAAgB,iBAKlB,IAAIF,EAAU,IAAIK,OAAOH,EAAcrC,OAAgBhI,EAAY,KAEnE,MAAO,CAACmK,EAASJ,EACnB,CAjGkCU,CAC9BP,EAAQzF,KACRyF,EAAQlC,cACRkC,EAAQl3B,KAGNxf,EAAQ2wC,EAAS3wC,MAAM22C,GAC3B,IAAK32C,EAAO,OAAO,KAEnB,IAAIo2C,EAAkBp2C,EAAM,GACxBw2C,EAAeJ,EAAgBj4C,QAAQ,UAAW,MAClD+4C,EAAgBl3C,EAAMvC,MAAM,GAuBhC,MAAO,CACL84C,OAvBmBK,EAAerJ,QAClC,CAAC/C,EAAIwG,EAA6B5lB,KAAS,IAApC,UAAE2rB,EAAS,WAAE7B,GAAYlE,EAG9B,GAAkB,MAAd+F,EAAmB,CACrB,IAAII,EAAaD,EAAc9rB,IAAU,GACzCorB,EAAeJ,EACZ34C,MAAM,EAAG24C,EAAgBp7C,OAASm8C,EAAWn8C,QAC7CmD,QAAQ,UAAW,KACvB,CAED,MAAMoE,EAAQ20C,EAAc9rB,GAM5B,OAJEof,EAAKuM,GADH7B,IAAe3yC,OACCiqC,GAECjqC,GAAS,IAAIpE,QAAQ,OAAQ,KAE3CqsC,CAAI,GAEb,CAAC,GAKDmG,SAAUyF,EACVI,eACAE,UAEJ,CA2DM,SAAUzC,EAAW1xC,GACzB,IACE,OAAOA,EACJrF,MAAM,KACN+rC,KAAK9sC,GAAMi7C,mBAAmBj7C,GAAGgC,QAAQ,MAAO,SAChD8sB,KAAK,KACR,MAAOuM,GAQP,OAPA0Y,GACE,EACA,iBAAiB3tC,EAAjB,oHAEei1B,EAAK,MAGfj1B,CACR,CACH,CAKgB,SAAA6wC,EACdzC,EACAsC,GAEA,GAAiB,MAAbA,EAAkB,OAAOtC,EAE7B,IAAKA,EAASvzC,cAAcq3C,WAAWxB,EAAS71C,eAC9C,OAAO,KAKT,IAAIi6C,EAAapE,EAASkC,SAAS,KAC/BlC,EAASj4C,OAAS,EAClBi4C,EAASj4C,OACTs8C,EAAW3G,EAAShoC,OAAO0uC,GAC/B,OAAIC,GAAyB,MAAbA,EAEP,KAGF3G,EAASlzC,MAAM45C,IAAe,GACvC,CA2CA,SAASE,EACP5yB,EACA6yB,EACAC,EACAxG,GAEA,MACE,qBAAqBtsB,EAArB,2CACQ6yB,EAAK,YAAaxS,KAAKC,UAC7BgM,GAFF,yCAIQwG,EAJR,2HAOJ,CAyBM,SAAUC,EAEd3D,GACA,OAAOA,EAAQiC,QACb,CAACh2C,EAAOorB,IACI,IAAVA,GAAgBprB,EAAMs0C,MAAMrD,MAAQjxC,EAAMs0C,MAAMrD,KAAKj2C,OAAS,GAEpE,CAIgB,SAAA28C,EAEd5D,EAAc6D,GACd,IAAIC,EAAcH,EAA2B3D,GAK7C,OAAI6D,EACKC,EAAY5O,KAAI,CAACjpC,EAAOuwC,IAC7BA,IAAQsH,EAAY78C,OAAS,EAAIgF,EAAM2wC,SAAW3wC,EAAMw2C,eAIrDqB,EAAY5O,KAAKjpC,GAAUA,EAAMw2C,cAC1C,CAKM,SAAUsB,EACdC,EACAC,EACAC,EACAC,GAEA,IAAIzH,OAFU,IAAdyH,IAAAA,GAAiB,GAGI,kBAAVH,EACTtH,EAAKI,EAAUkH,IAEftH,EAAEC,EAAQ,GAAAqH,GAEV9H,GACGQ,EAAGE,WAAaF,EAAGE,SAAS/vC,SAAS,KACtC22C,EAAoB,IAAK,WAAY,SAAU9G,IAEjDR,GACGQ,EAAGE,WAAaF,EAAGE,SAAS/vC,SAAS,KACtC22C,EAAoB,IAAK,WAAY,OAAQ9G,IAE/CR,GACGQ,EAAGr0B,SAAWq0B,EAAGr0B,OAAOxb,SAAS,KAClC22C,EAAoB,IAAK,SAAU,OAAQ9G,KAI/C,IAGI0H,EAHAC,EAAwB,KAAVL,GAAgC,KAAhBtH,EAAGE,SACjC0H,EAAaD,EAAc,IAAM3H,EAAGE,SAaxC,GAAkB,MAAd0H,EACFF,EAAOF,MACF,CACL,IAAIK,EAAqBN,EAAeh9C,OAAS,EAMjD,IAAKk9C,GAAkBG,EAAW5D,WAAW,MAAO,CAClD,IAAI8D,EAAaF,EAAWn7C,MAAM,KAElC,KAAyB,OAAlBq7C,EAAW,IAChBA,EAAWpmC,QACXmmC,GAAsB,EAGxB7H,EAAGE,SAAW4H,EAAWttB,KAAK,IAC/B,CAEDktB,EAAOG,GAAsB,EAAIN,EAAeM,GAAsB,GACvE,CAED,IAAIrH,WAzKsBR,EAAQ+H,QAAY,IAAZA,IAAAA,EAAe,KACjD,IACE7H,SAAU0H,EAAU,OACpBj8B,EAAS,GAAE,KACXw0B,EAAO,IACS,kBAAPH,EAAkBI,EAAUJ,GAAMA,EAEzCE,EAAW0H,EACXA,EAAW5D,WAAW,KACpB4D,EAWR,SAAyB9D,EAAsBiE,GAC7C,IAAIzD,EAAWyD,EAAar6C,QAAQ,OAAQ,IAAIjB,MAAM,KAYtD,OAXuBq3C,EAAar3C,MAAM,KAEzBC,SAAS84C,IACR,OAAZA,EAEElB,EAAS/5C,OAAS,GAAG+5C,EAASpK,MACb,MAAZsL,GACTlB,EAAShqC,KAAKkrC,EACf,IAGIlB,EAAS/5C,OAAS,EAAI+5C,EAAS9pB,KAAK,KAAO,GACpD,CAxBQwtB,CAAgBJ,EAAYG,GAC9BA,EAEJ,MAAO,CACL7H,WACAv0B,OAAQs8B,EAAgBt8B,GACxBw0B,KAAM+H,EAAc/H,GAExB,CAuJagI,CAAYnI,EAAI0H,GAGvBU,EACFR,GAA6B,MAAfA,GAAsBA,EAAWlD,SAAS,KAEtD2D,GACDV,GAA8B,MAAfC,IAAuBJ,EAAiB9C,SAAS,KAQnE,OANGlE,EAAKN,SAASwE,SAAS,OACvB0D,IAA4BC,IAE7B7H,EAAKN,UAAY,KAGZM,CACT,OAiBayD,EAAaqE,GACxBA,EAAM9tB,KAAK,KAAK9sB,QAAQ,SAAU,KAKvBs4C,EAAqB9F,GAChCA,EAASxyC,QAAQ,OAAQ,IAAIA,QAAQ,OAAQ,KAKlCu6C,EAAmBt8B,GAC7BA,GAAqB,MAAXA,EAEPA,EAAOq4B,WAAW,KAClBr4B,EACA,IAAMA,EAHN,GAQOu8B,EAAiB/H,GAC3BA,GAAiB,MAATA,EAAoBA,EAAK6D,WAAW,KAAO7D,EAAO,IAAMA,EAAzC,GAqDgB/wC,MAqSpC,SAAUm5C,EAAqBxhB,GACnC,OACW,MAATA,GACwB,kBAAjBA,EAAMyhB,QACe,kBAArBzhB,EAAM0hB,YACa,mBAAnB1hB,EAAM2hB,UACb,SAAU3hB,CAEd,CCp/BA,MAAM4hB,EAAgD,CACpD,OACA,MACA,QACA,UAMIC,GAJuB,IAAIl+C,IAC/Bi+C,GAG2C,CAC3C,SACGA,IAEuB,IAAIj+C,IAAgBk+C,GAEpB,IAAIl+C,IAAI,CAAC,IAAK,IAAK,IAAK,IAAK,MACf,IAAIA,IAAI,CAAC,IAAK,MA8nFlBqD,OAAO,gPCpvGtC,MAAM86C,EACXC,EAAAA,cAAoD,MAK/C,MAAMC,EAAyBD,EAAAA,cAEpC,MA8CK,MAAME,EAAoBF,EAAAA,cAC/B,MAYK,MAAMG,EAAkBH,EAAAA,cAC7B,YAaWI,EAAeJ,EAAAA,cAAwC,CAClEK,OAAQ,KACR7F,QAAS,GACT8F,aAAa,IAOR,MAAMC,EAAoBP,EAAAA,cAAyB,MClFnD,SAASQ,IACd,OAA4C,MAArCR,EAAAA,WAAiBG,EAC1B,CAYO,SAASM,IAQd,OANED,KADFE,GAAU,GAOHV,EAAAA,WAAiBG,GAAiBvgC,QAC3C,CAkDA,SAAS+gC,EACP72C,GAEek2C,EAAAA,WAAiBE,GAAmBU,QAKjDZ,EAAAA,gBAAsBl2C,EAE1B,CAQO,SAAS+2C,IACd,IAAI,YAAEP,GAAgBN,EAAAA,WAAiBI,GAGvC,OAAOE,EAq4BT,WACE,IAAI,OAAEQ,GAAWC,GAAqBC,GAAeC,mBACjDxnC,EAAKynC,GAAkBC,GAAoBF,mBAE3CG,EAAYpB,EAAAA,QAAa,GAsB7B,OArBAW,GAA0B,KACxBS,EAAU5tC,SAAU,CAAI,IAGOwsC,EAAAA,aAC/B,SAAC9I,EAAiB7sC,QAAwB,IAAxBA,IAAAA,EAA2B,CAAC,GAKvC+2C,EAAU5tC,UAEG,kBAAP0jC,EACT4J,EAAOO,SAASnK,GAEhB4J,EAAOO,SAASnK,EAAEC,EAAA,CAAImK,YAAa7nC,GAAOpP,IAE9C,GACA,CAACy2C,EAAQrnC,GAIb,CAh6BuB8nC,GAGvB,WAEIf,KADFE,GAAU,GAOV,IAAIc,EAAoBxB,EAAAA,WAAiBD,IACrC,SAAErG,EAAQ,OAAE+H,EAAM,UAAE9P,GAAcqO,EAAAA,WAAiBE,IACnD,QAAE1F,GAAYwF,EAAAA,WAAiBI,IAC7BhJ,SAAUsH,GAAqB+B,IAEjCiB,EAAqBjW,KAAKC,UAC5BiW,EAAoBnH,EAASiH,EAAOpD,uBAGlC+C,EAAYpB,EAAAA,QAAa,GAC7BW,GAA0B,KACxBS,EAAU5tC,SAAU,CAAI,IAG1B,IAAI6tC,EAA6BrB,EAAAA,aAC/B,SAAC9I,EAAiB7sC,GAKhB,QALwC,IAAxBA,IAAAA,EAA2B,CAAC,IAKvC+2C,EAAU5tC,QAAS,OAExB,GAAkB,kBAAP0jC,EAET,YADAvF,EAAU0H,GAAGnC,GAIf,IAAIQ,EAAO6G,EACTrH,EACAzL,KAAKmW,MAAMF,GACXhD,EACqB,SAArBr0C,EAAQw3C,UASe,MAArBL,GAA0C,MAAb9H,IAC/BhC,EAAKN,SACe,MAAlBM,EAAKN,SACDsC,EACAyB,EAAU,CAACzB,EAAUhC,EAAKN,aAG/B/sC,EAAQzF,QAAU+sC,EAAU/sC,QAAU+sC,EAAUngC,MACjDkmC,EACArtC,EAAQ2yB,MACR3yB,EAEJ,GACA,CACEqvC,EACA/H,EACA+P,EACAhD,EACA8C,IAIJ,OAAOH,CACT,CA1E6CS,EAC7C,CA4GO,SAASC,KAKd,IAAI,QAAEvH,GAAYwF,EAAAA,WAAiBI,GAC/B4B,EAAaxH,EAAQA,EAAQ/4C,OAAS,GAC1C,OAAOugD,EAAcA,EAAWhF,OAAiB,CAAC,CACpD,CA8CO,SAASiF,GACdzI,EACAC,EACAyI,EACAT,GAGEjB,KADFE,GAAU,GAOV,IAAI,UAAE/O,GAAcqO,EAAAA,WAAiBE,IAC/B1F,QAAS2H,GAAkBnC,EAAAA,WAAiBI,GAC9C4B,EAAaG,EAAcA,EAAc1gD,OAAS,GAClD2gD,EAAeJ,EAAaA,EAAWhF,OAAS,CAAC,EAEjDqF,GADiBL,GAAaA,EAAW5K,SACpB4K,EAAaA,EAAW/E,aAAe,KAC9C+E,GAAcA,EAAWjH,MAqC3C,IAEIn7B,EAFA0iC,EAAsB7B,IAG1B,GAAIhH,EAAa,KAAA8I,EACf,IAAIC,EACqB,kBAAhB/I,EAA2BnC,EAAUmC,GAAeA,EAGpC,MAAvB4I,IAC4B,OADFE,EACxBC,EAAkBpL,eAAQ,EAA1BmL,EAA4BrH,WAAWmH,KAF3C3B,GAAU,GASV9gC,EAAW4iC,CACb,MACE5iC,EAAW0iC,EAGb,IAAIlL,EAAWx3B,EAASw3B,UAAY,IAEhC0F,EAAoB1F,EACxB,GAA2B,MAAvBiL,EAA4B,CAe9B,IAAII,EAAiBJ,EAAmBz9C,QAAQ,MAAO,IAAIjB,MAAM,KAEjEm5C,EAAoB,IADL1F,EAASxyC,QAAQ,MAAO,IAAIjB,MAAM,KACdO,MAAMu+C,EAAehhD,QAAQiwB,KAAK,IACvE,CAEA,IAAI8oB,EAAUjB,EAAYC,EAAQ,CAAEpC,SAAU0F,IAmB9C,IAAI4F,EAAkBC,GACpBnI,GACEA,EAAQ9K,KAAKjpC,GACXnE,OAAO8D,OAAO,CAAC,EAAGK,EAAO,CACvBu2C,OAAQ16C,OAAO8D,OAAO,CAAC,EAAGg8C,EAAc37C,EAAMu2C,QAC9C5F,SAAU+D,EAAU,CAClBkH,EAEA1Q,EAAUoH,eACNpH,EAAUoH,eAAetyC,EAAM2wC,UAAUA,SACzC3wC,EAAM2wC,WAEZ6F,aACyB,MAAvBx2C,EAAMw2C,aACFoF,EACAlH,EAAU,CACRkH,EAEA1Q,EAAUoH,eACNpH,EAAUoH,eAAetyC,EAAMw2C,cAAc7F,SAC7C3wC,EAAMw2C,mBAIxBkF,EACAD,EACAT,GAMF,OAAIhI,GAAeiJ,EAEf1C,EAAAA,cAACG,EAAgB3P,SAAQ,CACvBxnC,MAAO,CACL4W,SAAQu3B,EAAA,CACNC,SAAU,IACVv0B,OAAQ,GACRw0B,KAAM,GACNra,MAAO,KACPxd,IAAK,WACFI,GAELgjC,eAAgBpM,EAAe6B,MAGhCqK,GAKAA,CACT,CAEA,SAASG,KACP,IAAI5kB,EA0cC,WAAkC,IAAA6kB,EACvC,IAAI7kB,EAAQ+hB,EAAAA,WAAiBO,GACzBvjB,EAAQ+lB,GAAmB5B,GAAoB6B,eAC/CC,EAAU/B,GAAkBC,GAAoB6B,eAIpD,QAAc/P,IAAVhV,EACF,OAAOA,EAIT,OAAO,OAAP6kB,EAAO9lB,EAAMkmB,aAAN,EAAAJ,EAAeG,EACxB,CAvdcE,GACRvlB,EAAU6hB,EAAqBxhB,GAC5BA,EAAMyhB,OAAU,IAAAzhB,EAAM0hB,WACzB1hB,aAAiB33B,MACjB23B,EAAML,QACN6N,KAAKC,UAAUzN,GACf13B,EAAQ03B,aAAiB33B,MAAQ23B,EAAM13B,MAAQ,KAC/C68C,EAAY,yBACZC,EAAY,CAAEC,QAAS,SAAUC,gBAAiBH,GAsBtD,OACEpD,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAI,2CACJA,EAAAA,cAAA,MAAIhxC,MAAO,CAAEw0C,UAAW,WAAa5lB,GACpCr3B,EAAQy5C,EAAAA,cAAA,OAAKhxC,MAAOq0C,GAAY98C,GAAe,KAvBtC,KA2BhB,CAEA,MAAMk9C,GAAsBzD,EAAAA,cAAC6C,GAAqB,MAgB3C,MAAMa,WAA4B1D,EAAAA,UAIvC13C,WAAAA,CAAY0pB,GACV2xB,MAAM3xB,GACN/uB,KAAK+5B,MAAQ,CACXpd,SAAUoS,EAAMpS,SAChBgkC,aAAc5xB,EAAM4xB,aACpB3lB,MAAOjM,EAAMiM,MAEjB,CAEA,+BAAOO,CAAyBP,GAC9B,MAAO,CAAEA,MAAOA,EAClB,CAEA,+BAAOX,CACLtL,EACAgL,GAUA,OACEA,EAAMpd,WAAaoS,EAAMpS,UACD,SAAvBod,EAAM4mB,cAAkD,SAAvB5xB,EAAM4xB,aAEjC,CACL3lB,MAAOjM,EAAMiM,MACbre,SAAUoS,EAAMpS,SAChBgkC,aAAc5xB,EAAM4xB,cAQjB,CACL3lB,WAAuBgV,IAAhBjhB,EAAMiM,MAAsBjM,EAAMiM,MAAQjB,EAAMiB,MACvDre,SAAUod,EAAMpd,SAChBgkC,aAAc5xB,EAAM4xB,cAAgB5mB,EAAM4mB,aAE9C,CAEAnlB,iBAAAA,CAAkBR,EAAY4lB,GAC5B7lB,QAAQC,MACN,wDACAA,EACA4lB,EAEJ,CAEAp8C,MAAAA,GACE,YAA4BwrC,IAArBhwC,KAAK+5B,MAAMiB,MAChB+hB,EAAAA,cAACI,EAAa5P,SAAQ,CAACxnC,MAAO/F,KAAK+uB,MAAM8xB,cACvC9D,EAAAA,cAACO,EAAkB/P,SAAQ,CACzBxnC,MAAO/F,KAAK+5B,MAAMiB,MAClBtzB,SAAU1H,KAAK+uB,MAAM+xB,aAIzB9gD,KAAK+uB,MAAMrnB,QAEf,EASF,SAASq5C,GAAavM,GAAwD,IAAvD,aAAEqM,EAAY,MAAEr9C,EAAK,SAAEkE,GAA8B8sC,EACtE+J,EAAoBxB,EAAAA,WAAiBD,GAazC,OAREyB,GACAA,EAAkBZ,QAClBY,EAAkByC,gBACjBx9C,EAAMs0C,MAAMmJ,cAAgBz9C,EAAMs0C,MAAMoJ,iBAEzC3C,EAAkByC,cAAcG,2BAA6B39C,EAAMs0C,MAAMthC,IAIzEumC,EAAAA,cAACI,EAAa5P,SAAQ,CAACxnC,MAAO86C,GAC3Bn5C,EAGP,CAEO,SAASg4C,GACdnI,EACA2H,EACAD,EACAT,GAC2B,IAAA4C,EAC3B,QAJ2B,IAA3BlC,IAAAA,EAA8B,SACc,IAA5CD,IAAAA,EAA+C,WACX,IAApCT,IAAAA,EAAuC,MAExB,MAAXjH,EAAiB,KAAA8J,EACnB,IAAKpC,EACH,OAAO,KAGT,GAAIA,EAAgBgB,OAGlB1I,EAAU0H,EAAgB1H,YACrB,MACL,OAAA8J,EAAA7C,IAAA6C,EAAQC,qBACiB,IAAzBpC,EAAc1gD,SACbygD,EAAgBsC,aACjBtC,EAAgB1H,QAAQ/4C,OAAS,GAUjC,OAAO,KAFP+4C,EAAU0H,EAAgB1H,OAG5B,CACF,CAEA,IAAIkI,EAAkBlI,EAGlB0I,EAAS,OAAHmB,EAAGnC,QAAA,EAAAmC,EAAiBnB,OAC9B,GAAc,MAAVA,EAAgB,CAClB,IAAIuB,EAAa/B,EAAgBgC,WAC9BryC,GAAMA,EAAE0oC,MAAMthC,SAA+Bw5B,KAAnB,MAANiQ,OAAM,EAANA,EAAS7wC,EAAE0oC,MAAMthC,OAGtCgrC,GAAc,GADhB/D,GAAU,GAMVgC,EAAkBA,EAAgBx+C,MAChC,EACAkR,KAAKgR,IAAIs8B,EAAgBjhD,OAAQgjD,EAAa,GAElD,CAIA,IAAIE,GAAiB,EACjBC,GAAiB,EACrB,GAAI1C,GAAmBT,GAAUA,EAAO8C,oBACtC,IAAK,IAAI7P,EAAI,EAAGA,EAAIgO,EAAgBjhD,OAAQizC,IAAK,CAC/C,IAAIjuC,EAAQi8C,EAAgBhO,GAM5B,IAJIjuC,EAAMs0C,MAAM8J,iBAAmBp+C,EAAMs0C,MAAM+J,0BAC7CF,EAAgBlQ,GAGdjuC,EAAMs0C,MAAMthC,GAAI,CAClB,IAAI,WAAEsrC,EAAU,OAAE7B,GAAWhB,EACzB8C,EACFv+C,EAAMs0C,MAAMkK,aACmBhS,IAA/B8R,EAAWt+C,EAAMs0C,MAAMthC,OACrBypC,QAAqCjQ,IAA3BiQ,EAAOz8C,EAAMs0C,MAAMthC,KACjC,GAAIhT,EAAMs0C,MAAM/J,MAAQgU,EAAkB,CAIxCL,GAAiB,EAEfjC,EADEkC,GAAiB,EACDlC,EAAgBx+C,MAAM,EAAG0gD,EAAgB,GAEzC,CAAClC,EAAgB,IAErC,KACF,CACF,CACF,CAGF,OAAOA,EAAgBwC,aAAY,CAAC7E,EAAQ55C,EAAOorB,KAEjD,IAAIoM,EACAknB,GAA8B,EAC9BjB,EAAuC,KACvCY,EAAiD,KA0VzD,IAAqBtlC,EAzVb0iC,IACFjkB,EAAQilB,GAAUz8C,EAAMs0C,MAAMthC,GAAKypC,EAAOz8C,EAAMs0C,MAAMthC,SAAMw5B,EAC5DiR,EAAez9C,EAAMs0C,MAAMmJ,cAAgBT,GAEvCkB,IACEC,EAAgB,GAAe,IAAV/yB,GAoVZrS,EAlVT,kBACA,GAkVI4lC,GAAc5lC,KAC1B4lC,GAAc5lC,IAAO,GAhVf2lC,GAA8B,EAC9BL,EAAyB,MAChBF,IAAkB/yB,IAC3BszB,GAA8B,EAC9BL,EAAyBr+C,EAAMs0C,MAAM+J,wBAA0B,QAKrE,IAAItK,EAAU2H,EAAch5B,OAAOu5B,EAAgBx+C,MAAM,EAAG2tB,EAAQ,IAChEwzB,EAAcA,KAChB,IAAI16C,EAkBJ,OAhBEA,EADEszB,EACSimB,EACFiB,EACEL,EACFr+C,EAAMs0C,MAAMjL,UAOVkQ,EAAAA,cAACv5C,EAAMs0C,MAAMjL,UAAS,MACxBrpC,EAAMs0C,MAAM7zB,QACVzgB,EAAMs0C,MAAM7zB,QAEZm5B,EAGXL,EAAAA,cAACgE,GAAa,CACZv9C,MAAOA,EACPq9C,aAAc,CACZzD,SACA7F,UACA8F,YAAgC,MAAnB4B,GAEfv3C,SAAUA,GACV,EAMN,OAAOu3C,IACJz7C,EAAMs0C,MAAMoJ,eAAiB19C,EAAMs0C,MAAMmJ,cAA0B,IAAVryB,GAC1DmuB,EAAAA,cAAC0D,GAAmB,CAClB9jC,SAAUsiC,EAAgBtiC,SAC1BgkC,aAAc1B,EAAgB0B,aAC9BG,UAAWG,EACXjmB,MAAOA,EACPtzB,SAAU06C,IACVvB,aAAc,CAAEzD,OAAQ,KAAM7F,UAAS8F,aAAa,KAGtD+E,GACD,GACA,KACL,CAAC,IAEIrE,GAAc,SAAdA,GAAc,OAAdA,EAAc,wBAAdA,EAAc,gCAAdA,EAAc,gCAAdA,CAAc,EAAdA,IAAc,IAMdG,GAAmB,SAAnBA,GAAmB,OAAnBA,EAAmB,wBAAnBA,EAAmB,8BAAnBA,EAAmB,8BAAnBA,EAAmB,8BAAnBA,EAAmB,8BAAnBA,EAAmB,wCAAnBA,EAAmB,wBAAnBA,EAAmB,gCAAnBA,EAAmB,gCAAnBA,EAAmB,wBAAnBA,CAAmB,EAAnBA,IAAmB,IAmBxB,SAASJ,GAAqBuE,GAC5B,IAAIC,EAAMvF,EAAAA,WAAiBD,GAE3B,OADUwF,GAAV7E,GAAU,GACH6E,CACT,CAEA,SAASxC,GAAmBuC,GAC1B,IAAItoB,EAAQgjB,EAAAA,WAAiBC,GAE7B,OADUjjB,GAAV0jB,GAAU,GACH1jB,CACT,CASA,SAASkkB,GAAkBoE,GACzB,IAAIvK,EARN,WACE,IAAIA,EAAQiF,EAAAA,WAAiBI,GAE7B,OADUrF,GAAV2F,GAAU,GACH3F,CACT,CAIcyK,GACRC,EAAY1K,EAAMP,QAAQO,EAAMP,QAAQ/4C,OAAS,GAKrD,OAHEgkD,EAAU1K,MAAMthC,IADlBinC,GAAU,GAIH+E,EAAU1K,MAAMthC,EACzB,CA4NA,MAAM2rC,GAAyC,CAAC,ECngCpBpF,EAAsB,gBA+L3C,SAAS0F,GAAQC,GAKA,IALC,GACvBzO,EAAE,QACFtyC,EAAO,MACPo4B,EAAK,SACL6kB,GACc8D,EAEZnF,KADFE,GAAU,GAOV,IAAI,OAAEe,EAAQb,OAAQgF,GAAa5F,EAAAA,WAAiBE,IAShD,QAAE1F,GAAYwF,EAAAA,WAAiBI,IAC7BhJ,SAAUsH,GAAqB+B,IACjCY,EAAWR,IAIXnJ,EAAO6G,EACTrH,EACAyK,EAAoBnH,EAASiH,EAAOpD,sBACpCK,EACa,SAAbmD,GAEEgE,EAAWpa,KAAKC,UAAUgM,GAO9B,OALAsI,EAAAA,WACE,IAAMqB,EAAS5V,KAAKmW,MAAMiE,GAAW,CAAEjhD,UAASo4B,QAAO6kB,cACvD,CAACR,EAAUwE,EAAUhE,EAAUj9C,EAASo4B,IAGnC,IACT,CAgEO,SAAS8oB,GAAMC,GACpBrF,GAAU,EAKZ,CAqBO,SAASsF,GAAMC,GAQqB,IAPzCvM,SAAUwM,EAAe,IAAG,SAC5Bv7C,EAAW,KACXiV,SAAUumC,EAAY,eACtBvD,EAAiBpM,EAAe6B,IAAG,UACnC1G,EACAiP,OAAQwF,GAAa,EAAK,OAC1B3E,GACYwE,EAETzF,KADHE,GAAU,GAQV,IAAIhH,EAAWwM,EAAathD,QAAQ,OAAQ,KACxCyhD,EAAoBrG,EAAAA,SACtB,KAAM,CACJtG,WACA/H,YACAiP,OAAQwF,EACR3E,OAAMtK,EAAA,CACJkH,sBAAsB,GACnBoD,MAGP,CAAC/H,EAAU+H,EAAQ9P,EAAWyU,IAGJ,kBAAjBD,IACTA,EAAe7O,EAAU6O,IAG3B,IAAI,SACF/O,EAAW,IAAG,OACdv0B,EAAS,GAAE,KACXw0B,EAAO,GAAE,MACTra,EAAQ,KAAI,IACZxd,EAAM,WACJ2mC,EAEAG,EAAkBtG,EAAAA,SAAc,KAClC,IAAIuG,EAAmB1M,EAAczC,EAAUsC,GAE/C,OAAwB,MAApB6M,EACK,KAGF,CACL3mC,SAAU,CACRw3B,SAAUmP,EACV1jC,SACAw0B,OACAra,QACAxd,OAEFojC,iBACD,GACA,CAAClJ,EAAUtC,EAAUv0B,EAAQw0B,EAAMra,EAAOxd,EAAKojC,IASlD,OAAuB,MAAnB0D,EACK,KAIPtG,EAAAA,cAACE,EAAkB1P,SAAQ,CAACxnC,MAAOq9C,GACjCrG,EAAAA,cAACG,EAAgB3P,SAAQ,CAAC7lC,SAAUA,EAAU3B,MAAOs9C,IAG3D,CAaO,SAASE,GAAMC,GAGqB,IAHpB,SACrB97C,EAAQ,SACRiV,GACY6mC,EACZ,ODnKOxE,GCmKUyE,GAAyB/7C,GAAWiV,EACvD,CAuC4B,IAAIyM,SAAQ,SAEP2zB,EAAAA,UAkH1B,SAAS0G,GACd/7C,EACAkwC,QAAoB,IAApBA,IAAAA,EAAuB,IAEvB,IAAIrB,EAAwB,GA6D5B,OA3DAwG,EAAAA,SAAep8C,QAAQ+G,GAAU,CAACuc,EAAS2K,KACzC,IAAKmuB,EAAAA,eAAqB94B,GAGxB,OAGF,IAAIy/B,EAAW,IAAI9L,EAAYhpB,GAE/B,GAAI3K,EAAQ3jB,OAASy8C,EAAAA,SAMnB,YAJAxG,EAAOhoC,KAAKY,MACVonC,EACAkN,GAAyBx/B,EAAQ8K,MAAMrnB,SAAUg8C,IAMnDz/B,EAAQ3jB,OAASuiD,IADnBpF,GAAU,GAQPx5B,EAAQ8K,MAAMH,OAAU3K,EAAQ8K,MAAMrnB,UADzC+1C,GAAU,GAKV,IAAI3F,EAAqB,CACvBthC,GAAIyN,EAAQ8K,MAAMvY,IAAMktC,EAASj1B,KAAK,KACtCupB,cAAe/zB,EAAQ8K,MAAMipB,cAC7B/zB,QAASA,EAAQ8K,MAAM9K,QACvB4oB,UAAW5oB,EAAQ8K,MAAM8d,UACzBje,MAAO3K,EAAQ8K,MAAMH,MACrB6lB,KAAMxwB,EAAQ8K,MAAM0lB,KACpBuN,OAAQ/9B,EAAQ8K,MAAMizB,OACtB/sB,OAAQhR,EAAQ8K,MAAMkG,OACtBgsB,aAAch9B,EAAQ8K,MAAMkyB,aAC5BC,cAAej9B,EAAQ8K,MAAMmyB,cAC7ByC,iBACiC,MAA/B1/B,EAAQ8K,MAAMmyB,eACgB,MAA9Bj9B,EAAQ8K,MAAMkyB,aAChB2C,iBAAkB3/B,EAAQ8K,MAAM60B,iBAChCC,OAAQ5/B,EAAQ8K,MAAM80B,OACtB9V,KAAM9pB,EAAQ8K,MAAMgf,MAGlB9pB,EAAQ8K,MAAMrnB,WAChBowC,EAAMpwC,SAAW+7C,GACfx/B,EAAQ8K,MAAMrnB,SACdg8C,IAIJnN,EAAOhoC,KAAKupC,EAAM,IAGbvB,CACT,eCrtBA,MAOA,GAPoBuN,KAEhBC,EAAAA,GAAAA,KAAAC,GAAAA,SAAA,WCCU3kD,OAAOk3B,OAAO,MC4BvB,MC5BC4rB,GAAgB,CAAC,EACV8B,GAAW,WAAa,QAAAC,EAAA3lD,UAAAC,OAAT2lD,EAAI,IAAAl9C,MAAAi9C,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJD,EAAIC,GAAA7lD,UAAA6lD,GAC1BC,GAASF,EAAK,KAAOhC,GAAcgC,EAAK,MACxCE,GAASF,EAAK,MAAKhC,GAAcgC,EAAK,IAAM,IAAI1rC,MATlC,WAClB,GAAIsiB,SAAS6Y,KAAM,SAAA0Q,EAAA/lD,UAAAC,OADG2lD,EAAI,IAAAl9C,MAAAq9C,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJJ,EAAII,GAAAhmD,UAAAgmD,GAEpBF,GAASF,EAAK,MAAKA,EAAK,GAAK,mBAAmBA,EAAK,MACzDppB,QAAQ6Y,QAAQuQ,EAClB,CACF,CAKEvQ,IAAQuQ,GACV,EACMK,GAAYA,CAACC,EAAM59C,IAAO,KAC9B,GAAI49C,EAAKC,cACP79C,QACK,CACL,MAAM06C,EAAcA,KAClBv4B,YAAW,KACTy7B,EAAKE,IAAI,cAAepD,EAAY,GACnC,GACH16C,GAAI,EAEN49C,EAAKG,GAAG,cAAerD,EACzB,GAEWsD,GAAiBA,CAACJ,EAAMjU,EAAI3pC,KACvC49C,EAAKI,eAAerU,EAAIgU,GAAUC,EAAM59C,GAAI,EAEjCi+C,GAAgBA,CAACL,EAAMM,EAAKvU,EAAI3pC,KACvCw9C,GAAS7T,KAAKA,EAAK,CAACA,IACxBA,EAAG7vC,SAAQumB,IACLu9B,EAAKr9C,QAAQopC,GAAGxkC,QAAQkb,GAAK,GAAGu9B,EAAKr9C,QAAQopC,GAAGjiC,KAAK2Y,EAAE,IAE7Du9B,EAAKK,cAAcC,EAAKP,GAAUC,EAAM59C,GAAI,EAejCw9C,GAAW9T,GAAsB,kBAARA,EChDhCyU,GAAkB,oGAClBC,GAAe,CACnB,QAAS,IACT,QAAS,IACT,OAAQ,IACR,QAAS,IACT,OAAQ,IACR,QAAS,IACT,SAAU,IACV,QAAS,IACT,SAAU,IACV,QAAS,IACT,SAAU,IACV,SAAU,IACV,SAAU,OACV,SAAU,OACV,QAAS,OACT,SAAU,OACV,WAAY,SACZ,UAAW,SACX,SAAU,IACV,QAAS,KAELC,GAAqB91C,GAAK61C,GAAa71C,GCtB7C,IAAI+1C,GAAiB,CACnBC,SAAU,kBACVC,cAAe,GACfC,oBAAqB,GACrBC,4BAA4B,EAC5BC,mBAAoB,GACpBC,2BAA4B,CAAC,KAAM,SAAU,IAAK,KAClDC,aAAa,EACbC,SDesB7lC,GAAQA,EAAKne,QAAQqjD,GAAiBE,KExB9D,IAAIU,GACG,MCCMC,GAAmB,CAC9BvlD,KAAM,WACNwlD,IAAAA,CAAKz/B,IFOoB,WAAkB,IAAjBjf,EAAO7I,UAAAC,OAAA,QAAAwxC,IAAAzxC,UAAA,GAAAA,UAAA,GAAG,CAAC,EACrC4mD,GAAiB,IACZA,MACA/9C,EAEP,CEXI2+C,CAAY1/B,EAASjf,QAAQ4+C,ODJV3/B,KACrBu/B,GAAev/B,CAAQ,ECIrB4/B,CAAQ5/B,EACV,GCFW6/B,IAAc9Y,EAAAA,EAAAA,iBACpB,MAAM+Y,GACX9gD,WAAAA,GACErF,KAAKomD,eAAiB,CAAC,CACzB,CACAC,iBAAAA,CAAkBC,GAChBA,EAAW3lD,SAAQ6vC,IACjBxwC,KAAKomD,eAAe5V,MAAQ,CAAI,GAEpC,CACA+V,iBAAAA,GACE,OAAOlnD,OAAO6M,KAAKlM,KAAKomD,eAC1B,ECdF,MAOMI,GAAaA,CAAC/B,EAAMgC,EAAUC,EAAWC,IAAclC,EAAKmC,UAAUH,EAAUC,EAAWC,GAEpFE,GAAiB,SAACrW,GAAmB,IAAfzhB,EAAKxwB,UAAAC,OAAA,QAAAwxC,IAAAzxC,UAAA,GAAAA,UAAA,GAAG,CAAC,EAC1C,MACEkmD,KAAMqC,GACJ/3B,GAEF01B,KAAMsC,EACNC,UAAWC,IACTjvB,EAAAA,EAAAA,YAAWkuB,KAAgB,CAAC,EAC1BzB,EAAOqC,GAAiBC,GHhBHnB,GGkB3B,GADInB,IAASA,EAAKyC,mBAAkBzC,EAAKyC,iBAAmB,IAAIf,KAC3D1B,EAAM,CACTR,GAAS,0EACT,MAAMkD,EAAYA,CAACjjD,EAAGkjD,KACpB,OAAI/C,GAAS+C,GAA4BA,ENwBD,kBAAtB7W,EMvBL6W,INuB+C,OAAR7W,GMvBhB8T,GAAS+C,EAAmB/gD,cAAsB+gD,EAAmB/gD,aAClGY,MAAMC,QAAQhD,GAAKA,EAAEA,EAAE1F,OAAS,GAAK0F,ENsB1BqsC,KMtB2B,EAEzC8W,EAAc,CAACF,EAAW,CAAC,GAAG,GAIpC,OAHAE,EAAYlgC,EAAIggC,EAChBE,EAAY5C,KAAO,CAAC,EACpB4C,EAAYC,OAAQ,EACbD,CACT,CACI5C,EAAKr9C,QAAQ4+C,OAAOuB,MAAMtD,GAAS,uGACvC,MAAMuD,EAAc,IJnBWrC,MIqB1BV,EAAKr9C,QAAQ4+C,SACbj3B,IAEC,YACJ22B,EAAW,UACXiB,GACEa,EACJ,IAAIlB,EAAa9V,GAAMyW,GAAwBxC,EAAKr9C,SAAS4/C,UAC7DV,EAAajC,GAASiC,GAAc,CAACA,GAAcA,GAAc,CAAC,eAClE7B,EAAKyC,iBAAiBb,oBAAoBC,GAC1C,MAAMgB,GAAS7C,EAAKC,eAAiBD,EAAKgD,uBAAyBnB,EAAWpP,OAAMhwB,GNbpD,SAACspB,EAAIiU,GAAuB,IAAjBr9C,EAAO7I,UAAAC,OAAA,QAAAwxC,IAAAzxC,UAAA,GAAAA,UAAA,GAAG,CAAC,EACtD,OAAKkmD,EAAKiD,WAAcjD,EAAKiD,UAAUlpD,OAIhCimD,EAAKkD,mBAAmBnX,EAAI,CACjCuU,IAAK39C,EAAQ29C,IACb6C,SAAUA,CAAChC,EAAciC,KACvB,GAAIzgD,EAAQg+C,UAAUp5C,QAAQ,qBAAuB,GAAK45C,EAAakC,SAASC,iBAAiBC,SAAWpC,EAAaqC,uBAAyBJ,EAAejC,EAAaqC,qBAAsBzX,GAAK,OAAO,CAAK,KANvNyT,GAAS,yCAA0CQ,EAAKiD,YACjD,EAQX,CME2FC,CAAmBzgC,EAAGu9B,EAAM+C,KAC/GU,EAtCaC,EAAC1D,EAAMgC,EAAUC,EAAWC,KAAc5uB,EAAAA,EAAAA,aAAYyuB,GAAW/B,EAAMgC,EAAUC,EAAWC,GAAY,CAAClC,EAAMgC,EAAUC,EAAWC,IAsCtIwB,CAAa1D,EAAM11B,EAAMg2B,KAAO,KAA6B,aAAvByC,EAAYY,OAAwB9B,EAAaA,EAAW,GAAIK,GACjH0B,EAAOA,IAAMH,EACbI,EAAUA,IAAM9B,GAAW/B,EAAM11B,EAAMg2B,KAAO,KAA6B,aAAvByC,EAAYY,OAAwB9B,EAAaA,EAAW,GAAIK,IACnHx/B,EAAGohC,IAAQ/vB,EAAAA,EAAAA,UAAS6vB,GAC3B,IAAIG,EAAWlC,EAAW73B,OACtBM,EAAMg2B,MAAKyD,EAAW,GAAGz5B,EAAMg2B,MAAMyD,KACzC,MAAMC,EApDYC,EAAC3iD,EAAO4iD,KAC1B,MAAMv6B,GAAMmK,EAAAA,EAAAA,UAIZ,OAHAN,EAAAA,EAAAA,YAAU,KACR7J,EAAI7d,QAAUo4C,EAASv6B,EAAI7d,QAAUxK,CAAK,GACzC,CAACA,EAAO4iD,IACJv6B,EAAI7d,OAAO,EA+COm4C,CAAYF,GAC/BnvB,GAAYd,EAAAA,EAAAA,SAAO,IACzBN,EAAAA,EAAAA,YAAU,KACR,MAAM,SACJmtB,EAAQ,cACRC,GACEmC,EACJnuB,EAAU9oB,SAAU,EACf+2C,GAAU5B,IACT32B,EAAMg2B,IACRD,GAAcL,EAAM11B,EAAMg2B,IAAKuB,GAAY,KACrCjtB,EAAU9oB,SAASg4C,EAAKD,EAAQ,IAGtCzD,GAAeJ,EAAM6B,GAAY,KAC3BjtB,EAAU9oB,SAASg4C,EAAKD,EAAQ,KAItChB,GAASmB,GAAoBA,IAAqBD,GAAYnvB,EAAU9oB,SAC1Eg4C,EAAKD,GAEP,MAAMM,EAAaA,KACbvvB,EAAU9oB,SAASg4C,EAAKD,EAAQ,EAItC,OAFIlD,GAAUX,GAAMG,GAAGQ,EAAUwD,GAC7BvD,GAAeZ,GAAMoE,MAAMjE,GAAGS,EAAeuD,GAC1C,KACLvvB,EAAU9oB,SAAU,EAChBk0C,GAAMW,GAAU1kD,MAAM,KAAKC,SAAQd,GAAK4kD,EAAKE,IAAI9kD,EAAG+oD,KACpDvD,GAAiBZ,GAAMY,EAAc3kD,MAAM,KAAKC,SAAQd,GAAK4kD,EAAKoE,MAAMlE,IAAI9kD,EAAG+oD,IAAY,CAChG,GACA,CAACnE,EAAM+D,KACVvwB,EAAAA,EAAAA,YAAU,KACJoB,EAAU9oB,SAAW+2C,GACvBiB,EAAKF,EACP,GACC,CAAC5D,EAAMkC,EAAWW,IACrB,MAAMwB,EAAM,CAAC3hC,EAAGs9B,EAAM6C,GAItB,GAHAwB,EAAI3hC,EAAIA,EACR2hC,EAAIrE,KAAOA,EACXqE,EAAIxB,MAAQA,EACRA,EAAO,OAAOwB,EAClB,IAAKxB,IAAU5B,EAAa,OAAOoD,EACnC,MAAM,IAAI1/B,SAAQG,IACZwF,EAAMg2B,IACRD,GAAcL,EAAM11B,EAAMg2B,IAAKuB,GAAY,IAAM/8B,MAEjDs7B,GAAeJ,EAAM6B,GAAY,IAAM/8B,KACzC,GAEJ,ECxGO,MCFDw/B,GAAgB,CACpBzoD,KAAM,SACNiS,GAAAA,CAAI4xC,GACFnkD,KAAKgpD,OAAO,MAAO7E,EACrB,EACAvQ,IAAAA,CAAKuQ,GACHnkD,KAAKgpD,OAAO,OAAQ7E,EACtB,EACAnpB,KAAAA,CAAMmpB,GACJnkD,KAAKgpD,OAAO,QAAS7E,EACvB,EACA6E,MAAAA,CAAO1oD,EAAM6jD,GACPppB,SAAWA,QAAQz6B,IAAOy6B,QAAQz6B,GAAM6O,MAAM4rB,QAASopB,EAC7D,GAEF,MAAM8E,GACJ5jD,WAAAA,CAAY6jD,GACV,IAAI9hD,EAAU7I,UAAUC,OAAS,QAAsBwxC,IAAjBzxC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnFyB,KAAK8lD,KAAKoD,EAAgB9hD,EAC5B,CACA0+C,IAAAA,CAAKoD,GACH,IAAI9hD,EAAU7I,UAAUC,OAAS,QAAsBwxC,IAAjBzxC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnFyB,KAAKmpD,OAAS/hD,EAAQ+hD,QAAU,WAChCnpD,KAAKopD,OAASF,GAAkBH,GAChC/oD,KAAKoH,QAAUA,EACfpH,KAAKqpD,MAAQjiD,EAAQiiD,KACvB,CACA92C,GAAAA,GACE,IAAK,IAAI+xC,EAAO/lD,UAAUC,OAAQ2lD,EAAO,IAAIl9C,MAAMq9C,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/EJ,EAAKI,GAAQhmD,UAAUgmD,GAEzB,OAAOvkD,KAAKspD,QAAQnF,EAAM,MAAO,IAAI,EACvC,CACAvQ,IAAAA,GACE,IAAK,IAAIsQ,EAAQ3lD,UAAUC,OAAQ2lD,EAAO,IAAIl9C,MAAMi9C,GAAQE,EAAQ,EAAGA,EAAQF,EAAOE,IACpFD,EAAKC,GAAS7lD,UAAU6lD,GAE1B,OAAOpkD,KAAKspD,QAAQnF,EAAM,OAAQ,IAAI,EACxC,CACAnpB,KAAAA,GACE,IAAK,IAAIuuB,EAAQhrD,UAAUC,OAAQ2lD,EAAO,IAAIl9C,MAAMsiD,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFrF,EAAKqF,GAASjrD,UAAUirD,GAE1B,OAAOxpD,KAAKspD,QAAQnF,EAAM,QAAS,GACrC,CACAsF,SAAAA,GACE,IAAK,IAAIC,EAAQnrD,UAAUC,OAAQ2lD,EAAO,IAAIl9C,MAAMyiD,GAAQC,EAAQ,EAAGA,EAAQD,EAAOC,IACpFxF,EAAKwF,GAASprD,UAAUorD,GAE1B,OAAO3pD,KAAKspD,QAAQnF,EAAM,OAAQ,wBAAwB,EAC5D,CACAmF,OAAAA,CAAQnF,EAAMyF,EAAKT,EAAQU,GACzB,OAAIA,IAAc7pD,KAAKqpD,MAAc,MACd,kBAAZlF,EAAK,KAAiBA,EAAK,GAAK,GAAGgF,IAASnpD,KAAKmpD,UAAUhF,EAAK,MACpEnkD,KAAKopD,OAAOQ,GAAKzF,GAC1B,CACA5tB,MAAAA,CAAOuzB,GACL,OAAO,IAAIb,GAAOjpD,KAAKopD,OAAQ,CAE3BD,OAAQ,GAAGnpD,KAAKmpD,UAAUW,QAEzB9pD,KAAKoH,SAEZ,CACA2iD,KAAAA,CAAM3iD,GAGJ,OAFAA,EAAUA,GAAWpH,KAAKoH,SAClB+hD,OAAS/hD,EAAQ+hD,QAAUnpD,KAAKmpD,OACjC,IAAIF,GAAOjpD,KAAKopD,OAAQhiD,EACjC,EAEF,IAAI4iD,GAAa,IAAIf,GAErB,MAAMgB,GACJ5kD,WAAAA,GACErF,KAAKkqD,UAAY,CAAC,CACpB,CACAtF,EAAAA,CAAGuF,EAAQ7jC,GAMT,OALA6jC,EAAOzpD,MAAM,KAAKC,SAAQ0f,IACnBrgB,KAAKkqD,UAAU7pC,KAAQrgB,KAAKkqD,UAAU7pC,GAAS,IAAI/L,KACxD,MAAM81C,EAAepqD,KAAKkqD,UAAU7pC,GAAO/a,IAAIghB,IAAa,EAC5DtmB,KAAKkqD,UAAU7pC,GAAOxc,IAAIyiB,EAAU8jC,EAAe,EAAE,IAEhDpqD,IACT,CACA2kD,GAAAA,CAAItkC,EAAOiG,GACJtmB,KAAKkqD,UAAU7pC,KACfiG,EAILtmB,KAAKkqD,UAAU7pC,GAAO1L,OAAO2R,UAHpBtmB,KAAKkqD,UAAU7pC,GAI1B,CACAgqC,IAAAA,CAAKhqC,GACH,IAAK,IAAIikC,EAAO/lD,UAAUC,OAAQ2lD,EAAO,IAAIl9C,MAAMq9C,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IAClGJ,EAAKI,EAAO,GAAKhmD,UAAUgmD,GAE7B,GAAIvkD,KAAKkqD,UAAU7pC,GAAQ,CACVpZ,MAAM00C,KAAK37C,KAAKkqD,UAAU7pC,GAAOiqC,WACzC3pD,SAAQ6zC,IACb,IAAK+V,EAAUC,GAAiBhW,EAChC,IAAK,IAAI/C,EAAI,EAAGA,EAAI+Y,EAAe/Y,IACjC8Y,KAAYpG,EACd,GAEJ,CACA,GAAInkD,KAAKkqD,UAAU,KAAM,CACRjjD,MAAM00C,KAAK37C,KAAKkqD,UAAU,KAAKI,WACvC3pD,SAAQ8pD,IACb,IAAKF,EAAUC,GAAiBC,EAChC,IAAK,IAAIhZ,EAAI,EAAGA,EAAI+Y,EAAe/Y,IACjC8Y,EAASp7C,MAAMo7C,EAAU,CAAClqC,KAAU8jC,GACtC,GAEJ,CACF,EAGF,MAAMuG,GAAQA,KACZ,IAAIC,EACAC,EACJ,MAAMlY,EAAU,IAAItpB,SAAQ,CAACG,EAASopB,KACpCgY,EAAMphC,EACNqhC,EAAMjY,CAAM,IAId,OAFAD,EAAQnpB,QAAUohC,EAClBjY,EAAQC,OAASiY,EACVlY,CAAO,EAEVmY,GAAaC,GACH,MAAVA,EAAuB,GACpB,GAAKA,EAORC,GAA4B,OAC5BC,GAAWzuC,GAAOA,GAAOA,EAAIvQ,QAAQ,QAAU,EAAIuQ,EAAI5a,QAAQopD,GAA2B,KAAOxuC,EACjG0uC,GAAuBH,IAAWA,GAA4B,kBAAXA,EACnDI,GAAgBA,CAACJ,EAAQrW,EAAM0W,KACnC,MAAM7nD,EAAwB,kBAATmxC,EAAoBA,EAAOA,EAAK/zC,MAAM,KAC3D,IAAI0qD,EAAa,EACjB,KAAOA,EAAa9nD,EAAM9E,OAAS,GAAG,CACpC,GAAIysD,GAAqBH,GAAS,MAAO,CAAC,EAC1C,MAAMvuC,EAAMyuC,GAAS1nD,EAAM8nD,KACtBN,EAAOvuC,IAAQ4uC,IAAOL,EAAOvuC,GAAO,IAAI4uC,GAE3CL,EADEzrD,OAAOC,UAAUC,eAAe8B,KAAKypD,EAAQvuC,GACtCuuC,EAAOvuC,GAEP,CAAC,IAEV6uC,CACJ,CACA,OAAIH,GAAqBH,GAAgB,CAAC,EACnC,CACLva,IAAKua,EACL5mD,EAAG8mD,GAAS1nD,EAAM8nD,IACnB,EAEGC,GAAUA,CAACP,EAAQrW,EAAM6W,KAC7B,MAAM,IACJ/a,EAAG,EACHrsC,GACEgnD,GAAcJ,EAAQrW,EAAMp1C,QAChC,QAAY2wC,IAARO,GAAqC,IAAhBkE,EAAKj2C,OAE5B,YADA+xC,EAAIrsC,GAAKonD,GAGX,IAAIzrD,EAAI40C,EAAKA,EAAKj2C,OAAS,GACvBL,EAAIs2C,EAAKxzC,MAAM,EAAGwzC,EAAKj2C,OAAS,GAChCygC,EAAOisB,GAAcJ,EAAQ3sD,EAAGkB,QACpC,UAAoB2wC,IAAb/Q,EAAKsR,KAAqBpyC,EAAEK,QACjCqB,EAAI,GAAG1B,EAAEA,EAAEK,OAAS,MAAMqB,IAC1B1B,EAAIA,EAAE8C,MAAM,EAAG9C,EAAEK,OAAS,GAC1BygC,EAAOisB,GAAcJ,EAAQ3sD,EAAGkB,QAC5B4/B,GAAQA,EAAKsR,KAA6C,qBAA/BtR,EAAKsR,IAAI,GAAGtR,EAAK/6B,KAAKrE,OACnDo/B,EAAKsR,SAAMP,GAGf/Q,EAAKsR,IAAI,GAAGtR,EAAK/6B,KAAKrE,KAAOyrD,CAAQ,EAUjCC,GAAUA,CAACT,EAAQrW,KACvB,MAAM,IACJlE,EAAG,EACHrsC,GACEgnD,GAAcJ,EAAQrW,GAC1B,GAAKlE,EACL,OAAOA,EAAIrsC,EAAE,EASTsnD,GAAaA,CAAC79C,EAAQR,EAAQs+C,KAClC,IAAK,MAAMva,KAAQ/jC,EACJ,cAAT+jC,GAAiC,gBAATA,IACtBA,KAAQvjC,EACkB,kBAAjBA,EAAOujC,IAAsBvjC,EAAOujC,aAAiB10B,QAAkC,kBAAjBrP,EAAO+jC,IAAsB/jC,EAAO+jC,aAAiB10B,OAChIivC,IAAW99C,EAAOujC,GAAQ/jC,EAAO+jC,IAErCsa,GAAW79C,EAAOujC,GAAO/jC,EAAO+jC,GAAOua,GAGzC99C,EAAOujC,GAAQ/jC,EAAO+jC,IAI5B,OAAOvjC,CAAM,EAET+9C,GAAcC,GAAOA,EAAIhqD,QAAQ,sCAAuC,QAC9E,IAAIiqD,GAAa,CACf,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,QACL,IAAK,UAEP,MAAMxf,GAASnxB,GACO,kBAATA,EACFA,EAAKtZ,QAAQ,cAAc+vC,GAAKka,GAAWla,KAE7Cz2B,EAsBT,MAAM4wC,GAAQ,CAAC,IAAK,IAAK,IAAK,IAAK,KAC7BC,GAAiC,IArBvC,MACEzmD,WAAAA,CAAY0mD,GACV/rD,KAAK+rD,SAAWA,EAChB/rD,KAAKgsD,UAAY,IAAI13C,IACrBtU,KAAKisD,YAAc,EACrB,CACAC,SAAAA,CAAUhS,GACR,MAAMiS,EAAkBnsD,KAAKgsD,UAAU1mD,IAAI40C,GAC3C,QAAwBlK,IAApBmc,EACF,OAAOA,EAET,MAAMC,EAAY,IAAI5R,OAAON,GAM7B,OALIl6C,KAAKisD,YAAYztD,SAAWwB,KAAK+rD,UACnC/rD,KAAKgsD,UAAUr3C,OAAO3U,KAAKisD,YAAYt2C,SAEzC3V,KAAKgsD,UAAUnoD,IAAIq2C,EAASkS,GAC5BpsD,KAAKisD,YAAY19C,KAAK2rC,GACfkS,CACT,GAGqD,IAgBjDC,GAAW,SAAU9b,EAAKkE,GAC9B,IAAI6X,EAAe/tD,UAAUC,OAAS,QAAsBwxC,IAAjBzxC,UAAU,GAAmBA,UAAU,GAAK,IACvF,IAAKgyC,EAAK,OACV,GAAIA,EAAIkE,GAAO,OAAOlE,EAAIkE,GAC1B,MAAM8X,EAAS9X,EAAK/zC,MAAM4rD,GAC1B,IAAI/7C,EAAUggC,EACd,IAAK,IAAIkB,EAAI,EAAGA,EAAI8a,EAAO/tD,QAAS,CAClC,IAAK+R,GAA8B,kBAAZA,EACrB,OAEF,IAAIgf,EACAi9B,EAAW,GACf,IAAK,IAAIha,EAAIf,EAAGe,EAAI+Z,EAAO/tD,SAAUg0C,EAMnC,GALIA,IAAMf,IACR+a,GAAYF,GAEdE,GAAYD,EAAO/Z,GACnBjjB,EAAOhf,EAAQi8C,QACFxc,IAATzgB,EAAoB,CACtB,GAAI,CAAC,SAAU,SAAU,WAAWvjB,eAAeujB,IAAS,GAAKijB,EAAI+Z,EAAO/tD,OAAS,EACnF,SAEFizC,GAAKe,EAAIf,EAAI,EACb,KACF,CAEFlhC,EAAUgf,CACZ,CACA,OAAOhf,CACT,EACMk8C,GAAiB/vC,GACjBA,GAAQA,EAAK1Q,QAAQ,KAAO,EAAU0Q,EAAK/a,QAAQ,IAAK,KACrD+a,EAGT,MAAMgwC,WAAsBzC,GAC1B5kD,WAAAA,CAAY4V,GACV,IAAI7T,EAAU7I,UAAUC,OAAS,QAAsBwxC,IAAjBzxC,UAAU,GAAmBA,UAAU,GAAK,CAChFiyC,GAAI,CAAC,eACLwW,UAAW,eAEbtG,QACA1gD,KAAKib,KAAOA,GAAQ,CAAC,EACrBjb,KAAKoH,QAAUA,OACmB4oC,IAA9BhwC,KAAKoH,QAAQklD,eACftsD,KAAKoH,QAAQklD,aAAe,UAEWtc,IAArChwC,KAAKoH,QAAQulD,sBACf3sD,KAAKoH,QAAQulD,qBAAsB,EAEvC,CACAC,aAAAA,CAAcpc,GACRxwC,KAAKoH,QAAQopC,GAAGxkC,QAAQwkC,GAAM,GAChCxwC,KAAKoH,QAAQopC,GAAGjiC,KAAKiiC,EAEzB,CACAqc,gBAAAA,CAAiBrc,GACf,MAAM5hB,EAAQ5uB,KAAKoH,QAAQopC,GAAGxkC,QAAQwkC,GAClC5hB,GAAS,GACX5uB,KAAKoH,QAAQopC,GAAGlI,OAAO1Z,EAAO,EAElC,CACAk+B,WAAAA,CAAY/H,EAAKvU,EAAIj0B,GACnB,IAAInV,EAAU7I,UAAUC,OAAS,QAAsBwxC,IAAjBzxC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnF,MAAM+tD,OAAwCtc,IAAzB5oC,EAAQklD,aAA6BllD,EAAQklD,aAAetsD,KAAKoH,QAAQklD,aACxFK,OAAsD3c,IAAhC5oC,EAAQulD,oBAAoCvlD,EAAQulD,oBAAsB3sD,KAAKoH,QAAQulD,oBACnH,IAAIlY,EACAsQ,EAAI/4C,QAAQ,MAAQ,EACtByoC,EAAOsQ,EAAIrkD,MAAM,MAEjB+zC,EAAO,CAACsQ,EAAKvU,GACTj0B,IACEtV,MAAMC,QAAQqV,GAChBk4B,EAAKlmC,QAAQgO,GACW,kBAARA,GAAoB+vC,EACpC7X,EAAKlmC,QAAQgO,EAAI7b,MAAM4rD,IAEvB7X,EAAKlmC,KAAKgO,KAIhB,MAAMu8B,EAASyS,GAAQvrD,KAAKib,KAAMw5B,GAMlC,OALKqE,IAAWtI,IAAOj0B,GAAOwoC,EAAI/4C,QAAQ,MAAQ,IAChD+4C,EAAMtQ,EAAK,GACXjE,EAAKiE,EAAK,GACVl4B,EAAMk4B,EAAKxzC,MAAM,GAAGwtB,KAAK,MAEvBqqB,IAAW6T,GAAsC,kBAARpwC,EAAyBu8B,EAC/DuT,GAASrsD,KAAKib,MAAQjb,KAAKib,KAAK8pC,IAAQ/kD,KAAKib,KAAK8pC,GAAKvU,GAAKj0B,EAAK+vC,EAC1E,CACAS,WAAAA,CAAYhI,EAAKvU,EAAIj0B,EAAKxW,GACxB,IAAIqB,EAAU7I,UAAUC,OAAS,QAAsBwxC,IAAjBzxC,UAAU,GAAmBA,UAAU,GAAK,CAChFyuD,QAAQ,GAEV,MAAMV,OAAwCtc,IAAzB5oC,EAAQklD,aAA6BllD,EAAQklD,aAAetsD,KAAKoH,QAAQklD,aAC9F,IAAI7X,EAAO,CAACsQ,EAAKvU,GACbj0B,IAAKk4B,EAAOA,EAAKvuB,OAAOomC,EAAe/vC,EAAI7b,MAAM4rD,GAAgB/vC,IACjEwoC,EAAI/4C,QAAQ,MAAQ,IACtByoC,EAAOsQ,EAAIrkD,MAAM,KACjBqF,EAAQyqC,EACRA,EAAKiE,EAAK,IAEZz0C,KAAK4sD,cAAcpc,GACnB6a,GAAQrrD,KAAKib,KAAMw5B,EAAM1uC,GACpBqB,EAAQ4lD,QAAQhtD,KAAKqqD,KAAK,QAAStF,EAAKvU,EAAIj0B,EAAKxW,EACxD,CACAknD,YAAAA,CAAalI,EAAKvU,EAAI0c,GACpB,IAAI9lD,EAAU7I,UAAUC,OAAS,QAAsBwxC,IAAjBzxC,UAAU,GAAmBA,UAAU,GAAK,CAChFyuD,QAAQ,GAEV,IAAK,MAAM59C,KAAK89C,GACc,kBAAjBA,EAAU99C,IAAmBnI,MAAMC,QAAQgmD,EAAU99C,MAAKpP,KAAK+sD,YAAYhI,EAAKvU,EAAIphC,EAAG89C,EAAU99C,GAAI,CAC9G49C,QAAQ,IAGP5lD,EAAQ4lD,QAAQhtD,KAAKqqD,KAAK,QAAStF,EAAKvU,EAAI0c,EACnD,CACAC,iBAAAA,CAAkBpI,EAAKvU,EAAI0c,EAAWE,EAAM3B,GAC1C,IAAIrkD,EAAU7I,UAAUC,OAAS,QAAsBwxC,IAAjBzxC,UAAU,GAAmBA,UAAU,GAAK,CAChFyuD,QAAQ,EACRK,UAAU,GAER5Y,EAAO,CAACsQ,EAAKvU,GACbuU,EAAI/4C,QAAQ,MAAQ,IACtByoC,EAAOsQ,EAAIrkD,MAAM,KACjB0sD,EAAOF,EACPA,EAAY1c,EACZA,EAAKiE,EAAK,IAEZz0C,KAAK4sD,cAAcpc,GACnB,IAAI8c,EAAO/B,GAAQvrD,KAAKib,KAAMw5B,IAAS,CAAC,EACnCrtC,EAAQimD,WAAUH,EAAY1kB,KAAKmW,MAAMnW,KAAKC,UAAUykB,KACzDE,EACF5B,GAAW8B,EAAMJ,EAAWzB,GAE5B6B,EAAO,IACFA,KACAJ,GAGP7B,GAAQrrD,KAAKib,KAAMw5B,EAAM6Y,GACpBlmD,EAAQ4lD,QAAQhtD,KAAKqqD,KAAK,QAAStF,EAAKvU,EAAI0c,EACnD,CACAK,oBAAAA,CAAqBxI,EAAKvU,GACpBxwC,KAAKwtD,kBAAkBzI,EAAKvU,WACvBxwC,KAAKib,KAAK8pC,GAAKvU,GAExBxwC,KAAK6sD,iBAAiBrc,GACtBxwC,KAAKqqD,KAAK,UAAWtF,EAAKvU,EAC5B,CACAgd,iBAAAA,CAAkBzI,EAAKvU,GACrB,YAAqCR,IAA9BhwC,KAAK8sD,YAAY/H,EAAKvU,EAC/B,CACAid,iBAAAA,CAAkB1I,EAAKvU,GAErB,OADKA,IAAIA,EAAKxwC,KAAKoH,QAAQ4/C,WACW,OAAlChnD,KAAKoH,QAAQsmD,iBAAkC,IAE9C1tD,KAAK8sD,YAAY/H,EAAKvU,IAEpBxwC,KAAK8sD,YAAY/H,EAAKvU,EAC/B,CACAmd,iBAAAA,CAAkB5I,GAChB,OAAO/kD,KAAKib,KAAK8pC,EACnB,CACA6I,2BAAAA,CAA4B7I,GAC1B,MAAM9pC,EAAOjb,KAAK2tD,kBAAkB5I,GAEpC,SADU9pC,GAAQ5b,OAAO6M,KAAK+O,IAAS,IAC5B4yC,MAAKluD,GAAKsb,EAAKtb,IAAMN,OAAO6M,KAAK+O,EAAKtb,IAAInB,OAAS,GAChE,CACAsvD,MAAAA,GACE,OAAO9tD,KAAKib,IACd,EAGF,IAAI8yC,GAAgB,CAClBC,WAAY,CAAC,EACbC,gBAAAA,CAAiBriB,GACf5rC,KAAKguD,WAAWpiB,EAAOvnC,MAAQunC,CACjC,EACAiY,MAAAA,CAAOmK,EAAYjoD,EAAOwW,EAAKnV,EAAS8mD,GAItC,OAHAF,EAAWrtD,SAAQwtD,IACbnuD,KAAKguD,WAAWG,KAAYpoD,EAAQ/F,KAAKguD,WAAWG,GAAWC,QAAQroD,EAAOwW,EAAKnV,EAAS8mD,GAAW,IAEtGnoD,CACT,GAGF,MAAMsoD,GAAmB,CAAC,EAC1B,MAAMC,WAAmBrE,GACvB5kD,WAAAA,CAAYyiD,GACV,IAAI1gD,EAAU7I,UAAUC,OAAS,QAAsBwxC,IAAjBzxC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnFmiD,QA5US6N,EAACnwD,EAAGszC,EAAGvqB,KAClB/oB,EAAEuC,SAAQyO,IACJsiC,EAAEtiC,KAAI+X,EAAE/X,GAAKsiC,EAAEtiC,GAAE,GACrB,EA0UAm/C,CAAK,CAAC,gBAAiB,gBAAiB,iBAAkB,eAAgB,mBAAoB,aAAc,SAAUzG,EAAU9nD,MAChIA,KAAKoH,QAAUA,OACmB4oC,IAA9BhwC,KAAKoH,QAAQklD,eACftsD,KAAKoH,QAAQklD,aAAe,KAE9BtsD,KAAKopD,OAASY,GAAWzzB,OAAO,aAClC,CACAi4B,cAAAA,CAAezJ,GACTA,IAAK/kD,KAAKymD,SAAW1B,EAC3B,CACA0J,MAAAA,CAAOlyC,GACL,IAAInV,EAAU7I,UAAUC,OAAS,QAAsBwxC,IAAjBzxC,UAAU,GAAmBA,UAAU,GAAK,CAChFmwD,cAAe,CAAC,GAElB,QAAY1e,IAARzzB,GAA6B,OAARA,EACvB,OAAO,EAET,MAAMoyC,EAAW3uD,KAAKupB,QAAQhN,EAAKnV,GACnC,OAAOunD,QAA6B3e,IAAjB2e,EAAShE,GAC9B,CACAiE,cAAAA,CAAeryC,EAAKnV,GAClB,IAAIynD,OAAsC7e,IAAxB5oC,EAAQynD,YAA4BznD,EAAQynD,YAAc7uD,KAAKoH,QAAQynD,iBACrE7e,IAAhB6e,IAA2BA,EAAc,KAC7C,MAAMvC,OAAwCtc,IAAzB5oC,EAAQklD,aAA6BllD,EAAQklD,aAAetsD,KAAKoH,QAAQklD,aAC9F,IAAIhG,EAAal/C,EAAQopC,IAAMxwC,KAAKoH,QAAQ4/C,WAAa,GACzD,MAAM8H,EAAuBD,GAAetyC,EAAIvQ,QAAQ6iD,IAAgB,EAClEE,GAAwB/uD,KAAKoH,QAAQ4nD,0BAA4B5nD,EAAQklD,eAAiBtsD,KAAKoH,QAAQ6nD,yBAA2B7nD,EAAQynD,cAzOxHK,EAAC3yC,EAAKsyC,EAAavC,KAC7CuC,EAAcA,GAAe,GAC7BvC,EAAeA,GAAgB,GAC/B,MAAM6C,EAAgBtD,GAAMrS,QAAOl7C,GAAKuwD,EAAY7iD,QAAQ1N,GAAK,GAAKguD,EAAatgD,QAAQ1N,GAAK,IAChG,GAA6B,IAAzB6wD,EAAc3wD,OAAc,OAAO,EACvC,MAAM6wB,EAAIy8B,GAA+BI,UAAU,IAAIiD,EAAc1iB,KAAInuC,GAAW,MAANA,EAAY,MAAQA,IAAGmwB,KAAK,SAC1G,IAAI2gC,GAAW//B,EAAE/tB,KAAKib,GACtB,IAAK6yC,EAAS,CACZ,MAAMz4B,EAAKpa,EAAIvQ,QAAQsgD,GACnB31B,EAAK,IAAMtH,EAAE/tB,KAAKib,EAAInQ,UAAU,EAAGuqB,MACrCy4B,GAAU,EAEd,CACA,OAAOA,CAAO,EA4NoJF,CAAoB3yC,EAAKsyC,EAAavC,GACtM,GAAIwC,IAAyBC,EAAsB,CACjD,MAAM3/C,EAAImN,EAAI/Y,MAAMxD,KAAKqvD,aAAaC,eACtC,GAAIlgD,GAAKA,EAAE5Q,OAAS,EAClB,MAAO,CACL+d,MACA+pC,cAGJ,MAAMiJ,EAAQhzC,EAAI7b,MAAMmuD,IACpBA,IAAgBvC,GAAgBuC,IAAgBvC,GAAgBtsD,KAAKoH,QAAQopC,GAAGxkC,QAAQujD,EAAM,KAAO,KAAGjJ,EAAaiJ,EAAM55C,SAC/H4G,EAAMgzC,EAAM9gC,KAAK69B,EACnB,CAEA,MAD0B,kBAAfhG,IAAyBA,EAAa,CAACA,IAC3C,CACL/pC,MACA+pC,aAEJ,CACAkJ,SAAAA,CAAUtjD,EAAM9E,EAASqoD,GAQvB,GAPuB,kBAAZroD,GAAwBpH,KAAKoH,QAAQsoD,mCAC9CtoD,EAAUpH,KAAKoH,QAAQsoD,iCAAiCnxD,YAEnC,kBAAZ6I,IAAsBA,EAAU,IACtCA,IAEAA,IAASA,EAAU,CAAC,QACZ4oC,IAAT9jC,GAA+B,OAATA,EAAe,MAAO,GAC3CjF,MAAMC,QAAQgF,KAAOA,EAAO,CAACsQ,OAAOtQ,KACzC,MAAMyjD,OAA0C3f,IAA1B5oC,EAAQuoD,cAA8BvoD,EAAQuoD,cAAgB3vD,KAAKoH,QAAQuoD,cAC3FrD,OAAwCtc,IAAzB5oC,EAAQklD,aAA6BllD,EAAQklD,aAAetsD,KAAKoH,QAAQklD,cACxF,IACJ/vC,EAAG,WACH+pC,GACEtmD,KAAK4uD,eAAe1iD,EAAKA,EAAK1N,OAAS,GAAI4I,GACzCs/C,EAAYJ,EAAWA,EAAW9nD,OAAS,GAC3CumD,EAAM39C,EAAQ29C,KAAO/kD,KAAKymD,SAC1BmJ,EAA0BxoD,EAAQwoD,yBAA2B5vD,KAAKoH,QAAQwoD,wBAChF,GAAI7K,GAA6B,WAAtBA,EAAInkD,cAA4B,CACzC,GAAIgvD,EAAyB,CAC3B,MAAMf,EAAcznD,EAAQynD,aAAe7uD,KAAKoH,QAAQynD,YACxD,OAAIc,EACK,CACLhF,IAAK,GAAGjE,IAAYmI,IAActyC,IAClCszC,QAAStzC,EACTuzC,aAAcvzC,EACdwzC,QAAShL,EACTiL,OAAQtJ,EACRuJ,WAAYjwD,KAAKkwD,qBAAqB9oD,IAGnC,GAAGs/C,IAAYmI,IAActyC,GACtC,CACA,OAAIozC,EACK,CACLhF,IAAKpuC,EACLszC,QAAStzC,EACTuzC,aAAcvzC,EACdwzC,QAAShL,EACTiL,OAAQtJ,EACRuJ,WAAYjwD,KAAKkwD,qBAAqB9oD,IAGnCmV,CACT,CACA,MAAMoyC,EAAW3uD,KAAKupB,QAAQrd,EAAM9E,GACpC,IAAIujD,EAAMgE,GAAYA,EAAShE,IAC/B,MAAMwF,EAAaxB,GAAYA,EAASkB,SAAWtzC,EAC7C6zC,EAAkBzB,GAAYA,EAASmB,cAAgBvzC,EACvD8zC,EAAUhxD,OAAOC,UAAUgJ,SAAS6G,MAAMw7C,GAE1C2F,OAAoCtgB,IAAvB5oC,EAAQkpD,WAA2BlpD,EAAQkpD,WAAatwD,KAAKoH,QAAQkpD,WAClFC,GAA8BvwD,KAAKwwD,YAAcxwD,KAAKwwD,WAAWC,eAEvE,GAAIF,GAA8B5F,IADI,kBAARA,GAAmC,mBAARA,GAAoC,kBAARA,IAHpE,CAAC,kBAAmB,oBAAqB,mBAIU3+C,QAAQqkD,GAAW,IAA6B,kBAAfC,IAA2BrpD,MAAMC,QAAQyjD,IAAO,CACnJ,IAAKvjD,EAAQspD,gBAAkB1wD,KAAKoH,QAAQspD,cAAe,CACpD1wD,KAAKoH,QAAQupD,uBAChB3wD,KAAKopD,OAAOxV,KAAK,mEAEnB,MAAMvkB,EAAIrvB,KAAKoH,QAAQupD,sBAAwB3wD,KAAKoH,QAAQupD,sBAAsBR,EAAYxF,EAAK,IAC9FvjD,EACHopC,GAAI8V,IACD,QAAQ/pC,MAAQvc,KAAKymD,mDAC1B,OAAIkJ,GACFhB,EAAShE,IAAMt7B,EACfs/B,EAASsB,WAAajwD,KAAKkwD,qBAAqB9oD,GACzCunD,GAEFt/B,CACT,CACA,GAAIi9B,EAAc,CAChB,MAAMsE,EAAiB3pD,MAAMC,QAAQyjD,GAC/B4D,EAAOqC,EAAiB,GAAK,CAAC,EAC9BC,EAAcD,EAAiBR,EAAkBD,EACvD,IAAK,MAAM/gD,KAAKu7C,EACd,GAAItrD,OAAOC,UAAUC,eAAe8B,KAAKspD,EAAKv7C,GAAI,CAChD,MAAM0hD,EAAU,GAAGD,IAAcvE,IAAel9C,IAChDm/C,EAAKn/C,GAAKpP,KAAKwvD,UAAUsB,EAAS,IAC7B1pD,EAEDkpD,YAAY,EACZ9f,GAAI8V,IAGJiI,EAAKn/C,KAAO0hD,IAASvC,EAAKn/C,GAAKu7C,EAAIv7C,GACzC,CAEFu7C,EAAM4D,CACR,CACF,MAAO,GAAIgC,GAAoD,kBAAfD,GAA2BrpD,MAAMC,QAAQyjD,GACvFA,EAAMA,EAAIl8B,KAAK6hC,GACX3F,IAAKA,EAAM3qD,KAAK+wD,kBAAkBpG,EAAKz+C,EAAM9E,EAASqoD,QACrD,CACL,IAAIuB,GAAc,EACdnB,GAAU,EACd,MAAMoB,OAAwCjhB,IAAlB5oC,EAAQslC,OAAgD,kBAAlBtlC,EAAQslC,MACpEwkB,EAAkB5C,GAAW4C,gBAAgB9pD,GAC7C+pD,EAAqBF,EAAsBjxD,KAAKoxD,eAAeC,UAAUtM,EAAK39C,EAAQslC,MAAOtlC,GAAW,GACxGkqD,EAAoClqD,EAAQmqD,SAAWN,EAAsBjxD,KAAKoxD,eAAeC,UAAUtM,EAAK39C,EAAQslC,MAAO,CACnI6kB,SAAS,IACN,GACCC,EAAwBP,IAAwB7pD,EAAQmqD,SAA6B,IAAlBnqD,EAAQslC,OAAe1sC,KAAKoxD,eAAeK,mBAC9GprD,EAAemrD,GAAyBpqD,EAAQ,eAAepH,KAAKoH,QAAQsqD,wBAA0BtqD,EAAQ,eAAe+pD,MAAyB/pD,EAAQ,eAAekqD,MAAwClqD,EAAQf,cAC9NrG,KAAK2xD,cAAchH,IAAQuG,IAC9BF,GAAc,EACdrG,EAAMtkD,GAEHrG,KAAK2xD,cAAchH,KACtBkF,GAAU,EACVlF,EAAMpuC,GAER,MACMq1C,GADiCxqD,EAAQyqD,gCAAkC7xD,KAAKoH,QAAQyqD,iCACtChC,OAAU7f,EAAY2a,EACxEmH,EAAgBZ,GAAmB7qD,IAAiBskD,GAAO3qD,KAAKoH,QAAQ0qD,cAC9E,GAAIjC,GAAWmB,GAAec,EAAe,CAE3C,GADA9xD,KAAKopD,OAAO72C,IAAIu/C,EAAgB,YAAc,aAAc/M,EAAK2B,EAAWnqC,EAAKu1C,EAAgBzrD,EAAeskD,GAC5G2B,EAAc,CAChB,MAAMjqB,EAAKriC,KAAKupB,QAAQhN,EAAK,IACxBnV,EACHklD,cAAc,IAEZjqB,GAAMA,EAAGsoB,KAAK3qD,KAAKopD,OAAOxV,KAAK,kLACrC,CACA,IAAIme,EAAO,GACX,MAAMC,EAAehyD,KAAKiyD,cAAcC,iBAAiBlyD,KAAKoH,QAAQ+qD,YAAa/qD,EAAQ29C,KAAO/kD,KAAKymD,UACvG,GAAmC,aAA/BzmD,KAAKoH,QAAQgrD,eAAgCJ,GAAgBA,EAAa,GAC5E,IAAK,IAAIvgB,EAAI,EAAGA,EAAIugB,EAAaxzD,OAAQizC,IACvCsgB,EAAKxjD,KAAKyjD,EAAavgB,QAEe,QAA/BzxC,KAAKoH,QAAQgrD,cACtBL,EAAO/xD,KAAKiyD,cAAcI,mBAAmBjrD,EAAQ29C,KAAO/kD,KAAKymD,UAEjEsL,EAAKxjD,KAAKnH,EAAQ29C,KAAO/kD,KAAKymD,UAEhC,MAAM6L,EAAOA,CAACtuD,EAAGE,EAAGquD,KAClB,MAAMC,EAAoBtB,GAAmBqB,IAAyB5H,EAAM4H,EAAuBX,EAC/F5xD,KAAKoH,QAAQqrD,kBACfzyD,KAAKoH,QAAQqrD,kBAAkBzuD,EAAG0iD,EAAWxiD,EAAGsuD,EAAmBV,EAAe1qD,GACzEpH,KAAK+nD,kBAAoB/nD,KAAK+nD,iBAAiB2K,aACxD1yD,KAAK+nD,iBAAiB2K,YAAY1uD,EAAG0iD,EAAWxiD,EAAGsuD,EAAmBV,EAAe1qD,GAEvFpH,KAAKqqD,KAAK,aAAcrmD,EAAG0iD,EAAWxiD,EAAGymD,EAAI,EAE3C3qD,KAAKoH,QAAQsrD,cACX1yD,KAAKoH,QAAQurD,oBAAsB1B,EACrCc,EAAKpxD,SAAQ8lD,IACX,MAAMmM,EAAW5yD,KAAKoxD,eAAeyB,YAAYpM,EAAUr/C,GACvDoqD,GAAyBpqD,EAAQ,eAAepH,KAAKoH,QAAQsqD,wBAA0BkB,EAAS5mD,QAAQ,GAAGhM,KAAKoH,QAAQsqD,uBAAyB,GACnJkB,EAASrkD,KAAK,GAAGvO,KAAKoH,QAAQsqD,uBAEhCkB,EAASjyD,SAAQmyD,IACfR,EAAK,CAAC7L,GAAWlqC,EAAMu2C,EAAQ1rD,EAAQ,eAAe0rD,MAAazsD,EAAa,GAChF,IAGJisD,EAAKP,EAAMx1C,EAAKlW,GAGtB,CACAskD,EAAM3qD,KAAK+wD,kBAAkBpG,EAAKz+C,EAAM9E,EAASunD,EAAUc,GACvDI,GAAWlF,IAAQpuC,GAAOvc,KAAKoH,QAAQ2rD,8BAA6BpI,EAAM,GAAGjE,KAAanqC,MACzFszC,GAAWmB,IAAgBhxD,KAAKoH,QAAQ4rD,yBAEzCrI,EADoC,OAAlC3qD,KAAKoH,QAAQsmD,iBACT1tD,KAAKoH,QAAQ4rD,uBAAuBhzD,KAAKoH,QAAQ2rD,4BAA8B,GAAGrM,KAAanqC,IAAQA,EAAKy0C,EAAcrG,OAAM3a,GAEhIhwC,KAAKoH,QAAQ4rD,uBAAuBrI,GAGhD,CACA,OAAIgF,GACFhB,EAAShE,IAAMA,EACfgE,EAASsB,WAAajwD,KAAKkwD,qBAAqB9oD,GACzCunD,GAEFhE,CACT,CACAoG,iBAAAA,CAAkBpG,EAAKpuC,EAAKnV,EAASunD,EAAUc,GAC7C,IAAIwD,EAAQjzD,KACZ,GAAIA,KAAKwwD,YAAcxwD,KAAKwwD,WAAW7R,MACrCgM,EAAM3qD,KAAKwwD,WAAW7R,MAAMgM,EAAK,IAC5B3qD,KAAKoH,QAAQsnD,cAAcwE,oBAC3B9rD,GACFA,EAAQ29C,KAAO/kD,KAAKymD,UAAYkI,EAASoB,QAASpB,EAASqB,OAAQrB,EAASkB,QAAS,CACtFlB,kBAEG,IAAKvnD,EAAQ+rD,kBAAmB,CACjC/rD,EAAQsnD,eAAe1uD,KAAKqvD,aAAavJ,KAAK,IAC7C1+C,EAEDsnD,cAAe,IACV1uD,KAAKoH,QAAQsnD,iBACbtnD,EAAQsnD,iBAIjB,MAAM0E,EAAiC,kBAARzI,IAAqBvjD,GAAWA,EAAQsnD,oBAA2D1e,IAA1C5oC,EAAQsnD,cAAc0E,gBAAgChsD,EAAQsnD,cAAc0E,gBAAkBpzD,KAAKoH,QAAQsnD,cAAc0E,iBACjN,IAAIC,EACJ,GAAID,EAAiB,CACnB,MAAMlrD,EAAKyiD,EAAInnD,MAAMxD,KAAKqvD,aAAaC,eACvC+D,EAAUnrD,GAAMA,EAAG1J,MACrB,CACA,IAAIyc,EAAO7T,EAAQzF,SAAsC,kBAApByF,EAAQzF,QAAuByF,EAAQzF,QAAUyF,EAMtF,GALIpH,KAAKoH,QAAQsnD,cAAcwE,mBAAkBj4C,EAAO,IACnDjb,KAAKoH,QAAQsnD,cAAcwE,oBAC3Bj4C,IAEL0vC,EAAM3qD,KAAKqvD,aAAaiE,YAAY3I,EAAK1vC,EAAM7T,EAAQ29C,KAAO/kD,KAAKymD,UAAYkI,EAASoB,QAAS3oD,GAC7FgsD,EAAiB,CACnB,MAAMtrC,EAAK6iC,EAAInnD,MAAMxD,KAAKqvD,aAAaC,eAEnC+D,GADYvrC,GAAMA,EAAGtpB,UACF4I,EAAQmsD,MAAO,EACxC,EACKnsD,EAAQ29C,KAAyC,OAAlC/kD,KAAKoH,QAAQsmD,kBAA6BiB,GAAYA,EAAShE,MAAKvjD,EAAQ29C,IAAM/kD,KAAKymD,UAAYkI,EAASoB,UAC3G,IAAjB3oD,EAAQmsD,OAAgB5I,EAAM3qD,KAAKqvD,aAAakE,KAAK5I,GAAK,WAC5D,IAAK,IAAIrG,EAAO/lD,UAAUC,OAAQ2lD,EAAO,IAAIl9C,MAAMq9C,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC/EJ,EAAKI,GAAQhmD,UAAUgmD,GAEzB,OAAIkL,GAAWA,EAAQ,KAAOtL,EAAK,KAAO/8C,EAAQspB,SAChDuiC,EAAM7J,OAAOxV,KAAK,6CAA6CuQ,EAAK,cAAc5nC,EAAI,MAC/E,MAEF02C,EAAMzD,aAAarL,EAAM5nC,EAClC,GAAGnV,IACCA,EAAQsnD,eAAe1uD,KAAKqvD,aAAamE,OAC/C,CACA,MAAMC,EAAcrsD,EAAQqsD,aAAezzD,KAAKoH,QAAQqsD,YAClDC,EAA4C,kBAAhBD,EAA2B,CAACA,GAAeA,EAU7E,YATYzjB,IAAR2a,GAA6B,OAARA,GAAgB+I,GAAsBA,EAAmBl1D,SAAyC,IAA/B4I,EAAQusD,qBAClGhJ,EAAMoD,GAAclK,OAAO6P,EAAoB/I,EAAKpuC,EAAKvc,KAAKoH,SAAWpH,KAAKoH,QAAQwsD,wBAA0B,CAC9GC,aAAc,IACTlF,EACHsB,WAAYjwD,KAAKkwD,qBAAqB9oD,OAErCA,GACDA,EAASpH,OAER2qD,CACT,CACAphC,OAAAA,CAAQrd,GACN,IACI4nD,EACAjE,EACAC,EACAC,EACAC,EALA5oD,EAAU7I,UAAUC,OAAS,QAAsBwxC,IAAjBzxC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAqEnF,MA/DoB,kBAAT2N,IAAmBA,EAAO,CAACA,IACtCA,EAAKvL,SAAQuD,IACX,GAAIlE,KAAK2xD,cAAcmC,GAAQ,OAC/B,MAAMC,EAAY/zD,KAAK4uD,eAAe1qD,EAAGkD,GACnCmV,EAAMw3C,EAAUx3C,IACtBszC,EAAUtzC,EACV,IAAI+pC,EAAayN,EAAUzN,WACvBtmD,KAAKoH,QAAQ4sD,aAAY1N,EAAaA,EAAWpgC,OAAOlmB,KAAKoH,QAAQ4sD,aACzE,MAAM/C,OAAwCjhB,IAAlB5oC,EAAQslC,OAAgD,kBAAlBtlC,EAAQslC,MACpE8kB,EAAwBP,IAAwB7pD,EAAQmqD,SAA6B,IAAlBnqD,EAAQslC,OAAe1sC,KAAKoxD,eAAeK,mBAC9GwC,OAA2CjkB,IAApB5oC,EAAQspB,UAAqD,kBAApBtpB,EAAQspB,SAAmD,kBAApBtpB,EAAQspB,UAA6C,KAApBtpB,EAAQspB,QAChJwjC,EAAQ9sD,EAAQ2qD,KAAO3qD,EAAQ2qD,KAAO/xD,KAAKiyD,cAAcI,mBAAmBjrD,EAAQ29C,KAAO/kD,KAAKymD,SAAUr/C,EAAQ+qD,aACxH7L,EAAW3lD,SAAQ6vC,IACbxwC,KAAK2xD,cAAcmC,KACvB9D,EAASxf,GACJ6d,GAAiB,GAAG6F,EAAM,MAAM1jB,MAASxwC,KAAKm0D,OAASn0D,KAAKm0D,MAAMxM,qBAAuB3nD,KAAKm0D,MAAMxM,mBAAmBqI,KAC1H3B,GAAiB,GAAG6F,EAAM,MAAM1jB,MAAQ,EACxCxwC,KAAKopD,OAAOxV,KAAK,QAAQic,qBAA2BqE,EAAMzlC,KAAK,2CAA2CuhC,wBAA8B,6NAE1IkE,EAAMvzD,SAAQ+b,IACZ,GAAI1c,KAAK2xD,cAAcmC,GAAQ,OAC/B/D,EAAUrzC,EACV,MAAM03C,EAAY,CAAC73C,GACnB,GAAIvc,KAAKwwD,YAAcxwD,KAAKwwD,WAAW6D,cACrCr0D,KAAKwwD,WAAW6D,cAAcD,EAAW73C,EAAKG,EAAM8zB,EAAIppC,OACnD,CACL,IAAIktD,EACArD,IAAqBqD,EAAet0D,KAAKoxD,eAAeC,UAAU30C,EAAMtV,EAAQslC,MAAOtlC,IAC3F,MAAMmtD,EAAa,GAAGv0D,KAAKoH,QAAQsqD,sBAC7B8C,EAAgB,GAAGx0D,KAAKoH,QAAQsqD,yBAAyB1xD,KAAKoH,QAAQsqD,kBAU5E,GATIT,IACFmD,EAAU7lD,KAAKgO,EAAM+3C,GACjBltD,EAAQmqD,SAAmD,IAAxC+C,EAAatoD,QAAQwoD,IAC1CJ,EAAU7lD,KAAKgO,EAAM+3C,EAAa3yD,QAAQ6yD,EAAex0D,KAAKoH,QAAQsqD,kBAEpEF,GACF4C,EAAU7lD,KAAKgO,EAAMg4C,IAGrBN,EAAsB,CACxB,MAAMQ,EAAa,GAAGl4C,IAAMvc,KAAKoH,QAAQstD,mBAAmBttD,EAAQspB,UACpE0jC,EAAU7lD,KAAKkmD,GACXxD,IACFmD,EAAU7lD,KAAKkmD,EAAaH,GACxBltD,EAAQmqD,SAAmD,IAAxC+C,EAAatoD,QAAQwoD,IAC1CJ,EAAU7lD,KAAKkmD,EAAaH,EAAa3yD,QAAQ6yD,EAAex0D,KAAKoH,QAAQsqD,kBAE3EF,GACF4C,EAAU7lD,KAAKkmD,EAAaF,GAGlC,CACF,CACA,IAAII,EACJ,KAAOA,EAAcP,EAAUjmB,OACxBnuC,KAAK2xD,cAAcmC,KACtBhE,EAAe6E,EACfb,EAAQ9zD,KAAK8sD,YAAYpwC,EAAM8zB,EAAImkB,EAAavtD,GAEpD,IACA,GACF,IAEG,CACLujD,IAAKmJ,EACLjE,UACAC,eACAC,UACAC,SAEJ,CACA2B,aAAAA,CAAchH,GACZ,YAAe3a,IAAR2a,MAAwB3qD,KAAKoH,QAAQwtD,YAAsB,OAARjK,OAAoB3qD,KAAKoH,QAAQytD,mBAA6B,KAARlK,EAClH,CACAmC,WAAAA,CAAYpwC,EAAM8zB,EAAIj0B,GACpB,IAAInV,EAAU7I,UAAUC,OAAS,QAAsBwxC,IAAjBzxC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnF,OAAIyB,KAAKwwD,YAAcxwD,KAAKwwD,WAAW1D,YAAoB9sD,KAAKwwD,WAAW1D,YAAYpwC,EAAM8zB,EAAIj0B,EAAKnV,GAC/FpH,KAAK80D,cAAchI,YAAYpwC,EAAM8zB,EAAIj0B,EAAKnV,EACvD,CACA8oD,oBAAAA,GACE,IAAI9oD,EAAU7I,UAAUC,OAAS,QAAsBwxC,IAAjBzxC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnF,MAAMw2D,EAAc,CAAC,eAAgB,UAAW,UAAW,UAAW,MAAO,OAAQ,cAAe,KAAM,eAAgB,cAAe,gBAAiB,gBAAiB,aAAc,cAAe,iBAClMC,EAA2B5tD,EAAQzF,SAAsC,kBAApByF,EAAQzF,QACnE,IAAIsZ,EAAO+5C,EAA2B5tD,EAAQzF,QAAUyF,EAUxD,GATI4tD,GAAqD,qBAAlB5tD,EAAQslC,QAC7CzxB,EAAKyxB,MAAQtlC,EAAQslC,OAEnB1sC,KAAKoH,QAAQsnD,cAAcwE,mBAC7Bj4C,EAAO,IACFjb,KAAKoH,QAAQsnD,cAAcwE,oBAC3Bj4C,KAGF+5C,EAA0B,CAC7B/5C,EAAO,IACFA,GAEL,IAAK,MAAMsB,KAAOw4C,SACT95C,EAAKsB,EAEhB,CACA,OAAOtB,CACT,CACA,sBAAOi2C,CAAgB9pD,GACrB,MAAM+hD,EAAS,eACf,IAAK,MAAM8L,KAAU7tD,EACnB,GAAI/H,OAAOC,UAAUC,eAAe8B,KAAK+F,EAAS6tD,IAAW9L,IAAW8L,EAAO7oD,UAAU,EAAG+8C,UAAkBnZ,IAAc5oC,EAAQ6tD,GAClI,OAAO,EAGX,OAAO,CACT,EAGF,MAAMC,GAAaC,GAAUA,EAAOhpD,OAAO,GAAGpL,cAAgBo0D,EAAOl0D,MAAM,GAC3E,MAAMm0D,GACJ/vD,WAAAA,CAAY+B,GACVpH,KAAKoH,QAAUA,EACfpH,KAAKq1D,cAAgBr1D,KAAKoH,QAAQiuD,gBAAiB,EACnDr1D,KAAKopD,OAASY,GAAWzzB,OAAO,gBAClC,CACA++B,qBAAAA,CAAsB54C,GAEpB,KADAA,EAAO+vC,GAAe/vC,KACTA,EAAK1Q,QAAQ,KAAO,EAAG,OAAO,KAC3C,MAAM7N,EAAIue,EAAKhc,MAAM,KACrB,OAAiB,IAAbvC,EAAEK,OAAqB,MAC3BL,EAAEgwC,MACoC,MAAlChwC,EAAEA,EAAEK,OAAS,GAAGoC,cAA8B,KAC3CZ,KAAKu1D,mBAAmBp3D,EAAEswB,KAAK,MACxC,CACA+mC,uBAAAA,CAAwB94C,GAEtB,KADAA,EAAO+vC,GAAe/vC,KACTA,EAAK1Q,QAAQ,KAAO,EAAG,OAAO0Q,EAC3C,MAAMve,EAAIue,EAAKhc,MAAM,KACrB,OAAOV,KAAKu1D,mBAAmBp3D,EAAE,GACnC,CACAo3D,kBAAAA,CAAmB74C,GACjB,GAAoB,kBAATA,GAAqBA,EAAK1Q,QAAQ,MAAQ,EAAG,CACtD,MAAMypD,EAAe,CAAC,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,QACtE,IAAIt3D,EAAIue,EAAKhc,MAAM,KAcnB,OAbIV,KAAKoH,QAAQsuD,aACfv3D,EAAIA,EAAEsuC,KAAIkpB,GAAQA,EAAK/0D,gBACD,IAAbzC,EAAEK,QACXL,EAAE,GAAKA,EAAE,GAAGyC,cACZzC,EAAE,GAAKA,EAAE,GAAG4C,cACR00D,EAAazpD,QAAQ7N,EAAE,GAAGyC,gBAAkB,IAAGzC,EAAE,GAAK+2D,GAAW/2D,EAAE,GAAGyC,iBACpD,IAAbzC,EAAEK,SACXL,EAAE,GAAKA,EAAE,GAAGyC,cACQ,IAAhBzC,EAAE,GAAGK,SAAcL,EAAE,GAAKA,EAAE,GAAG4C,eACtB,QAAT5C,EAAE,IAAgC,IAAhBA,EAAE,GAAGK,SAAcL,EAAE,GAAKA,EAAE,GAAG4C,eACjD00D,EAAazpD,QAAQ7N,EAAE,GAAGyC,gBAAkB,IAAGzC,EAAE,GAAK+2D,GAAW/2D,EAAE,GAAGyC,gBACtE60D,EAAazpD,QAAQ7N,EAAE,GAAGyC,gBAAkB,IAAGzC,EAAE,GAAK+2D,GAAW/2D,EAAE,GAAGyC,iBAErEzC,EAAEswB,KAAK,IAChB,CACA,OAAOzuB,KAAKoH,QAAQwuD,WAAa51D,KAAKoH,QAAQsuD,aAAeh5C,EAAK9b,cAAgB8b,CACpF,CACAm5C,eAAAA,CAAgBn5C,GAId,OAH0B,iBAAtB1c,KAAKoH,QAAQ0uD,MAA2B91D,KAAKoH,QAAQ2uD,4BACvDr5C,EAAO1c,KAAKw1D,wBAAwB94C,KAE9B1c,KAAKq1D,gBAAkBr1D,KAAKq1D,cAAc72D,QAAUwB,KAAKq1D,cAAcrpD,QAAQ0Q,IAAS,CAClG,CACAs5C,qBAAAA,CAAsB9B,GACpB,IAAKA,EAAO,OAAO,KACnB,IAAIJ,EAoBJ,OAnBAI,EAAMvzD,SAAQ+b,IACZ,GAAIo3C,EAAO,OACX,MAAMmC,EAAaj2D,KAAKu1D,mBAAmB74C,GACtC1c,KAAKoH,QAAQiuD,gBAAiBr1D,KAAK61D,gBAAgBI,KAAanC,EAAQmC,EAAU,KAEpFnC,GAAS9zD,KAAKoH,QAAQiuD,eACzBnB,EAAMvzD,SAAQ+b,IACZ,GAAIo3C,EAAO,OACX,MAAMoC,EAAUl2D,KAAKw1D,wBAAwB94C,GAC7C,GAAI1c,KAAK61D,gBAAgBK,GAAU,OAAOpC,EAAQoC,EAClDpC,EAAQ9zD,KAAKoH,QAAQiuD,cAAcxH,MAAKsI,GAClCA,IAAiBD,EAAgBC,EACjCA,EAAanqD,QAAQ,KAAO,GAAKkqD,EAAQlqD,QAAQ,KAAO,OAA5D,EACImqD,EAAanqD,QAAQ,KAAO,GAAKkqD,EAAQlqD,QAAQ,KAAO,GAAKmqD,EAAa/pD,UAAU,EAAG+pD,EAAanqD,QAAQ,QAAUkqD,GACpF,IAAlCC,EAAanqD,QAAQkqD,IAAkBA,EAAQ13D,OAAS,EAD8E23D,OAC1I,GACA,IAGDrC,IAAOA,EAAQ9zD,KAAKkyD,iBAAiBlyD,KAAKoH,QAAQ+qD,aAAa,IAC7D2B,CACT,CACA5B,gBAAAA,CAAiBkE,EAAW15C,GAC1B,IAAK05C,EAAW,MAAO,GAGvB,GAFyB,oBAAdA,IAA0BA,EAAYA,EAAU15C,IAClC,kBAAd05C,IAAwBA,EAAY,CAACA,IAC5CnvD,MAAMC,QAAQkvD,GAAY,OAAOA,EACrC,IAAK15C,EAAM,OAAO05C,EAAU7pB,SAAW,GACvC,IAAIunB,EAAQsC,EAAU15C,GAKtB,OAJKo3C,IAAOA,EAAQsC,EAAUp2D,KAAKs1D,sBAAsB54C,KACpDo3C,IAAOA,EAAQsC,EAAUp2D,KAAKu1D,mBAAmB74C,KACjDo3C,IAAOA,EAAQsC,EAAUp2D,KAAKw1D,wBAAwB94C,KACtDo3C,IAAOA,EAAQsC,EAAU7pB,SACvBunB,GAAS,EAClB,CACAzB,kBAAAA,CAAmB31C,EAAM25C,GACvB,MAAMC,EAAgBt2D,KAAKkyD,iBAAiBmE,GAAgBr2D,KAAKoH,QAAQ+qD,aAAe,GAAIz1C,GACtFw3C,EAAQ,GACRqC,EAAUj4D,IACTA,IACD0B,KAAK61D,gBAAgBv3D,GACvB41D,EAAM3lD,KAAKjQ,GAEX0B,KAAKopD,OAAOxV,KAAK,uDAAuDt1C,KAC1E,EAYF,MAVoB,kBAAToe,IAAsBA,EAAK1Q,QAAQ,MAAQ,GAAK0Q,EAAK1Q,QAAQ,MAAQ,IACpD,iBAAtBhM,KAAKoH,QAAQ0uD,MAAyBS,EAAQv2D,KAAKu1D,mBAAmB74C,IAChD,iBAAtB1c,KAAKoH,QAAQ0uD,MAAiD,gBAAtB91D,KAAKoH,QAAQ0uD,MAAwBS,EAAQv2D,KAAKs1D,sBAAsB54C,IAC1F,gBAAtB1c,KAAKoH,QAAQ0uD,MAAwBS,EAAQv2D,KAAKw1D,wBAAwB94C,KACrD,kBAATA,GAChB65C,EAAQv2D,KAAKu1D,mBAAmB74C,IAElC45C,EAAc31D,SAAQ2Q,IAChB4iD,EAAMloD,QAAQsF,GAAM,GAAGilD,EAAQv2D,KAAKu1D,mBAAmBjkD,GAAI,IAE1D4iD,CACT,EAGF,IAAIsC,GAAO,CAAC,CACVzE,KAAM,CAAC,MAAO,KAAM,KAAM,MAAO,KAAM,MAAO,MAAO,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,QAAS,KAAM,KAAM,KAAM,KAAM,KAAM,MACjI0E,GAAI,CAAC,EAAG,GACRnlD,GAAI,GACH,CACDygD,KAAM,CAAC,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,MAAO,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,MAAO,MAAO,KAAM,QAAS,KAAM,MAAO,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MACzY0E,GAAI,CAAC,EAAG,GACRnlD,GAAI,GACH,CACDygD,KAAM,CAAC,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,MACxI0E,GAAI,CAAC,GACLnlD,GAAI,GACH,CACDygD,KAAM,CAAC,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,MAClD0E,GAAI,CAAC,EAAG,EAAG,GACXnlD,GAAI,GACH,CACDygD,KAAM,CAAC,MACP0E,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,GAAI,KACrBnlD,GAAI,GACH,CACDygD,KAAM,CAAC,KAAM,MACb0E,GAAI,CAAC,EAAG,EAAG,GACXnlD,GAAI,GACH,CACDygD,KAAM,CAAC,MAAO,MACd0E,GAAI,CAAC,EAAG,EAAG,GACXnlD,GAAI,GACH,CACDygD,KAAM,CAAC,MACP0E,GAAI,CAAC,EAAG,EAAG,EAAG,GACdnlD,GAAI,GACH,CACDygD,KAAM,CAAC,MACP0E,GAAI,CAAC,EAAG,GACRnlD,GAAI,GACH,CACDygD,KAAM,CAAC,MACP0E,GAAI,CAAC,EAAG,EAAG,EAAG,EAAG,IACjBnlD,GAAI,IACH,CACDygD,KAAM,CAAC,MACP0E,GAAI,CAAC,EAAG,EAAG,EAAG,IACdnlD,GAAI,IACH,CACDygD,KAAM,CAAC,MACP0E,GAAI,CAAC,EAAG,GACRnlD,GAAI,IACH,CACDygD,KAAM,CAAC,MACP0E,GAAI,CAAC,EAAG,GACRnlD,GAAI,IACH,CACDygD,KAAM,CAAC,MACP0E,GAAI,CAAC,EAAG,EAAG,EAAG,GACdnlD,GAAI,IACH,CACDygD,KAAM,CAAC,MACP0E,GAAI,CAAC,EAAG,EAAG,IACXnlD,GAAI,IACH,CACDygD,KAAM,CAAC,MACP0E,GAAI,CAAC,EAAG,EAAG,GACXnlD,GAAI,IACH,CACDygD,KAAM,CAAC,MACP0E,GAAI,CAAC,EAAG,GACRnlD,GAAI,IACH,CACDygD,KAAM,CAAC,OACP0E,GAAI,CAAC,EAAG,EAAG,GACXnlD,GAAI,IACH,CACDygD,KAAM,CAAC,MACP0E,GAAI,CAAC,EAAG,EAAG,GAAI,IACfnlD,GAAI,IACH,CACDygD,KAAM,CAAC,MACP0E,GAAI,CAAC,EAAG,GACRnlD,GAAI,GACH,CACDygD,KAAM,CAAC,MACP0E,GAAI,CAAC,EAAG,EAAG,IACXnlD,GAAI,IACH,CACDygD,KAAM,CAAC,MACP0E,GAAI,CAAC,EAAG,EAAG,EAAG,GACdnlD,GAAI,IACH,CACDygD,KAAM,CAAC,KAAM,MACb0E,GAAI,CAAC,EAAG,EAAG,GAAI,IACfnlD,GAAI,KAEFolD,GAAqB,CACvB,EAAGxvC,GAAKyvC,OAAOzvC,EAAI,GACnB,EAAGA,GAAKyvC,OAAY,GAALzvC,GACf,EAAGA,GAAK,EACR,EAAGA,GAAKyvC,OAAOzvC,EAAI,IAAM,GAAKA,EAAI,KAAO,GAAK,EAAIA,EAAI,IAAM,GAAKA,EAAI,IAAM,IAAMA,EAAI,IAAM,IAAMA,EAAI,KAAO,IAAM,EAAI,GACtH,EAAGA,GAAKyvC,OAAY,GAALzvC,EAAS,EAAS,GAALA,EAAS,EAAS,GAALA,EAAS,EAAIA,EAAI,KAAO,GAAKA,EAAI,KAAO,GAAK,EAAIA,EAAI,KAAO,GAAK,EAAI,GAC9G,EAAGA,GAAKyvC,OAAY,GAALzvC,EAAS,EAAIA,GAAK,GAAKA,GAAK,EAAI,EAAI,GACnD,EAAGA,GAAKyvC,OAAY,GAALzvC,EAAS,EAAIA,EAAI,IAAM,GAAKA,EAAI,IAAM,IAAMA,EAAI,IAAM,IAAMA,EAAI,KAAO,IAAM,EAAI,GAChG,EAAGA,GAAKyvC,OAAY,GAALzvC,EAAS,EAAS,GAALA,EAAS,EAAS,GAALA,GAAe,IAALA,EAAU,EAAI,GACjE,EAAGA,GAAKyvC,OAAOzvC,GAAK,GACpB,GAAIA,GAAKyvC,OAAY,GAALzvC,EAAS,EAAS,GAALA,EAAS,EAAIA,EAAI,EAAI,EAAIA,EAAI,GAAK,EAAI,GACnE,GAAIA,GAAKyvC,OAAY,GAALzvC,GAAe,IAALA,EAAU,EAAS,GAALA,GAAe,IAALA,EAAU,EAAIA,EAAI,GAAKA,EAAI,GAAK,EAAI,GACtF,GAAIA,GAAKyvC,OAAOzvC,EAAI,IAAM,GAAKA,EAAI,KAAO,IAC1C,GAAIA,GAAKyvC,OAAa,IAANzvC,GAChB,GAAIA,GAAKyvC,OAAY,GAALzvC,EAAS,EAAS,GAALA,EAAS,EAAS,GAALA,EAAS,EAAI,GACvD,GAAIA,GAAKyvC,OAAOzvC,EAAI,IAAM,GAAKA,EAAI,KAAO,GAAK,EAAIA,EAAI,IAAM,IAAMA,EAAI,IAAM,IAAMA,EAAI,KAAO,IAAM,EAAI,GACxG,GAAIA,GAAKyvC,OAAOzvC,EAAI,IAAM,GAAKA,EAAI,KAAO,GAAK,EAAU,IAANA,EAAU,EAAI,GACjE,GAAIA,GAAKyvC,OAAY,GAALzvC,GAAUA,EAAI,IAAM,GAAKA,EAAI,KAAO,GAAK,EAAI,GAC7D,GAAIA,GAAKyvC,OAAY,GAALzvC,EAAS,EAAS,GAALA,EAAS,EAAI,GAC1C,GAAIA,GAAKyvC,OAAY,GAALzvC,EAAS,EAAS,GAALA,GAAUA,EAAI,IAAM,GAAKA,EAAI,IAAM,GAAK,EAAIA,EAAI,IAAM,IAAMA,EAAI,IAAM,GAAK,EAAI,GAC5G,GAAIA,GAAKyvC,OAAY,GAALzvC,EAAS,EAAS,GAALA,GAAUA,EAAI,IAAM,GAAKA,EAAI,IAAM,GAAK,EAAI,GACzE,GAAIA,GAAKyvC,OAAOzvC,EAAI,KAAO,EAAI,EAAIA,EAAI,KAAO,EAAI,EAAIA,EAAI,KAAO,GAAKA,EAAI,KAAO,EAAI,EAAI,GACzF,GAAIA,GAAKyvC,OAAY,GAALzvC,EAAS,EAAS,GAALA,EAAS,GAAKA,EAAI,GAAKA,EAAI,KAAOA,EAAI,IAAM,EAAI,EAAI,IAEnF,MAAM0vC,GAAkB,CAAC,KAAM,KAAM,MAC/BC,GAAe,CAAC,MAChBC,GAAgB,CACpBC,KAAM,EACNC,IAAK,EACLC,IAAK,EACLC,IAAK,EACLC,KAAM,EACNC,MAAO,GAcT,MAAMC,GACJhyD,WAAAA,CAAY4sD,GACV,IAAI7qD,EAAU7I,UAAUC,OAAS,QAAsBwxC,IAAjBzxC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnFyB,KAAKiyD,cAAgBA,EACrBjyD,KAAKoH,QAAUA,EACfpH,KAAKopD,OAASY,GAAWzzB,OAAO,kBAC1Bv2B,KAAKoH,QAAQkwD,oBAAqBT,GAAazyD,SAASpE,KAAKoH,QAAQkwD,oBAAwC,qBAATC,MAAyBA,KAAKC,cACtIx3D,KAAKoH,QAAQkwD,kBAAoB,KACjCt3D,KAAKopD,OAAOpuB,MAAM,uJAEpBh7B,KAAKy3D,MAtBWC,MAClB,MAAMD,EAAQ,CAAC,EASf,OARAjB,GAAK71D,SAAQkD,IACXA,EAAIkuD,KAAKpxD,SAAQqD,IACfyzD,EAAMzzD,GAAK,CACT2zD,QAAS9zD,EAAI4yD,GACbmB,QAASlB,GAAmB7yD,EAAIyN,IACjC,GACD,IAEGmmD,CAAK,EAYGC,GACb13D,KAAK63D,iBAAmB,CAAC,CAC3B,CACAC,OAAAA,CAAQ/S,EAAKxU,GACXvwC,KAAKy3D,MAAM1S,GAAOxU,CACpB,CACAwnB,UAAAA,GACE/3D,KAAK63D,iBAAmB,CAAC,CAC3B,CACAG,OAAAA,CAAQt7C,GACN,IAAItV,EAAU7I,UAAUC,OAAS,QAAsBwxC,IAAjBzxC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnF,GAAIyB,KAAKyxD,mBACP,IACE,MAAMwG,EAAcxL,GAAwB,QAAT/vC,EAAiB,KAAOA,GACrDpc,EAAO8G,EAAQmqD,QAAU,UAAY,WACrC2G,EAAW1vB,KAAKC,UAAU,CAC9BwvB,cACA33D,SAEF,GAAI43D,KAAYl4D,KAAK63D,iBACnB,OAAO73D,KAAK63D,iBAAiBK,GAE/B,MAAMC,EAAO,IAAIZ,KAAKC,YAAYS,EAAa,CAC7C33D,SAGF,OADAN,KAAK63D,iBAAiBK,GAAYC,EAC3BA,CACT,CAAE,MAAOxsB,GACP,MACF,CAEF,OAAO3rC,KAAKy3D,MAAM/6C,IAAS1c,KAAKy3D,MAAMz3D,KAAKiyD,cAAcuD,wBAAwB94C,GACnF,CACA07C,WAAAA,CAAY17C,GACV,IAAItV,EAAU7I,UAAUC,OAAS,QAAsBwxC,IAAjBzxC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnF,MAAM45D,EAAOn4D,KAAKg4D,QAAQt7C,EAAMtV,GAChC,OAAIpH,KAAKyxD,mBACA0G,GAAQA,EAAKE,kBAAkBC,iBAAiB95D,OAAS,EAE3D25D,GAAQA,EAAKR,QAAQn5D,OAAS,CACvC,CACA+5D,mBAAAA,CAAoB77C,EAAMH,GACxB,IAAInV,EAAU7I,UAAUC,OAAS,QAAsBwxC,IAAjBzxC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnF,OAAOyB,KAAK6yD,YAAYn2C,EAAMtV,GAASqlC,KAAIqmB,GAAU,GAAGv2C,IAAMu2C,KAChE,CACAD,WAAAA,CAAYn2C,GACV,IAAItV,EAAU7I,UAAUC,OAAS,QAAsBwxC,IAAjBzxC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnF,MAAM45D,EAAOn4D,KAAKg4D,QAAQt7C,EAAMtV,GAChC,OAAK+wD,EAGDn4D,KAAKyxD,mBACA0G,EAAKE,kBAAkBC,iBAAiBvhB,MAAK,CAACyhB,EAAiBC,IAAoB3B,GAAc0B,GAAmB1B,GAAc2B,KAAkBhsB,KAAIisB,GAAkB,GAAG14D,KAAKoH,QAAQuxD,UAAUvxD,EAAQmqD,QAAU,UAAUvxD,KAAKoH,QAAQuxD,UAAY,KAAKD,MAEhQP,EAAKR,QAAQlrB,KAAIhtB,GAAUzf,KAAKqxD,UAAU30C,EAAM+C,EAAQrY,KALtD,EAMX,CACAiqD,SAAAA,CAAU30C,EAAMgwB,GACd,IAAItlC,EAAU7I,UAAUC,OAAS,QAAsBwxC,IAAjBzxC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnF,MAAM45D,EAAOn4D,KAAKg4D,QAAQt7C,EAAMtV,GAChC,OAAI+wD,EACEn4D,KAAKyxD,mBACA,GAAGzxD,KAAKoH,QAAQuxD,UAAUvxD,EAAQmqD,QAAU,UAAUvxD,KAAKoH,QAAQuxD,UAAY,KAAKR,EAAKS,OAAOlsB,KAElG1sC,KAAK64D,yBAAyBV,EAAMzrB,IAE7C1sC,KAAKopD,OAAOxV,KAAK,6BAA6Bl3B,KACvC,GACT,CACAm8C,wBAAAA,CAAyBV,EAAMzrB,GAC7B,MAAMqH,EAAMokB,EAAKW,MAAQX,EAAKP,QAAQlrB,GAASyrB,EAAKP,QAAQzlD,KAAK4mD,IAAIrsB,IACrE,IAAIomB,EAASqF,EAAKR,QAAQ5jB,GACtB/zC,KAAKoH,QAAQ4xD,sBAAgD,IAAxBb,EAAKR,QAAQn5D,QAAoC,IAApB25D,EAAKR,QAAQ,KAClE,IAAX7E,EACFA,EAAS,SACW,IAAXA,IACTA,EAAS,KAGb,MAAMmG,EAAeA,IAAMj5D,KAAKoH,QAAQuxD,SAAW7F,EAAOxqD,WAAatI,KAAKoH,QAAQuxD,QAAU7F,EAAOxqD,WAAawqD,EAAOxqD,WACzH,MAAuC,OAAnCtI,KAAKoH,QAAQkwD,kBACA,IAAXxE,EAAqB,GACH,kBAAXA,EAA4B,WAAWA,EAAOxqD,aAClD2wD,IACqC,OAAnCj5D,KAAKoH,QAAQkwD,mBAEbt3D,KAAKoH,QAAQ4xD,sBAAgD,IAAxBb,EAAKR,QAAQn5D,QAAoC,IAApB25D,EAAKR,QAAQ,GADjFsB,IAIFj5D,KAAKoH,QAAQuxD,SAAW5kB,EAAIzrC,WAAatI,KAAKoH,QAAQuxD,QAAU5kB,EAAIzrC,WAAayrC,EAAIzrC,UAC9F,CACAmpD,gBAAAA,GACE,OAAQmF,GAAgBxyD,SAASpE,KAAKoH,QAAQkwD,kBAChD,EAGF,MAAM4B,GAAuB,SAAUj+C,EAAMk+C,EAAa58C,GACxD,IAAI+vC,EAAe/tD,UAAUC,OAAS,QAAsBwxC,IAAjBzxC,UAAU,GAAmBA,UAAU,GAAK,IACnFouD,IAAsBpuD,UAAUC,OAAS,QAAsBwxC,IAAjBzxC,UAAU,KAAmBA,UAAU,GACrFk2C,EAtgCsB2kB,EAACn+C,EAAMk+C,EAAa58C,KAC9C,MAAMxW,EAAQwlD,GAAQtwC,EAAMsB,GAC5B,YAAcyzB,IAAVjqC,EACKA,EAEFwlD,GAAQ4N,EAAa58C,EAAI,EAigCrB68C,CAAoBn+C,EAAMk+C,EAAa58C,GAKlD,OAJKk4B,GAAQkY,GAAsC,kBAARpwC,IACzCk4B,EAAO4X,GAASpxC,EAAMsB,EAAK+vC,QACdtc,IAATyE,IAAoBA,EAAO4X,GAAS8M,EAAa58C,EAAK+vC,KAErD7X,CACT,EACM4kB,GAAYC,GAAOA,EAAI33D,QAAQ,MAAO,QAC5C,MAAM43D,GACJl0D,WAAAA,GACE,IAAI+B,EAAU7I,UAAUC,OAAS,QAAsBwxC,IAAjBzxC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnFyB,KAAKopD,OAASY,GAAWzzB,OAAO,gBAChCv2B,KAAKoH,QAAUA,EACfpH,KAAKw5D,OAASpyD,EAAQsnD,eAAiBtnD,EAAQsnD,cAAc8K,QAAU,CAACzzD,GAASA,GACjF/F,KAAK8lD,KAAK1+C,EACZ,CACA0+C,IAAAA,GACE,IAAI1+C,EAAU7I,UAAUC,OAAS,QAAsBwxC,IAAjBzxC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC9E6I,EAAQsnD,gBAAetnD,EAAQsnD,cAAgB,CAClD+K,aAAa,IAEf,MACErtB,OAAQstB,EAAQ,YAChBD,EAAW,oBACXE,EAAmB,OACnBxQ,EAAM,cACNyQ,EAAa,OACb9G,EAAM,cACN+G,EAAa,gBACbC,EAAe,eACfC,EAAc,eACdC,EAAc,cACdC,EAAa,qBACbC,EAAoB,cACpBC,EAAa,qBACbC,EAAoB,wBACpBC,EAAuB,YACvBC,EAAW,aACXC,GACEnzD,EAAQsnD,cACZ1uD,KAAKosC,YAAsB4D,IAAb0pB,EAAyBA,EAAWttB,GAClDpsC,KAAKy5D,iBAA8BzpB,IAAhBypB,GAA4BA,EAC/Cz5D,KAAK25D,yBAA8C3pB,IAAxB2pB,GAAoCA,EAC/D35D,KAAKmpD,OAASA,EAASuC,GAAYvC,GAAUyQ,GAAiB,KAC9D55D,KAAK8yD,OAASA,EAASpH,GAAYoH,GAAU+G,GAAiB,KAC9D75D,KAAK85D,gBAAkBA,GAAmB,IAC1C95D,KAAKg6D,eAAiBD,EAAiB,GAAKC,GAAkB,IAC9Dh6D,KAAK+5D,eAAiB/5D,KAAKg6D,eAAiB,GAAKD,GAAkB,GACnE/5D,KAAKi6D,cAAgBA,EAAgBvO,GAAYuO,GAAiBC,GAAwBxO,GAAY,OACtG1rD,KAAKm6D,cAAgBA,EAAgBzO,GAAYyO,GAAiBC,GAAwB1O,GAAY,KACtG1rD,KAAKq6D,wBAA0BA,GAA2B,IAC1Dr6D,KAAKs6D,YAAcA,GAAe,IAClCt6D,KAAKu6D,kBAAgCvqB,IAAjBuqB,GAA6BA,EACjDv6D,KAAKw6D,aACP,CACAhH,KAAAA,GACMxzD,KAAKoH,SAASpH,KAAK8lD,KAAK9lD,KAAKoH,QACnC,CACAozD,WAAAA,GACE,MAAMC,EAAmBA,CAACC,EAAgBxgB,IACpCwgB,GAAkBA,EAAevtD,SAAW+sC,GAC9CwgB,EAAeC,UAAY,EACpBD,GAEF,IAAIlgB,OAAON,EAAS,KAE7Bl6C,KAAK46D,OAASH,EAAiBz6D,KAAK46D,OAAQ,GAAG56D,KAAKmpD,cAAcnpD,KAAK8yD,UACvE9yD,KAAK66D,eAAiBJ,EAAiBz6D,KAAK66D,eAAgB,GAAG76D,KAAKmpD,SAASnpD,KAAKg6D,sBAAsBh6D,KAAK+5D,iBAAiB/5D,KAAK8yD,UACnI9yD,KAAKsvD,cAAgBmL,EAAiBz6D,KAAKsvD,cAAe,GAAGtvD,KAAKi6D,qBAAqBj6D,KAAKm6D,gBAC9F,CACA7G,WAAAA,CAAY3H,EAAK1wC,EAAM8pC,EAAK39C,GAC1B,IAAI5D,EACAuC,EACA+0D,EACJ,MAAM3B,EAAcn5D,KAAKoH,SAAWpH,KAAKoH,QAAQsnD,eAAiB1uD,KAAKoH,QAAQsnD,cAAcwE,kBAAoB,CAAC,EAC5G6H,EAAex+C,IACnB,GAAIA,EAAIvQ,QAAQhM,KAAK85D,iBAAmB,EAAG,CACzC,MAAMrlB,EAAOykB,GAAqBj+C,EAAMk+C,EAAa58C,EAAKvc,KAAKoH,QAAQklD,aAActsD,KAAKoH,QAAQulD,qBAClG,OAAO3sD,KAAKu6D,aAAev6D,KAAKw5D,OAAO/kB,OAAMzE,EAAW+U,EAAK,IACxD39C,KACA6T,EACH+/C,iBAAkBz+C,IACfk4B,CACP,CACA,MAAMt2C,EAAIoe,EAAI7b,MAAMV,KAAK85D,iBACnB51D,EAAI/F,EAAEwX,QAAQpS,OACdzD,EAAI3B,EAAEswB,KAAKzuB,KAAK85D,iBAAiBv2D,OACvC,OAAOvD,KAAKw5D,OAAON,GAAqBj+C,EAAMk+C,EAAaj1D,EAAGlE,KAAKoH,QAAQklD,aAActsD,KAAKoH,QAAQulD,qBAAsB7sD,EAAGilD,EAAK,IAC/H39C,KACA6T,EACH+/C,iBAAkB92D,GAClB,EAEJlE,KAAKw6D,cACL,MAAMS,EAA8B7zD,GAAWA,EAAQ6zD,6BAA+Bj7D,KAAKoH,QAAQ6zD,4BAC7F7H,EAAkBhsD,GAAWA,EAAQsnD,oBAA2D1e,IAA1C5oC,EAAQsnD,cAAc0E,gBAAgChsD,EAAQsnD,cAAc0E,gBAAkBpzD,KAAKoH,QAAQsnD,cAAc0E,gBA2CrL,MA1Cc,CAAC,CACb8H,MAAOl7D,KAAK66D,eACZM,UAAW7B,GAAOD,GAAUC,IAC3B,CACD4B,MAAOl7D,KAAK46D,OACZO,UAAW7B,GAAOt5D,KAAKy5D,YAAcJ,GAAUr5D,KAAKosC,OAAOktB,IAAQD,GAAUC,KAEzE34D,SAAQy6D,IAEZ,IADAN,EAAW,EACJt3D,EAAQ43D,EAAKF,MAAMG,KAAK1P,IAAM,CACnC,MAAM2P,EAAa93D,EAAM,GAAGD,OAE5B,GADAwC,EAAQg1D,EAAaO,QACPtrB,IAAVjqC,EACF,GAA2C,oBAAhCk1D,EAA4C,CACrD,MAAMM,EAAON,EAA4BtP,EAAKnoD,EAAO4D,GACrDrB,EAAwB,kBAATw1D,EAAoBA,EAAO,EAC5C,MAAO,GAAIn0D,GAAW/H,OAAOC,UAAUC,eAAe8B,KAAK+F,EAASk0D,GAClEv1D,EAAQ,OACH,IAAIqtD,EAAiB,CAC1BrtD,EAAQvC,EAAM,GACd,QACF,CACExD,KAAKopD,OAAOxV,KAAK,8BAA8B0nB,uBAAgC3P,KAC/E5lD,EAAQ,EACV,KAC0B,kBAAVA,GAAuB/F,KAAK25D,sBAC5C5zD,EAAQ8kD,GAAW9kD,IAErB,MAAMo1D,EAAYC,EAAKD,UAAUp1D,GASjC,GARA4lD,EAAMA,EAAIhqD,QAAQ6B,EAAM,GAAI23D,GACxB/H,GACFgI,EAAKF,MAAMP,WAAa50D,EAAMvH,OAC9B48D,EAAKF,MAAMP,WAAan3D,EAAM,GAAGhF,QAEjC48D,EAAKF,MAAMP,UAAY,EAEzBG,IACIA,GAAY96D,KAAKs6D,YACnB,KAEJ,KAEK3O,CACT,CACA4H,IAAAA,CAAK5H,EAAKr6C,GACR,IACI9N,EACAuC,EACAy1D,EAHAp0D,EAAU7I,UAAUC,OAAS,QAAsBwxC,IAAjBzxC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAInF,MAAMk9D,EAAmBA,CAACl/C,EAAKm/C,KAC7B,MAAMC,EAAM37D,KAAKq6D,wBACjB,GAAI99C,EAAIvQ,QAAQ2vD,GAAO,EAAG,OAAOp/C,EACjC,MAAMje,EAAIie,EAAI7b,MAAM,IAAI85C,OAAO,GAAGmhB,WAClC,IAAIC,EAAgB,IAAIt9D,EAAE,KAC1Bie,EAAMje,EAAE,GACRs9D,EAAgB57D,KAAKszD,YAAYsI,EAAeJ,GAChD,MAAMK,EAAsBD,EAAcp4D,MAAM,MAC1Cs4D,EAAsBF,EAAcp4D,MAAM,OAC5Cq4D,GAAuBA,EAAoBr9D,OAAS,IAAM,IAAMs9D,GAAuBA,EAAoBt9D,OAAS,IAAM,KAC5Ho9D,EAAgBA,EAAcj6D,QAAQ,KAAM,MAE9C,IACE65D,EAAgBhzB,KAAKmW,MAAMid,GACvBF,IAAkBF,EAAgB,IACjCE,KACAF,GAEP,CAAE,MAAO37D,GAEP,OADAG,KAAKopD,OAAOxV,KAAK,oDAAoDr3B,IAAO1c,GACrE,GAAG0c,IAAMo/C,IAAMC,GACxB,CAEA,OADIJ,EAAcn1D,cAAgBm1D,EAAcn1D,aAAa2F,QAAQhM,KAAKmpD,SAAW,UAAUqS,EAAcn1D,aACtGkW,CAAG,EAEZ,KAAO/Y,EAAQxD,KAAKsvD,cAAc+L,KAAK1P,IAAM,CAC3C,IAAIoQ,EAAa,GACjBP,EAAgB,IACXp0D,GAELo0D,EAAgBA,EAAc75D,SAA4C,kBAA1B65D,EAAc75D,QAAuB65D,EAAc75D,QAAU65D,EAC7GA,EAAc7H,oBAAqB,SAC5B6H,EAAcn1D,aACrB,IAAI21D,GAAW,EACf,IAAgD,IAA5Cx4D,EAAM,GAAGwI,QAAQhM,KAAK85D,mBAA4B,OAAOx4D,KAAKkC,EAAM,IAAK,CAC3E,MAAM6rB,EAAI7rB,EAAM,GAAG9C,MAAMV,KAAK85D,iBAAiBrtB,KAAIwvB,GAAQA,EAAK14D,SAChEC,EAAM,GAAK6rB,EAAE1Z,QACbomD,EAAa1sC,EACb2sC,GAAW,CACb,CAEA,GADAj2D,EAAQuL,EAAGmqD,EAAiBp6D,KAAKrB,KAAMwD,EAAM,GAAGD,OAAQi4D,GAAgBA,GACpEz1D,GAASvC,EAAM,KAAOmoD,GAAwB,kBAAV5lD,EAAoB,OAAOA,EAC9C,kBAAVA,IAAoBA,EAAQ8kD,GAAW9kD,IAC7CA,IACH/F,KAAKopD,OAAOxV,KAAK,qBAAqBpwC,EAAM,kBAAkBmoD,KAC9D5lD,EAAQ,IAENi2D,IACFj2D,EAAQg2D,EAAWhrB,QAAO,CAACpxC,EAAGG,IAAME,KAAKw5D,OAAO75D,EAAGG,EAAGsH,EAAQ29C,IAAK,IAC9D39C,EACH4zD,iBAAkBx3D,EAAM,GAAGD,UACzBwC,EAAMxC,SAEZooD,EAAMA,EAAIhqD,QAAQ6B,EAAM,GAAIuC,GAC5B/F,KAAK46D,OAAOD,UAAY,CAC1B,CACA,OAAOhP,CACT,EAGF,MA+BMuQ,GAAwB9pB,IAC5B,MAAMpL,EAAQ,CAAC,EACf,MAAO,CAACsyB,EAAKvU,EAAK39C,KAChB,IAAI+0D,EAAc/0D,EACdA,GAAWA,EAAQ4zD,kBAAoB5zD,EAAQg1D,cAAgBh1D,EAAQg1D,aAAah1D,EAAQ4zD,mBAAqB5zD,EAAQA,EAAQ4zD,oBACnImB,EAAc,IACTA,EACH,CAAC/0D,EAAQ4zD,uBAAmBhrB,IAGhC,MAAMzzB,EAAMwoC,EAAMvc,KAAKC,UAAU0zB,GACjC,IAAIE,EAAYr1B,EAAMzqB,GAKtB,OAJK8/C,IACHA,EAAYjqB,EAAGqa,GAAe1H,GAAM39C,GACpC4/B,EAAMzqB,GAAO8/C,GAERA,EAAU/C,EAAI,CACtB,EAEH,MAAMgD,GACJj3D,WAAAA,GACE,IAAI+B,EAAU7I,UAAUC,OAAS,QAAsBwxC,IAAjBzxC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnFyB,KAAKopD,OAASY,GAAWzzB,OAAO,aAChCv2B,KAAKoH,QAAUA,EACfpH,KAAKu8D,QAAU,CACb98C,OAAQy8C,IAAsB,CAACnX,EAAKyX,KAClC,MAAMH,EAAY,IAAI9E,KAAKkF,aAAa1X,EAAK,IACxCyX,IAEL,OAAOlD,GAAO+C,EAAU7C,OAAOF,EAAI,IAErCoD,SAAUR,IAAsB,CAACnX,EAAKyX,KACpC,MAAMH,EAAY,IAAI9E,KAAKkF,aAAa1X,EAAK,IACxCyX,EACHzwD,MAAO,aAET,OAAOutD,GAAO+C,EAAU7C,OAAOF,EAAI,IAErCh6C,SAAU48C,IAAsB,CAACnX,EAAKyX,KACpC,MAAMH,EAAY,IAAI9E,KAAKoF,eAAe5X,EAAK,IAC1CyX,IAEL,OAAOlD,GAAO+C,EAAU7C,OAAOF,EAAI,IAErCsD,aAAcV,IAAsB,CAACnX,EAAKyX,KACxC,MAAMH,EAAY,IAAI9E,KAAKsF,mBAAmB9X,EAAK,IAC9CyX,IAEL,OAAOlD,GAAO+C,EAAU7C,OAAOF,EAAKkD,EAAI78C,OAAS,MAAM,IAEzDm9C,KAAMZ,IAAsB,CAACnX,EAAKyX,KAChC,MAAMH,EAAY,IAAI9E,KAAKwF,WAAWhY,EAAK,IACtCyX,IAEL,OAAOlD,GAAO+C,EAAU7C,OAAOF,EAAI,KAGvCt5D,KAAK8lD,KAAK1+C,EACZ,CACA0+C,IAAAA,CAAKgC,GAIH,MAAMkV,GAHQz+D,UAAUC,OAAS,QAAsBwxC,IAAjBzxC,UAAU,GAAmBA,UAAU,GAAK,CAChFmwD,cAAe,CAAC,IAEIA,cACtB1uD,KAAK85D,gBAAkBkD,EAAMlD,gBAAkBkD,EAAMlD,gBAAkBkD,EAAMlD,iBAAmB,GAClG,CACA/6D,GAAAA,CAAIsF,EAAMiN,GACRtR,KAAKu8D,QAAQl4D,EAAKzD,cAAc2C,QAAU+N,CAC5C,CACA2rD,SAAAA,CAAU54D,EAAMiN,GACdtR,KAAKu8D,QAAQl4D,EAAKzD,cAAc2C,QAAU24D,GAAsB5qD,EAClE,CACAkoD,MAAAA,CAAOzzD,EAAOyzD,EAAQzU,GACpB,IAAI39C,EAAU7I,UAAUC,OAAS,QAAsBwxC,IAAjBzxC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnF,MAAMg+D,EAAU/C,EAAO94D,MAAMV,KAAK85D,iBAClC,GAAIyC,EAAQ/9D,OAAS,GAAK+9D,EAAQ,GAAGvwD,QAAQ,KAAO,GAAKuwD,EAAQ,GAAGvwD,QAAQ,KAAO,GAAKuwD,EAAQ1O,MAAK/tD,GAAKA,EAAEkM,QAAQ,MAAQ,IAAI,CAC9H,MAAM2uD,EAAY4B,EAAQ9a,WAAU3hD,GAAKA,EAAEkM,QAAQ,MAAQ,IAC3DuwD,EAAQ,GAAK,CAACA,EAAQ,MAAOA,EAAQj0B,OAAO,EAAGqyB,IAAYlsC,KAAKzuB,KAAK85D,gBACvE,CAyBA,OAxBeyC,EAAQxrB,QAAO,CAACmsB,EAAKp9D,KAClC,MAAM,WACJq9D,EAAU,cACVC,GAjHeC,KACrB,IAAIF,EAAaE,EAAUz8D,cAAc2C,OACzC,MAAM65D,EAAgB,CAAC,EACvB,GAAIC,EAAUrxD,QAAQ,MAAQ,EAAG,CAC/B,MAAM7N,EAAIk/D,EAAU38D,MAAM,KAC1By8D,EAAah/D,EAAE,GAAGyC,cAAc2C,OAChC,MAAM+5D,EAASn/D,EAAE,GAAGiO,UAAU,EAAGjO,EAAE,GAAGK,OAAS,GAC5B,aAAf2+D,GAA6BG,EAAOtxD,QAAQ,KAAO,EAChDoxD,EAAcV,WAAUU,EAAcV,SAAWY,EAAO/5D,QACrC,iBAAf45D,GAAiCG,EAAOtxD,QAAQ,KAAO,EAC3DoxD,EAAcz9C,QAAOy9C,EAAcz9C,MAAQ29C,EAAO/5D,QAE1C+5D,EAAO58D,MAAM,KACrBC,SAAQ67D,IACX,GAAIA,EAAK,CACP,MAAOjgD,KAAQk8B,GAAQ+jB,EAAI97D,MAAM,KAC3B44D,EAAM7gB,EAAKhqB,KAAK,KAAKlrB,OAAO5B,QAAQ,WAAY,IAChD47D,EAAahhD,EAAIhZ,OAClB65D,EAAcG,KAAaH,EAAcG,GAAcjE,GAChD,UAARA,IAAiB8D,EAAcG,IAAc,GACrC,SAARjE,IAAgB8D,EAAcG,IAAc,GAC3Cp8D,MAAMm4D,KAAM8D,EAAcG,GAAcC,SAASlE,EAAK,IAC7D,IAGN,CACA,MAAO,CACL6D,aACAC,gBACD,EAqFOK,CAAe39D,GACnB,GAAIE,KAAKu8D,QAAQY,GAAa,CAC5B,IAAIO,EAAYR,EAChB,IACE,MAAMS,EAAav2D,GAAWA,EAAQg1D,cAAgBh1D,EAAQg1D,aAAah1D,EAAQ4zD,mBAAqB,CAAC,EACnGh3D,EAAI25D,EAAW9gD,QAAU8gD,EAAW5Y,KAAO39C,EAAQyV,QAAUzV,EAAQ29C,KAAOA,EAClF2Y,EAAY19D,KAAKu8D,QAAQY,GAAYD,EAAKl5D,EAAG,IACxCo5D,KACAh2D,KACAu2D,GAEP,CAAE,MAAO3iC,GACPh7B,KAAKopD,OAAOxV,KAAK5Y,EACnB,CACA,OAAO0iC,CACT,CAGA,OAFE19D,KAAKopD,OAAOxV,KAAK,oCAAoCupB,KAEhDD,CAAG,GACTn3D,EAEL,EASF,MAAM63D,WAAkB3T,GACtB5kD,WAAAA,CAAY2iD,EAASa,EAAOf,GAC1B,IAAI1gD,EAAU7I,UAAUC,OAAS,QAAsBwxC,IAAjBzxC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnFmiD,QACA1gD,KAAKgoD,QAAUA,EACfhoD,KAAK6oD,MAAQA,EACb7oD,KAAK8nD,SAAWA,EAChB9nD,KAAKiyD,cAAgBnK,EAASmK,cAC9BjyD,KAAKoH,QAAUA,EACfpH,KAAKopD,OAASY,GAAWzzB,OAAO,oBAChCv2B,KAAK69D,aAAe,GACpB79D,KAAK89D,iBAAmB12D,EAAQ02D,kBAAoB,GACpD99D,KAAK+9D,aAAe,EACpB/9D,KAAKg+D,WAAa52D,EAAQ42D,YAAc,EAAI52D,EAAQ42D,WAAa,EACjEh+D,KAAKi+D,aAAe72D,EAAQ62D,cAAgB,EAAI72D,EAAQ62D,aAAe,IACvEj+D,KAAK+5B,MAAQ,CAAC,EACd/5B,KAAK40B,MAAQ,GACT50B,KAAKgoD,SAAWhoD,KAAKgoD,QAAQlC,MAC/B9lD,KAAKgoD,QAAQlC,KAAKgC,EAAU1gD,EAAQ4gD,QAAS5gD,EAEjD,CACA82D,SAAAA,CAAUxW,EAAWpB,EAAYl/C,EAAS2qB,GACxC,MAAMosC,EAAS,CAAC,EACV3sC,EAAU,CAAC,EACX4sC,EAAkB,CAAC,EACnBC,EAAmB,CAAC,EA4B1B,OA3BA3W,EAAU/mD,SAAQokD,IAChB,IAAIuZ,GAAmB,EACvBhY,EAAW3lD,SAAQ6vC,IACjB,MAAMnsC,EAAO,GAAG0gD,KAAOvU,KAClBppC,EAAQm3D,QAAUv+D,KAAK6oD,MAAM2E,kBAAkBzI,EAAKvU,GACvDxwC,KAAK+5B,MAAM11B,GAAQ,EACVrE,KAAK+5B,MAAM11B,GAAQ,IAAmC,IAArBrE,KAAK+5B,MAAM11B,QAC/B2rC,IAAlBxe,EAAQntB,KAAqBmtB,EAAQntB,IAAQ,IAEjDrE,KAAK+5B,MAAM11B,GAAQ,EACnBi6D,GAAmB,OACGtuB,IAAlBxe,EAAQntB,KAAqBmtB,EAAQntB,IAAQ,QAC5B2rC,IAAjBmuB,EAAO95D,KAAqB85D,EAAO95D,IAAQ,QAClB2rC,IAAzBquB,EAAiB7tB,KAAmB6tB,EAAiB7tB,IAAM,IACjE,IAEG8tB,IAAkBF,EAAgBrZ,IAAO,EAAI,KAEhD1lD,OAAO6M,KAAKiyD,GAAQ3/D,QAAUa,OAAO6M,KAAKslB,GAAShzB,SACrDwB,KAAK40B,MAAMrmB,KAAK,CACdijB,UACAgtC,aAAcn/D,OAAO6M,KAAKslB,GAAShzB,OACnCigE,OAAQ,CAAC,EACTxe,OAAQ,GACRluB,aAGG,CACLosC,OAAQ9+D,OAAO6M,KAAKiyD,GACpB3sC,QAASnyB,OAAO6M,KAAKslB,GACrB4sC,gBAAiB/+D,OAAO6M,KAAKkyD,GAC7BC,iBAAkBh/D,OAAO6M,KAAKmyD,GAElC,CACAI,MAAAA,CAAOp6D,EAAMsnC,EAAK1wB,GAChB,MAAMy2B,EAAIrtC,EAAK3D,MAAM,KACfqkD,EAAMrT,EAAE,GACRlB,EAAKkB,EAAE,GACT/F,GAAK3rC,KAAKqqD,KAAK,gBAAiBtF,EAAKvU,EAAI7E,IACxCA,GAAO1wB,GACVjb,KAAK6oD,MAAMsE,kBAAkBpI,EAAKvU,EAAIv1B,OAAM+0B,OAAWA,EAAW,CAChEqd,UAAU,IAGdrtD,KAAK+5B,MAAM11B,GAAQsnC,GAAO,EAAI,EAC1BA,GAAO1wB,IAAMjb,KAAK+5B,MAAM11B,GAAQ,GACpC,MAAMo6D,EAAS,CAAC,EAChBz+D,KAAK40B,MAAMj0B,SAAQyuB,IA57CNsvC,EAAC5T,EAAQrW,EAAM6W,KAC9B,MAAM,IACJ/a,EAAG,EACHrsC,GACEgnD,GAAcJ,EAAQrW,EAAMp1C,QAChCkxC,EAAIrsC,GAAKqsC,EAAIrsC,IAAM,GACnBqsC,EAAIrsC,GAAGqK,KAAK+8C,EAAS,EAu7CjBoT,CAAStvC,EAAEqvC,OAAQ,CAAC1Z,GAAMvU,GAhFVmuB,EAACvvC,EAAG/qB,UACA2rC,IAApB5gB,EAAEoC,QAAQntB,YACL+qB,EAAEoC,QAAQntB,GACjB+qB,EAAEovC,eACJ,EA6EIG,CAAcvvC,EAAG/qB,GACbsnC,GAAKvc,EAAE6wB,OAAO1xC,KAAKo9B,GACA,IAAnBvc,EAAEovC,cAAuBpvC,EAAEI,OAC7BnwB,OAAO6M,KAAKkjB,EAAEqvC,QAAQ99D,SAAQqD,IACvBy6D,EAAOz6D,KAAIy6D,EAAOz6D,GAAK,CAAC,GAC7B,MAAM46D,EAAaxvC,EAAEqvC,OAAOz6D,GACxB46D,EAAWpgE,QACbogE,EAAWj+D,SAAQumB,SACI8oB,IAAjByuB,EAAOz6D,GAAGkjB,KAAkBu3C,EAAOz6D,GAAGkjB,IAAK,EAAI,GAEvD,IAEFkI,EAAEI,MAAO,EACLJ,EAAE6wB,OAAOzhD,OACX4wB,EAAE2C,SAAS3C,EAAE6wB,QAEb7wB,EAAE2C,WAEN,IAEF/xB,KAAKqqD,KAAK,SAAUoU,GACpBz+D,KAAK40B,MAAQ50B,KAAK40B,MAAM4kB,QAAOpqB,IAAMA,EAAEI,MACzC,CACAqvC,IAAAA,CAAK9Z,EAAKvU,EAAIsuB,GACZ,IAAIC,EAAQxgE,UAAUC,OAAS,QAAsBwxC,IAAjBzxC,UAAU,GAAmBA,UAAU,GAAK,EAC5EgpD,EAAOhpD,UAAUC,OAAS,QAAsBwxC,IAAjBzxC,UAAU,GAAmBA,UAAU,GAAKyB,KAAKi+D,aAChFlsC,EAAWxzB,UAAUC,OAAS,EAAID,UAAU,QAAKyxC,EACrD,IAAK+U,EAAIvmD,OAAQ,OAAOuzB,EAAS,KAAM,CAAC,GACxC,GAAI/xB,KAAK+9D,cAAgB/9D,KAAK89D,iBAS5B,YARA99D,KAAK69D,aAAatvD,KAAK,CACrBw2C,MACAvU,KACAsuB,SACAC,QACAxX,OACAx1B,aAIJ/xB,KAAK+9D,eACL,MAAMiB,EAAWA,CAACrzB,EAAK1wB,KAErB,GADAjb,KAAK+9D,eACD/9D,KAAK69D,aAAar/D,OAAS,EAAG,CAChC,MAAM+wB,EAAOvvB,KAAK69D,aAAaloD,QAC/B3V,KAAK6+D,KAAKtvC,EAAKw1B,IAAKx1B,EAAKihB,GAAIjhB,EAAKuvC,OAAQvvC,EAAKwvC,MAAOxvC,EAAKg4B,KAAMh4B,EAAKwC,SACxE,CACI4Z,GAAO1wB,GAAQ8jD,EAAQ/+D,KAAKg+D,WAC9Bh1C,YAAW,KACThpB,KAAK6+D,KAAKx9D,KAAKrB,KAAM+kD,EAAKvU,EAAIsuB,EAAQC,EAAQ,EAAU,EAAPxX,EAAUx1B,EAAS,GACnEw1B,GAGLx1B,EAAS4Z,EAAK1wB,EAAK,EAEf3J,EAAKtR,KAAKgoD,QAAQ8W,GAAQ/3C,KAAK/mB,KAAKgoD,SAC1C,GAAkB,IAAd12C,EAAG9S,OAaP,OAAO8S,EAAGyzC,EAAKvU,EAAIwuB,GAZjB,IACE,MAAM3vC,EAAI/d,EAAGyzC,EAAKvU,GACdnhB,GAAuB,oBAAXA,EAAE7F,KAChB6F,EAAE7F,MAAKvO,GAAQ+jD,EAAS,KAAM/jD,KAAOwO,MAAMu1C,GAE3CA,EAAS,KAAM3vC,EAEnB,CAAE,MAAOsc,GACPqzB,EAASrzB,EACX,CAIJ,CACAszB,cAAAA,CAAevX,EAAWpB,GACxB,IAAIl/C,EAAU7I,UAAUC,OAAS,QAAsBwxC,IAAjBzxC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/EwzB,EAAWxzB,UAAUC,OAAS,EAAID,UAAU,QAAKyxC,EACrD,IAAKhwC,KAAKgoD,QAER,OADAhoD,KAAKopD,OAAOxV,KAAK,kEACV7hB,GAAYA,IAEI,kBAAd21B,IAAwBA,EAAY1nD,KAAKiyD,cAAcI,mBAAmB3K,IAC3D,kBAAfpB,IAAyBA,EAAa,CAACA,IAClD,MAAM6X,EAASn+D,KAAKk+D,UAAUxW,EAAWpB,EAAYl/C,EAAS2qB,GAC9D,IAAKosC,EAAOA,OAAO3/D,OAEjB,OADK2/D,EAAO3sC,QAAQhzB,QAAQuzB,IACrB,KAETosC,EAAOA,OAAOx9D,SAAQ0D,IACpBrE,KAAKk/D,QAAQ76D,EAAK,GAEtB,CACAyxD,IAAAA,CAAKpO,EAAWpB,EAAYv0B,GAC1B/xB,KAAKi/D,eAAevX,EAAWpB,EAAY,CAAC,EAAGv0B,EACjD,CACAwsC,MAAAA,CAAO7W,EAAWpB,EAAYv0B,GAC5B/xB,KAAKi/D,eAAevX,EAAWpB,EAAY,CACzCiY,QAAQ,GACPxsC,EACL,CACAmtC,OAAAA,CAAQ76D,GACN,IAAI8kD,EAAS5qD,UAAUC,OAAS,QAAsBwxC,IAAjBzxC,UAAU,GAAmBA,UAAU,GAAK,GACjF,MAAMmzC,EAAIrtC,EAAK3D,MAAM,KACfqkD,EAAMrT,EAAE,GACRlB,EAAKkB,EAAE,GACb1xC,KAAK6+D,KAAK9Z,EAAKvU,EAAI,YAAQR,OAAWA,GAAW,CAACrE,EAAK1wB,KACjD0wB,GAAK3rC,KAAKopD,OAAOxV,KAAK,GAAGuV,sBAA2B3Y,kBAAmBuU,WAAcpZ,IACpFA,GAAO1wB,GAAMjb,KAAKopD,OAAO72C,IAAI,GAAG42C,qBAA0B3Y,kBAAmBuU,IAAO9pC,GACzFjb,KAAKy+D,OAAOp6D,EAAMsnC,EAAK1wB,EAAK,GAEhC,CACAy3C,WAAAA,CAAYhL,EAAWhB,EAAWnqC,EAAK4iD,EAAeC,GACpD,IAAIh4D,EAAU7I,UAAUC,OAAS,QAAsBwxC,IAAjBzxC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/E8gE,EAAM9gE,UAAUC,OAAS,QAAsBwxC,IAAjBzxC,UAAU,GAAmBA,UAAU,GAAK,OAC9E,GAAIyB,KAAK8nD,SAASqM,OAASn0D,KAAK8nD,SAASqM,MAAMxM,qBAAuB3nD,KAAK8nD,SAASqM,MAAMxM,mBAAmBjB,GAC3G1mD,KAAKopD,OAAOxV,KAAK,qBAAqBr3B,wBAA0BmqC,wBAAiC,iOAGnG,QAAY1W,IAARzzB,GAA6B,OAARA,GAAwB,KAARA,EAAzC,CACA,GAAIvc,KAAKgoD,SAAWhoD,KAAKgoD,QAAQzxB,OAAQ,CACvC,MAAM+oC,EAAO,IACRl4D,EACHg4D,YAEI9tD,EAAKtR,KAAKgoD,QAAQzxB,OAAOxP,KAAK/mB,KAAKgoD,SACzC,GAAI12C,EAAG9S,OAAS,EACd,IACE,IAAI6wB,EAEFA,EADgB,IAAd/d,EAAG9S,OACD8S,EAAGo2C,EAAWhB,EAAWnqC,EAAK4iD,EAAeG,GAE7ChuD,EAAGo2C,EAAWhB,EAAWnqC,EAAK4iD,GAEhC9vC,GAAuB,oBAAXA,EAAE7F,KAChB6F,EAAE7F,MAAKvO,GAAQokD,EAAI,KAAMpkD,KAAOwO,MAAM41C,GAEtCA,EAAI,KAAMhwC,EAEd,CAAE,MAAOsc,GACP0zB,EAAI1zB,EACN,MAEAr6B,EAAGo2C,EAAWhB,EAAWnqC,EAAK4iD,EAAeE,EAAKC,EAEtD,CACK5X,GAAcA,EAAU,IAC7B1nD,KAAK6oD,MAAMkE,YAAYrF,EAAU,GAAIhB,EAAWnqC,EAAK4iD,EA5BM,CA6B7D,EAGF,MAAM75D,GAAMA,KAAA,CACV+jD,OAAO,EACPkW,eAAe,EACf/uB,GAAI,CAAC,eACLwW,UAAW,CAAC,eACZmL,YAAa,CAAC,OACd6B,YAAY,EACZqB,eAAe,EACfU,0BAA0B,EAC1BD,KAAM,MACN0J,SAAS,EACTxG,sBAAsB,EACtB1M,aAAc,IACduC,YAAa,IACb6C,gBAAiB,IACjBgD,iBAAkB,IAClB+K,yBAAyB,EACzB/M,aAAa,EACbZ,eAAe,EACfM,cAAe,WACfO,oBAAoB,EACpBF,mBAAmB,EACnBwI,6BAA6B,EAC7BxH,aAAa,EACbG,yBAAyB,EACzBgB,YAAY,EACZC,mBAAmB,EACnBnE,eAAe,EACfJ,YAAY,EACZK,uBAAuB,EACvBqC,wBAAwB,EACxBD,6BAA6B,EAC7BnD,yBAAyB,EACzBF,iCAAkCvL,IAChC,IAAI2E,EAAM,CAAC,EAIX,GAHuB,kBAAZ3E,EAAK,KAAiB2E,EAAM3E,EAAK,IACrB,kBAAZA,EAAK,KAAiB2E,EAAIziD,aAAe89C,EAAK,IAClC,kBAAZA,EAAK,KAAiB2E,EAAI4W,aAAevb,EAAK,IAClC,kBAAZA,EAAK,IAAsC,kBAAZA,EAAK,GAAiB,CAC9D,MAAM/8C,EAAU+8C,EAAK,IAAMA,EAAK,GAChC9kD,OAAO6M,KAAK9E,GAASzG,SAAQ4b,IAC3BusC,EAAIvsC,GAAOnV,EAAQmV,EAAI,GAE3B,CACA,OAAOusC,CAAG,EAEZ4F,cAAe,CACb+K,aAAa,EACbD,OAAQzzD,GAASA,EACjBojD,OAAQ,KACR2J,OAAQ,KACRgH,gBAAiB,IACjBE,eAAgB,IAChBC,cAAe,MACfE,cAAe,IACfE,wBAAyB,IACzBC,YAAa,IACblH,iBAAiB,KAGfuM,GAAmBv4D,IACG,kBAAfA,EAAQopC,KAAiBppC,EAAQopC,GAAK,CAACppC,EAAQopC,KACvB,kBAAxBppC,EAAQ+qD,cAA0B/qD,EAAQ+qD,YAAc,CAAC/qD,EAAQ+qD,cAC1C,kBAAvB/qD,EAAQ4sD,aAAyB5sD,EAAQ4sD,WAAa,CAAC5sD,EAAQ4sD,aACtE5sD,EAAQiuD,eAAiBjuD,EAAQiuD,cAAcrpD,QAAQ,UAAY,IACrE5E,EAAQiuD,cAAgBjuD,EAAQiuD,cAAcnvC,OAAO,CAAC,YAEjD9e,GAGHw4D,GAAOA,OASb,MAAMC,WAAa5V,GACjB5kD,WAAAA,GACE,IAAI+B,EAAU7I,UAAUC,OAAS,QAAsBwxC,IAAjBzxC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/EwzB,EAAWxzB,UAAUC,OAAS,EAAID,UAAU,QAAKyxC,EAX7B8vB,MAoBxB,GARApf,QACA1gD,KAAKoH,QAAUu4D,GAAiBv4D,GAChCpH,KAAK8nD,SAAW,CAAC,EACjB9nD,KAAKopD,OAASY,GACdhqD,KAAK+/D,QAAU,CACbC,SAAU,IAjBYF,EAmBJ9/D,KAlBTX,OAAOqxC,oBAAoBrxC,OAAOixC,eAAewvB,IACzDn/D,SAAQu8D,IACc,oBAAd4C,EAAK5C,KACd4C,EAAK5C,GAAO4C,EAAK5C,GAAKn2C,KAAK+4C,GAC7B,IAeI/tC,IAAa/xB,KAAK0kD,gBAAkBt9C,EAAQ64D,QAAS,CACvD,IAAKjgE,KAAKoH,QAAQm4D,cAEhB,OADAv/D,KAAK8lD,KAAK1+C,EAAS2qB,GACZ/xB,KAETgpB,YAAW,KACThpB,KAAK8lD,KAAK1+C,EAAS2qB,EAAS,GAC3B,EACL,CACF,CACA+zB,IAAAA,GACE,IAAImN,EAAQjzD,KACZ,IAAIoH,EAAU7I,UAAUC,OAAS,QAAsBwxC,IAAjBzxC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/EwzB,EAAWxzB,UAAUC,OAAS,EAAID,UAAU,QAAKyxC,EACrDhwC,KAAKkgE,gBAAiB,EACC,oBAAZ94D,IACT2qB,EAAW3qB,EACXA,EAAU,CAAC,IAERA,EAAQ4/C,YAAmC,IAAtB5/C,EAAQ4/C,WAAuB5/C,EAAQopC,KACrC,kBAAfppC,EAAQopC,GACjBppC,EAAQ4/C,UAAY5/C,EAAQopC,GACnBppC,EAAQopC,GAAGxkC,QAAQ,eAAiB,IAC7C5E,EAAQ4/C,UAAY5/C,EAAQopC,GAAG,KAGnC,MAAM2vB,EAAU76D,KAChBtF,KAAKoH,QAAU,IACV+4D,KACAngE,KAAKoH,WACLu4D,GAAiBv4D,IAEgB,OAAlCpH,KAAKoH,QAAQsmD,mBACf1tD,KAAKoH,QAAQsnD,cAAgB,IACxByR,EAAQzR,iBACR1uD,KAAKoH,QAAQsnD,qBAGS1e,IAAzB5oC,EAAQklD,eACVtsD,KAAKoH,QAAQ4nD,wBAA0B5nD,EAAQklD,mBAErBtc,IAAxB5oC,EAAQynD,cACV7uD,KAAKoH,QAAQ6nD,uBAAyB7nD,EAAQynD,aAEhD,MAAMuR,EAAsBC,GACrBA,EACwB,oBAAlBA,EAAqC,IAAIA,EAC7CA,EAFoB,KAI7B,IAAKrgE,KAAKoH,QAAQ64D,QAAS,CAMzB,IAAI5D,EALAr8D,KAAK+/D,QAAQ3W,OACfY,GAAWlE,KAAKsa,EAAoBpgE,KAAK+/D,QAAQ3W,QAASppD,KAAKoH,SAE/D4iD,GAAWlE,KAAK,KAAM9lD,KAAKoH,SAGzBpH,KAAK+/D,QAAQ1D,UACfA,EAAYr8D,KAAK+/D,QAAQ1D,UACA,qBAAT9E,OAChB8E,EAAYC,IAEd,MAAMgE,EAAK,IAAIlL,GAAap1D,KAAKoH,SACjCpH,KAAK6oD,MAAQ,IAAI6D,GAAc1sD,KAAKoH,QAAQ8lD,UAAWltD,KAAKoH,SAC5D,MAAMsqC,EAAI1xC,KAAK8nD,SACfpW,EAAE0X,OAASY,GACXtY,EAAEojB,cAAgB90D,KAAK6oD,MACvBnX,EAAEugB,cAAgBqO,EAClB5uB,EAAE0f,eAAiB,IAAIiG,GAAeiJ,EAAI,CACxC3H,QAAS34D,KAAKoH,QAAQsqD,gBACtB4F,kBAAmBt3D,KAAKoH,QAAQkwD,kBAChC0B,qBAAsBh5D,KAAKoH,QAAQ4xD,wBAEjCqD,GAAer8D,KAAKoH,QAAQsnD,cAAc8K,QAAUx5D,KAAKoH,QAAQsnD,cAAc8K,SAAW2G,EAAQzR,cAAc8K,SAClH9nB,EAAE2qB,UAAY+D,EAAoB/D,GAClC3qB,EAAE2qB,UAAUvW,KAAKpU,EAAG1xC,KAAKoH,SACzBpH,KAAKoH,QAAQsnD,cAAc8K,OAAS9nB,EAAE2qB,UAAU7C,OAAOzyC,KAAK2qB,EAAE2qB,YAEhE3qB,EAAE2d,aAAe,IAAIkK,GAAav5D,KAAKoH,SACvCsqC,EAAEyiB,MAAQ,CACRxM,mBAAoB3nD,KAAK2nD,mBAAmB5gC,KAAK/mB,OAEnD0xC,EAAEqW,iBAAmB,IAAI6V,GAAUwC,EAAoBpgE,KAAK+/D,QAAQ/X,SAAUtW,EAAEojB,cAAepjB,EAAG1xC,KAAKoH,SACvGsqC,EAAEqW,iBAAiBnD,GAAG,KAAK,SAAUvkC,GACnC,IAAK,IAAIikC,EAAO/lD,UAAUC,OAAQ2lD,EAAO,IAAIl9C,MAAMq9C,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IAClGJ,EAAKI,EAAO,GAAKhmD,UAAUgmD,GAE7B0O,EAAM5I,KAAKhqC,KAAU8jC,EACvB,IACInkD,KAAK+/D,QAAQQ,mBACf7uB,EAAE6uB,iBAAmBH,EAAoBpgE,KAAK+/D,QAAQQ,kBAClD7uB,EAAE6uB,iBAAiBza,MAAMpU,EAAE6uB,iBAAiBza,KAAKpU,EAAG1xC,KAAKoH,QAAQo5D,UAAWxgE,KAAKoH,UAEnFpH,KAAK+/D,QAAQvP,aACf9e,EAAE8e,WAAa4P,EAAoBpgE,KAAK+/D,QAAQvP,YAC5C9e,EAAE8e,WAAW1K,MAAMpU,EAAE8e,WAAW1K,KAAK9lD,OAE3CA,KAAKkuD,WAAa,IAAII,GAAWtuD,KAAK8nD,SAAU9nD,KAAKoH,SACrDpH,KAAKkuD,WAAWtJ,GAAG,KAAK,SAAUvkC,GAChC,IAAK,IAAI6jC,EAAQ3lD,UAAUC,OAAQ2lD,EAAO,IAAIl9C,MAAMi9C,EAAQ,EAAIA,EAAQ,EAAI,GAAIE,EAAQ,EAAGA,EAAQF,EAAOE,IACxGD,EAAKC,EAAQ,GAAK7lD,UAAU6lD,GAE9B6O,EAAM5I,KAAKhqC,KAAU8jC,EACvB,IACAnkD,KAAK+/D,QAAQC,SAASr/D,SAAQyO,IACxBA,EAAE02C,MAAM12C,EAAE02C,KAAK9lD,KAAK,GAE5B,CAGA,GAFAA,KAAKw5D,OAASx5D,KAAKoH,QAAQsnD,cAAc8K,OACpCznC,IAAUA,EAAW6tC,IACtB5/D,KAAKoH,QAAQ+qD,cAAgBnyD,KAAK8nD,SAASyY,mBAAqBvgE,KAAKoH,QAAQ29C,IAAK,CACpF,MAAMmP,EAAQl0D,KAAK8nD,SAASmK,cAAcC,iBAAiBlyD,KAAKoH,QAAQ+qD,aACpE+B,EAAM11D,OAAS,GAAkB,QAAb01D,EAAM,KAAcl0D,KAAKoH,QAAQ29C,IAAMmP,EAAM,GACvE,CACKl0D,KAAK8nD,SAASyY,kBAAqBvgE,KAAKoH,QAAQ29C,KACnD/kD,KAAKopD,OAAOxV,KAAK,2DAEF,CAAC,cAAe,oBAAqB,oBAAqB,qBAClEjzC,SAAQm+D,IACf9+D,KAAK8+D,GAAU,WACb,OAAO7L,EAAMpK,MAAMiW,MAAWvgE,UAChC,CAAC,IAEqB,CAAC,cAAe,eAAgB,oBAAqB,wBAC7DoC,SAAQm+D,IACtB9+D,KAAK8+D,GAAU,WAEb,OADA7L,EAAMpK,MAAMiW,MAAWvgE,WAChB00D,CACT,CAAC,IAEH,MAAMwN,EAAW/V,KACXoL,EAAOA,KACX,MAAM4K,EAASA,CAAC/0B,EAAKxkB,KACnBnnB,KAAKkgE,gBAAiB,EAClBlgE,KAAK0kD,gBAAkB1kD,KAAKynD,sBAAsBznD,KAAKopD,OAAOxV,KAAK,yEACvE5zC,KAAK0kD,eAAgB,EAChB1kD,KAAKoH,QAAQ64D,SAASjgE,KAAKopD,OAAO72C,IAAI,cAAevS,KAAKoH,SAC/DpH,KAAKqqD,KAAK,cAAerqD,KAAKoH,SAC9Bq5D,EAASl3C,QAAQpC,GACjB4K,EAAS4Z,EAAKxkB,EAAE,EAElB,GAAInnB,KAAK0nD,WAA+C,OAAlC1nD,KAAKoH,QAAQsmD,mBAA8B1tD,KAAK0kD,cAAe,OAAOgc,EAAO,KAAM1gE,KAAKmnB,EAAEJ,KAAK/mB,OACrHA,KAAKwuD,eAAexuD,KAAKoH,QAAQ29C,IAAK2b,EAAO,EAO/C,OALI1gE,KAAKoH,QAAQ8lD,YAAcltD,KAAKoH,QAAQm4D,cAC1CzJ,IAEA9sC,WAAW8sC,EAAM,GAEZ2K,CACT,CACAE,aAAAA,CAAcla,GACZ,IACIma,EADWriE,UAAUC,OAAS,QAAsBwxC,IAAjBzxC,UAAU,GAAmBA,UAAU,GAAKqhE,GAEnF,MAAM7P,EAA8B,kBAAbtJ,EAAwBA,EAAWzmD,KAAKymD,SAE/D,GADwB,oBAAbA,IAAyBma,EAAena,IAC9CzmD,KAAKoH,QAAQ8lD,WAAaltD,KAAKoH,QAAQq4D,wBAAyB,CACnE,GAAI1P,GAAqC,WAA1BA,EAAQnvD,iBAAgCZ,KAAKoH,QAAQo4D,SAA2C,IAAhCx/D,KAAKoH,QAAQo4D,QAAQhhE,QAAe,OAAOoiE,IAC1H,MAAMzC,EAAS,GACT0C,EAAS9b,IACb,IAAKA,EAAK,OACV,GAAY,WAARA,EAAkB,OACT/kD,KAAK8nD,SAASmK,cAAcI,mBAAmBtN,GACvDpkD,SAAQqD,IACD,WAANA,GACAm6D,EAAOnyD,QAAQhI,GAAK,GAAGm6D,EAAO5vD,KAAKvK,EAAE,GACzC,EAEJ,GAAK+rD,EAIH8Q,EAAO9Q,OAJK,CACM/vD,KAAK8nD,SAASmK,cAAcC,iBAAiBlyD,KAAKoH,QAAQ+qD,aAClExxD,SAAQqD,GAAK68D,EAAO78D,IAChC,CAGIhE,KAAKoH,QAAQo4D,SACfx/D,KAAKoH,QAAQo4D,QAAQ7+D,SAAQqD,GAAK68D,EAAO78D,KAE3ChE,KAAK8nD,SAASC,iBAAiB+N,KAAKqI,EAAQn+D,KAAKoH,QAAQopC,IAAI3wC,IACtDA,GAAMG,KAAK8gE,mBAAoB9gE,KAAKymD,UAAUzmD,KAAK+gE,oBAAoB/gE,KAAKymD,UACjFma,EAAa/gE,EAAE,GAEnB,MACE+gE,EAAa,KAEjB,CACAI,eAAAA,CAAgBjP,EAAMvhB,EAAIze,GACxB,MAAM0uC,EAAW/V,KAgBjB,MAfoB,oBAATqH,IACThgC,EAAWggC,EACXA,OAAO/hB,GAES,oBAAPQ,IACTze,EAAWye,EACXA,OAAKR,GAEF+hB,IAAMA,EAAO/xD,KAAK0nD,WAClBlX,IAAIA,EAAKxwC,KAAKoH,QAAQopC,IACtBze,IAAUA,EAAW6tC,IAC1B5/D,KAAK8nD,SAASC,iBAAiBwW,OAAOxM,EAAMvhB,GAAI7E,IAC9C80B,EAASl3C,UACTwI,EAAS4Z,EAAI,IAER80B,CACT,CACAQ,GAAAA,CAAIr1B,GACF,IAAKA,EAAQ,MAAM,IAAIvoC,MAAM,iGAC7B,IAAKuoC,EAAOtrC,KAAM,MAAM,IAAI+C,MAAM,4FAsBlC,MArBoB,YAAhBuoC,EAAOtrC,OACTN,KAAK+/D,QAAQ/X,QAAUpc,IAEL,WAAhBA,EAAOtrC,MAAqBsrC,EAAOr5B,KAAOq5B,EAAOgI,MAAQhI,EAAO5Q,SAClEh7B,KAAK+/D,QAAQ3W,OAASxd,GAEJ,qBAAhBA,EAAOtrC,OACTN,KAAK+/D,QAAQQ,iBAAmB30B,GAEd,eAAhBA,EAAOtrC,OACTN,KAAK+/D,QAAQvP,WAAa5kB,GAER,kBAAhBA,EAAOtrC,MACTytD,GAAcE,iBAAiBriB,GAEb,cAAhBA,EAAOtrC,OACTN,KAAK+/D,QAAQ1D,UAAYzwB,GAEP,aAAhBA,EAAOtrC,MACTN,KAAK+/D,QAAQC,SAASzxD,KAAKq9B,GAEtB5rC,IACT,CACA+gE,mBAAAA,CAAoB/8D,GAClB,GAAKA,GAAMhE,KAAK0nD,aACZ,CAAC,SAAU,OAAO17C,QAAQhI,IAAM,GACpC,IAAK,IAAI4yB,EAAK,EAAGA,EAAK52B,KAAK0nD,UAAUlpD,OAAQo4B,IAAM,CACjD,MAAMsqC,EAAYlhE,KAAK0nD,UAAU9wB,GACjC,KAAI,CAAC,SAAU,OAAO5qB,QAAQk1D,IAAc,IACxClhE,KAAK6oD,MAAM+E,4BAA4BsT,GAAY,CACrDlhE,KAAK8gE,iBAAmBI,EACxB,KACF,CACF,CACF,CACA1S,cAAAA,CAAezJ,EAAKhzB,GAClB,IAAIovC,EAASnhE,KACbA,KAAKioD,qBAAuBlD,EAC5B,MAAM0b,EAAW/V,KACjB1qD,KAAKqqD,KAAK,mBAAoBtF,GAC9B,MAAMqc,EAAcp9D,IAClBhE,KAAKymD,SAAWziD,EAChBhE,KAAK0nD,UAAY1nD,KAAK8nD,SAASmK,cAAcI,mBAAmBruD,GAChEhE,KAAK8gE,sBAAmB9wB,EACxBhwC,KAAK+gE,oBAAoB/8D,EAAE,EAEvBwrB,EAAOA,CAACmc,EAAK3nC,KACbA,GACFo9D,EAAYp9D,GACZhE,KAAKkuD,WAAWM,eAAexqD,GAC/BhE,KAAKioD,0BAAuBjY,EAC5BhwC,KAAKqqD,KAAK,kBAAmBrmD,GAC7BhE,KAAKopD,OAAO72C,IAAI,kBAAmBvO,IAEnChE,KAAKioD,0BAAuBjY,EAE9BywB,EAASl3C,SAAQ,WACf,OAAO43C,EAAOh6C,KAAK5oB,UACrB,IACIwzB,GAAUA,EAAS4Z,GAAK,WAC1B,OAAOw1B,EAAOh6C,KAAK5oB,UACrB,GAAE,EAEE8iE,EAAStP,IACRhN,GAAQgN,IAAQ/xD,KAAK8nD,SAASyY,mBAAkBxO,EAAO,IAC5D,MAAM/tD,EAAoB,kBAAT+tD,EAAoBA,EAAO/xD,KAAK8nD,SAASmK,cAAc+D,sBAAsBjE,GAC1F/tD,IACGhE,KAAKymD,UACR2a,EAAYp9D,GAEThE,KAAKkuD,WAAWzH,UAAUzmD,KAAKkuD,WAAWM,eAAexqD,GAC1DhE,KAAK8nD,SAASyY,kBAAoBvgE,KAAK8nD,SAASyY,iBAAiBe,mBAAmBthE,KAAK8nD,SAASyY,iBAAiBe,kBAAkBt9D,IAE3IhE,KAAK2gE,cAAc38D,GAAG2nC,IACpBnc,EAAKmc,EAAK3nC,EAAE,GACZ,EAaJ,OAXK+gD,IAAO/kD,KAAK8nD,SAASyY,kBAAqBvgE,KAAK8nD,SAASyY,iBAAiBgB,OAElExc,GAAO/kD,KAAK8nD,SAASyY,kBAAoBvgE,KAAK8nD,SAASyY,iBAAiBgB,MAC7B,IAAjDvhE,KAAK8nD,SAASyY,iBAAiBiB,OAAOhjE,OACxCwB,KAAK8nD,SAASyY,iBAAiBiB,SAASh4C,KAAK63C,GAE7CrhE,KAAK8nD,SAASyY,iBAAiBiB,OAAOH,GAGxCA,EAAOtc,GARPsc,EAAOrhE,KAAK8nD,SAASyY,iBAAiBiB,UAUjCf,CACT,CACA7Z,SAAAA,CAAU7B,EAAKvU,EAAImW,GACjB,IAAI8a,EAASzhE,KACb,MAAM0hE,EAAS,SAAUnlD,EAAK+iD,GAC5B,IAAIl4D,EACJ,GAAoB,kBAATk4D,EAAmB,CAC5B,IAAK,IAAI/V,EAAQhrD,UAAUC,OAAQi6C,EAAO,IAAIxxC,MAAMsiD,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACxG/Q,EAAK+Q,EAAQ,GAAKjrD,UAAUirD,GAE9BpiD,EAAUq6D,EAAOr6D,QAAQsoD,iCAAiC,CAACnzC,EAAK+iD,GAAMp5C,OAAOuyB,GAC/E,MACErxC,EAAU,IACLk4D,GAGPl4D,EAAQ29C,IAAM39C,EAAQ29C,KAAO2c,EAAO3c,IACpC39C,EAAQ2qD,KAAO3qD,EAAQ2qD,MAAQ2P,EAAO3P,KACtC3qD,EAAQopC,GAAKppC,EAAQopC,IAAMkxB,EAAOlxB,GACR,KAAtBppC,EAAQu/C,YAAkBv/C,EAAQu/C,UAAYv/C,EAAQu/C,WAAaA,GAAa+a,EAAO/a,WAC3F,MAAM2F,EAAemV,EAAOr6D,QAAQklD,cAAgB,IACpD,IAAIqV,EAMJ,OAJEA,EADEv6D,EAAQu/C,WAAa1/C,MAAMC,QAAQqV,GACzBA,EAAIkwB,KAAIvoC,GAAK,GAAGkD,EAAQu/C,YAAY2F,IAAepoD,MAEnDkD,EAAQu/C,UAAY,GAAGv/C,EAAQu/C,YAAY2F,IAAe/vC,IAAQA,EAEzEklD,EAAOt6C,EAAEw6C,EAAWv6D,EAC7B,EAQA,MAPmB,kBAAR29C,EACT2c,EAAO3c,IAAMA,EAEb2c,EAAO3P,KAAOhN,EAEhB2c,EAAOlxB,GAAKA,EACZkxB,EAAO/a,UAAYA,EACZ+a,CACT,CACAv6C,CAAAA,GACE,OAAOnnB,KAAKkuD,YAAcluD,KAAKkuD,WAAWsB,aAAajxD,UACzD,CACAkwD,MAAAA,GACE,OAAOzuD,KAAKkuD,YAAcluD,KAAKkuD,WAAWO,UAAUlwD,UACtD,CACAqjE,mBAAAA,CAAoBpxB,GAClBxwC,KAAKoH,QAAQ4/C,UAAYxW,CAC3B,CACAmX,kBAAAA,CAAmBnX,GACjB,IAAIppC,EAAU7I,UAAUC,OAAS,QAAsBwxC,IAAjBzxC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnF,IAAKyB,KAAK0kD,cAER,OADA1kD,KAAKopD,OAAOxV,KAAK,kDAAmD5zC,KAAK0nD,YAClE,EAET,IAAK1nD,KAAK0nD,YAAc1nD,KAAK0nD,UAAUlpD,OAErC,OADAwB,KAAKopD,OAAOxV,KAAK,6DAA8D5zC,KAAK0nD,YAC7E,EAET,MAAM3C,EAAM39C,EAAQ29C,KAAO/kD,KAAK8gE,kBAAoB9gE,KAAK0nD,UAAU,GAC7DyK,IAAcnyD,KAAKoH,SAAUpH,KAAKoH,QAAQ+qD,YAC1C0P,EAAU7hE,KAAK0nD,UAAU1nD,KAAK0nD,UAAUlpD,OAAS,GACvD,GAA0B,WAAtBumD,EAAInkD,cAA4B,OAAO,EAC3C,MAAMinD,EAAiBA,CAAC7jD,EAAGkjB,KACzB,MAAM46C,EAAY9hE,KAAK8nD,SAASC,iBAAiBhuB,MAAM,GAAG/1B,KAAKkjB,KAC/D,OAAsB,IAAf46C,GAAkC,IAAdA,GAAiC,IAAdA,CAAe,EAE/D,GAAI16D,EAAQwgD,SAAU,CACpB,MAAMma,EAAY36D,EAAQwgD,SAAS5nD,KAAM6nD,GACzC,QAAkB7X,IAAd+xB,EAAyB,OAAOA,CACtC,CACA,QAAI/hE,KAAKwtD,kBAAkBzI,EAAKvU,OAC3BxwC,KAAK8nD,SAASC,iBAAiBC,WAAWhoD,KAAKoH,QAAQ8lD,WAAcltD,KAAKoH,QAAQq4D,8BACnF5X,EAAe9C,EAAKvU,IAAS2hB,IAAetK,EAAega,EAASrxB,IAE1E,CACAqU,cAAAA,CAAerU,EAAIze,GACjB,MAAM0uC,EAAW/V,KACjB,OAAK1qD,KAAKoH,QAAQopC,IAIA,kBAAPA,IAAiBA,EAAK,CAACA,IAClCA,EAAG7vC,SAAQumB,IACLlnB,KAAKoH,QAAQopC,GAAGxkC,QAAQkb,GAAK,GAAGlnB,KAAKoH,QAAQopC,GAAGjiC,KAAK2Y,EAAE,IAE7DlnB,KAAK2gE,eAAch1B,IACjB80B,EAASl3C,UACLwI,GAAUA,EAAS4Z,EAAI,IAEtB80B,IAXD1uC,GAAUA,IACP3I,QAAQG,UAWnB,CACAu7B,aAAAA,CAAciN,EAAMhgC,GAClB,MAAM0uC,EAAW/V,KACG,kBAATqH,IAAmBA,EAAO,CAACA,IACtC,MAAMiQ,EAAYhiE,KAAKoH,QAAQo4D,SAAW,GACpCyC,EAAUlQ,EAAKvY,QAAOuL,GAAOid,EAAUh2D,QAAQ+4C,GAAO,GAAK/kD,KAAK8nD,SAASmK,cAAc4D,gBAAgB9Q,KAC7G,OAAKkd,EAAQzjE,QAIbwB,KAAKoH,QAAQo4D,QAAUwC,EAAU97C,OAAO+7C,GACxCjiE,KAAK2gE,eAAch1B,IACjB80B,EAASl3C,UACLwI,GAAUA,EAAS4Z,EAAI,IAEtB80B,IARD1uC,GAAUA,IACP3I,QAAQG,UAQnB,CACA24C,GAAAA,CAAInd,GAEF,GADKA,IAAKA,EAAM/kD,KAAK8gE,mBAAqB9gE,KAAK0nD,WAAa1nD,KAAK0nD,UAAUlpD,OAAS,EAAIwB,KAAK0nD,UAAU,GAAK1nD,KAAKymD,YAC5G1B,EAAK,MAAO,MACjB,MACMkN,EAAgBjyD,KAAK8nD,UAAY9nD,KAAK8nD,SAASmK,eAAiB,IAAImD,GAAa9vD,MACvF,MAFgB,CAAC,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,KAAM,KAAM,MAAO,MAAO,MAAO,MAAO,MAAO,KAAM,KAAM,MAAO,MAAO,MAAO,KAAM,KAAM,MAAO,MAAO,MAAO,KAAM,MAAO,MAAO,MAAO,MAAO,KAAM,MAAO,OAEna0G,QAAQimD,EAAcuD,wBAAwBzQ,KAAS,GAAKA,EAAInkD,cAAcoL,QAAQ,SAAW,EAAI,MAAQ,KAC9H,CACA,qBAAOm2D,GAGL,OAAO,IAAItC,GAFGthE,UAAUC,OAAS,QAAsBwxC,IAAjBzxC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACpEA,UAAUC,OAAS,EAAID,UAAU,QAAKyxC,EAEvD,CACAoyB,aAAAA,GACE,IAAIh7D,EAAU7I,UAAUC,OAAS,QAAsBwxC,IAAjBzxC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/EwzB,EAAWxzB,UAAUC,OAAS,QAAsBwxC,IAAjBzxC,UAAU,GAAmBA,UAAU,GAAKqhE,GACnF,MAAMyC,EAAoBj7D,EAAQi7D,kBAC9BA,UAA0Bj7D,EAAQi7D,kBACtC,MAAMC,EAAgB,IACjBtiE,KAAKoH,WACLA,EAED64D,SAAS,GAGPlW,EAAQ,IAAI8V,GAAKyC,QACDtyB,IAAlB5oC,EAAQiiD,YAA0CrZ,IAAnB5oC,EAAQ+hD,SACzCY,EAAMX,OAASW,EAAMX,OAAOW,MAAM3iD,IA4BpC,MA1BsB,CAAC,QAAS,WAAY,YAC9BzG,SAAQyO,IACpB26C,EAAM36C,GAAKpP,KAAKoP,EAAE,IAEpB26C,EAAMjC,SAAW,IACZ9nD,KAAK8nD,UAEViC,EAAMjC,SAASqM,MAAQ,CACrBxM,mBAAoBoC,EAAMpC,mBAAmB5gC,KAAKgjC,IAEhDsY,IACFtY,EAAMlB,MAAQ,IAAI6D,GAAc1sD,KAAK6oD,MAAM5tC,KAAMqnD,GACjDvY,EAAMjC,SAASgN,cAAgB/K,EAAMlB,OAEvCkB,EAAMmE,WAAa,IAAII,GAAWvE,EAAMjC,SAAUwa,GAClDvY,EAAMmE,WAAWtJ,GAAG,KAAK,SAAUvkC,GACjC,IAAK,IAAIqpC,EAAQnrD,UAAUC,OAAQ2lD,EAAO,IAAIl9C,MAAMyiD,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACxGxF,EAAKwF,EAAQ,GAAKprD,UAAUorD,GAE9BI,EAAMM,KAAKhqC,KAAU8jC,EACvB,IACA4F,EAAMjE,KAAKwc,EAAevwC,GAC1Bg4B,EAAMmE,WAAW9mD,QAAUk7D,EAC3BvY,EAAMmE,WAAWnG,iBAAiBD,SAASqM,MAAQ,CACjDxM,mBAAoBoC,EAAMpC,mBAAmB5gC,KAAKgjC,IAE7CA,CACT,CACA+D,MAAAA,GACE,MAAO,CACL1mD,QAASpH,KAAKoH,QACdyhD,MAAO7oD,KAAK6oD,MACZpC,SAAUzmD,KAAKymD,SACfiB,UAAW1nD,KAAK0nD,UAChBoZ,iBAAkB9gE,KAAK8gE,iBAE3B,EAEF,MAAMz6C,GAAWw5C,GAAKsC,iBACtB97C,GAAS87C,eAAiBtC,GAAKsC,eAER97C,GAAS87C,eACpB97C,GAAS67C,IACR77C,GAASy/B,KACAz/B,GAASs6C,cACPt6C,GAAS26C,gBACrB36C,GAAS46C,IACE56C,GAASmoC,eACdnoC,GAASugC,UACjBvgC,GAASc,EACJd,GAASooC,OACIpoC,GAASu7C,oBACVv7C,GAASshC,mBACbthC,GAASw+B,eACVx+B,GAASy+B,cAb/B,MCtzEM,MACJ7jD,GAAK,QACLN,IACE,GAaJ,MAAM4hE,GAAqB,wCAoDrBC,GAAS,CACbjsC,MAAAA,CAAOlyB,EAAM0B,EAAO08D,EAASC,GAC3B,IAAIC,EAAgBpkE,UAAUC,OAAS,QAAsBwxC,IAAjBzxC,UAAU,GAAmBA,UAAU,GAAK,CACtFk2C,KAAM,IACNmuB,SAAU,UAERH,IACFE,EAAcE,QAAU,IAAIpqD,KAC5BkqD,EAAcE,QAAQC,QAAQH,EAAcE,QAAQE,UAAsB,GAAVN,EAAe,MAE7EC,IAAQC,EAAcD,OAASA,GACnCxjE,SAASsjE,OA9DWQ,EAAC3+D,EAAMi1D,EAAKlyD,KAClC,MAAMo1D,EAAMp1D,GAAW,CAAC,EACxBo1D,EAAI/nB,KAAO+nB,EAAI/nB,MAAQ,IAEvB,IAAIkX,EAAM,GAAGtnD,KADC5F,mBAAmB66D,KAEjC,GAAIkD,EAAIyG,OAAS,EAAG,CAClB,MAAMA,EAASzG,EAAIyG,OAAS,EAC5B,GAAItM,OAAOx1D,MAAM8hE,GAAS,MAAM,IAAI5/D,MAAM,6BAC1CsoD,GAAO,aAAax5C,KAAKk9B,MAAM4zB,IACjC,CACA,GAAIzG,EAAIkG,OAAQ,CACd,IAAKH,GAAmBjhE,KAAKk7D,EAAIkG,QAC/B,MAAM,IAAIQ,UAAU,4BAEtBvX,GAAO,YAAY6Q,EAAIkG,QACzB,CACA,GAAIlG,EAAI/nB,KAAM,CACZ,IAAK8tB,GAAmBjhE,KAAKk7D,EAAI/nB,MAC/B,MAAM,IAAIyuB,UAAU,0BAEtBvX,GAAO,UAAU6Q,EAAI/nB,MACvB,CACA,GAAI+nB,EAAIqG,QAAS,CACf,GAAuC,oBAA5BrG,EAAIqG,QAAQM,YACrB,MAAM,IAAID,UAAU,6BAEtBvX,GAAO,aAAa6Q,EAAIqG,QAAQM,eAClC,CAGA,GAFI3G,EAAI4G,WAAUzX,GAAO,cACrB6Q,EAAI6G,SAAQ1X,GAAO,YACnB6Q,EAAIoG,SAEN,OADyC,kBAAjBpG,EAAIoG,SAAwBpG,EAAIoG,SAAShiE,cAAgB47D,EAAIoG,UAEnF,KAAK,EACHjX,GAAO,oBACP,MACF,IAAK,MACHA,GAAO,iBACP,MACF,IAAK,SACHA,GAAO,oBACP,MACF,IAAK,OACHA,GAAO,kBACP,MACF,QACE,MAAM,IAAIuX,UAAU,8BAG1B,OAAOvX,CAAG,EAaUqX,CAAgB3+D,EAAM5F,mBAAmBsH,GAAQ48D,EACrE,EACA9D,IAAAA,CAAKx6D,GACH,MAAMi/D,EAAS,GAAGj/D,KACZnG,EAAKgB,SAASsjE,OAAO9hE,MAAM,KACjC,IAAK,IAAI+wC,EAAI,EAAGA,EAAIvzC,EAAGM,OAAQizC,IAAK,CAClC,IAAInzC,EAAIJ,EAAGuzC,GACX,KAAuB,MAAhBnzC,EAAE6N,OAAO,IAAY7N,EAAIA,EAAE8N,UAAU,EAAG9N,EAAEE,QACjD,GAA0B,IAAtBF,EAAE0N,QAAQs3D,GAAe,OAAOhlE,EAAE8N,UAAUk3D,EAAO9kE,OAAQF,EAAEE,OACnE,CACA,OAAO,IACT,EACA+kE,MAAAA,CAAOl/D,GACLrE,KAAKu2B,OAAOlyB,EAAM,IAAK,EACzB,GAEF,IAAIm/D,GAAW,CACbn/D,KAAM,SAENo/D,MAAAA,CAAOjvB,GACL,IAAI,aACFkvB,GACElvB,EACJ,GAAIkvB,GAAoC,qBAAbxkE,SACzB,OAAOsjE,GAAO3D,KAAK6E,SAAiB1zB,CAGxC,EAEAsxB,iBAAAA,CAAkBvc,EAAK0F,GACrB,IAAI,aACFiZ,EAAY,cACZC,EAAa,aACbC,EAAY,cACZjB,GACElY,EACAiZ,GAAoC,qBAAbxkE,UACzBsjE,GAAOjsC,OAAOmtC,EAAc3e,EAAK4e,EAAeC,EAAcjB,EAElE,GAGEkB,GAAc,CAChBx/D,KAAM,cAENo/D,MAAAA,CAAOjvB,GACL,IAGIsf,GAHA,kBACFgQ,GACEtvB,EAEJ,GAAsB,qBAAXv1C,OAAwB,CACjC,IAAI,OACF2gB,GACE3gB,OAAO0d,UACN1d,OAAO0d,SAASiD,QAAU3gB,OAAO0d,SAASy3B,MAAMpoC,QAAQ,MAAQ,IACnE4T,EAAS3gB,OAAO0d,SAASy3B,KAAKhoC,UAAUnN,OAAO0d,SAASy3B,KAAKpoC,QAAQ,OAEvE,MACM+tC,EADQn6B,EAAOxT,UAAU,GACV1L,MAAM,KAC3B,IAAK,IAAI+wC,EAAI,EAAGA,EAAIsI,EAAOv7C,OAAQizC,IAAK,CACtC,MAAMsyB,EAAMhqB,EAAOtI,GAAGzlC,QAAQ,KAC9B,GAAI+3D,EAAM,EAAG,CACChqB,EAAOtI,GAAGrlC,UAAU,EAAG23D,KACvBD,IACVhQ,EAAQ/Z,EAAOtI,GAAGrlC,UAAU23D,EAAM,GAEtC,CACF,CACF,CACA,OAAOjQ,CACT,GAGF,IAAIkQ,GAAyB,KAC7B,MAAMC,GAAwBA,KAC5B,GAA+B,OAA3BD,GAAiC,OAAOA,GAC5C,IACEA,GAAoC,cAAX/kE,QAAkD,OAAxBA,OAAOilE,aAC1D,MAAMC,EAAU,wBAChBllE,OAAOilE,aAAaE,QAAQD,EAAS,OACrCllE,OAAOilE,aAAaG,WAAWF,EACjC,CAAE,MAAOtkE,GACPmkE,IAAyB,CAC3B,CACA,OAAOA,EAAsB,EAE/B,IAAIE,GAAe,CACjB7/D,KAAM,eAENo/D,MAAAA,CAAOjvB,GACL,IAAI,mBACF8vB,GACE9vB,EACJ,GAAI8vB,GAAsBL,KACxB,OAAOhlE,OAAOilE,aAAaK,QAAQD,SAAuBt0B,CAI9D,EAEAsxB,iBAAAA,CAAkBvc,EAAK0F,GACrB,IAAI,mBACF6Z,GACE7Z,EACA6Z,GAAsBL,MACxBhlE,OAAOilE,aAAaE,QAAQE,EAAoBvf,EAEpD,GAGF,IAAIyf,GAA2B,KAC/B,MAAMC,GAA0BA,KAC9B,GAAiC,OAA7BD,GAAmC,OAAOA,GAC9C,IACEA,GAAsC,cAAXvlE,QAAoD,OAA1BA,OAAOylE,eAC5D,MAAMP,EAAU,wBAChBllE,OAAOylE,eAAeN,QAAQD,EAAS,OACvCllE,OAAOylE,eAAeL,WAAWF,EACnC,CAAE,MAAOtkE,GACP2kE,IAA2B,CAC7B,CACA,OAAOA,EAAwB,EAEjC,IAAIE,GAAiB,CACnBrgE,KAAM,iBACNo/D,MAAAA,CAAOjvB,GACL,IAAI,qBACFmwB,GACEnwB,EACJ,GAAImwB,GAAwBF,KAC1B,OAAOxlE,OAAOylE,eAAeH,QAAQI,SAAyB30B,CAGlE,EACAsxB,iBAAAA,CAAkBvc,EAAK0F,GACrB,IAAI,qBACFka,GACEla,EACAka,GAAwBF,MAC1BxlE,OAAOylE,eAAeN,QAAQO,EAAsB5f,EAExD,GAGE6f,GAAc,CAChBvgE,KAAM,YACNo/D,MAAAA,CAAOr8D,GACL,MAAM0sD,EAAQ,GACd,GAAyB,qBAAdplB,UAA2B,CACpC,MAAM,UACJgZ,EAAS,aACTmd,EAAY,SACZpe,GACE/X,UACJ,GAAIgZ,EAEF,IAAK,IAAIjW,EAAI,EAAGA,EAAIiW,EAAUlpD,OAAQizC,IACpCqiB,EAAMvlD,KAAKm5C,EAAUjW,IAGrBozB,GACF/Q,EAAMvlD,KAAKs2D,GAETpe,GACFqN,EAAMvlD,KAAKk4C,EAEf,CACA,OAAOqN,EAAMt1D,OAAS,EAAIs1D,OAAQ9jB,CACpC,GAGE80B,GAAU,CACZzgE,KAAM,UAENo/D,MAAAA,CAAOjvB,GACL,IAGIsf,GAHA,QACFgR,GACEtwB,EAEJ,MAAMuwB,EAAkBD,IAAgC,qBAAb5lE,SAA2BA,SAAS4jB,gBAAkB,MAIjG,OAHIiiD,GAA2D,oBAAjCA,EAAgBpzB,eAC5CmiB,EAAQiR,EAAgBpzB,aAAa,SAEhCmiB,CACT,GAGErf,GAAO,CACTpwC,KAAM,OAENo/D,MAAAA,CAAOjvB,GACL,IAAI,oBACFwwB,GACExwB,EACJ,GAAsB,qBAAXv1C,OAAwB,OACnC,MAAMwnD,EAAWxnD,OAAO0d,SAASw3B,SAAS3wC,MAAM,mBAChD,IAAKyD,MAAMC,QAAQu/C,GAAW,OAC9B,MAAM73B,EAAuC,kBAAxBo2C,EAAmCA,EAAsB,EAC9E,OAAOve,EAAS73B,IAAQjtB,QAAQ,IAAK,GACvC,GAGEsjE,GAAY,CACd5gE,KAAM,YACNo/D,MAAAA,CAAOjvB,GACL,IAAI,yBACF0wB,GACE1wB,EAEJ,MAAM2wB,EAAuE,kBAA7BD,EAAwCA,EAA2B,EAAI,EAIjHze,EAA6B,qBAAXxnD,QAA0BA,OAAO0d,UAAUyoD,UAAU5hE,MAAM,0DAGnF,GAAKijD,EAEL,OAAOA,EAAS0e,EAClB,GAmBF,MAAME,GACJhgE,WAAAA,CAAYyiD,GACV,IAAI1gD,EAAU7I,UAAUC,OAAS,QAAsBwxC,IAAjBzxC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnFyB,KAAKM,KAAO,mBACZN,KAAKslE,UAAY,CAAC,EAClBtlE,KAAK8lD,KAAKgC,EAAU1gD,EACtB,CACA0+C,IAAAA,CAAKgC,GACH,IAAI1gD,EAAU7I,UAAUC,OAAS,QAAsBwxC,IAAjBzxC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/EipD,EAAcjpD,UAAUC,OAAS,QAAsBwxC,IAAjBzxC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACvFyB,KAAK8nD,SAAWA,GAAY,CAC1BmK,cAAe,CAAC,GAElBjyD,KAAKoH,QAtUT,SAAkBmpC,GAQhB,OAPA5vC,GAAQU,KAAKJ,GAAMI,KAAK9C,UAAW,IAAI4O,IACrC,GAAIA,EACF,IAAK,MAAM+jC,KAAQ/jC,OACC6iC,IAAdO,EAAIW,KAAqBX,EAAIW,GAAQ/jC,EAAO+jC,GAEpD,IAEKX,CACT,CA6TmBg1B,CAASn+D,EAASpH,KAAKoH,SAAW,CAAC,EA5B7C,CACL0D,MAAO,CAAC,cAAe,SAAU,eAAgB,iBAAkB,YAAa,WAChFg5D,kBAAmB,MACnBJ,aAAc,UACdY,mBAAoB,aACpBK,qBAAsB,aAEtBa,OAAQ,CAAC,gBACTC,gBAAiB,CAAC,UAIlBC,wBAAyB1hE,GAAKA,IAiBsB,kBAAzChE,KAAKoH,QAAQs+D,yBAAwC1lE,KAAKoH,QAAQs+D,wBAAwB15D,QAAQ,UAAY,IACvHhM,KAAKoH,QAAQs+D,wBAA0B1hE,GAAKA,EAAErC,QAAQ,IAAK,MAIzD3B,KAAKoH,QAAQu+D,qBAAoB3lE,KAAKoH,QAAQ49D,oBAAsBhlE,KAAKoH,QAAQu+D,oBACrF3lE,KAAKwnD,YAAcA,EACnBxnD,KAAK4lE,YAAYpC,IACjBxjE,KAAK4lE,YAAY/B,IACjB7jE,KAAK4lE,YAAY1B,IACjBlkE,KAAK4lE,YAAYlB,IACjB1kE,KAAK4lE,YAAYhB,IACjB5kE,KAAK4lE,YAAYd,IACjB9kE,KAAK4lE,YAAYnxB,IACjBz0C,KAAK4lE,YAAYX,GACnB,CACAW,WAAAA,CAAYC,GAEV,OADA7lE,KAAKslE,UAAUO,EAASxhE,MAAQwhE,EACzB7lE,IACT,CACAwhE,MAAAA,CAAOsE,GACAA,IAAgBA,EAAiB9lE,KAAKoH,QAAQ0D,OACnD,IAAIi7D,EAAW,GASf,OARAD,EAAenlE,SAAQqlE,IACrB,GAAIhmE,KAAKslE,UAAUU,GAAe,CAChC,IAAIvC,EAASzjE,KAAKslE,UAAUU,GAAcvC,OAAOzjE,KAAKoH,SAClDq8D,GAA4B,kBAAXA,IAAqBA,EAAS,CAACA,IAChDA,IAAQsC,EAAWA,EAAS7/C,OAAOu9C,GACzC,KAEFsC,EAAWA,EAASt5B,KAAI7sC,GAAKI,KAAKoH,QAAQs+D,wBAAwB9lE,KAC9DI,KAAK8nD,SAASmK,cAAc+D,sBAA8B+P,EACvDA,EAASvnE,OAAS,EAAIunE,EAAS,GAAK,IAC7C,CAEAzE,iBAAAA,CAAkBvc,EAAKygB,GAChBA,IAAQA,EAASxlE,KAAKoH,QAAQo+D,QAC9BA,IACDxlE,KAAKoH,QAAQq+D,iBAAmBzlE,KAAKoH,QAAQq+D,gBAAgBz5D,QAAQ+4C,IAAQ,GACjFygB,EAAO7kE,SAAQslE,IACTjmE,KAAKslE,UAAUW,IAAYjmE,KAAKslE,UAAUW,GAAW3E,kBAAkBvc,EAAK/kD,KAAKoH,QAAQ,IAEjG,EAEFi+D,GAAQ/kE,KAAO,opfCjXfmkD,GAAAA,IACOyhB,IACJjF,IAAIpb,IACJC,KAAK,CACJoH,UAAW,CACTiZ,GAAI,CACFC,YAAaC,IAEfC,GAAI,CACFF,YAAaG,KAGjBpU,YAAa,KACbzD,cAAe,CACb+K,aAAa,GAEf+G,UAAW,CACT11D,MAAO,CAAC,eAAgB,aACxB06D,OAAQ,CAAC,mBAIf,MCyMA,GA9NmBhxB,IAA0B,IAAzB,gBAAEgyB,GAAiBhyB,EACrC,MAAOiyB,EAAWC,IAAgBluC,EAAAA,EAAAA,UAAS,KACpCmuC,EAAUC,IAAepuC,EAAAA,EAAAA,UAAS,KAElCquC,EAAUC,IAAetuC,EAAAA,EAAAA,WAAS,IAClCuuC,EAAeC,IAAkBxuC,EAAAA,EAAAA,WAAS,IAC1CyuC,EAAYC,IAAiB1uC,EAAAA,EAAAA,UAAS,KACvC7b,EAAW6gC,IACXY,EAAWR,KACX,EAAEz2B,GAAM0/B,KACRsgB,GAAa5uC,EAAAA,EAAAA,QAAO,OAE1BN,EAAAA,EAAAA,YAAU,KACR,MAAMmvC,EAAeA,KACnB,MAAMnqD,EAAQhe,OAAOooE,WACrBP,EAAY7pD,EAAQ,MAElB+pD,IADE/pD,EAAQ,MAIZ,EAMF,OAHAmqD,IACAnoE,OAAO+P,iBAAiB,SAAUo4D,GAE3B,KACLnoE,OAAOgQ,oBAAoB,SAAUm4D,EAAa,CACnD,GACA,KAEHnvC,EAAAA,EAAAA,YAAU,KACR,MAAM1Y,EAAQ2kD,aAAaK,QAAQ,aAC7B+C,EAAOpD,aAAaK,QAAQ,YAE9BhlD,GACFmnD,EAAannD,GAEX+nD,GACFV,EAAYU,EACd,GACC,KAEHrvC,EAAAA,EAAAA,YAAU,KACRivC,EAAcvqD,EAASw3B,SAAS,GAC/B,CAACx3B,EAASw3B,YAEblc,EAAAA,EAAAA,YAAU,KAEJuuC,GACFA,EAAgBO,EAClB,GACC,CAACA,EAAeP,IAEnB,MAoBMe,EAAY,CAChB,CACE/wD,GAAI,KACJsJ,KAAMqH,EAAE,aACRqgD,KAAM,iBACN/yB,KAAM,KAER,CACEj+B,GAAI,KACJsJ,KAAMqH,EAAE,YACRqgD,KAAM,yBACN/yB,KAAM,aAER,CACEj+B,GAAI,KACJsJ,KAAMqH,EAAE,YACRqgD,KAAM,mBACN/yB,KAAM,aAER,CACEj+B,GAAI,KACJsJ,KAAMqH,EAAE,YACRqgD,KAAM,2BACN/yB,KAAM,gBAES,UAAbkyB,GAAqC,eAAbA,EACxB,CACE,CACEnwD,GAAI,KACJsJ,KAAMqH,EAAE,UACRqgD,KAAM,qBACN/yB,KAAM,WAER,CACEj+B,GAAI,KACJsJ,KAAMqH,EAAE,mBACRqgD,KAAM,iBACN/yB,KAAM,UAER,CACEj+B,GAAI,KACJsJ,KAAMqH,EAAE,qBACRqgD,KAAM,qBACN/yB,KAAM,qBAER,CACEj+B,GAAI,KACJsJ,KAAMqH,EAAE,WACRqgD,KAAM,sBACN/yB,KAAM,YAER,CACEj+B,GAAI,KACJsJ,KAAMqH,EAAE,mBACRqgD,KAAM,2BACN/yB,KAAM,oBAGV,GACJ,CACEj+B,GAAI,KACJsJ,KAAMqH,EAAE,YACRqgD,KAAM,qBACN/yB,KAAM,cAIV,OACEgzB,EAAAA,GAAAA,MAAAzjB,GAAAA,SAAA,CAAAt8C,SAAA,EAEE+/D,EAAAA,GAAAA,MAAA,OAAKC,UAAU,gBAAehgE,SAAA,EAC5B+/D,EAAAA,GAAAA,MAAA,OAAKC,UAAU,cAAahgE,SAAA,EAC1Bq8C,EAAAA,GAAAA,KAAA,UACE2jB,UAAU,kBACV9nC,QAtFY+nC,KACpBX,GAAgBD,EAAc,EAsFtB,aAAW,cAAar/D,UAExBq8C,EAAAA,GAAAA,KAAA,QAAM2jB,UAAU,sBAElB3jB,EAAAA,GAAAA,KAAA,OAAK2jB,UAAU,iBAAiB9nC,QAASA,IAAMwe,EAAS,KAAK12C,UAC3Dq8C,EAAAA,GAAAA,KAAA,OAAKlhB,IAAI,mBAAmB+kC,IAAI,OAAO1qD,OAAO,aAIlDuqD,EAAAA,GAAAA,MAAA,OAAKC,UAAU,eAAchgE,SAAA,EAC3B+/D,EAAAA,GAAAA,MAAA,UACEC,UAAU,aACV9nC,QA/FiBioC,KACzBzpB,EAAS,eAAe,EA+FhB,aAAW,eAAc12C,SAAA,EAEzBq8C,EAAAA,GAAAA,KAAA,QAAM2jB,UAAU,oBAChB3jB,EAAAA,GAAAA,KAAA,QAAM2jB,UAAU,WAAUhgE,SAAEyf,EAAE,sBAGhCsgD,EAAAA,GAAAA,MAAA,UACEC,UAAU,aACV9nC,QApGakoC,KACrB1pB,EAAS,aAAa,EAoGd,aAAW,aAAY12C,SAAA,EAEvBq8C,EAAAA,GAAAA,KAAA,QAAM2jB,UAAU,sBAChB3jB,EAAAA,GAAAA,KAAA,QAAM2jB,UAAU,WAAUhgE,SAAEyf,EAAE,oBAGhCsgD,EAAAA,GAAAA,MAAA,OAAKC,UAAU,eAAchgE,SAAA,EAC3B+/D,EAAAA,GAAAA,MAAA,OAAKC,UAAU,YAAWhgE,SAAA,EACxBq8C,EAAAA,GAAAA,KAAA,QAAM2jB,UAAU,aAAYhgE,SAAE++D,KAC9B1iB,EAAAA,GAAAA,KAAA,QAAM2jB,UAAU,YAAWhgE,SAAEi/D,QAE/B5iB,EAAAA,GAAAA,KAAA,UACE2jB,UAAU,aACV9nC,QAlISmoC,KACnB7D,aAAaG,WAAW,eACxBH,aAAaG,WAAW,gBACxBH,aAAaG,WAAW,YACxBH,aAAaG,WAAW,aACxBplE,OAAO0d,SAAS6F,KAAO,QAAQ,EA8HrB,aAAW,SAAQ9a,UAEnBq8C,EAAAA,GAAAA,KAAA,QAAM2jB,UAAU,gCAOxB3jB,EAAAA,GAAAA,KAAA,OACE31B,IAAK+4C,EACLO,UAAW,mBAAkBX,EAAgB,OAAS,UAAWr/D,UAEjEq8C,EAAAA,GAAAA,KAAA,OAAK2jB,UAAU,eAAchgE,UAC3Bq8C,EAAAA,GAAAA,KAAA,MAAAr8C,SACG6/D,EAAU96B,KAAKu7B,IACdP,EAAAA,GAAAA,MAAA,MAEEC,UAAWT,IAAee,EAAKvzB,KAAO,SAAW,GACjD7U,QAASA,IAAMwe,EAAS4pB,EAAKvzB,MAAM/sC,SAAA,EAEnCq8C,EAAAA,GAAAA,KAAA,QAAM2jB,UAAWM,EAAKR,QACtBzjB,EAAAA,GAAAA,KAAA,QAAM2jB,UAAU,YAAWhgE,SAAEsgE,EAAKloD,SAL7BkoD,EAAKxxD,aAapButC,EAAAA,GAAAA,KAAA,OAAK2jB,UAAW,yBAAwBX,EAAgB,eAAiB,sBAGxE,ECzNP,SANA,SAAkBkB,IACjBhwC,EAAAA,EAAAA,YAAU,KACP/4B,SAAS+oE,MAAQ,GAAGA,GAAO,GAC5B,CAACA,GACJ,ECHMC,IAAe96B,EAAAA,EAAAA,iBAGR+6B,GAAgB3zB,IAAmB,IAAlB,SAAE9sC,GAAU8sC,EACxC,MAAO4zB,EAAOC,IAAY7vC,EAAAA,EAAAA,UAAS,CAAE8vC,MAAM,EAAO3tC,QAAS,GAAIr6B,KAAM,KAYrE,OACEyjD,EAAAA,GAAAA,KAACmkB,GAAa36B,SAAQ,CAACxnC,MAAO,CAAEqiE,QAAOG,UAVvB,SAAC5tC,GACjB0tC,EAAS,CAAEC,MAAM,EAAM3tC,UAASr6B,KADF/B,UAAAC,OAAA,QAAAwxC,IAAAzxC,UAAA,GAAAA,UAAA,GAAG,SAIjCyqB,YAAW,KACTq/C,EAAS,CAAEC,MAAM,EAAO3tC,QAAS,GAAIr6B,KAAM,IAAK,GAC/C,IACL,GAGqDoH,SAChDA,GACqB,EAI5B,MCxBe,SAASqf,GAAKqrB,EAAIo2B,GAC/B,OAAO,WACL,OAAOp2B,EAAGjjC,MAAMq5D,EAASjqE,UAC3B,CACF,CCAA,MAAO+J,SAAQA,IAAIjJ,OAAOC,WACpB,eAACgxC,IAAkBjxC,OAEnBopE,IAAUzhC,GAGb3nC,OAAOk3B,OAAO,MAHQmyC,IACrB,MAAM/c,EAAMrjD,GAASjH,KAAKqnE,GAC1B,OAAO1hC,GAAM2kB,KAAS3kB,GAAM2kB,GAAOA,EAAI1qD,MAAM,GAAI,GAAGL,cAAc,GAFvD,IAAComC,GAKhB,MAAM2hC,GAAcroE,IAClBA,EAAOA,EAAKM,cACJ8nE,GAAUD,GAAOC,KAAWpoE,GAGhCsoE,GAAatoE,GAAQooE,UAAgBA,IAAUpoE,GAS/C,QAAC4G,IAAWD,MASZ4hE,GAAcD,GAAW,aAqB/B,MAAME,GAAgBH,GAAW,eA2BjC,MAAMtkB,GAAWukB,GAAW,UAQtBG,GAAaH,GAAW,YASxBI,GAAWJ,GAAW,UAStBK,GAAYP,GAAoB,OAAVA,GAAmC,kBAAVA,EAiB/CQ,GAAiB5P,IACrB,GAAoB,WAAhBmP,GAAOnP,GACT,OAAO,EAGT,MAAMh6D,EAAYgxC,GAAegpB,GACjC,OAAsB,OAAdh6D,GAAsBA,IAAcD,OAAOC,WAAkD,OAArCD,OAAOixC,eAAehxC,OAA0B0C,OAAOswC,eAAegnB,MAAUt3D,OAAOe,YAAYu2D,EAAI,EAUnK6P,GAASR,GAAW,QASpBS,GAAST,GAAW,QASpBU,GAASV,GAAW,QASpBW,GAAaX,GAAW,YAsCxBY,GAAoBZ,GAAW,oBAE9Ba,GAAkBC,GAAWC,GAAYC,IAAa,CAAC,iBAAkB,UAAW,WAAY,WAAWl9B,IAAIk8B,IA2BtH,SAAShoE,GAAQ4vC,EAAK6B,GAA+B,IAM/CX,EACAztC,GAPoB,WAAC4lE,GAAa,GAAMrrE,UAAAC,OAAA,QAAAwxC,IAAAzxC,UAAA,GAAAA,UAAA,GAAG,CAAC,EAEhD,GAAY,OAARgyC,GAA+B,qBAARA,EAa3B,GALmB,kBAARA,IAETA,EAAM,CAACA,IAGLrpC,GAAQqpC,GAEV,IAAKkB,EAAI,EAAGztC,EAAIusC,EAAI/xC,OAAQizC,EAAIztC,EAAGytC,IACjCW,EAAG/wC,KAAK,KAAMkvC,EAAIkB,GAAIA,EAAGlB,OAEtB,CAEL,MAAMrkC,EAAO09D,EAAavqE,OAAOqxC,oBAAoBH,GAAOlxC,OAAO6M,KAAKqkC,GAClEs5B,EAAM39D,EAAK1N,OACjB,IAAI+d,EAEJ,IAAKk1B,EAAI,EAAGA,EAAIo4B,EAAKp4B,IACnBl1B,EAAMrQ,EAAKulC,GACXW,EAAG/wC,KAAK,KAAMkvC,EAAIh0B,GAAMA,EAAKg0B,EAEjC,CACF,CAEA,SAASu5B,GAAQv5B,EAAKh0B,GACpBA,EAAMA,EAAI3b,cACV,MAAMsL,EAAO7M,OAAO6M,KAAKqkC,GACzB,IACIgU,EADA9S,EAAIvlC,EAAK1N,OAEb,KAAOizC,KAAM,GAEX,GADA8S,EAAOr4C,EAAKulC,GACRl1B,IAAQgoC,EAAK3jD,cACf,OAAO2jD,EAGX,OAAO,IACT,CAEA,MAAMwlB,GAEsB,qBAAfC,WAAmCA,WACvB,qBAAT12B,KAAuBA,KAA0B,qBAAXr0C,OAAyBA,OAASgrE,OAGlFC,GAAoBx5C,IAAam4C,GAAYn4C,IAAYA,IAAYq5C,GAoD3E,MA8HMI,IAAgBC,GAKG,qBAAfC,YAA8B/5B,GAAe+5B,YAH9C3B,GACE0B,IAAc1B,aAAiB0B,IAHrB,IAACA,GAetB,MAiCME,GAAa3B,GAAW,mBAWxBppE,GAAiB,CAACi1C,IAAA,IAAC,eAACj1C,GAAei1C,EAAA,MAAK,CAACjE,EAAKW,IAAS3xC,EAAe8B,KAAKkvC,EAAKW,EAAK,EAApE,CAAsE7xC,OAAOC,WAS9FirE,GAAW5B,GAAW,UAEtB6B,GAAoBA,CAACj6B,EAAKk6B,KAC9B,MAAMC,EAAcrrE,OAAOsrE,0BAA0Bp6B,GAC/Cq6B,EAAqB,CAAC,EAE5BjqE,GAAQ+pE,GAAa,CAACG,EAAYxmE,KAChC,IAAIykD,GAC2C,KAA1CA,EAAM2hB,EAAQI,EAAYxmE,EAAMksC,MACnCq6B,EAAmBvmE,GAAQykD,GAAO+hB,EACpC,IAGFxrE,OAAOyrE,iBAAiBv6B,EAAKq6B,EAAmB,EAsD5CG,GAAQ,6BAERC,GAAQ,aAERC,GAAW,CACfD,SACAD,SACAG,YAAaH,GAAQA,GAAMhqE,cAAgBiqE,IAwB7C,MA+BMG,GAAYxC,GAAW,iBAQvByC,GAAgB,EAAEC,EAAuBC,KAC7C,OAAID,EACK/8B,aAGFg9B,GAAyBC,EAW7B,SAASp5D,KAAK0U,WAXsB2kD,EAWV,GAV3BzB,GAAQ/6D,iBAAiB,WAAWy7C,IAAoB,IAAnB,OAACt9C,EAAM,KAAE8N,GAAKwvC,EAC7Ct9C,IAAW48D,IAAW9uD,IAASswD,GACjCC,EAAUhtE,QAAUgtE,EAAU71D,OAAV61D,EACtB,IACC,GAEK3kE,IACN2kE,EAAUj9D,KAAK1H,GACfkjE,GAAQ96B,YAAYs8B,EAAO,IAAI,GAEC1kE,GAAOmiB,WAAWniB,GAXxB,IAAE0kE,EAAOC,CAYxC,EAjBqB,CAkBI,oBAAjBl9B,aACPy6B,GAAWgB,GAAQ96B,cAGfw8B,GAAiC,qBAAnBniD,eAClBA,eAAevC,KAAKgjD,IAAgC,qBAAZ3b,SAA2BA,QAAQsd,UAAYN,GAIzF,IACElkE,WACA4hE,iBACA6C,SAlpBF,SAAkBrS,GAChB,OAAe,OAARA,IAAiBuP,GAAYvP,IAA4B,OAApBA,EAAIj0D,cAAyBwjE,GAAYvP,EAAIj0D,cACpF0jE,GAAWzP,EAAIj0D,YAAYsmE,WAAarS,EAAIj0D,YAAYsmE,SAASrS,EACxE,EAgpBEsS,WApgBkBlD,IAClB,IAAImD,EACJ,OAAOnD,IACgB,oBAAboD,UAA2BpD,aAAiBoD,UAClD/C,GAAWL,EAAM7H,UACY,cAA1BgL,EAAOpD,GAAOC,KAEL,WAATmD,GAAqB9C,GAAWL,EAAMpgE,WAAkC,sBAArBogE,EAAMpgE,YAG/D,EA2fDyjE,kBA9nBF,SAA2BzS,GACzB,IAAIxgB,EAMJ,OAJEA,EAD0B,qBAAhBkzB,aAAiCA,YAAYC,OAC9CD,YAAYC,OAAO3S,GAElBA,GAASA,EAAI4S,QAAYpD,GAAcxP,EAAI4S,QAEhDpzB,CACT,EAunBEuL,SAAQ,GACR2kB,YACAmD,UA9kBgBzD,IAAmB,IAAVA,IAA4B,IAAVA,EA+kB3CO,SAAQ,GACRC,iBACAM,oBACAC,aACAC,WAAU,GACVC,aACAd,YAAW,GACXM,UACAC,UACAC,UACAkB,YACAxB,cACAqD,SA9hBgB9S,GAAQ2P,GAAS3P,IAAQyP,GAAWzP,EAAI+S,MA+hBxD9C,qBACAY,gBACAb,cACA3oE,QAAO,GACP2rE,MAhaF,SAASA,IACP,MAAM,SAACC,GAAYrC,GAAiBlqE,OAASA,MAAQ,CAAC,EAChD84C,EAAS,CAAC,EACV0zB,EAAcA,CAAClT,EAAK/8C,KACxB,MAAMkwD,EAAYF,GAAYzC,GAAQhxB,EAAQv8B,IAAQA,EAClD2sD,GAAcpwB,EAAO2zB,KAAevD,GAAc5P,GACpDxgB,EAAO2zB,GAAaH,EAAMxzB,EAAO2zB,GAAYnT,GACpC4P,GAAc5P,GACvBxgB,EAAO2zB,GAAaH,EAAM,CAAC,EAAGhT,GACrBpyD,GAAQoyD,GACjBxgB,EAAO2zB,GAAanT,EAAIr4D,QAExB63C,EAAO2zB,GAAanT,CACtB,EAGF,IAAK,IAAI7nB,EAAI,EAAGztC,EAAIzF,UAAUC,OAAQizC,EAAIztC,EAAGytC,IAC3ClzC,UAAUkzC,IAAM9wC,GAAQpC,UAAUkzC,GAAI+6B,GAExC,OAAO1zB,CACT,EA6YEx1B,OAjYa,SAACllB,EAAGC,EAAGmqE,GAA8B,IAArB,WAACoB,GAAWrrE,UAAAC,OAAA,QAAAwxC,IAAAzxC,UAAA,GAAAA,UAAA,GAAE,CAAC,EAQ5C,OAPAoC,GAAQtC,GAAG,CAACi7D,EAAK/8C,KACXisD,GAAWO,GAAWzP,GACxBl7D,EAAEme,GAAOwK,GAAKuyC,EAAKkP,GAEnBpqE,EAAEme,GAAO+8C,CACX,GACC,CAACsQ,eACGxrE,CACT,EAyXEmF,KA7fYooD,GAAQA,EAAIpoD,KACxBooD,EAAIpoD,OAASooD,EAAIhqD,QAAQ,qCAAsC,IA6f/D+qE,SAjXgBC,IACc,QAA1BA,EAAQC,WAAW,KACrBD,EAAUA,EAAQ1rE,MAAM,IAEnB0rE,GA8WPE,SAlWeA,CAACxnE,EAAaynE,EAAkB/9C,EAAO27C,KACtDrlE,EAAY/F,UAAYD,OAAOk3B,OAAOu2C,EAAiBxtE,UAAWorE,GAClErlE,EAAY/F,UAAU+F,YAAcA,EACpChG,OAAOuE,eAAeyB,EAAa,QAAS,CAC1CU,MAAO+mE,EAAiBxtE,YAE1ByvB,GAAS1vB,OAAO8D,OAAOkC,EAAY/F,UAAWyvB,EAAM,EA6VpDg+C,aAjVmBA,CAACC,EAAWC,EAASzzB,EAAQ0zB,KAChD,IAAIn+C,EACA0iB,EACAP,EACJ,MAAMi8B,EAAS,CAAC,EAIhB,GAFAF,EAAUA,GAAW,CAAC,EAEL,MAAbD,EAAmB,OAAOC,EAE9B,EAAG,CAGD,IAFAl+C,EAAQ1vB,OAAOqxC,oBAAoBs8B,GACnCv7B,EAAI1iB,EAAMvwB,OACHizC,KAAM,GACXP,EAAOniB,EAAM0iB,GACPy7B,IAAcA,EAAWh8B,EAAM87B,EAAWC,IAAcE,EAAOj8B,KACnE+7B,EAAQ/7B,GAAQ87B,EAAU97B,GAC1Bi8B,EAAOj8B,IAAQ,GAGnB87B,GAAuB,IAAXxzB,GAAoBlJ,GAAe08B,EACjD,OAASA,KAAexzB,GAAUA,EAAOwzB,EAAWC,KAAaD,IAAc3tE,OAAOC,WAEtF,OAAO2tE,CAAO,EA2TdxE,UACAE,cACAhwB,SAjTeA,CAACgT,EAAKyhB,EAAcC,KACnC1hB,EAAMnvC,OAAOmvC,SACI3b,IAAbq9B,GAA0BA,EAAW1hB,EAAIntD,UAC3C6uE,EAAW1hB,EAAIntD,QAEjB6uE,GAAYD,EAAa5uE,OACzB,MAAMm8D,EAAYhP,EAAI3/C,QAAQohE,EAAcC,GAC5C,OAAsB,IAAf1S,GAAoBA,IAAc0S,CAAQ,EA2SjD1gC,QAhSe+7B,IACf,IAAKA,EAAO,OAAO,KACnB,GAAIxhE,GAAQwhE,GAAQ,OAAOA,EAC3B,IAAIj3B,EAAIi3B,EAAMlqE,OACd,IAAKwqE,GAASv3B,GAAI,OAAO,KACzB,MAAM67B,EAAM,IAAIrmE,MAAMwqC,GACtB,KAAOA,KAAM,GACX67B,EAAI77B,GAAKi3B,EAAMj3B,GAEjB,OAAO67B,CAAG,EAwRVC,aA7PmBA,CAACh9B,EAAK6B,KACzB,MAEMrvC,GAFYwtC,GAAOA,EAAIvuC,OAAOe,WAET1B,KAAKkvC,GAEhC,IAAIuI,EAEJ,MAAQA,EAAS/1C,EAASwsB,UAAYupB,EAAOtpB,MAAM,CACjD,MAAMg+C,EAAO10B,EAAO/yC,MACpBqsC,EAAG/wC,KAAKkvC,EAAKi9B,EAAK,GAAIA,EAAK,GAC7B,GAoPAC,SAzOeA,CAACC,EAAQ/hB,KACxB,IAAIpU,EACJ,MAAM+1B,EAAM,GAEZ,KAAwC,QAAhC/1B,EAAUm2B,EAAOrS,KAAK1P,KAC5B2hB,EAAI/+D,KAAKgpC,GAGX,OAAO+1B,CAAG,EAkOVhD,cACA/qE,eAAc,GACdouE,WAAYpuE,GACZirE,qBACAoD,cAzLqBr9B,IACrBi6B,GAAkBj6B,GAAK,CAACs6B,EAAYxmE,KAElC,GAAI0kE,GAAWx4B,KAA6D,IAArD,CAAC,YAAa,SAAU,UAAUvkC,QAAQ3H,GAC/D,OAAO,EAGT,MAAM0B,EAAQwqC,EAAIlsC,GAEb0kE,GAAWhjE,KAEhB8kE,EAAWrlE,YAAa,EAEpB,aAAcqlE,EAChBA,EAAWgD,UAAW,EAInBhD,EAAWhnE,MACdgnE,EAAWhnE,IAAM,KACf,MAAMR,MAAM,qCAAwCgB,EAAO,IAAK,GAEpE,GACA,EAmKFypE,YAhKkBA,CAACC,EAAeC,KAClC,MAAMz9B,EAAM,CAAC,EAEP09B,EAAUX,IACdA,EAAI3sE,SAAQoF,IACVwqC,EAAIxqC,IAAS,CAAI,GACjB,EAKJ,OAFAmB,GAAQ6mE,GAAiBE,EAAOF,GAAiBE,EAAOzxD,OAAOuxD,GAAertE,MAAMstE,IAE7Ez9B,CAAG,EAsJV29B,YAlOkBviB,GACXA,EAAI/qD,cAAce,QAAQ,yBAC/B,SAAkByN,EAAG++D,EAAIC,GACvB,OAAOD,EAAGptE,cAAgBqtE,CAC5B,IA+NFxO,KApJWA,OAqJXyO,eAnJqBA,CAACtoE,EAAOM,IACb,MAATN,GAAiB4wD,OAAO2X,SAASvoE,GAASA,GAASA,EAAQM,EAmJlEyjE,WACAG,OAAQF,GACRG,oBACAe,YACAsD,eA1IqB,WAAgD,IAA/CzuC,EAAIvhC,UAAAC,OAAA,QAAAwxC,IAAAzxC,UAAA,GAAAA,UAAA,GAAG,GAAIiwE,EAAQjwE,UAAAC,OAAA,QAAAwxC,IAAAzxC,UAAA,GAAAA,UAAA,GAAG0sE,GAASC,YACjDvf,EAAM,GACV,MAAM,OAACntD,GAAUgwE,EACjB,KAAO1uC,KACL6rB,GAAO6iB,EAASr8D,KAAK0U,SAAWroB,EAAO,GAGzC,OAAOmtD,CACT,EAmIE8iB,oBA1HF,SAA6B/F,GAC3B,SAAUA,GAASK,GAAWL,EAAM7H,SAAyC,aAA9B6H,EAAM1mE,OAAOswC,cAA+Bo2B,EAAM1mE,OAAOe,UAC1G,EAyHE2rE,aAvHoBn+B,IACpB,MAAMjtC,EAAQ,IAAI2D,MAAM,IAElB0nE,EAAQA,CAACxhE,EAAQskC,KAErB,GAAIw3B,GAAS97D,GAAS,CACpB,GAAI7J,EAAM0I,QAAQmB,IAAW,EAC3B,OAGF,KAAK,WAAYA,GAAS,CACxB7J,EAAMmuC,GAAKtkC,EACX,MAAMQ,EAASzG,GAAQiG,GAAU,GAAK,CAAC,EASvC,OAPAxM,GAAQwM,GAAQ,CAACpH,EAAOwW,KACtB,MAAMqyD,EAAeD,EAAM5oE,EAAO0rC,EAAI,IACrCo3B,GAAY+F,KAAkBjhE,EAAO4O,GAAOqyD,EAAa,IAG5DtrE,EAAMmuC,QAAKzB,EAEJriC,CACT,CACF,CAEA,OAAOR,CAAM,EAGf,OAAOwhE,EAAMp+B,EAAK,EAAE,EA4FpB46B,aACA0D,WAxFkBnG,GAClBA,IAAUO,GAASP,IAAUK,GAAWL,KAAWK,GAAWL,EAAMl/C,OAASu/C,GAAWL,EAAMj/C,OAwF9F6kB,aAAc88B,GACdK,SCvuBF,SAASqD,GAAWn0C,EAASje,EAAMqyD,EAAQj8B,EAASk8B,GAClD3rE,MAAMhC,KAAKrB,MAEPqD,MAAM4rE,kBACR5rE,MAAM4rE,kBAAkBjvE,KAAMA,KAAKqF,aAEnCrF,KAAKsD,OAAS,IAAID,OAASC,MAG7BtD,KAAK26B,QAAUA,EACf36B,KAAKqE,KAAO,aACZqY,IAAS1c,KAAK0c,KAAOA,GACrBqyD,IAAW/uE,KAAK+uE,OAASA,GACzBj8B,IAAY9yC,KAAK8yC,QAAUA,GACvBk8B,IACFhvE,KAAKgvE,SAAWA,EAChBhvE,KAAKy8C,OAASuyB,EAASvyB,OAASuyB,EAASvyB,OAAS,KAEtD,CAEA0X,GAAM0Y,SAASiC,GAAYzrE,MAAO,CAChCyqD,OAAQ,WACN,MAAO,CAELnzB,QAAS36B,KAAK26B,QACdt2B,KAAMrE,KAAKqE,KAEX6qE,YAAalvE,KAAKkvE,YAClBzvD,OAAQzf,KAAKyf,OAEb0vD,SAAUnvE,KAAKmvE,SACfC,WAAYpvE,KAAKovE,WACjBC,aAAcrvE,KAAKqvE,aACnB/rE,MAAOtD,KAAKsD,MAEZyrE,OAAQ5a,GAAMua,aAAa1uE,KAAK+uE,QAChCryD,KAAM1c,KAAK0c,KACX+/B,OAAQz8C,KAAKy8C,OAEjB,IAGF,MAAMn9C,GAAYwvE,GAAWxvE,UACvBorE,GAAc,CAAC,EAErB,CACE,uBACA,iBACA,eACA,YACA,cACA,4BACA,iBACA,mBACA,kBACA,eACA,kBACA,mBAEA/pE,SAAQ+b,IACRguD,GAAYhuD,GAAQ,CAAC3W,MAAO2W,EAAK,IAGnCrd,OAAOyrE,iBAAiBgE,GAAYpE,IACpCrrE,OAAOuE,eAAetE,GAAW,eAAgB,CAACyG,OAAO,IAGzD+oE,GAAWnzB,KAAO,CAAC3gB,EAAOte,EAAMqyD,EAAQj8B,EAASk8B,EAAUM,KACzD,MAAMC,EAAalwE,OAAOk3B,OAAOj3B,IAgBjC,OAdA60D,GAAM4Y,aAAa/xC,EAAOu0C,GAAY,SAAgBh/B,GACpD,OAAOA,IAAQltC,MAAM/D,SACvB,IAAG4xC,GACe,iBAATA,IAGT49B,GAAWztE,KAAKkuE,EAAYv0C,EAAML,QAASje,EAAMqyD,EAAQj8B,EAASk8B,GAElEO,EAAWC,MAAQx0C,EAEnBu0C,EAAWlrE,KAAO22B,EAAM32B,KAExBirE,GAAejwE,OAAO8D,OAAOosE,EAAYD,GAElCC,CAAU,EAGnB,YCxFA,SAASE,GAAY/G,GACnB,OAAOvU,GAAM+U,cAAcR,IAAUvU,GAAMjtD,QAAQwhE,EACrD,CASA,SAASgH,GAAenzD,GACtB,OAAO43C,GAAMxb,SAASp8B,EAAK,MAAQA,EAAItb,MAAM,GAAI,GAAKsb,CACxD,CAWA,SAASozD,GAAUl7B,EAAMl4B,EAAKqzD,GAC5B,OAAKn7B,EACEA,EAAKvuB,OAAO3J,GAAKkwB,KAAI,SAAc8+B,EAAO95B,GAG/C,OADA85B,EAAQmE,GAAenE,IACfqE,GAAQn+B,EAAI,IAAM85B,EAAQ,IAAMA,CAC1C,IAAG98C,KAAKmhD,EAAO,IAAM,IALHrzD,CAMpB,CAaA,MAAMszD,GAAa1b,GAAM4Y,aAAa5Y,GAAO,CAAC,EAAG,MAAM,SAAgBjjB,GACrE,MAAO,WAAW5vC,KAAK4vC,EACzB,IA8JA,SArIA,SAAoBX,EAAKu/B,EAAU1oE,GACjC,IAAK+sD,GAAM8U,SAAS14B,GAClB,MAAM,IAAI2yB,UAAU,4BAItB4M,EAAWA,GAAY,IAAyBhE,SAYhD,MAAMiE,GATN3oE,EAAU+sD,GAAM4Y,aAAa3lE,EAAS,CACpC2oE,YAAY,EACZH,MAAM,EACNI,SAAS,IACR,GAAO,SAAiB/a,EAAQ9nD,GAEjC,OAAQgnD,GAAM0U,YAAY17D,EAAO8nD,GACnC,KAE2B8a,WAErBE,EAAU7oE,EAAQ6oE,SAAWC,EAC7BN,EAAOxoE,EAAQwoE,KACfI,EAAU5oE,EAAQ4oE,QAElBG,GADQ/oE,EAAQgpE,MAAwB,qBAATA,MAAwBA,OACpCjc,GAAMsa,oBAAoBqB,GAEnD,IAAK3b,GAAM4U,WAAWkH,GACpB,MAAM,IAAI/M,UAAU,8BAGtB,SAASmN,EAAatqE,GACpB,GAAc,OAAVA,EAAgB,MAAO,GAE3B,GAAIouD,GAAMgV,OAAOpjE,GACf,OAAOA,EAAMuqE,cAGf,IAAKH,GAAWhc,GAAMkV,OAAOtjE,GAC3B,MAAM,IAAI+oE,GAAW,gDAGvB,OAAI3a,GAAM2U,cAAc/iE,IAAUouD,GAAMgW,aAAapkE,GAC5CoqE,GAA2B,oBAATC,KAAsB,IAAIA,KAAK,CAACrqE,IAAUwqE,OAAO50B,KAAK51C,GAG1EA,CACT,CAYA,SAASmqE,EAAenqE,EAAOwW,EAAKk4B,GAClC,IAAI64B,EAAMvnE,EAEV,GAAIA,IAAU0uC,GAAyB,kBAAV1uC,EAC3B,GAAIouD,GAAMxb,SAASp8B,EAAK,MAEtBA,EAAMwzD,EAAaxzD,EAAMA,EAAItb,MAAM,GAAI,GAEvC8E,EAAQyiC,KAAKC,UAAU1iC,QAClB,GACJouD,GAAMjtD,QAAQnB,IAnGvB,SAAqBunE,GACnB,OAAOnZ,GAAMjtD,QAAQomE,KAASA,EAAIl6B,KAAKq8B,GACzC,CAiGiCe,CAAYzqE,KACnCouD,GAAMmV,WAAWvjE,IAAUouD,GAAMxb,SAASp8B,EAAK,SAAW+wD,EAAMnZ,GAAMxnB,QAAQ5mC,IAYhF,OATAwW,EAAMmzD,GAAenzD,GAErB+wD,EAAI3sE,SAAQ,SAAcwmC,EAAIvY,IAC1BulC,GAAM0U,YAAY1hC,IAAc,OAAPA,GAAgB2oC,EAASjP,QAEtC,IAAZmP,EAAmBL,GAAU,CAACpzD,GAAMqS,EAAOghD,GAAqB,OAAZI,EAAmBzzD,EAAMA,EAAM,KACnF8zD,EAAalpC,GAEjB,KACO,EAIX,QAAIsoC,GAAY1pE,KAIhB+pE,EAASjP,OAAO8O,GAAUl7B,EAAMl4B,EAAKqzD,GAAOS,EAAatqE,KAElD,EACT,CAEA,MAAMzC,EAAQ,GAERmtE,EAAiBpxE,OAAO8D,OAAO0sE,GAAY,CAC/CK,iBACAG,eACAZ,iBAyBF,IAAKtb,GAAM8U,SAAS14B,GAClB,MAAM,IAAI2yB,UAAU,0BAKtB,OA5BA,SAASwN,EAAM3qE,EAAO0uC,GACpB,IAAI0f,GAAM0U,YAAY9iE,GAAtB,CAEA,IAA8B,IAA1BzC,EAAM0I,QAAQjG,GAChB,MAAM1C,MAAM,kCAAoCoxC,EAAKhmB,KAAK,MAG5DnrB,EAAMiL,KAAKxI,GAEXouD,GAAMxzD,QAAQoF,GAAO,SAAcohC,EAAI5qB,IAKtB,OAJE43C,GAAM0U,YAAY1hC,IAAc,OAAPA,IAAgB8oC,EAAQ5uE,KAChEyuE,EAAU3oC,EAAIgtB,GAAM9P,SAAS9nC,GAAOA,EAAIhZ,OAASgZ,EAAKk4B,EAAMg8B,KAI5DC,EAAMvpC,EAAIsN,EAAOA,EAAKvuB,OAAO3J,GAAO,CAACA,GAEzC,IAEAjZ,EAAM6qC,KAlB8B,CAmBtC,CAMAuiC,CAAMngC,GAECu/B,CACT,EC5MA,SAASa,GAAOhlB,GACd,MAAMilB,EAAU,CACd,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,IAAK,MACL,MAAO,IACP,MAAO,MAET,OAAOnyE,mBAAmBktD,GAAKhqD,QAAQ,oBAAoB,SAAkB6B,GAC3E,OAAOotE,EAAQptE,EACjB,GACF,CAUA,SAASqtE,GAAqB92B,EAAQ3yC,GACpCpH,KAAK8wE,OAAS,GAEd/2B,GAAUg3B,GAAWh3B,EAAQ/5C,KAAMoH,EACrC,CAEA,MAAM9H,GAAYuxE,GAAqBvxE,UAEvCA,GAAUuhE,OAAS,SAAgBx8D,EAAM0B,GACvC/F,KAAK8wE,OAAOviE,KAAK,CAAClK,EAAM0B,GAC1B,EAEAzG,GAAUgJ,SAAW,SAAkB0oE,GACrC,MAAMC,EAAUD,EAAU,SAASjrE,GACjC,OAAOirE,EAAQ3vE,KAAKrB,KAAM+F,EAAO4qE,GACnC,EAAIA,GAEJ,OAAO3wE,KAAK8wE,OAAOrkC,KAAI,SAAc+gC,GACnC,OAAOyD,EAAQzD,EAAK,IAAM,IAAMyD,EAAQzD,EAAK,GAC/C,GAAG,IAAI/+C,KAAK,IACd,EAEA,YC5CA,SAASkiD,GAAOrX,GACd,OAAO76D,mBAAmB66D,GACxB33D,QAAQ,QAAS,KACjBA,QAAQ,OAAQ,KAChBA,QAAQ,QAAS,KACjBA,QAAQ,OAAQ,KAChBA,QAAQ,QAAS,KACjBA,QAAQ,QAAS,IACrB,CAWe,SAASuvE,GAASlxD,EAAK+5B,EAAQ3yC,GAE5C,IAAK2yC,EACH,OAAO/5B,EAGT,MAAMixD,EAAU7pE,GAAWA,EAAQupE,QAAUA,GAEvCQ,EAAc/pE,GAAWA,EAAQgqE,UAEvC,IAAIC,EAUJ,GAPEA,EADEF,EACiBA,EAAYp3B,EAAQ3yC,GAEpB+sD,GAAMoV,kBAAkBxvB,GACzCA,EAAOzxC,WACP,IAAIuoE,GAAqB92B,EAAQ3yC,GAASkB,SAAS2oE,GAGnDI,EAAkB,CACpB,MAAMC,EAAgBtxD,EAAIhU,QAAQ,MAEX,IAAnBslE,IACFtxD,EAAMA,EAAI/e,MAAM,EAAGqwE,IAErBtxD,KAA8B,IAAtBA,EAAIhU,QAAQ,KAAc,IAAM,KAAOqlE,CACjD,CAEA,OAAOrxD,CACT,CCQA,SAlEA,MACE3a,WAAAA,GACErF,KAAKuxE,SAAW,EAClB,CAUAtQ,GAAAA,CAAIuQ,EAAWC,EAAUrqE,GAOvB,OANApH,KAAKuxE,SAAShjE,KAAK,CACjBijE,YACAC,WACAC,cAAatqE,GAAUA,EAAQsqE,YAC/BC,QAASvqE,EAAUA,EAAQuqE,QAAU,OAEhC3xE,KAAKuxE,SAAS/yE,OAAS,CAChC,CASAozE,KAAAA,CAAMp7D,GACAxW,KAAKuxE,SAAS/6D,KAChBxW,KAAKuxE,SAAS/6D,GAAM,KAExB,CAOAq7D,KAAAA,GACM7xE,KAAKuxE,WACPvxE,KAAKuxE,SAAW,GAEpB,CAYA5wE,OAAAA,CAAQyxC,GACN+hB,GAAMxzD,QAAQX,KAAKuxE,UAAU,SAAwBttE,GACzC,OAANA,GACFmuC,EAAGnuC,EAEP,GACF,GCjEF,IACE6tE,mBAAmB,EACnBC,mBAAmB,EACnBC,qBAAqB,GCDvB,IACEC,WAAW,EACXC,QAAS,CACPC,gBCJsC,qBAApBA,gBAAkCA,gBAAkBtB,GDKtE/E,SEN+B,qBAAbA,SAA2BA,SAAW,KFOxDsE,KGP2B,qBAATA,KAAuBA,KAAO,MHSlDgC,UAAW,CAAC,OAAQ,QAAS,OAAQ,OAAQ,MAAO,SIXhDC,GAAkC,qBAAXpzE,QAA8C,qBAAbC,SAExDozE,GAAkC,kBAAd5jC,WAA0BA,gBAAasB,EAmB3DuiC,GAAwBF,MAC1BC,IAAc,CAAC,cAAe,eAAgB,MAAMtmE,QAAQsmE,GAAWE,SAAW,GAWhFC,GAE2B,qBAAtBC,mBAEPp/B,gBAAgBo/B,mBACc,oBAAvBp/B,KAAKq/B,cAIVj9B,GAAS28B,IAAiBpzE,OAAO0d,SAAS6F,MAAQ,mBCvCxD,OACK2xC,KACAye,ICyFL,SA9CA,SAAwB9C,GACtB,SAAS+C,EAAUp+B,EAAM1uC,EAAO4H,EAAQihB,GACtC,IAAIvqB,EAAOowC,EAAK7lB,KAEhB,GAAa,cAATvqB,EAAsB,OAAO,EAEjC,MAAMyuE,EAAenc,OAAO2X,UAAUjqE,GAChC0uE,EAASnkD,GAAS6lB,EAAKj2C,OAG7B,GAFA6F,GAAQA,GAAQ8vD,GAAMjtD,QAAQyG,GAAUA,EAAOnP,OAAS6F,EAEpD0uE,EAOF,OANI5e,GAAMwZ,WAAWhgE,EAAQtJ,GAC3BsJ,EAAOtJ,GAAQ,CAACsJ,EAAOtJ,GAAO0B,GAE9B4H,EAAOtJ,GAAQ0B,GAGT+sE,EAGLnlE,EAAOtJ,IAAU8vD,GAAM8U,SAASt7D,EAAOtJ,MAC1CsJ,EAAOtJ,GAAQ,IASjB,OANewuE,EAAUp+B,EAAM1uC,EAAO4H,EAAOtJ,GAAOuqB,IAEtCulC,GAAMjtD,QAAQyG,EAAOtJ,MACjCsJ,EAAOtJ,GA/Cb,SAAuBipE,GACrB,MAAM/8B,EAAM,CAAC,EACPrkC,EAAO7M,OAAO6M,KAAKohE,GACzB,IAAI77B,EACJ,MAAMo4B,EAAM39D,EAAK1N,OACjB,IAAI+d,EACJ,IAAKk1B,EAAI,EAAGA,EAAIo4B,EAAKp4B,IACnBl1B,EAAMrQ,EAAKulC,GACXlB,EAAIh0B,GAAO+wD,EAAI/wD,GAEjB,OAAOg0B,CACT,CAoCqByiC,CAAcrlE,EAAOtJ,MAG9ByuE,CACV,CAEA,GAAI3e,GAAMyX,WAAWkE,IAAa3b,GAAM4U,WAAW+G,EAASxlB,SAAU,CACpE,MAAM/Z,EAAM,CAAC,EAMb,OAJA4jB,GAAMoZ,aAAauC,GAAU,CAACzrE,EAAM0B,KAClC8sE,EA1EN,SAAuBxuE,GAKrB,OAAO8vD,GAAMsZ,SAAS,gBAAiBppE,GAAMooC,KAAIjpC,GAC3B,OAAbA,EAAM,GAAc,GAAKA,EAAM,IAAMA,EAAM,IAEtD,CAkEgByvE,CAAc5uE,GAAO0B,EAAOwqC,EAAK,EAAE,IAGxCA,CACT,CAEA,OAAO,IACT,ECzDA,MAAMg1B,GAAW,CAEf2N,aAAcC,GAEdC,QAAS,CAAC,MAAO,OAAQ,SAEzBC,iBAAkB,CAAC,SAA0Bp4D,EAAMq4D,GACjD,MAAMC,EAAcD,EAAQE,kBAAoB,GAC1CC,EAAqBF,EAAYvnE,QAAQ,qBAAuB,EAChE0nE,EAAkBvf,GAAM8U,SAAShuD,GAEnCy4D,GAAmBvf,GAAMmW,WAAWrvD,KACtCA,EAAO,IAAI6wD,SAAS7wD,IAKtB,GAFmBk5C,GAAMyX,WAAW3wD,GAGlC,OAAOw4D,EAAqBjrC,KAAKC,UAAUkrC,GAAe14D,IAASA,EAGrE,GAAIk5C,GAAM2U,cAAc7tD,IACtBk5C,GAAMwX,SAAS1wD,IACfk5C,GAAMiY,SAASnxD,IACfk5C,GAAMiV,OAAOnuD,IACbk5C,GAAMkV,OAAOpuD,IACbk5C,GAAMqV,iBAAiBvuD,GAEvB,OAAOA,EAET,GAAIk5C,GAAM4X,kBAAkB9wD,GAC1B,OAAOA,EAAKixD,OAEd,GAAI/X,GAAMoV,kBAAkBtuD,GAE1B,OADAq4D,EAAQM,eAAe,mDAAmD,GACnE34D,EAAK3S,WAGd,IAAIghE,EAEJ,GAAIoK,EAAiB,CACnB,GAAIH,EAAYvnE,QAAQ,sCAAwC,EAC9D,OCvEO,SAA0BiP,EAAM7T,GAC7C,OAAO2pE,GAAW91D,EAAM,IAAI23D,GAASV,QAAQC,gBAAmB9yE,OAAO8D,OAAO,CAC5E8sE,QAAS,SAASlqE,EAAOwW,EAAKk4B,EAAMo/B,GAClC,OAAIjB,GAASkB,QAAU3f,GAAMwX,SAAS5lE,IACpC/F,KAAK6gE,OAAOtkD,EAAKxW,EAAMuC,SAAS,YACzB,GAGFurE,EAAQ3D,eAAe/gE,MAAMnP,KAAMzB,UAC5C,GACC6I,GACL,CD4De2sE,CAAiB94D,EAAMjb,KAAKg0E,gBAAgB1rE,WAGrD,IAAKghE,EAAanV,GAAMmV,WAAWruD,KAAUs4D,EAAYvnE,QAAQ,wBAA0B,EAAG,CAC5F,MAAMioE,EAAYj0E,KAAKk0E,KAAOl0E,KAAKk0E,IAAIpI,SAEvC,OAAOiF,GACLzH,EAAa,CAAC,UAAWruD,GAAQA,EACjCg5D,GAAa,IAAIA,EACjBj0E,KAAKg0E,eAET,CACF,CAEA,OAAIN,GAAmBD,GACrBH,EAAQM,eAAe,oBAAoB,GAxEjD,SAAyBO,EAAUC,EAAQpD,GACzC,GAAI7c,GAAM9P,SAAS8vB,GACjB,IAEE,OADCC,GAAU5rC,KAAKmW,OAAOw1B,GAChBhgB,GAAM5wD,KAAK4wE,EACpB,CAAE,MAAOt0E,GACP,GAAe,gBAAXA,EAAEwE,KACJ,MAAMxE,CAEV,CAGF,OAAQmxE,GAAWxoC,KAAKC,WAAW0rC,EACrC,CA4DaE,CAAgBp5D,IAGlBA,CACT,GAEAq5D,kBAAmB,CAAC,SAA2Br5D,GAC7C,MAAMi4D,EAAelzE,KAAKkzE,cAAgB3N,GAAS2N,aAC7CnB,EAAoBmB,GAAgBA,EAAanB,kBACjDwC,EAAsC,SAAtBv0E,KAAKw0E,aAE3B,GAAIrgB,GAAMuV,WAAWzuD,IAASk5C,GAAMqV,iBAAiBvuD,GACnD,OAAOA,EAGT,GAAIA,GAAQk5C,GAAM9P,SAASppC,KAAW82D,IAAsB/xE,KAAKw0E,cAAiBD,GAAgB,CAChG,MACME,IADoBvB,GAAgBA,EAAapB,oBACPyC,EAEhD,IACE,OAAO/rC,KAAKmW,MAAM1jC,EACpB,CAAE,MAAOpb,GACP,GAAI40E,EAAmB,CACrB,GAAe,gBAAX50E,EAAEwE,KACJ,MAAMyqE,GAAWnzB,KAAK97C,EAAGivE,GAAW4F,iBAAkB10E,KAAM,KAAMA,KAAKgvE,UAEzE,MAAMnvE,CACR,CACF,CACF,CAEA,OAAOob,CACT,GAMA42B,QAAS,EAET8iC,eAAgB,aAChBC,eAAgB,eAEhBC,kBAAmB,EACnBC,eAAgB,EAEhBZ,IAAK,CACHpI,SAAU8G,GAASV,QAAQpG,SAC3BsE,KAAMwC,GAASV,QAAQ9B,MAGzB2E,eAAgB,SAAwBt4B,GACtC,OAAOA,GAAU,KAAOA,EAAS,GACnC,EAEA62B,QAAS,CACP0B,OAAQ,CACN,OAAU,oCACV,oBAAgBhlC,KAKtBmkB,GAAMxzD,QAAQ,CAAC,SAAU,MAAO,OAAQ,OAAQ,MAAO,UAAWs0E,IAChE1P,GAAS+N,QAAQ2B,GAAU,CAAC,CAAC,IAG/B,YE1JMC,GAAoB/gB,GAAM2Z,YAAY,CAC1C,MAAO,gBAAiB,iBAAkB,eAAgB,OAC1D,UAAW,OAAQ,OAAQ,oBAAqB,sBAChD,gBAAiB,WAAY,eAAgB,sBAC7C,UAAW,cAAe,eCLtBqH,GAAanzE,OAAO,aAE1B,SAASozE,GAAgBC,GACvB,OAAOA,GAAU74D,OAAO64D,GAAQ9xE,OAAO3C,aACzC,CAEA,SAAS00E,GAAevvE,GACtB,OAAc,IAAVA,GAA4B,MAATA,EACdA,EAGFouD,GAAMjtD,QAAQnB,GAASA,EAAM0mC,IAAI6oC,IAAkB94D,OAAOzW,EACnE,CAgBA,SAASwvE,GAAiB7kD,EAAS3qB,EAAOsvE,EAAQ77B,EAAQg8B,GACxD,OAAIrhB,GAAM4U,WAAWvvB,GACZA,EAAOn4C,KAAKrB,KAAM+F,EAAOsvE,IAG9BG,IACFzvE,EAAQsvE,GAGLlhB,GAAM9P,SAASt+C,GAEhBouD,GAAM9P,SAAS7K,IACiB,IAA3BzzC,EAAMiG,QAAQwtC,GAGnB2a,GAAMoW,SAAS/wB,GACVA,EAAOl4C,KAAKyE,QADrB,OANA,EASF,CAsBA,MAAM0vE,GACJpwE,WAAAA,CAAYiuE,GACVA,GAAWtzE,KAAK6D,IAAIyvE,EACtB,CAEAzvE,GAAAA,CAAIwxE,EAAQK,EAAgBC,GAC1B,MAAMriC,EAAOtzC,KAEb,SAAS41E,EAAUC,EAAQC,EAASC,GAClC,MAAMC,EAAUZ,GAAgBU,GAEhC,IAAKE,EACH,MAAM,IAAI3yE,MAAM,0CAGlB,MAAMkZ,EAAM43C,GAAM2V,QAAQx2B,EAAM0iC,KAE5Bz5D,QAAqByzB,IAAdsD,EAAK/2B,KAAmC,IAAbw5D,QAAmC/lC,IAAb+lC,IAAwC,IAAdziC,EAAK/2B,MACzF+2B,EAAK/2B,GAAOu5D,GAAWR,GAAeO,GAE1C,CAEA,MAAMI,EAAaA,CAAC3C,EAASyC,IAC3B5hB,GAAMxzD,QAAQ2yE,GAAS,CAACuC,EAAQC,IAAYF,EAAUC,EAAQC,EAASC,KAEzE,GAAI5hB,GAAM+U,cAAcmM,IAAWA,aAAkBr1E,KAAKqF,YACxD4wE,EAAWZ,EAAQK,QACd,GAAGvhB,GAAM9P,SAASgxB,KAAYA,EAASA,EAAO9xE,UArEtB,iCAAiCjC,KAqEmB+zE,EArEV9xE,QAsEvE0yE,ED1EN,CAAeC,IACb,MAAMC,EAAS,CAAC,EAChB,IAAI55D,EACA+8C,EACA7nB,EAsBJ,OApBAykC,GAAcA,EAAWx1E,MAAM,MAAMC,SAAQ,SAAgBy1E,GAC3D3kC,EAAI2kC,EAAKpqE,QAAQ,KACjBuQ,EAAM65D,EAAKhqE,UAAU,EAAGqlC,GAAGluC,OAAO3C,cAClC04D,EAAM8c,EAAKhqE,UAAUqlC,EAAI,GAAGluC,QAEvBgZ,GAAQ45D,EAAO55D,IAAQ24D,GAAkB34D,KAIlC,eAARA,EACE45D,EAAO55D,GACT45D,EAAO55D,GAAKhO,KAAK+qD,GAEjB6c,EAAO55D,GAAO,CAAC+8C,GAGjB6c,EAAO55D,GAAO45D,EAAO55D,GAAO45D,EAAO55D,GAAO,KAAO+8C,EAAMA,EAE3D,IAEO6c,CACR,EC+CgBE,CAAahB,GAASK,QAC5B,GAAIvhB,GAAMwV,UAAU0L,GACzB,IAAK,MAAO94D,EAAKxW,KAAUsvE,EAAO/qB,UAChCsrB,EAAU7vE,EAAOwW,EAAKo5D,QAGd,MAAVN,GAAkBO,EAAUF,EAAgBL,EAAQM,GAGtD,OAAO31E,IACT,CAEAsF,GAAAA,CAAI+vE,EAAQjB,GAGV,GAFAiB,EAASD,GAAgBC,GAEb,CACV,MAAM94D,EAAM43C,GAAM2V,QAAQ9pE,KAAMq1E,GAEhC,GAAI94D,EAAK,CACP,MAAMxW,EAAQ/F,KAAKuc,GAEnB,IAAK63D,EACH,OAAOruE,EAGT,IAAe,IAAXquE,EACF,OA5GV,SAAqBzoB,GACnB,MAAMY,EAASltD,OAAOk3B,OAAO,MACvB+/C,EAAW,mCACjB,IAAI9yE,EAEJ,KAAQA,EAAQ8yE,EAASjb,KAAK1P,IAC5BY,EAAO/oD,EAAM,IAAMA,EAAM,GAG3B,OAAO+oD,CACT,CAkGiBgqB,CAAYxwE,GAGrB,GAAIouD,GAAM4U,WAAWqL,GACnB,OAAOA,EAAO/yE,KAAKrB,KAAM+F,EAAOwW,GAGlC,GAAI43C,GAAMoW,SAAS6J,GACjB,OAAOA,EAAO/Y,KAAKt1D,GAGrB,MAAM,IAAIm9D,UAAU,yCACtB,CACF,CACF,CAEAz8C,GAAAA,CAAI4uD,EAAQl7B,GAGV,GAFAk7B,EAASD,GAAgBC,GAEb,CACV,MAAM94D,EAAM43C,GAAM2V,QAAQ9pE,KAAMq1E,GAEhC,SAAU94D,QAAqByzB,IAAdhwC,KAAKuc,IAAwB49B,IAAWo7B,GAAiBv1E,EAAMA,KAAKuc,GAAMA,EAAK49B,GAClG,CAEA,OAAO,CACT,CAEAxlC,OAAO0gE,EAAQl7B,GACb,MAAM7G,EAAOtzC,KACb,IAAIw2E,GAAU,EAEd,SAASC,EAAaX,GAGpB,GAFAA,EAAUV,GAAgBU,GAEb,CACX,MAAMv5D,EAAM43C,GAAM2V,QAAQx2B,EAAMwiC,IAE5Bv5D,GAAS49B,IAAWo7B,GAAiBjiC,EAAMA,EAAK/2B,GAAMA,EAAK49B,YACtD7G,EAAK/2B,GAEZi6D,GAAU,EAEd,CACF,CAQA,OANIriB,GAAMjtD,QAAQmuE,GAChBA,EAAO10E,QAAQ81E,GAEfA,EAAapB,GAGRmB,CACT,CAEA3E,KAAAA,CAAM13B,GACJ,MAAMjuC,EAAO7M,OAAO6M,KAAKlM,MACzB,IAAIyxC,EAAIvlC,EAAK1N,OACTg4E,GAAU,EAEd,KAAO/kC,KAAK,CACV,MAAMl1B,EAAMrQ,EAAKulC,GACb0I,IAAWo7B,GAAiBv1E,EAAMA,KAAKuc,GAAMA,EAAK49B,GAAS,YACtDn6C,KAAKuc,GACZi6D,GAAU,EAEd,CAEA,OAAOA,CACT,CAEAE,SAAAA,CAAUld,GACR,MAAMlmB,EAAOtzC,KACPszE,EAAU,CAAC,EAsBjB,OApBAnf,GAAMxzD,QAAQX,MAAM,CAAC+F,EAAOsvE,KAC1B,MAAM94D,EAAM43C,GAAM2V,QAAQwJ,EAAS+B,GAEnC,GAAI94D,EAGF,OAFA+2B,EAAK/2B,GAAO+4D,GAAevvE,eACpButC,EAAK+hC,GAId,MAAMsB,EAAand,EA9JzB,SAAsB6b,GACpB,OAAOA,EAAO9xE,OACX3C,cAAce,QAAQ,mBAAmB,CAAC4lB,EAAGY,EAAMwjC,IAC3CxjC,EAAKpnB,cAAgB4qD,GAElC,CAyJkCirB,CAAavB,GAAU74D,OAAO64D,GAAQ9xE,OAE9DozE,IAAetB,UACV/hC,EAAK+hC,GAGd/hC,EAAKqjC,GAAcrB,GAAevvE,GAElCutE,EAAQqD,IAAc,CAAI,IAGrB32E,IACT,CAEAkmB,MAAAA,GAAmB,QAAAo+B,EAAA/lD,UAAAC,OAATq4E,EAAO,IAAA5vE,MAAAq9C,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAPsyB,EAAOtyB,GAAAhmD,UAAAgmD,GACf,OAAOvkD,KAAKqF,YAAY6gB,OAAOlmB,QAAS62E,EAC1C,CAEA/oB,MAAAA,CAAOgpB,GACL,MAAMvmC,EAAMlxC,OAAOk3B,OAAO,MAM1B,OAJA49B,GAAMxzD,QAAQX,MAAM,CAAC+F,EAAOsvE,KACjB,MAATtvE,IAA2B,IAAVA,IAAoBwqC,EAAI8kC,GAAUyB,GAAa3iB,GAAMjtD,QAAQnB,GAASA,EAAM0oB,KAAK,MAAQ1oB,EAAM,IAG3GwqC,CACT,CAEA,CAACvuC,OAAOe,YACN,OAAO1D,OAAOirD,QAAQtqD,KAAK8tD,UAAU9rD,OAAOe,WAC9C,CAEAuF,QAAAA,GACE,OAAOjJ,OAAOirD,QAAQtqD,KAAK8tD,UAAUrhB,KAAI+H,IAAA,IAAE6gC,EAAQtvE,GAAMyuC,EAAA,OAAK6gC,EAAS,KAAOtvE,CAAK,IAAE0oB,KAAK,KAC5F,CAEA,IAAKzsB,OAAOswC,eACV,MAAO,cACT,CAEA,WAAOqJ,CAAK+sB,GACV,OAAOA,aAAiB1oE,KAAO0oE,EAAQ,IAAI1oE,KAAK0oE,EAClD,CAEA,aAAOxiD,CAAOsyB,GACZ,MAAMu+B,EAAW,IAAI/2E,KAAKw4C,GAAO,QAAA0L,EAAA3lD,UAAAC,OADXq4E,EAAO,IAAA5vE,MAAAi9C,EAAA,EAAAA,EAAA,KAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAPyyB,EAAOzyB,EAAA,GAAA7lD,UAAA6lD,GAK7B,OAFAyyB,EAAQl2E,SAASgN,GAAWopE,EAASlzE,IAAI8J,KAElCopE,CACT,CAEA,eAAOC,CAAS3B,GACd,MAIM4B,GAJYj3E,KAAKm1E,IAAen1E,KAAKm1E,IAAc,CACvD8B,UAAW,CAAC,IAGcA,UACtB33E,EAAYU,KAAKV,UAEvB,SAAS43E,EAAepB,GACtB,MAAME,EAAUZ,GAAgBU,GAE3BmB,EAAUjB,MAtNrB,SAAwBzlC,EAAK8kC,GAC3B,MAAM8B,EAAehjB,GAAM+Z,YAAY,IAAMmH,GAE7C,CAAC,MAAO,MAAO,OAAO10E,SAAQy2E,IAC5B/3E,OAAOuE,eAAe2sC,EAAK6mC,EAAaD,EAAc,CACpDpxE,MAAO,SAASsxE,EAAMC,EAAMC,GAC1B,OAAOv3E,KAAKo3E,GAAY/1E,KAAKrB,KAAMq1E,EAAQgC,EAAMC,EAAMC,EACzD,EACAhyE,cAAc,GACd,GAEN,CA4MQiyE,CAAel4E,EAAWw2E,GAC1BmB,EAAUjB,IAAW,EAEzB,CAIA,OAFA7hB,GAAMjtD,QAAQmuE,GAAUA,EAAO10E,QAAQu2E,GAAkBA,EAAe7B,GAEjEr1E,IACT,EAGFy1E,GAAauB,SAAS,CAAC,eAAgB,iBAAkB,SAAU,kBAAmB,aAAc,kBAGpG7iB,GAAMqW,kBAAkBiL,GAAan2E,WAAW,CAAAmrD,EAAUluC,KAAQ,IAAjB,MAACxW,GAAM0kD,EAClDgtB,EAASl7D,EAAI,GAAGxb,cAAgBwb,EAAItb,MAAM,GAC9C,MAAO,CACLqE,IAAKA,IAAMS,EACXlC,GAAAA,CAAI6zE,GACF13E,KAAKy3E,GAAUC,CACjB,EACD,IAGHvjB,GAAMyZ,cAAc6H,IAEpB,YC/Re,SAASkC,GAAcC,EAAK5I,GACzC,MAAMD,EAAS/uE,MAAQulE,GACjB70C,EAAUs+C,GAAYD,EACtBuE,EAAUmC,GAAa95B,KAAKjrB,EAAQ4iD,SAC1C,IAAIr4D,EAAOyV,EAAQzV,KAQnB,OANAk5C,GAAMxzD,QAAQi3E,GAAK,SAAmBxlC,GACpCn3B,EAAOm3B,EAAG/wC,KAAK0tE,EAAQ9zD,EAAMq4D,EAAQoD,YAAa1H,EAAWA,EAASvyB,YAASzM,EACjF,IAEAsjC,EAAQoD,YAEDz7D,CACT,CCzBe,SAAS48D,GAAS9xE,GAC/B,SAAUA,IAASA,EAAM+xE,WAC3B,CCUA,SAASC,GAAcp9C,EAASo0C,EAAQj8B,GAEtCg8B,GAAWztE,KAAKrB,KAAiB,MAAX26B,EAAkB,WAAaA,EAASm0C,GAAWkJ,aAAcjJ,EAAQj8B,GAC/F9yC,KAAKqE,KAAO,eACd,CAEA8vD,GAAM0Y,SAASkL,GAAejJ,GAAY,CACxCgJ,YAAY,IAGd,YCXe,SAASG,GAAO1uD,EAASopB,EAAQq8B,GAC9C,MAAM+F,EAAiB/F,EAASD,OAAOgG,eAClC/F,EAASvyB,QAAWs4B,IAAkBA,EAAe/F,EAASvyB,QAGjE9J,EAAO,IAAIm8B,GACT,mCAAqCE,EAASvyB,OAC9C,CAACqyB,GAAWoJ,gBAAiBpJ,GAAW4F,kBAAkBviE,KAAKk9B,MAAM2/B,EAASvyB,OAAS,KAAO,GAC9FuyB,EAASD,OACTC,EAASl8B,QACTk8B,IAPFzlD,EAAQylD,EAUZ,CC4BA,SA9CA,SAAqBmJ,EAAch1D,GACjCg1D,EAAeA,GAAgB,GAC/B,MAAMC,EAAQ,IAAInxE,MAAMkxE,GAClBE,EAAa,IAAIpxE,MAAMkxE,GAC7B,IAEIG,EAFAjmC,EAAO,EACPnT,EAAO,EAKX,OAFA/b,OAAc6sB,IAAR7sB,EAAoBA,EAAM,IAEzB,SAAco1D,GACnB,MAAM7/D,EAAMD,KAAKC,MAEX8/D,EAAYH,EAAWn5C,GAExBo5C,IACHA,EAAgB5/D,GAGlB0/D,EAAM/lC,GAAQkmC,EACdF,EAAWhmC,GAAQ35B,EAEnB,IAAI+4B,EAAIvS,EACJu5C,EAAa,EAEjB,KAAOhnC,IAAMY,GACXomC,GAAcL,EAAM3mC,KACpBA,GAAQ0mC,EASV,GANA9lC,GAAQA,EAAO,GAAK8lC,EAEhB9lC,IAASnT,IACXA,GAAQA,EAAO,GAAKi5C,GAGlBz/D,EAAM4/D,EAAgBn1D,EACxB,OAGF,MAAMu1D,EAASF,GAAa9/D,EAAM8/D,EAElC,OAAOE,EAASvmE,KAAKwmE,MAAmB,IAAbF,EAAoBC,QAAU1oC,CAC3D,CACF,ECTA,SArCA,SAAkBoC,EAAIwmC,GACpB,IAEIC,EACAC,EAHAC,EAAY,EACZC,EAAY,IAAOJ,EAIvB,MAAMK,EAAS,SAAC90B,GAA2B,IAArBzrC,EAAGna,UAAAC,OAAA,QAAAwxC,IAAAzxC,UAAA,GAAAA,UAAA,GAAGka,KAAKC,MAC/BqgE,EAAYrgE,EACZmgE,EAAW,KACPC,IACF5vD,aAAa4vD,GACbA,EAAQ,MAEV1mC,EAAGjjC,MAAM,KAAMg1C,EACjB,EAoBA,MAAO,CAlBW,WAChB,MAAMzrC,EAAMD,KAAKC,MACXggE,EAAShgE,EAAMqgE,EAAU,QAAAz0B,EAAA/lD,UAAAC,OAFX2lD,EAAI,IAAAl9C,MAAAq9C,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJJ,EAAII,GAAAhmD,UAAAgmD,GAGnBm0B,GAAUM,EACbC,EAAO90B,EAAMzrC,IAEbmgE,EAAW10B,EACN20B,IACHA,EAAQ9vD,YAAW,KACjB8vD,EAAQ,KACRG,EAAOJ,EAAS,GACfG,EAAYN,IAGrB,EAEcQ,IAAML,GAAYI,EAAOJ,GAGzC,ECrCaM,GAAuB,SAAC7yD,EAAU8yD,GAA+B,IAAbR,EAAIr6E,UAAAC,OAAA,QAAAwxC,IAAAzxC,UAAA,GAAAA,UAAA,GAAG,EAClE86E,EAAgB,EACpB,MAAMC,EAAeC,GAAY,GAAI,KAErC,OAAOC,IAAS35E,IACd,MAAM4+D,EAAS5+D,EAAE4+D,OACXgb,EAAQ55E,EAAE65E,iBAAmB75E,EAAE45E,WAAQzpC,EACvC2pC,EAAgBlb,EAAS4a,EACzBO,EAAON,EAAaK,GAG1BN,EAAgB5a,EAchBn4C,EAZa,CACXm4C,SACAgb,QACAI,SAAUJ,EAAShb,EAASgb,OAASzpC,EACrCooC,MAAOuB,EACPC,KAAMA,QAAc5pC,EACpB8pC,UAAWF,GAAQH,GAVLhb,GAAUgb,GAUeA,EAAQhb,GAAUmb,OAAO5pC,EAChE3vB,MAAOxgB,EACP65E,iBAA2B,MAATD,EAClB,CAACL,EAAmB,WAAa,WAAW,GAGhC,GACbR,EACL,EAEamB,GAAyBA,CAACN,EAAOO,KAC5C,MAAMN,EAA4B,MAATD,EAEzB,MAAO,CAAEhb,GAAWub,EAAU,GAAG,CAC/BN,mBACAD,QACAhb,WACEub,EAAU,GAAG,EAGNC,GAAkB7nC,GAAO,mBAAAkS,EAAA/lD,UAAAC,OAAI2lD,EAAI,IAAAl9C,MAAAq9C,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJJ,EAAII,GAAAhmD,UAAAgmD,GAAA,OAAK4P,GAAMsX,MAAK,IAAMr5B,KAAM+R,IAAM,ECtChF,GAAeyuB,GAASL,sBAIrB,WACC,MAAM2H,EAAOtH,GAASlkC,WAAa,kBAAkBptC,KAAKsxE,GAASlkC,UAAUyrC,WACvEC,EAAiBl7E,SAASC,cAAc,KAC9C,IAAIk7E,EAQJ,SAASC,EAAWt6D,GAClB,IAAIwC,EAAOxC,EAWX,OATIk6D,IAEFE,EAAe34E,aAAa,OAAQ+gB,GACpCA,EAAO43D,EAAe53D,MAGxB43D,EAAe34E,aAAa,OAAQ+gB,GAG7B,CACLA,KAAM43D,EAAe53D,KACrB+3D,SAAUH,EAAeG,SAAWH,EAAeG,SAAS54E,QAAQ,KAAM,IAAM,GAChF64E,KAAMJ,EAAeI,KACrB56D,OAAQw6D,EAAex6D,OAASw6D,EAAex6D,OAAOje,QAAQ,MAAO,IAAM,GAC3EyyC,KAAMgmC,EAAehmC,KAAOgmC,EAAehmC,KAAKzyC,QAAQ,KAAM,IAAM,GACpEyjE,SAAUgV,EAAehV,SACzBqV,KAAML,EAAeK,KACrBtmC,SAAiD,MAAtCimC,EAAejmC,SAAShoC,OAAO,GACxCiuE,EAAejmC,SACf,IAAMimC,EAAejmC,SAE3B,CAUA,OARAkmC,EAAYC,EAAWr7E,OAAO0d,SAAS6F,MAQhC,SAAyBk4D,GAC9B,MAAMvE,EAAUhiB,GAAM9P,SAASq2B,GAAeJ,EAAWI,GAAcA,EACvE,OAAQvE,EAAOoE,WAAaF,EAAUE,UAClCpE,EAAOqE,OAASH,EAAUG,IAChC,CACF,CAlDC,GAsDQ,WACL,OAAO,CACT,EC9DJ,GAAe5H,GAASL,sBAGtB,CACEoI,KAAAA,CAAMt2E,EAAM0B,EAAO88D,EAASpuB,EAAMiuB,EAAQW,GACxC,MAAMb,EAAS,CAACn+D,EAAO,IAAM5F,mBAAmBsH,IAEhDouD,GAAM6U,SAASnG,IAAYL,EAAOj0D,KAAK,WAAa,IAAIkK,KAAKoqD,GAAS+X,eAEtEzmB,GAAM9P,SAAS5P,IAAS+tB,EAAOj0D,KAAK,QAAUkmC,GAE9C0f,GAAM9P,SAASqe,IAAWF,EAAOj0D,KAAK,UAAYm0D,IAEvC,IAAXW,GAAmBb,EAAOj0D,KAAK,UAE/BrP,SAASsjE,OAASA,EAAO/zC,KAAK,KAChC,EAEAowC,IAAAA,CAAKx6D,GACH,MAAMb,EAAQtE,SAASsjE,OAAOh/D,MAAM,IAAIg3C,OAAO,aAAen2C,EAAO,cACrE,OAAQb,EAAQo3C,mBAAmBp3C,EAAM,IAAM,IACjD,EAEA+/D,MAAAA,CAAOl/D,GACLrE,KAAK26E,MAAMt2E,EAAM,GAAIoU,KAAKC,MAAQ,MACpC,GAMF,CACEiiE,KAAAA,GAAS,EACT9b,KAAIA,IACK,KAET0E,MAAAA,GAAU,GCxBC,SAASsX,GAAcC,EAASC,GAC7C,OAAID,ICHG,8BAA8Bx5E,KDGPy5E,GENjB,SAAqBD,EAASE,GAC3C,OAAOA,EACHF,EAAQn5E,QAAQ,SAAU,IAAM,IAAMq5E,EAAYr5E,QAAQ,OAAQ,IAClEm5E,CACN,CFGWG,CAAYH,EAASC,GAEvBA,CACT,CGfA,MAAMG,GAAmBxS,GAAUA,aAAiB+M,GAAe,IAAK/M,GAAUA,EAWnE,SAASyS,GAAYC,EAASC,GAE3CA,EAAUA,GAAW,CAAC,EACtB,MAAMtM,EAAS,CAAC,EAEhB,SAASuM,EAAe3tE,EAAQR,EAAQo/D,GACtC,OAAIpY,GAAM+U,cAAcv7D,IAAWwmD,GAAM+U,cAAc/7D,GAC9CgnD,GAAMmY,MAAMjrE,KAAK,CAACkrE,YAAW5+D,EAAQR,GACnCgnD,GAAM+U,cAAc/7D,GACtBgnD,GAAMmY,MAAM,CAAC,EAAGn/D,GACdgnD,GAAMjtD,QAAQiG,GAChBA,EAAOlM,QAETkM,CACT,CAGA,SAASouE,EAAoBn9E,EAAGC,EAAGkuE,GACjC,OAAKpY,GAAM0U,YAAYxqE,GAEX81D,GAAM0U,YAAYzqE,QAAvB,EACEk9E,OAAetrC,EAAW5xC,EAAGmuE,GAF7B+O,EAAel9E,EAAGC,EAAGkuE,EAIhC,CAGA,SAASiP,EAAiBp9E,EAAGC,GAC3B,IAAK81D,GAAM0U,YAAYxqE,GACrB,OAAOi9E,OAAetrC,EAAW3xC,EAErC,CAGA,SAASo9E,EAAiBr9E,EAAGC,GAC3B,OAAK81D,GAAM0U,YAAYxqE,GAEX81D,GAAM0U,YAAYzqE,QAAvB,EACEk9E,OAAetrC,EAAW5xC,GAF1Bk9E,OAAetrC,EAAW3xC,EAIrC,CAGA,SAASq9E,EAAgBt9E,EAAGC,EAAG6yC,GAC7B,OAAIA,KAAQmqC,EACHC,EAAel9E,EAAGC,GAChB6yC,KAAQkqC,EACVE,OAAetrC,EAAW5xC,QAD5B,CAGT,CAEA,MAAMu9E,EAAW,CACf37D,IAAKw7D,EACLvG,OAAQuG,EACRvgE,KAAMugE,EACNV,QAASW,EACTpI,iBAAkBoI,EAClBnH,kBAAmBmH,EACnBG,iBAAkBH,EAClB5pC,QAAS4pC,EACTI,eAAgBJ,EAChBK,gBAAiBL,EACjBM,cAAeN,EACfrI,QAASqI,EACTjH,aAAciH,EACd9G,eAAgB8G,EAChB7G,eAAgB6G,EAChBO,iBAAkBP,EAClBQ,mBAAoBR,EACpBS,WAAYT,EACZ5G,iBAAkB4G,EAClB3G,cAAe2G,EACfU,eAAgBV,EAChBW,UAAWX,EACXY,UAAWZ,EACXa,WAAYb,EACZc,YAAad,EACbe,WAAYf,EACZgB,iBAAkBhB,EAClB1G,eAAgB2G,EAChBpI,QAASA,CAACl1E,EAAGC,IAAMk9E,EAAoBL,GAAgB98E,GAAI88E,GAAgB78E,IAAI,IASjF,OANA81D,GAAMxzD,QAAQtB,OAAO6M,KAAK7M,OAAO8D,OAAO,CAAC,EAAGi4E,EAASC,KAAW,SAA4BnqC,GAC1F,MAAMo7B,EAAQqP,EAASzqC,IAASqqC,EAC1BmB,EAAcpQ,EAAM8O,EAAQlqC,GAAOmqC,EAAQnqC,GAAOA,GACvDijB,GAAM0U,YAAY6T,IAAgBpQ,IAAUoP,IAAqB3M,EAAO79B,GAAQwrC,EACnF,IAEO3N,CACT,CChGA,SAAgBA,IACd,MAAM4N,EAAYxB,GAAY,CAAC,EAAGpM,GAElC,IAaIwE,GAbA,KAACt4D,EAAI,cAAE8gE,EAAa,eAAEnH,EAAc,eAAED,EAAc,QAAErB,EAAO,KAAEsJ,GAAQD,EAe3E,GAbAA,EAAUrJ,QAAUA,EAAUmC,GAAa95B,KAAK23B,GAEhDqJ,EAAU38D,IAAMkxD,GAAS2J,GAAc8B,EAAU7B,QAAS6B,EAAU38D,KAAM+uD,EAAOh1B,OAAQg1B,EAAO6M,kBAG5FgB,GACFtJ,EAAQzvE,IAAI,gBAAiB,SAC3Bg5E,MAAMD,EAAKE,UAAY,IAAM,KAAOF,EAAKl9D,SAAWimC,SAASlnD,mBAAmBm+E,EAAKl9D,WAAa,MAMlGy0C,GAAMyX,WAAW3wD,GACnB,GAAI23D,GAASL,uBAAyBK,GAASH,+BAC7Ca,EAAQM,oBAAe5jC,QAClB,IAAiD,KAA5CujC,EAAcD,EAAQE,kBAA6B,CAE7D,MAAOlzE,KAASisD,GAAUgnB,EAAcA,EAAY7yE,MAAM,KAAK+rC,KAAI8+B,GAASA,EAAMhoE,SAAQi2C,OAAOujC,SAAW,GAC5GzJ,EAAQM,eAAe,CAACtzE,GAAQ,yBAA0BisD,GAAQ99B,KAAK,MACzE,CAOF,GAAImkD,GAASL,wBACXwJ,GAAiB5nB,GAAM4U,WAAWgT,KAAmBA,EAAgBA,EAAcY,IAE/EZ,IAAoC,IAAlBA,GAA2BiB,GAAgBL,EAAU38D,MAAO,CAEhF,MAAMi9D,EAAYrI,GAAkBD,GAAkBuI,GAAQre,KAAK8V,GAE/DsI,GACF3J,EAAQzvE,IAAI+wE,EAAgBqI,EAEhC,CAGF,OAAON,CACR,EC1CD,GAFwD,qBAAnBQ,gBAEG,SAAUpO,GAChD,OAAO,IAAI3lD,SAAQ,SAA4BG,EAASopB,GACtD,MAAMyqC,EAAUC,GAActO,GAC9B,IAAIuO,EAAcF,EAAQniE,KAC1B,MAAMsiE,EAAiB9H,GAAa95B,KAAKyhC,EAAQ9J,SAASoD,YAC1D,IACI8G,EACAC,EAAiBC,EACjBC,EAAaC,GAHb,aAACpJ,EAAY,iBAAEwH,EAAgB,mBAAEC,GAAsBmB,EAK3D,SAAS5tD,IACPmuD,GAAeA,IACfC,GAAiBA,IAEjBR,EAAQb,aAAea,EAAQb,YAAYsB,YAAYL,GAEvDJ,EAAQU,QAAUV,EAAQU,OAAO7uE,oBAAoB,QAASuuE,EAChE,CAEA,IAAI1qC,EAAU,IAAIqqC,eAOlB,SAASY,IACP,IAAKjrC,EACH,OAGF,MAAMkrC,EAAkBvI,GAAa95B,KACnC,0BAA2B7I,GAAWA,EAAQmrC,yBAahDhG,IAAO,SAAkBlyE,GACvBwjB,EAAQxjB,GACRypB,GACF,IAAG,SAAiBmc,GAClBgH,EAAOhH,GACPnc,GACF,GAfiB,CACfvU,KAHoBu5D,GAAiC,SAAjBA,GAA4C,SAAjBA,EACxC1hC,EAAQk8B,SAA/Bl8B,EAAQorC,aAGRzhC,OAAQ3J,EAAQ2J,OAChBC,WAAY5J,EAAQ4J,WACpB42B,QAAS0K,EACTjP,SACAj8B,YAYFA,EAAU,IACZ,CAlCAA,EAAQqrC,KAAKf,EAAQnI,OAAOl0E,cAAeq8E,EAAQp9D,KAAK,GAGxD8yB,EAAQjB,QAAUurC,EAAQvrC,QAiCtB,cAAeiB,EAEjBA,EAAQirC,UAAYA,EAGpBjrC,EAAQsrC,mBAAqB,WACtBtrC,GAAkC,IAAvBA,EAAQurC,aAQD,IAAnBvrC,EAAQ2J,QAAkB3J,EAAQwrC,aAAwD,IAAzCxrC,EAAQwrC,YAAYtyE,QAAQ,WAKjFgd,WAAW+0D,EACb,EAIFjrC,EAAQyrC,QAAU,WACXzrC,IAILH,EAAO,IAAIm8B,GAAW,kBAAmBA,GAAW0P,aAAczP,EAAQj8B,IAG1EA,EAAU,KACZ,EAGAA,EAAQb,QAAU,WAGhBU,EAAO,IAAIm8B,GAAW,gBAAiBA,GAAW2P,YAAa1P,EAAQj8B,IAGvEA,EAAU,IACZ,EAGAA,EAAQ4rC,UAAY,WAClB,IAAIC,EAAsBvB,EAAQvrC,QAAU,cAAgBurC,EAAQvrC,QAAU,cAAgB,mBAC9F,MAAMqhC,EAAekK,EAAQlK,cAAgBC,GACzCiK,EAAQuB,sBACVA,EAAsBvB,EAAQuB,qBAEhChsC,EAAO,IAAIm8B,GACT6P,EACAzL,EAAalB,oBAAsBlD,GAAW8P,UAAY9P,GAAW0P,aACrEzP,EACAj8B,IAGFA,EAAU,IACZ,OAGgB9C,IAAhBstC,GAA6BC,EAAe3J,eAAe,MAGvD,qBAAsB9gC,GACxBqhB,GAAMxzD,QAAQ48E,EAAezvB,UAAU,SAA0BwL,EAAK/8C,GACpEu2B,EAAQ+rC,iBAAiBtiE,EAAK+8C,EAChC,IAIGnF,GAAM0U,YAAYuU,EAAQtB,mBAC7BhpC,EAAQgpC,kBAAoBsB,EAAQtB,iBAIlCtH,GAAiC,SAAjBA,IAClB1hC,EAAQ0hC,aAAe4I,EAAQ5I,cAI7ByH,KACAyB,EAAmBE,GAAiBzE,GAAqB8C,GAAoB,GAC/EnpC,EAAQ9jC,iBAAiB,WAAY0uE,IAInC1B,GAAoBlpC,EAAQgsC,UAC5BrB,EAAiBE,GAAexE,GAAqB6C,GAEvDlpC,EAAQgsC,OAAO9vE,iBAAiB,WAAYyuE,GAE5C3qC,EAAQgsC,OAAO9vE,iBAAiB,UAAW2uE,KAGzCP,EAAQb,aAAea,EAAQU,UAGjCN,EAAauB,IACNjsC,IAGLH,GAAQosC,GAAUA,EAAOz+E,KAAO,IAAIy3E,GAAc,KAAMhJ,EAAQj8B,GAAWisC,GAC3EjsC,EAAQksC,QACRlsC,EAAU,KAAI,EAGhBsqC,EAAQb,aAAea,EAAQb,YAAY0C,UAAUzB,GACjDJ,EAAQU,SACVV,EAAQU,OAAOoB,QAAU1B,IAAeJ,EAAQU,OAAO9uE,iBAAiB,QAASwuE,KAIrF,MAAMjD,ECvLK,SAAuBv6D,GACpC,MAAMxc,EAAQ,4BAA4B63D,KAAKr7C,GAC/C,OAAOxc,GAASA,EAAM,IAAM,EAC9B,CDoLqB27E,CAAc/B,EAAQp9D,KAEnCu6D,IAAsD,IAA1C3H,GAASR,UAAUpmE,QAAQuuE,GACzC5nC,EAAO,IAAIm8B,GAAW,wBAA0ByL,EAAW,IAAKzL,GAAWoJ,gBAAiBnJ,IAM9Fj8B,EAAQwf,KAAKgrB,GAAe,KAC9B,GACF,EErJA,GA3CuB8B,CAACC,EAASxtC,KAC/B,MAAM,OAACrzC,GAAW6gF,EAAUA,EAAUA,EAAQ7lC,OAAOujC,SAAW,GAEhE,GAAIlrC,GAAWrzC,EAAQ,CACrB,IAEI0gF,EAFAI,EAAa,IAAIC,gBAIrB,MAAMhB,EAAU,SAAUiB,GACxB,IAAKN,EAAS,CACZA,GAAU,EACVrB,IACA,MAAMlyC,EAAM6zC,aAAkBn8E,MAAQm8E,EAASx/E,KAAKw/E,OACpDF,EAAWN,MAAMrzC,aAAemjC,GAAanjC,EAAM,IAAIosC,GAAcpsC,aAAetoC,MAAQsoC,EAAIhR,QAAUgR,GAC5G,CACF,EAEA,IAAImtC,EAAQjnC,GAAW7oB,YAAW,KAChC8vD,EAAQ,KACRyF,EAAQ,IAAIzP,GAAW,WAAWj9B,mBAA0Bi9B,GAAW8P,WAAW,GACjF/sC,GAEH,MAAMgsC,EAAcA,KACdwB,IACFvG,GAAS5vD,aAAa4vD,GACtBA,EAAQ,KACRuG,EAAQ1+E,SAAQm9E,IACdA,EAAOD,YAAcC,EAAOD,YAAYU,GAAWT,EAAO7uE,oBAAoB,QAASsvE,EAAQ,IAEjGc,EAAU,KACZ,EAGFA,EAAQ1+E,SAASm9E,GAAWA,EAAO9uE,iBAAiB,QAASuvE,KAE7D,MAAM,OAACT,GAAUwB,EAIjB,OAFAxB,EAAOD,YAAc,IAAM1pB,GAAMsX,KAAKoS,GAE/BC,CACT,GC3CW2B,GAAc,UAAWC,EAAOC,GAC3C,IAAI9V,EAAM6V,EAAME,WAEhB,IAAKD,GAAa9V,EAAM8V,EAEtB,kBADMD,GAIR,IACI18D,EADA+gD,EAAM,EAGV,KAAOA,EAAM8F,GACX7mD,EAAM+gD,EAAM4b,QACND,EAAMz+E,MAAM8iE,EAAK/gD,GACvB+gD,EAAM/gD,CAEV,EAQM68D,GAAate,gBAAiBue,GAClC,GAAIA,EAAO99E,OAAO+9E,eAEhB,kBADOD,GAIT,MAAME,EAASF,EAAOG,YACtB,IACE,OAAS,CACP,MAAM,KAACzwD,EAAI,MAAEzpB,SAAei6E,EAAOnhB,OACnC,GAAIrvC,EACF,YAEIzpB,CACR,CACF,CAAE,cACMi6E,EAAOjB,QACf,CACF,EAEamB,GAAcA,CAACJ,EAAQH,EAAWQ,EAAYC,KACzD,MAAMr9E,EA3BiBw+D,gBAAiB8e,EAAUV,GAClD,UAAW,MAAMD,KAASG,GAAWQ,SAC5BZ,GAAYC,EAAOC,EAE9B,CAuBmBW,CAAUR,EAAQH,GAEnC,IACInwD,EADA4oD,EAAQ,EAERmI,EAAa1gF,IACV2vB,IACHA,GAAO,EACP4wD,GAAYA,EAASvgF,GACvB,EAGF,OAAO,IAAI2gF,eAAe,CACxB,UAAMC,CAAKnB,GACT,IACE,MAAM,KAAC9vD,EAAI,MAAEzpB,SAAehD,EAASwsB,OAErC,GAAIC,EAGF,OAFD+wD,SACCjB,EAAWoB,QAIb,IAAI7W,EAAM9jE,EAAM65E,WAChB,GAAIO,EAAY,CACd,IAAIQ,EAAcvI,GAASvO,EAC3BsW,EAAWQ,EACb,CACArB,EAAWsB,QAAQ,IAAIvW,WAAWtkE,GACpC,CAAE,MAAO4lC,GAEP,MADA40C,EAAU50C,GACJA,CACR,CACF,EACAozC,OAAOS,IACLe,EAAUf,GACHz8E,EAAS+M,WAEjB,CACD+wE,cAAe,GACf,EC3EEC,GAAoC,oBAAVC,OAA2C,oBAAZC,SAA8C,oBAAbC,SAC1FC,GAA4BJ,IAA8C,oBAAnBN,eAGvDW,GAAaL,KAA4C,oBAAhBM,aACzCpQ,GAA0C,IAAIoQ,YAAjCz1B,GAAQqlB,GAAQL,OAAOhlB,IACtC4V,SAAe,IAAI8I,iBAAiB,IAAI4W,SAASt1B,GAAK01B,gBADtD,IAAErQ,GAIN,MAAM1vE,GAAO,SAAC8wC,GACZ,IAAI,QAAAkS,EAAA/lD,UAAAC,OADe2lD,EAAI,IAAAl9C,MAAAq9C,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJJ,EAAII,EAAA,GAAAhmD,UAAAgmD,GAErB,QAASnS,KAAM+R,EACjB,CAAE,MAAOtkD,GACP,OAAO,CACT,CACF,EAEMyhF,GAAwBJ,IAA6B5/E,IAAK,KAC9D,IAAIigF,GAAiB,EAErB,MAAMC,EAAiB,IAAIR,QAAQpO,GAASl9B,OAAQ,CAClDxvC,KAAM,IAAIs6E,eACVvL,OAAQ,OACR,UAAIwM,GAEF,OADAF,GAAiB,EACV,MACT,IACCjO,QAAQ7sD,IAAI,gBAEf,OAAO86D,IAAmBC,CAAc,IAKpCE,GAAyBR,IAC7B5/E,IAAK,IAAM6yD,GAAMqV,iBAAiB,IAAIyX,SAAS,IAAI/6E,QAG/Cy7E,GAAY,CAChB7B,OAAQ4B,IAA0B,CAAE/2B,GAAQA,EAAIzkD,OAG7B,IAAEykD,GAAvBm2B,KAAuBn2B,GAOpB,IAAIs2B,SANL,CAAC,OAAQ,cAAe,OAAQ,WAAY,UAAUtgF,SAAQL,KAC3DqhF,GAAUrhF,KAAUqhF,GAAUrhF,GAAQ6zD,GAAM4U,WAAWpe,GAAIrqD,IAAUqqD,GAAQA,EAAIrqD,KAChF,CAACg6C,EAAGy0B,KACF,MAAM,IAAID,GAAW,kBAAkBxuE,sBAA0BwuE,GAAW8S,gBAAiB7S,EAAO,EACpG,KAIR,MA8BM8S,GAAoBtgB,MAAO+R,EAASptE,KACxC,MAAM1H,EAAS21D,GAAMka,eAAeiF,EAAQwO,oBAE5C,OAAiB,MAAVtjF,EAjCa+iE,WACpB,GAAY,MAARr7D,EACF,OAAO,EAGT,GAAGiuD,GAAMkV,OAAOnjE,GACd,OAAOA,EAAK45B,KAGd,GAAGq0B,GAAMsa,oBAAoBvoE,GAAO,CAClC,MAAM67E,EAAW,IAAIf,QAAQpO,GAASl9B,OAAQ,CAC5Cu/B,OAAQ,OACR/uE,SAEF,aAAc67E,EAASV,eAAezB,UACxC,CAEA,OAAGzrB,GAAM4X,kBAAkB7lE,IAASiuD,GAAM2U,cAAc5iE,GAC/CA,EAAK05E,YAGXzrB,GAAMoV,kBAAkBrjE,KACzBA,GAAc,IAGbiuD,GAAM9P,SAASn+C,UACFi7E,GAAWj7E,IAAO05E,gBADlC,EAEA,EAMwBoC,CAAc97E,GAAQ1H,CAAM,EAGtD,GAAesiF,IAAoB,OAACvf,IAClC,IAAI,IACFvhD,EAAG,OACHi1D,EAAM,KACNh6D,EAAI,OACJ6iE,EAAM,YACNvB,EAAW,QACX1qC,EAAO,mBACPoqC,EAAkB,iBAClBD,EAAgB,aAChBxH,EAAY,QACZlB,EAAO,gBACPwI,EAAkB,cAAa,aAC/BmG,GACE5E,GAActO,GAElByF,EAAeA,GAAgBA,EAAe,IAAI5zE,cAAgB,OAElE,IAEIkyC,EAFAovC,EAAiB9C,GAAe,CAACtB,EAAQvB,GAAeA,EAAY4F,iBAAkBtwC,GAI1F,MAAMgsC,EAAcqE,GAAkBA,EAAerE,aAAe,MAChEqE,EAAerE,aAClB,GAED,IAAIuE,EAEJ,IACE,GACEpG,GAAoBsF,IAAoC,QAAXrM,GAA+B,SAAXA,GACG,KAAnEmN,QAA6BP,GAAkBvO,EAASr4D,IACzD,CACA,IAMIonE,EANAN,EAAW,IAAIf,QAAQhhE,EAAK,CAC9Bi1D,OAAQ,OACR/uE,KAAM+U,EACNwmE,OAAQ,SASV,GAJIttB,GAAMyX,WAAW3wD,KAAUonE,EAAoBN,EAASzO,QAAQhuE,IAAI,kBACtEguE,EAAQM,eAAeyO,GAGrBN,EAAS77E,KAAM,CACjB,MAAOi6E,EAAYjH,GAASa,GAC1BqI,EACAjJ,GAAqBc,GAAe+B,KAGtC/gE,EAAOilE,GAAY6B,EAAS77E,KA1GT,MA0GmCi6E,EAAYjH,EACpE,CACF,CAEK/kB,GAAM9P,SAASy3B,KAClBA,EAAkBA,EAAkB,UAAY,QAKlD,MAAMwG,EAAyB,gBAAiBtB,QAAQ1hF,UACxDwzC,EAAU,IAAIkuC,QAAQhhE,EAAK,IACtBiiE,EACHnE,OAAQoE,EACRjN,OAAQA,EAAOl0E,cACfuyE,QAASA,EAAQoD,YAAY5oB,SAC7B5nD,KAAM+U,EACNwmE,OAAQ,OACRc,YAAaD,EAAyBxG,OAAkB9rC,IAG1D,IAAIg/B,QAAiB+R,MAAMjuC,GAE3B,MAAM0vC,EAAmBd,KAA4C,WAAjBlN,GAA8C,aAAjBA,GAEjF,GAAIkN,KAA2BzF,GAAuBuG,GAAoB3E,GAAe,CACvF,MAAMz2E,EAAU,CAAC,EAEjB,CAAC,SAAU,aAAc,WAAWzG,SAAQuwC,IAC1C9pC,EAAQ8pC,GAAQ89B,EAAS99B,EAAK,IAGhC,MAAMuxC,EAAwBtuB,GAAMka,eAAeW,EAASsE,QAAQhuE,IAAI,oBAEjE66E,EAAYjH,GAAS+C,GAAsBlC,GAChD0I,EACAtJ,GAAqBc,GAAegC,IAAqB,KACtD,GAELjN,EAAW,IAAIiS,SACbf,GAAYlR,EAAS9oE,KAlJF,MAkJ4Bi6E,GAAY,KACzDjH,GAASA,IACT2E,GAAeA,GAAa,IAE9Bz2E,EAEJ,CAEAotE,EAAeA,GAAgB,OAE/B,IAAIkO,QAAqBf,GAAUxtB,GAAM2V,QAAQ6X,GAAWnN,IAAiB,QAAQxF,EAAUD,GAI/F,OAFCyT,GAAoB3E,GAAeA,UAEvB,IAAIz0D,SAAQ,CAACG,EAASopB,KACjCslC,GAAO1uD,EAASopB,EAAQ,CACtB13B,KAAMynE,EACNpP,QAASmC,GAAa95B,KAAKqzB,EAASsE,SACpC72B,OAAQuyB,EAASvyB,OACjBC,WAAYsyB,EAAStyB,WACrBqyB,SACAj8B,WACA,GAEN,CAAE,MAAOnH,GAGP,GAFAkyC,GAAeA,IAEXlyC,GAAoB,cAAbA,EAAItnC,MAAwB,SAAS/C,KAAKqqC,EAAIhR,SACvD,MAAMt7B,OAAO8D,OACX,IAAI2rE,GAAW,gBAAiBA,GAAW2P,YAAa1P,EAAQj8B,GAChE,CACE08B,MAAO7jC,EAAI6jC,OAAS7jC,IAK1B,MAAMmjC,GAAWnzB,KAAKhQ,EAAKA,GAAOA,EAAIjvB,KAAMqyD,EAAQj8B,EACtD,CACD,GC5NK6vC,GAAgB,CACpBC,KCNF,KDOEC,IAAKC,GACL/B,MAAOgC,IAGT5uB,GAAMxzD,QAAQgiF,IAAe,CAACvwC,EAAIrsC,KAChC,GAAIqsC,EAAI,CACN,IACE/yC,OAAOuE,eAAewuC,EAAI,OAAQ,CAACrsC,SACrC,CAAE,MAAOlG,GACP,CAEFR,OAAOuE,eAAewuC,EAAI,cAAe,CAACrsC,SAC5C,KAGF,MAAMi9E,GAAgBxD,GAAW,KAAKA,IAEhCyD,GAAoB7P,GAAYjf,GAAM4U,WAAWqK,IAAwB,OAAZA,IAAgC,IAAZA,EAEvF,GACe8P,IACXA,EAAW/uB,GAAMjtD,QAAQg8E,GAAYA,EAAW,CAACA,GAEjD,MAAM,OAAC1kF,GAAU0kF,EACjB,IAAIC,EACA/P,EAEJ,MAAMgQ,EAAkB,CAAC,EAEzB,IAAK,IAAI3xC,EAAI,EAAGA,EAAIjzC,EAAQizC,IAAK,CAE/B,IAAIj7B,EAIJ,GALA2sE,EAAgBD,EAASzxC,GAGzB2hC,EAAU+P,GAELF,GAAiBE,KACpB/P,EAAUuP,IAAensE,EAAKgG,OAAO2mE,IAAgBviF,oBAErCovC,IAAZojC,GACF,MAAM,IAAItE,GAAW,oBAAoBt4D,MAI7C,GAAI48D,EACF,MAGFgQ,EAAgB5sE,GAAM,IAAMi7B,GAAK2hC,CACnC,CAEA,IAAKA,EAAS,CAEZ,MAAMiQ,EAAUhkF,OAAOirD,QAAQ84B,GAC5B32C,KAAI+H,IAAA,IAAEh+B,EAAIujB,GAAMya,EAAA,MAAK,WAAWh+B,OACpB,IAAVujB,EAAkB,sCAAwC,gCAAgC,IAG/F,IAAI2X,EAAIlzC,EACL6kF,EAAQ7kF,OAAS,EAAI,YAAc6kF,EAAQ52C,IAAIu2C,IAAcv0D,KAAK,MAAQ,IAAMu0D,GAAaK,EAAQ,IACtG,0BAEF,MAAM,IAAIvU,GACR,wDAA0Dp9B,EAC1D,kBAEJ,CAEA,OAAO0hC,CAAO,EE3DlB,SAASkQ,GAA6BvU,GAKpC,GAJIA,EAAOwN,aACTxN,EAAOwN,YAAYgH,mBAGjBxU,EAAO+O,QAAU/O,EAAO+O,OAAOoB,QACjC,MAAM,IAAInH,GAAc,KAAMhJ,EAElC,CASe,SAASyU,GAAgBzU,GACtCuU,GAA6BvU,GAE7BA,EAAOuE,QAAUmC,GAAa95B,KAAKozB,EAAOuE,SAG1CvE,EAAO9zD,KAAO08D,GAAct2E,KAC1B0tE,EACAA,EAAOsE,mBAGgD,IAArD,CAAC,OAAQ,MAAO,SAASrnE,QAAQ+iE,EAAOkG,SAC1ClG,EAAOuE,QAAQM,eAAe,qCAAqC,GAKrE,OAFgBsP,GAAoBnU,EAAOqE,SAAW7N,GAAS6N,QAExDA,CAAQrE,GAAQvlD,MAAK,SAA6BwlD,GAYvD,OAXAsU,GAA6BvU,GAG7BC,EAAS/zD,KAAO08D,GAAct2E,KAC5B0tE,EACAA,EAAOuF,kBACPtF,GAGFA,EAASsE,QAAUmC,GAAa95B,KAAKqzB,EAASsE,SAEvCtE,CACT,IAAG,SAA4BwQ,GAe7B,OAdK3H,GAAS2H,KACZ8D,GAA6BvU,GAGzByQ,GAAUA,EAAOxQ,WACnBwQ,EAAOxQ,SAAS/zD,KAAO08D,GAAct2E,KACnC0tE,EACAA,EAAOuF,kBACPkL,EAAOxQ,UAETwQ,EAAOxQ,SAASsE,QAAUmC,GAAa95B,KAAK6jC,EAAOxQ,SAASsE,WAIzDlqD,QAAQupB,OAAO6sC,EACxB,GACF,CChFO,MAAMiE,GAAU,QCKjBC,GAAa,CAAC,EAGpB,CAAC,SAAU,UAAW,SAAU,WAAY,SAAU,UAAU/iF,SAAQ,CAACL,EAAMmxC,KAC7EiyC,GAAWpjF,GAAQ,SAAmBooE,GACpC,cAAcA,IAAUpoE,GAAQ,KAAOmxC,EAAI,EAAI,KAAO,KAAOnxC,CAC/D,CAAC,IAGH,MAAMqjF,GAAqB,CAAC,EAW5BD,GAAWxQ,aAAe,SAAsB0Q,EAAW36C,EAAStO,GAClE,SAASkpD,EAAcrnB,EAAKsnB,GAC1B,MAAO,uCAAoDtnB,EAAM,IAAOsnB,GAAQnpD,EAAU,KAAOA,EAAU,GAC7G,CAGA,MAAO,CAAC50B,EAAOy2D,EAAK8C,KAClB,IAAkB,IAAdskB,EACF,MAAM,IAAI9U,GACR+U,EAAcrnB,EAAK,qBAAuBvzB,EAAU,OAASA,EAAU,KACvE6lC,GAAWiV,gBAef,OAXI96C,IAAY06C,GAAmBnnB,KACjCmnB,GAAmBnnB,IAAO,EAE1BzhC,QAAQ6Y,KACNiwC,EACErnB,EACA,+BAAiCvzB,EAAU,8CAK1C26C,GAAYA,EAAU79E,EAAOy2D,EAAK8C,EAAY,CAEzD,EAmCA,UACE0kB,cAxBF,SAAuB58E,EAAS68E,EAAQC,GACtC,GAAuB,kBAAZ98E,EACT,MAAM,IAAI0nE,GAAW,4BAA6BA,GAAWqV,sBAE/D,MAAMj4E,EAAO7M,OAAO6M,KAAK9E,GACzB,IAAIqqC,EAAIvlC,EAAK1N,OACb,KAAOizC,KAAM,GAAG,CACd,MAAM+qB,EAAMtwD,EAAKulC,GACXmyC,EAAYK,EAAOznB,GACzB,GAAIonB,EAAJ,CACE,MAAM79E,EAAQqB,EAAQo1D,GAChB1jB,OAAmB9I,IAAVjqC,GAAuB69E,EAAU79E,EAAOy2D,EAAKp1D,GAC5D,IAAe,IAAX0xC,EACF,MAAM,IAAIg2B,GAAW,UAAYtS,EAAM,YAAc1jB,EAAQg2B,GAAWqV,qBAG5E,MACA,IAAqB,IAAjBD,EACF,MAAM,IAAIpV,GAAW,kBAAoBtS,EAAKsS,GAAWsV,eAE7D,CACF,EAIEV,eC9EIA,GAAaE,GAAUF,WAS7B,MAAMW,GACJh/E,WAAAA,CAAYi/E,GACVtkF,KAAKulE,SAAW+e,EAChBtkF,KAAKukF,aAAe,CAClBzxC,QAAS,IAAI0xC,GACbxV,SAAU,IAAIwV,GAElB,CAUA,aAAM1xC,CAAQ2xC,EAAa1V,GACzB,IACE,aAAa/uE,KAAK+hF,SAAS0C,EAAa1V,EAC1C,CAAE,MAAOpjC,GACP,GAAIA,aAAetoC,MAAO,CACxB,IAAIqhF,EAEJrhF,MAAM4rE,kBAAoB5rE,MAAM4rE,kBAAkByV,EAAQ,CAAC,GAAMA,EAAQ,IAAIrhF,MAG7E,MAAMC,EAAQohF,EAAMphF,MAAQohF,EAAMphF,MAAM3B,QAAQ,QAAS,IAAM,GAC/D,IACOgqC,EAAIroC,MAGEA,IAAUkZ,OAAOmvB,EAAIroC,OAAOq1C,SAASr1C,EAAM3B,QAAQ,YAAa,OACzEgqC,EAAIroC,OAAS,KAAOA,GAHpBqoC,EAAIroC,MAAQA,CAKhB,CAAE,MAAOzD,GACP,CAEJ,CAEA,MAAM8rC,CACR,CACF,CAEAo2C,QAAAA,CAAS0C,EAAa1V,GAGO,kBAAhB0V,GACT1V,EAASA,GAAU,CAAC,GACb/uD,IAAMykE,EAEb1V,EAAS0V,GAAe,CAAC,EAG3B1V,EAASoM,GAAYn7E,KAAKulE,SAAUwJ,GAEpC,MAAM,aAACmE,EAAY,iBAAE0I,EAAgB,QAAEtI,GAAWvE,OAE7B/+B,IAAjBkjC,GACF0Q,GAAUI,cAAc9Q,EAAc,CACpCpB,kBAAmB4R,GAAWxQ,aAAawQ,GAAWiB,SACtD5S,kBAAmB2R,GAAWxQ,aAAawQ,GAAWiB,SACtD3S,oBAAqB0R,GAAWxQ,aAAawQ,GAAWiB,WACvD,GAGmB,MAApB/I,IACEznB,GAAM4U,WAAW6S,GACnB7M,EAAO6M,iBAAmB,CACxBxK,UAAWwK,GAGbgI,GAAUI,cAAcpI,EAAkB,CACxCjL,OAAQ+S,GAAWkB,SACnBxT,UAAWsS,GAAWkB,WACrB,IAKP7V,EAAOkG,QAAUlG,EAAOkG,QAAUj1E,KAAKulE,SAAS0P,QAAU,OAAOr0E,cAGjE,IAAIikF,EAAiBvR,GAAWnf,GAAMmY,MACpCgH,EAAQ0B,OACR1B,EAAQvE,EAAOkG,SAGjB3B,GAAWnf,GAAMxzD,QACf,CAAC,SAAU,MAAO,OAAQ,OAAQ,MAAO,QAAS,WACjDs0E,WACQ3B,EAAQ2B,EAAO,IAI1BlG,EAAOuE,QAAUmC,GAAavvD,OAAO2+D,EAAgBvR,GAGrD,MAAMwR,EAA0B,GAChC,IAAIC,GAAiC,EACrC/kF,KAAKukF,aAAazxC,QAAQnyC,SAAQ,SAAoCqkF,GACjC,oBAAxBA,EAAYrT,UAA0D,IAAhCqT,EAAYrT,QAAQ5C,KAIrEgW,EAAiCA,GAAkCC,EAAYtT,YAE/EoT,EAAwBz8D,QAAQ28D,EAAYxT,UAAWwT,EAAYvT,UACrE,IAEA,MAAMwT,EAA2B,GAKjC,IAAIvyC,EAJJ1yC,KAAKukF,aAAavV,SAASruE,SAAQ,SAAkCqkF,GACnEC,EAAyB12E,KAAKy2E,EAAYxT,UAAWwT,EAAYvT,SACnE,IAGA,IACI5H,EADAp4B,EAAI,EAGR,IAAKszC,EAAgC,CACnC,MAAMG,EAAQ,CAAC1B,GAAgBz8D,KAAK/mB,WAAOgwC,GAO3C,IANAk1C,EAAM78D,QAAQlZ,MAAM+1E,EAAOJ,GAC3BI,EAAM32E,KAAKY,MAAM+1E,EAAOD,GACxBpb,EAAMqb,EAAM1mF,OAEZk0C,EAAUtpB,QAAQG,QAAQwlD,GAEnBt9B,EAAIo4B,GACTn3B,EAAUA,EAAQlpB,KAAK07D,EAAMzzC,KAAMyzC,EAAMzzC,MAG3C,OAAOiB,CACT,CAEAm3B,EAAMib,EAAwBtmF,OAE9B,IAAIm+E,EAAY5N,EAIhB,IAFAt9B,EAAI,EAEGA,EAAIo4B,GAAK,CACd,MAAMsb,EAAcL,EAAwBrzC,KACtC2zC,EAAaN,EAAwBrzC,KAC3C,IACEkrC,EAAYwI,EAAYxI,EAC1B,CAAE,MAAO3hD,GACPoqD,EAAW/jF,KAAKrB,KAAMg7B,GACtB,KACF,CACF,CAEA,IACE0X,EAAU8wC,GAAgBniF,KAAKrB,KAAM28E,EACvC,CAAE,MAAO3hD,GACP,OAAO5R,QAAQupB,OAAO3X,EACxB,CAKA,IAHAyW,EAAI,EACJo4B,EAAMob,EAAyBzmF,OAExBizC,EAAIo4B,GACTn3B,EAAUA,EAAQlpB,KAAKy7D,EAAyBxzC,KAAMwzC,EAAyBxzC,MAGjF,OAAOiB,CACT,CAEA2yC,MAAAA,CAAOtW,GAGL,OAAOmC,GADU2J,IADjB9L,EAASoM,GAAYn7E,KAAKulE,SAAUwJ,IACE+L,QAAS/L,EAAO/uD,KAC5B+uD,EAAOh1B,OAAQg1B,EAAO6M,iBAClD,EAIFznB,GAAMxzD,QAAQ,CAAC,SAAU,MAAO,OAAQ,YAAY,SAA6Bs0E,GAE/EoP,GAAM/kF,UAAU21E,GAAU,SAASj1D,EAAK+uD,GACtC,OAAO/uE,KAAK8yC,QAAQqoC,GAAYpM,GAAU,CAAC,EAAG,CAC5CkG,SACAj1D,MACA/E,MAAO8zD,GAAU,CAAC,GAAG9zD,OAEzB,CACF,IAEAk5C,GAAMxzD,QAAQ,CAAC,OAAQ,MAAO,UAAU,SAA+Bs0E,GAGrE,SAASqQ,EAAmBC,GAC1B,OAAO,SAAoBvlE,EAAK/E,EAAM8zD,GACpC,OAAO/uE,KAAK8yC,QAAQqoC,GAAYpM,GAAU,CAAC,EAAG,CAC5CkG,SACA3B,QAASiS,EAAS,CAChB,eAAgB,uBACd,CAAC,EACLvlE,MACA/E,SAEJ,CACF,CAEAopE,GAAM/kF,UAAU21E,GAAUqQ,IAE1BjB,GAAM/kF,UAAU21E,EAAS,QAAUqQ,GAAmB,EACxD,IAEA,YCxNA,MAAME,GACJngF,WAAAA,CAAYogF,GACV,GAAwB,oBAAbA,EACT,MAAM,IAAIviB,UAAU,gCAGtB,IAAIwiB,EAEJ1lF,KAAK0yC,QAAU,IAAItpB,SAAQ,SAAyBG,GAClDm8D,EAAiBn8D,CACnB,IAEA,MAAMgiD,EAAQvrE,KAGdA,KAAK0yC,QAAQlpB,MAAKu1D,IAChB,IAAKxT,EAAMoa,WAAY,OAEvB,IAAIl0C,EAAI85B,EAAMoa,WAAWnnF,OAEzB,KAAOizC,KAAM,GACX85B,EAAMoa,WAAWl0C,GAAGstC,GAEtBxT,EAAMoa,WAAa,IAAI,IAIzB3lF,KAAK0yC,QAAQlpB,KAAOo8D,IAClB,IAAIC,EAEJ,MAAMnzC,EAAU,IAAItpB,SAAQG,IAC1BgiD,EAAM0T,UAAU11D,GAChBs8D,EAAWt8D,CAAO,IACjBC,KAAKo8D,GAMR,OAJAlzC,EAAQqsC,OAAS,WACfxT,EAAMsS,YAAYgI,EACpB,EAEOnzC,CAAO,EAGhB+yC,GAAS,SAAgB9qD,EAASo0C,EAAQj8B,GACpCy4B,EAAMiU,SAKVjU,EAAMiU,OAAS,IAAIzH,GAAcp9C,EAASo0C,EAAQj8B,GAClD4yC,EAAena,EAAMiU,QACvB,GACF,CAKA+D,gBAAAA,GACE,GAAIvjF,KAAKw/E,OACP,MAAMx/E,KAAKw/E,MAEf,CAMAP,SAAAA,CAAU34D,GACJtmB,KAAKw/E,OACPl5D,EAAStmB,KAAKw/E,QAIZx/E,KAAK2lF,WACP3lF,KAAK2lF,WAAWp3E,KAAK+X,GAErBtmB,KAAK2lF,WAAa,CAACr/D,EAEvB,CAMAu3D,WAAAA,CAAYv3D,GACV,IAAKtmB,KAAK2lF,WACR,OAEF,MAAM/2D,EAAQ5uB,KAAK2lF,WAAW35E,QAAQsa,IACvB,IAAXsI,GACF5uB,KAAK2lF,WAAWr9C,OAAO1Z,EAAO,EAElC,CAEAuzD,aAAAA,GACE,MAAM7C,EAAa,IAAIC,gBAEjBP,EAASrzC,IACb2zC,EAAWN,MAAMrzC,EAAI,EAOvB,OAJA3rC,KAAKi/E,UAAUD,GAEfM,EAAWxB,OAAOD,YAAc,IAAM79E,KAAK69E,YAAYmB,GAEhDM,EAAWxB,MACpB,CAMA,aAAO3wE,GACL,IAAI4xE,EACJ,MAAMxT,EAAQ,IAAIia,IAAY,SAAkBlnF,GAC9CygF,EAASzgF,CACX,IACA,MAAO,CACLitE,QACAwT,SAEJ,EAGF,YCtIA,MAAM+G,GAAiB,CACrBC,SAAU,IACVC,mBAAoB,IACpBC,WAAY,IACZC,WAAY,IACZ5gD,GAAI,IACJ6gD,QAAS,IACTC,SAAU,IACVC,4BAA6B,IAC7BC,UAAW,IACXC,aAAc,IACdC,eAAgB,IAChBC,YAAa,IACbC,gBAAiB,IACjBC,OAAQ,IACRC,gBAAiB,IACjBC,iBAAkB,IAClBC,MAAO,IACPC,SAAU,IACVC,YAAa,IACbC,SAAU,IACVC,OAAQ,IACRC,kBAAmB,IACnBC,kBAAmB,IACnBC,WAAY,IACZC,aAAc,IACdC,gBAAiB,IACjBC,UAAW,IACXC,SAAU,IACVC,iBAAkB,IAClBC,cAAe,IACfC,4BAA6B,IAC7BC,eAAgB,IAChBC,SAAU,IACVC,KAAM,IACNC,eAAgB,IAChBC,mBAAoB,IACpBC,gBAAiB,IACjBC,WAAY,IACZC,qBAAsB,IACtBC,oBAAqB,IACrBC,kBAAmB,IACnBC,UAAW,IACXC,mBAAoB,IACpBC,oBAAqB,IACrBC,OAAQ,IACRC,iBAAkB,IAClBC,SAAU,IACVC,gBAAiB,IACjBC,qBAAsB,IACtBC,gBAAiB,IACjBC,4BAA6B,IAC7BC,2BAA4B,IAC5BC,oBAAqB,IACrBC,eAAgB,IAChBC,WAAY,IACZC,mBAAoB,IACpBC,eAAgB,IAChBC,wBAAyB,IACzBC,sBAAuB,IACvBC,oBAAqB,IACrBC,aAAc,IACdC,YAAa,IACbC,8BAA+B,KAGjCvqF,OAAOirD,QAAQw7B,IAAgBnlF,SAAQ6zC,IAAkB,IAAhBj4B,EAAKxW,GAAMyuC,EAClDsxC,GAAe//E,GAASwW,CAAG,IAG7B,YCxBA,MAAMstE,GAnBN,SAAS1nB,EAAe2nB,GACtB,MAAMp5D,EAAU,IAAI2zD,GAAMyF,GACpBzjE,EAAWU,GAAKs9D,GAAM/kF,UAAUwzC,QAASpiB,GAa/C,OAVAyjC,GAAM7wC,OAAO+C,EAAUg+D,GAAM/kF,UAAWoxB,EAAS,CAACk5C,YAAY,IAG9DzV,GAAM7wC,OAAO+C,EAAUqK,EAAS,KAAM,CAACk5C,YAAY,IAGnDvjD,EAASkQ,OAAS,SAAgB+tD,GAChC,OAAOniB,EAAegZ,GAAY2O,EAAexF,GACnD,EAEOj+D,CACT,CAGc87C,CAAeoD,IAG7BskB,GAAMxF,MAAQA,GAGdwF,GAAM9R,cAAgBA,GACtB8R,GAAMrE,YAAcA,GACpBqE,GAAMhS,SAAWA,GACjBgS,GAAMpG,QAAUA,GAChBoG,GAAM9Y,WAAaA,GAGnB8Y,GAAM/a,WAAaA,GAGnB+a,GAAME,OAASF,GAAM9R,cAGrB8R,GAAM/4C,IAAM,SAAaE,GACvB,OAAO5nB,QAAQ0nB,IAAIE,EACrB,EAEA64C,GAAMG,OC9CS,SAAgBj4D,GAC7B,OAAO,SAAcu7C,GACnB,OAAOv7C,EAAS5iB,MAAM,KAAMm+D,EAC9B,CACF,ED6CAuc,GAAMI,aE7DS,SAAsBn4D,GACnC,OAAOqiC,GAAM8U,SAASn3C,KAAsC,IAAzBA,EAAQm4D,YAC7C,EF8DAJ,GAAM1O,YAAcA,GAEpB0O,GAAMpU,aAAeA,GAErBoU,GAAMK,WAAaxhB,GAASiL,GAAexf,GAAMmW,WAAW5B,GAAS,IAAIoD,SAASpD,GAASA,GAE3FmhB,GAAMM,WAAajH,GAEnB2G,GAAM/D,eAAiBA,GAEvB+D,GAAMt9C,QAAUs9C,GAGhB,MGrFMO,GHqFN,GGrF0B7zD,OAAO,CAC/BukD,QAAS1sB,2BACTklB,QAAS,CACP,eAAgB,sBAIpB8W,GAAY7F,aAAazxC,QAAQmuB,KAAK8N,IACpC,MAAMxD,EAAQrH,aAAaK,QAAQ,eAInC,OAHIgH,IACFwD,EAAOuE,QAAuB,cAAI,UAAU/H,KAEvCwD,CAAM,IACX/zC,GACK5R,QAAQupB,OAAO3X,KAGxBovD,GAAY7F,aAAavV,SAAS/N,KAC/B+N,GACQA,IAETzN,UACE,MAAM8oB,EAAkBrvD,EAAM+zC,OAG9B,GAA8B,MAA1B/zC,EAAMg0C,SAASvyB,SAAmB4tC,EAAgBC,OAAQ,CAC5DD,EAAgBC,QAAS,EACzB,MAAMC,EAAermB,aAAaK,QAAQ,gBAE1C,GAAIgmB,EACF,IACE,MACMC,SADiBJ,GAAYK,KAAK,WAAY,CAAEF,kBAC5BtvE,KAAKyvE,YAK/B,OAHAxmB,aAAaE,QAAQ,cAAeomB,GAEpCH,EAAgB/W,QAAuB,cAAI,UAAUkX,IAC9CJ,GAAYC,EACrB,CAAE,MAAO1+C,GACP5Q,QAAQC,MAAM,8BAA0B2Q,EAC1C,CAEJ,CAEA,OAAOviB,QAAQupB,OAAO3X,EAAM,IAIhC,YCnDA,IAEI2vD,IAAmB,EAkBhB,SAASxoB,GAAeyoB,EAAe7wC,GAC1C,IAAI8wC,EAAa9wC,EAEjB,OADA8wC,EAAWxiE,aAAQ2nB,GACZ,IAAK86C,SAASxrF,UAAUynB,KAAK5X,MAAMy7E,EAAeC,GAC7D,CAQO,SAASv8C,GAAay8C,GACzB,IAAIC,EACAC,EAAM,IAAIC,YAAY,IACVjsF,OAAOksF,UAAYlsF,OAAOmsF,QAChCC,gBAAgBJ,GAC1B,IAAIK,EAAS,MAobjB,SAAsBL,GAElB,IADA,IAAIniC,EAAM,GACDrX,EAAI,EAAGA,EAAI,EAAGA,IACnBqX,IAAQrX,EAAI,IAAM,IAAMw5C,EAAIztB,SAAS/rB,EAAEnpC,WAAY,KAEvD,OAAOwgD,CACX,CA1byByiC,CAAaN,GAC9BO,EAAiB,SAAUnrE,GACvBA,EAAMlT,SAAWlO,QAAgC,kBAAfohB,EAAMpF,MAAqBoF,EAAMpF,KAAKzc,QAAU,IAAM6hB,EAAMpF,OAASqwE,IACvGP,IACAC,IAER,EAGA,OAFA/rF,OAAO+P,iBAAiB,UAAWw8E,GAAgB,GACnDvsF,OAAOgwC,YAAYq8C,EAAQ,KACpBN,EAAS,WACZ/rF,OAAOgQ,oBAAoB,UAAWu8E,GACtCT,EAAUS,EAAiBF,OAASt7C,CACxC,CACJ,CASO,SAASvqC,GAASgmF,EAAWl7C,GAGhC,IAFA,IAAIxqC,EAAQwqC,EACRm7C,EAASD,EAAU9pF,QAAQ,MAAO,KAAKA,QAAQ,MAAO,IAAIjB,MAAM,KAC3D+wC,EAAI,EAAGA,EAAIi6C,EAAOltF,SAAWqqE,GAAY9iE,GAAQ0rC,IACtD1rC,EAAQA,EAAM2lF,EAAOluB,SAAS/rB,EAAEnpC,WAAY,MAEhD,OAAOvC,CACX,CAUO,SAASL,GAAS+lF,EAAW1lF,EAAOwqC,GACvC,IAGIkB,EAEAl1B,EALArQ,EAAOu/E,EAAU9pF,QAAQ,MAAO,KAAKA,QAAQ,MAAO,IAAIjB,MAAM,KAC9DqiB,EAAQwtB,GAAO,CAAC,EAChBo7C,EAAU5oE,EAEVvkB,EAAS0N,EAAK1N,OAElB,IAAKizC,EAAI,EAAGA,EAAIjzC,EAAQizC,IACpBl1B,EAAMrQ,EAAKsxD,SAAS/rB,EAAEnpC,WAAY,KAC9BmpC,EAAI,IAAMjzC,EACVmtF,EAAQ,GAAKpvE,QAAiByzB,IAAVjqC,EAAsB,CAAC,EAAIA,EAE1C6lF,GAAkBD,EAAQ,GAAKpvE,MACpCovE,EAAQ,GAAKpvE,GAAO,CAAC,GAEzBovE,EAAUA,EAAQ,GAAKpvE,GAE3B,OAAOwG,CACX,CAeO,IAAI8oE,GAAoC,qBAAX5sF,OAAyBA,OAAS,CAAC,EAQhE,SAASgqE,GAAS14B,GAErB,OAASq7C,GAAkBr7C,IAAQA,EAAIlrC,cAD1B,CAAC,EACgDA,WAClE,CAoBO,SAASinE,GAAMn/D,EAAQ2+E,GAC1B,IAAKF,GAAkBE,GAKnB,IAJA,IAAIC,EAAU5+E,EACV6+E,EAAWF,EAEXG,EAAY,YACPC,EAAK,EAAGC,EAFN9sF,OAAO6M,KAAK4/E,GAESI,EAAKC,EAAO3tF,OAAQ0tF,IAAM,CACtD,IAAI3vE,EAAM4vE,EAAOD,GACZN,GAAkBG,EAAQ,GAAKE,MAA0D,IAA1CF,EAAQ,GAAKE,GAAWjgF,QAAQuQ,KAC/E0sD,GAAS+iB,EAAS,GAAKzvE,MAAStV,MAAMC,QAAQ8kF,EAAS,GAAKzvE,IAI7DwvE,EAAQ,GAAKxvE,GAAOyvE,EAAS,GAAKzvE,GAHlC+G,GAAOyoE,EAAQ,GAAKxvE,GAAMwvE,EAAQ,GAAKxvE,GAAMyvE,EAAS,GAAKzvE,IAAM,EAKzE,CAER,CAWO,SAAS+G,GAAO8oE,EAAQ5zC,EAAO6zC,EAAQj/B,GAC1C,IAAItU,EAASszC,GAA4B,kBAAXA,EAAsBA,EAAS,CAAC,EAC1D5tF,EAASD,UAAUC,OACnB2lD,EAAO,CAACioC,EAAQ5zC,EAAO6zC,EAAQj/B,GAC/BA,IACA5uD,GAAkB,GAkCtB,IAhCA,IAAI8tF,EAAU,SAAU76C,GACpB,IAAK0S,EAAKqZ,SAAS/rB,EAAEnpC,WAAY,KAC7B,MAAO,WAEX,IAAIikF,EAAOpoC,EAAKqZ,SAAS/rB,EAAEnpC,WAAY,KACvCjJ,OAAO6M,KAAKqgF,GAAM5rF,SAAQ,SAAU4b,GAChC,IAEIwtC,EAFAlnB,EAAMiW,EAAO,GAAKv8B,GAClBgyC,EAAOg+B,EAAK,GAAKhwE,GAEjBiwE,EAAiBvlF,MAAMC,QAAQqnD,IAAStnD,MAAMC,QAAQ27B,IAAS0rB,EAAK/vD,SAAWqkC,EAAIrkC,OACnFiuF,GAAoBC,QAAgB7pD,aAAe8pD,SAAWH,EAC9Dp/B,GAAQq/B,IAAsBxjB,GAAS1a,IAAStnD,MAAMC,QAAQqnD,IAC1D0a,GAAS1a,IACTxE,EAAQlnB,GAAY,CAAC,EACjB57B,MAAMC,QAAQ6iD,IAAU1qD,OAAOC,UAAUC,eAAe8B,KAAK0oD,EAAO,kBACpEzmC,GAAOymC,EAAO,CAAC,EAAGwE,EAAMnB,GAGxBtU,EAAO,GAAKv8B,GAAO+G,GAAOymC,EAAO,CAAC,EAAGwE,EAAMnB,KAK/CrD,EAAQ2iC,KAAa7pD,GAAOxjC,OAAO6M,KAAKqiD,GAAM/vD,OAASqkC,GAAY,GACnEiW,EAAO,GAAKv8B,GAAO+G,GAAO,GAAIymC,EAAOwE,EAAOxE,GAASA,EAAMvrD,QAAY+vD,GAAQA,EAAK/vD,SAIxFs6C,EAAO,GAAKv8B,GAAOgyC,CAE3B,GACJ,EACS9c,EAAI,EAAGA,EAAIjzC,EAAQizC,IACxB66C,EAAQ76C,GAEZ,OAAOqH,CACX,CAQO,SAAS8yC,GAAkB7lF,GAC9B,YAAiBiqC,IAAVjqC,GAAiC,OAAVA,CAClC,CAQO,SAAS8iE,GAAY9iE,GACxB,MAAQ,qBAAuBA,CACnC,CA2EO,SAAS6mF,GAAqBv8E,EAAOw8E,GAExC,OADWx8E,IACEw8E,KADFx8E,IAIOnR,WAJPmR,IAQAu8E,GARAv8E,EAQ0BvC,WAAY++E,EAErD,CAQO,SAASC,GAAWnyD,GACvB,IACI,MAAM,IAAIt3B,MAAMs3B,EACpB,CACA,MAAO96B,GACH,MAAM,IAAIwD,MAAMxD,EAAE86B,QAAU,KAAO96B,EAAEyD,MACzC,CACJ,CAoEO,SAASopF,KACZ,OAAO/B,EACX,CC9YA,ICAWoC,GDAPC,GAAyB,CACzB,KAAQ,CACJ,QAAW,aACX,MAAS,YAIbC,GAAuB,CACvB,QAAW,IACX,MAAS,IACT,YAAe,IACf,SAAY,IACZ,UAAa,IACb,SAAY,SACZ,IAAO,MACP,YAAe,KAEfC,GAAmB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAM/CC,GAA4B,WAC5B,SAASA,IACT,CAuKA,OA/JAA,EAAWC,cAAgB,SAAU78C,EAAK88C,GAEtC,OAAO5nF,GADKinF,KAAaW,EAAQ,QAAUA,EACpB98C,EAC3B,EAOA48C,EAAWG,mBAAqB,SAAU/8C,GACtC,OAAO9qC,GAAS,gCAAiC8qC,IAAQvwC,KAAKutF,gBAClE,EAQAJ,EAAWK,cAAgB,SAAUt8C,EAAMhlC,GAGvC,IAFA,IACIy+C,EAAM,CAAC,EACFuhC,EAAK,EAAGuB,EAFFvhF,GAAQ7M,OAAO6M,KAAKglC,GAEKg7C,EAAKuB,EAAWjvF,OAAQ0tF,IAAM,CAClE,IAAI3vE,EAAMkxE,EAAWvB,GAChB7sF,OAAOC,UAAUC,eAAe8B,KAAKspD,EAAKzZ,EAAK,GAAK30B,MACrDouC,EAAIzZ,EAAK,GAAK30B,IAAQA,EAE9B,CACA,OAAOouC,CACX,EAOAwiC,EAAWO,eAAiB,SAAU3+D,GAClC,IAAI4+D,EAAW5+D,EAAM0d,KAAI,SAAUkf,GAC/B,OAAOA,EAAIhqD,QAAQ,4BAA6B,OACpD,IAAG8sB,KAAK,KAER,OAAO,IADM+rB,OACKmzC,EAAU,IAChC,EAMAR,EAAWS,eAAiB,SAAU18C,GAGlC,IAFA,IACI4X,EAAM,CAAC,EACFojC,EAAK,EAAG2B,EAFDxuF,OAAO6M,KAAK+gF,IAEcf,EAAK2B,EAAYrvF,OAAQ0tF,IAAM,CACrE,IAAI3vE,EAAMsxE,EAAY3B,GACtBpjC,EAAI5X,EAAK,GAAK30B,IAAQ0wE,GAAqB,GAAK1wE,EACpD,CACA,OAAOusC,CACX,EAOAqkC,EAAWW,eAAiB,SAAUx0B,GAGlC,IAFA,IAAIuQ,EAAMvQ,EAAI96D,OACVsqD,EAAM,GACDrX,EAAI,EAAGA,EAAIo4B,EAAKp4B,IAEjBqX,GADArX,IAAMo4B,EAAM,EACLvQ,EAAIkE,SAAS/rB,EAAEnpC,WAAY,KAAO,IAGlCgxD,EAAIkE,SAAS/rB,EAAEnpC,WAAY,KAG1C,OAAOwgD,CACX,EASAqkC,EAAWY,kBAAoB,SAAUhoF,EAAOm1D,EAAO3qB,GACnD,OAAOxqC,EAAMpE,QAAQu5D,GAAO,SAAUvP,GAClC,OAAOpb,EAAI,GAAKob,EACpB,GACJ,EAOAwhC,EAAWa,0BAA4B,SAAUz9C,GAC7C,IAAIuY,EAAM,CAAC,EAGX,OAFAA,EAAIvY,IAAM9qC,GAAS,UAAW8qC,GAC9BuY,EAAImlC,QAAUxoF,GAAS,yBAA0BqjD,EAAIvY,KAC9CuY,CACX,EAUAqkC,EAAWe,yBAA2B,SAAUC,EAAQC,EAAcC,EAAaC,GAC/E,IAAIxlC,EAAM,CAAC,EACPylC,EAAMvuF,KAAKguF,0BAA0BG,GACzC,IAAKtlB,GAAY0lB,EAAIN,UAAYK,EAAY,CACzC,IAAIE,EAASF,EAAa7oF,GAAS,mBAAoB8oF,GAAO9oF,GAAS8oF,EAAIN,QAAU,WAAYG,GACjG,IAAKvlB,GAAY2lB,GAAS,CACtB1lC,EAAI2lC,YAAczuF,KAAKwtF,cAAcgB,EAAQtB,IAC7C,IAAIxf,EAASlzB,OACbsO,EAAI4lC,iBAAmB,IAAIhhB,EAAO1tE,KAAK8tF,eAAeU,GAAS,KAC/D1lC,EAAI6lC,aAAe,IAAMH,EAAO,GAAK,IAAMA,EAAO,GAAK,IACnDH,IACAvlC,EAAI6lC,aAAeH,EAAO,GAAK,IAAMA,EAAO,GAC5C1lC,EAAI8lC,mBAAqBnpF,GAAS6oF,EAAa,gBAAkB,wBAA0BC,EAAIN,QAASM,EAAIh+C,KAC5GuY,EAAI+lC,YAAc7uF,KAAK4tF,eAAe9kC,EAAI8lC,oBAC1C9lC,EAAIslC,aAAeG,EAAIN,QAE/B,CACJ,CACA,OAAOnlC,CACX,EASAqkC,EAAW2B,gBAAkB,SAAUX,EAAQC,EAAcplB,GACzD,IAAIlgB,EAAM,CAAEimC,OAAQ,CAAC,GACjBR,EAAMvuF,KAAKguF,0BAA0BG,GACzC,IAAKtlB,GAAY0lB,EAAIN,SAAU,CAC3BnlC,EAAIslC,aAAeG,EAAIN,QACvBnlC,EAAIkmC,cAAgBvpF,GAAS,wBAA0B8oF,EAAIN,QAASM,EAAIh+C,KACxEuY,EAAImmC,cAAgBxpF,GAAS,gBAAiBqjD,EAAIkmC,eAClD,IAAIR,EAAS/oF,GAAS8oF,EAAIN,QAAU,WAAYG,GAChD,IAAKvlB,GAAY2lB,GACb,IAAK,IAAItC,EAAK,EAAGgD,EAAqBhC,GAAkBhB,EAAKgD,EAAmB1wF,OAAQ0tF,IAAM,CAC1F,IAAIz6C,EAAIy9C,EAAmBhD,GAC3BpjC,EAAIimC,OAAOvxB,SAAS/rB,EAAEnpC,WAAY,KAAOkmF,EAAOhxB,SAAS/rB,EAAEnpC,WAAY,IAC3E,CAER,CACA,OAAOwgD,CACX,EACAqkC,EAAWgC,MAAQ,cACnBhC,EAAWiC,OAAS,eACpBjC,EAAWI,iBAAmBP,GACvBG,CACX,CA1KgC,GA+K5BkC,GAAqB,CACrB,IAAO,MACP,IAAO,MACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,OACP,IAAO,WACP,IAAO,MACP,IAAO,iBACP,IAAO,iBACP,IAAO,iBACP,IAAO,iBACP,IAAO,SACP,IAAO,iBACP,IAAO,iBACP,IAAO,KACP,IAAO,iBACP,IAAO,iBACP,IAAO,iBACP,IAAO,iBACP,IAAO,iBACP,IAAO,iBACP,IAAO,iBACP,IAAO,iBACP,IAAO,iBACP,IAAO,IACP,IAAO,OACP,IAAO,iBACP,IAAO,iBACP,IAAO,iBACP,IAAO,IACP,IAAO,SACP,IAAO,MACP,IAAO,SACP,IAAO,SACP,IAAO,SACP,IAAO,KACP,IAAO,IACP,IAAO,gBACP,IAAO,SACP,IAAO,MACP,IAAO,SACP,IAAO,OACP,IAAO,eACP,IAAO,MACP,IAAO,IACP,IAAO,UACP,IAAO,OACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,UACP,IAAO,MACP,IAAO,MACP,IAAO,IACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,OACP,IAAO,OACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,OACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,SACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,OACP,IAAO,KACP,IAAO,OACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,MACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,SACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,MACP,IAAO,KACP,IAAO,SACP,IAAO,IACP,IAAO,OACP,IAAO,2BACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,OACP,IAAO,KACP,IAAO,KACP,IAAO,SACP,IAAO,KACP,IAAO,OACP,IAAO,SACP,IAAO,SACP,IAAO,SACP,IAAO,SACP,IAAO,SACP,IAAO,SACP,IAAO,qBACP,IAAO,KACP,IAAO,SACP,IAAO,MACP,IAAO,qBACP,IAAO,SACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,eACP,IAAO,OACP,IAAO,IACP,IAAO,UACP,IAAO,SACP,IAAO,KACP,IAAO,IACP,IAAO,MACP,IAAO,SACP,IAAO,gBACP,IAAO,UACP,IAAO,sBACP,IAAO,qBACP,IAAO,SACP,IAAO,KACP,IAAO,SACP,IAAO,qBACP,IAAO,SACP,IAAO,QC/VX,SAAWtC,GACP,IAAIuC,EAAiB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAC7G,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAmEpHvC,EAAYwC,aA5DZ,SAAsBC,GAClB,IAAIC,EAAMD,EAAME,UACZlwE,EAAQgwE,EAAMG,WACdC,EAAOJ,EAAMK,cACbC,EAAStwE,EAAQ,EACjBuwE,EAAQH,EACRE,EAAS,IACTC,GAAS,EACTD,GAAU,IAEd,IAAIE,EAAU79E,KAAKk9B,MAAM0gD,EAAQ,KAC7BE,EAAgBD,EAAU79E,KAAKk9B,MAAM2gD,EAAU,GAAM,EACrDE,EAAe/9E,KAAKk9B,MAAM,QAAU0gD,EAAQ,OAAS59E,KAAKk9B,MAAM,SAAWygD,EAAS,IAAML,EAAMQ,EAAgB,KAGhH5xF,EAAI6xF,GADRD,GADAD,EAAU79E,KAAKk9B,OAAO6gD,EAAe,YAAc,WACzB/9E,KAAKk9B,MAAM2gD,EAAU,GAAM,GACd,KACnC1xF,EAAI6T,KAAKk9B,OAAOhxC,EAAI,OAAS,QAC7BuB,EAAIuS,KAAKk9B,MAAM,OAAS/wC,GACxB6xF,EAAYh+E,KAAKk9B,OAAOhxC,EAAIuB,GAAK,SACrC6vF,EAAOpxF,EAAIuB,EAAKuS,KAAKk9B,MAAM,QAAU8gD,IACrC3wE,EAAQrN,KAAKk9B,OAAOhxC,EAAIuB,GAAK,UACjB,KACRtB,GAAK,EACLkhB,GAAS,IAEbA,GAAS,EACTowE,EAAOtxF,EAAI,KACX,IAAI8xF,EAAqBF,EAAe,KAEpCG,EAAQ,MAAQ,GAChB5vF,EAAIyvF,EAAe,QACnBI,EAAMn+E,KAAKk9B,MAAM5uC,EAAI,OACzBA,GAAQ,MAAQ6vF,EAChB,IAAI99C,EAAIrgC,KAAKk9B,OAAO5uC,EAAI,OAAU4vF,GAC9BE,EAAK,GAAKD,EAAM99C,EACpB/xC,GAAQ0R,KAAKk9B,MAAMmD,EAAI69C,EAAQ,OAC/B,IAAIG,EAAKr+E,KAAKk9B,OAAO5uC,EAAI,SAAW,MAEzB,KAAP+vF,IACAA,EAAK,IAIT,IAFA,IAAIC,EAAUhwF,EAAI0R,KAAKk9B,MAAM,QAAUmhD,EAAK,IACxC/+C,EAAI,EACDA,EAAI69C,EAAe9wF,UAClB8wF,EAAe9xB,SAAS/rB,EAAEnpC,WAAY,KAAO8nF,GADnB3+C,KAKlC,IAAIi/C,EAAMj/C,EAAI,MACVnb,EAAKnkB,KAAKk9B,OAAOqhD,EAAM,GAAK,IAC5BC,EAAQr6D,EAAK,EACbs6D,EAASF,EAAM,GAAKp6D,EACpBu6D,EAAQT,EAAqBd,EAAe79C,EAAI,GAAK,EAMzD,OALKo/C,EAAQ,IAAIryF,OAAS,IACtBqyF,EAAQJ,EACRG,EAASJ,EACTG,EAAQJ,GAEL,CAAEX,KAAMe,EAAOnxE,MAAOoxE,EAAQvxE,KAAMwxE,EAC/C,EAkCA9D,EAAY+D,YAzBZ,SAAqBlB,EAAMpwE,EAAOiwE,GAC9B,IAOIsB,EALKtB,EAIQH,EAFD,IAJPM,EAGK,GACQ,GAHbpwE,EAGuB,GAClB,MACsB,GAAK,EAChB,KACrB/e,EAAI0R,KAAKk9B,MAAM0hD,EAAa,IAC5B3yF,EAAI+T,KAAKk9B,OAAO5uC,EAAI,YAAc,UAElCpC,GADJD,EAAIqC,EAAI,EAAIrC,EAAI+T,KAAKk9B,MAAMjxC,EAAI,IACnB,KACRE,EAAI6T,KAAKk9B,OAAOhxC,EAAI,OAAS,QAC7BuB,EAAIuS,KAAKk9B,MAAM,OAAS/wC,GACxBuB,EAAIsS,KAAKk9B,OAAOhxC,EAAIuB,GAAK,SACzBoxF,EAAO3yF,EAAIuB,EAAIuS,KAAKk9B,MAAU,QAAJxvC,GAC1BoxF,EAASpxF,GAAKA,EAAI,KAAO,GAAK,GAC9BqxF,EAAQ5yF,GAAK2yF,EAAS,IAAM,KAAO,MAKvC,OAHIC,GAAS,GACTD,IAEG,IAAIx4E,KAAKy4E,EAAQ,IAAOD,EAAU,IAAMD,EACnD,CAEH,CAtMD,CAsMGjE,KAAgBA,GAAc,CAAC,ICtMlC,IAAIoE,GAAwB,mEACxBC,GAAa,cACbC,GAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAExDC,GAAa,CACbliF,EAAG,aACHnL,EAAG,WACHymB,EAAG,WACHgnB,EAAG,aACH9xC,EAAG,UACHE,EAAG,mBAEIyxF,GAAkB,CACzB,EAAK,QACL,EAAK,MACL,EAAK,UACL,EAAK,UACL,EAAK,OACL,EAAK,SACL,EAAK,OACL,EAAK,OACL,EAAK,SACL,EAAK,QACL,EAAK,aACL,EAAK,WACL,EAAK,WACL,EAAK,MACL,EAAK,gBAQLC,GAA4B,WAC5B,SAASA,IACT,CA6PA,OApPAA,EAAWC,WAAa,SAAUC,EAASz8B,EAAQ08B,GAC/C,IAAI1+B,EAAQjzD,KACR4xF,EAAaplF,GAAKqlF,eAAeF,EAAMD,EAASz8B,EAAO68B,UACvDC,EAAYtsF,GAAS,uBAAwBmsF,GAC7CI,EAAaJ,EAAWI,WACxB50B,EAAgB,CAAE60B,UAAWzlF,GAAK0lF,aAAa5wF,KAAK2zD,EAAO68B,WAC3DpF,MAAcz3B,EAAOk9B,mBACrBl9B,EAASzoD,GAAK4lF,yBAAyBn9B,EAAQy8B,IAEnD,IAAIW,EAAap9B,EAAOuE,QACpBhtD,GAAK8lF,oBAAoBr9B,EAAOs9B,SAAUX,EAAWI,WAAY/8B,EAAO30D,MAAM,EAAOosF,KAAagF,EAAU,IAEhH,GADAt0B,EAAco1B,cAAgB9F,KAAajnF,GAAS,gBAAiBusF,GAAcxlF,GAAKimF,iBAAiBb,EAAWI,YAChHnpB,GAAYwpB,GACZvF,GAAW,oDAEV,CACDuF,EAAa7lF,GAAKkmF,wBAAwBL,GACtC3F,OACA2F,EAAaA,EAAW1wF,QAAQ,KAAM,MAE1Cy7D,EAAcljB,QAAUm4C,EACxBj1B,EAAcu1B,UAAYjG,KACtBppE,GAAO,CAAC,EAAGyuE,GAAa3d,GAAO0a,gBAAgB8C,EAAWgB,aAAcxe,GAAOkZ,mBAAmBqE,IAEtG,IADA,IACSzF,EAAK,EAAG2G,EADER,EAAW7uF,MAAM2tF,KAA0B,GACdjF,EAAK2G,EAAer0F,OAAQ0tF,IAAM,CAC9E,IAAIvgC,EAAMknC,EAAe3G,GACrBriB,EAAMle,EAAIntD,OACV2pB,EAAOwjC,EAAI,GAIf,OAHa,MAATxjC,IACAA,EAAO,KAEHA,GACJ,IAAK,IACL,IAAK,IACGukE,KACAtvB,EAAc01B,QAAUrtF,GAAS,QAAU+G,GAAKumF,WAAW,GAAKlpB,GAAMmoB,GAGtE50B,EAAc01B,QAAUlB,EAAWI,WAAW,GAAKxlF,GAAKwmF,MAAM,GAAK5B,IAAY5kF,GAAKumF,WAAW,GAAKlpB,IAExG,MACJ,IAAK,IACL,IAAK,IACG6iB,KACAtvB,EAAc59C,MAAQ/Z,GAAS,UAAY+G,GAAKumF,WAAW,GAAKlpB,GAAMmoB,GAGtE50B,EAAc59C,MAAQoyE,EAAWI,WAAW,GAAKxlF,GAAKgT,OAAO,GAAK4xE,IAAY5kF,GAAKumF,WAAW,GAAKlpB,IAEvG,MACJ,IAAK,IACDzM,EAAc61B,WAAavG,KACvBjnF,GAAS,aAAcusF,GAAcvsF,GAAS,yBAA0BusF,GAC5E,MACJ,IAAK,IACD,IAAIkB,EAASrpB,GAAO,EAAK,UAAqB,IAARA,EAAa,WAAa,YAChEzM,EAAc+1B,IAAMzG,KAAajnF,GAAS,OAAQusF,GAAcvsF,GAAS,QAAUytF,EAAOtB,EAAWI,YACrG,MAEJ,IAAK,IACD50B,EAAcg2B,SAAW3tF,GAAS,sBAAuBmsF,EAAWgB,cAGhF,CACJ,CACA,OAAO,SAAU7sF,GACb,OAAI5E,MAAM4E,EAAM2pF,WACL,KAEJz8B,EAAMogC,iBAAiBttF,EAAOq3D,EACzC,CACJ,EAQAo0B,EAAW6B,iBAAmB,SAAUttF,EAAOqB,GAK3C,IAJA,IACI0hD,EAAM,GACNvR,EAFUnwC,EAAQ8yC,QAEA12C,MAAMgJ,GAAK8mF,gBAC7BC,EAAUvzF,KAAKwzF,oBAAoBztF,EAAOqB,EAAQ6qF,WAC7C/F,EAAK,EAAGuH,EAAYl8C,EAAS20C,EAAKuH,EAAUj1F,OAAQ0tF,IAAM,CAC/D,IAAI1oF,EAAQiwF,EAAUvH,GAClBwH,EAAWlwF,EAAMhF,OACjB2pB,EAAO3kB,EAAM,GACJ,MAAT2kB,IACAA,EAAO,KAEX,IAAIwrE,OAAS,EACTC,EAAY,GACZ5qB,OAAW,EACX6qB,OAAgB,EAChBC,EAAS,GACb,OAAQ3rE,GACJ,IAAK,IACL,IAAK,IACDwrE,EAASJ,EAAQ/zE,MACbk0E,EAAW,EACX5qC,GAAO1hD,EAAQoY,MAAM,GAAKm0E,GAG1B3qB,GAAW,EAEf,MACJ,IAAK,IACL,IAAK,IACDlgB,GAAO1hD,EAAQ0rF,QAAQ,GAAKzB,GAAWtrF,EAAMguF,WAC7C,MACJ,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IAED,GADA/qB,GAAW,EACE,MAAT7gD,EACAwrE,EAASJ,EAAQl0E,UAEhB,GAAa,MAAT8I,EAAc,CACnB6gD,GAAW,EACX6qB,GAAgB,EAGhB,IAAIG,GADJJ,GADAA,EAAY7tF,EAAM,GAAKurF,GAAW,GAAKnpE,MAAS7f,YAC1B8D,UAAU,EAAGsnF,IACTl1F,OAC1B,GAAIk1F,IAAaM,EAAW,CACxB,GAAIN,EAAW,EACX,SAEJ,IAAK,IAAIjiD,EAAI,EAAGA,EAAIiiD,EAAWM,EAAWviD,IACtCmiD,EAAY,IAAMA,EAAUtrF,UAEpC,CACAwrF,GAAUF,CACd,MAEID,EAAS5tF,EAAM,GAAKurF,GAAW,GAAKnpE,MAE3B,MAATA,IACAwrE,EAASA,EAAS,IAAM,IAE5B,MACJ,IAAK,IACDE,GAAgB,EAChBC,GAAUP,EAAQ3D,KACD,IAAb8D,IACAI,EAASA,EAAOx/C,OAAOw/C,EAAOt1F,OAAS,IAE3C,MACJ,IAAK,IACD,IAAIy1F,EAAQluF,EAAMmuF,WAAa,GAAK,KAAO,KAC3CprC,GAAO1hD,EAAQ6rF,WAAW,GAAKgB,GAC/B,MAEJ,IAAK,IACD,IAAIE,EAAMpuF,EAAM8pF,cAAgB,EAAI,EAAI,EACpCuE,EAAOhtF,EAAQ+rF,IAAI,GAAKgB,GACxBvI,GAAkBwI,KAClBA,EAAOhtF,EAAQ+rF,IAAIgB,EAAM,EAAI,IAEjCrrC,GAAOsrC,GAAQ,GACf,MAEJ,IAAK,IACDtrC,GAAkB,OAAVtlD,EAAoB,IAAOA,EAAM7B,QAAQ,KAAM,IACvD,MACJ,IAAK,IACD,IAAI0yF,EAAWtuF,EAAMuuF,oBACjBC,EAAab,EAAW,EAAK,QAAUtsF,EAAQgsF,SAASoB,WAC5DD,EAAYA,EAAU5yF,QAAQ,KAAMyF,EAAQurF,UAAU1D,eACrC,IAAboF,EACAvrC,GAAO1hD,EAAQgsF,SAASqB,eAGxBZ,GAAgB,EAChBC,EAAS9zF,KAAK00F,iBAAiBL,EAAUE,IAE7CT,EAAS1sF,EAAQgsF,SAASuB,UAAUhzF,QAAQ,QAASmyF,GACrD,MAEJ,IAAK,IACDhrC,GAAO1hD,EAAQurF,UAAU3D,cAAgC,cACzD,MACJ,IAAK,IACDlmC,GAAO1hD,EAAQorF,cACf,MACJ,IAAK,IACDxpB,GAAW,EACX2qB,EAASnnF,GAAKooF,cAAc7uF,GAC5B,MACJ,QACI+iD,GAAOtlD,EAEXwlE,IACA6qB,GAAgB,EAChBC,EAAS9zF,KAAK60F,oBAAoBlB,EAAQD,IAE1CG,IACA/qC,GAAOsrB,GAAO2Z,kBAAkB+F,EAAQtnF,GAAKsoF,eAAgB1tF,EAAQurF,UAAU5D,QAEvF,CACA,OAAOjmC,CACX,EACA0oC,EAAWgC,oBAAsB,SAAUztF,EAAOksF,GAC9C,OAAIA,EACOlF,GAAYwC,aAAaxpF,GAE7B,CAAE6pF,KAAM7pF,EAAM8pF,cAAerwE,MAAOzZ,EAAM4pF,WAAa,EAAGtwE,KAAMtZ,EAAM2pF,UACjF,EAQA8B,EAAWqD,oBAAsB,SAAUv7B,EAAKuQ,GAC5C,IAAI/gB,EAAMwQ,EAAM,GAChB,OAAY,IAARuQ,GAA4B,IAAf/gB,EAAItqD,OACV,IAAMsqD,EAEVA,CACX,EASA0oC,EAAWkD,iBAAmB,SAAUK,EAAM76C,GAC1C,IAAI+Y,EAAQjzD,KAERg1F,EADO96C,EAAQx5C,MAAM,KACHq0F,EAAO,EAAI,EAAI,GACjCE,EAAK9iF,KAAK4mD,IAAIg8B,GAClB,OAAoBC,EAAWrzF,QAAQ,WAAW,SAAUgqD,GACxD,IAAIke,EAAMle,EAAIntD,OACV02F,GAA+B,IAAtBvpC,EAAI3/C,QAAQ,KACzB,OAAOinD,EAAM4hC,oBAAoB1iF,KAAKk9B,MAAM6lD,EAAUD,EAAK,GAAOA,EAAK,IAAMprB,EACjF,GACJ,EACO2nB,CACX,CAhQgC,GCnC5B2D,GAAY,CACZ,GAAM,2BACN,GAAM,2BACN,GAAM,wBACN,GAAM,yBAINpG,GAAS,CAAC,WAAY,MAAO,QAAS,UAAW,eAMjDtyB,GAA8B,WAC9B,SAASA,IACT,CAsWA,OA7VAA,EAAa24B,gBAAkB,SAAU1D,EAASz8B,EAAQ08B,GACtD,IAII0D,EAJApiC,EAAQjzD,KACRs1F,EAAWhyE,GAAO,CAAC,EAAG2xC,GACtBsgC,EAAW,CAAC,EACZC,EAAW,CAAC,EAEZ5D,EAAaplF,GAAKqlF,eAAeF,EAAMD,EAAS,IAAI,GACpDK,EAAYH,EAAW6D,cAC3BD,EAASE,aAAehJ,KAAappE,GAAO,CAAC,EAAGyuE,GAC5C3d,GAAO0a,gBAAgB8C,EAAWgB,aAAcxe,GAAOkZ,mBAAmBqE,IAAO,GACrF6D,EAASG,eAAiBjJ,KAAajnF,GAAS,iBAAkBssF,GAAavlF,GAAKopF,kBAAkBhE,EAAW6D,cAAeH,EAAS54B,UAAYm5B,GAAqB5gC,EAAO6gC,UAAW7gC,EAAO8gC,gBACnMP,EAASQ,cAAgBtJ,KAAajnF,GAAS,4BAA6BssF,GACxEyD,EAASE,aAAa1G,cAA8B,YACxDwG,EAASS,YAAcvJ,KAAajnF,GAAS,0BAA2BssF,GACpEyD,EAASE,aAAa1G,cAA4B,UACtD,IAAIkH,EAAUV,EAASE,aAAa1G,cACpC,GAAK/5B,EAAOuE,SAAahtD,GAAK2pF,YAAY70F,KAAK2zD,EAAOuE,QAClD+7B,EAAW/oF,GAAK4pF,aAAanhC,EAAOuE,OAAQg8B,EAAU5D,EAAW6D,gBAC5D5sB,GAAYysB,EAASe,cAAgBf,EAASe,cAC/Cf,EAASe,YAAcd,EAASe,MAAMD,iBAGzC,CAkBD,GAjBA/yE,GAAOgyE,EAAU9oF,GAAK+pF,yBAAyBthC,EAAOuE,QAAU,MAChE87B,EAASkB,WAA+B,aAAlBlB,EAASh1F,KAC/Bg1F,EAASmB,UAA8B,YAAlBnB,EAASh1F,KACzBosF,OACD2I,EAAgB7oF,GAAKkqF,iBAAiBpB,EAASh1F,KAAMk1F,EAASE,aAAatH,aAAcwD,EAAW6D,cAAeH,EAASqB,YAEhIrB,EAASsB,SAAW52F,KAAK62F,gBAAgBvB,EAASwB,yBAA0BxB,EAASyB,0BAA0B,GAC/G/2F,KAAK62F,gBAAgBvB,EAAS0B,sBAAuB1B,EAAS2B,uBAAuB,GAAO,GACvFpuB,GAAYysB,EAAS4B,kBACtB5B,EAAS2B,sBAAwB3B,EAAS0B,sBAAwB1B,EAAS4B,gBAE3EruB,GAAYysB,EAASe,eACrBf,EAASe,aAAc,GAEvBf,EAASkB,aAAe9J,OACxB2I,EAAgBA,EAAc1zF,QAAQ,UAAW6K,GAAK2qF,kBAErDzK,KAUD6I,EAAS6B,MAAQ9zE,GAAO,CAAC,EAAG,CAAC,EAAG7d,GAAS6vF,EAASh1F,KAAO,QAASyxF,IAClEwD,EAASe,MAAQhzE,GAAO,CAAC,EAAG,CAAC,EAAG7d,GAAS6vF,EAASh1F,KAAO,QAASyxF,IAC5C,aAAlBuD,EAASh1F,MAAuB20D,EAAOyH,UACvClwD,GAAK6qF,sBAAsB,CAAC9B,EAASe,MAAOf,EAAS6B,OAAQ5B,EAASG,eAAgB1gC,EAAOyH,cAbpF,CACb,IAAIh8D,EAAQ20F,EAAc30F,MAAM,KAChC60F,EAAS6B,MAAQ5qF,GAAK8qF,cAAc52F,EAAM,IAAM,IAAMA,EAAM,IAAI,EAAM80F,EAASG,gBAC/EJ,EAASe,MAAQ9pF,GAAK8qF,cAAc52F,EAAM,IAAI,EAAO80F,EAASG,gBAC1DL,EAASe,cACTf,EAASiC,eAAiBrB,EAAQnH,GAAO,IACzCuG,EAASkC,UAAYx3F,KAAKy3F,mBAAmB/2F,EAAM,IAE3D,CAYA,GAJcmoE,GAAYysB,EAAS2B,yBAE/B3B,EAAS2B,sBAAwB1B,EAAS6B,MAAMM,iBAEhD7uB,GAAYysB,EAAS0B,uBAAwB,CAC7C,IAAIW,EAAOpC,EAAS6B,MAAMQ,gBAC1BtC,EAAS0B,sBAAwBnuB,GAAY8uB,IAASrC,EAASmB,UAAY,EAAIkB,CACnF,CACA,IAAIE,EAAQvC,EAAS2B,sBACjBa,EAAQxC,EAAS0B,sBAChBnuB,GAAYgvB,IAAWhvB,GAAYivB,IAChCD,EAAQC,IACRxC,EAAS0B,sBAAwBa,EAG7C,CAGA,OAFAv0E,GAAOiyE,EAAS6B,MAAO9B,GACvBhyE,GAAOiyE,EAASe,MAAOhB,GAChB,SAAUvvF,GACb,OAAI5E,MAAM4E,GACCmwF,EAAQnH,GAAO,IAEhBzgB,SAASvoE,GAGZktD,EAAM8kC,mBAAmBhyF,EAAOwvF,EAAUC,EAAUvgC,GAFhDihC,EAAQnH,GAAO,GAG9B,CACJ,EAOAtyB,EAAag7B,mBAAqB,SAAUv9C,GACxC,IAAI4O,EAAM,CAAC,EACPtlD,EAAQ02C,EAAQ12C,MAAMgJ,GAAKwrF,mBAC/B,GAAIx0F,GAASA,EAAM,GAAI,CACnB,IAAI+wF,EAAY/wF,EAAM,GAClBrF,EAAIo2F,EAAU0D,YAAY,KAC9B,IAAW,IAAP95F,EAAU,CACV,IAAIo9D,EAAOg5B,EAAU7zF,MAAM,KAAK,GAChCooD,EAAIovC,QAAW38B,EAAK/8D,OAASL,EAAK,EAClC,IAAIuzC,EAAI6iD,EAAU0D,YAAY,IAAK95F,EAAI,IAC5B,IAAPuzC,IACAoX,EAAIqvC,UAAYh6F,EAAI,EAAIuzC,EAEhC,CACJ,CACA,OAAOoX,CACX,EAUA2T,EAAao6B,gBAAkB,SAAUuB,EAAMC,EAAMC,EAAgBC,GACjE,IAAIC,EAASD,EAAa,IAAM,IAC5BE,EAAO,EACPC,EAAOvD,GAAU,IAAMqD,GACvBG,EAAOxD,GAAU,IAAMqD,GAS3B,GARK3vB,GAAYuvB,KACbp4F,KAAK44F,WAAWR,EAAMM,EAAMH,GAC5BE,KAEC5vB,GAAYwvB,KACbr4F,KAAK44F,WAAWP,EAAMM,EAAMJ,GAC5BE,KAES,IAATA,EAAY,CACZ,KAAIL,EAAOC,GAIP,OAAO,EAHPvL,GAAW6L,EAAO,kCAAoCD,EAK9D,MACSJ,GAA2B,IAATG,GACvB3L,GAAW,OAAS6L,EAAO,MAAQA,EAAO,mBAE9C,OAAO,CACX,EASAl8B,EAAam8B,WAAa,SAAUt/B,EAAKx5C,EAAMy4E,GAC3C,IAAI54E,EAAQ44E,EAAa,CAAC,EAAG,IAAM,CAAC,EAAG,KACnCj/B,EAAM35C,EAAM,IAAM25C,EAAM35C,EAAM,KAC9BmtE,GAAWhtE,EAAO,iCAAmCH,EAAM,GAAK,KAAOA,EAAM,GAErF,EAUA88C,EAAas7B,mBAAqB,SAAUhyF,EAAOuvF,EAAUE,EAAUvgC,GACnE,IAAI4jC,EACJ,IAAIhwB,GAAYysB,EAAS8B,MAAM92F,MAA/B,CAIQyF,EAAQ,GACRA,IAAiB,EACjB8yF,EAAUvD,EAAS8B,OAGnByB,EADe,IAAV9yF,GACKuvF,EAASwD,UAGTxD,EAASgB,MAEvB,IAAIyC,EAAS,GAIb,GAHIF,EAAQpC,YACR1wF,GAAgB,KAEhB8yF,EAAQjC,SACRmC,EAAS/4F,KAAKg5F,yBAAyBjzF,EAAO8yF,EAAQ9B,yBAA0B8B,EAAQ/B,+BAOxF,GAJAiC,EAAS/4F,KAAKi5F,gBAAgBlzF,EAAO8yF,EAAQ5B,sBAAuB4B,EAAQ7B,sBAAuB/hC,GAC/F4jC,EAAQK,uBACRH,EAAS/4F,KAAKm5F,uBAAuBJ,EAAQF,EAAQK,uBAErD1D,EAAS4D,gBAAkBP,EAAQ5B,sBAAwB4B,EAAQ7B,uBAChE,WAAW11F,KAAKy3F,GAAS,CAI5B,IAHA,IAAIx9B,EAAOw9B,EAAOr4F,MAAM,KACpB24F,EAAc99B,EAAK,GAEd9pB,EADC4nD,EAAY76F,OACH,EAAGizC,GAAK,IACyB,MAA5C4nD,EAAY77B,SAAS/rB,EAAEnpC,WAAY,MAAgBmpC,GAAKonD,EAAQ5B,uBAD1CxlD,IAEtB4nD,EAAcA,EAAYp4F,MAAM,EAAGwwC,GAM3CsnD,EAASx9B,EAAK,GAAK,IAAM89B,CAC7B,CAYJ,MAVqB,eAAjBR,EAAQv4F,OAERy4F,GADAA,EAAShzF,EAAMuzF,cAAcT,EAAQ7B,wBACrBr1F,QAAQ,IAAK6zF,EAASE,aAAa1G,cAAcD,GAAO,MAE5EgK,EAASA,EAAOp3F,QAAQ,IAAK6zF,EAASE,aAAa1G,cAAcD,GAAO,KACxEgK,EAA4B,sBAAnBF,EAAQr/B,OAAiCx5D,KAAKu5F,kBAAkB/7B,SAASu7B,EAAQ,KAAOA,EAC7FF,EAAQxC,cACR0C,EAAS/4F,KAAKw5F,aAAaT,EAAQF,EAAQrB,UAAUU,QAASW,EAAQtB,gBAAkB,IAAK/B,EAASE,aAAa1G,cAAcD,GAAO,KAAO,IAAK8J,EAAQrB,UAAUW,YAE1KY,EAAS3kB,GAAO2Z,kBAAkBgL,EAAQvsF,GAAKsoF,eAAgBU,EAASE,aAAa3G,QAC/D,QAAlB8J,EAAQY,MACDZ,EAAQY,MAGA,MAAXV,GAAkB9jC,GAA4B,MAAlBA,EAAOuE,OAC5Bu/B,EAASF,EAAQa,KAErBb,EAAQY,MAAQV,EAASF,EAAQa,IAEhD,CACJ,EASAj9B,EAAau8B,yBAA2B,SAAUjzF,EAAOod,EAAKw2E,GAC1D,IAAIp+B,EAAOx1D,EAAQ,GAGnB,OADaw1D,EAAK/8D,OACL2kB,EACFpd,EAAM6zF,YAAYz2E,KAGzBo4C,EAAOx1D,EAAM6zF,YAAYD,IAEb,EAEpB,EAWAl9B,EAAa+8B,aAAe,SAAUlgC,EAAKugC,EAAQl+B,EAAKm+B,EAAeC,GAMnE,IALA,IAAIC,GAAQpO,GAAkBmO,IAAsB,IAAXA,EACrCr5F,EAAQ44D,EAAI54D,MAAMo5F,GAClB3wC,EAASzoD,EAAM,GACflC,EAAS2qD,EAAO3qD,OAChBmtD,EAAM,GACHntD,EAASq7F,GACZluC,EAAMxC,EAAOloD,MAAMzC,EAASq7F,EAAQr7F,IAAWmtD,EAAIntD,OAC9Cm9D,EAAMhQ,EAAO,IAClBntD,GAAUq7F,EACNG,IACAH,EAASE,EACTC,GAAO,GAIf,OADAt5F,EAAM,GAAKyoD,EAAOloD,MAAM,EAAGzC,IAAWmtD,EAAIntD,OAASm9D,EAAM,IAAMhQ,EACxDjrD,EAAM+tB,KAAKqrE,EACtB,EAUAr9B,EAAaw8B,gBAAkB,SAAUlzF,EAAOod,EAAKw2E,EAAK1kC,GACtD,IAAIsG,GAAQx1D,EAAQ,IAAIrF,MAAM,KAAK,GAC/BlC,EAAS+8D,EAAOA,EAAK/8D,OAAS,EAClC,GAAI2kB,GAAO3kB,EAAS2kB,EAAK,CACrB,IAAI2lC,EAAM,GACV,GAAe,IAAXtqD,EAGC,CACDsqD,GAAO/iD,EACP,IAAK,IAAIysC,EAAI,EAAGA,EAAIrvB,EAAM3kB,EAAQg0C,IAC9BsW,GAAO,IAEX,OAAOA,CACX,CACA,OATIA,EAAM/iD,EAAMk0F,QAAQ92E,GASjBpd,EAAMk0F,QAAQ92E,EACzB,CACK,IAAKyoE,GAAkB+N,KAASn7F,EAASm7F,GAAe,IAARA,GACjD,OAAO5zF,EAAMk0F,QAAQN,GAEzB,IAAIhuC,EAAM5lD,EAAQ,GAIlB,MAHe,MAAX4lD,EAAI,IAAcsJ,GAA4B,WAAlBA,EAAOuE,SACnC7N,EAAMA,EAAI1qD,MAAM,IAEb0qD,CACX,EAQA8Q,EAAa08B,uBAAyB,SAAUpzF,EAAOod,GACnD,IAAIo4C,EAAOx1D,EAAMrF,MAAM,KACnBw5F,EAAO3+B,EAAK,GACZsO,EAAMqwB,EAAK17F,OACf,GAAIqrE,EAAM1mD,EAAK,CACX,IAAK,IAAIsuB,EAAI,EAAGA,EAAItuB,EAAM0mD,EAAKp4B,IAC3ByoD,EAAO,IAAMA,EAEjB3+B,EAAK,GAAK2+B,CACd,CACA,OAAO3+B,EAAK9sC,KAAK,IACrB,EAOAguC,EAAa88B,kBAAoB,SAAUxzF,GACvC,GAAIA,GAAS,IAAQ,CAEjB,IAAIo0F,GADJp0F,GAAS,KACMuC,WAAW5H,MAAM,KAAuB05F,GAAPD,EAAG,GAAcA,EAAG,IACpE,OAAOC,IAAYA,EAAQhuF,UAAU,EAAG,IAAM,EACxC+F,KAAK6wB,KAAKj9B,GAAOuC,WACjB6J,KAAKk9B,MAAMtpC,GAAOuC,UAC5B,CACA,MAAO,EACX,EACOm0D,CACX,CAzWkC,GCd9B20B,GAAa,cACbiJ,GAAY,WACZ/I,GAAa,CACbgJ,OAAQ,aACRC,KAAM,WACNlO,OAAQ,aACRoD,IAAK,UACLjwE,MAAO,WACPg7E,aAAc,mBAQdC,GAA4B,WAC5B,SAASA,IACT,CA+WA,OAtWAA,EAAWC,WAAa,SAAUhJ,EAASz8B,EAAQ08B,GAC/C,IAAI1+B,EAAQjzD,KACR4xF,EAAaplF,GAAKqlF,eAAeF,EAAMD,EAASz8B,EAAO68B,UACvD6I,EAAavmB,GAAO8Z,yBAAyB0D,EAAWgB,aAAcxe,GAAOkZ,mBAAmBqE,IAAO,EAAOjF,MAC9GkO,EAAe,CAAC,EAChBlO,MAAcz3B,EAAOk9B,mBACrBl9B,EAASzoD,GAAK4lF,yBAAyBn9B,EAAQy8B,IAEnD,IAGImJ,EAHAxI,EAAap9B,EAAOuE,QACpBhtD,GAAK8lF,oBAAoBr9B,EAAOs9B,SAAUX,EAAWI,WAAY/8B,EAAO30D,MAAM,EAAOosF,KAAagF,EAAU,IAC5GoJ,EAAc,GAElB,GAAIjyB,GAAYwpB,GACZvF,GAAW,oDAEV,CACDuF,EAAa7lF,GAAKkmF,wBAAwBL,GAC1CuI,EAAe,CAAE3I,UAAWzlF,GAAK0lF,aAAa5wF,KAAK2zD,EAAO68B,UAAW53C,QAASm4C,EAAY0I,aAAc,CAAC,EAAGrJ,QAASA,GASrH,IARA,IAAIsJ,EAAe3I,EAAW7uF,MAAMgJ,GAAK8mF,iBAAmB,GACxDI,EAAWsH,EAAax8F,OACxBy8F,EAAgB,EAChBC,EAAe,EACfC,GAAiB,EACjBC,EAAQT,EAAWhM,aACnBgE,EAAYjG,KAAakF,EAAWgB,aAAaj7B,QAC/Cyc,GAAO0a,gBAAgB8C,EAAWgB,aAAcxe,GAAOkZ,mBAAmBqE,IACvElgD,EAAI,EAAGA,EAAIiiD,EAAUjiD,IAAK,CAC/B,IAAIka,EAAMqvC,EAAax9B,SAAS/rB,EAAEnpC,WAAY,KAC1CuhE,EAAMle,EAAIntD,OACV2pB,EAAmB,MAAXwjC,EAAI,GAAc,IAAMA,EAAI,GACpCqd,OAAW,EACXqyB,OAAY,EACZC,EAAU/J,GAAgB,GAAKppE,GAC/BozE,EAAoB,IAAR1xB,EAAa,GAAK,IAKlC,OAJIsxB,IACAF,EAAgBC,EAChBC,GAAiB,GAEbhzE,GACJ,IAAK,IACL,IAAK,IACD,IAAIqzE,OAAW,EAEXA,EADA9O,KACWjnF,GAAS,QAAU+G,GAAKumF,WAAW,GAAKlpB,GAAM+nB,EAAWI,YAGzDJ,EAAWI,WAAW,GAAKxlF,GAAKwmF,MAAM,GAAK5B,IAAY5kF,GAAKumF,WAAW,GAAKlpB,IAE3F,IAAI4xB,EAAarnB,GAAOoZ,cAAcgO,GACtCV,GAAe,IAAMz7F,OAAO6M,KAAKuvF,GAAYhtE,KAAK,KAAO,IACzD,MAEJ,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IAED,GADA4sE,GAAY,GACE,MAATlzE,GAAyB,MAATA,IAAiB0hD,EAAM,EAAG,CAC3C,IAAI6xB,OAAY,EAEZA,EADAhP,KACYjnF,GAAS,UAAY+G,GAAKumF,WAAW,GAAKlpB,GAAM+nB,EAAWI,YAG3DJ,EAAWI,WAAqB,OAAE,GAAKZ,IAAY5kF,GAAKumF,WAAW,GAAKlpB,IAExF+wB,EAAa,GAAKU,GAAWlnB,GAAOoZ,cAAckO,GAClDZ,GAAe,IAAMz7F,OAAO6M,KAAK0uF,EAAa,GAAKU,IAAU7sE,KAAK,KAAO,GAC7E,MACK,GAAa,MAATtG,EAAc,CACnB,GAAI0hD,EAAM,EACN,SAEJb,GAAW,EACX8xB,GAAe,IAAMM,EAAQA,EAAQ,IAAMA,EAA5B,IACnB,MAEIpyB,GAAW,EACX8xB,GAAe,IAAMM,EAAQA,EAAQG,EAAW,IAEvC,MAATpzE,IACAyyE,EAAae,QAAS,GAE1B,MACJ,IAAK,IAEDb,GAAe,IAAMM,GADH,IAARvxB,EAAY,IAAM,IACOuxB,EAAQ,IAC3C,MAEJ,IAAK,IACDC,EAAYryB,GAAW,EAEnB8xB,GADQ,IAARjxB,EACe,IAAMuxB,EAAQA,EAAQ,IAGtB,IAAMA,EAAQ,IAAMvxB,EAAM,MAE7C,MACJ,IAAK,IACDwxB,GAAY,EACZ,IAAIO,EAAclP,KACdjnF,GAAS,aAAcmsF,EAAWI,YAClCvsF,GAAS,yBAA0BmsF,EAAWI,YAClD4I,EAAa,GAAKU,GAAWlnB,GAAOoZ,cAAcoO,GAClDd,GAAe,IAAMz7F,OAAO6M,KAAK0uF,EAAa,GAAKU,IAAU7sE,KAAK,KAAO,IACzE,MAEJ,IAAK,IACD4sE,GAAY,EACZ,IAAInI,EAASrpB,GAAO,EAAK,UAAqB,IAARA,EAAa,WAAa,YAChE+wB,EAAa,GAAKU,GAAWlnB,GAAOoZ,cAAcd,KAC9CjnF,GAAS,OAAQmsF,EAAWI,YAAcvsF,GAAS,QAAUytF,EAAOtB,EAAWI,aACnF8I,GAAe,IAAMz7F,OAAO6M,KAAK0uF,EAAa,GAAKU,IAAU7sE,KAAK,KAAO,KACzE,MAEJ,IAAK,IAED4sE,EAAsB,KADX,IAAI5iF,MAAO67E,oBAEtBsG,EAAa,GAAKU,GAAW71F,GAAS,sBAAuBmsF,EAAWgB,cACxE,IAAIiJ,EAAQjB,EAAa,GAAKU,GAE1BQ,GADJjB,EAAYhxB,EAAM,GACQ,QAAUgyB,EAAMrH,WAC1CsH,EAAWA,EAASn6F,QAAQ,KAAMgxF,EAAU1D,eAC5C6L,GAAe,IAAM96F,KAAK+7F,kBAAkBD,EAAUD,EAAOT,GAAS,KACtED,GAAiB,EACjBD,EAAeL,EAAW,EAAI,GAC9B,MAEJ,IAAK,IAEDC,GAAe,IADDnvC,EAAIhqD,QAAQ,KAAM,IACD,KAC/B,MAEJ,QACIm5F,GAAe,UAMvB,GAHIO,IACAT,EAAaG,aAAa,GAAKO,GAAW,CAAEtyB,SAAUA,EAAUjF,IAAKtyB,EAAI,EAAIwpD,EAAeJ,SAAUA,IAEtGppD,IAAMiiD,EAAW,IAAM9H,GAAkBkP,GAAc,CACvD,IAAIptB,EAASlzB,OACbogD,EAAaoB,YAAc,IAAItuB,EAAO,IAAMotB,EAAc,IAAK,IACnE,CACJ,CACJ,CACA,OAAO,SAAU/0F,GACb,IAAIk2F,EAAkBhpC,EAAMipC,kBAAkBn2F,EAAO60F,EAAcD,GACnE,GAAI/O,GAAkBqQ,KAAqB58F,OAAO6M,KAAK+vF,GAAiBz9F,OACpE,OAAO,KAEX,GAAIo8F,EAAa3I,UAAW,CACxB,IAAIkK,EAAO,CAAC,EACRpM,EAAQkM,EAAgBrM,KACxBwM,EAAQH,EAAgBxM,IACxBK,EAASmM,EAAgBz8E,MACzB68E,EAAStM,EAASA,EAAQ,GAAM,GAChCuM,EAAkC,IAAlBD,EAAO79F,OACtBuxF,GAAUD,GAAWsM,IAASE,IAC/BH,EAAOpP,GAAYwC,aAAa,IAAI92E,OAEpC6jF,IACAvM,EAAQvyB,UAAU2+B,EAAKvM,KAAO,IAAI3uF,MAAM,EAAG,GAAKo7F,EAAQ,KAE5D,IAAIrK,EAAajF,GAAY+D,YAAYf,GAASoM,EAAKvM,KAAME,GAAUqM,EAAK38E,MAAO48E,GAASD,EAAK98E,MACjG48E,EAAgBrM,KAAOoC,EAAWnC,cAClCoM,EAAgBz8E,MAAQwyE,EAAWrC,WAAa,EAChDsM,EAAgBxM,IAAMuC,EAAWtC,SACrC,CACA,OAAOz8B,EAAMspC,cAAcN,EAC/B,CACJ,EAQAxB,EAAW8B,cAAgB,SAAUn1F,EAASrB,GAC1C,IAAI4kD,EAAM5kD,GAAS,IAAI0S,KACvBkyC,EAAI6xC,gBAAgB,GACpB,IACIltE,EAAIloB,EAAQwoF,KACZqE,EAAQ7sF,EAAQ6rF,WAChB4I,EAAQz0F,EAAQgsF,SACpB,IAAKvqB,GAAYv5C,GAAI,CAEjB,IADWA,EAAI,IAAI9wB,QACR,EAEP8wB,GADoD,IAAtCnd,KAAKk9B,MAAMsb,EAAIklC,cAAgB,KAGjDllC,EAAI8xC,YAAYntE,EACpB,CACA,IAAK,IAAI48D,EAAK,EAAGwQ,EAZL,CAAC,OAAQ,SAAU,SAAU,eAAgB,QAAS,OAYhCxQ,EAAKwQ,EAAQl+F,OAAQ0tF,IAAM,CACzD,IAAI3vE,EAAMmgF,EAAQxQ,GACdyQ,EAASv1F,EAAQ,GAAKmV,GAI1B,GAHIssD,GAAY8zB,IAAmB,QAARpgF,GACvBouC,EAAIiyC,QAAQ,IAEX/zB,GAAY8zB,GACb,GAAY,UAARpgF,EAAiB,CAEjB,IADAogF,GAAU,GACG,GAAKA,EAAS,GACvB,OAAO,IAAIlkF,KAAK,WAEpB,IAAIokF,EAAQlyC,EAAI+kC,UAChB/kC,EAAIiyC,QAAQ,GACZjyC,EAAI2mC,GAAW,GAAK/0E,IAAMogF,GAC1B,IAAIG,EAAQ,IAAIrkF,KAAKkyC,EAAIklC,cAAe8M,EAAS,EAAG,GAAGjN,UACvD/kC,EAAIiyC,QAAQC,EAAQC,EAAQD,EAAQC,EACxC,KACK,CACD,GAAY,QAARvgF,EAAe,CACf,IAAIwgF,EAAU,IAAItkF,KAAKkyC,EAAIklC,cAAellC,EAAIglC,WAAa,EAAG,GAAGD,UACjE,GAAKiN,EAAS,GAAKA,EAASI,EACxB,OAAO,IAEf,CACApyC,EAAI,GAAK2mC,GAAW,GAAK/0E,IAAMogF,EACnC,CAER,CACA,IAAK9zB,GAAYorB,GAAQ,CACrB,IAAIsG,EAAO5vC,EAAIupC,WACD,OAAVD,EACAtpC,EAAIqyC,SAASzC,GAAiB,KAATA,EAAc,EAAI,KAEzB,KAATA,GACL5vC,EAAIqyC,SAAS,EAErB,CACA,IAAKn0B,GAAYgzB,GAAQ,CACrB,IAAIoB,EAAUpB,EAAQlxC,EAAI2pC,oBACV,IAAZ2I,GACAtyC,EAAIuyC,WAAWvyC,EAAIwyC,aAAeF,EAE1C,CACA,OAAOtyC,CACX,EASA8vC,EAAWyB,kBAAoB,SAAUn2F,EAAO60F,EAAc3P,GAC1D,IAAI1zC,EAAUxxC,EAAMvC,MAAMo3F,EAAaoB,aACnCoB,EAAa,CAAE,KAAQ,EAAG,OAAU,EAAG,OAAU,GACrD,GAAIxR,GAAkBr0C,GAClB,OAAO,KAIP,IADA,IACS20C,EAAK,EAAGmR,EADLh+F,OAAO6M,KAAK0uF,EAAaG,cACH7O,EAAKmR,EAAQ7+F,OAAQ0tF,IAAM,CACzD,IAAIh7C,EAAOmsD,EAAQnR,GACfoR,EAAY1C,EAAaG,aAAa,GAAK7pD,GAC3CqsD,EAAchmD,EAAQ+lD,EAAUv5B,KACpC,GAAIu5B,EAAUt0B,SACVo0B,EAAW,GAAKlsD,GAAQlxC,KAAKw9F,qBAAqBD,EAAatS,QAG/D,GAAa,aAAT/5C,GAAwB23B,GAAY00B,GAgBnC,CAEDA,EAAyB,UAATrsD,GAAuB0pD,EAAa3I,WAAwC,OAAzB2I,EAAalJ,SAA6C,UAAzBkJ,EAAalJ,SAAgD,UAAzBkJ,EAAalJ,QACvE6L,EAAxEA,EAAY,GAAGx8F,cAAgBw8F,EAAYnxF,UAAU,GAAGxL,cAC9D28F,EAAyB,UAATrsD,GAA+B,eAATA,GAA0B0pD,EAAalJ,UAAoD,IAAzCkJ,EAAalJ,QAAQ1lF,QAAQ,SAAmE,IAHnK,CAAC,QAAS,QAAS,SAG6GA,QAAQ4uF,EAAalJ,SACpK6L,EAAY38F,cAAgB28F,EAClCH,EAAW,GAAKlsD,GAAQ0pD,EAAa,GAAK1pD,GAAM,GAAKqsD,EACzD,KAvBsD,CAClD,IAAIx5B,EAAMu5B,EAAUv5B,IAChBzK,OAAM,EACNmkC,EAASlmD,EAAQwsB,EAAM,GACvBi2B,GAAQnxB,GAAY40B,GACpBH,EAAUzC,SACVvhC,EAA+D,GAAzDt5D,KAAK09F,aAAa1D,EAAMyD,EAAQlmD,EAAQwsB,EAAM,GAAIknB,IAGxD3xB,EAA+D,GAAzDt5D,KAAK09F,aAAa1D,EAAMyD,EAAQlmD,EAAQwsB,EAAM,GAAIknB,GACxD3xB,GAAOt5D,KAAK09F,aAAa1D,EAAMziD,EAAQwsB,EAAM,GAAIxsB,EAAQwsB,EAAM,IAAKknB,IAEnEW,GAAkBtyB,KACnB8jC,EAAW,GAAKlsD,GAAQooB,EAEhC,CAUR,CAKJ,OAJQshC,EAAae,SACbyB,EAAWzB,QAAS,GAGrByB,CACX,EAQA3C,EAAW+C,qBAAuB,SAAUz3F,EAAOkvD,GAE/C,OADAlvD,EAAQquE,GAAO2Z,kBAAkBhoF,EAAOkvD,EAAOy5B,iBAAkBz5B,EAAOw5B,aACpE4L,GAAU/4F,KAAKyE,IACPA,EAEL,IACX,EASA00F,EAAWsB,kBAAoB,SAAUvH,EAAYmJ,EAAOvO,GACxD,IACItmC,EADA5O,EAAUyjD,EAAMhJ,UAEhBiJ,EAAS,IAAMxO,EAAN,KAA2BA,EAAS,IACjDtmC,EAAM0rC,EAAW7yF,QAAQ,IAAK,OAO9B,IAAIk8F,GALA/0C,GAD8B,IAA9B0rC,EAAWxoF,QAAQ,MACb88C,EAAInnD,QAAQ,SAAU,IAAMi8F,EAAS,KAGrC90C,EAAInnD,QAAQ,OAAQ,IAAMi8F,EAAS,OAEzBl9F,MAAM,KAAK+rC,KAAI,SAAUkf,GACzC,OAAOzR,EAAQv4C,QAAQ,MAAOgqD,EAClC,IAEA,OADA7C,EAAM+0C,EAASpvE,KAAK,KAAO,IAAMkvE,EAAMlJ,aAE3C,EAUAgG,EAAWiD,aAAe,SAAU1D,EAAM5B,EAAMC,EAAMpN,GAClD,IAAI6S,EAAO9D,EAAO5B,EAAOC,EACzB,IAAKyF,EACD,OAAO,EAEX,IAAI/3F,EAAQ/F,KAAKw9F,qBAAqBM,EAAM7S,GAC5C,OAAI+O,GACQj0F,EAELA,CACX,EACO00F,CACX,CAlXgC,GCjB5BsD,GAAa,IADJvjD,OACe,qEACxBwjD,GAAa,KACb9xF,GAAO,CAAC,YAAa,YAMrB+xF,GAA8B,WAC9B,SAASA,IACT,CAqHA,OA5GAA,EAAaC,aAAe,SAAUxM,EAASz8B,EAAQ08B,GACnD,IAAI1+B,EAAQjzD,KACR4xF,EAAaplF,GAAKqlF,eAAeF,EAAMD,EAAS,IAAI,GACpDkJ,EAAe,CAAEuD,QAAQ,GACxB3xF,GAAK2pF,YAAY70F,KAAK2zD,EAAOuE,UAAcvE,EAAOuE,QACnDl2C,GAAOs3E,EAAcpuF,GAAK+pF,yBAAyBthC,EAAOuE,QAAU,MACpEohC,EAAauD,QAAS,EACjBvD,EAAa1D,gBACVjiC,EAAO+hC,wBACP4D,EAAa5D,sBAAwB/hC,EAAO+hC,wBAKpD1zE,GAAOs3E,EAAcpuF,GAAK4pF,aAAanhC,EAAOuE,OAAQ,KAAM,OAEhE,IAII4kC,EAJAzmC,EAAUlyD,GAAS,UAAWmsF,EAAWgB,cACzC+H,EAAavmB,GAAO8Z,yBAAyB0D,EAAWgB,aAAcxe,GAAOkZ,mBAAmBqE,IAAO,EAAMjF,MAIjH,GAHAkO,EAAayD,YAAcjqB,GAAOsZ,eAAeruF,OAAO6M,KAAKyuF,EAAW9L,cACxE+L,EAAa0D,SAAW3D,EAAW/L,mBAAmB1iF,GAAK,IAEtDwgF,KAUDkO,EAAaxD,MAAQ9zE,GAAO,CAAC,EAAG,CAAC,EAAG7d,GAASm1F,EAAat6F,KAAO,QAASq3D,IAC1EijC,EAAatE,MAAQhzE,GAAO,CAAC,EAAG,CAAC,EAAG7d,GAASm1F,EAAat6F,KAAO,QAASq3D,IAChD,aAAtBijC,EAAat6F,MAAuB20D,EAAOyH,UAC3ClwD,GAAK6qF,sBAAsB,CAACuD,EAAatE,MAAOsE,EAAaxD,OAAQ3xF,GAAS,iBAAkBkyD,GAAU1C,EAAOyH,eAXrH,GADA0hC,EAAgB5xF,GAAKkqF,iBAAiBkE,EAAat6F,KAAMq6F,EAAWvM,aAAcwD,EAAW6D,cAAemF,EAAajE,WACtG,CAEf,IAAIj2F,GADJ09F,EAAgBA,EAAcz8F,QAAQ,UAAW6K,GAAK2qF,kBAC5Bz2F,MAAM,KAChCk6F,EAAaxD,MAAQ5qF,GAAK8qF,cAAc52F,EAAM,IAAM,IAAMA,EAAM,IAAI,EAAM,IAC1Ek6F,EAAatE,MAAQ9pF,GAAK8qF,cAAc52F,EAAM,IAAI,EAAM,GAC5D,CASJ,OAAO,SAAUqF,GACb,OAAOktD,EAAMsrC,gBAAgBx4F,EAAO60F,EAAcD,EACtD,CACJ,EASAsD,EAAaM,gBAAkB,SAAUx4F,EAAOqB,EAASuzF,GACrD,IAAI6D,EACA/H,EACAgI,EACAvE,EACAl3E,EACA8lC,EACJ,IAAyC,IAArC/iD,EAAMiG,QAAQ5E,EAAQk3F,UACtB,OAAO36D,IAGP59B,EAAQquE,GAAO2Z,kBAAkBhoF,EAAOqB,EAAQi3F,YAAa1D,EAAW9L,aAG7C,KAD3B9oF,GAAgC,KADhCA,EAAQquE,GAAO2Z,kBAAkBhoF,EAAO40F,EAAWjM,iBAAkBiM,EAAWlM,cAClEziF,QAAQ,KAAcjG,EAAMpE,QAAQ,KAAM,OAASoE,GACvDiG,QAAQ,OACdjG,EAAQ,IAAMA,GAElB,IAAIwxC,EAAUxxC,EAAMvC,MAAMu6F,IAC1B,GAAInS,GAAkBr0C,GAClB,OAAOmnD,IAEXxE,EAAO3iD,EAAQ,GACfknD,EAAYlnD,EAAQ,GACpB,IAAIonD,EAAWpnD,EAAQ,GAyBvB,OAxBAv0B,EAAMu0B,EAAQ,GAGdk/C,GAFA+H,EAAap3F,EAAQ+2F,OAAWjE,IAAS9yF,EAAQgwF,MAAMqC,OAAWz2E,IAAQ5b,EAAQgwF,MAAMsC,MAC3C,IAAvCQ,EAAKluF,QAAQ5E,EAAQgwF,MAAMqC,SAAwD,IAArCz2E,EAAIhX,QAAQ5E,EAAQgwF,MAAMsC,OAE1EtyF,EAAQgwF,MAAMX,UACdrvF,EAAQkvF,MAAMG,UAClBgI,EAAYA,EAAU98F,QAAQq8F,GAAY,IACtCW,IACAF,GAAaE,GAEjB71C,GAAO21C,GACc,YAAjBr3F,EAAQ9G,MAAsBm2F,KAC9B3tC,GAAY,MAEZ1hD,EAAQ+2F,QAAU/2F,EAAQ8vF,kBAC1BpuC,EAAM81C,WAAW91C,EAAImxC,QAAQ7yF,EAAQ+2F,OAChCK,EAAap3F,EAAQgwF,MAAMJ,sBAAwB5vF,EAAQkvF,MAAMU,sBAAyB5vF,EAAQ8vF,kBAEvG9vF,EAAQ4vF,wBACRluC,EAAM9oD,KAAK6+F,qBAAqBJ,EAAWr3F,EAAS0hD,EAAK01C,IAEzDA,IACA11C,IAAQ,GAELA,CAEf,EACAm1C,EAAaY,qBAAuB,SAAU94F,EAAOqB,EAAS0hD,EAAK01C,GAC/D,IAAIM,EAAoB/4F,EAAMrF,MAAM,KAKpC,OAJIo+F,EAAkB,IAAMA,EAAkB,GAAGtgG,OAAS4I,EAAQ4vF,wBAC9DluC,GAAQA,EAAImxC,QAAQ7yF,EAAQ+2F,OACvBK,EAAap3F,EAAQgwF,MAAMJ,sBAAwB5vF,EAAQkvF,MAAMU,sBAAyB5vF,EAAQ4vF,wBAEpGluC,CACX,EACOm1C,CACX,CAxHkC,GCV9Bc,GAA0B,WAC1B,SAASA,EAASruE,GACd1wB,KAAKg/F,SAAW,GAChBh/F,KAAKi/F,cAAgB,CAAC,EAClBrT,GAAkBl7D,KAGtB1wB,KAAK0wB,QAAUA,EACnB,CAyMA,OA/LAquE,EAASz/F,UAAUslD,GAAK,SAAUs6C,EAAUnU,EAASr6D,EAASla,GAC1D,IAAIo1E,GAAkBb,GAAtB,CAGA,IAAIoU,EAAQzuE,GAAW1wB,KAAK0wB,QACxB1wB,KAAKo/F,SAASF,GACdl/F,KAAKi/F,cAAc,GAAKC,GAAY,CAAC,CAAEnU,QAASA,EAASr6D,QAASyuE,EAAO3oF,GAAIA,IAG5Eo1E,GAAkBp1E,GAMbxW,KAAKq/F,iBAAiBr/F,KAAKi/F,cAAc,GAAKC,GAAWnU,IAC/D/qF,KAAKi/F,cAAc,GAAKC,GAAU3wF,KAAK,CAAEw8E,QAASA,EAASr6D,QAASyuE,KANjC,IAA/Bn/F,KAAKg/F,SAAShzF,QAAQwK,KACtBxW,KAAKg/F,SAASzwF,KAAKiI,GACnBxW,KAAKi/F,cAAc,GAAKC,GAAU3wF,KAAK,CAAEw8E,QAASA,EAASr6D,QAASyuE,EAAO3oF,GAAIA,IATvF,CAeJ,EASAuoF,EAASz/F,UAAUqlD,IAAM,SAAUu6C,EAAUnU,EAASv0E,GAClD,IAAIxW,KAAKo/F,SAASF,GAAlB,CAGA,IAAI5B,EAAY73F,GAASy5F,EAAUl/F,KAAKi/F,eACxC,GAAIlU,GACA,IAAK,IAAIt5C,EAAI,EAAGA,EAAI6rD,EAAU9+F,OAAQizC,IAClC,GAAIj7B,GACA,GAAI8mF,EAAU9/B,SAAS/rB,EAAEnpC,WAAY,KAAKkO,KAAOA,EAAI,CACjD8mF,EAAUh1D,OAAOmJ,EAAG,GACpB,IAAI6tD,EAAgBt/F,KAAKg/F,SAAShzF,QAAQwK,IACnB,IAAnB8oF,GACAt/F,KAAKg/F,SAAS12D,OAAOg3D,EAAe,GAExC,KACJ,OAEC,GAAIvU,IAAYuS,EAAU9/B,SAAS/rB,EAAEnpC,WAAY,KAAKyiF,QAAS,CAChEuS,EAAUh1D,OAAOmJ,EAAG,GACpB,KACJ,cAIGzxC,KAAKi/F,cAAc,GAAKC,EArBnC,CAuBJ,EAUAH,EAASz/F,UAAUigG,OAAS,SAAUL,EAAUM,EAAUC,EAAgBC,GACtE,GAAI1/F,KAAKo/F,SAASF,GACVO,GACAA,EAAep+F,KAAKrB,KAAMw/F,OAFlC,CAMIA,IACAA,EAASn7F,KAAO66F,GAEpB,IACI5B,EAAY73F,GAASy5F,EAAUl/F,KAAKi/F,eAAeh+F,MAAM,GAC7D,GAAIhC,OAAkB,OAClB,OAAOe,KAAK2/F,eAAerC,EAAWkC,EAAUC,EAAgBC,EAAc,GAG9E,IAAK,IAAIxT,EAAK,EAAG0T,EAActC,EAAWpR,EAAK0T,EAAYphG,OAAQ0tF,IAAM,CACrE,IAAIqC,EAAMqR,EAAY1T,GACtBqC,EAAIxD,QAAQ1pF,KAAKktF,EAAI79D,QAAS8uE,EAClC,CACIC,GACAA,EAAep+F,KAAKrB,KAAMw/F,EAflC,CAkBJ,EACAT,EAASz/F,UAAUqgG,eAAiB,SAAUE,EAAML,EAAUC,EAAgBC,EAAc9wE,GACxF,IAAIqkC,EAAQjzD,KACR8/F,EAAYlxE,IAAUixE,EAAKrhG,OAAS,EACxC,GAAIowB,EAAQixE,EAAKrhG,OAAQ,CACrB,IAAIuhG,EAAQF,EAAKriC,SAAS5uC,EAAMtmB,WAAY,KACxCoqC,EAAUqtD,EAAMhV,QAAQ1pF,KAAK0+F,EAAMrvE,QAAS8uE,GAChD,GAAI9sD,GAAmC,oBAAjBA,EAAQlpB,KAAqB,CAC/C,IAAKi2E,EACD,OAAO/sD,EAEXA,EAAQlpB,MAAK,SAAUvO,GAGnB,GAFAA,EAAuB,kBAATA,GAAqBg4C,EAAM+sC,OAAO/kF,GAAQutB,KAAKmW,MAAM1jC,EAAMg4C,EAAMgtC,aAAehlF,EAC9FqI,GAAOk8E,EAAUA,EAAUvkF,GAAM,IAC7BwkF,IAAkBK,EAIlB,OAAO7sC,EAAM0sC,eAAeE,EAAML,EAAUC,EAAgBC,EAAc9wE,EAAQ,GAHlF6wE,EAAep+F,KAAK0+F,EAAMrvE,QAAS8uE,EAK3C,IAAG/1E,OAAM,SAAUxO,GACXykF,GACAA,EAAar+F,KAAK0+F,EAAMrvE,QAAyB,kBAATzV,GACpCg4C,EAAM+sC,OAAO/kF,GAAQutB,KAAKmW,MAAM1jC,EAAMg4C,EAAMgtC,aAAehlF,EAEvE,GACJ,KACK,KAAIwkF,IAAkBK,EAIvB,OAAO9/F,KAAK2/F,eAAeE,EAAML,EAAUC,EAAgBC,EAAc9wE,EAAQ,GAHjF6wE,EAAep+F,KAAK0+F,EAAMrvE,QAAS8uE,EAIvC,CACJ,CACJ,EACAT,EAASz/F,UAAU2gG,YAAc,SAAU1jF,EAAKxW,GAE5C,OAAI2mF,IAA6B,kBAAV3mF,GAAgD,OAA1BA,EAAMvC,MADpC,wCAEH,IAAIiV,KAAK1S,GAEbA,CACZ,EACAg5F,EAASz/F,UAAU0gG,OAAS,SAAUj6F,GAClC,IACIyiC,KAAKmW,MAAM54C,EACf,CACA,MAAOlG,GACH,OAAO,CACX,CACA,OAAO,CACX,EAMAk/F,EAASz/F,UAAUk3B,QAAU,WACzBx2B,KAAKi/F,cAAgBj/F,KAAK0wB,aAAUsf,CACxC,EAMA+uD,EAASz/F,UAAU4gG,cAAgB,WAC/B,IAAIC,EAAYngG,KAAKi/F,cAAoC,qBACzD,GAAIkB,EAAW,CACX,IAAK,IAAI1uD,EAAI,EAAGA,EAAI0uD,EAAU3hG,OAAQizC,IAAK,CACvC,IAAI2uD,EAAaD,EAAU3iC,SAAS/rB,EAAEnpC,WAAY,KAAKooB,QACnD0vE,GAAcA,EAAWC,gBAAkBD,EAAWE,WAAaF,EAAWG,aAC9EvgG,KAAK2kD,IAAI,uBAAwBy7C,EAAWC,eAAgBD,EAAWE,UACvE7uD,IAER,CACKzxC,KAAKi/F,cAAoC,qBAAEzgG,eACrCwB,KAAKi/F,cAAoC,oBAExD,CACJ,EAOAF,EAASz/F,UAAU8/F,SAAW,SAAUluD,GACpC,OAA0E,IAAnE7xC,OAAOC,UAAUC,eAAe8B,KAAKrB,KAAKi/F,cAAe/tD,IAAmBlxC,KAAKi/F,cAAc,GAAK/tD,GAAM1yC,QAAU,CAC/H,EAQAugG,EAASz/F,UAAU+/F,iBAAmB,SAAUJ,EAAelU,GAC3D,IAAK,IAAImB,EAAK,EAAGsU,EAAkBvB,EAAe/S,EAAKsU,EAAgBhiG,OAAQ0tF,IAAM,CAEjF,GADUsU,EAAgBtU,GAClBnB,UAAYA,EAChB,OAAO,CAEf,CACA,OAAO,CACX,EACOgU,CACX,CAlN8B,GCQnB0B,GAAe,IAAI1B,GAInB2B,IAAc,EAMdC,GAAW,CAAC,EAMZC,GAAiB,QAMjB/K,GAAsB,MAqC7BgL,GAAsC,WACtC,SAASA,EAAqBC,GACtBA,IACA9gG,KAAK0xF,QAAUoP,EAEvB,CA4HA,OArHAD,EAAqBvhG,UAAUyhG,cAAgB,SAAU35F,GACrD,OAAOoqF,GAAWC,WAAWzxF,KAAKghG,aAAc55F,GAAW,CAAE9G,KAAM,OAAQiyF,SAAU,SAAWoO,GACpG,EAOAE,EAAqBvhG,UAAU2hG,gBAAkB,SAAU75F,GAOvD,OANIA,IAAYA,EAAQs1D,WACpBt1D,EAAQs1D,SAAWm5B,IAEnBnJ,MAActlF,IAAYA,EAAQoyD,SAClCpyD,EAAQ6vF,sBAAwB,GAE7Bx6B,GAAa24B,gBAAgBp1F,KAAKghG,aAAc55F,GAAW,CAAC,EAAGu5F,GAC1E,EAOAE,EAAqBvhG,UAAU4hG,cAAgB,SAAU95F,GACrD,OAAOqzF,GAAWC,WAAW16F,KAAKghG,aAAc55F,GAAW,CAAEmrF,SAAU,QAASjyF,KAAM,QAAUqgG,GACpG,EAOAE,EAAqBvhG,UAAU6hG,gBAAkB,SAAU/5F,GAIvD,OAHIslF,MAActlF,IAAYA,EAAQoyD,SAClCpyD,EAAQ6vF,sBAAwB,GAE7BgH,GAAaC,aAAal+F,KAAKghG,aAAc55F,GAAW,CAAEoyD,OAAQ,KAAOmnC,GACpF,EAQAE,EAAqBvhG,UAAU8hG,aAAe,SAAUr7F,EAAOkvD,GAC3D,OAAOj1D,KAAKihG,gBAAgBhsC,EAArBj1D,CAA6B+F,EACxC,EAQA86F,EAAqBvhG,UAAU+hG,WAAa,SAAUt7F,EAAOkvD,GACzD,OAAOj1D,KAAK+gG,cAAc9rC,EAAnBj1D,CAA2B+F,EACtC,EAQA86F,EAAqBvhG,UAAUgiG,UAAY,SAAUv7F,EAAOkvD,GACxD,OAAOj1D,KAAKkhG,cAAcjsC,EAAnBj1D,CAA2B+F,EACtC,EAQA86F,EAAqBvhG,UAAUiiG,YAAc,SAAUx7F,EAAOkvD,GAC1D,OAAOj1D,KAAKmhG,gBAAgBlsC,EAArBj1D,CAA6B+F,EACxC,EASA86F,EAAqBvhG,UAAUkiG,eAAiB,SAAUvsC,EAAQwsC,GAC9D,OAAOC,GAASC,wBAAwB3hG,KAAKghG,aAAc/rC,EAAQ0rC,GAAUc,EACjF,EASAZ,EAAqBvhG,UAAUsiG,iBAAmB,SAAU3sC,EAAQ4sC,GAChE,OAAOH,GAASI,sBAAsB9hG,KAAKghG,aAAc/rC,EAAQ0rC,GAAUkB,EAC/E,EAMAhB,EAAqBvhG,UAAUyiG,kBAAoB,WAC/C,OAAOL,GAASM,YAAYhiG,KAAKghG,aAAcL,GACnD,EAMAE,EAAqBvhG,UAAU0hG,WAAa,WACxC,OAAOhhG,KAAK0xF,SAAWkP,EAC3B,EACOC,CACX,CAlI0C,GC9D1C,IA0BWa,GA1BPh0B,GAASlzB,OACFynD,GAAuB,CAC9B,QAAS,CACL,EAAK,QACL,EAAK,kBACL,EAAK,yBACL,EAAK,2BACL,EAAK,eACL,EAAK,sBACL,EAAK,SACL,EAAK,SACL,EAAK,sCACL,EAAK,sCACL,EAAK,gCACL,EAAK,UACL,EAAK,WACL,EAAK,iCACL,EAAK,gCACL,EAAK,YACL,EAAK,eAQb,SAAWP,GAEPA,EAAS1J,kBAAoB,qHAE7B0J,EAASQ,YAAc,yHACvBR,EAAS5M,eAAiB,uBAC1B,IAAIqN,EAAgB,SACpBT,EAASvK,gBAAkB,IAC3B,IAAIpI,EAAS,CAAC,WAAY,MAAO,QAAS,WACtCqT,EAAe,8BACfpH,EAAe,CACf,EAAK,GACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,IAAM,IACN,KAAM,SACN,GAAM,KACN,EAAK,OACL,KAAQ,OACR,EAAK,OAET0G,EAASW,oBAAsB,aAE/BX,EAASxP,aAAe,WACxB,IAAIoQ,EAAiB,CACjB,IAAO,EACP,IAAO,EACP,IAAO,EACP,IAAO,EACP,IAAO,EACP,IAAO,EACP,IAAO,GAEXZ,EAASvL,YAAc,IAAIzoB,GAAO,kCAAmC,KACrEg0B,EAASa,oBAAsB,IAAI70B,GAAO,+BAAgC,KAC1Eg0B,EAASc,sBAAwB,WACjC,IAAIC,EAAa,CACb,EAAK,aACL,IAAK,YACL,IAAK,aACL,EAAG,QACH,EAAG,QA0kBP,SAASnQ,EAAoBC,EAAUP,EAAY1xF,EAAM2xF,EAAWyQ,GAChE,IAAIrQ,EACAsQ,EAAQriG,GAAQ,OACpB,GAAIoiG,EACArQ,EAAaD,EAAyB,CAAEG,SAAUA,GAAYmQ,GAAelpC,QACzE44B,EAAyB,CAAEG,SAAU,KAAO,SAAS/4B,WAExD,CACD,IAAkD,IAA9CkoC,EAASkB,cAAc52F,QAAQumF,IAE/B,GADAF,EAAa5sF,GAASk9F,EAAQ,WAAapQ,EAAUP,GACvC,aAAV2Q,EAAsB,CACtB,IAAIE,EAAWp9F,GAAS,eAAiB8sF,EAAUP,GAC/C8Q,EAAWr9F,GAAS,eAAiB8sF,EAAUP,GACnDK,EAAaA,EAAW1wF,QAAQ,MAAOkhG,GAAUlhG,QAAQ,MAAOmhG,EACpE,OAGAzQ,EAAa5sF,GAAS,oCAAsC8sF,EAAUP,GAEtEnpB,GAAYwpB,IAA4B,QAAbE,IAC3BF,EAAa,QAErB,CACA,OAAOA,CACX,CAYA,SAASR,EAAeF,EAAMD,EAAShkE,EAAMs7C,GACzC,IAAIlgB,EAAM,CAAC,EACPi6C,EAAer1E,GAAQ,YAE3B,GADAo7B,EAAI8pC,aAAexe,GAAOgZ,cAAcuE,EAAMD,KAAahF,KAAagV,EAASsB,oBAAsBtB,EAASuB,eAC5Gj6B,EACAlgB,EAAI2sC,cAAgBhwF,GAAS,UAAWqjD,EAAI8pC,kBAE3C,CACD,IAAIsQ,EAAaxW,KAAa,QAAW,mBAAqBqW,EAC9Dj6C,EAAIkpC,WAAavsF,GAASy9F,EAAYp6C,EAAI8pC,aAC9C,CACA,OAAO9pC,CACX,CAYA,SAAS4tC,EAAiBp2F,EAAM6iG,EAAW5yD,EAAKomD,GAC5C,OAAOlxF,GAASnF,EAAO,wBACnB6iG,GAAaxM,EAAY,cAAgB,aAAcpmD,KAASomD,EAAYlxF,GAASnF,EAAO,wBAC5F6iG,EAAY,YAAa5yD,GAAO,GACxC,CAOA,SAASmiD,EAAwBl5B,GAC7B,IAAI4pC,EAAgB5pC,EAAOh2D,MAAMk+F,EAASW,qBAC1C,GAAIe,GAAiB1W,KAAY,CAC7B,IAAI2W,EAAyC,IAA5BD,EAAc,GAAG5kG,OAAe,MAAQ,OACzD,OAAOg7D,EAAO73D,QAAQ+/F,EAASW,oBAAqBgB,EACxD,CACA,OAAO7pC,CACX,CAQA,SAAS44B,EAAyBh1B,EAAes0B,GAC7C,IAAIl4B,EAAS4D,EAAc5D,QAAU4D,EAAcm1B,SAC/C+Q,EAAkB79F,IAAUisF,GAAW,SAAW,IAAMl4B,EAAQyoC,IAQpE,OAPKqB,IACDA,EAAkB79F,GAAS,SAAW+zD,EAAQyoC,KAE9CqB,IACAA,EAAkB5Q,EAAwB4Q,GAC1ClmC,EAAc5D,OAAS8pC,EAAgB3hG,QAAQ,KAAM,MAElDy7D,CACX,CASA,SAASm5B,EAAyBhE,GAC9B,IAAIh7C,EAAUg7C,EAAS/uF,MAAMk+F,EAASvL,aAClCrtC,EAAM,CAAC,EACP5O,EAAU3C,EAAQ,GAAGx2C,cAMzB,OALA+nD,EAAI6tC,UAAyB,MAAZz8C,EACjB4O,EAAIxoD,KAAOohG,EAAS6B,eAAe,GAAKrpD,GACpCq4C,EAAS/zF,OAAS,IAClBsqD,EAAIouC,eAAiB15B,SAASjmB,EAAQ,GAAI,KAEvCuR,CACX,CAYA,SAASwuC,EAAcp9C,EAASspD,EAAcC,EAASC,GACnD,IAAItM,EAAQsM,EAAe,CAAC,EAAI,CAAEjK,MAAO,GAAIC,KAAM,IAC/Cl2F,EAAQ02C,EAAQ12C,MAAMk+F,EAASQ,aACnC,GAAI1+F,EAAO,CACFkgG,IACDtM,EAAMqC,MAAQkK,EAAqBngG,EAAM,GAAIigG,GAC7CrM,EAAMsC,KAAOiK,EAAqBngG,EAAM,IAAKigG,GAC7CrM,EAAMwM,aAAepgG,EAAM,IAE/B,IAAIqgG,EAAWrgG,EAAM,GACrB,GAAIqgG,GAAYL,EAAc,CAC1B,IAAIM,EAASD,EAASrgG,MAAM2+F,GACvBvW,GAAkBkY,GAInB1M,EAAMM,gBAAkB,EAHxBN,EAAMM,gBAAkBoM,EAAOtlG,OAKnC44F,EAAMQ,gBAAkBiM,EAASrlG,OAAS,CAC9C,CACJ,CACA,OAAO44F,CACX,CAUA,SAASuM,EAAqBrqC,EAAKyqC,GAC/B,OAAIzqC,GACAA,EAAMA,EAAI33D,QAAQ+/F,EAASvK,gBAAiB4M,GAC5B,KAARA,EAAczqC,EAAI/1D,OAAS+1D,GAEhC,EACX,CAYA,SAASs8B,EAAkBH,EAAeuO,EAAclO,EAAWC,GAI/D,OAFkBA,EAAiB,IAAMtwF,GAAS,cAAgBu+F,GADrDlO,EAAa,IAAMA,EAAa,WAC4CL,IACrFhwF,GAAS,cAAgBu+F,EAAe,qBAAsBvO,IAAkB,GAExF,CAkCA,SAASwO,EAAmBzqC,EAAQg8B,EAAUzD,GAC1C,IAAIwD,EAAW,CAAEj1F,KAAM,UAAW22F,sBAAuB,EAAGD,sBAAuB,GAC/E98C,EAAUsf,EAAOh2D,MAAMk+F,EAASQ,aACpC,GAAItW,GAAkB1xC,IAA4B,KAAfA,EAAQ,IAAwB,QAAXsf,EAEpD,OADA+7B,EAASj1F,UAAO0vC,EACTulD,EAEXA,EAASkE,MAAQv/C,EAAQ,GACzBq7C,EAASmE,KAAOx/C,EAAQ,IACxB,IAAIgqD,EAAchqD,EAAQ,GACtBiqD,IAAeD,EAAY1gG,MAAM,OACjC4gG,GAAiE,IAAjDF,EAAYviG,QAAQ,MAAO,IAAIqK,QAAQ,KAC3DupF,EAASc,aAA4C,IAA9B6N,EAAYl4F,QAAQ,MAAeo4F,EAC1DF,EAAcA,EAAYviG,QAAQ,KAAM,IACxC,IAAI0iG,EAAenqD,EAAQ,GAwB3B,IAvBkC,IAA9BgqD,EAAYl4F,QAAQ,OACpBupF,EAAS2D,qBAAuBgL,EAAY1lG,OAAS0lG,EAAYl4F,QAAQ,MAExE4/E,GAAkByY,KACnB9O,EAAS0B,sBAAwBoN,EAAapM,YAAY,KAC1D1C,EAASyB,sBAAwBqN,EAAapM,YAAY,MAClB,IAApC1C,EAAS0B,wBACT1B,EAAS0B,sBAAwB,KAEG,IAApC1B,EAASyB,uBAAgCzB,EAASyB,sBAAwBzB,EAAS0B,yBACnF1B,EAASyB,sBAAwBzB,EAAS0B,wBAG7CrL,GAAkB4J,GAQnBlyE,GAAOiyE,EAAU+O,EAAkB,CAAC/O,EAASkE,MAAOlE,EAASmE,MAAO,IAAK,OAPzElE,EAAS4D,gBAAiB,EAC1B91E,GAAOiyE,EAAU+O,EAAkB,CAAC/O,EAASkE,MAAOlE,EAASmE,MAAO,IAAKlE,EAASG,iBAC7EJ,EAASiB,YACVlzE,GAAOiyE,EAAU+O,EAAkB,CAAC/O,EAASkE,MAAOlE,EAASmE,MAAO,IAAKlE,EAASQ,kBAMrFpK,GAAkBmG,GAAY,CAC/B,IAAIsD,EAAgBqB,EAAiBnB,EAASj1F,KAAMk1F,EAASE,aAAatH,aAAc2D,GAAW,GAC/FwD,EAASc,cACTd,EAASgC,eAAiB6M,EAAgB,IAAM5O,EAASE,aAAa1G,cAAcD,EAAO,IAC3FwG,EAASiC,UAAY/6B,GAAag7B,mBAAmBpC,EAAc30F,MAAM,KAAK,KAElF60F,EAASkE,MAAQlE,EAASkE,MAAM93F,QAAQ,KAAM,IAC9C4zF,EAASmE,KAAOyK,EAAe,IAAM5O,EAASmE,KAAK/3F,QAAQ,KAAM,IAAM4zF,EAASmE,KAAK/3F,QAAQ,KAAM,GACvG,CACA,OAAO4zF,CACX,CAWA,SAAS+O,EAAkB/0C,EAAOg1C,EAAQC,GAEtC,IADA,IAAIp9F,EAAU,CAAEqyF,MAAOlqC,EAAM,GAAImqC,KAAMnqC,EAAM,IACpC9d,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,IAAIkkB,EAAOpG,EAAMiO,SAAS/rB,EAAEnpC,WAAY,KACpCm8F,EAAM9uC,EAAK3pD,QAAQu4F,GACvB,IAAc,IAATE,IAAiBA,EAAM9uC,EAAK3pD,QAAQ,MAAWy4F,EAAM9uC,EAAKsiC,YAAY,MAAS,CAChF7wF,EAAQ,GAAKq7F,EAAWjlC,SAAS/rB,EAAEnpC,WAAY,MAAQqtD,EAAKrhB,OAAO,EAAGmwD,GAAOD,EAAS7uC,EAAKrhB,OAAOmwD,EAAM,GACxGr9F,EAAQ,GAAKq7F,EAAW,GAAK8B,KAAW,EACxCn9F,EAAQ9G,KAAO8G,EAAQovF,WAAa,WAAa,UACjD,KACJ,CACJ,CACA,OAAOpvF,CACX,CAgEA,SAASs9F,EAAcH,EAAQtvC,GAC3B,IAA6B,IAAzBsvC,EAAOv4F,QAAQ,KAAa,CAC5B,IAAItL,EAAQ6jG,EAAO7jG,MAAM,KACzB6jG,EAAU7jG,EAAM,GAAK+E,GAAS,mCAAoCwvD,GAC9Dv0D,EAAM,GAAGiB,QAAQ,IAAK8D,GAAS,qCAAsCwvD,GAC7E,MAEIsvC,EAASA,EAAO5iG,QAAQ,IAAK8D,GAAS,qCAAsCwvD,IAEhF,OAAOsvC,CACX,CAyFA,SAASI,EAAsBzqD,EAAS0qD,EAAWC,GAC/C3qD,GAAW,IACX,IAAK,IAAI97C,EAAI,EAAGA,EAAIwmG,EAAWxmG,IAC3B87C,GAAW,IAEf,GAAI0qD,EAAYC,EAEZ,IADA,IAAIC,EAAOD,EAAYD,EACdvmG,EAAI,EAAGA,EAAIymG,EAAMzmG,IACtB67C,GAAW,IAGnB,OAAOA,CACX,CAQA,SAAS6qD,EAAsB7qD,EAASs0C,GAGpC,IAFA,IAAIjzB,EAAOrhB,EAAQx5C,MAAM,KACrBskG,EAAU,GACL39E,EAAI,EAAGA,EAAImnE,EAAQnnE,IACxB29E,GAAW,IAEf,OAAOzpC,EAAK,GAAMypC,EAAU,IAAMzpC,EAAK,GAAMypC,CACjD,CAOA,SAASC,EAAgB/qD,GACrB,IAAIqhB,EAAOrhB,EAAQx5C,MAAM,KACrBskG,EAAUzpC,EAAK,GACf05B,EAAK,EAAI+P,EAAQxmG,OAAS,EAG9B07C,EAAU,GACV,IAAK,IAAI7yB,GAFT29E,GADY/P,GAAa,IAAPA,EAAY,IAAc,IAAPA,EAAW,KAAO,IACtC+P,GAEIxmG,OAAS,EAAG6oB,EAAI,EAAGA,GAAQ,EAC5C6yB,EAAU,IAAM8qD,EAAQ39E,EAAI,GAAK29E,EAAQ39E,EAAI,GAAK29E,EAAQxnC,SAASn2C,EAAE/e,WAAY,KAAO4xC,EAG5F,OADAA,EAAUA,EAAQj5C,MAAM,GACjBs6D,EAAK,GAAMrhB,EAAU,IAAMqhB,EAAK,GAAMrhB,CACjD,CA1jCAwnD,EAASpO,eAAiB,iCAC1BoO,EAASkB,cAAgB,CAAC,QAAS,SAAU,OAAQ,QACrDlB,EAASuB,cAAgB,CACrB,MAAS,CACL,UAAa,CACT,UAAa,CACT,OAAU,CACN,cAAe,CACX,YAAe,CACX,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,GAAM,MACN,GAAM,MACN,GAAM,OAEV,OAAU,CACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,IACN,GAAM,IACN,GAAM,KAEV,KAAQ,CACJ,EAAK,UACL,EAAK,WACL,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,OACL,EAAK,OACL,EAAK,SACL,EAAK,YACL,GAAM,UACN,GAAM,WACN,GAAM,cAIlB,KAAQ,CACJ,cAAe,CACX,YAAe,CACX,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,OAEX,OAAU,CACN,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KAEX,MAAS,CACL,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,MAEX,KAAQ,CACJ,IAAO,SACP,IAAO,SACP,IAAO,UACP,IAAO,YACP,IAAO,WACP,IAAO,SACP,IAAO,cAInB,WAAc,CACV,OAAU,CACN,KAAQ,CACJ,GAAM,KACN,GAAM,QAIlB,KAAQ,CACJ,SAAY,CACR,EAAK,gBACL,gBAAiB,oBACjB,EAAK,cACL,gBAAiB,cAErB,QAAW,CACP,EAAK,KACL,gBAAiB,MACjB,EAAK,KACL,gBAAiB,MAErB,UAAa,CACT,EAAK,IACL,gBAAiB,MACjB,EAAK,IACL,gBAAiB,OAGzB,YAAe,CACX,KAAQ,kBACR,KAAQ,YACR,OAAU,WACV,MAAS,UAEb,YAAe,CACX,KAAQ,iBACR,KAAQ,cACR,OAAU,YACV,MAAS,UAEb,gBAAmB,CACf,KAAQ,eACR,KAAQ,eACR,OAAU,WACV,MAAS,WACT,iBAAoB,CAChB,EAAK,IACL,EAAK,MACL,GAAM,MACN,IAAO,WACP,IAAO,UACP,KAAQ,cACR,KAAQ,aACR,GAAM,MACN,MAAS,UACT,OAAU,aACV,QAAW,gBACX,EAAK,MACL,EAAK,KACL,GAAM,SACN,GAAM,QACN,IAAO,YACP,IAAO,WACP,KAAQ,cACR,KAAQ,aACR,IAAO,WACP,IAAO,UACP,EAAK,IACL,GAAM,MACN,IAAO,SACP,IAAO,MACP,KAAQ,QACR,MAAS,WACT,MAAS,SACT,GAAM,QACN,EAAK,IACL,GAAM,MACN,IAAO,QACP,KAAQ,WACR,KAAQ,QACR,MAAS,WACT,OAAU,cACV,MAAS,YAIrB,QAAW,CACP,OAAU,CACN,cAAe,CACX,YAAe,CACX,EAAK,OACL,EAAK,OACL,EAAK,SACL,EAAK,UACL,EAAK,SACL,EAAK,UACL,EAAK,OACL,EAAK,OACL,EAAK,OACL,GAAM,QACN,GAAM,gBACN,GAAM,iBAEV,OAAU,CACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,KACN,GAAM,KACN,GAAM,MAEV,KAAQ,CACJ,EAAK,WACL,EAAK,QACL,EAAK,eACL,EAAK,gBACL,EAAK,WACL,EAAK,YACL,EAAK,QACL,EAAK,eACL,EAAK,UACL,GAAM,UACN,GAAM,yBACN,GAAM,uBAIlB,KAAQ,CACJ,cAAe,CACX,YAAe,CACX,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,OAEX,OAAU,CACN,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KAEX,MAAS,CACL,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,MAEX,KAAQ,CACJ,IAAO,SACP,IAAO,SACP,IAAO,UACP,IAAO,YACP,IAAO,WACP,IAAO,SACP,IAAO,cAInB,WAAc,CACV,OAAU,CACN,KAAQ,CACJ,GAAM,KACN,GAAM,QAIlB,KAAQ,CACJ,SAAY,CACR,EAAK,MAET,QAAW,CACP,EAAK,MAET,UAAa,CACT,EAAK,OAGb,YAAe,CACX,KAAQ,oBACR,KAAQ,cACR,OAAU,aACV,MAAS,eAEb,YAAe,CACX,KAAQ,iBACR,KAAQ,cACR,OAAU,YACV,MAAS,UAEb,gBAAmB,CACf,KAAQ,eACR,KAAQ,eACR,OAAU,WACV,MAAS,WACT,iBAAoB,CAChB,EAAK,IACL,EAAK,MACL,GAAM,MACN,IAAO,WACP,IAAO,UACP,KAAQ,cACR,KAAQ,aACR,GAAM,MACN,MAAS,UACT,OAAU,aACV,QAAW,gBACX,EAAK,MACL,EAAK,KACL,GAAM,SACN,GAAM,QACN,IAAO,YACP,IAAO,WACP,EAAK,IACL,GAAM,MACN,IAAO,SACP,IAAO,MACP,KAAQ,QACR,MAAS,WACT,MAAS,SACT,GAAM,QACN,EAAK,MACL,KAAQ,MACR,MAAS,YACT,OAAU,cACV,QAAW,iBACX,QAAW,UACX,SAAY,aACZ,UAAa,gBACb,SAAY,WACZ,QAAW,UACX,SAAY,eAK5B,cAAiB,CACb,WAAc,gBACd,UAAa,SACb,cAAiB,QAGzB,QAAW,CACP,WAAc,CACV,IAAO,CACH,YAAe,YACf,OAAU,IACV,oBAAqB,KAEzB,IAAO,CACH,YAAe,OACf,OAAU,SACV,oBAAqB,UAEzB,IAAO,CACH,YAAe,gBACf,oBAAqB,SAG7B,uBAA0B,OAC1B,sBAAyB,IACzB,4BAA6B,CACzB,QAAW,IACX,MAAS,IACT,KAAQ,IACR,YAAe,IACf,SAAY,IACZ,UAAa,IACb,YAAe,IACf,uBAA0B,OAC1B,SAAY,SACZ,SAAY,SACZ,IAAO,MACP,cAAiB,KAErB,mCAAoC,CAChC,SAAY,aAEhB,mCAAoC,CAChC,SAAY,UAEhB,oCAAqC,CACjC,SAAY,eACZ,WAAc,+BAElB,sCAAuC,CACnC,SAAY,SAIxBvB,EAASsB,oBAAsB,CAC3B,QAAW,CACP,OAAU,CACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,KAET,aAAgB,aAChB,cAAiB,CACb,QAAW,IACX,MAAS,IACT,SAAY,IACZ,UAAa,IACb,YAAe,IACf,IAAO,MACP,cAAiB,IACjB,SAAY,UAEhB,cAAiB,IACjB,eAAkB,IAClB,cAAiB,CACb,MAAS,IACT,KAAQ,GACR,eAAkB,IAClB,UAAa,CACT,QAAW,GAEf,gBAAmB,EACnB,gBAAmB,GAEvB,aAAgB,CACZ,MAAS,GACT,KAAQ,IACR,eAAkB,IAClB,UAAa,CACT,QAAW,GAEf,gBAAmB,EACnB,gBAAmB,GAEvB,aAAgB,CACZ,MAAS,IACT,KAAQ,IACR,eAAkB,IAClB,UAAa,CACT,QAAW,GAEf,gBAAmB,EACnB,gBAAmB,GAEvB,cAAiB,CACb,MAAS,KACT,KAAQ,IACR,eAAkB,IAClB,UAAa,CACT,QAAW,GAEf,gBAAmB,EACnB,gBAAmB,GAEvB,aAAgB,CACZ,MAAS,IACT,KAAQ,GACR,UAAa,CACT,QAAW,GAEf,gBAAmB,EACnB,gBAAmB,GAEvB,aAAgB,CACZ,MAAS,GACT,KAAQ,GACR,UAAa,CACT,QAAW,GAEf,gBAAmB,EACnB,gBAAmB,IAG3B,MAAS,CACL,WAAc,CACV,GAAM,KACN,GAAM,MAEV,cAAiB,IACjB,KAAQ,CACJ,YAAe,CACX,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,OAEX,MAAS,CACL,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,MAEX,KAAQ,CACJ,IAAO,SACP,IAAO,SACP,IAAO,UACP,IAAO,YACP,IAAO,WACP,IAAO,SACP,IAAO,aAGf,OAAU,CACN,YAAe,CACX,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,GAAM,MACN,GAAM,MACN,GAAM,OAEV,KAAQ,CACJ,EAAK,UACL,EAAK,WACL,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,OACL,EAAK,OACL,EAAK,SACL,EAAK,YACL,GAAM,UACN,GAAM,WACN,GAAM,aAGd,KAAQ,CACJ,EAAK,QAIjBtB,EAAS3O,WAAa,CAClB,EAAG,cACH,EAAG,OACH,EAAG,SACH,EAAG,eAKP2O,EAASliF,MAAQ,SACjBkiF,EAAS1O,KAAO,OAIhB0O,EAAS6B,eAAiB,CACtB9vF,EAAG,WACHygB,EAAG,UACHN,EAAG,UACH1wB,EAAG,WACHqnB,EAAG,cAsCPm3E,EAASpP,oBAAsBA,EAwB/BoP,EAAS7P,eAAiBA,EAgB1B6P,EAAShL,iBAAmBA,EAc5BgL,EAAShP,wBAA0BA,EAmBnCgP,EAAStP,yBAA2BA,EAmBpCsP,EAASnL,yBAA2BA,EAkCpCmL,EAASpK,cAAgBA,EAgBzBoK,EAASiC,qBAAuBA,EAiBhCjC,EAAS9L,kBAAoBA,EAuB7B8L,EAAStL,aAbT,SAAsB58B,EAAQg8B,EAAUjlD,GAIpC,IAHA,IAAInpC,EAAU,CAAC,EACX89F,EAAc1rC,EAAO94D,MAAM,KAC3Bua,EAAO,CAAC,QAAS,QAAS,YACrBw2B,EAAI,EAAGA,EAAIyzD,EAAY1mG,OAAQizC,IACpCrqC,EAAQ,GAAK6T,EAAKuiD,SAAS/rB,EAAEnpC,WAAY,MAAQ27F,EAAmBiB,EAAY1nC,SAAS/rB,EAAEnpC,WAAY,KAAMktF,EAAUjlD,GAM3H,OAJIq7C,GAAkBxkF,EAAQgwF,SAC1BhwF,EAAQgwF,MAAQ9zE,GAAO,CAAC,EAAGlc,EAAQkvF,OACnClvF,EAAQgwF,MAAMqC,MAAQ7N,GAAkB4J,GAAY,IAAMpuF,EAAQgwF,MAAMqC,MAAQjE,EAASS,YAAc7uF,EAAQgwF,MAAMqC,OAElHryF,CACX,EA4DAs6F,EAASuC,mBAAqBA,EAwB9BvC,EAAS4C,kBAAoBA,EAY7B5C,EAASjP,iBAJT,SAA0B0S,GACtB,IAAIp/F,GAASN,GAAS,oBAAqB0/F,IAAY,IAAI3hG,MAAM,oBACjE,OAAOuC,EAAQA,EAAM,GAAK,GAC9B,EA6CA27F,EAASC,wBAjCT,SAAiCjQ,EAAStqF,EAASuqF,EAAM8P,GACrD,IAAI7P,EAAaC,EAAeF,EAAMD,EAAStqF,EAAQ0qF,UACnDpF,OACAtlF,EAAUgrF,EAAyBhrF,EAASsqF,IAEhD,IAAI0T,EAAgBh+F,EAAQoyD,QAAU84B,EAAoBlrF,EAAQmrF,SAAUX,EAAWI,WAAY5qF,EAAQ9G,MAC3G,GAAImhG,EAAe,CAIf,GAHA2D,EAAgBA,EAAczjG,QAAQygG,GAAc,SAAUloD,GAC1D,OAAO8gD,EAAa,GAAK9gD,EAC7B,KACoC,IAAhCkrD,EAAcp5F,QAAQ,KAAa,CACnC,IAAIq5F,EAAUD,EAAc5hG,MAAM,MAAMhF,OACpC8mG,OAAkB,EAClBC,EAAY,CAAE,SAAY,CAAC,GAC/BA,EAAU5S,UAAYve,GAAO0a,gBAAgB8C,EAAWgB,aAAcxe,GAAOkZ,mBAAmBqE,IAChG4T,EAAUnS,SAAW3tF,GAAS,sBAAuBmsF,EAAWgB,cAChE,IACIyB,GADQ,IAAI57E,MACK67E,oBACjBp6C,EAAWmrD,EAAU,EAAK,QAAUE,EAAUnS,SAASoB,WAC3Dt6C,EAAUA,EAAQv4C,QAAQ,KAAM4jG,EAAU5S,UAAU1D,eACnC,IAAboF,EACAiR,EAAkBC,EAAUnS,SAASqB,eAGrC6Q,EAAkB9T,GAAWkD,iBAAiBL,EAAUn6C,GACxDorD,EAAkBC,EAAUnS,SAASuB,UAAUhzF,QAAQ,QAAS2jG,IAEpEF,EAAgBA,EAAczjG,QAAQ,OAAQ,IAAM2jG,EAAkB,IAC1E,CACAF,EAAgBA,EAAczjG,QAAQ,KAAM,GAChD,CACA,OAAOyjG,CACX,EAmBA1D,EAASgD,cAAgBA,EAgFzBhD,EAASI,sBArET,SAA+BpQ,EAAStqF,EAASuqF,EAAMkQ,GACnD,IAGI2D,EAuBAJ,EA1BAxT,EAAaC,EAAeF,EAAMD,EAAS,IAAI,GAC/CkJ,EAAe,CAAEuD,QAAQ,GACzBsH,EAAiB7T,EAAW6D,cAE5BtH,EAAS,CAAC,EACVuX,GAAYt+F,EAAQoyD,QAAU,IAAIh2D,MAAMk+F,EAASa,qBACjDjiG,EAAOohG,EAASvL,YAAY70F,KAAK8F,EAAQoyD,QAAU+8B,EAAyBnvF,EAAQoyD,QAAU,KAAO,CAAC,EACtGg8B,EAAW,CAAC,EAChB,GAAIkQ,EAAU,CACVlQ,EAASE,aAAehJ,KACpBppE,GAAO,CAAC,EAAGsuE,EAAW6D,eACtBrhB,GAAO0a,gBAAgB8C,EAAWgB,aAAcxe,GAAOkZ,mBAAmBqE,IAAO,GACrF,IAAIgU,EAAUjZ,KAAajnF,GAAS,iBAAkBmsF,EAAW6D,eAC7DG,EAAkBhE,EAAW6D,cAAeruF,EAAQs1D,UAAYm5B,GAAqBzuF,EAAQ0uF,WAC7FT,EAAgBqB,EAAiB,WAAYlB,EAASE,aAAatH,aAAcwD,EAAW6D,cAAgB,KAAMn0F,KAAK8F,EAAQoyD,SAE/H94D,GADJ20F,EAAgBA,EAAc1zF,QAAQ,UAAWgkG,IACvBjlG,MAAM,KAChCytF,EAAOyX,qBAAqBlZ,MAAqBhsF,EAAMlC,OAAS,EAChE2vF,EAAOiJ,MAAQ1K,KAAajnF,GAASnF,EAAKA,KAAO,QAASmlG,GACtDnO,EAAc52F,EAAM,IAAM,IAAMA,EAAM,IAAI,EAAMilG,GACpDxX,EAAOmI,MAAQ5J,KAAajnF,GAASnF,EAAKA,KAAO,QAASmlG,GACtDnO,EAAc52F,EAAM,IAAI,EAAOilG,GAC9BD,EAAS,IAAOt+F,EAAQ6vF,uBAA0B7vF,EAAQ4vF,wBAC3DwO,EAAUlO,EAAcjC,EAAc30F,MAAM,KAAK,IAAI,EAAM,IAAI,GAAMg3F,gBAE7E,CAEA,GAAKgK,EAASvL,YAAY70F,KAAK8F,EAAQoyD,UAAcpyD,EAAQoyD,OAAS,CAIlE,GAHAl2C,GAAOs3E,EAAcrE,EAAyBnvF,EAAQoyD,QAAU,MAChEohC,EAAauD,QAAS,EACtBiH,EAAgB,OACZxK,EAAa1D,gBAAkB9vF,EAAQ6vF,uBAAyB7vF,EAAQ4vF,uBAAyBwO,EAAS,CAEtG5K,EAAa1D,iBACb9vF,EAAQ6vF,sBAAwB7vF,EAAQ4vF,sBAAwB4D,EAAa1D,gBAEjFkO,EAAgBT,EAAsBS,EAAeI,GAAW5K,EAAa1D,gBACzE9vF,EAAQ6vF,uBALS,EAKgC7vF,EAAQ4vF,uBALxC,EAMzB,CAOA,GANI5vF,EAAQ8xF,uBACRkM,EAAgBL,EAAsBK,EAAeh+F,EAAQ8xF,uBAE7D9xF,EAAQivF,cACR+O,EAAgBH,EAAgBG,IAEV,aAAtBxK,EAAat6F,MAAwBs6F,EAAat6F,MAAQosF,KAAa,CACnEA,MAAoC,aAAtBkO,EAAat6F,OAC3B6tF,EAAOmI,MAAQ7wF,GAASm1F,EAAat6F,KAAO,QAASmlG,GACrDtX,EAAOiJ,MAAQ3xF,GAASm1F,EAAat6F,KAAO,QAASmlG,IAEzD,IAAII,EAAWT,EACfA,EAAgBjX,EAAOmI,MAAMmD,MAAQoM,EAAW1X,EAAOmI,MAAMoD,MACzDvL,EAAOyX,oBAAsBlZ,QAC7B0Y,GAAiB,IAAMjX,EAAOiJ,MAAMqC,MAAQoM,EAAW1X,EAAOiJ,MAAMsC,KAE5E,CAC0B,YAAtBkB,EAAat6F,MAAuBosF,OACpC0Y,GAAiB,KAEzB,MAEIA,EAAgBh+F,EAAQoyD,OAAO73D,QAAQ,KAAM,KAKjD,OAHItC,OAAO6M,KAAKspF,GAAUh3F,OAAS,IAC/B4mG,EAAiBvD,EAAmDuD,EAAzCV,EAAcU,EAAe5P,IAErD4P,CACX,EAsBA1D,EAASiD,sBAAwBA,EAejCjD,EAASqD,sBAAwBA,EAmBjCrD,EAASuD,gBAAkBA,EAoB3BvD,EAASM,YAbT,SAAqBtQ,EAASC,GAC1B,IAAImU,EAxlCc,MAylCd/W,EAAStpF,GAAS,iCAAkCksF,GACpDoU,EAAWrU,EAQf,MAPK,MAAOpwF,KAAKykG,KACbA,EAAWA,EAAS9kG,MAAM,IAE9B8kG,EAAWA,EAAS9kG,MAAM,EAAG,GAAGF,cAAgBglG,EAASzxD,OAAO,GAC5Dy6C,IACA+W,EAAW/W,EAAO,GAAKgX,IAAahX,EAAOgX,EAAS9kG,MAAM,EAAG,KAhmC/C,OAkmCXqhG,EAAe,GAAKwD,EAC/B,EAmBApE,EAASrK,sBAVT,SAA+Bf,EAAO0P,EAAWC,GAC7C,IAAIC,ER3zBDzgG,GQ2zBqCwgG,GR3zBZ,GAAI5W,IQ4zBhC,GAAI2W,IAAcE,EACd,IAAK,IAAIha,EAAK,EAAGia,EAAU7P,EAAOpK,EAAKia,EAAQ3nG,OAAQ0tF,IAAM,CACzD,IAAIjxE,EAAOkrF,EAAQja,GACnBjxE,EAAKy+E,KAAOz+E,EAAKy+E,KAAK/3F,QAAQqkG,EAAWE,GACzCjrF,EAAKw+E,MAAQx+E,EAAKw+E,MAAM93F,QAAQqkG,EAAWE,EAC/C,CAER,EA4BAxE,EAAS9M,cArBT,SAAuBv1E,GACnB,IAEI+mF,EAFAC,EAAU,IAAI5tF,KAAK4G,EAAKwwE,cAAe,EAAG,GAC1CJ,EAAM4W,EAAQtS,SAElBtE,EAAOA,GAAO,EAAIA,EAAMA,EAAM,EAC9B,IAAI6W,EAASn0F,KAAKk9B,OAAOhwB,EAAK0jD,UAAYsjC,EAAQtjC,UACa,KAA1D1jD,EAAKi1E,oBAAsB+R,EAAQ/R,sBAAgC,OAAY,EACpF,GAAI7E,EAAM,GAEN,IADA2W,EAAUj0F,KAAKk9B,OAAOi3D,EAAS7W,EAAM,GAAK,GAAK,GACjC,GAAI,CACd,IACI8W,EADQ,IAAI9tF,KAAK4G,EAAKwwE,cAAgB,EAAG,EAAG,GAC/BkE,SAEjBqS,GADAG,EAAOA,GAAQ,EAAIA,EAAOA,EAAO,GAChB,EAAI,EAAI,EAC7B,OAGAH,EAAUj0F,KAAKk9B,OAAOi3D,EAAS7W,EAAM,GAAK,GAE9C,OAAO2W,CACX,CAEH,CA1qCD,CA0qCG1E,KAAaA,GAAW,CAAC,IC3sC5B,IAAI8E,GAAc,6BCadC,IDEsB,WAStB,SAASC,EAAKt/F,EAAS9G,EAAMihE,EAAOgS,GAMhCvzE,KAAK0tB,MAAO,EAOZ1tB,KAAK2mG,WAAY,EACjB3mG,KAAKoH,QAAU,CAAC,EACO,kBAAZA,GACPpH,KAAKggB,IAAM5Y,EACXpH,KAAKM,KAAOA,EAAOA,EAAKS,cAxClB,MAyCNf,KAAK0tB,OAAQk+D,GAAkBrqB,IAASA,GAEhB,kBAAZn6D,IACZpH,KAAKoH,QAAUA,EACfklE,GAAMtsE,KAAMA,KAAKoH,UAErBpH,KAAKM,KAAON,KAAKM,KAAON,KAAKM,KAAKS,cA/CxB,MAgDVf,KAAKuzE,iBAAoCvjC,IAArBhwC,KAAKuzE,YAA6BvzE,KAAKuzE,YAAcA,CAC7E,CAQAmzB,EAAKpnG,UAAUgzD,KAAO,SAAUr3C,GAC5B,IAAIg4C,EAAQjzD,KACZA,KAAKib,KAAO2wE,GAAkB3wE,GAAQjb,KAAKib,KAAOA,EAClD,IAAI2rF,EAAY,CACZ7nB,QAAQ,EACR8nB,YAAa,MAqCjB,OAnCc,IAAIz9E,SAAQ,SAAUG,EAASopB,GACzCsgB,EAAM4zC,YAAc,IAAI1pB,eACxBlqB,EAAM4zC,YAAYzoB,mBAAqB,WAAcnrB,EAAM6zC,YAAYv9E,EAASopB,EAAS,EACpFi5C,GAAkB34B,EAAM8zC,UACzB9zC,EAAM4zC,YAAY30D,OAAS+gB,EAAM8zC,QAEhCnb,GAAkB34B,EAAMktB,cACzBltB,EAAM4zC,YAAYG,WAAa/zC,EAAMktB,YAGpCyL,GAAkB34B,EAAMg0C,WACzBh0C,EAAM4zC,YAAYtoB,QAAUtrB,EAAMg0C,SAGjCrb,GAAkB34B,EAAM5jD,WACzB4jD,EAAM4zC,YAAY50D,QAAUghB,EAAM5jD,SAIjCu8E,GAAkB34B,EAAM+oB,oBACzB/oB,EAAM4zC,YAAY/nB,OAAOkoB,WAAa/zC,EAAM+oB,kBAEhD/oB,EAAM4zC,YAAY1oB,KAAKlrB,EAAM3yD,KAAM2yD,EAAMjzC,IAAKizC,EAAMvlC,MAE/Ck+D,GAAkB34B,EAAMh4C,OAA+B,OAAtBg4C,EAAMsgB,aACxCtgB,EAAM4zC,YAAYhoB,iBAAiB,eAAgB5rB,EAAMsgB,aAAe,mCAExEtgB,EAAMi0C,aACNN,EAAUC,YAAc5zC,EAAM4zC,YAC9B5zC,EAAMi0C,WAAWN,IAEhBA,EAAU7nB,QACX9rB,EAAM4zC,YAAYv0C,KAAMs5B,GAAkB34B,EAAMh4C,MAAqB,KAAbg4C,EAAMh4C,KAEtE,GAEJ,EACAyrF,EAAKpnG,UAAUmgG,eAAiB,SAAUxkF,GAItC,OAHIjb,KAAKmnG,WACLnnG,KAAKmnG,UAAUlsF,EAAMjb,MAElBib,CACX,EACAyrF,EAAKpnG,UAAU8nG,eAAiB,SAAU5nB,GAItC,OAHIx/E,KAAKqnG,WACLrnG,KAAKqnG,UAAUrnG,KAAK6mG,aAEjBrnB,CACX,EACAknB,EAAKpnG,UAAUwnG,YAAc,SAAUv9E,EAASopB,GAC5C,IAAI13B,EAAOjb,KAAK6mG,YAAY3oB,aAC5B,GAAIl+E,KAAKsnG,UAA4C,SAAhCtnG,KAAKsnG,SAAS1mG,cAC/B,GAAa,KAATqa,EACAA,OAAO+0B,OAGP,IACI/0B,EAAOutB,KAAKmW,MAAM1jC,EACtB,CACA,MAAO+f,GACH,CAIwB,IAAhCh7B,KAAK6mG,YAAYxoB,aAEZr+E,KAAK6mG,YAAYpqD,QAAU,KAAOz8C,KAAK6mG,YAAYpqD,QAAU,KAAoC,MAA5Bz8C,KAAK6mG,YAAYpqD,OACvFlzB,EAAQvpB,KAAKy/F,eAAexkF,IAGxBjb,KAAK2mG,UACLh0D,EAAO,IAAItvC,MAAMrD,KAAKonG,eAAepnG,KAAK6mG,YAAYnqD,cAGtDnzB,IAIhB,EAOAm9E,EAAKpnG,UAAUioG,kBAAoB,SAAUhrF,GAGzC,IAFA,IAAIyhE,EAAkB,CAAC,EACnB1K,EAAUkzB,GAAYnrC,KAAKr7D,KAAK6mG,YAAY5oB,yBACzC3K,GACH0K,EAAgB1K,EAAQ,GAAG1yE,eAAiB0yE,EAAQ,GACpDA,EAAUkzB,GAAYnrC,KAAKr7D,KAAK6mG,YAAY5oB,yBAEhD,IAAI5I,EAAS2I,EAAgBzhE,EAAI3b,eACjC,OAAOgrF,GAAkBvW,GAAU,KAAOA,CAC9C,CAEJ,CAlJ0B,GCFC,WAQvB,SAASoxB,EAAMr/F,EAAS9G,EAAMizE,GAM1BvzE,KAAKM,KAAO,MAOZN,KAAK2mG,WAAY,EACM,kBAAZv/F,GACPpH,KAAKggB,IAAM5Y,EACXpH,KAAKM,KAAQknG,GAAMlnG,GAA6BN,KAAKM,KAA1BA,EAAKS,cAChCf,KAAKuzE,YAAcA,GAEdtK,GAAS7hE,IAAY/H,OAAO6M,KAAK9E,GAAS5I,OAAS,GACxD8tE,GAAMtsE,KAAMoH,GAEhBpH,KAAKuzE,YAAei0B,GAAMxnG,KAAKuzE,aAAkC,kCAAnBvzE,KAAKuzE,WACvD,CAmEA,OA5DAkzB,EAAMnnG,UAAUgzD,KAAO,SAAUr3C,GAC7B,IAAIg4C,EAAQjzD,KACRynG,EAAe,CACf,mBAAoB,OACpB,sBAAuB,WACvB,2BAA4B,OAC5B,oCAAqC,YAEzC,IACQD,GAAMxnG,KAAK0nG,eAA+B,QAAd1nG,KAAKM,KACjCN,KAAK0nG,aAAe,IAAI1mB,QAAQhhF,KAAKggB,IAAK,CAAEi1D,OAAQj1E,KAAKM,OAEpDknG,GAAMxnG,KAAK0nG,gBAChB1nG,KAAKib,KAAQusF,GAAMvsF,GAAejb,KAAKib,KAAZA,EAC3Bjb,KAAK0nG,aAAe,IAAI1mB,QAAQhhF,KAAKggB,IAAK,CACtCi1D,OAAQj1E,KAAKM,KACbgzE,QAAS,CAAE,eAAgBtzE,KAAKuzE,aAChCrtE,KAAMlG,KAAKib,QAGnB,IAAI2rF,EAAY,CAAE7nB,QAAQ,EAAO2oB,aAAc1nG,KAAK0nG,cAEpD,OADA1nG,KAAK2nG,aAAa3nG,KAAiB,WAAG4mG,GAClCA,EAAU7nB,OACH,MAEX/+E,KAAK4nG,cAAgB7mB,MAAM/gF,KAAK0nG,cACzB1nG,KAAK4nG,cAAcp+E,MAAK,SAAUwlD,GAErC,GADA/b,EAAM00C,aAAa10C,EAAc,OAAG+b,IAC/BA,EAAS7rC,GACV,MAAM6rC,EAGV,IADA,IAAIwF,EAAe,OACV0X,EAAK,EAAGiO,EAAK96F,OAAO6M,KAAKu7F,GAAevb,EAAKiO,EAAG37F,OAAQ0tF,IAAM,CACnE,IAAI3vE,EAAM49E,EAAGjO,GACTld,EAASsE,QAAQhuE,IAAI,kBAA0E,IAAvD0pE,EAASsE,QAAQhuE,IAAI,gBAAgB0G,QAAQuQ,KACrFi4D,EAAeizB,EAAalrF,GAEpC,CACA,OAAOyyD,EAASwF,IACpB,IAAGhrD,MAAK,SAAUvO,GAEd,OADAg4C,EAAM00C,aAAa10C,EAAiB,UAAGh4C,EAAMg4C,GACtCh4C,CACX,IAAGwO,OAAM,SAAUuR,GACf,IAAI6sE,EAAY,CAAC,EAKjB,OAJI50C,EAAM0zC,YACN1zC,EAAM00C,aAAa10C,EAAiB,UAAGj4B,GACvC6sE,EAAYz+E,QAAQupB,OAAO3X,IAExB6sE,CACX,IACJ,CACA,MAAO7sE,GACH,OAAOA,CACX,CACJ,EACAyrE,EAAMnnG,UAAUqoG,aAAe,SAAU51E,EAAU9W,EAAMoL,GAChDmhF,GAAMz1E,IAAiC,oBAAbA,GAC3BA,EAAS9W,EAAMoL,EAEvB,EACOogF,CACX,CAnG2B,ICZvBqB,GAAc,wEACdC,GAAU,gBACVC,GAAY,eACZC,GAAW,4BACXC,GAAY,yEACZC,GAAe,WACfC,GAAe,8BACfC,GAAe,yBACfC,GAAe,CACfC,MAAO,yCACPC,KAAM,oCACNC,OAAQ,8BACRC,WAAY,2BACZC,OAAQ,wBACRC,OAAQ,wBACRC,KAAM,2BACNC,QAAS,kCAGS,qBAAX7pG,SACPA,OAAO8pG,eAAiB9pG,OAAO8pG,gBAAkB,CAAC,GAOtD,IAAI1jC,GAAyB,WACzB,SAASA,IACT,CA2VA,OA1VAA,EAAQ2jC,qBAAuB,WAI3B,IAHA,IAAIC,EAAc,CAAEvX,QAAS,CAAC,GAE1BwX,EAAa,GACRhd,EAAK,EAAGC,EAFN9sF,OAAO6M,KAAKo8F,IAESpc,EAAKC,EAAO3tF,OAAQ0tF,IAAM,CACtD,IAAI3vE,EAAM4vE,EAAOD,GAEjB,GADAgd,EAAa7jC,EAAQ8U,UAAU32E,MAAM8kG,GAAa,GAAK/rF,IACvC,CAKZ,GAJA0sF,EAAY5kG,KAAwC,QAAhC6kG,EAAW,GAAGtoG,cAA0B,QAAUsoG,EAAW,GAAGtoG,cACpFqoG,EAAY5kG,KAAwC,UAAhC6kG,EAAW,GAAGtoG,cAA4B,SAAWqoG,EAAY5kG,KACrF4kG,EAAYhgE,QAAUigE,EAAW,GACjCD,EAAYvX,QAAQrtF,KAAO4kG,EAAYvX,QAAQjrC,SAAW/X,UAAU+X,SAChE4e,EAAQ8U,UAAU32E,MAAMwkG,IAAY,CACpCiB,EAAY5kG,KAAO,OACnB,KACJ,CACA,IAAI4kC,EAAUo8B,EAAQ8U,UAAU32E,MAAM6kG,IACb,WAArBY,EAAY5kG,MAAqB4kC,IACjCggE,EAAYhgE,QAAUA,EAAQ,IAElC,KACJ,CACJ,CACA,OAAOggE,CACX,EAOA5jC,EAAQ8jC,SAAW,SAAU9oF,GACzB,IAAI8pC,EAAS,CACTpnC,MAAO,CACHqmF,UAAW,cAAeC,QAAS,aAAcC,SAAU,aAE/DC,KAAM,CACFH,UAAW,cAAeC,QAAS,YAAaC,SAAU,aAE9DtmF,IAAK,CACDomF,UAAW,YAAaC,QAAS,WAAYC,SAAU,WAE3DvqB,OAAQ,CACJqqB,UAAW,gBAAiBC,QAAS,cAAeC,SAAU,eAGtE,OAAQjkC,EAAQ+jC,UAAYj/C,EAAO,GAAK9pC,GAAO+oF,UAC1C/jC,EAAQgkC,QAAUl/C,EAAO,GAAK9pC,GAAOgpF,SAAYhkC,EAAQikC,SAA+C,GAApC,IAAMn/C,EAAO,GAAK9pC,GAAOipF,UACxFn/C,EAAO,GAAK9pC,GAAOipF,QACjC,EAMAjkC,EAAQmkC,mBAAqB,WACzB,OAAOnkC,EAAQ8jC,SAAS,QAC5B,EAMA9jC,EAAQokC,iBAAmB,WACvB,OAAOpkC,EAAQ8jC,SAAS,MAC5B,EAMA9jC,EAAQqkC,kBAAoB,WACxB,OAAOrkC,EAAQ8jC,SAAS,OAC5B,EAMA9jC,EAAQskC,oBAAsB,WAC1B,OAAOtkC,EAAQ8jC,SAAS,SAC5B,EAMA9jC,EAAQukC,SAAW,WACf,OAAQvkC,EAAQikC,UAAYjkC,EAAQwkC,OAASxkC,EAAQgkC,SAA6B,qBAAXpqG,SACA,IAAhEA,OAAOyvC,UAAUyrC,UAAUv5E,cAAcoL,QAAQ,WACjD/M,OAAOyvC,UAAUyrC,UAAUv5E,cAAcoL,QAAQ,WAAa,CACzE,EAQAq5D,EAAQ5/D,SAAW,SAAU8W,EAAKutF,GAC9B,IAAIf,EAAmC,qBAAX9pG,OAAyBA,OAAO8pG,eAAiB,CAAC,EAO9E,MANyB,qBAAdr6D,WAAoD,aAAvBA,UAAUkkC,UAA2BlkC,UAAUq7D,eAAiB,IAAyB,IAApB1kC,EAAQgkC,UAAqBf,GAAaG,OAAOnnG,KAAKotC,UAAUyrC,aACzK4uB,EAAsB,OAAI,EAC1BA,EAAyB,UAAI,EAC7BA,EAAwB,SAAI,EAC5BA,EAA0B,WAAI,GAE9B,qBAAuBA,EAAe,GAAKxsF,GACpCwsF,EAAe,GAAKxsF,GAAOutF,EAAKxoG,KAAK+jE,EAAQ8U,WAEjD4uB,EAAe,GAAKxsF,EAC/B,EACAld,OAAOuE,eAAeyhE,EAAS,YAAa,CACxC//D,IAAK,WACD,OAAO+/D,EAAQ2kC,EACnB,EAQAnmG,IAAK,SAAUmmG,GACX3kC,EAAQ2kC,GAAKA,EACb/qG,OAAO8pG,eAAiB,CAAC,CAC7B,EACAvjG,YAAY,EACZD,cAAc,IAElBlG,OAAOuE,eAAeyhE,EAAS,OAAQ,CAOnC//D,IAAK,WACD,OAAIujE,GAAY5pE,OAAO8pG,eAAekB,MAC3BhrG,OAAO8pG,eAAekB,KAAO5kC,EAAQ2jC,uBAEzC/pG,OAAO8pG,eAAekB,IACjC,EACAzkG,YAAY,EACZD,cAAc,IAElBlG,OAAOuE,eAAeyhE,EAAS,OAAQ,CAMnC//D,IAAK,WACD,OAAO+/D,EAAQ5/D,SAAS,OAAQsiG,GACpC,EACAviG,YAAY,EACZD,cAAc,IAElBlG,OAAOuE,eAAeyhE,EAAS,UAAW,CAMtC//D,IAAK,WACD,OAAIujE,GAAY5pE,OAAO8pG,eAAeM,SAC1BpqG,OAAO8pG,eAAeM,QACzB,iBAAkBpqG,OAAOyvC,WACrBzvC,QACGA,OAAOyvC,WACNzvC,OAAOyvC,UAAUq7D,eAAiB,GAAQ,iBAAkB9qG,OAEtEA,OAAO8pG,eAAeM,OACjC,EACA7jG,YAAY,EACZD,cAAc,IAElBlG,OAAOuE,eAAeyhE,EAAS,YAAa,CAMxC//D,IAAK,WACD,OAAIujE,GAAY5pE,OAAO8pG,eAAeK,WAC3BnqG,OAAO8pG,eAAeK,UAAa,mBAAoBnqG,OAAOyvC,UAElEzvC,OAAO8pG,eAAeK,SACjC,EACA5jG,YAAY,EACZD,cAAc,IAElBlG,OAAOuE,eAAeyhE,EAAS,cAAe,CAM1C//D,IAAK,WACD,OAAIujE,GAAY5pE,OAAO8pG,eAAemB,aAC3BjrG,OAAO8pG,eAAemB,YAAe,qBAAsBjrG,OAAOyvC,UAEtEzvC,OAAO8pG,eAAemB,WACjC,EACA1kG,YAAY,EACZD,cAAc,IAElBlG,OAAOuE,eAAeyhE,EAAS,WAAY,CAMvC//D,IAAK,WACD,OAAO+/D,EAAQ5/D,SAAS,WAAYqiG,GACxC,EACAtiG,YAAY,EACZD,cAAc,IAElBlG,OAAOuE,eAAeyhE,EAAS,QAAS,CAMpC//D,IAAK,WACD,OAAO+/D,EAAQ5/D,SAAS,QAASwiG,GACrC,EACAziG,YAAY,EACZD,cAAc,IAElBlG,OAAOuE,eAAeyhE,EAAS,SAAU,CAMrC//D,IAAK,WACD,OAAO+/D,EAAQ5/D,SAAS,SAAUyiG,GACtC,EACA1iG,YAAY,EACZD,cAAc,IAElBlG,OAAOuE,eAAeyhE,EAAS,YAAa,CAMxC//D,IAAK,WACD,OAAO+/D,EAAQ5/D,SAAS,YAAa0iG,GACzC,EACA3iG,YAAY,EACZD,cAAc,IAElBlG,OAAOuE,eAAeyhE,EAAS,YAAa,CAMxC//D,IAAK,WACD,OAAIujE,GAAY5pE,OAAO8pG,eAAeoB,YAClClrG,OAAO8pG,eAAeoB,YAActhC,GAAY5pE,OAAOmrG,UAAYvhC,GAAY5pE,OAAOorG,WAC/ExhC,GAAY5pE,OAAOqrG,WAA8B,WAAjBrrG,OAAOsrG,OACvCtrG,OAAO8pG,eAAeoB,WAE1BlrG,OAAO8pG,eAAeoB,SACjC,EACA3kG,YAAY,EACZD,cAAc,IAElBlG,OAAOuE,eAAeyhE,EAAS,YAAa,CAMxC//D,IAAK,WACD,OAAO+/D,EAAQ5/D,SAAS,YAAa2iG,GACzC,EACA5iG,YAAY,EACZD,cAAc,IAElBlG,OAAOuE,eAAeyhE,EAAS,kBAAmB,CAM9C//D,IAAK,WACD,OAAIujE,GAAY5pE,OAAO8pG,eAAeyB,iBAC3BvrG,OAAO8pG,eAAeyB,gBAAkBnlC,EAAQmkC,qBAEpDvqG,OAAO8pG,eAAeyB,eACjC,EACAhlG,YAAY,EACZD,cAAc,IAElBlG,OAAOuE,eAAeyhE,EAAS,iBAAkB,CAM7C//D,IAAK,WACD,OAAIujE,GAAY5pE,OAAO8pG,eAAe0B,gBAC3BxrG,OAAO8pG,eAAe0B,eAAiBplC,EAAQqkC,oBAEnDzqG,OAAO8pG,eAAe0B,cACjC,EACAjlG,YAAY,EACZD,cAAc,IAElBlG,OAAOuE,eAAeyhE,EAAS,gBAAiB,CAM5C//D,IAAK,WACD,OAAIujE,GAAY5pE,OAAO8pG,eAAe2B,eAC3BzrG,OAAO8pG,eAAe2B,cAAgBrlC,EAAQokC,mBAElDxqG,OAAO8pG,eAAe2B,aACjC,EACAllG,YAAY,EACZD,cAAc,IAElBlG,OAAOuE,eAAeyhE,EAAS,mBAAoB,CAM/C//D,IAAK,WACD,OAAIujE,GAAY5pE,OAAO8pG,eAAe4B,kBAC3B1rG,OAAO8pG,eAAe4B,iBAAmBtlC,EAAQskC,sBAErD1qG,OAAO8pG,eAAe4B,gBACjC,EACAnlG,YAAY,EACZD,cAAc,IAGlB8/D,EAAQ2kC,GAA0B,qBAAdt7D,UAA4BA,UAAUyrC,UAAY,GAC/D9U,CACX,CA9V6B,GCRzBulC,GAA8B,WAC9B,SAASA,IACT,CAiHA,OA/GAA,EAAaC,kBAAoB,SAAU5mF,GACvC,MAAI,gBAAiBA,EACVA,EAAQ6mF,YAAY3gD,QAG3BlmC,EAAQ6mF,YAAc,CAAC,EAChB7mF,EAAQ6mF,YAAY3gD,OAAS,GAE5C,EAWAygD,EAAa7rG,IAAM,SAAUklB,EAAS8mF,EAAWzkF,EAAU0kF,EAAQC,GAC/D,IACIC,EADAC,EAAYP,EAAaC,kBAAkB5mF,GAG3CinF,EADAD,Eb2ML,SAAkBG,EAAe17D,GACpC,IAAI27D,EACJ,OAAO,WAGH,IAFA,IAAIp4C,EAAQjzD,KACRmkD,EAAO,GACF+nC,EAAK,EAAGA,EAAK3tF,UAAUC,OAAQ0tF,IACpC/nC,EAAK+nC,GAAM3tF,UAAU2tF,GAMzBhjE,aAAamiF,GACbA,EAAMriF,YALM,WAER,OADAqiF,EAAM,KACCD,EAAcj8F,MAAM8jD,EAAO9O,EACtC,GAEwBzU,EAC5B,CACJ,CazN+B47D,CAAShlF,EAAU2kF,GAGnB3kF,EAEnB0kF,IACAE,EAAmBA,EAAiBnkF,KAAKikF,IAG7C,IADA,IAAI3qF,EAAQ0qF,EAAUrqG,MAAM,KACnB+wC,EAAI,EAAGA,EAAIpxB,EAAM7hB,OAAQizC,IAC9B05D,EAAU58F,KAAK,CACXlK,KAAMgc,EAAMm9C,SAAS/rB,EAAEnpC,WAAY,KACnCge,SAAUA,EACVglF,SAAUJ,IAEV7lC,GAAQkmC,KACRtnF,EAAQjV,iBAAiBqR,EAAMm9C,SAAS/rB,EAAEnpC,WAAY,KAAM4iG,GAG5DjnF,EAAQjV,iBAAiBqR,EAAMm9C,SAAS/rB,EAAEnpC,WAAY,KAAM4iG,EAAkB,CAAEjkF,SAAS,IAGjG,OAAOikF,CACX,EASAN,EAAarnC,OAAS,SAAUt/C,EAAS8mF,EAAWzkF,GAmBhD,IAlBA,IAAI6kF,EAAYP,EAAaC,kBAAkB5mF,GAC3C5D,EAAQ0qF,EAAUrqG,MAAM,KACxB4rF,EAAU,SAAU95C,GACpB,IACI04D,EADAt8E,GAAS,EAETu8E,GAAkC,IAArBA,EAAU3sG,QACvB2sG,EAAU/3D,MAAK,SAAU/rB,EAAGoqB,GACxB,OAAOpqB,EAAEhjB,OAASgc,EAAMm9C,SAAShrB,EAAElqC,WAAY,MAAQ+e,EAAEf,WAAaA,IACjEsI,EAAQ6iB,EAAGy5D,EAAmB7jF,EAAEikF,UAAU,EACnD,KAEW,IAAX18E,GACAu8E,EAAU7iE,OAAO1Z,EAAO,GAExBs8E,GACAjnF,EAAQhV,oBAAoBoR,EAAMm9C,SAAShrB,EAAElqC,WAAY,KAAM4iG,EAEvE,EACS14D,EAAI,EAAGA,EAAInyB,EAAM7hB,OAAQg0C,IAC9B85C,EAAQ95C,EAEhB,EAOAo4D,EAAaY,YAAc,SAAUvnF,GAGjC,IAFA,IAAIknF,EAAYP,EAAaC,kBAAkB5mF,GAC3CwnF,EAAWnoF,GAAO,QAAI0sB,EAAWm7D,GAC5B15D,EAAI,EAAGA,EAAIg6D,EAASjtG,OAAQizC,IAAK,CACtC,IAAIi6D,EAAaD,EAASjuC,SAAS/rB,EAAEnpC,WAAY,KACjD2b,EAAQhV,oBAAoBy8F,EAAWrnG,KAAMqnG,EAAWJ,UACxDH,EAAUx1F,OACd,CACJ,EAUAi1F,EAAae,QAAU,SAAU1nF,EAAS8mF,EAAWa,GAEjD,IADA,IACS1f,EAAK,EAAG2f,EADDjB,EAAaC,kBAAkB5mF,GACLioE,EAAK2f,EAAYrtG,OAAQ0tF,IAAM,CACrE,IAAI4f,EAAUD,EAAY3f,GACtB4f,EAAQznG,OAAS0mG,GACjBe,EAAQR,SAASjqG,KAAKrB,KAAM4rG,EAEpC,CACJ,EACOhB,CACX,CApHkC,GCf9BmB,GAAU,gBAcP,SAAS5sG,GAAc0zB,EAASm5E,GACnC,IAAI/nF,EAAW8nF,GAAQzqG,KAAKuxB,GAAW3zB,SAAS6gC,gBAAgB,6BAA8BlN,GAAW3zB,SAASC,cAAc0zB,GAChI,MAA4B,qBAAhBm5E,IAGZ/nF,EAAQ7b,UAAa4jG,EAAW5jG,UAAY4jG,EAAW5jG,UAAY,QACtC4nC,IAAzBg8D,EAAWtkC,YACXzjD,EAAQyjD,UAAYskC,EAAWtkC,gBAEb13B,IAAlBg8D,EAAWx1F,KACXyN,EAAQzN,GAAKw1F,EAAWx1F,SAEFw5B,IAAtBg8D,EAAWC,QACXhoF,EAAQxiB,aAAa,QAASuqG,EAAWC,aAEpBj8D,IAArBg8D,EAAWE,OAqMZ,SAAoBjoF,EAASkoF,GAGhC,IAFA,IAAIjgG,EAAO7M,OAAO6M,KAAKigG,GACnBC,EAAMnoF,EACDioE,EAAK,EAAGC,EAASjgF,EAAMggF,EAAKC,EAAO3tF,OAAQ0tF,IAAM,CACtD,IAAI3vE,EAAM4vE,EAAOD,GACjB,GAAIjjB,GAASmjC,GAAM,CACf,IAAIC,EAAO9vF,EACC,aAARA,IACA8vF,EAAO,YAEXD,EAAID,WAAW,GAAKE,GAAQF,EAAW,GAAK5vF,EAChD,MAEI6vF,EAAI3qG,aAAa8a,EAAK4vF,EAAW,GAAK5vF,GAE9C,CAEJ,CArNQ4vF,CAAWloF,EAAS+nF,EAAWE,QAbxBjoF,CAgBf,CASO,SAASqoF,GAASC,EAAUr6B,GAG/B,IAFA,IAAIs6B,EAAYC,GAAav6B,GACzBxE,EAASlzB,OACJ0xC,EAAK,EAAGiO,EAAKoS,EAAUrgB,EAAKiO,EAAG37F,OAAQ0tF,IAE5C,IADA,IAAIkgB,EAAMjS,EAAGjO,GACJwgB,EAAK,EAAGC,EAAcH,EAAWE,EAAKC,EAAYnuG,OAAQkuG,IAAM,CACrE,IAAIhlC,EAAYilC,EAAYD,GAC5B,GAAIzjC,GAASmjC,GAAM,CACf,IAAIQ,EAAWnnG,GAAS,uBAAwB2mG,GAC5CxgB,GAAkBghB,GAClBlnG,GAAS,uBAAwBgiE,EAAW0kC,GAEtC,IAAI1+B,EAAO,MAAQhG,EAAY,MAAO,KAAKpmE,KAAKsrG,IACtDlnG,GAAS,uBAAwBknG,EAAW,IAAMllC,EAAW0kC,EAErE,MAESA,EAAII,UAAUrqF,SAASulD,IACxB0kC,EAAII,UAAUztG,IAAI2oE,EAG9B,CAEJ,OAAO6kC,CACX,CASO,SAASM,GAAYN,EAAUr6B,GAElC,IADA,IAAIs6B,EAAYC,GAAav6B,GACpBga,EAAK,EAAGiO,EAAKoS,EAAUrgB,EAAKiO,EAAG37F,OAAQ0tF,IAAM,CAClD,IAAIkgB,EAAMjS,EAAGjO,GACT8N,EAAO/wB,GAASmjC,GAEpB,GADgBpS,EAAOv0F,GAAS,uBAAwB2mG,GAAyB,KAAlBA,EAAI1kC,UAE/D,IAAK,IAAIglC,EAAK,EAAGI,EAAcN,EAAWE,EAAKI,EAAYtuG,OAAQkuG,IAAM,CACrE,IAAIhlC,EAAYolC,EAAYJ,GAC5B,GAAI1S,EAAM,CACN,IACI+S,EADYtnG,GAAS,uBAAwB2mG,GACxB1rG,MAAM,KAC3BkuB,EAAQm+E,EAAS/gG,QAAQ07D,IACd,IAAX94C,GACAm+E,EAASzkE,OAAO1Z,EAAO,GAE3BlpB,GAAS,uBAAwBqnG,EAASt+E,KAAK,KAAM29E,EACzD,MAEIA,EAAII,UAAUjpC,OAAOmE,EAE7B,CAER,CACA,OAAO6kC,CACX,CAQA,SAASE,GAAav6B,GAClB,IAAIs6B,EAAY,GAOhB,MANuB,kBAAZt6B,EACPs6B,EAAUj+F,KAAK2jE,GAGfs6B,EAAYt6B,EAETs6B,CACX,CAQO,SAASQ,GAAU/oF,GACtB,IAAImoF,EAAMnoF,EACV,MAAiC,KAAzBmoF,EAAIrgG,MAAMkhG,YAAqBb,EAAIc,YAAc,CAC7D,CAwEO,SAASC,GAAOlpF,GACnB,IAAInW,EAAamW,EAAQnW,WACzB,GAAIA,EACA,OAAOA,EAAWtF,YAAYyb,EAEtC,CAQO,SAASs/C,GAAOt/C,GACnB,IAAInW,EAAamW,EAAQnW,WACzB88F,GAAaY,YAAYvnF,GACzBnW,EAAWtF,YAAYyb,EAC3B,CAoCO,SAAS20C,GAAOw0C,EAAU18E,EAAS28E,GAGtC,YAFgB,IAAZ38E,IAAsBA,EAAUxxB,UACpCkuG,EAAWE,GAAcF,GAClB18E,EAAQ68E,cAAcH,EACjC,CAuBA,SAASE,GAAcF,GACnB,IAAII,EAAY,+DAChB,GAAIJ,EAAS5pG,MAAM,YAAc4pG,EAAS5pG,MAAMgqG,GAAY,CAExD,IADA,IAAIC,EAASL,EAAS1sG,MAAM,KACnB+wC,EAAI,EAAGA,EAAIg8D,EAAOjvG,OAAQizC,IAAK,CAEpC,IADA,IAAIqrB,EAAO2wC,EAAOjwC,SAAS/rB,EAAEnpC,WAAY,KAAK5H,MAAM,KAC3C8xC,EAAI,EAAGA,EAAIsqB,EAAKt+D,OAAQg0C,IAC7B,GAAIsqB,EAAKU,SAAShrB,EAAElqC,WAAY,KAAK0D,QAAQ,MAAQ,IAC5C8wD,EAAKU,SAAShrB,EAAElqC,WAAY,KAAK9E,MAAM,UAAW,CACnD,IAAIkqG,EAAU5wC,EAAKU,SAAShrB,EAAElqC,WAAY,KAAK5H,MAAM,KACrD,GAAIgtG,EAAQ,GAAGlqG,MAAM,QAAUkqG,EAAQ,GAAGlqG,MAAMgqG,GAAY,CACxD,IAAIG,EAAQ7wC,EAAKU,SAAShrB,EAAElqC,WAAY,KAAK5H,MAAM,KACnDitG,EAAM,GAAKA,EAAM,GAAGhsG,QAAQ,IAAK,SAAY,KAC7Cm7D,EAAKU,SAAShrB,EAAElqC,WAAY,KAAOqlG,EAAMl/E,KAAK,IAClD,CACJ,CAGRg/E,EAAOjwC,SAAS/rB,EAAEnpC,WAAY,KAAOw0D,EAAKruC,KAAK,IACnD,CACA,OAAOg/E,EAAOh/E,KAAK,IACvB,CACA,OAAO2+E,CACX,CASO,SAASQ,GAAQ3pF,EAASmpF,GAC7B,IAAIjmE,EAAKljB,EACT,GAA0B,oBAAfkjB,EAAGymE,QACV,OAAOzmE,EAAGymE,QAAQR,GAEtB,KAAOjmE,GAAsB,IAAhBA,EAAGr+B,UAAgB,CAC5B,GAAIyuC,GAAQpQ,EAAIimE,GACZ,OAAOjmE,EAEXA,EAAKA,EAAGr5B,UACZ,CACA,OAAO,IACX,CAwDO,SAAS+/F,GAAkB5pF,EAASioF,QACzBl8D,IAAVk8D,GACA7sG,OAAO6M,KAAKggG,GAAOvrG,SAAQ,SAAU4b,GACjC0H,EAAQlY,MAAM,GAAKwQ,GAAO2vF,EAAM,GAAK3vF,EACzC,GAER,CAsBO,SAASg7B,GAAQtzB,EAASmpF,GAC7B,IAAI71D,EAAUtzB,EAAQszB,SAAWtzB,EAAQ6pF,mBAAqB7pF,EAAQ8pF,sBACtE,OAAIx2D,EACOA,EAAQl2C,KAAK4iB,EAASmpF,IAG6C,IAAnE,GAAGphG,QAAQ3K,KAAKnC,SAASqpC,iBAAiB6kE,GAAWnpF,EAEpE,CClaA,IA2TW+pF,GA3TPC,GAAa,IAAIzzD,OAAO,KAOxB0zD,GAAsB,WAOtB,SAASA,EAAK9mG,EAAS6c,GACnBjkB,KAAKugG,YAAa,EAClBvgG,KAAKmuG,sBAAuB,EAC5BnuG,KAAKmyF,kBAAmB,EACxBnyF,KAAKouG,wBAAyB,EAC9BpuG,KAAKquG,qBAAsB,EAC3BruG,KAAKgsG,WAAa,CAAC,EACnBhsG,KAAKsuG,kBAAoB,CAAC,EAC1BtuG,KAAKuuG,cAAgB,CAAC,EACtBvuG,KAAKwuG,YAAc,CAAC,EACpBxuG,KAAKyuG,YAAa,EAClBzuG,KAAK0uG,uBAAwB,EAC7B1uG,KAAK2uG,YAAc,WAAc,EACjC3uG,KAAK4uG,uBAAyB,CAAC,EAC/B5uG,KAAK6uG,cAAgB,IAAI9P,GAAS/+F,MAC7B6oE,GAAY5kD,KAETjkB,KAAKikB,QADL,kBAAqBA,EACN/kB,SAASquG,cAActpF,GAGvBA,EAEd2nE,GAAkB5rF,KAAKikB,WACxBjkB,KAAKquG,qBAAsB,EAC3BruG,KAAK8uG,gBAGRjmC,GAAYzhE,IACbpH,KAAK+uG,cAAc3nG,GAAS,GAEhCpH,KAAKgvG,aAAc,CACvB,CA+NA,OArNAd,EAAK5uG,UAAUyvG,cAAgB,SAAU79D,EAAM+9D,GAC3C,IAAIC,EAAgBlvG,KAAKquG,oBACzBruG,KAAKquG,sBAAwBY,EAC7B3iC,GAAMtsE,KAAMkxC,IACS,IAAjB+9D,GACA3iC,GAAMtsE,KAAKsuG,kBAAmBp9D,GAC9BlxC,KAAKmvG,YAEAziB,MAAc1sF,KAAKugG,YACxBvgG,KAAKovG,eAAel+D,GAExBlxC,KAAK2uG,cACL3uG,KAAKsuG,kBAAoB,CAAC,EAC1BtuG,KAAKuuG,cAAgB,CAAC,EACtBvuG,KAAKquG,oBAAsBa,CAC/B,EAQAhB,EAAKmB,kBAAoB,SAAU9+D,EAAKs8C,GAEpC,IADA,IACSX,EAAK,EAAGC,EADN9sF,OAAO6M,KAAKqkC,GACS27C,EAAKC,EAAO3tF,OAAQ0tF,IAAM,CACtD,IAAI3vE,EAAM4vE,EAAOD,GACjB,GAAIW,EAAO,GAAKtwE,aAAgBtV,MAC5B,IAAK,IAAIkzF,EAAK,EAAGuS,EAAK7f,EAAO,GAAKtwE,GAAM49E,EAAKuS,EAAGluG,OAAQ27F,IAAM,CAC1D,IAAI4F,EAAQ2M,EAAGvS,QACQnqD,IAAnB+vD,EAAMoP,UACNpP,EAAMoP,UAEd,MAGAtiB,EAAO,GAAKtwE,GAAK4yF,UAEzB,CACJ,EACAjB,EAAK5uG,UAAUgwG,aAAe,WAC1BtvG,KAAK2uG,cACL3uG,KAAKsuG,kBAAoB,CAAC,EAC1BtuG,KAAKuuG,cAAgB,CAAC,EACtBvuG,KAAK4uG,uBAAyB,CAAC,CACnC,EAMAV,EAAK5uG,UAAU6vG,SAAW,WAEtB,GADAjB,EAAKmB,kBAAkBrvG,KAAK4uG,uBAAwB5uG,MAChDX,OAAOqxC,oBAAoB1wC,KAAKsuG,mBAAmB9vG,OAAQ,CAC3D,IAAI0wG,EAAgBlvG,KAAKquG,oBACrBkB,EAAavvG,KAAKsuG,kBAClBkB,EAAaxvG,KAAKuuG,cACtBvuG,KAAKsvG,eACLtvG,KAAKquG,qBAAsB,EAC3BruG,KAAKyvG,kBAAkBF,EAAYC,GACnCxvG,KAAKquG,oBAAsBa,CAC/B,CACJ,EACAhB,EAAK5uG,UAAU8vG,eAAiB,SAAUG,GACtC,GAAK7iB,KAAL,CAGA6iB,EAAaA,GAA0B,CAAC,EACxCjsF,GAAOtjB,KAAKwuG,YAAa,CAAC,EAAGe,GAAY,GACzC,IAAIG,EAAW,WACX1vG,KAAKouG,wBAA0BnvG,OAAO,GAAKywG,GAAUC,cACrD1wG,OAAO,GAAKywG,GAAUC,YAAY3vG,MAClCA,KAAKwuG,YAAc,CAAC,EANxB,CAQJ,EACAN,EAAK5uG,UAAUswG,YAAc,SAAUrzF,EAAK+uC,EAAUukD,GAClD,GAAInjB,KAAY,CACZ,IAAI6iB,EAAa,CAAC,EAClBA,EAAW,GAAKhzF,GAAO+uC,EACvBtrD,KAAKovG,eAAeG,EACxB,CACIvvG,KAAKquG,sBAGTruG,KAAKuuG,cAAc,GAAKhyF,GAAOszF,EAC/B7vG,KAAKsuG,kBAAkB,GAAK/xF,GAAO+uC,EACnCtrD,KAAK2uG,cACL3uG,KAAK2uG,YAAcrgE,GAAatuC,KAAKmvG,SAASpoF,KAAK/mB,OACvD,EASAkuG,EAAK5uG,UAAU0P,iBAAmB,SAAU+7F,EAAWhgB,GACnD/qF,KAAK6uG,cAAcjqD,GAAGmmD,EAAWhgB,EACrC,EAQAmjB,EAAK5uG,UAAU2P,oBAAsB,SAAU87F,EAAWhgB,GACtD/qF,KAAK6uG,cAAclqD,IAAIomD,EAAWhgB,EACtC,EAYAmjB,EAAK5uG,UAAUqsG,QAAU,SAAUZ,EAAWa,EAAWnM,EAAgBC,GACrE,IAAIzsC,EAAQjzD,KACZ,IAAyB,IAArBA,KAAKgvG,YAAsB,CAC3B,IAAIE,EAAgBlvG,KAAKquG,oBACzBruG,KAAKquG,qBAAsB,EAC3B,IAAIpzF,EAAOjb,KAAK6uG,cAActP,OAAOwL,EAAWa,EAAWnM,EAAgBC,GAC3E,GAAIuO,GAAW3sG,KAAKypG,GAAY,CAC5B,IAAIhgB,EAAUtlF,GAASslG,EAAW/qG,MAClC,GAAI+qF,EAAS,CAET,GAAI9rF,OAAkB,OAAG,CACrB,IAAIyzC,EAAUq4C,EAAQ1pF,KAAKrB,KAAM4rG,GAC7Bl5D,GAAmC,oBAAjBA,EAAQlpB,KACrBi2E,EAID/sD,EAAQlpB,MAAK,SAAUvO,GACfwkF,IACAxkF,EAAuB,kBAATA,GAAqBg4C,EAAM47C,cAAc7O,OAAO/kF,GAC1DutB,KAAKmW,MAAM1jC,GAAQA,EACvBwkF,EAAep+F,KAAK4xD,EAAOh4C,GAEnC,IAAGwO,OAAM,SAAUxO,GACXykF,IACAzkF,EAAuB,kBAATA,GAAqBg4C,EAAM47C,cAAc7O,OAAO/kF,GAAQutB,KAAKmW,MAAM1jC,GAAQA,EACzFykF,EAAar+F,KAAK4xD,EAAOh4C,GAEjC,IAdAA,EAAOy3B,EAiBN+sD,GACLA,EAAep+F,KAAKrB,KAAM4rG,EAElC,MAEI7gB,EAAQ1pF,KAAKrB,KAAM4rG,GACfnM,GACAA,EAAep+F,KAAKrB,KAAM4rG,EAGtC,MACSnM,GACLA,EAAep+F,KAAKrB,KAAM4rG,EAElC,CAEA,OADA5rG,KAAKquG,oBAAsBa,EACpBj0F,CACX,CACJ,EAMAizF,EAAK5uG,UAAUwvG,YAAc,WAEzB,IAAIgB,EAAc,KAAO9vG,KAAK+vG,gBAAgBnvG,cAC9C0rG,GAAS,CAACtsG,KAAKikB,SAAU,CAAC,QAAS6rF,IAC9BlkB,GAAkB5rF,KAAKikB,QAAQ+rF,eAIhCtqG,GAAS,gBAAiB,CAAC1F,MAAOA,KAAKikB,SAHvCjkB,KAAKikB,QAAQ+rF,cAAczhG,KAAKvO,KAKxC,EAMAkuG,EAAK5uG,UAAUk3B,QAAU,WACrB,IAAIy8B,EAAQjzD,KAEZA,KAAKikB,QAAQ+rF,cACThwG,KAAKikB,QAAQ+rF,cACThwG,KAAKikB,QAAQ+rF,cAAcx2D,QAAO,SAAU/H,GACxC,OAAIu8D,GACOA,GAAWv8D,KAAOu8D,GAAW/6C,GAEjCxhB,IAAMwhB,CACjB,IACE,GACV45C,GAAY,CAAC7sG,KAAKikB,SAAU,CAAC,KAAOjkB,KAAK+vG,kBACC,IAAtC/vG,KAAKikB,QAAQ+rF,cAAcxxG,QAE3BquG,GAAY,CAAC7sG,KAAKikB,SAAU,CAAC,UAEjCjkB,KAAKsvG,eACLtvG,KAAK6uG,cAAcr4E,UACnBx2B,KAAKgvG,aAAc,CACvB,EACOd,CACX,CAtQ0B,GCA1B,SAAS+B,GAAU5pF,EAAU6pF,EAAQ7pG,EAAc/F,GAI/C,OAHKjB,OAAOC,UAAUC,eAAe8B,KAAKglB,EAAS2lF,WAAYkE,IAAa7pF,EAAS2lF,WAAW,GAAKkE,aAAmB5vG,IACpH+lB,EAAS2lF,WAAW,GAAKkE,GAAU/tC,GAAe7hE,EAAM,CAAC+lB,EAAU6pF,EAAQ7pG,KAExEggB,EAAS2lF,WAAW,GAAKkE,EACpC,CAYA,SAASC,GAAe9pF,EAAU6pF,EAAQ7pG,EAAc/F,EAAM8vG,EAAUC,GAGpE,IAFA,IAAIv3D,EAAS,GACT+wB,EAAMxjE,EAAeA,EAAa7H,OAAS,EACtCizC,EAAI,EAAGA,EAAIo4B,EAAKp4B,IAAK,CAC1B,IAAI6+D,EAAUhwG,EAId,GAHI+vG,IACAC,EAAUhwG,EAAK+F,EAAam3D,SAAS/rB,EAAEnpC,WAAY,KAAM+d,IAEzD+pF,EAAU,CACV,IAAItwC,EAAOqC,GAAemuC,EAAS,CAACjqF,EAAU6pF,EAAQ,CAAC,GAAG,IAC1DpwC,EAAKivC,cAAc1oG,EAAam3D,SAAS/rB,EAAEnpC,WAAY,MAAM,GAC7DwwC,EAAOvqC,KAAKuxD,EAChB,MAEIhnB,EAAOvqC,KAAK4zD,GAAemuC,EAAS,CAACjqF,EAAU6pF,EAAQ7pG,EAAam3D,SAAS/rB,EAAEnpC,WAAY,MAAM,IAEzG,CACA,OAAOwwC,CACX,CAQA,SAASy3D,GAAelqG,EAAc6pG,GAClC,OAAO,WAIH,OAHK7wG,OAAOC,UAAUC,eAAe8B,KAAKrB,KAAKgsG,WAAYkE,KACvDlwG,KAAKgsG,WAAW,GAAKkE,GAAU7pG,GAE5BrG,KAAKgsG,WAAW,GAAKkE,EAChC,CACJ,CAQA,SAASM,GAAenqG,EAAc6pG,GAClC,OAAO,SAAU5kD,GACb,GAAItrD,KAAKgsG,WAAW,GAAKkE,KAAY5kD,EAAU,CAC3C,IAAImlD,EAASpxG,OAAOC,UAAUC,eAAe8B,KAAKrB,KAAKgsG,WAAYkE,GAAUlwG,KAAKgsG,WAAW,GAAKkE,GAAU7pG,EAC5GrG,KAAK4vG,YAAYM,EAAQ5kD,EAAUmlD,GACnCzwG,KAAKgsG,WAAW,GAAKkE,GAAU5kD,CACnC,CACJ,CACJ,CASA,SAASolD,GAAcrqG,EAAc6pG,EAAQ5vG,GACzC,OAAO,WACH,OAAO2vG,GAAUjwG,KAAMkwG,EAAQ7pG,EAAc/F,EACjD,CACJ,CASA,SAASqwG,GAActqG,EAAc6pG,EAAQ5vG,GACzC,OAAO,SAAUgrD,GACb2kD,GAAUjwG,KAAMkwG,EAAQ7pG,EAAc/F,GAAMyuG,cAAczjD,EAC9D,CACJ,CAuCA,SAASslD,GAAmBvqG,EAAc6pG,EAAQ5vG,GAC9C,OAAO,WACH,IAAI2yD,EAAQjzD,KACZ,IAAKX,OAAOC,UAAUC,eAAe8B,KAAKrB,KAAKgsG,WAAYkE,GAAS,CAChE,IAAIW,EAAgBV,GAAenwG,KAAMkwG,EAAQ7pG,EAAc/F,GAAM,GACrEN,KAAKgsG,WAAW,GAAKkE,GAAUW,CACnC,CACA,IAAIloD,OAAkC3Y,IAAvBhwC,KAAK8wG,eAA+B9wG,KAAK8wG,cAAcpC,uBAC/D1uG,KAAK0uG,sBAaZ,OAZKrvG,OAAOC,UAAUC,eAAe8B,KAAKrB,KAAKgsG,WAAW,GAAKkE,GAAS,SAAYvnD,GAChF,CAAC,OAAQ,OAAOhoD,SAAQ,SAAUowG,GAC9B,IAAIlmC,EAAa,CACb9kE,MAAOirG,GAA4BD,EAAYb,EAAQ5vG,EAAM2yD,EAAM+4C,WAAW,GAAKkE,IAASnpF,KAAKksC,GACjG1tD,cAAc,GAElBlG,OAAOuE,eAAeqvD,EAAM+4C,WAAW,GAAKkE,GAASa,EAAYlmC,EACrE,IAECxrE,OAAOC,UAAUC,eAAe8B,KAAKrB,KAAKgsG,WAAW,GAAKkE,GAAS,mBACpE7wG,OAAOuE,eAAe5D,KAAKgsG,WAAW,GAAKkE,GAAS,iBAAkB,CAAEnqG,OAAO,IAE5E/F,KAAKgsG,WAAW,GAAKkE,EAChC,CACJ,CAQA,SAASe,GAAmB5qG,EAAc6pG,EAAQ5vG,GAC9C,OAAO,SAAUgrD,GACbtrD,KAAKmuG,sBAAuB,EAC5B,IAAI+C,EAAqBf,GAAenwG,KAAMkwG,EAAQ7pG,EAAc/F,GAAM,GACtE6wG,EAAmBhB,GAAenwG,KAAMkwG,EAAQ5kD,EAAUhrD,GAAM,GACpEN,KAAKmuG,sBAAuB,EAC5BnuG,KAAK4vG,YAAYM,EAAQiB,EAAkBD,GAC3ClxG,KAAKgsG,WAAW,GAAKkE,GAAUiB,CACnC,CACJ,CAyCA,SAASH,GAA4BI,EAAOlB,EAAQ5vG,EAAM4wC,GACtD,OAAO,WAEH,IADA,IAAIoa,EAAW,GACN4gC,EAAK,EAAGA,EAAK3tF,UAAUC,OAAQ0tF,IACpC5gC,EAAS4gC,GAAM3tF,UAAU2tF,GAE7B,IAAImlB,EAAYrxG,KAAKsxG,SAAWtxG,KAAKuxG,eAAiB,IAAMrB,EAAS,IAAMA,EAAS,IACpF,OAAQkB,GACJ,IAAK,OACD,IAAK,IAAI3/D,EAAI,EAAGA,EAAI6Z,EAAS9sD,OAAQizC,IAAK,CACtC,IAAI+/D,EAAgBlmD,EAASkS,SAAS/rB,EAAEnpC,WAAY,KACpDrB,MAAM3H,UAAU,GAAK8xG,GAAOjiG,MAAM+hC,EAAM,CAACsgE,IACzC,IAAIC,EAAQC,GAAcL,GAAangE,EAAK1yC,OAAS,GAAIgzG,GAAgBxxG,KAAK8wG,cAAeM,GAC7FpxG,KAAKovG,eAAeqC,EAAOnmD,EAASkS,SAAS/rB,EAAEnpC,WAAY,MAAM,EAAO8oG,EAC5E,CACA,MACJ,IAAK,MACDnqG,MAAM3H,UAAU,GAAK8xG,GAAOjiG,MAAM+hC,GAC9BugE,EAAQC,GAAcL,EAAYngE,EAAK1yC,OAAQ,MAAOwB,KAAK8wG,cAAeM,GAC9EpxG,KAAKovG,eAAeqC,EAAO,CAAEE,UAAW,QAAS,EAAOP,GAIhE,OAAOlgE,CACX,CACJ,CASA,SAASwgE,GAAcL,EAAWtrG,EAAO6rG,EAAiBC,GACtD,IAAIC,EAAcT,EAClB,GAAIO,KACAE,EAAc,CAAC,GACH,GAAKT,GAAatrG,EAC1BA,GAA0B,kBAAVA,GAAoB,CAEpC+rG,EAAY,GAAKT,GAAsB,UAAIQ,CAC/C,CAEJ,OAAOC,CACX,CAQO,SAASC,GAAS1rG,GACrB,OAAO,SAAUsH,EAAQ4O,GACrB,IAAIy1F,EAAqB,CACrBnuG,IAAK2sG,GAAenqG,EAAckW,GAClCjX,IAAKirG,GAAelqG,EAAckW,GAClC/W,YAAY,EACZD,cAAc,GAGlBlG,OAAOuE,eAAe+J,EAAQ4O,EAAKy1F,GACnCC,GAAsBtkG,EAAQ4O,EAAK,OAAQlW,EAC/C,CACJ,CAaO,SAAS6rG,GAAQ7rG,EAAc/F,GAClC,OAAO,SAAUqN,EAAQ4O,GACrB,IAAIy1F,EAAqB,CACrBnuG,IAAK8sG,GAActqG,EAAckW,EAAKjc,GACtCgF,IAAKorG,GAAcrqG,EAAckW,EAAKjc,GACtCkF,YAAY,EACZD,cAAc,GAGlBlG,OAAOuE,eAAe+J,EAAQ4O,EAAKy1F,GACnCC,GAAsBtkG,EAAQ4O,EAAK,cAAelW,EAAc/F,EACpE,CACJ,CAqCO,SAAS6xG,GAAW9rG,EAAc/F,GACrC,OAAO,SAAUqN,EAAQ4O,GACrB,IAAIy1F,EAAqB,CACrBnuG,IAAKotG,GAAmB5qG,EAAckW,EAAKjc,GAC3CgF,IAAKsrG,GAAmBvqG,EAAckW,EAAKjc,GAC3CkF,YAAY,EACZD,cAAc,GAGlBlG,OAAOuE,eAAe+J,EAAQ4O,EAAKy1F,GACnCC,GAAsBtkG,EAAQ4O,EAAK,UAAWlW,EAAc/F,EAChE,CACJ,CAkCO,SAASqsF,KACZ,OAAO,SAAUh/E,EAAQ4O,GACrB,IAAI61F,EAAkB,CAClBvuG,IAAK,SAAUynD,GACX,IAAIukD,EAAW7vG,KAAKgsG,WAAW,GAAKzvF,GACpC,GAAIszF,IAAavkD,EAAU,CACvB,IAAI+mD,EAAeC,GAAiBtyG,KAAMuc,IACZ,IAA1BssD,GAAYgnC,IACZwC,EAAa3hF,QAAQzhB,oBAAoBojG,EAAalpD,OAAQ0mD,GAElEwC,EAAa3hF,QAAQ1hB,iBAAiBqjG,EAAalpD,OAAQmC,GAC3DtrD,KAAKgsG,WAAW,GAAKzvF,GAAO+uC,CAChC,CACJ,EACAhmD,IAAKirG,QAAevgE,EAAWzzB,GAC/B/W,YAAY,EACZD,cAAc,GAElBlG,OAAOuE,eAAe+J,EAAQ4O,EAAK61F,GACnCH,GAAsBtkG,EAAQ4O,EAAK,QACvC,CACJ,CAQO,SAASg2F,GAAsBC,GAClC,CAaJ,SAASP,GAAsBtkG,EAAQ4O,EAAKk2F,EAAcpsG,EAAc/F,GAChEuoE,GAAYl7D,EAAO+kG,YACnB/kG,EAAO+kG,SAAW,CACd3jF,MAAO,GACP4jF,aAAc,GACdC,SAAU,GACVzoD,OAAQ,GACR0oD,UAAW,GACXC,iBAAkB,GAClBC,aAAc,GACdC,WAAY,KAGpBrlG,EAAO+kG,SAASD,EAAe,KAAKlkG,KAAK,CACrClO,aAAckc,EACdlW,aAAcA,EACd/F,KAAMA,IAEVqN,EAAO+kG,SAASD,EAAe,SAASlkG,KAAKgO,EACjD,CAuFA,SAAS+1F,GAAiB5hF,EAASy4B,GAC/B,IAAmE,IAA/D9pD,OAAOC,UAAUC,eAAe8B,KAAKqvB,EAAS,aAC9C,MAAO,CAAEA,QAASA,EAASy4B,OAAQA,GAGnC,IAAI8pD,EAAUxtG,GAAS,WAAYirB,GAInC,OAHIuiF,IACA9pD,EAAS8pD,EAAU,IAAM9pD,GAEtBmpD,GAAiB7sG,GAAS,YAAairB,GAAUy4B,EAEhE,CC5iBA,IAAI+pD,GAAyC,WACzC,IAAIC,EAAgB,SAAUvzG,EAAGvB,GAI7B,OAHA80G,EAAgB9zG,OAAO+zG,gBAClB,CAAEC,UAAW,cAAgBpsG,OAAS,SAAUrH,EAAGvB,GAAKuB,EAAEyzG,UAAYh1G,CAAG,GAC1E,SAAUuB,EAAGvB,GAAK,IAAK,IAAIF,KAAKE,EAAOA,EAAEkB,eAAepB,KAAIyB,EAAEzB,GAAKE,EAAEF,GAAI,EACtEg1G,EAAcvzG,EAAGvB,EAC5B,EACA,OAAO,SAAUuB,EAAGvB,GAEhB,SAASi1G,IAAOtzG,KAAKqF,YAAczF,CAAG,CADtCuzG,EAAcvzG,EAAGvB,GAEjBuB,EAAEN,UAAkB,OAANjB,EAAagB,OAAOk3B,OAAOl4B,IAAMi1G,EAAGh0G,UAAYjB,EAAEiB,UAAW,IAAIg0G,EACnF,CACJ,CAZ6C,GAazCC,GAA0C,SAAUC,EAAY7lG,EAAQ4O,EAAKunE,GAC7E,IAA2HlkF,EAAvHtB,EAAIC,UAAUC,OAAQ6wB,EAAI/wB,EAAI,EAAIqP,EAAkB,OAATm2E,EAAgBA,EAAOzkF,OAAO+F,yBAAyBuI,EAAQ4O,GAAOunE,EACrH,GAAuB,kBAAZhgF,SAAoD,oBAArBA,QAAQ2vG,SAAyBpkF,EAAIvrB,QAAQ2vG,SAASD,EAAY7lG,EAAQ4O,EAAKunE,QACpH,IAAK,IAAIryC,EAAI+hE,EAAWh1G,OAAS,EAAGizC,GAAK,EAAGA,KAAS7xC,EAAI4zG,EAAW/hE,MAAIpiB,GAAK/wB,EAAI,EAAIsB,EAAEyvB,GAAK/wB,EAAI,EAAIsB,EAAE+N,EAAQ4O,EAAK8S,GAAKzvB,EAAE+N,EAAQ4O,KAAS8S,GAChJ,OAAO/wB,EAAI,GAAK+wB,GAAKhwB,OAAOuE,eAAe+J,EAAQ4O,EAAK8S,GAAIA,CAChE,EAiBIqkF,GAA2B,SAAUC,GAErC,SAASD,EAAUtsG,GACf,IAAI6rD,EAAQ0gD,EAAOtyG,KAAKrB,KAAMoH,OAAS4oC,IAAchwC,KAcrD,OAVAizD,EAAM2gD,OAAS,CACXC,KAAM,2CACNC,OAAQ,2CACRC,OAAQ,2CACRC,QAAS,2CACTC,UAAW,2CACXC,aAAc,oCACdC,UAAW,oCACXC,WAAY,qCAETnhD,CACX,CAoLA,IAAIohD,EA4BJ,OAjOAnB,GAAUQ,EAAWC,GAkBrBU,EAAcX,EAQdA,EAAUp0G,UAAUg1G,QAAU,SAAUrwF,EAAS7c,GAC7CA,EAAWA,GAAU,CAAC,EACtB,IHiNkBgmG,EAAU18E,EGjNxB+gF,EAAQzxG,KAAKu0G,SAASntG,GAC1B,GAAuB,kBAAZ6c,EAEP,IADA,IACSioE,EAAK,EAAGsoB,EADFvtG,MAAM3H,UAAU2B,MAAMI,MH+MvB+rG,EG/MsCnpF,OHgN5C,KADgByM,EG/MqCxxB,YHgN3CwxB,EAAUxxB,UACpCkuG,EAAWE,GAAcF,GACV18E,EAAQ6X,iBAAiB6kE,KGjNQlhB,EAAKsoB,EAAWh2G,OAAQ0tF,IAAM,CAClE,IAAIuoB,EAAYD,EAAWtoB,GAC3BulB,EAAMxtF,QAAUwwF,EAChBJ,EAAYK,eAAejD,EAC/B,MAGAA,EAAMxtF,QAAUA,EAChBowF,EAAYK,eAAejD,EAEnC,EAQAiC,EAAUiB,KAAO,SAAU1wF,EAASwtF,GAChCxtF,EAAQlY,MAAMuZ,UAAY,GAC1BrB,EAAQziB,gBAAgB,aACxB,IAAIozG,EAAc3wF,EAAQ0tB,aAAa,kBACvC,GAAIijE,EAAa,CACb,IAAIC,EAAUr3C,SAASo3C,EAAa,IACpCE,qBAAqBD,GACrB5wF,EAAQziB,gBAAgB,iBAC5B,CACIiwG,GAASA,EAAMzuF,KACfyuF,EAAMzuF,IAAI3hB,KAAKrB,KAAMyxG,EAE7B,EAOAiC,EAAUgB,eAAiB,SAAUjD,GACX,YAAlBsD,IAA+BA,KAAkBC,GAAoBC,SACjExD,EAAMyD,OACNzD,EAAMyD,MAAM7zG,KAAKrB,KAAMyxG,GAEvBA,EAAMzuF,KACNyuF,EAAMzuF,IAAI3hB,KAAKrB,KAAMyxG,IAIrBA,EAAM/hE,MACN1mB,YAAW,WAAcqrF,EAAYc,eAAe1D,EAAQ,GAAGA,EAAM/hE,OAGrE2kE,EAAYc,eAAe1D,EAGvC,EAOAiC,EAAUyB,eAAiB,SAAU1D,GACjC,IAAIx+C,EAAQjzD,KACZyxG,EAAMj5F,UAAY,EAClB,IAAI48F,EAAO,EACPC,EAAU,EACVC,EAAgB,EAChBC,EAAW9D,EAAM8D,SACrB9D,EAAMxtF,QAAQxiB,aAAa,YAAa,QACxC,IAAI+zG,EAAiB,SAAUh9F,GAC3B,IACI,GAAIA,EAAW,CAGX88F,EAAkC,IAAlBA,EAAsB98F,EAAY88F,EAClD7D,EAAMj5F,UAAaA,EAAYi5F,EAAMj5F,UAAa88F,EAClDA,EAAgB98F,GAGX48F,GAAQ3D,EAAMyD,OACfzD,EAAMyD,MAAM7zG,KAAK4xD,EAAOw+C,GAE5B2D,GAAc,EACd,IAAIK,EAAMhE,EAAMj5F,UAAY48F,EACxB3D,EAAMj5F,UAAY+8F,GAAY9D,EAAMj5F,UAAYi9F,EAAMF,GAAY9D,EAAMxtF,QAAQ0tB,aAAa,cAE7F8/D,EAAMxtF,QAAQlY,MAAMuZ,UAAYmsF,EAAMptG,KAAO,IAAMotG,EAAM8D,SAAW,MAAQ9D,EAAMiE,eAC9EjE,EAAM53B,UACN43B,EAAM53B,SAASx4E,KAAK4xD,EAAOw+C,GAG/BkE,sBAAsBH,KAItBV,qBAAqBO,GACrB5D,EAAMxtF,QAAQziB,gBAAgB,kBAC9BiwG,EAAMxtF,QAAQziB,gBAAgB,aAC9BiwG,EAAMxtF,QAAQlY,MAAMuZ,UAAY,GAC5BmsF,EAAMzuF,KACNyuF,EAAMzuF,IAAI3hB,KAAK4xD,EAAOw+C,GAGlC,MAII4D,EAAUM,sBAAsBH,GAChC/D,EAAMxtF,QAAQxiB,aAAa,iBAAkB4zG,EAAQ/sG,WAE7D,CACA,MAAOzI,GACHi1G,qBAAqBO,GACrB5D,EAAMxtF,QAAQziB,gBAAgB,kBAC1BiwG,EAAMmE,MACNnE,EAAMmE,KAAKv0G,KAAK4xD,EAAOpzD,EAE/B,CACJ,EACA21G,GACJ,EAOA9B,EAAUp0G,UAAUi1G,SAAW,SAAUntG,GACrC,MAAO,CACH/C,KAAM+C,EAAQ/C,MAAQrE,KAAKqE,KAC3BqrC,MAAOtoC,EAAQsoC,OAAS1vC,KAAK0vC,MAC7B6lE,cAAgCvlE,IAArB5oC,EAAQmuG,SAAyBnuG,EAAQmuG,SAAWv1G,KAAKu1G,SACpEL,MAAO9tG,EAAQ8tG,OAASl1G,KAAKk1G,MAC7BlyF,IAAK5b,EAAQ4b,KAAOhjB,KAAKgjB,IACzB4yF,KAAMxuG,EAAQwuG,MAAQ51G,KAAK41G,KAC3B/7B,SAAUzyE,EAAQyyE,UAAY75E,KAAK65E,SACnC67B,eAAgB11G,KAAK4zG,OAAOxsG,EAAQsuG,gBAAkB11G,KAAK4zG,OAAOxsG,EAAQsuG,gBACrEtuG,EAAQsuG,gBAAkB11G,KAAK4zG,OAAO5zG,KAAK01G,gBAExD,EAOAhC,EAAUp0G,UAAUmwG,kBAAoB,SAAUoG,EAASC,GACvD,EAQJpC,EAAUp0G,UAAUywG,cAAgB,WAChC,MAAO,WACX,EAMA2D,EAAUp0G,UAAUk3B,QAAU,WAC1B,EAGJ+8E,GAAW,CACPxB,GAAS,WACV2B,EAAUp0G,UAAW,YAAQ,GAChCi0G,GAAW,CACPxB,GAAS,MACV2B,EAAUp0G,UAAW,gBAAY,GACpCi0G,GAAW,CACPxB,GAAS,SACV2B,EAAUp0G,UAAW,sBAAkB,GAC1Ci0G,GAAW,CACPxB,GAAS,IACV2B,EAAUp0G,UAAW,aAAS,GACjCi0G,GAAW,CACP5mB,MACD+mB,EAAUp0G,UAAW,gBAAY,GACpCi0G,GAAW,CACP5mB,MACD+mB,EAAUp0G,UAAW,aAAS,GACjCi0G,GAAW,CACP5mB,MACD+mB,EAAUp0G,UAAW,WAAO,GAC/Bi0G,GAAW,CACP5mB,MACD+mB,EAAUp0G,UAAW,YAAQ,GAChCo0G,EAAYW,EAAcd,GAAW,CACjChB,IACDmB,EAEP,CAnO+B,CAmO7BxF,IAwJK,IAgBI6G,GAaAC,IACX,SAAWA,GAIPA,EAA6B,QAAI,UAIjCA,EAA4B,OAAI,SAIhCA,EAA6B,QAAI,SACpC,CAbD,CAaGA,KAAwBA,GAAsB,CAAC,ICpclD,ICCIe,GDAAC,GAA8B,WAC9B,SAASA,EAAanpB,GAClB7sF,KAAKi2G,cAAgB,GACrBj2G,KAAK6sF,OAASA,CAClB,CA4GA,OApGAmpB,EAAa12G,UAAUorC,OAAS,SAAUwrE,EAAiBC,GACvD,IAAIC,EAAYF,EAAgB13G,OAChC,GAAkB,IAAd43G,EAAJ,CAIIp2G,KAAKi2G,cAAcz3G,QACnBwB,KAAKq2G,kBAAkBH,GAE3B,IAAK,IAAIzkE,EAAI,EAAGA,EAAI2kE,EAAW3kE,IAE3B,IADA,IAAI6kE,EAAOJ,EAAgB14C,SAAS/rB,EAAEnpC,WAAY,KACzC4jF,EAAK,EAAGqqB,EAAeJ,EAAYjqB,EAAKqqB,EAAa/3G,OAAQ0tF,IAAM,CACxE,IAAItgD,EAAS2qE,EAAarqB,GACtBsqB,EAAUF,EAAKG,OACnB,GAAI7qE,GAAUA,EAAOtsC,UAAUywG,kBAAoBuG,EAAKG,SAAWz2G,KAAK02G,eAAeF,GAAU,CAC7F,IAAIG,EAAex0C,GAAev2B,EAAQ0qE,EAAKnyD,MAC3CyyD,EAAa52G,KAAK62G,cAAcL,GAChCF,EAAKQ,WACLpxG,GAASkxG,EAAYhrE,EAAQ5rC,KAAK6sF,QAGlCnnF,GAASkxG,EAAYD,EAAc32G,KAAK6sF,QAE5C,IAAIkqB,EAAeT,EACnBS,EAAaN,OAASG,EACtB52G,KAAKi2G,cAAc1nG,KAAKwoG,EAC5B,CACJ,CAtBJ,MAFI/2G,KAAKg3G,OA0Bb,EAMAhB,EAAa12G,UAAU03G,MAAQ,WAC3B,IAAK,IAAI9qB,EAAK,EAAGiO,EAAKn6F,KAAKi2G,cAAe/pB,EAAKiO,EAAG37F,OAAQ0tF,IAAM,CAC5D,IAAInsB,EAAUo6B,EAAGjO,GACZnsB,EAAQ+2C,YACTrxG,GAASs6D,EAAQ02C,OAAQz2G,KAAK6sF,QAAQr2D,SAE9C,CACAx2B,KAAKi2G,cAAgB,EACzB,EAQAD,EAAa12G,UAAU23G,sBAAwB,SAAUf,GACrD,IAAIjjD,EAAQjzD,KACZ,OAAOk2G,EAAgB18D,QAAO,SAAU5N,GAAU,OAAQqnB,EAAMyjD,eAAe9qE,EAAO6qE,OAAS,GACnG,EAOAT,EAAa12G,UAAU+2G,kBAAoB,SAAUF,GAMjD,IALA,IlBuBqB5lE,EAAKh0B,EkBvBtB02C,EAAQjzD,KACRk3G,EAAcf,EAAW1pE,KAAI,SAAU0qE,GAAO,OAAOlkD,EAAM4jD,cAAcM,EAAIV,OAAS,IAIjFvqB,EAAK,EAAGkrB,EAHKp3G,KAAKi2G,cAAcz8D,QAAO,SAAU5N,GACtD,OAA+C,IAAxCsrE,EAAYlrG,QAAQ4/B,EAAO6qE,OACtC,IACsDvqB,EAAKkrB,EAAkB54G,OAAQ0tF,IAAM,CACvF,IAAImrB,EAAMD,EAAkBlrB,GACvBmrB,EAAIP,YACLrxG,GAAS4xG,EAAIZ,OAAQz2G,KAAK6sF,QAAQr2D,UAEtCx2B,KAAKi2G,cAAc3tE,OAAOtoC,KAAKi2G,cAAcjqG,QAAQqrG,GAAM,GlBa1C9mE,EkBZJvwC,KAAK6sF,OlBYItwE,EkBZI86F,EAAIZ,clBa/BlmE,EAAI,GAAKh0B,EkBZZ,CACJ,EAOAy5F,EAAa12G,UAAUu3G,cAAgB,SAAUxyG,GAC7C,OAAOA,EAAK,GAAGzD,cAAgByD,EAAK+H,UAAU,GAhGlC,QAiGhB,EAOA4pG,EAAa12G,UAAUo3G,eAAiB,SAAUF,GAC9C,IAAK,IAAItqB,EAAK,EAAGiO,EAAKn6F,KAAKi2G,cAAe/pB,EAAKiO,EAAG37F,OAAQ0tF,IAAM,CAE5D,GADUiO,EAAGjO,GACLuqB,SAAWz2G,KAAK62G,cAAcL,GAClC,OAAO,CAEf,CACA,OAAO,CACX,EACOR,CACX,CAjHkC,GEG9BsB,GAA+B,WAC/B,SAASA,EAAczqB,EAAQykB,EAAUjrG,EAAca,GACnDlH,KAAKmuG,sBAAuB,EAC5BnuG,KAAKgsG,WAAa,CAAC,EACnBhsG,KAAKsuG,kBAAoB,CAAC,EAC1BtuG,KAAK4uG,uBAAyB,CAAC,EAC/B5uG,KAAKuuG,cAAgB,CAAC,EACtBvuG,KAAK2uG,YAAc,WAAc,EACjC3uG,KAAKqvG,kBAAoB5pG,GAAS,oBAAqByoG,IACvDluG,KAAKu3G,UAAY1qB,EACjB7sF,KAAK8wG,cAAgB9wG,KAAKu3G,UAAUzG,eAAiB9wG,KAAKu3G,UAC1Dv3G,KAAKsxG,SAAWA,EAChBtxG,KAAKw3G,cAAgBtwG,EACrBlH,KAAK+uG,cAAc1oG,GAAc,EACrC,CAuJA,OA/IAixG,EAAch4G,UAAUm4G,aAAe,SAAUn+C,EAAKg4C,IACtC,IAARh4C,EACAt5D,KAAKu3G,UAAU3I,uBAAuB,GAAK0C,GAAYh4C,SAGhDt5D,KAAKu3G,UAAU3I,uBAAuB,GAAK0C,GAElDtxG,KAAKu3G,UAAUE,cACfz3G,KAAKu3G,UAAUE,aAAan+C,EAAKt5D,KAAKu3G,UAAUjG,SAExD,EAMAgG,EAAch4G,UAAUo4G,cAAgB,WACpC,GAAI13G,KAAKu3G,UAAUG,cACf13G,KAAKu3G,UAAU5I,cACf3uG,KAAKu3G,UAAUG,oBAEd,CACD,IAAIC,EAAe3uF,WAAWhpB,KAAKu3G,UAAUpI,SAASpoF,KAAK/mB,KAAKu3G,YAIhEv3G,KAAK2uG,YAHa,WACdzlF,aAAayuF,EACjB,CAEJ,CACJ,EAMAL,EAAch4G,UAAUgwG,aAAe,WACnCtvG,KAAK2uG,cACL3uG,KAAKy3G,cAAa,EAAOz3G,KAAKsxG,UAC9BtxG,KAAKuuG,cAAgB,CAAC,EACtBvuG,KAAKsuG,kBAAoB,CAAC,CAC9B,EAQAgJ,EAAch4G,UAAUyvG,cAAgB,SAAU79D,EAAM+9D,IAC/B,IAAjBA,GACA3iC,GAAMtsE,KAAMkxC,GACZlxC,KAAKy3G,cAAa,EAAOz3G,KAAKsxG,UAC9BtxG,KAAKsvG,gBAGLhjC,GAAMtsE,KAAMkxC,EAEpB,EAMAomE,EAAch4G,UAAU6vG,SAAW,WAE/B,GADAnvG,KAAKqvG,kBAAkBrvG,KAAK4uG,uBAAwB5uG,MAChDA,KAAKw3G,cAAe,CACpB,IAAII,EAAW53G,KAAKu3G,UAAUv3G,KAAKsxG,UAAUtlG,QAAQhM,MACjDX,OAAO6M,KAAKlM,KAAKsuG,mBAAmB9vG,SACpCkH,GAAS1F,KAAKsxG,SAAW,IAAMsG,EAAU53G,KAAKsuG,kBAAmBtuG,KAAKu3G,UAAUjJ,mBAChF5oG,GAAS1F,KAAKsxG,SAAW,IAAMsG,EAAU53G,KAAKuuG,cAAevuG,KAAKu3G,UAAUhJ,eAEpF,MAEIvuG,KAAKu3G,UAAUjJ,kBAAkBtuG,KAAKsxG,UAAYtxG,KAAKsuG,kBACvDtuG,KAAKu3G,UAAUhJ,cAAcvuG,KAAKsxG,UAAYtxG,KAAKuuG,cAEvDvuG,KAAKsvG,cACT,EAUAgI,EAAch4G,UAAUswG,YAAc,SAAUrzF,EAAK+uC,EAAUukD,EAAUgI,GACjE73G,KAAK8wG,cAAczC,sBAGlBwJ,GACD73G,KAAKovG,eAAe7yF,EAAK+uC,GAAU,GAEvCtrD,KAAKuuG,cAAc,GAAKhyF,GAAOszF,EAC/B7vG,KAAKsuG,kBAAkB,GAAK/xF,GAAO+uC,EACnCtrD,KAAKy3G,cAAa,EAAMz3G,KAAKsxG,UAC7BtxG,KAAK2uG,cACL3uG,KAAK03G,gBACT,EACAJ,EAAch4G,UAAU8vG,eAAiB,SAAU7yF,EAAKxW,EAAO+xG,EAAe7iF,GAC1E,GAAIy3D,OAAe1sF,KAAKu3G,UAAUpJ,qBAAsB,CACpD,IAAI4J,EACAxI,EAAa,CAAC,EACdyI,EAAYF,EAAgB93G,KAAKuxG,cAAa,GAAQ,IAAMh1F,EAAMA,EAEtE,IAAgC,IAA5By7F,EAAUhsG,QAAQ,KAAa,CAC/B,IAAIisG,EAAcD,EAAUt3G,MAAM,KAClCq3G,EAAWxI,EACX,IAAK,IAAI99D,EAAI,EAAGA,EAAIwmE,EAAYz5G,OAAQizC,IAAK,CACzC,IAAIymE,EAAUzmE,IAAMwmE,EAAYz5G,OAAS,EACzCu5G,EAASE,EAAYz6C,SAAS/rB,EAAEnpC,WAAY,MAAQ4vG,EAAUnyG,EAAQ,CAAC,EACvEgyG,EAAWG,EAAUH,EAAWA,EAASE,EAAYz6C,SAAS/rB,EAAEnpC,WAAY,KAChF,CACJ,MAEIinG,EAAW,GAAKyI,GAAa,CAAC,EAC9BD,EAAWxI,EAAW,GAAKyI,GAC3BzI,EAAW,GAAKyI,GAAW,GAAKz7F,GAAOxW,EAG3C,GAAI/F,KAAKw3G,cAAe,CAEpBO,EAA4B,UAAI9iF,GAAkB,MACtD,CACAj1B,KAAK8wG,cAAc1B,eAAeG,EACtC,CACJ,EACA+H,EAAch4G,UAAUiyG,aAAe,SAAUuG,GAC7C,IAAIlpF,EAAQ,GACR0iF,EAAWtxG,KAAKsxG,SAEpB,GAAItxG,KAAKw3G,cAAe,CACpB5oF,EAAQ5uB,KAAKu3G,UAAUv3G,KAAKsxG,UAAUtlG,QAAQhM,MAC9C,IAAIm4G,EAAcn4G,KAAKu3G,UAAUv3G,KAAKsxG,UAAU9yG,OAChD25G,EAAcL,EAAgBK,EAAeA,EAAc,EAAIA,EAAc,EAAI,EAEjF7G,GADA1iF,GAAmB,IAAXA,EAAe,IAAMA,EAAQ,IAAMupF,CAE/C,CAIA,OAHIn4G,KAAK8wG,gBAAkB9wG,KAAKu3G,YAC5BjG,EAAWtxG,KAAKu3G,UAAUhG,eAAiB,IAAMvxG,KAAKsxG,SAAW1iF,GAE9D0iF,CACX,EACOgG,CACX,CAtKmC,GDPxBc,GAAgB,CAAC,OAAQ,YAAa,WAAY,cAAe,iBAAkB,iBAAkB,UAAW,gBAAiB,YAAa,iBAAkB,kBAAmB,QAAS,aAAc,gBAAiB,UAAW,UAAW,cAAe,OAAQ,SAAU,aAAc,UAAW,YAAa,UAAW,cAAe,SAAU,kBAAmB,WAAY,QAAS,YAAa,gBAAiB,iBAAkB,WAAY,cAAe,WAAY,YAAa,MAAO,YACtfC,GAAY,CAAC,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAC/C,IAAK,IAAK,GAAI,IAAK,IAAK,GAAI,IAAK,GAAI,GAAI,GAAI,IAC7C,IAAK,IAAK,GAAI,IAAK,IAAK,KAOxBC,GAAkC,WAClC,SAASA,EAAiB/7F,GACtBvc,KAAKu4G,aAAc,EACnBv4G,KAAKw4G,YAAa,EAClBx4G,KAAKipC,QAAU,KACfjpC,KAAK4yE,SAAW,sEAChB5yE,KAAKigD,OAAS,CACVw4D,UAAW,4LAEXC,aAAc,4LAEdC,kBAAmB,+DACnBC,mBAAoB,+DACpBC,WAAY,gEAKhB74G,KAAK84G,QAAW,WACZ,IAAIC,EAAS,KAcb,MAAO,CACHC,OARJ,SAAaz8F,GAAOw8F,EAASx8F,CAAK,EAS9B08F,OAHJ,WAAiB,OAAOF,CAAQ,EAKpC,CAnBgB,GAuBhB/4G,KAAKk5G,WAQM,CACHD,OAFJ,WAAiB,MAND,eAMmB,GAKvCj5G,KAAK84G,QAAQE,OAAOz8F,EACxB,CAuJA,OAjJA+7F,EAAiBh5G,UAAU65G,SAAW,WAKlC,IAAKn5G,KAAKu4G,aAAgB1sB,KAAoBpmF,GAAS2zG,GAAcf,IAAYxsB,MAAqBpmF,GAAS,SAAUomF,IAAmB,CACxI,IAAIwtB,OAAc,EACdC,OAAc,EAClB,GAAKt5G,KAAK84G,SAAW94G,KAAK84G,QAAQG,UAAcj5G,KAAKk5G,YAA2C,kBAA7Bl5G,KAAKk5G,WAAWD,SAA+B,CAC9G,IAAIngE,EAAS94C,KAAKu5G,iBAClB,GAAIzgE,GAAUA,EAAOt6C,OACjB,IAAK,IAAI0tF,EAAK,EAAGstB,EAAW1gE,EAAQozC,EAAKstB,EAASh7G,OAAQ0tF,IAAM,CAC5D,IAAIvhC,EAAM6uD,EAASttB,GACnB,IAAKlsF,KAAK4yE,SAAStxE,KAAKqpD,EAAIioB,WAAajoB,EAAI8uD,gBACzCJ,EAAcr5G,KAAKigD,OAAO24D,wBAEzB,IAA2C,IAAvCjuD,EAAI1hB,QAAQj9B,QAAQhM,KAAKipC,SAG9BowE,GADAA,GADAA,EAAcr5G,KAAKigD,OAAO04D,mBACAh3G,QAAQ,mBAAoBgpD,EAAI1hB,UAChCtnC,QAAQ,mBAAoB3B,KAAKipC,QAAU,WAEpE,GAAI0hB,EAAI+uD,WAAY,CACrB,IAAIC,EAAU,IAAIlhG,KAAKkyC,EAAI+uD,YACvBE,EAAW,IAAInhG,KACnB,KAAIkhG,IAAYC,GAAYD,EAAUC,GAIlC,MAHAP,EAAcr5G,KAAKigD,OAAOy4D,YAKlC,CACJ,MAGAW,EAAcr5G,KAAKigD,OAAO44D,UAElC,KACK,CACD,IAAIgB,EAAiBp0G,GAAS2zG,GArCrB,CAAC,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAC/D,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,MAoCFvtB,IACzDytB,EAAc7zG,GAAS2zG,GApClB,CAAC,IAAK,IAAK,IAAK,GAAI,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,GAC3D,GAAI,IAAK,GAAI,IAAK,IAAK,GAAI,GAAI,GAAI,IAAK,IAAK,IAAK,IAAK,GAAI,GAAI,KAmCbvtB,IAE1CwtB,EADAQ,GAAqC,KAAnBA,EACJA,EAGA75G,KAAKigD,OAAOw4D,SAElC,CACA,GAAIY,GAAmC,qBAAbn6G,WAA6B0sF,GAAkB1sF,UAAW,CAEhF,IAAI46G,EAAW36G,GAAc,MAAO,CAChCiJ,UAAW,qxCAAuxCixG,EAAvxC,4EAFftD,GAAcuD,GAA+B,KAAhBA,EAAsBA,EAAc,gLAEk1C,iCAEn5CQ,EAASr4G,aAAa,QAAS,4dAC/BvC,SAASgH,KAAKuC,YAAYqxG,GAC1B95G,KAAKw4G,YAAa,CACtB,CACAx4G,KAAKu4G,aAAc,EACnB7yG,GAAS0zG,GAAcf,IAAYr4G,KAAKu4G,YAAa1sB,GACzD,CACA,OAAO7rF,KAAKw4G,UAChB,EACAF,EAAiBh5G,UAAUy6G,iBAAmB,SAAUx9F,GACpD,IACI,OAAOy9F,KAAKz9F,EAChB,CACA,MAAOye,GACH,MAAO,EACX,CACJ,EAMAs9E,EAAiBh5G,UAAUi6G,eAAiB,WACxC,IACI,IAAIR,EAAS,GACTkB,EAAO,CAAC,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAC9D,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QACxE,QAAS,QAAS,QAAS,QAAS,QAAS,SAC7CC,EAAe,GACfC,EAAc,GACdV,GAAkB,EAClBW,GAAW,EACXp6G,KAAK84G,QAAQG,SACbF,EAAS/4G,KAAK84G,QAAQG,UAGtBmB,GAAW,EACXrB,EAAS/4G,KAAKk5G,WAAWD,SAASv4G,MAAM,iBAAiB,IAG7D,IADA,IAAI25G,EAActB,EAAOr4G,MAAM,KACtBwrF,EAAK,EAAGouB,EAAgBD,EAAanuB,EAAKouB,EAAc97G,OAAQ0tF,IAAM,CAC3E,IAAIquB,EAAOD,EAAcpuB,GACrBsuB,EAAYx6G,KAAK+5G,iBAAiBQ,GACtC,GAAKC,EAAL,CAGA,IAAIt2G,EAAI,EACJu2G,EAAQ,GACZ,GAAKL,EASA,CACD,IAAI9e,EAAUkf,EAAUA,EAAUh8G,OAAS,GACvCk8G,EAAe,GACnB,IAASjpE,EAAI,EAAGA,EAAI+oE,EAAUh8G,OAAQizC,IAClCipE,EAAal9C,SAAS/rB,EAAEnpC,WAAY,KAAOkyG,EAAUh9C,SAAS/rB,EAAEnpC,WAAY,KAAKskE,WAAW,GACtF0uB,EAAQ1uB,WAAW,GAE7B,IAASn7B,EAAI,EAAGA,EAAIipE,EAAal8G,OAAQizC,IACrCgpE,GAASj+F,OAAOC,aAAai+F,EAAal9C,SAAS/rB,EAAEnpC,WAAY,KAEzE,MAlBI,IAAK,IAAImpC,EAAI,EAAGA,EAAI+oE,EAAUh8G,OAAQizC,IAAKvtC,IAAK,CACxCA,IAAM+1G,EAAKz7G,SACX0F,EAAI,GAER,IAAI5F,EAAIk8G,EAAU5tC,WAAWn7B,GAC7BgpE,GAASj+F,OAAOC,aAAane,EAAK27G,EAAKz8C,SAASt5D,EAAEoE,WAAY,MAAQ,GAC1E,CAaAtI,KAAK4yE,SAAStxE,KAAKm5G,IACnBP,EAAeO,EAAM/5G,MAAM,KAC3B+4G,GAAkB,EAEdS,EAAa17G,OAAS,GACtB27G,EAAY5rG,KAAK,CAAEqkE,SAAUsnC,EAAa,GACtCjxE,QAASixE,EAAa,GACtBR,WAAYQ,EAAa,MAG5BO,GAASA,EAAM/5G,MAAM,KAAKlC,OAAS,IACxCi7G,GAAkB,EAlCtB,CAoCJ,CACA,OAAIA,IAAoBU,EAAY37G,OACzB,CAAC,CAAEi7G,gBAAiBA,IAGpBU,EAAY37G,OAAS27G,EAAc,IAElD,CACA,MAAOn/E,GACH,OAAO,IACX,CACJ,EACOs9E,CACX,CA9MsC,GA+MlCqC,GAAmB,IAAIrC,GAO3B,SAASc,GAAcwB,GAEnB,IADA,IAAI9xD,EAAM,GACDojC,EAAK,EAAG2uB,EAASD,EAAM1uB,EAAK2uB,EAAOr8G,OAAQ0tF,IAAM,CACtD,IAAI5e,EAAMutC,EAAO3uB,GACjBpjC,GAAOtsC,OAAOC,aAAa6wD,EAC/B,CACA,OAAOxkB,CACX,CAUO,IErNHgyD,GFqNOC,GAAkB,SAAUx+F,GAInC,OAHIA,GAJD,SAAyBA,GAC5Bo+F,GAAmB,IAAIrC,GAAiB/7F,EAC5C,CAGQy+F,CAAgBz+F,GAEbo+F,GAAiBxB,UAC5B,EExPIjG,GAAyC,WACzC,IAAIC,EAAgB,SAAUvzG,EAAGvB,GAI7B,OAHA80G,EAAgB9zG,OAAO+zG,gBAClB,CAAEC,UAAW,cAAgBpsG,OAAS,SAAUrH,EAAGvB,GAAKuB,EAAEyzG,UAAYh1G,CAAG,GAC1E,SAAUuB,EAAGvB,GAAK,IAAK,IAAIF,KAAKE,EAAOA,EAAEkB,eAAepB,KAAIyB,EAAEzB,GAAKE,EAAEF,GAAI,EACtEg1G,EAAcvzG,EAAGvB,EAC5B,EACA,OAAO,SAAUuB,EAAGvB,GAEhB,SAASi1G,IAAOtzG,KAAKqF,YAAczF,CAAG,CADtCuzG,EAAcvzG,EAAGvB,GAEjBuB,EAAEN,UAAkB,OAANjB,EAAagB,OAAOk3B,OAAOl4B,IAAMi1G,EAAGh0G,UAAYjB,EAAEiB,UAAW,IAAIg0G,EACnF,CACJ,CAZ6C,GAazCC,GAA0C,SAAUC,EAAY7lG,EAAQ4O,EAAKunE,GAC7E,IAA2HlkF,EAAvHtB,EAAIC,UAAUC,OAAQ6wB,EAAI/wB,EAAI,EAAIqP,EAAkB,OAATm2E,EAAgBA,EAAOzkF,OAAO+F,yBAAyBuI,EAAQ4O,GAAOunE,EACrH,GAAuB,kBAAZhgF,SAAoD,oBAArBA,QAAQ2vG,SAAyBpkF,EAAIvrB,QAAQ2vG,SAASD,EAAY7lG,EAAQ4O,EAAKunE,QACpH,IAAK,IAAIryC,EAAI+hE,EAAWh1G,OAAS,EAAGizC,GAAK,EAAGA,KAAS7xC,EAAI4zG,EAAW/hE,MAAIpiB,GAAK/wB,EAAI,EAAIsB,EAAEyvB,GAAK/wB,EAAI,EAAIsB,EAAE+N,EAAQ4O,EAAK8S,GAAKzvB,EAAE+N,EAAQ4O,KAAS8S,GAChJ,OAAO/wB,EAAI,GAAK+wB,GAAKhwB,OAAOuE,eAAe+J,EAAQ4O,EAAK8S,GAAIA,CAChE,EAWI4rF,GAAiB,EAEjBC,GAAiB,EAEjBC,GAAgB,EAEhBC,IAAU,EAEVC,IAAgB,EACTC,IAA+B,EAa1C,IAAIzuE,GAA2B,SAAU8mE,GAQrC,SAAS9mE,EAAUzlC,EAASgmG,GACxB,IAAIn6C,EAAQ0gD,EAAOtyG,KAAKrB,KAAMoH,EAASgmG,IAAaptG,KAkCpD,OAjCAizD,EAAMqtC,SrB+YP,WACH,GAAwB,qBAAZrhG,OAAZ,CAGA,IAAIgsF,EAAM,IAAIC,YAAY,GAE1B,OADgBjsF,OAAOksF,UAAYlsF,OAAOmsF,QACzBC,gBAAgBJ,EAHjC,CAIJ,CqBtZyBswB,GAMjBtoD,EAAMuoD,kBAAmB,EACzBvoD,EAAMwoD,SAAU,EAChBxoD,EAAMyoD,eAAgB,EACtBzoD,EAAM0oD,WAAY,EAClB1oD,EAAM2oD,SAAU,EAChB3oD,EAAM4oD,OAAQ,EACVjwB,GAAkB34B,EAAM6oD,YACxB7oD,EAAM87C,cAAc,CAAE,UAAarO,KAAe,GAElD9U,GAAkB34B,EAAMp2C,SACxBo2C,EAAM87C,cAAc,CAAE,OAAUnO,KAAkB,GAEtD3tC,EAAM8oD,aAAe,IAAI/F,GAAa/iD,GACtCA,EAAM+oD,cAAgB,IAAIjd,GAAS9rC,GACnCwtC,GAAa77C,GAAG,uBAAwBqO,EAAMotC,eAAgBptC,EAAOA,EAAMqtC,UAErD,qBAAXrhG,QAA8C,qBAAbC,UAA6B67G,OACf,IAAlD3C,GAAcpsG,QAAQinD,EAAM88C,mBAC5BoL,IAAgC,GACZ,IAChBC,IAAU,GAIjBvyC,GAAYukC,IACbn6C,EAAMgpD,WAEHhpD,CACX,CA2aA,OAtdAigD,GAAUrmE,EAAW8mE,GA4CrB9mE,EAAUvtC,UAAU42G,gBAAkB,WAClC,MAAO,EACX,EAMArpE,EAAUvtC,UAAUk3B,QAAU,WACtBx2B,KAAKgvG,cAGLhvG,KAAKk8G,oBACLl8G,KAAKm8G,iBACLn8G,KAAKo8G,qBAETp8G,KAAKg8G,cAAcxlF,UACfx2B,KAAKyuG,aAGT5B,GAAY,CAAC7sG,KAAKikB,SAAU,CAAC,cAC7BjkB,KAAK2rG,QAAQ,YAAa,CAAE5sB,QAAQ,IACpC40B,EAAOr0G,UAAUk3B,QAAQn1B,KAAKrB,MAC9BA,KAAK+7G,aAAa/E,QAClBvW,GAAa97C,IAAI,uBAAwB3kD,KAAKqgG,eAAgBrgG,KAAKsgG,WACvE,EAMAzzD,EAAUvtC,UAAU+8G,QAAU,WAC1Br8G,KAAKyuG,YAAa,EAClBzuG,KAAK+7G,aAAa/E,QAClBh3G,KAAKw2B,UACLx2B,KAAKsvG,eACLtvG,KAAKg8G,cAAgB,IAAIjd,GAAS/+F,MAClCA,KAAKs8G,YACLt8G,KAAKu8G,gBACLv8G,KAAKwE,SACLxE,KAAKyuG,YAAa,CACtB,EACA5hE,EAAUvtC,UAAUk9G,YAAc,WAC1Bx8G,KAAKy8G,QAAUz8G,KAAK07G,eACpB17G,KAAKy8G,OAEb,EAMA5vE,EAAUvtC,UAAUo9G,eAAiB,WACjC,OAAI18G,KAAK07G,cACE17G,KAAK28G,cAGL38G,KAAKikB,OAEpB,EAMA4oB,EAAUvtC,UAAUs9G,aAAe,WAC/B,IAAIC,EAAQ78G,KAAK+vG,gBAAkB/vG,KAAKikB,QAAQzN,GAChD,OAAI8kG,GACOr8G,OAAOilE,aAAaK,QAAQs4C,EAAQ78G,KAAK88G,4BAGzC79G,OAAOilE,aAAaK,QAAQs4C,EAE3C,EAMAhwE,EAAUvtC,UAAUy9G,kBAAoB,WACpC/8G,KAAKg9G,aAAeh9G,KAAKg9G,aAAaj2F,KAAK/mB,MAC3Cf,OAAO+P,iBAAiB,WAAYhP,KAAKg9G,aAC7C,EAMAnwE,EAAUvtC,UAAU09G,aAAe,WAC/Bh9G,KAAKm8G,gBACT,EAMAtvE,EAAUvtC,UAAU88G,kBAAoB,WACpCn9G,OAAOgQ,oBAAoB,WAAYjP,KAAKg9G,aAChD,EAOAnwE,EAAUvtC,UAAU28G,SAAW,SAAU7O,GAOrC,GANKxhB,GAAkBwhB,IAAmC,kBAAdA,EAGlCxhB,GAAkBwhB,KACxBptG,KAAKikB,QAAUmpF,GAHfptG,KAAKikB,QAAU20C,GAAOw0C,EAAUluG,WAK/B0sF,GAAkB5rF,KAAKikB,SAAU,CAClC,IAAI6rF,EAAc,KAAO9vG,KAAK+vG,gBAAgBnvG,cAC9C0rG,GAAS,CAACtsG,KAAKikB,SAAU,CAAC,YAAa6rF,IACvC9vG,KAAKquG,qBAAsB,EACvBruG,KAAKy7G,UAAYz7G,KAAKikB,QAAQzN,KAC9BxW,KAAKikB,QAAQzN,GAAKxW,KAAKi9G,YAAYj9G,KAAK+vG,kBAExC/vG,KAAKk8G,oBACLl8G,KAAKk9G,mBACLl9G,KAAK+8G,qBAET,IAAIj9C,EAAOr6D,GAAS,gBAAiBzF,KAAKikB,SACrC67C,IAAgC,IAAxBA,EAAK9zD,QAAQhM,OACtB2zG,EAAOr0G,UAAUwvG,YAAYztG,KAAKrB,MAEtCA,KAAKs8G,YACLt8G,KAAKu8G,gBAEL,IAAIY,EAAoB,CACpBC,SAAU,MACVC,QAAS,MACTC,UAAW,MACXC,KAAM,CAAC,UACPC,eAAgB,CAAC,OAAQ,QAAS,QAAS,QAAS,QAAS,gBAAiB,cAAe,eAAgB,aAAc,UAAW,gBACtIC,SAAU,CAAC,UACXC,MAAO,CAAC,WACRC,MAAO,CAAC,SAAU,QAClBC,kBAAmB,CAAC,UACpB,gBAAiB,OAEjB98D,EAAY9gD,KAAK+vG,gBACrB,GAAI/vG,KAAKk2G,mBAAqBiH,EAAkB,GAAKr8D,IAAoD,QAAtCq8D,EAAkB,GAAKr8D,IAEtF,IADA,IAAI+8D,EAAkB79G,KAAKk2G,kBAClBhqB,EAAK,EAAGiO,EAAKn6F,KAAK+7G,aAAa9E,sBAAsB4G,GAAkB3xB,EAAKiO,EAAG37F,OAAQ0tF,IAAM,CAClG,IAAItgD,EAASuuD,EAAGjO,GACZpiC,EAAale,EAAOvnC,KAAOunC,EAAOvnC,KAAOunC,EAAO6qE,OACpD,IAAI0G,EAAkB,GAAKr8D,KAA4E,IAA9Dq8D,EAAkB,GAAKr8D,GAAW90C,QAAQ4/B,EAAO6qE,QAA1F,CAGA,IAAIqH,EAAgBh9D,EAAU30C,OAAO,GAAGpL,cAAgB+/C,EAAU7/C,MAAM,GACxE85B,QAAQ6Y,KAAK,wBAA2BkW,EAAa,yBAA4Bg0D,EAAgB,0EAFjG,CAGJ,CAGC1C,IAAYC,MFCK,WAC9B,IAAI0C,EAAiB,47uDAA8+uDhI,GAAa,kzBAChhvD,GAAwB,qBAAb72G,WAA6B0sF,GAAkB1sF,UAAW,CACjE,IAAI8+G,EAAkB7+G,GAAc,MAAO,CACvCiJ,UAAW21G,IAEf7+G,SAASgH,KAAKuC,YAAYu1G,EAC9B,CACJ,CERgBC,GACA5C,IAAgB,GAEpBr7G,KAAKwE,SACAxE,KAAKy8G,MAINz8G,KAAKw8G,cAHLx8G,KAAK2rG,QAAQ,UAKrB,CACJ,EAOA9+D,EAAUvtC,UAAU4+G,eAAiB,SAAUC,GAC3C,GAAIzxB,KAAY,CAEZztF,OAAoB,SAAEi/G,eAAel+G,KAAKikB,QAASk6F,EACvD,CACAn+G,KAAKugG,YAAa,CACtB,EAMA1zD,EAAUvtC,UAAU6vG,SAAW,WAC3BnvG,KAAKu8G,gBACL5I,EAAOr0G,UAAU6vG,SAAS9tG,KAAKrB,KACnC,EAWA6sC,EAAUvtC,UAAUslD,GAAK,SAAUvkC,EAAO0qE,EAASr6D,GAC/C,GAAqB,kBAAVrQ,EACPrgB,KAAKg8G,cAAcp3D,GAAGvkC,EAAO0qE,EAASr6D,QAGtC,IAAK,IAAIw7D,EAAK,EAAG4f,EAAUzrF,EAAO6rE,EAAK4f,EAAQttG,OAAQ0tF,IAAM,CACzD,IAAIirB,EAAMrL,EAAQ5f,GAClBlsF,KAAKg8G,cAAcp3D,GAAGuyD,EAAI92F,MAAO82F,EAAIpsB,QAASosB,EAAIzmF,QACtD,CAER,EASAmc,EAAUvtC,UAAUqlD,IAAM,SAAUtkC,EAAO0qE,GACvC,GAAqB,kBAAV1qE,EACPrgB,KAAKg8G,cAAcr3D,IAAItkC,EAAO0qE,QAG9B,IAAK,IAAImB,EAAK,EAAGkyB,EAAU/9F,EAAO6rE,EAAKkyB,EAAQ5/G,OAAQ0tF,IAAM,CACzD,IAAIirB,EAAMiH,EAAQlyB,GAClBlsF,KAAKg8G,cAAcr3D,IAAIwyD,EAAI92F,MAAO82F,EAAIpsB,QAC1C,CAER,EASAl+C,EAAUvtC,UAAUigG,OAAS,SAAUL,EAAUM,IACpB,IAArBx/F,KAAKgvG,aACLhvG,KAAKg8G,cAAczc,OAAOL,EAAUM,EAE5C,EAOA3yD,EAAUvtC,UAAU++G,mBAAqB,WACrC,OAAOr+G,KAAKs+G,eAChB,EAOAzxE,EAAU0xE,OAAS,WAEf,IADA,IAAIpI,EAAa,GACRjqB,EAAK,EAAGA,EAAK3tF,UAAUC,OAAQ0tF,IACpCiqB,EAAWjqB,GAAM3tF,UAAU2tF,GAE1BlsF,KAAKV,UAAUg/G,kBAChBt+G,KAAKV,UAAUg/G,gBAAkB,IAErC,IAAK,IAAI7sE,EAAI,EAAGA,EAAI0kE,EAAW33G,OAAQizC,KACqD,IAApFzxC,KAAKV,UAAUg/G,gBAAgBtyG,QAAQmqG,EAAW34C,SAAS/rB,EAAEnpC,WAAY,OACzEtI,KAAKV,UAAUg/G,gBAAgB/vG,KAAK4nG,EAAW34C,SAAS/rB,EAAEnpC,WAAY,KAGlF,EAUAukC,EAAUvtC,UAAUH,cAAgB,SAAU0zB,EAASqe,EAAMstE,GACzD,OAAOr/G,GAAc0zB,EAASqe,EAClC,EAQArE,EAAUvtC,UAAUm/G,mBAAqB,SAAU1zB,EAASyU,GACpDx/F,KAAK07G,gBACL17G,KAAKksC,WACLlsC,KAAK0+G,eAAiB,CAAEC,MAAO5zB,EAAS5mC,KAAMq7C,GAEtD,EACA3yD,EAAUvtC,UAAUi9G,cAAgB,WAC5Bv8G,KAAKs+G,iBAAmBt+G,KAAKs+G,gBAAgB9/G,QAC7CwB,KAAK+7G,aAAarxE,OAAO1qC,KAAKk2G,kBAAmBl2G,KAAKs+G,gBAE9D,EACAzxE,EAAUvtC,UAAU+gG,eAAiB,SAAUl8C,GAC3C,IAAIjT,EAAO7xC,OAAO6M,KAAKi4C,GACnBjT,EAAK1yC,SACLwB,KAAKkxC,EAAK,IAAMiT,EAAKjT,EAAK,IAElC,EACArE,EAAUvtC,UAAU49G,iBAAmB,WACnC,IAAIjiG,EAOE2wE,GALF3wE,EADAqgG,GACOr8G,OAAOilE,aAAaK,QAAQvkE,KAAK+vG,gBAAkB/vG,KAAKikB,QAAQzN,GAAKxW,KAAK88G,4BAG1E79G,OAAOilE,aAAaK,QAAQvkE,KAAK+vG,gBAAkB/vG,KAAKikB,QAAQzN,MAEhC,KAATyE,GAC9Bjb,KAAK+uG,cAAcvmE,KAAKmW,MAAM1jC,IAAO,EAE7C,EACA4xB,EAAUvtC,UAAU68G,eAAiB,WAC5Bn8G,KAAKgvG,cACFsM,GACAr8G,OAAOilE,aAAaE,QAAQpkE,KAAK+vG,gBAC7B/vG,KAAKikB,QAAQzN,GAAKxW,KAAK88G,2BAA4B98G,KAAK4+G,kBAG5D3/G,OAAOilE,aAAaE,QAAQpkE,KAAK+vG,gBAAkB/vG,KAAKikB,QAAQzN,GAAIxW,KAAK4+G,kBAGrF,EACA/xE,EAAUvtC,UAAUu/G,qBAAuB,SAAU9sF,GAC5C65D,GAAkB75D,IACnBA,GAER,EACA8a,EAAUvtC,UAAUw/G,cAAgB,SAAUC,EAAcnwF,GACxD,EAEJie,EAAUvtC,UAAU29G,YAAc,SAAU+B,GAMxC,OALIh/G,KAAKi/G,qBACLhE,GAAiB,GAErBH,GAAa96G,KAAKk/G,OAAOviG,SAAS6F,MAClC04F,GAAiB/lE,QAAQ32C,OAClBwgH,EAAc,IAAMlE,GAAa,IAAMG,IAClD,EACApuE,EAAUvtC,UAAU4/G,OAAS,SAAUl/F,GACnC,IAAIo0B,EAAO,EACX,GAAmB,IAAfp0B,EAAIxhB,OACJ,OAAO41C,EAEX,IAAK,IAAI3C,EAAI,EAAGA,EAAIzxB,EAAIxhB,OAAQizC,IAAK,CAEjC2C,GAASA,GAAQ,GAAKA,EADXp0B,EAAI4sD,WAAWn7B,GAE1B2C,GAAOA,CACX,CACA,OAAOjiC,KAAK4mD,IAAI3kB,EACpB,EACAvH,EAAUvtC,UAAU2/G,iBAAmB,WACnC,OAAOnE,KAAe96G,KAAKk/G,OAAOviG,SAAS6F,OAAS04F,KAAmB/lE,QAAQ32C,MACnF,EACAquC,EAAUvtC,UAAU6/G,aAAe,SAAU/3G,GAGzC,IAFA,IAAI6rD,EAAQjzD,KACRo/G,EAAa,CAAC,EACTlzB,EAAK,EAAGqZ,EAAYn+F,EAAS8kF,EAAKqZ,EAAU/mG,OAAQ0tF,IAAM,CAC/D,IAAI3vE,EAAMgpF,EAAUrZ,GAChBmzB,EAAW55G,GAAS8W,EAAKvc,MACxB6oE,GAAYw2C,IACb35G,GAAS6W,EAAKvc,KAAKs/G,oBAAoBD,GAAWD,EAE1D,CACA,OAAO52E,KAAKC,UAAU22E,GAAY,SAAU7iG,EAAKxW,GAC7C,OAAOktD,EAAMqsD,oBAAoBv5G,EACrC,GACJ,EACA8mC,EAAUvtC,UAAUggH,oBAAsB,SAAU/uE,GAChD,OAAIA,aAAe+mE,GACR7xG,GAAS,aAAc8qC,GAGvBA,CAEf,EACA1D,EAAUvtC,UAAUigH,gBAAkB,SAAUn4G,GAC5C,OAAOohC,KAAKC,UAAUzoC,KAAKw/G,sBAAsBx/G,KAAKgsG,WAAY5kG,GACtE,EACAylC,EAAUvtC,UAAUkgH,sBAAwB,SAAUjvE,EAAKkvE,GAoBvD,IAnBA,IAAIC,EAAS,CAAC,EACVpzB,EAAU,SAAU/vE,GACpB,IAAiC,IAA7BkjG,EAAWzzG,QAAQuQ,GAAa,CAChC,IAAIxW,EAAQwqC,EAAI,GAAKh0B,GACrB,GAAqB,kBAAVxW,GAAwBA,aAAiBkB,MAUhDy4G,EAAO,GAAKnjG,GAAOxW,MAVqC,CACxD,IAAI45G,EAAUF,EAAWjmE,QAAO,SAAUmS,GAEtC,OAAO,IADMnR,OACKj+B,EAAM,KAAKjb,KAAKqqD,EACtC,IAAGlf,KAAI,SAAUkf,GACb,OAAOA,EAAIhqD,QAAQ4a,EAAM,IAAK,GAClC,IACAmjG,EAAO,GAAKnjG,GAAOqjG,EAAOJ,sBAAsBI,EAAON,oBAAoBv5G,GAAQ45G,EACvF,CAIJ,CACJ,EACIC,EAAS5/G,KACJksF,EAAK,EAAGiO,EAAK96F,OAAO6M,KAAKqkC,GAAM27C,EAAKiO,EAAG37F,OAAQ0tF,IAAM,CAE1DI,EADU6N,EAAGjO,GAEjB,CACA,OAAOwzB,CACX,EACAnM,GAAW,CACPxB,IAAS,IACVllE,EAAUvtC,UAAW,yBAAqB,GAC7Ci0G,GAAW,CACPxB,MACDllE,EAAUvtC,UAAW,iBAAa,GACrCi0G,GAAW,CACPxB,MACDllE,EAAUvtC,UAAW,cAAU,GAClCutC,EAAY0mE,GAAW,CACnBhB,IACD1lE,EAEP,CAxd+B,CAwd7BqhE,IAKwB,qBAAXjvG,QACPA,OAAO+P,iBAAiB,YAExB,WACIisG,GAAiB,CACrB,ICrhBR,IAAI/H,GAAyC,WACzC,IAAIC,EAAgB,SAAUvzG,EAAGvB,GAI7B,OAHA80G,EAAgB9zG,OAAO+zG,gBAClB,CAAEC,UAAW,cAAgBpsG,OAAS,SAAUrH,EAAGvB,GAAKuB,EAAEyzG,UAAYh1G,CAAG,GAC1E,SAAUuB,EAAGvB,GAAK,IAAK,IAAIF,KAAKE,EAAOA,EAAEkB,eAAepB,KAAIyB,EAAEzB,GAAKE,EAAEF,GAAI,EACtEg1G,EAAcvzG,EAAGvB,EAC5B,EACA,OAAO,SAAUuB,EAAGvB,GAEhB,SAASi1G,IAAOtzG,KAAKqF,YAAczF,CAAG,CADtCuzG,EAAcvzG,EAAGvB,GAEjBuB,EAAEN,UAAkB,OAANjB,EAAagB,OAAOk3B,OAAOl4B,IAAMi1G,EAAGh0G,UAAYjB,EAAEiB,UAAW,IAAIg0G,EACnF,CACJ,CAZ6C,GAazCC,GAA0C,SAAUC,EAAY7lG,EAAQ4O,EAAKunE,GAC7E,IAA2HlkF,EAAvHtB,EAAIC,UAAUC,OAAQ6wB,EAAI/wB,EAAI,EAAIqP,EAAkB,OAATm2E,EAAgBA,EAAOzkF,OAAO+F,yBAAyBuI,EAAQ4O,GAAOunE,EACrH,GAAuB,kBAAZhgF,SAAoD,oBAArBA,QAAQ2vG,SAAyBpkF,EAAIvrB,QAAQ2vG,SAASD,EAAY7lG,EAAQ4O,EAAKunE,QACpH,IAAK,IAAIryC,EAAI+hE,EAAWh1G,OAAS,EAAGizC,GAAK,EAAGA,KAAS7xC,EAAI4zG,EAAW/hE,MAAIpiB,GAAK/wB,EAAI,EAAIsB,EAAEyvB,GAAK/wB,EAAI,EAAIsB,EAAE+N,EAAQ4O,EAAK8S,GAAKzvB,EAAE+N,EAAQ4O,KAAS8S,GAChJ,OAAO/wB,EAAI,GAAK+wB,GAAKhwB,OAAOuE,eAAe+J,EAAQ4O,EAAK8S,GAAIA,CAChE,EAUIwwF,GAAkB,CAAE37F,KAAM,EAAGE,IAAK,EAAG07F,OAAQ,EAAGC,MAAO,GACvDC,GAAkB,CAAEC,WAAW,GAI/BC,GAA0B,SAAUvM,GAEpC,SAASuM,IACL,OAAkB,OAAXvM,GAAmBA,EAAOxkG,MAAMnP,KAAMzB,YAAcyB,IAC/D,CAOA,OAVAkzG,GAAUgN,EAAUvM,GAIpBJ,GAAW,CACPxB,GAAS,IACVmO,EAAS5gH,UAAW,YAAQ,GAC/Bi0G,GAAW,CACPxB,GAAS,IACVmO,EAAS5gH,UAAW,WAAO,GACvB4gH,CACX,CAZ8B,CAY5B5I,IC7CEpE,ID+D2B,SAAUS,GAErC,SAASwM,EAAUl8F,EAAS7c,GACxB,IAAI6rD,EAAQ0gD,EAAOtyG,KAAKrB,KAAMoH,EAAS6c,IAAYjkB,KAgBnD,OAfAizD,EAAMmtD,UAAYC,EAAYC,qBAC9BrtD,EAAMstD,YAAcF,EAAYC,qBAChCrtD,EAAM5S,QAAUggE,EAAYC,qBAC5BrtD,EAAMutD,MAAQ,EACdvtD,EAAMwtD,SAAW,EACjBxtD,EAAMytD,QAAU,EAChBztD,EAAM0tD,oBAAqB,EAC3B1tD,EAAM2tD,OAAS,EACf3tD,EAAM4tD,aAAe,EACrB5tD,EAAM6tD,oBAAqB,EAC3B7tD,EAAM8tD,MAAQ,EACd9tD,EAAM+tD,cAAgB,EACtB/tD,EAAMguD,cAAgB,EACtBhuD,EAAMiuD,WAAa,CAAC,EACpBjuD,EAAMlsC,OACCksC,CACX,CAwvBA,IAAIotD,EA3wBJnN,GAAUiN,EAAWxM,GAoBrB0M,EAAcF,EACdA,EAAU7gH,UAAUynB,KAAO,WACvB/mB,KAAKmhH,eACD97C,GAAQkmC,MACRe,GAAS,CAACtsG,KAAKikB,SAAU,iBAE7BjkB,KAAKkhH,WAAWlhH,KAAKohH,OAAS,CAAC,CACnC,EACAjB,EAAUG,mBAAqB,WAC3B,OAAOh9F,GAAO,CAAC,EAAGu8F,GACtB,EACAM,EAAU7gH,UAAU6hH,aAAe,SAAUE,GACzC,IAAIjV,EACCvjC,GAAY7oE,KAAK6jD,UAClBuoD,EAAMxzC,GAAO54D,KAAK6jD,OAAQ7jD,KAAKikB,UAEnC,IAAI8mE,EAAW/qF,KAAKshH,eAAiBj8C,GAAQikC,UAAYjkC,GAAQgkC,QAAWrpG,KAAKuhH,iBAAmBvhH,KAAKwhH,WACrGH,EACAzW,GAAarnC,OAAO6oC,GAAOpsG,KAAKikB,QAASohD,GAAQukC,WAAa,aAAevkC,GAAQmlC,gBAAiBzf,GAGtG6f,GAAa7rG,IAAIqtG,GAAOpsG,KAAKikB,QAASohD,GAAQukC,WAAa,aAAevkC,GAAQmlC,gBAAiBzf,EAAS/qF,KAEpH,EAEAmgH,EAAU7gH,UAAUiiH,iBAAmB,SAAUE,GAC7C,IAAIxuD,EAAQjzD,KACR2N,EAAS8zG,EAAIjqG,cACjBxX,KAAK6gH,aAAe73F,YAAW,WAC3BiqC,EAAM6tD,oBAAqB,EAC3B7tD,EAAMyuD,qBACNzuD,EAAMuuD,WAAWC,EAAK9zG,EAC1B,GAAG3N,KAAK2hH,kBACR/W,GAAa7rG,IAAIG,SAAUmmE,GAAQukC,WAAa,YAAcvkC,GAAQolC,eAAgBzqG,KAAK0hH,mBAAoB1hH,MAC/G4qG,GAAa7rG,IAAIG,SAAUmmE,GAAQukC,WAAa,WAAavkC,GAAQqlC,cAAe1qG,KAAK0hH,mBAAoB1hH,KACjH,EAEAmgH,EAAU7gH,UAAUoiH,mBAAqB,WACrCx4F,aAAalpB,KAAK6gH,cAClBjW,GAAarnC,OAAOrkE,SAAUmmE,GAAQukC,WAAa,YAAcvkC,GAAQolC,eAAgBzqG,KAAK0hH,oBAC9F9W,GAAarnC,OAAOrkE,SAAUmmE,GAAQukC,WAAa,WAAavkC,GAAQqlC,cAAe1qG,KAAK0hH,mBAChG,EAEAvB,EAAU7gH,UAAUsiH,oBAAsB,SAAU39F,EAAS49F,GAGzD,OAAIj2B,GAAkB3nE,GACX,KAEPA,EALS,CAAE,SAAY,eAAgB,WAAc,eAKtC,GAAK49F,IAAS59F,EAJpB,CAAE,SAAY,eAAgB,WAAc,eAIT,GAAK49F,MACpC,aAATA,EAAsB59F,EAAQI,UAAY,EAAIJ,EAAQE,WAAa,IACtD,aAAT09F,GACA7hH,KAAKihH,cAAgBjhH,KAAKihH,eACE,IAAvBjhH,KAAKihH,cAAsBh9F,EAAQI,UAAYJ,EAAQI,UAAYrkB,KAAKihH,eAC7EjhH,KAAK8hH,iBAAmB79F,EAAQ89F,eAGhC/hH,KAAKghH,cAAgBhhH,KAAKghH,eACE,IAAvBhhH,KAAKghH,cAAsB/8F,EAAQE,WAAaF,EAAQE,WAAankB,KAAKghH,eAC/EhhH,KAAKgiH,gBAAkB/9F,EAAQg+F,aAE9Br2B,GAAkB3nE,GAIZA,EAHAjkB,KAAK4hH,oBAAoB39F,EAAQnW,WAAY+zG,IAWrD7hH,KAAK4hH,oBAAoB39F,EAAQnW,WAAY+zG,EAE5D,EACA1B,EAAU7gH,UAAU4iH,oBAAsB,WACtCliH,KAAKghH,cAAgB,EACrBhhH,KAAKihH,cAAgB,EACDjhH,KAAKikB,QAAQuoF,UAAUrqF,SAAS,aAAeniB,KAAKikB,QAAQuoF,UAAUrqF,SAAS,eACxEniB,KAAK4hH,oBAAoB5hH,KAAKikB,QAAQnW,WAAY,YAChD9N,KAAK4hH,oBAAoB5hH,KAAKikB,QAAQnW,WAAY,aACnF,EACAqyG,EAAU7gH,UAAUkiH,WAAa,SAAUC,EAAKU,GAE5C,GADAniH,KAAKoiH,mBAAqBX,EAAI9zG,QAC1B3N,KAAKqiH,gBAAT,CASA,GALIriH,KAAKqiH,eAAc,GACnBriH,KAAK8gH,oBAAqB,EAE9B9gH,KAAK2N,OAAU8zG,EAAIjqG,eAAiB2qG,EACpCniH,KAAK2gH,oBAAqB,EACtB3gH,KAAKg/E,MAAO,CACZ,IAAIsjC,EAAiBtiH,KAAKg/E,MACI,kBAAnBsjC,IACPA,EAAiB,CAACA,IAEtB,IAAK,IAAI7wE,EAAI,EAAGA,EAAI6wE,EAAe9jH,OAAQizC,IACvC,IAAKm6C,GAAkBgiB,GAAQ6T,EAAI9zG,OAAQ20G,EAAe9kD,SAAS/rB,EAAEnpC,WAAY,OAK7E,YAHItI,KAAKqiH,iBACLriH,KAAKqiH,eAAc,GAKnC,CACIriH,KAAK6X,iBAAmBgxD,GAAY44C,EAAI5jG,iBAAgC,eAAb4jG,EAAInhH,MAC/DmhH,EAAI5pG,iBAER7X,KAAKikB,QAAQxiB,aAAa,eAAgB,QAC1C,IAAI8gH,EAAWviH,KAAKwiH,eAAef,GAEnC,GADAzhH,KAAKyiH,gBAAkB,CAAEp7F,EAAGk7F,EAASjpG,MAAOgW,EAAGizF,EAAShpG,QACnDvZ,KAAK+pD,MAAO,CACb,IAAIga,EAAM/jE,KAAKikB,QAAQy+F,wBACvB1iH,KAAKkiH,sBACDT,EAAIroG,UAAYqoG,EAAInoG,QACpBtZ,KAAKghH,cAAgB,GAErBS,EAAIpoG,UAAYooG,EAAIloG,QACpBvZ,KAAKihH,cAAgB,GAEzBjhH,KAAK2iH,kBAAoBJ,EAASjpG,OAASyqD,EAAI7/C,KAAOlkB,KAAKghH,eAC3DhhH,KAAK4iH,kBAAoBL,EAAShpG,OAASwqD,EAAI3/C,IAAMpkB,KAAKihH,cAC9D,CACIjhH,KAAK8gH,mBACL9gH,KAAK6iH,aAAapB,IAGlB7W,GAAa7rG,IAAIG,SAAUmmE,GAAQukC,WAAa,YAAcvkC,GAAQolC,eAAgBzqG,KAAK6iH,aAAc7iH,MACzG4qG,GAAa7rG,IAAIG,SAAUmmE,GAAQukC,WAAa,WAAavkC,GAAQqlC,cAAe1qG,KAAK8iH,WAAY9iH,OAEzGA,KAAKmhH,cAAa,GACD,eAAbM,EAAInhH,MAAyBN,KAAK+iH,iBAClC7jH,SAASgH,KAAKsmG,UAAUztG,IAAI,oBAEhCiB,KAAK8gH,oBAAqB,EAC1BlW,GAAae,QAAQzsG,SAAS4jB,gBAAiBuiD,GAAQukC,WAAa,aAAevkC,GAAQmlC,gBAAiBiX,EAhD5G,CAiDJ,EACAtB,EAAU7gH,UAAUujH,aAAe,SAAUpB,GACzCzhH,KAAK0hH,qBACL,IAAIsB,GAAiBn6C,GAAY44C,EAAI5jG,gBACrC,IAAImlG,GAAgD,IAA9BvB,EAAI5jG,eAAerf,OAAzC,CAGA,IACIulE,EADAk/C,EAAejjH,KAAKwiH,eAAef,GAEnCyB,EAAYC,iBAAiBnjH,KAAKikB,SACtCjkB,KAAKojH,OAAS,CACVl/F,KAAMs5C,SAAS0lD,EAAUG,WAAY,IACrCj/F,IAAKo5C,SAAS0lD,EAAUI,UAAW,IACnCvD,MAAOviD,SAAS0lD,EAAUK,YAAa,IACvCzD,OAAQtiD,SAAS0lD,EAAUM,aAAc,KAE7C,IAAIv/F,EAAUjkB,KAAKikB,QACnB,GAAIjkB,KAAK+pD,OAAS/pD,KAAKyjH,WAAY,CAC/B,IAAIC,EAAa9V,GAAQ6T,EAAI9zG,OAAQ3N,KAAKyjH,YACrC73B,GAAkB83B,KACnBz/F,EAAUy/F,EAElB,CAEI1jH,KAAK2jH,mBACL1/F,EAAUjkB,KAAK4jH,kBAAkBnC,EAAI9zG,OAAQsW,IAEjDjkB,KAAKgiB,OAAShiB,KAAK6jH,wBAAwB5/F,GAC3CjkB,KAAKqtE,SAAWrtE,KAAK8jH,iBAAiBrC,EAAKzhH,KAAK+jH,cAChD,IAAI18F,EAAIrnB,KAAKyiH,gBAAgBp7F,EAAI47F,EAAa3pG,MAC1CgW,EAAItvB,KAAKyiH,gBAAgBnzF,EAAI2zF,EAAa1pG,MAE9C,GADepH,KAAK6xG,KAAM38F,EAAIA,EAAMiI,EAAIA,IACvBtvB,KAAKikH,UAAYjkH,KAAK8gH,mBAAqB,CACxD,IAAI1U,EAAMpsG,KAAKkkH,iBAAiBzC,GAChC,IAAKrV,GAAOxgB,GAAkBwgB,GAC1B,OAEA4W,GACAvB,EAAI5pG,iBAER,IAAIssG,EAAoBnkH,KAAKokH,cAAgBhY,EAE7C,GADApsG,KAAKqkH,iBAAmBrkH,KAAK6jH,wBAAwBM,EAAkBG,cACnEtkH,KAAKukH,UAAW,CAChB,IACIpgE,EAAO,CACP9jC,MAAOohG,EACPx9F,QAASA,EACTtW,OAJY3N,KAAKwkH,uBAAuB/C,GAKxCgD,WAAY/3B,KAAa1sF,KAAK0kH,eAAe39F,KAAK/mB,MAAQ,KAC1D2kH,YAAaR,GAEjBnkH,KAAK2rG,QAAQ,YAAaxnD,EAC9B,CACInkD,KAAK4kH,SACL5kH,KAAK6kH,eAGL7kH,KAAKogH,UAAY,CAAEl8F,KAAM,EAAG67F,MAAO,EAAGD,OAAQ,EAAG17F,IAAK,GACtDpkB,KAAKugH,YAAc,CAAEn8F,IAAK,EAAGF,KAAM,IAEvC6/C,EAAM,CAAE7/C,KAAMlkB,KAAKqtE,SAASnpD,KAAOlkB,KAAKqkH,iBAAiBngG,KAAME,IAAKpkB,KAAKqtE,SAASjpD,IAAMpkB,KAAKqkH,iBAAiBjgG,KAC1GpkB,KAAK+pD,QAAU/pD,KAAK8kH,iBACpB9kH,KAAKwgH,MAAQxgH,KAAKqtE,SAASnpD,KAAOlkB,KAAKgiB,OAAOkC,KAC9ClkB,KAAK+gH,MAAQ/gH,KAAKqtE,SAASjpD,IAAMpkB,KAAKgiB,OAAOoC,KAEjDpkB,KAAKkiH,sBAEL,IAAIjW,EAASkX,iBAAiBl/F,GAC1Bq/F,EAAY1kB,WAAWqN,EAAOqX,WAE9BtjH,KAAK+pD,OAAuB,IAAdu5D,IACdv/C,EAAI3/C,KAAOk/F,GAEftjH,KAAK4gH,OAAUz/G,MAAMy9F,WAAWqN,EAAO7nF,MAAmD,EAA3Cw6E,WAAWqN,EAAO7nF,KAAOpkB,KAAKgiB,OAAOoC,IAKhFpkB,KAAK+kH,sBAAwB/kH,KAAK+pD,QAClCga,EAAI3/C,KAAOpkB,KAAKihH,cAChBl9C,EAAI7/C,MAAQlkB,KAAKghH,eAErB,IAAIgE,EAAWhlH,KAAKilH,0BAA0B,CAC1C7gG,IAAM2/C,EAAI3/C,IAAMpkB,KAAK+gH,MAAS,KAC9B78F,KAAO6/C,EAAI7/C,KAAOlkB,KAAKwgH,MAAS,OAEhCxgH,KAAK4kH,UAAqC,kBAAlB5kH,KAAK4kH,UAAyB5kH,KAAK4kH,SAASpY,UAAUrqF,SAAS,qBAAwD,aAAjCniB,KAAK4kH,SAAS74G,MAAMshE,WAClItJ,EAAI3/C,KAAOpkB,KAAK4kH,SAASvgG,WAE7BrkB,KAAKklH,gBAAkB,CAAE9gG,IAAK2/C,EAAI3/C,IAAKF,KAAM6/C,EAAI7/C,MACjD2pF,GAAkBsW,EAAmBnkH,KAAKmlH,gBAAgB,CAAE93C,SAAU,WAAYnpD,KAAM8gG,EAAS9gG,KAAME,IAAK4gG,EAAS5gG,OACrHwmF,GAAarnC,OAAOrkE,SAAUmmE,GAAQukC,WAAa,YAAcvkC,GAAQolC,eAAgBzqG,KAAK6iH,cAC9FjY,GAAarnC,OAAOrkE,SAAUmmE,GAAQukC,WAAa,WAAavkC,GAAQqlC,cAAe1qG,KAAK8iH,YACvFp2B,MACD1sF,KAAK0kH,eAAeP,EAE5B,CA1FA,CA2FJ,EACAhE,EAAU7gH,UAAUolH,eAAiB,SAAUP,GACvCnX,GAAUmX,IACVvZ,GAAa7rG,IAAIG,SAAUmmE,GAAQukC,WAAa,YAAcvkC,GAAQolC,eAAgBzqG,KAAKolH,QAASplH,MACpG4qG,GAAa7rG,IAAIG,SAAUmmE,GAAQukC,WAAa,WAAavkC,GAAQqlC,cAAe1qG,KAAKqlH,YAAarlH,MACtGA,KAAKslH,qBAAoB,EAAOtlH,KAAKikB,QAASkgG,KAG9CnkH,KAAKmhH,eACLjiH,SAASgH,KAAKsmG,UAAUjpC,OAAO,oBAEvC,EACA48C,EAAU7gH,UAAUimH,kBAAoB,SAAUp+E,GAK9C,IAJAnnC,KAAKokB,IAAM+iB,EAAGq+E,UACdxlH,KAAKkkB,KAAOijB,EAAGs+E,WACfzlH,KAAKid,MAAQkqB,EAAG+lE,YAChBltG,KAAKkd,OAASiqB,EAAGu+E,aACVv+E,EAAGm9E,cACNn9E,EAAKA,EAAGm9E,aACRtkH,KAAKokB,KAAO+iB,EAAGq+E,UACfxlH,KAAKkkB,MAAQijB,EAAGs+E,WAEpB,OAAQzlH,KAAKokB,KAAOnlB,OAAO0mH,aACvB3lH,KAAKkkB,MAAQjlB,OAAO2mH,aACnB5lH,KAAKokB,IAAMpkB,KAAKkd,QAAYje,OAAO0mH,YAAc1mH,OAAO4mH,aACxD7lH,KAAKkkB,KAAOlkB,KAAKid,OAAWhe,OAAO2mH,YAAc3mH,OAAOooE,UACjE,EACA84C,EAAU7gH,UAAU2lH,0BAA4B,SAAUl/G,GACtD,OAAI/F,KAAK8lH,kBACE9lH,KAAK8lH,kBAAkB//G,GAE3BA,CACX,EACAo6G,EAAU7gH,UAAUukH,wBAA0B,SAAUzX,GACpD,GAAIxgB,GAAkBwgB,GAClB,MAAO,CAAEloF,KAAM,EAAGE,IAAK,GAE3B,IAAI2hG,EAAO3Z,EAAIsW,wBACX32G,EAAQo3G,iBAAiB/W,GAC7B,MAAO,CACHloF,KAAO6hG,EAAK7hG,KAAOjlB,OAAO2mH,YAAepoD,SAASzxD,EAAMs3G,WAAY,IACpEj/F,IAAM2hG,EAAK3hG,IAAMnlB,OAAO0mH,YAAenoD,SAASzxD,EAAMu3G,UAAW,IAEzE,EACAnD,EAAU7gH,UAAU8lH,QAAU,SAAU3D,GACpC,GAAK54C,GAAY44C,EAAI5jG,iBAAkD,IAA9B4jG,EAAI5jG,eAAerf,OAA5D,CAMA,IAAI0lB,EACAE,EAJApkB,KAAK+pD,OAAS03D,EAAI5jG,gBAAkBwnD,GAAQikC,UAAYjkC,GAAQgkC,SAChEoY,EAAI5pG,iBAIR7X,KAAKqtE,SAAWrtE,KAAK8jH,iBAAiBrC,EAAKzhH,KAAK+jH,cAChD,IAAIiC,EAAYhmH,KAAKimH,uBAAuB,UACxCD,EAAYhmH,KAAKqtE,SAASjpD,MAC1BpkB,KAAKqtE,SAASjpD,IAAM4hG,GAExB,IAAIE,EAAWlmH,KAAKimH,uBAAuB,SAI3C,GAHIC,EAAWlmH,KAAKqtE,SAASnpD,OACzBlkB,KAAKqtE,SAASnpD,KAAOgiG,GAErBlmH,KAAKmmH,KAAM,CACX,IAAIhE,EAAYniH,KAAKwkH,uBAAuB/C,GAC5CzhH,KAAK2rG,QAAQ,OAAQ,CAAEtrF,MAAOohG,EAAKx9F,QAASjkB,KAAKikB,QAAStW,OAAQw0G,GACtE,CACA,IAAIiE,EAASpmH,KAAKqmH,mBAAmB5E,GACrC,GAAI2E,EAAOz4G,QAAUy4G,EAAO//F,SAAU,CAClC,IAAI2zE,GAAO,EACPh6F,KAAKsmH,cACDtmH,KAAKsmH,YAAYjgG,WAAa+/F,EAAO//F,SACrCrmB,KAAKumH,mBAAmB9E,EAAK2E,GAG7BpsB,GAAO,GAGXA,IACAosB,EAAO//F,SAASmgG,SAASxmH,KAAKohH,OAASphH,KAAKkhH,WAAWlhH,KAAKohH,OAC5DgF,EAAO//F,SAASogG,QAAQhF,EAAK2E,EAAOz4G,QACpC3N,KAAKsmH,YAAcF,EAE3B,MACSpmH,KAAKsmH,aACVtmH,KAAKumH,mBAAmB9E,EAAK2E,GAEjC,IAAIhC,EAAgBpkH,KAAKkhH,WAAWlhH,KAAKohH,OAAOsF,OAChD1mH,KAAKqkH,iBAAmBrkH,KAAK6jH,wBAAwB7jH,KAAKokH,cAAcE,cACxE,IAAIqC,EAAQ3mH,KAAKqkH,iBAAiBngG,KAC9B0iG,EAAO5mH,KAAKqkH,iBAAiBjgG,IAC7Bm+F,EAAWviH,KAAKwiH,eAAef,GAC/BoF,EAAQtE,EAASjpG,MACjBwtG,EAAQvE,EAAShpG,MACjBwtG,EAAQ/mH,KAAKqtE,SAASnpD,KAAOlkB,KAAKwgH,MAClCwG,EAAOhnH,KAAKqtE,SAASjpD,IAAMpkB,KAAK+gH,MAChC9U,EAASkX,iBAAiBiB,GAC9B,GAAIpkH,KAAK4kH,SAAU,CAIf,GAHI5kH,KAAKinH,kBACLjnH,KAAK6kH,cAEL7kH,KAAKsZ,QAAUutG,GAAS7mH,KAAKknH,kBAAmB,CAChD,IAAIC,EAAc/C,EAAclX,aAAetO,WAAWqN,EAAOoX,YAC3DzkB,WAAWqN,EAAOsX,cAEpBr/F,EADAlkB,KAAKogH,UAAUl8F,KAAO6iG,GAASA,EAAQ,EAChC/mH,KAAKogH,UAAUl8F,KAEjBlkB,KAAKogH,UAAUL,MAAQ9gH,OAAO2mH,YAAcmB,EAAQI,GAAeJ,EAAQ,EACzEA,GAASA,EAAQ/mH,KAAKogH,UAAUL,OAAS9gH,OAAO2mH,YAAcuB,EAG9DJ,EAAQ,EAAI/mH,KAAKogH,UAAUl8F,KAAO6iG,CAEjD,CACA,GAAI/mH,KAAKuZ,QAAUutG,GAAS9mH,KAAKknH,kBAAmB,CAChD,IAAIE,EAAehD,EAAcsB,cAAgB9mB,WAAWqN,EAAOqX,WAC7D1kB,WAAWqN,EAAOuX,eAEpBp/F,EADApkB,KAAKogH,UAAUh8F,IAAM4iG,GAAQA,EAAO,EAC9BhnH,KAAKogH,UAAUh8F,IAEhBpkB,KAAKogH,UAAUN,OAAS7gH,OAAO0mH,YAAcqB,EAAOI,GAAgBJ,EAAO,EAC1EA,GAAQA,EAAOhnH,KAAKogH,UAAUN,QAAU7gH,OAAO0mH,YAAcyB,EAG7DJ,EAAO,EAAIhnH,KAAKogH,UAAUh8F,IAAM4iG,CAE9C,CACJ,MAEI9iG,EAAO6iG,EACP3iG,EAAM4iG,EAEV,IAUIK,EACAC,EAXAC,EAAOX,EAAO5mH,KAAKugH,YAAYn8F,IAC/BojG,EAAQb,EAAQ3mH,KAAKugH,YAAYr8F,KAWrC,GAVIlkB,KAAK2gH,qBACD/0B,GAAkBxnE,KAClBA,EAAMpkB,KAAK0gH,SAEX90B,GAAkB1nE,KAClBA,EAAOlkB,KAAKygH,WAKhBzgH,KAAKokH,cAAc5X,UAAUrqF,SAAS,cAClCniB,KAAK4kH,UACL5kH,KAAKogH,UAAUh8F,IAAMpkB,KAAK+pD,MAAQ/pD,KAAKogH,UAAUh8F,IAAM,EACvDijG,EAAajjG,EAAMmjG,EAAQ,EAAIvnH,KAAKogH,UAAUh8F,IAAOA,EAAMpkB,KAAKugH,YAAYn8F,IAC5EkjG,EAAcpjG,EAAOsjG,EAAS,EAAIxnH,KAAKogH,UAAUl8F,KAAQA,EAAOlkB,KAAKugH,YAAYr8F,OAGjFmjG,EAAYjjG,EAAMpkB,KAAKugH,YAAYn8F,IACnCkjG,EAAapjG,EAAOlkB,KAAKugH,YAAYr8F,WAIzC,GAAIlkB,KAAK4kH,SAAU,CACf,IAAI6C,EAAcznH,KAAKokH,cAAc5X,UAAUrqF,SAAS,YACxDniB,KAAKogH,UAAUh8F,IAAMpkB,KAAK+pD,MAAQ/pD,KAAKogH,UAAUh8F,IAAM,EACvDijG,EAAajjG,EAAMmjG,EAAQ,EAAIvnH,KAAKogH,UAAUh8F,IAAOA,EAAMmjG,EAC3DD,EAAcpjG,EAAOsjG,EAAS,EAAIC,EAAevjG,GAAQsjG,EAAQxnH,KAAKugH,YAAYr8F,MAC9ElkB,KAAKklH,gBAAgBhhG,KAAQA,EAAOsjG,CAC5C,MAEIH,EAAYjjG,EAAMmjG,EAClBD,EAAapjG,EAAOsjG,EAG5B,IAAIlE,EAAY1kB,WAAWukB,iBAAiBnjH,KAAKikB,SAASq/F,WAG1D,GAAIA,EAAY,IACRtjH,KAAK+pD,QACLs9D,GAAa/D,EACT0D,EAAO,IACF1D,EAAY0D,GAAS,EACtBK,EAAY/D,EAAY0D,EAGxBK,GAAa/D,GAGjBtjH,KAAK4kH,WACLyC,EAAarnH,KAAKogH,UAAUN,OAASuH,EAAarnH,KAAKogH,UAAUN,OAASuH,IAG7EjjG,EAAMmjG,EAAQ,GACf,GAAIP,EAAO1D,GAAac,EAAcsB,aAAe6B,IAAS,EAAG,CAC7D,IAAIG,EAAgB1nH,KAAKogH,UAAUh8F,IAAM4iG,EAAOO,EAC3CG,EAAgBpE,EAAYiE,EAAQ,EACrCF,GAAa/D,EAAYiE,EAGzBF,EAAYK,CAEpB,MAEIL,GAAa/D,EAAYiE,EAIrC,GAAIvnH,KAAK4kH,UAAY5kH,KAAKokH,cAAc5X,UAAUrqF,SAAS,cAGvDklG,EAAaA,GAFTD,EAAehD,EAAcsB,cAAgB9mB,WAAWqN,EAAOqX,WAC7D1kB,WAAWqN,EAAOuX,gBACiBxjH,KAAKogH,UAAUN,OAAU9/G,KAAKogH,UAAUN,OAASsH,EAAgBC,EAM1GrnH,KAAK+kH,sBAAwB/kH,KAAK+pD,QAClCs9D,GAAarnH,KAAKihH,cAClBqG,GAActnH,KAAKghH,eAEnBhhH,KAAK4kH,UAAqC,kBAAlB5kH,KAAK4kH,UAAyB5kH,KAAK4kH,SAASpY,UAAUrqF,SAAS,qBAAwD,aAAjCniB,KAAK4kH,SAAS74G,MAAMshE,WAClIg6C,GAAarnH,KAAK4kH,SAASvgG,WAE/B,IAAIsjG,EAAY3nH,KAAKilH,0BAA0B,CAAE7gG,IAAKijG,EAAY,KAAMnjG,KAAMojG,EAAa,OAC3FzZ,GAAkBuW,EAAepkH,KAAKmlH,gBAAgBwC,IACjD3nH,KAAKulH,kBAAkBnB,KAAkBpkH,KAAKinH,kBAAqBjnH,KAAKokH,cAAc5X,UAAUrqF,SAAS,eAC1GniB,KAAKokH,cAAcwD,iBAEvB,IAAIrb,EAAWrtG,SAASqpC,iBAAiB,UACzC,GAAIvoC,KAAKinH,kBAAoBjnH,KAAKokH,cAAc5X,UAAUrqF,SAAS,cAAe,CACtD,IAApBoqF,EAAS/tG,SACT+tG,EAAWvsG,KAAK6nH,gBAAgBpG,IAEpC,IAAIqG,EAAe9nH,KAAK+nH,gBAAgBxb,GAAU,GAC9CvsG,KAAKulH,kBAAkBvlH,KAAKokH,eAC5BpkH,KAAKgoH,kBAAkBF,EAAcT,GAE/BrnH,KAAKulH,kBAAkBvlH,KAAKokH,iBAEV,KADxB7X,EAAW,GAAGtrG,MAAMI,KAAKnC,SAASqpC,iBAAiB,YACtC/pC,SACT+tG,EAAWvsG,KAAK6nH,gBAAgBpG,IAEpCqG,EAAe9nH,KAAK+nH,gBAAgBxb,GAAU,GAC9CvsG,KAAKgoH,kBAAkBF,EAAcT,GAE7C,CACArnH,KAAK2gH,oBAAqB,EAC1B3gH,KAAKygH,SAAWv8F,EAChBlkB,KAAK0gH,QAAUt8F,EACfpkB,KAAKqtE,SAASnpD,KAAOA,EACrBlkB,KAAKqtE,SAASjpD,IAAMA,EACpBpkB,KAAKsZ,MAAQutG,EACb7mH,KAAKuZ,MAAQutG,CAtMb,CAuMJ,EACA3G,EAAU7gH,UAAUyoH,gBAAkB,SAAUhmG,EAAMkmG,GAGlD,IAFA,IACIC,EADAC,EAASF,EAAUlmG,EAAKkmG,UAAYlmG,EAE/B0vB,EAAI02E,EAAO3pH,OAAS,EAAGizC,GAAK,EAAGA,IAEpC,IAAmB,UADnBy2E,EAAYjpH,OAAOkkH,iBAAiBgF,EAAO3qD,SAAS/rB,EAAEnpC,WAAY,MAAM,gBAC7B,WAAd4/G,IACtBC,EAAO3qD,SAAS/rB,EAAEnpC,WAAY,KAAKy5G,aAAeoG,EAAO3qD,SAAS/rB,EAAEnpC,WAAY,KAAK8/G,aACxF,OAAOD,EAAO3qD,SAAS/rB,EAAEnpC,WAAY,KAI7C,GAAkB,aADlB4/G,EAAYjpH,OAAOkkH,iBAAiBjkH,SAASmpH,kBAAkB,eAG3D,OADAnpH,SAASmpH,iBAAiBt8G,MAAMuhB,SAAW,OACpCpuB,SAASmpH,gBAExB,EACAlI,EAAU7gH,UAAU0oH,kBAAoB,SAAUM,EAASjB,GACvD,GAAIiB,GAAWA,IAAYppH,SAASmpH,iBAC3BC,EAAQF,aAAelpH,SAASmpH,iBAAiBhkG,UAAYrkB,KAAKokH,cAAcgE,aAAgBf,GAC9FiB,EAAQ5F,wBAAwBxlG,OAASld,KAAKqkH,iBAAiBjgG,IAAMijG,EACxEiB,EAAQjkG,WAAarkB,KAAKokH,cAAcgE,aAEnCE,EAAQjkG,UAAYgjG,EAAYrnH,KAAKokH,cAAcgE,eACxDE,EAAQjkG,WAAarkB,KAAKokH,cAAcgE,mBAG3C,GAAIE,GAAWA,IAAYppH,SAASmpH,iBAAkB,CACvD,IAAIE,EAAerpH,SAASmpH,iBAAiBhkG,UACzCmkG,EAAqBxoH,KAAKokH,cAAcgE,aACvCE,EAAQF,aAAeE,EAAQ5F,wBAAwBt+F,IAAMokG,EAAqBD,EAAgBlB,EACnGiB,EAAQjkG,WAAarkB,KAAKokH,cAAcgE,aAEnCE,EAAQ5F,wBAAwBt+F,IAAOijG,EAAYmB,EAAqBD,IAC7ED,EAAQjkG,WAAarkB,KAAKokH,cAAcgE,aAEhD,CACJ,EACAjI,EAAU7gH,UAAUuoH,gBAAkB,SAAUpG,GAC5C,IAAIgH,EAAahH,EAAIroG,QAAU,EAAIqoG,EAAIroG,QAAU,EAC7CsvG,EAAcjH,EAAIpoG,QAAU,EAAIooG,EAAIpoG,QAAU,EAClD,OAAOna,SAASypH,kBAAkBF,EAAYC,EAClD,EACAvI,EAAU7gH,UAAUinH,mBAAqB,SAAU9E,EAAK2E,GACpDpmH,KAAKsmH,YAAYjgG,SAASuiG,OAAOnH,EAAK2E,EAAOz4G,QAC7C3N,KAAKsmH,YAAYjgG,SAASmgG,SAASxmH,KAAKohH,OAAS,KACjDphH,KAAKsmH,YAAc,IACvB,EACAnG,EAAU7gH,UAAU6lH,gBAAkB,SAAUwC,GAC5C,IAAIpsD,EAAOj4C,GAAO,CAAC,EAAGqkG,GAStB,OARI3nH,KAAK6hH,OACa,MAAd7hH,KAAK6hH,YACEtmD,EAAKn3C,IAEO,MAAdpkB,KAAK6hH,aACHtmD,EAAKr3C,MAGbq3C,CACX,EACA4kD,EAAU7gH,UAAU2mH,uBAAyB,SAAUt6D,GACnD,IAAIk9D,EAAU3pH,SAASgH,KACnB4iH,EAAS5pH,SAAS4jB,gBAEtB,OADkB3Q,KAAKwnF,IAAIkvB,EAAQ,SAAWl9D,GAAMm9D,EAAO,SAAWn9D,GAAMk9D,EAAQ,SAAWl9D,GAAMm9D,EAAO,SAAWn9D,GAAMm9D,EAAO,SAAWn9D,GAEnJ,EACAw0D,EAAU7gH,UAAU+lH,YAAc,SAAU5D,GAExC,GADAzhH,KAAK2gH,oBAAqB,EACrB93C,GAAY44C,EAAI5jG,iBAAkD,IAA9B4jG,EAAI5jG,eAAerf,OAA5D,CAIA,IAAgC,IADrB,CAAC,WAAY,YAAa,WAC5BwN,QAAQy1G,EAAInhH,MAAc,CAC/B,GAAIN,KAAK+oH,SAAU,CACf,IAAI5G,EAAYniH,KAAKwkH,uBAAuB/C,GAC5CzhH,KAAK2rG,QAAQ,WAAY,CAAEtrF,MAAOohG,EAAKx9F,QAASjkB,KAAKikB,QAAStW,OAAQw0G,EAAWuE,OAAQ1mH,KAAKokH,eAClG,CACApkH,KAAK8iH,WAAWrB,EACpB,MAEIzhH,KAAKikB,QAAQxiB,aAAa,eAAgB,SAE9C,IAAI2kH,EAASpmH,KAAKqmH,mBAAmB5E,GACjC2E,EAAOz4G,QAAUy4G,EAAO//F,WACxB+/F,EAAO//F,SAAS2iG,gBAAiB,EACjC5C,EAAO//F,SAASmgG,SAASxmH,KAAKohH,OAASphH,KAAKkhH,WAAWlhH,KAAKohH,OAC5DgF,EAAO//F,SAAS4iG,QAAQxH,EAAK2E,EAAOz4G,SAExC3N,KAAKslH,qBAAoB,GACzBpmH,SAASgH,KAAKsmG,UAAUjpC,OAAO,mBAnB/B,CAoBJ,EAMA48C,EAAU7gH,UAAUwjH,WAAa,SAAUrB,GACvCzhH,KAAK2gH,oBAAqB,EAC1B3gH,KAAKmhH,eACLjiH,SAASgH,KAAKsmG,UAAUjpC,OAAO,oBAC/BvjE,KAAKikB,QAAQxiB,aAAa,eAAgB,SAC1CmpG,GAAarnC,OAAOrkE,SAAUmmE,GAAQukC,WAAa,YAAcvkC,GAAQolC,eAAgBzqG,KAAK6iH,cAC9FjY,GAAarnC,OAAOrkE,SAAUmmE,GAAQukC,WAAa,WAAavkC,GAAQqlC,cAAe1qG,KAAKqlH,aAC5Fza,GAAarnC,OAAOrkE,SAAUmmE,GAAQukC,WAAa,WAAavkC,GAAQqlC,cAAe1qG,KAAK8iH,YAC5FlY,GAAarnC,OAAOrkE,SAAUmmE,GAAQukC,WAAa,YAAcvkC,GAAQolC,eAAgBzqG,KAAKolH,SAC1FplH,KAAKqiH,iBACLriH,KAAKqiH,eAAc,EAE3B,EAEAlC,EAAU7gH,UAAUmwG,kBAAoB,SAAUoG,EAASC,GACvD,EAEJqK,EAAU7gH,UAAUywG,cAAgB,WAChC,MAAO,WACX,EACAoQ,EAAU7gH,UAAU+iH,cAAgB,SAAU6G,GAI1C,OAHIA,IACAlJ,GAAgBC,WAAaD,GAAgBC,WAE1CD,GAAgBC,SAC3B,EACAE,EAAU7gH,UAAUulH,YAAc,WAC9B,IAAIsE,EACAC,EAGAhd,EAFAhoF,EAAM,EACNF,EAAO,EASX,GALIkoF,EADS,kBADKpsG,KAAK4kH,SAEbhsD,GAAO54D,KAAK4kH,UAGZ5kH,KAAK4kH,SAEN,CACL,IAAIyE,EAAcjd,EAAIsW,wBACtByG,EAAgB/c,EAAI6V,YAAc7V,EAAI6V,YAAcoH,EAAYtJ,MAAQsJ,EAAYnlG,KACpFklG,EAAiBhd,EAAI2V,aAAgB/hH,KAAK4kH,WAAah5B,GAAkB5rF,KAAKokH,gBAAkBpkH,KAAKokH,cAAc5X,UAAUrqF,SAAS,cAAiBiqF,EAAIgc,aAAehc,EAAI2V,aAAesH,EAAYvJ,OAASuJ,EAAYjlG,IAG9N,IAFA,IAAIlY,EAAO,CAAC,MAAO,OAAQ,SAAU,SACjC+/F,EAASkX,iBAAiB/W,GACrB36D,EAAI,EAAGA,EAAIvlC,EAAK1N,OAAQizC,IAAK,CAClC,IAAIl1B,EAAMrQ,EAAKsxD,SAAS/rB,EAAEnpC,WAAY,KAClCghH,EAAUrd,EAAO,SAAW1vF,EAAM,SAClCgtG,EAAWtd,EAAO,UAAY1vF,GAC9BitG,EAAWjtG,EAAI3b,cACnBZ,KAAKugH,YAAY,GAAKiJ,GAAYroH,MAAMy9F,WAAW0qB,IAAY,EAAI1qB,WAAW0qB,GAC9EtpH,KAAKqgD,QAAQ,GAAKmpE,GAAYroH,MAAMy9F,WAAW2qB,IAAa,EAAI3qB,WAAW2qB,EAC/E,CAEInlG,EADApkB,KAAK4kH,WAAah5B,GAAkB5rF,KAAKokH,gBAAkBpkH,KAAKokH,cAAc5X,UAAUrqF,SAAS,cAC3FknG,EAAYjlG,IAAMllB,SAASmpH,iBAAiBhkG,UAG5CglG,EAAYjlG,IAEtBF,EAAOmlG,EAAYnlG,KACnBlkB,KAAKogH,UAAUl8F,KAAOA,EAAOlkB,KAAKugH,YAAYr8F,KAAOlkB,KAAKqgD,QAAQn8B,KAClElkB,KAAKogH,UAAUh8F,IAAMgoF,EAAIoZ,UAAYxlH,KAAKugH,YAAYn8F,IAAMpkB,KAAKqgD,QAAQj8B,IACzEpkB,KAAKogH,UAAUL,MAAQ77F,EAAOilG,GAAiBnpH,KAAKugH,YAAYR,MAAQ//G,KAAKqgD,QAAQ0/D,OACrF//G,KAAKogH,UAAUN,OAAS17F,EAAMglG,GAAkBppH,KAAKugH,YAAYT,OAAS9/G,KAAKqgD,QAAQy/D,OAC3F,CACJ,EACAK,EAAU7gH,UAAUklH,uBAAyB,SAAU/C,GACnD,IACIrV,EADAmW,EAAWviH,KAAKwiH,eAAef,GAE/BgI,EAAYzpH,KAAKokH,cAAcr4G,MAAM29G,eAAiB,GACtDtgB,GAA6C,IAAjCqY,EAAInhH,KAAK0L,QAAQ,YAA2C,WAAtBq5D,GAAQ4kC,KAAK5lG,MAAqBm5D,SAAS6H,GAAQ4kC,KAAKhhE,QAAS,IAAM,GAS7H,OARI2jD,GAAqB60B,EAAI9zG,OAAQ3N,KAAKokH,iBAAiD,IAA/B3C,EAAInhH,KAAK0L,QAAQ,UAAmBo9F,GAC5FppG,KAAKokH,cAAcr4G,MAAM29G,cAAgB,OACzCtd,EAAMltG,SAASyqH,iBAAiBpH,EAASnpG,QAASmpG,EAASlpG,SAC3DrZ,KAAKokH,cAAcr4G,MAAM29G,cAAgBD,GAGzCrd,EAAMqV,EAAI9zG,OAEPy+F,CACX,EAEA+T,EAAU7gH,UAAUskH,kBAAoB,SAAUxX,EAAKwd,GAQnD,OANKh+B,GAAkB5rF,KAAKoiH,qBAAuBpiH,KAAKoiH,qBAAuBhW,EAInExgB,GAAkBg+B,GAAmBxd,EAATwd,EAH7B5pH,KAAKoiH,kBAMpB,EACAjC,EAAU7gH,UAAUwkH,iBAAmB,SAAUrC,EAAKoI,GAClD,IAEIvwG,EACAC,EAHAuwG,OAA6B95E,IAAnByxE,EAAI7zG,WAA2B6zG,EAAI7zG,WAAa6zG,EAAI9zG,OAC9D40G,EAAWviH,KAAKwiH,eAAef,GAG/BsI,EAAiBn+B,GAAkBk+B,EAAQxF,cAY/C,GAVIuF,GACAvwG,EAAQtZ,KAAK+pD,MAAQw4D,EAASjpG,MACzBipG,EAASjpG,OAASywG,EAAiB,EAAID,EAAQxF,aAAangG,YAAenkB,KAAK2iH,kBACrFppG,EAAQvZ,KAAK+pD,MAAQw4D,EAAShpG,MACzBgpG,EAAShpG,OAASwwG,EAAiB,EAAID,EAAQxF,aAAajgG,WAAcrkB,KAAK4iH,oBAGpFtpG,EAAQtZ,KAAK+pD,MAAQw4D,EAASjpG,MAASipG,EAASjpG,MAAQra,OAAO2mH,YAAe5lH,KAAK2iH,kBACnFppG,EAAQvZ,KAAK+pD,MAAQw4D,EAAShpG,MAASgpG,EAAShpG,MAAQta,OAAO0mH,YAAe3lH,KAAK4iH,mBAEnF1jH,SAASmpH,mBAAsBwB,IAAiB7pH,KAAK+pD,MAAQ,CAC7D,IAAIqiD,EAAMltG,SAASmpH,iBACf2B,EAAmB5d,EAAI2V,aAAe,GAAK3V,EAAI2V,aAAe3V,EAAIgc,cAAgBhc,EAAI/nF,UAAY,EAEtG/K,EAD0B8yF,EAAI6V,YAAc,GAAK7V,EAAI6V,YAAc7V,EAAI6d,aAAe7d,EAAIjoF,WAAa,EACzE7K,EAAQ8yF,EAAIjoF,WAAa7K,EACvDC,EAAQywG,EAAmBzwG,EAAQ6yF,EAAI/nF,UAAY9K,CACvD,CACA,MAAO,CACH2K,KAAM5K,GAAStZ,KAAKojH,OAAOl/F,KAAOlkB,KAAKkqH,SAAShmG,MAChDE,IAAK7K,GAASvZ,KAAKojH,OAAOh/F,IAAMpkB,KAAKkqH,SAAS9lG,KAEtD,EACA+7F,EAAU7gH,UAAUkjH,eAAiB,SAAUf,GAC3C,OAAIA,EAAInhH,KAAK0L,QAAQ,UAAY,EACtBy1G,EAAI5jG,eAAe,GAEvB4jG,CACX,EACAtB,EAAU7gH,UAAU4kH,iBAAmB,SAAUzC,GAC7C,IAAIx9F,EAaJ,OAZIjkB,KAAK+pD,MACD/pD,KAAK0mH,OACLziG,EAAUjkB,KAAK0mH,OAAO,CAAEyD,OAAQ1I,EAAKx9F,QAASjkB,KAAK2N,UAGnDsW,EAAU9kB,GAAc,MAAO,CAAEuoE,UAAW,8BAA+Bt/D,UAAW,cACtFlJ,SAASgH,KAAKuC,YAAYwb,IAI9BA,EAAUjkB,KAAKikB,QAEZA,CACX,EACAk8F,EAAU7gH,UAAUgmH,oBAAsB,SAAU9xD,EAAO2yD,EAAMO,GAC7D1mH,KAAKkhH,WAAWlhH,KAAKohH,OAAS5tD,EAAQ,KAAO,CACzC42D,UAAWjE,EACXO,OAAQA,EACR2D,eAAgBrqH,KAAKikB,QAE7B,EACAk8F,EAAU7gH,UAAU+mH,mBAAqB,SAAU5E,GAC/C,IAAI9zG,EAAS3N,KAAKwkH,uBAAuB/C,GACrC6I,EAAUtqH,KAAKuqH,gBAAgB58G,GACnC,IAAK28G,GAAW38G,IAAWi+E,GAAkBj+E,EAAOG,YAAa,CAC7D,IAAIiqG,EAAWnK,GAAQjgG,EAAOG,WAAY,iBAAmBH,EAAO68G,cAChEzS,IACAuS,EAAUtqH,KAAKuqH,gBAAgBxS,GAEvC,CACA,MAAO,CAAEpqG,OAAQA,EAAQ0Y,SAAUikG,EACvC,EACAnK,EAAU7gH,UAAUirH,gBAAkB,SAAUne,GAC5C,IACIqe,EACAC,EAAUte,GAAOA,EAAI4D,cACzB,GAAI0a,EACA,IAAK,IAAIx+B,EAAK,EAAGy+B,EAAYD,EAASx+B,EAAKy+B,EAAUnsH,OAAQ0tF,IAAM,CAC/D,IAAIpsB,EAAO6qD,EAAUz+B,GACrB,GAA0B,cAAtBpsB,EAAc,gBAAqB,CACnC2qD,EAAO3qD,EACP,KACJ,CACJ,CAEJ,OAAO2qD,CACX,EACAtK,EAAU7gH,UAAUk3B,QAAU,WAC1Bx2B,KAAKmhH,cAAa,GAClBxN,EAAOr0G,UAAUk3B,QAAQn1B,KAAKrB,KAClC,EAEAuzG,GAAW,CACPrB,GAAQ,CAAC,EAAGgO,KACbC,EAAU7gH,UAAW,gBAAY,GACpCi0G,GAAW,CACPxB,IAAS,IACVoO,EAAU7gH,UAAW,aAAS,GACjCi0G,GAAW,CACPxB,MACDoO,EAAU7gH,UAAW,gBAAY,GACpCi0G,GAAW,CACPxB,MACDoO,EAAU7gH,UAAW,oBAAgB,GACxCi0G,GAAW,CACPxB,MACDoO,EAAU7gH,UAAW,wBAAoB,GAC5Ci0G,GAAW,CACPxB,IAAS,IACVoO,EAAU7gH,UAAW,uBAAmB,GAC3Ci0G,GAAW,CACP5mB,MACDwzB,EAAU7gH,UAAW,YAAQ,GAChCi0G,GAAW,CACP5mB,MACDwzB,EAAU7gH,UAAW,iBAAa,GACrCi0G,GAAW,CACP5mB,MACDwzB,EAAU7gH,UAAW,gBAAY,GACpCi0G,GAAW,CACPxB,GAAS,IACVoO,EAAU7gH,UAAW,gBAAY,GACpCi0G,GAAW,CACPxB,MACDoO,EAAU7gH,UAAW,cAAU,GAClCi0G,GAAW,CACPxB,MACDoO,EAAU7gH,UAAW,aAAS,GACjCi0G,GAAW,CACPxB,MACDoO,EAAU7gH,UAAW,cAAU,GAClCi0G,GAAW,CACPxB,GAAS,YACVoO,EAAU7gH,UAAW,aAAS,GACjCi0G,GAAW,CACPxB,GAAS,KACVoO,EAAU7gH,UAAW,kBAAc,GACtCi0G,GAAW,CACPxB,MACDoO,EAAU7gH,UAAW,YAAQ,GAChCi0G,GAAW,CACPxB,MACDoO,EAAU7gH,UAAW,yBAAqB,GAC7Ci0G,GAAW,CACPxB,IAAS,IACVoO,EAAU7gH,UAAW,sBAAkB,GAC1Ci0G,GAAW,CACPxB,IAAS,IACVoO,EAAU7gH,UAAW,yBAAqB,GAC7Ci0G,GAAW,CACPxB,IAAS,IACVoO,EAAU7gH,UAAW,sBAAkB,GAC1Ci0G,GAAW,CACPxB,IAAS,IACVoO,EAAU7gH,UAAW,wBAAoB,GAC5Ci0G,GAAW,CACPxB,IAAS,IACVoO,EAAU7gH,UAAW,qBAAiB,GACzCi0G,GAAW,CACPxB,GAAS,MACVoO,EAAU7gH,UAAW,wBAAoB,GAC5Ci0G,GAAW,CACPxB,IAAS,IACVoO,EAAU7gH,UAAW,2BAAuB,GAC/C6gH,EAAYE,EAAc9M,GAAW,CACjChB,IACD4N,EAEP,CAz1B+B,CAy1B7BjS,ICx5B2C,WACzC,IAAIiF,EAAgB,SAAUvzG,EAAGvB,GAI7B,OAHA80G,EAAgB9zG,OAAO+zG,gBAClB,CAAEC,UAAW,cAAgBpsG,OAAS,SAAUrH,EAAGvB,GAAKuB,EAAEyzG,UAAYh1G,CAAG,GAC1E,SAAUuB,EAAGvB,GAAK,IAAK,IAAIF,KAAKE,EAAOA,EAAEkB,eAAepB,KAAIyB,EAAEzB,GAAKE,EAAEF,GAAI,EACtEg1G,EAAcvzG,EAAGvB,EAC5B,EACA,OAAO,SAAUuB,EAAGvB,GAEhB,SAASi1G,IAAOtzG,KAAKqF,YAAczF,CAAG,CADtCuzG,EAAcvzG,EAAGvB,GAEjBuB,EAAEN,UAAkB,OAANjB,EAAagB,OAAOk3B,OAAOl4B,IAAMi1G,EAAGh0G,UAAYjB,EAAEiB,UAAW,IAAIg0G,EACnF,CACJ,CAZ6C,IAazCC,GAA0C,SAAUC,EAAY7lG,EAAQ4O,EAAKunE,GAC7E,IAA2HlkF,EAAvHtB,EAAIC,UAAUC,OAAQ6wB,EAAI/wB,EAAI,EAAIqP,EAAkB,OAATm2E,EAAgBA,EAAOzkF,OAAO+F,yBAAyBuI,EAAQ4O,GAAOunE,EACrH,GAAuB,kBAAZhgF,SAAoD,oBAArBA,QAAQ2vG,SAAyBpkF,EAAIvrB,QAAQ2vG,SAASD,EAAY7lG,EAAQ4O,EAAKunE,QACpH,IAAK,IAAIryC,EAAI+hE,EAAWh1G,OAAS,EAAGizC,GAAK,EAAGA,KAAS7xC,EAAI4zG,EAAW/hE,MAAIpiB,GAAK/wB,EAAI,EAAIsB,EAAEyvB,GAAK/wB,EAAI,EAAIsB,EAAE+N,EAAQ4O,EAAK8S,GAAKzvB,EAAE+N,EAAQ4O,KAAS8S,GAChJ,OAAO/wB,EAAI,GAAK+wB,GAAKhwB,OAAOuE,eAAe+J,EAAQ4O,EAAK8S,GAAIA,CAChE,EClBI6jF,IDwC2B,SAAUS,GAErC,SAASiX,EAAU3mG,EAAS7c,GACxB,IAAI6rD,EAAQ0gD,EAAOtyG,KAAKrB,KAAMoH,EAAS6c,IAAYjkB,KAKnD,OAJAizD,EAAM43D,WAAY,EAClB53D,EAAMuzD,SAAW,CAAC,EAClBvzD,EAAM+1D,gBAAiB,EACvB/1D,EAAMlsC,OACCksC,CACX,CARAigD,GAAU0X,EAAWjX,GASrBiX,EAAUtrH,UAAUynB,KAAO,WACvB/mB,KAAK8qH,YACT,EACAF,EAAUtrH,UAAUwrH,WAAa,WAC7BlgB,GAAa7rG,IAAIiB,KAAKikB,QAASohD,GAAQukC,WAAa,WAAavkC,GAAQqlC,cAAe1qG,KAAKipH,QAASjpH,KAC1G,EAEA4qH,EAAUtrH,UAAUmwG,kBAAoB,SAAUoG,EAASC,GACvD,EAEJ8U,EAAUtrH,UAAUywG,cAAgB,WAChC,MAAO,WACX,EACA6a,EAAUtrH,UAAUmnH,QAAU,SAAUpmG,EAAO4D,GAC3C,IAAKjkB,KAAK6qH,UAAW,CACjB,IAAI1E,EAAOnmH,KAAKwmH,SAASxmH,KAAKohH,OAC9BphH,KAAK2rG,QAAQ,OAAQ,CAAEtrF,MAAOA,EAAO1S,OAAQsW,EAASuiG,SAAUL,IAChEnmH,KAAK6qH,WAAY,CACrB,CACJ,EACAD,EAAUtrH,UAAUspH,OAAS,SAAUvoG,EAAO4D,GACtCjkB,KAAK6qH,YACL7qH,KAAK2rG,QAAQ,MAAO,CAAE8V,IAAKphG,EAAO1S,OAAQsW,IAC1CjkB,KAAK6qH,WAAY,EAEzB,EACAD,EAAUtrH,UAAU2pH,QAAU,SAAUxH,EAAKx9F,GACzC,GAAKjkB,KAAKgpH,eAAV,CAIIhpH,KAAKgpH,gBAAiB,EAE1B,IAGIz8G,EAHAw+G,GAAS,EACT5E,EAAOnmH,KAAKwmH,SAASxmH,KAAKohH,OAC1B4J,IAAS7E,IAAQA,EAAKO,QAAU1Z,GAAUmZ,EAAKO,SAE/CsE,IACAz+G,EAAOvM,KAAKirH,WAAWxJ,EAAK0E,EAAKO,OAAQziG,GACrCjkB,KAAK+qH,SACLA,EAASxzE,GAAQ4uE,EAAKO,OAAQ1mH,KAAK+qH,UAGvCC,GAAUhrH,KAAKyqH,MAAQl+G,EAAK2+G,SAAWH,GACvC/qH,KAAK2rG,QAAQ,OAAQ,CAAEtrF,MAAOohG,EAAK9zG,OAAQpB,EAAKoB,OAAQw9G,eAAgBhF,EAAKO,OAAQF,SAAUL,IAEnGnmH,KAAK6qH,WAAY,CAdjB,CAeJ,EACAD,EAAUtrH,UAAU2rH,WAAa,SAAUxJ,EAAKiF,EAAQziG,GACpD,IAAI1X,EAAO,CAAE2+G,SAAS,EAAMv9G,OAAQsW,GAAWw9F,EAAI9zG,QAC/C07F,EAAuB,aAAboY,EAAInhH,KAClB,GAAI+oG,GAAW98F,EAAKoB,SAAW+4G,EAAQ,CACnCA,EAAO36G,MAAMw2B,QAAU,OACvB,IAAI6oF,EAAQ/hB,EAAWoY,EAAI5jG,eAAe,GAAM4jG,EAC5CrV,EAAMltG,SAASyqH,iBAAiByB,EAAMhyG,QAASgyG,EAAM/xG,SACzD9M,EAAK2+G,SAAU,EACf3+G,EAAK2+G,QAAUt+B,GAAqBwf,EAAKpsG,KAAKikB,SAC1C1X,EAAK2+G,UACL3+G,EAAKoB,OAASy+F,GAElBsa,EAAO36G,MAAMw2B,QAAU,EAC3B,CACA,OAAOh2B,CACX,EACAq+G,EAAUtrH,UAAUk3B,QAAU,WAC1Bo0E,GAAarnC,OAAOvjE,KAAKikB,QAASohD,GAAQukC,WAAa,WAAavkC,GAAQqlC,cAAe1qG,KAAKipH,SAChGtV,EAAOr0G,UAAUk3B,QAAQn1B,KAAKrB,KAClC,EACAuzG,GAAW,CACPxB,MACD6Y,EAAUtrH,UAAW,cAAU,GAClCi0G,GAAW,CACPxB,GAAS,YACV6Y,EAAUtrH,UAAW,aAAS,GACjCi0G,GAAW,CACP5mB,MACDi+B,EAAUtrH,UAAW,YAAQ,GAChCi0G,GAAW,CACP5mB,MACDi+B,EAAUtrH,UAAW,YAAQ,GAChCi0G,GAAW,CACP5mB,MACDi+B,EAAUtrH,UAAW,WAAO,GAC/BsrH,EAAYrX,GAAW,CACnBhB,IACDqY,EAEP,CAjG+B,CAiG7B1c,ICzI2C,WACzC,IAAIiF,EAAgB,SAAUvzG,EAAGvB,GAI7B,OAHA80G,EAAgB9zG,OAAO+zG,gBAClB,CAAEC,UAAW,cAAgBpsG,OAAS,SAAUrH,EAAGvB,GAAKuB,EAAEyzG,UAAYh1G,CAAG,GAC1E,SAAUuB,EAAGvB,GAAK,IAAK,IAAIF,KAAKE,EAAOA,EAAEkB,eAAepB,KAAIyB,EAAEzB,GAAKE,EAAEF,GAAI,EACtEg1G,EAAcvzG,EAAGvB,EAC5B,EACA,OAAO,SAAUuB,EAAGvB,GAEhB,SAASi1G,IAAOtzG,KAAKqF,YAAczF,CAAG,CADtCuzG,EAAcvzG,EAAGvB,GAEjBuB,EAAEN,UAAkB,OAANjB,EAAagB,OAAOk3B,OAAOl4B,IAAMi1G,EAAGh0G,UAAYjB,EAAEiB,UAAW,IAAIg0G,EACnF,CACJ,CAZ6C,IAazCC,GAA0C,SAAUC,EAAY7lG,EAAQ4O,EAAKunE,GAC7E,IAA2HlkF,EAAvHtB,EAAIC,UAAUC,OAAQ6wB,EAAI/wB,EAAI,EAAIqP,EAAkB,OAATm2E,EAAgBA,EAAOzkF,OAAO+F,yBAAyBuI,EAAQ4O,GAAOunE,EACrH,GAAuB,kBAAZhgF,SAAoD,oBAArBA,QAAQ2vG,SAAyBpkF,EAAIvrB,QAAQ2vG,SAASD,EAAY7lG,EAAQ4O,EAAKunE,QACpH,IAAK,IAAIryC,EAAI+hE,EAAWh1G,OAAS,EAAGizC,GAAK,EAAGA,KAAS7xC,EAAI4zG,EAAW/hE,MAAIpiB,GAAK/wB,EAAI,EAAIsB,EAAEyvB,GAAK/wB,EAAI,EAAIsB,EAAE+N,EAAQ4O,EAAK8S,GAAKzvB,EAAE+N,EAAQ4O,KAAS8S,GAChJ,OAAO/wB,EAAI,GAAK+wB,GAAKhwB,OAAOuE,eAAe+J,EAAQ4O,EAAK8S,GAAIA,CAChE,EAGIpY,GAAU,CACV,UAAa,EACb,IAAO,EACP,MAAS,GACT,MAAS,GACT,QAAW,GACX,IAAO,GACP,MAAS,GACT,SAAY,GACZ,MAAS,GACT,OAAU,GACV,OAAU,GACV,SAAY,GACZ,IAAO,GACP,KAAQ,GACR,UAAa,GACb,QAAW,GACX,WAAc,GACd,UAAa,GACb,OAAU,GACV,OAAU,GACV,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,IAAO,IACP,IAAO,IACP,IAAO,IACP,UAAa,IACb,KAAQ,IACR,MAAS,IACT,MAAS,IACT,IAAO,IACP,aAAgB,IAChB,YAAe,IACf,YAAe,IACf,UAAa,IACb,aAAgB,IAChB,YAAe,KCvCfo0G,IDyDgC,SAAU1X,GAQ1C,SAAS2X,EAAernG,EAAS7c,GAC7B,IAAI6rD,EAAQ0gD,EAAOtyG,KAAKrB,KAAMoH,EAAS6c,IAAYjkB,KA8BnD,OAvBAizD,EAAMs4D,gBAAkB,SAAU1rH,GAM9B,IALA,IAAI2rH,EAAW3rH,EAAE6Z,OACb+xG,EAAY5rH,EAAE2Z,QACdkyG,EAAa7rH,EAAE4Z,SACfkyG,EAAa9rH,EAAEid,MAEVovE,EAAK,EAAGC,EADN9sF,OAAO6M,KAAK+mD,EAAM24D,YACG1/B,EAAKC,EAAO3tF,OAAQ0tF,IAGhD,IAFA,IAAI3vE,EAAM4vE,EAAOD,GAERiO,EAAK,EAAG0xB,EADM54D,EAAM24D,WAAW,GAAKrvG,GAAK7b,MAAM,KACAy5F,EAAK0xB,EAAmBrtH,OAAQ27F,IAAM,CAC1F,IAAI2xB,EAAUD,EAAmB1xB,GAC7B4xB,EAAUC,EAAiBC,iBAAiBH,EAAQvoH,QACpDioH,IAAaO,EAAQryG,QAAU+xG,IAAcM,EAAQvyG,SACrDkyG,IAAeK,EAAQtyG,UAAYkyG,IAAeI,EAAQ90G,UAC1DpX,EAAEo1B,OAAS1Y,EACP02C,EAAMi5D,WACNj5D,EAAMi5D,UAAUrsH,GAG5B,CAER,EACAozD,EAAMlsC,OACCksC,CACX,CAkFA,IAAI+4D,EAzHJ9Y,GAAUoY,EAAgB3X,GAwC1BqY,EAAmBV,EAMnBA,EAAehsH,UAAUk3B,QAAU,WAC/Bx2B,KAAKmsH,eACLxY,EAAOr0G,UAAUk3B,QAAQn1B,KAAKrB,KAClC,EASAsrH,EAAehsH,UAAUmwG,kBAAoB,SAAUoG,EAASC,GAC5D,EAEJwV,EAAehsH,UAAUynB,KAAO,WAC5B/mB,KAAK8qH,YACT,EAOAQ,EAAehsH,UAAUywG,cAAgB,WACrC,MAAO,UACX,EAOAub,EAAehsH,UAAUwrH,WAAa,WAClC9qH,KAAKikB,QAAQjV,iBAAiBhP,KAAK+qG,UAAW/qG,KAAKurH,gBACvD,EAOAD,EAAehsH,UAAU6sH,aAAe,WACpCnsH,KAAKikB,QAAQhV,oBAAoBjP,KAAK+qG,UAAW/qG,KAAKurH,gBAC1D,EAOAD,EAAeW,iBAAmB,SAAUl9C,GACxC,GAAIA,KAAU/uE,KAAKosH,YACf,OAAOpsH,KAAKosH,YAAY,GAAKr9C,GAEjC,IAAI7iE,EAAO6iE,EAAOnuE,cAAcF,MAAM,KAClC2rH,EAAU,CACV3yG,QAAkC,IAAzBxN,EAAKF,QAAQ,OACtBwN,SAAoC,IAA1BtN,EAAKF,QAAQ,QACvByN,UAAsC,IAA3BvN,EAAKF,QAAQ,SACxBiL,QAAS,MASb,OAPI/K,EAAKA,EAAK1N,OAAS,GAAGA,OAAS,GAAOm4D,OAAOzqD,EAAKA,EAAK1N,OAAS,IAChE6tH,EAAQp1G,QAAU0/C,OAAOzqD,EAAKA,EAAK1N,OAAS,IAG5C6tH,EAAQp1G,QAAU+0G,EAAiBM,WAAWpgH,EAAKA,EAAK1N,OAAS,IAErEwtH,EAAiBI,YAAY,GAAKr9C,GAAUs9C,EACrCA,CACX,EAEAf,EAAegB,WAAa,SAAUC,GAClC,OAAOt1G,GAAQ,GAAKs1G,IAAWA,EAAOxrH,cAAc6rE,WAAW,EACnE,EAEA0+C,EAAec,YAAc,CAAC,EAC9B7Y,GAAW,CACPxB,GAAS,CAAC,IACXuZ,EAAehsH,UAAW,kBAAc,GAC3Ci0G,GAAW,CACPxB,GAAS,UACVuZ,EAAehsH,UAAW,iBAAa,GAC1Ci0G,GAAW,CACP5mB,MACD2+B,EAAehsH,UAAW,iBAAa,GAC1CgsH,EAAiBU,EAAmBzY,GAAW,CAC3ChB,IACD+Y,EAEP,CAzIoC,CAyIlCpd,IClMwB,WAQtB,SAASmd,EAAKmB,EAAaC,EAAe5vG,GACtC7c,KAAKwsH,YAAcA,EACnBxsH,KAAKysH,cAAgBA,EACrBzsH,KAAK0sH,UAAU7vG,GAAU+jF,GAC7B,CAiDA,OA1CAyqB,EAAK/rH,UAAUotH,UAAY,SAAU7vG,GACjC,IAAI8vG,EAAY3sH,KAAK4sH,sBAAsBvB,EAAKxuG,OAAQA,GACxD7c,KAAK6sH,cAAgBF,GAAa3sH,KAAKysH,aAC3C,EAOApB,EAAKv1D,KAAO,SAAUg3D,GAClB9sH,KAAK6c,OAASyG,GAAOtjB,KAAK6c,OAAQiwG,EAAc,CAAC,GAAG,EACxD,EAOAzB,EAAK/rH,UAAUytH,YAAc,SAAU77E,GAEnC,OAAK06C,GAAkB5rF,KAAK6sH,cAAc,GAAK37E,IAIpClxC,KAAKysH,cAAc,GAAKv7E,IAAS,GAHjClxC,KAAK6sH,cAAc,GAAK37E,EAKvC,EAQAm6E,EAAK/rH,UAAUstH,sBAAwB,SAAUtvB,EAAWzgF,GACxD,OAAKygF,EAAW,GAAKzgF,GACTygF,EAAW,GAAKzgF,GAAQ7c,KAAKwsH,aAElC,IACX,EACAnB,EAAKxuG,OAAS,CAAC,EACRwuG,CACX,CA9D0B,ICzBtBnY,GAAyC,WACzC,IAAIC,EAAgB,SAAUvzG,EAAGvB,GAI7B,OAHA80G,EAAgB9zG,OAAO+zG,gBAClB,CAAEC,UAAW,cAAgBpsG,OAAS,SAAUrH,EAAGvB,GAAKuB,EAAEyzG,UAAYh1G,CAAG,GAC1E,SAAUuB,EAAGvB,GAAK,IAAK,IAAIF,KAAKE,EAAOA,EAAEkB,eAAepB,KAAIyB,EAAEzB,GAAKE,EAAEF,GAAI,EACtEg1G,EAAcvzG,EAAGvB,EAC5B,EACA,OAAO,SAAUuB,EAAGvB,GAEhB,SAASi1G,IAAOtzG,KAAKqF,YAAczF,CAAG,CADtCuzG,EAAcvzG,EAAGvB,GAEjBuB,EAAEN,UAAkB,OAANjB,EAAagB,OAAOk3B,OAAOl4B,IAAMi1G,EAAGh0G,UAAYjB,EAAEiB,UAAW,IAAIg0G,EACnF,CACJ,CAZ6C,GAazCC,GAA0C,SAAUC,EAAY7lG,EAAQ4O,EAAKunE,GAC7E,IAA2HlkF,EAAvHtB,EAAIC,UAAUC,OAAQ6wB,EAAI/wB,EAAI,EAAIqP,EAAkB,OAATm2E,EAAgBA,EAAOzkF,OAAO+F,yBAAyBuI,EAAQ4O,GAAOunE,EACrH,GAAuB,kBAAZhgF,SAAoD,oBAArBA,QAAQ2vG,SAAyBpkF,EAAIvrB,QAAQ2vG,SAASD,EAAY7lG,EAAQ4O,EAAKunE,QACpH,IAAK,IAAIryC,EAAI+hE,EAAWh1G,OAAS,EAAGizC,GAAK,EAAGA,KAAS7xC,EAAI4zG,EAAW/hE,MAAIpiB,GAAK/wB,EAAI,EAAIsB,EAAEyvB,GAAK/wB,EAAI,EAAIsB,EAAE+N,EAAQ4O,EAAK8S,GAAKzvB,EAAE+N,EAAQ4O,KAAS8S,GAChJ,OAAO/wB,EAAI,GAAK+wB,GAAKhwB,OAAOuE,eAAe+J,EAAQ4O,EAAK8S,GAAIA,CAChE,EAWI29F,GAA+B,SAAUrZ,GAEzC,SAASqZ,IACL,OAAkB,OAAXrZ,GAAmBA,EAAOxkG,MAAMnP,KAAMzB,YAAcyB,IAC/D,CAIA,OAPAkzG,GAAU8Z,EAAerZ,GAIzBJ,GAAW,CACPxB,GAAS,KACVib,EAAc1tH,UAAW,8BAA0B,GAC/C0tH,CACX,CATmC,CASjC1V,IAEE2V,GAAa,YAsBbC,GAAuB,SAAUvZ,GAGjC,SAASuZ,EAAMjpG,EAAS7c,GACpB,IAAI6rD,EAAQ0gD,EAAOtyG,KAAKrB,KAAMoH,EAAS6c,IAAYjkB,KA2InD,OA1IAizD,EAAMk6D,aAAc,EACpBl6D,EAAMm6D,SAAW,EAMjBn6D,EAAMo6D,WAAa,SAAU5L,GACzB,IAA0B,IAAtBxuD,EAAMk6D,YAAsB,CAC5B,IAAIG,EAAQr6D,EAAMs6D,oBAAoB9L,QACXzxE,IAAvByxE,EAAI5jG,iBACJo1C,EAAMk6D,aAAc,GAExBl6D,EAAMu6D,cAAe,EACrBv6D,EAAMw6D,eAAiB,GACvBx6D,EAAMy6D,WAAaz6D,EAAM06D,eAAiB,CAAEv0G,QAASk0G,EAAMl0G,QAASC,QAASi0G,EAAMj0G,SACnF45C,EAAM26D,eAAiBN,EACvBr6D,EAAM46D,cAAgB56D,EAAM66D,eAAgB,EAC5C76D,EAAM86D,YAAct1G,KAAKC,MACzBu6C,EAAM+6D,eAAiBhlG,YAAW,WAAciqC,EAAMg7D,aAAaxM,EAAM,GAAGxuD,EAAM0uD,kBAClF/W,GAAa7rG,IAAIk0D,EAAMhvC,QAASohD,GAAQolC,eAAgBx3C,EAAMi7D,UAAWj7D,GACzE23C,GAAa7rG,IAAIk0D,EAAMhvC,QAASohD,GAAQqlC,cAAez3C,EAAMk7D,SAAUl7D,GACvE23C,GAAa7rG,IAAIk0D,EAAMhvC,QAASohD,GAAQslC,iBAAkB13C,EAAMm7D,YAAan7D,EACjF,CACJ,EAMAA,EAAMi7D,UAAY,SAAUzM,GACxB,IAAI6L,EAAQr6D,EAAMs6D,oBAAoB9L,GACtCxuD,EAAMo7D,WAAaf,EACnBr6D,EAAMu6D,eAAiBF,EAAMl0G,UAAY65C,EAAMy6D,WAAWt0G,SAAWk0G,EAAMj0G,UAAY45C,EAAMy6D,WAAWr0G,SACxG,IAAIi1G,EAAc,CAAC,EACfr7D,EAAMu6D,eACNtkG,aAAa+pC,EAAM+6D,gBACnB/6D,EAAMs7D,iBAAiB9M,GAQvB6M,EAAchrG,GAAOgrG,EAAa,CAAC,EAPnB,CACZE,YAAav7D,EAAM26D,eACnBa,cAAehN,EAAKiN,OAAQz7D,EAAMy6D,WAAWt0G,QAC7Cu1G,OAAQ17D,EAAMy6D,WAAWr0G,QAASu1G,UAAW37D,EAAM27D,UACnDC,UAAW57D,EAAM47D,UAAWC,gBAAiB77D,EAAM67D,gBACnDC,SAAU97D,EAAM+7D,YAAY1B,KAGhCr6D,EAAM04C,QAAQ,SAAU2iB,GACxBr7D,EAAM06D,eAAiB,CAAEv0G,QAASk0G,EAAMl0G,QAASC,QAASi0G,EAAMj0G,SAExE,EAMA45C,EAAMm7D,YAAc,SAAU3M,GAC1Bv4F,aAAa+pC,EAAM+6D,gBACnB9kG,aAAa+pC,EAAMg8D,YACnBh8D,EAAMm6D,SAAW,EACjBn6D,EAAMi8D,QAAQzN,GACd7W,GAAarnC,OAAOtQ,EAAMhvC,QAASohD,GAAQslC,iBAAkB13C,EAAMm7D,YACvE,EAMAn7D,EAAMk7D,SAAW,SAAU1M,GACvBxuD,EAAMi8D,QAAQzN,GACTxuD,EAAMu6D,cACkB,oBAAdv6D,EAAMk8D,MACbl8D,EAAM04C,QAAQ,MAAO,CAAE8iB,cAAehN,EAAK2L,WAAYn6D,EAAMm6D,WAC7Dn6D,EAAMg8D,WAAajmG,YAAW,WAC1BiqC,EAAMm6D,SAAW,CACrB,GAAGn6D,EAAMm8D,eAGjBn8D,EAAMo8D,WACV,EAMAp8D,EAAMi8D,QAAU,SAAUzN,GACtBv4F,aAAa+pC,EAAM+6D,gBACnB9kG,aAAa+pC,EAAMg8D,YACnB,IAAI3B,EAAQr6D,EAAMs6D,oBAAoB9L,GAClCjB,EAAQ8M,EAAMl0G,QAAU65C,EAAMy6D,WAAWt0G,QACzC2nG,EAAQuM,EAAMj0G,QAAU45C,EAAMy6D,WAAWr0G,QAC7CmnG,EAAQruG,KAAKk9B,MAAMmxE,EAAQ,GAAK,EAAIA,EAAQA,GAC5CO,EAAQ5uG,KAAKk9B,MAAM0xE,EAAQ,GAAK,EAAIA,EAAQP,GAC5CvtD,EAAMu6D,aAAehN,EAAQ,GAAKO,EAAQ,EACzB,UAAWz/G,KAAK+jE,GAAQ8U,YACN,IAAlBmzC,EAAMl0G,SAAmC,IAAlBk0G,EAAMj0G,SAA8B,YAAbooG,EAAInhH,OAC/D2yD,EAAMu6D,cAAe,GAEzBv6D,EAAMq8D,SAAWhC,EACjBr6D,EAAMs8D,WAAW9N,GACjB,IAAI+N,EAAY,CACZf,cAAehN,EACf+M,YAAav7D,EAAM26D,eACnBc,OAAQz7D,EAAMy6D,WAAWt0G,QACzBu1G,OAAQ17D,EAAMy6D,WAAWr0G,QACzBu1G,UAAW37D,EAAM27D,UAAWC,UAAW57D,EAAM47D,UAAWY,eAAgBx8D,EAAMw6D,eAC9EsB,SAAU97D,EAAM+7D,YAAY1B,IAEhC,GAAIr6D,EAAMu6D,aAAc,CACpB,IAAIkC,EAAYz8D,EAAM08D,cAAcC,uBAChCC,EAAavsG,QAAO0sB,EAAWijB,EAAM68D,YAAaN,GAClDO,GAAa,EACb3jB,EAAMn5C,EAAMhvC,QACZ+rG,EAAa/8D,EAAMg9D,aAAa7jB,GAChC8jB,EAAQjD,GAAW3rH,KAAK2xD,EAAMw6D,iBAC7BiC,EAAYz8D,EAAM27D,YAAcsB,GAAWR,EAAYz8D,EAAM47D,WAAaqB,KAKvEH,GAJCC,GAIY/8D,EAAMk9D,WAAW/jB,EAAK8jB,IAGvCH,GACA98D,EAAM04C,QAAQ,QAASkkB,EAE/B,CACA58D,EAAMo8D,WACV,EACAp8D,EAAMo8D,UAAY,WACdp8D,EAAMm9D,UAAYpnG,YAAW,WACzBiqC,EAAMk6D,aAAc,CACxB,GAAyB,oBAAdl6D,EAAMk8D,IAAqB,EAAI,IAC1Cl8D,EAAMo9D,aAAc,IAAI53G,MAAOsqD,UAC/B6nC,GAAarnC,OAAOtQ,EAAMhvC,QAASohD,GAAQolC,eAAgBx3C,EAAMi7D,WACjEtjB,GAAarnC,OAAOtQ,EAAMhvC,QAASohD,GAAQqlC,cAAez3C,EAAMk7D,UAChEvjB,GAAarnC,OAAOtQ,EAAMhvC,QAASohD,GAAQslC,iBAAkB13C,EAAMm7D,YACvE,EACAn7D,EAAMlsC,OACCksC,CACX,CA+IA,OA9RAigD,GAAUga,EAAOvZ,GAwJjBuZ,EAAM5tH,UAAUmwG,kBAAoB,SAAUoG,EAASC,GACnD,EAEJoX,EAAM5tH,UAAUynB,KAAO,WACnB/mB,KAAK8qH,aACDzlD,GAAQkmC,MACRvrG,KAAKikB,QAAQuoF,UAAUztG,IAAI,gBAEnC,EAMAmuH,EAAM5tH,UAAUk3B,QAAU,WACtBx2B,KAAKmsH,eACLxY,EAAOr0G,UAAUk3B,QAAQn1B,KAAKrB,KAClC,EAEAktH,EAAM5tH,UAAUwrH,WAAa,WACzBlgB,GAAa7rG,IAAIiB,KAAKikB,QAASohD,GAAQmlC,gBAAiBxqG,KAAKqtH,WAAYrtH,KAC7E,EACAktH,EAAM5tH,UAAU6sH,aAAe,WAC3BvhB,GAAarnC,OAAOvjE,KAAKikB,QAASohD,GAAQmlC,gBAAiBxqG,KAAKqtH,WACpE,EAOAH,EAAM5tH,UAAUywG,cAAgB,WAC5B,MAAO,OACX,EAOAmd,EAAM5tH,UAAU2wH,aAAe,SAAUhsG,GACrC,IAAIqsG,EAAWnN,iBAAiBl/F,GAC5BlY,EAAQukH,EAAShjG,SAAWgjG,EAASC,UAAYD,EAASE,UAC9D,QAAK,gBAAiBlvH,KAAKyK,EAI/B,EAMAmhH,EAAM5tH,UAAU2uH,aAAe,SAAUxM,GACrCzhH,KAAKotH,SAAW,EAChBptH,KAAKmtH,aAAc,EACnBviB,GAAarnC,OAAOvjE,KAAKikB,QAASohD,GAAQolC,eAAgBzqG,KAAKkuH,WAC/DtjB,GAAarnC,OAAOvjE,KAAKikB,QAASohD,GAAQqlC,cAAe1qG,KAAKmuH,UAC9D,IAAIsC,EAAW,CAAEhC,cAAehN,GAChCzhH,KAAK2rG,QAAQ,UAAW8kB,GACxB7lB,GAAarnC,OAAOvjE,KAAKikB,QAASohD,GAAQslC,iBAAkB3qG,KAAKouH,YACrE,EACAlB,EAAM5tH,UAAUiwH,WAAa,SAAU9N,GACnC,IAAI6L,EAAQttH,KAAKutH,oBAAoB9L,GACrCzhH,KAAK8vH,YAAc,CAAErB,cAAehN,GACpCzhH,KAAK4uH,UAAYz8G,KAAK4mD,IAAK5mD,KAAK4mD,IAAIu0D,EAAMl0G,SAAWjH,KAAK4mD,IAAI/4D,KAAK0tH,WAAWt0G,UAC9EpZ,KAAK6uH,UAAY18G,KAAK4mD,IAAK5mD,KAAK4mD,IAAIu0D,EAAMj0G,SAAWlH,KAAK4mD,IAAI/4D,KAAK0tH,WAAWr0G,UAC1ErZ,KAAK4uH,UAAY5uH,KAAK6uH,UACtB7uH,KAAKytH,eAAkBH,EAAMl0G,QAAUpZ,KAAK0tH,WAAWt0G,QAAW,QAAU,OAG5EpZ,KAAKytH,eAAkBH,EAAMj0G,QAAUrZ,KAAK0tH,WAAWr0G,QAAW,KAAO,MAEjF,EACA6zG,EAAM5tH,UAAUivH,iBAAmB,SAAU9M,GACzC,IAAI6L,EAAQttH,KAAKutH,oBAAoB9L,GACrCzhH,KAAK8vH,YAAc,CAAErB,cAAehN,GACpCzhH,KAAK4uH,UAAYz8G,KAAK4mD,IAAK5mD,KAAK4mD,IAAIu0D,EAAMl0G,SAAWjH,KAAK4mD,IAAI/4D,KAAK2tH,eAAev0G,UAClFpZ,KAAK6uH,UAAY18G,KAAK4mD,IAAK5mD,KAAK4mD,IAAIu0D,EAAMj0G,SAAWlH,KAAK4mD,IAAI/4D,KAAK2tH,eAAet0G,WAC7ErZ,KAAK4uH,UAAY5uH,KAAK6uH,YAAoC,IAAvB7uH,KAAK6tH,iBAAkD,IAAvB7tH,KAAK8tH,eACzE9tH,KAAK8uH,gBAAmBxB,EAAMl0G,QAAUpZ,KAAK2tH,eAAev0G,QAAW,QAAU,OACjFpZ,KAAK6tH,eAAgB,IAGrB7tH,KAAK8uH,gBAAmBxB,EAAMj0G,QAAUrZ,KAAK2tH,eAAet0G,QAAW,KAAO,OAC9ErZ,KAAK8tH,eAAgB,EAE7B,EACAZ,EAAM5tH,UAAU0vH,YAAc,SAAU0B,GACpC,IAAIC,EAAOD,EAAIt3G,QACXw3G,EAAOF,EAAIr3G,QACXw3G,EAAOp4G,KAAKC,MACZo4G,EAAQH,EAAO3wH,KAAK0tH,WAAWt0G,QAC/B23G,EAAQH,EAAO5wH,KAAK0tH,WAAWt0G,QAC/B43G,EAAWH,EAAO7wH,KAAK+tH,YAC3B,OAAO57G,KAAK6xG,KAAK8M,EAAQA,EAAQC,EAAQA,GAASC,CACtD,EACA9D,EAAM5tH,UAAU6wH,WAAa,SAAU/jB,EAAKpS,GACxC,IAAI9tF,EAAO,CAAC,SAAU,UAClBqvD,EAAOy+B,EAAO,CAAC,SAAU,OAAS,CAAC,QAAS,QAChD,OAAKoS,EAAIlgG,EAAK,GAAKqvD,EAAK,KAAO6wC,EAAIlgG,EAAK,GAAKqvD,EAAK,MAGf,IAA3B6wC,EAAIlgG,EAAK,GAAKqvD,EAAK,KACtB6wC,EAAIlgG,EAAK,GAAKqvD,EAAK,IAAM6wC,EAAIlgG,EAAK,GAAKqvD,EAAK,KAAO6wC,EAAIlgG,EAAK,GAAKqvD,EAAK,IAC/E,EACA2xD,EAAM5tH,UAAUiuH,oBAAsB,SAAU9L,GAE5C,OADYA,EAAI5jG,gBAAgD,IAA9B4jG,EAAI5jG,eAAerf,OAAeijH,EAAI5jG,eAAe,GAAK4jG,CAEhG,EACAlO,GAAW,CACP5mB,MACDugC,EAAM5tH,UAAW,WAAO,GAC3Bi0G,GAAW,CACP5mB,MACDugC,EAAM5tH,UAAW,eAAW,GAC/Bi0G,GAAW,CACP5mB,MACDugC,EAAM5tH,UAAW,aAAS,GAC7Bi0G,GAAW,CACP5mB,MACDugC,EAAM5tH,UAAW,cAAU,GAC9Bi0G,GAAW,CACPxB,GAAS,MACVmb,EAAM5tH,UAAW,oBAAgB,GACpCi0G,GAAW,CACPxB,GAAS,MACVmb,EAAM5tH,UAAW,wBAAoB,GACxCi0G,GAAW,CACPrB,GAAQ,CAAC,EAAG8a,KACbE,EAAM5tH,UAAW,qBAAiB,GACrC4tH,EAAQ3Z,GAAW,CACfhB,IACD2a,EAEP,CAhS2B,CAgSzBhf,IC1VE+iB,GAAQ,IAAIz2E,OAAO,kBAAmB,KACtC02E,GAAS,IAAI12E,OAAO,QACpB22E,GAAU,IAAI32E,OAAO,WACrB42E,GAAc,IAAI52E,OAAO,gBACzB62E,GAAY,IAAI72E,OAAO,QACvB82E,GAAW,IAAI92E,OAAO,YACtB+2E,GAAY,IAAI/2E,OAAO,cACvBg3E,GAAgB,IAAIh3E,OAAO,aAAc,IACzCi3E,GAAa,IAAIj3E,OAAO,WAAY,KACpCk3E,GAAO,IAAIl3E,OAAO,iBAAkB,KACpCm3E,GAAiB,IAAIn3E,OAAO,UAAW,KACvCo3E,GAAS,IAAIp3E,OAAO,qBAAsB,KAC1Cq3E,GAAM,IAAIr3E,OAAO,eAAgB,KAEjCs3E,GAAU,UACVC,GAAe,OACfC,GAAe,SACfC,GAAW,IAAIz3E,OAAO,oBAAqB,KAC3C03E,GAAa,cAuCV,SAASC,GAAQC,EAAU1L,EAAQ2L,GACtC,GAAwB,oBAAbD,EACP,OAAOA,EAGP,IAAIE,EAAU,OACVC,EAeZ,SAAiB5mE,EAAK8/B,EAAWi7B,EAAQ2L,GACrC,IAAIG,EAAW,EAIXC,EAAY,GACZC,EAAU/mE,EAAInoD,MAAM,yBACpBmvH,EAAc,GACdD,GACAA,EAAQ/xH,SAAQ,SAAUoF,GACtB4sH,EAAc5sH,EAAMpE,QAAQ,SAAU,KACtCgqD,EAAMA,EAAIhqD,QAAQoE,EAAO4sH,EAC7B,IAEJ,GAAId,GAAIvwH,KAAKqqD,GAAM,CAGf,IAFA,IAAIinE,GAAe,EACfC,EAAe,GACVphF,EAAI,EAAGA,EAAIka,EAAIntD,OAAQizC,IACR,MAAhBka,EAAIla,EAAI,KAA8B,MAAfka,EAAIla,EAAI,GAC/BmhF,GAAe,EAEM,MAAhBjnE,EAAIla,EAAI,MACbmhF,GAAe,GAEnBC,GAAiC,MAAhBlnE,EAAIla,EAAI,KAAgBmhF,EAAwBjnE,EAAIla,EAAI,IAAhB,MAE7Dka,EAAMknE,CACV,MAEIlnE,EAAMA,EAAIhqD,QAAQ,QAAS,OAE/B,OAAOgqD,EAAIhqD,QAAQsvH,GAAO,IAAItvH,QAAQgwH,GAAgB,QAAUhwH,QAAQkwH,IAAK,SAAUruH,EAAOsvH,EAAK9wG,EAAQ+wG,GACvG,IAAIC,EAAe,WACfz7E,EAAUu7E,EAAItvH,MAAMguH,IAExB,GAAIj6E,EAAS,CACT,IAAI07E,EAAQ17E,EAAQ,GACpB,GAAI65E,GAAY9vH,KAAKwxH,GAEjBA,EAAM,OAASA,EAAInxH,QAAQ41C,EAAQ,GAAI07E,EAAMtxH,QAAQ+vH,IAAM,SAAU/lE,GAEjE,OAAOunE,GADPvnE,EAAMA,EAAIpoD,QACiB2tH,GAAO5vH,KAAKqqD,KAAsC,IAA5B8mE,EAAUzmH,QAAQ2/C,GAAc8/B,EAAWgnC,EAAWJ,EAC3G,KAAM,0BAEL,GAAIlB,GAAQ7vH,KAAKwxH,GAElBA,EAAM,MAAQA,EAAInxH,QAAQ41C,EAAQ,GAAI07E,EAAMtxH,QAAQiwH,IAAQ,SAAUuB,GAClE,OAAOC,GAAwBD,EAAM1nC,EAAWgnC,EAAWJ,EAC/D,KAAM,0BAEL,GAAIf,GAAShwH,KAAKwxH,GAAM,CAEzB,IAAIO,EAAU97E,EAAQ,GAAG72C,MAAM,QAE/BoyH,EAAM,MAAQA,EAAInxH,QAAQ41C,EAAQ,IAAI,SAAU+7E,GAI5C,OAHAb,EAAUlkH,KAAK8kH,EAAQ,IACvBZ,EAAUlkH,KAAK8kH,EAAQ,GAAK,SAErB,SADPb,GAAsB,GACM,QAAUA,EAAW,MAAQU,GAAaG,EAAQ,IAAI,EAAM5nC,EAAWgnC,EAAWJ,GAAgB,aAAeG,EAAW,IAC5J,IAAK,QAAUa,EAAQ,GAAK,KAAOH,GAAaG,EAAQ,IAAI,EAAM5nC,EAAWgnC,EAAWJ,GAClF,KAAOG,EAAW,aAAea,EAAQ,GAAK,UAAYb,EAAW,oBAC/E,KACK,CAED,IAAIe,EAAQT,EAAIpyH,MAAM,KAClB8yH,EAAc9M,GAAUrnH,OAAOC,UAAUC,eAAe8B,KAAKqlH,EAAQ6M,EAAM,IAAM,QAAU,SAC/FC,EAAc,KAAKlyH,KAAKiyH,EAAM,IAAM,GAAKC,EACzC,IAAIC,EAAUl8E,EAAQ,GAAG72C,MAAM,KACL,IAAtB62C,EAAQ,GAAG/4C,QAAkB,OAAQ8C,KAAKmyH,EAAQ,KAAS,UAAWnyH,KAAKmyH,EAAQ,MACnFl8E,EAAQ,GAAqB,WAAfi8E,EAA0B/nC,EAAY,IAAMl0C,EAAQ,GAAKA,EAAQ,IAEnF,IAAIm8E,EAAY,WACZC,EAAS,SACb,GAAIzB,GAAW5wH,KAAKwxH,IAAQa,EAAOryH,KAAKwxH,IAAQY,EAAUpyH,KAAKwxH,GACxC,gBACFxxH,KAAKwxH,KAClBA,EAAM,OAAwB,WAAfU,EAA0B,GAAKA,GAAcV,EAAInxH,QAAQ41C,EAAQ,GAAI07E,EAAMtxH,QAAQswH,IAAU,SAAUkB,GAClH,OAAOC,GAAwBD,EAAM1nC,EAAWgnC,EAAWJ,EAC/D,KAAM,YAIVS,EAAM,QAAyB,WAAfU,EAA0B,GAAKA,GAC3CV,EAAInxH,QAAQsxH,EAAOC,GAAa37E,EAAQ,GAAG51C,QAAQ,iBAAkB,IAAM8pF,EAAY,KAAK9pF,QAAQ,qBAAsB,WAA4B,WAAf6xH,EAAyC/nC,EAAWgnC,EAAWJ,IACtM,IAEZ,CACJ,MACShB,GAAU/vH,KAAKwxH,GAEpBA,EAAM,MAAQA,EAAInxH,QAAQ0vH,GAAW,6BAEhCyB,EAAItvH,MAAM+tH,IAEfuB,EAAMA,EAAInxH,QAAQ4vH,GAAW,4BAExByB,EAAa1xH,KAAKwxH,IAEnBA,EAAItvH,MAAMuuH,MACVe,EAAMc,GAAad,IAEvBA,EAAM,KAAOe,GAAwBf,GAAkC,IAA5BL,EAAUzmH,QAAQ8mH,GAAcrnC,EAAWgnC,GAAa,QAM/FK,EAFAA,EAAItvH,MAAMuuH,IAEJ,KAAO8B,GADbf,EAAMc,GAAad,IACoD,IAA5BL,EAAUzmH,QAAQ8mH,GAAcrnC,EAAWgnC,GAAa,OAIrF,KAARK,EAAa,KAAOI,GAAaJ,EAAInxH,QAAQ,MAAO,IAAM8pF,EAAY,MAAmC,IAA5BgnC,EAAUzmH,QAAQ8mH,GAAcrnC,EAAWgnC,EAAWJ,GAAgB,KAAO,MAGxK,OAAOS,CACX,GACJ,CAnI4BgB,CAAQ1B,EAAUE,EAAS5L,EAAQ2L,GAIvD,OADS,IAAIvnC,SAASwnC,EADT,YAAcC,EAAd,g+CAEHxrG,KAAK2/F,EAEvB,CAuIA,SAASwM,GAAavnE,EAAKooE,EAAOtoC,EAAWg0B,EAAY4S,GACrD,OAAS0B,GAAWtC,GAAWnwH,KAAKqqD,KAAoD,IAA3C8zD,EAAWzzG,QAAQ2/C,EAAIjrD,MAAM,KAAK,KAAe2xH,GAAwB,SAAR1mE,GAA0B,UAARA,EAA2CA,EAAxB8/B,EAAY,IAAM9/B,CACzK,CA0BA,SAASkoE,GAAwBloE,EAAKooE,EAAOtoC,EAAWg0B,GACpD,OAASsU,IAAWtC,GAAWnwH,KAAKqqD,KAAoD,IAA3C8zD,EAAWzzG,QAAQ2/C,EAAIjrD,MAAM,KAAK,IAAc+qF,EAAY,KAAO9/B,EAAMA,CAC1H,CAOA,SAASioE,GAAaI,GAElB,OAAIA,EAAQxwH,MAAMwuH,IACPgC,EAGAA,EAAQryH,QAAQowH,GALd,OAOjB,CASA,SAASqB,GAAwBznE,EAAKsoE,EAAc/nH,EAAMmmH,GACtD1mE,EAAMA,EAAIpoD,OAEV,GADiB,cACDjC,KAAKqqD,GAcjB,OAAOA,EAbP,IAAIuoE,EAAS,QAKb,MAJgB,WACF5yH,KAAKqqD,KACfA,EAAMkoE,GAAwBloE,GAA6B,IAAvBz/C,EAAKF,QAAQ2/C,GAAcsoE,EAAc/nH,GAAQ,MAErF4lH,GAAQxwH,KAAKqqD,GApDzB,SAAyBA,EAAKooE,EAAOtoC,EAAWg0B,GAE5C,OAASsU,GAAWtC,GAAWnwH,KAAKqqD,KACW,IAA3C8zD,EAAWzzG,QAAQ2/C,EAAIjrD,MAAM,KAAK,KAFtB,UAEgDY,KAAKqqD,GAAiCA,EAAxB8/B,EAAY,IAAM9/B,CACpG,CAiDmBwoE,CAAgBxoE,GAAOuoE,EAAO5yH,KAAKqqD,KAAiC,IAAvBz/C,EAAKF,QAAQ2/C,GAAcsoE,EAAc/nH,GAGtFgnH,GAAavnE,GAAOuoE,EAAO5yH,KAAKqqD,KAAiC,IAAvBz/C,EAAKF,QAAQ2/C,GAAcsoE,EAAc/nH,EAAMmmH,EAM5G,CClRA,IAAI+B,GAAU,oBACVC,GAAU,2BACHC,GAAkB,CAAC,EAiBvB,SAASnC,GAAQoC,EAAgB7N,EAAQ2L,GAC5C,IAAImC,EAAWC,GAAUtC,QAAQoC,EAAgB7N,EAAQ2L,GACzD,OAAO,SAAUp3G,EAAM6lC,EAAWwwD,EAAUojB,EAAYlZ,EAAkB5sF,EAAO3K,EAAS0wG,GACtF,IAAI77E,EAAS07E,EAASv5G,EAAM6lC,EAAWwwD,EAAUrtF,EAAS0wG,GACtDC,EAAmB,mBACvB,GAAIloC,OAAe8uB,EAAkB,CACjC,IACIqZ,EAAWH,GAlBhB,IAAMviH,KAAK0U,SAASve,SAAS,IAAIgsC,OAAO,EAAG,IAsB1C,GAHKggF,GAAgB,GAAKI,KACtBJ,GAAgB,GAAKI,GAAc,IAElC9oC,GAAkBh9D,GAanB3T,EAAK,GAAK25G,GAAoBC,EAC9BP,GAAgB,GAAKI,GAAYnmH,KAAK0M,QAZtC,IADA,IACSixE,EAAK,EAAGC,EADN9sF,OAAO6M,KAAKooH,GAAgB,GAAKI,GAAYl3D,SAAS5uC,EAAMtmB,WAAY,MACnD4jF,EAAKC,EAAO3tF,OAAQ0tF,IAAM,CACtD,IAAI3vE,EAAM4vE,EAAOD,GACb3vE,IAAQq4G,GAAoB35G,EAAK,GAAKsB,KACtC+3G,GAAgB,GAAKI,GAAYl3D,SAAS5uC,EAAMtmB,WAAY,KAAK,GAAKiU,GAAOtB,EAAK,GAAKsB,IAEvFA,IAAQq4G,IACRC,EAAWP,GAAgB,GAAKI,GAAYl3D,SAAS5uC,EAAMtmB,WAAY,KAAK,GAAKiU,GAEzF,CAMJ,MAAoB,gBAAb+0F,EAA6B,CAACnyG,GAAc,KAAM,CAAEqX,GAAIq+G,EAAUntD,UAAW,uBAChF,CAACvoE,GAAc,MAAO,CAAEqX,GAAIq+G,EAAUntD,UAAW,sBACzD,CACA,MAAsB,kBAAX5uB,EACHu7E,GAAQ/yH,KAAKw3C,GACH35C,GAAc,MAAO,CAAEiJ,UAAW0wC,IACjCg8E,WAGD31H,GAAei1H,GAAQ9yH,KAAKw3C,GAAU,QAAU,MAAQ,CAAE1wC,UAAW0wC,IACpEg8E,WAIRh8E,CAEf,CACJ,CAUO,SAASi8E,GAAqBL,EAAY3V,EAAciW,EAAMC,EAASC,GAC1E,GAAIxoC,KAAY,CAEZztF,OAAqB,SAAEk2H,eAAepW,EAAcuV,GAAgB,GAAKI,GAAaA,EAAYM,EAAME,IACxF,IAAZD,IACAX,GAAgB,GAAKI,GAAc,GAE3C,CACJ,CAQO,SAASU,GAAoBV,EAAY3V,EAAcnwF,GAC1D,IAAIymG,EAAcn2H,SAASo2H,eAAeZ,GAC1C,GAAIW,EAEA,IADA,IAAIE,EAAiBF,EAAYG,uBAAuB,yBAC/C/jF,EAAI,EAAGA,EAAI8jF,EAAe/2H,OAAQizC,IAAK,CAC5C,IAAIgkF,EAAS,IAKTA,EAJC7pC,GAAkBh9D,GAIV2mG,EAAe/3D,SAAS/rB,EAAEnpC,WAAY,KAAKqpC,aAAa,mBAHxD4jF,EAAe/3D,SAAS5uC,EAAMtmB,WAAY,KAAKqpC,aAAa,mBAKzE,IAAI+jF,EAAcx2H,SAASo2H,eAAeG,GAC1C,GAAIC,EAEA,IADA,IAAIhiC,EAAWgiC,EAAYZ,WAAWt2H,OAC7Bg0C,EAAI,EAAGA,EAAIkhD,EAAUlhD,IACrBo5C,GAAkBh9D,GAKnB2mG,EAAe/3D,SAAS/rB,EAAEnpC,WAAY,KAAKG,YAAYitH,EAAYZ,WAAW,KAJ9ES,EAAe/3D,SAAS5uC,EAAMtmB,WAAY,KAAKG,YAAYitH,EAAYZ,WAAW,IAClFrjF,EAAI8jF,EAAe/2H,OAOnC,CAER,CAyCA,IASIi2H,GAAY,CAAEtC,SAAS,IATC,WACxB,SAASwD,IACT,CAKA,OAJAA,EAAOr2H,UAAU6yH,QAAU,SAAUoC,EAAgB7N,EAAQ2L,GAEzD,YADe,IAAX3L,IAAqBA,EAAS,CAAC,GAC5BliH,GAAO+vH,EAAgB7N,EAClC,EACOiP,CACX,CAR4B,KASYxD,SCxKpCyD,GAAa,CACb,SACA,QACA,cACA,4BACA,kCACA,wCACA,oCACA,uBACA,0BACA,0BACA,2CAEAC,GAAc,CACd,CAAEC,UAAW,OAAQ1oB,SAAU,yBAC/B,CAAE0oB,UAAW,OAAQ1oB,SAAU,WAC/B,CAAE0oB,UAAW,aAAc1oB,SAAU,+BACrC,CAAE0oB,UAAW,QAAS1oB,SAAU,0BAChC,CAAE0oB,UAAW,QAAS1oB,SAAU,0BAChC,CAAE0oB,UAAW,OAAQ1oB,SAAU,qCAE/B2oB,GAAW,CAAC,WACZ,UACA,cACA,aACA,YACA,SACA,UACA,SACA,UACA,eACA,iBACA,UACA,WACA,eACA,iBACA,gBACA,YACA,mBACA,gBACA,aACA,SACA,YACA,cACA,cACA,aACA,cACA,SACA,mBACA,YACA,UACA,eACA,cACA,cACA,UACA,YACA,aACA,eACA,mBACA,cACA,YACA,cACA,cACA,YACA,eACA,YACA,SACA,WACA,aACA,aACA,UACA,SACA,YACA,aACA,aACA,eACA,qBACA,SACA,WACA,WACA,WACA,YACA,WACA,YACA,YACA,YACA,eACA,SACA,WACA,iBACA,YACA,eACA,eACA,UACA,mBACA,SACA,WACA,eACA,gBACA,iBACA,iBACA,qBACA,gBACA,eACA,cACA,iBC9GA7iB,IDgHoC,WACpC,SAAS8iB,IACT,CACAA,EAAmBC,eAAiB,WAChC,MAAO,CACHC,UAAW,CACPC,KAAMP,GACNzpB,WAAY0pB,IAGxB,EACAG,EAAmBI,SAAW,SAAUrwH,GACpC,GAAI6lF,GAAkB7l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V,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,OAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,SAC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O,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,M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AAkBh9D,GAKnB2mG,EAAe/3D,SAAS/rB,EAAEnpC,WAAY,KAAKG,YAAYitH,EAAYZ,WAAW,KAJ9ES,EAAe/3D,SAAS5uC,EAAMtmB,WAAY,KAAKG,YAAYitH,EAAYZ,WAAW,IAClFrjF,EAAI8jF,EAAe/2H,OAOnC,CAER,CAyCA,IAAIm3H,GAAwB,WACxB,SAASA,IACT,CAKA,OAJAA,EAAOr2H,UAAU6yH,QAAU,SAAUoC,EAAgB7N,EAAQ2L,GAEzD,YADe,IAAX3L,IAAqBA,EAAS,CAAC,GAC5BliH,GAAO+vH,EAAgB7N,EAClC,EACOiP,CACX,CAR4B,GASxBlB,GAAY,CAAEtC,SAAS,IAAIwD,IAASxD,SCxKpCyD,GAAa,CACb,SACA,QACA,cACA,4BACA,kCACA,wCACA,oCACA,uBACA,0BACA,0BACA,2CAEAC,GAAc,CACd,CAAEC,UAAW,OAAQ1oB,SAAU,yBAC/B,CAAE0oB,UAAW,OAAQ1oB,SAAU,WAC/B,CAAE0oB,UAAW,aAAc1oB,SAAU,+BACrC,CAAE0oB,UAAW,QAAS1oB,SAAU,0BAChC,CAAE0oB,UAAW,QAAS1oB,SAAU,0BAChC,CAAE0oB,UAAW,OAAQ1oB,SAAU,qCAE/B2oB,GAAW,CAAC,WACZ,UACA,cACA,aACA,YACA,SACA,UACA,SACA,UACA,eACA,iBACA,UACA,WACA,eACA,iBACA,gBACA,YACA,mBACA,gBACA,aACA,SACA,YACA,cACA,cACA,aACA,cACA,SACA,mBACA,YACA,UACA,eACA,cACA,cACA,UACA,YACA,aACA,eACA,mBACA,cACA,YACA,cACA,cACA,YACA,eACA,YACA,SACA,WACA,aACA,aACA,UACA,SACA,YACA,aACA,aACA,eACA,qBACA,SACA,WACA,WACA,WACA,YACA,WACA,YACA,YACA,YACA,eACA,SACA,WACA,iBACA,YACA,eACA,eACA,UACA,mBACA,SACA,WACA,eACA,gBACA,iBACA,iBACA,qBACA,gBACA,eACA,cACA,iBCvGAwe,IDyGoC,WACpC,SAASve,IACT,CACAA,EAAmBC,eAAiB,WAChC,MAAO,CACHC,UAAW,CACPC,K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,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,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O,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAmEpHvC,EAAYwC,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,KAAKG,YAAYitH,EAAYZ,WAAW,IAClFrjF,EAAI8jF,EAAe/2H,OAOnC,CAER,CA4BO,SAAS+8N,GAAsBnpG,EAAU1L,GAC5C,IAAI80G,EASJ,OARAppG,EAAS9yH,UAAUk2L,aAAc,EAC5B5pG,GAAkB86B,GAKnB80G,EAAYppG,GAJZopG,EAAYppG,EAASrrG,KAAK2/F,IAChBpnH,UAAYD,OAAOk3B,OAAO67F,EAAS9yH,WAK1Ck8N,CACX,CAEA,IAAI7lG,GAAwB,WACxB,SAASA,IACT,CAKA,OAJAA,EAAOr2H,UAAU6yH,QAAU,SAAUoC,EAAgB7N,EAAQ2L,GAEzD,YADe,IAAX3L,IAAqBA,EAAS,CAAC,GAC5BliH,GAAO+vH,EAAgB7N,EAClC,EACOiP,CACX,CAR4B,GASxBlB,GAAY,CAAEtC,SAAS,IAAIwD,IAASxD,SCxKpCyD,GAAa,CACb,SACA,QACA,cACA,4BACA,kCACA,wCACA,oCACA,uBACA,0BACA,0BACA,2CAEAC,GAAc,CACd,CAAEC,UAAW,OAAQ1oB,SAAU,yBAC/B,CAAE0oB,UAAW,aAAc1oB,SAAU,+BACrC,CAAE0oB,UAAW,QAAS1oB,SAAU,0BAChC,CAAE0oB,UAAW,QAAS1oB,SAAU,0BAChC,CAAE0oB,UAAW,OAAQ1oB,SAAU,qCAE/B2oB,GAAW,CAAC,WACZ,UACA,cACA,aACA,YACA,SACA,UACA,SACA,UACA,eACA,iBACA,UACA,WACA,eACA,iBACA,gBACA,YACA,mBACA,gBACA,aACA,SACA,YACA,cACA,cACA,aACA,cACA,SACA,mBACA,YACA,UACA,eACA,cACA,cACA,UACA,YACA,aACA,eACA,mBACA,cACA,YACA,cACA,cACA,YACA,eACA,YACA,SACA,WACA,aACA,aACA,UACA,SACA,YACA,aACA,aACA,eACA,qBACA,SACA,WACA,WACA,WACA,YACA,WACA,YACA,YACA,YACA,eACA,SACA,WACA,iBACA,YACA,eACA,eACA,UACA,mBACA,SACA,WACA,eACA,gBACA,iBACA,iBACA,qBACA,gBACA,eACA,cACA,iBAEAC,GAAoC,WACpC,SAAS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,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,WAEzB7rR,KAAK8rR,KAAO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AAM,OAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,OAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,OAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,OAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,OAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,OAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAE7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAM,MAC7C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,MAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,MAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,MAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,MAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,MAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,MAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,MAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,KAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAAyBhpR,SAAS,MAAO,OAC9C1F,KAAK0uR,yBAA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AAK,EACzE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC5E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,KAMTf,EAA8B6B,WAAa,CACvC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,I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U,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,OAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,OAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,UAEd5G,EAASsB,YAAc,CAWnBgI,MAAO,SAAUv+B,EAAQw+B,EAAUzI,EAAYC,GAK3C,OAJIA,IACAh2B,EAASi1B,EAAS2G,iBAAiB57B,GACnCw+B,EAAWvJ,EAAS2G,iBAAiB4C,IAErCzI,EACOd,EAAS54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ssd,KAClBG,EAASt/jB,UAAW,aAAS,GAChCi0G,GAAW,CACPxB,IAAS,IACV6sd,EAASt/jB,UAAW,oBAAgB,GACvCi0G,GAAW,CACPxB,IAAS,IACV6sd,EAASt/jB,UAAW,uBAAmB,GAC1Ci0G,GAAW,CACPxB,GAAS,YACV6sd,EAASt/jB,UAAW,kBAAc,GACrCi0G,GAAW,CACP5mB,MACDiye,EAASt/jB,UAAW,eAAW,GAClCi0G,GAAW,CACP5mB,MACDiye,EAASt/jB,UAAW,sBAAkB,GACzCi0G,GAAW,CACP5mB,MACDiye,EAASt/jB,UAAW,iBAAa,GACpCi0G,GAAW,CACP5mB,MACDiye,EAASt/jB,UAAW,oBAAgB,GACvCi0G,GAAW,CACP5mB,MACDiye,EAASt/jB,UAAW,yBAAqB,GAC5Ci0G,GAAW,CACP5mB,MACDiye,EAASt/jB,UAAW,gBAAY,GACnCi0G,GAAW,CACP5mB,MACDiye,EAASt/jB,UAAW,iBAAa,GACpCi0G,GAAW,CACP5mB,MACDiye,EAASt/jB,UAAW,eAAW,GAClCi0G,GAAW,CACP5mB,MACDiye,EAASt/jB,UAAW,eAAW,GAClCi0G,GAAW,CACP5mB,MACDiye,EAASt/jB,UAAW,gBAAY,GACnCi0G,GAAW,CACP5mB,MACDiye,EAASt/jB,UAAW,oBAAgB,GACvCi0G,GAAW,CACP5mB,MACDiye,EAASt/jB,UAAW,gBAAY,GACnCi0G,GAAW,CACP5mB,MACDiye,EAASt/jB,UAAW,gBAAY,GACnCi0G,GAAW,CACP5mB,MACDiye,EAASt/jB,UAAW,cAAU,GACjCi0G,GAAW,CACP5mB,MACDiye,EAASt/jB,UAAW,oBAAgB,GACvCi0G,GAAW,CACP5mB,MACDiye,EAASt/jB,UAAW,oBAAgB,GACvCi0G,GAAW,CACP5mB,MACDiye,EAASt/jB,UAAW,sBAAkB,GACzCi0G,GAAW,CACP5mB,MACDiye,EAASt/jB,UAAW,iBAAa,GACpCi0G,GAAW,CACP5mB,MACDiye,EAASt/jB,UAAW,eAAW,GAClCi0G,GAAW,CACP5mB,MACDiye,EAASt/jB,UAAW,gBAAY,GACn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","sources":["../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/void-elements/index.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../node_modules/@remix-run/router/history.ts","../node_modules/@remix-run/router/utils.ts","../node_modules/@remix-run/router/router.ts","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/components.tsx","Layout/LoginLayout.js","../node_modules/html-parse-stringify/src/parse.js","../node_modules/html-parse-stringify/src/stringify.js","../node_modules/react-i18next/dist/es/utils.js","../node_modules/react-i18next/dist/es/unescape.js","../node_modules/react-i18next/dist/es/defaults.js","../node_modules/react-i18next/dist/es/i18nInstance.js","../node_modules/react-i18next/dist/es/initReactI18next.js","../node_modules/react-i18next/dist/es/context.js","../node_modules/react-i18next/dist/es/useTranslation.js","../node_modules/react-i18next/dist/es/useSSR.js","../node_modules/i18next/dist/esm/i18next.js","../node_modules/i18next-browser-languagedetector/dist/esm/i18nextBrowserLanguageDetector.js","Assets/Localization/i18n.js","Layout/MainLayout.js","Hooks/useTitle.js","Context/toastContext.js","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/platform/browser/index.js","../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../node_modules/axios/lib/platform/browser/classes/FormData.js","../node_modules/axios/lib/platform/browser/classes/Blob.js","../node_modules/axios/lib/platform/common/utils.js","../node_modules/axios/lib/platform/index.js","../node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/helpers/toURLEncodedForm.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/core/AxiosHeaders.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/helpers/throttle.js","../node_modules/axios/lib/helpers/progressEventReducer.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/helpers/resolveConfig.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/helpers/composeSignals.js","../node_modules/axios/lib/helpers/trackStream.js","../node_modules/axios/lib/adapters/fetch.js","../node_modules/axios/lib/adapters/adapters.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/HttpStatusCode.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","Utils/axiosClient.js","../node_modules/@syncfusion/ej2-charts/node_modules/@syncfusion/ej2-base/src/util.js","../node_modules/@syncfusion/ej2-charts/node_modules/@syncfusion/ej2-base/src/intl/parser-base.js","../node_modules/@syncfusion/ej2-charts/node_modules/@syncfusion/ej2-base/src/hijri-parser.js","../node_modules/@syncfusion/ej2-charts/node_modules/@syncfusion/ej2-base/src/intl/date-formatter.js","../node_modules/@syncfusion/ej2-charts/node_modules/@syncfusion/ej2-base/src/intl/number-formatter.js","../node_modules/@syncfusion/ej2-charts/node_modules/@syncfusion/ej2-base/src/intl/date-parser.js","../node_modules/@syncfusion/ej2-charts/node_modules/@syncfusion/ej2-base/src/intl/number-parser.js","../node_modules/@syncfusion/ej2-charts/node_modules/@syncfusion/ej2-base/src/observer.js","../node_modules/@syncfusion/ej2-charts/node_modules/@syncfusion/ej2-base/src/internationalization.js","../node_modules/@syncfusion/ej2-charts/node_modules/@syncfusion/ej2-base/src/intl/intl-base.js","../node_modules/@syncfusion/ej2-charts/node_modules/@syncfusion/ej2-base/src/ajax.js","../node_modules/@syncfusion/ej2-charts/node_modules/@syncfusion/ej2-base/src/fetch.js","../node_modules/@syncfusion/ej2-charts/node_modules/@syncfusion/ej2-base/src/browser.js","../node_modules/@syncfusion/ej2-charts/node_modules/@syncfusion/ej2-base/src/event-handler.js","../node_modules/@syncfusion/ej2-charts/node_modules/@syncfusion/ej2-base/src/dom.js","../node_modules/@syncfusion/ej2-charts/node_modules/@syncfusion/ej2-base/src/base.js","../node_modules/@syncfusion/ej2-charts/node_modules/@syncfusion/ej2-base/src/notify-property-change.js","../node_modules/@syncfusion/ej2-charts/node_modules/@syncfusion/ej2-base/src/animation.js","../node_modules/@syncfusion/ej2-charts/node_modules/@syncfusion/ej2-base/src/module-loader.js","../node_modules/@syncfusion/ej2-charts/node_modules/@syncfusion/ej2-base/src/validate-lic.js","../node_modules/@syncfusion/ej2-charts/node_modules/@syncfusion/ej2-base/src/child-property.js","../node_modules/@syncfusion/ej2-charts/node_modules/@syncfusion/ej2-base/src/component.js","../node_modules/@syncfusion/ej2-charts/node_modules/@syncfusion/ej2-base/src/draggable.js","../node_modules/@syncfusion/ej2-charts/node_modules/@syncfusion/ej2-base/src/droppable.js","../node_modules/@syncfusion/ej2-charts/node_modules/@syncfusion/ej2-base/src/keyboard.js","../node_modules/@syncfusion/ej2-charts/node_modules/@syncfusion/ej2-base/src/l10n.js","../node_modules/@syncfusion/ej2-charts/node_modules/@syncfusion/ej2-base/src/touch.js","../node_modules/@syncfusion/ej2-charts/node_modules/@syncfusion/ej2-base/src/template.js","../node_modules/@syncfusion/ej2-charts/node_modules/@syncfusion/ej2-base/src/template-engine.js","../node_modules/@syncfusion/ej2-charts/node_modules/@syncfusion/ej2-base/src/sanitize-helper.js","../node_modules/@syncfusion/ej2-charts/src/common/model/base.js","../node_modules/@syncfusion/ej2-charts/node_modules/@syncfusion/ej2-data/src/query.js","../node_modules/@syncfusion/ej2-charts/node_modules/@syncfusion/ej2-data/src/util.js","../node_modules/@syncfusion/ej2-charts/node_modules/@syncfusion/ej2-data/src/adaptors.js","../node_modules/@syncfusion/ej2-charts/node_modules/@syncfusion/ej2-data/src/manager.js","../node_modules/@syncfusion/ej2-svg-base/node_modules/@syncfusion/ej2-base/src/util.js","../node_modules/@syncfusion/ej2-svg-base/node_modules/@syncfusion/ej2-base/src/intl/parser-base.js","../node_modules/@syncfusion/ej2-svg-base/node_modules/@syncfusion/ej2-base/src/hijri-parser.js","../node_modules/@syncfusion/ej2-svg-base/node_modules/@syncfusion/ej2-base/src/intl/date-formatter.js","../node_modules/@syncfusion/ej2-svg-base/node_modules/@syncfusion/ej2-base/src/intl/number-formatter.js","../node_modules/@syncfusion/ej2-svg-base/node_modules/@syncfusion/ej2-base/src/intl/date-parser.js","../node_modules/@syncfusion/ej2-svg-base/node_modules/@syncfusion/ej2-base/src/intl/number-parser.js","../node_modules/@syncfusion/ej2-svg-base/node_modules/@syncfusion/ej2-base/src/observer.js","../node_modules/@syncfusion/ej2-svg-base/node_modules/@syncfusion/ej2-base/src/internationalization.js","../node_modules/@syncfusion/ej2-svg-base/node_modules/@syncfusion/ej2-base/src/intl/intl-base.js","../node_modules/@syncfusion/ej2-svg-base/node_modules/@syncfusion/ej2-base/src/ajax.js","../node_modules/@syncfusion/ej2-svg-base/node_modules/@syncfusion/ej2-base/src/browser.js","../node_modules/@syncfusion/ej2-svg-base/node_modules/@syncfusion/ej2-base/src/fetch.js","../node_modules/@syncfusion/ej2-svg-base/node_modules/@syncfusion/ej2-base/src/event-handler.js","../node_modules/@syncfusion/ej2-svg-base/node_modules/@syncfusion/ej2-base/src/dom.js","../node_modules/@syncfusion/ej2-svg-base/node_modules/@syncfusion/ej2-base/src/base.js","../node_modules/@syncfusion/ej2-svg-base/node_modules/@syncfusion/ej2-base/src/notify-property-change.js","../node_modules/@syncfusion/ej2-svg-base/node_modules/@syncfusion/ej2-base/src/animation.js","../node_modules/@syncfusion/ej2-svg-base/node_modules/@syncfusion/ej2-base/src/module-loader.js","../node_modules/@syncfusion/ej2-svg-base/node_modules/@syncfusion/ej2-base/src/validate-lic.js","../node_modules/@syncfusion/ej2-svg-base/node_modules/@syncfusion/ej2-base/src/child-property.js","../node_modules/@syncfusion/ej2-svg-base/node_modules/@syncfusion/ej2-base/src/component.js","../node_modules/@syncfusion/ej2-svg-base/node_modules/@syncfusion/ej2-base/src/draggable.js","../node_modules/@syncfusion/ej2-svg-base/node_modules/@syncfusion/ej2-base/src/droppable.js","../node_modules/@syncfusion/ej2-svg-base/node_modules/@syncfusion/ej2-base/src/keyboard.js","../node_modules/@syncfusion/ej2-svg-base/node_modules/@syncfusion/ej2-base/src/touch.js","../node_modules/@syncfusion/ej2-svg-base/node_modules/@syncfusion/ej2-base/src/l10n.js","../node_modules/@syncfusion/ej2-svg-base/node_modules/@syncfusion/ej2-base/src/template.js","../node_modules/@syncfusion/ej2-svg-base/node_modules/@syncfusion/ej2-base/src/template-engine.js","../node_modules/@syncfusion/ej2-svg-base/node_modules/@syncfusion/ej2-base/src/sanitize-helper.js","../node_modules/@syncfusion/ej2-svg-base/src/svg-render/svg-renderer.js","../node_modules/@syncfusion/ej2-svg-base/src/svg-render/canvas-renderer.js","../node_modules/@syncfusion/ej2-svg-base/src/tooltip/helper.js","../node_modules/@syncfusion/ej2-svg-base/src/tooltip/tooltip.js","../node_modules/@syncfusion/ej2-svg-base/src/tooltip/interface.js","../node_modules/@syncfusion/ej2-charts/src/chart/utils/double-range.js","../node_modules/@syncfusion/ej2-charts/src/chart/axis/double-axis.js","../node_modules/@syncfusion/ej2-charts/src/common/model/constants.js","../node_modules/@syncfusion/ej2-charts/src/chart/model/chart-base.js","../node_modules/@syncfusion/ej2-charts/src/chart/axis/axis.js","../node_modules/@syncfusion/ej2-charts/src/common/utils/helper.js","../node_modules/@syncfusion/ej2-charts/src/common/model/theme.js","../node_modules/@syncfusion/ej2-charts/src/common/user-interaction/selection.js","../node_modules/@syncfusion/ej2-charts/src/common/legend/legend.js","../node_modules/@syncfusion/ej2-charts/src/accumulation-chart/model/acc-base.js","../node_modules/@syncfusion/ej2-charts/src/common/model/data.js","../node_modules/@syncfusion/ej2-charts/src/accumulation-chart/renderer/accumulation-base.js","../node_modules/@syncfusion/ej2-charts/src/accumulation-chart/renderer/pie-base.js","../node_modules/@syncfusion/ej2-charts/src/accumulation-chart/renderer/pie-series.js","../node_modules/@syncfusion/ej2-charts/src/common/utils/print.js","../node_modules/@syncfusion/ej2-charts/src/accumulation-chart/accumulation.js","../node_modules/@syncfusion/ej2-react-charts/node_modules/@syncfusion/ej2-base/src/util.js","../node_modules/@syncfusion/ej2-react-charts/node_modules/@syncfusion/ej2-base/src/intl/parser-base.js","../node_modules/@syncfusion/ej2-react-charts/node_modules/@syncfusion/ej2-base/src/hijri-parser.js","../node_modules/@syncfusion/ej2-react-charts/node_modules/@syncfusion/ej2-base/src/intl/date-formatter.js","../node_modules/@syncfusion/ej2-react-charts/node_modules/@syncfusion/ej2-base/src/intl/number-formatter.js","../node_modules/@syncfusion/ej2-react-charts/node_modules/@syncfusion/ej2-base/src/intl/date-parser.js","../node_modules/@syncfusion/ej2-react-charts/node_modules/@syncfusion/ej2-base/src/intl/number-parser.js","../node_modules/@syncfusion/ej2-react-charts/node_modules/@syncfusion/ej2-base/src/observer.js","../node_modules/@syncfusion/ej2-react-charts/node_modules/@syncfusion/ej2-base/src/internationalization.js","../node_modules/@syncfusion/ej2-react-charts/node_modules/@syncfusion/ej2-base/src/intl/intl-base.js","../node_modules/@syncfusion/ej2-react-charts/node_modules/@syncfusion/ej2-base/src/ajax.js","../node_modules/@syncfusion/ej2-react-charts/node_modules/@syncfusion/ej2-base/src/browser.js","../node_modules/@syncfusion/ej2-react-charts/node_modules/@syncfusion/ej2-base/src/fetch.js","../node_modules/@syncfusion/ej2-react-charts/node_modules/@syncfusion/ej2-base/src/event-handler.js","../node_modules/@syncfusion/ej2-react-charts/node_modules/@syncfusion/ej2-base/src/dom.js","../node_modules/@syncfusion/ej2-react-charts/node_modules/@syncfusion/ej2-base/src/base.js","../node_modules/@syncfusion/ej2-react-charts/node_modules/@syncfusion/ej2-base/src/notify-property-change.js","../node_modules/@syncfusion/ej2-react-charts/node_modules/@syncfusion/ej2-base/src/animation.js","../node_modules/@syncfusion/ej2-react-charts/node_modules/@syncfusion/ej2-base/src/module-loader.js","../node_modules/@syncfusion/ej2-react-charts/node_modules/@syncfusion/ej2-base/src/validate-lic.js","../node_modules/@syncfusion/ej2-react-charts/node_modules/@syncfusion/ej2-base/src/child-property.js","../node_modules/@syncfusion/ej2-react-charts/node_modules/@syncfusion/ej2-base/src/component.js","../node_modules/@syncfusion/ej2-react-charts/node_modules/@syncfusion/ej2-base/src/draggable.js","../node_modules/@syncfusion/ej2-react-charts/node_modules/@syncfusion/ej2-base/src/droppable.js","../node_modules/@syncfusion/ej2-react-charts/node_modules/@syncfusion/ej2-base/src/keyboard.js","../node_modules/@syncfusion/ej2-react-charts/node_modules/@syncfusion/ej2-base/src/touch.js","../node_modules/@syncfusion/ej2-react-charts/node_modules/@syncfusion/ej2-base/src/l10n.js","../node_modules/@syncfusion/ej2-react-charts/node_modules/@syncfusion/ej2-base/src/template.js","../node_modules/@syncfusion/ej2-react-charts/node_modules/@syncfusion/ej2-base/src/template-engine.js","../node_modules/@syncfusion/ej2-react-charts/node_modules/@syncfusion/ej2-base/src/sanitize-helper.js","../node_modules/@syncfusion/ej2-react-charts/node_modules/@syncfusion/ej2-react-base/src/component-base.js","../node_modules/@syncfusion/ej2-react-charts/node_modules/@syncfusion/ej2-react-base/src/util.js","../node_modules/@syncfusion/ej2-react-charts/node_modules/@syncfusion/ej2-react-base/src/complex-base.js","../node_modules/@syncfusion/ej2-react-charts/node_modules/@syncfusion/ej2-react-base/src/services.js","../node_modules/@syncfusion/ej2-react-charts/node_modules/@syncfusion/ej2-react-base/src/template.js","../node_modules/@syncfusion/ej2-react-charts/src/accumulation-chart/accumulationchart.component.js","../node_modules/@syncfusion/ej2-charts/src/accumulation-chart/renderer/legend.js","../node_modules/@syncfusion/ej2-charts/src/chart/utils/get-data.js","../node_modules/@syncfusion/ej2-charts/src/common/user-interaction/tooltip.js","../node_modules/@syncfusion/ej2-charts/src/accumulation-chart/user-interaction/tooltip.js","../node_modules/@syncfusion/ej2-charts/src/accumulation-chart/renderer/dataLabel.js","../node_modules/@syncfusion/ej2-react-charts/src/accumulation-chart/series-directive.js","Components/PieChart.js","../node_modules/@syncfusion/ej2-charts/src/chart/axis/cartesian-panel.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/chart-series.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/marker-explode.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/marker.js","../node_modules/@syncfusion/ej2-charts/src/chart/technical-indicators/technical-indicator.js","../node_modules/@syncfusion/ej2-charts/src/chart/chart.js","../node_modules/@syncfusion/ej2-react-charts/src/chart/chart.component.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/line-base.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/line-series.js","../node_modules/@syncfusion/ej2-charts/src/chart/legend/legend.js","../node_modules/@syncfusion/ej2-charts/src/chart/user-interaction/tooltip.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/data-label.js","../node_modules/@syncfusion/ej2-charts/src/chart/axis/axis-helper.js","../node_modules/@syncfusion/ej2-charts/src/chart/axis/category-axis.js","../node_modules/@syncfusion/ej2-react-charts/src/chart/series-directive.js","Utils/colorUtil.js","Components/LineChart.js","../node_modules/@syncfusion/ej2-base/src/util.js","../node_modules/@syncfusion/ej2-base/src/intl/parser-base.js","../node_modules/@syncfusion/ej2-base/src/hijri-parser.js","../node_modules/@syncfusion/ej2-base/src/intl/date-formatter.js","../node_modules/@syncfusion/ej2-base/src/intl/number-formatter.js","../node_modules/@syncfusion/ej2-base/src/intl/date-parser.js","../node_modules/@syncfusion/ej2-base/src/intl/number-parser.js","../node_modules/@syncfusion/ej2-base/src/observer.js","../node_modules/@syncfusion/ej2-base/src/internationalization.js","../node_modules/@syncfusion/ej2-base/src/intl/intl-base.js","../node_modules/@syncfusion/ej2-base/src/ajax.js","../node_modules/@syncfusion/ej2-base/src/fetch.js","../node_modules/@syncfusion/ej2-base/src/browser.js","../node_modules/@syncfusion/ej2-base/src/event-handler.js","../node_modules/@syncfusion/ej2-base/src/dom.js","../node_modules/@syncfusion/ej2-base/src/base.js","../node_modules/@syncfusion/ej2-base/src/notify-property-change.js","../node_modules/@syncfusion/ej2-base/src/animation.js","../node_modules/@syncfusion/ej2-base/src/module-loader.js","../node_modules/@syncfusion/ej2-base/src/validate-lic.js","../node_modules/@syncfusion/ej2-base/src/child-property.js","../node_modules/@syncfusion/ej2-base/src/component.js","../node_modules/@syncfusion/ej2-base/src/draggable.js","../node_modules/@syncfusion/ej2-base/src/droppable.js","../node_modules/@syncfusion/ej2-base/src/keyboard.js","../node_modules/@syncfusion/ej2-base/src/l10n.js","../node_modules/@syncfusion/ej2-base/src/touch.js","../node_modules/@syncfusion/ej2-base/src/template.js","../node_modules/@syncfusion/ej2-base/src/template-engine.js","../node_modules/@syncfusion/ej2-base/src/sanitize-helper.js","../node_modules/@syncfusion/ej2-circulargauge/node_modules/@syncfusion/ej2-svg-base/src/svg-render/svg-renderer.js","../node_modules/@syncfusion/ej2-circulargauge/node_modules/@syncfusion/ej2-svg-base/src/svg-render/canvas-renderer.js","../node_modules/@syncfusion/ej2-circulargauge/node_modules/@syncfusion/ej2-svg-base/src/tooltip/helper.js","../node_modules/@syncfusion/ej2-circulargauge/node_modules/@syncfusion/ej2-svg-base/src/tooltip/tooltip.js","../node_modules/@syncfusion/ej2-circulargauge/node_modules/@syncfusion/ej2-svg-base/src/tooltip/interface.js","../node_modules/@syncfusion/ej2-circulargauge/src/circular-gauge/utils/helper-common.js","../node_modules/@syncfusion/ej2-circulargauge/src/circular-gauge/model/theme.js","../node_modules/@syncfusion/ej2-circulargauge/src/circular-gauge/utils/helper-circular-gauge.js","../node_modules/@syncfusion/ej2-circulargauge/src/circular-gauge/model/base.js","../node_modules/@syncfusion/ej2-circulargauge/src/circular-gauge/axes/axis.js","../node_modules/@syncfusion/ej2-circulargauge/src/circular-gauge/model/constants.js","../node_modules/@syncfusion/ej2-circulargauge/src/circular-gauge/annotations/annotations.js","../node_modules/@syncfusion/ej2-circulargauge/src/circular-gauge/utils/helper-tooltip.js","../node_modules/@syncfusion/ej2-circulargauge/src/circular-gauge/utils/helper-legend.js","../node_modules/@syncfusion/ej2-circulargauge/src/circular-gauge/user-interaction/tooltip.js","../node_modules/@syncfusion/ej2-circulargauge/src/circular-gauge/utils/helper-axis-renderer.js","../node_modules/@syncfusion/ej2-circulargauge/src/circular-gauge/axes/axis-renderer.js","../node_modules/@syncfusion/ej2-circulargauge/src/circular-gauge/utils/helper-pointer-renderer.js","../node_modules/@syncfusion/ej2-circulargauge/src/circular-gauge/axes/pointer-renderer.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/enum.js","../node_modules/@syncfusion/ej2-circulargauge/src/circular-gauge/axes/axis-panel.js","../node_modules/@syncfusion/ej2-circulargauge/src/circular-gauge/utils/helper-axis-panel.js","../node_modules/@syncfusion/ej2-circulargauge/src/circular-gauge/legend/legend.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-writer.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/collections/utils.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/collections/dictionary.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/enum.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-main-object-collection.js","../node_modules/@syncfusion/ej2-file-utils/src/encoding.js","../node_modules/@syncfusion/ej2-file-utils/src/save.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-string.js","../node_modules/@syncfusion/ej2-file-utils/src/stream-writer.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/pdf-document-base.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-name.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-operators.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-dictionary-properties.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-dictionary.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-number.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-array.js","../node_modules/@syncfusion/ej2-compression/src/compression-writer.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-stream.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/cross-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-reference.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-boolean.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/pdf-viewer-preferences.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/pdf-catalog.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/enum.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/enum.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-cross-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/drawing/pdf-drawing.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-size.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-margins.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-settings.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-stream-writer.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/string-layouter.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-color.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/brushes/pdf-brush.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/brushes/pdf-solid-brush.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-pen.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-string-format.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/string-tokenizer.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-font.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/enum.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-transformation-matrix.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/constants.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/collections/object-object-pair/dictionary.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-transparency.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/automatic-field-info-collection.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/base/graphics-element.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/automatic-field.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/automatic-field-info.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/images/byte-array.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-table-info.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-name-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-name-record.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-head-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-metrics.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-horizontal-header-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-OS2-Table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-post-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-long-hor-metric.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-cmap-sub-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-cmap-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-glyph-info.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-loca-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-apple-cmap-sub-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-microsoft-cmap-sub-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-trimmed-cmap-sub-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-glyph-header.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/big-endian-writer.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-reader.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-font-metrics.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/unicode-true-type-font.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/rtl/rtl-text-shape.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/rtl/rtl-bidirectional.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/rtl-renderer.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/brushes/pdf-gradient-brush.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/images/image-decoder.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/pdf-template.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/unit-convertor.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/images/pdf-image.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/images/pdf-bitmap.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-resources.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/brushes/pdf-tiling-brush.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-graphics.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-layer.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/general/pdf-collection.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-layer-collection.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-base.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/annotation-collection.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/page-added-event-arguments.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-section-page-collection.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/pdf-document-template.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-section-templates.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-section.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-section-collection.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-document-page-collection.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/general/pdf-cache-collection.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-standard-font-metrics-factory.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-standard-font.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/pdf-document.js","../node_modules/@syncfusion/ej2-circulargauge/src/circular-gauge/model/pdf-export.js","../node_modules/@syncfusion/ej2-circulargauge/src/circular-gauge/model/image-export.js","../node_modules/@syncfusion/ej2-circulargauge/src/circular-gauge/model/print.js","../node_modules/@syncfusion/ej2-circulargauge/src/circular-gauge/axes/gradient.js","../node_modules/@syncfusion/ej2-circulargauge/src/circular-gauge/circular-gauge.js","../node_modules/@syncfusion/ej2-react-base/src/component-base.js","../node_modules/@syncfusion/ej2-react-base/src/util.js","../node_modules/@syncfusion/ej2-react-base/src/complex-base.js","../node_modules/@syncfusion/ej2-react-base/src/services.js","../node_modules/@syncfusion/ej2-react-base/src/template.js","../node_modules/@syncfusion/ej2-react-circulargauge/src/circular-gauge/circulargauge.component.js","../node_modules/@syncfusion/ej2-react-circulargauge/src/circular-gauge/axes-directive.js","../node_modules/@syncfusion/ej2-react-circulargauge/src/circular-gauge/pointers-directive.js","../node_modules/@syncfusion/ej2-react-circulargauge/src/circular-gauge/ranges-directive.js","Components/GaugeChart.js","../node_modules/@syncfusion/ej2-data/src/query.js","../node_modules/@syncfusion/ej2-popups/src/common/position.js","../node_modules/@syncfusion/ej2-data/src/adaptors.js","../node_modules/@syncfusion/ej2-data/src/manager.js","../node_modules/@syncfusion/ej2-data/src/util.js","../node_modules/@syncfusion/ej2-popups/src/spinner/spinner.js","../node_modules/@syncfusion/ej2-popups/src/common/collision.js","../node_modules/@syncfusion/ej2-popups/src/popup/popup.js","../node_modules/@syncfusion/ej2-popups/src/tooltip/tooltip.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/value-formatter.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/column.js","../node_modules/@syncfusion/ej2-grids/src/grid/base/constant.js","../node_modules/@syncfusion/ej2-grids/src/grid/base/string-literals.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/print.js","../node_modules/@syncfusion/ej2-buttons/src/common/common.js","../node_modules/@syncfusion/ej2-buttons/src/button/button.js","../node_modules/@syncfusion/ej2-popups/src/common/resize.js","../node_modules/@syncfusion/ej2-popups/src/dialog/dialog.js","../node_modules/@syncfusion/ej2-inputs/src/input/input.js","../node_modules/@syncfusion/ej2-grids/src/grid/common/checkbox-filter-base.js","../node_modules/@syncfusion/ej2-grids/src/grid/base/util.js","../node_modules/@syncfusion/ej2-grids/src/grid/base/enum.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/data.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/row.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/cell.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/cell-merge-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/row-model-generator.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/summary-model-generator.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/group-model-generator.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/content-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/aria-service.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/stacked-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/indent-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/caption-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/expand-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-indent-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/detail-header-indent-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/detail-expand-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-drag-drop-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-drag-header-indent-render.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/render.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/cell-render-factory.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/responsive-dialog-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/service-locator.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/renderer-factory.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/width-controller.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/focus-strategy.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/page-settings.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/column-chooser-settings.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/selection.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/search.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/show-hide.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/scroll.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/aggregate.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/clipboard.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/logger.js","../node_modules/@syncfusion/ej2-grids/src/grid/base/grid.js","../node_modules/@syncfusion/ej2-react-grids/src/grid/grid.component.js","../node_modules/@syncfusion/ej2-react-grids/src/grid/columns-directive.js","Components/DashboardDatagrid.js","Pages/ForbiddenPage.js","../node_modules/@syncfusion/ej2-navigations/src/stepper-base/stepper-base.js","../node_modules/@syncfusion/ej2-navigations/src/stepper/stepper.js","../node_modules/@syncfusion/ej2-react-navigations/src/stepper/stepper.component.js","../node_modules/@syncfusion/ej2-react-navigations/src/stepper/steps-directive.js","Components/Stepper.js","Pages/DashboardPage.js","../node_modules/@syncfusion/ej2-react-buttons/src/button/button.component.js","../node_modules/@syncfusion/ej2-react-popups/src/dialog/dialog.component.js","Pages/LoginPage.js","../node_modules/@syncfusion/ej2-grids/src/pager/numeric-container.js","../node_modules/@syncfusion/ej2-dropdowns/node_modules/@syncfusion/ej2-inputs/src/input/input.js","../node_modules/@syncfusion/ej2-grids/src/pager/pager-message.js","../node_modules/@syncfusion/ej2-grids/src/pager/pager.js","../node_modules/@syncfusion/ej2-dropdowns/src/common/incremental-search.js","../node_modules/@syncfusion/ej2-lists/src/common/list-base.js","../node_modules/@syncfusion/ej2-notifications/src/skeleton/skeleton.js","../node_modules/@syncfusion/ej2-dropdowns/src/drop-down-base/drop-down-base.js","../node_modules/@syncfusion/ej2-dropdowns/src/drop-down-list/drop-down-list.js","../node_modules/@syncfusion/ej2-grids/src/pager/pager-dropdown.js","../node_modules/@syncfusion/ej2-grids/src/pager/external-message.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/page.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/filter-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/filter-menu-operator.js","../node_modules/@syncfusion/ej2-dropdowns/src/combo-box/combo-box.js","../node_modules/@syncfusion/ej2-dropdowns/src/common/highlight-search.js","../node_modules/@syncfusion/ej2-dropdowns/src/auto-complete/auto-complete.js","../node_modules/@syncfusion/ej2-calendars/src/timepicker/timepicker.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/string-filter-ui.js","../node_modules/@syncfusion/ej2-inputs/src/numerictextbox/numerictextbox.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/number-filter-ui.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/boolean-filter-ui.js","../node_modules/@syncfusion/ej2-calendars/src/calendar/calendar.js","../node_modules/@syncfusion/ej2-calendars/src/datepicker/datepicker.js","../node_modules/@syncfusion/ej2-calendars/src/datetimepicker/datetimepicker.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/date-filter-ui.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/filter-menu-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/checkbox-filter.js","../node_modules/@syncfusion/ej2-buttons/src/radio-button/radio-button.js","../node_modules/@syncfusion/ej2-buttons/src/check-box/check-box.js","../node_modules/@syncfusion/ej2-navigations/src/common/h-scroll.js","../node_modules/@syncfusion/ej2-navigations/src/common/v-scroll.js","../node_modules/@syncfusion/ej2-navigations/src/common/menu-scroll.js","../node_modules/@syncfusion/ej2-navigations/src/common/menu-base.js","../node_modules/@syncfusion/ej2-inputs/src/form-validator/form-validator.js","../node_modules/@syncfusion/ej2-navigations/src/context-menu/context-menu.js","../node_modules/@syncfusion/ej2-grids/src/grid/common/excel-filter-base.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/excel-filter.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/filter.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/sort.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/column-chooser.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/inline-edit-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/batch-edit-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/dialog-edit-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/edit-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/edit-cell-base.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/boolean-edit-cell.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/dropdown-edit-cell.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/numeric-edit-cell.js","../node_modules/@syncfusion/ej2-inputs/src/textbox/textbox.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/default-edit-cell.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/normal-edit.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/inline-edit.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/batch-edit.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/dialog-edit.js","../node_modules/@syncfusion/ej2-calendars/src/maskbase/masked-date-time.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/datepicker-edit-cell.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/template-edit-cell.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/tables/light-tables/enum.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/edit.js","../node_modules/@syncfusion/ej2-navigations/src/toolbar/toolbar.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/toolbar.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/styles/pdf-borders.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/styles/style.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/base/element-layouter.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/layout-element.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/base/text-layouter.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/text-element.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/annotation.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/link-annotation.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/action-link-annotation.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/actions/action.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/actions/uri-action.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/uri-annotation.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/pdf-text-web-link.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/pdf-grid-cell.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/pdf-grid-column.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/pdf-grid-row.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/pdf-grid.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/structured-elements/grid/layout/grid-layouter.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-template-element.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/pdf-numbers-convertor.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/pdf-template-value-pair.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/multiple-value-field.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/pdf-page-number-field.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/composite-field.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/single-value-field.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/page-count-field.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-true-type-font.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/export-helper.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/pdf-export.js","../node_modules/@syncfusion/ej2-excel-export/src/worksheets.js","../node_modules/@syncfusion/ej2-excel-export/src/worksheet.js","../node_modules/@syncfusion/ej2-excel-export/src/cell-style.js","../node_modules/@syncfusion/ej2-excel-export/src/column.js","../node_modules/@syncfusion/ej2-excel-export/src/row.js","../node_modules/@syncfusion/ej2-excel-export/src/image.js","../node_modules/@syncfusion/ej2-excel-export/src/cell.js","../node_modules/@syncfusion/ej2-compression/src/utils.js","../node_modules/@syncfusion/ej2-compression/src/decompressor-huffman-tree.js","../node_modules/@syncfusion/ej2-compression/src/checksum-calculator.js","../node_modules/@syncfusion/ej2-compression/src/compression-reader.js","../node_modules/@syncfusion/ej2-compression/src/zip-archive.js","../node_modules/@syncfusion/ej2-excel-export/src/value-formatter.js","../node_modules/@syncfusion/ej2-excel-export/src/csv-helper.js","../node_modules/@syncfusion/ej2-excel-export/src/blob-helper.js","../node_modules/@syncfusion/ej2-excel-export/src/auto-filters.js","../node_modules/@syncfusion/ej2-excel-export/src/workbook.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/excel-export.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/resize.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/group.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/context-menu.js","Context/datagridContext.js","Config/arial.js","Utils/CustomAdaptor.js","Hooks/usePhoneNumberIdUpdater.js","Components/Datagrid.js","Pages/UnauthorizePage.js","Config/toolbarConfig.js","Config/editSettingsConfig.js","../node_modules/@syncfusion/ej2-inputs/src/maskedtextbox/base/mask-base.js","../node_modules/@syncfusion/ej2-inputs/src/maskedtextbox/maskedtextbox/maskedtextbox.js","../node_modules/@syncfusion/ej2-react-inputs/src/maskedtextbox/maskedtextbox.component.js","../node_modules/@syncfusion/ej2-react-dropdowns/src/combo-box/combobox.component.js","Pages/AccountsPage.js","Pages/CreditsPage.js","Pages/CreditSettingsPage.js","../node_modules/uuid/dist/esm-browser/rng.js","../node_modules/uuid/dist/esm-browser/regex.js","../node_modules/uuid/dist/esm-browser/validate.js","../node_modules/uuid/dist/esm-browser/stringify.js","../node_modules/uuid/dist/esm-browser/v4.js","../node_modules/@syncfusion/ej2-inputs/src/textarea/textarea.js","../node_modules/@syncfusion/ej2-react-inputs/src/textarea/textarea.component.js","../node_modules/@syncfusion/ej2-react-popups/src/tooltip/tooltip.component.js","Components/ContactModal.js","Pages/SendMessagePage.js","Pages/MessagesPage.js","Pages/MessageDetailsPage.js","Pages/SettingsPage.js","Pages/UserTransactionsPage.js","../node_modules/@syncfusion/ej2-inputs/src/uploader/uploader.js","../node_modules/@syncfusion/ej2-react-inputs/src/uploader/uploader.component.js","Components/Uploader.js","Pages/ContactsPage.js","Pages/TransactionDetailPage.js","Pages/NotFoundPage.js","../node_modules/react-router-dom/dom.ts","../node_modules/react-router-dom/index.tsx","Pages/ResetPasswordPage.js","Pages/UsersPage.js","../node_modules/@syncfusion/ej2-react-inputs/src/textbox/textbox.component.js","Pages/ContactUsPage.js","../node_modules/@syncfusion/ej2-buttons/src/chips/chip-list.js","../node_modules/@syncfusion/ej2-react-buttons/src/chips/chiplist.component.js","Pages/UserLicencePage.js","Pages/AdminsPage.js","../node_modules/@syncfusion/ej2-notifications/src/toast/toast.js","../node_modules/@syncfusion/ej2-react-notifications/src/toast/toast.component.js","Components/Toast.js","Pages/UnsubscribePage.js","App.js","reportWebVitals.js","index.js"],"sourcesContent":["/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&Ng(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=Lg(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Tg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Rg(f.type,f.key,f.props,null,a.mode,h),h.ref=Lg(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=Sg(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);Mg(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=Qg(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Ug=Og(!0),Vg=Og(!1),Wg=Uf(null),Xg=null,Yg=null,Zg=null;function $g(){Zg=Yg=Xg=null}function ah(a){var b=Wg.current;E(Wg);a._currentValue=b}function bh(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}\nfunction ch(a,b){Xg=a;Zg=Yg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(dh=!0),a.firstContext=null)}function eh(a){var b=a._currentValue;if(Zg!==a)if(a={context:a,memoizedValue:b,next:null},null===Yg){if(null===Xg)throw Error(p(308));Yg=a;Xg.dependencies={lanes:0,firstContext:a}}else Yg=Yg.next=a;return b}var fh=null;function gh(a){null===fh?fh=[a]:fh.push(a)}\nfunction hh(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,gh(b)):(c.next=e.next,e.next=c);b.interleaved=c;return ih(a,d)}function ih(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var jh=!1;function kh(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction lh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function mh(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction nh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return ih(a,c)}e=d.interleaved;null===e?(b.next=b,gh(d)):(b.next=e.next,e.next=b);d.interleaved=b;return ih(a,c)}function oh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction ph(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction qh(a,b,c,d){var e=a.updateQueue;jh=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:jh=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);rh|=g;a.lanes=g;a.memoizedState=q}}\nfunction sh(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;bc?c:4;a(!0);var d=Gh.transition;Gh.transition={};try{a(!1),b()}finally{C=c,Gh.transition=d}}function wi(){return Uh().memoizedState}\nfunction xi(a,b,c){var d=yi(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,c);else if(c=hh(a,b,c,d),null!==c){var e=R();gi(c,a,d,e);Bi(c,b,d)}}\nfunction ii(a,b,c){var d=yi(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,gh(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=hh(a,b,e,d);null!==c&&(e=R(),gi(c,a,d,e),Bi(c,b,d))}}\nfunction zi(a){var b=a.alternate;return a===M||null!==b&&b===M}function Ai(a,b){Jh=Ih=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Bi(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar Rh={readContext:eh,useCallback:P,useContext:P,useEffect:P,useImperativeHandle:P,useInsertionEffect:P,useLayoutEffect:P,useMemo:P,useReducer:P,useRef:P,useState:P,useDebugValue:P,useDeferredValue:P,useTransition:P,useMutableSource:P,useSyncExternalStore:P,useId:P,unstable_isNewReconciler:!1},Oh={readContext:eh,useCallback:function(a,b){Th().memoizedState=[a,void 0===b?null:b];return a},useContext:eh,useEffect:mi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ki(4194308,\n4,pi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ki(4194308,4,a,b)},useInsertionEffect:function(a,b){return ki(4,2,a,b)},useMemo:function(a,b){var c=Th();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=xi.bind(null,M,a);return[d.memoizedState,a]},useRef:function(a){var b=\nTh();a={current:a};return b.memoizedState=a},useState:hi,useDebugValue:ri,useDeferredValue:function(a){return Th().memoizedState=a},useTransition:function(){var a=hi(!1),b=a[0];a=vi.bind(null,a[1]);Th().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=M,e=Th();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===Q)throw Error(p(349));0!==(Hh&30)||di(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;mi(ai.bind(null,d,\nf,a),[a]);d.flags|=2048;bi(9,ci.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Th(),b=Q.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Kh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;zj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eGj&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304)}else{if(!d)if(a=Ch(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Dj(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Gj&&1073741824!==c&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=L.current,G(L,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Hj(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(fj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Ij(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return zh(),E(Wf),E(H),Eh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Bh(b),null;case 13:E(L);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(L),null;case 4:return zh(),null;case 10:return ah(b.type._context),null;case 22:case 23:return Hj(),\nnull;case 24:return null;default:return null}}var Jj=!1,U=!1,Kj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Lj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Mj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Nj=!1;\nfunction Oj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Ci(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Nj;Nj=!1;return n}\nfunction Pj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Mj(b,c,f)}e=e.next}while(e!==d)}}function Qj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Rj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Sj(a){var b=a.alternate;null!==b&&(a.alternate=null,Sj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Tj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Uj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Tj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Vj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Vj(a,b,c),a=a.sibling;null!==a;)Vj(a,b,c),a=a.sibling}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}var X=null,Xj=!1;function Yj(a,b,c){for(c=c.child;null!==c;)Zj(a,b,c),c=c.sibling}\nfunction Zj(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Lj(c,b);case 6:var d=X,e=Xj;X=null;Yj(a,b,c);X=d;Xj=e;null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Xj;X=c.stateNode.containerInfo;Xj=!0;\nYj(a,b,c);X=d;Xj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Mj(c,b,g):0!==(f&4)&&Mj(c,b,g));e=e.next}while(e!==d)}Yj(a,b,c);break;case 1:if(!U&&(Lj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Yj(a,b,c);break;case 21:Yj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Yj(a,b,c),U=d):Yj(a,b,c);break;default:Yj(a,b,c)}}function ak(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Kj);b.forEach(function(b){var d=bk.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction ck(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lk(d/1960))-d;if(10a?16:a;if(null===wk)var d=!1;else{a=wk;wk=null;xk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-fk?Kk(a,0):rk|=c);Dk(a,b)}function Yk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=R();a=ih(a,b);null!==a&&(Ac(a,b,c),Dk(a,c))}function uj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Yk(a,c)}\nfunction bk(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Yk(a,c)}var Vk;\nVk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)dh=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return dh=!1,yj(a,b,c);dh=0!==(a.flags&131072)?!0:!1}else dh=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;ij(a,b);a=b.pendingProps;var e=Yf(b,H.current);ch(b,c);e=Nh(null,b,d,a,e,c);var f=Sh();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,kh(b),e.updater=Ei,b.stateNode=e,e._reactInternals=b,Ii(b,d,a,c),b=jj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Xi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{ij(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Zk(d);a=Ci(d,a);switch(e){case 0:b=cj(null,b,d,a,c);break a;case 1:b=hj(null,b,d,a,c);break a;case 11:b=Yi(null,b,d,a,c);break a;case 14:b=$i(null,b,d,Ci(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),cj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),hj(a,b,d,e,c);case 3:a:{kj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;lh(a,b);qh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ji(Error(p(423)),b);b=lj(a,b,d,c,e);break a}else if(d!==e){e=Ji(Error(p(424)),b);b=lj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Vg(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=Zi(a,b,c);break a}Xi(a,b,d,c)}b=b.child}return b;case 5:return Ah(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\ngj(a,b),Xi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return oj(a,b,c);case 4:return yh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Ug(b,null,d,c):Xi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),Yi(a,b,d,e,c);case 7:return Xi(a,b,b.pendingProps,c),b.child;case 8:return Xi(a,b,b.pendingProps.children,c),b.child;case 12:return Xi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Wg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=Zi(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=mh(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);bh(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);bh(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Xi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,ch(b,c),e=eh(e),d=d(e),b.flags|=1,Xi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Ci(d,b.pendingProps),e=Ci(d.type,e),$i(a,b,d,e,c);case 15:return bj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),ij(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,ch(b,c),Gi(b,d,e),Ii(b,d,e,c),jj(null,b,d,!0,a,c);case 19:return xj(a,b,c);case 22:return dj(a,b,c)}throw Error(p(156,b.tag));};function Fk(a,b){return ac(a,b)}\nfunction $k(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new $k(a,b,c,d)}function aj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Zk(a){if(\"function\"===typeof a)return aj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction Pg(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Rg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)aj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Tg(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return pj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Tg(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function pj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function Qg(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction Sg(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction al(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function bl(a,b,c,d,e,f,g,h,k){a=new al(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};kh(f);return a}function cl(a,b,c){var d=3>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/**\n * This file automatically generated from `pre-publish.js`.\n * Do not manually edit.\n */\n\nmodule.exports = {\n \"area\": true,\n \"base\": true,\n \"br\": true,\n \"col\": true,\n \"embed\": true,\n \"hr\": true,\n \"img\": true,\n \"input\": true,\n \"link\": true,\n \"meta\": true,\n \"param\": true,\n \"source\": true,\n \"track\": true,\n \"wbr\": true\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + \"f7a2d6dd\" + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"bizreach-app:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t792: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkbizreach_app\"] = self[\"webpackChunkbizreach_app\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Actions represent the type of change to a location value.\n */\nexport enum Action {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Pop = \"POP\",\n\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Push = \"PUSH\",\n\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Replace = \"REPLACE\",\n}\n\n/**\n * The pathname, search, and hash values of a URL.\n */\nexport interface Path {\n /**\n * A URL pathname, beginning with a /.\n */\n pathname: string;\n\n /**\n * A URL search string, beginning with a ?.\n */\n search: string;\n\n /**\n * A URL fragment identifier, beginning with a #.\n */\n hash: string;\n}\n\n// TODO: (v7) Change the Location generic default from `any` to `unknown` and\n// remove Remix `useLocation` wrapper.\n\n/**\n * An entry in a history stack. A location contains information about the\n * URL path, as well as possibly some arbitrary state and a key.\n */\nexport interface Location extends Path {\n /**\n * A value of arbitrary data associated with this location.\n */\n state: State;\n\n /**\n * A unique string associated with this location. May be used to safely store\n * and retrieve data in some other storage API, like `localStorage`.\n *\n * Note: This value is always \"default\" on the initial location.\n */\n key: string;\n}\n\n/**\n * A change to the current location.\n */\nexport interface Update {\n /**\n * The action that triggered the change.\n */\n action: Action;\n\n /**\n * The new location.\n */\n location: Location;\n\n /**\n * The delta between this location and the former location in the history stack\n */\n delta: number | null;\n}\n\n/**\n * A function that receives notifications about location changes.\n */\nexport interface Listener {\n (update: Update): void;\n}\n\n/**\n * Describes a location that is the destination of some navigation, either via\n * `history.push` or `history.replace`. This may be either a URL or the pieces\n * of a URL path.\n */\nexport type To = string | Partial;\n\n/**\n * A history is an interface to the navigation stack. The history serves as the\n * source of truth for the current location, as well as provides a set of\n * methods that may be used to change it.\n *\n * It is similar to the DOM's `window.history` object, but with a smaller, more\n * focused API.\n */\nexport interface History {\n /**\n * The last action that modified the current location. This will always be\n * Action.Pop when a history instance is first created. This value is mutable.\n */\n readonly action: Action;\n\n /**\n * The current location. This value is mutable.\n */\n readonly location: Location;\n\n /**\n * Returns a valid href for the given `to` value that may be used as\n * the value of an attribute.\n *\n * @param to - The destination URL\n */\n createHref(to: To): string;\n\n /**\n * Returns a URL for the given `to` value\n *\n * @param to - The destination URL\n */\n createURL(to: To): URL;\n\n /**\n * Encode a location the same way window.history would do (no-op for memory\n * history) so we ensure our PUSH/REPLACE navigations for data routers\n * behave the same as POP\n *\n * @param to Unencoded path\n */\n encodeLocation(to: To): Path;\n\n /**\n * Pushes a new location onto the history stack, increasing its length by one.\n * If there were any entries in the stack after the current one, they are\n * lost.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n push(to: To, state?: any): void;\n\n /**\n * Replaces the current location in the history stack with a new one. The\n * location that was replaced will no longer be available.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n replace(to: To, state?: any): void;\n\n /**\n * Navigates `n` entries backward/forward in the history stack relative to the\n * current index. For example, a \"back\" navigation would use go(-1).\n *\n * @param delta - The delta in the stack index\n */\n go(delta: number): void;\n\n /**\n * Sets up a listener that will be called whenever the current location\n * changes.\n *\n * @param listener - A function that will be called when the location changes\n * @returns unlisten - A function that may be used to stop listening\n */\n listen(listener: Listener): () => void;\n}\n\ntype HistoryState = {\n usr: any;\n key?: string;\n idx: number;\n};\n\nconst PopStateEventType = \"popstate\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Memory History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A user-supplied object that describes a location. Used when providing\n * entries to `createMemoryHistory` via its `initialEntries` option.\n */\nexport type InitialEntry = string | Partial;\n\nexport type MemoryHistoryOptions = {\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n v5Compat?: boolean;\n};\n\n/**\n * A memory history stores locations in memory. This is useful in stateful\n * environments where there is no web browser, such as node tests or React\n * Native.\n */\nexport interface MemoryHistory extends History {\n /**\n * The current index in the history stack.\n */\n readonly index: number;\n}\n\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nexport function createMemoryHistory(\n options: MemoryHistoryOptions = {}\n): MemoryHistory {\n let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n let entries: Location[]; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) =>\n createMemoryLocation(\n entry,\n typeof entry === \"string\" ? null : entry.state,\n index === 0 ? \"default\" : undefined\n )\n );\n let index = clampIndex(\n initialIndex == null ? entries.length - 1 : initialIndex\n );\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n function clampIndex(n: number): number {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation(): Location {\n return entries[index];\n }\n function createMemoryLocation(\n to: To,\n state: any = null,\n key?: string\n ): Location {\n let location = createLocation(\n entries ? getCurrentLocation().pathname : \"/\",\n to,\n state,\n key\n );\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in memory history: ${JSON.stringify(\n to\n )}`\n );\n return location;\n }\n\n function createHref(to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n let history: MemoryHistory = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref,\n createURL(to) {\n return new URL(createHref(to), \"http://localhost\");\n },\n encodeLocation(to: To) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\",\n };\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 1 });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 0 });\n }\n },\n go(delta) {\n action = Action.Pop;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({ action, location: nextLocation, delta });\n }\n },\n listen(fn: Listener) {\n listener = fn;\n return () => {\n listener = null;\n };\n },\n };\n\n return history;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Browser History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A browser history stores the current location in regular URLs in a web\n * browser environment. This is the standard for most web apps and provides the\n * cleanest URLs the browser's address bar.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#browserhistory\n */\nexport interface BrowserHistory extends UrlHistory {}\n\nexport type BrowserHistoryOptions = UrlHistoryOptions;\n\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nexport function createBrowserHistory(\n options: BrowserHistoryOptions = {}\n): BrowserHistory {\n function createBrowserLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let { pathname, search, hash } = window.location;\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createBrowserHref(window: Window, to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n return getUrlBasedHistory(\n createBrowserLocation,\n createBrowserHref,\n null,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hash History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A hash history stores the current location in the fragment identifier portion\n * of the URL in a web browser environment.\n *\n * This is ideal for apps that do not control the server for some reason\n * (because the fragment identifier is never sent to the server), including some\n * shared hosting environments that do not provide fine-grained controls over\n * which pages are served at which URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#hashhistory\n */\nexport interface HashHistory extends UrlHistory {}\n\nexport type HashHistoryOptions = UrlHistoryOptions;\n\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nexport function createHashHistory(\n options: HashHistoryOptions = {}\n): HashHistory {\n function createHashLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n } = parsePath(window.location.hash.substr(1));\n\n // Hash URL should always have a leading / just like window.location.pathname\n // does, so if an app ends up at a route like /#something then we add a\n // leading slash so all of our path-matching behaves the same as if it would\n // in a browser router. This is particularly important when there exists a\n // root splat route () since that matches internally against\n // \"/*\" and we'd expect /#something to 404 in a hash router app.\n if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n pathname = \"/\" + pathname;\n }\n\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createHashHref(window: Window, to: To) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n\n function validateHashLocation(location: Location, to: To) {\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in hash history.push(${JSON.stringify(\n to\n )})`\n );\n }\n\n return getUrlBasedHistory(\n createHashLocation,\n createHashHref,\n validateHashLocation,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region UTILS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * @private\n */\nexport function invariant(value: boolean, message?: string): asserts value;\nexport function invariant(\n value: T | null | undefined,\n message?: string\n): asserts value is T;\nexport function invariant(value: any, message?: string) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\n\nexport function warning(cond: any, message: string) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience, so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location: Location, index: number): HistoryState {\n return {\n usr: location.state,\n key: location.key,\n idx: index,\n };\n}\n\n/**\n * Creates a Location object with a unique key from the given Path\n */\nexport function createLocation(\n current: string | Location,\n to: To,\n state: any = null,\n key?: string\n): Readonly {\n let location: Readonly = {\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\",\n ...(typeof to === \"string\" ? parsePath(to) : to),\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: (to && (to as Location).key) || key || createKey(),\n };\n return location;\n}\n\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nexport function createPath({\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n}: Partial) {\n if (search && search !== \"?\")\n pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\")\n pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nexport function parsePath(path: string): Partial {\n let parsedPath: Partial = {};\n\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n\n if (path) {\n parsedPath.pathname = path;\n }\n }\n\n return parsedPath;\n}\n\nexport interface UrlHistory extends History {}\n\nexport type UrlHistoryOptions = {\n window?: Window;\n v5Compat?: boolean;\n};\n\nfunction getUrlBasedHistory(\n getLocation: (window: Window, globalHistory: Window[\"history\"]) => Location,\n createHref: (window: Window, to: To) => string,\n validateLocation: ((location: Location, to: To) => void) | null,\n options: UrlHistoryOptions = {}\n): UrlHistory {\n let { window = document.defaultView!, v5Compat = false } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n let index = getIndex()!;\n // Index should only be null when we initialize. If not, it's because the\n // user called history.pushState or history.replaceState directly, in which\n // case we should log a warning as it will result in bugs.\n if (index == null) {\n index = 0;\n globalHistory.replaceState({ ...globalHistory.state, idx: index }, \"\");\n }\n\n function getIndex(): number {\n let state = globalHistory.state || { idx: null };\n return state.idx;\n }\n\n function handlePop() {\n action = Action.Pop;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({ action, location: history.location, delta });\n }\n }\n\n function push(to: To, state?: any) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex() + 1;\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // If the exception is because `state` can't be serialized, let that throw\n // outwards just like a replace call would so the dev knows the cause\n // https://html.spec.whatwg.org/multipage/nav-history-apis.html#shared-history-push/replace-state-steps\n // https://html.spec.whatwg.org/multipage/structured-data.html#structuredserializeinternal\n if (error instanceof DOMException && error.name === \"DataCloneError\") {\n throw error;\n }\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 1 });\n }\n }\n\n function replace(to: To, state?: any) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex();\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 0 });\n }\n }\n\n function createURL(to: To): URL {\n // window.location.origin is \"null\" (the literal string value) in Firefox\n // under certain conditions, notably when serving from a local HTML file\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n let base =\n window.location.origin !== \"null\"\n ? window.location.origin\n : window.location.href;\n\n let href = typeof to === \"string\" ? to : createPath(to);\n // Treating this as a full URL will strip any trailing spaces so we need to\n // pre-encode them since they might be part of a matching splat param from\n // an ancestor route\n href = href.replace(/ $/, \"%20\");\n invariant(\n base,\n `No window.location.(origin|href) available to create URL for href: ${href}`\n );\n return new URL(href, base);\n }\n\n let history: History = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn: Listener) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n createURL,\n encodeLocation(to) {\n // Encode a Location the same way window.location would\n let url = createURL(to);\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n };\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n },\n };\n\n return history;\n}\n\n//#endregion\n","import type { Location, Path, To } from \"./history\";\nimport { invariant, parsePath, warning } from \"./history\";\n\n/**\n * Map of routeId -> data returned from a loader/action/error\n */\nexport interface RouteData {\n [routeId: string]: any;\n}\n\nexport enum ResultType {\n data = \"data\",\n deferred = \"deferred\",\n redirect = \"redirect\",\n error = \"error\",\n}\n\n/**\n * Successful result from a loader or action\n */\nexport interface SuccessResult {\n type: ResultType.data;\n data: unknown;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Successful defer() result from a loader or action\n */\nexport interface DeferredResult {\n type: ResultType.deferred;\n deferredData: DeferredData;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Redirect result from a loader or action\n */\nexport interface RedirectResult {\n type: ResultType.redirect;\n // We keep the raw Response for redirects so we can return it verbatim\n response: Response;\n}\n\n/**\n * Unsuccessful result from a loader or action\n */\nexport interface ErrorResult {\n type: ResultType.error;\n error: unknown;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Result from a loader or action - potentially successful or unsuccessful\n */\nexport type DataResult =\n | SuccessResult\n | DeferredResult\n | RedirectResult\n | ErrorResult;\n\n/**\n * Result from a loader or action called via dataStrategy\n */\nexport interface HandlerResult {\n type: \"data\" | \"error\";\n result: unknown; // data, Error, Response, DeferredData, DataWithResponseInit\n}\n\ntype LowerCaseFormMethod = \"get\" | \"post\" | \"put\" | \"patch\" | \"delete\";\ntype UpperCaseFormMethod = Uppercase;\n\n/**\n * Users can specify either lowercase or uppercase form methods on `
`,\n * useSubmit(), ``, etc.\n */\nexport type HTMLFormMethod = LowerCaseFormMethod | UpperCaseFormMethod;\n\n/**\n * Active navigation/fetcher form methods are exposed in lowercase on the\n * RouterState\n */\nexport type FormMethod = LowerCaseFormMethod;\nexport type MutationFormMethod = Exclude;\n\n/**\n * In v7, active navigation/fetcher form methods are exposed in uppercase on the\n * RouterState. This is to align with the normalization done via fetch().\n */\nexport type V7_FormMethod = UpperCaseFormMethod;\nexport type V7_MutationFormMethod = Exclude;\n\nexport type FormEncType =\n | \"application/x-www-form-urlencoded\"\n | \"multipart/form-data\"\n | \"application/json\"\n | \"text/plain\";\n\n// Thanks https://github.com/sindresorhus/type-fest!\ntype JsonObject = { [Key in string]: JsonValue } & {\n [Key in string]?: JsonValue | undefined;\n};\ntype JsonArray = JsonValue[] | readonly JsonValue[];\ntype JsonPrimitive = string | number | boolean | null;\ntype JsonValue = JsonPrimitive | JsonObject | JsonArray;\n\n/**\n * @private\n * Internal interface to pass around for action submissions, not intended for\n * external consumption\n */\nexport type Submission =\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n json: undefined;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: JsonValue;\n text: undefined;\n }\n | {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: undefined;\n json: undefined;\n text: string;\n };\n\n/**\n * @private\n * Arguments passed to route loader/action functions. Same for now but we keep\n * this as a private implementation detail in case they diverge in the future.\n */\ninterface DataFunctionArgs {\n request: Request;\n params: Params;\n context?: Context;\n}\n\n// TODO: (v7) Change the defaults from any to unknown in and remove Remix wrappers:\n// ActionFunction, ActionFunctionArgs, LoaderFunction, LoaderFunctionArgs\n// Also, make them a type alias instead of an interface\n\n/**\n * Arguments passed to loader functions\n */\nexport interface LoaderFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Arguments passed to action functions\n */\nexport interface ActionFunctionArgs\n extends DataFunctionArgs {}\n\n/**\n * Loaders and actions can return anything except `undefined` (`null` is a\n * valid return value if there is no data to return). Responses are preferred\n * and will ease any future migration to Remix\n */\ntype DataFunctionValue = Response | NonNullable | null;\n\ntype DataFunctionReturnValue = Promise | DataFunctionValue;\n\n/**\n * Route loader function signature\n */\nexport type LoaderFunction = {\n (\n args: LoaderFunctionArgs,\n handlerCtx?: unknown\n ): DataFunctionReturnValue;\n} & { hydrate?: boolean };\n\n/**\n * Route action function signature\n */\nexport interface ActionFunction {\n (\n args: ActionFunctionArgs,\n handlerCtx?: unknown\n ): DataFunctionReturnValue;\n}\n\n/**\n * Arguments passed to shouldRevalidate function\n */\nexport interface ShouldRevalidateFunctionArgs {\n currentUrl: URL;\n currentParams: AgnosticDataRouteMatch[\"params\"];\n nextUrl: URL;\n nextParams: AgnosticDataRouteMatch[\"params\"];\n formMethod?: Submission[\"formMethod\"];\n formAction?: Submission[\"formAction\"];\n formEncType?: Submission[\"formEncType\"];\n text?: Submission[\"text\"];\n formData?: Submission[\"formData\"];\n json?: Submission[\"json\"];\n actionStatus?: number;\n actionResult?: any;\n defaultShouldRevalidate: boolean;\n}\n\n/**\n * Route shouldRevalidate function signature. This runs after any submission\n * (navigation or fetcher), so we flatten the navigation/fetcher submission\n * onto the arguments. It shouldn't matter whether it came from a navigation\n * or a fetcher, what really matters is the URLs and the formData since loaders\n * have to re-run based on the data models that were potentially mutated.\n */\nexport interface ShouldRevalidateFunction {\n (args: ShouldRevalidateFunctionArgs): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set `hasErrorBoundary`\n * from the framework-aware `errorElement` prop\n *\n * @deprecated Use `mapRouteProperties` instead\n */\nexport interface DetectErrorBoundaryFunction {\n (route: AgnosticRouteObject): boolean;\n}\n\nexport interface DataStrategyMatch\n extends AgnosticRouteMatch {\n shouldLoad: boolean;\n resolve: (\n handlerOverride?: (\n handler: (ctx?: unknown) => DataFunctionReturnValue\n ) => Promise\n ) => Promise;\n}\n\nexport interface DataStrategyFunctionArgs\n extends DataFunctionArgs {\n matches: DataStrategyMatch[];\n}\n\nexport interface DataStrategyFunction {\n (args: DataStrategyFunctionArgs): Promise;\n}\n\nexport interface AgnosticPatchRoutesOnNavigationFunction<\n M extends AgnosticRouteMatch = AgnosticRouteMatch\n> {\n (opts: {\n path: string;\n matches: M[];\n patch: (routeId: string | null, children: AgnosticRouteObject[]) => void;\n }): void | Promise;\n}\n\n/**\n * Function provided by the framework-aware layers to set any framework-specific\n * properties from framework-agnostic properties\n */\nexport interface MapRoutePropertiesFunction {\n (route: AgnosticRouteObject): {\n hasErrorBoundary: boolean;\n } & Record;\n}\n\n/**\n * Keys we cannot change from within a lazy() function. We spread all other keys\n * onto the route. Either they're meaningful to the router, or they'll get\n * ignored.\n */\nexport type ImmutableRouteKey =\n | \"lazy\"\n | \"caseSensitive\"\n | \"path\"\n | \"id\"\n | \"index\"\n | \"children\";\n\nexport const immutableRouteKeys = new Set([\n \"lazy\",\n \"caseSensitive\",\n \"path\",\n \"id\",\n \"index\",\n \"children\",\n]);\n\ntype RequireOne = Exclude<\n {\n [K in keyof T]: K extends Key ? Omit & Required> : never;\n }[keyof T],\n undefined\n>;\n\n/**\n * lazy() function to load a route definition, which can add non-matching\n * related properties to a route\n */\nexport interface LazyRouteFunction {\n (): Promise>>;\n}\n\n/**\n * Base RouteObject with common props shared by all types of routes\n */\ntype AgnosticBaseRouteObject = {\n caseSensitive?: boolean;\n path?: string;\n id?: string;\n loader?: LoaderFunction | boolean;\n action?: ActionFunction | boolean;\n hasErrorBoundary?: boolean;\n shouldRevalidate?: ShouldRevalidateFunction;\n handle?: any;\n lazy?: LazyRouteFunction;\n};\n\n/**\n * Index routes must not have children\n */\nexport type AgnosticIndexRouteObject = AgnosticBaseRouteObject & {\n children?: undefined;\n index: true;\n};\n\n/**\n * Non-index routes may have children, but cannot have index\n */\nexport type AgnosticNonIndexRouteObject = AgnosticBaseRouteObject & {\n children?: AgnosticRouteObject[];\n index?: false;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport type AgnosticRouteObject =\n | AgnosticIndexRouteObject\n | AgnosticNonIndexRouteObject;\n\nexport type AgnosticDataIndexRouteObject = AgnosticIndexRouteObject & {\n id: string;\n};\n\nexport type AgnosticDataNonIndexRouteObject = AgnosticNonIndexRouteObject & {\n children?: AgnosticDataRouteObject[];\n id: string;\n};\n\n/**\n * A data route object, which is just a RouteObject with a required unique ID\n */\nexport type AgnosticDataRouteObject =\n | AgnosticDataIndexRouteObject\n | AgnosticDataNonIndexRouteObject;\n\nexport type RouteManifest = Record;\n\n// Recursive helper for finding path parameters in the absence of wildcards\ntype _PathParam =\n // split path into individual path segments\n Path extends `${infer L}/${infer R}`\n ? _PathParam | _PathParam\n : // find params after `:`\n Path extends `:${infer Param}`\n ? Param extends `${infer Optional}?`\n ? Optional\n : Param\n : // otherwise, there aren't any params present\n never;\n\n/**\n * Examples:\n * \"/a/b/*\" -> \"*\"\n * \":a\" -> \"a\"\n * \"/a/:b\" -> \"b\"\n * \"/a/blahblahblah:b\" -> \"b\"\n * \"/:a/:b\" -> \"a\" | \"b\"\n * \"/:a/b/:c/*\" -> \"a\" | \"c\" | \"*\"\n */\nexport type PathParam =\n // check if path is just a wildcard\n Path extends \"*\" | \"/*\"\n ? \"*\"\n : // look for wildcard at the end of the path\n Path extends `${infer Rest}/*`\n ? \"*\" | _PathParam\n : // look for params in the absence of wildcards\n _PathParam;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise, return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey =\n // if you could not find path params, fallback to `string`\n [PathParam] extends [never] ? string : PathParam;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface AgnosticRouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObjectType;\n}\n\nexport interface AgnosticDataRouteMatch\n extends AgnosticRouteMatch {}\n\nfunction isIndexRoute(\n route: AgnosticRouteObject\n): route is AgnosticIndexRouteObject {\n return route.index === true;\n}\n\n// Walk the route tree generating unique IDs where necessary, so we are working\n// solely with AgnosticDataRouteObject's within the Router\nexport function convertRoutesToDataRoutes(\n routes: AgnosticRouteObject[],\n mapRouteProperties: MapRoutePropertiesFunction,\n parentPath: string[] = [],\n manifest: RouteManifest = {}\n): AgnosticDataRouteObject[] {\n return routes.map((route, index) => {\n let treePath = [...parentPath, String(index)];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(\n route.index !== true || !route.children,\n `Cannot specify children on an index route`\n );\n invariant(\n !manifest[id],\n `Found a route id collision on id \"${id}\". Route ` +\n \"id's must be globally unique within Data Router usages\"\n );\n\n if (isIndexRoute(route)) {\n let indexRoute: AgnosticDataIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n };\n manifest[id] = indexRoute;\n return indexRoute;\n } else {\n let pathOrLayoutRoute: AgnosticDataNonIndexRouteObject = {\n ...route,\n ...mapRouteProperties(route),\n id,\n children: undefined,\n };\n manifest[id] = pathOrLayoutRoute;\n\n if (route.children) {\n pathOrLayoutRoute.children = convertRoutesToDataRoutes(\n route.children,\n mapRouteProperties,\n treePath,\n manifest\n );\n }\n\n return pathOrLayoutRoute;\n }\n });\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/utils/match-routes\n */\nexport function matchRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename = \"/\"\n): AgnosticRouteMatch[] | null {\n return matchRoutesImpl(routes, locationArg, basename, false);\n}\n\nexport function matchRoutesImpl<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename: string,\n allowPartial: boolean\n): AgnosticRouteMatch[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n // Incoming pathnames are generally encoded from either window.location\n // or from router.navigate, but we want to match against the unencoded\n // paths in the route definitions. Memory router locations won't be\n // encoded here but there also shouldn't be anything to decode so this\n // should be a safe operation. This avoids needing matchRoutes to be\n // history-aware.\n let decoded = decodePath(pathname);\n matches = matchRouteBranch(\n branches[i],\n decoded,\n allowPartial\n );\n }\n\n return matches;\n}\n\nexport interface UIMatch {\n id: string;\n pathname: string;\n params: AgnosticRouteMatch[\"params\"];\n data: Data;\n handle: Handle;\n}\n\nexport function convertRouteMatchToUiMatch(\n match: AgnosticDataRouteMatch,\n loaderData: RouteData\n): UIMatch {\n let { route, pathname, params } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id],\n handle: route.handle,\n };\n}\n\ninterface RouteMeta<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObjectType;\n}\n\ninterface RouteBranch<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n let flattenRoute = (\n route: RouteObjectType,\n index: number,\n relativePath?: string\n ) => {\n let meta: RouteMeta = {\n relativePath:\n relativePath === undefined ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array, so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta,\n });\n };\n routes.forEach((route, index) => {\n // coarse-grain check for optional params\n if (route.path === \"\" || !route.path?.includes(\"?\")) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, exploded);\n }\n }\n });\n\n return branches;\n}\n\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path: string): string[] {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n\n let [first, ...rest] = segments;\n\n // Optional path segments are denoted by a trailing `?`\n let isOptional = first.endsWith(\"?\");\n // Compute the corresponding required segment: `foo?` -> `foo`\n let required = first.replace(/\\?$/, \"\");\n\n if (rest.length === 0) {\n // Intepret empty string as omitting an optional segment\n // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n return isOptional ? [required, \"\"] : [required];\n }\n\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n\n let result: string[] = [];\n\n // All child paths with the prefix. Do this for all children before the\n // optional version for all children, so we get consistent ordering where the\n // parent optional aspect is preferred as required. Otherwise, we can get\n // child sections interspersed where deeper optional segments are higher than\n // parent optional segments, where for example, /:two would explode _earlier_\n // then /:one. By always including the parent as required _for all children_\n // first, we avoid this issue\n result.push(\n ...restExploded.map((subpath) =>\n subpath === \"\" ? required : [required, subpath].join(\"/\")\n )\n );\n\n // Then, if this is an optional value, add all child versions without\n if (isOptional) {\n result.push(...restExploded);\n }\n\n // for absolute paths, ensure `/` instead of empty segment\n return result.map((exploded) =>\n path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded\n );\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:[\\w-]+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n branch: RouteBranch,\n pathname: string,\n allowPartial = false\n): AgnosticRouteMatch[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: AgnosticRouteMatch[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n let route = meta.route;\n\n if (\n !match &&\n end &&\n allowPartial &&\n !routesMeta[routesMeta.length - 1].route.index\n ) {\n match = matchPath(\n {\n path: meta.relativePath,\n caseSensitive: meta.caseSensitive,\n end: false,\n },\n remainingPathname\n );\n }\n\n if (!match) {\n return null;\n }\n\n Object.assign(matchedParams, match.params);\n\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams as Params,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/utils/generate-path\n */\nexport function generatePath(\n originalPath: Path,\n params: {\n [key in PathParam]: string | null;\n } = {} as any\n): string {\n let path: string = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(\n false,\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n path = path.replace(/\\*$/, \"/*\") as Path;\n }\n\n // ensure `/` is added at the beginning if the path is absolute\n const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n\n const stringify = (p: any) =>\n p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n\n const segments = path\n .split(/\\/+/)\n .map((segment, index, array) => {\n const isLastSegment = index === array.length - 1;\n\n // only apply the splat if it's the last segment\n if (isLastSegment && segment === \"*\") {\n const star = \"*\" as PathParam;\n // Apply the splat\n return stringify(params[star]);\n }\n\n const keyMatch = segment.match(/^:([\\w-]+)(\\??)$/);\n if (keyMatch) {\n const [, key, optional] = keyMatch;\n let param = params[key as PathParam];\n invariant(optional === \"?\" || param != null, `Missing \":${key}\" param`);\n return stringify(param);\n }\n\n // Remove any optional markers from optional static segments\n return segment.replace(/\\?$/g, \"\");\n })\n // Remove empty segments\n .filter((segment) => !!segment);\n\n return prefix + segments.join(\"/\");\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/utils/match-path\n */\nexport function matchPath<\n ParamKey extends ParamParseKey,\n Path extends string\n>(\n pattern: PathPattern | Path,\n pathname: string\n): PathMatch | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, compiledParams] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = compiledParams.reduce>(\n (memo, { paramName, isOptional }, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n const value = captureGroups[index];\n if (isOptional && !value) {\n memo[paramName] = undefined;\n } else {\n memo[paramName] = (value || \"\").replace(/%2F/g, \"/\");\n }\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\ntype CompiledPathParam = { paramName: string; isOptional?: boolean };\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, CompiledPathParam[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let params: CompiledPathParam[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^${}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(\n /\\/:([\\w-]+)(\\?)?/g,\n (_: string, paramName: string, isOptional) => {\n params.push({ paramName, isOptional: isOptional != null });\n return isOptional ? \"/?([^\\\\/]+)?\" : \"/([^\\\\/]+)\";\n }\n );\n\n if (path.endsWith(\"*\")) {\n params.push({ paramName: \"*\" });\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex, so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else {\n // Nothing to match for \"\" or \"/\"\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, params];\n}\n\nexport function decodePath(value: string) {\n try {\n return value\n .split(\"/\")\n .map((v) => decodeURIComponent(v).replace(/\\//g, \"%2F\"))\n .join(\"/\");\n } catch (error) {\n warning(\n false,\n `The URL path \"${value}\" could not be decoded because it is is a ` +\n `malformed URL segment. This is probably due to a bad percent ` +\n `encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * @private\n */\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\")\n ? basename.length - 1\n : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(startIndex) || \"/\";\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/utils/resolve-path\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nfunction getInvalidPathError(\n char: string,\n field: string,\n dest: string,\n path: Partial\n) {\n return (\n `Cannot include a '${char}' character in a manually specified ` +\n `\\`to.${field}\\` field [${JSON.stringify(\n path\n )}]. Please separate it out to the ` +\n `\\`to.${dest}\\` field. Alternatively you may provide the full path as ` +\n `a string in and the router will parse it for you.`\n );\n}\n\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * \n * \n * \n *\n * \n * \n * }> // <-- Does not contribute\n * // <-- Does not contribute\n * \n * \n */\nexport function getPathContributingMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[]) {\n return matches.filter(\n (match, index) =>\n index === 0 || (match.route.path && match.route.path.length > 0)\n );\n}\n\n// Return the array of pathnames for the current route matches - used to\n// generate the routePathnames input for resolveTo()\nexport function getResolveToMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[], v7_relativeSplatPath: boolean) {\n let pathMatches = getPathContributingMatches(matches);\n\n // When v7_relativeSplatPath is enabled, use the full pathname for the leaf\n // match so we include splat values for \".\" links. See:\n // https://github.com/remix-run/react-router/issues/11052#issuecomment-1836589329\n if (v7_relativeSplatPath) {\n return pathMatches.map((match, idx) =>\n idx === pathMatches.length - 1 ? match.pathname : match.pathnameBase\n );\n }\n\n return pathMatches.map((match) => match.pathnameBase);\n}\n\n/**\n * @private\n */\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string,\n isPathRelative = false\n): Path {\n let to: Partial;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = { ...toArg };\n\n invariant(\n !to.pathname || !to.pathname.includes(\"?\"),\n getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n );\n invariant(\n !to.pathname || !to.pathname.includes(\"#\"),\n getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n );\n invariant(\n !to.search || !to.search.includes(\"#\"),\n getInvalidPathError(\"#\", \"search\", \"hash\", to)\n );\n }\n\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n\n let from: string;\n\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n // With relative=\"route\" (the default), each leading .. segment means\n // \"go up one route\" instead of \"go up one URL segment\". This is a key\n // difference from how works and a major reason we call this a\n // \"to\" value instead of a \"href\".\n if (!isPathRelative && toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash =\n toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash =\n (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (\n !path.pathname.endsWith(\"/\") &&\n (hasExplicitTrailingSlash || hasCurrentTrailingSlash)\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\n/**\n * @private\n */\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\n/**\n * @private\n */\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\n/**\n * @private\n */\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\n/**\n * @private\n */\nexport const normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\n/**\n * @private\n */\nexport const normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n\nexport type JsonFunction = (\n data: Data,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n */\nexport const json: JsonFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n\n return new Response(JSON.stringify(data), {\n ...responseInit,\n headers,\n });\n};\n\nexport class DataWithResponseInit {\n type: string = \"DataWithResponseInit\";\n data: D;\n init: ResponseInit | null;\n\n constructor(data: D, init?: ResponseInit) {\n this.data = data;\n this.init = init || null;\n }\n}\n\n/**\n * Create \"responses\" that contain `status`/`headers` without forcing\n * serialization into an actual `Response` - used by Remix single fetch\n */\nexport function data(data: D, init?: number | ResponseInit) {\n return new DataWithResponseInit(\n data,\n typeof init === \"number\" ? { status: init } : init\n );\n}\n\nexport interface TrackedPromise extends Promise {\n _tracked?: boolean;\n _data?: any;\n _error?: any;\n}\n\nexport class AbortedDeferredError extends Error {}\n\nexport class DeferredData {\n private pendingKeysSet: Set = new Set();\n private controller: AbortController;\n private abortPromise: Promise;\n private unlistenAbortSignal: () => void;\n private subscribers: Set<(aborted: boolean, settledKey?: string) => void> =\n new Set();\n data: Record;\n init?: ResponseInit;\n deferredKeys: string[] = [];\n\n constructor(data: Record, responseInit?: ResponseInit) {\n invariant(\n data && typeof data === \"object\" && !Array.isArray(data),\n \"defer() only accepts plain objects\"\n );\n\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject: (e: AbortedDeferredError) => void;\n this.abortPromise = new Promise((_, r) => (reject = r));\n this.controller = new AbortController();\n let onAbort = () =>\n reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () =>\n this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n\n this.data = Object.entries(data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: this.trackPromise(key, value),\n }),\n {}\n );\n\n if (this.done) {\n // All incoming values were resolved\n this.unlistenAbortSignal();\n }\n\n this.init = responseInit;\n }\n\n private trackPromise(\n key: string,\n value: Promise | unknown\n ): TrackedPromise | unknown {\n if (!(value instanceof Promise)) {\n return value;\n }\n\n this.deferredKeys.push(key);\n this.pendingKeysSet.add(key);\n\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise: TrackedPromise = Promise.race([value, this.abortPromise]).then(\n (data) => this.onSettle(promise, key, undefined, data as unknown),\n (error) => this.onSettle(promise, key, error as unknown)\n );\n\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n return promise;\n }\n\n private onSettle(\n promise: TrackedPromise,\n key: string,\n error: unknown,\n data?: unknown\n ): unknown {\n if (\n this.controller.signal.aborted &&\n error instanceof AbortedDeferredError\n ) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", { get: () => error });\n return Promise.reject(error);\n }\n\n this.pendingKeysSet.delete(key);\n\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n\n // If the promise was resolved/rejected with undefined, we'll throw an error as you\n // should always resolve with a value or null\n if (error === undefined && data === undefined) {\n let undefinedError = new Error(\n `Deferred data for key \"${key}\" resolved/rejected with \\`undefined\\`, ` +\n `you must resolve/reject with a value or \\`null\\`.`\n );\n Object.defineProperty(promise, \"_error\", { get: () => undefinedError });\n this.emit(false, key);\n return Promise.reject(undefinedError);\n }\n\n if (data === undefined) {\n Object.defineProperty(promise, \"_error\", { get: () => error });\n this.emit(false, key);\n return Promise.reject(error);\n }\n\n Object.defineProperty(promise, \"_data\", { get: () => data });\n this.emit(false, key);\n return data;\n }\n\n private emit(aborted: boolean, settledKey?: string) {\n this.subscribers.forEach((subscriber) => subscriber(aborted, settledKey));\n }\n\n subscribe(fn: (aborted: boolean, settledKey?: string) => void) {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n\n cancel() {\n this.controller.abort();\n this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n this.emit(true);\n }\n\n async resolveData(signal: AbortSignal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise((resolve) => {\n this.subscribe((aborted) => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n\n get done() {\n return this.pendingKeysSet.size === 0;\n }\n\n get unwrappedData() {\n invariant(\n this.data !== null && this.done,\n \"Can only unwrap data on initialized and settled deferreds\"\n );\n\n return Object.entries(this.data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: unwrapTrackedPromise(value),\n }),\n {}\n );\n }\n\n get pendingKeys() {\n return Array.from(this.pendingKeysSet);\n }\n}\n\nfunction isTrackedPromise(value: any): value is TrackedPromise {\n return (\n value instanceof Promise && (value as TrackedPromise)._tracked === true\n );\n}\n\nfunction unwrapTrackedPromise(value: any) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\n\nexport type DeferFunction = (\n data: Record,\n init?: number | ResponseInit\n) => DeferredData;\n\nexport const defer: DeferFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n return new DeferredData(data, responseInit);\n};\n\nexport type RedirectFunction = (\n url: string,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirect: RedirectFunction = (url, init = 302) => {\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = { status: responseInit };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n\n return new Response(null, {\n ...responseInit,\n headers,\n });\n};\n\n/**\n * A redirect response that will force a document reload to the new location.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirectDocument: RedirectFunction = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n return response;\n};\n\n/**\n * A redirect response that will perform a `history.replaceState` instead of a\n * `history.pushState` for client-side navigation redirects.\n * Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const replace: RedirectFunction = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Replace\", \"true\");\n return response;\n};\n\nexport type ErrorResponse = {\n status: number;\n statusText: string;\n data: any;\n};\n\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n *\n * We don't export the class for public use since it's an implementation\n * detail, but we export the interface above so folks can build their own\n * abstractions around instances via isRouteErrorResponse()\n */\nexport class ErrorResponseImpl implements ErrorResponse {\n status: number;\n statusText: string;\n data: any;\n private error?: Error;\n private internal: boolean;\n\n constructor(\n status: number,\n statusText: string | undefined,\n data: any,\n internal = false\n ) {\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data instanceof Error) {\n this.data = data.toString();\n this.error = data;\n } else {\n this.data = data;\n }\n }\n}\n\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nexport function isRouteErrorResponse(error: any): error is ErrorResponse {\n return (\n error != null &&\n typeof error.status === \"number\" &&\n typeof error.statusText === \"string\" &&\n typeof error.internal === \"boolean\" &&\n \"data\" in error\n );\n}\n","import type { History, Location, Path, To } from \"./history\";\nimport {\n Action as HistoryAction,\n createLocation,\n createPath,\n invariant,\n parsePath,\n warning,\n} from \"./history\";\nimport type {\n AgnosticDataRouteMatch,\n AgnosticDataRouteObject,\n DataStrategyMatch,\n AgnosticRouteObject,\n DataResult,\n DataStrategyFunction,\n DataStrategyFunctionArgs,\n DeferredData,\n DeferredResult,\n DetectErrorBoundaryFunction,\n ErrorResult,\n FormEncType,\n FormMethod,\n HTMLFormMethod,\n HandlerResult,\n ImmutableRouteKey,\n MapRoutePropertiesFunction,\n MutationFormMethod,\n RedirectResult,\n RouteData,\n RouteManifest,\n ShouldRevalidateFunctionArgs,\n Submission,\n SuccessResult,\n UIMatch,\n V7_FormMethod,\n V7_MutationFormMethod,\n AgnosticPatchRoutesOnNavigationFunction,\n DataWithResponseInit,\n} from \"./utils\";\nimport {\n ErrorResponseImpl,\n ResultType,\n convertRouteMatchToUiMatch,\n convertRoutesToDataRoutes,\n getPathContributingMatches,\n getResolveToMatches,\n immutableRouteKeys,\n isRouteErrorResponse,\n joinPaths,\n matchRoutes,\n matchRoutesImpl,\n resolveTo,\n stripBasename,\n} from \"./utils\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A Router instance manages all navigation and data loading/mutations\n */\nexport interface Router {\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the basename for the router\n */\n get basename(): RouterInit[\"basename\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the future config for the router\n */\n get future(): FutureConfig;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the current state of the router\n */\n get state(): RouterState;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the routes for this router instance\n */\n get routes(): AgnosticDataRouteObject[];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the window associated with the router\n */\n get window(): RouterInit[\"window\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Initialize the router, including adding history listeners and kicking off\n * initial data fetches. Returns a function to cleanup listeners and abort\n * any in-progress loads\n */\n initialize(): Router;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Subscribe to router.state updates\n *\n * @param fn function to call with the new state\n */\n subscribe(fn: RouterSubscriber): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Enable scroll restoration behavior in the router\n *\n * @param savedScrollPositions Object that will manage positions, in case\n * it's being restored from sessionStorage\n * @param getScrollPosition Function to get the active Y scroll position\n * @param getKey Function to get the key to use for restoration\n */\n enableScrollRestoration(\n savedScrollPositions: Record,\n getScrollPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Navigate forward/backward in the history stack\n * @param to Delta to move in the history stack\n */\n navigate(to: number): Promise;\n\n /**\n * Navigate to the given path\n * @param to Path to navigate to\n * @param opts Navigation options (method, submission, etc.)\n */\n navigate(to: To | null, opts?: RouterNavigateOptions): Promise;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a fetcher load/submission\n *\n * @param key Fetcher key\n * @param routeId Route that owns the fetcher\n * @param href href to fetch\n * @param opts Fetcher options, (method, submission, etc.)\n */\n fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a revalidation of all current route loaders and fetcher loads\n */\n revalidate(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to create an href for the given location\n * @param location\n */\n createHref(location: Location | URL): string;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to URL encode a destination path according to the internal\n * history implementation\n * @param to\n */\n encodeLocation(to: To): Path;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get/create a fetcher for the given key\n * @param key\n */\n getFetcher(key: string): Fetcher;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete the fetcher for a given key\n * @param key\n */\n deleteFetcher(key: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Cleanup listeners and abort any in-progress loads\n */\n dispose(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get a navigation blocker\n * @param key The identifier for the blocker\n * @param fn The blocker function implementation\n */\n getBlocker(key: string, fn: BlockerFunction): Blocker;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete a navigation blocker\n * @param key The identifier for the blocker\n */\n deleteBlocker(key: string): void;\n\n /**\n * @internal\n * PRIVATE DO NOT USE\n *\n * Patch additional children routes into an existing parent route\n * @param routeId The parent route id or a callback function accepting `patch`\n * to perform batch patching\n * @param children The additional children routes\n */\n patchRoutes(routeId: string | null, children: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * HMR needs to pass in-flight route updates to React Router\n * TODO: Replace this with granular route update APIs (addRoute, updateRoute, deleteRoute)\n */\n _internalSetRoutes(routes: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal fetch AbortControllers accessed by unit tests\n */\n _internalFetchControllers: Map;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal pending DeferredData instances accessed by unit tests\n */\n _internalActiveDeferreds: Map;\n}\n\n/**\n * State maintained internally by the router. During a navigation, all states\n * reflect the the \"old\" location unless otherwise noted.\n */\nexport interface RouterState {\n /**\n * The action of the most recent navigation\n */\n historyAction: HistoryAction;\n\n /**\n * The current location reflected by the router\n */\n location: Location;\n\n /**\n * The current set of route matches\n */\n matches: AgnosticDataRouteMatch[];\n\n /**\n * Tracks whether we've completed our initial data load\n */\n initialized: boolean;\n\n /**\n * Current scroll position we should start at for a new view\n * - number -> scroll position to restore to\n * - false -> do not restore scroll at all (used during submissions)\n * - null -> don't have a saved position, scroll to hash or top of page\n */\n restoreScrollPosition: number | false | null;\n\n /**\n * Indicate whether this navigation should skip resetting the scroll position\n * if we are unable to restore the scroll position\n */\n preventScrollReset: boolean;\n\n /**\n * Tracks the state of the current navigation\n */\n navigation: Navigation;\n\n /**\n * Tracks any in-progress revalidations\n */\n revalidation: RevalidationState;\n\n /**\n * Data from the loaders for the current matches\n */\n loaderData: RouteData;\n\n /**\n * Data from the action for the current matches\n */\n actionData: RouteData | null;\n\n /**\n * Errors caught from loaders for the current matches\n */\n errors: RouteData | null;\n\n /**\n * Map of current fetchers\n */\n fetchers: Map;\n\n /**\n * Map of current blockers\n */\n blockers: Map;\n}\n\n/**\n * Data that can be passed into hydrate a Router from SSR\n */\nexport type HydrationState = Partial<\n Pick\n>;\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface FutureConfig {\n v7_fetcherPersist: boolean;\n v7_normalizeFormMethod: boolean;\n v7_partialHydration: boolean;\n v7_prependBasename: boolean;\n v7_relativeSplatPath: boolean;\n v7_skipActionErrorRevalidation: boolean;\n}\n\n/**\n * Initialization options for createRouter\n */\nexport interface RouterInit {\n routes: AgnosticRouteObject[];\n history: History;\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n hydrationData?: HydrationState;\n window?: Window;\n unstable_patchRoutesOnNavigation?: AgnosticPatchRoutesOnNavigationFunction;\n unstable_dataStrategy?: DataStrategyFunction;\n}\n\n/**\n * State returned from a server-side query() call\n */\nexport interface StaticHandlerContext {\n basename: Router[\"basename\"];\n location: RouterState[\"location\"];\n matches: RouterState[\"matches\"];\n loaderData: RouterState[\"loaderData\"];\n actionData: RouterState[\"actionData\"];\n errors: RouterState[\"errors\"];\n statusCode: number;\n loaderHeaders: Record;\n actionHeaders: Record;\n activeDeferreds: Record | null;\n _deepestRenderedBoundaryId?: string | null;\n}\n\n/**\n * A StaticHandler instance manages a singular SSR navigation/fetch event\n */\nexport interface StaticHandler {\n dataRoutes: AgnosticDataRouteObject[];\n query(\n request: Request,\n opts?: {\n requestContext?: unknown;\n skipLoaderErrorBubbling?: boolean;\n unstable_dataStrategy?: DataStrategyFunction;\n }\n ): Promise;\n queryRoute(\n request: Request,\n opts?: {\n routeId?: string;\n requestContext?: unknown;\n unstable_dataStrategy?: DataStrategyFunction;\n }\n ): Promise;\n}\n\ntype ViewTransitionOpts = {\n currentLocation: Location;\n nextLocation: Location;\n};\n\n/**\n * Subscriber function signature for changes to router state\n */\nexport interface RouterSubscriber {\n (\n state: RouterState,\n opts: {\n deletedFetchers: string[];\n unstable_viewTransitionOpts?: ViewTransitionOpts;\n unstable_flushSync: boolean;\n }\n ): void;\n}\n\n/**\n * Function signature for determining the key to be used in scroll restoration\n * for a given location\n */\nexport interface GetScrollRestorationKeyFunction {\n (location: Location, matches: UIMatch[]): string | null;\n}\n\n/**\n * Function signature for determining the current scroll position\n */\nexport interface GetScrollPositionFunction {\n (): number;\n}\n\nexport type RelativeRoutingType = \"route\" | \"path\";\n\n// Allowed for any navigation or fetch\ntype BaseNavigateOrFetchOptions = {\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n unstable_flushSync?: boolean;\n};\n\n// Only allowed for navigations\ntype BaseNavigateOptions = BaseNavigateOrFetchOptions & {\n replace?: boolean;\n state?: any;\n fromRouteId?: string;\n unstable_viewTransition?: boolean;\n};\n\n// Only allowed for submission navigations\ntype BaseSubmissionOptions = {\n formMethod?: HTMLFormMethod;\n formEncType?: FormEncType;\n} & (\n | { formData: FormData; body?: undefined }\n | { formData?: undefined; body: any }\n);\n\n/**\n * Options for a navigate() call for a normal (non-submission) navigation\n */\ntype LinkNavigateOptions = BaseNavigateOptions;\n\n/**\n * Options for a navigate() call for a submission navigation\n */\ntype SubmissionNavigateOptions = BaseNavigateOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to navigate() for a navigation\n */\nexport type RouterNavigateOptions =\n | LinkNavigateOptions\n | SubmissionNavigateOptions;\n\n/**\n * Options for a fetch() load\n */\ntype LoadFetchOptions = BaseNavigateOrFetchOptions;\n\n/**\n * Options for a fetch() submission\n */\ntype SubmitFetchOptions = BaseNavigateOrFetchOptions & BaseSubmissionOptions;\n\n/**\n * Options to pass to fetch()\n */\nexport type RouterFetchOptions = LoadFetchOptions | SubmitFetchOptions;\n\n/**\n * Potential states for state.navigation\n */\nexport type NavigationStates = {\n Idle: {\n state: \"idle\";\n location: undefined;\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n formData: undefined;\n json: undefined;\n text: undefined;\n };\n Loading: {\n state: \"loading\";\n location: Location;\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n text: Submission[\"text\"] | undefined;\n };\n Submitting: {\n state: \"submitting\";\n location: Location;\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n text: Submission[\"text\"];\n };\n};\n\nexport type Navigation = NavigationStates[keyof NavigationStates];\n\nexport type RevalidationState = \"idle\" | \"loading\";\n\n/**\n * Potential states for fetchers\n */\ntype FetcherStates = {\n Idle: {\n state: \"idle\";\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n text: undefined;\n formData: undefined;\n json: undefined;\n data: TData | undefined;\n };\n Loading: {\n state: \"loading\";\n formMethod: Submission[\"formMethod\"] | undefined;\n formAction: Submission[\"formAction\"] | undefined;\n formEncType: Submission[\"formEncType\"] | undefined;\n text: Submission[\"text\"] | undefined;\n formData: Submission[\"formData\"] | undefined;\n json: Submission[\"json\"] | undefined;\n data: TData | undefined;\n };\n Submitting: {\n state: \"submitting\";\n formMethod: Submission[\"formMethod\"];\n formAction: Submission[\"formAction\"];\n formEncType: Submission[\"formEncType\"];\n text: Submission[\"text\"];\n formData: Submission[\"formData\"];\n json: Submission[\"json\"];\n data: TData | undefined;\n };\n};\n\nexport type Fetcher =\n FetcherStates[keyof FetcherStates];\n\ninterface BlockerBlocked {\n state: \"blocked\";\n reset(): void;\n proceed(): void;\n location: Location;\n}\n\ninterface BlockerUnblocked {\n state: \"unblocked\";\n reset: undefined;\n proceed: undefined;\n location: undefined;\n}\n\ninterface BlockerProceeding {\n state: \"proceeding\";\n reset: undefined;\n proceed: undefined;\n location: Location;\n}\n\nexport type Blocker = BlockerUnblocked | BlockerBlocked | BlockerProceeding;\n\nexport type BlockerFunction = (args: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n}) => boolean;\n\ninterface ShortCircuitable {\n /**\n * startNavigation does not need to complete the navigation because we\n * redirected or got interrupted\n */\n shortCircuited?: boolean;\n}\n\ntype PendingActionResult = [string, SuccessResult | ErrorResult];\n\ninterface HandleActionResult extends ShortCircuitable {\n /**\n * Route matches which may have been updated from fog of war discovery\n */\n matches?: RouterState[\"matches\"];\n /**\n * Tuple for the returned or thrown value from the current action. The routeId\n * is the action route for success and the bubbled boundary route for errors.\n */\n pendingActionResult?: PendingActionResult;\n}\n\ninterface HandleLoadersResult extends ShortCircuitable {\n /**\n * Route matches which may have been updated from fog of war discovery\n */\n matches?: RouterState[\"matches\"];\n /**\n * loaderData returned from the current set of loaders\n */\n loaderData?: RouterState[\"loaderData\"];\n /**\n * errors thrown from the current set of loaders\n */\n errors?: RouterState[\"errors\"];\n}\n\n/**\n * Cached info for active fetcher.load() instances so they can participate\n * in revalidation\n */\ninterface FetchLoadMatch {\n routeId: string;\n path: string;\n}\n\n/**\n * Identified fetcher.load() calls that need to be revalidated\n */\ninterface RevalidatingFetcher extends FetchLoadMatch {\n key: string;\n match: AgnosticDataRouteMatch | null;\n matches: AgnosticDataRouteMatch[] | null;\n controller: AbortController | null;\n}\n\nconst validMutationMethodsArr: MutationFormMethod[] = [\n \"post\",\n \"put\",\n \"patch\",\n \"delete\",\n];\nconst validMutationMethods = new Set(\n validMutationMethodsArr\n);\n\nconst validRequestMethodsArr: FormMethod[] = [\n \"get\",\n ...validMutationMethodsArr,\n];\nconst validRequestMethods = new Set(validRequestMethodsArr);\n\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\n\nexport const IDLE_NAVIGATION: NavigationStates[\"Idle\"] = {\n state: \"idle\",\n location: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_FETCHER: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n};\n\nexport const IDLE_BLOCKER: BlockerUnblocked = {\n state: \"unblocked\",\n proceed: undefined,\n reset: undefined,\n location: undefined,\n};\n\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n\nconst defaultMapRouteProperties: MapRoutePropertiesFunction = (route) => ({\n hasErrorBoundary: Boolean(route.hasErrorBoundary),\n});\n\nconst TRANSITIONS_STORAGE_KEY = \"remix-router-transitions\";\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create a router and listen to history POP navigations\n */\nexport function createRouter(init: RouterInit): Router {\n const routerWindow = init.window\n ? init.window\n : typeof window !== \"undefined\"\n ? window\n : undefined;\n const isBrowser =\n typeof routerWindow !== \"undefined\" &&\n typeof routerWindow.document !== \"undefined\" &&\n typeof routerWindow.document.createElement !== \"undefined\";\n const isServer = !isBrowser;\n\n invariant(\n init.routes.length > 0,\n \"You must provide a non-empty routes array to createRouter\"\n );\n\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (init.mapRouteProperties) {\n mapRouteProperties = init.mapRouteProperties;\n } else if (init.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = init.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n\n // Routes keyed by ID\n let manifest: RouteManifest = {};\n // Routes in tree format for matching\n let dataRoutes = convertRoutesToDataRoutes(\n init.routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n let inFlightDataRoutes: AgnosticDataRouteObject[] | undefined;\n let basename = init.basename || \"/\";\n let dataStrategyImpl = init.unstable_dataStrategy || defaultDataStrategy;\n let patchRoutesOnNavigationImpl = init.unstable_patchRoutesOnNavigation;\n\n // Config driven behavior flags\n let future: FutureConfig = {\n v7_fetcherPersist: false,\n v7_normalizeFormMethod: false,\n v7_partialHydration: false,\n v7_prependBasename: false,\n v7_relativeSplatPath: false,\n v7_skipActionErrorRevalidation: false,\n ...init.future,\n };\n // Cleanup function for history\n let unlistenHistory: (() => void) | null = null;\n // Externally-provided functions to call on all state changes\n let subscribers = new Set();\n // FIFO queue of previously discovered routes to prevent re-calling on\n // subsequent navigations to the same path\n let discoveredRoutesMaxSize = 1000;\n let discoveredRoutes = new Set();\n // Externally-provided object to hold scroll restoration locations during routing\n let savedScrollPositions: Record | null = null;\n // Externally-provided function to get scroll restoration keys\n let getScrollRestorationKey: GetScrollRestorationKeyFunction | null = null;\n // Externally-provided function to get current scroll position\n let getScrollPosition: GetScrollPositionFunction | null = null;\n // One-time flag to control the initial hydration scroll restoration. Because\n // we don't get the saved positions from until _after_\n // the initial render, we need to manually trigger a separate updateState to\n // send along the restoreScrollPosition\n // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n // SSR did the initial scroll restoration.\n let initialScrollRestored = init.hydrationData != null;\n\n let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);\n let initialErrors: RouteData | null = null;\n\n if (initialMatches == null && !patchRoutesOnNavigationImpl) {\n // If we do not match a user-provided-route, fall back to the root\n // to allow the error boundary to take over\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname,\n });\n let { matches, route } = getShortCircuitMatches(dataRoutes);\n initialMatches = matches;\n initialErrors = { [route.id]: error };\n }\n\n // In SPA apps, if the user provided a patchRoutesOnNavigation implementation and\n // our initial match is a splat route, clear them out so we run through lazy\n // discovery on hydration in case there's a more accurate lazy route match.\n // In SSR apps (with `hydrationData`), we expect that the server will send\n // up the proper matched routes so we don't want to run lazy discovery on\n // initial hydration and want to hydrate into the splat route.\n if (initialMatches && !init.hydrationData) {\n let fogOfWar = checkFogOfWar(\n initialMatches,\n dataRoutes,\n init.history.location.pathname\n );\n if (fogOfWar.active) {\n initialMatches = null;\n }\n }\n\n let initialized: boolean;\n if (!initialMatches) {\n initialized = false;\n initialMatches = [];\n\n // If partial hydration and fog of war is enabled, we will be running\n // `patchRoutesOnNavigation` during hydration so include any partial matches as\n // the initial matches so we can properly render `HydrateFallback`'s\n if (future.v7_partialHydration) {\n let fogOfWar = checkFogOfWar(\n null,\n dataRoutes,\n init.history.location.pathname\n );\n if (fogOfWar.active && fogOfWar.matches) {\n initialMatches = fogOfWar.matches;\n }\n }\n } else if (initialMatches.some((m) => m.route.lazy)) {\n // All initialMatches need to be loaded before we're ready. If we have lazy\n // functions around still then we'll need to run them in initialize()\n initialized = false;\n } else if (!initialMatches.some((m) => m.route.loader)) {\n // If we've got no loaders to run, then we're good to go\n initialized = true;\n } else if (future.v7_partialHydration) {\n // If partial hydration is enabled, we're initialized so long as we were\n // provided with hydrationData for every route with a loader, and no loaders\n // were marked for explicit hydration\n let loaderData = init.hydrationData ? init.hydrationData.loaderData : null;\n let errors = init.hydrationData ? init.hydrationData.errors : null;\n let isRouteInitialized = (m: AgnosticDataRouteMatch) => {\n // No loader, nothing to initialize\n if (!m.route.loader) {\n return true;\n }\n // Explicitly opting-in to running on hydration\n if (\n typeof m.route.loader === \"function\" &&\n m.route.loader.hydrate === true\n ) {\n return false;\n }\n // Otherwise, initialized if hydrated with data or an error\n return (\n (loaderData && loaderData[m.route.id] !== undefined) ||\n (errors && errors[m.route.id] !== undefined)\n );\n };\n\n // If errors exist, don't consider routes below the boundary\n if (errors) {\n let idx = initialMatches.findIndex(\n (m) => errors![m.route.id] !== undefined\n );\n initialized = initialMatches.slice(0, idx + 1).every(isRouteInitialized);\n } else {\n initialized = initialMatches.every(isRouteInitialized);\n }\n } else {\n // Without partial hydration - we're initialized if we were provided any\n // hydrationData - which is expected to be complete\n initialized = init.hydrationData != null;\n }\n\n let router: Router;\n let state: RouterState = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: (init.hydrationData && init.hydrationData.loaderData) || {},\n actionData: (init.hydrationData && init.hydrationData.actionData) || null,\n errors: (init.hydrationData && init.hydrationData.errors) || initialErrors,\n fetchers: new Map(),\n blockers: new Map(),\n };\n\n // -- Stateful internal variables to manage navigations --\n // Current navigation in progress (to be committed in completeNavigation)\n let pendingAction: HistoryAction = HistoryAction.Pop;\n\n // Should the current navigation prevent the scroll reset if scroll cannot\n // be restored?\n let pendingPreventScrollReset = false;\n\n // AbortController for the active navigation\n let pendingNavigationController: AbortController | null;\n\n // Should the current navigation enable document.startViewTransition?\n let pendingViewTransitionEnabled = false;\n\n // Store applied view transitions so we can apply them on POP\n let appliedViewTransitions: Map> = new Map<\n string,\n Set\n >();\n\n // Cleanup function for persisting applied transitions to sessionStorage\n let removePageHideEventListener: (() => void) | null = null;\n\n // We use this to avoid touching history in completeNavigation if a\n // revalidation is entirely uninterrupted\n let isUninterruptedRevalidation = false;\n\n // Use this internal flag to force revalidation of all loaders:\n // - submissions (completed or interrupted)\n // - useRevalidator()\n // - X-Remix-Revalidate (from redirect)\n let isRevalidationRequired = false;\n\n // Use this internal array to capture routes that require revalidation due\n // to a cancelled deferred on action submission\n let cancelledDeferredRoutes: string[] = [];\n\n // Use this internal array to capture fetcher loads that were cancelled by an\n // action navigation and require revalidation\n let cancelledFetcherLoads: Set = new Set();\n\n // AbortControllers for any in-flight fetchers\n let fetchControllers = new Map();\n\n // Track loads based on the order in which they started\n let incrementingLoadId = 0;\n\n // Track the outstanding pending navigation data load to be compared against\n // the globally incrementing load when a fetcher load lands after a completed\n // navigation\n let pendingNavigationLoadId = -1;\n\n // Fetchers that triggered data reloads as a result of their actions\n let fetchReloadIds = new Map();\n\n // Fetchers that triggered redirect navigations\n let fetchRedirectIds = new Set();\n\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map();\n\n // Ref-count mounted fetchers so we know when it's ok to clean them up\n let activeFetchers = new Map();\n\n // Fetchers that have requested a delete when using v7_fetcherPersist,\n // they'll be officially removed after they return to idle\n let deletedFetchers = new Set();\n\n // Store DeferredData instances for active route matches. When a\n // route loader returns defer() we stick one in here. Then, when a nested\n // promise resolves we update loaderData. If a new navigation starts we\n // cancel active deferreds for eliminated routes.\n let activeDeferreds = new Map();\n\n // Store blocker functions in a separate Map outside of router state since\n // we don't need to update UI state if they change\n let blockerFunctions = new Map();\n\n // Map of pending patchRoutesOnNavigation() promises (keyed by path/matches) so\n // that we only kick them off once for a given combo\n let pendingPatchRoutes = new Map<\n string,\n ReturnType\n >();\n\n // Flag to ignore the next history update, so we can revert the URL change on\n // a POP navigation that was blocked by the user without touching router state\n let ignoreNextHistoryUpdate = false;\n\n // Initialize the router, all side effects should be kicked off from here.\n // Implemented as a Fluent API for ease of:\n // let router = createRouter(init).initialize();\n function initialize() {\n // If history informs us of a POP navigation, start the navigation but do not update\n // state. We'll update our own state once the navigation completes\n unlistenHistory = init.history.listen(\n ({ action: historyAction, location, delta }) => {\n // Ignore this event if it was just us resetting the URL from a\n // blocked POP navigation\n if (ignoreNextHistoryUpdate) {\n ignoreNextHistoryUpdate = false;\n return;\n }\n\n warning(\n blockerFunctions.size === 0 || delta != null,\n \"You are trying to use a blocker on a POP navigation to a location \" +\n \"that was not created by @remix-run/router. This will fail silently in \" +\n \"production. This can happen if you are navigating outside the router \" +\n \"via `window.history.pushState`/`window.location.hash` instead of using \" +\n \"router navigation APIs. This can also happen if you are using \" +\n \"createHashRouter and the user manually changes the URL.\"\n );\n\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction,\n });\n\n if (blockerKey && delta != null) {\n // Restore the URL to match the current UI, but don't update router state\n ignoreNextHistoryUpdate = true;\n init.history.go(delta * -1);\n\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location,\n });\n // Re-do the same POP navigation we just blocked\n init.history.go(delta);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return startNavigation(historyAction, location);\n }\n );\n\n if (isBrowser) {\n // FIXME: This feels gross. How can we cleanup the lines between\n // scrollRestoration/appliedTransitions persistance?\n restoreAppliedTransitions(routerWindow, appliedViewTransitions);\n let _saveAppliedTransitions = () =>\n persistAppliedTransitions(routerWindow, appliedViewTransitions);\n routerWindow.addEventListener(\"pagehide\", _saveAppliedTransitions);\n removePageHideEventListener = () =>\n routerWindow.removeEventListener(\"pagehide\", _saveAppliedTransitions);\n }\n\n // Kick off initial data load if needed. Use Pop to avoid modifying history\n // Note we don't do any handling of lazy here. For SPA's it'll get handled\n // in the normal navigation flow. For SSR it's expected that lazy modules are\n // resolved prior to router creation since we can't go into a fallbackElement\n // UI for SSR'd apps\n if (!state.initialized) {\n startNavigation(HistoryAction.Pop, state.location, {\n initialHydration: true,\n });\n }\n\n return router;\n }\n\n // Clean up a router and it's side effects\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n if (removePageHideEventListener) {\n removePageHideEventListener();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n state.blockers.forEach((_, key) => deleteBlocker(key));\n }\n\n // Subscribe to state updates for the router\n function subscribe(fn: RouterSubscriber) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n\n // Update our state and notify the calling context of the change\n function updateState(\n newState: Partial,\n opts: {\n flushSync?: boolean;\n viewTransitionOpts?: ViewTransitionOpts;\n } = {}\n ): void {\n state = {\n ...state,\n ...newState,\n };\n\n // Prep fetcher cleanup so we can tell the UI which fetcher data entries\n // can be removed\n let completedFetchers: string[] = [];\n let deletedFetchersKeys: string[] = [];\n\n if (future.v7_fetcherPersist) {\n state.fetchers.forEach((fetcher, key) => {\n if (fetcher.state === \"idle\") {\n if (deletedFetchers.has(key)) {\n // Unmounted from the UI and can be totally removed\n deletedFetchersKeys.push(key);\n } else {\n // Returned to idle but still mounted in the UI, so semi-remains for\n // revalidations and such\n completedFetchers.push(key);\n }\n }\n });\n }\n\n // Iterate over a local copy so that if flushSync is used and we end up\n // removing and adding a new subscriber due to the useCallback dependencies,\n // we don't get ourselves into a loop calling the new subscriber immediately\n [...subscribers].forEach((subscriber) =>\n subscriber(state, {\n deletedFetchers: deletedFetchersKeys,\n unstable_viewTransitionOpts: opts.viewTransitionOpts,\n unstable_flushSync: opts.flushSync === true,\n })\n );\n\n // Remove idle fetchers from state since we only care about in-flight fetchers.\n if (future.v7_fetcherPersist) {\n completedFetchers.forEach((key) => state.fetchers.delete(key));\n deletedFetchersKeys.forEach((key) => deleteFetcher(key));\n }\n }\n\n // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n // and setting state.[historyAction/location/matches] to the new route.\n // - Location is a required param\n // - Navigation will always be set to IDLE_NAVIGATION\n // - Can pass any other state in newState\n function completeNavigation(\n location: Location,\n newState: Partial>,\n { flushSync }: { flushSync?: boolean } = {}\n ): void {\n // Deduce if we're in a loading/actionReload state:\n // - We have committed actionData in the store\n // - The current navigation was a mutation submission\n // - We're past the submitting state and into the loading state\n // - The location being loaded is not the result of a redirect\n let isActionReload =\n state.actionData != null &&\n state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n state.navigation.state === \"loading\" &&\n location.state?._isRedirect !== true;\n\n let actionData: RouteData | null;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n // Empty actionData -> clear prior actionData due to an action error\n actionData = null;\n }\n } else if (isActionReload) {\n // Keep the current data if we're wrapping up the action reload\n actionData = state.actionData;\n } else {\n // Clear actionData on any other completed navigations\n actionData = null;\n }\n\n // Always preserve any existing loaderData from re-used routes\n let loaderData = newState.loaderData\n ? mergeLoaderData(\n state.loaderData,\n newState.loaderData,\n newState.matches || [],\n newState.errors\n )\n : state.loaderData;\n\n // On a successful navigation we can assume we got through all blockers\n // so we can start fresh\n let blockers = state.blockers;\n if (blockers.size > 0) {\n blockers = new Map(blockers);\n blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n }\n\n // Always respect the user flag. Otherwise don't reset on mutation\n // submission navigations unless they redirect\n let preventScrollReset =\n pendingPreventScrollReset === true ||\n (state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n location.state?._isRedirect !== true);\n\n // Commit any in-flight routes at the end of the HMR revalidation \"navigation\"\n if (inFlightDataRoutes) {\n dataRoutes = inFlightDataRoutes;\n inFlightDataRoutes = undefined;\n }\n\n if (isUninterruptedRevalidation) {\n // If this was an uninterrupted revalidation then do not touch history\n } else if (pendingAction === HistoryAction.Pop) {\n // Do nothing for POP - URL has already been updated\n } else if (pendingAction === HistoryAction.Push) {\n init.history.push(location, location.state);\n } else if (pendingAction === HistoryAction.Replace) {\n init.history.replace(location, location.state);\n }\n\n let viewTransitionOpts: ViewTransitionOpts | undefined;\n\n // On POP, enable transitions if they were enabled on the original navigation\n if (pendingAction === HistoryAction.Pop) {\n // Forward takes precedence so they behave like the original navigation\n let priorPaths = appliedViewTransitions.get(state.location.pathname);\n if (priorPaths && priorPaths.has(location.pathname)) {\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n } else if (appliedViewTransitions.has(location.pathname)) {\n // If we don't have a previous forward nav, assume we're popping back to\n // the new location and enable if that location previously enabled\n viewTransitionOpts = {\n currentLocation: location,\n nextLocation: state.location,\n };\n }\n } else if (pendingViewTransitionEnabled) {\n // Store the applied transition on PUSH/REPLACE\n let toPaths = appliedViewTransitions.get(state.location.pathname);\n if (toPaths) {\n toPaths.add(location.pathname);\n } else {\n toPaths = new Set([location.pathname]);\n appliedViewTransitions.set(state.location.pathname, toPaths);\n }\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location,\n };\n }\n\n updateState(\n {\n ...newState, // matches, errors, fetchers go through as-is\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition: getSavedScrollPosition(\n location,\n newState.matches || state.matches\n ),\n preventScrollReset,\n blockers,\n },\n {\n viewTransitionOpts,\n flushSync: flushSync === true,\n }\n );\n\n // Reset stateful navigation vars\n pendingAction = HistoryAction.Pop;\n pendingPreventScrollReset = false;\n pendingViewTransitionEnabled = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n }\n\n // Trigger a navigation event, which can either be a numerical POP or a PUSH\n // replace with an optional submission\n async function navigate(\n to: number | To | null,\n opts?: RouterNavigateOptions\n ): Promise {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n to,\n future.v7_relativeSplatPath,\n opts?.fromRouteId,\n opts?.relative\n );\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n false,\n normalizedPath,\n opts\n );\n\n let currentLocation = state.location;\n let nextLocation = createLocation(state.location, path, opts && opts.state);\n\n // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n // URL from window.location, so we need to encode it here so the behavior\n // remains the same as POP and non-data-router usages. new URL() does all\n // the same encoding we'd get from a history.pushState/window.location read\n // without having to touch history\n nextLocation = {\n ...nextLocation,\n ...init.history.encodeLocation(nextLocation),\n };\n\n let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n\n let historyAction = HistoryAction.Push;\n\n if (userReplace === true) {\n historyAction = HistoryAction.Replace;\n } else if (userReplace === false) {\n // no-op\n } else if (\n submission != null &&\n isMutationMethod(submission.formMethod) &&\n submission.formAction === state.location.pathname + state.location.search\n ) {\n // By default on submissions to the current location we REPLACE so that\n // users don't have to double-click the back button to get to the prior\n // location. If the user redirects to a different location from the\n // action/loader this will be ignored and the redirect will be a PUSH\n historyAction = HistoryAction.Replace;\n }\n\n let preventScrollReset =\n opts && \"preventScrollReset\" in opts\n ? opts.preventScrollReset === true\n : undefined;\n\n let flushSync = (opts && opts.unstable_flushSync) === true;\n\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n });\n\n if (blockerKey) {\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location: nextLocation,\n });\n // Send the same navigation through\n navigate(to, opts);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey!, IDLE_BLOCKER);\n updateState({ blockers });\n },\n });\n return;\n }\n\n return await startNavigation(historyAction, nextLocation, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n enableViewTransition: opts && opts.unstable_viewTransition,\n flushSync,\n });\n }\n\n // Revalidate all current loaders. If a navigation is in progress or if this\n // is interrupted by a navigation, allow this to \"succeed\" by calling all\n // loaders during the next loader round\n function revalidate() {\n interruptActiveLoads();\n updateState({ revalidation: \"loading\" });\n\n // If we're currently submitting an action, we don't need to start a new\n // navigation, we'll just let the follow up loader execution call all loaders\n if (state.navigation.state === \"submitting\") {\n return;\n }\n\n // If we're currently in an idle state, start a new navigation for the current\n // action/location and mark it as uninterrupted, which will skip the history\n // update in completeNavigation\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true,\n });\n return;\n }\n\n // Otherwise, if we're currently in a loading state, just start a new\n // navigation to the navigation.location but do not trigger an uninterrupted\n // revalidation so that history correctly updates once the navigation completes\n startNavigation(\n pendingAction || state.historyAction,\n state.navigation.location,\n { overrideNavigation: state.navigation }\n );\n }\n\n // Start a navigation to the given action/location. Can optionally provide a\n // overrideNavigation which will override the normalLoad in the case of a redirect\n // navigation\n async function startNavigation(\n historyAction: HistoryAction,\n location: Location,\n opts?: {\n initialHydration?: boolean;\n submission?: Submission;\n fetcherSubmission?: Submission;\n overrideNavigation?: Navigation;\n pendingError?: ErrorResponseImpl;\n startUninterruptedRevalidation?: boolean;\n preventScrollReset?: boolean;\n replace?: boolean;\n enableViewTransition?: boolean;\n flushSync?: boolean;\n }\n ): Promise {\n // Abort any in-progress navigations and start a new one. Unset any ongoing\n // uninterrupted revalidations unless told otherwise, since we want this\n // new navigation to update history normally\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation =\n (opts && opts.startUninterruptedRevalidation) === true;\n\n // Save the current scroll position every time we start a new navigation,\n // and track whether we should reset scroll on completion\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n pendingViewTransitionEnabled = (opts && opts.enableViewTransition) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = matchRoutes(routesToUse, location, basename);\n let flushSync = (opts && opts.flushSync) === true;\n\n let fogOfWar = checkFogOfWar(matches, routesToUse, location.pathname);\n if (fogOfWar.active && fogOfWar.matches) {\n matches = fogOfWar.matches;\n }\n\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let { error, notFoundMatches, route } = handleNavigational404(\n location.pathname\n );\n completeNavigation(\n location,\n {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n },\n { flushSync }\n );\n return;\n }\n\n // Short circuit if it's only a hash change and not a revalidation or\n // mutation submission.\n //\n // Ignore on initial page loads because since the initial load will always\n // be \"same hash\". For example, on /page#hash and submit a \n // which will default to a navigation to /page\n if (\n state.initialized &&\n !isRevalidationRequired &&\n isHashChangeOnly(state.location, location) &&\n !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))\n ) {\n completeNavigation(location, { matches }, { flushSync });\n return;\n }\n\n // Create a controller/Request for this navigation\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(\n init.history,\n location,\n pendingNavigationController.signal,\n opts && opts.submission\n );\n let pendingActionResult: PendingActionResult | undefined;\n\n if (opts && opts.pendingError) {\n // If we have a pendingError, it means the user attempted a GET submission\n // with binary FormData so assign here and skip to handleLoaders. That\n // way we handle calling loaders above the boundary etc. It's not really\n // different from an actionError in that sense.\n pendingActionResult = [\n findNearestBoundary(matches).route.id,\n { type: ResultType.error, error: opts.pendingError },\n ];\n } else if (\n opts &&\n opts.submission &&\n isMutationMethod(opts.submission.formMethod)\n ) {\n // Call action if we received an action submission\n let actionResult = await handleAction(\n request,\n location,\n opts.submission,\n matches,\n fogOfWar.active,\n { replace: opts.replace, flushSync }\n );\n\n if (actionResult.shortCircuited) {\n return;\n }\n\n // If we received a 404 from handleAction, it's because we couldn't lazily\n // discover the destination route so we don't want to call loaders\n if (actionResult.pendingActionResult) {\n let [routeId, result] = actionResult.pendingActionResult;\n if (\n isErrorResult(result) &&\n isRouteErrorResponse(result.error) &&\n result.error.status === 404\n ) {\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches: actionResult.matches,\n loaderData: {},\n errors: {\n [routeId]: result.error,\n },\n });\n return;\n }\n }\n\n matches = actionResult.matches || matches;\n pendingActionResult = actionResult.pendingActionResult;\n loadingNavigation = getLoadingNavigation(location, opts.submission);\n flushSync = false;\n // No need to do fog of war matching again on loader execution\n fogOfWar.active = false;\n\n // Create a GET request for the loaders\n request = createClientSideRequest(\n init.history,\n request.url,\n request.signal\n );\n }\n\n // Call loaders\n let {\n shortCircuited,\n matches: updatedMatches,\n loaderData,\n errors,\n } = await handleLoaders(\n request,\n location,\n matches,\n fogOfWar.active,\n loadingNavigation,\n opts && opts.submission,\n opts && opts.fetcherSubmission,\n opts && opts.replace,\n opts && opts.initialHydration === true,\n flushSync,\n pendingActionResult\n );\n\n if (shortCircuited) {\n return;\n }\n\n // Clean up now that the action/loaders have completed. Don't clean up if\n // we short circuited because pendingNavigationController will have already\n // been assigned to a new controller for the next navigation\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches: updatedMatches || matches,\n ...getActionDataForCommit(pendingActionResult),\n loaderData,\n errors,\n });\n }\n\n // Call the action matched by the leaf route for this navigation and handle\n // redirects/errors\n async function handleAction(\n request: Request,\n location: Location,\n submission: Submission,\n matches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n opts: { replace?: boolean; flushSync?: boolean } = {}\n ): Promise {\n interruptActiveLoads();\n\n // Put us in a submitting state\n let navigation = getSubmittingNavigation(location, submission);\n updateState({ navigation }, { flushSync: opts.flushSync === true });\n\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n matches,\n location.pathname,\n request.signal\n );\n if (discoverResult.type === \"aborted\") {\n return { shortCircuited: true };\n } else if (discoverResult.type === \"error\") {\n let { boundaryId, error } = handleDiscoverRouteError(\n location.pathname,\n discoverResult\n );\n return {\n matches: discoverResult.partialMatches,\n pendingActionResult: [\n boundaryId,\n {\n type: ResultType.error,\n error,\n },\n ],\n };\n } else if (!discoverResult.matches) {\n let { notFoundMatches, error, route } = handleNavigational404(\n location.pathname\n );\n return {\n matches: notFoundMatches,\n pendingActionResult: [\n route.id,\n {\n type: ResultType.error,\n error,\n },\n ],\n };\n } else {\n matches = discoverResult.matches;\n }\n }\n\n // Call our action and get the result\n let result: DataResult;\n let actionMatch = getTargetMatch(matches, location);\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n result = {\n type: ResultType.error,\n error: getInternalRouterError(405, {\n method: request.method,\n pathname: location.pathname,\n routeId: actionMatch.route.id,\n }),\n };\n } else {\n let results = await callDataStrategy(\n \"action\",\n request,\n [actionMatch],\n matches\n );\n result = results[0];\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n }\n\n if (isRedirectResult(result)) {\n let replace: boolean;\n if (opts && opts.replace != null) {\n replace = opts.replace;\n } else {\n // If the user didn't explicity indicate replace behavior, replace if\n // we redirected to the exact same location we're currently at to avoid\n // double back-buttons\n let location = normalizeRedirectLocation(\n result.response.headers.get(\"Location\")!,\n new URL(request.url),\n basename\n );\n replace = location === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(request, result, {\n submission,\n replace,\n });\n return { shortCircuited: true };\n }\n\n if (isDeferredResult(result)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n\n // By default, all submissions to the current location are REPLACE\n // navigations, but if the action threw an error that'll be rendered in\n // an errorElement, we fall back to PUSH so that the user can use the\n // back button to get back to the pre-submission form location to try\n // again\n if ((opts && opts.replace) !== true) {\n pendingAction = HistoryAction.Push;\n }\n\n return {\n matches,\n pendingActionResult: [boundaryMatch.route.id, result],\n };\n }\n\n return {\n matches,\n pendingActionResult: [actionMatch.route.id, result],\n };\n }\n\n // Call all applicable loaders for the given matches, handling redirects,\n // errors, etc.\n async function handleLoaders(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n overrideNavigation?: Navigation,\n submission?: Submission,\n fetcherSubmission?: Submission,\n replace?: boolean,\n initialHydration?: boolean,\n flushSync?: boolean,\n pendingActionResult?: PendingActionResult\n ): Promise {\n // Figure out the right navigation we want to use for data loading\n let loadingNavigation =\n overrideNavigation || getLoadingNavigation(location, submission);\n\n // If this was a redirect from an action we don't have a \"submission\" but\n // we have it on the loading navigation so use that if available\n let activeSubmission =\n submission ||\n fetcherSubmission ||\n getSubmissionFromNavigation(loadingNavigation);\n\n // If this is an uninterrupted revalidation, we remain in our current idle\n // state. If not, we need to switch to our loading state and load data,\n // preserving any new action data or existing action data (in the case of\n // a revalidation interrupting an actionReload)\n // If we have partialHydration enabled, then don't update the state for the\n // initial data load since it's not a \"navigation\"\n let shouldUpdateNavigationState =\n !isUninterruptedRevalidation &&\n (!future.v7_partialHydration || !initialHydration);\n\n // When fog of war is enabled, we enter our `loading` state earlier so we\n // can discover new routes during the `loading` state. We skip this if\n // we've already run actions since we would have done our matching already.\n // If the children() function threw then, we want to proceed with the\n // partial matches it discovered.\n if (isFogOfWar) {\n if (shouldUpdateNavigationState) {\n let actionData = getUpdatedActionData(pendingActionResult);\n updateState(\n {\n navigation: loadingNavigation,\n ...(actionData !== undefined ? { actionData } : {}),\n },\n {\n flushSync,\n }\n );\n }\n\n let discoverResult = await discoverRoutes(\n matches,\n location.pathname,\n request.signal\n );\n\n if (discoverResult.type === \"aborted\") {\n return { shortCircuited: true };\n } else if (discoverResult.type === \"error\") {\n let { boundaryId, error } = handleDiscoverRouteError(\n location.pathname,\n discoverResult\n );\n return {\n matches: discoverResult.partialMatches,\n loaderData: {},\n errors: {\n [boundaryId]: error,\n },\n };\n } else if (!discoverResult.matches) {\n let { error, notFoundMatches, route } = handleNavigational404(\n location.pathname\n );\n return {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n };\n } else {\n matches = discoverResult.matches;\n }\n }\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n activeSubmission,\n location,\n future.v7_partialHydration && initialHydration === true,\n future.v7_skipActionErrorRevalidation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n deletedFetchers,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n pendingActionResult\n );\n\n // Cancel pending deferreds for no-longer-matched routes or routes we're\n // about to reload. Note that if this is an action reload we would have\n // already cancelled all pending deferreds so this would be a no-op\n cancelActiveDeferreds(\n (routeId) =>\n !(matches && matches.some((m) => m.route.id === routeId)) ||\n (matchesToLoad && matchesToLoad.some((m) => m.route.id === routeId))\n );\n\n pendingNavigationLoadId = ++incrementingLoadId;\n\n // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n let updatedFetchers = markFetchRedirectsDone();\n completeNavigation(\n location,\n {\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors:\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? { [pendingActionResult[0]]: pendingActionResult[1].error }\n : null,\n ...getActionDataForCommit(pendingActionResult),\n ...(updatedFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n },\n { flushSync }\n );\n return { shortCircuited: true };\n }\n\n if (shouldUpdateNavigationState) {\n let updates: Partial = {};\n if (!isFogOfWar) {\n // Only update navigation/actionNData if we didn't already do it above\n updates.navigation = loadingNavigation;\n let actionData = getUpdatedActionData(pendingActionResult);\n if (actionData !== undefined) {\n updates.actionData = actionData;\n }\n }\n if (revalidatingFetchers.length > 0) {\n updates.fetchers = getUpdatedRevalidatingFetchers(revalidatingFetchers);\n }\n updateState(updates, { flushSync });\n }\n\n revalidatingFetchers.forEach((rf) => {\n if (fetchControllers.has(rf.key)) {\n abortFetcher(rf.key);\n }\n if (rf.controller) {\n // Fetchers use an independent AbortController so that aborting a fetcher\n // (via deleteFetcher) does not abort the triggering navigation that\n // triggered the revalidation\n fetchControllers.set(rf.key, rf.controller);\n }\n });\n\n // Proxy navigation abort through to revalidation fetchers\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((f) => abortFetcher(f.key));\n if (pendingNavigationController) {\n pendingNavigationController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n\n let { loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n request\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n\n // Clean up _after_ loaders have completed. Don't clean up if we short\n // circuited because fetchControllers would have been aborted and\n // reassigned to new controllers for the next navigation\n if (pendingNavigationController) {\n pendingNavigationController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n revalidatingFetchers.forEach((rf) => fetchControllers.delete(rf.key));\n\n // If any loaders returned a redirect Response, start a new REPLACE navigation\n let redirect = findRedirect([...loaderResults, ...fetcherResults]);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey =\n revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n await startRedirectNavigation(request, redirect.result, {\n replace,\n });\n return { shortCircuited: true };\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n matchesToLoad,\n loaderResults,\n pendingActionResult,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Wire up subscribers to update loaderData as promises settle\n activeDeferreds.forEach((deferredData, routeId) => {\n deferredData.subscribe((aborted) => {\n // Note: No need to updateState here since the TrackedPromise on\n // loaderData is stable across resolve/reject\n // Remove this instance if we were aborted or if promises have settled\n if (aborted || deferredData.done) {\n activeDeferreds.delete(routeId);\n }\n });\n });\n\n // During partial hydration, preserve SSR errors for routes that don't re-run\n if (future.v7_partialHydration && initialHydration && state.errors) {\n Object.entries(state.errors)\n .filter(([id]) => !matchesToLoad.some((m) => m.route.id === id))\n .forEach(([routeId, error]) => {\n errors = Object.assign(errors || {}, { [routeId]: error });\n });\n }\n\n let updatedFetchers = markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n let shouldUpdateFetchers =\n updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n\n return {\n matches,\n loaderData,\n errors,\n ...(shouldUpdateFetchers ? { fetchers: new Map(state.fetchers) } : {}),\n };\n }\n\n function getUpdatedActionData(\n pendingActionResult: PendingActionResult | undefined\n ): Record | null | undefined {\n if (pendingActionResult && !isErrorResult(pendingActionResult[1])) {\n // This is cast to `any` currently because `RouteData`uses any and it\n // would be a breaking change to use any.\n // TODO: v7 - change `RouteData` to use `unknown` instead of `any`\n return {\n [pendingActionResult[0]]: pendingActionResult[1].data as any,\n };\n } else if (state.actionData) {\n if (Object.keys(state.actionData).length === 0) {\n return null;\n } else {\n return state.actionData;\n }\n }\n }\n\n function getUpdatedRevalidatingFetchers(\n revalidatingFetchers: RevalidatingFetcher[]\n ) {\n revalidatingFetchers.forEach((rf) => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n fetcher ? fetcher.data : undefined\n );\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n return new Map(state.fetchers);\n }\n\n // Trigger a fetcher load/submit for the given fetcher key\n function fetch(\n key: string,\n routeId: string,\n href: string | null,\n opts?: RouterFetchOptions\n ) {\n if (isServer) {\n throw new Error(\n \"router.fetch() was called during the server render, but it shouldn't be. \" +\n \"You are likely calling a useFetcher() method in the body of your component. \" +\n \"Try moving it to a useEffect or a callback.\"\n );\n }\n\n if (fetchControllers.has(key)) abortFetcher(key);\n let flushSync = (opts && opts.unstable_flushSync) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n future.v7_prependBasename,\n href,\n future.v7_relativeSplatPath,\n routeId,\n opts?.relative\n );\n let matches = matchRoutes(routesToUse, normalizedPath, basename);\n\n let fogOfWar = checkFogOfWar(matches, routesToUse, normalizedPath);\n if (fogOfWar.active && fogOfWar.matches) {\n matches = fogOfWar.matches;\n }\n\n if (!matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: normalizedPath }),\n { flushSync }\n );\n return;\n }\n\n let { path, submission, error } = normalizeNavigateOptions(\n future.v7_normalizeFormMethod,\n true,\n normalizedPath,\n opts\n );\n\n if (error) {\n setFetcherError(key, routeId, error, { flushSync });\n return;\n }\n\n let match = getTargetMatch(matches, path);\n\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n if (submission && isMutationMethod(submission.formMethod)) {\n handleFetcherAction(\n key,\n routeId,\n path,\n match,\n matches,\n fogOfWar.active,\n flushSync,\n submission\n );\n return;\n }\n\n // Store off the match so we can call it's shouldRevalidate on subsequent\n // revalidations\n fetchLoadMatches.set(key, { routeId, path });\n handleFetcherLoader(\n key,\n routeId,\n path,\n match,\n matches,\n fogOfWar.active,\n flushSync,\n submission\n );\n }\n\n // Call the action for the matched fetcher.submit(), and then handle redirects,\n // errors, and revalidation\n async function handleFetcherAction(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n requestMatches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n flushSync: boolean,\n submission: Submission\n ) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n\n function detectAndHandle405Error(m: AgnosticDataRouteMatch) {\n if (!m.route.action && !m.route.lazy) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId: routeId,\n });\n setFetcherError(key, routeId, error, { flushSync });\n return true;\n }\n return false;\n }\n\n if (!isFogOfWar && detectAndHandle405Error(match)) {\n return;\n }\n\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(key, getSubmittingFetcher(submission, existingFetcher), {\n flushSync,\n });\n\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal,\n submission\n );\n\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n requestMatches,\n path,\n fetchRequest.signal\n );\n\n if (discoverResult.type === \"aborted\") {\n return;\n } else if (discoverResult.type === \"error\") {\n let { error } = handleDiscoverRouteError(path, discoverResult);\n setFetcherError(key, routeId, error, { flushSync });\n return;\n } else if (!discoverResult.matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: path }),\n { flushSync }\n );\n return;\n } else {\n requestMatches = discoverResult.matches;\n match = getTargetMatch(requestMatches, path);\n\n if (detectAndHandle405Error(match)) {\n return;\n }\n }\n }\n\n // Call the action for the fetcher\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let actionResults = await callDataStrategy(\n \"action\",\n fetchRequest,\n [match],\n requestMatches\n );\n let actionResult = actionResults[0];\n\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by our own fetcher\n // re-submit which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n\n // When using v7_fetcherPersist, we don't want errors bubbling up to the UI\n // or redirects processed for unmounted fetchers so we just revert them to\n // idle\n if (future.v7_fetcherPersist && deletedFetchers.has(key)) {\n if (isRedirectResult(actionResult) || isErrorResult(actionResult)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n // Let SuccessResult's fall through for revalidation\n } else {\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our action started, so that\n // should take precedence over this redirect navigation. We already\n // set isRevalidationRequired so all loaders for the new route should\n // fire unless opted out via shouldRevalidate\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n updateFetcherState(key, getLoadingFetcher(submission));\n return startRedirectNavigation(fetchRequest, actionResult, {\n fetcherSubmission: submission,\n });\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n }\n\n if (isDeferredResult(actionResult)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n // Start the data load for current matches, or the next location if we're\n // in the middle of a navigation\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(\n init.history,\n nextLocation,\n abortController.signal\n );\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches =\n state.navigation.state !== \"idle\"\n ? matchRoutes(routesToUse, state.navigation.location, basename)\n : state.matches;\n\n invariant(matches, \"Didn't find any matches after fetcher action\");\n\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n\n let loadFetcher = getLoadingFetcher(submission, actionResult.data);\n state.fetchers.set(key, loadFetcher);\n\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n submission,\n nextLocation,\n false,\n future.v7_skipActionErrorRevalidation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n deletedFetchers,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n [match.route.id, actionResult]\n );\n\n // Put all revalidating fetchers into the loading state, except for the\n // current fetcher which we want to keep in it's current loading state which\n // contains it's action submission info + action data\n revalidatingFetchers\n .filter((rf) => rf.key !== key)\n .forEach((rf) => {\n let staleKey = rf.key;\n let existingFetcher = state.fetchers.get(staleKey);\n let revalidatingFetcher = getLoadingFetcher(\n undefined,\n existingFetcher ? existingFetcher.data : undefined\n );\n state.fetchers.set(staleKey, revalidatingFetcher);\n if (fetchControllers.has(staleKey)) {\n abortFetcher(staleKey);\n }\n if (rf.controller) {\n fetchControllers.set(staleKey, rf.controller);\n }\n });\n\n updateState({ fetchers: new Map(state.fetchers) });\n\n let abortPendingFetchRevalidations = () =>\n revalidatingFetchers.forEach((rf) => abortFetcher(rf.key));\n\n abortController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n let { loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n revalidationRequest\n );\n\n if (abortController.signal.aborted) {\n return;\n }\n\n abortController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach((r) => fetchControllers.delete(r.key));\n\n let redirect = findRedirect([...loaderResults, ...fetcherResults]);\n if (redirect) {\n if (redirect.idx >= matchesToLoad.length) {\n // If this redirect came from a fetcher make sure we mark it in\n // fetchRedirectIds so it doesn't get revalidated on the next set of\n // loader executions\n let fetcherKey =\n revalidatingFetchers[redirect.idx - matchesToLoad.length].key;\n fetchRedirectIds.add(fetcherKey);\n }\n return startRedirectNavigation(revalidationRequest, redirect.result);\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n state.matches,\n matchesToLoad,\n loaderResults,\n undefined,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Since we let revalidations complete even if the submitting fetcher was\n // deleted, only put it back to idle if it hasn't been deleted\n if (state.fetchers.has(key)) {\n let doneFetcher = getDoneFetcher(actionResult.data);\n state.fetchers.set(key, doneFetcher);\n }\n\n abortStaleFetchLoads(loadId);\n\n // If we are currently in a navigation loading state and this fetcher is\n // more recent than the navigation, we want the newer data so abort the\n // navigation and complete it with the fetcher data\n if (\n state.navigation.state === \"loading\" &&\n loadId > pendingNavigationLoadId\n ) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers),\n });\n } else {\n // otherwise just update with the fetcher data, preserving any existing\n // loaderData for loaders that did not need to reload. We have to\n // manually merge here since we aren't going through completeNavigation\n updateState({\n errors,\n loaderData: mergeLoaderData(\n state.loaderData,\n loaderData,\n matches,\n errors\n ),\n fetchers: new Map(state.fetchers),\n });\n isRevalidationRequired = false;\n }\n }\n\n // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n async function handleFetcherLoader(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n isFogOfWar: boolean,\n flushSync: boolean,\n submission?: Submission\n ) {\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(\n key,\n getLoadingFetcher(\n submission,\n existingFetcher ? existingFetcher.data : undefined\n ),\n { flushSync }\n );\n\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal\n );\n\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n matches,\n path,\n fetchRequest.signal\n );\n\n if (discoverResult.type === \"aborted\") {\n return;\n } else if (discoverResult.type === \"error\") {\n let { error } = handleDiscoverRouteError(path, discoverResult);\n setFetcherError(key, routeId, error, { flushSync });\n return;\n } else if (!discoverResult.matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: path }),\n { flushSync }\n );\n return;\n } else {\n matches = discoverResult.matches;\n match = getTargetMatch(matches, path);\n }\n }\n\n // Call the loader for this fetcher route match\n fetchControllers.set(key, abortController);\n\n let originatingLoadId = incrementingLoadId;\n let results = await callDataStrategy(\n \"loader\",\n fetchRequest,\n [match],\n matches\n );\n let result = results[0];\n\n // Deferred isn't supported for fetcher loads, await everything and treat it\n // as a normal load. resolveDeferredData will return undefined if this\n // fetcher gets aborted, so we just leave result untouched and short circuit\n // below if that happens\n if (isDeferredResult(result)) {\n result =\n (await resolveDeferredData(result, fetchRequest.signal, true)) ||\n result;\n }\n\n // We can delete this so long as we weren't aborted by our our own fetcher\n // re-load which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n\n if (fetchRequest.signal.aborted) {\n return;\n }\n\n // We don't want errors bubbling up or redirects followed for unmounted\n // fetchers, so short circuit here if it was removed from the UI\n if (deletedFetchers.has(key)) {\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n }\n\n // If the loader threw a redirect Response, start a new REPLACE navigation\n if (isRedirectResult(result)) {\n if (pendingNavigationLoadId > originatingLoadId) {\n // A new navigation was kicked off after our loader started, so that\n // should take precedence over this redirect navigation\n updateFetcherState(key, getDoneFetcher(undefined));\n return;\n } else {\n fetchRedirectIds.add(key);\n await startRedirectNavigation(fetchRequest, result);\n return;\n }\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n setFetcherError(key, routeId, result.error);\n return;\n }\n\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n\n // Put the fetcher back into an idle state\n updateFetcherState(key, getDoneFetcher(result.data));\n }\n\n /**\n * Utility function to handle redirects returned from an action or loader.\n * Normally, a redirect \"replaces\" the navigation that triggered it. So, for\n * example:\n *\n * - user is on /a\n * - user clicks a link to /b\n * - loader for /b redirects to /c\n *\n * In a non-JS app the browser would track the in-flight navigation to /b and\n * then replace it with /c when it encountered the redirect response. In\n * the end it would only ever update the URL bar with /c.\n *\n * In client-side routing using pushState/replaceState, we aim to emulate\n * this behavior and we also do not update history until the end of the\n * navigation (including processed redirects). This means that we never\n * actually touch history until we've processed redirects, so we just use\n * the history action from the original navigation (PUSH or REPLACE).\n */\n async function startRedirectNavigation(\n request: Request,\n redirect: RedirectResult,\n {\n submission,\n fetcherSubmission,\n replace,\n }: {\n submission?: Submission;\n fetcherSubmission?: Submission;\n replace?: boolean;\n } = {}\n ) {\n if (redirect.response.headers.has(\"X-Remix-Revalidate\")) {\n isRevalidationRequired = true;\n }\n\n let location = redirect.response.headers.get(\"Location\");\n invariant(location, \"Expected a Location header on the redirect Response\");\n location = normalizeRedirectLocation(\n location,\n new URL(request.url),\n basename\n );\n let redirectLocation = createLocation(state.location, location, {\n _isRedirect: true,\n });\n\n if (isBrowser) {\n let isDocumentReload = false;\n\n if (redirect.response.headers.has(\"X-Remix-Reload-Document\")) {\n // Hard reload if the response contained X-Remix-Reload-Document\n isDocumentReload = true;\n } else if (ABSOLUTE_URL_REGEX.test(location)) {\n const url = init.history.createURL(location);\n isDocumentReload =\n // Hard reload if it's an absolute URL to a new origin\n url.origin !== routerWindow.location.origin ||\n // Hard reload if it's an absolute URL that does not match our basename\n stripBasename(url.pathname, basename) == null;\n }\n\n if (isDocumentReload) {\n if (replace) {\n routerWindow.location.replace(location);\n } else {\n routerWindow.location.assign(location);\n }\n return;\n }\n }\n\n // There's no need to abort on redirects, since we don't detect the\n // redirect until the action/loaders have settled\n pendingNavigationController = null;\n\n let redirectHistoryAction =\n replace === true || redirect.response.headers.has(\"X-Remix-Replace\")\n ? HistoryAction.Replace\n : HistoryAction.Push;\n\n // Use the incoming submission if provided, fallback on the active one in\n // state.navigation\n let { formMethod, formAction, formEncType } = state.navigation;\n if (\n !submission &&\n !fetcherSubmission &&\n formMethod &&\n formAction &&\n formEncType\n ) {\n submission = getSubmissionFromNavigation(state.navigation);\n }\n\n // If this was a 307/308 submission we want to preserve the HTTP method and\n // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n // redirected location\n let activeSubmission = submission || fetcherSubmission;\n if (\n redirectPreserveMethodStatusCodes.has(redirect.response.status) &&\n activeSubmission &&\n isMutationMethod(activeSubmission.formMethod)\n ) {\n await startNavigation(redirectHistoryAction, redirectLocation, {\n submission: {\n ...activeSubmission,\n formAction: location,\n },\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n } else {\n // If we have a navigation submission, we will preserve it through the\n // redirect navigation\n let overrideNavigation = getLoadingNavigation(\n redirectLocation,\n submission\n );\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation,\n // Send fetcher submissions through for shouldRevalidate\n fetcherSubmission,\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n }\n }\n\n // Utility wrapper for calling dataStrategy client-side without having to\n // pass around the manifest, mapRouteProperties, etc.\n async function callDataStrategy(\n type: \"loader\" | \"action\",\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[]\n ): Promise {\n try {\n let results = await callDataStrategyImpl(\n dataStrategyImpl,\n type,\n request,\n matchesToLoad,\n matches,\n manifest,\n mapRouteProperties\n );\n\n return await Promise.all(\n results.map((result, i) => {\n if (isRedirectHandlerResult(result)) {\n let response = result.result as Response;\n return {\n type: ResultType.redirect,\n response: normalizeRelativeRoutingRedirectResponse(\n response,\n request,\n matchesToLoad[i].route.id,\n matches,\n basename,\n future.v7_relativeSplatPath\n ),\n };\n }\n\n return convertHandlerResultToDataResult(result);\n })\n );\n } catch (e) {\n // If the outer dataStrategy method throws, just return the error for all\n // matches - and it'll naturally bubble to the root\n return matchesToLoad.map(() => ({\n type: ResultType.error,\n error: e,\n }));\n }\n }\n\n async function callLoadersAndMaybeResolveData(\n currentMatches: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n fetchersToLoad: RevalidatingFetcher[],\n request: Request\n ) {\n let [loaderResults, ...fetcherResults] = await Promise.all([\n matchesToLoad.length\n ? callDataStrategy(\"loader\", request, matchesToLoad, matches)\n : [],\n ...fetchersToLoad.map((f) => {\n if (f.matches && f.match && f.controller) {\n let fetcherRequest = createClientSideRequest(\n init.history,\n f.path,\n f.controller.signal\n );\n return callDataStrategy(\n \"loader\",\n fetcherRequest,\n [f.match],\n f.matches\n ).then((r) => r[0]);\n } else {\n return Promise.resolve({\n type: ResultType.error,\n error: getInternalRouterError(404, {\n pathname: f.path,\n }),\n });\n }\n }),\n ]);\n\n await Promise.all([\n resolveDeferredResults(\n currentMatches,\n matchesToLoad,\n loaderResults,\n loaderResults.map(() => request.signal),\n false,\n state.loaderData\n ),\n resolveDeferredResults(\n currentMatches,\n fetchersToLoad.map((f) => f.match),\n fetcherResults,\n fetchersToLoad.map((f) => (f.controller ? f.controller.signal : null)),\n true\n ),\n ]);\n\n return {\n loaderResults,\n fetcherResults,\n };\n }\n\n function interruptActiveLoads() {\n // Every interruption triggers a revalidation\n isRevalidationRequired = true;\n\n // Cancel pending route-level deferreds and mark cancelled routes for\n // revalidation\n cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n\n // Abort in-flight fetcher loads\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.add(key);\n abortFetcher(key);\n }\n });\n }\n\n function updateFetcherState(\n key: string,\n fetcher: Fetcher,\n opts: { flushSync?: boolean } = {}\n ) {\n state.fetchers.set(key, fetcher);\n updateState(\n { fetchers: new Map(state.fetchers) },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n\n function setFetcherError(\n key: string,\n routeId: string,\n error: any,\n opts: { flushSync?: boolean } = {}\n ) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState(\n {\n errors: {\n [boundaryMatch.route.id]: error,\n },\n fetchers: new Map(state.fetchers),\n },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n\n function getFetcher(key: string): Fetcher {\n if (future.v7_fetcherPersist) {\n activeFetchers.set(key, (activeFetchers.get(key) || 0) + 1);\n // If this fetcher was previously marked for deletion, unmark it since we\n // have a new instance\n if (deletedFetchers.has(key)) {\n deletedFetchers.delete(key);\n }\n }\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n\n function deleteFetcher(key: string): void {\n let fetcher = state.fetchers.get(key);\n // Don't abort the controller if this is a deletion of a fetcher.submit()\n // in it's loading phase since - we don't want to abort the corresponding\n // revalidation and want them to complete and land\n if (\n fetchControllers.has(key) &&\n !(fetcher && fetcher.state === \"loading\" && fetchReloadIds.has(key))\n ) {\n abortFetcher(key);\n }\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n deletedFetchers.delete(key);\n cancelledFetcherLoads.delete(key);\n state.fetchers.delete(key);\n }\n\n function deleteFetcherAndUpdateState(key: string): void {\n if (future.v7_fetcherPersist) {\n let count = (activeFetchers.get(key) || 0) - 1;\n if (count <= 0) {\n activeFetchers.delete(key);\n deletedFetchers.add(key);\n } else {\n activeFetchers.set(key, count);\n }\n } else {\n deleteFetcher(key);\n }\n updateState({ fetchers: new Map(state.fetchers) });\n }\n\n function abortFetcher(key: string) {\n let controller = fetchControllers.get(key);\n invariant(controller, `Expected fetch controller: ${key}`);\n controller.abort();\n fetchControllers.delete(key);\n }\n\n function markFetchersDone(keys: string[]) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher = getDoneFetcher(fetcher.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n function markFetchRedirectsDone(): boolean {\n let doneKeys = [];\n let updatedFetchers = false;\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n updatedFetchers = true;\n }\n }\n markFetchersDone(doneKeys);\n return updatedFetchers;\n }\n\n function abortStaleFetchLoads(landedId: number): boolean {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n\n function getBlocker(key: string, fn: BlockerFunction) {\n let blocker: Blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n if (blockerFunctions.get(key) !== fn) {\n blockerFunctions.set(key, fn);\n }\n\n return blocker;\n }\n\n function deleteBlocker(key: string) {\n state.blockers.delete(key);\n blockerFunctions.delete(key);\n }\n\n // Utility function to update blockers, ensuring valid state transitions\n function updateBlocker(key: string, newBlocker: Blocker) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n // Poor mans state machine :)\n // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM\n invariant(\n (blocker.state === \"unblocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"proceeding\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"unblocked\") ||\n (blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\"),\n `Invalid blocker state transition: ${blocker.state} -> ${newBlocker.state}`\n );\n\n let blockers = new Map(state.blockers);\n blockers.set(key, newBlocker);\n updateState({ blockers });\n }\n\n function shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n }: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n }): string | undefined {\n if (blockerFunctions.size === 0) {\n return;\n }\n\n // We ony support a single active blocker at the moment since we don't have\n // any compelling use cases for multi-blocker yet\n if (blockerFunctions.size > 1) {\n warning(false, \"A router only supports one blocker at a time\");\n }\n\n let entries = Array.from(blockerFunctions.entries());\n let [blockerKey, blockerFunction] = entries[entries.length - 1];\n let blocker = state.blockers.get(blockerKey);\n\n if (blocker && blocker.state === \"proceeding\") {\n // If the blocker is currently proceeding, we don't need to re-check\n // it and can let this navigation continue\n return;\n }\n\n // At this point, we know we're unblocked/blocked so we need to check the\n // user-provided blocker function\n if (blockerFunction({ currentLocation, nextLocation, historyAction })) {\n return blockerKey;\n }\n }\n\n function handleNavigational404(pathname: string) {\n let error = getInternalRouterError(404, { pathname });\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let { matches, route } = getShortCircuitMatches(routesToUse);\n\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n\n return { notFoundMatches: matches, route, error };\n }\n\n function handleDiscoverRouteError(\n pathname: string,\n discoverResult: DiscoverRoutesErrorResult\n ) {\n return {\n boundaryId: findNearestBoundary(discoverResult.partialMatches).route.id,\n error: getInternalRouterError(400, {\n type: \"route-discovery\",\n pathname,\n message:\n discoverResult.error != null && \"message\" in discoverResult.error\n ? discoverResult.error\n : String(discoverResult.error),\n }),\n };\n }\n\n function cancelActiveDeferreds(\n predicate?: (routeId: string) => boolean\n ): string[] {\n let cancelledRouteIds: string[] = [];\n activeDeferreds.forEach((dfd, routeId) => {\n if (!predicate || predicate(routeId)) {\n // Cancel the deferred - but do not remove from activeDeferreds here -\n // we rely on the subscribers to do that so our tests can assert proper\n // cleanup via _internalActiveDeferreds\n dfd.cancel();\n cancelledRouteIds.push(routeId);\n activeDeferreds.delete(routeId);\n }\n });\n return cancelledRouteIds;\n }\n\n // Opt in to capturing and reporting scroll positions during navigations,\n // used by the component\n function enableScrollRestoration(\n positions: Record,\n getPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ) {\n savedScrollPositions = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey = getKey || null;\n\n // Perform initial hydration scroll restoration, since we miss the boat on\n // the initial updateState() because we've not yet rendered \n // and therefore have no savedScrollPositions available\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({ restoreScrollPosition: y });\n }\n }\n\n return () => {\n savedScrollPositions = null;\n getScrollPosition = null;\n getScrollRestorationKey = null;\n };\n }\n\n function getScrollKey(location: Location, matches: AgnosticDataRouteMatch[]) {\n if (getScrollRestorationKey) {\n let key = getScrollRestorationKey(\n location,\n matches.map((m) => convertRouteMatchToUiMatch(m, state.loaderData))\n );\n return key || location.key;\n }\n return location.key;\n }\n\n function saveScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): void {\n if (savedScrollPositions && getScrollPosition) {\n let key = getScrollKey(location, matches);\n savedScrollPositions[key] = getScrollPosition();\n }\n }\n\n function getSavedScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): number | null {\n if (savedScrollPositions) {\n let key = getScrollKey(location, matches);\n let y = savedScrollPositions[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n\n function checkFogOfWar(\n matches: AgnosticDataRouteMatch[] | null,\n routesToUse: AgnosticDataRouteObject[],\n pathname: string\n ): { active: boolean; matches: AgnosticDataRouteMatch[] | null } {\n if (patchRoutesOnNavigationImpl) {\n // Don't bother re-calling patchRouteOnMiss for a path we've already\n // processed. the last execution would have patched the route tree\n // accordingly so `matches` here are already accurate.\n if (discoveredRoutes.has(pathname)) {\n return { active: false, matches };\n }\n\n if (!matches) {\n let fogMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n\n return { active: true, matches: fogMatches || [] };\n } else {\n if (Object.keys(matches[0].params).length > 0) {\n // If we matched a dynamic param or a splat, it might only be because\n // we haven't yet discovered other routes that would match with a\n // higher score. Call patchRoutesOnNavigation just to be sure\n let partialMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n return { active: true, matches: partialMatches };\n }\n }\n }\n\n return { active: false, matches: null };\n }\n\n type DiscoverRoutesSuccessResult = {\n type: \"success\";\n matches: AgnosticDataRouteMatch[] | null;\n };\n type DiscoverRoutesErrorResult = {\n type: \"error\";\n error: any;\n partialMatches: AgnosticDataRouteMatch[];\n };\n type DiscoverRoutesAbortedResult = { type: \"aborted\" };\n type DiscoverRoutesResult =\n | DiscoverRoutesSuccessResult\n | DiscoverRoutesErrorResult\n | DiscoverRoutesAbortedResult;\n\n async function discoverRoutes(\n matches: AgnosticDataRouteMatch[],\n pathname: string,\n signal: AbortSignal\n ): Promise {\n let partialMatches: AgnosticDataRouteMatch[] | null = matches;\n while (true) {\n let isNonHMR = inFlightDataRoutes == null;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n try {\n await loadLazyRouteChildren(\n patchRoutesOnNavigationImpl!,\n pathname,\n partialMatches,\n routesToUse,\n manifest,\n mapRouteProperties,\n pendingPatchRoutes,\n signal\n );\n } catch (e) {\n return { type: \"error\", error: e, partialMatches };\n } finally {\n // If we are not in the middle of an HMR revalidation and we changed the\n // routes, provide a new identity so when we `updateState` at the end of\n // this navigation/fetch `router.routes` will be a new identity and\n // trigger a re-run of memoized `router.routes` dependencies.\n // HMR will already update the identity and reflow when it lands\n // `inFlightDataRoutes` in `completeNavigation`\n if (isNonHMR) {\n dataRoutes = [...dataRoutes];\n }\n }\n\n if (signal.aborted) {\n return { type: \"aborted\" };\n }\n\n let newMatches = matchRoutes(routesToUse, pathname, basename);\n if (newMatches) {\n addToFifoQueue(pathname, discoveredRoutes);\n return { type: \"success\", matches: newMatches };\n }\n\n let newPartialMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n\n // Avoid loops if the second pass results in the same partial matches\n if (\n !newPartialMatches ||\n (partialMatches.length === newPartialMatches.length &&\n partialMatches.every(\n (m, i) => m.route.id === newPartialMatches![i].route.id\n ))\n ) {\n addToFifoQueue(pathname, discoveredRoutes);\n return { type: \"success\", matches: null };\n }\n\n partialMatches = newPartialMatches;\n }\n }\n\n function addToFifoQueue(path: string, queue: Set) {\n if (queue.size >= discoveredRoutesMaxSize) {\n let first = queue.values().next().value;\n queue.delete(first);\n }\n queue.add(path);\n }\n\n function _internalSetRoutes(newRoutes: AgnosticDataRouteObject[]) {\n manifest = {};\n inFlightDataRoutes = convertRoutesToDataRoutes(\n newRoutes,\n mapRouteProperties,\n undefined,\n manifest\n );\n }\n\n function patchRoutes(\n routeId: string | null,\n children: AgnosticRouteObject[]\n ): void {\n let isNonHMR = inFlightDataRoutes == null;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n patchRoutesImpl(\n routeId,\n children,\n routesToUse,\n manifest,\n mapRouteProperties\n );\n\n // If we are not in the middle of an HMR revalidation and we changed the\n // routes, provide a new identity and trigger a reflow via `updateState`\n // to re-run memoized `router.routes` dependencies.\n // HMR will already update the identity and reflow when it lands\n // `inFlightDataRoutes` in `completeNavigation`\n if (isNonHMR) {\n dataRoutes = [...dataRoutes];\n updateState({});\n }\n }\n\n router = {\n get basename() {\n return basename;\n },\n get future() {\n return future;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n get window() {\n return routerWindow;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: (to: To) => init.history.createHref(to),\n encodeLocation: (to: To) => init.history.encodeLocation(to),\n getFetcher,\n deleteFetcher: deleteFetcherAndUpdateState,\n dispose,\n getBlocker,\n deleteBlocker,\n patchRoutes,\n _internalFetchControllers: fetchControllers,\n _internalActiveDeferreds: activeDeferreds,\n // TODO: Remove setRoutes, it's temporary to avoid dealing with\n // updating the tree while validating the update algorithm.\n _internalSetRoutes,\n };\n\n return router;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\n\nexport const UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface StaticHandlerFutureConfig {\n v7_relativeSplatPath: boolean;\n v7_throwAbortReason: boolean;\n}\n\nexport interface CreateStaticHandlerOptions {\n basename?: string;\n /**\n * @deprecated Use `mapRouteProperties` instead\n */\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n mapRouteProperties?: MapRoutePropertiesFunction;\n future?: Partial;\n}\n\nexport function createStaticHandler(\n routes: AgnosticRouteObject[],\n opts?: CreateStaticHandlerOptions\n): StaticHandler {\n invariant(\n routes.length > 0,\n \"You must provide a non-empty routes array to createStaticHandler\"\n );\n\n let manifest: RouteManifest = {};\n let basename = (opts ? opts.basename : null) || \"/\";\n let mapRouteProperties: MapRoutePropertiesFunction;\n if (opts?.mapRouteProperties) {\n mapRouteProperties = opts.mapRouteProperties;\n } else if (opts?.detectErrorBoundary) {\n // If they are still using the deprecated version, wrap it with the new API\n let detectErrorBoundary = opts.detectErrorBoundary;\n mapRouteProperties = (route) => ({\n hasErrorBoundary: detectErrorBoundary(route),\n });\n } else {\n mapRouteProperties = defaultMapRouteProperties;\n }\n // Config driven behavior flags\n let future: StaticHandlerFutureConfig = {\n v7_relativeSplatPath: false,\n v7_throwAbortReason: false,\n ...(opts ? opts.future : null),\n };\n\n let dataRoutes = convertRoutesToDataRoutes(\n routes,\n mapRouteProperties,\n undefined,\n manifest\n );\n\n /**\n * The query() method is intended for document requests, in which we want to\n * call an optional action and potentially multiple loaders for all nested\n * routes. It returns a StaticHandlerContext object, which is very similar\n * to the router state (location, loaderData, actionData, errors, etc.) and\n * also adds SSR-specific information such as the statusCode and headers\n * from action/loaders Responses.\n *\n * It _should_ never throw and should report all errors through the\n * returned context.errors object, properly associating errors to their error\n * boundary. Additionally, it tracks _deepestRenderedBoundaryId which can be\n * used to emulate React error boundaries during SSr by performing a second\n * pass only down to the boundaryId.\n *\n * The one exception where we do not return a StaticHandlerContext is when a\n * redirect response is returned or thrown from any action/loader. We\n * propagate that out and return the raw Response so the HTTP server can\n * return it directly.\n *\n * - `opts.requestContext` is an optional server context that will be passed\n * to actions/loaders in the `context` parameter\n * - `opts.skipLoaderErrorBubbling` is an optional parameter that will prevent\n * the bubbling of errors which allows single-fetch-type implementations\n * where the client will handle the bubbling and we may need to return data\n * for the handling route\n */\n async function query(\n request: Request,\n {\n requestContext,\n skipLoaderErrorBubbling,\n unstable_dataStrategy,\n }: {\n requestContext?: unknown;\n skipLoaderErrorBubbling?: boolean;\n unstable_dataStrategy?: DataStrategyFunction;\n } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\") {\n let error = getInternalRouterError(405, { method });\n let { matches: methodNotAllowedMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: methodNotAllowedMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n } else if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: notFoundMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n unstable_dataStrategy || null,\n skipLoaderErrorBubbling === true,\n null\n );\n if (isResponse(result)) {\n return result;\n }\n\n // When returning StaticHandlerContext, we patch back in the location here\n // since we need it for React Context. But this helps keep our submit and\n // loadRouteData operating on a Request instead of a Location\n return { location, basename, ...result };\n }\n\n /**\n * The queryRoute() method is intended for targeted route requests, either\n * for fetch ?_data requests or resource route requests. In this case, we\n * are only ever calling a single action or loader, and we are returning the\n * returned value directly. In most cases, this will be a Response returned\n * from the action/loader, but it may be a primitive or other value as well -\n * and in such cases the calling context should handle that accordingly.\n *\n * We do respect the throw/return differentiation, so if an action/loader\n * throws, then this method will throw the value. This is important so we\n * can do proper boundary identification in Remix where a thrown Response\n * must go to the Catch Boundary but a returned Response is happy-path.\n *\n * One thing to note is that any Router-initiated Errors that make sense\n * to associate with a status code will be thrown as an ErrorResponse\n * instance which include the raw Error, such that the calling context can\n * serialize the error as they see fit while including the proper response\n * code. Examples here are 404 and 405 errors that occur prior to reaching\n * any user-defined loaders.\n *\n * - `opts.routeId` allows you to specify the specific route handler to call.\n * If not provided the handler will determine the proper route by matching\n * against `request.url`\n * - `opts.requestContext` is an optional server context that will be passed\n * to actions/loaders in the `context` parameter\n */\n async function queryRoute(\n request: Request,\n {\n routeId,\n requestContext,\n unstable_dataStrategy,\n }: {\n requestContext?: unknown;\n routeId?: string;\n unstable_dataStrategy?: DataStrategyFunction;\n } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n throw getInternalRouterError(405, { method });\n } else if (!matches) {\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let match = routeId\n ? matches.find((m) => m.route.id === routeId)\n : getTargetMatch(matches, location);\n\n if (routeId && !match) {\n throw getInternalRouterError(403, {\n pathname: location.pathname,\n routeId,\n });\n } else if (!match) {\n // This should never hit I don't think?\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n unstable_dataStrategy || null,\n false,\n match\n );\n\n if (isResponse(result)) {\n return result;\n }\n\n let error = result.errors ? Object.values(result.errors)[0] : undefined;\n if (error !== undefined) {\n // If we got back result.errors, that means the loader/action threw\n // _something_ that wasn't a Response, but it's not guaranteed/required\n // to be an `instanceof Error` either, so we have to use throw here to\n // preserve the \"error\" state outside of queryImpl.\n throw error;\n }\n\n // Pick off the right state value to return\n if (result.actionData) {\n return Object.values(result.actionData)[0];\n }\n\n if (result.loaderData) {\n let data = Object.values(result.loaderData)[0];\n if (result.activeDeferreds?.[match.route.id]) {\n data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];\n }\n return data;\n }\n\n return undefined;\n }\n\n async function queryImpl(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n unstable_dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n routeMatch: AgnosticDataRouteMatch | null\n ): Promise | Response> {\n invariant(\n request.signal,\n \"query()/queryRoute() requests must contain an AbortController signal\"\n );\n\n try {\n if (isMutationMethod(request.method.toLowerCase())) {\n let result = await submit(\n request,\n matches,\n routeMatch || getTargetMatch(matches, location),\n requestContext,\n unstable_dataStrategy,\n skipLoaderErrorBubbling,\n routeMatch != null\n );\n return result;\n }\n\n let result = await loadRouteData(\n request,\n matches,\n requestContext,\n unstable_dataStrategy,\n skipLoaderErrorBubbling,\n routeMatch\n );\n return isResponse(result)\n ? result\n : {\n ...result,\n actionData: null,\n actionHeaders: {},\n };\n } catch (e) {\n // If the user threw/returned a Response in callLoaderOrAction for a\n // `queryRoute` call, we throw the `HandlerResult` to bail out early\n // and then return or throw the raw Response here accordingly\n if (isHandlerResult(e) && isResponse(e.result)) {\n if (e.type === ResultType.error) {\n throw e.result;\n }\n return e.result;\n }\n // Redirects are always returned since they don't propagate to catch\n // boundaries\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n\n async function submit(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n actionMatch: AgnosticDataRouteMatch,\n requestContext: unknown,\n unstable_dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n isRouteRequest: boolean\n ): Promise | Response> {\n let result: DataResult;\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n let error = getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: actionMatch.route.id,\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n } else {\n let results = await callDataStrategy(\n \"action\",\n request,\n [actionMatch],\n matches,\n isRouteRequest,\n requestContext,\n unstable_dataStrategy\n );\n result = results[0];\n\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n }\n\n if (isRedirectResult(result)) {\n // Uhhhh - this should never happen, we should always throw these from\n // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n // can get back on the \"throw all redirect responses\" train here should\n // this ever happen :/\n throw new Response(null, {\n status: result.response.status,\n headers: {\n Location: result.response.headers.get(\"Location\")!,\n },\n });\n }\n\n if (isDeferredResult(result)) {\n let error = getInternalRouterError(400, { type: \"defer-action\" });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n }\n\n if (isRouteRequest) {\n // Note: This should only be non-Response values if we get here, since\n // isRouteRequest should throw any Response received in callLoaderOrAction\n if (isErrorResult(result)) {\n throw result.error;\n }\n\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: { [actionMatch.route.id]: result.data },\n errors: null,\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 200,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n // Create a GET request for the loaders\n let loaderRequest = new Request(request.url, {\n headers: request.headers,\n redirect: request.redirect,\n signal: request.signal,\n });\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = skipLoaderErrorBubbling\n ? actionMatch\n : findNearestBoundary(matches, actionMatch.route.id);\n\n let context = await loadRouteData(\n loaderRequest,\n matches,\n requestContext,\n unstable_dataStrategy,\n skipLoaderErrorBubbling,\n null,\n [boundaryMatch.route.id, result]\n );\n\n // action status codes take precedence over loader status codes\n return {\n ...context,\n statusCode: isRouteErrorResponse(result.error)\n ? result.error.status\n : result.statusCode != null\n ? result.statusCode\n : 500,\n actionData: null,\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n let context = await loadRouteData(\n loaderRequest,\n matches,\n requestContext,\n unstable_dataStrategy,\n skipLoaderErrorBubbling,\n null\n );\n\n return {\n ...context,\n actionData: {\n [actionMatch.route.id]: result.data,\n },\n // action status codes take precedence over loader status codes\n ...(result.statusCode ? { statusCode: result.statusCode } : {}),\n actionHeaders: result.headers\n ? { [actionMatch.route.id]: result.headers }\n : {},\n };\n }\n\n async function loadRouteData(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n unstable_dataStrategy: DataStrategyFunction | null,\n skipLoaderErrorBubbling: boolean,\n routeMatch: AgnosticDataRouteMatch | null,\n pendingActionResult?: PendingActionResult\n ): Promise<\n | Omit<\n StaticHandlerContext,\n \"location\" | \"basename\" | \"actionData\" | \"actionHeaders\"\n >\n | Response\n > {\n let isRouteRequest = routeMatch != null;\n\n // Short circuit if we have no loaders to run (queryRoute())\n if (\n isRouteRequest &&\n !routeMatch?.route.loader &&\n !routeMatch?.route.lazy\n ) {\n throw getInternalRouterError(400, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: routeMatch?.route.id,\n });\n }\n\n let requestMatches = routeMatch\n ? [routeMatch]\n : pendingActionResult && isErrorResult(pendingActionResult[1])\n ? getLoaderMatchesUntilBoundary(matches, pendingActionResult[0])\n : matches;\n let matchesToLoad = requestMatches.filter(\n (m) => m.route.loader || m.route.lazy\n );\n\n // Short circuit if we have no loaders to run (query())\n if (matchesToLoad.length === 0) {\n return {\n matches,\n // Add a null for all matched routes for proper revalidation on the client\n loaderData: matches.reduce(\n (acc, m) => Object.assign(acc, { [m.route.id]: null }),\n {}\n ),\n errors:\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? {\n [pendingActionResult[0]]: pendingActionResult[1].error,\n }\n : null,\n statusCode: 200,\n loaderHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let results = await callDataStrategy(\n \"loader\",\n request,\n matchesToLoad,\n matches,\n isRouteRequest,\n requestContext,\n unstable_dataStrategy\n );\n\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest, future);\n }\n\n // Process and commit output from loaders\n let activeDeferreds = new Map();\n let context = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingActionResult,\n activeDeferreds,\n skipLoaderErrorBubbling\n );\n\n // Add a null for any non-loader matches for proper revalidation on the client\n let executedLoaders = new Set(\n matchesToLoad.map((match) => match.route.id)\n );\n matches.forEach((match) => {\n if (!executedLoaders.has(match.route.id)) {\n context.loaderData[match.route.id] = null;\n }\n });\n\n return {\n ...context,\n matches,\n activeDeferreds:\n activeDeferreds.size > 0\n ? Object.fromEntries(activeDeferreds.entries())\n : null,\n };\n }\n\n // Utility wrapper for calling dataStrategy server-side without having to\n // pass around the manifest, mapRouteProperties, etc.\n async function callDataStrategy(\n type: \"loader\" | \"action\",\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n isRouteRequest: boolean,\n requestContext: unknown,\n unstable_dataStrategy: DataStrategyFunction | null\n ): Promise {\n let results = await callDataStrategyImpl(\n unstable_dataStrategy || defaultDataStrategy,\n type,\n request,\n matchesToLoad,\n matches,\n manifest,\n mapRouteProperties,\n requestContext\n );\n\n return await Promise.all(\n results.map((result, i) => {\n if (isRedirectHandlerResult(result)) {\n let response = result.result as Response;\n // Throw redirects and let the server handle them with an HTTP redirect\n throw normalizeRelativeRoutingRedirectResponse(\n response,\n request,\n matchesToLoad[i].route.id,\n matches,\n basename,\n future.v7_relativeSplatPath\n );\n }\n if (isResponse(result.result) && isRouteRequest) {\n // For SSR single-route requests, we want to hand Responses back\n // directly without unwrapping\n throw result;\n }\n\n return convertHandlerResultToDataResult(result);\n })\n );\n }\n\n return {\n dataRoutes,\n query,\n queryRoute,\n };\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nexport function getStaticContextFromError(\n routes: AgnosticDataRouteObject[],\n context: StaticHandlerContext,\n error: any\n) {\n let newContext: StaticHandlerContext = {\n ...context,\n statusCode: isRouteErrorResponse(error) ? error.status : 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error,\n },\n };\n return newContext;\n}\n\nfunction throwStaticHandlerAbortedError(\n request: Request,\n isRouteRequest: boolean,\n future: StaticHandlerFutureConfig\n) {\n if (future.v7_throwAbortReason && request.signal.reason !== undefined) {\n throw request.signal.reason;\n }\n\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(`${method}() call aborted: ${request.method} ${request.url}`);\n}\n\nfunction isSubmissionNavigation(\n opts: BaseNavigateOrFetchOptions\n): opts is SubmissionNavigateOptions {\n return (\n opts != null &&\n ((\"formData\" in opts && opts.formData != null) ||\n (\"body\" in opts && opts.body !== undefined))\n );\n}\n\nfunction normalizeTo(\n location: Path,\n matches: AgnosticDataRouteMatch[],\n basename: string,\n prependBasename: boolean,\n to: To | null,\n v7_relativeSplatPath: boolean,\n fromRouteId?: string,\n relative?: RelativeRoutingType\n) {\n let contextualMatches: AgnosticDataRouteMatch[];\n let activeRouteMatch: AgnosticDataRouteMatch | undefined;\n if (fromRouteId) {\n // Grab matches up to the calling route so our route-relative logic is\n // relative to the correct source route\n contextualMatches = [];\n for (let match of matches) {\n contextualMatches.push(match);\n if (match.route.id === fromRouteId) {\n activeRouteMatch = match;\n break;\n }\n }\n } else {\n contextualMatches = matches;\n activeRouteMatch = matches[matches.length - 1];\n }\n\n // Resolve the relative path\n let path = resolveTo(\n to ? to : \".\",\n getResolveToMatches(contextualMatches, v7_relativeSplatPath),\n stripBasename(location.pathname, basename) || location.pathname,\n relative === \"path\"\n );\n\n // When `to` is not specified we inherit search/hash from the current\n // location, unlike when to=\".\" and we just inherit the path.\n // See https://github.com/remix-run/remix/issues/927\n if (to == null) {\n path.search = location.search;\n path.hash = location.hash;\n }\n\n // Add an ?index param for matched index routes if we don't already have one\n if (\n (to == null || to === \"\" || to === \".\") &&\n activeRouteMatch &&\n activeRouteMatch.route.index &&\n !hasNakedIndexQuery(path.search)\n ) {\n path.search = path.search\n ? path.search.replace(/^\\?/, \"?index&\")\n : \"?index\";\n }\n\n // If we're operating within a basename, prepend it to the pathname. If\n // this is a root navigation, then just use the raw basename which allows\n // the basename to have full control over the presence of a trailing slash\n // on root actions\n if (prependBasename && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n\n return createPath(path);\n}\n\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(\n normalizeFormMethod: boolean,\n isFetcher: boolean,\n path: string,\n opts?: BaseNavigateOrFetchOptions\n): {\n path: string;\n submission?: Submission;\n error?: ErrorResponseImpl;\n} {\n // Return location verbatim on non-submission navigations\n if (!opts || !isSubmissionNavigation(opts)) {\n return { path };\n }\n\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, { method: opts.formMethod }),\n };\n }\n\n let getInvalidBodyError = () => ({\n path,\n error: getInternalRouterError(400, { type: \"invalid-body\" }),\n });\n\n // Create a Submission on non-GET navigations\n let rawFormMethod = opts.formMethod || \"get\";\n let formMethod = normalizeFormMethod\n ? (rawFormMethod.toUpperCase() as V7_FormMethod)\n : (rawFormMethod.toLowerCase() as FormMethod);\n let formAction = stripHashFromPath(path);\n\n if (opts.body !== undefined) {\n if (opts.formEncType === \"text/plain\") {\n // text only support POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n let text =\n typeof opts.body === \"string\"\n ? opts.body\n : opts.body instanceof FormData ||\n opts.body instanceof URLSearchParams\n ? // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data\n Array.from(opts.body.entries()).reduce(\n (acc, [name, value]) => `${acc}${name}=${value}\\n`,\n \"\"\n )\n : String(opts.body);\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json: undefined,\n text,\n },\n };\n } else if (opts.formEncType === \"application/json\") {\n // json only supports POST/PUT/PATCH/DELETE submissions\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n\n try {\n let json =\n typeof opts.body === \"string\" ? JSON.parse(opts.body) : opts.body;\n\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: undefined,\n json,\n text: undefined,\n },\n };\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n }\n\n invariant(\n typeof FormData === \"function\",\n \"FormData is not available in this environment\"\n );\n\n let searchParams: URLSearchParams;\n let formData: FormData;\n\n if (opts.formData) {\n searchParams = convertFormDataToSearchParams(opts.formData);\n formData = opts.formData;\n } else if (opts.body instanceof FormData) {\n searchParams = convertFormDataToSearchParams(opts.body);\n formData = opts.body;\n } else if (opts.body instanceof URLSearchParams) {\n searchParams = opts.body;\n formData = convertSearchParamsToFormData(searchParams);\n } else if (opts.body == null) {\n searchParams = new URLSearchParams();\n formData = new FormData();\n } else {\n try {\n searchParams = new URLSearchParams(opts.body);\n formData = convertSearchParamsToFormData(searchParams);\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n\n let submission: Submission = {\n formMethod,\n formAction,\n formEncType:\n (opts && opts.formEncType) || \"application/x-www-form-urlencoded\",\n formData,\n json: undefined,\n text: undefined,\n };\n\n if (isMutationMethod(submission.formMethod)) {\n return { path, submission };\n }\n\n // Flatten submission onto URLSearchParams for GET submissions\n let parsedPath = parsePath(path);\n // On GET navigation submissions we can drop the ?index param from the\n // resulting location since all loaders will run. But fetcher GET submissions\n // only run a single loader so we need to preserve any incoming ?index params\n if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = `?${searchParams}`;\n\n return { path: createPath(parsedPath), submission };\n}\n\n// Filter out all routes below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(\n matches: AgnosticDataRouteMatch[],\n boundaryId: string\n) {\n let boundaryMatches = matches;\n if (boundaryId) {\n let index = matches.findIndex((m) => m.route.id === boundaryId);\n if (index >= 0) {\n boundaryMatches = matches.slice(0, index);\n }\n }\n return boundaryMatches;\n}\n\nfunction getMatchesToLoad(\n history: History,\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n submission: Submission | undefined,\n location: Location,\n isInitialLoad: boolean,\n skipActionErrorRevalidation: boolean,\n isRevalidationRequired: boolean,\n cancelledDeferredRoutes: string[],\n cancelledFetcherLoads: Set,\n deletedFetchers: Set,\n fetchLoadMatches: Map,\n fetchRedirectIds: Set,\n routesToUse: AgnosticDataRouteObject[],\n basename: string | undefined,\n pendingActionResult?: PendingActionResult\n): [AgnosticDataRouteMatch[], RevalidatingFetcher[]] {\n let actionResult = pendingActionResult\n ? isErrorResult(pendingActionResult[1])\n ? pendingActionResult[1].error\n : pendingActionResult[1].data\n : undefined;\n let currentUrl = history.createURL(state.location);\n let nextUrl = history.createURL(location);\n\n // Pick navigation matches that are net-new or qualify for revalidation\n let boundaryId =\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? pendingActionResult[0]\n : undefined;\n let boundaryMatches = boundaryId\n ? getLoaderMatchesUntilBoundary(matches, boundaryId)\n : matches;\n\n // Don't revalidate loaders by default after action 4xx/5xx responses\n // when the flag is enabled. They can still opt-into revalidation via\n // `shouldRevalidate` via `actionResult`\n let actionStatus = pendingActionResult\n ? pendingActionResult[1].statusCode\n : undefined;\n let shouldSkipRevalidation =\n skipActionErrorRevalidation && actionStatus && actionStatus >= 400;\n\n let navigationMatches = boundaryMatches.filter((match, index) => {\n let { route } = match;\n if (route.lazy) {\n // We haven't loaded this route yet so we don't know if it's got a loader!\n return true;\n }\n\n if (route.loader == null) {\n return false;\n }\n\n if (isInitialLoad) {\n if (typeof route.loader !== \"function\" || route.loader.hydrate) {\n return true;\n }\n return (\n state.loaderData[route.id] === undefined &&\n // Don't re-run if the loader ran and threw an error\n (!state.errors || state.errors[route.id] === undefined)\n );\n }\n\n // Always call the loader on new route instances and pending defer cancellations\n if (\n isNewLoader(state.loaderData, state.matches[index], match) ||\n cancelledDeferredRoutes.some((id) => id === match.route.id)\n ) {\n return true;\n }\n\n // This is the default implementation for when we revalidate. If the route\n // provides it's own implementation, then we give them full control but\n // provide this value so they can leverage it if needed after they check\n // their own specific use cases\n let currentRouteMatch = state.matches[index];\n let nextRouteMatch = match;\n\n return shouldRevalidateLoader(match, {\n currentUrl,\n currentParams: currentRouteMatch.params,\n nextUrl,\n nextParams: nextRouteMatch.params,\n ...submission,\n actionResult,\n actionStatus,\n defaultShouldRevalidate: shouldSkipRevalidation\n ? false\n : // Forced revalidation due to submission, useRevalidator, or X-Remix-Revalidate\n isRevalidationRequired ||\n currentUrl.pathname + currentUrl.search ===\n nextUrl.pathname + nextUrl.search ||\n // Search params affect all loaders\n currentUrl.search !== nextUrl.search ||\n isNewRouteInstance(currentRouteMatch, nextRouteMatch),\n });\n });\n\n // Pick fetcher.loads that need to be revalidated\n let revalidatingFetchers: RevalidatingFetcher[] = [];\n fetchLoadMatches.forEach((f, key) => {\n // Don't revalidate:\n // - on initial load (shouldn't be any fetchers then anyway)\n // - if fetcher won't be present in the subsequent render\n // - no longer matches the URL (v7_fetcherPersist=false)\n // - was unmounted but persisted due to v7_fetcherPersist=true\n if (\n isInitialLoad ||\n !matches.some((m) => m.route.id === f.routeId) ||\n deletedFetchers.has(key)\n ) {\n return;\n }\n\n let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n\n // If the fetcher path no longer matches, push it in with null matches so\n // we can trigger a 404 in callLoadersAndMaybeResolveData. Note this is\n // currently only a use-case for Remix HMR where the route tree can change\n // at runtime and remove a route previously loaded via a fetcher\n if (!fetcherMatches) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: null,\n match: null,\n controller: null,\n });\n return;\n }\n\n // Revalidating fetchers are decoupled from the route matches since they\n // load from a static href. They revalidate based on explicit revalidation\n // (submission, useRevalidator, or X-Remix-Revalidate)\n let fetcher = state.fetchers.get(key);\n let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n\n let shouldRevalidate = false;\n if (fetchRedirectIds.has(key)) {\n // Never trigger a revalidation of an actively redirecting fetcher\n shouldRevalidate = false;\n } else if (cancelledFetcherLoads.has(key)) {\n // Always mark for revalidation if the fetcher was cancelled\n cancelledFetcherLoads.delete(key);\n shouldRevalidate = true;\n } else if (\n fetcher &&\n fetcher.state !== \"idle\" &&\n fetcher.data === undefined\n ) {\n // If the fetcher hasn't ever completed loading yet, then this isn't a\n // revalidation, it would just be a brand new load if an explicit\n // revalidation is required\n shouldRevalidate = isRevalidationRequired;\n } else {\n // Otherwise fall back on any user-defined shouldRevalidate, defaulting\n // to explicit revalidations only\n shouldRevalidate = shouldRevalidateLoader(fetcherMatch, {\n currentUrl,\n currentParams: state.matches[state.matches.length - 1].params,\n nextUrl,\n nextParams: matches[matches.length - 1].params,\n ...submission,\n actionResult,\n actionStatus,\n defaultShouldRevalidate: shouldSkipRevalidation\n ? false\n : isRevalidationRequired,\n });\n }\n\n if (shouldRevalidate) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: fetcherMatches,\n match: fetcherMatch,\n controller: new AbortController(),\n });\n }\n });\n\n return [navigationMatches, revalidatingFetchers];\n}\n\nfunction isNewLoader(\n currentLoaderData: RouteData,\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let isNew =\n // [a] -> [a, b]\n !currentMatch ||\n // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id;\n\n // Handle the case that we don't have data for a re-used route, potentially\n // from a prior error or from a cancelled pending deferred\n let isMissingData = currentLoaderData[match.route.id] === undefined;\n\n // Always load if this is a net-new route or we don't yet have data\n return isNew || isMissingData;\n}\n\nfunction isNewRouteInstance(\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname ||\n // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n (currentPath != null &&\n currentPath.endsWith(\"*\") &&\n currentMatch.params[\"*\"] !== match.params[\"*\"])\n );\n}\n\nfunction shouldRevalidateLoader(\n loaderMatch: AgnosticDataRouteMatch,\n arg: ShouldRevalidateFunctionArgs\n) {\n if (loaderMatch.route.shouldRevalidate) {\n let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n\n return arg.defaultShouldRevalidate;\n}\n\n/**\n * Idempotent utility to execute patchRoutesOnNavigation() to lazily load route\n * definitions and update the routes/routeManifest\n */\nasync function loadLazyRouteChildren(\n patchRoutesOnNavigationImpl: AgnosticPatchRoutesOnNavigationFunction,\n path: string,\n matches: AgnosticDataRouteMatch[],\n routes: AgnosticDataRouteObject[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n pendingRouteChildren: Map<\n string,\n ReturnType\n >,\n signal: AbortSignal\n) {\n let key = [path, ...matches.map((m) => m.route.id)].join(\"-\");\n try {\n let pending = pendingRouteChildren.get(key);\n if (!pending) {\n pending = patchRoutesOnNavigationImpl({\n path,\n matches,\n patch: (routeId, children) => {\n if (!signal.aborted) {\n patchRoutesImpl(\n routeId,\n children,\n routes,\n manifest,\n mapRouteProperties\n );\n }\n },\n });\n pendingRouteChildren.set(key, pending);\n }\n\n if (pending && isPromise(pending)) {\n await pending;\n }\n } finally {\n pendingRouteChildren.delete(key);\n }\n}\n\nfunction patchRoutesImpl(\n routeId: string | null,\n children: AgnosticRouteObject[],\n routesToUse: AgnosticDataRouteObject[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction\n) {\n if (routeId) {\n let route = manifest[routeId];\n invariant(\n route,\n `No route found to patch children into: routeId = ${routeId}`\n );\n let dataChildren = convertRoutesToDataRoutes(\n children,\n mapRouteProperties,\n [routeId, \"patch\", String(route.children?.length || \"0\")],\n manifest\n );\n if (route.children) {\n route.children.push(...dataChildren);\n } else {\n route.children = dataChildren;\n }\n } else {\n let dataChildren = convertRoutesToDataRoutes(\n children,\n mapRouteProperties,\n [\"patch\", String(routesToUse.length || \"0\")],\n manifest\n );\n routesToUse.push(...dataChildren);\n }\n}\n\n/**\n * Execute route.lazy() methods to lazily load route modules (loader, action,\n * shouldRevalidate) and update the routeManifest in place which shares objects\n * with dataRoutes so those get updated as well.\n */\nasync function loadLazyRouteModule(\n route: AgnosticDataRouteObject,\n mapRouteProperties: MapRoutePropertiesFunction,\n manifest: RouteManifest\n) {\n if (!route.lazy) {\n return;\n }\n\n let lazyRoute = await route.lazy();\n\n // If the lazy route function was executed and removed by another parallel\n // call then we can return - first lazy() to finish wins because the return\n // value of lazy is expected to be static\n if (!route.lazy) {\n return;\n }\n\n let routeToUpdate = manifest[route.id];\n invariant(routeToUpdate, \"No route found in manifest\");\n\n // Update the route in place. This should be safe because there's no way\n // we could yet be sitting on this route as we can't get there without\n // resolving lazy() first.\n //\n // This is different than the HMR \"update\" use-case where we may actively be\n // on the route being updated. The main concern boils down to \"does this\n // mutation affect any ongoing navigations or any current state.matches\n // values?\". If not, it should be safe to update in place.\n let routeUpdates: Record = {};\n for (let lazyRouteProperty in lazyRoute) {\n let staticRouteValue =\n routeToUpdate[lazyRouteProperty as keyof typeof routeToUpdate];\n\n let isPropertyStaticallyDefined =\n staticRouteValue !== undefined &&\n // This property isn't static since it should always be updated based\n // on the route updates\n lazyRouteProperty !== \"hasErrorBoundary\";\n\n warning(\n !isPropertyStaticallyDefined,\n `Route \"${routeToUpdate.id}\" has a static property \"${lazyRouteProperty}\" ` +\n `defined but its lazy function is also returning a value for this property. ` +\n `The lazy route property \"${lazyRouteProperty}\" will be ignored.`\n );\n\n if (\n !isPropertyStaticallyDefined &&\n !immutableRouteKeys.has(lazyRouteProperty as ImmutableRouteKey)\n ) {\n routeUpdates[lazyRouteProperty] =\n lazyRoute[lazyRouteProperty as keyof typeof lazyRoute];\n }\n }\n\n // Mutate the route with the provided updates. Do this first so we pass\n // the updated version to mapRouteProperties\n Object.assign(routeToUpdate, routeUpdates);\n\n // Mutate the `hasErrorBoundary` property on the route based on the route\n // updates and remove the `lazy` function so we don't resolve the lazy\n // route again.\n Object.assign(routeToUpdate, {\n // To keep things framework agnostic, we use the provided\n // `mapRouteProperties` (or wrapped `detectErrorBoundary`) function to\n // set the framework-aware properties (`element`/`hasErrorBoundary`) since\n // the logic will differ between frameworks.\n ...mapRouteProperties(routeToUpdate),\n lazy: undefined,\n });\n}\n\n// Default implementation of `dataStrategy` which fetches all loaders in parallel\nfunction defaultDataStrategy(\n opts: DataStrategyFunctionArgs\n): ReturnType {\n return Promise.all(opts.matches.map((m) => m.resolve()));\n}\n\nasync function callDataStrategyImpl(\n dataStrategyImpl: DataStrategyFunction,\n type: \"loader\" | \"action\",\n request: Request,\n matchesToLoad: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n requestContext?: unknown\n): Promise {\n let routeIdsToLoad = matchesToLoad.reduce(\n (acc, m) => acc.add(m.route.id),\n new Set()\n );\n let loadedMatches = new Set();\n\n // Send all matches here to allow for a middleware-type implementation.\n // handler will be a no-op for unneeded routes and we filter those results\n // back out below.\n let results = await dataStrategyImpl({\n matches: matches.map((match) => {\n let shouldLoad = routeIdsToLoad.has(match.route.id);\n // `resolve` encapsulates the route.lazy, executing the\n // loader/action, and mapping return values/thrown errors to a\n // HandlerResult. Users can pass a callback to take fine-grained control\n // over the execution of the loader/action\n let resolve: DataStrategyMatch[\"resolve\"] = (handlerOverride) => {\n loadedMatches.add(match.route.id);\n return shouldLoad\n ? callLoaderOrAction(\n type,\n request,\n match,\n manifest,\n mapRouteProperties,\n handlerOverride,\n requestContext\n )\n : Promise.resolve({ type: ResultType.data, result: undefined });\n };\n\n return {\n ...match,\n shouldLoad,\n resolve,\n };\n }),\n request,\n params: matches[0].params,\n context: requestContext,\n });\n\n // Throw if any loadRoute implementations not called since they are what\n // ensures a route is fully loaded\n matches.forEach((m) =>\n invariant(\n loadedMatches.has(m.route.id),\n `\\`match.resolve()\\` was not called for route id \"${m.route.id}\". ` +\n \"You must call `match.resolve()` on every match passed to \" +\n \"`dataStrategy` to ensure all routes are properly loaded.\"\n )\n );\n\n // Filter out any middleware-only matches for which we didn't need to run handlers\n return results.filter((_, i) => routeIdsToLoad.has(matches[i].route.id));\n}\n\n// Default logic for calling a loader/action is the user has no specified a dataStrategy\nasync function callLoaderOrAction(\n type: \"loader\" | \"action\",\n request: Request,\n match: AgnosticDataRouteMatch,\n manifest: RouteManifest,\n mapRouteProperties: MapRoutePropertiesFunction,\n handlerOverride: Parameters[0],\n staticContext?: unknown\n): Promise {\n let result: HandlerResult;\n let onReject: (() => void) | undefined;\n\n let runHandler = (\n handler: AgnosticRouteObject[\"loader\"] | AgnosticRouteObject[\"action\"]\n ): Promise => {\n // Setup a promise we can race against so that abort signals short circuit\n let reject: () => void;\n // This will never resolve so safe to type it as Promise to\n // satisfy the function return value\n let abortPromise = new Promise((_, r) => (reject = r));\n onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n\n let actualHandler = (ctx?: unknown) => {\n if (typeof handler !== \"function\") {\n return Promise.reject(\n new Error(\n `You cannot call the handler for a route which defines a boolean ` +\n `\"${type}\" [routeId: ${match.route.id}]`\n )\n );\n }\n return handler(\n {\n request,\n params: match.params,\n context: staticContext,\n },\n ...(ctx !== undefined ? [ctx] : [])\n );\n };\n\n let handlerPromise: Promise;\n if (handlerOverride) {\n handlerPromise = handlerOverride((ctx: unknown) => actualHandler(ctx));\n } else {\n handlerPromise = (async () => {\n try {\n let val = await actualHandler();\n return { type: \"data\", result: val };\n } catch (e) {\n return { type: \"error\", result: e };\n }\n })();\n }\n\n return Promise.race([handlerPromise, abortPromise]);\n };\n\n try {\n let handler = match.route[type];\n\n if (match.route.lazy) {\n if (handler) {\n // Run statically defined handler in parallel with lazy()\n let handlerError;\n let [value] = await Promise.all([\n // If the handler throws, don't let it immediately bubble out,\n // since we need to let the lazy() execution finish so we know if this\n // route has a boundary that can handle the error\n runHandler(handler).catch((e) => {\n handlerError = e;\n }),\n loadLazyRouteModule(match.route, mapRouteProperties, manifest),\n ]);\n if (handlerError !== undefined) {\n throw handlerError;\n }\n result = value!;\n } else {\n // Load lazy route module, then run any returned handler\n await loadLazyRouteModule(match.route, mapRouteProperties, manifest);\n\n handler = match.route[type];\n if (handler) {\n // Handler still runs even if we got interrupted to maintain consistency\n // with un-abortable behavior of handler execution on non-lazy or\n // previously-lazy-loaded routes\n result = await runHandler(handler);\n } else if (type === \"action\") {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(405, {\n method: request.method,\n pathname,\n routeId: match.route.id,\n });\n } else {\n // lazy() route has no loader to run. Short circuit here so we don't\n // hit the invariant below that errors on returning undefined.\n return { type: ResultType.data, result: undefined };\n }\n }\n } else if (!handler) {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(404, {\n pathname,\n });\n } else {\n result = await runHandler(handler);\n }\n\n invariant(\n result.result !== undefined,\n `You defined ${type === \"action\" ? \"an action\" : \"a loader\"} for route ` +\n `\"${match.route.id}\" but didn't return anything from your \\`${type}\\` ` +\n `function. Please return a value or \\`null\\`.`\n );\n } catch (e) {\n // We should already be catching and converting normal handler executions to\n // HandlerResults and returning them, so anything that throws here is an\n // unexpected error we still need to wrap\n return { type: ResultType.error, result: e };\n } finally {\n if (onReject) {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n }\n\n return result;\n}\n\nasync function convertHandlerResultToDataResult(\n handlerResult: HandlerResult\n): Promise {\n let { result, type } = handlerResult;\n\n if (isResponse(result)) {\n let data: any;\n\n try {\n let contentType = result.headers.get(\"Content-Type\");\n // Check between word boundaries instead of startsWith() due to the last\n // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n if (result.body == null) {\n data = null;\n } else {\n data = await result.json();\n }\n } else {\n data = await result.text();\n }\n } catch (e) {\n return { type: ResultType.error, error: e };\n }\n\n if (type === ResultType.error) {\n return {\n type: ResultType.error,\n error: new ErrorResponseImpl(result.status, result.statusText, data),\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n return {\n type: ResultType.data,\n data,\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n if (type === ResultType.error) {\n if (isDataWithResponseInit(result)) {\n if (result.data instanceof Error) {\n return {\n type: ResultType.error,\n error: result.data,\n statusCode: result.init?.status,\n };\n }\n\n // Convert thrown unstable_data() to ErrorResponse instances\n result = new ErrorResponseImpl(\n result.init?.status || 500,\n undefined,\n result.data\n );\n }\n return {\n type: ResultType.error,\n error: result,\n statusCode: isRouteErrorResponse(result) ? result.status : undefined,\n };\n }\n\n if (isDeferredData(result)) {\n return {\n type: ResultType.deferred,\n deferredData: result,\n statusCode: result.init?.status,\n headers: result.init?.headers && new Headers(result.init.headers),\n };\n }\n\n if (isDataWithResponseInit(result)) {\n return {\n type: ResultType.data,\n data: result.data,\n statusCode: result.init?.status,\n headers: result.init?.headers\n ? new Headers(result.init.headers)\n : undefined,\n };\n }\n\n return { type: ResultType.data, data: result };\n}\n\n// Support relative routing in internal redirects\nfunction normalizeRelativeRoutingRedirectResponse(\n response: Response,\n request: Request,\n routeId: string,\n matches: AgnosticDataRouteMatch[],\n basename: string,\n v7_relativeSplatPath: boolean\n) {\n let location = response.headers.get(\"Location\");\n invariant(\n location,\n \"Redirects returned/thrown from loaders/actions must have a Location header\"\n );\n\n if (!ABSOLUTE_URL_REGEX.test(location)) {\n let trimmedMatches = matches.slice(\n 0,\n matches.findIndex((m) => m.route.id === routeId) + 1\n );\n location = normalizeTo(\n new URL(request.url),\n trimmedMatches,\n basename,\n true,\n location,\n v7_relativeSplatPath\n );\n response.headers.set(\"Location\", location);\n }\n\n return response;\n}\n\nfunction normalizeRedirectLocation(\n location: string,\n currentUrl: URL,\n basename: string\n): string {\n if (ABSOLUTE_URL_REGEX.test(location)) {\n // Strip off the protocol+origin for same-origin + same-basename absolute redirects\n let normalizedLocation = location;\n let url = normalizedLocation.startsWith(\"//\")\n ? new URL(currentUrl.protocol + normalizedLocation)\n : new URL(normalizedLocation);\n let isSameBasename = stripBasename(url.pathname, basename) != null;\n if (url.origin === currentUrl.origin && isSameBasename) {\n return url.pathname + url.search + url.hash;\n }\n }\n return location;\n}\n\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches. During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(\n history: History,\n location: string | Location,\n signal: AbortSignal,\n submission?: Submission\n): Request {\n let url = history.createURL(stripHashFromPath(location)).toString();\n let init: RequestInit = { signal };\n\n if (submission && isMutationMethod(submission.formMethod)) {\n let { formMethod, formEncType } = submission;\n // Didn't think we needed this but it turns out unlike other methods, patch\n // won't be properly normalized to uppercase and results in a 405 error.\n // See: https://fetch.spec.whatwg.org/#concept-method\n init.method = formMethod.toUpperCase();\n\n if (formEncType === \"application/json\") {\n init.headers = new Headers({ \"Content-Type\": formEncType });\n init.body = JSON.stringify(submission.json);\n } else if (formEncType === \"text/plain\") {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.text;\n } else if (\n formEncType === \"application/x-www-form-urlencoded\" &&\n submission.formData\n ) {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = convertFormDataToSearchParams(submission.formData);\n } else {\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n init.body = submission.formData;\n }\n }\n\n return new Request(url, init);\n}\n\nfunction convertFormDataToSearchParams(formData: FormData): URLSearchParams {\n let searchParams = new URLSearchParams();\n\n for (let [key, value] of formData.entries()) {\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs\n searchParams.append(key, typeof value === \"string\" ? value : value.name);\n }\n\n return searchParams;\n}\n\nfunction convertSearchParamsToFormData(\n searchParams: URLSearchParams\n): FormData {\n let formData = new FormData();\n for (let [key, value] of searchParams.entries()) {\n formData.append(key, value);\n }\n return formData;\n}\n\nfunction processRouteLoaderData(\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingActionResult: PendingActionResult | undefined,\n activeDeferreds: Map,\n skipLoaderErrorBubbling: boolean\n): {\n loaderData: RouterState[\"loaderData\"];\n errors: RouterState[\"errors\"] | null;\n statusCode: number;\n loaderHeaders: Record;\n} {\n // Fill in loaderData/errors from our loaders\n let loaderData: RouterState[\"loaderData\"] = {};\n let errors: RouterState[\"errors\"] | null = null;\n let statusCode: number | undefined;\n let foundError = false;\n let loaderHeaders: Record = {};\n let pendingError =\n pendingActionResult && isErrorResult(pendingActionResult[1])\n ? pendingActionResult[1].error\n : undefined;\n\n // Process loader results into state.loaderData/state.errors\n results.forEach((result, index) => {\n let id = matchesToLoad[index].route.id;\n invariant(\n !isRedirectResult(result),\n \"Cannot handle redirect results in processLoaderData\"\n );\n if (isErrorResult(result)) {\n let error = result.error;\n // If we have a pending action error, we report it at the highest-route\n // that throws a loader error, and then clear it out to indicate that\n // it was consumed\n if (pendingError !== undefined) {\n error = pendingError;\n pendingError = undefined;\n }\n\n errors = errors || {};\n\n if (skipLoaderErrorBubbling) {\n errors[id] = error;\n } else {\n // Look upwards from the matched route for the closest ancestor error\n // boundary, defaulting to the root match. Prefer higher error values\n // if lower errors bubble to the same boundary\n let boundaryMatch = findNearestBoundary(matches, id);\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\n }\n\n // Clear our any prior loaderData for the throwing route\n loaderData[id] = undefined;\n\n // Once we find our first (highest) error, we set the status code and\n // prevent deeper status codes from overriding\n if (!foundError) {\n foundError = true;\n statusCode = isRouteErrorResponse(result.error)\n ? result.error.status\n : 500;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n if (isDeferredResult(result)) {\n activeDeferreds.set(id, result.deferredData);\n loaderData[id] = result.deferredData.data;\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (\n result.statusCode != null &&\n result.statusCode !== 200 &&\n !foundError\n ) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n loaderData[id] = result.data;\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (result.statusCode && result.statusCode !== 200 && !foundError) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n }\n });\n\n // If we didn't consume the pending action error (i.e., all loaders\n // resolved), then consume it here. Also clear out any loaderData for the\n // throwing route\n if (pendingError !== undefined && pendingActionResult) {\n errors = { [pendingActionResult[0]]: pendingError };\n loaderData[pendingActionResult[0]] = undefined;\n }\n\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders,\n };\n}\n\nfunction processLoaderData(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingActionResult: PendingActionResult | undefined,\n revalidatingFetchers: RevalidatingFetcher[],\n fetcherResults: DataResult[],\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors?: RouterState[\"errors\"];\n} {\n let { loaderData, errors } = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingActionResult,\n activeDeferreds,\n false // This method is only called client side so we always want to bubble\n );\n\n // Process results from our revalidating fetchers\n for (let index = 0; index < revalidatingFetchers.length; index++) {\n let { key, match, controller } = revalidatingFetchers[index];\n invariant(\n fetcherResults !== undefined && fetcherResults[index] !== undefined,\n \"Did not find corresponding fetcher result\"\n );\n let result = fetcherResults[index];\n\n // Process fetcher non-redirect errors\n if (controller && controller.signal.aborted) {\n // Nothing to do for aborted fetchers\n continue;\n } else if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match?.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = {\n ...errors,\n [boundaryMatch.route.id]: result.error,\n };\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n // Should never get here, redirects should get processed above, but we\n // keep this to type narrow to a success result in the else\n invariant(false, \"Unhandled fetcher revalidation redirect\");\n } else if (isDeferredResult(result)) {\n // Should never get here, deferred data should be awaited for fetchers\n // in resolveDeferredResults\n invariant(false, \"Unhandled fetcher deferred data\");\n } else {\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n return { loaderData, errors };\n}\n\nfunction mergeLoaderData(\n loaderData: RouteData,\n newLoaderData: RouteData,\n matches: AgnosticDataRouteMatch[],\n errors: RouteData | null | undefined\n): RouteData {\n let mergedLoaderData = { ...newLoaderData };\n for (let match of matches) {\n let id = match.route.id;\n if (newLoaderData.hasOwnProperty(id)) {\n if (newLoaderData[id] !== undefined) {\n mergedLoaderData[id] = newLoaderData[id];\n } else {\n // No-op - this is so we ignore existing data if we have a key in the\n // incoming object with an undefined value, which is how we unset a prior\n // loaderData if we encounter a loader error\n }\n } else if (loaderData[id] !== undefined && match.route.loader) {\n // Preserve existing keys not included in newLoaderData and where a loader\n // wasn't removed by HMR\n mergedLoaderData[id] = loaderData[id];\n }\n\n if (errors && errors.hasOwnProperty(id)) {\n // Don't keep any loader data below the boundary\n break;\n }\n }\n return mergedLoaderData;\n}\n\nfunction getActionDataForCommit(\n pendingActionResult: PendingActionResult | undefined\n) {\n if (!pendingActionResult) {\n return {};\n }\n return isErrorResult(pendingActionResult[1])\n ? {\n // Clear out prior actionData on errors\n actionData: {},\n }\n : {\n actionData: {\n [pendingActionResult[0]]: pendingActionResult[1].data,\n },\n };\n}\n\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(\n matches: AgnosticDataRouteMatch[],\n routeId?: string\n): AgnosticDataRouteMatch {\n let eligibleMatches = routeId\n ? matches.slice(0, matches.findIndex((m) => m.route.id === routeId) + 1)\n : [...matches];\n return (\n eligibleMatches.reverse().find((m) => m.route.hasErrorBoundary === true) ||\n matches[0]\n );\n}\n\nfunction getShortCircuitMatches(routes: AgnosticDataRouteObject[]): {\n matches: AgnosticDataRouteMatch[];\n route: AgnosticDataRouteObject;\n} {\n // Prefer a root layout route if present, otherwise shim in a route object\n let route =\n routes.length === 1\n ? routes[0]\n : routes.find((r) => r.index || !r.path || r.path === \"/\") || {\n id: `__shim-error-route__`,\n };\n\n return {\n matches: [\n {\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route,\n },\n ],\n route,\n };\n}\n\nfunction getInternalRouterError(\n status: number,\n {\n pathname,\n routeId,\n method,\n type,\n message,\n }: {\n pathname?: string;\n routeId?: string;\n method?: string;\n type?: \"defer-action\" | \"invalid-body\" | \"route-discovery\";\n message?: string;\n } = {}\n) {\n let statusText = \"Unknown Server Error\";\n let errorMessage = \"Unknown @remix-run/router error\";\n\n if (status === 400) {\n statusText = \"Bad Request\";\n if (type === \"route-discovery\") {\n errorMessage =\n `Unable to match URL \"${pathname}\" - the \\`unstable_patchRoutesOnNavigation()\\` ` +\n `function threw the following error:\\n${message}`;\n } else if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method} request to \"${pathname}\" but ` +\n `did not provide a \\`loader\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (type === \"defer-action\") {\n errorMessage = \"defer() is not supported in actions\";\n } else if (type === \"invalid-body\") {\n errorMessage = \"Unable to encode submission body\";\n }\n } else if (status === 403) {\n statusText = \"Forbidden\";\n errorMessage = `Route \"${routeId}\" does not match URL \"${pathname}\"`;\n } else if (status === 404) {\n statusText = \"Not Found\";\n errorMessage = `No route matches URL \"${pathname}\"`;\n } else if (status === 405) {\n statusText = \"Method Not Allowed\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method.toUpperCase()} request to \"${pathname}\" but ` +\n `did not provide an \\`action\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (method) {\n errorMessage = `Invalid request method \"${method.toUpperCase()}\"`;\n }\n }\n\n return new ErrorResponseImpl(\n status || 500,\n statusText,\n new Error(errorMessage),\n true\n );\n}\n\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(\n results: DataResult[]\n): { result: RedirectResult; idx: number } | undefined {\n for (let i = results.length - 1; i >= 0; i--) {\n let result = results[i];\n if (isRedirectResult(result)) {\n return { result, idx: i };\n }\n }\n}\n\nfunction stripHashFromPath(path: To) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath({ ...parsedPath, hash: \"\" });\n}\n\nfunction isHashChangeOnly(a: Location, b: Location): boolean {\n if (a.pathname !== b.pathname || a.search !== b.search) {\n return false;\n }\n\n if (a.hash === \"\") {\n // /page -> /page#hash\n return b.hash !== \"\";\n } else if (a.hash === b.hash) {\n // /page#hash -> /page#hash\n return true;\n } else if (b.hash !== \"\") {\n // /page#hash -> /page#other\n return true;\n }\n\n // If the hash is removed the browser will re-perform a request to the server\n // /page#hash -> /page\n return false;\n}\n\nfunction isPromise(val: unknown): val is Promise {\n return typeof val === \"object\" && val != null && \"then\" in val;\n}\n\nfunction isHandlerResult(result: unknown): result is HandlerResult {\n return (\n result != null &&\n typeof result === \"object\" &&\n \"type\" in result &&\n \"result\" in result &&\n (result.type === ResultType.data || result.type === ResultType.error)\n );\n}\n\nfunction isRedirectHandlerResult(result: HandlerResult) {\n return (\n isResponse(result.result) && redirectStatusCodes.has(result.result.status)\n );\n}\n\nfunction isDeferredResult(result: DataResult): result is DeferredResult {\n return result.type === ResultType.deferred;\n}\n\nfunction isErrorResult(result: DataResult): result is ErrorResult {\n return result.type === ResultType.error;\n}\n\nfunction isRedirectResult(result?: DataResult): result is RedirectResult {\n return (result && result.type) === ResultType.redirect;\n}\n\nexport function isDataWithResponseInit(\n value: any\n): value is DataWithResponseInit {\n return (\n typeof value === \"object\" &&\n value != null &&\n \"type\" in value &&\n \"data\" in value &&\n \"init\" in value &&\n value.type === \"DataWithResponseInit\"\n );\n}\n\nexport function isDeferredData(value: any): value is DeferredData {\n let deferred: DeferredData = value;\n return (\n deferred &&\n typeof deferred === \"object\" &&\n typeof deferred.data === \"object\" &&\n typeof deferred.subscribe === \"function\" &&\n typeof deferred.cancel === \"function\" &&\n typeof deferred.resolveData === \"function\"\n );\n}\n\nfunction isResponse(value: any): value is Response {\n return (\n value != null &&\n typeof value.status === \"number\" &&\n typeof value.statusText === \"string\" &&\n typeof value.headers === \"object\" &&\n typeof value.body !== \"undefined\"\n );\n}\n\nfunction isRedirectResponse(result: any): result is Response {\n if (!isResponse(result)) {\n return false;\n }\n\n let status = result.status;\n let location = result.headers.get(\"Location\");\n return status >= 300 && status <= 399 && location != null;\n}\n\nfunction isValidMethod(method: string): method is FormMethod | V7_FormMethod {\n return validRequestMethods.has(method.toLowerCase() as FormMethod);\n}\n\nfunction isMutationMethod(\n method: string\n): method is MutationFormMethod | V7_MutationFormMethod {\n return validMutationMethods.has(method.toLowerCase() as MutationFormMethod);\n}\n\nasync function resolveDeferredResults(\n currentMatches: AgnosticDataRouteMatch[],\n matchesToLoad: (AgnosticDataRouteMatch | null)[],\n results: DataResult[],\n signals: (AbortSignal | null)[],\n isFetcher: boolean,\n currentLoaderData?: RouteData\n) {\n for (let index = 0; index < results.length; index++) {\n let result = results[index];\n let match = matchesToLoad[index];\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n\n let currentMatch = currentMatches.find(\n (m) => m.route.id === match!.route.id\n );\n let isRevalidatingLoader =\n currentMatch != null &&\n !isNewRouteInstance(currentMatch, match) &&\n (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n\n if (isDeferredResult(result) && (isFetcher || isRevalidatingLoader)) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n let signal = signals[index];\n invariant(\n signal,\n \"Expected an AbortSignal for revalidating fetcher deferred result\"\n );\n await resolveDeferredData(result, signal, isFetcher).then((result) => {\n if (result) {\n results[index] = result || results[index];\n }\n });\n }\n }\n}\n\nasync function resolveDeferredData(\n result: DeferredResult,\n signal: AbortSignal,\n unwrap = false\n): Promise {\n let aborted = await result.deferredData.resolveData(signal);\n if (aborted) {\n return;\n }\n\n if (unwrap) {\n try {\n return {\n type: ResultType.data,\n data: result.deferredData.unwrappedData,\n };\n } catch (e) {\n // Handle any TrackedPromise._error values encountered while unwrapping\n return {\n type: ResultType.error,\n error: e,\n };\n }\n }\n\n return {\n type: ResultType.data,\n data: result.deferredData.data,\n };\n}\n\nfunction hasNakedIndexQuery(search: string): boolean {\n return new URLSearchParams(search).getAll(\"index\").some((v) => v === \"\");\n}\n\nfunction getTargetMatch(\n matches: AgnosticDataRouteMatch[],\n location: Location | string\n) {\n let search =\n typeof location === \"string\" ? parsePath(location).search : location.search;\n if (\n matches[matches.length - 1].route.index &&\n hasNakedIndexQuery(search || \"\")\n ) {\n // Return the leaf index route when index is present\n return matches[matches.length - 1];\n }\n // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n // pathless layout routes)\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\n\nfunction getSubmissionFromNavigation(\n navigation: Navigation\n): Submission | undefined {\n let { formMethod, formAction, formEncType, text, formData, json } =\n navigation;\n if (!formMethod || !formAction || !formEncType) {\n return;\n }\n\n if (text != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json: undefined,\n text,\n };\n } else if (formData != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData,\n json: undefined,\n text: undefined,\n };\n } else if (json !== undefined) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: undefined,\n json,\n text: undefined,\n };\n }\n}\n\nfunction getLoadingNavigation(\n location: Location,\n submission?: Submission\n): NavigationStates[\"Loading\"] {\n if (submission) {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n } else {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n };\n return navigation;\n }\n}\n\nfunction getSubmittingNavigation(\n location: Location,\n submission: Submission\n): NavigationStates[\"Submitting\"] {\n let navigation: NavigationStates[\"Submitting\"] = {\n state: \"submitting\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n };\n return navigation;\n}\n\nfunction getLoadingFetcher(\n submission?: Submission,\n data?: Fetcher[\"data\"]\n): FetcherStates[\"Loading\"] {\n if (submission) {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data,\n };\n return fetcher;\n } else {\n let fetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n }\n}\n\nfunction getSubmittingFetcher(\n submission: Submission,\n existingFetcher?: Fetcher\n): FetcherStates[\"Submitting\"] {\n let fetcher: FetcherStates[\"Submitting\"] = {\n state: \"submitting\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data: existingFetcher ? existingFetcher.data : undefined,\n };\n return fetcher;\n}\n\nfunction getDoneFetcher(data: Fetcher[\"data\"]): FetcherStates[\"Idle\"] {\n let fetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n json: undefined,\n text: undefined,\n data,\n };\n return fetcher;\n}\n\nfunction restoreAppliedTransitions(\n _window: Window,\n transitions: Map>\n) {\n try {\n let sessionPositions = _window.sessionStorage.getItem(\n TRANSITIONS_STORAGE_KEY\n );\n if (sessionPositions) {\n let json = JSON.parse(sessionPositions);\n for (let [k, v] of Object.entries(json || {})) {\n if (v && Array.isArray(v)) {\n transitions.set(k, new Set(v || []));\n }\n }\n }\n } catch (e) {\n // no-op, use default empty object\n }\n}\n\nfunction persistAppliedTransitions(\n _window: Window,\n transitions: Map>\n) {\n if (transitions.size > 0) {\n let json: Record = {};\n for (let [k, v] of transitions) {\n json[k] = [...v];\n }\n try {\n _window.sessionStorage.setItem(\n TRANSITIONS_STORAGE_KEY,\n JSON.stringify(json)\n );\n } catch (error) {\n warning(\n false,\n `Failed to save applied view transitions in sessionStorage (${error}).`\n );\n }\n }\n}\n//#endregion\n","import * as React from \"react\";\nimport type {\n AgnosticIndexRouteObject,\n AgnosticNonIndexRouteObject,\n AgnosticRouteMatch,\n History,\n LazyRouteFunction,\n Location,\n Action as NavigationType,\n RelativeRoutingType,\n Router,\n StaticHandlerContext,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nexport interface IndexRouteObject {\n caseSensitive?: AgnosticIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticIndexRouteObject[\"path\"];\n id?: AgnosticIndexRouteObject[\"id\"];\n loader?: AgnosticIndexRouteObject[\"loader\"];\n action?: AgnosticIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticIndexRouteObject[\"handle\"];\n index: true;\n children?: undefined;\n element?: React.ReactNode | null;\n hydrateFallbackElement?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n HydrateFallback?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport interface NonIndexRouteObject {\n caseSensitive?: AgnosticNonIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticNonIndexRouteObject[\"path\"];\n id?: AgnosticNonIndexRouteObject[\"id\"];\n loader?: AgnosticNonIndexRouteObject[\"loader\"];\n action?: AgnosticNonIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticNonIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticNonIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticNonIndexRouteObject[\"handle\"];\n index?: false;\n children?: RouteObject[];\n element?: React.ReactNode | null;\n hydrateFallbackElement?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n HydrateFallback?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport type RouteObject = IndexRouteObject | NonIndexRouteObject;\n\nexport type DataRouteObject = RouteObject & {\n children?: DataRouteObject[];\n id: string;\n};\n\nexport interface RouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends RouteObject = RouteObject\n> extends AgnosticRouteMatch {}\n\nexport interface DataRouteMatch extends RouteMatch {}\n\nexport interface DataRouterContextObject\n // Omit `future` since those can be pulled from the `router`\n // `NavigationContext` needs future since it doesn't have a `router` in all cases\n extends Omit {\n router: Router;\n staticContext?: StaticHandlerContext;\n}\n\nexport const DataRouterContext =\n React.createContext(null);\nif (__DEV__) {\n DataRouterContext.displayName = \"DataRouter\";\n}\n\nexport const DataRouterStateContext = React.createContext<\n Router[\"state\"] | null\n>(null);\nif (__DEV__) {\n DataRouterStateContext.displayName = \"DataRouterState\";\n}\n\nexport const AwaitContext = React.createContext(null);\nif (__DEV__) {\n AwaitContext.displayName = \"Await\";\n}\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n unstable_flushSync?: boolean;\n unstable_viewTransition?: boolean;\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level `` API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport interface Navigator {\n createHref: History[\"createHref\"];\n // Optional for backwards-compat with Router/HistoryRouter usage (edge case)\n encodeLocation?: History[\"encodeLocation\"];\n go: History[\"go\"];\n push(to: To, state?: any, opts?: NavigateOptions): void;\n replace(to: To, state?: any, opts?: NavigateOptions): void;\n}\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\n future: {\n v7_relativeSplatPath: boolean;\n };\n}\n\nexport const NavigationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n location: Location;\n navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n LocationContext.displayName = \"Location\";\n}\n\nexport interface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n isDataRoute: boolean;\n}\n\nexport const RouteContext = React.createContext({\n outlet: null,\n matches: [],\n isDataRoute: false,\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n\nexport const RouteErrorContext = React.createContext(null);\n\nif (__DEV__) {\n RouteErrorContext.displayName = \"RouteError\";\n}\n","import * as React from \"react\";\nimport type {\n Blocker,\n BlockerFunction,\n Location,\n ParamParseKey,\n Params,\n Path,\n PathMatch,\n PathPattern,\n RelativeRoutingType,\n Router as RemixRouter,\n RevalidationState,\n To,\n UIMatch,\n} from \"@remix-run/router\";\nimport {\n IDLE_BLOCKER,\n Action as NavigationType,\n UNSAFE_convertRouteMatchToUiMatch as convertRouteMatchToUiMatch,\n UNSAFE_decodePath as decodePath,\n UNSAFE_getResolveToMatches as getResolveToMatches,\n UNSAFE_invariant as invariant,\n isRouteErrorResponse,\n joinPaths,\n matchPath,\n matchRoutes,\n parsePath,\n resolveTo,\n stripBasename,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n DataRouteMatch,\n NavigateOptions,\n RouteContextObject,\n RouteMatch,\n RouteObject,\n} from \"./context\";\nimport {\n AwaitContext,\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n RouteErrorContext,\n} from \"./context\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/hooks/use-href\n */\nexport function useHref(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to, { relative });\n\n let joinedPathname = pathname;\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to creating the href. If this is a root navigation, then just use the raw\n // basename which allows the basename to have full control over the presence\n // of a trailing slash on root links\n if (basename !== \"/\") {\n joinedPathname =\n pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n }\n\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a ``.\n *\n * @see https://reactrouter.com/hooks/use-in-router-context\n */\nexport function useInRouterContext(): boolean {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/hooks/use-location\n */\nexport function useLocation(): Location {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a component.`\n );\n\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/hooks/use-navigation-type\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * ``.\n *\n * @see https://reactrouter.com/hooks/use-match\n */\nexport function useMatch<\n ParamKey extends ParamParseKey,\n Path extends string\n>(pattern: PathPattern | Path): PathMatch | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a component.`\n );\n\n let { pathname } = useLocation();\n return React.useMemo(\n () => matchPath(pattern, decodePath(pathname)),\n [pathname, pattern]\n );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n (to: To, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\nconst navigateEffectWarning =\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`;\n\n// Mute warnings for calls to useNavigate in SSR environments\nfunction useIsomorphicLayoutEffect(\n cb: Parameters[0]\n) {\n let isStatic = React.useContext(NavigationContext).static;\n if (!isStatic) {\n // We should be able to get rid of this once react 18.3 is released\n // See: https://github.com/facebook/react/pull/26395\n // eslint-disable-next-line react-hooks/rules-of-hooks\n React.useLayoutEffect(cb);\n }\n}\n\n/**\n * Returns an imperative method for changing the location. Used by ``s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/hooks/use-navigate\n */\nexport function useNavigate(): NavigateFunction {\n let { isDataRoute } = React.useContext(RouteContext);\n // Conditional usage is OK here because the usage of a data router is static\n // eslint-disable-next-line react-hooks/rules-of-hooks\n return isDataRoute ? useNavigateStable() : useNavigateUnstable();\n}\n\nfunction useNavigateUnstable(): NavigateFunction {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a component.`\n );\n\n let dataRouterContext = React.useContext(DataRouterContext);\n let { basename, future, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getResolveToMatches(matches, future.v7_relativeSplatPath)\n );\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our history listener yet\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n options.relative === \"path\"\n );\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to handing off to history (but only if we're not in a data router,\n // otherwise it'll prepend the basename inside of the router).\n // If this is a root navigation, then we navigate to the raw basename\n // which allows the basename to have full control over the presence of a\n // trailing slash on root links\n if (dataRouterContext == null && basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\"\n ? basename\n : joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state,\n options\n );\n },\n [\n basename,\n navigator,\n routePathnamesJson,\n locationPathname,\n dataRouterContext,\n ]\n );\n\n return navigate;\n}\n\nconst OutletContext = React.createContext(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/hooks/use-outlet-context\n */\nexport function useOutletContext(): Context {\n return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by `` to render child routes.\n *\n * @see https://reactrouter.com/hooks/use-outlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return (\n {outlet}\n );\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/hooks/use-params\n */\nexport function useParams<\n ParamsOrKey extends string | Record = string\n>(): Readonly<\n [ParamsOrKey] extends [string] ? Params : Partial\n> {\n let { matches } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/hooks/use-resolved-path\n */\nexport function useResolvedPath(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): Path {\n let { future } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n let routePathnamesJson = JSON.stringify(\n getResolveToMatches(matches, future.v7_relativeSplatPath)\n );\n\n return React.useMemo(\n () =>\n resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n relative === \"path\"\n ),\n [to, routePathnamesJson, locationPathname, relative]\n );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an `` to render their child route's\n * element.\n *\n * @see https://reactrouter.com/hooks/use-routes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial | string\n): React.ReactElement | null {\n return useRoutesImpl(routes, locationArg);\n}\n\n// Internal implementation with accept optional param for RouterProvider usage\nexport function useRoutesImpl(\n routes: RouteObject[],\n locationArg?: Partial | string,\n dataRouterState?: RemixRouter[\"state\"],\n future?: RemixRouter[\"future\"]\n): React.ReactElement | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a component.`\n );\n\n let { navigator } = React.useContext(NavigationContext);\n let { matches: parentMatches } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n\n if (__DEV__) {\n // You won't get a warning about 2 different under a \n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // \n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // } />\n // } />\n // \n //\n // function Blog() {\n // return (\n // \n // } />\n // \n // );\n // }\n let parentPath = (parentRoute && parentRoute.path) || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\"),\n `You rendered descendant (or called \\`useRoutes()\\`) at ` +\n `\"${parentPathname}\" (under ) but the ` +\n `parent route path has no trailing \"*\". This means if you navigate ` +\n `deeper, the parent won't match anymore and therefore the child ` +\n `routes will never render.\\n\\n` +\n `Please change the parent to .`\n );\n }\n\n let locationFromContext = useLocation();\n\n let location;\n if (locationArg) {\n let parsedLocationArg =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n invariant(\n parentPathnameBase === \"/\" ||\n parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`\\` or \\`useRoutes(routes, location)\\`, ` +\n `the location pathname must begin with the portion of the URL pathname that was ` +\n `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n\n let pathname = location.pathname || \"/\";\n\n let remainingPathname = pathname;\n if (parentPathnameBase !== \"/\") {\n // Determine the remaining pathname by removing the # of URL segments the\n // parentPathnameBase has, instead of removing based on character count.\n // This is because we can't guarantee that incoming/outgoing encodings/\n // decodings will match exactly.\n // We decode paths before matching on a per-segment basis with\n // decodeURIComponent(), but we re-encode pathnames via `new URL()` so they\n // match what `window.location.pathname` would reflect. Those don't 100%\n // align when it comes to encoded URI characters such as % and &.\n //\n // So we may end up with:\n // pathname: \"/descendant/a%25b/match\"\n // parentPathnameBase: \"/descendant/a%b\"\n //\n // And the direct substring removal approach won't work :/\n let parentSegments = parentPathnameBase.replace(/^\\//, \"\").split(\"/\");\n let segments = pathname.replace(/^\\//, \"\").split(\"/\");\n remainingPathname = \"/\" + segments.slice(parentSegments.length).join(\"/\");\n }\n\n let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n if (__DEV__) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n\n warning(\n matches == null ||\n matches[matches.length - 1].route.element !== undefined ||\n matches[matches.length - 1].route.Component !== undefined ||\n matches[matches.length - 1].route.lazy !== undefined,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" ` +\n `does not have an element or Component. This means it will render an with a ` +\n `null value by default resulting in an \"empty\" page.`\n );\n }\n\n let renderedMatches = _renderMatches(\n matches &&\n matches.map((match) =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathname).pathname\n : match.pathname,\n ]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathnameBase).pathname\n : match.pathnameBase,\n ]),\n })\n ),\n parentMatches,\n dataRouterState,\n future\n );\n\n // When a user passes in a `locationArg`, the associated routes need to\n // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n // to use the scoped location instead of the global location.\n if (locationArg && renderedMatches) {\n return (\n \n {renderedMatches}\n \n );\n }\n\n return renderedMatches;\n}\n\nfunction DefaultErrorComponent() {\n let error = useRouteError();\n let message = isRouteErrorResponse(error)\n ? `${error.status} ${error.statusText}`\n : error instanceof Error\n ? error.message\n : JSON.stringify(error);\n let stack = error instanceof Error ? error.stack : null;\n let lightgrey = \"rgba(200,200,200, 0.5)\";\n let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n\n let devInfo = null;\n if (__DEV__) {\n console.error(\n \"Error handled by React Router default ErrorBoundary:\",\n error\n );\n\n devInfo = (\n <>\n

💿 Hey developer 👋

\n

\n You can provide a way better UX than this when your app throws errors\n by providing your own ErrorBoundary or{\" \"}\n errorElement prop on your route.\n

\n \n );\n }\n\n return (\n <>\n

Unexpected Application Error!

\n

{message}

\n {stack ?
{stack}
: null}\n {devInfo}\n \n );\n}\n\nconst defaultErrorElement = ;\n\ntype RenderErrorBoundaryProps = React.PropsWithChildren<{\n location: Location;\n revalidation: RevalidationState;\n error: any;\n component: React.ReactNode;\n routeContext: RouteContextObject;\n}>;\n\ntype RenderErrorBoundaryState = {\n location: Location;\n revalidation: RevalidationState;\n error: any;\n};\n\nexport class RenderErrorBoundary extends React.Component<\n RenderErrorBoundaryProps,\n RenderErrorBoundaryState\n> {\n constructor(props: RenderErrorBoundaryProps) {\n super(props);\n this.state = {\n location: props.location,\n revalidation: props.revalidation,\n error: props.error,\n };\n }\n\n static getDerivedStateFromError(error: any) {\n return { error: error };\n }\n\n static getDerivedStateFromProps(\n props: RenderErrorBoundaryProps,\n state: RenderErrorBoundaryState\n ) {\n // When we get into an error state, the user will likely click \"back\" to the\n // previous page that didn't have an error. Because this wraps the entire\n // application, that will have no effect--the error page continues to display.\n // This gives us a mechanism to recover from the error when the location changes.\n //\n // Whether we're in an error state or not, we update the location in state\n // so that when we are in an error state, it gets reset when a new location\n // comes in and the user recovers from the error.\n if (\n state.location !== props.location ||\n (state.revalidation !== \"idle\" && props.revalidation === \"idle\")\n ) {\n return {\n error: props.error,\n location: props.location,\n revalidation: props.revalidation,\n };\n }\n\n // If we're not changing locations, preserve the location but still surface\n // any new errors that may come through. We retain the existing error, we do\n // this because the error provided from the app state may be cleared without\n // the location changing.\n return {\n error: props.error !== undefined ? props.error : state.error,\n location: state.location,\n revalidation: props.revalidation || state.revalidation,\n };\n }\n\n componentDidCatch(error: any, errorInfo: any) {\n console.error(\n \"React Router caught the following error during render\",\n error,\n errorInfo\n );\n }\n\n render() {\n return this.state.error !== undefined ? (\n \n \n \n ) : (\n this.props.children\n );\n }\n}\n\ninterface RenderedRouteProps {\n routeContext: RouteContextObject;\n match: RouteMatch;\n children: React.ReactNode | null;\n}\n\nfunction RenderedRoute({ routeContext, match, children }: RenderedRouteProps) {\n let dataRouterContext = React.useContext(DataRouterContext);\n\n // Track how deep we got in our render pass to emulate SSR componentDidCatch\n // in a DataStaticRouter\n if (\n dataRouterContext &&\n dataRouterContext.static &&\n dataRouterContext.staticContext &&\n (match.route.errorElement || match.route.ErrorBoundary)\n ) {\n dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n }\n\n return (\n \n {children}\n \n );\n}\n\nexport function _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = [],\n dataRouterState: RemixRouter[\"state\"] | null = null,\n future: RemixRouter[\"future\"] | null = null\n): React.ReactElement | null {\n if (matches == null) {\n if (!dataRouterState) {\n return null;\n }\n\n if (dataRouterState.errors) {\n // Don't bail if we have data router errors so we can render them in the\n // boundary. Use the pre-matched (or shimmed) matches\n matches = dataRouterState.matches as DataRouteMatch[];\n } else if (\n future?.v7_partialHydration &&\n parentMatches.length === 0 &&\n !dataRouterState.initialized &&\n dataRouterState.matches.length > 0\n ) {\n // Don't bail if we're initializing with partial hydration and we have\n // router matches. That means we're actively running `patchRoutesOnNavigation`\n // so we should render down the partial matches to the appropriate\n // `HydrateFallback`. We only do this if `parentMatches` is empty so it\n // only impacts the root matches for `RouterProvider` and no descendant\n // ``\n matches = dataRouterState.matches as DataRouteMatch[];\n } else {\n return null;\n }\n }\n\n let renderedMatches = matches;\n\n // If we have data errors, trim matches to the highest error boundary\n let errors = dataRouterState?.errors;\n if (errors != null) {\n let errorIndex = renderedMatches.findIndex(\n (m) => m.route.id && errors?.[m.route.id] !== undefined\n );\n invariant(\n errorIndex >= 0,\n `Could not find a matching route for errors on route IDs: ${Object.keys(\n errors\n ).join(\",\")}`\n );\n renderedMatches = renderedMatches.slice(\n 0,\n Math.min(renderedMatches.length, errorIndex + 1)\n );\n }\n\n // If we're in a partial hydration mode, detect if we need to render down to\n // a given HydrateFallback while we load the rest of the hydration data\n let renderFallback = false;\n let fallbackIndex = -1;\n if (dataRouterState && future && future.v7_partialHydration) {\n for (let i = 0; i < renderedMatches.length; i++) {\n let match = renderedMatches[i];\n // Track the deepest fallback up until the first route without data\n if (match.route.HydrateFallback || match.route.hydrateFallbackElement) {\n fallbackIndex = i;\n }\n\n if (match.route.id) {\n let { loaderData, errors } = dataRouterState;\n let needsToRunLoader =\n match.route.loader &&\n loaderData[match.route.id] === undefined &&\n (!errors || errors[match.route.id] === undefined);\n if (match.route.lazy || needsToRunLoader) {\n // We found the first route that's not ready to render (waiting on\n // lazy, or has a loader that hasn't run yet). Flag that we need to\n // render a fallback and render up until the appropriate fallback\n renderFallback = true;\n if (fallbackIndex >= 0) {\n renderedMatches = renderedMatches.slice(0, fallbackIndex + 1);\n } else {\n renderedMatches = [renderedMatches[0]];\n }\n break;\n }\n }\n }\n }\n\n return renderedMatches.reduceRight((outlet, match, index) => {\n // Only data routers handle errors/fallbacks\n let error: any;\n let shouldRenderHydrateFallback = false;\n let errorElement: React.ReactNode | null = null;\n let hydrateFallbackElement: React.ReactNode | null = null;\n if (dataRouterState) {\n error = errors && match.route.id ? errors[match.route.id] : undefined;\n errorElement = match.route.errorElement || defaultErrorElement;\n\n if (renderFallback) {\n if (fallbackIndex < 0 && index === 0) {\n warningOnce(\n \"route-fallback\",\n false,\n \"No `HydrateFallback` element provided to render during initial hydration\"\n );\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = null;\n } else if (fallbackIndex === index) {\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = match.route.hydrateFallbackElement || null;\n }\n }\n }\n\n let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n let getChildren = () => {\n let children: React.ReactNode;\n if (error) {\n children = errorElement;\n } else if (shouldRenderHydrateFallback) {\n children = hydrateFallbackElement;\n } else if (match.route.Component) {\n // Note: This is a de-optimized path since React won't re-use the\n // ReactElement since it's identity changes with each new\n // React.createElement call. We keep this so folks can use\n // `` in `` but generally `Component`\n // usage is only advised in `RouterProvider` when we can convert it to\n // `element` ahead of time.\n children = ;\n } else if (match.route.element) {\n children = match.route.element;\n } else {\n children = outlet;\n }\n return (\n \n );\n };\n // Only wrap in an error boundary within data router usages when we have an\n // ErrorBoundary/errorElement on this route. Otherwise let it bubble up to\n // an ancestor ErrorBoundary/errorElement\n return dataRouterState &&\n (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? (\n \n ) : (\n getChildren()\n );\n }, null as React.ReactElement | null);\n}\n\nenum DataRouterHook {\n UseBlocker = \"useBlocker\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n}\n\nenum DataRouterStateHook {\n UseBlocker = \"useBlocker\",\n UseLoaderData = \"useLoaderData\",\n UseActionData = \"useActionData\",\n UseRouteError = \"useRouteError\",\n UseNavigation = \"useNavigation\",\n UseRouteLoaderData = \"useRouteLoaderData\",\n UseMatches = \"useMatches\",\n UseRevalidator = \"useRevalidator\",\n UseNavigateStable = \"useNavigate\",\n UseRouteId = \"useRouteId\",\n}\n\nfunction getDataRouterConsoleError(\n hookName: DataRouterHook | DataRouterStateHook\n) {\n return `${hookName} must be used within a data router. See https://reactrouter.com/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n let ctx = React.useContext(DataRouterContext);\n invariant(ctx, getDataRouterConsoleError(hookName));\n return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n let state = React.useContext(DataRouterStateContext);\n invariant(state, getDataRouterConsoleError(hookName));\n return state;\n}\n\nfunction useRouteContext(hookName: DataRouterStateHook) {\n let route = React.useContext(RouteContext);\n invariant(route, getDataRouterConsoleError(hookName));\n return route;\n}\n\n// Internal version with hookName-aware debugging\nfunction useCurrentRouteId(hookName: DataRouterStateHook) {\n let route = useRouteContext(hookName);\n let thisRoute = route.matches[route.matches.length - 1];\n invariant(\n thisRoute.route.id,\n `${hookName} can only be used on routes that contain a unique \"id\"`\n );\n return thisRoute.route.id;\n}\n\n/**\n * Returns the ID for the nearest contextual route\n */\nexport function useRouteId() {\n return useCurrentRouteId(DataRouterStateHook.UseRouteId);\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nexport function useNavigation() {\n let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nexport function useRevalidator() {\n let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n return React.useMemo(\n () => ({\n revalidate: dataRouterContext.router.revalidate,\n state: state.revalidation,\n }),\n [dataRouterContext.router.revalidate, state.revalidation]\n );\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nexport function useMatches(): UIMatch[] {\n let { matches, loaderData } = useDataRouterState(\n DataRouterStateHook.UseMatches\n );\n return React.useMemo(\n () => matches.map((m) => convertRouteMatchToUiMatch(m, loaderData)),\n [matches, loaderData]\n );\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nexport function useLoaderData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n\n if (state.errors && state.errors[routeId] != null) {\n console.error(\n `You cannot \\`useLoaderData\\` in an errorElement (routeId: ${routeId})`\n );\n return undefined;\n }\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nexport function useRouteLoaderData(routeId: string): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nexport function useActionData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseActionData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n return state.actionData ? state.actionData[routeId] : undefined;\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error. This is intended to be called from your\n * ErrorBoundary/errorElement to display a proper error message.\n */\nexport function useRouteError(): unknown {\n let error = React.useContext(RouteErrorContext);\n let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n // If this was a render error, we put it in a RouteError context inside\n // of RenderErrorBoundary\n if (error !== undefined) {\n return error;\n }\n\n // Otherwise look for errors from our data router state\n return state.errors?.[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor `` value\n */\nexport function useAsyncValue(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._data;\n}\n\n/**\n * Returns the error from the nearest ancestor `` value\n */\nexport function useAsyncError(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._error;\n}\n\nlet blockerId = 0;\n\n/**\n * Allow the application to block navigations within the SPA and present the\n * user a confirmation dialog to confirm the navigation. Mostly used to avoid\n * using half-filled form data. This does not handle hard-reloads or\n * cross-origin navigations.\n */\nexport function useBlocker(shouldBlock: boolean | BlockerFunction): Blocker {\n let { router, basename } = useDataRouterContext(DataRouterHook.UseBlocker);\n let state = useDataRouterState(DataRouterStateHook.UseBlocker);\n\n let [blockerKey, setBlockerKey] = React.useState(\"\");\n let blockerFunction = React.useCallback(\n (arg) => {\n if (typeof shouldBlock !== \"function\") {\n return !!shouldBlock;\n }\n if (basename === \"/\") {\n return shouldBlock(arg);\n }\n\n // If they provided us a function and we've got an active basename, strip\n // it from the locations we expose to the user to match the behavior of\n // useLocation\n let { currentLocation, nextLocation, historyAction } = arg;\n return shouldBlock({\n currentLocation: {\n ...currentLocation,\n pathname:\n stripBasename(currentLocation.pathname, basename) ||\n currentLocation.pathname,\n },\n nextLocation: {\n ...nextLocation,\n pathname:\n stripBasename(nextLocation.pathname, basename) ||\n nextLocation.pathname,\n },\n historyAction,\n });\n },\n [basename, shouldBlock]\n );\n\n // This effect is in charge of blocker key assignment and deletion (which is\n // tightly coupled to the key)\n React.useEffect(() => {\n let key = String(++blockerId);\n setBlockerKey(key);\n return () => router.deleteBlocker(key);\n }, [router]);\n\n // This effect handles assigning the blockerFunction. This is to handle\n // unstable blocker function identities, and happens only after the prior\n // effect so we don't get an orphaned blockerFunction in the router with a\n // key of \"\". Until then we just have the IDLE_BLOCKER.\n React.useEffect(() => {\n if (blockerKey !== \"\") {\n router.getBlocker(blockerKey, blockerFunction);\n }\n }, [router, blockerKey, blockerFunction]);\n\n // Prefer the blocker from `state` not `router.state` since DataRouterContext\n // is memoized so this ensures we update on blocker state updates\n return blockerKey && state.blockers.has(blockerKey)\n ? state.blockers.get(blockerKey)!\n : IDLE_BLOCKER;\n}\n\n/**\n * Stable version of useNavigate that is used when we are in the context of\n * a RouterProvider.\n */\nfunction useNavigateStable(): NavigateFunction {\n let { router } = useDataRouterContext(DataRouterHook.UseNavigateStable);\n let id = useCurrentRouteId(DataRouterStateHook.UseNavigateStable);\n\n let activeRef = React.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n\n // Short circuit here since if this happens on first render the navigate\n // is useless because we haven't wired up our router subscriber yet\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n router.navigate(to);\n } else {\n router.navigate(to, { fromRouteId: id, ...options });\n }\n },\n [router, id]\n );\n\n return navigate;\n}\n\nconst alreadyWarned: Record = {};\n\nfunction warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n","import type {\n InitialEntry,\n LazyRouteFunction,\n Location,\n MemoryHistory,\n RelativeRoutingType,\n Router as RemixRouter,\n RouterState,\n RouterSubscriber,\n To,\n TrackedPromise,\n} from \"@remix-run/router\";\nimport {\n AbortedDeferredError,\n Action as NavigationType,\n createMemoryHistory,\n UNSAFE_getResolveToMatches as getResolveToMatches,\n UNSAFE_invariant as invariant,\n parsePath,\n resolveTo,\n stripBasename,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\nimport * as React from \"react\";\n\nimport type {\n DataRouteObject,\n IndexRouteObject,\n Navigator,\n NonIndexRouteObject,\n RouteMatch,\n RouteObject,\n} from \"./context\";\nimport {\n AwaitContext,\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n} from \"./context\";\nimport {\n _renderMatches,\n useAsyncValue,\n useInRouterContext,\n useLocation,\n useNavigate,\n useOutlet,\n useRoutes,\n useRoutesImpl,\n} from \"./hooks\";\n\nexport interface FutureConfig {\n v7_relativeSplatPath: boolean;\n v7_startTransition: boolean;\n}\n\nexport interface RouterProviderProps {\n fallbackElement?: React.ReactNode;\n router: RemixRouter;\n // Only accept future flags relevant to rendering behavior\n // routing flags should be accessed via router.future\n future?: Partial>;\n}\n\n/**\n Webpack + React 17 fails to compile on any of the following because webpack\n complains that `startTransition` doesn't exist in `React`:\n * import { startTransition } from \"react\"\n * import * as React from from \"react\";\n \"startTransition\" in React ? React.startTransition(() => setState()) : setState()\n * import * as React from from \"react\";\n \"startTransition\" in React ? React[\"startTransition\"](() => setState()) : setState()\n\n Moving it to a constant such as the following solves the Webpack/React 17 issue:\n * import * as React from from \"react\";\n const START_TRANSITION = \"startTransition\";\n START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()\n\n However, that introduces webpack/terser minification issues in production builds\n in React 18 where minification/obfuscation ends up removing the call of\n React.startTransition entirely from the first half of the ternary. Grabbing\n this exported reference once up front resolves that issue.\n\n See https://github.com/remix-run/react-router/issues/10579\n*/\nconst START_TRANSITION = \"startTransition\";\nconst startTransitionImpl = React[START_TRANSITION];\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n fallbackElement,\n router,\n future,\n}: RouterProviderProps): React.ReactElement {\n let [state, setStateImpl] = React.useState(router.state);\n let { v7_startTransition } = future || {};\n\n let setState = React.useCallback(\n (newState: RouterState) => {\n if (v7_startTransition && startTransitionImpl) {\n startTransitionImpl(() => setStateImpl(newState));\n } else {\n setStateImpl(newState);\n }\n },\n [setStateImpl, v7_startTransition]\n );\n\n // Need to use a layout effect here so we are subscribed early enough to\n // pick up on any render-driven redirects/navigations (useEffect/)\n React.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n\n React.useEffect(() => {\n warning(\n fallbackElement == null || !router.future.v7_partialHydration,\n \"`` is deprecated when using \" +\n \"`v7_partialHydration`, use a `HydrateFallback` component instead\"\n );\n // Only log this once on initial mount\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n let navigator = React.useMemo((): Navigator => {\n return {\n createHref: router.createHref,\n encodeLocation: router.encodeLocation,\n go: (n) => router.navigate(n),\n push: (to, state, opts) =>\n router.navigate(to, {\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n replace: (to, state, opts) =>\n router.navigate(to, {\n replace: true,\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n };\n }, [router]);\n\n let basename = router.basename || \"/\";\n\n let dataRouterContext = React.useMemo(\n () => ({\n router,\n navigator,\n static: false,\n basename,\n }),\n [router, navigator, basename]\n );\n\n // The fragment and {null} here are important! We need them to keep React 18's\n // useId happy when we are server-rendering since we may have a ' + '');\n printWindow.document.close();\n printWindow.focus();\n var interval = setInterval(function () {\n if (printWindow.ready) {\n printWindow.print();\n printWindow.close();\n clearInterval(interval);\n }\n }, 500);\n return printWindow;\n}\n/**\n * Function to normalize the units applied to the element.\n *\n * @param {number|string} value ?\n * @returns {string} result\n * @private\n */\nexport function formatUnit(value) {\n var result = value + '';\n if (result.match(/auto|cm|mm|in|px|pt|pc|%|em|ex|ch|rem|vw|vh|vmin|vmax/)) {\n return result;\n }\n return result + 'px';\n}\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {void} result\n * @private\n */\nexport function enableBlazorMode() {\n isBlazorPlatform = true;\n}\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {boolean} result\n * @private\n */\nexport function isBlazor() {\n return isBlazorPlatform;\n}\n/**\n * Function to convert xPath to DOM element in blazor platform\n *\n * @returns {HTMLElement} result\n * @param {HTMLElement | object} element ?\n * @private\n */\nexport function getElement(element) {\n var xPath = 'xPath';\n if (!(element instanceof Node) && isBlazor() && !isNullOrUndefined(element[\"\" + xPath])) {\n return document.evaluate(element[\"\" + xPath], document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;\n }\n return element;\n}\n/**\n * Function to fetch the Instances of a HTML element for the given component.\n *\n * @param {string | HTMLElement} element ?\n * @param {any} component ?\n * @returns {Object} ?\n * @private\n */\nexport function getInstance(element, component) {\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[\"\" + instances]) {\n for (var _i = 0, _a = elem[\"\" + instances]; _i < _a.length; _i++) {\n var inst = _a[_i];\n if (inst instanceof component) {\n return inst;\n }\n }\n }\n return null;\n}\n/**\n * Function to add instances for the given element.\n *\n * @param {string | HTMLElement} element ?\n * @param {Object} instance ?\n * @returns {void} ?\n * @private\n */\nexport function addInstance(element, instance) {\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[\"\" + instances]) {\n elem[\"\" + instances].push(instance);\n }\n else {\n elem[\"\" + instances] = [instance];\n }\n}\n/**\n * Function to generate the unique id.\n *\n * @returns {any} ?\n * @private\n */\nexport function uniqueID() {\n if ((typeof window) === 'undefined') {\n return;\n }\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n return intCrypto.getRandomValues(num);\n}\n/**\n *\n * @param {Int16Array} num ?\n * @returns {string} ?\n */\nfunction combineArray(num) {\n var ret = '';\n for (var i = 0; i < 5; i++) {\n ret += (i ? ',' : '') + num[parseInt(i.toString(), 10)];\n }\n return ret;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Parser\n */\nvar defaultNumberingSystem = {\n 'latn': {\n '_digits': '0123456789',\n '_type': 'numeric'\n }\n};\nimport { isUndefined, getValue, isBlazor } from '../util';\nvar defaultNumberSymbols = {\n 'decimal': '.',\n 'group': ',',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'exponential': 'E'\n};\nvar latnNumberSystem = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];\n/**\n * Interface for parser base\n *\n * @private\n */\nvar ParserBase = /** @class */ (function () {\n function ParserBase() {\n }\n /**\n * Returns the cldr object for the culture specifies\n *\n * @param {Object} obj - Specifies the object from which culture object to be acquired.\n * @param {string} cName - Specifies the culture name.\n * @returns {Object} ?\n */\n ParserBase.getMainObject = function (obj, cName) {\n var value = isBlazor() ? cName : 'main.' + cName;\n return getValue(value, obj);\n };\n /**\n * Returns the numbering system object from given cldr data.\n *\n * @param {Object} obj - Specifies the object from which number system is acquired.\n * @returns {Object} ?\n */\n ParserBase.getNumberingSystem = function (obj) {\n return getValue('supplemental.numberingSystems', obj) || this.numberingSystems;\n };\n /**\n * Returns the reverse of given object keys or keys specified.\n *\n * @param {Object} prop - Specifies the object to be reversed.\n * @param {number[]} keys - Optional parameter specifies the custom keyList for reversal.\n * @returns {Object} ?\n */\n ParserBase.reverseObject = function (prop, keys) {\n var propKeys = keys || Object.keys(prop);\n var res = {};\n for (var _i = 0, propKeys_1 = propKeys; _i < propKeys_1.length; _i++) {\n var key = propKeys_1[_i];\n if (!Object.prototype.hasOwnProperty.call(res, prop[\"\" + key])) {\n res[prop[\"\" + key]] = key;\n }\n }\n return res;\n };\n /**\n * Returns the symbol regex by skipping the escape sequence.\n *\n * @param {string[]} props - Specifies the array values to be skipped.\n * @returns {RegExp} ?\n */\n ParserBase.getSymbolRegex = function (props) {\n var regexStr = props.map(function (str) {\n return str.replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1');\n }).join('|');\n var regExp = RegExp;\n return new regExp(regexStr, 'g');\n };\n /**\n *\n * @param {Object} prop ?\n * @returns {Object} ?\n */\n ParserBase.getSymbolMatch = function (prop) {\n var matchKeys = Object.keys(defaultNumberSymbols);\n var ret = {};\n for (var _i = 0, matchKeys_1 = matchKeys; _i < matchKeys_1.length; _i++) {\n var key = matchKeys_1[_i];\n ret[prop[\"\" + key]] = defaultNumberSymbols[\"\" + key];\n }\n return ret;\n };\n /**\n * Returns regex string for provided value\n *\n * @param {string} val ?\n * @returns {string} ?\n */\n ParserBase.constructRegex = function (val) {\n var len = val.length;\n var ret = '';\n for (var i = 0; i < len; i++) {\n if (i !== len - 1) {\n ret += val[parseInt(i.toString(), 10)] + '|';\n }\n else {\n ret += val[parseInt(i.toString(), 10)];\n }\n }\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n *\n * @param {string} value - Specifies the values to be replaced.\n * @param {RegExp} regex - Specifies the regex to search.\n * @param {Object} obj - Specifies the object matcher to be replace value parts.\n * @returns {string} ?\n */\n ParserBase.convertValueParts = function (value, regex, obj) {\n return value.replace(regex, function (str) {\n return obj[\"\" + str];\n });\n };\n /**\n * Returns default numbering system object for formatting from cldr data\n *\n * @param {Object} obj ?\n * @returns {NumericObject} ?\n */\n ParserBase.getDefaultNumberingSystem = function (obj) {\n var ret = {};\n ret.obj = getValue('numbers', obj);\n ret.nSystem = getValue('defaultNumberingSystem', ret.obj);\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n *\n * @param {Object} curObj ?\n * @param {Object} numberSystem ?\n * @param {boolean} needSymbols ?\n * @param {boolean} blazorMode ?\n * @returns {Object} ?\n */\n ParserBase.getCurrentNumericOptions = function (curObj, numberSystem, needSymbols, blazorMode) {\n var ret = {};\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem) || blazorMode) {\n var digits = blazorMode ? getValue('obj.mapperDigits', cur) : getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n ret.numericPair = this.reverseObject(digits, latnNumberSystem);\n var regExp = RegExp;\n ret.numberParseRegex = new regExp(this.constructRegex(digits), 'g');\n ret.numericRegex = '[' + digits[0] + '-' + digits[9] + ']';\n if (needSymbols) {\n ret.numericRegex = digits[0] + '-' + digits[9];\n ret.symbolNumberSystem = getValue(blazorMode ? 'numberSymbols' : 'symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.symbolMatch = this.getSymbolMatch(ret.symbolNumberSystem);\n ret.numberSystem = cur.nSystem;\n }\n }\n }\n return ret;\n };\n /**\n * Returns number mapper object for the provided cldr data\n *\n * @param {Object} curObj ?\n * @param {Object} numberSystem ?\n * @param {boolean} isNumber ?\n * @returns {NumberMapper} ?\n */\n ParserBase.getNumberMapper = function (curObj, numberSystem, isNumber) {\n var ret = { mapper: {} };\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem)) {\n ret.numberSystem = cur.nSystem;\n ret.numberSymbols = getValue('symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.timeSeparator = getValue('timeSeparator', ret.numberSymbols);\n var digits = getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n for (var _i = 0, latnNumberSystem_1 = latnNumberSystem; _i < latnNumberSystem_1.length; _i++) {\n var i = latnNumberSystem_1[_i];\n ret.mapper[parseInt(i.toString(), 10)] = digits[parseInt(i.toString(), 10)];\n }\n }\n }\n return ret;\n };\n ParserBase.nPair = 'numericPair';\n ParserBase.nRegex = 'numericRegex';\n ParserBase.numberingSystems = defaultNumberingSystem;\n return ParserBase;\n}());\nexport { ParserBase };\n/**\n * @private\n */\nvar blazorCurrencyData = {\n 'DJF': 'Fdj',\n 'ERN': 'Nfk',\n 'ETB': 'Br',\n 'NAD': '$',\n 'ZAR': 'R',\n 'XAF': 'FCFA',\n 'GHS': 'GH₵',\n 'XDR': 'XDR',\n 'AED': 'د.إ.',\n 'BHD': 'د.ب.',\n 'DZD': 'د.ج.',\n 'EGP': 'ج.م.',\n 'ILS': '₪',\n 'IQD': 'د.ع.',\n 'JOD': 'د.ا.',\n 'KMF': 'CF',\n 'KWD': 'د.ك.',\n 'LBP': 'ل.ل.',\n 'LYD': 'د.ل.',\n 'MAD': 'د.م.',\n 'MRU': 'أ.م.',\n 'OMR': 'ر.ع.',\n 'QAR': 'ر.ق.',\n 'SAR': 'ر.س.',\n 'SDG': 'ج.س.',\n 'SOS': 'S',\n 'SSP': '£',\n 'SYP': 'ل.س.',\n 'TND': 'د.ت.',\n 'YER': 'ر.ي.',\n 'CLP': '$',\n 'INR': '₹',\n 'TZS': 'TSh',\n 'EUR': '€',\n 'AZN': '₼',\n 'RUB': '₽',\n 'BYN': 'Br',\n 'ZMW': 'K',\n 'BGN': 'лв.',\n 'NGN': '₦',\n 'XOF': 'CFA',\n 'BDT': '৳',\n 'CNY': '¥',\n 'BAM': 'КМ',\n 'UGX': 'USh',\n 'USD': '$',\n 'CZK': 'Kč',\n 'GBP': '£',\n 'DKK': 'kr.',\n 'KES': 'Ksh',\n 'CHF': 'CHF',\n 'MVR': 'ރ.',\n 'BTN': 'Nu.',\n 'XCD': 'EC$',\n 'AUD': '$',\n 'BBD': '$',\n 'BIF': 'FBu',\n 'BMD': '$',\n 'BSD': '$',\n 'BWP': 'P',\n 'BZD': '$',\n 'CAD': '$',\n 'NZD': '$',\n 'FJD': '$',\n 'FKP': '£',\n 'GIP': '£',\n 'GMD': 'D',\n 'GYD': '$',\n 'HKD': '$',\n 'IDR': 'Rp',\n 'JMD': '$',\n 'KYD': '$',\n 'LRD': '$',\n 'MGA': 'Ar',\n 'MOP': 'MOP$',\n 'MUR': 'Rs',\n 'MWK': 'MK',\n 'MYR': 'RM',\n 'PGK': 'K',\n 'PHP': '₱',\n 'PKR': 'Rs',\n 'RWF': 'RF',\n 'SBD': '$',\n 'SCR': 'SR',\n 'SEK': 'kr',\n 'SGD': '$',\n 'SHP': '£',\n 'SLL': 'Le',\n 'ANG': 'NAf.',\n 'SZL': 'E',\n 'TOP': 'T$',\n 'TTD': '$',\n 'VUV': 'VT',\n 'WST': 'WS$',\n 'ARS': '$',\n 'BOB': 'Bs',\n 'BRL': 'R$',\n 'COP': '$',\n 'CRC': '₡',\n 'CUP': '$',\n 'DOP': '$',\n 'GTQ': 'Q',\n 'HNL': 'L',\n 'MXN': '$',\n 'NIO': 'C$',\n 'PAB': 'B/.',\n 'PEN': 'S/',\n 'PYG': '₲',\n 'UYU': '$',\n 'VES': 'Bs.S',\n 'IRR': 'ريال',\n 'GNF': 'FG',\n 'CDF': 'FC',\n 'HTG': 'G',\n 'XPF': 'FCFP',\n 'HRK': 'kn',\n 'HUF': 'Ft',\n 'AMD': '֏',\n 'ISK': 'kr',\n 'JPY': '¥',\n 'GEL': '₾',\n 'CVE': '​',\n 'KZT': '₸',\n 'KHR': '៛',\n 'KPW': '₩',\n 'KRW': '₩',\n 'KGS': 'сом',\n 'AOA': 'Kz',\n 'LAK': '₭',\n 'MZN': 'MTn',\n 'MKD': 'ден',\n 'MNT': '₮',\n 'BND': '$',\n 'MMK': 'K',\n 'NOK': 'kr',\n 'NPR': 'रु',\n 'AWG': 'Afl.',\n 'SRD': '$',\n 'PLN': 'zł',\n 'AFN': '؋',\n 'STN': 'Db',\n 'MDL': 'L',\n 'RON': 'lei',\n 'UAH': '₴',\n 'LKR': 'රු.',\n 'ALL': 'Lekë',\n 'RSD': 'дин.',\n 'TJS': 'смн',\n 'THB': '฿',\n 'TMT': 'm.',\n 'TRY': '₺',\n 'UZS': 'сўм',\n 'VND': '₫',\n 'TWD': 'NT$'\n};\n/**\n *\n * @param {string} currencyCode ?\n * @returns {string} ?\n */\nexport function getBlazorCurrencySymbol(currencyCode) {\n return getValue(currencyCode || '', blazorCurrencyData);\n}\n","/***\n * Hijri parser\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var HijriParser;\n(function (HijriParser) {\n var dateCorrection = [28607, 28636, 28665, 28695, 28724, 28754, 28783, 28813, 28843, 28872, 28901, 28931, 28960, 28990,\n 29019, 29049, 29078, 29108, 29137, 29167, 29196, 29226, 29255, 29285, 29315, 29345, 29375, 29404, 29434, 29463, 29492, 29522,\n 29551, 29580, 29610, 29640, 29669, 29699, 29729, 29759, 29788, 29818, 29847, 29876, 29906, 29935, 29964, 29994, 30023, 30053,\n 30082, 30112, 30141, 30171, 30200, 30230, 30259, 30289, 30318, 30348, 30378, 30408, 30437, 30467, 30496, 30526, 30555, 30585,\n 30614, 30644, 30673, 30703, 30732, 30762, 30791, 30821, 30850, 30880, 30909, 30939, 30968, 30998, 31027, 31057, 31086, 31116,\n 31145, 31175, 31204, 31234, 31263, 31293, 31322, 31352, 31381, 31411, 31441, 31471, 31500, 31530, 31559, 31589, 31618, 31648,\n 31676, 31706, 31736, 31766, 31795, 31825, 31854, 31884, 31913, 31943, 31972, 32002, 32031, 32061, 32090, 32120, 32150, 32180,\n 32209, 32239, 32268, 32298, 32327, 32357, 32386, 32416, 32445, 32475, 32504, 32534, 32563, 32593, 32622, 32652, 32681, 32711,\n 32740, 32770, 32799, 32829, 32858, 32888, 32917, 32947, 32976, 33006, 33035, 33065, 33094, 33124, 33153, 33183, 33213, 33243,\n 33272, 33302, 33331, 33361, 33390, 33420, 33450, 33479, 33509, 33539, 33568, 33598, 33627, 33657, 33686, 33716, 33745, 33775,\n 33804, 33834, 33863, 33893, 33922, 33952, 33981, 34011, 34040, 34069, 34099, 34128, 34158, 34187, 34217, 34247, 34277, 34306,\n 34336, 34365, 34395, 34424, 34454, 34483, 34512, 34542, 34571, 34601, 34631, 34660, 34690, 34719, 34749, 34778, 34808, 34837,\n 34867, 34896, 34926, 34955, 34985, 35015, 35044, 35074, 35103, 35133, 35162, 35192, 35222, 35251, 35280, 35310, 35340, 35370,\n 35399, 35429, 35458, 35488, 35517, 35547, 35576, 35605, 35635, 35665, 35694, 35723, 35753, 35782, 35811, 35841, 35871, 35901,\n 35930, 35960, 35989, 36019, 36048, 36078, 36107, 36136, 36166, 36195, 36225, 36254, 36284, 36314, 36343, 36373, 36403, 36433,\n 36462, 36492, 36521, 36551, 36580, 36610, 36639, 36669, 36698, 36728, 36757, 36786, 36816, 36845, 36875, 36904, 36934, 36963,\n 36993, 37022, 37052, 37081, 37111, 37141, 37170, 37200, 37229, 37259, 37288, 37318, 37347, 37377, 37406, 37436, 37465, 37495,\n 37524, 37554, 37584, 37613, 37643, 37672, 37701, 37731, 37760, 37790, 37819, 37849, 37878, 37908, 37938, 37967, 37997, 38027,\n 38056, 38085, 38115, 38144, 38174, 38203, 38233, 38262, 38292, 38322, 38351, 38381, 38410, 38440, 38469, 38499, 38528, 38558,\n 38587, 38617, 38646, 38676, 38705, 38735, 38764, 38794, 38823, 38853, 38882, 38912, 38941, 38971, 39001, 39030, 39059, 39089,\n 39118, 39148, 39178, 39208, 39237, 39267, 39297, 39326, 39355, 39385, 39414, 39444, 39473, 39503, 39532, 39562, 39592, 39621,\n 39650, 39680, 39709, 39739, 39768, 39798, 39827, 39857, 39886, 39916, 39946, 39975, 40005, 40035, 40064, 40094, 40123, 40153,\n 40182, 40212, 40241, 40271, 40300, 40330, 40359, 40389, 40418, 40448, 40477, 40507, 40536, 40566, 40595, 40625, 40655, 40685,\n 40714, 40744, 40773, 40803, 40832, 40862, 40892, 40921, 40951, 40980, 41009, 41039, 41068, 41098, 41127, 41157, 41186, 41216,\n 41245, 41275, 41304, 41334, 41364, 41393, 41422, 41452, 41481, 41511, 41540, 41570, 41599, 41629, 41658, 41688, 41718, 41748,\n 41777, 41807, 41836, 41865, 41894, 41924, 41953, 41983, 42012, 42042, 42072, 42102, 42131, 42161, 42190, 42220, 42249, 42279,\n 42308, 42337, 42367, 42397, 42426, 42456, 42485, 42515, 42545, 42574, 42604, 42633, 42662, 42692, 42721, 42751, 42780, 42810,\n 42839, 42869, 42899, 42929, 42958, 42988, 43017, 43046, 43076, 43105, 43135, 43164, 43194, 43223, 43253, 43283, 43312, 43342,\n 43371, 43401, 43430, 43460, 43489, 43519, 43548, 43578, 43607, 43637, 43666, 43696, 43726, 43755, 43785, 43814, 43844, 43873,\n 43903, 43932, 43962, 43991, 44021, 44050, 44080, 44109, 44139, 44169, 44198, 44228, 44258, 44287, 44317, 44346, 44375, 44405,\n 44434, 44464, 44493, 44523, 44553, 44582, 44612, 44641, 44671, 44700, 44730, 44759, 44788, 44818, 44847, 44877, 44906, 44936,\n 44966, 44996, 45025, 45055, 45084, 45114, 45143, 45172, 45202, 45231, 45261, 45290, 45320, 45350, 45380, 45409, 45439, 45468,\n 45498, 45527, 45556, 45586, 45615, 45644, 45674, 45704, 45733, 45763, 45793, 45823, 45852, 45882, 45911, 45940, 45970, 45999,\n 46028, 46058, 46088, 46117, 46147, 46177, 46206, 46236, 46265, 46295, 46324, 46354, 46383, 46413, 46442, 46472, 46501, 46531,\n 46560, 46590, 46620, 46649, 46679, 46708, 46738, 46767, 46797, 46826, 46856, 46885, 46915, 46944, 46974, 47003, 47033, 47063,\n 47092, 47122, 47151, 47181, 47210, 47240, 47269, 47298, 47328, 47357, 47387, 47417, 47446, 47476, 47506, 47535, 47565, 47594,\n 47624, 47653, 47682, 47712, 47741, 47771, 47800, 47830, 47860, 47890, 47919, 47949, 47978, 48008, 48037, 48066, 48096, 48125,\n 48155, 48184, 48214, 48244, 48273, 48303, 48333, 48362, 48392, 48421, 48450, 48480, 48509, 48538, 48568, 48598, 48627, 48657,\n 48687, 48717, 48746, 48776, 48805, 48834, 48864, 48893, 48922, 48952, 48982, 49011, 49041, 49071, 49100, 49130, 49160, 49189,\n 49218, 49248, 49277, 49306, 49336, 49365, 49395, 49425, 49455, 49484, 49514, 49543, 49573, 49602, 49632, 49661, 49690, 49720,\n 49749, 49779, 49809, 49838, 49868, 49898, 49927, 49957, 49986, 50016, 50045, 50075, 50104, 50133, 50163, 50192, 50222, 50252,\n 50281, 50311, 50340, 50370, 50400, 50429, 50459, 50488, 50518, 50547, 50576, 50606, 50635, 50665, 50694, 50724, 50754, 50784,\n 50813, 50843, 50872, 50902, 50931, 50960, 50990, 51019, 51049, 51078, 51108, 51138, 51167, 51197, 51227, 51256, 51286, 51315,\n 51345, 51374, 51403, 51433, 51462, 51492, 51522, 51552, 51582, 51611, 51641, 51670, 51699, 51729, 51758, 51787, 51816, 51846,\n 51876, 51906, 51936, 51965, 51995, 52025, 52054, 52083, 52113, 52142, 52171, 52200, 52230, 52260, 52290, 52319, 52349, 52379,\n 52408, 52438, 52467, 52497, 52526, 52555, 52585, 52614, 52644, 52673, 52703, 52733, 52762, 52792, 52822, 52851, 52881, 52910,\n 52939, 52969, 52998, 53028, 53057, 53087, 53116, 53146, 53176, 53205, 53235, 53264, 53294, 53324, 53353, 53383, 53412, 53441,\n 53471, 53500, 53530, 53559, 53589, 53619, 53648, 53678, 53708, 53737, 53767, 53796, 53825, 53855, 53884, 53913, 53943, 53973,\n 54003, 54032, 54062, 54092, 54121, 54151, 54180, 54209, 54239, 54268, 54297, 54327, 54357, 54387, 54416, 54446, 54476, 54505,\n 54535, 54564, 54593, 54623, 54652, 54681, 54711, 54741, 54770, 54800, 54830, 54859, 54889, 54919, 54948, 54977, 55007, 55036,\n 55066, 55095, 55125, 55154, 55184, 55213, 55243, 55273, 55302, 55332, 55361, 55391, 55420, 55450, 55479, 55508, 55538, 55567,\n 55597, 55627, 55657, 55686, 55716, 55745, 55775, 55804, 55834, 55863, 55892, 55922, 55951, 55981, 56011, 56040, 56070, 56100,\n 56129, 56159, 56188, 56218, 56247, 56276, 56306, 56335, 56365, 56394, 56424, 56454, 56483, 56513, 56543, 56572, 56601, 56631,\n 56660, 56690, 56719, 56749, 56778, 56808, 56837, 56867, 56897, 56926, 56956, 56985, 57015, 57044, 57074, 57103, 57133, 57162,\n 57192, 57221, 57251, 57280, 57310, 57340, 57369, 57399, 57429, 57458, 57487, 57517, 57546, 57576, 57605, 57634, 57664, 57694,\n 57723, 57753, 57783, 57813, 57842, 57871, 57901, 57930, 57959, 57989, 58018, 58048, 58077, 58107, 58137, 58167, 58196, 58226,\n 58255, 58285, 58314, 58343, 58373, 58402, 58432, 58461, 58491, 58521, 58551, 58580, 58610, 58639, 58669, 58698, 58727, 58757,\n 58786, 58816, 58845, 58875, 58905, 58934, 58964, 58994, 59023, 59053, 59082, 59111, 59141, 59170, 59200, 59229, 59259, 59288,\n 59318, 59348, 59377, 59407, 59436, 59466, 59495, 59525, 59554, 59584, 59613, 59643, 59672, 59702, 59731, 59761, 59791, 59820,\n 59850, 59879, 59909, 59939, 59968, 59997, 60027, 60056, 60086, 60115, 60145, 60174, 60204, 60234, 60264, 60293, 60323, 60352,\n 60381, 60411, 60440, 60469, 60499, 60528, 60558, 60588, 60618, 60648, 60677, 60707, 60736, 60765, 60795, 60824, 60853, 60883,\n 60912, 60942, 60972, 61002, 61031, 61061, 61090, 61120, 61149, 61179, 61208, 61237, 61267, 61296, 61326, 61356, 61385, 61415,\n 61445, 61474, 61504, 61533, 61563, 61592, 61621, 61651, 61680, 61710, 61739, 61769, 61799, 61828, 61858, 61888, 61917, 61947,\n 61976, 62006, 62035, 62064, 62094, 62123, 62153, 62182, 62212, 62242, 62271, 62301, 62331, 62360, 62390, 62419, 62448, 62478,\n 62507, 62537, 62566, 62596, 62625, 62655, 62685, 62715, 62744, 62774, 62803, 62832, 62862, 62891, 62921, 62950, 62980, 63009,\n 63039, 63069, 63099, 63128, 63157, 63187, 63216, 63246, 63275, 63305, 63334, 63363, 63393, 63423, 63453, 63482, 63512, 63541,\n 63571, 63600, 63630, 63659, 63689, 63718, 63747, 63777, 63807, 63836, 63866, 63895, 63925, 63955, 63984, 64014, 64043, 64073,\n 64102, 64131, 64161, 64190, 64220, 64249, 64279, 64309, 64339, 64368, 64398, 64427, 64457, 64486, 64515, 64545, 64574, 64603,\n 64633, 64663, 64692, 64722, 64752, 64782, 64811, 64841, 64870, 64899, 64929, 64958, 64987, 65017, 65047, 65076, 65106, 65136,\n 65166, 65195, 65225, 65254, 65283, 65313, 65342, 65371, 65401, 65431, 65460, 65490, 65520, 65549, 65579, 65608, 65638, 65667,\n 65697, 65726, 65755, 65785, 65815, 65844, 65874, 65903, 65933, 65963, 65992, 66022, 66051, 66081, 66110, 66140, 66169, 66199,\n 66228, 66258, 66287, 66317, 66346, 66376, 66405, 66435, 66465, 66494, 66524, 66553, 66583, 66612, 66641, 66671, 66700, 66730,\n 66760, 66789, 66819, 66849, 66878, 66908, 66937, 66967, 66996, 67025, 67055, 67084, 67114, 67143, 67173, 67203, 67233, 67262,\n 67292, 67321, 67351, 67380, 67409, 67439, 67468, 67497, 67527, 67557, 67587, 67617, 67646, 67676, 67705, 67735, 67764, 67793,\n 67823, 67852, 67882, 67911, 67941, 67971, 68000, 68030, 68060, 68089, 68119, 68148, 68177, 68207, 68236, 68266, 68295, 68325,\n 68354, 68384, 68414, 68443, 68473, 68502, 68532, 68561, 68591, 68620, 68650, 68679, 68708, 68738, 68768, 68797, 68827, 68857,\n 68886, 68916, 68946, 68975, 69004, 69034, 69063, 69092, 69122, 69152, 69181, 69211, 69240, 69270, 69300, 69330, 69359, 69388,\n 69418, 69447, 69476, 69506, 69535, 69565, 69595, 69624, 69654, 69684, 69713, 69743, 69772, 69802, 69831, 69861, 69890, 69919,\n 69949, 69978, 70008, 70038, 70067, 70097, 70126, 70156, 70186, 70215, 70245, 70274, 70303, 70333, 70362, 70392, 70421, 70451,\n 70481, 70510, 70540, 70570, 70599, 70629, 70658, 70687, 70717, 70746, 70776, 70805, 70835, 70864, 70894, 70924, 70954, 70983,\n 71013, 71042, 71071, 71101, 71130, 71159, 71189, 71218, 71248, 71278, 71308, 71337, 71367, 71397, 71426, 71455, 71485, 71514,\n 71543, 71573, 71602, 71632, 71662, 71691, 71721, 71751, 71781, 71810, 71839, 71869, 71898, 71927, 71957, 71986, 72016, 72046,\n 72075, 72105, 72135, 72164, 72194, 72223, 72253, 72282, 72311, 72341, 72370, 72400, 72429, 72459, 72489, 72518, 72548, 72577,\n 72607, 72637, 72666, 72695, 72725, 72754, 72784, 72813, 72843, 72872, 72902, 72931, 72961, 72991, 73020, 73050, 73080, 73109,\n 73139, 73168, 73197, 73227, 73256, 73286, 73315, 73345, 73375, 73404, 73434, 73464, 73493, 73523, 73552, 73581, 73611, 73640,\n 73669, 73699, 73729, 73758, 73788, 73818, 73848, 73877, 73907, 73936, 73965, 73995, 74024, 74053, 74083, 74113, 74142, 74172,\n 74202, 74231, 74261, 74291, 74320, 74349, 74379, 74408, 74437, 74467, 74497, 74526, 74556, 74586, 74615, 74645, 74675, 74704,\n 74733, 74763, 74792, 74822, 74851, 74881, 74910, 74940, 74969, 74999, 75029, 75058, 75088, 75117, 75147, 75176, 75206, 75235,\n 75264, 75294, 75323, 75353, 75383, 75412, 75442, 75472, 75501, 75531, 75560, 75590, 75619, 75648, 75678, 75707, 75737, 75766,\n 75796, 75826, 75856, 75885, 75915, 75944, 75974, 76003, 76032, 76062, 76091, 76121, 76150, 76180, 76210, 76239, 76269, 76299,\n 76328, 76358, 76387, 76416, 76446, 76475, 76505, 76534, 76564, 76593, 76623, 76653, 76682, 76712, 76741, 76771, 76801, 76830,\n 76859, 76889, 76918, 76948, 76977, 77007, 77036, 77066, 77096, 77125, 77155, 77185, 77214, 77243, 77273, 77302, 77332, 77361,\n 77390, 77420, 77450, 77479, 77509, 77539, 77569, 77598, 77627, 77657, 77686, 77715, 77745, 77774, 77804, 77833, 77863, 77893,\n 77923, 77952, 77982, 78011, 78041, 78070, 78099, 78129, 78158, 78188, 78217, 78247, 78277, 78307, 78336, 78366, 78395, 78425,\n 78454, 78483, 78513, 78542, 78572, 78601, 78631, 78661, 78690, 78720, 78750, 78779, 78808, 78838, 78867, 78897, 78926, 78956,\n 78985, 79015, 79044, 79074, 79104, 79133, 79163, 79192, 79222, 79251, 79281, 79310, 79340, 79369, 79399, 79428, 79458, 79487,\n 79517, 79546, 79576, 79606, 79635, 79665, 79695, 79724, 79753, 79783, 79812, 79841, 79871, 79900, 79930, 79960, 79990\n ];\n /**\n *\n * @param {Date} gDate ?\n * @returns {Object} ?\n */\n function getHijriDate(gDate) {\n var day = gDate.getDate();\n var month = gDate.getMonth();\n var year = gDate.getFullYear();\n var tMonth = month + 1;\n var tYear = year;\n if (tMonth < 3) {\n tYear -= 1;\n tMonth += 12;\n }\n var yPrefix = Math.floor(tYear / 100);\n var julilanOffset = yPrefix - Math.floor(yPrefix / 4.) - 2;\n var julianNumber = Math.floor(365.25 * (tYear + 4716)) + Math.floor(30.6001 * (tMonth + 1)) + day - julilanOffset - 1524;\n yPrefix = Math.floor((julianNumber - 1867216.25) / 36524.25);\n julilanOffset = yPrefix - Math.floor(yPrefix / 4.) + 1;\n var b = julianNumber + julilanOffset + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var tempMonth = Math.floor((b - d) / 30.6001);\n day = (b - d) - Math.floor(30.6001 * tempMonth);\n month = Math.floor((b - d) / 20.6001);\n if (month > 13) {\n c += 1;\n month -= 12;\n }\n month -= 1;\n year = c - 4716;\n var modifiedJulianDate = julianNumber - 2400000;\n // date calculation for year after 2077\n var iyear = 10631 / 30;\n var z = julianNumber - 1948084;\n var cyc = Math.floor(z / 10631.);\n z = z - 10631 * cyc;\n var j = Math.floor((z - 0.1335) / iyear);\n var iy = 30 * cyc + j;\n z = z - Math.floor(j * iyear + 0.1335);\n var im = Math.floor((z + 28.5001) / 29.5);\n /* istanbul ignore next */\n if (im === 13) {\n im = 12;\n }\n var tempDay = z - Math.floor(29.5001 * im - 29);\n var i = 0;\n for (; i < dateCorrection.length; i++) {\n if (dateCorrection[parseInt(i.toString(), 10)] > modifiedJulianDate) {\n break;\n }\n }\n var iln = i + 16260;\n var ii = Math.floor((iln - 1) / 12);\n var hYear = ii + 1;\n var hmonth = iln - 12 * ii;\n var hDate = modifiedJulianDate - dateCorrection[i - 1] + 1;\n if ((hDate + '').length > 2) {\n hDate = tempDay;\n hmonth = im;\n hYear = iy;\n }\n return { year: hYear, month: hmonth, date: hDate };\n }\n HijriParser.getHijriDate = getHijriDate;\n /**\n *\n * @param {number} year ?\n * @param {number} month ?\n * @param {number} day ?\n * @returns {Date} ?\n */\n function toGregorian(year, month, day) {\n var iy = year;\n var im = month;\n var id = day;\n var ii = iy - 1;\n var iln = (ii * 12) + 1 + (im - 1);\n var i = iln - 16260;\n var mcjdn = id + dateCorrection[i - 1] - 1;\n var julianDate = mcjdn + 2400000;\n var z = Math.floor(julianDate + 0.5);\n var a = Math.floor((z - 1867216.25) / 36524.25);\n a = z + 1 + a - Math.floor(a / 4);\n var b = a + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var e = Math.floor((b - d) / 30.6001);\n var gDay = b - d - Math.floor(e * 30.6001);\n var gMonth = e - (e > 13.5 ? 13 : 1);\n var gYear = c - (gMonth > 2.5 ? 4716 : 4715);\n /* istanbul ignore next */\n if (gYear <= 0) {\n gMonth--;\n } // No year zero\n return new Date(gYear + '/' + (gMonth) + '/' + gDay);\n }\n HijriParser.toGregorian = toGregorian;\n})(HijriParser || (HijriParser = {}));\n","import { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nimport { isUndefined, throwError, getValue, isBlazor } from '../util';\nimport { HijriParser } from '../hijri-parser';\nimport { isNullOrUndefined, extend } from '../util';\nvar abbreviateRegexGlobal = /\\/MMMMM|MMMM|MMM|a|LLLL|LLL|EEEEE|EEEE|E|K|cccc|ccc|WW|W|G+|z+/gi;\nvar standalone = 'stand-alone';\nvar weekdayKey = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\nexport var basicPatterns = ['short', 'medium', 'long', 'full'];\nvar timeSetter = {\n m: 'getMinutes',\n h: 'getHours',\n H: 'getHours',\n s: 'getSeconds',\n d: 'getDate',\n f: 'getMilliseconds'\n};\nexport var datePartMatcher = {\n 'M': 'month',\n 'd': 'day',\n 'E': 'weekday',\n 'c': 'weekday',\n 'y': 'year',\n 'm': 'minute',\n 'h': 'hour',\n 'H': 'hour',\n 's': 'second',\n 'L': 'month',\n 'a': 'designator',\n 'z': 'timeZone',\n 'Z': 'timeZone',\n 'G': 'era',\n 'f': 'milliseconds'\n};\nvar timeSeparator = 'timeSeparator';\n/**\n * Date Format is a framework provides support for date formatting.\n *\n * @private\n */\nvar DateFormat = /** @class */ (function () {\n function DateFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} option - Specific the format in which date will format.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n DateFormat.dateFormat = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n var numObject = getValue('parserObject.numbers', dependable);\n var dateObject = dependable.dateObject;\n var formatOptions = { isIslamic: base.islamicRegex.test(option.calendar) };\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n formatOptions.dateSeperator = isBlazor() ? getValue('dateSeperator', dateObject) : base.getDateSeparator(dependable.dateObject);\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n if (isBlazor()) {\n resPattern = resPattern.replace(/tt/, 'a');\n }\n formatOptions.pattern = resPattern;\n formatOptions.numMapper = isBlazor() ?\n extend({}, numObject) : parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n var patternMatch = resPattern.match(abbreviateRegexGlobal) || [];\n for (var _i = 0, patternMatch_1 = patternMatch; _i < patternMatch_1.length; _i++) {\n var str = patternMatch_1[_i];\n var len = str.length;\n var char = str[0];\n if (char === 'K') {\n char = 'h';\n }\n switch (char) {\n case 'E':\n case 'c':\n if (isBlazor()) {\n formatOptions.weekday = getValue('days.' + base.monthIndex[\"\" + len], dateObject);\n }\n else {\n formatOptions.weekday = dependable.dateObject[\"\" + base.days][\"\" + standalone][base.monthIndex[\"\" + len]];\n }\n break;\n case 'M':\n case 'L':\n if (isBlazor()) {\n formatOptions.month = getValue('months.' + base.monthIndex[\"\" + len], dateObject);\n }\n else {\n formatOptions.month = dependable.dateObject[\"\" + base.month][\"\" + standalone][base.monthIndex[\"\" + len]];\n }\n break;\n case 'a':\n formatOptions.designator = isBlazor() ?\n getValue('dayPeriods', dateObject) : getValue('dayPeriods.format.wide', dateObject);\n break;\n case 'G': {\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n formatOptions.era = isBlazor() ? getValue('eras', dateObject) : getValue('eras.' + eText, dependable.dateObject);\n break;\n }\n case 'z':\n formatOptions.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n break;\n }\n }\n }\n return function (value) {\n if (isNaN(value.getDate())) {\n return null;\n }\n return _this.intDateFormatter(value, formatOptions);\n };\n };\n /**\n * Returns formatted date string based on options passed.\n *\n * @param {Date} value ?\n * @param {FormatOptions} options ?\n * @returns {string} ?\n */\n DateFormat.intDateFormatter = function (value, options) {\n var pattern = options.pattern;\n var ret = '';\n var matches = pattern.match(base.dateParseRegex);\n var dObject = this.getCurrentDateValue(value, options.isIslamic);\n for (var _i = 0, matches_1 = matches; _i < matches_1.length; _i++) {\n var match = matches_1[_i];\n var length_1 = match.length;\n var char = match[0];\n if (char === 'K') {\n char = 'h';\n }\n var curval = void 0;\n var curvalstr = '';\n var isNumber = void 0;\n var processNumber = void 0;\n var curstr = '';\n switch (char) {\n case 'M':\n case 'L':\n curval = dObject.month;\n if (length_1 > 2) {\n ret += options.month[\"\" + curval];\n }\n else {\n isNumber = true;\n }\n break;\n case 'E':\n case 'c':\n ret += options.weekday[\"\" + weekdayKey[value.getDay()]];\n break;\n case 'H':\n case 'h':\n case 'm':\n case 's':\n case 'd':\n case 'f':\n isNumber = true;\n if (char === 'd') {\n curval = dObject.date;\n }\n else if (char === 'f') {\n isNumber = false;\n processNumber = true;\n curvalstr = value[\"\" + timeSetter[\"\" + char]]().toString();\n curvalstr = curvalstr.substring(0, length_1);\n var curlength = curvalstr.length;\n if (length_1 !== curlength) {\n if (length_1 > 3) {\n continue;\n }\n for (var i = 0; i < length_1 - curlength; i++) {\n curvalstr = '0' + curvalstr.toString();\n }\n }\n curstr += curvalstr;\n }\n else {\n curval = value[\"\" + timeSetter[\"\" + char]]();\n }\n if (char === 'h') {\n curval = curval % 12 || 12;\n }\n break;\n case 'y':\n processNumber = true;\n curstr += dObject.year;\n if (length_1 === 2) {\n curstr = curstr.substr(curstr.length - 2);\n }\n break;\n case 'a': {\n var desig = value.getHours() < 12 ? 'am' : 'pm';\n ret += options.designator[\"\" + desig];\n break;\n }\n case 'G': {\n var dec = value.getFullYear() < 0 ? 0 : 1;\n var retu = options.era[\"\" + dec];\n if (isNullOrUndefined(retu)) {\n retu = options.era[dec ? 0 : 1];\n }\n ret += retu || '';\n break;\n }\n case '\\'':\n ret += (match === '\\'\\'') ? '\\'' : match.replace(/'/g, '');\n break;\n case 'z': {\n var timezone = value.getTimezoneOffset();\n var pattern_1 = (length_1 < 4) ? '+H;-H' : options.timeZone.hourFormat;\n pattern_1 = pattern_1.replace(/:/g, options.numMapper.timeSeparator);\n if (timezone === 0) {\n ret += options.timeZone.gmtZeroFormat;\n }\n else {\n processNumber = true;\n curstr = this.getTimeZoneValue(timezone, pattern_1);\n }\n curstr = options.timeZone.gmtFormat.replace(/\\{0\\}/, curstr);\n break;\n }\n case ':':\n ret += options.numMapper.numberSymbols[\"\" + timeSeparator];\n break;\n case '/':\n ret += options.dateSeperator;\n break;\n case 'W':\n isNumber = true;\n curval = base.getWeekOfYear(value);\n break;\n default:\n ret += match;\n }\n if (isNumber) {\n processNumber = true;\n curstr = this.checkTwodigitNumber(curval, length_1);\n }\n if (processNumber) {\n ret += parser.convertValueParts(curstr, base.latnParseRegex, options.numMapper.mapper);\n }\n }\n return ret;\n };\n DateFormat.getCurrentDateValue = function (value, isIslamic) {\n if (isIslamic) {\n return HijriParser.getHijriDate(value);\n }\n return { year: value.getFullYear(), month: value.getMonth() + 1, date: value.getDate() };\n };\n /**\n * Returns two digit numbers for given value and length\n *\n * @param {number} val ?\n * @param {number} len ?\n * @returns {string} ?\n */\n DateFormat.checkTwodigitNumber = function (val, len) {\n var ret = val + '';\n if (len === 2 && ret.length !== 2) {\n return '0' + ret;\n }\n return ret;\n };\n /**\n * Returns the value of the Time Zone.\n *\n * @param {number} tVal ?\n * @param {string} pattern ?\n * @returns {string} ?\n * @private\n */\n DateFormat.getTimeZoneValue = function (tVal, pattern) {\n var _this = this;\n var splt = pattern.split(';');\n var curPattern = splt[tVal > 0 ? 1 : 0];\n var no = Math.abs(tVal);\n return curPattern = curPattern.replace(/HH?|mm/g, function (str) {\n var len = str.length;\n var ishour = str.indexOf('H') !== -1;\n return _this.checkTwodigitNumber(Math.floor(ishour ? (no / 60) : (no % 60)), len);\n });\n };\n return DateFormat;\n}());\nexport { DateFormat };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isUndefined, throwError, isNullOrUndefined, extend, isBlazor, getValue } from '../util';\nimport { defaultCurrencyCode } from '../internationalization';\nimport { IntlBase as base } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nvar errorText = {\n 'ms': 'minimumSignificantDigits',\n 'ls': 'maximumSignificantDigits',\n 'mf': 'minimumFractionDigits',\n 'lf': 'maximumFractionDigits'\n};\nvar percentSign = 'percentSign';\nvar minusSign = 'minusSign';\nvar mapper = ['infinity', 'nan', 'group', 'decimal', 'exponential'];\n/**\n * Module for number formatting.\n *\n * @private\n */\nvar NumberFormat = /** @class */ (function () {\n function NumberFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} option - Specific the format in which number will format.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n NumberFormat.numberFormatter = function (culture, option, cldr) {\n var _this = this;\n var fOptions = extend({}, option);\n var cOptions = {};\n var dOptions = {};\n var symbolPattern;\n var dependable = base.getDependables(cldr, culture, '', true);\n var numObject = dependable.numericObject;\n dOptions.numberMapper = isBlazor() ? extend({}, numObject) :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n dOptions.currencySymbol = isBlazor() ? getValue('currencySymbol', numObject) : base.getCurrencySymbol(dependable.numericObject, fOptions.currency || defaultCurrencyCode, option.altSymbol, option.ignoreCurrency);\n dOptions.percentSymbol = isBlazor() ? getValue('numberSymbols.percentSign', numObject) :\n dOptions.numberMapper.numberSymbols[\"\" + percentSign];\n dOptions.minusSymbol = isBlazor() ? getValue('numberSymbols.minusSign', numObject) :\n dOptions.numberMapper.numberSymbols[\"\" + minusSign];\n var symbols = dOptions.numberMapper.numberSymbols;\n if ((option.format) && !(base.formatRegex.test(option.format))) {\n cOptions = base.customFormat(option.format, dOptions, dependable.numericObject);\n if (!isUndefined(fOptions.useGrouping) && fOptions.useGrouping) {\n fOptions.useGrouping = cOptions.pData.useGrouping;\n }\n }\n else {\n extend(fOptions, base.getProperNumericSkeleton(option.format || 'N'));\n fOptions.isCurrency = fOptions.type === 'currency';\n fOptions.isPercent = fOptions.type === 'percent';\n if (!isBlazor()) {\n symbolPattern = base.getSymbolPattern(fOptions.type, dOptions.numberMapper.numberSystem, dependable.numericObject, fOptions.isAccount);\n }\n fOptions.groupOne = this.checkValueRange(fOptions.maximumSignificantDigits, fOptions.minimumSignificantDigits, true);\n this.checkValueRange(fOptions.maximumFractionDigits, fOptions.minimumFractionDigits, false, true);\n if (!isUndefined(fOptions.fractionDigits)) {\n fOptions.minimumFractionDigits = fOptions.maximumFractionDigits = fOptions.fractionDigits;\n }\n if (isUndefined(fOptions.useGrouping)) {\n fOptions.useGrouping = true;\n }\n if (fOptions.isCurrency && !isBlazor()) {\n symbolPattern = symbolPattern.replace(/\\u00A4/g, base.defaultCurrency);\n }\n if (!isBlazor()) {\n var split = symbolPattern.split(';');\n cOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, dOptions.currencySymbol);\n cOptions.pData = base.getFormatData(split[0], false, dOptions.currencySymbol);\n if (fOptions.useGrouping) {\n fOptions.groupSeparator = symbols[mapper[2]];\n fOptions.groupData = this.getGroupingDetails(split[0]);\n }\n }\n else {\n cOptions.nData = extend({}, {}, getValue(fOptions.type + 'nData', numObject));\n cOptions.pData = extend({}, {}, getValue(fOptions.type + 'pData', numObject));\n if (fOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([cOptions.pData, cOptions.nData], dOptions.currencySymbol, option.currency);\n }\n }\n var minFrac = isUndefined(fOptions.minimumFractionDigits);\n if (minFrac) {\n fOptions.minimumFractionDigits = cOptions.nData.minimumFraction;\n }\n if (isUndefined(fOptions.maximumFractionDigits)) {\n var mval = cOptions.nData.maximumFraction;\n fOptions.maximumFractionDigits = isUndefined(mval) && fOptions.isPercent ? 0 : mval;\n }\n var mfrac = fOptions.minimumFractionDigits;\n var lfrac = fOptions.maximumFractionDigits;\n if (!isUndefined(mfrac) && !isUndefined(lfrac)) {\n if (mfrac > lfrac) {\n fOptions.maximumFractionDigits = mfrac;\n }\n }\n }\n extend(cOptions.nData, fOptions);\n extend(cOptions.pData, fOptions);\n return function (value) {\n if (isNaN(value)) {\n return symbols[mapper[1]];\n }\n else if (!isFinite(value)) {\n return symbols[mapper[0]];\n }\n return _this.intNumberFormatter(value, cOptions, dOptions, option);\n };\n };\n /**\n * Returns grouping details for the pattern provided\n *\n * @param {string} pattern ?\n * @returns {GroupDetails} ?\n */\n NumberFormat.getGroupingDetails = function (pattern) {\n var ret = {};\n var match = pattern.match(base.negativeDataRegex);\n if (match && match[4]) {\n var pattern_1 = match[4];\n var p = pattern_1.lastIndexOf(',');\n if (p !== -1) {\n var temp = pattern_1.split('.')[0];\n ret.primary = (temp.length - p) - 1;\n var s = pattern_1.lastIndexOf(',', p - 1);\n if (s !== -1) {\n ret.secondary = p - 1 - s;\n }\n }\n }\n return ret;\n };\n /**\n * Returns if the provided integer range is valid.\n *\n * @param {number} val1 ?\n * @param {number} val2 ?\n * @param {boolean} checkbothExist ?\n * @param {boolean} isFraction ?\n * @returns {boolean} ?\n */\n NumberFormat.checkValueRange = function (val1, val2, checkbothExist, isFraction) {\n var decide = isFraction ? 'f' : 's';\n var dint = 0;\n var str1 = errorText['l' + decide];\n var str2 = errorText['m' + decide];\n if (!isUndefined(val1)) {\n this.checkRange(val1, str1, isFraction);\n dint++;\n }\n if (!isUndefined(val2)) {\n this.checkRange(val2, str2, isFraction);\n dint++;\n }\n if (dint === 2) {\n if (val1 < val2) {\n throwError(str2 + 'specified must be less than the' + str1);\n }\n else {\n return true;\n }\n }\n else if (checkbothExist && dint === 1) {\n throwError('Both' + str2 + 'and' + str2 + 'must be present');\n }\n return false;\n };\n /**\n * Check if the provided fraction range is valid\n *\n * @param {number} val ?\n * @param {string} text ?\n * @param {boolean} isFraction ?\n * @returns {void} ?\n */\n NumberFormat.checkRange = function (val, text, isFraction) {\n var range = isFraction ? [0, 20] : [1, 21];\n if (val < range[0] || val > range[1]) {\n throwError(text + 'value must be within the range' + range[0] + 'to' + range[1]);\n }\n };\n /**\n * Returns formatted numeric string for provided formatting options\n *\n * @param {number} value ?\n * @param {base.GenericFormatOptions} fOptions ?\n * @param {CommonOptions} dOptions ?\n * @param {NumberFormatOptions} [option] ?\n * @returns {string} ?\n */\n NumberFormat.intNumberFormatter = function (value, fOptions, dOptions, option) {\n var curData;\n if (isUndefined(fOptions.nData.type)) {\n return undefined;\n }\n else {\n if (value < 0) {\n value = value * -1;\n curData = fOptions.nData;\n }\n else if (value === 0) {\n curData = fOptions.zeroData || fOptions.pData;\n }\n else {\n curData = fOptions.pData;\n }\n var fValue = '';\n if (curData.isPercent) {\n value = value * 100;\n }\n if (curData.groupOne) {\n fValue = this.processSignificantDigits(value, curData.minimumSignificantDigits, curData.maximumSignificantDigits);\n }\n else {\n fValue = this.processFraction(value, curData.minimumFractionDigits, curData.maximumFractionDigits, option);\n if (curData.minimumIntegerDigits) {\n fValue = this.processMinimumIntegers(fValue, curData.minimumIntegerDigits);\n }\n if (dOptions.isCustomFormat && curData.minimumFractionDigits < curData.maximumFractionDigits\n && /\\d+\\.\\d+/.test(fValue)) {\n var temp = fValue.split('.');\n var decimalPart = temp[1];\n var len = decimalPart.length;\n for (var i = len - 1; i >= 0; i--) {\n if (decimalPart[parseInt(i.toString(), 10)] === '0' && i >= curData.minimumFractionDigits) {\n decimalPart = decimalPart.slice(0, i);\n }\n else {\n break;\n }\n }\n fValue = temp[0] + '.' + decimalPart;\n }\n }\n if (curData.type === 'scientific') {\n fValue = value.toExponential(curData.maximumFractionDigits);\n fValue = fValue.replace('e', dOptions.numberMapper.numberSymbols[mapper[4]]);\n }\n fValue = fValue.replace('.', dOptions.numberMapper.numberSymbols[mapper[3]]);\n fValue = curData.format === '#,###,,;(#,###,,)' ? this.customPivotFormat(parseInt(fValue, 10)) : fValue;\n if (curData.useGrouping) {\n fValue = this.groupNumbers(fValue, curData.groupData.primary, curData.groupSeparator || ',', dOptions.numberMapper.numberSymbols[mapper[3]] || '.', curData.groupData.secondary);\n }\n fValue = parser.convertValueParts(fValue, base.latnParseRegex, dOptions.numberMapper.mapper);\n if (curData.nlead === 'N/A') {\n return curData.nlead;\n }\n else {\n if (fValue === '0' && option && option.format === '0') {\n return fValue + curData.nend;\n }\n return curData.nlead + fValue + curData.nend;\n }\n }\n };\n /**\n * Returns significant digits processed numeric string\n *\n * @param {number} value ?\n * @param {number} min ?\n * @param {number} max ?\n * @returns {string} ?\n */\n NumberFormat.processSignificantDigits = function (value, min, max) {\n var temp = value + '';\n var tn;\n var length = temp.length;\n if (length < min) {\n return value.toPrecision(min);\n }\n else {\n temp = value.toPrecision(max);\n tn = +temp;\n return tn + '';\n }\n };\n /**\n * Returns grouped numeric string\n *\n * @param {string} val ?\n * @param {number} level1 ?\n * @param {string} sep ?\n * @param {string} decimalSymbol ?\n * @param {number} level2 ?\n * @returns {string} ?\n */\n NumberFormat.groupNumbers = function (val, level1, sep, decimalSymbol, level2) {\n var flag = !isNullOrUndefined(level2) && level2 !== 0;\n var split = val.split(decimalSymbol);\n var prefix = split[0];\n var length = prefix.length;\n var str = '';\n while (length > level1) {\n str = prefix.slice(length - level1, length) + (str.length ?\n (sep + str) : '');\n length -= level1;\n if (flag) {\n level1 = level2;\n flag = false;\n }\n }\n split[0] = prefix.slice(0, length) + (str.length ? sep : '') + str;\n return split.join(decimalSymbol);\n };\n /**\n * Returns fraction processed numeric string\n *\n * @param {number} value ?\n * @param {number} min ?\n * @param {number} max ?\n * @param {NumberFormatOptions} [option] ?\n * @returns {string} ?\n */\n NumberFormat.processFraction = function (value, min, max, option) {\n var temp = (value + '').split('.')[1];\n var length = temp ? temp.length : 0;\n if (min && length < min) {\n var ret = '';\n if (length === 0) {\n ret = value.toFixed(min);\n }\n else {\n ret += value;\n for (var j = 0; j < min - length; j++) {\n ret += '0';\n }\n return ret;\n }\n return value.toFixed(min);\n }\n else if (!isNullOrUndefined(max) && (length > max || max === 0)) {\n return value.toFixed(max);\n }\n var str = value + '';\n if (str[0] === '0' && option && option.format === '###.00') {\n str = str.slice(1);\n }\n return str;\n };\n /**\n * Returns integer processed numeric string\n *\n * @param {string} value ?\n * @param {number} min ?\n * @returns {string} ?\n */\n NumberFormat.processMinimumIntegers = function (value, min) {\n var temp = value.split('.');\n var lead = temp[0];\n var len = lead.length;\n if (len < min) {\n for (var i = 0; i < min - len; i++) {\n lead = '0' + lead;\n }\n temp[0] = lead;\n }\n return temp.join('.');\n };\n /**\n * Returns custom format for pivot table\n *\n * @param {number} value ?\n * @returns {string} ?\n */\n NumberFormat.customPivotFormat = function (value) {\n if (value >= 500000) {\n value /= 1000000;\n var _a = value.toString().split('.'), integer = _a[0], decimal = _a[1];\n return decimal && +decimal.substring(0, 1) >= 5\n ? Math.ceil(value).toString()\n : Math.floor(value).toString();\n }\n return '';\n };\n return NumberFormat;\n}());\nexport { NumberFormat };\n","import { IntlBase as base } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nimport { isUndefined, throwError, getValue, isNullOrUndefined, isBlazor } from '../util';\nimport { datePartMatcher } from './date-formatter';\nimport { HijriParser } from '../hijri-parser';\nvar standalone = 'stand-alone';\nvar latnRegex = /^[0-9]*$/;\nvar timeSetter = {\n minute: 'setMinutes',\n hour: 'setHours',\n second: 'setSeconds',\n day: 'setDate',\n month: 'setMonth',\n milliseconds: 'setMilliseconds'\n};\nvar month = 'months';\n/**\n * Date Parser.\n *\n * @private\n */\nvar DateParser = /** @class */ (function () {\n function DateParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} option - Specific the format in which string date will be parsed.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n DateParser.dateParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n var numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), false, isBlazor());\n var parseOptions = {};\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n var regexString = '';\n var hourOnly;\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n parseOptions = { isIslamic: base.islamicRegex.test(option.calendar), pattern: resPattern, evalposition: {}, culture: culture };\n var patternMatch = resPattern.match(base.dateParseRegex) || [];\n var length_1 = patternMatch.length;\n var gmtCorrection = 0;\n var zCorrectTemp = 0;\n var isgmtTraversed = false;\n var nRegx = numOptions.numericRegex;\n var numMapper = isBlazor() ? dependable.parserObject.numbers\n : parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n for (var i = 0; i < length_1; i++) {\n var str = patternMatch[parseInt(i.toString(), 10)];\n var len = str.length;\n var char = (str[0] === 'K') ? 'h' : str[0];\n var isNumber = void 0;\n var canUpdate = void 0;\n var charKey = datePartMatcher[\"\" + char];\n var optional = (len === 2) ? '' : '?';\n if (isgmtTraversed) {\n gmtCorrection = zCorrectTemp;\n isgmtTraversed = false;\n }\n switch (char) {\n case 'E':\n case 'c': {\n var weekData = void 0;\n if (isBlazor()) {\n weekData = getValue('days.' + base.monthIndex[\"\" + len], dependable.dateObject);\n }\n else {\n weekData = dependable.dateObject[\"\" + base.days][\"\" + standalone][base.monthIndex[\"\" + len]];\n }\n var weekObject = parser.reverseObject(weekData);\n regexString += '(' + Object.keys(weekObject).join('|') + ')';\n break;\n }\n case 'M':\n case 'L':\n case 'd':\n case 'm':\n case 's':\n case 'h':\n case 'H':\n case 'f':\n canUpdate = true;\n if ((char === 'M' || char === 'L') && len > 2) {\n var monthData = void 0;\n if (isBlazor()) {\n monthData = getValue('months.' + base.monthIndex[\"\" + len], dependable.dateObject);\n }\n else {\n monthData = dependable.dateObject[\"\" + month][\"\" + standalone][base.monthIndex[\"\" + len]];\n }\n parseOptions[\"\" + charKey] = parser.reverseObject(monthData);\n regexString += '(' + Object.keys(parseOptions[\"\" + charKey]).join('|') + ')';\n }\n else if (char === 'f') {\n if (len > 3) {\n continue;\n }\n isNumber = true;\n regexString += '(' + nRegx + nRegx + '?' + nRegx + '?' + ')';\n }\n else {\n isNumber = true;\n regexString += '(' + nRegx + nRegx + optional + ')';\n }\n if (char === 'h') {\n parseOptions.hour12 = true;\n }\n break;\n case 'W': {\n var opt = len === 1 ? '?' : '';\n regexString += '(' + nRegx + opt + nRegx + ')';\n break;\n }\n case 'y':\n canUpdate = isNumber = true;\n if (len === 2) {\n regexString += '(' + nRegx + nRegx + ')';\n }\n else {\n regexString += '(' + nRegx + '{' + len + ',})';\n }\n break;\n case 'a': {\n canUpdate = true;\n var periodValur = isBlazor() ?\n getValue('dayPeriods', dependable.dateObject) :\n getValue('dayPeriods.format.wide', dependable.dateObject);\n parseOptions[\"\" + charKey] = parser.reverseObject(periodValur);\n regexString += '(' + Object.keys(parseOptions[\"\" + charKey]).join('|') + ')';\n break;\n }\n case 'G': {\n canUpdate = true;\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n parseOptions[\"\" + charKey] = parser.reverseObject(isBlazor() ?\n getValue('eras', dependable.dateObject) : getValue('eras.' + eText, dependable.dateObject));\n regexString += '(' + Object.keys(parseOptions[\"\" + charKey]).join('|') + '?)';\n break;\n }\n case 'z': {\n var tval = new Date().getTimezoneOffset();\n canUpdate = (tval !== 0);\n parseOptions[\"\" + charKey] = getValue('dates.timeZoneNames', dependable.parserObject);\n var tzone = parseOptions[\"\" + charKey];\n hourOnly = (len < 4);\n var hpattern = hourOnly ? '+H;-H' : tzone.hourFormat;\n hpattern = hpattern.replace(/:/g, numMapper.timeSeparator);\n regexString += '(' + this.parseTimeZoneRegx(hpattern, tzone, nRegx) + ')?';\n isgmtTraversed = true;\n zCorrectTemp = hourOnly ? 6 : 12;\n break;\n }\n case '\\'': {\n var iString = str.replace(/'/g, '');\n regexString += '(' + iString + ')?';\n break;\n }\n default:\n regexString += '([\\\\D])';\n break;\n }\n if (canUpdate) {\n parseOptions.evalposition[\"\" + charKey] = { isNumber: isNumber, pos: i + 1 + gmtCorrection, hourOnly: hourOnly };\n }\n if (i === length_1 - 1 && !isNullOrUndefined(regexString)) {\n var regExp = RegExp;\n parseOptions.parserRegex = new regExp('^' + regexString + '$', 'i');\n }\n }\n }\n return function (value) {\n var parsedDateParts = _this.internalDateParse(value, parseOptions, numOptions);\n if (isNullOrUndefined(parsedDateParts) || !Object.keys(parsedDateParts).length) {\n return null;\n }\n if (parseOptions.isIslamic) {\n var dobj = {};\n var tYear = parsedDateParts.year;\n var tDate = parsedDateParts.day;\n var tMonth = parsedDateParts.month;\n var ystrig = tYear ? (tYear + '') : '';\n var is2DigitYear = (ystrig.length === 2);\n if (!tYear || !tMonth || !tDate || is2DigitYear) {\n dobj = HijriParser.getHijriDate(new Date());\n }\n if (is2DigitYear) {\n tYear = parseInt((dobj.year + '').slice(0, 2) + ystrig, 10);\n }\n var dateObject = HijriParser.toGregorian(tYear || dobj.year, tMonth || dobj.month, tDate || dobj.date);\n parsedDateParts.year = dateObject.getFullYear();\n parsedDateParts.month = dateObject.getMonth() + 1;\n parsedDateParts.day = dateObject.getDate();\n }\n return _this.getDateObject(parsedDateParts);\n };\n };\n /**\n * Returns date object for provided date options\n *\n * @param {DateParts} options ?\n * @param {Date} value ?\n * @returns {Date} ?\n */\n DateParser.getDateObject = function (options, value) {\n var res = value || new Date();\n res.setMilliseconds(0);\n var tKeys = ['hour', 'minute', 'second', 'milliseconds', 'month', 'day'];\n var y = options.year;\n var desig = options.designator;\n var tzone = options.timeZone;\n if (!isUndefined(y)) {\n var len = (y + '').length;\n if (len <= 2) {\n var century = Math.floor(res.getFullYear() / 100) * 100;\n y += century;\n }\n res.setFullYear(y);\n }\n for (var _i = 0, tKeys_1 = tKeys; _i < tKeys_1.length; _i++) {\n var key = tKeys_1[_i];\n var tValue = options[\"\" + key];\n if (isUndefined(tValue) && key === 'day') {\n res.setDate(1);\n }\n if (!isUndefined(tValue)) {\n if (key === 'month') {\n tValue -= 1;\n if (tValue < 0 || tValue > 11) {\n return new Date('invalid');\n }\n var pDate = res.getDate();\n res.setDate(1);\n res[timeSetter[\"\" + key]](tValue);\n var lDate = new Date(res.getFullYear(), tValue + 1, 0).getDate();\n res.setDate(pDate < lDate ? pDate : lDate);\n }\n else {\n if (key === 'day') {\n var lastDay = new Date(res.getFullYear(), res.getMonth() + 1, 0).getDate();\n if ((tValue < 1 || tValue > lastDay)) {\n return null;\n }\n }\n res[\"\" + timeSetter[\"\" + key]](tValue);\n }\n }\n }\n if (!isUndefined(desig)) {\n var hour = res.getHours();\n if (desig === 'pm') {\n res.setHours(hour + (hour === 12 ? 0 : 12));\n }\n else if (hour === 12) {\n res.setHours(0);\n }\n }\n if (!isUndefined(tzone)) {\n var tzValue = tzone - res.getTimezoneOffset();\n if (tzValue !== 0) {\n res.setMinutes(res.getMinutes() + tzValue);\n }\n }\n return res;\n };\n /**\n * Returns date parsing options for provided value along with parse and numeric options\n *\n * @param {string} value ?\n * @param {ParseOptions} parseOptions ?\n * @param {NumericOptions} num ?\n * @returns {DateParts} ?\n */\n DateParser.internalDateParse = function (value, parseOptions, num) {\n var matches = value.match(parseOptions.parserRegex);\n var retOptions = { 'hour': 0, 'minute': 0, 'second': 0 };\n if (isNullOrUndefined(matches)) {\n return null;\n }\n else {\n var props = Object.keys(parseOptions.evalposition);\n for (var _i = 0, props_1 = props; _i < props_1.length; _i++) {\n var prop = props_1[_i];\n var curObject = parseOptions.evalposition[\"\" + prop];\n var matchString = matches[curObject.pos];\n if (curObject.isNumber) {\n retOptions[\"\" + prop] = this.internalNumberParser(matchString, num);\n }\n else {\n if (prop === 'timeZone' && !isUndefined(matchString)) {\n var pos = curObject.pos;\n var val = void 0;\n var tmatch = matches[pos + 1];\n var flag = !isUndefined(tmatch);\n if (curObject.hourOnly) {\n val = this.getZoneValue(flag, tmatch, matches[pos + 4], num) * 60;\n }\n else {\n val = this.getZoneValue(flag, tmatch, matches[pos + 7], num) * 60;\n val += this.getZoneValue(flag, matches[pos + 4], matches[pos + 10], num);\n }\n if (!isNullOrUndefined(val)) {\n retOptions[\"\" + prop] = val;\n }\n }\n else {\n var cultureOptions = ['en-US', 'en-MH', 'en-MP'];\n matchString = ((prop === 'month') && (!parseOptions.isIslamic) && (parseOptions.culture === 'en' || parseOptions.culture === 'en-GB' || parseOptions.culture === 'en-US'))\n ? matchString[0].toUpperCase() + matchString.substring(1).toLowerCase() : matchString;\n matchString = ((prop !== 'month') && (prop === 'designator') && parseOptions.culture && parseOptions.culture.indexOf('en-') !== -1 && cultureOptions.indexOf(parseOptions.culture) === -1)\n ? matchString.toLowerCase() : matchString;\n retOptions[\"\" + prop] = parseOptions[\"\" + prop][\"\" + matchString];\n }\n }\n }\n if (parseOptions.hour12) {\n retOptions.hour12 = true;\n }\n }\n return retOptions;\n };\n /**\n * Returns parsed number for provided Numeric string and Numeric Options\n *\n * @param {string} value ?\n * @param {NumericOptions} option ?\n * @returns {number} ?\n */\n DateParser.internalNumberParser = function (value, option) {\n value = parser.convertValueParts(value, option.numberParseRegex, option.numericPair);\n if (latnRegex.test(value)) {\n return +value;\n }\n return null;\n };\n /**\n * Returns parsed time zone RegExp for provided hour format and time zone\n *\n * @param {string} hourFormat ?\n * @param {base.TimeZoneOptions} tZone ?\n * @param {string} nRegex ?\n * @returns {string} ?\n */\n DateParser.parseTimeZoneRegx = function (hourFormat, tZone, nRegex) {\n var pattern = tZone.gmtFormat;\n var ret;\n var cRegex = '(' + nRegex + ')' + '(' + nRegex + ')';\n ret = hourFormat.replace('+', '\\\\+');\n if (hourFormat.indexOf('HH') !== -1) {\n ret = ret.replace(/HH|mm/g, '(' + cRegex + ')');\n }\n else {\n ret = ret.replace(/H|m/g, '(' + cRegex + '?)');\n }\n var splitStr = (ret.split(';').map(function (str) {\n return pattern.replace('{0}', str);\n }));\n ret = splitStr.join('|') + '|' + tZone.gmtZeroFormat;\n return ret;\n };\n /**\n * Returns zone based value.\n *\n * @param {boolean} flag ?\n * @param {string} val1 ?\n * @param {string} val2 ?\n * @param {NumericOptions} num ?\n * @returns {number} ?\n */\n DateParser.getZoneValue = function (flag, val1, val2, num) {\n var ival = flag ? val1 : val2;\n if (!ival) {\n return 0;\n }\n var value = this.internalNumberParser(ival, num);\n if (flag) {\n return -value;\n }\n return value;\n };\n return DateParser;\n}());\nexport { DateParser };\n","import { extend, isNullOrUndefined, isBlazor, getValue } from '../util';\nimport { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nvar regExp = RegExp;\nvar parseRegex = new regExp('^([^0-9]*)' + '(([0-9,]*[0-9]+)(.[0-9]+)?)' + '([Ee][+-]?[0-9]+)?([^0-9]*)$');\nvar groupRegex = /,/g;\nvar keys = ['minusSign', 'infinity'];\n/**\n * Module for Number Parser.\n *\n * @private\n */\nvar NumberParser = /** @class */ (function () {\n function NumberParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} option - Specific the format in which number will parsed.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n NumberParser.numberParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n if ((base.formatRegex.test(option.format)) || !(option.format)) {\n extend(parseOptions, base.getProperNumericSkeleton(option.format || 'N'));\n parseOptions.custom = false;\n if (!parseOptions.fractionDigits) {\n if (option.maximumFractionDigits) {\n parseOptions.maximumFractionDigits = option.maximumFractionDigits;\n }\n }\n }\n else {\n extend(parseOptions, base.customFormat(option.format, null, null));\n }\n var numbers = getValue('numbers', dependable.parserObject);\n var numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), true, isBlazor());\n parseOptions.symbolRegex = parser.getSymbolRegex(Object.keys(numOptions.symbolMatch));\n parseOptions.infinity = numOptions.symbolNumberSystem[keys[1]];\n var symbolpattern;\n if (!isBlazor()) {\n symbolpattern = base.getSymbolPattern(parseOptions.type, numOptions.numberSystem, dependable.numericObject, parseOptions.isAccount);\n if (symbolpattern) {\n symbolpattern = symbolpattern.replace(/\\u00A4/g, base.defaultCurrency);\n var split = symbolpattern.split(';');\n parseOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, '');\n parseOptions.pData = base.getFormatData(split[0], true, '');\n }\n }\n else {\n parseOptions.nData = extend({}, {}, getValue(parseOptions.type + 'nData', numbers));\n parseOptions.pData = extend({}, {}, getValue(parseOptions.type + 'pData', numbers));\n if (parseOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([parseOptions.pData, parseOptions.nData], getValue('currencySymbol', numbers), option.currency);\n }\n }\n return function (value) {\n return _this.getParsedNumber(value, parseOptions, numOptions);\n };\n };\n /**\n * Returns parsed number for the provided formatting options\n *\n * @param {string} value ?\n * @param {NumericParts} options ?\n * @param {NumericOptions} numOptions ?\n * @returns {number} ?\n */\n NumberParser.getParsedNumber = function (value, options, numOptions) {\n var isNegative;\n var isPercent;\n var tempValue;\n var lead;\n var end;\n var ret;\n if (value.indexOf(options.infinity) !== -1) {\n return Infinity;\n }\n else {\n value = parser.convertValueParts(value, options.symbolRegex, numOptions.symbolMatch);\n value = parser.convertValueParts(value, numOptions.numberParseRegex, numOptions.numericPair);\n value = value.indexOf('-') !== -1 ? value.replace('-.', '-0.') : value;\n if (value.indexOf('.') === 0) {\n value = '0' + value;\n }\n var matches = value.match(parseRegex);\n if (isNullOrUndefined(matches)) {\n return NaN;\n }\n lead = matches[1];\n tempValue = matches[2];\n var exponent = matches[5];\n end = matches[6];\n isNegative = options.custom ? ((lead === options.nData.nlead) && (end === options.nData.nend)) :\n ((lead.indexOf(options.nData.nlead) !== -1) && (end.indexOf(options.nData.nend) !== -1));\n isPercent = isNegative ?\n options.nData.isPercent :\n options.pData.isPercent;\n tempValue = tempValue.replace(groupRegex, '');\n if (exponent) {\n tempValue += exponent;\n }\n ret = +tempValue;\n if (options.type === 'percent' || isPercent) {\n ret = ret / 100;\n }\n if (options.custom || options.fractionDigits) {\n ret = parseFloat(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.fractionDigits));\n }\n if (options.maximumFractionDigits) {\n ret = this.convertMaxFracDigits(tempValue, options, ret, isNegative);\n }\n if (isNegative) {\n ret *= -1;\n }\n return ret;\n }\n };\n NumberParser.convertMaxFracDigits = function (value, options, ret, isNegative) {\n var decimalSplitValue = value.split('.');\n if (decimalSplitValue[1] && decimalSplitValue[1].length > options.maximumFractionDigits) {\n ret = +(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.maximumFractionDigits));\n }\n return ret;\n };\n return NumberParser;\n}());\nexport { NumberParser };\n","/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types */\nimport { isNullOrUndefined, getValue, extend, isBlazor } from './util';\nvar Observer = /** @class */ (function () {\n function Observer(context) {\n this.ranArray = [];\n this.boundedEvents = {};\n if (isNullOrUndefined(context)) {\n return;\n }\n this.context = context;\n }\n /**\n * To attach handler for given property in current context.\n *\n * @param {string} property - specifies the name of the event.\n * @param {Function} handler - Specifies the handler function to be called while event notified.\n * @param {Object} context - Specifies the context binded to the handler.\n * @param {string} id - specifies the random generated id.\n * @returns {void}\n */\n Observer.prototype.on = function (property, handler, context, id) {\n if (isNullOrUndefined(handler)) {\n return;\n }\n var cntxt = context || this.context;\n if (this.notExist(property)) {\n this.boundedEvents[\"\" + property] = [{ handler: handler, context: cntxt, id: id }];\n return;\n }\n if (!isNullOrUndefined(id)) {\n if (this.ranArray.indexOf(id) === -1) {\n this.ranArray.push(id);\n this.boundedEvents[\"\" + property].push({ handler: handler, context: cntxt, id: id });\n }\n }\n else if (!this.isHandlerPresent(this.boundedEvents[\"\" + property], handler)) {\n this.boundedEvents[\"\" + property].push({ handler: handler, context: cntxt });\n }\n };\n /**\n * To remove handlers from a event attached using on() function.\n *\n * @param {string} property - specifies the name of the event.\n * @param {Function} handler - Optional argument specifies the handler function to be called while event notified.\n * @param {string} id - specifies the random generated id.\n * @returns {void} ?\n */\n Observer.prototype.off = function (property, handler, id) {\n if (this.notExist(property)) {\n return;\n }\n var curObject = getValue(property, this.boundedEvents);\n if (handler) {\n for (var i = 0; i < curObject.length; i++) {\n if (id) {\n if (curObject[parseInt(i.toString(), 10)].id === id) {\n curObject.splice(i, 1);\n var indexLocation = this.ranArray.indexOf(id);\n if (indexLocation !== -1) {\n this.ranArray.splice(indexLocation, 1);\n }\n break;\n }\n }\n else if (handler === curObject[parseInt(i.toString(), 10)].handler) {\n curObject.splice(i, 1);\n break;\n }\n }\n }\n else {\n delete this.boundedEvents[\"\" + property];\n }\n };\n /**\n * To notify the handlers in the specified event.\n *\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it was failure to call.\n * @returns {void} ?\n */\n Observer.prototype.notify = function (property, argument, successHandler, errorHandler) {\n if (this.notExist(property)) {\n if (successHandler) {\n successHandler.call(this, argument);\n }\n return;\n }\n if (argument) {\n argument.name = property;\n }\n var blazor = 'Blazor';\n var curObject = getValue(property, this.boundedEvents).slice(0);\n if (window[\"\" + blazor]) {\n return this.blazorCallback(curObject, argument, successHandler, errorHandler, 0);\n }\n else {\n for (var _i = 0, curObject_1 = curObject; _i < curObject_1.length; _i++) {\n var cur = curObject_1[_i];\n cur.handler.call(cur.context, argument);\n }\n if (successHandler) {\n successHandler.call(this, argument);\n }\n }\n };\n Observer.prototype.blazorCallback = function (objs, argument, successHandler, errorHandler, index) {\n var _this = this;\n var isTrigger = index === objs.length - 1;\n if (index < objs.length) {\n var obj_1 = objs[parseInt(index.toString(), 10)];\n var promise = obj_1.handler.call(obj_1.context, argument);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n return promise;\n }\n promise.then(function (data) {\n data = typeof data === 'string' && _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data;\n extend(argument, argument, data, true);\n if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return _this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }).catch(function (data) {\n if (errorHandler) {\n errorHandler.call(obj_1.context, typeof data === 'string' &&\n _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data);\n }\n });\n }\n else if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }\n };\n Observer.prototype.dateReviver = function (key, value) {\n var dPattern = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}/;\n if (isBlazor && typeof value === 'string' && value.match(dPattern) !== null) {\n return (new Date(value));\n }\n return (value);\n };\n Observer.prototype.isJson = function (value) {\n try {\n JSON.parse(value);\n }\n catch (e) {\n return false;\n }\n return true;\n };\n /**\n * To destroy handlers in the event\n *\n * @returns {void} ?\n */\n Observer.prototype.destroy = function () {\n this.boundedEvents = this.context = undefined;\n };\n /**\n * To remove internationalization events\n *\n * @returns {void} ?\n */\n Observer.prototype.offIntlEvents = function () {\n var eventsArr = this.boundedEvents['notifyExternalChange'];\n if (eventsArr) {\n for (var i = 0; i < eventsArr.length; i++) {\n var curContext = eventsArr[parseInt(i.toString(), 10)].context;\n if (curContext && curContext.detectFunction && curContext.randomId && !curContext.isRendered) {\n this.off('notifyExternalChange', curContext.detectFunction, curContext.randomId);\n i--;\n }\n }\n if (!this.boundedEvents['notifyExternalChange'].length) {\n delete this.boundedEvents['notifyExternalChange'];\n }\n }\n };\n /**\n * Returns if the property exists.\n *\n * @param {string} prop ?\n * @returns {boolean} ?\n */\n Observer.prototype.notExist = function (prop) {\n return Object.prototype.hasOwnProperty.call(this.boundedEvents, prop) === false || this.boundedEvents[\"\" + prop].length <= 0;\n };\n /**\n * Returns if the handler is present.\n *\n * @param {BoundOptions[]} boundedEvents ?\n * @param {Function} handler ?\n * @returns {boolean} ?\n */\n Observer.prototype.isHandlerPresent = function (boundedEvents, handler) {\n for (var _i = 0, boundedEvents_1 = boundedEvents; _i < boundedEvents_1.length; _i++) {\n var cur = boundedEvents_1[_i];\n if (cur.handler === handler) {\n return true;\n }\n }\n return false;\n };\n return Observer;\n}());\nexport { Observer };\n","import { DateFormat } from './intl/date-formatter';\nimport { NumberFormat } from './intl/number-formatter';\nimport { DateParser } from './intl/date-parser';\nimport { NumberParser } from './intl/number-parser';\nimport { IntlBase } from './intl/intl-base';\nimport { extend, getValue, isBlazor } from './util';\nimport { Observer } from './observer';\n/**\n * Specifies the observer used for external change detection.\n */\nexport var onIntlChange = new Observer();\n/**\n * Specifies the default rtl status for EJ2 components.\n */\nexport var rightToLeft = false;\n/**\n * Specifies the CLDR data loaded for internationalization functionalities.\n *\n * @private\n */\nexport var cldrData = {};\n/**\n * Specifies the default culture value to be considered.\n *\n * @private\n */\nexport var defaultCulture = 'en-US';\n/**\n * Specifies default currency code to be considered\n *\n * @private\n */\nexport var defaultCurrencyCode = 'USD';\nvar mapper = ['numericObject', 'dateObject'];\n/**\n * Internationalization class provides support to parse and format the number and date object to the desired format.\n * ```typescript\n * // To set the culture globally\n * setCulture('en-GB');\n *\n * // To set currency code globally\n * setCurrencyCode('EUR');\n *\n * //Load cldr data\n * loadCldr(gregorainData);\n * loadCldr(timeZoneData);\n * loadCldr(numbersData);\n * loadCldr(numberSystemData);\n *\n * // To use formatter in component side\n * let Intl:Internationalization = new Internationalization();\n *\n * // Date formatting\n * let dateFormatter: Function = Intl.getDateFormat({skeleton:'long',type:'dateTime'});\n * dateFormatter(new Date('11/2/2016'));\n * dateFormatter(new Date('25/2/2030'));\n * Intl.formatDate(new Date(),{skeleton:'E'});\n *\n * //Number formatting\n * let numberFormatter: Function = Intl.getNumberFormat({skeleton:'C5'})\n * numberFormatter(24563334);\n * Intl.formatNumber(123123,{skeleton:'p2'});\n *\n * // Date parser\n * let dateParser: Function = Intl.getDateParser({skeleton:'short',type:'time'});\n * dateParser('10:30 PM');\n * Intl.parseDate('10',{skeleton:'H'});\n * ```\n */\nvar Internationalization = /** @class */ (function () {\n function Internationalization(cultureName) {\n if (cultureName) {\n this.culture = cultureName;\n }\n }\n /**\n * Returns the format function for given options.\n *\n * @param {DateFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getDateFormat = function (options) {\n return DateFormat.dateFormat(this.getCulture(), options || { type: 'date', skeleton: 'short' }, cldrData);\n };\n /**\n * Returns the format function for given options.\n *\n * @param {NumberFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getNumberFormat = function (options) {\n if (options && !options.currency) {\n options.currency = defaultCurrencyCode;\n }\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberFormat.numberFormatter(this.getCulture(), options || {}, cldrData);\n };\n /**\n * Returns the parser function for given options.\n *\n * @param {DateFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getDateParser = function (options) {\n return DateParser.dateParser(this.getCulture(), options || { skeleton: 'short', type: 'date' }, cldrData);\n };\n /**\n * Returns the parser function for given options.\n *\n * @param {NumberFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getNumberParser = function (options) {\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberParser.numberParser(this.getCulture(), options || { format: 'N' }, cldrData);\n };\n /**\n * Returns the formatted string based on format options.\n *\n * @param {number} value - Specifies the number to format.\n * @param {NumberFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string} ?\n */\n Internationalization.prototype.formatNumber = function (value, option) {\n return this.getNumberFormat(option)(value);\n };\n /**\n * Returns the formatted date string based on format options.\n *\n * @param {Date} value - Specifies the number to format.\n * @param {DateFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string} ?\n */\n Internationalization.prototype.formatDate = function (value, option) {\n return this.getDateFormat(option)(value);\n };\n /**\n * Returns the date object for given date string and options.\n *\n * @param {string} value - Specifies the string to parse.\n * @param {DateFormatOptions} option - Specifies the parse options in which the date string will be parsed.\n * @returns {Date} ?\n */\n Internationalization.prototype.parseDate = function (value, option) {\n return this.getDateParser(option)(value);\n };\n /**\n * Returns the number object from the given string value and options.\n *\n * @param {string} value - Specifies the string to parse.\n * @param {NumberFormatOptions} option - Specifies the parse options in which the string number will be parsed.\n * @returns {number} ?\n */\n Internationalization.prototype.parseNumber = function (value, option) {\n return this.getNumberParser(option)(value);\n };\n /**\n * Returns Native Date Time Pattern\n *\n * @param {DateFormatOptions} option - Specifies the parse options for resultant date time pattern.\n * @param {boolean} isExcelFormat - Specifies format value to be converted to excel pattern.\n * @returns {string} ?\n * @private\n */\n Internationalization.prototype.getDatePattern = function (option, isExcelFormat) {\n return IntlBase.getActualDateTimeFormat(this.getCulture(), option, cldrData, isExcelFormat);\n };\n /**\n * Returns Native Number Pattern\n *\n * @param {NumberFormatOptions} option - Specifies the parse options for resultant number pattern.\n * @param {boolean} isExcel ?\n * @returns {string} ?\n * @private\n */\n Internationalization.prototype.getNumberPattern = function (option, isExcel) {\n return IntlBase.getActualNumberFormat(this.getCulture(), option, cldrData, isExcel);\n };\n /**\n * Returns the First Day of the Week\n *\n * @returns {number} ?\n */\n Internationalization.prototype.getFirstDayOfWeek = function () {\n return IntlBase.getWeekData(this.getCulture(), cldrData);\n };\n /**\n * Returns the culture\n *\n * @returns {string} ?\n */\n Internationalization.prototype.getCulture = function () {\n return this.culture || defaultCulture;\n };\n return Internationalization;\n}());\nexport { Internationalization };\n/**\n * Set the default culture to all EJ2 components\n *\n * @param {string} cultureName - Specifies the culture name to be set as default culture.\n * @returns {void} ?\n */\nexport function setCulture(cultureName) {\n defaultCulture = cultureName;\n onIntlChange.notify('notifyExternalChange', { 'locale': defaultCulture });\n}\n/**\n * Set the default currency code to all EJ2 components\n *\n * @param {string} currencyCode Specifies the culture name to be set as default culture.\n * @returns {void} ?\n */\nexport function setCurrencyCode(currencyCode) {\n defaultCurrencyCode = currencyCode;\n onIntlChange.notify('notifyExternalChange', { 'currencyCode': defaultCurrencyCode });\n}\n/**\n * Load the CLDR data into context\n *\n * @param {Object[]} data Specifies the CLDR data's to be used for formatting and parser.\n * @returns {void} ?\n */\nexport function loadCldr() {\n var data = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n data[_i] = arguments[_i];\n }\n for (var _a = 0, data_1 = data; _a < data_1.length; _a++) {\n var obj = data_1[_a];\n extend(cldrData, obj, {}, true);\n }\n}\n/**\n * To enable or disable RTL functionality for all components globally.\n *\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable rtl option.\n * @returns {void} ?\n */\nexport function enableRtl(status) {\n if (status === void 0) { status = true; }\n rightToLeft = status;\n onIntlChange.notify('notifyExternalChange', { enableRtl: rightToLeft });\n}\n/**\n * To get the numeric CLDR object for given culture\n *\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} type ?\n * @returns {Object} ?\n * @ignore\n * @private\n */\nexport function getNumericObject(locale, type) {\n var numObject = IntlBase.getDependables(cldrData, locale, '', true)[mapper[0]];\n var dateObject = IntlBase.getDependables(cldrData, locale, '')[mapper[1]];\n var numSystem = getValue('defaultNumberingSystem', numObject);\n var symbPattern = isBlazor() ? getValue('numberSymbols', numObject) : getValue('symbols-numberSystem-' + numSystem, numObject);\n var pattern = IntlBase.getSymbolPattern(type || 'decimal', numSystem, numObject, false);\n return extend(symbPattern, IntlBase.getFormatData(pattern, true, '', true), { 'dateSeparator': IntlBase.getDateSeparator(dateObject) });\n}\n/**\n * To get the numeric CLDR number base object for given culture\n *\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} currency - Specifies the currency for which numericObject to be returned.\n * @returns {string} ?\n * @ignore\n * @private\n */\nexport function getNumberDependable(locale, currency) {\n var numObject = IntlBase.getDependables(cldrData, locale, '', true);\n return IntlBase.getCurrencySymbol(numObject.numericObject, currency);\n}\n/**\n * To get the default date CLDR object.\n *\n * @param {string} mode ?\n * @returns {Object} ?\n * @ignore\n * @private\n */\nexport function getDefaultDateObject(mode) {\n return IntlBase.getDependables(cldrData, '', mode, false)[mapper[1]];\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types */\nimport { defaultCurrencyCode } from '../internationalization';\nimport { getValue, isNullOrUndefined, extend, isBlazor } from '../util';\nimport { ParserBase as parser, getBlazorCurrencySymbol } from './parser-base';\nimport { DateFormat } from './date-formatter';\nimport { NumberFormat } from './number-formatter';\nimport { isUndefined } from '../util';\nvar regExp = RegExp;\nexport var blazorCultureFormats = {\n 'en-US': {\n 'd': 'M/d/y',\n 'D': 'EEEE, MMMM d, y',\n 'f': 'EEEE, MMMM d, y h:mm a',\n 'F': 'EEEE, MMMM d, y h:mm:s a',\n 'g': 'M/d/y h:mm a',\n 'G': 'M/d/yyyy h:mm:ss tt',\n 'm': 'MMMM d',\n 'M': 'MMMM d',\n 'r': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 'R': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 's': 'yyyy\\'-\\'MM\\'-\\'dd\\'T\\'HH\\':\\'mm\\':\\'ss',\n 't': 'h:mm tt',\n 'T': 'h:m:s tt',\n 'u': 'yyyy\\'-\\'MM\\'-\\'dd HH\\':\\'mm\\':\\'ss\\'Z\\'',\n 'U': 'dddd, MMMM d, yyyy h:mm:ss tt',\n 'y': 'MMMM yyyy',\n 'Y': 'MMMM yyyy'\n }\n};\n/**\n * Date base common constants and function for date parser and formatter.\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var IntlBase;\n(function (IntlBase) {\n // eslint-disable-next-line security/detect-unsafe-regex\n IntlBase.negativeDataRegex = /^(('[^']+'|''|[^*#@0,.E])*)(\\*.)?((([#,]*[0,]*0+)(\\.0*[0-9]*#*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n // eslint-disable-next-line security/detect-unsafe-regex\n IntlBase.customRegex = /^(('[^']+'|''|[^*#@0,.])*)(\\*.)?((([0#,]*[0,]*[0#]*[0# ]*)(\\.[0#]*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.latnParseRegex = /0|1|2|3|4|5|6|7|8|9/g;\n var fractionRegex = /[0-9]/g;\n IntlBase.defaultCurrency = '$';\n var mapper = ['infinity', 'nan', 'group', 'decimal'];\n var patternRegex = /G|M|L|H|c|'| a|yy|y|EEEE|E/g;\n var patternMatch = {\n 'G': '',\n 'M': 'm',\n 'L': 'm',\n 'H': 'h',\n 'c': 'd',\n '\\'': '\"',\n ' a': ' AM/PM',\n 'yy': 'yy',\n 'y': 'yyyy',\n 'EEEE': 'dddd',\n 'E': 'ddd'\n };\n IntlBase.dateConverterMapper = /dddd|ddd/ig;\n var defaultFirstDay = 'sun';\n IntlBase.islamicRegex = /^islamic/;\n var firstDayMapper = {\n 'sun': 0,\n 'mon': 1,\n 'tue': 2,\n 'wed': 3,\n 'thu': 4,\n 'fri': 5,\n 'sat': 6\n };\n IntlBase.formatRegex = new regExp('(^[ncpae]{1})([0-1]?[0-9]|20)?$', 'i');\n IntlBase.currencyFormatRegex = new regExp('(^[ca]{1})([0-1]?[0-9]|20)?$', 'i');\n IntlBase.curWithoutNumberRegex = /(c|a)$/ig;\n var typeMapper = {\n '$': 'isCurrency',\n '%': 'isPercent',\n '-': 'isNegative',\n 0: 'nlead',\n 1: 'nend'\n };\n IntlBase.dateParseRegex = /([a-z])\\1*|'([^']|'')+'|''|./gi;\n IntlBase.basicPatterns = ['short', 'medium', 'long', 'full'];\n IntlBase.defaultObject = {\n 'dates': {\n 'calendars': {\n 'gregorian': {\n 'months': {\n 'stand-alone': {\n 'abbreviated': {\n '1': 'Jan',\n '2': 'Feb',\n '3': 'Mar',\n '4': 'Apr',\n '5': 'May',\n '6': 'Jun',\n '7': 'Jul',\n '8': 'Aug',\n '9': 'Sep',\n '10': 'Oct',\n '11': 'Nov',\n '12': 'Dec'\n },\n 'narrow': {\n '1': 'J',\n '2': 'F',\n '3': 'M',\n '4': 'A',\n '5': 'M',\n '6': 'J',\n '7': 'J',\n '8': 'A',\n '9': 'S',\n '10': 'O',\n '11': 'N',\n '12': 'D'\n },\n 'wide': {\n '1': 'January',\n '2': 'February',\n '3': 'March',\n '4': 'April',\n '5': 'May',\n '6': 'June',\n '7': 'July',\n '8': 'August',\n '9': 'September',\n '10': 'October',\n '11': 'November',\n '12': 'December'\n }\n }\n },\n 'days': {\n 'stand-alone': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'narrow': {\n 'sun': 'S',\n 'mon': 'M',\n 'tue': 'T',\n 'wed': 'W',\n 'thu': 'T',\n 'fri': 'F',\n 'sat': 'S'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n }\n },\n 'dayPeriods': {\n 'format': {\n 'wide': {\n 'am': 'AM',\n 'pm': 'PM'\n }\n }\n },\n 'eras': {\n 'eraNames': {\n '0': 'Before Christ',\n '0-alt-variant': 'Before Common Era',\n '1': 'Anno Domini',\n '1-alt-variant': 'Common Era'\n },\n 'eraAbbr': {\n '0': 'BC',\n '0-alt-variant': 'BCE',\n '1': 'AD',\n '1-alt-variant': 'CE'\n },\n 'eraNarrow': {\n '0': 'B',\n '0-alt-variant': 'BCE',\n '1': 'A',\n '1-alt-variant': 'CE'\n }\n },\n 'dateFormats': {\n 'full': 'EEEE, MMMM d, y',\n 'long': 'MMMM d, y',\n 'medium': 'MMM d, y',\n 'short': 'M/d/yy'\n },\n 'timeFormats': {\n 'full': 'h:mm:ss a zzzz',\n 'long': 'h:mm:ss a z',\n 'medium': 'h:mm:ss a',\n 'short': 'h:mm a'\n },\n 'dateTimeFormats': {\n 'full': '{1} \\'at\\' {0}',\n 'long': '{1} \\'at\\' {0}',\n 'medium': '{1}, {0}',\n 'short': '{1}, {0}',\n 'availableFormats': {\n 'd': 'd',\n 'E': 'ccc',\n 'Ed': 'd E',\n 'Ehm': 'E h:mm a',\n 'EHm': 'E HH:mm',\n 'Ehms': 'E h:mm:ss a',\n 'EHms': 'E HH:mm:ss',\n 'Gy': 'y G',\n 'GyMMM': 'MMM y G',\n 'GyMMMd': 'MMM d, y G',\n 'GyMMMEd': 'E, MMM d, y G',\n 'h': 'h a',\n 'H': 'HH',\n 'hm': 'h:mm a',\n 'Hm': 'HH:mm',\n 'hms': 'h:mm:ss a',\n 'Hms': 'HH:mm:ss',\n 'hmsv': 'h:mm:ss a v',\n 'Hmsv': 'HH:mm:ss v',\n 'hmv': 'h:mm a v',\n 'Hmv': 'HH:mm v',\n 'M': 'L',\n 'Md': 'M/d',\n 'MEd': 'E, M/d',\n 'MMM': 'LLL',\n 'MMMd': 'MMM d',\n 'MMMEd': 'E, MMM d',\n 'MMMMd': 'MMMM d',\n 'ms': 'mm:ss',\n 'y': 'y',\n 'yM': 'M/y',\n 'yMd': 'M/d/y',\n 'yMEd': 'E, M/d/y',\n 'yMMM': 'MMM y',\n 'yMMMd': 'MMM d, y',\n 'yMMMEd': 'E, MMM d, y',\n 'yMMMM': 'MMMM y'\n }\n }\n },\n 'islamic': {\n 'months': {\n 'stand-alone': {\n 'abbreviated': {\n '1': 'Muh.',\n '2': 'Saf.',\n '3': 'Rab. I',\n '4': 'Rab. II',\n '5': 'Jum. I',\n '6': 'Jum. II',\n '7': 'Raj.',\n '8': 'Sha.',\n '9': 'Ram.',\n '10': 'Shaw.',\n '11': 'Dhuʻl-Q.',\n '12': 'Dhuʻl-H.'\n },\n 'narrow': {\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9',\n '10': '10',\n '11': '11',\n '12': '12'\n },\n 'wide': {\n '1': 'Muharram',\n '2': 'Safar',\n '3': 'Rabiʻ I',\n '4': 'Rabiʻ II',\n '5': 'Jumada I',\n '6': 'Jumada II',\n '7': 'Rajab',\n '8': 'Shaʻban',\n '9': 'Ramadan',\n '10': 'Shawwal',\n '11': 'Dhuʻl-Qiʻdah',\n '12': 'Dhuʻl-Hijjah'\n }\n }\n },\n 'days': {\n 'stand-alone': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'narrow': {\n 'sun': 'S',\n 'mon': 'M',\n 'tue': 'T',\n 'wed': 'W',\n 'thu': 'T',\n 'fri': 'F',\n 'sat': 'S'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n }\n },\n 'dayPeriods': {\n 'format': {\n 'wide': {\n 'am': 'AM',\n 'pm': 'PM'\n }\n }\n },\n 'eras': {\n 'eraNames': {\n '0': 'AH'\n },\n 'eraAbbr': {\n '0': 'AH'\n },\n 'eraNarrow': {\n '0': 'AH'\n }\n },\n 'dateFormats': {\n 'full': 'EEEE, MMMM d, y G',\n 'long': 'MMMM d, y G',\n 'medium': 'MMM d, y G',\n 'short': 'M/d/y GGGGG'\n },\n 'timeFormats': {\n 'full': 'h:mm:ss a zzzz',\n 'long': 'h:mm:ss a z',\n 'medium': 'h:mm:ss a',\n 'short': 'h:mm a'\n },\n 'dateTimeFormats': {\n 'full': '{1} \\'at\\' {0}',\n 'long': '{1} \\'at\\' {0}',\n 'medium': '{1}, {0}',\n 'short': '{1}, {0}',\n 'availableFormats': {\n 'd': 'd',\n 'E': 'ccc',\n 'Ed': 'd E',\n 'Ehm': 'E h:mm a',\n 'EHm': 'E HH:mm',\n 'Ehms': 'E h:mm:ss a',\n 'EHms': 'E HH:mm:ss',\n 'Gy': 'y G',\n 'GyMMM': 'MMM y G',\n 'GyMMMd': 'MMM d, y G',\n 'GyMMMEd': 'E, MMM d, y G',\n 'h': 'h a',\n 'H': 'HH',\n 'hm': 'h:mm a',\n 'Hm': 'HH:mm',\n 'hms': 'h:mm:ss a',\n 'Hms': 'HH:mm:ss',\n 'M': 'L',\n 'Md': 'M/d',\n 'MEd': 'E, M/d',\n 'MMM': 'LLL',\n 'MMMd': 'MMM d',\n 'MMMEd': 'E, MMM d',\n 'MMMMd': 'MMMM d',\n 'ms': 'mm:ss',\n 'y': 'y G',\n 'yyyy': 'y G',\n 'yyyyM': 'M/y GGGGG',\n 'yyyyMd': 'M/d/y GGGGG',\n 'yyyyMEd': 'E, M/d/y GGGGG',\n 'yyyyMMM': 'MMM y G',\n 'yyyyMMMd': 'MMM d, y G',\n 'yyyyMMMEd': 'E, MMM d, y G',\n 'yyyyMMMM': 'MMMM y G',\n 'yyyyQQQ': 'QQQ y G',\n 'yyyyQQQQ': 'QQQQ y G'\n }\n }\n }\n },\n 'timeZoneNames': {\n 'hourFormat': '+HH:mm;-HH:mm',\n 'gmtFormat': 'GMT{0}',\n 'gmtZeroFormat': 'GMT'\n }\n },\n 'numbers': {\n 'currencies': {\n 'USD': {\n 'displayName': 'US Dollar',\n 'symbol': '$',\n 'symbol-alt-narrow': '$'\n },\n 'EUR': {\n 'displayName': 'Euro',\n 'symbol': '€',\n 'symbol-alt-narrow': '€'\n },\n 'GBP': {\n 'displayName': 'British Pound',\n 'symbol-alt-narrow': '£'\n }\n },\n 'defaultNumberingSystem': 'latn',\n 'minimumGroupingDigits': '1',\n 'symbols-numberSystem-latn': {\n 'decimal': '.',\n 'group': ',',\n 'list': ';',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'exponential': 'E',\n 'superscriptingExponent': '×',\n 'perMille': '‰',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'timeSeparator': ':'\n },\n 'decimalFormats-numberSystem-latn': {\n 'standard': '#,##0.###'\n },\n 'percentFormats-numberSystem-latn': {\n 'standard': '#,##0%'\n },\n 'currencyFormats-numberSystem-latn': {\n 'standard': '¤#,##0.00',\n 'accounting': '¤#,##0.00;(¤#,##0.00)'\n },\n 'scientificFormats-numberSystem-latn': {\n 'standard': '#E0'\n }\n }\n };\n IntlBase.blazorDefaultObject = {\n 'numbers': {\n 'mapper': {\n '0': '0',\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9'\n },\n 'mapperDigits': '0123456789',\n 'numberSymbols': {\n 'decimal': '.',\n 'group': ',',\n 'plusSign': '+',\n 'minusSign': '-',\n 'percentSign': '%',\n 'nan': 'NaN',\n 'timeSeparator': ':',\n 'infinity': '∞'\n },\n 'timeSeparator': ':',\n 'currencySymbol': '$',\n 'currencypData': {\n 'nlead': '$',\n 'nend': '',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'percentpData': {\n 'nlead': '',\n 'nend': '%',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'percentnData': {\n 'nlead': '-',\n 'nend': '%',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'currencynData': {\n 'nlead': '($',\n 'nend': ')',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'decimalnData': {\n 'nlead': '-',\n 'nend': '',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'decimalpData': {\n 'nlead': '',\n 'nend': '',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n }\n },\n 'dates': {\n 'dayPeriods': {\n 'am': 'AM',\n 'pm': 'PM'\n },\n 'dateSeperator': '/',\n 'days': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n },\n 'months': {\n 'abbreviated': {\n '1': 'Jan',\n '2': 'Feb',\n '3': 'Mar',\n '4': 'Apr',\n '5': 'May',\n '6': 'Jun',\n '7': 'Jul',\n '8': 'Aug',\n '9': 'Sep',\n '10': 'Oct',\n '11': 'Nov',\n '12': 'Dec'\n },\n 'wide': {\n '1': 'January',\n '2': 'February',\n '3': 'March',\n '4': 'April',\n '5': 'May',\n '6': 'June',\n '7': 'July',\n '8': 'August',\n '9': 'September',\n '10': 'October',\n '11': 'November',\n '12': 'December'\n }\n },\n 'eras': {\n '1': 'AD'\n }\n }\n };\n IntlBase.monthIndex = {\n 3: 'abbreviated',\n 4: 'wide',\n 5: 'narrow',\n 1: 'abbreviated'\n };\n /**\n *\n */\n IntlBase.month = 'months';\n IntlBase.days = 'days';\n /**\n * Default numerber Object\n */\n IntlBase.patternMatcher = {\n C: 'currency',\n P: 'percent',\n N: 'decimal',\n A: 'currency',\n E: 'scientific'\n };\n /**\n * Returns the resultant pattern based on the skeleton, dateObject and the type provided\n *\n * @private\n * @param {string} skeleton ?\n * @param {Object} dateObject ?\n * @param {string} type ?\n * @param {boolean} isIslamic ?\n * @param {string} blazorCulture ?\n * @returns {string} ?\n */\n function getResultantPattern(skeleton, dateObject, type, isIslamic, blazorCulture) {\n var resPattern;\n var iType = type || 'date';\n if (blazorCulture) {\n resPattern = compareBlazorDateFormats({ skeleton: skeleton }, blazorCulture).format ||\n compareBlazorDateFormats({ skeleton: 'd' }, 'en-US').format;\n }\n else {\n if (IntlBase.basicPatterns.indexOf(skeleton) !== -1) {\n resPattern = getValue(iType + 'Formats.' + skeleton, dateObject);\n if (iType === 'dateTime') {\n var dPattern = getValue('dateFormats.' + skeleton, dateObject);\n var tPattern = getValue('timeFormats.' + skeleton, dateObject);\n resPattern = resPattern.replace('{1}', dPattern).replace('{0}', tPattern);\n }\n }\n else {\n resPattern = getValue('dateTimeFormats.availableFormats.' + skeleton, dateObject);\n }\n if (isUndefined(resPattern) && skeleton === 'yMd') {\n resPattern = 'M/d/y';\n }\n }\n return resPattern;\n }\n IntlBase.getResultantPattern = getResultantPattern;\n /**\n * Returns the dependable object for provided cldr data and culture\n *\n * @private\n * @param {Object} cldr ?\n * @param {string} culture ?\n * @param {string} mode ?\n * @param {boolean} isNumber ?\n * @returns {any} ?\n */\n function getDependables(cldr, culture, mode, isNumber) {\n var ret = {};\n var calendartype = mode || 'gregorian';\n ret.parserObject = parser.getMainObject(cldr, culture) || (isBlazor() ? IntlBase.blazorDefaultObject : IntlBase.defaultObject);\n if (isNumber) {\n ret.numericObject = getValue('numbers', ret.parserObject);\n }\n else {\n var dateString = isBlazor() ? 'dates' : ('dates.calendars.' + calendartype);\n ret.dateObject = getValue(dateString, ret.parserObject);\n }\n return ret;\n }\n IntlBase.getDependables = getDependables;\n /**\n * Returns the symbol pattern for provided parameters\n *\n * @private\n * @param {string} type ?\n * @param {string} numSystem ?\n * @param {Object} obj ?\n * @param {boolean} isAccount ?\n * @returns {string} ?\n */\n function getSymbolPattern(type, numSystem, obj, isAccount) {\n return getValue(type + 'Formats-numberSystem-' +\n numSystem + (isAccount ? '.accounting' : '.standard'), obj) || (isAccount ? getValue(type + 'Formats-numberSystem-' +\n numSystem + '.standard', obj) : '');\n }\n IntlBase.getSymbolPattern = getSymbolPattern;\n /**\n *\n * @param {string} format ?\n * @returns {string} ?\n */\n function ConvertDateToWeekFormat(format) {\n var convertMapper = format.match(IntlBase.dateConverterMapper);\n if (convertMapper && isBlazor()) {\n var tempString = convertMapper[0].length === 3 ? 'EEE' : 'EEEE';\n return format.replace(IntlBase.dateConverterMapper, tempString);\n }\n return format;\n }\n IntlBase.ConvertDateToWeekFormat = ConvertDateToWeekFormat;\n /**\n *\n * @param {DateFormatOptions} formatOptions ?\n * @param {string} culture ?\n * @returns {DateFormatOptions} ?\n */\n function compareBlazorDateFormats(formatOptions, culture) {\n var format = formatOptions.format || formatOptions.skeleton;\n var curFormatMapper = getValue((culture || 'en-US') + '.' + format, blazorCultureFormats);\n if (!curFormatMapper) {\n curFormatMapper = getValue('en-US.' + format, blazorCultureFormats);\n }\n if (curFormatMapper) {\n curFormatMapper = ConvertDateToWeekFormat(curFormatMapper);\n formatOptions.format = curFormatMapper.replace(/tt/, 'a');\n }\n return formatOptions;\n }\n IntlBase.compareBlazorDateFormats = compareBlazorDateFormats;\n /**\n * Returns proper numeric skeleton\n *\n * @private\n * @param {string} skeleton ?\n * @returns {any} ?\n */\n function getProperNumericSkeleton(skeleton) {\n var matches = skeleton.match(IntlBase.formatRegex);\n var ret = {};\n var pattern = matches[1].toUpperCase();\n ret.isAccount = (pattern === 'A');\n ret.type = IntlBase.patternMatcher[\"\" + pattern];\n if (skeleton.length > 1) {\n ret.fractionDigits = parseInt(matches[2], 10);\n }\n return ret;\n }\n IntlBase.getProperNumericSkeleton = getProperNumericSkeleton;\n /**\n * Returns format data for number formatting like minimum fraction, maximum fraction, etc..,\n *\n * @private\n * @param {string} pattern ?\n * @param {boolean} needFraction ?\n * @param {string} cSymbol ?\n * @param {boolean} fractionOnly ?\n * @returns {any} ?\n */\n function getFormatData(pattern, needFraction, cSymbol, fractionOnly) {\n var nData = fractionOnly ? {} : { nlead: '', nend: '' };\n var match = pattern.match(IntlBase.customRegex);\n if (match) {\n if (!fractionOnly) {\n nData.nlead = changeCurrencySymbol(match[1], cSymbol);\n nData.nend = changeCurrencySymbol(match[10], cSymbol);\n nData.groupPattern = match[4];\n }\n var fraction = match[7];\n if (fraction && needFraction) {\n var fmatch = fraction.match(fractionRegex);\n if (!isNullOrUndefined(fmatch)) {\n nData.minimumFraction = fmatch.length;\n }\n else {\n nData.minimumFraction = 0;\n }\n nData.maximumFraction = fraction.length - 1;\n }\n }\n return nData;\n }\n IntlBase.getFormatData = getFormatData;\n /**\n * Changes currency symbol\n *\n * @private\n * @param {string} val ?\n * @param {string} sym ?\n * @returns {string} ?\n */\n function changeCurrencySymbol(val, sym) {\n if (val) {\n val = val.replace(IntlBase.defaultCurrency, sym);\n return (sym === '') ? val.trim() : val;\n }\n return '';\n }\n IntlBase.changeCurrencySymbol = changeCurrencySymbol;\n /**\n * Returns currency symbol based on currency code ?\n *\n * @private\n * @param {Object} numericObject ?\n * @param {string} currencyCode ?\n * @param {string} altSymbol ?\n * @param {string} ignoreCurrency ?\n * @returns {string} ?\n */\n function getCurrencySymbol(numericObject, currencyCode, altSymbol, ignoreCurrency) {\n var symbol = altSymbol ? ('.' + altSymbol) : '.symbol';\n var getCurrency = ignoreCurrency ? '$' : getValue('currencies.' + currencyCode + symbol, numericObject) ||\n getValue('currencies.' + currencyCode + '.symbol-alt-narrow', numericObject) || '$';\n return getCurrency;\n }\n IntlBase.getCurrencySymbol = getCurrencySymbol;\n /**\n * Returns formatting options for custom number format\n *\n * @private\n * @param {string} format ?\n * @param {CommonOptions} dOptions ?\n * @param {any} obj ?\n * @returns {any} ?\n */\n function customFormat(format, dOptions, obj) {\n var options = {};\n var formatSplit = format.split(';');\n var data = ['pData', 'nData', 'zeroData'];\n for (var i = 0; i < formatSplit.length; i++) {\n options[\"\" + data[parseInt(i.toString(), 10)]] = customNumberFormat(formatSplit[parseInt(i.toString(), 10)], dOptions, obj);\n }\n if (isNullOrUndefined(options.nData)) {\n options.nData = extend({}, options.pData);\n options.nData.nlead = isNullOrUndefined(dOptions) ? '-' + options.nData.nlead : dOptions.minusSymbol + options.nData.nlead;\n }\n return options;\n }\n IntlBase.customFormat = customFormat;\n /**\n * Returns custom formatting options\n *\n * @private\n * @param {string} format ?\n * @param {CommonOptions} dOptions ?\n * @param {Object} numObject ?\n * @returns {any} ?\n */\n function customNumberFormat(format, dOptions, numObject) {\n var cOptions = { type: 'decimal', minimumFractionDigits: 0, maximumFractionDigits: 0 };\n var pattern = format.match(IntlBase.customRegex);\n if (isNullOrUndefined(pattern) || (pattern[5] === '' && format !== 'N/A')) {\n cOptions.type = undefined;\n return cOptions;\n }\n cOptions.nlead = pattern[1];\n cOptions.nend = pattern[10];\n var integerPart = pattern[6];\n var spaceCapture = integerPart.match(/ $/g) ? true : false;\n var spaceGrouping = integerPart.replace(/ $/g, '').indexOf(' ') !== -1;\n cOptions.useGrouping = integerPart.indexOf(',') !== -1 || spaceGrouping;\n integerPart = integerPart.replace(/,/g, '');\n var fractionPart = pattern[7];\n if (integerPart.indexOf('0') !== -1) {\n cOptions.minimumIntegerDigits = integerPart.length - integerPart.indexOf('0');\n }\n if (!isNullOrUndefined(fractionPart)) {\n cOptions.minimumFractionDigits = fractionPart.lastIndexOf('0');\n cOptions.maximumFractionDigits = fractionPart.lastIndexOf('#');\n if (cOptions.minimumFractionDigits === -1) {\n cOptions.minimumFractionDigits = 0;\n }\n if (cOptions.maximumFractionDigits === -1 || cOptions.maximumFractionDigits < cOptions.minimumFractionDigits) {\n cOptions.maximumFractionDigits = cOptions.minimumFractionDigits;\n }\n }\n if (!isNullOrUndefined(dOptions)) {\n dOptions.isCustomFormat = true;\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '$', dOptions.currencySymbol));\n if (!cOptions.isCurrency) {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', dOptions.percentSymbol));\n }\n }\n else {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', '%'));\n }\n if (!isNullOrUndefined(numObject)) {\n var symbolPattern = getSymbolPattern(cOptions.type, dOptions.numberMapper.numberSystem, numObject, false);\n if (cOptions.useGrouping) {\n cOptions.groupSeparator = spaceGrouping ? ' ' : dOptions.numberMapper.numberSymbols[mapper[2]];\n cOptions.groupData = NumberFormat.getGroupingDetails(symbolPattern.split(';')[0]);\n }\n cOptions.nlead = cOptions.nlead.replace(/'/g, '');\n cOptions.nend = spaceCapture ? ' ' + cOptions.nend.replace(/'/g, '') : cOptions.nend.replace(/'/g, '');\n }\n return cOptions;\n }\n IntlBase.customNumberFormat = customNumberFormat;\n /**\n * Returns formatting options for currency or percent type\n *\n * @private\n * @param {string[]} parts ?\n * @param {string} actual ?\n * @param {string} symbol ?\n * @returns {any} ?\n */\n function isCurrencyPercent(parts, actual, symbol) {\n var options = { nlead: parts[0], nend: parts[1] };\n for (var i = 0; i < 2; i++) {\n var part = parts[parseInt(i.toString(), 10)];\n var loc = part.indexOf(actual);\n if ((loc !== -1) && ((loc < part.indexOf('\\'')) || (loc > part.lastIndexOf('\\'')))) {\n options[\"\" + typeMapper[parseInt(i.toString(), 10)]] = part.substr(0, loc) + symbol + part.substr(loc + 1);\n options[\"\" + typeMapper[\"\" + actual]] = true;\n options.type = options.isCurrency ? 'currency' : 'percent';\n break;\n }\n }\n return options;\n }\n IntlBase.isCurrencyPercent = isCurrencyPercent;\n /**\n * Returns culture based date separator\n *\n * @private\n * @param {Object} dateObj ?\n * @returns {string} ?\n */\n function getDateSeparator(dateObj) {\n var value = (getValue('dateFormats.short', dateObj) || '').match(/[dM]([^dM])[dM]/i);\n return value ? value[1] : '/';\n }\n IntlBase.getDateSeparator = getDateSeparator;\n /**\n * Returns Native Date Time pattern\n *\n * @private\n * @param {string} culture ?\n * @param {DateFormatOptions} options ?\n * @param {Object} cldr ?\n * @param {boolean} isExcelFormat ?\n * @returns {string} ?\n */\n function getActualDateTimeFormat(culture, options, cldr, isExcelFormat) {\n var dependable = getDependables(cldr, culture, options.calendar);\n if (isBlazor()) {\n options = compareBlazorDateFormats(options, culture);\n }\n var actualPattern = options.format || getResultantPattern(options.skeleton, dependable.dateObject, options.type);\n if (isExcelFormat) {\n actualPattern = actualPattern.replace(patternRegex, function (pattern) {\n return patternMatch[\"\" + pattern];\n });\n if (actualPattern.indexOf('z') !== -1) {\n var tLength = actualPattern.match(/z/g).length;\n var timeZonePattern = void 0;\n var options_1 = { 'timeZone': {} };\n options_1.numMapper = parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n options_1.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n var value = new Date();\n var timezone = value.getTimezoneOffset();\n var pattern = (tLength < 4) ? '+H;-H' : options_1.timeZone.hourFormat;\n pattern = pattern.replace(/:/g, options_1.numMapper.timeSeparator);\n if (timezone === 0) {\n timeZonePattern = options_1.timeZone.gmtZeroFormat;\n }\n else {\n timeZonePattern = DateFormat.getTimeZoneValue(timezone, pattern);\n timeZonePattern = options_1.timeZone.gmtFormat.replace(/\\{0\\}/, timeZonePattern);\n }\n actualPattern = actualPattern.replace(/[z]+/, '\"' + timeZonePattern + '\"');\n }\n actualPattern = actualPattern.replace(/ $/, '');\n }\n return actualPattern;\n }\n IntlBase.getActualDateTimeFormat = getActualDateTimeFormat;\n /**\n *\n * @param {string} actual ?\n * @param {any} option ?\n * @returns {any} ?\n */\n function processSymbol(actual, option) {\n if (actual.indexOf(',') !== -1) {\n var split = actual.split(',');\n actual = (split[0] + getValue('numberMapper.numberSymbols.group', option) +\n split[1].replace('.', getValue('numberMapper.numberSymbols.decimal', option)));\n }\n else {\n actual = actual.replace('.', getValue('numberMapper.numberSymbols.decimal', option));\n }\n return actual;\n }\n IntlBase.processSymbol = processSymbol;\n /**\n * Returns Native Number pattern\n *\n * @private\n * @param {string} culture ?\n * @param {NumberFormatOptions} options ?\n * @param {Object} cldr ?\n * @param {boolean} isExcel ?\n * @returns {string} ?\n */\n function getActualNumberFormat(culture, options, cldr, isExcel) {\n var dependable = getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n var numrericObject = dependable.numericObject;\n var minFrac;\n var curObj = {};\n var curMatch = (options.format || '').match(IntlBase.currencyFormatRegex);\n var type = IntlBase.formatRegex.test(options.format) ? getProperNumericSkeleton(options.format || 'N') : {};\n var dOptions = {};\n if (curMatch) {\n dOptions.numberMapper = isBlazor() ?\n extend({}, dependable.numericObject) :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n var curCode = isBlazor() ? getValue('currencySymbol', dependable.numericObject) :\n getCurrencySymbol(dependable.numericObject, options.currency || defaultCurrencyCode, options.altSymbol);\n var symbolPattern = getSymbolPattern('currency', dOptions.numberMapper.numberSystem, dependable.numericObject, (/a/i).test(options.format));\n symbolPattern = symbolPattern.replace(/\\u00A4/g, curCode);\n var split = symbolPattern.split(';');\n curObj.hasNegativePattern = isBlazor() ? true : (split.length > 1);\n curObj.nData = isBlazor() ? getValue(type.type + 'nData', numrericObject) :\n getFormatData(split[1] || '-' + split[0], true, curCode);\n curObj.pData = isBlazor() ? getValue(type.type + 'pData', numrericObject) :\n getFormatData(split[0], false, curCode);\n if (!curMatch[2] && !options.minimumFractionDigits && !options.maximumFractionDigits) {\n minFrac = getFormatData(symbolPattern.split(';')[0], true, '', true).minimumFraction;\n }\n }\n var actualPattern;\n if ((IntlBase.formatRegex.test(options.format)) || !(options.format)) {\n extend(parseOptions, getProperNumericSkeleton(options.format || 'N'));\n parseOptions.custom = false;\n actualPattern = '###0';\n if (parseOptions.fractionDigits || options.minimumFractionDigits || options.maximumFractionDigits || minFrac) {\n var defaultMinimum = 0;\n if (parseOptions.fractionDigits) {\n options.minimumFractionDigits = options.maximumFractionDigits = parseOptions.fractionDigits;\n }\n actualPattern = fractionDigitsPattern(actualPattern, minFrac || parseOptions.fractionDigits ||\n options.minimumFractionDigits || defaultMinimum, options.maximumFractionDigits || defaultMinimum);\n }\n if (options.minimumIntegerDigits) {\n actualPattern = minimumIntegerPattern(actualPattern, options.minimumIntegerDigits);\n }\n if (options.useGrouping) {\n actualPattern = groupingPattern(actualPattern);\n }\n if (parseOptions.type === 'currency' || (parseOptions.type && isBlazor())) {\n if (isBlazor() && parseOptions.type !== 'currency') {\n curObj.pData = getValue(parseOptions.type + 'pData', numrericObject);\n curObj.nData = getValue(parseOptions.type + 'nData', numrericObject);\n }\n var cPattern = actualPattern;\n actualPattern = curObj.pData.nlead + cPattern + curObj.pData.nend;\n if (curObj.hasNegativePattern || isBlazor()) {\n actualPattern += ';' + curObj.nData.nlead + cPattern + curObj.nData.nend;\n }\n }\n if (parseOptions.type === 'percent' && !isBlazor()) {\n actualPattern += ' %';\n }\n }\n else {\n actualPattern = options.format.replace(/'/g, '\"');\n }\n if (Object.keys(dOptions).length > 0) {\n actualPattern = !isExcel ? processSymbol(actualPattern, dOptions) : actualPattern;\n }\n return actualPattern;\n }\n IntlBase.getActualNumberFormat = getActualNumberFormat;\n /**\n *\n * @param {string} pattern ?\n * @param {number} minDigits ?\n * @param {number} maxDigits ?\n * @returns {string} ?\n */\n function fractionDigitsPattern(pattern, minDigits, maxDigits) {\n pattern += '.';\n for (var a = 0; a < minDigits; a++) {\n pattern += '0';\n }\n if (minDigits < maxDigits) {\n var diff = maxDigits - minDigits;\n for (var b = 0; b < diff; b++) {\n pattern += '#';\n }\n }\n return pattern;\n }\n IntlBase.fractionDigitsPattern = fractionDigitsPattern;\n /**\n *\n * @param {string} pattern ?\n * @param {number} digits ?\n * @returns {string} ?\n */\n function minimumIntegerPattern(pattern, digits) {\n var temp = pattern.split('.');\n var integer = '';\n for (var x = 0; x < digits; x++) {\n integer += '0';\n }\n return temp[1] ? (integer + '.' + temp[1]) : integer;\n }\n IntlBase.minimumIntegerPattern = minimumIntegerPattern;\n /**\n *\n * @param {string} pattern ?\n * @returns {string} ?\n */\n function groupingPattern(pattern) {\n var temp = pattern.split('.');\n var integer = temp[0];\n var no = 3 - integer.length % 3;\n var hash = (no && no === 1) ? '#' : (no === 2 ? '##' : '');\n integer = hash + integer;\n pattern = '';\n for (var x = integer.length - 1; x > 0; x = x - 3) {\n pattern = ',' + integer[x - 2] + integer[x - 1] + integer[parseInt(x.toString(), 10)] + pattern;\n }\n pattern = pattern.slice(1);\n return temp[1] ? (pattern + '.' + temp[1]) : pattern;\n }\n IntlBase.groupingPattern = groupingPattern;\n /**\n *\n * @param {string} culture ?\n * @param {Object} cldr ?\n * @returns {number} ?\n */\n function getWeekData(culture, cldr) {\n var firstDay = defaultFirstDay;\n var mapper = getValue('supplemental.weekData.firstDay', cldr);\n var iCulture = culture;\n if ((/en-/).test(iCulture)) {\n iCulture = iCulture.slice(3);\n }\n iCulture = iCulture.slice(0, 2).toUpperCase() + iCulture.substr(2);\n if (mapper) {\n firstDay = mapper[\"\" + iCulture] || mapper[iCulture.slice(0, 2)] || defaultFirstDay;\n }\n return firstDayMapper[\"\" + firstDay];\n }\n IntlBase.getWeekData = getWeekData;\n /**\n * @private\n * @param {any} pData ?\n * @param {string} aCurrency ?\n * @param {string} rCurrency ?\n * @returns {void} ?\n */\n function replaceBlazorCurrency(pData, aCurrency, rCurrency) {\n var iCurrency = getBlazorCurrencySymbol(rCurrency);\n if (aCurrency !== iCurrency) {\n for (var _i = 0, pData_1 = pData; _i < pData_1.length; _i++) {\n var data = pData_1[_i];\n data.nend = data.nend.replace(aCurrency, iCurrency);\n data.nlead = data.nlead.replace(aCurrency, iCurrency);\n }\n }\n }\n IntlBase.replaceBlazorCurrency = replaceBlazorCurrency;\n /**\n * @private\n * @param {Date} date ?\n * @returns {number} ?\n */\n function getWeekOfYear(date) {\n var newYear = new Date(date.getFullYear(), 0, 1);\n var day = newYear.getDay();\n var weeknum;\n day = (day >= 0 ? day : day + 7);\n var daynum = Math.floor((date.getTime() - newYear.getTime() -\n (date.getTimezoneOffset() - newYear.getTimezoneOffset()) * 60000) / 86400000) + 1;\n if (day < 4) {\n weeknum = Math.floor((daynum + day - 1) / 7) + 1;\n if (weeknum > 52) {\n var nYear = new Date(date.getFullYear() + 1, 0, 1);\n var nday = nYear.getDay();\n nday = nday >= 0 ? nday : nday + 7;\n weeknum = nday < 4 ? 1 : 53;\n }\n }\n else {\n weeknum = Math.floor((daynum + day - 1) / 7);\n }\n return weeknum;\n }\n IntlBase.getWeekOfYear = getWeekOfYear;\n})(IntlBase || (IntlBase = {}));\n","import { isNullOrUndefined, merge } from './util';\nvar headerRegex = /^(.*?):[ \\t]*([^\\r\\n]*)$/gm;\nvar defaultType = 'GET';\n/**\n * Ajax class provides ability to make asynchronous HTTP request to the server\n * ```typescript\n * var ajax = new Ajax(\"index.html\", \"GET\", true);\n * ajax.send().then(\n * function (value) {\n * console.log(value);\n * },\n * function (reason) {\n * console.log(reason);\n * });\n * ```\n */\nvar Ajax = /** @class */ (function () {\n /**\n * Constructor for Ajax class\n *\n * @param {string|Object} options ?\n * @param {string} type ?\n * @param {boolean} async ?\n * @returns defaultType any\n */\n function Ajax(options, type, async, contentType) {\n /**\n * A boolean value indicating whether the request should be sent asynchronous or not.\n *\n * @default true\n */\n this.mode = true;\n /**\n * A boolean value indicating whether to ignore the promise reject.\n *\n * @private\n * @default true\n */\n this.emitError = true;\n this.options = {};\n if (typeof options === 'string') {\n this.url = options;\n this.type = type ? type.toUpperCase() : defaultType;\n this.mode = !isNullOrUndefined(async) ? async : true;\n }\n else if (typeof options === 'object') {\n this.options = options;\n merge(this, this.options);\n }\n this.type = this.type ? this.type.toUpperCase() : defaultType;\n this.contentType = (this.contentType !== undefined) ? this.contentType : contentType;\n }\n /**\n *\n * Send the request to server.\n *\n * @param {any} data - To send the user data\n * @returns {Promise} ?\n */\n Ajax.prototype.send = function (data) {\n var _this = this;\n this.data = isNullOrUndefined(data) ? this.data : data;\n var eventArgs = {\n cancel: false,\n httpRequest: null\n };\n var promise = new Promise(function (resolve, reject) {\n _this.httpRequest = new XMLHttpRequest();\n _this.httpRequest.onreadystatechange = function () { _this.stateChange(resolve, reject); };\n if (!isNullOrUndefined(_this.onLoad)) {\n _this.httpRequest.onload = _this.onLoad;\n }\n if (!isNullOrUndefined(_this.onProgress)) {\n _this.httpRequest.onprogress = _this.onProgress;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onAbort)) {\n _this.httpRequest.onabort = _this.onAbort;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onError)) {\n _this.httpRequest.onerror = _this.onError;\n }\n //** Upload Events **/\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onUploadProgress)) {\n _this.httpRequest.upload.onprogress = _this.onUploadProgress;\n }\n _this.httpRequest.open(_this.type, _this.url, _this.mode);\n // Set default headers\n if (!isNullOrUndefined(_this.data) && _this.contentType !== null) {\n _this.httpRequest.setRequestHeader('Content-Type', _this.contentType || 'application/json; charset=utf-8');\n }\n if (_this.beforeSend) {\n eventArgs.httpRequest = _this.httpRequest;\n _this.beforeSend(eventArgs);\n }\n if (!eventArgs.cancel) {\n _this.httpRequest.send(!isNullOrUndefined(_this.data) ? _this.data : null);\n }\n });\n return promise;\n };\n Ajax.prototype.successHandler = function (data) {\n if (this.onSuccess) {\n this.onSuccess(data, this);\n }\n return data;\n };\n Ajax.prototype.failureHandler = function (reason) {\n if (this.onFailure) {\n this.onFailure(this.httpRequest);\n }\n return reason;\n };\n Ajax.prototype.stateChange = function (resolve, reject) {\n var data = this.httpRequest.responseText;\n if (this.dataType && this.dataType.toLowerCase() === 'json') {\n if (data === '') {\n data = undefined;\n }\n else {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n // no exception handle\n }\n }\n }\n if (this.httpRequest.readyState === 4) {\n //success range should be 200 to 299\n if ((this.httpRequest.status >= 200 && this.httpRequest.status <= 299) || this.httpRequest.status === 304) {\n resolve(this.successHandler(data));\n }\n else {\n if (this.emitError) {\n reject(new Error(this.failureHandler(this.httpRequest.statusText)));\n }\n else {\n resolve();\n }\n }\n }\n };\n /**\n * To get the response header from XMLHttpRequest\n *\n * @param {string} key Key to search in the response header\n * @returns {string} ?\n */\n Ajax.prototype.getResponseHeader = function (key) {\n var responseHeaders = {};\n var headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n while (headers) {\n responseHeaders[headers[1].toLowerCase()] = headers[2];\n headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n }\n var header = responseHeaders[key.toLowerCase()];\n return isNullOrUndefined(header) ? null : header;\n };\n return Ajax;\n}());\nexport { Ajax };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isNullOrUndefined as isNOU, isObject, merge } from './util';\n/**\n * The Fetch class provides a way to make asynchronous network requests, typically to retrieve resources from a server.\n * ```typescript\n * var fetchApi = new Fetch('index.html', 'GET');\n * fetchApi.send()\n * .then((value) => {\n * console.log(value);\n * }).catch((error) => {\n * console.log(error);\n * });\n * ```\n */\nvar Fetch = /** @class */ (function () {\n /**\n * Constructor for Fetch class.\n *\n * @param {string|Object} options - Specifies the URL or Request object with URL to which the request is to be sent.\n * @param {string} type - Specifies which request method is to be used, such as GET, POST, etc.\n * @param {string} contentType - Specifies the content type of the request, which is used to indicate the original media type of the resource.\n */\n function Fetch(options, type, contentType) {\n /**\n * Specifies which request method is to be used, such as GET, POST, etc.\n *\n * @default GET\n */\n this.type = 'GET';\n /**\n * A boolean value indicating whether to reject the promise or not.\n *\n * @private\n * @default true\n */\n this.emitError = true;\n if (typeof options === 'string') {\n this.url = options;\n this.type = !isNOU(type) ? type.toUpperCase() : this.type;\n this.contentType = contentType;\n }\n else if (isObject(options) && Object.keys(options).length > 0) {\n merge(this, options);\n }\n this.contentType = !isNOU(this.contentType) ? this.contentType : 'application/json; charset=utf-8';\n }\n /**\n * Send the request to server.\n *\n * @param {string|Object} data - Specifies the data that needs to be added to the request.\n * @returns {Promise} - Returns the response to a request.\n */\n Fetch.prototype.send = function (data) {\n var _this = this;\n var contentTypes = {\n 'application/json': 'json',\n 'multipart/form-data': 'formData',\n 'application/octet-stream': 'blob',\n 'application/x-www-form-urlencoded': 'formData'\n };\n try {\n if (isNOU(this.fetchRequest) && this.type === 'GET') {\n this.fetchRequest = new Request(this.url, { method: this.type });\n }\n else if (isNOU(this.fetchRequest)) {\n this.data = !isNOU(data) ? data : this.data;\n this.fetchRequest = new Request(this.url, {\n method: this.type,\n headers: { 'Content-Type': this.contentType },\n body: this.data\n });\n }\n var eventArgs = { cancel: false, fetchRequest: this.fetchRequest };\n this.triggerEvent(this['beforeSend'], eventArgs);\n if (eventArgs.cancel) {\n return null;\n }\n this.fetchResponse = fetch(this.fetchRequest);\n return this.fetchResponse.then(function (response) {\n _this.triggerEvent(_this['onLoad'], response);\n if (!response.ok) {\n throw response;\n }\n var responseType = 'text';\n for (var _i = 0, _a = Object.keys(contentTypes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (response.headers.get('Content-Type') && response.headers.get('Content-Type').indexOf(key) !== -1) {\n responseType = contentTypes[key];\n }\n }\n return response[responseType]();\n }).then(function (data) {\n _this.triggerEvent(_this['onSuccess'], data, _this);\n return data;\n }).catch(function (error) {\n var returnVal = {};\n if (_this.emitError) {\n _this.triggerEvent(_this['onFailure'], error);\n returnVal = Promise.reject(error);\n }\n return returnVal;\n });\n }\n catch (error) {\n return error;\n }\n };\n Fetch.prototype.triggerEvent = function (callback, data, instance) {\n if (!isNOU(callback) && typeof callback === 'function') {\n callback(data, instance);\n }\n };\n return Fetch;\n}());\nexport { Fetch };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isUndefined } from './util';\nvar REGX_MOBILE = /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini|mobile/i;\nvar REGX_IE = /msie|trident/i;\nvar REGX_IE11 = /Trident\\/7\\./;\nvar REGX_IOS = /(ipad|iphone|ipod touch)/i;\nvar REGX_IOS7 = /(ipad|iphone|ipod touch);.*os 7_\\d|(ipad|iphone|ipod touch);.*os 8_\\d/i;\nvar REGX_ANDROID = /android/i;\nvar REGX_WINDOWS = /trident|windows phone|edge/i;\nvar REGX_VERSION = /(version)[ /]([\\w.]+)/i;\nvar REGX_BROWSER = {\n OPERA: /(opera|opr)(?:.*version|)[ /]([\\w.]+)/i,\n EDGE: /(edge)(?:.*version|)[ /]([\\w.]+)/i,\n CHROME: /(chrome|crios)[ /]([\\w.]+)/i,\n PANTHOMEJS: /(phantomjs)[ /]([\\w.]+)/i,\n SAFARI: /(safari)[ /]([\\w.]+)/i,\n WEBKIT: /(webkit)[ /]([\\w.]+)/i,\n MSIE: /(msie|trident) ([\\w.]+)/i,\n MOZILLA: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n};\n/* istanbul ignore else */\nif (typeof window !== 'undefined') {\n window.browserDetails = window.browserDetails || {};\n}\n/**\n * Get configuration details for Browser\n *\n * @private\n */\nvar Browser = /** @class */ (function () {\n function Browser() {\n }\n Browser.extractBrowserDetail = function () {\n var browserInfo = { culture: {} };\n var keys = Object.keys(REGX_BROWSER);\n var clientInfo = [];\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n clientInfo = Browser.userAgent.match(REGX_BROWSER[\"\" + key]);\n if (clientInfo) {\n browserInfo.name = (clientInfo[1].toLowerCase() === 'opr' ? 'opera' : clientInfo[1].toLowerCase());\n browserInfo.name = (clientInfo[1].toLowerCase() === 'crios' ? 'chrome' : browserInfo.name);\n browserInfo.version = clientInfo[2];\n browserInfo.culture.name = browserInfo.culture.language = navigator.language;\n if (Browser.userAgent.match(REGX_IE11)) {\n browserInfo.name = 'msie';\n break;\n }\n var version = Browser.userAgent.match(REGX_VERSION);\n if (browserInfo.name === 'safari' && version) {\n browserInfo.version = version[2];\n }\n break;\n }\n }\n return browserInfo;\n };\n /**\n * To get events from the browser\n *\n * @param {string} event - type of event triggered.\n * @returns {string} ?\n */\n Browser.getEvent = function (event) {\n var events = {\n start: {\n isPointer: 'pointerdown', isTouch: 'touchstart', isDevice: 'mousedown'\n },\n move: {\n isPointer: 'pointermove', isTouch: 'touchmove', isDevice: 'mousemove'\n },\n end: {\n isPointer: 'pointerup', isTouch: 'touchend', isDevice: 'mouseup'\n },\n cancel: {\n isPointer: 'pointercancel', isTouch: 'touchcancel', isDevice: 'mouseleave'\n }\n };\n return (Browser.isPointer ? events[\"\" + event].isPointer :\n (Browser.isTouch ? events[\"\" + event].isTouch + (!Browser.isDevice ? ' ' + events[\"\" + event].isDevice : '')\n : events[\"\" + event].isDevice));\n };\n /**\n * To get the Touch start event from browser\n *\n * @returns {string}\n */\n Browser.getTouchStartEvent = function () {\n return Browser.getEvent('start');\n };\n /**\n * To get the Touch end event from browser\n *\n * @returns {string}\n */\n Browser.getTouchEndEvent = function () {\n return Browser.getEvent('end');\n };\n /**\n * To get the Touch move event from browser\n *\n * @returns {string}\n */\n Browser.getTouchMoveEvent = function () {\n return Browser.getEvent('move');\n };\n /**\n * To cancel the touch event from browser\n *\n * @returns {string}\n */\n Browser.getTouchCancelEvent = function () {\n return Browser.getEvent('cancel');\n };\n /**\n * Check whether the browser on the iPad device is Safari or not\n *\n * @returns {boolean}\n */\n Browser.isSafari = function () {\n return (Browser.isDevice && Browser.isIos && Browser.isTouch && typeof window !== 'undefined'\n && window.navigator.userAgent.toLowerCase().indexOf('iphone') === -1\n && window.navigator.userAgent.toLowerCase().indexOf('safari') > -1);\n };\n /**\n * To get the value based on provided key and regX\n *\n * @param {string} key ?\n * @param {RegExp} regX ?\n * @returns {Object} ?\n */\n Browser.getValue = function (key, regX) {\n var browserDetails = typeof window !== 'undefined' ? window.browserDetails : {};\n if (typeof navigator !== 'undefined' && navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 && Browser.isTouch === true && !REGX_BROWSER.CHROME.test(navigator.userAgent)) {\n browserDetails['isIos'] = true;\n browserDetails['isDevice'] = true;\n browserDetails['isTouch'] = true;\n browserDetails['isPointer'] = true;\n }\n if ('undefined' === typeof browserDetails[\"\" + key]) {\n return browserDetails[\"\" + key] = regX.test(Browser.userAgent);\n }\n return browserDetails[\"\" + key];\n };\n Object.defineProperty(Browser, \"userAgent\", {\n get: function () {\n return Browser.uA;\n },\n //Properties\n /**\n * Property specifies the userAgent of the browser. Default userAgent value is based on the browser.\n * Also we can set our own userAgent.\n *\n * @param {string} uA ?\n */\n set: function (uA) {\n Browser.uA = uA;\n window.browserDetails = {};\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"info\", {\n //Read Only Properties\n /**\n * Property is to get the browser information like Name, Version and Language\n *\n * @returns {BrowserInfo} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.info)) {\n return window.browserDetails.info = Browser.extractBrowserDetail();\n }\n return window.browserDetails.info;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIE\", {\n /**\n * Property is to get whether the userAgent is based IE.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIE', REGX_IE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isTouch\", {\n /**\n * Property is to get whether the browser has touch support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isTouch)) {\n return (window.browserDetails.isTouch =\n ('ontouchstart' in window.navigator) ||\n (window &&\n window.navigator &&\n (window.navigator.maxTouchPoints > 0)) || ('ontouchstart' in window));\n }\n return window.browserDetails.isTouch;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isPointer\", {\n /**\n * Property is to get whether the browser has Pointer support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isPointer)) {\n return window.browserDetails.isPointer = ('pointerEnabled' in window.navigator);\n }\n return window.browserDetails.isPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isMSPointer\", {\n /**\n * Property is to get whether the browser has MSPointer support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isMSPointer)) {\n return window.browserDetails.isMSPointer = ('msPointerEnabled' in window.navigator);\n }\n return window.browserDetails.isMSPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isDevice\", {\n /**\n * Property is to get whether the userAgent is device based.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isDevice', REGX_MOBILE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos\", {\n /**\n * Property is to get whether the userAgent is IOS.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIos', REGX_IOS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos7\", {\n /**\n * Property is to get whether the userAgent is Ios7.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIos7', REGX_IOS7);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isAndroid\", {\n /**\n * Property is to get whether the userAgent is Android.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isAndroid', REGX_ANDROID);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWebView\", {\n /**\n * Property is to identify whether application ran in web view.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isWebView)) {\n window.browserDetails.isWebView = !(isUndefined(window.cordova) && isUndefined(window.PhoneGap)\n && isUndefined(window.phonegap) && window.forge !== 'object');\n return window.browserDetails.isWebView;\n }\n return window.browserDetails.isWebView;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWindows\", {\n /**\n * Property is to get whether the userAgent is Windows.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isWindows', REGX_WINDOWS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchStartEvent\", {\n /**\n * Property is to get the touch start event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchStartEvent)) {\n return window.browserDetails.touchStartEvent = Browser.getTouchStartEvent();\n }\n return window.browserDetails.touchStartEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchMoveEvent\", {\n /**\n * Property is to get the touch move event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchMoveEvent)) {\n return window.browserDetails.touchMoveEvent = Browser.getTouchMoveEvent();\n }\n return window.browserDetails.touchMoveEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchEndEvent\", {\n /**\n * Property is to get the touch end event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchEndEvent)) {\n return window.browserDetails.touchEndEvent = Browser.getTouchEndEvent();\n }\n return window.browserDetails.touchEndEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchCancelEvent\", {\n /**\n * Property is to cancel the touch end event.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchCancelEvent)) {\n return window.browserDetails.touchCancelEvent = Browser.getTouchCancelEvent();\n }\n return window.browserDetails.touchCancelEvent;\n },\n enumerable: true,\n configurable: true\n });\n /* istanbul ignore next */\n Browser.uA = typeof navigator !== 'undefined' ? navigator.userAgent : '';\n return Browser;\n}());\nexport { Browser };\n","import { debounce, extend } from './util';\nimport { Browser } from './browser';\n/**\n * EventHandler class provides option to add, remove, clear and trigger events to a HTML DOM element\n * ```html\n *
\n * \n * ```\n */\nvar EventHandler = /** @class */ (function () {\n function EventHandler() {\n }\n // to get the event data based on element\n EventHandler.addOrGetEventData = function (element) {\n if ('__eventList' in element) {\n return element.__eventList.events;\n }\n else {\n element.__eventList = {};\n return element.__eventList.events = [];\n }\n };\n /**\n * Add an event to the specified DOM element.\n *\n * @param {any} element - Target HTML DOM element\n * @param {string} eventName - A string that specifies the name of the event\n * @param {Function} listener - Specifies the function to run when the event occurs\n * @param {Object} bindTo - A object that binds 'this' variable in the event handler\n * @param {number} intDebounce - Specifies at what interval given event listener should be triggered.\n * @returns {Function} ?\n */\n EventHandler.add = function (element, eventName, listener, bindTo, intDebounce) {\n var eventData = EventHandler.addOrGetEventData(element);\n var debounceListener;\n if (intDebounce) {\n debounceListener = debounce(listener, intDebounce);\n }\n else {\n debounceListener = listener;\n }\n if (bindTo) {\n debounceListener = debounceListener.bind(bindTo);\n }\n var event = eventName.split(' ');\n for (var i = 0; i < event.length; i++) {\n eventData.push({\n name: event[parseInt(i.toString(), 10)],\n listener: listener,\n debounce: debounceListener\n });\n if (Browser.isIE) {\n element.addEventListener(event[parseInt(i.toString(), 10)], debounceListener);\n }\n else {\n element.addEventListener(event[parseInt(i.toString(), 10)], debounceListener, { passive: false });\n }\n }\n return debounceListener;\n };\n /**\n * Remove an event listener that has been attached before.\n *\n * @param {any} element - Specifies the target html element to remove the event\n * @param {string} eventName - A string that specifies the name of the event to remove\n * @param {Function} listener - Specifies the function to remove\n * @returns {void} ?\n */\n EventHandler.remove = function (element, eventName, listener) {\n var eventData = EventHandler.addOrGetEventData(element);\n var event = eventName.split(' ');\n var _loop_1 = function (j) {\n var index = -1;\n var debounceListener;\n if (eventData && eventData.length !== 0) {\n eventData.some(function (x, i) {\n return x.name === event[parseInt(j.toString(), 10)] && x.listener === listener ?\n (index = i, debounceListener = x.debounce, true) : false;\n });\n }\n if (index !== -1) {\n eventData.splice(index, 1);\n }\n if (debounceListener) {\n element.removeEventListener(event[parseInt(j.toString(), 10)], debounceListener);\n }\n };\n for (var j = 0; j < event.length; j++) {\n _loop_1(j);\n }\n };\n /**\n * Clear all the event listeners that has been previously attached to the element.\n *\n * @param {any} element - Specifies the target html element to clear the events\n * @returns {void} ?\n */\n EventHandler.clearEvents = function (element) {\n var eventData = EventHandler.addOrGetEventData(element);\n var copyData = extend([], undefined, eventData);\n for (var i = 0; i < copyData.length; i++) {\n var parseValue = copyData[parseInt(i.toString(), 10)];\n element.removeEventListener(parseValue.name, parseValue.debounce);\n eventData.shift();\n }\n };\n /**\n * Trigger particular event of the element.\n *\n * @param {any} element - Specifies the target html element to trigger the events\n * @param {string} eventName - Specifies the event to trigger for the specified element.\n * Can be a custom event, or any of the standard events.\n * @param {any} eventProp - Additional parameters to pass on to the event properties\n * @returns {void} ?\n */\n EventHandler.trigger = function (element, eventName, eventProp) {\n var eventData = EventHandler.addOrGetEventData(element);\n for (var _i = 0, eventData_1 = eventData; _i < eventData_1.length; _i++) {\n var event_1 = eventData_1[_i];\n if (event_1.name === eventName) {\n event_1.debounce.call(this, eventProp);\n }\n }\n };\n return EventHandler;\n}());\nexport { EventHandler };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Functions related to dom operations.\n */\nimport { EventHandler } from './event-handler';\nimport { isNullOrUndefined, getValue, setValue, isObject, extend } from './util';\nvar SVG_REG = /^svg|^path|^g/;\n/**\n * Function to create Html element.\n *\n * @param {string} tagName - Name of the tag, id and class names.\n * @param {ElementProperties} properties - Object to set properties in the element.\n * @param {ElementProperties} properties.id - To set the id to the created element.\n * @param {ElementProperties} properties.className - To add classes to the element.\n * @param {ElementProperties} properties.innerHTML - To set the innerHTML to element.\n * @param {ElementProperties} properties.styles - To set the some custom styles to element.\n * @param {ElementProperties} properties.attrs - To set the attributes to element.\n * @returns {any} ?\n * @private\n */\nexport function createElement(tagName, properties) {\n var element = (SVG_REG.test(tagName) ? document.createElementNS('http://www.w3.org/2000/svg', tagName) : document.createElement(tagName));\n if (typeof (properties) === 'undefined') {\n return element;\n }\n element.innerHTML = (properties.innerHTML ? properties.innerHTML : '');\n if (properties.className !== undefined) {\n element.className = properties.className;\n }\n if (properties.id !== undefined) {\n element.id = properties.id;\n }\n if (properties.styles !== undefined) {\n element.setAttribute('style', properties.styles);\n }\n if (properties.attrs !== undefined) {\n attributes(element, properties.attrs);\n }\n return element;\n}\n/**\n * The function used to add the classes to array of elements\n *\n * @param {Element[]|NodeList} elements - An array of elements that need to add a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @returns {any} .\n * @private\n */\nexport function addClass(elements, classes) {\n var classList = getClassList(classes);\n var regExp = RegExp;\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n for (var _b = 0, classList_1 = classList; _b < classList_1.length; _b++) {\n var className = classList_1[_b];\n if (isObject(ele)) {\n var curClass = getValue('attributes.className', ele);\n if (isNullOrUndefined(curClass)) {\n setValue('attributes.className', className, ele);\n }\n else if (!new regExp('\\\\b' + className + '\\\\b', 'i').test(curClass)) {\n setValue('attributes.className', curClass + ' ' + className, ele);\n }\n }\n else {\n if (!ele.classList.contains(className)) {\n ele.classList.add(className);\n }\n }\n }\n }\n return elements;\n}\n/**\n * The function used to add the classes to array of elements\n *\n * @param {Element[]|NodeList} elements - An array of elements that need to remove a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @returns {any} .\n * @private\n */\nexport function removeClass(elements, classes) {\n var classList = getClassList(classes);\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n var flag = isObject(ele);\n var canRemove = flag ? getValue('attributes.className', ele) : ele.className !== '';\n if (canRemove) {\n for (var _b = 0, classList_2 = classList; _b < classList_2.length; _b++) {\n var className = classList_2[_b];\n if (flag) {\n var classes_1 = getValue('attributes.className', ele);\n var classArr = classes_1.split(' ');\n var index = classArr.indexOf(className);\n if (index !== -1) {\n classArr.splice(index, 1);\n }\n setValue('attributes.className', classArr.join(' '), ele);\n }\n else {\n ele.classList.remove(className);\n }\n }\n }\n }\n return elements;\n}\n/**\n * The function used to get classlist.\n *\n * @param {string | string[]} classes - An element the need to check visibility\n * @returns {string[]} ?\n * @private\n */\nfunction getClassList(classes) {\n var classList = [];\n if (typeof classes === 'string') {\n classList.push(classes);\n }\n else {\n classList = classes;\n }\n return classList;\n}\n/**\n * The function used to check element is visible or not.\n *\n * @param {Element|Node} element - An element the need to check visibility\n * @returns {boolean} ?\n * @private\n */\nexport function isVisible(element) {\n var ele = element;\n return (ele.style.visibility === '' && ele.offsetWidth > 0);\n}\n/**\n * The function used to insert an array of elements into a first of the element.\n *\n * @param {Element[]|NodeList} fromElements - An array of elements that need to prepend.\n * @param {Element} toElement - An element that is going to prepend.\n * @param {boolean} isEval - ?\n * @returns {Element[] | NodeList} ?\n * @private\n */\nexport function prepend(fromElements, toElement, isEval) {\n var docFrag = document.createDocumentFragment();\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n toElement.insertBefore(docFrag, toElement.firstElementChild);\n if (isEval) {\n executeScript(toElement);\n }\n return fromElements;\n}\n/**\n * The function used to insert an array of elements into last of the element.\n *\n * @param {Element[]|NodeList} fromElements - An array of elements that need to append.\n * @param {Element} toElement - An element that is going to prepend.\n * @param {boolean} isEval - ?\n * @returns {Element[] | NodeList} ?\n * @private\n */\nexport function append(fromElements, toElement, isEval) {\n var docFrag = document.createDocumentFragment();\n if (fromElements instanceof NodeList) {\n while (fromElements.length > 0) {\n docFrag.appendChild(fromElements[0]);\n }\n }\n else {\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n }\n toElement.appendChild(docFrag);\n if (isEval) {\n executeScript(toElement);\n }\n return fromElements;\n}\n/**\n * The function is used to evaluate script from Ajax request\n *\n * @param {Element} ele - An element is going to evaluate the script\n * @returns {void} ?\n */\nfunction executeScript(ele) {\n var eleArray = ele.querySelectorAll('script');\n eleArray.forEach(function (element) {\n var script = document.createElement('script');\n script.text = element.innerHTML;\n document.head.appendChild(script);\n detach(script);\n });\n}\n/**\n * The function used to remove the element from parentnode\n *\n * @param {Element|Node|HTMLElement} element - An element that is going to detach from the Dom\n * @returns {any} ?\n * @private\n */\nexport function detach(element) {\n var parentNode = element.parentNode;\n if (parentNode) {\n return parentNode.removeChild(element);\n }\n}\n/**\n * The function used to remove the element from Dom also clear the bounded events\n *\n * @param {Element|Node|HTMLElement} element - An element remove from the Dom\n * @returns {void} ?\n * @private\n */\nexport function remove(element) {\n var parentNode = element.parentNode;\n EventHandler.clearEvents(element);\n parentNode.removeChild(element);\n}\n/**\n * The function helps to set multiple attributes to an element\n *\n * @param {Element|Node} element - An element that need to set attributes.\n * @param {string} attributes - JSON Object that is going to as attributes.\n * @returns {Element} ?\n * @private\n */\nexport function attributes(element, attributes) {\n var keys = Object.keys(attributes);\n var ele = element;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (isObject(ele)) {\n var iKey = key;\n if (key === 'tabindex') {\n iKey = 'tabIndex';\n }\n ele.attributes[\"\" + iKey] = attributes[\"\" + key];\n }\n else {\n ele.setAttribute(key, attributes[\"\" + key]);\n }\n }\n return ele;\n}\n/**\n * The function selects the element from giving context.\n *\n * @param {string} selector - Selector string need fetch element\n * @param {Document|Element} context - It is an optional type, That specifies a Dom context.\n * @param {boolean} needsVDOM ?\n * @returns {any} ?\n * @private\n */\nexport function select(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n selector = querySelectId(selector);\n return context.querySelector(selector);\n}\n/**\n * The function selects an array of element from the given context.\n *\n * @param {string} selector - Selector string need fetch element\n * @param {Document|Element} context - It is an optional type, That specifies a Dom context.\n * @param {boolean} needsVDOM ?\n * @returns {HTMLElement[]} ?\n * @private\n */\nexport function selectAll(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n selector = querySelectId(selector);\n var nodeList = context.querySelectorAll(selector);\n return nodeList;\n}\n/**\n * The function selects an id of element from the given context.\n *\n * @param {string} selector - Selector string need fetch element\n * @returns {string} ?\n * @private\n */\nfunction querySelectId(selector) {\n var charRegex = /(!|\"|\\$|%|&|'|\\(|\\)|\\*|\\/|:|;|<|=|\\?|@|\\]|\\^|`|{|}|\\||\\+|~)/g;\n if (selector.match(/#[0-9]/g) || selector.match(charRegex)) {\n var idList = selector.split(',');\n for (var i = 0; i < idList.length; i++) {\n var list = idList[parseInt(i.toString(), 10)].split(' ');\n for (var j = 0; j < list.length; j++) {\n if (list[parseInt(j.toString(), 10)].indexOf('#') > -1) {\n if (!list[parseInt(j.toString(), 10)].match(/\\[.*\\]/)) {\n var splitId = list[parseInt(j.toString(), 10)].split('#');\n if (splitId[1].match(/^\\d/) || splitId[1].match(charRegex)) {\n var setId = list[parseInt(j.toString(), 10)].split('.');\n setId[0] = setId[0].replace(/#/, '[id=\\'') + '\\']';\n list[parseInt(j.toString(), 10)] = setId.join('.');\n }\n }\n }\n }\n idList[parseInt(i.toString(), 10)] = list.join(' ');\n }\n return idList.join(',');\n }\n return selector;\n}\n/**\n * Returns single closest parent element based on class selector.\n *\n * @param {Element} element - An element that need to find the closest element.\n * @param {string} selector - A classSelector of closest element.\n * @returns {Element} ?\n * @private\n */\nexport function closest(element, selector) {\n var el = element;\n if (typeof el.closest === 'function') {\n return el.closest(selector);\n }\n while (el && el.nodeType === 1) {\n if (matches(el, selector)) {\n return el;\n }\n el = el.parentNode;\n }\n return null;\n}\n/**\n * Returns all sibling elements of the given element.\n *\n * @param {Element|Node} element - An element that need to get siblings.\n * @returns {Element[]} ?\n * @private\n */\nexport function siblings(element) {\n var siblings = [];\n var childNodes = Array.prototype.slice.call(element.parentNode.childNodes);\n for (var _i = 0, childNodes_1 = childNodes; _i < childNodes_1.length; _i++) {\n var curNode = childNodes_1[_i];\n if (curNode.nodeType === Node.ELEMENT_NODE && element !== curNode) {\n siblings.push(curNode);\n }\n }\n return siblings;\n}\n/**\n * set the value if not exist. Otherwise set the existing value\n *\n * @param {HTMLElement} element - An element to which we need to set value.\n * @param {string} property - Property need to get or set.\n * @param {string} value - value need to set.\n * @returns {string} ?\n * @private\n */\nexport function getAttributeOrDefault(element, property, value) {\n var attrVal;\n var isObj = isObject(element);\n if (isObj) {\n attrVal = getValue('attributes.' + property, element);\n }\n else {\n attrVal = element.getAttribute(property);\n }\n if (isNullOrUndefined(attrVal) && value) {\n if (!isObj) {\n element.setAttribute(property, value.toString());\n }\n else {\n element.attributes[\"\" + property] = value;\n }\n attrVal = value;\n }\n return attrVal;\n}\n/**\n * Set the style attributes to Html element.\n *\n * @param {HTMLElement} element - Element which we want to set attributes\n * @param {any} attrs - Set the given attributes to element\n * @returns {void} ?\n * @private\n */\nexport function setStyleAttribute(element, attrs) {\n if (attrs !== undefined) {\n Object.keys(attrs).forEach(function (key) {\n element.style[\"\" + key] = attrs[\"\" + key];\n });\n }\n}\n/**\n * Method for add and remove classes to a dom element.\n *\n * @param {Element} element - Element for add and remove classes\n * @param {string[]} addClasses - List of classes need to be add to the element\n * @param {string[]} removeClasses - List of classes need to be remove from the element\n * @returns {void} ?\n * @private\n */\nexport function classList(element, addClasses, removeClasses) {\n addClass([element], addClasses);\n removeClass([element], removeClasses);\n}\n/**\n * Method to check whether the element matches the given selector.\n *\n * @param {Element} element - Element to compare with the selector.\n * @param {string} selector - String selector which element will satisfy.\n * @returns {void} ?\n * @private\n */\nexport function matches(element, selector) {\n var matches = element.matches || element.msMatchesSelector || element.webkitMatchesSelector;\n if (matches) {\n return matches.call(element, selector);\n }\n else {\n return [].indexOf.call(document.querySelectorAll(selector), element) !== -1;\n }\n}\n/**\n * Method to get the html text from DOM.\n *\n * @param {HTMLElement} ele - Element to compare with the selector.\n * @param {string} innerHTML - String selector which element will satisfy.\n * @returns {void} ?\n * @private\n */\nexport function includeInnerHTML(ele, innerHTML) {\n ele.innerHTML = innerHTML;\n}\n/**\n * Method to get the containsclass.\n *\n * @param {HTMLElement} ele - Element to compare with the selector.\n * @param {string} className - String selector which element will satisfy.\n * @returns {any} ?\n * @private\n */\nexport function containsClass(ele, className) {\n if (isObject(ele)) {\n var regExp = RegExp;\n return new regExp('\\\\b' + className + '\\\\b', 'i').test(ele.attributes.className);\n }\n else {\n return ele.classList.contains(className);\n }\n}\n/**\n * Method to check whether the element matches the given selector.\n *\n * @param {Object} element - Element to compare with the selector.\n * @param {boolean} deep ?\n * @returns {any} ?\n * @private\n */\nexport function cloneNode(element, deep) {\n if (isObject(element)) {\n if (deep) {\n return extend({}, {}, element, true);\n }\n }\n else {\n return element.cloneNode(deep);\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isUndefined, isNullOrUndefined, merge, setImmediate, setValue, isBlazor, getValue, extend } from './util';\nimport { addClass, removeClass } from './dom';\nimport { Observer } from './observer';\nvar isColEName = new RegExp(']');\n/**\n * Base library module is common module for Framework modules like touch,keyboard and etc.,\n *\n * @private\n * @returns {void} ?\n */\nvar Base = /** @class */ (function () {\n /**\n * Base constructor accept options and element\n *\n * @param {Object} options ?\n * @param {string} element ?\n */\n function Base(options, element) {\n this.isRendered = false;\n this.isComplexArraySetter = false;\n this.isServerRendered = false;\n this.allowServerDataBinding = true;\n this.isProtectedOnChange = true;\n this.properties = {};\n this.changedProperties = {};\n this.oldProperties = {};\n this.bulkChanges = {};\n this.refreshing = false;\n this.ignoreCollectionWatch = false;\n this.finalUpdate = function () { };\n this.childChangedProperties = {};\n this.modelObserver = new Observer(this);\n if (!isUndefined(element)) {\n if ('string' === typeof (element)) {\n this.element = document.querySelector(element);\n }\n else {\n this.element = element;\n }\n if (!isNullOrUndefined(this.element)) {\n this.isProtectedOnChange = false;\n this.addInstance();\n }\n }\n if (!isUndefined(options)) {\n this.setProperties(options, true);\n }\n this.isDestroyed = false;\n }\n /** Property base section */\n /**\n * Function used to set bunch of property at a time.\n *\n * @private\n * @param {Object} prop - JSON object which holds components properties.\n * @param {boolean} muteOnChange ? - Specifies to true when we set properties.\n * @returns {void} ?\n */\n Base.prototype.setProperties = function (prop, muteOnChange) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = !!muteOnChange;\n merge(this, prop);\n if (muteOnChange !== true) {\n merge(this.changedProperties, prop);\n this.dataBind();\n }\n else if (isBlazor() && this.isRendered) {\n this.serverDataBind(prop);\n }\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.isProtectedOnChange = prevDetection;\n };\n /**\n * Calls for child element data bind\n *\n * @param {Object} obj ?\n * @param {Object} parent ?\n * @returns {void} ?\n */\n Base.callChildDataBind = function (obj, parent) {\n var keys = Object.keys(obj);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (parent[\"\" + key] instanceof Array) {\n for (var _a = 0, _b = parent[\"\" + key]; _a < _b.length; _a++) {\n var obj_1 = _b[_a];\n if (obj_1.dataBind !== undefined) {\n obj_1.dataBind();\n }\n }\n }\n else {\n parent[\"\" + key].dataBind();\n }\n }\n };\n Base.prototype.clearChanges = function () {\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.childChangedProperties = {};\n };\n /**\n * Bind property changes immediately to components\n *\n * @returns {void} ?\n */\n Base.prototype.dataBind = function () {\n Base.callChildDataBind(this.childChangedProperties, this);\n if (Object.getOwnPropertyNames(this.changedProperties).length) {\n var prevDetection = this.isProtectedOnChange;\n var newChanges = this.changedProperties;\n var oldChanges = this.oldProperties;\n this.clearChanges();\n this.isProtectedOnChange = true;\n this.onPropertyChanged(newChanges, oldChanges);\n this.isProtectedOnChange = prevDetection;\n }\n };\n Base.prototype.serverDataBind = function (newChanges) {\n if (!isBlazor()) {\n return;\n }\n newChanges = newChanges ? newChanges : {};\n extend(this.bulkChanges, {}, newChanges, true);\n var sfBlazor = 'sfBlazor';\n if (this.allowServerDataBinding && window[\"\" + sfBlazor].updateModel) {\n window[\"\" + sfBlazor].updateModel(this);\n this.bulkChanges = {};\n }\n };\n Base.prototype.saveChanges = function (key, newValue, oldValue) {\n if (isBlazor()) {\n var newChanges = {};\n newChanges[\"\" + key] = newValue;\n this.serverDataBind(newChanges);\n }\n if (this.isProtectedOnChange) {\n return;\n }\n this.oldProperties[\"\" + key] = oldValue;\n this.changedProperties[\"\" + key] = newValue;\n this.finalUpdate();\n this.finalUpdate = setImmediate(this.dataBind.bind(this));\n };\n /** Event Base Section */\n /**\n * Adds the handler to the given event listener.\n *\n * @param {string} eventName - A String that specifies the name of the event\n * @param {Function} handler - Specifies the call to run when the event occurs.\n * @returns {void} ?\n */\n Base.prototype.addEventListener = function (eventName, handler) {\n this.modelObserver.on(eventName, handler);\n };\n /**\n * Removes the handler from the given event listener.\n *\n * @param {string} eventName - A String that specifies the name of the event to remove\n * @param {Function} handler - Specifies the function to remove\n * @returns {void} ?\n */\n Base.prototype.removeEventListener = function (eventName, handler) {\n this.modelObserver.off(eventName, handler);\n };\n /**\n * Triggers the handlers in the specified event.\n *\n * @private\n * @param {string} eventName - Specifies the event to trigger for the specified component properties.\n * Can be a custom event, or any of the standard events.\n * @param {Event} eventProp - Additional parameters to pass on to the event properties\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it failured to call.\n * @returns {void} ?\n */\n Base.prototype.trigger = function (eventName, eventProp, successHandler, errorHandler) {\n var _this = this;\n if (this.isDestroyed !== true) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = false;\n var data = this.modelObserver.notify(eventName, eventProp, successHandler, errorHandler);\n if (isColEName.test(eventName)) {\n var handler = getValue(eventName, this);\n if (handler) {\n var blazor = 'Blazor';\n if (window[\"\" + blazor]) {\n var promise = handler.call(this, eventProp);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n data = promise;\n }\n else {\n promise.then(function (data) {\n if (successHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ?\n JSON.parse(data) : data;\n successHandler.call(_this, data);\n }\n }).catch(function (data) {\n if (errorHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ? JSON.parse(data) : data;\n errorHandler.call(_this, data);\n }\n });\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n else {\n handler.call(this, eventProp);\n if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n this.isProtectedOnChange = prevDetection;\n return data;\n }\n };\n /**\n * To maintain instance in base class\n *\n * @returns {void} ?\n */\n Base.prototype.addInstance = function () {\n // Add module class to the root element\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-lib', moduleClass]);\n if (!isNullOrUndefined(this.element.ej2_instances)) {\n this.element.ej2_instances.push(this);\n }\n else {\n setValue('ej2_instances', [this], this.element);\n }\n };\n /**\n * To remove the instance from the element\n *\n * @returns {void} ?\n */\n Base.prototype.destroy = function () {\n var _this = this;\n // eslint-disable-next-line camelcase\n this.element.ej2_instances =\n this.element.ej2_instances ?\n this.element.ej2_instances.filter(function (i) {\n if (proxyToRaw) {\n return proxyToRaw(i) !== proxyToRaw(_this);\n }\n return i !== _this;\n })\n : [];\n removeClass([this.element], ['e-' + this.getModuleName()]);\n if (this.element.ej2_instances.length === 0) {\n // Remove module class from the root element\n removeClass([this.element], ['e-lib']);\n }\n this.clearChanges();\n this.modelObserver.destroy();\n this.isDestroyed = true;\n };\n return Base;\n}());\nexport { Base };\n/**\n * Global function to get the component instance from the rendered element.\n *\n * @param {HTMLElement} elem Specifies the HTMLElement or element id string.\n * @param {string} comp Specifies the component module name or Component.\n * @returns {any} ?\n */\nexport function getComponent(elem, comp) {\n var instance;\n var i;\n var ele = typeof elem === 'string' ? document.getElementById(elem) : elem;\n for (i = 0; i < ele.ej2_instances.length; i++) {\n instance = ele.ej2_instances[parseInt(i.toString(), 10)];\n if (typeof comp === 'string') {\n var compName = instance.getModuleName();\n if (comp === compName) {\n return instance;\n }\n }\n else {\n if (instance instanceof comp) {\n return instance;\n }\n }\n }\n return undefined;\n}\n/**\n * Function to remove the child instances.\n *\n * @param {HTMLElement} element ?\n * @returns {void} ?\n * @private\n */\nexport function removeChildInstance(element) {\n var childEle = [].slice.call(element.getElementsByClassName('e-control'));\n for (var i = 0; i < childEle.length; i++) {\n var compName = childEle[parseInt(i.toString(), 10)].classList[1].split('e-')[1];\n var compInstance = getComponent(childEle[parseInt(i.toString(), 10)], compName);\n if (!isUndefined(compInstance)) {\n compInstance.destroy();\n }\n }\n}\nexport var proxyToRaw;\nexport var setProxyToRaw = function (toRaw) { proxyToRaw = toRaw; };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { createInstance, isUndefined, merge, extend, getValue } from './util';\n/**\n * Returns the Class Object\n *\n * @param {ClassObject} instance - instance of ClassObject\n * @param {string} curKey - key of the current instance\n * @param {Object} defaultValue - default Value\n * @param {Object[]} type ?\n * @returns {ClassObject} ?\n */\nfunction getObject(instance, curKey, defaultValue, type) {\n if (!Object.prototype.hasOwnProperty.call(instance.properties, curKey) || !(instance.properties[\"\" + curKey] instanceof type)) {\n instance.properties[\"\" + curKey] = createInstance(type, [instance, curKey, defaultValue]);\n }\n return instance.properties[\"\" + curKey];\n}\n/**\n * Returns object array\n *\n * @param {ClassObject} instance ?\n * @param {string} curKey ?\n * @param {Object[]} defaultValue ?\n * @param {Object} type ?\n * @param {boolean} isSetter ?\n * @param {boolean} isFactory ?\n * @returns {Object[]} ?\n */\nfunction getObjectArray(instance, curKey, defaultValue, type, isSetter, isFactory) {\n var result = [];\n var len = defaultValue ? defaultValue.length : 0;\n for (var i = 0; i < len; i++) {\n var curType = type;\n if (isFactory) {\n curType = type(defaultValue[parseInt(i.toString(), 10)], instance);\n }\n if (isSetter) {\n var inst = createInstance(curType, [instance, curKey, {}, true]);\n inst.setProperties(defaultValue[parseInt(i.toString(), 10)], true);\n result.push(inst);\n }\n else {\n result.push(createInstance(curType, [instance, curKey, defaultValue[parseInt(i.toString(), 10)], false]));\n }\n }\n return result;\n}\n/**\n * Returns the properties of the object\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @returns {void} ?\n */\nfunction propertyGetter(defaultValue, curKey) {\n return function () {\n if (!Object.prototype.hasOwnProperty.call(this.properties, curKey)) {\n this.properties[\"\" + curKey] = defaultValue;\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n * Set the properties for the object\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @returns {void} ?\n */\nfunction propertySetter(defaultValue, curKey) {\n return function (newValue) {\n if (this.properties[\"\" + curKey] !== newValue) {\n var oldVal = Object.prototype.hasOwnProperty.call(this.properties, curKey) ? this.properties[\"\" + curKey] : defaultValue;\n this.saveChanges(curKey, newValue, oldVal);\n this.properties[\"\" + curKey] = newValue;\n }\n };\n}\n/**\n * Returns complex objects\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexGetter(defaultValue, curKey, type) {\n return function () {\n return getObject(this, curKey, defaultValue, type);\n };\n}\n/**\n * Sets complex objects\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexSetter(defaultValue, curKey, type) {\n return function (newValue) {\n getObject(this, curKey, defaultValue, type).setProperties(newValue);\n };\n}\n/**\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {FunctionConstructor} type ?\n * @returns {void} ?\n */\nfunction complexFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n if (Object.prototype.hasOwnProperty.call(this.properties, curKey)) {\n return this.properties[\"\" + curKey];\n }\n else {\n return getObject(this, curKey, defaultValue, curType);\n }\n };\n}\n/**\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n var curType = type(newValue, this);\n getObject(this, curKey, defaultValue, curType).setProperties(newValue);\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArrayGetter(defaultValue, curKey, type) {\n return function () {\n var _this = this;\n if (!Object.prototype.hasOwnProperty.call(this.properties, curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, type, false);\n this.properties[\"\" + curKey] = defCollection;\n }\n var ignore = ((this.controlParent !== undefined && this.controlParent.ignoreCollectionWatch)\n || this.ignoreCollectionWatch);\n if (!Object.prototype.hasOwnProperty.call(this.properties[\"\" + curKey], 'push') && !ignore) {\n ['push', 'pop'].forEach(function (extendFunc) {\n var descriptor = {\n value: complexArrayDefinedCallback(extendFunc, curKey, type, _this.properties[\"\" + curKey]).bind(_this),\n configurable: true\n };\n Object.defineProperty(_this.properties[\"\" + curKey], extendFunc, descriptor);\n });\n }\n if (!Object.prototype.hasOwnProperty.call(this.properties[\"\" + curKey], 'isComplexArray')) {\n Object.defineProperty(this.properties[\"\" + curKey], 'isComplexArray', { value: true });\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArraySetter(defaultValue, curKey, type) {\n return function (newValue) {\n this.isComplexArraySetter = true;\n var oldValueCollection = getObjectArray(this, curKey, defaultValue, type, false);\n var newValCollection = getObjectArray(this, curKey, newValue, type, true);\n this.isComplexArraySetter = false;\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[\"\" + curKey] = newValCollection;\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArrayFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n var oldValueCollection = Object.prototype.hasOwnProperty.call(this.properties, curKey) ? this.properties[\"\" + curKey] : defaultValue;\n var newValCollection = getObjectArray(this, curKey, newValue, type, true, true);\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[\"\" + curKey] = newValCollection;\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {FunctionConstructor} type ?\n * @returns {void} ?\n */\nfunction complexArrayFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n if (!Object.prototype.hasOwnProperty.call(this.properties, curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, curType, false);\n this.properties[\"\" + curKey] = defCollection;\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n *\n * @param {string} dFunc ?\n * @param {string} curKey ?\n * @param {Object} type ?\n * @param {Object} prop ?\n * @returns {Object} ?\n */\nfunction complexArrayDefinedCallback(dFunc, curKey, type, prop) {\n return function () {\n var newValue = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newValue[_i] = arguments[_i];\n }\n var keyString = this.propName ? this.getParentKey() + '.' + curKey + '-' : curKey + '-';\n switch (dFunc) {\n case 'push':\n for (var i = 0; i < newValue.length; i++) {\n var newValueParse = newValue[parseInt(i.toString(), 10)];\n Array.prototype[\"\" + dFunc].apply(prop, [newValueParse]);\n var model = getArrayModel(keyString + (prop.length - 1), newValueParse, !this.controlParent, dFunc);\n this.serverDataBind(model, newValue[parseInt(i.toString(), 10)], false, dFunc);\n }\n break;\n case 'pop': {\n Array.prototype[\"\" + dFunc].apply(prop);\n var model = getArrayModel(keyString + prop.length, null, !this.controlParent, dFunc);\n this.serverDataBind(model, { ejsAction: 'pop' }, false, dFunc);\n break;\n }\n }\n return prop;\n };\n}\n/**\n *\n * @param {string} keyString ?\n * @param {Object} value ?\n * @param {boolean} isControlParent ?\n * @param {string} arrayFunction ?\n * @returns {Object} ?\n */\nfunction getArrayModel(keyString, value, isControlParent, arrayFunction) {\n var modelObject = keyString;\n if (isControlParent) {\n modelObject = {};\n modelObject[\"\" + keyString] = value;\n if (value && typeof value === 'object') {\n var action = 'ejsAction';\n modelObject[\"\" + keyString][\"\" + action] = arrayFunction;\n }\n }\n return modelObject;\n}\n/**\n * Method used to create property. General syntax below.\n *\n * @param {Object} defaultValue - Specifies the default value of property.\n * @returns {PropertyDecorator} ?\n * @private\n */\nexport function Property(defaultValue) {\n return function (target, key) {\n var propertyDescriptor = {\n set: propertySetter(defaultValue, key),\n get: propertyGetter(defaultValue, key),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'prop', defaultValue);\n };\n}\n/**\n * Method used to create complex property. General syntax below.\n *\n * @param {any} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @Complex({},Type)\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Complex(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexSetter(defaultValue, key, type),\n get: complexGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex Factory property. General syntax below.\n *\n * @param {Function} type - Specifies the class factory type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @ComplexFactory(defaultType, factoryFunction)\n * propertyName: Type1 | Type2;\n * ```\n * @private\n */\nexport function ComplexFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexFactorySetter({}, key, type),\n get: complexFactoryGetter({}, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', {}, type);\n };\n}\n/**\n * Method used to create complex array property. General syntax below.\n *\n * @param {any} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Collection(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArraySetter(defaultValue, key, type),\n get: complexArrayGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex factory array property. General syntax below.\n *\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyCollectionInfo} ?\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function CollectionFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArrayFactorySetter([], key, type),\n get: complexArrayFactoryGetter([], key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', {}, type);\n };\n}\n/**\n * Method used to create event property. General syntax below.\n *\n * @returns {PropertyDecorator} ?\n * ```\n * @Event(()=>{return true;})\n * ```\n * @private\n */\nexport function Event() {\n return function (target, key) {\n var eventDescriptor = {\n set: function (newValue) {\n var oldValue = this.properties[\"\" + key];\n if (oldValue !== newValue) {\n var finalContext = getParentContext(this, key);\n if (isUndefined(oldValue) === false) {\n finalContext.context.removeEventListener(finalContext.prefix, oldValue);\n }\n finalContext.context.addEventListener(finalContext.prefix, newValue);\n this.properties[\"\" + key] = newValue;\n }\n },\n get: propertyGetter(undefined, key),\n enumerable: true,\n configurable: true\n };\n Object.defineProperty(target, key, eventDescriptor);\n addPropertyCollection(target, key, 'event');\n };\n}\n/**\n * NotifyPropertyChanges is triggers the call back when the property has been changed.\n *\n * @param {Function} classConstructor ?\n * @returns {void} ?\n * @private\n */\nexport function NotifyPropertyChanges(classConstructor) {\n /** Need to code */\n}\n/**\n * Method used to create the builderObject for the target component.\n *\n * @param {BuildInfo} target ?\n * @param {string} key ?\n * @param {string} propertyType ?\n * @param {Object} defaultValue ?\n * @param {Function} type ?\n * @returns {void} ?\n * @private\n */\nfunction addPropertyCollection(target, key, propertyType, defaultValue, type) {\n if (isUndefined(target.propList)) {\n target.propList = {\n props: [],\n complexProps: [],\n colProps: [],\n events: [],\n propNames: [],\n complexPropNames: [],\n colPropNames: [],\n eventNames: []\n };\n }\n target.propList[propertyType + 's'].push({\n propertyName: key,\n defaultValue: defaultValue,\n type: type\n });\n target.propList[propertyType + 'Names'].push(key);\n}\n/**\n * Returns an object containing the builder properties\n *\n * @param {Function} component ?\n * @returns {Object} ?\n * @private\n */\nfunction getBuilderProperties(component) {\n if (isUndefined(component.prototype.builderObject)) {\n component.prototype.builderObject = {\n properties: {}, propCollections: [], add: function () {\n this.isPropertyArray = true;\n this.propCollections.push(extend({}, this.properties, {}));\n }\n };\n var rex = /complex/;\n for (var _i = 0, _a = Object.keys(component.prototype.propList); _i < _a.length; _i++) {\n var key = _a[_i];\n var _loop_1 = function (prop) {\n if (rex.test(key)) {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n var childType = {};\n merge(childType, getBuilderProperties(prop.type));\n value(childType);\n var tempValue;\n if (!childType.isPropertyArray) {\n tempValue = extend({}, childType.properties, {});\n }\n else {\n tempValue = childType.propCollections;\n }\n this.properties[prop.propertyName] = tempValue;\n childType.properties = {};\n childType.propCollections = [];\n childType.isPropertyArray = false;\n return this;\n };\n }\n else {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n this.properties[prop.propertyName] = value;\n return this;\n };\n }\n };\n for (var _b = 0, _c = component.prototype.propList[\"\" + key]; _b < _c.length; _b++) {\n var prop = _c[_b];\n _loop_1(prop);\n }\n }\n }\n return component.prototype.builderObject;\n}\n/**\n * Method used to create builder for the components\n *\n * @param {any} component -specifies the target component for which builder to be created.\n * @returns {Object} ?\n * @private\n */\nexport function CreateBuilder(component) {\n var builderFunction = function (element) {\n this.element = element;\n return this;\n };\n var instanceFunction = function (element) {\n if (!Object.prototype.hasOwnProperty.call(builderFunction, 'create')) {\n builderFunction.prototype = getBuilderProperties(component);\n builderFunction.prototype.create = function () {\n var temp = extend({}, {}, this.properties);\n this.properties = {};\n return new component(temp, this.element);\n };\n }\n return new builderFunction(element);\n };\n return instanceFunction;\n}\n/**\n * Returns parent options for the object\n *\n * @param {Object} context ?\n * @param {string} prefix ?\n * @returns {ParentOption} ?\n * @private\n */\nfunction getParentContext(context, prefix) {\n if (Object.prototype.hasOwnProperty.call(context, 'parentObj') === false) {\n return { context: context, prefix: prefix };\n }\n else {\n var curText = getValue('propName', context);\n if (curText) {\n prefix = curText + '-' + prefix;\n }\n return getParentContext(getValue('parentObj', context), prefix);\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { createElement, selectAll, closest } from './dom';\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { EventHandler } from './event-handler';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\n/**\n * The Animation framework provide options to animate the html DOM elements\n * ```typescript\n * let animeObject = new Animation({\n * name: 'SlideLeftIn',\n * duration: 1000\n * });\n * animeObject.animate('#anime1');\n * animeObject.animate('#anime2', { duration: 500 });\n * ```\n */\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation(options) {\n var _this = _super.call(this, options, undefined) || this;\n /**\n * @private\n */\n _this.easing = {\n ease: 'cubic-bezier(0.250, 0.100, 0.250, 1.000)',\n linear: 'cubic-bezier(0.250, 0.250, 0.750, 0.750)',\n easeIn: 'cubic-bezier(0.420, 0.000, 1.000, 1.000)',\n easeOut: 'cubic-bezier(0.000, 0.000, 0.580, 1.000)',\n easeInOut: 'cubic-bezier(0.420, 0.000, 0.580, 1.000)',\n elasticInOut: 'cubic-bezier(0.5,-0.58,0.38,1.81)',\n elasticIn: 'cubic-bezier(0.17,0.67,0.59,1.81)',\n elasticOut: 'cubic-bezier(0.7,-0.75,0.99,1.01)'\n };\n return _this;\n }\n Animation_1 = Animation;\n /**\n * Applies animation to the current element.\n *\n * @param {string | HTMLElement} element - Element which needs to be animated.\n * @param {AnimationModel} options - Overriding default animation settings.\n * @returns {void} ?\n */\n Animation.prototype.animate = function (element, options) {\n options = !options ? {} : options;\n var model = this.getModel(options);\n if (typeof element === 'string') {\n var elements = Array.prototype.slice.call(selectAll(element, document));\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var element_1 = elements_1[_i];\n model.element = element_1;\n Animation_1.delayAnimation(model);\n }\n }\n else {\n model.element = element;\n Animation_1.delayAnimation(model);\n }\n };\n /**\n * Stop the animation effect on animated element.\n *\n * @param {HTMLElement} element - Element which needs to be stop the animation.\n * @param {AnimationOptions} model - Handling the animation model at stop function.\n * @returns {void}\n */\n Animation.stop = function (element, model) {\n element.style.animation = '';\n element.removeAttribute('e-animate');\n var animationId = element.getAttribute('e-animation-id');\n if (animationId) {\n var frameId = parseInt(animationId, 10);\n cancelAnimationFrame(frameId);\n element.removeAttribute('e-animation-id');\n }\n if (model && model.end) {\n model.end.call(this, model);\n }\n };\n /**\n * Set delay to animation element\n *\n * @param {AnimationModel} model ?\n * @returns {void}\n */\n Animation.delayAnimation = function (model) {\n if (animationMode === 'Disable' || animationMode === GlobalAnimationMode.Disable) {\n if (model.begin) {\n model.begin.call(this, model);\n }\n if (model.end) {\n model.end.call(this, model);\n }\n }\n else {\n if (model.delay) {\n setTimeout(function () { Animation_1.applyAnimation(model); }, model.delay);\n }\n else {\n Animation_1.applyAnimation(model);\n }\n }\n };\n /**\n * Triggers animation\n *\n * @param {AnimationModel} model ?\n * @returns {void}\n */\n Animation.applyAnimation = function (model) {\n var _this = this;\n model.timeStamp = 0;\n var step = 0;\n var timerId = 0;\n var prevTimeStamp = 0;\n var duration = model.duration;\n model.element.setAttribute('e-animate', 'true');\n var startAnimation = function (timeStamp) {\n try {\n if (timeStamp) {\n // let step: number = model.timeStamp = timeStamp - startTime;\n /** phantomjs workaround for timestamp fix */\n prevTimeStamp = prevTimeStamp === 0 ? timeStamp : prevTimeStamp;\n model.timeStamp = (timeStamp + model.timeStamp) - prevTimeStamp;\n prevTimeStamp = timeStamp;\n /** phantomjs workaround end */\n // trigger animation begin event\n if (!step && model.begin) {\n model.begin.call(_this, model);\n }\n step = step + 1;\n var avg = model.timeStamp / step;\n if (model.timeStamp < duration && model.timeStamp + avg < duration && model.element.getAttribute('e-animate')) {\n // apply animation effect to the current element\n model.element.style.animation = model.name + ' ' + model.duration + 'ms ' + model.timingFunction;\n if (model.progress) {\n model.progress.call(_this, model);\n }\n // repeat requestAnimationFrame\n requestAnimationFrame(startAnimation);\n }\n else {\n // clear requestAnimationFrame\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n model.element.removeAttribute('e-animate');\n model.element.style.animation = '';\n if (model.end) {\n model.end.call(_this, model);\n }\n }\n }\n else {\n //startTime = performance.now();\n // set initial requestAnimationFrame\n timerId = requestAnimationFrame(startAnimation);\n model.element.setAttribute('e-animation-id', timerId.toString());\n }\n }\n catch (e) {\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n if (model.fail) {\n model.fail.call(_this, e);\n }\n }\n };\n startAnimation();\n };\n /**\n * Returns Animation Model\n *\n * @param {AnimationModel} options ?\n * @returns {AnimationModel} ?\n */\n Animation.prototype.getModel = function (options) {\n return {\n name: options.name || this.name,\n delay: options.delay || this.delay,\n duration: (options.duration !== undefined ? options.duration : this.duration),\n begin: options.begin || this.begin,\n end: options.end || this.end,\n fail: options.fail || this.fail,\n progress: options.progress || this.progress,\n timingFunction: this.easing[options.timingFunction] ? this.easing[options.timingFunction] :\n (options.timingFunction || this.easing[this.timingFunction])\n };\n };\n /**\n * @private\n * @param {AnimationModel} newProp ?\n * @param {AnimationModel} oldProp ?\n * @returns {void} ?\n */\n Animation.prototype.onPropertyChanged = function (newProp, oldProp) {\n // no code needed\n };\n /**\n * Returns module name as animation\n *\n * @private\n * @returns {void} ?\n */\n Animation.prototype.getModuleName = function () {\n return 'animation';\n };\n /**\n *\n * @private\n * @returns {void} ?\n */\n Animation.prototype.destroy = function () {\n //Override base destroy;\n };\n var Animation_1;\n __decorate([\n Property('FadeIn')\n ], Animation.prototype, \"name\", void 0);\n __decorate([\n Property(400)\n ], Animation.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], Animation.prototype, \"timingFunction\", void 0);\n __decorate([\n Property(0)\n ], Animation.prototype, \"delay\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"progress\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"begin\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"end\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"fail\", void 0);\n Animation = Animation_1 = __decorate([\n NotifyPropertyChanges\n ], Animation);\n return Animation;\n}(Base));\nexport { Animation };\n/**\n * Ripple provides material theme's wave effect when an element is clicked\n * ```html\n *
\n * \n * ```\n *\n * @private\n * @param {HTMLElement} element - Target element\n * @param {RippleOptions} rippleOptions - Ripple options .\n * @param {Function} done .\n * @returns {void} .\n */\nexport function rippleEffect(element, rippleOptions, done) {\n var rippleModel = getRippleModel(rippleOptions);\n if (rippleModel.rippleFlag === false || (rippleModel.rippleFlag === undefined && !isRippleEnabled)) {\n return (function () {\n // do nothing.\n });\n }\n element.setAttribute('data-ripple', 'true');\n EventHandler.add(element, 'mousedown', rippleHandler, { parent: element, rippleOptions: rippleModel });\n EventHandler.add(element, 'mouseup', rippleUpHandler, { parent: element, rippleOptions: rippleModel, done: done });\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n if (Browser.isPointer) {\n EventHandler.add(element, 'transitionend', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n }\n return (function () {\n element.removeAttribute('data-ripple');\n EventHandler.remove(element, 'mousedown', rippleHandler);\n EventHandler.remove(element, 'mouseup', rippleUpHandler);\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n EventHandler.remove(element, 'transitionend', rippleLeaveHandler);\n });\n}\n/**\n * Handler for ripple model\n *\n * @param {RippleOptions} rippleOptions ?\n * @returns {RippleOptions} ?\n */\nfunction getRippleModel(rippleOptions) {\n var rippleModel = {\n selector: rippleOptions && rippleOptions.selector ? rippleOptions.selector : null,\n ignore: rippleOptions && rippleOptions.ignore ? rippleOptions.ignore : null,\n rippleFlag: rippleOptions && rippleOptions.rippleFlag,\n isCenterRipple: rippleOptions && rippleOptions.isCenterRipple,\n duration: rippleOptions && rippleOptions.duration ? rippleOptions.duration : 350\n };\n return rippleModel;\n}\n/**\n * Handler for ripple event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleHandler(e) {\n var target = (e.target);\n var selector = this.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (this.rippleOptions && closest(target, this.rippleOptions.ignore))) {\n return;\n }\n var offset = element.getBoundingClientRect();\n var offsetX = e.pageX - document.body.scrollLeft;\n var offsetY = e.pageY - ((!document.body.scrollTop && document.documentElement) ?\n document.documentElement.scrollTop : document.body.scrollTop);\n var pageX = Math.max(Math.abs(offsetX - offset.left), Math.abs(offsetX - offset.right));\n var pageY = Math.max(Math.abs(offsetY - offset.top), Math.abs(offsetY - offset.bottom));\n var radius = Math.sqrt(pageX * pageX + pageY * pageY);\n var diameter = radius * 2 + 'px';\n var x = offsetX - offset.left - radius;\n var y = offsetY - offset.top - radius;\n if (this.rippleOptions && this.rippleOptions.isCenterRipple) {\n x = 0;\n y = 0;\n diameter = '100%';\n }\n element.classList.add('e-ripple');\n var duration = this.rippleOptions.duration.toString();\n var styles = 'width: ' + diameter + ';height: ' + diameter + ';left: ' + x + 'px;top: ' + y + 'px;' +\n 'transition-duration: ' + duration + 'ms;';\n var rippleElement = createElement('div', { className: 'e-ripple-element', styles: styles });\n element.appendChild(rippleElement);\n window.getComputedStyle(rippleElement).getPropertyValue('opacity');\n rippleElement.style.transform = 'scale(1)';\n if (element !== this.parent) {\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: this.parent, rippleOptions: this.rippleOptions });\n }\n}\n/**\n * Handler for ripple element mouse up event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleUpHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for ripple element mouse move event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleLeaveHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for removing ripple element\n *\n * @param {MouseEvent} e ?\n * @param {RippleArgs} eventArgs ?\n * @returns {void} ?\n * @private\n */\nfunction removeRipple(e, eventArgs) {\n var duration = eventArgs.rippleOptions.duration;\n var target = (e.target);\n var selector = eventArgs.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (element && element.className.indexOf('e-ripple') === -1)) {\n return;\n }\n var rippleElements = selectAll('.e-ripple-element', element);\n var rippleElement = rippleElements[rippleElements.length - 1];\n if (rippleElement) {\n rippleElement.style.opacity = '0.5';\n }\n if (eventArgs.parent !== element) {\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n }\n setTimeout(function () {\n if (rippleElement && rippleElement.parentNode) {\n rippleElement.parentNode.removeChild(rippleElement);\n }\n if (!element.getElementsByClassName('e-ripple-element').length) {\n element.classList.remove('e-ripple');\n }\n if (eventArgs.done) {\n eventArgs.done(e);\n }\n }, duration);\n}\nexport var isRippleEnabled = false;\n/**\n * Animation Module provides support to enable ripple effect functionality to Essential JS 2 components.\n *\n * @param {boolean} isRipple Specifies the boolean value to enable or disable ripple effect.\n * @returns {boolean} ?\n */\nexport function enableRipple(isRipple) {\n isRippleEnabled = isRipple;\n return isRippleEnabled;\n}\n/**\n * Defines the Modes of Global animation.\n *\n * @private\n */\nexport var animationMode;\n/**\n * This method is used to enable or disable the animation for all components.\n *\n * @param {string|GlobalAnimationMode} value - Specifies the value to enable or disable the animation for all components. When set to 'enable', it enables the animation for all components, regardless of the individual component's animation settings. When set to 'disable', it disables the animation for all components, regardless of the individual component's animation settings.\n * @returns {void}\n */\nexport function setGlobalAnimation(value) {\n animationMode = value;\n}\n/**\n * Defines the global animation modes for all components.\n */\nexport var GlobalAnimationMode;\n(function (GlobalAnimationMode) {\n /**\n * Defines the global animation mode as Default. Animation is enabled or disabled based on the component's animation settings.\n */\n GlobalAnimationMode[\"Default\"] = \"Default\";\n /**\n * Defines the global animation mode as Enable. Enables the animation for all components, regardless of the individual component's animation settings.\n */\n GlobalAnimationMode[\"Enable\"] = \"Enable\";\n /**\n * Defines the global animation mode as Disable. Disables the animation for all components, regardless of the individual component's animation settings.\n */\n GlobalAnimationMode[\"Disable\"] = \"Disable\";\n})(GlobalAnimationMode || (GlobalAnimationMode = {}));\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Module loading operations\n */\nimport { createInstance, setValue, getValue, deleteObject } from './util';\nvar MODULE_SUFFIX = 'Module';\nvar ModuleLoader = /** @class */ (function () {\n function ModuleLoader(parent) {\n this.loadedModules = [];\n this.parent = parent;\n }\n /**\n * Inject required modules in component library\n *\n * @returns {void} ?\n * @param {ModuleDeclaration[]} requiredModules - Array of modules to be required\n * @param {Function[]} moduleList - Array of modules to be injected from sample side\n */\n ModuleLoader.prototype.inject = function (requiredModules, moduleList) {\n var reqLength = requiredModules.length;\n if (reqLength === 0) {\n this.clean();\n return;\n }\n if (this.loadedModules.length) {\n this.clearUnusedModule(requiredModules);\n }\n for (var i = 0; i < reqLength; i++) {\n var modl = requiredModules[parseInt(i.toString(), 10)];\n for (var _i = 0, moduleList_1 = moduleList; _i < moduleList_1.length; _i++) {\n var module = moduleList_1[_i];\n var modName = modl.member;\n if (module && module.prototype.getModuleName() === modl.member && !this.isModuleLoaded(modName)) {\n var moduleObject = createInstance(module, modl.args);\n var memberName = this.getMemberName(modName);\n if (modl.isProperty) {\n setValue(memberName, module, this.parent);\n }\n else {\n setValue(memberName, moduleObject, this.parent);\n }\n var loadedModule = modl;\n loadedModule.member = memberName;\n this.loadedModules.push(loadedModule);\n }\n }\n }\n };\n /**\n * To remove the created object while destroying the control\n *\n * @returns {void}\n */\n ModuleLoader.prototype.clean = function () {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var modules = _a[_i];\n if (!modules.isProperty) {\n getValue(modules.member, this.parent).destroy();\n }\n }\n this.loadedModules = [];\n };\n /**\n * Returns the array of modules that are not loaded in the component library.\n *\n * @param {ModuleDeclaration[]} requiredModules - Array of modules to be required\n * @returns {ModuleDeclaration[]} ?\n * @private\n */\n ModuleLoader.prototype.getNonInjectedModules = function (requiredModules) {\n var _this = this;\n return requiredModules.filter(function (module) { return !_this.isModuleLoaded(module.member); });\n };\n /**\n * Removes all unused modules\n *\n * @param {ModuleDeclaration[]} moduleList ?\n * @returns {void} ?\n */\n ModuleLoader.prototype.clearUnusedModule = function (moduleList) {\n var _this = this;\n var usedModules = moduleList.map(function (arg) { return _this.getMemberName(arg.member); });\n var removableModule = this.loadedModules.filter(function (module) {\n return usedModules.indexOf(module.member) === -1;\n });\n for (var _i = 0, removableModule_1 = removableModule; _i < removableModule_1.length; _i++) {\n var mod = removableModule_1[_i];\n if (!mod.isProperty) {\n getValue(mod.member, this.parent).destroy();\n }\n this.loadedModules.splice(this.loadedModules.indexOf(mod), 1);\n deleteObject(this.parent, mod.member);\n }\n };\n /**\n * To get the name of the member.\n *\n * @param {string} name ?\n * @returns {string} ?\n */\n ModuleLoader.prototype.getMemberName = function (name) {\n return name[0].toLowerCase() + name.substring(1) + MODULE_SUFFIX;\n };\n /**\n * Returns boolean based on whether the module specified is loaded or not\n *\n * @param {string} modName ?\n * @returns {boolean} ?\n */\n ModuleLoader.prototype.isModuleLoaded = function (modName) {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var mod = _a[_i];\n if (mod.member === this.getMemberName(modName)) {\n return true;\n }\n }\n return false;\n };\n return ModuleLoader;\n}());\nexport { ModuleLoader };\n","import { createElement } from './dom';\nimport { getValue, containerObject, setValue, isNullOrUndefined } from './util';\nexport var componentList = ['grid', 'pivotview', 'treegrid', 'spreadsheet', 'rangeNavigator', 'DocumentEditor', 'listbox', 'inplaceeditor', 'PdfViewer', 'richtexteditor', 'DashboardLayout', 'chart', 'stockChart', 'circulargauge', 'diagram', 'heatmap', 'lineargauge', 'maps', 'slider', 'smithchart', 'barcode', 'sparkline', 'treemap', 'bulletChart', 'kanban', 'daterangepicker', 'schedule', 'gantt', 'signature', 'query-builder', 'drop-down-tree', 'carousel', 'filemanager', 'uploader', 'accordion', 'tab', 'treeview'];\nvar bypassKey = [115, 121, 110, 99, 102, 117, 115, 105,\n 111, 110, 46, 105, 115, 76, 105, 99, 86, 97, 108,\n 105, 100, 97, 116, 101, 100];\nvar accountURL;\n/**\n * License validation module\n *\n * @private\n */\nvar LicenseValidator = /** @class */ (function () {\n function LicenseValidator(key) {\n this.isValidated = false;\n this.isLicensed = true;\n this.version = '27';\n this.platform = /JavaScript|ASPNET|ASPNETCORE|ASPNETMVC|FileFormats|essentialstudio/i;\n this.errors = {\n noLicense: 'This application was built using a trial version of Syncfusion Essential Studio.' +\n ' To remove the license validation message permanently, a valid license key must be included.',\n trailExpired: 'This application was built using a trial version of Syncfusion Essential Studio.' +\n ' To remove the license validation message permanently, a valid license key must be included.',\n versionMismatched: 'The included Syncfusion license key is invalid.',\n platformMismatched: 'The included Syncfusion license key is invalid.',\n invalidKey: 'The included Syncfusion license key is invalid.'\n };\n /**\n * To manage licensing operation.\n */\n this.manager = (function () {\n var licKey = null;\n /**\n * Sets the license key.\n *\n * @param {string} key - Specifies the license key.\n * @returns {void}\n */\n function set(key) { licKey = key; }\n /**\n * Gets the license key.\n *\n * @returns {string} -Gets the license key.\n */\n function get() { return licKey; }\n return {\n setKey: set,\n getKey: get\n };\n })();\n /**\n * To manage npx licensing operation.\n */\n this.npxManager = (function () {\n var npxLicKey = 'npxKeyReplace';\n /**\n * Gets the license key.\n *\n * @returns {string} - Gets the license key.\n */\n function get() { return npxLicKey; }\n return {\n getKey: get\n };\n })();\n this.manager.setKey(key);\n }\n /**\n * To validate the provided license key.\n *\n * @returns {boolean} ?\n */\n LicenseValidator.prototype.validate = function () {\n var contentKey = [115, 121, 110, 99, 102, 117, 115, 105, 111, 110, 46,\n 108, 105, 99, 101, 110, 115, 101, 67, 111, 110, 116, 101, 110, 116];\n var URLKey = [115, 121, 110, 99, 102, 117, 115, 105, 111, 110, 46,\n 99, 108, 97, 105, 109, 65, 99, 99, 111, 117, 110, 116, 85, 82, 76];\n if (!this.isValidated && (containerObject && !getValue(convertToChar(bypassKey), containerObject) && !getValue('Blazor', containerObject))) {\n var validateMsg = void 0;\n var validateURL = void 0;\n if ((this.manager && this.manager.getKey()) || (this.npxManager && this.npxManager.getKey() !== 'npxKeyReplace')) {\n var result = this.getInfoFromKey();\n if (result && result.length) {\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var res = result_1[_i];\n if (!this.platform.test(res.platform) || res.invalidPlatform) {\n validateMsg = this.errors.platformMismatched;\n }\n else if (res.version.indexOf(this.version) === -1) {\n validateMsg = this.errors.versionMismatched;\n validateMsg = validateMsg.replace('##LicenseVersion', res.version);\n validateMsg = validateMsg.replace('##Requireversion', this.version + '.x');\n }\n else if (res.expiryDate) {\n var expDate = new Date(res.expiryDate);\n var currDate = new Date();\n if (expDate !== currDate && expDate < currDate) {\n validateMsg = this.errors.trailExpired;\n }\n else {\n break;\n }\n }\n }\n }\n else {\n validateMsg = this.errors.invalidKey;\n }\n }\n else {\n var licenseContent = getValue(convertToChar(contentKey), containerObject);\n validateURL = getValue(convertToChar(URLKey), containerObject);\n if (licenseContent && licenseContent !== '') {\n validateMsg = licenseContent;\n }\n else {\n validateMsg = this.errors.noLicense;\n }\n }\n if (validateMsg && typeof document !== 'undefined' && !isNullOrUndefined(document)) {\n accountURL = (validateURL && validateURL !== '') ? validateURL : 'https://www.syncfusion.com/account/claim-license-key?pl=SmF2YVNjcmlwdA==&vs=Mjc=&utm_source=es_license_validation_banner&utm_medium=listing&utm_campaign=license-information';\n var errorDiv = createElement('div', {\n innerHTML: \"\" + validateMsg + ' ' + '
Claim your free account'\n });\n errorDiv.setAttribute('style', \"position: fixed;\\n top: 10px;\\n left: 10px;\\n right: 10px;\\n font-size: 14px;\\n background: #EEF2FF;\\n color: #222222;\\n z-index: 999999999;\\n text-align: left;\\n border: 1px solid #EEEEEE;\\n padding: 10px 11px 10px 50px;\\n border-radius: 8px;\\n font-family: Helvetica Neue, Helvetica, Arial;\");\n document.body.appendChild(errorDiv);\n this.isLicensed = false;\n }\n this.isValidated = true;\n setValue(convertToChar(bypassKey), this.isValidated, containerObject);\n }\n return this.isLicensed;\n };\n LicenseValidator.prototype.getDecryptedData = function (key) {\n try {\n return atob(key);\n }\n catch (error) {\n return '';\n }\n };\n /**\n * Get license information from key.\n *\n * @returns {IValidator} - Get license information from key.\n */\n LicenseValidator.prototype.getInfoFromKey = function () {\n try {\n var licKey = '';\n var pkey = [5439488, 7929856, 5111808, 6488064, 4587520, 7667712, 5439488,\n 6881280, 5177344, 7208960, 4194304, 4456448, 6619136, 7733248, 5242880, 7077888,\n 6356992, 7602176, 4587520, 7274496, 7471104, 7143424];\n var decryptedStr = [];\n var resultArray = [];\n var invalidPlatform = false;\n var isNpxKey = false;\n if (this.manager.getKey()) {\n licKey = this.manager.getKey();\n }\n else {\n isNpxKey = true;\n licKey = this.npxManager.getKey().split('npxKeyReplace')[1];\n }\n var licKeySplit = licKey.split(';');\n for (var _i = 0, licKeySplit_1 = licKeySplit; _i < licKeySplit_1.length; _i++) {\n var lKey = licKeySplit_1[_i];\n var decodeStr = this.getDecryptedData(lKey);\n if (!decodeStr) {\n continue;\n }\n var k = 0;\n var buffr = '';\n if (!isNpxKey) {\n for (var i = 0; i < decodeStr.length; i++, k++) {\n if (k === pkey.length) {\n k = 0;\n }\n var c = decodeStr.charCodeAt(i);\n buffr += String.fromCharCode(c ^ (pkey[parseInt(k.toString(), 10)] >> 16));\n }\n }\n else {\n var charKey = decodeStr[decodeStr.length - 1];\n var decryptedKey = [];\n for (var i = 0; i < decodeStr.length; i++) {\n decryptedKey[parseInt(i.toString(), 10)] = decodeStr[parseInt(i.toString(), 10)].charCodeAt(0)\n - charKey.charCodeAt(0);\n }\n for (var i = 0; i < decryptedKey.length; i++) {\n buffr += String.fromCharCode(decryptedKey[parseInt(i.toString(), 10)]);\n }\n }\n if (this.platform.test(buffr)) {\n decryptedStr = buffr.split(';');\n invalidPlatform = false;\n // checked the length to verify the key in proper strucutre\n if (decryptedStr.length > 3) {\n resultArray.push({ platform: decryptedStr[0],\n version: decryptedStr[1],\n expiryDate: decryptedStr[2] });\n }\n }\n else if (buffr && buffr.split(';').length > 3) {\n invalidPlatform = true;\n }\n }\n if (invalidPlatform && !resultArray.length) {\n return [{ invalidPlatform: invalidPlatform }];\n }\n else {\n return resultArray.length ? resultArray : null;\n }\n }\n catch (error) {\n return null;\n }\n };\n return LicenseValidator;\n}());\nvar licenseValidator = new LicenseValidator();\n/**\n * Converts the given number to characters.\n *\n * @param {number} cArr - Specifies the license key as number.\n * @returns {string} ?\n */\nfunction convertToChar(cArr) {\n var ret = '';\n for (var _i = 0, cArr_1 = cArr; _i < cArr_1.length; _i++) {\n var arr = cArr_1[_i];\n ret += String.fromCharCode(arr);\n }\n return ret;\n}\n/**\n * To set license key.\n *\n * @param {string} key - license key\n * @returns {void}\n */\nexport function registerLicense(key) {\n licenseValidator = new LicenseValidator(key);\n}\nexport var validateLicense = function (key) {\n if (key) {\n registerLicense(key);\n }\n return licenseValidator.validate();\n};\nexport var getVersion = function () {\n return licenseValidator.version;\n};\n// Method for create overlay over the sample\nexport var createLicenseOverlay = function () {\n var bannerTemplate = \"\\n
\\n
\\n
\\n \\n
\\n
Claim your FREE account and get a key in less than a minute
\\n
    \\n
  • Access to a 30-day free trial of any of our products.
  • \\n
  • Access to 24x5 support by developers via the support tickets, forum, feature & feedback page and chat.
  • \\n
  • 200+ ebooks on the latest technologies, industry trends, and research topics.\\n
  • \\n
  • Largest collection of over 7,000 flat and wireframe icons for free with Syncfusion Metro Studio.
  • \\n
  • Free and unlimited access to Syncfusion technical blogs and whitepapers.
  • \\n
\\n
Syncfusion is trusted by 29,000+ businesses worldwide
\\n \\n Claim your FREE account\\n
have a Syncfusion account? Sign In
\\n
\\n
\";\n if (typeof document !== 'undefined' && !isNullOrUndefined(document)) {\n var errorBackground = createElement('div', {\n innerHTML: bannerTemplate\n });\n document.body.appendChild(errorBackground);\n }\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { getValue, setValue, merge, isBlazor } from './util';\nimport { Base } from './base';\n/**\n * To detect the changes for inner properties.\n *\n * @private\n * @returns {void} ?\n */\nvar ChildProperty = /** @class */ (function () {\n function ChildProperty(parent, propName, defaultValue, isArray) {\n this.isComplexArraySetter = false;\n this.properties = {};\n this.changedProperties = {};\n this.childChangedProperties = {};\n this.oldProperties = {};\n this.finalUpdate = function () { };\n this.callChildDataBind = getValue('callChildDataBind', Base);\n this.parentObj = parent;\n this.controlParent = this.parentObj.controlParent || this.parentObj;\n this.propName = propName;\n this.isParentArray = isArray;\n this.setProperties(defaultValue, true);\n }\n /**\n * Updates the property changes\n *\n * @param {boolean} val ?\n * @param {string} propName ?\n * @returns {void} ?\n */\n ChildProperty.prototype.updateChange = function (val, propName) {\n if (val === true) {\n this.parentObj.childChangedProperties[\"\" + propName] = val;\n }\n else {\n delete this.parentObj.childChangedProperties[\"\" + propName];\n }\n if (this.parentObj.updateChange) {\n this.parentObj.updateChange(val, this.parentObj.propName);\n }\n };\n /**\n * Updates time out duration\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.updateTimeOut = function () {\n if (this.parentObj.updateTimeOut) {\n this.parentObj.finalUpdate();\n this.parentObj.updateTimeOut();\n }\n else {\n var changeTime_1 = setTimeout(this.parentObj.dataBind.bind(this.parentObj));\n var clearUpdate = function () {\n clearTimeout(changeTime_1);\n };\n this.finalUpdate = clearUpdate;\n }\n };\n /**\n * Clears changed properties\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.clearChanges = function () {\n this.finalUpdate();\n this.updateChange(false, this.propName);\n this.oldProperties = {};\n this.changedProperties = {};\n };\n /**\n * Set property changes\n *\n * @param {Object} prop ?\n * @param {boolean} muteOnChange ?\n * @returns {void} ?\n */\n ChildProperty.prototype.setProperties = function (prop, muteOnChange) {\n if (muteOnChange === true) {\n merge(this, prop);\n this.updateChange(false, this.propName);\n this.clearChanges();\n }\n else {\n merge(this, prop);\n }\n };\n /**\n * Binds data\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.dataBind = function () {\n this.callChildDataBind(this.childChangedProperties, this);\n if (this.isParentArray) {\n var curIndex = this.parentObj[this.propName].indexOf(this);\n if (Object.keys(this.changedProperties).length) {\n setValue(this.propName + '.' + curIndex, this.changedProperties, this.parentObj.changedProperties);\n setValue(this.propName + '.' + curIndex, this.oldProperties, this.parentObj.oldProperties);\n }\n }\n else {\n this.parentObj.changedProperties[this.propName] = this.changedProperties;\n this.parentObj.oldProperties[this.propName] = this.oldProperties;\n }\n this.clearChanges();\n };\n /**\n * Saves changes to newer values\n *\n * @param {string} key ?\n * @param {Object} newValue ?\n * @param {Object} oldValue ?\n * @param {boolean} restrictServerDataBind ?\n * @returns {void} ?\n */\n ChildProperty.prototype.saveChanges = function (key, newValue, oldValue, restrictServerDataBind) {\n if (this.controlParent.isProtectedOnChange) {\n return;\n }\n if (!restrictServerDataBind) {\n this.serverDataBind(key, newValue, true);\n }\n this.oldProperties[\"\" + key] = oldValue;\n this.changedProperties[\"\" + key] = newValue;\n this.updateChange(true, this.propName);\n this.finalUpdate();\n this.updateTimeOut();\n };\n ChildProperty.prototype.serverDataBind = function (key, value, isSaveChanges, action) {\n if (isBlazor() && !this.parentObj.isComplexArraySetter) {\n var parent_1;\n var newChanges = {};\n var parentKey = isSaveChanges ? this.getParentKey(true) + '.' + key : key;\n /* istanbul ignore else */\n if (parentKey.indexOf('.') !== -1) {\n var complexKeys = parentKey.split('.');\n parent_1 = newChanges;\n for (var i = 0; i < complexKeys.length; i++) {\n var isFinal = i === complexKeys.length - 1;\n parent_1[complexKeys[parseInt(i.toString(), 10)]] = isFinal ? value : {};\n parent_1 = isFinal ? parent_1 : parent_1[complexKeys[parseInt(i.toString(), 10)]];\n }\n }\n else {\n newChanges[\"\" + parentKey] = {};\n parent_1 = newChanges[\"\" + parentKey];\n newChanges[\"\" + parentKey][\"\" + key] = value;\n }\n /* istanbul ignore next */\n if (this.isParentArray) {\n var actionProperty = 'ejsAction';\n parent_1[\"\" + actionProperty] = action ? action : 'none';\n }\n this.controlParent.serverDataBind(newChanges);\n }\n };\n ChildProperty.prototype.getParentKey = function (isSaveChanges) {\n var index = '';\n var propName = this.propName;\n /* istanbul ignore next */\n if (this.isParentArray) {\n index = this.parentObj[this.propName].indexOf(this);\n var valueLength = this.parentObj[this.propName].length;\n valueLength = isSaveChanges ? valueLength : (valueLength > 0 ? valueLength - 1 : 0);\n index = index !== -1 ? '-' + index : '-' + valueLength;\n propName = propName + index;\n }\n if (this.controlParent !== this.parentObj) {\n propName = this.parentObj.getParentKey() + '.' + this.propName + index;\n }\n return propName;\n };\n return ChildProperty;\n}());\nexport { ChildProperty };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types */\nimport { isUndefined, getValue, isNullOrUndefined, setValue, uniqueID, isBlazor } from './util';\nimport { ModuleLoader } from './module-loader';\nimport { Base } from './base';\nimport { Observer } from './observer';\nimport { ChildProperty } from './child-property';\nimport { Property, NotifyPropertyChanges } from './notify-property-change';\nimport { onIntlChange, rightToLeft, defaultCulture } from './internationalization';\nimport { createElement, addClass, removeClass, select } from './dom';\nimport { validateLicense, createLicenseOverlay, componentList } from './validate-lic';\nvar componentCount = 0;\nvar lastPageID;\nvar lastHistoryLen = 0;\n// Decalre the static variable to count the instance\nvar instancecount = 0;\n// Decalre the static variable to find if control limit exceed or not\nvar isvalid = true;\n// We have added styles to inline type so here declare the static variable to detect if banner is added or not\nvar isBannerAdded = false;\nexport var versionBasedStatePersistence = false;\n/**\n * To enable or disable version based statePersistence functionality for all components globally.\n *\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable versionBasedStatePersistence option.\n * @returns {void}\n */\nexport function enableVersionBasedPersistence(status) {\n versionBasedStatePersistence = status;\n}\n/**\n * Base class for all Essential JavaScript components\n */\nvar Component = /** @class */ (function (_super) {\n __extends(Component, _super);\n /**\n * Initialize the constructor for component base\n *\n * @param {Object} options ?\n * @param {string} selector ?\n */\n function Component(options, selector) {\n var _this = _super.call(this, options, selector) || this;\n _this.randomId = uniqueID();\n /**\n * string template option for Blazor template rendering\n *\n * @private\n */\n _this.isStringTemplate = false;\n _this.needsID = false;\n _this.isReactHybrid = false;\n _this.isAngular = false;\n _this.isReact = false;\n _this.isVue = false;\n if (isNullOrUndefined(_this.enableRtl)) {\n _this.setProperties({ 'enableRtl': rightToLeft }, true);\n }\n if (isNullOrUndefined(_this.locale)) {\n _this.setProperties({ 'locale': defaultCulture }, true);\n }\n _this.moduleLoader = new ModuleLoader(_this);\n _this.localObserver = new Observer(_this);\n onIntlChange.on('notifyExternalChange', _this.detectFunction, _this, _this.randomId);\n // Based on the considered control list we have count the instance\n if (typeof window !== 'undefined' && typeof document !== 'undefined' && !validateLicense()) {\n if (componentList.indexOf(_this.getModuleName()) !== -1) {\n instancecount = instancecount + 1;\n if (instancecount > 5) {\n isvalid = false;\n }\n }\n }\n if (!isUndefined(selector)) {\n _this.appendTo();\n }\n return _this;\n }\n Component.prototype.requiredModules = function () {\n return [];\n };\n /**\n * Destroys the sub modules while destroying the widget\n *\n * @returns {void} ?\n */\n Component.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (this.enablePersistence) {\n this.setPersistData();\n this.detachUnloadEvent();\n }\n this.localObserver.destroy();\n if (this.refreshing) {\n return;\n }\n removeClass([this.element], ['e-control']);\n this.trigger('destroyed', { cancel: false });\n _super.prototype.destroy.call(this);\n this.moduleLoader.clean();\n onIntlChange.off('notifyExternalChange', this.detectFunction, this.randomId);\n };\n /**\n * Applies all the pending property changes and render the component again.\n *\n * @returns {void} ?\n */\n Component.prototype.refresh = function () {\n this.refreshing = true;\n this.moduleLoader.clean();\n this.destroy();\n this.clearChanges();\n this.localObserver = new Observer(this);\n this.preRender();\n this.injectModules();\n this.render();\n this.refreshing = false;\n };\n Component.prototype.accessMount = function () {\n if (this.mount && !this.isReactHybrid) {\n this.mount();\n }\n };\n /**\n * Returns the route element of the component\n *\n * @returns {HTMLElement} ?\n */\n Component.prototype.getRootElement = function () {\n if (this.isReactHybrid) {\n return this.actualElement;\n }\n else {\n return this.element;\n }\n };\n /**\n * Returns the persistence data for component\n *\n * @returns {any} ?\n */\n Component.prototype.getLocalData = function () {\n var eleId = this.getModuleName() + this.element.id;\n if (versionBasedStatePersistence) {\n return window.localStorage.getItem(eleId + this.ej2StatePersistenceVersion);\n }\n else {\n return window.localStorage.getItem(eleId);\n }\n };\n /**\n * Adding unload event to persist data when enable persistence true\n *\n * @returns {void}\n */\n Component.prototype.attachUnloadEvent = function () {\n this.handleUnload = this.handleUnload.bind(this);\n window.addEventListener('pagehide', this.handleUnload);\n };\n /**\n * Handling unload event to persist data when enable persistence true\n *\n * @returns {void}\n */\n Component.prototype.handleUnload = function () {\n this.setPersistData();\n };\n /**\n * Removing unload event to persist data when enable persistence true\n *\n * @returns {void}\n */\n Component.prototype.detachUnloadEvent = function () {\n window.removeEventListener('pagehide', this.handleUnload);\n };\n /**\n * Appends the control within the given HTML element\n *\n * @param {string | HTMLElement} selector - Target element where control needs to be appended\n * @returns {void} ?\n */\n Component.prototype.appendTo = function (selector) {\n if (!isNullOrUndefined(selector) && typeof (selector) === 'string') {\n this.element = select(selector, document);\n }\n else if (!isNullOrUndefined(selector)) {\n this.element = selector;\n }\n if (!isNullOrUndefined(this.element)) {\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-control', moduleClass]);\n this.isProtectedOnChange = false;\n if (this.needsID && !this.element.id) {\n this.element.id = this.getUniqueID(this.getModuleName());\n }\n if (this.enablePersistence) {\n this.mergePersistData();\n this.attachUnloadEvent();\n }\n var inst = getValue('ej2_instances', this.element);\n if (!inst || inst.indexOf(this) === -1) {\n _super.prototype.addInstance.call(this);\n }\n this.preRender();\n this.injectModules();\n // Throw a warning for the required modules to be injected.\n var ignoredComponents = {\n schedule: 'all',\n diagram: 'all',\n PdfViewer: 'all',\n grid: ['logger'],\n richtexteditor: ['link', 'table', 'image', 'audio', 'video', 'formatPainter', 'emojiPicker', 'pasteCleanup', 'htmlEditor', 'toolbar', 'importExport'],\n treegrid: ['filter'],\n gantt: ['tooltip'],\n chart: ['Export', 'Zoom'],\n accumulationchart: ['Export'],\n 'query-builder': 'all'\n };\n var component = this.getModuleName();\n if (this.requiredModules && (!ignoredComponents[\"\" + component] || ignoredComponents[\"\" + component] !== 'all')) {\n var modulesRequired = this.requiredModules();\n for (var _i = 0, _a = this.moduleLoader.getNonInjectedModules(modulesRequired); _i < _a.length; _i++) {\n var module = _a[_i];\n var moduleName = module.name ? module.name : module.member;\n if (ignoredComponents[\"\" + component] && ignoredComponents[\"\" + component].indexOf(module.member) !== -1) {\n continue;\n }\n var componentName = component.charAt(0).toUpperCase() + component.slice(1); // To capitalize the component name\n console.warn(\"[WARNING] :: Module \\\"\" + moduleName + \"\\\" is not available in \" + componentName + \" component! You either misspelled the module name or forgot to load it.\");\n }\n }\n // Checked weather cases are valid or not. If control leads to more than five counts\n if (!isvalid && !isBannerAdded) {\n createLicenseOverlay();\n isBannerAdded = true;\n }\n this.render();\n if (!this.mount) {\n this.trigger('created');\n }\n else {\n this.accessMount();\n }\n }\n };\n /**\n * It is used to process the post rendering functionalities to a component.\n *\n * @param {Node} wrapperElement ?\n * @returns {void} ?\n */\n Component.prototype.renderComplete = function (wrapperElement) {\n if (isBlazor()) {\n var sfBlazor = 'sfBlazor';\n window[\"\" + sfBlazor].renderComplete(this.element, wrapperElement);\n }\n this.isRendered = true;\n };\n /**\n * When invoked, applies the pending property changes immediately to the component.\n *\n * @returns {void} ?\n */\n Component.prototype.dataBind = function () {\n this.injectModules();\n _super.prototype.dataBind.call(this);\n };\n /**\n * Attach one or more event handler to the current component context.\n * It is used for internal handling event internally within the component only.\n *\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the handler to run when the event occurs\n * @param {Object} context - optional parameter Specifies the context to be bind in the handler.\n * @returns {void} ?\n * @private\n */\n Component.prototype.on = function (event, handler, context) {\n if (typeof event === 'string') {\n this.localObserver.on(event, handler, context);\n }\n else {\n for (var _i = 0, event_1 = event; _i < event_1.length; _i++) {\n var arg = event_1[_i];\n this.localObserver.on(arg.event, arg.handler, arg.context);\n }\n }\n };\n /**\n * To remove one or more event handler that has been attached with the on() method.\n *\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the function to run when the event occurs\n * @returns {void} ?\n * @private\n */\n Component.prototype.off = function (event, handler) {\n if (typeof event === 'string') {\n this.localObserver.off(event, handler);\n }\n else {\n for (var _i = 0, event_2 = event; _i < event_2.length; _i++) {\n var arg = event_2[_i];\n this.localObserver.off(arg.event, arg.handler);\n }\n }\n };\n /**\n * To notify the handlers in the specified event.\n *\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @returns {void} ?\n * @private\n */\n Component.prototype.notify = function (property, argument) {\n if (this.isDestroyed !== true) {\n this.localObserver.notify(property, argument);\n }\n };\n /**\n * Get injected modules\n *\n * @returns {Function} ?\n * @private\n */\n Component.prototype.getInjectedModules = function () {\n return this.injectedModules;\n };\n /**\n * Dynamically injects the required modules to the component.\n *\n * @param {Function} moduleList ?\n * @returns {void} ?\n */\n Component.Inject = function () {\n var moduleList = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n moduleList[_i] = arguments[_i];\n }\n if (!this.prototype.injectedModules) {\n this.prototype.injectedModules = [];\n }\n for (var i = 0; i < moduleList.length; i++) {\n if (this.prototype.injectedModules.indexOf(moduleList[parseInt(i.toString(), 10)]) === -1) {\n this.prototype.injectedModules.push(moduleList[parseInt(i.toString(), 10)]);\n }\n }\n };\n /**\n * This is a instance method to create an element.\n *\n * @param {string} tagName ?\n * @param {ElementProperties} prop ?\n * @param {boolean} isVDOM ?\n * @returns {any} ?\n * @private\n */\n Component.prototype.createElement = function (tagName, prop, isVDOM) {\n return createElement(tagName, prop);\n };\n /**\n *\n * @param {Function} handler - handler to be triggered after state Updated.\n * @param {any} argument - Arguments to be passed to caller.\n * @returns {void} .\n * @private\n */\n Component.prototype.triggerStateChange = function (handler, argument) {\n if (this.isReactHybrid) {\n this.setState();\n this.currentContext = { calls: handler, args: argument };\n }\n };\n Component.prototype.injectModules = function () {\n if (this.injectedModules && this.injectedModules.length) {\n this.moduleLoader.inject(this.requiredModules(), this.injectedModules);\n }\n };\n Component.prototype.detectFunction = function (args) {\n var prop = Object.keys(args);\n if (prop.length) {\n this[prop[0]] = args[prop[0]];\n }\n };\n Component.prototype.mergePersistData = function () {\n var data;\n if (versionBasedStatePersistence) {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id + this.ej2StatePersistenceVersion);\n }\n else {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n }\n if (!(isNullOrUndefined(data) || (data === ''))) {\n this.setProperties(JSON.parse(data), true);\n }\n };\n Component.prototype.setPersistData = function () {\n if (!this.isDestroyed) {\n if (versionBasedStatePersistence) {\n window.localStorage.setItem(this.getModuleName() +\n this.element.id + this.ej2StatePersistenceVersion, this.getPersistData());\n }\n else {\n window.localStorage.setItem(this.getModuleName() + this.element.id, this.getPersistData());\n }\n }\n };\n Component.prototype.renderReactTemplates = function (callback) {\n if (!isNullOrUndefined(callback)) {\n callback();\n }\n };\n Component.prototype.clearTemplate = function (templateName, index) {\n //No Code\n };\n Component.prototype.getUniqueID = function (definedName) {\n if (this.isHistoryChanged()) {\n componentCount = 0;\n }\n lastPageID = this.pageID(location.href);\n lastHistoryLen = history.length;\n return definedName + '_' + lastPageID + '_' + componentCount++;\n };\n Component.prototype.pageID = function (url) {\n var hash = 0;\n if (url.length === 0) {\n return hash;\n }\n for (var i = 0; i < url.length; i++) {\n var char = url.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash = hash & hash; // Convert to 32bit integer\n }\n return Math.abs(hash);\n };\n Component.prototype.isHistoryChanged = function () {\n return lastPageID !== this.pageID(location.href) || lastHistoryLen !== history.length;\n };\n Component.prototype.addOnPersist = function (options) {\n var _this = this;\n var persistObj = {};\n for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {\n var key = options_1[_i];\n var objValue = getValue(key, this);\n if (!isUndefined(objValue)) {\n setValue(key, this.getActualProperties(objValue), persistObj);\n }\n }\n return JSON.stringify(persistObj, function (key, value) {\n return _this.getActualProperties(value);\n });\n };\n Component.prototype.getActualProperties = function (obj) {\n if (obj instanceof ChildProperty) {\n return getValue('properties', obj);\n }\n else {\n return obj;\n }\n };\n Component.prototype.ignoreOnPersist = function (options) {\n return JSON.stringify(this.iterateJsonProperties(this.properties, options));\n };\n Component.prototype.iterateJsonProperties = function (obj, ignoreList) {\n var newObj = {};\n var _loop_1 = function (key) {\n if (ignoreList.indexOf(key) === -1) {\n var value = obj[\"\" + key];\n if (typeof value === 'object' && !(value instanceof Array)) {\n var newList = ignoreList.filter(function (str) {\n var regExp = RegExp;\n return new regExp(key + '.').test(str);\n }).map(function (str) {\n return str.replace(key + '.', '');\n });\n newObj[\"\" + key] = this_1.iterateJsonProperties(this_1.getActualProperties(value), newList);\n }\n else {\n newObj[\"\" + key] = value;\n }\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\n var key = _a[_i];\n _loop_1(key);\n }\n return newObj;\n };\n __decorate([\n Property(false)\n ], Component.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"enableRtl\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"locale\", void 0);\n Component = __decorate([\n NotifyPropertyChanges\n ], Component);\n return Component;\n}(Base));\nexport { Component };\n//Function handling for page navigation detection\n/* istanbul ignore next */\n(function () {\n if (typeof window !== 'undefined') {\n window.addEventListener('popstate', \n /* istanbul ignore next */\n function () {\n componentCount = 0;\n });\n }\n})();\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible } from './dom';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { ChildProperty } from './child-property';\nimport { select, closest, setStyleAttribute, addClass, createElement } from './dom';\nimport { extend, isUndefined, isNullOrUndefined, compareElementParent, isBlazor } from './util';\nvar defaultPosition = { left: 0, top: 0, bottom: 0, right: 0 };\nvar isDraggedObject = { isDragged: false };\n/**\n * Specifies the position coordinates\n */\nvar Position = /** @class */ (function (_super) {\n __extends(Position, _super);\n function Position() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Position.prototype, \"left\", void 0);\n __decorate([\n Property(0)\n ], Position.prototype, \"top\", void 0);\n return Position;\n}(ChildProperty));\nexport { Position };\n/**\n * Draggable Module provides support to enable draggable functionality in Dom Elements.\n * ```html\n *
Draggable
\n * \n * ```\n */\nvar Draggable = /** @class */ (function (_super) {\n __extends(Draggable, _super);\n function Draggable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.dragLimit = Draggable_1.getDefaultPosition();\n _this.borderWidth = Draggable_1.getDefaultPosition();\n _this.padding = Draggable_1.getDefaultPosition();\n _this.diffX = 0;\n _this.prevLeft = 0;\n _this.prevTop = 0;\n _this.dragProcessStarted = false;\n _this.eleTop = 0;\n _this.tapHoldTimer = 0;\n _this.externalInitialize = false;\n _this.diffY = 0;\n _this.parentScrollX = 0;\n _this.parentScrollY = 0;\n _this.droppables = {};\n _this.bind();\n return _this;\n }\n Draggable_1 = Draggable;\n Draggable.prototype.bind = function () {\n this.toggleEvents();\n if (Browser.isIE) {\n addClass([this.element], 'e-block-touch');\n }\n this.droppables[this.scope] = {};\n };\n Draggable.getDefaultPosition = function () {\n return extend({}, defaultPosition);\n };\n Draggable.prototype.toggleEvents = function (isUnWire) {\n var ele;\n if (!isUndefined(this.handle)) {\n ele = select(this.handle, this.element);\n }\n var handler = (this.enableTapHold && Browser.isDevice && Browser.isTouch) ? this.mobileInitialize : this.initialize;\n if (isUnWire) {\n EventHandler.remove(ele || this.element, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, handler);\n }\n else {\n EventHandler.add(ele || this.element, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, handler, this);\n }\n };\n /* istanbul ignore next */\n Draggable.prototype.mobileInitialize = function (evt) {\n var _this = this;\n var target = evt.currentTarget;\n this.tapHoldTimer = setTimeout(function () {\n _this.externalInitialize = true;\n _this.removeTapholdTimer();\n _this.initialize(evt, target);\n }, this.tapHoldThreshold);\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.removeTapholdTimer, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.removeTapholdTimer, this);\n };\n /* istanbul ignore next */\n Draggable.prototype.removeTapholdTimer = function () {\n clearTimeout(this.tapHoldTimer);\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.removeTapholdTimer);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.removeTapholdTimer);\n };\n /* istanbul ignore next */\n Draggable.prototype.getScrollableParent = function (element, axis) {\n var scroll = { 'vertical': 'scrollHeight', 'horizontal': 'scrollWidth' };\n var client = { 'vertical': 'clientHeight', 'horizontal': 'clientWidth' };\n if (isNullOrUndefined(element)) {\n return null;\n }\n if (element[scroll[\"\" + axis]] > element[client[\"\" + axis]]) {\n if (axis === 'vertical' ? element.scrollTop > 0 : element.scrollLeft > 0) {\n if (axis === 'vertical') {\n this.parentScrollY = this.parentScrollY +\n (this.parentScrollY === 0 ? element.scrollTop : element.scrollTop - this.parentScrollY);\n this.tempScrollHeight = element.scrollHeight;\n }\n else {\n this.parentScrollX = this.parentScrollX +\n (this.parentScrollX === 0 ? element.scrollLeft : element.scrollLeft - this.parentScrollX);\n this.tempScrollWidth = element.scrollWidth;\n }\n if (!isNullOrUndefined(element)) {\n return this.getScrollableParent(element.parentNode, axis);\n }\n else {\n return element;\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n };\n Draggable.prototype.getScrollableValues = function () {\n this.parentScrollX = 0;\n this.parentScrollY = 0;\n var isModalDialog = this.element.classList.contains('e-dialog') && this.element.classList.contains('e-dlg-modal');\n var verticalScrollParent = this.getScrollableParent(this.element.parentNode, 'vertical');\n var horizontalScrollParent = this.getScrollableParent(this.element.parentNode, 'horizontal');\n };\n Draggable.prototype.initialize = function (evt, curTarget) {\n this.currentStateTarget = evt.target;\n if (this.isDragStarted()) {\n return;\n }\n else {\n this.isDragStarted(true);\n this.externalInitialize = false;\n }\n this.target = (evt.currentTarget || curTarget);\n this.dragProcessStarted = false;\n if (this.abort) {\n var abortSelectors = this.abort;\n if (typeof abortSelectors === 'string') {\n abortSelectors = [abortSelectors];\n }\n for (var i = 0; i < abortSelectors.length; i++) {\n if (!isNullOrUndefined(closest(evt.target, abortSelectors[parseInt(i.toString(), 10)]))) {\n /* istanbul ignore next */\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n return;\n }\n }\n }\n if (this.preventDefault && !isUndefined(evt.changedTouches) && evt.type !== 'touchstart') {\n evt.preventDefault();\n }\n this.element.setAttribute('aria-grabbed', 'true');\n var intCoord = this.getCoordinates(evt);\n this.initialPosition = { x: intCoord.pageX, y: intCoord.pageY };\n if (!this.clone) {\n var pos = this.element.getBoundingClientRect();\n this.getScrollableValues();\n if (evt.clientX === evt.pageX) {\n this.parentScrollX = 0;\n }\n if (evt.clientY === evt.pageY) {\n this.parentScrollY = 0;\n }\n this.relativeXPosition = intCoord.pageX - (pos.left + this.parentScrollX);\n this.relativeYPosition = intCoord.pageY - (pos.top + this.parentScrollY);\n }\n if (this.externalInitialize) {\n this.intDragStart(evt);\n }\n else {\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy, this);\n }\n this.toggleEvents(true);\n if (evt.type !== 'touchstart' && this.isPreventSelect) {\n document.body.classList.add('e-prevent-select');\n }\n this.externalInitialize = false;\n EventHandler.trigger(document.documentElement, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, evt);\n };\n Draggable.prototype.intDragStart = function (evt) {\n this.removeTapholdTimer();\n var isChangeTouch = !isUndefined(evt.changedTouches);\n if (isChangeTouch && (evt.changedTouches.length !== 1)) {\n return;\n }\n var intCordinate = this.getCoordinates(evt);\n var pos;\n var styleProp = getComputedStyle(this.element);\n this.margin = {\n left: parseInt(styleProp.marginLeft, 10),\n top: parseInt(styleProp.marginTop, 10),\n right: parseInt(styleProp.marginRight, 10),\n bottom: parseInt(styleProp.marginBottom, 10)\n };\n var element = this.element;\n if (this.clone && this.dragTarget) {\n var intClosest = closest(evt.target, this.dragTarget);\n if (!isNullOrUndefined(intClosest)) {\n element = intClosest;\n }\n }\n /* istanbul ignore next */\n if (this.isReplaceDragEle) {\n element = this.currentStateCheck(evt.target, element);\n }\n this.offset = this.calculateParentPosition(element);\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var x = this.initialPosition.x - intCordinate.pageX;\n var y = this.initialPosition.y - intCordinate.pageY;\n var distance = Math.sqrt((x * x) + (y * y));\n if ((distance >= this.distance || this.externalInitialize)) {\n var ele = this.getHelperElement(evt);\n if (!ele || isNullOrUndefined(ele)) {\n return;\n }\n if (isChangeTouch) {\n evt.preventDefault();\n }\n var dragTargetElement = this.helperElement = ele;\n this.parentClientRect = this.calculateParentPosition(dragTargetElement.offsetParent);\n if (this.dragStart) {\n var curTarget = this.getProperTargetElement(evt);\n var args = {\n event: evt,\n element: element,\n target: curTarget,\n bindEvents: isBlazor() ? this.bindDragEvents.bind(this) : null,\n dragElement: dragTargetElement\n };\n this.trigger('dragStart', args);\n }\n if (this.dragArea) {\n this.setDragArea();\n }\n else {\n this.dragLimit = { left: 0, right: 0, bottom: 0, top: 0 };\n this.borderWidth = { top: 0, left: 0 };\n }\n pos = { left: this.position.left - this.parentClientRect.left, top: this.position.top - this.parentClientRect.top };\n if (this.clone && !this.enableTailMode) {\n this.diffX = this.position.left - this.offset.left;\n this.diffY = this.position.top - this.offset.top;\n }\n this.getScrollableValues();\n // when drag element has margin-top\n var styles = getComputedStyle(element);\n var marginTop = parseFloat(styles.marginTop);\n /* istanbul ignore next */\n if (this.clone && marginTop !== 0) {\n pos.top += marginTop;\n }\n this.eleTop = !isNaN(parseFloat(styles.top)) ? parseFloat(styles.top) - this.offset.top : 0;\n /* istanbul ignore next */\n // if (this.eleTop > 0) {\n // pos.top += this.eleTop;\n // }\n if (this.enableScrollHandler && !this.clone) {\n pos.top -= this.parentScrollY;\n pos.left -= this.parentScrollX;\n }\n var posValue = this.getProcessedPositionValue({\n top: (pos.top - this.diffY) + 'px',\n left: (pos.left - this.diffX) + 'px'\n });\n if (this.dragArea && typeof this.dragArea !== 'string' && this.dragArea.classList.contains('e-kanban-content') && this.dragArea.style.position === 'relative') {\n pos.top += this.dragArea.scrollTop;\n }\n this.dragElePosition = { top: pos.top, left: pos.left };\n setStyleAttribute(dragTargetElement, this.getDragPosition({ position: 'absolute', left: posValue.left, top: posValue.top }));\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy);\n if (!isBlazor()) {\n this.bindDragEvents(dragTargetElement);\n }\n }\n };\n Draggable.prototype.bindDragEvents = function (dragTargetElement) {\n if (isVisible(dragTargetElement)) {\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDrag, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDragStop, this);\n this.setGlobalDroppables(false, this.element, dragTargetElement);\n }\n else {\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n }\n };\n Draggable.prototype.elementInViewport = function (el) {\n this.top = el.offsetTop;\n this.left = el.offsetLeft;\n this.width = el.offsetWidth;\n this.height = el.offsetHeight;\n while (el.offsetParent) {\n el = el.offsetParent;\n this.top += el.offsetTop;\n this.left += el.offsetLeft;\n }\n return (this.top >= window.pageYOffset &&\n this.left >= window.pageXOffset &&\n (this.top + this.height) <= (window.pageYOffset + window.innerHeight) &&\n (this.left + this.width) <= (window.pageXOffset + window.innerWidth));\n };\n Draggable.prototype.getProcessedPositionValue = function (value) {\n if (this.queryPositionInfo) {\n return this.queryPositionInfo(value);\n }\n return value;\n };\n Draggable.prototype.calculateParentPosition = function (ele) {\n if (isNullOrUndefined(ele)) {\n return { left: 0, top: 0 };\n }\n var rect = ele.getBoundingClientRect();\n var style = getComputedStyle(ele);\n return {\n left: (rect.left + window.pageXOffset) - parseInt(style.marginLeft, 10),\n top: (rect.top + window.pageYOffset) - parseInt(style.marginTop, 10)\n };\n };\n Draggable.prototype.intDrag = function (evt) {\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n if (this.clone && evt.changedTouches && Browser.isDevice && Browser.isTouch) {\n evt.preventDefault();\n }\n var left;\n var top;\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var docHeight = this.getDocumentWidthHeight('Height');\n if (docHeight < this.position.top) {\n this.position.top = docHeight;\n }\n var docWidth = this.getDocumentWidthHeight('Width');\n if (docWidth < this.position.left) {\n this.position.left = docWidth;\n }\n if (this.drag) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('drag', { event: evt, element: this.element, target: curTarget });\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n var flag = true;\n if (this.hoverObject) {\n if (this.hoverObject.instance !== eleObj.instance) {\n this.triggerOutFunction(evt, eleObj);\n }\n else {\n flag = false;\n }\n }\n if (flag) {\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intOver(evt, eleObj.target);\n this.hoverObject = eleObj;\n }\n }\n else if (this.hoverObject) {\n this.triggerOutFunction(evt, eleObj);\n }\n var helperElement = this.droppables[this.scope].helper;\n this.parentClientRect = this.calculateParentPosition(this.helperElement.offsetParent);\n var tLeft = this.parentClientRect.left;\n var tTop = this.parentClientRect.top;\n var intCoord = this.getCoordinates(evt);\n var pagex = intCoord.pageX;\n var pagey = intCoord.pageY;\n var dLeft = this.position.left - this.diffX;\n var dTop = this.position.top - this.diffY;\n var styles = getComputedStyle(helperElement);\n if (this.dragArea) {\n if (this.enableAutoScroll) {\n this.setDragArea();\n }\n if (this.pageX !== pagex || this.skipDistanceCheck) {\n var helperWidth = helperElement.offsetWidth + (parseFloat(styles.marginLeft)\n + parseFloat(styles.marginRight));\n if (this.dragLimit.left > dLeft && dLeft > 0) {\n left = this.dragLimit.left;\n }\n else if (this.dragLimit.right + window.pageXOffset < dLeft + helperWidth && dLeft > 0) {\n left = dLeft - (dLeft - this.dragLimit.right) + window.pageXOffset - helperWidth;\n }\n else {\n left = dLeft < 0 ? this.dragLimit.left : dLeft;\n }\n }\n if (this.pageY !== pagey || this.skipDistanceCheck) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)\n + parseFloat(styles.marginBottom));\n if (this.dragLimit.top > dTop && dTop > 0) {\n top = this.dragLimit.top;\n }\n else if (this.dragLimit.bottom + window.pageYOffset < dTop + helperHeight && dTop > 0) {\n top = dTop - (dTop - this.dragLimit.bottom) + window.pageYOffset - helperHeight;\n }\n else {\n top = dTop < 0 ? this.dragLimit.top : dTop;\n }\n }\n }\n else {\n left = dLeft;\n top = dTop;\n }\n var iTop = tTop + this.borderWidth.top;\n var iLeft = tLeft + this.borderWidth.left;\n if (this.dragProcessStarted) {\n if (isNullOrUndefined(top)) {\n top = this.prevTop;\n }\n if (isNullOrUndefined(left)) {\n left = this.prevLeft;\n }\n }\n var draEleTop;\n var draEleLeft;\n if (this.helperElement.classList.contains('e-treeview')) {\n if (this.dragArea) {\n this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - this.borderWidth.top);\n draEleLeft = (left - iLeft) < 0 ? this.dragLimit.left : (left - this.borderWidth.left);\n }\n else {\n draEleTop = top - this.borderWidth.top;\n draEleLeft = left - this.borderWidth.left;\n }\n }\n else {\n if (this.dragArea) {\n var isDialogEle = this.helperElement.classList.contains('e-dialog');\n this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - iTop);\n draEleLeft = (left - iLeft) < 0 ? isDialogEle ? (left - (iLeft - this.borderWidth.left)) :\n this.dragElePosition.left : (left - iLeft);\n }\n else {\n draEleTop = top - iTop;\n draEleLeft = left - iLeft;\n }\n }\n var marginTop = parseFloat(getComputedStyle(this.element).marginTop);\n // when drag-element has margin-top\n /* istanbul ignore next */\n if (marginTop > 0) {\n if (this.clone) {\n draEleTop += marginTop;\n if (dTop < 0) {\n if ((marginTop + dTop) >= 0) {\n draEleTop = marginTop + dTop;\n }\n else {\n draEleTop -= marginTop;\n }\n }\n if (this.dragArea) {\n draEleTop = (this.dragLimit.bottom < draEleTop) ? this.dragLimit.bottom : draEleTop;\n }\n }\n if ((top - iTop) < 0) {\n if (dTop + marginTop + (helperElement.offsetHeight - iTop) >= 0) {\n var tempDraEleTop = this.dragLimit.top + dTop - iTop;\n if ((tempDraEleTop + marginTop + iTop) < 0) {\n draEleTop -= marginTop + iTop;\n }\n else {\n draEleTop = tempDraEleTop;\n }\n }\n else {\n draEleTop -= marginTop + iTop;\n }\n }\n }\n if (this.dragArea && this.helperElement.classList.contains('e-treeview')) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)\n + parseFloat(styles.marginBottom));\n draEleTop = (draEleTop + helperHeight) > this.dragLimit.bottom ? (this.dragLimit.bottom - helperHeight) : draEleTop;\n }\n /* istanbul ignore next */\n // if(this.eleTop > 0) {\n // draEleTop += this.eleTop;\n // }\n if (this.enableScrollHandler && !this.clone) {\n draEleTop -= this.parentScrollY;\n draEleLeft -= this.parentScrollX;\n }\n if (this.dragArea && typeof this.dragArea !== 'string' && this.dragArea.classList.contains('e-kanban-content') && this.dragArea.style.position === 'relative') {\n draEleTop += this.dragArea.scrollTop;\n }\n var dragValue = this.getProcessedPositionValue({ top: draEleTop + 'px', left: draEleLeft + 'px' });\n setStyleAttribute(helperElement, this.getDragPosition(dragValue));\n if (!this.elementInViewport(helperElement) && this.enableAutoScroll && !this.helperElement.classList.contains('e-treeview')) {\n this.helperElement.scrollIntoView();\n }\n var elements = document.querySelectorAll(':hover');\n if (this.enableAutoScroll && this.helperElement.classList.contains('e-treeview')) {\n if (elements.length === 0) {\n elements = this.getPathElements(evt);\n }\n var scrollParent = this.getScrollParent(elements, false);\n if (this.elementInViewport(this.helperElement)) {\n this.getScrollPosition(scrollParent, draEleTop);\n }\n else if (!this.elementInViewport(this.helperElement)) {\n elements = [].slice.call(document.querySelectorAll(':hover'));\n if (elements.length === 0) {\n elements = this.getPathElements(evt);\n }\n scrollParent = this.getScrollParent(elements, true);\n this.getScrollPosition(scrollParent, draEleTop);\n }\n }\n this.dragProcessStarted = true;\n this.prevLeft = left;\n this.prevTop = top;\n this.position.left = left;\n this.position.top = top;\n this.pageX = pagex;\n this.pageY = pagey;\n };\n Draggable.prototype.getScrollParent = function (node, reverse) {\n var nodeEl = reverse ? node.reverse() : node;\n var hasScroll;\n for (var i = nodeEl.length - 1; i >= 0; i--) {\n hasScroll = window.getComputedStyle(nodeEl[parseInt(i.toString(), 10)])['overflow-y'];\n if ((hasScroll === 'auto' || hasScroll === 'scroll')\n && nodeEl[parseInt(i.toString(), 10)].scrollHeight > nodeEl[parseInt(i.toString(), 10)].clientHeight) {\n return nodeEl[parseInt(i.toString(), 10)];\n }\n }\n hasScroll = window.getComputedStyle(document.scrollingElement)['overflow-y'];\n if (hasScroll === 'visible') {\n document.scrollingElement.style.overflow = 'auto';\n return document.scrollingElement;\n }\n };\n Draggable.prototype.getScrollPosition = function (nodeEle, draEleTop) {\n if (nodeEle && nodeEle === document.scrollingElement) {\n if ((nodeEle.clientHeight + document.scrollingElement.scrollTop - this.helperElement.clientHeight) < draEleTop\n && nodeEle.getBoundingClientRect().height + this.parentClientRect.top > draEleTop) {\n nodeEle.scrollTop += this.helperElement.clientHeight;\n }\n else if (nodeEle.scrollTop > draEleTop - this.helperElement.clientHeight) {\n nodeEle.scrollTop -= this.helperElement.clientHeight;\n }\n }\n else if (nodeEle && nodeEle !== document.scrollingElement) {\n var docScrollTop = document.scrollingElement.scrollTop;\n var helperClientHeight = this.helperElement.clientHeight;\n if ((nodeEle.clientHeight + nodeEle.getBoundingClientRect().top - helperClientHeight + docScrollTop) < draEleTop) {\n nodeEle.scrollTop += this.helperElement.clientHeight;\n }\n else if (nodeEle.getBoundingClientRect().top > (draEleTop - helperClientHeight - docScrollTop)) {\n nodeEle.scrollTop -= this.helperElement.clientHeight;\n }\n }\n };\n Draggable.prototype.getPathElements = function (evt) {\n var elementTop = evt.clientX > 0 ? evt.clientX : 0;\n var elementLeft = evt.clientY > 0 ? evt.clientY : 0;\n return document.elementsFromPoint(elementTop, elementLeft);\n };\n Draggable.prototype.triggerOutFunction = function (evt, eleObj) {\n this.hoverObject.instance.intOut(evt, eleObj.target);\n this.hoverObject.instance.dragData[this.scope] = null;\n this.hoverObject = null;\n };\n Draggable.prototype.getDragPosition = function (dragValue) {\n var temp = extend({}, dragValue);\n if (this.axis) {\n if (this.axis === 'x') {\n delete temp.top;\n }\n else if (this.axis === 'y') {\n delete temp.left;\n }\n }\n return temp;\n };\n Draggable.prototype.getDocumentWidthHeight = function (str) {\n var docBody = document.body;\n var docEle = document.documentElement;\n var returnValue = Math.max(docBody['scroll' + str], docEle['scroll' + str], docBody['offset' + str], docEle['offset' + str], docEle['client' + str]);\n return returnValue;\n };\n Draggable.prototype.intDragStop = function (evt) {\n this.dragProcessStarted = false;\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n var type = ['touchend', 'pointerup', 'mouseup'];\n if (type.indexOf(evt.type) !== -1) {\n if (this.dragStop) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('dragStop', { event: evt, element: this.element, target: curTarget, helper: this.helperElement });\n }\n this.intDestroy(evt);\n }\n else {\n this.element.setAttribute('aria-grabbed', 'false');\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n eleObj.instance.dragStopCalled = true;\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intDrop(evt, eleObj.target);\n }\n this.setGlobalDroppables(true);\n document.body.classList.remove('e-prevent-select');\n };\n /**\n * @param {MouseEvent | TouchEvent} evt ?\n * @returns {void}\n * @private\n */\n Draggable.prototype.intDestroy = function (evt) {\n this.dragProcessStarted = false;\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n this.element.setAttribute('aria-grabbed', 'false');\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDragStop);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy);\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDrag);\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n };\n // triggers when property changed\n Draggable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Draggable.prototype.getModuleName = function () {\n return 'draggable';\n };\n Draggable.prototype.isDragStarted = function (change) {\n if (change) {\n isDraggedObject.isDragged = !isDraggedObject.isDragged;\n }\n return isDraggedObject.isDragged;\n };\n Draggable.prototype.setDragArea = function () {\n var eleWidthBound;\n var eleHeightBound;\n var top = 0;\n var left = 0;\n var ele;\n var type = typeof this.dragArea;\n if (type === 'string') {\n ele = select(this.dragArea);\n }\n else {\n ele = this.dragArea;\n }\n if (ele) {\n var elementArea = ele.getBoundingClientRect();\n eleWidthBound = ele.scrollWidth ? ele.scrollWidth : elementArea.right - elementArea.left;\n eleHeightBound = ele.scrollHeight ? (this.dragArea && !isNullOrUndefined(this.helperElement) && this.helperElement.classList.contains('e-treeview')) ? ele.clientHeight : ele.scrollHeight : elementArea.bottom - elementArea.top;\n var keys = ['Top', 'Left', 'Bottom', 'Right'];\n var styles = getComputedStyle(ele);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[parseInt(i.toString(), 10)];\n var tborder = styles['border' + key + 'Width'];\n var tpadding = styles['padding' + key];\n var lowerKey = key.toLowerCase();\n this.borderWidth[\"\" + lowerKey] = isNaN(parseFloat(tborder)) ? 0 : parseFloat(tborder);\n this.padding[\"\" + lowerKey] = isNaN(parseFloat(tpadding)) ? 0 : parseFloat(tpadding);\n }\n if (this.dragArea && !isNullOrUndefined(this.helperElement) && this.helperElement.classList.contains('e-treeview')) {\n top = elementArea.top + document.scrollingElement.scrollTop;\n }\n else {\n top = elementArea.top;\n }\n left = elementArea.left;\n this.dragLimit.left = left + this.borderWidth.left + this.padding.left;\n this.dragLimit.top = ele.offsetTop + this.borderWidth.top + this.padding.top;\n this.dragLimit.right = left + eleWidthBound - (this.borderWidth.right + this.padding.right);\n this.dragLimit.bottom = top + eleHeightBound - (this.borderWidth.bottom + this.padding.bottom);\n }\n };\n Draggable.prototype.getProperTargetElement = function (evt) {\n var intCoord = this.getCoordinates(evt);\n var ele;\n var prevStyle = this.helperElement.style.pointerEvents || '';\n var isPointer = evt.type.indexOf('pointer') !== -1 && Browser.info.name === 'safari' && parseInt(Browser.info.version, 10) > 12;\n if (compareElementParent(evt.target, this.helperElement) || evt.type.indexOf('touch') !== -1 || isPointer) {\n this.helperElement.style.pointerEvents = 'none';\n ele = document.elementFromPoint(intCoord.clientX, intCoord.clientY);\n this.helperElement.style.pointerEvents = prevStyle;\n }\n else {\n ele = evt.target;\n }\n return ele;\n };\n /* istanbul ignore next */\n Draggable.prototype.currentStateCheck = function (ele, oldEle) {\n var elem;\n if (!isNullOrUndefined(this.currentStateTarget) && this.currentStateTarget !== ele) {\n elem = this.currentStateTarget;\n }\n else {\n elem = !isNullOrUndefined(oldEle) ? oldEle : ele;\n }\n return elem;\n };\n Draggable.prototype.getMousePosition = function (evt, isdragscroll) {\n var dragEle = evt.srcElement !== undefined ? evt.srcElement : evt.target;\n var intCoord = this.getCoordinates(evt);\n var pageX;\n var pageY;\n var isOffsetParent = isNullOrUndefined(dragEle.offsetParent);\n /* istanbul ignore next */\n if (isdragscroll) {\n pageX = this.clone ? intCoord.pageX :\n (intCoord.pageX + (isOffsetParent ? 0 : dragEle.offsetParent.scrollLeft)) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY :\n (intCoord.pageY + (isOffsetParent ? 0 : dragEle.offsetParent.scrollTop)) - this.relativeYPosition;\n }\n else {\n pageX = this.clone ? intCoord.pageX : (intCoord.pageX + window.pageXOffset) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY : (intCoord.pageY + window.pageYOffset) - this.relativeYPosition;\n }\n if (document.scrollingElement && (!isdragscroll && !this.clone)) {\n var ele = document.scrollingElement;\n var isVerticalScroll = ele.scrollHeight > 0 && ele.scrollHeight > ele.clientHeight && ele.scrollTop > 0;\n var isHorrizontalScroll = ele.scrollWidth > 0 && ele.scrollWidth > ele.clientWidth && ele.scrollLeft > 0;\n pageX = isHorrizontalScroll ? pageX - ele.scrollLeft : pageX;\n pageY = isVerticalScroll ? pageY - ele.scrollTop : pageY;\n }\n return {\n left: pageX - (this.margin.left + this.cursorAt.left),\n top: pageY - (this.margin.top + this.cursorAt.top)\n };\n };\n Draggable.prototype.getCoordinates = function (evt) {\n if (evt.type.indexOf('touch') > -1) {\n return evt.changedTouches[0];\n }\n return evt;\n };\n Draggable.prototype.getHelperElement = function (evt) {\n var element;\n if (this.clone) {\n if (this.helper) {\n element = this.helper({ sender: evt, element: this.target });\n }\n else {\n element = createElement('div', { className: 'e-drag-helper e-block-touch', innerHTML: 'Draggable' });\n document.body.appendChild(element);\n }\n }\n else {\n element = this.element;\n }\n return element;\n };\n Draggable.prototype.setGlobalDroppables = function (reset, drag, helper) {\n this.droppables[this.scope] = reset ? null : {\n draggable: drag,\n helper: helper,\n draggedElement: this.element\n };\n };\n Draggable.prototype.checkTargetElement = function (evt) {\n var target = this.getProperTargetElement(evt);\n var dropIns = this.getDropInstance(target);\n if (!dropIns && target && !isNullOrUndefined(target.parentNode)) {\n var parent_1 = closest(target.parentNode, '.e-droppable') || target.parentElement;\n if (parent_1) {\n dropIns = this.getDropInstance(parent_1);\n }\n }\n return { target: target, instance: dropIns };\n };\n Draggable.prototype.getDropInstance = function (ele) {\n var name = 'getModuleName';\n var drop;\n var eleInst = ele && ele.ej2_instances;\n if (eleInst) {\n for (var _i = 0, eleInst_1 = eleInst; _i < eleInst_1.length; _i++) {\n var inst = eleInst_1[_i];\n if (inst[\"\" + name]() === 'droppable') {\n drop = inst;\n break;\n }\n }\n }\n return drop;\n };\n Draggable.prototype.destroy = function () {\n this.toggleEvents(true);\n _super.prototype.destroy.call(this);\n };\n var Draggable_1;\n __decorate([\n Complex({}, Position)\n ], Draggable.prototype, \"cursorAt\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"clone\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"dragArea\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"isDragScroll\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"isReplaceDragEle\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"isPreventSelect\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"dragStop\", void 0);\n __decorate([\n Property(1)\n ], Draggable.prototype, \"distance\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"handle\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"abort\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"helper\", void 0);\n __decorate([\n Property('default')\n ], Draggable.prototype, \"scope\", void 0);\n __decorate([\n Property('')\n ], Draggable.prototype, \"dragTarget\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"axis\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"queryPositionInfo\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableTailMode\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"skipDistanceCheck\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"preventDefault\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableAutoScroll\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableTapHold\", void 0);\n __decorate([\n Property(750)\n ], Draggable.prototype, \"tapHoldThreshold\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableScrollHandler\", void 0);\n Draggable = Draggable_1 = __decorate([\n NotifyPropertyChanges\n ], Draggable);\n return Draggable;\n}(Base));\nexport { Draggable };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible, matches } from './dom';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { compareElementParent } from './util';\n/**\n * Droppable Module provides support to enable droppable functionality in Dom Elements.\n * ```html\n *
Droppable
\n * \n * ```\n */\nvar Droppable = /** @class */ (function (_super) {\n __extends(Droppable, _super);\n function Droppable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.mouseOver = false;\n _this.dragData = {};\n _this.dragStopCalled = false;\n _this.bind();\n return _this;\n }\n Droppable.prototype.bind = function () {\n this.wireEvents();\n };\n Droppable.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDrop, this);\n };\n // triggers when property changed\n Droppable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Droppable.prototype.getModuleName = function () {\n return 'droppable';\n };\n Droppable.prototype.intOver = function (event, element) {\n if (!this.mouseOver) {\n var drag = this.dragData[this.scope];\n this.trigger('over', { event: event, target: element, dragData: drag });\n this.mouseOver = true;\n }\n };\n Droppable.prototype.intOut = function (event, element) {\n if (this.mouseOver) {\n this.trigger('out', { evt: event, target: element });\n this.mouseOver = false;\n }\n };\n Droppable.prototype.intDrop = function (evt, element) {\n if (!this.dragStopCalled) {\n return;\n }\n else {\n this.dragStopCalled = false;\n }\n var accept = true;\n var drag = this.dragData[this.scope];\n var isDrag = drag ? (drag.helper && isVisible(drag.helper)) : false;\n var area;\n if (isDrag) {\n area = this.isDropArea(evt, drag.helper, element);\n if (this.accept) {\n accept = matches(drag.helper, this.accept);\n }\n }\n if (isDrag && this.drop && area.canDrop && accept) {\n this.trigger('drop', { event: evt, target: area.target, droppedElement: drag.helper, dragData: drag });\n }\n this.mouseOver = false;\n };\n Droppable.prototype.isDropArea = function (evt, helper, element) {\n var area = { canDrop: true, target: element || evt.target };\n var isTouch = evt.type === 'touchend';\n if (isTouch || area.target === helper) {\n helper.style.display = 'none';\n var coord = isTouch ? (evt.changedTouches[0]) : evt;\n var ele = document.elementFromPoint(coord.clientX, coord.clientY);\n area.canDrop = false;\n area.canDrop = compareElementParent(ele, this.element);\n if (area.canDrop) {\n area.target = ele;\n }\n helper.style.display = '';\n }\n return area;\n };\n Droppable.prototype.destroy = function () {\n EventHandler.remove(this.element, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDrop);\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Property()\n ], Droppable.prototype, \"accept\", void 0);\n __decorate([\n Property('default')\n ], Droppable.prototype, \"scope\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"drop\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"over\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"out\", void 0);\n Droppable = __decorate([\n NotifyPropertyChanges\n ], Droppable);\n return Droppable;\n}(Base));\nexport { Droppable };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Base } from './base';\nvar keyCode = {\n 'backspace': 8,\n 'tab': 9,\n 'enter': 13,\n 'shift': 16,\n 'control': 17,\n 'alt': 18,\n 'pause': 19,\n 'capslock': 20,\n 'space': 32,\n 'escape': 27,\n 'pageup': 33,\n 'pagedown': 34,\n 'end': 35,\n 'home': 36,\n 'leftarrow': 37,\n 'uparrow': 38,\n 'rightarrow': 39,\n 'downarrow': 40,\n 'insert': 45,\n 'delete': 46,\n 'f1': 112,\n 'f2': 113,\n 'f3': 114,\n 'f4': 115,\n 'f5': 116,\n 'f6': 117,\n 'f7': 118,\n 'f8': 119,\n 'f9': 120,\n 'f10': 121,\n 'f11': 122,\n 'f12': 123,\n 'semicolon': 186,\n 'plus': 187,\n 'comma': 188,\n 'minus': 189,\n 'dot': 190,\n 'forwardslash': 191,\n 'graveaccent': 192,\n 'openbracket': 219,\n 'backslash': 220,\n 'closebracket': 221,\n 'singlequote': 222\n};\n/**\n * KeyboardEvents class enables you to bind key action desired key combinations for ex., Ctrl+A, Delete, Alt+Space etc.\n * ```html\n *
;\n * \n * ```\n */\nvar KeyboardEvents = /** @class */ (function (_super) {\n __extends(KeyboardEvents, _super);\n /**\n * Initializes the KeyboardEvents\n *\n * @param {HTMLElement} element ?\n * @param {KeyboardEventsModel} options ?\n */\n function KeyboardEvents(element, options) {\n var _this = _super.call(this, options, element) || this;\n /**\n * To handle a key press event returns null\n *\n * @param {KeyboardEventArgs} e ?\n * @returns {void} ?\n */\n _this.keyPressHandler = function (e) {\n var isAltKey = e.altKey;\n var isCtrlKey = e.ctrlKey;\n var isShiftKey = e.shiftKey;\n var curkeyCode = e.which;\n var keys = Object.keys(_this.keyConfigs);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n var configCollection = _this.keyConfigs[\"\" + key].split(',');\n for (var _a = 0, configCollection_1 = configCollection; _a < configCollection_1.length; _a++) {\n var rconfig = configCollection_1[_a];\n var rKeyObj = KeyboardEvents_1.getKeyConfigData(rconfig.trim());\n if (isAltKey === rKeyObj.altKey && isCtrlKey === rKeyObj.ctrlKey &&\n isShiftKey === rKeyObj.shiftKey && curkeyCode === rKeyObj.keyCode) {\n e.action = key;\n if (_this.keyAction) {\n _this.keyAction(e);\n }\n }\n }\n }\n };\n _this.bind();\n return _this;\n }\n KeyboardEvents_1 = KeyboardEvents;\n /**\n * Unwire bound events and destroy the instance.\n *\n * @returns {void} ?\n */\n KeyboardEvents.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n /**\n * Function can be used to specify certain action if a property is changed\n *\n * @param {KeyboardEventsModel} newProp ?\n * @param {KeyboardEventsModel} oldProp ?\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.onPropertyChanged = function (newProp, oldProp) {\n // No code are needed\n };\n KeyboardEvents.prototype.bind = function () {\n this.wireEvents();\n };\n /**\n * To get the module name, returns 'keyboard'.\n *\n * @returns {string} ?\n * @private\n */\n KeyboardEvents.prototype.getModuleName = function () {\n return 'keyboard';\n };\n /**\n * Wiring event handlers to events\n *\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.wireEvents = function () {\n this.element.addEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * Unwiring event handlers to events\n *\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.unwireEvents = function () {\n this.element.removeEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * To get the key configuration data\n *\n * @param {string} config - configuration data\n * @returns {KeyData} ?\n */\n KeyboardEvents.getKeyConfigData = function (config) {\n if (config in this.configCache) {\n return this.configCache[\"\" + config];\n }\n var keys = config.toLowerCase().split('+');\n var keyData = {\n altKey: (keys.indexOf('alt') !== -1 ? true : false),\n ctrlKey: (keys.indexOf('ctrl') !== -1 ? true : false),\n shiftKey: (keys.indexOf('shift') !== -1 ? true : false),\n keyCode: null\n };\n if (keys[keys.length - 1].length > 1 && !!Number(keys[keys.length - 1])) {\n keyData.keyCode = Number(keys[keys.length - 1]);\n }\n else {\n keyData.keyCode = KeyboardEvents_1.getKeyCode(keys[keys.length - 1]);\n }\n KeyboardEvents_1.configCache[\"\" + config] = keyData;\n return keyData;\n };\n // Return the keycode value as string\n KeyboardEvents.getKeyCode = function (keyVal) {\n return keyCode[\"\" + keyVal] || keyVal.toUpperCase().charCodeAt(0);\n };\n var KeyboardEvents_1;\n KeyboardEvents.configCache = {};\n __decorate([\n Property({})\n ], KeyboardEvents.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property('keyup')\n ], KeyboardEvents.prototype, \"eventName\", void 0);\n __decorate([\n Event()\n ], KeyboardEvents.prototype, \"keyAction\", void 0);\n KeyboardEvents = KeyboardEvents_1 = __decorate([\n NotifyPropertyChanges\n ], KeyboardEvents);\n return KeyboardEvents;\n}(Base));\nexport { KeyboardEvents };\n","import { extend, isNullOrUndefined } from './util';\nimport { defaultCulture } from './internationalization';\n/**\n * L10n modules provides localized text for different culture.\n * ```typescript\n * import {setCulture} from '@syncfusion/ts-base-library';\n * //load global locale object common for all components.\n * L10n.load({\n * 'fr-BE': {\n * 'button': {\n * 'check': 'vérifié'\n * }\n * }\n * });\n * //set globale default locale culture.\n * setCulture('fr-BE');\n * let instance: L10n = new L10n('button', {\n * check: 'checked'\n * });\n * //Get locale text for current property.\n * instance.getConstant('check');\n * //Change locale culture in a component.\n * instance.setLocale('en-US');\n * ```\n */\nvar L10n = /** @class */ (function () {\n /**\n * Constructor\n *\n * @param {string} controlName ?\n * @param {Object} localeStrings ?\n * @param {string} locale ?\n */\n function L10n(controlName, localeStrings, locale) {\n this.controlName = controlName;\n this.localeStrings = localeStrings;\n this.setLocale(locale || defaultCulture);\n }\n /**\n * Sets the locale text\n *\n * @param {string} locale ?\n * @returns {void} ?\n */\n L10n.prototype.setLocale = function (locale) {\n var intLocale = this.intGetControlConstant(L10n.locale, locale);\n this.currentLocale = intLocale || this.localeStrings;\n };\n /**\n * Sets the global locale for all components.\n *\n * @param {Object} localeObject - specifies the localeObject to be set as global locale.\n * @returns {void} ?\n */\n L10n.load = function (localeObject) {\n this.locale = extend(this.locale, localeObject, {}, true);\n };\n /**\n * Returns current locale text for the property based on the culture name and control name.\n *\n * @param {string} prop - specifies the property for which localize text to be returned.\n * @returns {string} ?\n */\n L10n.prototype.getConstant = function (prop) {\n // Removed conditional operator because this method does not return correct value when passing 0 as value in localization\n if (!isNullOrUndefined(this.currentLocale[\"\" + prop])) {\n return this.currentLocale[\"\" + prop];\n }\n else {\n return this.localeStrings[\"\" + prop] || '';\n }\n };\n /**\n * Returns the control constant object for current object and the locale specified.\n *\n * @param {Object} curObject ?\n * @param {string} locale ?\n * @returns {Object} ?\n */\n L10n.prototype.intGetControlConstant = function (curObject, locale) {\n if ((curObject)[\"\" + locale]) {\n return (curObject)[\"\" + locale][this.controlName];\n }\n return null;\n };\n L10n.locale = {};\n return L10n;\n}());\nexport { L10n };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { extend } from './util';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Browser } from './browser';\nimport { Base } from './base';\nimport { ChildProperty } from './child-property';\nimport { EventHandler } from './event-handler';\n/**\n * SwipeSettings is a framework module that provides support to handle swipe event like swipe up, swipe right, etc..,\n */\nvar SwipeSettings = /** @class */ (function (_super) {\n __extends(SwipeSettings, _super);\n function SwipeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(50)\n ], SwipeSettings.prototype, \"swipeThresholdDistance\", void 0);\n return SwipeSettings;\n}(ChildProperty));\nexport { SwipeSettings };\nvar swipeRegex = /(Up|Down)/;\n/**\n * Touch class provides support to handle the touch event like tap, double tap, tap hold, etc..,\n * ```typescript\n * let node: HTMLElement;\n * let touchObj: Touch = new Touch({\n * element: node,\n * tap: function (e) {\n * // tap handler function code\n * }\n * tapHold: function (e) {\n * // tap hold handler function code\n * }\n * scroll: function (e) {\n * // scroll handler function code\n * }\n * swipe: function (e) {\n * // swipe handler function code\n * }\n * });\n * ```\n */\nvar Touch = /** @class */ (function (_super) {\n __extends(Touch, _super);\n /* End-Properties */\n function Touch(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.touchAction = true;\n _this.tapCount = 0;\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.startEvent = function (evt) {\n if (_this.touchAction === true) {\n var point = _this.updateChangeTouches(evt);\n if (evt.changedTouches !== undefined) {\n _this.touchAction = false;\n }\n _this.isTouchMoved = false;\n _this.movedDirection = '';\n _this.startPoint = _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n _this.startEventData = point;\n _this.hScrollLocked = _this.vScrollLocked = false;\n _this.tStampStart = Date.now();\n _this.timeOutTapHold = setTimeout(function () { _this.tapHoldEvent(evt); }, _this.tapHoldThreshold);\n EventHandler.add(_this.element, Browser.touchMoveEvent, _this.moveEvent, _this);\n EventHandler.add(_this.element, Browser.touchEndEvent, _this.endEvent, _this);\n EventHandler.add(_this.element, Browser.touchCancelEvent, _this.cancelEvent, _this);\n }\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.moveEvent = function (evt) {\n var point = _this.updateChangeTouches(evt);\n _this.movedPoint = point;\n _this.isTouchMoved = !(point.clientX === _this.startPoint.clientX && point.clientY === _this.startPoint.clientY);\n var eScrollArgs = {};\n if (_this.isTouchMoved) {\n clearTimeout(_this.timeOutTapHold);\n _this.calcScrollPoints(evt);\n var scrollArg = {\n startEvents: _this.startEventData,\n originalEvent: evt, startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY, distanceX: _this.distanceX,\n distanceY: _this.distanceY, scrollDirection: _this.scrollDirection,\n velocity: _this.getVelocity(point)\n };\n eScrollArgs = extend(eScrollArgs, {}, scrollArg);\n _this.trigger('scroll', eScrollArgs);\n _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n }\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.cancelEvent = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n _this.tapCount = 0;\n _this.swipeFn(evt);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.endEvent = function (evt) {\n _this.swipeFn(evt);\n if (!_this.isTouchMoved) {\n if (typeof _this.tap === 'function') {\n _this.trigger('tap', { originalEvent: evt, tapCount: ++_this.tapCount });\n _this.timeOutTap = setTimeout(function () {\n _this.tapCount = 0;\n }, _this.tapThreshold);\n }\n }\n _this.modeclear();\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.swipeFn = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n var point = _this.updateChangeTouches(evt);\n var diffX = point.clientX - _this.startPoint.clientX;\n var diffY = point.clientY - _this.startPoint.clientY;\n diffX = Math.floor(diffX < 0 ? -1 * diffX : diffX);\n diffY = Math.floor(diffY < 0 ? -1 * diffY : diffX);\n _this.isTouchMoved = diffX > 1 || diffY > 1;\n var isFirefox = (/Firefox/).test(Browser.userAgent);\n if (isFirefox && point.clientX === 0 && point.clientY === 0 && evt.type === 'mouseup') {\n _this.isTouchMoved = false;\n }\n _this.endPoint = point;\n _this.calcPoints(evt);\n var swipeArgs = {\n originalEvent: evt,\n startEvents: _this.startEventData,\n startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY,\n distanceX: _this.distanceX, distanceY: _this.distanceY, swipeDirection: _this.movedDirection,\n velocity: _this.getVelocity(point)\n };\n if (_this.isTouchMoved) {\n var tDistance = _this.swipeSettings.swipeThresholdDistance;\n var eSwipeArgs = extend(undefined, _this.defaultArgs, swipeArgs);\n var canTrigger = false;\n var ele = _this.element;\n var scrollBool = _this.isScrollable(ele);\n var moved = swipeRegex.test(_this.movedDirection);\n if ((tDistance < _this.distanceX && !moved) || (tDistance < _this.distanceY && moved)) {\n if (!scrollBool) {\n canTrigger = true;\n }\n else {\n canTrigger = _this.checkSwipe(ele, moved);\n }\n }\n if (canTrigger) {\n _this.trigger('swipe', eSwipeArgs);\n }\n }\n _this.modeclear();\n };\n _this.modeclear = function () {\n _this.modeClear = setTimeout(function () {\n _this.touchAction = true;\n }, (typeof _this.tap !== 'function' ? 0 : 20));\n _this.lastTapTime = new Date().getTime();\n EventHandler.remove(_this.element, Browser.touchMoveEvent, _this.moveEvent);\n EventHandler.remove(_this.element, Browser.touchEndEvent, _this.endEvent);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n _this.bind();\n return _this;\n }\n // triggers when property changed\n /**\n *\n * @private\n * @param {TouchModel} newProp ?\n * @param {TouchModel} oldProp ?\n * @returns {void} ?\n */\n Touch.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Touch.prototype.bind = function () {\n this.wireEvents();\n if (Browser.isIE) {\n this.element.classList.add('e-block-touch');\n }\n };\n /**\n * To destroy the touch instance.\n *\n * @returns {void}\n */\n Touch.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n // Need to changes the event binding once we updated the event handler.\n Touch.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.touchStartEvent, this.startEvent, this);\n };\n Touch.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.startEvent);\n };\n /**\n * Returns module name as touch\n *\n * @returns {string} ?\n * @private\n */\n Touch.prototype.getModuleName = function () {\n return 'touch';\n };\n /**\n * Returns if the HTML element is Scrollable.\n *\n * @param {HTMLElement} element - HTML Element to check if Scrollable.\n * @returns {boolean} ?\n */\n Touch.prototype.isScrollable = function (element) {\n var eleStyle = getComputedStyle(element);\n var style = eleStyle.overflow + eleStyle.overflowX + eleStyle.overflowY;\n if ((/(auto|scroll)/).test(style)) {\n return true;\n }\n return false;\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n Touch.prototype.tapHoldEvent = function (evt) {\n this.tapCount = 0;\n this.touchAction = true;\n EventHandler.remove(this.element, Browser.touchMoveEvent, this.moveEvent);\n EventHandler.remove(this.element, Browser.touchEndEvent, this.endEvent);\n var eTapArgs = { originalEvent: evt };\n this.trigger('tapHold', eTapArgs);\n EventHandler.remove(this.element, Browser.touchCancelEvent, this.cancelEvent);\n };\n Touch.prototype.calcPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.startPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.startPoint.clientY)));\n if (this.distanceX > this.distanceY) {\n this.movedDirection = (point.clientX > this.startPoint.clientX) ? 'Right' : 'Left';\n }\n else {\n this.movedDirection = (point.clientY < this.startPoint.clientY) ? 'Up' : 'Down';\n }\n };\n Touch.prototype.calcScrollPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.lastMovedPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.lastMovedPoint.clientY)));\n if ((this.distanceX > this.distanceY || this.hScrollLocked === true) && this.vScrollLocked === false) {\n this.scrollDirection = (point.clientX > this.lastMovedPoint.clientX) ? 'Right' : 'Left';\n this.hScrollLocked = true;\n }\n else {\n this.scrollDirection = (point.clientY < this.lastMovedPoint.clientY) ? 'Up' : 'Down';\n this.vScrollLocked = true;\n }\n };\n Touch.prototype.getVelocity = function (pnt) {\n var newX = pnt.clientX;\n var newY = pnt.clientY;\n var newT = Date.now();\n var xDist = newX - this.startPoint.clientX;\n var yDist = newY - this.startPoint.clientX;\n var interval = newT - this.tStampStart;\n return Math.sqrt(xDist * xDist + yDist * yDist) / interval;\n };\n Touch.prototype.checkSwipe = function (ele, flag) {\n var keys = ['scroll', 'offset'];\n var temp = flag ? ['Height', 'Top'] : ['Width', 'Left'];\n if ((ele[keys[0] + temp[0]] <= ele[keys[1] + temp[0]])) {\n return true;\n }\n return (ele[keys[0] + temp[1]] === 0) ||\n (ele[keys[1] + temp[0]] + ele[keys[0] + temp[1]] >= ele[keys[0] + temp[0]]);\n };\n Touch.prototype.updateChangeTouches = function (evt) {\n var point = evt.changedTouches && evt.changedTouches.length !== 0 ? evt.changedTouches[0] : evt;\n return point;\n };\n __decorate([\n Event()\n ], Touch.prototype, \"tap\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"tapHold\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"swipe\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"scroll\", void 0);\n __decorate([\n Property(350)\n ], Touch.prototype, \"tapThreshold\", void 0);\n __decorate([\n Property(750)\n ], Touch.prototype, \"tapHoldThreshold\", void 0);\n __decorate([\n Complex({}, SwipeSettings)\n ], Touch.prototype, \"swipeSettings\", void 0);\n Touch = __decorate([\n NotifyPropertyChanges\n ], Touch);\n return Touch;\n}(Base));\nexport { Touch };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Template Engine\n */\nvar LINES = new RegExp('\\\\n|\\\\r|\\\\s\\\\s+', 'g');\nvar QUOTES = new RegExp(/'|\"/g);\nvar IF_STMT = new RegExp('if ?\\\\(');\nvar ELSEIF_STMT = new RegExp('else if ?\\\\(');\nvar ELSE_STMT = new RegExp('else');\nvar FOR_STMT = new RegExp('for ?\\\\(');\nvar IF_OR_FOR = new RegExp('(/if|/for)');\nvar CALL_FUNCTION = new RegExp('\\\\((.*)\\\\)', '');\nvar NOT_NUMBER = new RegExp('^[0-9]+$', 'g');\nvar WORD = new RegExp('[\\\\w\"\\'.\\\\s+]+', 'g');\nvar DBL_QUOTED_STR = new RegExp('\"(.*?)\"', 'g');\nvar WORDIF = new RegExp('[\\\\w\"\\'@#$.\\\\s-+]+', 'g');\nvar exp = new RegExp('\\\\${([^}]*)}', 'g');\n// let cachedTemplate: Object = {};\nvar ARR_OBJ = /^\\..*/gm;\nvar SINGLE_SLASH = /\\\\/gi;\nvar DOUBLE_SLASH = /\\\\\\\\/gi;\nvar WORDFUNC = new RegExp('[\\\\w\"\\'@#$.\\\\s+]+', 'g');\nvar WINDOWFUNC = /\\window\\./gm;\n/**\n * The function to set regular expression for template expression string.\n *\n * @param {RegExp} value - Value expression.\n * @returns {RegExp} ?\n * @private\n */\nexport function expression(value) {\n if (value) {\n exp = value;\n }\n return exp;\n}\n// /**\n// * To render the template string from the given data.\n// * @param {string} template - String Template.\n// * @param {Object[]|JSON} data - DataSource for the template.\n// * @param {Object} helper? - custom helper object.\n// */\n// export function template(template: string, data: JSON, helper?: Object): string {\n// let hash: string = hashCode(template);\n// let tmpl: Function;\n// if (!cachedTemplate[hash]) {\n// tmpl = cachedTemplate[hash] = compile(template, helper);\n// } else {\n// tmpl = cachedTemplate[hash];\n// }\n// return tmpl(data);\n// }\n/**\n * Compile the template string into template function.\n *\n * @param {string | Function} template - The template string which is going to convert.\n * @param {Object} helper - Helper functions as an object.\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n * @private\n */\nexport function compile(template, helper, ignorePrefix) {\n if (typeof template === 'function') {\n return template;\n }\n else {\n var argName = 'data';\n var evalExpResult = evalExp(template, argName, helper, ignorePrefix);\n var condtion = \"var valueRegEx = (/value=\\\\'([A-Za-z0-9 _]*)((.)([\\\\w)(!-;?-\\u25A0\\\\s]+)['])/g);\\n var hrefRegex = (/(?:href)([\\\\s='\\\"./]+)([\\\\w-./?=&\\\\\\\\#\\\"]+)((.)([\\\\w)(!-;/?-\\u25A0\\\\s]+)['])/g);\\n if(str.match(valueRegEx)){\\n var check = str.match(valueRegEx);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(valueRegEx)[i].split('value=')[1];\\n var change = check1.match(/^'/) !== null ? check1.replace(/^'/, '\\\"') : check1;\\n change =change.match(/.$/)[0] === '\\\\'' ? change.replace(/.$/,'\\\"') : change;\\n str1 = str1.replace(check1, change);\\n }\\n str = str.replace(str, str1);\\n }\\n else if (str.match(/(?:href='')/) === null) {\\n if(str.match(hrefRegex)) {\\n var check = str.match(hrefRegex);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(hrefRegex)[i].split('href=')[1];\\n if (check1) {\\n var change = check1.match(/^'/) !== null ? check1.replace(/^'/, '\\\"') : check1;\\n change =change.match(/.$/)[0] === '\\\\'' ? change.replace(/.$/,'\\\"') : change;\\n str1 = str1.replace(check1, change);\\n }\\n }\\n str = str.replace(str, str1);\\n }\\n }\\n \";\n var fnCode = 'var str=\"' + evalExpResult + '\";' + condtion + ' return str;';\n var fn = new Function(argName, fnCode);\n return fn.bind(helper);\n }\n}\n/** function used to evaluate the function expression\n *\n * @param {string} str ?\n * @param {string} nameSpace ?\n * @param {Object} helper ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction evalExp(str, nameSpace, helper, ignorePrefix) {\n var varCOunt = 0;\n /**\n * Variable containing Local Keys\n */\n var localKeys = [];\n var isClass = str.match(/class=\"([^\"]+|)\\s{2}/g);\n var singleSpace = '';\n if (isClass) {\n isClass.forEach(function (value) {\n singleSpace = value.replace(/\\s\\s+/g, ' ');\n str = str.replace(value, singleSpace);\n });\n }\n if (exp.test(str)) {\n var insideBraces = false;\n var outputString = '';\n for (var i = 0; i < str.length; i++) {\n if (str[i + ''] === '$' && str[i + 1] === '{') {\n insideBraces = true;\n }\n else if (str[i + ''] === '}') {\n insideBraces = false;\n }\n outputString += (str[i + ''] === '\"' && !insideBraces) ? '\\\\\"' : str[i + ''];\n }\n str = outputString;\n }\n else {\n str = str.replace(/\\\\?\"/g, '\\\\\"');\n }\n return str.replace(LINES, '').replace(DBL_QUOTED_STR, '\\'$1\\'').replace(exp, function (match, cnt, offset, matchStr) {\n var SPECIAL_CHAR = /@|#|\\$/gm;\n var matches = cnt.match(CALL_FUNCTION);\n // matches to detect any function calls\n if (matches) {\n var rlStr = matches[1];\n if (ELSEIF_STMT.test(cnt)) {\n //handling else-if condition\n cnt = '\";} ' + cnt.replace(matches[1], rlStr.replace(WORD, function (str) {\n str = str.trim();\n return addNameSpace(str, !(QUOTES.test(str)) && (localKeys.indexOf(str) === -1), nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n }\n else if (IF_STMT.test(cnt)) {\n //handling if condition\n cnt = '\"; ' + cnt.replace(matches[1], rlStr.replace(WORDIF, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n }\n else if (FOR_STMT.test(cnt)) {\n //handling for condition\n var rlStr_1 = matches[1].split(' of ');\n // replace for each into actual JavaScript\n cnt = '\"; ' + cnt.replace(matches[1], function (mtc) {\n localKeys.push(rlStr_1[0]);\n localKeys.push(rlStr_1[0] + 'Index');\n varCOunt = varCOunt + 1;\n return 'var i' + varCOunt + '=0; i' + varCOunt + ' < ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix) + '.length; i' + varCOunt + '++';\n }) + '{ \\n ' + rlStr_1[0] + '= ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix)\n + '[i' + varCOunt + ']; \\n var ' + rlStr_1[0] + 'Index=i' + varCOunt + '; \\n str = str + \"';\n }\n else {\n //helper function handling\n var fnStr = cnt.split('(');\n var fNameSpace = (helper && Object.prototype.hasOwnProperty.call(helper, fnStr[0]) ? 'this.' : 'global');\n fNameSpace = (/\\./.test(fnStr[0]) ? '' : fNameSpace);\n var ftArray = matches[1].split(',');\n if (matches[1].length !== 0 && !(/data/).test(ftArray[0]) && !(/window./).test(ftArray[0])) {\n matches[1] = (fNameSpace === 'global' ? nameSpace + '.' + matches[1] : matches[1]);\n }\n var splRegexp = /@|\\$|#/gm;\n var arrObj = /\\]\\./gm;\n if (WINDOWFUNC.test(cnt) && arrObj.test(cnt) || splRegexp.test(cnt)) {\n var splArrRegexp = /@|\\$|#|\\]\\./gm;\n if (splArrRegexp.test(cnt)) {\n cnt = '\"+ ' + (fNameSpace === 'global' ? '' : fNameSpace) + cnt.replace(matches[1], rlStr.replace(WORDFUNC, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '+ \"';\n }\n }\n else {\n cnt = '\" + ' + (fNameSpace === 'global' ? '' : fNameSpace) +\n cnt.replace(rlStr, addNameSpace(matches[1].replace(/,( |)data.|,/gi, ',' + nameSpace + '.').replace(/,( |)data.window/gi, ',window'), (fNameSpace === 'global' ? false : true), nameSpace, localKeys, ignorePrefix)) +\n '+\"';\n }\n }\n }\n else if (ELSE_STMT.test(cnt)) {\n // handling else condition\n cnt = '\"; ' + cnt.replace(ELSE_STMT, '} else { \\n str = str + \"');\n }\n else if (cnt.match(IF_OR_FOR)) {\n // close condition\n cnt = cnt.replace(IF_OR_FOR, '\"; \\n } \\n str = str + \"');\n }\n else if (SPECIAL_CHAR.test(cnt)) {\n // template string with double slash with special character\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n }\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // template string with double slash\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // evaluate normal expression\n cnt = cnt !== '' ? '\"+' + addNameSpace(cnt.replace(/,/gi, '+' + nameSpace + '.'), (localKeys.indexOf(cnt) === -1), nameSpace, localKeys, ignorePrefix) + '+\"' : '${}';\n }\n }\n return cnt;\n });\n}\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction addNameSpace(str, addNS, nameSpace, ignoreList, ignorePrefix) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1 && !ignorePrefix && str !== 'true' && str !== 'false') ? nameSpace + '.' + str : str);\n}\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @returns {string} ?\n */\nfunction NameSpaceArrObj(str, addNS, nameSpace, ignoreList) {\n var arrObjReg = /^\\..*/gm;\n return ((addNS && !(NOT_NUMBER.test(str)) &&\n ignoreList.indexOf(str.split('.')[0]) === -1 && !(arrObjReg.test(str))) ? nameSpace + '.' + str : str);\n}\n// // Create hashCode for template string to storeCached function\n// function hashCode(str: string): string {\n// return str.split('').reduce((a: number, b: string) => { a = ((a << 5) - a) + b.charCodeAt(0); return a & a; }, 0).toString();\n// }\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @returns {string} ?\n */\nfunction NameSpaceForspecialChar(str, addNS, nameSpace, ignoreList) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1) ? nameSpace + '[\"' + str : str);\n}\n/**\n * Replace double slashes to single slash.\n *\n * @param {string} tempStr ?\n * @returns {any} ?\n */\nfunction SlashReplace(tempStr) {\n var double = '\\\\\\\\';\n if (tempStr.match(DOUBLE_SLASH)) {\n return tempStr;\n }\n else {\n return tempStr.replace(SINGLE_SLASH, double);\n }\n}\n/**\n *\n * @param {string} str ?\n * @param {string} nameSpaceNew ?\n * @param {string[]} keys ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction HandleSpecialCharArrObj(str, nameSpaceNew, keys, ignorePrefix) {\n str = str.trim();\n var windowFunc = /\\window\\./gm;\n if (!windowFunc.test(str)) {\n var quotes = /'|\"/gm;\n var splRegexp = /@|\\$|#/gm;\n if (splRegexp.test(str)) {\n str = NameSpaceForspecialChar(str, (keys.indexOf(str) === -1), nameSpaceNew, keys) + '\"]';\n }\n if (ARR_OBJ.test(str)) {\n return NameSpaceArrObj(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys);\n }\n else {\n return addNameSpace(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys, ignorePrefix);\n }\n }\n else {\n return str;\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types */\n/**\n * Template Engine Bridge\n */\nimport { compile as render } from './template';\nimport { createElement } from './dom';\nimport { isNullOrUndefined, isBlazor } from './util';\nvar HAS_ROW = /^[\\n\\r.]+ 0) {\n elements.forEach(function (element) {\n detach(element);\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeJsEvents = function () {\n var elements = this.wrapElement.querySelectorAll('[' + jsEvents.join('],[') + ']');\n if (elements.length > 0) {\n elements.forEach(function (element) {\n jsEvents.forEach(function (attr) {\n if (element.hasAttribute(attr)) {\n element.removeAttribute(attr);\n }\n });\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeXssAttrs = function () {\n var _this = this;\n this.removeAttrs.forEach(function (item, index) {\n var elements = _this.wrapElement.querySelectorAll(item.selector);\n if (elements.length > 0) {\n if (item.selector === 'a[href]') {\n elements.forEach(function (element) {\n if ((element.getAttribute(item.attribute)).replace(/\\t|\\s|&/, '').indexOf('javascript:alert') !== -1) {\n element.removeAttribute(item.attribute);\n }\n });\n }\n else {\n elements.forEach(function (element) {\n element.removeAttribute(item.attribute);\n });\n }\n }\n });\n };\n return SanitizeHtmlHelper;\n}());\nexport { SanitizeHtmlHelper };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty, Browser, Complex, Collection } from '@syncfusion/ej2-base';\n/**\n * The `Connector` class configures the appearance and properties of connectors in chart controls.\n */\nvar Connector = /** @class */ (function (_super) {\n __extends(Connector, _super);\n function Connector() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Line')\n ], Connector.prototype, \"type\", void 0);\n __decorate([\n Property(null)\n ], Connector.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], Connector.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], Connector.prototype, \"length\", void 0);\n __decorate([\n Property('')\n ], Connector.prototype, \"dashArray\", void 0);\n return Connector;\n}(ChildProperty));\nexport { Connector };\n/**\n * Configures the location for the legend and tooltip in the chart.\n */\nvar Location = /** @class */ (function (_super) {\n __extends(Location, _super);\n function Location() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Location.prototype, \"x\", void 0);\n __decorate([\n Property(0)\n ], Location.prototype, \"y\", void 0);\n return Location;\n}(ChildProperty));\nexport { Location };\n/**\n * The `Font` class provides configuration options for customizing the fonts used in the charts.\n */\nvar Font = /** @class */ (function (_super) {\n __extends(Font, _super);\n function Font() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Normal')\n ], Font.prototype, \"fontStyle\", void 0);\n __decorate([\n Property('16px')\n ], Font.prototype, \"size\", void 0);\n __decorate([\n Property('Normal')\n ], Font.prototype, \"fontWeight\", void 0);\n __decorate([\n Property('')\n ], Font.prototype, \"color\", void 0);\n __decorate([\n Property('Center')\n ], Font.prototype, \"textAlignment\", void 0);\n __decorate([\n Property('Segoe UI')\n ], Font.prototype, \"fontFamily\", void 0);\n __decorate([\n Property(1)\n ], Font.prototype, \"opacity\", void 0);\n __decorate([\n Property('Wrap')\n ], Font.prototype, \"textOverflow\", void 0);\n return Font;\n}(ChildProperty));\nexport { Font };\n/**\n * Options to customize the center label of the Pie and Donut charts.\n *\n * @default {}\n */\nvar CenterLabel = /** @class */ (function (_super) {\n __extends(CenterLabel, _super);\n function CenterLabel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], CenterLabel.prototype, \"text\", void 0);\n __decorate([\n Complex({ fontFamily: null, size: '16px', fontStyle: 'Normal', fontWeight: '600', color: null }, Font)\n ], CenterLabel.prototype, \"textStyle\", void 0);\n __decorate([\n Property(null)\n ], CenterLabel.prototype, \"hoverTextFormat\", void 0);\n return CenterLabel;\n}(ChildProperty));\nexport { CenterLabel };\n/**\n * The `Border` class provides configuration options for setting the borders in a chart.\n */\nvar Border = /** @class */ (function (_super) {\n __extends(Border, _super);\n function Border() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Border.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], Border.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Border.prototype, \"dashArray\", void 0);\n return Border;\n}(ChildProperty));\nexport { Border };\n/**\n * The `Offset` class provides options to adjust the position of the marker relative to its default location.\n */\nvar Offset = /** @class */ (function (_super) {\n __extends(Offset, _super);\n function Offset() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Offset.prototype, \"x\", void 0);\n __decorate([\n Property(0)\n ], Offset.prototype, \"y\", void 0);\n return Offset;\n}(ChildProperty));\nexport { Offset };\n/**\n * The `Margin` class enables configuration of the space around the chart's content.\n */\nvar Margin = /** @class */ (function (_super) {\n __extends(Margin, _super);\n function Margin() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(Browser.isDevice ? 5 : 10)\n ], Margin.prototype, \"left\", void 0);\n __decorate([\n Property(Browser.isDevice ? 5 : 10)\n ], Margin.prototype, \"right\", void 0);\n __decorate([\n Property(Browser.isDevice ? 5 : 10)\n ], Margin.prototype, \"top\", void 0);\n __decorate([\n Property(Browser.isDevice ? 5 : 10)\n ], Margin.prototype, \"bottom\", void 0);\n return Margin;\n}(ChildProperty));\nexport { Margin };\n/**\n * Configures the animation behavior for the chart series.\n */\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], Animation.prototype, \"enable\", void 0);\n __decorate([\n Property(1000)\n ], Animation.prototype, \"duration\", void 0);\n __decorate([\n Property(0)\n ], Animation.prototype, \"delay\", void 0);\n return Animation;\n}(ChildProperty));\nexport { Animation };\nvar TooltipSettings = /** @class */ (function (_super) {\n __extends(TooltipSettings, _super);\n function TooltipSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], TooltipSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(true)\n ], TooltipSettings.prototype, \"enableMarker\", void 0);\n __decorate([\n Property(false)\n ], TooltipSettings.prototype, \"shared\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"header\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"opacity\", void 0);\n __decorate([\n Complex({ fontFamily: null, size: null, fontStyle: 'Normal', fontWeight: null, color: null }, Font)\n ], TooltipSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"template\", void 0);\n __decorate([\n Property(true)\n ], TooltipSettings.prototype, \"enableAnimation\", void 0);\n __decorate([\n Property(300)\n ], TooltipSettings.prototype, \"duration\", void 0);\n __decorate([\n Property(1000)\n ], TooltipSettings.prototype, \"fadeOutDuration\", void 0);\n __decorate([\n Property('Move')\n ], TooltipSettings.prototype, \"fadeOutMode\", void 0);\n __decorate([\n Property(false)\n ], TooltipSettings.prototype, \"enableTextWrap\", void 0);\n __decorate([\n Property(true)\n ], TooltipSettings.prototype, \"showNearestPoint\", void 0);\n __decorate([\n Complex({ color: null, width: null }, Border)\n ], TooltipSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ x: null, y: null }, Location)\n ], TooltipSettings.prototype, \"location\", void 0);\n return TooltipSettings;\n}(ChildProperty));\nexport { TooltipSettings };\n/**\n * This class configures the appearance and behavior of points with empty data in the series.\n */\nvar EmptyPointSettings = /** @class */ (function (_super) {\n __extends(EmptyPointSettings, _super);\n function EmptyPointSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], EmptyPointSettings.prototype, \"fill\", void 0);\n __decorate([\n Complex({ color: 'transparent', width: 0 }, Border)\n ], EmptyPointSettings.prototype, \"border\", void 0);\n __decorate([\n Property('Gap')\n ], EmptyPointSettings.prototype, \"mode\", void 0);\n return EmptyPointSettings;\n}(ChildProperty));\nexport { EmptyPointSettings };\n/**\n * Specifies the indexes for the series and data points.\n *\n * @public\n */\nvar Indexes = /** @class */ (function (_super) {\n __extends(Indexes, _super);\n function Indexes() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Indexes.prototype, \"series\", void 0);\n __decorate([\n Property(0)\n ], Indexes.prototype, \"point\", void 0);\n return Indexes;\n}(ChildProperty));\nexport { Indexes };\n/**\n * The `CornerRadius` class provides options to customize the rounding of the corners for columns in the column series.\n */\nvar CornerRadius = /** @class */ (function (_super) {\n __extends(CornerRadius, _super);\n function CornerRadius() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], CornerRadius.prototype, \"topLeft\", void 0);\n __decorate([\n Property(0)\n ], CornerRadius.prototype, \"topRight\", void 0);\n __decorate([\n Property(0)\n ], CornerRadius.prototype, \"bottomLeft\", void 0);\n __decorate([\n Property(0)\n ], CornerRadius.prototype, \"bottomRight\", void 0);\n return CornerRadius;\n}(ChildProperty));\nexport { CornerRadius };\n/**\n * Configures the padding around the chart legend container.\n */\nvar ContainerPadding = /** @class */ (function (_super) {\n __extends(ContainerPadding, _super);\n function ContainerPadding() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], ContainerPadding.prototype, \"left\", void 0);\n __decorate([\n Property(0)\n ], ContainerPadding.prototype, \"right\", void 0);\n __decorate([\n Property(0)\n ], ContainerPadding.prototype, \"top\", void 0);\n __decorate([\n Property(0)\n ], ContainerPadding.prototype, \"bottom\", void 0);\n return ContainerPadding;\n}(ChildProperty));\nexport { ContainerPadding };\n/**\n * Configures the borders of the chart title and subtitle.\n */\nvar titleBorder = /** @class */ (function (_super) {\n __extends(titleBorder, _super);\n function titleBorder() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('transparent')\n ], titleBorder.prototype, \"color\", void 0);\n __decorate([\n Property(0)\n ], titleBorder.prototype, \"width\", void 0);\n __decorate([\n Property(0.8)\n ], titleBorder.prototype, \"cornerRadius\", void 0);\n return titleBorder;\n}(ChildProperty));\nexport { titleBorder };\n/**\n * The `titleSettings` class provides options to customize the title and subtitle displayed in the chart.\n */\nvar titleSettings = /** @class */ (function (_super) {\n __extends(titleSettings, _super);\n function titleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Normal')\n ], titleSettings.prototype, \"fontStyle\", void 0);\n __decorate([\n Property('15px')\n ], titleSettings.prototype, \"size\", void 0);\n __decorate([\n Property('500')\n ], titleSettings.prototype, \"fontWeight\", void 0);\n __decorate([\n Property('')\n ], titleSettings.prototype, \"color\", void 0);\n __decorate([\n Property('Center')\n ], titleSettings.prototype, \"textAlignment\", void 0);\n __decorate([\n Property('Segoe UI')\n ], titleSettings.prototype, \"fontFamily\", void 0);\n __decorate([\n Property(1)\n ], titleSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('Wrap')\n ], titleSettings.prototype, \"textOverflow\", void 0);\n __decorate([\n Property('Top')\n ], titleSettings.prototype, \"position\", void 0);\n __decorate([\n Property(0)\n ], titleSettings.prototype, \"x\", void 0);\n __decorate([\n Property(0)\n ], titleSettings.prototype, \"y\", void 0);\n __decorate([\n Property('transparent')\n ], titleSettings.prototype, \"background\", void 0);\n __decorate([\n Complex({}, titleBorder)\n ], titleSettings.prototype, \"border\", void 0);\n return titleSettings;\n}(ChildProperty));\nexport { titleSettings };\n/**\n * The `ChartArea` class provides properties to customize the appearance and layout of the chart's display area.\n */\nvar ChartArea = /** @class */ (function (_super) {\n __extends(ChartArea, _super);\n function ChartArea() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({}, Border)\n ], ChartArea.prototype, \"border\", void 0);\n __decorate([\n Property('transparent')\n ], ChartArea.prototype, \"background\", void 0);\n __decorate([\n Property(1)\n ], ChartArea.prototype, \"opacity\", void 0);\n __decorate([\n Property(null)\n ], ChartArea.prototype, \"backgroundImage\", void 0);\n __decorate([\n Property(null)\n ], ChartArea.prototype, \"width\", void 0);\n return ChartArea;\n}(ChildProperty));\nexport { ChartArea };\n/**\n * Configures the drag settings for series in the chart.\n */\nvar DragSettings = /** @class */ (function (_super) {\n __extends(DragSettings, _super);\n function DragSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], DragSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(null)\n ], DragSettings.prototype, \"minY\", void 0);\n __decorate([\n Property(null)\n ], DragSettings.prototype, \"maxY\", void 0);\n __decorate([\n Property(null)\n ], DragSettings.prototype, \"fill\", void 0);\n return DragSettings;\n}(ChildProperty));\nexport { DragSettings };\n/**\n * Configures the button settings in period selector.\n */\nvar Periods = /** @class */ (function (_super) {\n __extends(Periods, _super);\n function Periods() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Years')\n ], Periods.prototype, \"intervalType\", void 0);\n __decorate([\n Property(1)\n ], Periods.prototype, \"interval\", void 0);\n __decorate([\n Property(null)\n ], Periods.prototype, \"text\", void 0);\n __decorate([\n Property(false)\n ], Periods.prototype, \"selected\", void 0);\n return Periods;\n}(ChildProperty));\nexport { Periods };\n/**\n * Configures the period selector settings.\n */\nvar PeriodSelectorSettings = /** @class */ (function (_super) {\n __extends(PeriodSelectorSettings, _super);\n function PeriodSelectorSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(43)\n ], PeriodSelectorSettings.prototype, \"height\", void 0);\n __decorate([\n Property('Bottom')\n ], PeriodSelectorSettings.prototype, \"position\", void 0);\n __decorate([\n Collection([], Periods)\n ], PeriodSelectorSettings.prototype, \"periods\", void 0);\n return PeriodSelectorSettings;\n}(ChildProperty));\nexport { PeriodSelectorSettings };\nvar StockTooltipSettings = /** @class */ (function (_super) {\n __extends(StockTooltipSettings, _super);\n function StockTooltipSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], StockTooltipSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(true)\n ], StockTooltipSettings.prototype, \"enableMarker\", void 0);\n __decorate([\n Property(false)\n ], StockTooltipSettings.prototype, \"shared\", void 0);\n __decorate([\n Property(null)\n ], StockTooltipSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(null)\n ], StockTooltipSettings.prototype, \"header\", void 0);\n __decorate([\n Property(0.75)\n ], StockTooltipSettings.prototype, \"opacity\", void 0);\n __decorate([\n Complex({ fontFamily: null, size: '12px', fontStyle: 'Normal', fontWeight: null, color: null }, Font)\n ], StockTooltipSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property(null)\n ], StockTooltipSettings.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], StockTooltipSettings.prototype, \"template\", void 0);\n __decorate([\n Property(true)\n ], StockTooltipSettings.prototype, \"enableAnimation\", void 0);\n __decorate([\n Property(300)\n ], StockTooltipSettings.prototype, \"duration\", void 0);\n __decorate([\n Property(1000)\n ], StockTooltipSettings.prototype, \"fadeOutDuration\", void 0);\n __decorate([\n Property('Move')\n ], StockTooltipSettings.prototype, \"fadeOutMode\", void 0);\n __decorate([\n Property(false)\n ], StockTooltipSettings.prototype, \"enableTextWrap\", void 0);\n __decorate([\n Property(true)\n ], StockTooltipSettings.prototype, \"showNearestPoint\", void 0);\n __decorate([\n Complex({ color: null, width: null }, Border)\n ], StockTooltipSettings.prototype, \"border\", void 0);\n __decorate([\n Property('Fixed')\n ], StockTooltipSettings.prototype, \"position\", void 0);\n return StockTooltipSettings;\n}(ChildProperty));\nexport { StockTooltipSettings };\n/**\n * @private\n */\nvar Index = /** @class */ (function () {\n function Index(seriesIndex, pointIndex) {\n this.series = seriesIndex;\n this.point = pointIndex;\n }\n return Index;\n}());\nexport { Index };\n","/* eslint-disable valid-jsdoc */\n/* eslint-disable security/detect-object-injection */\nimport { DataUtil } from './util';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Query class is used to build query which is used by the DataManager to communicate with datasource.\n */\nvar Query = /** @class */ (function () {\n /**\n * Constructor for Query class.\n *\n * @param {string|string[]} from?\n * @param from\n * @hidden\n */\n function Query(from) {\n /** @hidden */\n this.subQuery = null;\n /** @hidden */\n this.isChild = false;\n /** @hidden */\n this.distincts = [];\n this.queries = [];\n this.key = '';\n this.fKey = '';\n if (typeof from === 'string') {\n this.fromTable = from;\n }\n else if (from && from instanceof Array) {\n this.lookups = from;\n }\n this.expands = [];\n this.sortedColumns = [];\n this.groupedColumns = [];\n this.subQuery = null;\n this.isChild = false;\n this.params = [];\n this.lazyLoad = [];\n return this;\n }\n Object.defineProperty(Query.prototype, \"moduleName\", {\n /** @hidden */\n get: function () { return 'query'; },\n enumerable: true,\n configurable: true\n });\n ;\n /**\n * Sets the primary key.\n *\n * @param {string} field - Defines the column field.\n */\n Query.prototype.setKey = function (field) {\n this.key = field;\n return this;\n };\n /**\n * Sets default DataManager to execute query.\n *\n * @param {DataManager} dataManager - Defines the DataManager.\n */\n Query.prototype.using = function (dataManager) {\n this.dataManager = dataManager;\n return this;\n };\n /**\n * Executes query with the given DataManager.\n *\n * @param {DataManager} dataManager - Defines the DataManager.\n * @param {Function} done - Defines the success callback.\n * @param {Function} fail - Defines the failure callback.\n * @param {Function} always - Defines the callback which will be invoked on either success or failure.\n *\n *
\n     * let dataManager: DataManager = new DataManager([{ ID: '10' }, { ID: '2' }, { ID: '1' }, { ID: '20' }]);\n     * let query: Query = new Query();\n     * query.sortBy('ID', (x: string, y: string): number => { return parseInt(x, 10) - parseInt(y, 10) });\n     * let promise: Promise< Object > = query.execute(dataManager);\n     * promise.then((e: { result: Object }) => { });\n     * 
\n */\n Query.prototype.execute = function (dataManager, done, fail, always) {\n dataManager = dataManager || this.dataManager;\n if (dataManager) {\n return dataManager.executeQuery(this, done, fail, always);\n }\n return DataUtil.throwError('Query - execute() : dataManager needs to be is set using \"using\" function or should be passed as argument');\n };\n /**\n * Executes query with the local datasource.\n *\n * @param {DataManager} dataManager - Defines the DataManager.\n */\n Query.prototype.executeLocal = function (dataManager) {\n dataManager = dataManager || this.dataManager;\n if (dataManager) {\n return dataManager.executeLocal(this);\n }\n return DataUtil.throwError('Query - executeLocal() : dataManager needs to be is set using \"using\" function or should be passed as argument');\n };\n /**\n * Creates deep copy of the Query object.\n */\n Query.prototype.clone = function () {\n var cloned = new Query();\n cloned.queries = this.queries.slice(0);\n cloned.key = this.key;\n cloned.isChild = this.isChild;\n cloned.dataManager = this.dataManager;\n cloned.fromTable = this.fromTable;\n cloned.params = this.params.slice(0);\n cloned.expands = this.expands.slice(0);\n cloned.sortedColumns = this.sortedColumns.slice(0);\n cloned.groupedColumns = this.groupedColumns.slice(0);\n cloned.subQuerySelector = this.subQuerySelector;\n cloned.subQuery = this.subQuery;\n cloned.fKey = this.fKey;\n cloned.isCountRequired = this.isCountRequired;\n cloned.distincts = this.distincts.slice(0);\n cloned.lazyLoad = this.lazyLoad.slice(0);\n return cloned;\n };\n /**\n * Specifies the name of table to retrieve data in query execution.\n *\n * @param {string} tableName - Defines the table name.\n */\n Query.prototype.from = function (tableName) {\n this.fromTable = tableName;\n return this;\n };\n /**\n * Adds additional parameter which will be sent along with the request which will be generated while DataManager execute.\n *\n * @param {string} key - Defines the key of additional parameter.\n * @param {Function|string} value - Defines the value for the key.\n */\n Query.prototype.addParams = function (key, value) {\n if (typeof value === 'function') {\n this.params.push({ key: key, fn: value });\n }\n else {\n this.params.push({ key: key, value: value });\n }\n return this;\n };\n /**\n * @param fields\n * @hidden\n */\n Query.prototype.distinct = function (fields) {\n if (typeof fields === 'string') {\n this.distincts = [].slice.call([fields], 0);\n }\n else {\n this.distincts = fields.slice(0);\n }\n return this;\n };\n /**\n * Expands the related table.\n *\n * @param {string|Object[]} tables\n */\n Query.prototype.expand = function (tables) {\n if (typeof tables === 'string') {\n this.expands = [].slice.call([tables], 0);\n }\n else {\n this.expands = tables.slice(0);\n }\n return this;\n };\n /**\n * Filter data with given filter criteria.\n *\n * @param {string|Predicate} fieldName - Defines the column field or Predicate.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string|number|boolean} value - Defines the values to match with data.\n * @param {boolean} ignoreCase - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreAccent\n * @param matchCase\n */\n Query.prototype.where = function (fieldName, operator, value, ignoreCase, ignoreAccent, matchCase) {\n operator = operator ? (operator).toLowerCase() : null;\n var predicate = null;\n if (typeof fieldName === 'string') {\n predicate = new Predicate(fieldName, operator, value, ignoreCase, ignoreAccent, matchCase);\n }\n else if (fieldName instanceof Predicate) {\n predicate = fieldName;\n }\n this.queries.push({\n fn: 'onWhere',\n e: predicate\n });\n return this;\n };\n /**\n * Search data with given search criteria.\n *\n * @param {string|number|boolean} searchKey - Defines the search key.\n * @param {string|string[]} fieldNames - Defines the collection of column fields.\n * @param {string} operator - Defines the operator how to search data.\n * @param {boolean} ignoreCase - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreAccent\n */\n Query.prototype.search = function (searchKey, fieldNames, operator, ignoreCase, ignoreAccent) {\n if (typeof fieldNames === 'string') {\n fieldNames = [fieldNames];\n }\n if (!operator || operator === 'none') {\n operator = 'contains';\n }\n var comparer = DataUtil.fnOperators[operator];\n this.queries.push({\n fn: 'onSearch',\n e: {\n fieldNames: fieldNames,\n operator: operator,\n searchKey: searchKey,\n ignoreCase: ignoreCase,\n ignoreAccent: ignoreAccent,\n comparer: comparer\n }\n });\n return this;\n };\n /**\n * Sort the data with given sort criteria.\n * By default, sort direction is ascending.\n *\n * @param {string|string[]} fieldName - Defines the single or collection of column fields.\n * @param {string|Function} comparer - Defines the sort direction or custom sort comparer function.\n * @param isFromGroup\n */\n Query.prototype.sortBy = function (fieldName, comparer, isFromGroup) {\n return this.sortByForeignKey(fieldName, comparer, isFromGroup);\n };\n /**\n * Sort the data with given sort criteria.\n * By default, sort direction is ascending.\n *\n * @param {string|string[]} fieldName - Defines the single or collection of column fields.\n * @param {string|Function} comparer - Defines the sort direction or custom sort comparer function.\n * @param isFromGroup\n * @param {string} direction - Defines the sort direction .\n */\n Query.prototype.sortByForeignKey = function (fieldName, comparer, isFromGroup, direction) {\n var order = !isNullOrUndefined(direction) ? direction : 'ascending';\n var sorts;\n var temp;\n if (typeof fieldName === 'string' && DataUtil.endsWith(fieldName.toLowerCase(), ' desc')) {\n fieldName = fieldName.replace(/ desc$/i, '');\n comparer = 'descending';\n }\n if (!comparer || typeof comparer === 'string') {\n order = comparer ? comparer.toLowerCase() : 'ascending';\n comparer = DataUtil.fnSort(comparer);\n }\n if (isFromGroup) {\n sorts = Query.filterQueries(this.queries, 'onSortBy');\n for (var i = 0; i < sorts.length; i++) {\n temp = sorts[i].e.fieldName;\n if (typeof temp === 'string') {\n if (temp === fieldName) {\n return this;\n }\n }\n else if (temp instanceof Array) {\n for (var j = 0; j < temp.length; j++) {\n if (temp[j] === fieldName || fieldName.toLowerCase() === temp[j] + ' desc') {\n return this;\n }\n }\n }\n }\n }\n this.queries.push({\n fn: 'onSortBy',\n e: {\n fieldName: fieldName,\n comparer: comparer,\n direction: order\n }\n });\n return this;\n };\n /**\n * Sorts data in descending order.\n *\n * @param {string} fieldName - Defines the column field.\n */\n Query.prototype.sortByDesc = function (fieldName) {\n return this.sortBy(fieldName, 'descending');\n };\n /**\n * Groups data with the given field name.\n *\n * @param {string} fieldName - Defines the column field.\n * @param fn\n * @param format\n */\n Query.prototype.group = function (fieldName, fn, format) {\n this.sortBy(fieldName, null, true);\n this.queries.push({\n fn: 'onGroup',\n e: {\n fieldName: fieldName,\n comparer: fn ? fn : null,\n format: format ? format : null\n }\n });\n return this;\n };\n /**\n * Gets data based on the given page index and size.\n *\n * @param {number} pageIndex - Defines the current page index.\n * @param {number} pageSize - Defines the no of records per page.\n */\n Query.prototype.page = function (pageIndex, pageSize) {\n this.queries.push({\n fn: 'onPage',\n e: {\n pageIndex: pageIndex,\n pageSize: pageSize\n }\n });\n return this;\n };\n /**\n * Gets data based on the given start and end index.\n *\n * @param {number} start - Defines the start index of the datasource.\n * @param {number} end - Defines the end index of the datasource.\n */\n Query.prototype.range = function (start, end) {\n this.queries.push({\n fn: 'onRange',\n e: {\n start: start,\n end: end\n }\n });\n return this;\n };\n /**\n * Gets data from the top of the data source based on given number of records count.\n *\n * @param {number} nos - Defines the no of records to retrieve from datasource.\n */\n Query.prototype.take = function (nos) {\n this.queries.push({\n fn: 'onTake',\n e: {\n nos: nos\n }\n });\n return this;\n };\n /**\n * Skips data with given number of records count from the top of the data source.\n *\n * @param {number} nos - Defines the no of records skip in the datasource.\n */\n Query.prototype.skip = function (nos) {\n this.queries.push({\n fn: 'onSkip',\n e: { nos: nos }\n });\n return this;\n };\n /**\n * Selects specified columns from the data source.\n *\n * @param {string|string[]} fieldNames - Defines the collection of column fields.\n */\n Query.prototype.select = function (fieldNames) {\n if (typeof fieldNames === 'string') {\n fieldNames = [].slice.call([fieldNames], 0);\n }\n this.queries.push({\n fn: 'onSelect',\n e: { fieldNames: fieldNames }\n });\n return this;\n };\n /**\n * Gets the records in hierarchical relationship from two tables. It requires the foreign key to relate two tables.\n *\n * @param {Query} query - Defines the query to relate two tables.\n * @param {Function} selectorFn - Defines the custom function to select records.\n */\n Query.prototype.hierarchy = function (query, selectorFn) {\n this.subQuerySelector = selectorFn;\n this.subQuery = query;\n return this;\n };\n /**\n * Sets the foreign key which is used to get data from the related table.\n *\n * @param {string} key - Defines the foreign key.\n */\n Query.prototype.foreignKey = function (key) {\n this.fKey = key;\n return this;\n };\n /**\n * It is used to get total number of records in the DataManager execution result.\n */\n Query.prototype.requiresCount = function () {\n this.isCountRequired = true;\n return this;\n };\n //type - sum, avg, min, max\n /**\n * Aggregate the data with given type and field name.\n *\n * @param {string} type - Defines the aggregate type.\n * @param {string} field - Defines the column field to aggregate.\n */\n Query.prototype.aggregate = function (type, field) {\n this.queries.push({\n fn: 'onAggregates',\n e: { field: field, type: type }\n });\n return this;\n };\n /**\n * Pass array of filterColumn query for performing filter operation.\n *\n * @param {QueryOptions[]} queries\n * @param {string} name\n * @hidden\n */\n Query.filterQueries = function (queries, name) {\n return queries.filter(function (q) {\n return q.fn === name;\n });\n };\n /**\n * To get the list of queries which is already filtered in current data source.\n *\n * @param {Object[]} queries\n * @param {string[]} singles\n * @hidden\n */\n Query.filterQueryLists = function (queries, singles) {\n var filtered = queries.filter(function (q) {\n return singles.indexOf(q.fn) !== -1;\n });\n var res = {};\n for (var i = 0; i < filtered.length; i++) {\n if (!res[filtered[i].fn]) {\n res[filtered[i].fn] = filtered[i].e;\n }\n }\n return res;\n };\n return Query;\n}());\nexport { Query };\n/**\n * Predicate class is used to generate complex filter criteria.\n * This will be used by DataManager to perform multiple filtering operation.\n */\nvar Predicate = /** @class */ (function () {\n /**\n * Constructor for Predicate class.\n *\n * @param {string|Predicate} field\n * @param {string} operator\n * @param {string|number|boolean|Predicate|Predicate[]} value\n * @param {boolean=false} ignoreCase\n * @param ignoreAccent\n * @param {boolean} matchCase\n * @hidden\n */\n function Predicate(field, operator, value, ignoreCase, ignoreAccent, matchCase) {\n if (ignoreCase === void 0) { ignoreCase = false; }\n /** @hidden */\n this.ignoreAccent = false;\n /** @hidden */\n this.isComplex = false;\n if (typeof field === 'string') {\n this.field = field;\n this.operator = operator.toLowerCase();\n this.value = value;\n this.matchCase = matchCase;\n this.ignoreCase = ignoreCase;\n this.ignoreAccent = ignoreAccent;\n this.isComplex = false;\n this.comparer = DataUtil.fnOperators.processOperator(this.operator);\n }\n else if (field instanceof Predicate && value instanceof Predicate || value instanceof Array) {\n this.isComplex = true;\n this.condition = operator.toLowerCase();\n this.predicates = [field];\n this.matchCase = field.matchCase;\n this.ignoreCase = field.ignoreCase;\n this.ignoreAccent = field.ignoreAccent;\n if (value instanceof Array) {\n [].push.apply(this.predicates, value);\n }\n else {\n this.predicates.push(value);\n }\n }\n return this;\n }\n /**\n * Adds n-number of new predicates on existing predicate with “and” condition.\n *\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.and = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'and');\n };\n /**\n * Adds new predicate on existing predicate with “and” condition.\n *\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreCase\n * @param ignoreAccent\n */\n Predicate.prototype.and = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'and', ignoreCase, ignoreAccent);\n };\n /**\n * Adds n-number of new predicates on existing predicate with “or” condition.\n *\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.or = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'or');\n };\n /**\n * Adds new predicate on existing predicate with “or” condition.\n *\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreCase\n * @param ignoreAccent\n */\n Predicate.prototype.or = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'or', ignoreCase, ignoreAccent);\n };\n /**\n * Adds n-number of new predicates on existing predicate with “and not” condition.\n *\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.ornot = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'or not');\n };\n /**\n * Adds new predicate on existing predicate with “and not” condition.\n *\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreCase\n * @param ignoreAccent\n */\n Predicate.prototype.ornot = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'ornot', ignoreCase, ignoreAccent);\n };\n /**\n * Adds n-number of new predicates on existing predicate with “and not” condition.\n *\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.andnot = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'and not');\n };\n /**\n * Adds new predicate on existing predicate with “and not” condition.\n *\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreCase\n * @param ignoreAccent\n */\n Predicate.prototype.andnot = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'andnot', ignoreCase, ignoreAccent);\n };\n /**\n * Converts plain JavaScript object to Predicate object.\n *\n * @param {Predicate[]|Predicate} json - Defines single or collection of Predicate.\n */\n Predicate.fromJson = function (json) {\n if (json instanceof Array) {\n var res = [];\n for (var i = 0, len = json.length; i < len; i++) {\n res.push(this.fromJSONData(json[i]));\n }\n return res;\n }\n var pred = json;\n return this.fromJSONData(pred);\n };\n /**\n * Validate the record based on the predicates.\n *\n * @param {Object} record - Defines the datasource record.\n */\n Predicate.prototype.validate = function (record) {\n var predicate = this.predicates ? this.predicates : [];\n var ret;\n var isAnd;\n if (!this.isComplex && this.comparer) {\n if (this.condition && this.condition.indexOf('not') !== -1) {\n this.condition = this.condition.split('not')[0] === '' ? undefined : this.condition.split('not')[0];\n return !this.comparer.call(this, DataUtil.getObject(this.field, record), this.value, this.ignoreCase, this.ignoreAccent);\n }\n else {\n return this.comparer.call(this, DataUtil.getObject(this.field, record), this.value, this.ignoreCase, this.ignoreAccent);\n }\n }\n if (this.condition && this.condition.indexOf('not') !== -1) {\n isAnd = this.condition.indexOf('and') !== -1;\n }\n else {\n isAnd = this.condition === 'and';\n }\n for (var i = 0; i < predicate.length; i++) {\n if (i > 0 && this.condition && this.condition.indexOf('not') !== -1) {\n predicate[i].condition = predicate[i].condition ? predicate[i].condition + 'not' : 'not';\n }\n ret = predicate[i].validate(record);\n if (isAnd) {\n if (!ret) {\n return false;\n }\n }\n else {\n if (ret) {\n return true;\n }\n }\n }\n return isAnd;\n };\n /**\n * Converts predicates to plain JavaScript.\n * This method is uses Json stringify when serializing Predicate object.\n */\n Predicate.prototype.toJson = function () {\n var predicates;\n var p;\n if (this.isComplex) {\n predicates = [];\n p = this.predicates;\n for (var i = 0; i < p.length; i++) {\n predicates.push(p[i].toJson());\n }\n }\n return {\n isComplex: this.isComplex,\n field: this.field,\n operator: this.operator,\n value: this.value,\n ignoreCase: this.ignoreCase,\n ignoreAccent: this.ignoreAccent,\n condition: this.condition,\n predicates: predicates,\n matchCase: this.matchCase\n };\n };\n Predicate.combinePredicates = function (predicates, operator) {\n if (predicates.length === 1) {\n if (!(predicates[0] instanceof Array)) {\n return predicates[0];\n }\n predicates = predicates[0];\n }\n return new Predicate(predicates[0], operator, predicates.slice(1));\n };\n Predicate.combine = function (pred, field, operator, value, condition, ignoreCase, ignoreAccent) {\n if (field instanceof Predicate) {\n return Predicate[condition](pred, field);\n }\n if (typeof field === 'string') {\n return Predicate[condition](pred, new Predicate(field, operator, value, ignoreCase, ignoreAccent));\n }\n return DataUtil.throwError('Predicate - ' + condition + ' : invalid arguments');\n };\n Predicate.fromJSONData = function (json) {\n var preds = json.predicates || [];\n var len = preds.length;\n var predicates = [];\n var result;\n for (var i = 0; i < len; i++) {\n predicates.push(this.fromJSONData(preds[i]));\n }\n if (!json.isComplex) {\n result = new Predicate(json.field, json.operator, json.value, json.ignoreCase, json.ignoreAccent);\n }\n else {\n result = new Predicate(predicates[0], json.condition, predicates.slice(1));\n }\n return result;\n };\n return Predicate;\n}());\nexport { Predicate };\n","/* eslint-disable valid-jsdoc */\n/* eslint-disable security/detect-object-injection */\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataManager } from './manager';\nimport { Query, Predicate } from './query';\nvar consts = { GroupGuid: '{271bbba0-1ee7}' };\n/**\n * Data manager common utility methods.\n *\n * @hidden\n */\nvar DataUtil = /** @class */ (function () {\n function DataUtil() {\n }\n /**\n * Returns the value by invoking the provided parameter function.\n * If the paramater is not of type function then it will be returned as it is.\n *\n * @param {Function|string|string[]|number} value\n * @param {Object} inst?\n * @param inst\n * @hidden\n */\n DataUtil.getValue = function (value, inst) {\n if (typeof value === 'function') {\n return value.call(inst || {});\n }\n return value;\n };\n /**\n * Returns true if the input string ends with given string.\n *\n * @param {string} input\n * @param {string} substr\n */\n DataUtil.endsWith = function (input, substr) {\n return input.slice && input.slice(-substr.length) === substr;\n };\n /**\n * Returns true if the input string not ends with given string.\n *\n * @param {string} input\n * @param {string} substr\n */\n DataUtil.notEndsWith = function (input, substr) {\n return input.slice && input.slice(-substr.length) !== substr;\n };\n /**\n * Returns true if the input string starts with given string.\n *\n * @param {string} str\n * @param {string} startstr\n * @param input\n * @param start\n */\n DataUtil.startsWith = function (input, start) {\n return input.slice(0, start.length) === start;\n };\n /**\n * Returns true if the input string not starts with given string.\n *\n * @param {string} str\n * @param {string} startstr\n * @param input\n * @param start\n */\n DataUtil.notStartsWith = function (input, start) {\n return input.slice(0, start.length) !== start;\n };\n /**\n * Returns true if the input string pattern(wildcard) matches with given string.\n *\n * @param {string} str\n * @param {string} startstr\n * @param input\n * @param pattern\n */\n DataUtil.wildCard = function (input, pattern) {\n var asteriskSplit;\n var optionalSplit;\n // special character allowed search\n if (pattern.indexOf('[') !== -1) {\n pattern = pattern.split('[').join('[[]');\n }\n if (pattern.indexOf('(') !== -1) {\n pattern = pattern.split('(').join('[(]');\n }\n if (pattern.indexOf(')') !== -1) {\n pattern = pattern.split(')').join('[)]');\n }\n if (pattern.indexOf('\\\\') !== -1) {\n pattern = pattern.split('\\\\').join('[\\\\\\\\]');\n }\n if (pattern.indexOf('*') !== -1) {\n if (pattern.charAt(0) !== '*') {\n pattern = '^' + pattern;\n }\n if (pattern.charAt(pattern.length - 1) !== '*') {\n pattern = pattern + '$';\n }\n asteriskSplit = pattern.split('*');\n for (var i = 0; i < asteriskSplit.length; i++) {\n if (asteriskSplit[i].indexOf('.') === -1) {\n asteriskSplit[i] = asteriskSplit[i] + '.*';\n }\n else {\n asteriskSplit[i] = asteriskSplit[i] + '*';\n }\n }\n pattern = asteriskSplit.join('');\n }\n if (pattern.indexOf('%3f') !== -1 || pattern.indexOf('?') !== -1) {\n optionalSplit = pattern.indexOf('%3f') !== -1 ? pattern.split('%3f') : pattern.split('?');\n pattern = optionalSplit.join('.');\n }\n // eslint-disable-next-line security/detect-non-literal-regexp\n var regexPattern = new RegExp(pattern, 'g');\n return regexPattern.test(input);\n };\n /**\n * Returns true if the input string pattern(like) matches with given string.\n *\n * @param {string} str\n * @param {string} startstr\n * @param input\n * @param pattern\n */\n DataUtil.like = function (input, pattern) {\n if (pattern.indexOf('%') !== -1) {\n if (pattern.charAt(0) === '%' && pattern.lastIndexOf('%') < 2) {\n pattern = pattern.substring(1, pattern.length);\n return DataUtil.startsWith(DataUtil.toLowerCase(input), DataUtil.toLowerCase(pattern));\n }\n else if (pattern.charAt(pattern.length - 1) === '%' && pattern.indexOf('%') > pattern.length - 3) {\n pattern = pattern.substring(0, pattern.length - 1);\n return DataUtil.endsWith(DataUtil.toLowerCase(input), DataUtil.toLowerCase(pattern));\n }\n else if (pattern.lastIndexOf('%') !== pattern.indexOf('%') && pattern.lastIndexOf('%') > pattern.indexOf('%') + 1) {\n pattern = pattern.substring(pattern.indexOf('%') + 1, pattern.lastIndexOf('%'));\n return input.indexOf(pattern) !== -1;\n }\n else {\n return input.indexOf(pattern) !== -1;\n }\n }\n else {\n return false;\n }\n };\n /**\n * To return the sorting function based on the string.\n *\n * @param {string} order\n * @hidden\n */\n DataUtil.fnSort = function (order) {\n order = order ? DataUtil.toLowerCase(order) : 'ascending';\n if (order === 'ascending') {\n return this.fnAscending;\n }\n return this.fnDescending;\n };\n /**\n * Comparer function which is used to sort the data in ascending order.\n *\n * @param {string|number} x\n * @param {string|number} y\n * @returns number\n */\n DataUtil.fnAscending = function (x, y) {\n if (isNullOrUndefined(x) && isNullOrUndefined(y)) {\n return -1;\n }\n if (y === null || y === undefined) {\n return -1;\n }\n if (typeof x === 'string') {\n return x.localeCompare(y);\n }\n if (x === null || x === undefined) {\n return 1;\n }\n return x - y;\n };\n /**\n * Comparer function which is used to sort the data in descending order.\n *\n * @param {string|number} x\n * @param {string|number} y\n * @returns number\n */\n DataUtil.fnDescending = function (x, y) {\n if (isNullOrUndefined(x) && isNullOrUndefined(y)) {\n return -1;\n }\n if (y === null || y === undefined) {\n return 1;\n }\n if (typeof x === 'string') {\n return x.localeCompare(y) * -1;\n }\n if (x === null || x === undefined) {\n return -1;\n }\n return y - x;\n };\n DataUtil.extractFields = function (obj, fields) {\n var newObj = {};\n for (var i = 0; i < fields.length; i++) {\n newObj = this.setValue(fields[i], this.getObject(fields[i], obj), newObj);\n }\n return newObj;\n };\n /**\n * Select objects by given fields from jsonArray.\n *\n * @param {Object[]} jsonArray\n * @param {string[]} fields\n */\n DataUtil.select = function (jsonArray, fields) {\n var newData = [];\n for (var i = 0; i < jsonArray.length; i++) {\n newData.push(this.extractFields(jsonArray[i], fields));\n }\n return newData;\n };\n /**\n * Group the input data based on the field name.\n * It also performs aggregation of the grouped records based on the aggregates paramater.\n *\n * @param {Object[]} jsonArray\n * @param {string} field?\n * @param {Object[]} agg?\n * @param {number} level?\n * @param {Object[]} groupDs?\n * @param field\n * @param aggregates\n * @param level\n * @param groupDs\n * @param format\n * @param isLazyLoad\n */\n DataUtil.group = function (jsonArray, field, aggregates, level, groupDs, format, isLazyLoad) {\n level = level || 1;\n var jsonData = jsonArray;\n var guid = 'GroupGuid';\n if (jsonData.GroupGuid === consts[guid]) {\n var _loop_1 = function (j) {\n if (!isNullOrUndefined(groupDs)) {\n var indx = -1;\n var temp = groupDs.filter(function (e) { return e.key === jsonData[j].key; });\n indx = groupDs.indexOf(temp[0]);\n jsonData[j].items = this_1.group(jsonData[j].items, field, aggregates, jsonData.level + 1, groupDs[indx].items, format, isLazyLoad);\n jsonData[j].count = groupDs[indx].count;\n }\n else {\n jsonData[j].items = this_1.group(jsonData[j].items, field, aggregates, jsonData.level + 1, null, format, isLazyLoad);\n jsonData[j].count = jsonData[j].items.length;\n }\n };\n var this_1 = this;\n for (var j = 0; j < jsonData.length; j++) {\n _loop_1(j);\n }\n jsonData.childLevels += 1;\n return jsonData;\n }\n var grouped = {};\n var groupedArray = [];\n groupedArray.GroupGuid = consts[guid];\n groupedArray.level = level;\n groupedArray.childLevels = 0;\n groupedArray.records = jsonData;\n var _loop_2 = function (i) {\n var val = this_2.getVal(jsonData, i, field);\n if (!isNullOrUndefined(format)) {\n val = format(val, field);\n }\n if (!grouped[val]) {\n grouped[val] = {\n key: val,\n count: 0,\n items: [],\n aggregates: {},\n field: field\n };\n groupedArray.push(grouped[val]);\n if (!isNullOrUndefined(groupDs)) {\n var tempObj = groupDs.filter(function (e) { return e.key === grouped[val].key; });\n grouped[val].count = tempObj[0].count;\n }\n }\n grouped[val].count = !isNullOrUndefined(groupDs) ? grouped[val].count : grouped[val].count += 1;\n if (!isLazyLoad || (isLazyLoad && aggregates.length)) {\n grouped[val].items.push(jsonData[i]);\n }\n };\n var this_2 = this;\n for (var i = 0; i < jsonData.length; i++) {\n _loop_2(i);\n }\n if (aggregates && aggregates.length) {\n var _loop_3 = function (i) {\n var res = {};\n var fn = void 0;\n var aggs = aggregates;\n for (var j = 0; j < aggregates.length; j++) {\n fn = DataUtil.aggregates[aggregates[j].type];\n if (!isNullOrUndefined(groupDs)) {\n var temp = groupDs.filter(function (e) { return e.key === groupedArray[i].key; });\n if (fn) {\n res[aggs[j].field + ' - ' + aggs[j].type] = fn(temp[0].items, aggs[j].field);\n }\n }\n else {\n if (fn) {\n res[aggs[j].field + ' - ' + aggs[j].type] = fn(groupedArray[i].items, aggs[j].field);\n }\n }\n }\n groupedArray[i].aggregates = res;\n };\n for (var i = 0; i < groupedArray.length; i++) {\n _loop_3(i);\n }\n }\n if (isLazyLoad && groupedArray.length && aggregates.length) {\n for (var i = 0; i < groupedArray.length; i++) {\n groupedArray[i].items = [];\n }\n }\n return jsonData.length && groupedArray || jsonData;\n };\n /**\n * It is used to categorize the multiple items based on a specific field in jsonArray.\n * The hierarchical queries are commonly required when you use foreign key binding.\n *\n * @param {string} fKey\n * @param {string} from\n * @param {Object[]} source\n * @param {Group} lookup?\n * @param {string} pKey?\n * @param lookup\n * @param pKey\n * @hidden\n */\n DataUtil.buildHierarchy = function (fKey, from, source, lookup, pKey) {\n var i;\n var grp = {};\n var temp;\n if (lookup.result) {\n lookup = lookup.result;\n }\n if (lookup.GroupGuid) {\n this.throwError('DataManager: Do not have support Grouping in hierarchy');\n }\n for (i = 0; i < lookup.length; i++) {\n var fKeyData = this.getObject(fKey, lookup[i]);\n temp = grp[fKeyData] || (grp[fKeyData] = []);\n temp.push(lookup[i]);\n }\n for (i = 0; i < source.length; i++) {\n var fKeyData = this.getObject(pKey || fKey, source[i]);\n source[i][from] = grp[fKeyData];\n }\n };\n /**\n * The method used to get the field names which started with specified characters.\n *\n * @param {Object} obj\n * @param {string[]} fields?\n * @param {string} prefix?\n * @param fields\n * @param prefix\n * @hidden\n */\n DataUtil.getFieldList = function (obj, fields, prefix) {\n if (prefix === undefined) {\n prefix = '';\n }\n if (fields === undefined || fields === null) {\n return this.getFieldList(obj, [], prefix);\n }\n var copyObj = obj;\n var keys = Object.keys(obj);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var prop = keys_1[_i];\n if (typeof copyObj[prop] === 'object' && !(copyObj[prop] instanceof Array)) {\n this.getFieldList(copyObj[prop], fields, prefix + prop + '.');\n }\n else {\n fields.push(prefix + prop);\n }\n }\n return fields;\n };\n /**\n * Gets the value of the property in the given object.\n * The complex object can be accessed by providing the field names concatenated with dot(.).\n *\n * @param {string} nameSpace - The name of the property to be accessed.\n * @param {Object} from - Defines the source object.\n */\n DataUtil.getObject = function (nameSpace, from) {\n if (!nameSpace) {\n return from;\n }\n if (!from) {\n return undefined;\n }\n if (nameSpace.indexOf('.') === -1) {\n var lowerCaseNameSpace = nameSpace.charAt(0).toLowerCase() + nameSpace.slice(1);\n var upperCaseNameSpace = nameSpace.charAt(0).toUpperCase() + nameSpace.slice(1);\n if (!isNullOrUndefined(from[nameSpace])) {\n return from[nameSpace];\n }\n else {\n if (!isNullOrUndefined(from[lowerCaseNameSpace])) {\n return from[lowerCaseNameSpace];\n }\n else if (!isNullOrUndefined(from[upperCaseNameSpace])) {\n return from[upperCaseNameSpace];\n }\n else {\n return null;\n }\n }\n }\n var value = from;\n var splits = nameSpace.split('.');\n for (var i = 0; i < splits.length; i++) {\n if (value == null) {\n break;\n }\n value = value[splits[i]];\n if (value === undefined) {\n var casing = splits[i].charAt(0).toUpperCase() + splits[i].slice(1);\n value = from[casing] || from[casing.charAt(0).toLowerCase() + casing.slice(1)] || null;\n }\n from = value;\n }\n return value;\n };\n /**\n * To set value for the nameSpace in desired object.\n *\n * @param {string} nameSpace - String value to the get the inner object.\n * @param {Object} value - Value that you need to set.\n * @param {Object} obj - Object to get the inner object value.\n * @return { [key: string]: Object; } | Object\n * @hidden\n */\n DataUtil.setValue = function (nameSpace, value, obj) {\n var keys = nameSpace.toString().split('.');\n var start = obj || {};\n var fromObj = start;\n var i;\n var length = keys.length;\n var key;\n for (i = 0; i < length; i++) {\n key = keys[i];\n if (i + 1 === length) {\n fromObj[key] = value === undefined ? undefined : value;\n }\n else if (isNullOrUndefined(fromObj[key])) {\n fromObj[key] = {};\n }\n fromObj = fromObj[key];\n }\n return start;\n };\n /**\n * Sort the given data based on the field and comparer.\n *\n * @param {Object[]} ds - Defines the input data.\n * @param {string} field - Defines the field to be sorted.\n * @param {Function} comparer - Defines the comparer function used to sort the records.\n */\n DataUtil.sort = function (ds, field, comparer) {\n if (ds.length <= 1) {\n return ds;\n }\n var middle = parseInt((ds.length / 2).toString(), 10);\n var left = ds.slice(0, middle);\n var right = ds.slice(middle);\n left = this.sort(left, field, comparer);\n right = this.sort(right, field, comparer);\n return this.merge(left, right, field, comparer);\n };\n DataUtil.ignoreDiacritics = function (value) {\n if (typeof value !== 'string') {\n return value;\n }\n var result = value.split('');\n var newValue = result.map(function (temp) { return temp in DataUtil.diacritics ? DataUtil.diacritics[temp] : temp; });\n return newValue.join('');\n };\n DataUtil.merge = function (left, right, fieldName, comparer) {\n var result = [];\n var current;\n while (left.length > 0 || right.length > 0) {\n if (left.length > 0 && right.length > 0) {\n if (comparer) {\n current = comparer(this.getVal(left, 0, fieldName), this.getVal(right, 0, fieldName), left[0], right[0]) <= 0 ? left : right;\n }\n else {\n current = left[0][fieldName] < left[0][fieldName] ? left : right;\n }\n }\n else {\n current = left.length > 0 ? left : right;\n }\n result.push(current.shift());\n }\n return result;\n };\n DataUtil.getVal = function (array, index, field) {\n return field ? this.getObject(field, array[index]) : array[index];\n };\n DataUtil.toLowerCase = function (val) {\n return val ? typeof val === 'string' ? val.toLowerCase() : val.toString() : (val === 0 || val === false) ? val.toString() : '';\n };\n /**\n * To perform the filter operation with specified adaptor and returns the result.\n *\n * @param {Object} adaptor\n * @param {string} fnName\n * @param {Object} param1?\n * @param {Object} param2?\n * @param param1\n * @param param2\n * @hidden\n */\n DataUtil.callAdaptorFunction = function (adaptor, fnName, param1, param2) {\n if (fnName in adaptor) {\n var res = adaptor[fnName](param1, param2);\n if (!isNullOrUndefined(res)) {\n param1 = res;\n }\n }\n return param1;\n };\n DataUtil.getAddParams = function (adp, dm, query) {\n var req = {};\n DataUtil.callAdaptorFunction(adp, 'addParams', {\n dm: dm,\n query: query,\n params: query ? query.params : [],\n reqParams: req\n });\n return req;\n };\n /**\n * Checks wheather the given input is a plain object or not.\n *\n * @param {Object|Object[]} obj\n */\n DataUtil.isPlainObject = function (obj) {\n return (!!obj) && (obj.constructor === Object);\n };\n /**\n * Returns true when the browser cross origin request.\n */\n DataUtil.isCors = function () {\n var xhr = null;\n var request = 'XMLHttpRequest';\n try {\n xhr = new window[request]();\n }\n catch (e) {\n // No exception handling\n }\n return !!xhr && ('withCredentials' in xhr);\n };\n /**\n * Generate random GUID value which will be prefixed with the given value.\n *\n * @param {string} prefix\n */\n DataUtil.getGuid = function (prefix) {\n var hexs = '0123456789abcdef';\n var rand;\n return (prefix || '') + '00000000-0000-4000-0000-000000000000'.replace(/0/g, function (val, i) {\n if ('crypto' in window && 'getRandomValues' in crypto) {\n var arr = new Uint8Array(1);\n window.crypto.getRandomValues(arr);\n rand = arr[0] % 16 | 0;\n }\n else {\n rand = Math.random() * 16 | 0;\n }\n return hexs[i === 19 ? rand & 0x3 | 0x8 : rand];\n });\n };\n /**\n * Checks wheather the given value is null or not.\n *\n * @param {string|Object} val\n * @returns boolean\n */\n DataUtil.isNull = function (val) {\n return val === undefined || val === null;\n };\n /**\n * To get the required items from collection of objects.\n *\n * @param {Object[]} array\n * @param {string} field\n * @param {Function} comparer\n * @returns Object\n * @hidden\n */\n DataUtil.getItemFromComparer = function (array, field, comparer) {\n var keyVal;\n var current;\n var key;\n var i = 0;\n var castRequired = typeof DataUtil.getVal(array, 0, field) === 'string';\n if (array.length) {\n while (isNullOrUndefined(keyVal) && i < array.length) {\n keyVal = DataUtil.getVal(array, i, field);\n key = array[i++];\n }\n }\n for (; i < array.length; i++) {\n current = DataUtil.getVal(array, i, field);\n if (isNullOrUndefined(current)) {\n continue;\n }\n if (castRequired) {\n keyVal = +keyVal;\n current = +current;\n }\n if (comparer(keyVal, current) > 0) {\n keyVal = current;\n key = array[i];\n }\n }\n return key;\n };\n /**\n * To get distinct values of Array or Array of Objects.\n *\n * @param {Object[]} json\n * @param {string} field\n * @param fieldName\n * @param {boolean} requiresCompleteRecord\n * @returns Object[]\n * * distinct array of objects is return when requiresCompleteRecord set as true.\n * @hidden\n */\n DataUtil.distinct = function (json, fieldName, requiresCompleteRecord) {\n requiresCompleteRecord = isNullOrUndefined(requiresCompleteRecord) ? false : requiresCompleteRecord;\n var result = [];\n var val;\n var tmp = {};\n json.forEach(function (data, index) {\n val = typeof (json[index]) === 'object' ? DataUtil.getVal(json, index, fieldName) : json[index];\n if (!(val in tmp)) {\n result.push(!requiresCompleteRecord ? val : json[index]);\n tmp[val] = 1;\n }\n });\n return result;\n };\n /**\n * Process the given records based on the datamanager string.\n *\n * @param {string} datamanager\n * @param dm\n * @param {Object[]} records\n */\n DataUtil.processData = function (dm, records) {\n var query = this.prepareQuery(dm);\n var sampledata = new DataManager(records);\n if (dm.requiresCounts) {\n query.requiresCount();\n }\n /* eslint-disable @typescript-eslint/no-explicit-any */\n // tslint:disable-next-line:no-any\n var result = sampledata.executeLocal(query);\n /* eslint-enable @typescript-eslint/no-explicit-any */\n var returnValue = {\n result: dm.requiresCounts ? result.result : result,\n count: result.count,\n aggregates: JSON.stringify(result.aggregates)\n };\n return dm.requiresCounts ? returnValue : result;\n };\n DataUtil.prepareQuery = function (dm) {\n var _this = this;\n var query = new Query();\n if (dm.select) {\n query.select(dm.select);\n }\n if (dm.where) {\n var where = DataUtil.parse.parseJson(dm.where);\n where.filter(function (pred) {\n if (isNullOrUndefined(pred.condition)) {\n query.where(pred.field, pred.operator, pred.value, pred.ignoreCase, pred.ignoreAccent);\n }\n else {\n var predicateList = [];\n if (pred.field) {\n predicateList.push(new Predicate(pred.field, pred.operator, pred.value, pred.ignoreCase, pred.ignoreAccent));\n }\n else {\n predicateList = predicateList.concat(_this.getPredicate(pred.predicates));\n }\n if (pred.condition === 'or') {\n query.where(Predicate.or(predicateList));\n }\n else if (pred.condition === 'and') {\n query.where(Predicate.and(predicateList));\n }\n }\n });\n }\n if (dm.search) {\n var search = DataUtil.parse.parseJson(dm.search);\n // tslint:disable-next-line:no-string-literal\n search.filter(function (e) { return query.search(e.key, e.fields, e['operator'], \n // tslint:disable-next-line:no-string-literal\n e['ignoreCase'], e['ignoreAccent']); });\n }\n if (dm.aggregates) {\n dm.aggregates.filter(function (e) { return query.aggregate(e.type, e.field); });\n }\n if (dm.sorted) {\n dm.sorted.filter(function (e) { return query.sortBy(e.name, e.direction); });\n }\n if (dm.skip) {\n query.skip(dm.skip);\n }\n if (dm.take) {\n query.take(dm.take);\n }\n if (dm.group) {\n dm.group.filter(function (grp) { return query.group(grp); });\n }\n return query;\n };\n DataUtil.getPredicate = function (pred) {\n var mainPred = [];\n for (var i = 0; i < pred.length; i++) {\n var e = pred[i];\n if (e.field) {\n mainPred.push(new Predicate(e.field, e.operator, e.value, e.ignoreCase, e.ignoreAccent));\n }\n else {\n var childPred = [];\n // tslint:disable-next-line:typedef\n var cpre = this.getPredicate(e.predicates);\n for (var _i = 0, _a = Object.keys(cpre); _i < _a.length; _i++) {\n var prop = _a[_i];\n childPred.push(cpre[prop]);\n }\n mainPred.push(e.condition === 'or' ? Predicate.or(childPred) : Predicate.and(childPred));\n }\n }\n return mainPred;\n };\n /**\n * Specifies the value which will be used to adjust the date value to server timezone.\n *\n * @default null\n */\n DataUtil.serverTimezoneOffset = null;\n /**\n * Species whether are not to be parsed with serverTimezoneOffset value.\n *\n * @hidden\n */\n DataUtil.timeZoneHandling = true;\n /**\n * Throw error with the given string as message.\n *\n * @param {string} er\n * @param error\n */\n DataUtil.throwError = function (error) {\n try {\n throw new Error(error);\n }\n catch (e) {\n // eslint-disable-next-line no-throw-literal\n throw e.message + '\\n' + e.stack;\n }\n };\n DataUtil.aggregates = {\n /**\n * Calculate sum of the given field in the data.\n *\n * @param {Object[]} ds\n * @param {string} field\n */\n sum: function (ds, field) {\n var result = 0;\n var val;\n var castRequired = typeof DataUtil.getVal(ds, 0, field) !== 'number';\n for (var i = 0; i < ds.length; i++) {\n val = DataUtil.getVal(ds, i, field);\n if (!isNaN(val) && val !== null) {\n if (castRequired) {\n val = +val;\n }\n result += val;\n }\n }\n return result;\n },\n /**\n * Calculate average value of the given field in the data.\n *\n * @param {Object[]} ds\n * @param {string} field\n */\n average: function (ds, field) {\n return DataUtil.aggregates.sum(ds, field) / ds.length;\n },\n /**\n * Returns the min value of the data based on the field.\n *\n * @param {Object[]} ds\n * @param {string|Function} field\n */\n min: function (ds, field) {\n var comparer;\n if (typeof field === 'function') {\n comparer = field;\n field = null;\n }\n return DataUtil.getObject(field, DataUtil.getItemFromComparer(ds, field, comparer || DataUtil.fnAscending));\n },\n /**\n * Returns the max value of the data based on the field.\n *\n * @param {Object[]} ds\n * @param {string} field\n * @returns number\n */\n max: function (ds, field) {\n var comparer;\n if (typeof field === 'function') {\n comparer = field;\n field = null;\n }\n return DataUtil.getObject(field, DataUtil.getItemFromComparer(ds, field, comparer || DataUtil.fnDescending));\n },\n /**\n * Returns the total number of true value present in the data based on the given boolean field name.\n *\n * @param {Object[]} ds\n * @param {string} field\n */\n truecount: function (ds, field) {\n return new DataManager(ds).executeLocal(new Query().where(field, 'equal', true, true)).length;\n },\n /**\n * Returns the total number of false value present in the data based on the given boolean field name.\n *\n * @param {Object[]} ds\n * @param {string} field\n */\n falsecount: function (ds, field) {\n return new DataManager(ds).executeLocal(new Query().where(field, 'equal', false, true)).length;\n },\n /**\n * Returns the length of the given data.\n *\n * @param {Object[]} ds\n * @param {string} field?\n * @param field\n * @returns number\n */\n count: function (ds, field) {\n return ds.length;\n }\n };\n /**\n * Specifies the Object with filter operators.\n */\n DataUtil.operatorSymbols = {\n '<': 'lessthan',\n '>': 'greaterthan',\n '<=': 'lessthanorequal',\n '>=': 'greaterthanorequal',\n '==': 'equal',\n '!=': 'notequal',\n '*=': 'contains',\n '$=': 'endswith',\n '^=': 'startswith'\n };\n /**\n * Specifies the Object with filter operators which will be used for OData filter query generation.\n * * It will be used for date/number type filter query.\n */\n DataUtil.odBiOperator = {\n '<': ' lt ',\n '>': ' gt ',\n '<=': ' le ',\n '>=': ' ge ',\n '==': ' eq ',\n '!=': ' ne ',\n 'lessthan': ' lt ',\n 'lessthanorequal': ' le ',\n 'greaterthan': ' gt ',\n 'greaterthanorequal': ' ge ',\n 'equal': ' eq ',\n 'notequal': ' ne '\n };\n /**\n * Specifies the Object with filter operators which will be used for OData filter query generation.\n * It will be used for string type filter query.\n */\n DataUtil.odUniOperator = {\n '$=': 'endswith',\n '^=': 'startswith',\n '*=': 'substringof',\n 'endswith': 'endswith',\n 'startswith': 'startswith',\n 'contains': 'substringof',\n 'doesnotendwith': 'not endswith',\n 'doesnotstartwith': 'not startswith',\n 'doesnotcontain': 'not substringof',\n 'wildcard': 'wildcard',\n 'like': 'like'\n };\n /**\n * Specifies the Object with filter operators which will be used for ODataV4 filter query generation.\n * It will be used for string type filter query.\n */\n DataUtil.odv4UniOperator = {\n '$=': 'endswith',\n '^=': 'startswith',\n '*=': 'contains',\n 'endswith': 'endswith',\n 'startswith': 'startswith',\n 'contains': 'contains',\n 'doesnotendwith': 'not endswith',\n 'doesnotstartwith': 'not startswith',\n 'doesnotcontain': 'not contains',\n 'wildcard': 'wildcard',\n 'like': 'like'\n };\n DataUtil.diacritics = {\n '\\u24B6': 'A',\n '\\uFF21': 'A',\n '\\u00C0': 'A',\n '\\u00C1': 'A',\n '\\u00C2': 'A',\n '\\u1EA6': 'A',\n '\\u1EA4': 'A',\n '\\u1EAA': 'A',\n '\\u1EA8': 'A',\n '\\u00C3': 'A',\n '\\u0100': 'A',\n '\\u0102': 'A',\n '\\u1EB0': 'A',\n '\\u1EAE': 'A',\n '\\u1EB4': 'A',\n '\\u1EB2': 'A',\n '\\u0226': 'A',\n '\\u01E0': 'A',\n '\\u00C4': 'A',\n '\\u01DE': 'A',\n '\\u1EA2': 'A',\n '\\u00C5': 'A',\n '\\u01FA': 'A',\n '\\u01CD': 'A',\n '\\u0200': 'A',\n '\\u0202': 'A',\n '\\u1EA0': 'A',\n '\\u1EAC': 'A',\n '\\u1EB6': 'A',\n '\\u1E00': 'A',\n '\\u0104': 'A',\n '\\u023A': 'A',\n '\\u2C6F': 'A',\n '\\uA732': 'AA',\n '\\u00C6': 'AE',\n '\\u01FC': 'AE',\n '\\u01E2': 'AE',\n '\\uA734': 'AO',\n '\\uA736': 'AU',\n '\\uA738': 'AV',\n '\\uA73A': 'AV',\n '\\uA73C': 'AY',\n '\\u24B7': 'B',\n '\\uFF22': 'B',\n '\\u1E02': 'B',\n '\\u1E04': 'B',\n '\\u1E06': 'B',\n '\\u0243': 'B',\n '\\u0182': 'B',\n '\\u0181': 'B',\n '\\u24B8': 'C',\n '\\uFF23': 'C',\n '\\u0106': 'C',\n '\\u0108': 'C',\n '\\u010A': 'C',\n '\\u010C': 'C',\n '\\u00C7': 'C',\n '\\u1E08': 'C',\n '\\u0187': 'C',\n '\\u023B': 'C',\n '\\uA73E': 'C',\n '\\u24B9': 'D',\n '\\uFF24': 'D',\n '\\u1E0A': 'D',\n '\\u010E': 'D',\n '\\u1E0C': 'D',\n '\\u1E10': 'D',\n '\\u1E12': 'D',\n '\\u1E0E': 'D',\n '\\u0110': 'D',\n '\\u018B': 'D',\n '\\u018A': 'D',\n '\\u0189': 'D',\n '\\uA779': 'D',\n '\\u01F1': 'DZ',\n '\\u01C4': 'DZ',\n '\\u01F2': 'Dz',\n '\\u01C5': 'Dz',\n '\\u24BA': 'E',\n '\\uFF25': 'E',\n '\\u00C8': 'E',\n '\\u00C9': 'E',\n '\\u00CA': 'E',\n '\\u1EC0': 'E',\n '\\u1EBE': 'E',\n '\\u1EC4': 'E',\n '\\u1EC2': 'E',\n '\\u1EBC': 'E',\n '\\u0112': 'E',\n '\\u1E14': 'E',\n '\\u1E16': 'E',\n '\\u0114': 'E',\n '\\u0116': 'E',\n '\\u00CB': 'E',\n '\\u1EBA': 'E',\n '\\u011A': 'E',\n '\\u0204': 'E',\n '\\u0206': 'E',\n '\\u1EB8': 'E',\n '\\u1EC6': 'E',\n '\\u0228': 'E',\n '\\u1E1C': 'E',\n '\\u0118': 'E',\n '\\u1E18': 'E',\n '\\u1E1A': 'E',\n '\\u0190': 'E',\n '\\u018E': 'E',\n '\\u24BB': 'F',\n '\\uFF26': 'F',\n '\\u1E1E': 'F',\n '\\u0191': 'F',\n '\\uA77B': 'F',\n '\\u24BC': 'G',\n '\\uFF27': 'G',\n '\\u01F4': 'G',\n '\\u011C': 'G',\n '\\u1E20': 'G',\n '\\u011E': 'G',\n '\\u0120': 'G',\n '\\u01E6': 'G',\n '\\u0122': 'G',\n '\\u01E4': 'G',\n '\\u0193': 'G',\n '\\uA7A0': 'G',\n '\\uA77D': 'G',\n '\\uA77E': 'G',\n '\\u24BD': 'H',\n '\\uFF28': 'H',\n '\\u0124': 'H',\n '\\u1E22': 'H',\n '\\u1E26': 'H',\n '\\u021E': 'H',\n '\\u1E24': 'H',\n '\\u1E28': 'H',\n '\\u1E2A': 'H',\n '\\u0126': 'H',\n '\\u2C67': 'H',\n '\\u2C75': 'H',\n '\\uA78D': 'H',\n '\\u24BE': 'I',\n '\\uFF29': 'I',\n '\\u00CC': 'I',\n '\\u00CD': 'I',\n '\\u00CE': 'I',\n '\\u0128': 'I',\n '\\u012A': 'I',\n '\\u012C': 'I',\n '\\u0130': 'I',\n '\\u00CF': 'I',\n '\\u1E2E': 'I',\n '\\u1EC8': 'I',\n '\\u01CF': 'I',\n '\\u0208': 'I',\n '\\u020A': 'I',\n '\\u1ECA': 'I',\n '\\u012E': 'I',\n '\\u1E2C': 'I',\n '\\u0197': 'I',\n '\\u24BF': 'J',\n '\\uFF2A': 'J',\n '\\u0134': 'J',\n '\\u0248': 'J',\n '\\u24C0': 'K',\n '\\uFF2B': 'K',\n '\\u1E30': 'K',\n '\\u01E8': 'K',\n '\\u1E32': 'K',\n '\\u0136': 'K',\n '\\u1E34': 'K',\n '\\u0198': 'K',\n '\\u2C69': 'K',\n '\\uA740': 'K',\n '\\uA742': 'K',\n '\\uA744': 'K',\n '\\uA7A2': 'K',\n '\\u24C1': 'L',\n '\\uFF2C': 'L',\n '\\u013F': 'L',\n '\\u0139': 'L',\n '\\u013D': 'L',\n '\\u1E36': 'L',\n '\\u1E38': 'L',\n '\\u013B': 'L',\n '\\u1E3C': 'L',\n '\\u1E3A': 'L',\n '\\u0141': 'L',\n '\\u023D': 'L',\n '\\u2C62': 'L',\n '\\u2C60': 'L',\n '\\uA748': 'L',\n '\\uA746': 'L',\n '\\uA780': 'L',\n '\\u01C7': 'LJ',\n '\\u01C8': 'Lj',\n '\\u24C2': 'M',\n '\\uFF2D': 'M',\n '\\u1E3E': 'M',\n '\\u1E40': 'M',\n '\\u1E42': 'M',\n '\\u2C6E': 'M',\n '\\u019C': 'M',\n '\\u24C3': 'N',\n '\\uFF2E': 'N',\n '\\u01F8': 'N',\n '\\u0143': 'N',\n '\\u00D1': 'N',\n '\\u1E44': 'N',\n '\\u0147': 'N',\n '\\u1E46': 'N',\n '\\u0145': 'N',\n '\\u1E4A': 'N',\n '\\u1E48': 'N',\n '\\u0220': 'N',\n '\\u019D': 'N',\n '\\uA790': 'N',\n '\\uA7A4': 'N',\n '\\u01CA': 'NJ',\n '\\u01CB': 'Nj',\n '\\u24C4': 'O',\n '\\uFF2F': 'O',\n '\\u00D2': 'O',\n '\\u00D3': 'O',\n '\\u00D4': 'O',\n '\\u1ED2': 'O',\n '\\u1ED0': 'O',\n '\\u1ED6': 'O',\n '\\u1ED4': 'O',\n '\\u00D5': 'O',\n '\\u1E4C': 'O',\n '\\u022C': 'O',\n '\\u1E4E': 'O',\n '\\u014C': 'O',\n '\\u1E50': 'O',\n '\\u1E52': 'O',\n '\\u014E': 'O',\n '\\u022E': 'O',\n '\\u0230': 'O',\n '\\u00D6': 'O',\n '\\u022A': 'O',\n '\\u1ECE': 'O',\n '\\u0150': 'O',\n '\\u01D1': 'O',\n '\\u020C': 'O',\n '\\u020E': 'O',\n '\\u01A0': 'O',\n '\\u1EDC': 'O',\n '\\u1EDA': 'O',\n '\\u1EE0': 'O',\n '\\u1EDE': 'O',\n '\\u1EE2': 'O',\n '\\u1ECC': 'O',\n '\\u1ED8': 'O',\n '\\u01EA': 'O',\n '\\u01EC': 'O',\n '\\u00D8': 'O',\n '\\u01FE': 'O',\n '\\u0186': 'O',\n '\\u019F': 'O',\n '\\uA74A': 'O',\n '\\uA74C': 'O',\n '\\u01A2': 'OI',\n '\\uA74E': 'OO',\n '\\u0222': 'OU',\n '\\u24C5': 'P',\n '\\uFF30': 'P',\n '\\u1E54': 'P',\n '\\u1E56': 'P',\n '\\u01A4': 'P',\n '\\u2C63': 'P',\n '\\uA750': 'P',\n '\\uA752': 'P',\n '\\uA754': 'P',\n '\\u24C6': 'Q',\n '\\uFF31': 'Q',\n '\\uA756': 'Q',\n '\\uA758': 'Q',\n '\\u024A': 'Q',\n '\\u24C7': 'R',\n '\\uFF32': 'R',\n '\\u0154': 'R',\n '\\u1E58': 'R',\n '\\u0158': 'R',\n '\\u0210': 'R',\n '\\u0212': 'R',\n '\\u1E5A': 'R',\n '\\u1E5C': 'R',\n '\\u0156': 'R',\n '\\u1E5E': 'R',\n '\\u024C': 'R',\n '\\u2C64': 'R',\n '\\uA75A': 'R',\n '\\uA7A6': 'R',\n '\\uA782': 'R',\n '\\u24C8': 'S',\n '\\uFF33': 'S',\n '\\u1E9E': 'S',\n '\\u015A': 'S',\n '\\u1E64': 'S',\n '\\u015C': 'S',\n '\\u1E60': 'S',\n '\\u0160': 'S',\n '\\u1E66': 'S',\n '\\u1E62': 'S',\n '\\u1E68': 'S',\n '\\u0218': 'S',\n '\\u015E': 'S',\n '\\u2C7E': 'S',\n '\\uA7A8': 'S',\n '\\uA784': 'S',\n '\\u24C9': 'T',\n '\\uFF34': 'T',\n '\\u1E6A': 'T',\n '\\u0164': 'T',\n '\\u1E6C': 'T',\n '\\u021A': 'T',\n '\\u0162': 'T',\n '\\u1E70': 'T',\n '\\u1E6E': 'T',\n '\\u0166': 'T',\n '\\u01AC': 'T',\n '\\u01AE': 'T',\n '\\u023E': 'T',\n '\\uA786': 'T',\n '\\uA728': 'TZ',\n '\\u24CA': 'U',\n '\\uFF35': 'U',\n '\\u00D9': 'U',\n '\\u00DA': 'U',\n '\\u00DB': 'U',\n '\\u0168': 'U',\n '\\u1E78': 'U',\n '\\u016A': 'U',\n '\\u1E7A': 'U',\n '\\u016C': 'U',\n '\\u00DC': 'U',\n '\\u01DB': 'U',\n '\\u01D7': 'U',\n '\\u01D5': 'U',\n '\\u01D9': 'U',\n '\\u1EE6': 'U',\n '\\u016E': 'U',\n '\\u0170': 'U',\n '\\u01D3': 'U',\n '\\u0214': 'U',\n '\\u0216': 'U',\n '\\u01AF': 'U',\n '\\u1EEA': 'U',\n '\\u1EE8': 'U',\n '\\u1EEE': 'U',\n '\\u1EEC': 'U',\n '\\u1EF0': 'U',\n '\\u1EE4': 'U',\n '\\u1E72': 'U',\n '\\u0172': 'U',\n '\\u1E76': 'U',\n '\\u1E74': 'U',\n '\\u0244': 'U',\n '\\u24CB': 'V',\n '\\uFF36': 'V',\n '\\u1E7C': 'V',\n '\\u1E7E': 'V',\n '\\u01B2': 'V',\n '\\uA75E': 'V',\n '\\u0245': 'V',\n '\\uA760': 'VY',\n '\\u24CC': 'W',\n '\\uFF37': 'W',\n '\\u1E80': 'W',\n '\\u1E82': 'W',\n '\\u0174': 'W',\n '\\u1E86': 'W',\n '\\u1E84': 'W',\n '\\u1E88': 'W',\n '\\u2C72': 'W',\n '\\u24CD': 'X',\n '\\uFF38': 'X',\n '\\u1E8A': 'X',\n '\\u1E8C': 'X',\n '\\u24CE': 'Y',\n '\\uFF39': 'Y',\n '\\u1EF2': 'Y',\n '\\u00DD': 'Y',\n '\\u0176': 'Y',\n '\\u1EF8': 'Y',\n '\\u0232': 'Y',\n '\\u1E8E': 'Y',\n '\\u0178': 'Y',\n '\\u1EF6': 'Y',\n '\\u1EF4': 'Y',\n '\\u01B3': 'Y',\n '\\u024E': 'Y',\n '\\u1EFE': 'Y',\n '\\u24CF': 'Z',\n '\\uFF3A': 'Z',\n '\\u0179': 'Z',\n '\\u1E90': 'Z',\n '\\u017B': 'Z',\n '\\u017D': 'Z',\n '\\u1E92': 'Z',\n '\\u1E94': 'Z',\n '\\u01B5': 'Z',\n '\\u0224': 'Z',\n '\\u2C7F': 'Z',\n '\\u2C6B': 'Z',\n '\\uA762': 'Z',\n '\\u24D0': 'a',\n '\\uFF41': 'a',\n '\\u1E9A': 'a',\n '\\u00E0': 'a',\n '\\u00E1': 'a',\n '\\u00E2': 'a',\n '\\u1EA7': 'a',\n '\\u1EA5': 'a',\n '\\u1EAB': 'a',\n '\\u1EA9': 'a',\n '\\u00E3': 'a',\n '\\u0101': 'a',\n '\\u0103': 'a',\n '\\u1EB1': 'a',\n '\\u1EAF': 'a',\n '\\u1EB5': 'a',\n '\\u1EB3': 'a',\n '\\u0227': 'a',\n '\\u01E1': 'a',\n '\\u00E4': 'a',\n '\\u01DF': 'a',\n '\\u1EA3': 'a',\n '\\u00E5': 'a',\n '\\u01FB': 'a',\n '\\u01CE': 'a',\n '\\u0201': 'a',\n '\\u0203': 'a',\n '\\u1EA1': 'a',\n '\\u1EAD': 'a',\n '\\u1EB7': 'a',\n '\\u1E01': 'a',\n '\\u0105': 'a',\n '\\u2C65': 'a',\n '\\u0250': 'a',\n '\\uA733': 'aa',\n '\\u00E6': 'ae',\n '\\u01FD': 'ae',\n '\\u01E3': 'ae',\n '\\uA735': 'ao',\n '\\uA737': 'au',\n '\\uA739': 'av',\n '\\uA73B': 'av',\n '\\uA73D': 'ay',\n '\\u24D1': 'b',\n '\\uFF42': 'b',\n '\\u1E03': 'b',\n '\\u1E05': 'b',\n '\\u1E07': 'b',\n '\\u0180': 'b',\n '\\u0183': 'b',\n '\\u0253': 'b',\n '\\u24D2': 'c',\n '\\uFF43': 'c',\n '\\u0107': 'c',\n '\\u0109': 'c',\n '\\u010B': 'c',\n '\\u010D': 'c',\n '\\u00E7': 'c',\n '\\u1E09': 'c',\n '\\u0188': 'c',\n '\\u023C': 'c',\n '\\uA73F': 'c',\n '\\u2184': 'c',\n '\\u24D3': 'd',\n '\\uFF44': 'd',\n '\\u1E0B': 'd',\n '\\u010F': 'd',\n '\\u1E0D': 'd',\n '\\u1E11': 'd',\n '\\u1E13': 'd',\n '\\u1E0F': 'd',\n '\\u0111': 'd',\n '\\u018C': 'd',\n '\\u0256': 'd',\n '\\u0257': 'd',\n '\\uA77A': 'd',\n '\\u01F3': 'dz',\n '\\u01C6': 'dz',\n '\\u24D4': 'e',\n '\\uFF45': 'e',\n '\\u00E8': 'e',\n '\\u00E9': 'e',\n '\\u00EA': 'e',\n '\\u1EC1': 'e',\n '\\u1EBF': 'e',\n '\\u1EC5': 'e',\n '\\u1EC3': 'e',\n '\\u1EBD': 'e',\n '\\u0113': 'e',\n '\\u1E15': 'e',\n '\\u1E17': 'e',\n '\\u0115': 'e',\n '\\u0117': 'e',\n '\\u00EB': 'e',\n '\\u1EBB': 'e',\n '\\u011B': 'e',\n '\\u0205': 'e',\n '\\u0207': 'e',\n '\\u1EB9': 'e',\n '\\u1EC7': 'e',\n '\\u0229': 'e',\n '\\u1E1D': 'e',\n '\\u0119': 'e',\n '\\u1E19': 'e',\n '\\u1E1B': 'e',\n '\\u0247': 'e',\n '\\u025B': 'e',\n '\\u01DD': 'e',\n '\\u24D5': 'f',\n '\\uFF46': 'f',\n '\\u1E1F': 'f',\n '\\u0192': 'f',\n '\\uA77C': 'f',\n '\\u24D6': 'g',\n '\\uFF47': 'g',\n '\\u01F5': 'g',\n '\\u011D': 'g',\n '\\u1E21': 'g',\n '\\u011F': 'g',\n '\\u0121': 'g',\n '\\u01E7': 'g',\n '\\u0123': 'g',\n '\\u01E5': 'g',\n '\\u0260': 'g',\n '\\uA7A1': 'g',\n '\\u1D79': 'g',\n '\\uA77F': 'g',\n '\\u24D7': 'h',\n '\\uFF48': 'h',\n '\\u0125': 'h',\n '\\u1E23': 'h',\n '\\u1E27': 'h',\n '\\u021F': 'h',\n '\\u1E25': 'h',\n '\\u1E29': 'h',\n '\\u1E2B': 'h',\n '\\u1E96': 'h',\n '\\u0127': 'h',\n '\\u2C68': 'h',\n '\\u2C76': 'h',\n '\\u0265': 'h',\n '\\u0195': 'hv',\n '\\u24D8': 'i',\n '\\uFF49': 'i',\n '\\u00EC': 'i',\n '\\u00ED': 'i',\n '\\u00EE': 'i',\n '\\u0129': 'i',\n '\\u012B': 'i',\n '\\u012D': 'i',\n '\\u00EF': 'i',\n '\\u1E2F': 'i',\n '\\u1EC9': 'i',\n '\\u01D0': 'i',\n '\\u0209': 'i',\n '\\u020B': 'i',\n '\\u1ECB': 'i',\n '\\u012F': 'i',\n '\\u1E2D': 'i',\n '\\u0268': 'i',\n '\\u0131': 'i',\n '\\u24D9': 'j',\n '\\uFF4A': 'j',\n '\\u0135': 'j',\n '\\u01F0': 'j',\n '\\u0249': 'j',\n '\\u24DA': 'k',\n '\\uFF4B': 'k',\n '\\u1E31': 'k',\n '\\u01E9': 'k',\n '\\u1E33': 'k',\n '\\u0137': 'k',\n '\\u1E35': 'k',\n '\\u0199': 'k',\n '\\u2C6A': 'k',\n '\\uA741': 'k',\n '\\uA743': 'k',\n '\\uA745': 'k',\n '\\uA7A3': 'k',\n '\\u24DB': 'l',\n '\\uFF4C': 'l',\n '\\u0140': 'l',\n '\\u013A': 'l',\n '\\u013E': 'l',\n '\\u1E37': 'l',\n '\\u1E39': 'l',\n '\\u013C': 'l',\n '\\u1E3D': 'l',\n '\\u1E3B': 'l',\n '\\u017F': 'l',\n '\\u0142': 'l',\n '\\u019A': 'l',\n '\\u026B': 'l',\n '\\u2C61': 'l',\n '\\uA749': 'l',\n '\\uA781': 'l',\n '\\uA747': 'l',\n '\\u01C9': 'lj',\n '\\u24DC': 'm',\n '\\uFF4D': 'm',\n '\\u1E3F': 'm',\n '\\u1E41': 'm',\n '\\u1E43': 'm',\n '\\u0271': 'm',\n '\\u026F': 'm',\n '\\u24DD': 'n',\n '\\uFF4E': 'n',\n '\\u01F9': 'n',\n '\\u0144': 'n',\n '\\u00F1': 'n',\n '\\u1E45': 'n',\n '\\u0148': 'n',\n '\\u1E47': 'n',\n '\\u0146': 'n',\n '\\u1E4B': 'n',\n '\\u1E49': 'n',\n '\\u019E': 'n',\n '\\u0272': 'n',\n '\\u0149': 'n',\n '\\uA791': 'n',\n '\\uA7A5': 'n',\n '\\u01CC': 'nj',\n '\\u24DE': 'o',\n '\\uFF4F': 'o',\n '\\u00F2': 'o',\n '\\u00F3': 'o',\n '\\u00F4': 'o',\n '\\u1ED3': 'o',\n '\\u1ED1': 'o',\n '\\u1ED7': 'o',\n '\\u1ED5': 'o',\n '\\u00F5': 'o',\n '\\u1E4D': 'o',\n '\\u022D': 'o',\n '\\u1E4F': 'o',\n '\\u014D': 'o',\n '\\u1E51': 'o',\n '\\u1E53': 'o',\n '\\u014F': 'o',\n '\\u022F': 'o',\n '\\u0231': 'o',\n '\\u00F6': 'o',\n '\\u022B': 'o',\n '\\u1ECF': 'o',\n '\\u0151': 'o',\n '\\u01D2': 'o',\n '\\u020D': 'o',\n '\\u020F': 'o',\n '\\u01A1': 'o',\n '\\u1EDD': 'o',\n '\\u1EDB': 'o',\n '\\u1EE1': 'o',\n '\\u1EDF': 'o',\n '\\u1EE3': 'o',\n '\\u1ECD': 'o',\n '\\u1ED9': 'o',\n '\\u01EB': 'o',\n '\\u01ED': 'o',\n '\\u00F8': 'o',\n '\\u01FF': 'o',\n '\\u0254': 'o',\n '\\uA74B': 'o',\n '\\uA74D': 'o',\n '\\u0275': 'o',\n '\\u01A3': 'oi',\n '\\u0223': 'ou',\n '\\uA74F': 'oo',\n '\\u24DF': 'p',\n '\\uFF50': 'p',\n '\\u1E55': 'p',\n '\\u1E57': 'p',\n '\\u01A5': 'p',\n '\\u1D7D': 'p',\n '\\uA751': 'p',\n '\\uA753': 'p',\n '\\uA755': 'p',\n '\\u24E0': 'q',\n '\\uFF51': 'q',\n '\\u024B': 'q',\n '\\uA757': 'q',\n '\\uA759': 'q',\n '\\u24E1': 'r',\n '\\uFF52': 'r',\n '\\u0155': 'r',\n '\\u1E59': 'r',\n '\\u0159': 'r',\n '\\u0211': 'r',\n '\\u0213': 'r',\n '\\u1E5B': 'r',\n '\\u1E5D': 'r',\n '\\u0157': 'r',\n '\\u1E5F': 'r',\n '\\u024D': 'r',\n '\\u027D': 'r',\n '\\uA75B': 'r',\n '\\uA7A7': 'r',\n '\\uA783': 'r',\n '\\u24E2': 's',\n '\\uFF53': 's',\n '\\u00DF': 's',\n '\\u015B': 's',\n '\\u1E65': 's',\n '\\u015D': 's',\n '\\u1E61': 's',\n '\\u0161': 's',\n '\\u1E67': 's',\n '\\u1E63': 's',\n '\\u1E69': 's',\n '\\u0219': 's',\n '\\u015F': 's',\n '\\u023F': 's',\n '\\uA7A9': 's',\n '\\uA785': 's',\n '\\u1E9B': 's',\n '\\u24E3': 't',\n '\\uFF54': 't',\n '\\u1E6B': 't',\n '\\u1E97': 't',\n '\\u0165': 't',\n '\\u1E6D': 't',\n '\\u021B': 't',\n '\\u0163': 't',\n '\\u1E71': 't',\n '\\u1E6F': 't',\n '\\u0167': 't',\n '\\u01AD': 't',\n '\\u0288': 't',\n '\\u2C66': 't',\n '\\uA787': 't',\n '\\uA729': 'tz',\n '\\u24E4': 'u',\n '\\uFF55': 'u',\n '\\u00F9': 'u',\n '\\u00FA': 'u',\n '\\u00FB': 'u',\n '\\u0169': 'u',\n '\\u1E79': 'u',\n '\\u016B': 'u',\n '\\u1E7B': 'u',\n '\\u016D': 'u',\n '\\u00FC': 'u',\n '\\u01DC': 'u',\n '\\u01D8': 'u',\n '\\u01D6': 'u',\n '\\u01DA': 'u',\n '\\u1EE7': 'u',\n '\\u016F': 'u',\n '\\u0171': 'u',\n '\\u01D4': 'u',\n '\\u0215': 'u',\n '\\u0217': 'u',\n '\\u01B0': 'u',\n '\\u1EEB': 'u',\n '\\u1EE9': 'u',\n '\\u1EEF': 'u',\n '\\u1EED': 'u',\n '\\u1EF1': 'u',\n '\\u1EE5': 'u',\n '\\u1E73': 'u',\n '\\u0173': 'u',\n '\\u1E77': 'u',\n '\\u1E75': 'u',\n '\\u0289': 'u',\n '\\u24E5': 'v',\n '\\uFF56': 'v',\n '\\u1E7D': 'v',\n '\\u1E7F': 'v',\n '\\u028B': 'v',\n '\\uA75F': 'v',\n '\\u028C': 'v',\n '\\uA761': 'vy',\n '\\u24E6': 'w',\n '\\uFF57': 'w',\n '\\u1E81': 'w',\n '\\u1E83': 'w',\n '\\u0175': 'w',\n '\\u1E87': 'w',\n '\\u1E85': 'w',\n '\\u1E98': 'w',\n '\\u1E89': 'w',\n '\\u2C73': 'w',\n '\\u24E7': 'x',\n '\\uFF58': 'x',\n '\\u1E8B': 'x',\n '\\u1E8D': 'x',\n '\\u24E8': 'y',\n '\\uFF59': 'y',\n '\\u1EF3': 'y',\n '\\u00FD': 'y',\n '\\u0177': 'y',\n '\\u1EF9': 'y',\n '\\u0233': 'y',\n '\\u1E8F': 'y',\n '\\u00FF': 'y',\n '\\u1EF7': 'y',\n '\\u1E99': 'y',\n '\\u1EF5': 'y',\n '\\u01B4': 'y',\n '\\u024F': 'y',\n '\\u1EFF': 'y',\n '\\u24E9': 'z',\n '\\uFF5A': 'z',\n '\\u017A': 'z',\n '\\u1E91': 'z',\n '\\u017C': 'z',\n '\\u017E': 'z',\n '\\u1E93': 'z',\n '\\u1E95': 'z',\n '\\u01B6': 'z',\n '\\u0225': 'z',\n '\\u0240': 'z',\n '\\u2C6C': 'z',\n '\\uA763': 'z',\n '\\u0386': '\\u0391',\n '\\u0388': '\\u0395',\n '\\u0389': '\\u0397',\n '\\u038A': '\\u0399',\n '\\u03AA': '\\u0399',\n '\\u038C': '\\u039F',\n '\\u038E': '\\u03A5',\n '\\u03AB': '\\u03A5',\n '\\u038F': '\\u03A9',\n '\\u03AC': '\\u03B1',\n '\\u03AD': '\\u03B5',\n '\\u03AE': '\\u03B7',\n '\\u03AF': '\\u03B9',\n '\\u03CA': '\\u03B9',\n '\\u0390': '\\u03B9',\n '\\u03CC': '\\u03BF',\n '\\u03CD': '\\u03C5',\n '\\u03CB': '\\u03C5',\n '\\u03B0': '\\u03C5',\n '\\u03C9': '\\u03C9',\n '\\u03C2': '\\u03C3'\n };\n DataUtil.fnOperators = {\n /**\n * Returns true when the actual input is equal to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param {boolean} ignoreAccent?\n * @param ignoreCase\n * @param ignoreAccent\n */\n equal: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) === DataUtil.toLowerCase(expected);\n }\n return actual === expected;\n },\n /**\n * Returns true when the actual input is not equal to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n * @param ignoreAccent\n */\n notequal: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n return !DataUtil.fnOperators.equal(actual, expected, ignoreCase);\n },\n /**\n * Returns true when the actual input is less than to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n */\n lessthan: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) < DataUtil.toLowerCase(expected);\n }\n if (isNullOrUndefined(actual)) {\n actual = undefined;\n }\n return actual < expected;\n },\n /**\n * Returns true when the actual input is greater than to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n */\n greaterthan: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) > DataUtil.toLowerCase(expected);\n }\n return actual > expected;\n },\n /**\n * Returns true when the actual input is less than or equal to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n */\n lessthanorequal: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) <= DataUtil.toLowerCase(expected);\n }\n if (isNullOrUndefined(actual)) {\n actual = undefined;\n }\n return actual <= expected;\n },\n /**\n * Returns true when the actual input is greater than or equal to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n */\n greaterthanorequal: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) >= DataUtil.toLowerCase(expected);\n }\n return actual >= expected;\n },\n /**\n * Returns true when the actual input contains the given string.\n *\n * @param {string|number} actual\n * @param {string|number} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n * @param ignoreAccent\n */\n contains: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n DataUtil.toLowerCase(actual).indexOf(DataUtil.toLowerCase(expected)) !== -1;\n }\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n actual.toString().indexOf(expected) !== -1;\n },\n /**\n * Returns true when the actual input not contains the given string.\n *\n * @param {string|number} actual\n * @param {string|number} expected\n * @param {boolean} ignoreCase?\n */\n doesnotcontain: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n DataUtil.toLowerCase(actual).indexOf(DataUtil.toLowerCase(expected)) === -1;\n }\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n actual.toString().indexOf(expected) === -1;\n },\n /**\n * Returns true when the given input value is not null.\n *\n * @param {string|number} actual\n * @returns boolean\n */\n isnotnull: function (actual) {\n return actual !== null && actual !== undefined;\n },\n /**\n * Returns true when the given input value is null.\n *\n * @param {string|number} actual\n * @returns boolean\n */\n isnull: function (actual) {\n return actual === null || actual === undefined;\n },\n /**\n * Returns true when the actual input starts with the given string\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n * @param ignoreAccent\n */\n startswith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.startsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.startsWith(actual, expected);\n },\n /**\n * Returns true when the actual input not starts with the given string\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n doesnotstartwith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.notStartsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.notStartsWith(actual, expected);\n },\n /**\n * Returns true when the actual input like with the given string.\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n like: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.like(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.like(actual, expected);\n },\n /**\n * Returns true when the given input value is empty.\n *\n * @param {string|number} actual\n * @returns boolean\n */\n isempty: function (actual) {\n return actual === undefined || actual === '';\n },\n /**\n * Returns true when the given input value is not empty.\n *\n * @param {string|number} actual\n * @returns boolean\n */\n isnotempty: function (actual) {\n return actual !== undefined && actual !== '';\n },\n /**\n * Returns true when the actual input pattern(wildcard) matches with the given string.\n *\n * @param {string|Date} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n wildcard: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return (actual || typeof actual === 'boolean') && expected && typeof actual !== 'object' &&\n DataUtil.wildCard(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return (actual || typeof actual === 'boolean') && expected && DataUtil.wildCard(actual, expected);\n },\n /**\n * Returns true when the actual input ends with the given string.\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n * @param ignoreAccent\n */\n endswith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.endsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.endsWith(actual, expected);\n },\n /**\n * Returns true when the actual input not ends with the given string.\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n doesnotendwith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.notEndsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.notEndsWith(actual, expected);\n },\n /**\n * It will return the filter operator based on the filter symbol.\n *\n * @param {string} operator\n * @hidden\n */\n processSymbols: function (operator) {\n var fnName = DataUtil.operatorSymbols[operator];\n if (fnName) {\n var fn = DataUtil.fnOperators[fnName];\n return fn;\n }\n return DataUtil.throwError('Query - Process Operator : Invalid operator');\n },\n /**\n * It will return the valid filter operator based on the specified operators.\n *\n * @param {string} operator\n * @hidden\n */\n processOperator: function (operator) {\n var fn = DataUtil.fnOperators[operator];\n if (fn) {\n return fn;\n }\n return DataUtil.fnOperators.processSymbols(operator);\n }\n };\n /**\n * To perform the parse operation on JSON data, like convert to string from JSON or convert to JSON from string.\n */\n DataUtil.parse = {\n /**\n * Parse the given string to the plain JavaScript object.\n *\n * @param {string|Object|Object[]} jsonText\n */\n parseJson: function (jsonText) {\n if (typeof jsonText === 'string' && (/^[\\s]*\\[|^[\\s]*\\{(.)+:/g.test(jsonText) || jsonText.indexOf('\"') === -1)) {\n jsonText = JSON.parse(jsonText, DataUtil.parse.jsonReviver);\n }\n else if (jsonText instanceof Array) {\n DataUtil.parse.iterateAndReviveArray(jsonText);\n }\n else if (typeof jsonText === 'object' && jsonText !== null) {\n DataUtil.parse.iterateAndReviveJson(jsonText);\n }\n return jsonText;\n },\n /**\n * It will perform on array of values.\n *\n * @param {string[]|Object[]} array\n * @hidden\n */\n iterateAndReviveArray: function (array) {\n for (var i = 0; i < array.length; i++) {\n if (typeof array[i] === 'object' && array[i] !== null) {\n DataUtil.parse.iterateAndReviveJson(array[i]);\n // eslint-disable-next-line no-useless-escape\n }\n else if (typeof array[i] === 'string' && (!/^[\\s]*\\[|^[\\s]*\\{(.)+:|\\\"/g.test(array[i]) ||\n array[i].toString().indexOf('\"') === -1)) {\n array[i] = DataUtil.parse.jsonReviver('', array[i]);\n }\n else {\n array[i] = DataUtil.parse.parseJson(array[i]);\n }\n }\n },\n /**\n * It will perform on JSON values\n *\n * @param {JSON} json\n * @hidden\n */\n iterateAndReviveJson: function (json) {\n var value;\n var keys = Object.keys(json);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var prop = keys_2[_i];\n if (DataUtil.startsWith(prop, '__')) {\n continue;\n }\n value = json[prop];\n if (typeof value === 'object') {\n if (value instanceof Array) {\n DataUtil.parse.iterateAndReviveArray(value);\n }\n else if (value) {\n DataUtil.parse.iterateAndReviveJson(value);\n }\n }\n else {\n json[prop] = DataUtil.parse.jsonReviver(json[prop], value);\n }\n }\n },\n /**\n * It will perform on JSON values\n *\n * @param {string} field\n * @param {string|Date} value\n * @hidden\n */\n jsonReviver: function (field, value) {\n if (typeof value === 'string') {\n // eslint-disable-next-line security/detect-unsafe-regex\n var ms = /^\\/Date\\(([+-]?[0-9]+)([+-][0-9]{4})?\\)\\/$/.exec(value);\n var offSet = DataUtil.timeZoneHandling ? DataUtil.serverTimezoneOffset : null;\n if (ms) {\n return DataUtil.dateParse.toTimeZone(new Date(parseInt(ms[1], 10)), offSet, true);\n // eslint-disable-next-line no-useless-escape, security/detect-unsafe-regex\n }\n else if (/^(\\d{4}\\-\\d\\d\\-\\d\\d([tT][\\d:\\.]*){1})([zZ]|([+\\-])(\\d\\d):?(\\d\\d))?$/.test(value)) {\n var isUTC = value.indexOf('Z') > -1 || value.indexOf('z') > -1;\n var arr = value.split(/[^0-9.]/);\n if (isUTC) {\n if (arr[5].indexOf('.') > -1) {\n var secondsMs = arr[5].split('.');\n arr[5] = secondsMs[0];\n arr[6] = new Date(value).getUTCMilliseconds().toString();\n }\n else {\n arr[6] = '00';\n }\n value = DataUtil.dateParse\n .toTimeZone(new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5] ? arr[5] : '00', 10), parseInt(arr[6], 10)), DataUtil.serverTimezoneOffset, false);\n }\n else {\n var utcFormat = new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5] ? arr[5] : '00', 10));\n var hrs = parseInt(arr[6], 10);\n var mins = parseInt(arr[7], 10);\n if (isNaN(hrs) && isNaN(mins)) {\n return utcFormat;\n }\n if (value.indexOf('+') > -1) {\n utcFormat.setHours(utcFormat.getHours() - hrs, utcFormat.getMinutes() - mins);\n }\n else {\n utcFormat.setHours(utcFormat.getHours() + hrs, utcFormat.getMinutes() + mins);\n }\n value = DataUtil.dateParse\n .toTimeZone(utcFormat, DataUtil.serverTimezoneOffset, false);\n }\n if (DataUtil.serverTimezoneOffset == null) {\n value = DataUtil.dateParse.addSelfOffset(value);\n }\n }\n }\n return value;\n },\n /**\n * Check wheather the given value is JSON or not.\n *\n * @param {Object[]} jsonData\n */\n isJson: function (jsonData) {\n if (typeof jsonData[0] === 'string') {\n return jsonData;\n }\n return DataUtil.parse.parseJson(jsonData);\n },\n /**\n * Checks wheather the given value is GUID or not.\n *\n * @param {string} value\n */\n isGuid: function (value) {\n // eslint-disable-next-line security/detect-unsafe-regex\n var regex = /[A-Fa-f0-9]{8}(?:-[A-Fa-f0-9]{4}){3}-[A-Fa-f0-9]{12}/i;\n var match = regex.exec(value);\n return match != null;\n },\n /**\n * The method used to replace the value based on the type.\n *\n * @param {Object} value\n * @param {boolean} stringify\n * @hidden\n */\n replacer: function (value, stringify) {\n if (DataUtil.isPlainObject(value)) {\n return DataUtil.parse.jsonReplacer(value, stringify);\n }\n if (value instanceof Array) {\n return DataUtil.parse.arrayReplacer(value);\n }\n if (value instanceof Date) {\n return DataUtil.parse.jsonReplacer({ val: value }, stringify).val;\n }\n return value;\n },\n /**\n * It will replace the JSON value.\n *\n * @param {string} key\n * @param {Object} val\n * @param stringify\n * @hidden\n */\n jsonReplacer: function (val, stringify) {\n var value;\n var keys = Object.keys(val);\n for (var _i = 0, keys_3 = keys; _i < keys_3.length; _i++) {\n var prop = keys_3[_i];\n value = val[prop];\n if (!(value instanceof Date)) {\n continue;\n }\n var d = value;\n if (DataUtil.serverTimezoneOffset == null) {\n val[prop] = DataUtil.dateParse.toTimeZone(d, null).toJSON();\n }\n else {\n d = new Date(+d + DataUtil.serverTimezoneOffset * 3600000);\n val[prop] = DataUtil.dateParse.toTimeZone(DataUtil.dateParse.addSelfOffset(d), null).toJSON();\n }\n }\n return val;\n },\n /**\n * It will replace the Array of value.\n *\n * @param {string} key\n * @param {Object[]} val\n * @hidden\n */\n arrayReplacer: function (val) {\n for (var i = 0; i < val.length; i++) {\n if (DataUtil.isPlainObject(val[i])) {\n val[i] = DataUtil.parse.jsonReplacer(val[i]);\n }\n else if (val[i] instanceof Date) {\n val[i] = DataUtil.parse.jsonReplacer({ date: val[i] }).date;\n }\n }\n return val;\n },\n /**\n * It will replace the Date object with respective to UTC format value.\n *\n * @param {string} key\n * @param {any} value\n * @hidden\n */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n /* tslint:disable-next-line:no-any */\n jsonDateReplacer: function (key, value) {\n /* eslint-enable @typescript-eslint/no-explicit-any */\n if (key === 'value' && value) {\n if (typeof value === 'string') {\n // eslint-disable-next-line security/detect-unsafe-regex\n var ms = /^\\/Date\\(([+-]?[0-9]+)([+-][0-9]{4})?\\)\\/$/.exec(value);\n if (ms) {\n value = DataUtil.dateParse.toTimeZone(new Date(parseInt(ms[1], 10)), null, true);\n // eslint-disable-next-line no-useless-escape, security/detect-unsafe-regex\n }\n else if (/^(\\d{4}\\-\\d\\d\\-\\d\\d([tT][\\d:\\.]*){1})([zZ]|([+\\-])(\\d\\d):?(\\d\\d))?$/.test(value)) {\n var arr = value.split(/[^0-9]/);\n value = DataUtil.dateParse\n .toTimeZone(new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5], 10)), null, true);\n }\n }\n if (value instanceof Date) {\n value = DataUtil.dateParse.addSelfOffset(value);\n if (DataUtil.serverTimezoneOffset === null) {\n return DataUtil.dateParse.toTimeZone(DataUtil.dateParse.addSelfOffset(value), null).toJSON();\n }\n else {\n value = DataUtil.dateParse.toTimeZone(value, ((value.getTimezoneOffset() / 60)\n - DataUtil.serverTimezoneOffset), false);\n return value.toJSON();\n }\n }\n }\n return value;\n }\n };\n /**\n * @hidden\n */\n DataUtil.dateParse = {\n addSelfOffset: function (input) {\n return new Date(+input - (input.getTimezoneOffset() * 60000));\n },\n toUTC: function (input) {\n return new Date(+input + (input.getTimezoneOffset() * 60000));\n },\n toTimeZone: function (input, offset, utc) {\n if (offset === null) {\n return input;\n }\n var unix = utc ? DataUtil.dateParse.toUTC(input) : input;\n return new Date(+unix - (offset * 3600000));\n },\n toLocalTime: function (input) {\n var datefn = input;\n var timeZone = -datefn.getTimezoneOffset();\n var differenceString = timeZone >= 0 ? '+' : '-';\n var localtimefn = function (num) {\n var norm = Math.floor(Math.abs(num));\n return (norm < 10 ? '0' : '') + norm;\n };\n var val = datefn.getFullYear() + '-' + localtimefn(datefn.getMonth() + 1) + '-' + localtimefn(datefn.getDate()) +\n 'T' + localtimefn(datefn.getHours()) +\n ':' + localtimefn(datefn.getMinutes()) +\n ':' + localtimefn(datefn.getSeconds()) +\n differenceString + localtimefn(timeZone / 60) +\n ':' + localtimefn(timeZone % 60);\n return val;\n }\n };\n return DataUtil;\n}());\nexport { DataUtil };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { merge, extend, isNullOrUndefined, setValue, getValue } from '@syncfusion/ej2-base';\nimport { DataUtil } from './util';\nimport { Query, Predicate } from './query';\nvar consts = { GroupGuid: '{271bbba0-1ee7}' };\n/**\n * Adaptors are specific data source type aware interfaces that are used by DataManager to communicate with DataSource.\n * This is the base adaptor class that other adaptors can extend.\n *\n * @hidden\n */\nvar Adaptor = /** @class */ (function () {\n /**\n * Constructor for Adaptor class\n *\n * @param {DataOptions} ds?\n * @param ds\n * @hidden\n * @returns aggregates\n */\n function Adaptor(ds) {\n // common options for all the adaptors\n this.options = {\n from: 'table',\n requestType: 'json',\n sortBy: 'sorted',\n select: 'select',\n skip: 'skip',\n group: 'group',\n take: 'take',\n search: 'search',\n count: 'requiresCounts',\n where: 'where',\n aggregates: 'aggregates',\n expand: 'expand'\n };\n /**\n * Specifies the type of adaptor.\n *\n * @default Adaptor\n */\n this.type = Adaptor;\n this.dataSource = ds;\n this.pvt = {};\n }\n /**\n * Returns the data from the query processing.\n *\n * @param {Object} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {Request} xhr?\n * @param ds\n * @param query\n * @param xhr\n * @returns Object\n */\n Adaptor.prototype.processResponse = function (data, ds, query, xhr) {\n return data;\n };\n return Adaptor;\n}());\nexport { Adaptor };\n/**\n * JsonAdaptor is used to process JSON data. It contains methods to process the given JSON data based on the queries.\n *\n * @hidden\n */\nvar JsonAdaptor = /** @class */ (function (_super) {\n __extends(JsonAdaptor, _super);\n function JsonAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Process the JSON data based on the provided queries.\n *\n * @param {DataManager} dataManager\n * @param {Query} query\n * @returns Object\n */\n JsonAdaptor.prototype.processQuery = function (dataManager, query) {\n var result = dataManager.dataSource.json.slice(0);\n var count = result.length;\n var countFlg = true;\n var ret;\n var key;\n var lazyLoad = {};\n var keyCount = 0;\n var group = [];\n var sort = [];\n var page;\n for (var i = 0; i < query.lazyLoad.length; i++) {\n keyCount++;\n lazyLoad[query.lazyLoad[i].key] = query.lazyLoad[i].value;\n }\n var agg = {};\n var isGroupByFormat = false;\n if (query.lazyLoad.length) {\n for (var i = 0; i < query.queries.length; i++) {\n key = query.queries[i];\n if (key.fn === 'onGroup' && !isNullOrUndefined(key.e.format)) {\n isGroupByFormat = true;\n break;\n }\n }\n }\n for (var i = 0; i < query.queries.length; i++) {\n key = query.queries[i];\n if ((key.fn === 'onPage' || key.fn === 'onGroup' || (key.fn === 'onSortBy' && !isGroupByFormat)) && query.lazyLoad.length) {\n if (key.fn === 'onGroup') {\n group.push(key.e);\n }\n if (key.fn === 'onPage') {\n page = key.e;\n }\n if (key.fn === 'onSortBy') {\n sort.unshift(key.e);\n }\n continue;\n }\n ret = this[key.fn].call(this, result, key.e, query);\n if (key.fn === 'onAggregates') {\n agg[key.e.field + ' - ' + key.e.type] = ret;\n }\n else {\n result = ret !== undefined ? ret : result;\n }\n if (key.fn === 'onPage' || key.fn === 'onSkip' || key.fn === 'onTake' || key.fn === 'onRange') {\n countFlg = false;\n }\n if (countFlg) {\n count = result.length;\n }\n }\n if (keyCount) {\n var args = {\n query: query, lazyLoad: lazyLoad, result: result, group: group, page: page, sort: sort\n };\n var lazyLoadData = this.lazyLoadGroup(args);\n result = lazyLoadData.result;\n count = lazyLoadData.count;\n }\n if (query.isCountRequired) {\n result = {\n result: result,\n count: count,\n aggregates: agg\n };\n }\n return result;\n };\n /**\n * Perform lazy load grouping in JSON array based on the given query and lazy load details.\n *\n * @param {LazyLoadGroupArgs} args\n */\n JsonAdaptor.prototype.lazyLoadGroup = function (args) {\n var count = 0;\n var agg = this.getAggregate(args.query);\n var result = args.result;\n if (!isNullOrUndefined(args.lazyLoad.onDemandGroupInfo)) {\n var req = args.lazyLoad.onDemandGroupInfo;\n for (var i = req.where.length - 1; i >= 0; i--) {\n result = this.onWhere(result, req.where[i]);\n }\n if (args.group.length !== req.level) {\n var field = args.group[req.level].fieldName;\n result = DataUtil.group(result, field, agg, null, null, args.group[req.level].comparer, true);\n if (args.sort.length) {\n result = this.onSortBy(result, args.sort[parseInt(req.level.toString(), 10)], args.query, true);\n }\n }\n else {\n for (var i = args.sort.length - 1; i >= req.level; i--) {\n result = this.onSortBy(result, args.sort[parseInt(i.toString(), 10)], args.query, false);\n }\n }\n count = result.length;\n var data = result;\n result = result.slice(req.skip);\n result = result.slice(0, req.take);\n if (args.group.length !== req.level) {\n this.formGroupResult(result, data);\n }\n }\n else {\n var field_1 = args.group[0].fieldName;\n result = DataUtil.group(result, field_1, agg, null, null, args.group[0].comparer, true);\n count = result.length;\n var data = result;\n if (args.sort.length) {\n var sort = args.sort.length > 1 ?\n args.sort.filter(function (x) { return x.fieldName === field_1; })[0] : args.sort[0];\n result = this.onSortBy(result, sort, args.query, true);\n }\n if (args.page) {\n result = this.onPage(result, args.page, args.query);\n }\n this.formGroupResult(result, data);\n }\n return { result: result, count: count };\n };\n JsonAdaptor.prototype.formGroupResult = function (result, data) {\n if (result.length && data.length) {\n var uid = 'GroupGuid';\n var childLevel = 'childLevels';\n var level = 'level';\n var records = 'records';\n result[uid] = data[uid];\n result[childLevel] = data[childLevel];\n result[level] = data[level];\n result[records] = data[records];\n }\n return result;\n };\n /**\n * Separate the aggregate query from the given queries\n *\n * @param {Query} query\n */\n JsonAdaptor.prototype.getAggregate = function (query) {\n var aggQuery = Query.filterQueries(query.queries, 'onAggregates');\n var agg = [];\n if (aggQuery.length) {\n var tmp = void 0;\n for (var i = 0; i < aggQuery.length; i++) {\n tmp = aggQuery[i].e;\n agg.push({ type: tmp.type, field: DataUtil.getValue(tmp.field, query) });\n }\n }\n return agg;\n };\n /**\n * Performs batch update in the JSON array which add, remove and update records.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n */\n JsonAdaptor.prototype.batchRequest = function (dm, changes, e) {\n var i;\n var deletedRecordsLen = changes.deletedRecords.length;\n for (i = 0; i < changes.addedRecords.length; i++) {\n this.insert(dm, changes.addedRecords[i]);\n }\n for (i = 0; i < changes.changedRecords.length; i++) {\n this.update(dm, e.key, changes.changedRecords[i]);\n }\n for (i = 0; i < deletedRecordsLen; i++) {\n this.remove(dm, e.key, changes.deletedRecords[i]);\n }\n return changes;\n };\n /**\n * Performs filter operation with the given data and where query.\n *\n * @param {Object[]} ds\n * @param {{validate:Function}} e\n * @param e.validate\n */\n JsonAdaptor.prototype.onWhere = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.filter(function (obj) {\n if (e) {\n return e.validate(obj);\n }\n });\n };\n /**\n * Returns aggregate function based on the aggregate type.\n *\n * @param {Object[]} ds\n * @param e\n * @param {string} } type\n * @param e.field\n * @param e.type\n */\n JsonAdaptor.prototype.onAggregates = function (ds, e) {\n var fn = DataUtil.aggregates[e.type];\n if (!ds || !fn || ds.length === 0) {\n return null;\n }\n return fn(ds, e.field);\n };\n /**\n * Performs search operation based on the given query.\n *\n * @param {Object[]} ds\n * @param {QueryOptions} e\n */\n JsonAdaptor.prototype.onSearch = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n if (e.fieldNames.length === 0) {\n DataUtil.getFieldList(ds[0], e.fieldNames);\n }\n return ds.filter(function (obj) {\n for (var j = 0; j < e.fieldNames.length; j++) {\n if (e.comparer.call(obj, DataUtil.getObject(e.fieldNames[j], obj), e.searchKey, e.ignoreCase, e.ignoreAccent)) {\n return true;\n }\n }\n return false;\n });\n };\n /**\n * Sort the data with given direction and field.\n *\n * @param {Object[]} ds\n * @param e\n * @param {Object} b\n * @param e.comparer\n * @param e.fieldName\n * @param query\n * @param isLazyLoadGroupSort\n */\n JsonAdaptor.prototype.onSortBy = function (ds, e, query, isLazyLoadGroupSort) {\n if (!ds || !ds.length) {\n return ds;\n }\n var fnCompare;\n var field = DataUtil.getValue(e.fieldName, query);\n if (!field) {\n return ds.sort(e.comparer);\n }\n if (field instanceof Array) {\n field = field.slice(0);\n for (var i = field.length - 1; i >= 0; i--) {\n if (!field[i]) {\n continue;\n }\n fnCompare = e.comparer;\n if (DataUtil.endsWith(field[i], ' desc')) {\n fnCompare = DataUtil.fnSort('descending');\n field[i] = field[i].replace(' desc', '');\n }\n ds = DataUtil.sort(ds, field[i], fnCompare);\n }\n return ds;\n }\n return DataUtil.sort(ds, isLazyLoadGroupSort ? 'key' : field, e.comparer);\n };\n /**\n * Group the data based on the given query.\n *\n * @param {Object[]} ds\n * @param {QueryOptions} e\n * @param {Query} query\n */\n JsonAdaptor.prototype.onGroup = function (ds, e, query) {\n if (!ds || !ds.length) {\n return ds;\n }\n var agg = this.getAggregate(query);\n return DataUtil.group(ds, DataUtil.getValue(e.fieldName, query), agg, null, null, e.comparer);\n };\n /**\n * Retrieves records based on the given page index and size.\n *\n * @param {Object[]} ds\n * @param e\n * @param {number} } pageIndex\n * @param e.pageSize\n * @param {Query} query\n * @param e.pageIndex\n */\n JsonAdaptor.prototype.onPage = function (ds, e, query) {\n var size = DataUtil.getValue(e.pageSize, query);\n var start = (DataUtil.getValue(e.pageIndex, query) - 1) * size;\n var end = start + size;\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(start, end);\n };\n /**\n * Retrieves records based on the given start and end index from query.\n *\n * @param {Object[]} ds\n * @param e\n * @param {number} } end\n * @param e.start\n * @param e.end\n */\n JsonAdaptor.prototype.onRange = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(DataUtil.getValue(e.start), DataUtil.getValue(e.end));\n };\n /**\n * Picks the given count of records from the top of the datasource.\n *\n * @param {Object[]} ds\n * @param {{nos:number}} e\n * @param e.nos\n */\n JsonAdaptor.prototype.onTake = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(0, DataUtil.getValue(e.nos));\n };\n /**\n * Skips the given count of records from the data source.\n *\n * @param {Object[]} ds\n * @param {{nos:number}} e\n * @param e.nos\n */\n JsonAdaptor.prototype.onSkip = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(DataUtil.getValue(e.nos));\n };\n /**\n * Selects specified columns from the data source.\n *\n * @param {Object[]} ds\n * @param {{fieldNames:string}} e\n * @param e.fieldNames\n */\n JsonAdaptor.prototype.onSelect = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return DataUtil.select(ds, DataUtil.getValue(e.fieldNames));\n };\n /**\n * Inserts new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param tableName\n * @param query\n * @param {number} position\n */\n JsonAdaptor.prototype.insert = function (dm, data, tableName, query, position) {\n if (isNullOrUndefined(position)) {\n return dm.dataSource.json.push(data);\n }\n else {\n return dm.dataSource.json.splice(position, 0, data);\n }\n };\n /**\n * Remove the data from the dataSource based on the key field value.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n * @returns null\n */\n JsonAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n var ds = dm.dataSource.json;\n var i;\n if (typeof value === 'object' && !(value instanceof Date)) {\n value = DataUtil.getObject(keyField, value);\n }\n for (i = 0; i < ds.length; i++) {\n if (DataUtil.getObject(keyField, ds[i]) === value) {\n break;\n }\n }\n return i !== ds.length ? ds.splice(i, 1) : null;\n };\n /**\n * Updates existing record and saves the changes to the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n * @returns null\n */\n JsonAdaptor.prototype.update = function (dm, keyField, value, tableName) {\n var ds = dm.dataSource.json;\n var i;\n var key;\n if (!isNullOrUndefined(keyField)) {\n key = getValue(keyField, value);\n }\n for (i = 0; i < ds.length; i++) {\n if (!isNullOrUndefined(keyField) && (getValue(keyField, ds[i])) === key) {\n break;\n }\n }\n return i < ds.length ? merge(ds[i], value) : null;\n };\n return JsonAdaptor;\n}(Adaptor));\nexport { JsonAdaptor };\n/**\n * URL Adaptor of DataManager can be used when you are required to use remote service to retrieve data.\n * It interacts with server-side for all DataManager Queries and CRUD operations.\n *\n * @hidden\n */\nvar UrlAdaptor = /** @class */ (function (_super) {\n __extends(UrlAdaptor, _super);\n function UrlAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Process the query to generate request body.\n *\n * @param {DataManager} dm\n * @param {Query} query\n * @param {Object[]} hierarchyFilters?\n * @param hierarchyFilters\n * @returns p\n */\n // tslint:disable-next-line:max-func-body-length\n UrlAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var queries = this.getQueryRequest(query);\n var singles = Query.filterQueryLists(query.queries, ['onSelect', 'onPage', 'onSkip', 'onTake', 'onRange']);\n var params = query.params;\n var url = dm.dataSource.url;\n var temp;\n var skip;\n var take = null;\n var options = this.options;\n var request = { sorts: [], groups: [], filters: [], searches: [], aggregates: [] };\n // calc Paging & Range\n if ('onPage' in singles) {\n temp = singles.onPage;\n skip = DataUtil.getValue(temp.pageIndex, query);\n take = DataUtil.getValue(temp.pageSize, query);\n skip = (skip - 1) * take;\n }\n else if ('onRange' in singles) {\n temp = singles.onRange;\n skip = temp.start;\n take = temp.end - temp.start;\n }\n // Sorting\n for (var i = 0; i < queries.sorts.length; i++) {\n temp = DataUtil.getValue(queries.sorts[i].e.fieldName, query);\n request.sorts.push(DataUtil.callAdaptorFunction(this, 'onEachSort', { name: temp, direction: queries.sorts[i].e.direction }, query));\n }\n // hierarchy\n if (hierarchyFilters) {\n temp = this.getFiltersFrom(hierarchyFilters, query);\n if (temp) {\n request.filters.push(DataUtil.callAdaptorFunction(this, 'onEachWhere', temp.toJson(), query));\n }\n }\n // Filters\n for (var i = 0; i < queries.filters.length; i++) {\n var res = DataUtil.callAdaptorFunction(this, 'onEachWhere', queries.filters[i].e.toJson(), query);\n if ((this.getModuleName &&\n this.getModuleName() === 'ODataV4Adaptor') &&\n !isNullOrUndefined(queries.filters[i].e.key) && queries.filters.length > 1) {\n res = '(' + res + ')';\n }\n request.filters.push(res);\n var keys_3 = typeof request.filters[i] === 'object' ? Object.keys(request.filters[i]) : [];\n for (var _i = 0, keys_1 = keys_3; _i < keys_1.length; _i++) {\n var prop = keys_1[_i];\n if (DataUtil.isNull((request)[prop])) {\n delete request[prop];\n }\n }\n }\n // Searches\n for (var i = 0; i < queries.searches.length; i++) {\n temp = queries.searches[i].e;\n request.searches.push(DataUtil.callAdaptorFunction(this, 'onEachSearch', {\n fields: temp.fieldNames,\n operator: temp.operator,\n key: temp.searchKey,\n ignoreCase: temp.ignoreCase\n }, query));\n }\n // Grouping\n for (var i = 0; i < queries.groups.length; i++) {\n request.groups.push(DataUtil.getValue(queries.groups[i].e.fieldName, query));\n }\n // aggregates\n for (var i = 0; i < queries.aggregates.length; i++) {\n temp = queries.aggregates[i].e;\n request.aggregates.push({ type: temp.type, field: DataUtil.getValue(temp.field, query) });\n }\n var req = {};\n this.getRequestQuery(options, query, singles, request, req);\n // Params\n DataUtil.callAdaptorFunction(this, 'addParams', { dm: dm, query: query, params: params, reqParams: req });\n if (query.lazyLoad.length) {\n for (var i = 0; i < query.lazyLoad.length; i++) {\n req[query.lazyLoad[i].key] = query.lazyLoad[i].value;\n }\n }\n // cleanup\n var keys = Object.keys(req);\n for (var _a = 0, keys_2 = keys; _a < keys_2.length; _a++) {\n var prop = keys_2[_a];\n if (DataUtil.isNull(req[prop]) || req[prop] === '' || req[prop].length === 0) {\n delete req[prop];\n }\n }\n if (!(options.skip in req && options.take in req) && take !== null) {\n req[options.skip] = DataUtil.callAdaptorFunction(this, 'onSkip', skip, query);\n req[options.take] = DataUtil.callAdaptorFunction(this, 'onTake', take, query);\n }\n var p = this.pvt;\n this.pvt = {};\n if (this.options.requestType === 'json') {\n return {\n data: JSON.stringify(req, DataUtil.parse.jsonDateReplacer),\n url: url,\n pvtData: p,\n type: 'POST',\n contentType: 'application/json; charset=utf-8'\n };\n }\n temp = this.convertToQueryString(req, query, dm);\n temp = (dm.dataSource.url.indexOf('?') !== -1 ? '&' : '/') + temp;\n return {\n type: 'GET', url: temp.length ? url.replace(/\\/*$/, temp) : url, pvtData: p\n };\n };\n UrlAdaptor.prototype.getRequestQuery = function (options, query, singles, request, request1) {\n var param = 'param';\n var req = request1;\n req[options.from] = query.fromTable;\n if (options.apply && query.distincts.length) {\n req[options.apply] = 'onDistinct' in this ? DataUtil.callAdaptorFunction(this, 'onDistinct', query.distincts) : '';\n }\n if (!query.distincts.length && options.expand) {\n req[options.expand] = 'onExpand' in this && 'onSelect' in singles ?\n DataUtil.callAdaptorFunction(this, 'onExpand', { selects: DataUtil.getValue(singles.onSelect.fieldNames, query), expands: query.expands }, query) : query.expands;\n }\n req[options.select] = 'onSelect' in singles && !query.distincts.length ?\n DataUtil.callAdaptorFunction(this, 'onSelect', DataUtil.getValue(singles.onSelect.fieldNames, query), query) : '';\n req[options.count] = query.isCountRequired ? DataUtil.callAdaptorFunction(this, 'onCount', query.isCountRequired, query) : '';\n req[options.search] = request.searches.length ? DataUtil.callAdaptorFunction(this, 'onSearch', request.searches, query) : '';\n req[options.skip] = 'onSkip' in singles ?\n DataUtil.callAdaptorFunction(this, 'onSkip', DataUtil.getValue(singles.onSkip.nos, query), query) : '';\n req[options.take] = 'onTake' in singles ?\n DataUtil.callAdaptorFunction(this, 'onTake', DataUtil.getValue(singles.onTake.nos, query), query) : '';\n req[options.where] = request.filters.length || request.searches.length ?\n DataUtil.callAdaptorFunction(this, 'onWhere', request.filters, query) : '';\n req[options.sortBy] = request.sorts.length ? DataUtil.callAdaptorFunction(this, 'onSortBy', request.sorts, query) : '';\n req[options.group] = request.groups.length ? DataUtil.callAdaptorFunction(this, 'onGroup', request.groups, query) : '';\n req[options.aggregates] = request.aggregates.length ?\n DataUtil.callAdaptorFunction(this, 'onAggregates', request.aggregates, query) : '';\n req[param] = [];\n };\n /**\n * Convert the object from processQuery to string which can be added query string.\n *\n * @param {Object} req\n * @param request\n * @param {Query} query\n * @param {DataManager} dm\n */\n UrlAdaptor.prototype.convertToQueryString = function (request, query, dm) {\n return '';\n // this needs to be overridden\n };\n /**\n * Return the data from the data manager processing.\n *\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {Request} xhr?\n * @param {Object} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n */\n UrlAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n if (xhr && xhr.headers.get('Content-Type') &&\n xhr.headers.get('Content-Type').indexOf('application/json') !== -1) {\n var handleTimeZone = DataUtil.timeZoneHandling;\n if (ds && !ds.timeZoneHandling) {\n DataUtil.timeZoneHandling = false;\n }\n data = DataUtil.parse.parseJson(data);\n DataUtil.timeZoneHandling = handleTimeZone;\n }\n var requests = request;\n var pvt = requests.pvtData || {};\n var groupDs = data ? data.groupDs : [];\n if (xhr && xhr.headers.get('Content-Type') &&\n xhr.headers.get('Content-Type').indexOf('xml') !== -1) {\n return (query.isCountRequired ? { result: [], count: 0 } : []);\n }\n var d = JSON.parse(requests.data);\n if (d && d.action === 'batch' && data && data.addedRecords && !isNullOrUndefined(changes)) {\n changes.addedRecords = data.addedRecords;\n return changes;\n }\n if (data && data.d) {\n data = data.d;\n }\n var args = {};\n if (data && 'count' in data) {\n args.count = data.count;\n }\n args.result = data && data.result ? data.result : data;\n var isExpand = false;\n if (Array.isArray(data.result) && data.result.length) {\n var key = 'key';\n var val = 'value';\n var level = 'level';\n if (!isNullOrUndefined(data.result[0][key])) {\n args.result = this.formRemoteGroupedData(args.result, 1, pvt.groups.length - 1);\n }\n if (query && query.lazyLoad.length && pvt.groups.length) {\n for (var i = 0; i < query.lazyLoad.length; i++) {\n if (query.lazyLoad[i][key] === 'onDemandGroupInfo') {\n var value = query.lazyLoad[i][val][level];\n if (pvt.groups.length === value) {\n isExpand = true;\n }\n }\n }\n }\n }\n if (!isExpand) {\n this.getAggregateResult(pvt, data, args, groupDs, query);\n }\n return DataUtil.isNull(args.count) ? args.result : { result: args.result, count: args.count, aggregates: args.aggregates };\n };\n UrlAdaptor.prototype.formRemoteGroupedData = function (data, level, childLevel) {\n for (var i = 0; i < data.length; i++) {\n if (data[i].items.length && Object.keys(data[i].items[0]).indexOf('key') > -1) {\n this.formRemoteGroupedData(data[i].items, level + 1, childLevel - 1);\n }\n }\n var uid = 'GroupGuid';\n var childLvl = 'childLevels';\n var lvl = 'level';\n var records = 'records';\n data[uid] = consts[uid];\n data[lvl] = level;\n data[childLvl] = childLevel;\n data[records] = data[0].items.length ? this.getGroupedRecords(data, !isNullOrUndefined(data[0].items[records])) : [];\n return data;\n };\n UrlAdaptor.prototype.getGroupedRecords = function (data, hasRecords) {\n var childGroupedRecords = [];\n var records = 'records';\n for (var i = 0; i < data.length; i++) {\n if (!hasRecords) {\n for (var j = 0; j < data[i].items.length; j++) {\n childGroupedRecords.push(data[i].items[j]);\n }\n }\n else {\n childGroupedRecords = childGroupedRecords.concat(data[i].items[records]);\n }\n }\n return childGroupedRecords;\n };\n /**\n * Add the group query to the adaptor`s option.\n *\n * @param {Object[]} e\n * @returns void\n */\n UrlAdaptor.prototype.onGroup = function (e) {\n this.pvt.groups = e;\n return e;\n };\n /**\n * Add the aggregate query to the adaptor`s option.\n *\n * @param {Aggregates[]} e\n * @returns void\n */\n UrlAdaptor.prototype.onAggregates = function (e) {\n this.pvt.aggregates = e;\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {Object} e\n * @param query\n * @param original\n */\n UrlAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n var url;\n var key;\n return {\n type: 'POST',\n url: dm.dataSource.batchUrl || dm.dataSource.crudUrl || dm.dataSource.removeUrl || dm.dataSource.url,\n contentType: 'application/json; charset=utf-8',\n dataType: 'json',\n data: JSON.stringify(extend({}, {\n changed: changes.changedRecords,\n added: changes.addedRecords,\n deleted: changes.deletedRecords,\n action: 'batch',\n table: e[url],\n key: e[key]\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {Request} request\n * @param {Fetch} settings?\n * @returns void\n */\n UrlAdaptor.prototype.beforeSend = function (dm, request, settings) {\n // need to extend this method\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName\n * @param query\n */\n UrlAdaptor.prototype.insert = function (dm, data, tableName, query) {\n return {\n url: dm.dataSource.insertUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: data,\n table: tableName,\n action: 'insert'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number|string} value\n * @param {string} tableName\n * @param query\n */\n UrlAdaptor.prototype.remove = function (dm, keyField, value, tableName, query) {\n return {\n type: 'POST',\n url: dm.dataSource.removeUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n key: value,\n keyColumn: keyField,\n table: tableName,\n action: 'remove'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * Prepare and return request body which is used to update record.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName\n * @param query\n */\n UrlAdaptor.prototype.update = function (dm, keyField, value, tableName, query) {\n return {\n type: 'POST',\n url: dm.dataSource.updateUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: value,\n action: 'update',\n keyColumn: keyField,\n key: DataUtil.getObject(keyField, value),\n table: tableName\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * To generate the predicate based on the filtered query.\n *\n * @param {Object[]|string[]|number[]} data\n * @param {Query} query\n * @hidden\n */\n UrlAdaptor.prototype.getFiltersFrom = function (data, query) {\n var key = query.fKey;\n var value;\n var prop = key;\n var pKey = query.key;\n var predicats = [];\n if (typeof data[0] !== 'object') {\n prop = null;\n }\n for (var i = 0; i < data.length; i++) {\n if (typeof data[0] === 'object') {\n value = DataUtil.getObject(pKey || prop, data[i]);\n }\n else {\n value = data[i];\n }\n predicats.push(new Predicate(key, 'equal', value));\n }\n return Predicate.or(predicats);\n };\n UrlAdaptor.prototype.getAggregateResult = function (pvt, data, args, groupDs, query) {\n var pData = data;\n if (data && data.result) {\n pData = data.result;\n }\n if (pvt && pvt.aggregates && pvt.aggregates.length) {\n var agg = pvt.aggregates;\n var fn = void 0;\n var aggregateData = pData;\n var res = {};\n if (data.aggregate) {\n aggregateData = data.aggregate;\n }\n for (var i = 0; i < agg.length; i++) {\n fn = DataUtil.aggregates[agg[i].type];\n if (fn) {\n res[agg[i].field + ' - ' + agg[i].type] = fn(aggregateData, agg[i].field);\n }\n }\n args.aggregates = res;\n }\n var key = 'key';\n var isServerGrouping = Array.isArray(data.result) && data.result.length && !isNullOrUndefined(data.result[0][key]);\n if (pvt && pvt.groups && pvt.groups.length && !isServerGrouping) {\n var groups = pvt.groups;\n for (var i = 0; i < groups.length; i++) {\n var level = null;\n if (!isNullOrUndefined(groupDs)) {\n groupDs = DataUtil.group(groupDs, groups[i]);\n }\n var groupQuery = Query.filterQueries(query.queries, 'onGroup')[i].e;\n pData = DataUtil.group(pData, groups[i], pvt.aggregates, level, groupDs, groupQuery.comparer);\n }\n args.result = pData;\n }\n return args;\n };\n UrlAdaptor.prototype.getQueryRequest = function (query) {\n var req = { sorts: [], groups: [], filters: [], searches: [], aggregates: [] };\n req.sorts = Query.filterQueries(query.queries, 'onSortBy');\n req.groups = Query.filterQueries(query.queries, 'onGroup');\n req.filters = Query.filterQueries(query.queries, 'onWhere');\n req.searches = Query.filterQueries(query.queries, 'onSearch');\n req.aggregates = Query.filterQueries(query.queries, 'onAggregates');\n return req;\n };\n UrlAdaptor.prototype.addParams = function (options) {\n var req = options.reqParams;\n if (options.params.length) {\n req.params = {};\n }\n for (var _i = 0, _a = options.params; _i < _a.length; _i++) {\n var tmp = _a[_i];\n if (req[tmp.key]) {\n throw new Error('Query() - addParams: Custom Param is conflicting other request arguments');\n }\n req[tmp.key] = tmp.value;\n if (tmp.fn) {\n req[tmp.key] = tmp.fn.call(options.query, tmp.key, options.query, options.dm);\n }\n req.params[tmp.key] = req[tmp.key];\n }\n };\n return UrlAdaptor;\n}(Adaptor));\nexport { UrlAdaptor };\n/**\n * OData Adaptor that is extended from URL Adaptor, is used for consuming data through OData Service.\n *\n * @hidden\n */\nvar ODataAdaptor = /** @class */ (function (_super) {\n __extends(ODataAdaptor, _super);\n function ODataAdaptor(props) {\n var _this = _super.call(this) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n requestType: 'get',\n accept: 'application/json;odata=light;q=1,application/json;odata=verbose;q=0.5',\n multipartAccept: 'multipart/mixed',\n sortBy: '$orderby',\n select: '$select',\n skip: '$skip',\n take: '$top',\n count: '$inlinecount',\n where: '$filter',\n expand: '$expand',\n batch: '$batch',\n changeSet: '--changeset_',\n batchPre: 'batch_',\n contentId: 'Content-Id: ',\n batchContent: 'Content-Type: multipart/mixed; boundary=',\n changeSetContent: 'Content-Type: application/http\\nContent-Transfer-Encoding: binary ',\n batchChangeSetContentType: 'Content-Type: application/json; charset=utf-8 ',\n updateType: 'PUT'\n });\n extend(_this.options, props || {});\n return _this;\n }\n ODataAdaptor.prototype.getModuleName = function () {\n return 'ODataAdaptor';\n };\n /**\n * Generate request string based on the filter criteria from query.\n *\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n * @param predicate\n * @param query\n * @param requiresCast\n */\n ODataAdaptor.prototype.onPredicate = function (predicate, query, requiresCast) {\n var returnValue = '';\n var operator;\n var guid;\n var val = predicate.value;\n var type = typeof val;\n var field = predicate.field ? ODataAdaptor.getField(predicate.field) : null;\n if (val instanceof Date) {\n val = 'datetime\\'' + DataUtil.parse.replacer(val) + '\\'';\n }\n if (type === 'string') {\n val = val.replace(/'/g, '\\'\\'');\n if (predicate.ignoreCase) {\n val = val.toLowerCase();\n }\n if (predicate.operator !== 'like') {\n val = encodeURIComponent(val);\n }\n if (predicate.operator !== 'wildcard' && predicate.operator !== 'like') {\n val = '\\'' + val + '\\'';\n }\n if (requiresCast) {\n field = 'cast(' + field + ', \\'Edm.String\\')';\n }\n if (DataUtil.parse.isGuid(val)) {\n guid = 'guid';\n }\n if (predicate.ignoreCase) {\n if (!guid) {\n field = 'tolower(' + field + ')';\n }\n val = val.toLowerCase();\n }\n }\n if (predicate.operator === 'isempty' || predicate.operator === 'isnull' || predicate.operator === 'isnotempty' ||\n predicate.operator === 'isnotnull') {\n operator = predicate.operator.indexOf('isnot') !== -1 ? DataUtil.odBiOperator['notequal'] : DataUtil.odBiOperator['equal'];\n val = predicate.operator === 'isnull' || predicate.operator === 'isnotnull' ? null : '\\'\\'';\n }\n else {\n operator = DataUtil.odBiOperator[predicate.operator];\n }\n if (operator) {\n returnValue += field;\n returnValue += operator;\n if (guid) {\n returnValue += guid;\n }\n return returnValue + val;\n }\n if (!isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor') {\n operator = DataUtil.odv4UniOperator[predicate.operator];\n }\n else {\n operator = DataUtil.odUniOperator[predicate.operator];\n }\n if (operator === 'like') {\n val = val;\n if (val.indexOf('%') !== -1) {\n if (val.charAt(0) === '%' && val.lastIndexOf('%') < 2) {\n val = val.substring(1, val.length);\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['startswith'] : DataUtil.odUniOperator['startswith'];\n }\n else if (val.charAt(val.length - 1) === '%' && val.indexOf('%') > val.length - 3) {\n val = val.substring(0, val.length - 1);\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['endswith'] : DataUtil.odUniOperator['endswith'];\n }\n else if (val.lastIndexOf('%') !== val.indexOf('%') && val.lastIndexOf('%') > val.indexOf('%') + 1) {\n val = val.substring(val.indexOf('%') + 1, val.lastIndexOf('%'));\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n }\n else {\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n }\n }\n val = encodeURIComponent(val);\n val = '\\'' + val + '\\'';\n }\n else if (operator === 'wildcard') {\n val = val;\n if (val.indexOf('*') !== -1) {\n var splittedStringValue = val.split('*');\n var splittedValue = void 0;\n var count = 0;\n if (val.indexOf('*') !== 0 && splittedStringValue[0].indexOf('%3f') === -1 &&\n splittedStringValue[0].indexOf('?') === -1) {\n splittedValue = splittedStringValue[0];\n splittedValue = '\\'' + splittedValue + '\\'';\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['startswith'] : DataUtil.odUniOperator['startswith'];\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += splittedValue + ')';\n count++;\n }\n if (val.lastIndexOf('*') !== val.length - 1 && splittedStringValue[splittedStringValue.length - 1].indexOf('%3f') === -1 &&\n splittedStringValue[splittedStringValue.length - 1].indexOf('?') === -1) {\n splittedValue = splittedStringValue[splittedStringValue.length - 1];\n splittedValue = '\\'' + splittedValue + '\\'';\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['endswith'] : DataUtil.odUniOperator['endswith'];\n if (count > 0) {\n returnValue += ' and ';\n }\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += splittedValue + ')';\n count++;\n }\n if (splittedStringValue.length > 2) {\n for (var i = 1; i < splittedStringValue.length - 1; i++) {\n if (splittedStringValue[i].indexOf('%3f') === -1 && splittedStringValue[i].indexOf('?') === -1) {\n splittedValue = splittedStringValue[i];\n splittedValue = '\\'' + splittedValue + '\\'';\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n if (count > 0) {\n returnValue += ' and ';\n }\n if (operator === 'substringof' || operator === 'not substringof') {\n var temp = splittedValue;\n splittedValue = field;\n field = temp;\n }\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += splittedValue + ')';\n count++;\n }\n }\n }\n if (count === 0) {\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n if (val.indexOf('?') !== -1 || val.indexOf('%3f') !== -1) {\n val = val.indexOf('?') !== -1 ? val.split('?').join('') : val.split('%3f').join('');\n }\n val = '\\'' + val + '\\'';\n }\n else {\n operator = 'wildcard';\n }\n }\n else {\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n if (val.indexOf('?') !== -1 || val.indexOf('%3f') !== -1) {\n val = val.indexOf('?') !== -1 ? val.split('?').join('') : val.split('%3f').join('');\n }\n val = '\\'' + val + '\\'';\n }\n }\n if (operator === 'substringof' || operator === 'not substringof') {\n var temp = val;\n val = field;\n field = temp;\n }\n if (operator !== 'wildcard') {\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += val + ')';\n }\n return returnValue;\n };\n ODataAdaptor.prototype.addParams = function (options) {\n _super.prototype.addParams.call(this, options);\n delete options.reqParams.params;\n };\n /**\n * Generate request string based on the multiple filter criteria from query.\n *\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n * @param predicate\n * @param query\n * @param requiresCast\n */\n ODataAdaptor.prototype.onComplexPredicate = function (predicate, query, requiresCast) {\n var res = [];\n for (var i = 0; i < predicate.predicates.length; i++) {\n res.push('(' + this.onEachWhere(predicate.predicates[i], query, requiresCast) + ')');\n }\n return res.join(' ' + predicate.condition + ' ');\n };\n /**\n * Generate query string based on the multiple filter criteria from query.\n *\n * @param {Predicate} filter\n * @param {boolean} requiresCast?\n * @param query\n * @param requiresCast\n */\n ODataAdaptor.prototype.onEachWhere = function (filter, query, requiresCast) {\n return filter.isComplex ? this.onComplexPredicate(filter, query, requiresCast) : this.onPredicate(filter, query, requiresCast);\n };\n /**\n * Generate query string based on the multiple filter criteria from query.\n *\n * @param {string[]} filters\n */\n ODataAdaptor.prototype.onWhere = function (filters) {\n if (this.pvt.search) {\n filters.push(this.onEachWhere(this.pvt.search, null, true));\n }\n return filters.join(' and ');\n };\n /**\n * Generate query string based on the multiple search criteria from query.\n *\n * @param e\n * @param {string} operator\n * @param {string} key\n * @param {boolean} } ignoreCase\n * @param e.fields\n * @param e.operator\n * @param e.key\n * @param e.ignoreCase\n */\n ODataAdaptor.prototype.onEachSearch = function (e) {\n if (e.fields && e.fields.length === 0) {\n DataUtil.throwError('Query() - Search : oData search requires list of field names to search');\n }\n var filter = this.pvt.search || [];\n for (var i = 0; i < e.fields.length; i++) {\n filter.push(new Predicate(e.fields[i], e.operator, e.key, e.ignoreCase));\n }\n this.pvt.search = filter;\n };\n /**\n * Generate query string based on the search criteria from query.\n *\n * @param {Object} e\n */\n ODataAdaptor.prototype.onSearch = function (e) {\n this.pvt.search = Predicate.or(this.pvt.search);\n return '';\n };\n /**\n * Generate query string based on multiple sort criteria from query.\n *\n * @param {QueryOptions} e\n */\n ODataAdaptor.prototype.onEachSort = function (e) {\n var res = [];\n if (e.name instanceof Array) {\n for (var i = 0; i < e.name.length; i++) {\n res.push(ODataAdaptor.getField(e.name[i]) + (e.direction === 'descending' ? ' desc' : ''));\n }\n }\n else {\n res.push(ODataAdaptor.getField(e.name) + (e.direction === 'descending' ? ' desc' : ''));\n }\n return res.join(',');\n };\n /**\n * Returns sort query string.\n *\n * @param {string[]} e\n */\n ODataAdaptor.prototype.onSortBy = function (e) {\n return e.reverse().join(',');\n };\n /**\n * Adds the group query to the adaptor option.\n *\n * @param {Object[]} e\n * @returns string\n */\n ODataAdaptor.prototype.onGroup = function (e) {\n this.pvt.groups = e;\n return [];\n };\n /**\n * Returns the select query string.\n *\n * @param {string[]} e\n */\n ODataAdaptor.prototype.onSelect = function (e) {\n for (var i = 0; i < e.length; i++) {\n e[i] = ODataAdaptor.getField(e[i]);\n }\n return e.join(',');\n };\n /**\n * Add the aggregate query to the adaptor option.\n *\n * @param {Object[]} e\n * @returns string\n */\n ODataAdaptor.prototype.onAggregates = function (e) {\n this.pvt.aggregates = e;\n return '';\n };\n /**\n * Returns the query string which requests total count from the data source.\n *\n * @param {boolean} e\n * @returns string\n */\n ODataAdaptor.prototype.onCount = function (e) {\n return e === true ? 'allpages' : '';\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {Request} request\n * @param {Fetch} settings?\n * @param settings\n */\n ODataAdaptor.prototype.beforeSend = function (dm, request, settings) {\n if (DataUtil.endsWith(settings.url, this.options.batch) && settings.type.toLowerCase() === 'post') {\n request.headers.set('Accept', this.options.multipartAccept);\n request.headers.set('DataServiceVersion', '2.0');\n //request.overrideMimeType('text/plain; charset=x-user-defined');\n }\n else {\n request.headers.set('Accept', this.options.accept);\n }\n request.headers.set('DataServiceVersion', '2.0');\n request.headers.set('MaxDataServiceVersion', '2.0');\n };\n /**\n * Returns the data from the query processing.\n *\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {Request} xhr?\n * @param {Fetch} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n * @returns aggregateResult\n */\n ODataAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var metaCheck = 'odata.metadata';\n if ((request && request.type === 'GET') && !this.rootUrl && data[metaCheck]) {\n var dataUrls = data[metaCheck].split('/$metadata#');\n this.rootUrl = dataUrls[0];\n this.resourceTableName = dataUrls[1];\n }\n var pvtData = 'pvtData';\n if (!isNullOrUndefined(data.d)) {\n var dataCopy = ((query && query.isCountRequired) ? data.d.results : data.d);\n var metaData = '__metadata';\n if (!isNullOrUndefined(dataCopy)) {\n for (var i = 0; i < dataCopy.length; i++) {\n if (!isNullOrUndefined(dataCopy[i][metaData])) {\n delete dataCopy[i][metaData];\n }\n }\n }\n }\n var pvt = request && request[pvtData];\n var emptyAndBatch = this.processBatchResponse(data, query, xhr, request, changes);\n if (emptyAndBatch) {\n return emptyAndBatch;\n }\n var versionCheck = xhr && request.fetchRequest.headers.get('DataServiceVersion');\n var count = null;\n var version = (versionCheck && parseInt(versionCheck, 10)) || 2;\n if (query && query.isCountRequired) {\n var oDataCount = '__count';\n if (data[oDataCount] || data['odata.count']) {\n count = data[oDataCount] || data['odata.count'];\n }\n if (data.d) {\n data = data.d;\n }\n if (data[oDataCount] || data['odata.count']) {\n count = data[oDataCount] || data['odata.count'];\n }\n }\n if (version === 3 && data.value) {\n data = data.value;\n }\n if (data.d) {\n data = data.d;\n }\n if (version < 3 && data.results) {\n data = data.results;\n }\n var args = {};\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n return DataUtil.isNull(count) ? args.result : { result: args.result, count: args.count, aggregates: args.aggregates };\n };\n /**\n * Converts the request object to query string.\n *\n * @param {Object} req\n * @param request\n * @param {Query} query\n * @param {DataManager} dm\n * @returns tableName\n */\n ODataAdaptor.prototype.convertToQueryString = function (request, query, dm) {\n var res = [];\n var table = 'table';\n var tableName = request[table] || '';\n var format = '$format';\n delete request[table];\n if (dm.dataSource.requiresFormat) {\n request[format] = 'json';\n }\n var keys = Object.keys(request);\n for (var _i = 0, keys_4 = keys; _i < keys_4.length; _i++) {\n var prop = keys_4[_i];\n res.push(prop + '=' + request[prop]);\n }\n res = res.join('&');\n if (dm.dataSource.url && dm.dataSource.url.indexOf('?') !== -1 && !tableName) {\n return res;\n }\n return res.length ? tableName + '?' + res : tableName || '';\n };\n ODataAdaptor.prototype.localTimeReplacer = function (key, convertObj) {\n for (var _i = 0, _a = !isNullOrUndefined(convertObj) ? Object.keys(convertObj) : []; _i < _a.length; _i++) {\n var prop = _a[_i];\n if ((convertObj[prop] instanceof Date)) {\n convertObj[prop] = DataUtil.dateParse.toLocalTime(convertObj[prop]);\n }\n }\n return convertObj;\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n * @param tableName\n */\n ODataAdaptor.prototype.insert = function (dm, data, tableName) {\n return {\n url: (dm.dataSource.insertUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : ''),\n data: JSON.stringify(data, this.options.localTime ? this.localTimeReplacer : null)\n };\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number} value\n * @param {string} tableName?\n * @param tableName\n */\n ODataAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n var url;\n if (typeof value === 'string' && !DataUtil.parse.isGuid(value)) {\n url = \"('\" + value + \"')\";\n }\n else {\n url = \"(\" + value + \")\";\n }\n return {\n type: 'DELETE',\n url: (dm.dataSource.removeUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : '') + url\n };\n };\n /**\n * Updates existing record and saves the changes to the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n * @param query\n * @param original\n * @returns this\n */\n ODataAdaptor.prototype.update = function (dm, keyField, value, tableName, query, original) {\n if (this.options.updateType === 'PATCH' && !isNullOrUndefined(original)) {\n value = this.compareAndRemove(value, original, keyField);\n }\n var url;\n if (typeof value[keyField] === 'string' && !DataUtil.parse.isGuid(value[keyField])) {\n url = \"('\" + value[keyField] + \"')\";\n }\n else {\n url = \"(\" + value[keyField] + \")\";\n }\n return {\n type: this.options.updateType,\n url: (dm.dataSource.updateUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : '') + url,\n data: JSON.stringify(value, this.options.localTime ? this.localTimeReplacer : null),\n accept: this.options.accept\n };\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n * @param query\n * @param original\n * @returns {Object}\n */\n ODataAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n var initialGuid = e.guid = DataUtil.getGuid(this.options.batchPre);\n var url = (dm.dataSource.batchUrl || this.rootUrl) ?\n (dm.dataSource.batchUrl || this.rootUrl) + '/' + this.options.batch :\n (dm.dataSource.batchUrl || dm.dataSource.url).replace(/\\/*$/, '/' + this.options.batch);\n e.url = this.resourceTableName ? this.resourceTableName : e.url;\n var args = {\n url: e.url,\n key: e.key,\n cid: 1,\n cSet: DataUtil.getGuid(this.options.changeSet)\n };\n var req = '--' + initialGuid + '\\n';\n req += 'Content-Type: multipart/mixed; boundary=' + args.cSet.replace('--', '') + '\\n';\n this.pvt.changeSet = 0;\n req += this.generateInsertRequest(changes.addedRecords, args, dm);\n req += this.generateUpdateRequest(changes.changedRecords, args, dm, original ? original.changedRecords : []);\n req += this.generateDeleteRequest(changes.deletedRecords, args, dm);\n req += args.cSet + '--\\n';\n req += '--' + initialGuid + '--';\n return {\n type: 'POST',\n url: url,\n dataType: 'json',\n contentType: 'multipart/mixed; charset=UTF-8;boundary=' + initialGuid,\n data: req\n };\n };\n /**\n * Generate the string content from the removed records.\n * The result will be send during batch update.\n *\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n * @param dm\n * @returns this\n */\n ODataAdaptor.prototype.generateDeleteRequest = function (arr, e, dm) {\n if (!arr) {\n return '';\n }\n var req = '';\n var stat = {\n 'method': 'DELETE ',\n 'url': function (data, i, key) {\n var url = DataUtil.getObject(key, data[i]);\n if (typeof url === 'number' || DataUtil.parse.isGuid(url)) {\n return '(' + url + ')';\n }\n else if (url instanceof Date) {\n var dateTime = data[i][key];\n return '(' + dateTime.toJSON() + ')';\n }\n else {\n return \"('\" + url + \"')\";\n }\n },\n 'data': function (data, i) { return ''; }\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req + '\\n';\n };\n /**\n * Generate the string content from the inserted records.\n * The result will be send during batch update.\n *\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n * @param dm\n */\n ODataAdaptor.prototype.generateInsertRequest = function (arr, e, dm) {\n if (!arr) {\n return '';\n }\n var req = '';\n var stat = {\n 'method': 'POST ',\n 'url': function (data, i, key) { return ''; },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req;\n };\n /**\n * Generate the string content from the updated records.\n * The result will be send during batch update.\n *\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n * @param dm\n * @param org\n */\n ODataAdaptor.prototype.generateUpdateRequest = function (arr, e, dm, org) {\n var _this = this;\n if (!arr) {\n return '';\n }\n var req = '';\n arr.forEach(function (change) { return change = _this.compareAndRemove(change, org.filter(function (o) { return DataUtil.getObject(e.key, o) === DataUtil.getObject(e.key, change); })[0], e.key); });\n var stat = {\n 'method': this.options.updateType + ' ',\n 'url': function (data, i, key) {\n if (typeof data[i][key] === 'number' || DataUtil.parse.isGuid(data[i][key])) {\n return '(' + data[i][key] + ')';\n }\n else if (data[i][key] instanceof Date) {\n var date = data[i][key];\n return '(' + date.toJSON() + ')';\n }\n else {\n return \"('\" + data[i][key] + \"')\";\n }\n },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req;\n };\n ODataAdaptor.getField = function (prop) {\n return prop.replace(/\\./g, '/');\n };\n ODataAdaptor.prototype.generateBodyContent = function (arr, e, stat, dm) {\n var req = '';\n for (var i = 0; i < arr.length; i++) {\n req += '\\n' + e.cSet + '\\n';\n req += this.options.changeSetContent + '\\n\\n';\n req += stat.method;\n if (stat.method === 'POST ') {\n req += (dm.dataSource.insertUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n }\n else if (stat.method === 'PUT ' || stat.method === 'PATCH ') {\n req += (dm.dataSource.updateUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n }\n else if (stat.method === 'DELETE ') {\n req += (dm.dataSource.removeUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n }\n req += 'Accept: ' + this.options.accept + '\\n';\n req += 'Content-Id: ' + this.pvt.changeSet++ + '\\n';\n req += this.options.batchChangeSetContentType + '\\n';\n if (!isNullOrUndefined(arr[i]['@odata.etag'])) {\n req += 'If-Match: ' + arr[i]['@odata.etag'] + '\\n\\n';\n delete arr[i]['@odata.etag'];\n }\n else {\n req += '\\n';\n }\n req += stat.data(arr, i);\n }\n return req;\n };\n ODataAdaptor.prototype.processBatchResponse = function (data, query, xhr, request, changes) {\n if (xhr && xhr.headers.get('Content-Type') && xhr.headers.get('Content-Type').indexOf('xml') !== -1) {\n return (query.isCountRequired ? { result: [], count: 0 } : []);\n }\n if (request && this.options.batch && DataUtil.endsWith(request.url, this.options.batch) && request.type.toLowerCase() === 'post') {\n var guid = xhr.headers.get('Content-Type');\n var cIdx = void 0;\n var jsonObj = void 0;\n var d = data + '';\n guid = guid.substring(guid.indexOf('=batchresponse') + 1);\n d = d.split(guid);\n if (d.length < 2) {\n return {};\n }\n d = d[1];\n var exVal = /(?:\\bContent-Type.+boundary=)(changesetresponse.+)/i.exec(d);\n if (exVal) {\n d.replace(exVal[0], '');\n }\n var changeGuid = exVal ? exVal[1] : '';\n d = d.split(changeGuid);\n for (var i = d.length; i > -1; i--) {\n if (!/\\bContent-ID:/i.test(d[i]) || !/\\bHTTP.+201/.test(d[i])) {\n continue;\n }\n cIdx = parseInt(/\\bContent-ID: (\\d+)/i.exec(d[i])[1], 10);\n if (changes.addedRecords[cIdx]) {\n jsonObj = DataUtil.parse.parseJson(/^\\{.+\\}/m.exec(d[i])[0]);\n extend({}, changes.addedRecords[cIdx], this.processResponse(jsonObj));\n }\n }\n return changes;\n }\n return null;\n };\n ODataAdaptor.prototype.compareAndRemove = function (data, original, key) {\n var _this = this;\n if (isNullOrUndefined(original)) {\n return data;\n }\n Object.keys(data).forEach(function (prop) {\n if (prop !== key && prop !== '@odata.etag') {\n if (DataUtil.isPlainObject(data[prop])) {\n _this.compareAndRemove(data[prop], original[prop]);\n var final = Object.keys(data[prop]).filter(function (data) { return data !== '@odata.etag'; });\n if (final.length === 0) {\n delete data[prop];\n }\n }\n else if (data[prop] === original[prop]) {\n delete data[prop];\n }\n else if (data[prop] && original[prop] && data[prop].valueOf() === original[prop].valueOf()) {\n delete data[prop];\n }\n }\n });\n return data;\n };\n return ODataAdaptor;\n}(UrlAdaptor));\nexport { ODataAdaptor };\n/**\n * The OData v4 is an improved version of OData protocols.\n * The DataManager uses the ODataV4Adaptor to consume OData v4 services.\n *\n * @hidden\n */\nvar ODataV4Adaptor = /** @class */ (function (_super) {\n __extends(ODataV4Adaptor, _super);\n function ODataV4Adaptor(props) {\n var _this = _super.call(this, props) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n requestType: 'get',\n accept: 'application/json, text/javascript, */*; q=0.01',\n multipartAccept: 'multipart/mixed',\n sortBy: '$orderby',\n select: '$select',\n skip: '$skip',\n take: '$top',\n count: '$count',\n search: '$search',\n where: '$filter',\n expand: '$expand',\n batch: '$batch',\n changeSet: '--changeset_',\n batchPre: 'batch_',\n contentId: 'Content-Id: ',\n batchContent: 'Content-Type: multipart/mixed; boundary=',\n changeSetContent: 'Content-Type: application/http\\nContent-Transfer-Encoding: binary ',\n batchChangeSetContentType: 'Content-Type: application/json; charset=utf-8 ',\n updateType: 'PATCH',\n localTime: false,\n apply: '$apply'\n });\n extend(_this.options, props || {});\n return _this;\n }\n /**\n * @hidden\n */\n ODataV4Adaptor.prototype.getModuleName = function () {\n return 'ODataV4Adaptor';\n };\n /**\n * Returns the query string which requests total count from the data source.\n *\n * @param {boolean} e\n * @returns string\n */\n ODataV4Adaptor.prototype.onCount = function (e) {\n return e === true ? 'true' : '';\n };\n /**\n * Generate request string based on the filter criteria from query.\n *\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n * @param predicate\n * @param query\n * @param requiresCast\n */\n ODataV4Adaptor.prototype.onPredicate = function (predicate, query, requiresCast) {\n var returnValue = '';\n var val = predicate.value;\n var isDate = val instanceof Date;\n if (query instanceof Query) {\n var queries = this.getQueryRequest(query);\n for (var i = 0; i < queries.filters.length; i++) {\n if (queries.filters[i].e.key === predicate.value) {\n requiresCast = true;\n }\n }\n }\n returnValue = _super.prototype.onPredicate.call(this, predicate, query, requiresCast);\n if (isDate) {\n returnValue = returnValue.replace(/datetime'(.*)'$/, '$1');\n }\n if (DataUtil.parse.isGuid(val)) {\n returnValue = returnValue.replace('guid', '').replace(/'/g, '');\n }\n return returnValue;\n };\n /**\n * Generate query string based on the multiple search criteria from query.\n *\n * @param e\n * @param {string} operator\n * @param {string} key\n * @param {boolean} } ignoreCase\n * @param e.fields\n * @param e.operator\n * @param e.key\n * @param e.ignoreCase\n */\n ODataV4Adaptor.prototype.onEachSearch = function (e) {\n var search = this.pvt.searches || [];\n search.push(e.key);\n this.pvt.searches = search;\n };\n /**\n * Generate query string based on the search criteria from query.\n *\n * @param {Object} e\n */\n ODataV4Adaptor.prototype.onSearch = function (e) {\n return this.pvt.searches.join(' OR ');\n };\n /**\n * Returns the expand query string.\n *\n * @param {string} e\n * @param e.selects\n * @param e.expands\n */\n ODataV4Adaptor.prototype.onExpand = function (e) {\n var _this = this;\n var selected = {};\n var expanded = {};\n var expands = e.expands.slice();\n var exArr = [];\n var selects = e.selects.filter(function (item) { return item.indexOf('.') > -1; });\n selects.forEach(function (select) {\n var splits = select.split('.');\n if (!(splits[0] in selected)) {\n selected[splits[0]] = [];\n }\n if (splits.length === 2) {\n if (selected[splits[0]].length && Object.keys(selected).indexOf(splits[0]) !== -1) {\n if (selected[splits[0]][0].indexOf('$expand') !== -1 && selected[splits[0]][0].indexOf(';$select=') === -1) {\n selected[splits[0]][0] = selected[splits[0]][0] + ';' + '$select=' + splits[1];\n }\n else {\n selected[splits[0]][0] = selected[splits[0]][0] + ',' + splits[1];\n }\n }\n else {\n selected[splits[0]].push('$select=' + splits[1]);\n }\n }\n else {\n var sel = '$select=' + splits[splits.length - 1];\n var exp = '';\n var close_1 = '';\n for (var i = 1; i < splits.length - 1; i++) {\n exp = exp + '$expand=' + splits[i] + '(';\n close_1 = close_1 + ')';\n }\n var combineVal = exp + sel + close_1;\n if (selected[splits[0]].length && Object.keys(selected).indexOf(splits[0]) !== -1 &&\n _this.expandQueryIndex(selected[splits[0]], true)) {\n var idx = _this.expandQueryIndex(selected[splits[0]]);\n selected[splits[0]][idx] = selected[splits[0]][idx] + combineVal.replace('$expand=', ',');\n }\n else {\n selected[splits[0]].push(combineVal);\n }\n }\n });\n //Auto expand from select query\n Object.keys(selected).forEach(function (expand) {\n if ((expands.indexOf(expand) === -1)) {\n expands.push(expand);\n }\n });\n expands.forEach(function (expand) {\n expanded[expand] = expand in selected ? expand + \"(\" + selected[expand].join(';') + \")\" : expand;\n });\n Object.keys(expanded).forEach(function (ex) { return exArr.push(expanded[ex]); });\n return exArr.join(',');\n };\n ODataV4Adaptor.prototype.expandQueryIndex = function (query, isExpand) {\n for (var i = 0; i < query.length; i++) {\n if (query[i].indexOf('$expand') !== -1) {\n return isExpand ? true : i;\n }\n }\n return isExpand ? false : 0;\n };\n /**\n * Returns the groupby query string.\n *\n * @param {string} e\n * @param distinctFields\n */\n ODataV4Adaptor.prototype.onDistinct = function (distinctFields) {\n var fields = distinctFields.map(function (field) { return ODataAdaptor.getField(field); }).join(',');\n return \"groupby((\" + fields + \"))\";\n };\n /**\n * Returns the select query string.\n *\n * @param {string[]} e\n */\n ODataV4Adaptor.prototype.onSelect = function (e) {\n return _super.prototype.onSelect.call(this, e.filter(function (item) { return item.indexOf('.') === -1; }));\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {Request} request\n * @param {Fetch} settings\n * @returns void\n */\n ODataV4Adaptor.prototype.beforeSend = function (dm, request, settings) {\n if (settings.type === 'POST' || settings.type === 'PUT' || settings.type === 'PATCH') {\n request.headers.set('Prefer', 'return=representation');\n }\n request.headers.set('Accept', this.options.accept);\n };\n /**\n * Returns the data from the query processing.\n *\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {Request} xhr?\n * @param {Fetch} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n * @returns aggregateResult\n */\n ODataV4Adaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var metaName = '@odata.context';\n var metaV4Name = '@context';\n if ((request && request.type === 'GET') && !this.rootUrl && (data[metaName] || data[metaV4Name])) {\n var dataUrl = data[metaName] ? data[metaName].split('/$metadata#') : data[metaV4Name].split('/$metadata#');\n this.rootUrl = dataUrl[0];\n this.resourceTableName = dataUrl[1];\n }\n var pvtData = 'pvtData';\n var pvt = request && request[pvtData];\n var emptyAndBatch = _super.prototype.processBatchResponse.call(this, data, query, xhr, request, changes);\n if (emptyAndBatch) {\n return emptyAndBatch;\n }\n var count = null;\n var dataCount = '@odata.count';\n var dataV4Count = '@count';\n if (query && query.isCountRequired) {\n if (dataCount in data) {\n count = data[dataCount];\n }\n else if (dataV4Count in data) {\n count = data[dataV4Count];\n }\n }\n data = !isNullOrUndefined(data.value) ? data.value : data;\n var args = {};\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n return DataUtil.isNull(count) ? args.result : { result: args.result, count: count, aggregates: args.aggregates };\n };\n return ODataV4Adaptor;\n}(ODataAdaptor));\nexport { ODataV4Adaptor };\n/**\n * The Web API is a programmatic interface to define the request and response messages system that is mostly exposed in JSON or XML.\n * The DataManager uses the WebApiAdaptor to consume Web API.\n * Since this adaptor is targeted to interact with Web API created using OData endpoint, it is extended from ODataAdaptor\n *\n * @hidden\n */\nvar WebApiAdaptor = /** @class */ (function (_super) {\n __extends(WebApiAdaptor, _super);\n function WebApiAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n WebApiAdaptor.prototype.getModuleName = function () {\n return 'WebApiAdaptor';\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n * @param tableName\n */\n WebApiAdaptor.prototype.insert = function (dm, data, tableName) {\n return {\n type: 'POST',\n url: dm.dataSource.url,\n data: JSON.stringify(data)\n };\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number} value\n * @param {string} tableName?\n * @param tableName\n */\n WebApiAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n return {\n type: 'DELETE',\n url: dm.dataSource.url + '/' + value,\n data: JSON.stringify(value)\n };\n };\n /**\n * Prepare and return request body which is used to update record.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n */\n WebApiAdaptor.prototype.update = function (dm, keyField, value, tableName) {\n return {\n type: 'PUT',\n url: dm.dataSource.url,\n data: JSON.stringify(value)\n };\n };\n WebApiAdaptor.prototype.batchRequest = function (dm, changes, e) {\n var _this = this;\n var initialGuid = e.guid = DataUtil.getGuid(this.options.batchPre);\n var url = dm.dataSource.url.replace(/\\/*$/, '/' + this.options.batch);\n e.url = this.resourceTableName ? this.resourceTableName : e.url;\n var req = [];\n var _loop_1 = function (i, x) {\n changes.addedRecords.forEach(function (j, d) {\n var stat = {\n 'method': 'POST ',\n 'url': function (data, i, key) { return ''; },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('POST ' + '/api/' + (dm.dataSource.insertUrl || dm.dataSource.crudUrl || e.url)\n + stat.url(changes.addedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n };\n //insertion\n for (var i = 0, x = changes.addedRecords.length; i < x; i++) {\n _loop_1(i, x);\n }\n var _loop_2 = function (i, x) {\n changes.changedRecords.forEach(function (j, d) {\n var stat = {\n 'method': _this.options.updateType + ' ',\n 'url': function (data, i, key) { return ''; },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('PUT ' + '/api/' + (dm.dataSource.updateUrl || dm.dataSource.crudUrl || e.url)\n + stat.url(changes.changedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n };\n //updation\n for (var i = 0, x = changes.changedRecords.length; i < x; i++) {\n _loop_2(i, x);\n }\n var _loop_3 = function (i, x) {\n changes.deletedRecords.forEach(function (j, d) {\n var state = {\n 'mtd': 'DELETE ',\n 'url': function (data, i, key) {\n var url = DataUtil.getObject(key, data[i]);\n if (typeof url === 'number' || DataUtil.parse.isGuid(url)) {\n return '/' + url;\n }\n else if (url instanceof Date) {\n var datTime = data[i][key];\n return '/' + datTime.toJSON();\n }\n else {\n return \"/'\" + url + \"'\";\n }\n },\n 'data': function (data, i) { return ''; }\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('DELETE ' + '/api/' + (dm.dataSource.removeUrl || dm.dataSource.crudUrl || e.url)\n + state.url(changes.deletedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n };\n //deletion\n for (var i = 0, x = changes.deletedRecords.length; i < x; i++) {\n _loop_3(i, x);\n }\n req.push('--' + initialGuid + '--', '');\n return {\n type: 'POST',\n url: url,\n contentType: 'multipart/mixed; boundary=' + initialGuid,\n data: req.join('\\r\\n')\n };\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {Request} request\n * @param {Fetch} settings\n * @returns void\n */\n WebApiAdaptor.prototype.beforeSend = function (dm, request, settings) {\n request.headers.set('Accept', 'application/json, text/javascript, */*; q=0.01');\n };\n /**\n * Returns the data from the query processing.\n *\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {Request} xhr?\n * @param {Fetch} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n * @returns aggregateResult\n */\n WebApiAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var pvtData = 'pvtData';\n var pvt = request && request[pvtData];\n var count = null;\n var args = {};\n if (request && request.type.toLowerCase() !== 'post') {\n var versionCheck = xhr && request.fetchRequest.headers.get('DataServiceVersion');\n var version = (versionCheck && parseInt(versionCheck, 10)) || 2;\n if (query && query.isCountRequired) {\n if (!DataUtil.isNull(data.Count)) {\n count = data.Count;\n }\n }\n if (version < 3 && data.Items) {\n data = data.Items;\n }\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n }\n args.result = args.result || data;\n return DataUtil.isNull(count) ? args.result : { result: args.result, count: args.count, aggregates: args.aggregates };\n };\n return WebApiAdaptor;\n}(ODataAdaptor));\nexport { WebApiAdaptor };\n/**\n * WebMethodAdaptor can be used by DataManager to interact with web method.\n *\n * @hidden\n */\nvar WebMethodAdaptor = /** @class */ (function (_super) {\n __extends(WebMethodAdaptor, _super);\n function WebMethodAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Prepare the request body based on the query.\n * The query information can be accessed at the WebMethod using variable named `value`.\n *\n * @param {DataManager} dm\n * @param {Query} query\n * @param {Object[]} hierarchyFilters?\n * @param hierarchyFilters\n * @returns application\n */\n WebMethodAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var obj = new UrlAdaptor().processQuery(dm, query, hierarchyFilters);\n var getData = 'data';\n var data = DataUtil.parse.parseJson(obj[getData]);\n var result = {};\n var value = 'value';\n if (data.param) {\n for (var i = 0; i < data.param.length; i++) {\n var param = data.param[i];\n var key = Object.keys(param)[0];\n result[key] = param[key];\n }\n }\n result[value] = data;\n var pvtData = 'pvtData';\n var url = 'url';\n return {\n data: JSON.stringify(result, DataUtil.parse.jsonDateReplacer),\n url: obj[url],\n pvtData: obj[pvtData],\n type: 'POST',\n contentType: 'application/json; charset=utf-8'\n };\n };\n return WebMethodAdaptor;\n}(UrlAdaptor));\nexport { WebMethodAdaptor };\n/**\n * RemoteSaveAdaptor, extended from JsonAdaptor and it is used for binding local data and performs all DataManager queries in client-side.\n * It interacts with server-side only for CRUD operations.\n *\n * @hidden\n */\nvar RemoteSaveAdaptor = /** @class */ (function (_super) {\n __extends(RemoteSaveAdaptor, _super);\n /**\n * @hidden\n */\n function RemoteSaveAdaptor() {\n var _this = _super.call(this) || this;\n setValue('beforeSend', UrlAdaptor.prototype.beforeSend, _this);\n return _this;\n }\n RemoteSaveAdaptor.prototype.insert = function (dm, data, tableName, query, position) {\n this.pvt.position = position;\n this.updateType = 'add';\n return {\n url: dm.dataSource.insertUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: data,\n table: tableName,\n action: 'insert'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.remove = function (dm, keyField, val, tableName, query) {\n _super.prototype.remove.call(this, dm, keyField, val);\n return {\n type: 'POST',\n url: dm.dataSource.removeUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n key: val,\n keyColumn: keyField,\n table: tableName,\n action: 'remove'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.update = function (dm, keyField, val, tableName, query) {\n this.updateType = 'update';\n this.updateKey = keyField;\n return {\n type: 'POST',\n url: dm.dataSource.updateUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: val,\n action: 'update',\n keyColumn: keyField,\n key: val[keyField],\n table: tableName\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes, e) {\n var i;\n var newData = request ? JSON.parse(request.data) : data;\n data = newData.action === 'batch' ? DataUtil.parse.parseJson(data) : data;\n if (this.updateType === 'add') {\n _super.prototype.insert.call(this, ds, data, null, null, this.pvt.position);\n }\n if (this.updateType === 'update') {\n _super.prototype.update.call(this, ds, this.updateKey, data);\n }\n this.updateType = undefined;\n if (data.added) {\n for (i = 0; i < data.added.length; i++) {\n _super.prototype.insert.call(this, ds, data.added[i]);\n }\n }\n if (data.changed) {\n for (i = 0; i < data.changed.length; i++) {\n _super.prototype.update.call(this, ds, e.key, data.changed[i]);\n }\n }\n if (data.deleted) {\n for (i = 0; i < data.deleted.length; i++) {\n _super.prototype.remove.call(this, ds, e.key, data.deleted[i]);\n }\n }\n return data;\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * Also perform the changes in the locally cached data to sync with the remote data.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n * @param query\n * @param original\n */\n RemoteSaveAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n return {\n type: 'POST',\n url: dm.dataSource.batchUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n contentType: 'application/json; charset=utf-8',\n dataType: 'json',\n data: JSON.stringify(extend({}, {\n changed: changes.changedRecords,\n added: changes.addedRecords,\n deleted: changes.deletedRecords,\n action: 'batch',\n table: e.url,\n key: e.key\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.addParams = function (options) {\n var urlParams = new UrlAdaptor();\n urlParams.addParams(options);\n };\n return RemoteSaveAdaptor;\n}(JsonAdaptor));\nexport { RemoteSaveAdaptor };\n/**\n * Fetch Adaptor that is extended from URL Adaptor, is used for handle data operations with user defined functions.\n *\n * @hidden\n */\nvar CustomDataAdaptor = /** @class */ (function (_super) {\n __extends(CustomDataAdaptor, _super);\n function CustomDataAdaptor(props) {\n var _this = _super.call(this) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n getData: function () { },\n addRecord: function () { },\n updateRecord: function () { },\n deleteRecord: function () { },\n batchUpdate: function () { }\n });\n extend(_this.options, props || {});\n return _this;\n }\n CustomDataAdaptor.prototype.getModuleName = function () {\n return 'CustomDataAdaptor';\n };\n return CustomDataAdaptor;\n}(UrlAdaptor));\nexport { CustomDataAdaptor };\n/**\n * The GraphqlAdaptor that is extended from URL Adaptor, is used for retrieving data from the Graphql server.\n * It interacts with the Graphql server with all the DataManager Queries and performs CRUD operations.\n *\n * @hidden\n */\nvar GraphQLAdaptor = /** @class */ (function (_super) {\n __extends(GraphQLAdaptor, _super);\n function GraphQLAdaptor(options) {\n var _this = _super.call(this) || this;\n _this.opt = options;\n _this.schema = _this.opt.response;\n _this.query = _this.opt.query;\n /* eslint-disable @typescript-eslint/no-empty-function */\n // tslint:disable-next-line:no-empty\n _this.getVariables = _this.opt.getVariables ? _this.opt.getVariables : function () { };\n /* eslint-enable @typescript-eslint/no-empty-function */\n _this.getQuery = function () { return _this.query; };\n return _this;\n }\n GraphQLAdaptor.prototype.getModuleName = function () {\n return 'GraphQLAdaptor';\n };\n /**\n * Process the JSON data based on the provided queries.\n *\n * @param {DataManager} dm\n * @param {Query} query?\n * @param datamanager\n * @param query\n */\n GraphQLAdaptor.prototype.processQuery = function (datamanager, query) {\n var urlQuery = _super.prototype.processQuery.apply(this, arguments);\n var dm = JSON.parse(urlQuery.data);\n // constructing GraphQL parameters\n var keys = ['skip', 'take', 'sorted', 'table', 'select', 'where',\n 'search', 'requiresCounts', 'aggregates', 'params'];\n var temp = {};\n var str = 'searchwhereparams';\n keys.filter(function (e) {\n temp[e] = str.indexOf(e) > -1 ? JSON.stringify(dm[e]) : dm[e];\n });\n var vars = this.getVariables() || {};\n // tslint:disable-next-line:no-string-literal\n vars['datamanager'] = temp;\n var data = JSON.stringify({\n query: this.getQuery(),\n variables: vars\n });\n urlQuery.data = data;\n return urlQuery;\n };\n /**\n * Returns the data from the query processing.\n * It will also cache the data for later usage.\n *\n * @param {DataResult} data\n * @param {DataManager} ds?\n * @param {Query} query?\n * @param {Request} xhr?\n * @param {Object} request?\n * @param resData\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @returns DataResult\n */\n GraphQLAdaptor.prototype.processResponse = function (resData, ds, query, xhr, request) {\n var res = resData;\n var count;\n var aggregates;\n var result = getValue(this.schema.result, res.data);\n if (this.schema.count) {\n count = getValue(this.schema.count, res.data);\n }\n if (this.schema.aggregates) {\n aggregates = getValue(this.schema.aggregates, res.data);\n aggregates = !isNullOrUndefined(aggregates) ? DataUtil.parse.parseJson(aggregates) : aggregates;\n }\n var pvt = request.pvtData || {};\n var args = { result: result, aggregates: aggregates };\n var data = args;\n if (pvt && pvt.groups && pvt.groups.length) {\n this.getAggregateResult(pvt, data, args, null, query);\n }\n return !isNullOrUndefined(count) ? { result: args.result, count: count, aggregates: aggregates } : args.result;\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n */\n GraphQLAdaptor.prototype.insert = function () {\n var inserted = _super.prototype.insert.apply(this, arguments);\n return this.generateCrudData(inserted, 'insert');\n };\n /**\n * Prepare and returns request body which is used to update a new record in the table.\n */\n GraphQLAdaptor.prototype.update = function () {\n var inserted = _super.prototype.update.apply(this, arguments);\n return this.generateCrudData(inserted, 'update');\n };\n /**\n * Prepare and returns request body which is used to remove a new record in the table.\n */\n GraphQLAdaptor.prototype.remove = function () {\n var inserted = _super.prototype.remove.apply(this, arguments);\n return this.generateCrudData(inserted, 'remove');\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {Object} e\n * @param e.key\n * @param {Query} query\n * @param {Object} original\n */\n GraphQLAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n var batch = _super.prototype.batchRequest.apply(this, arguments);\n // tslint:disable-next-line:typedef\n var bData = JSON.parse(batch.data);\n bData.key = e.key;\n batch.data = JSON.stringify(bData);\n return this.generateCrudData(batch, 'batch');\n };\n GraphQLAdaptor.prototype.generateCrudData = function (crudData, action) {\n var parsed = JSON.parse(crudData.data);\n crudData.data = JSON.stringify({\n query: this.opt.getMutation(action),\n variables: parsed\n });\n return crudData;\n };\n return GraphQLAdaptor;\n}(UrlAdaptor));\nexport { GraphQLAdaptor };\n/**\n * Cache Adaptor is used to cache the data of the visited pages. It prevents new requests for the previously visited pages.\n * You can configure cache page size and duration of caching by using cachingPageSize and timeTillExpiration properties of the DataManager\n *\n * @hidden\n */\nvar CacheAdaptor = /** @class */ (function (_super) {\n __extends(CacheAdaptor, _super);\n /**\n * Constructor for CacheAdaptor class.\n *\n * @param {CacheAdaptor} adaptor?\n * @param {number} timeStamp?\n * @param {number} pageSize?\n * @param adaptor\n * @param timeStamp\n * @param pageSize\n * @hidden\n */\n function CacheAdaptor(adaptor, timeStamp, pageSize) {\n var _this = _super.call(this) || this;\n _this.isCrudAction = false;\n _this.isInsertAction = false;\n if (!isNullOrUndefined(adaptor)) {\n _this.cacheAdaptor = adaptor;\n }\n _this.pageSize = pageSize;\n _this.guidId = DataUtil.getGuid('cacheAdaptor');\n var obj = { keys: [], results: [] };\n window.localStorage.setItem(_this.guidId, JSON.stringify(obj));\n var guid = _this.guidId;\n if (!isNullOrUndefined(timeStamp)) {\n setInterval(function () {\n var data = DataUtil.parse.parseJson(window.localStorage.getItem(guid));\n var forDel = [];\n for (var i = 0; i < data.results.length; i++) {\n var currentTime = +new Date();\n var requestTime = +new Date(data.results[i].timeStamp);\n data.results[i].timeStamp = currentTime - requestTime;\n if (currentTime - requestTime > timeStamp) {\n forDel.push(i);\n }\n }\n for (var i = 0; i < forDel.length; i++) {\n data.results.splice(forDel[i], 1);\n data.keys.splice(forDel[i], 1);\n }\n window.localStorage.removeItem(guid);\n window.localStorage.setItem(guid, JSON.stringify(data));\n }, timeStamp);\n }\n return _this;\n }\n /**\n * It will generate the key based on the URL when we send a request to server.\n *\n * @param {string} url\n * @param {Query} query?\n * @param query\n * @hidden\n */\n CacheAdaptor.prototype.generateKey = function (url, query) {\n var queries = this.getQueryRequest(query);\n var singles = Query.filterQueryLists(query.queries, ['onSelect', 'onPage', 'onSkip', 'onTake', 'onRange']);\n var key = url;\n var page = 'onPage';\n if (page in singles) {\n key += singles[page].pageIndex;\n }\n queries.sorts.forEach(function (obj) {\n key += obj.e.direction + obj.e.fieldName;\n });\n queries.groups.forEach(function (obj) {\n key += obj.e.fieldName;\n });\n queries.searches.forEach(function (obj) {\n key += obj.e.searchKey;\n });\n for (var filter = 0; filter < queries.filters.length; filter++) {\n var currentFilter = queries.filters[filter];\n if (currentFilter.e.isComplex) {\n var newQuery = query.clone();\n newQuery.queries = [];\n for (var i = 0; i < currentFilter.e.predicates.length; i++) {\n newQuery.queries.push({ fn: 'onWhere', e: currentFilter.e.predicates[i], filter: query.queries.filter });\n }\n key += currentFilter.e.condition + this.generateKey(url, newQuery);\n }\n else {\n key += currentFilter.e.field + currentFilter.e.operator + currentFilter.e.value;\n }\n }\n return key;\n };\n /**\n * Process the query to generate request body.\n * If the data is already cached, it will return the cached data.\n *\n * @param {DataManager} dm\n * @param {Query} query?\n * @param {Object[]} hierarchyFilters?\n * @param query\n * @param hierarchyFilters\n */\n CacheAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var key = this.generateKey(dm.dataSource.url, query);\n var cachedItems = DataUtil.parse.parseJson(window.localStorage.getItem(this.guidId));\n var data = cachedItems ? cachedItems.results[cachedItems.keys.indexOf(key)] : null;\n if (data != null && !this.isCrudAction && !this.isInsertAction) {\n return data;\n }\n this.isCrudAction = null;\n this.isInsertAction = null;\n /* eslint-disable prefer-spread */\n return this.cacheAdaptor.processQuery.apply(this.cacheAdaptor, [].slice.call(arguments, 0));\n /* eslint-enable prefer-spread */\n };\n /**\n * Returns the data from the query processing.\n * It will also cache the data for later usage.\n *\n * @param {DataResult} data\n * @param {DataManager} ds?\n * @param {Query} query?\n * @param {Request} xhr?\n * @param {Fetch} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n */\n CacheAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n if (this.isInsertAction || (request && this.cacheAdaptor.options.batch &&\n DataUtil.endsWith(request.url, this.cacheAdaptor.options.batch) && request.type.toLowerCase() === 'post')) {\n return this.cacheAdaptor.processResponse(data, ds, query, xhr, request, changes);\n }\n /* eslint-disable prefer-spread */\n data = this.cacheAdaptor.processResponse.apply(this.cacheAdaptor, [].slice.call(arguments, 0));\n /* eslint-enable prefer-spread */\n var key = query ? this.generateKey(ds.dataSource.url, query) : ds.dataSource.url;\n var obj = {};\n obj = DataUtil.parse.parseJson(window.localStorage.getItem(this.guidId));\n var index = obj.keys.indexOf(key);\n if (index !== -1) {\n obj.results.splice(index, 1);\n obj.keys.splice(index, 1);\n }\n obj.results[obj.keys.push(key) - 1] = { keys: key, result: data.result, timeStamp: new Date(), count: data.count };\n while (obj.results.length > this.pageSize) {\n obj.results.splice(0, 1);\n obj.keys.splice(0, 1);\n }\n window.localStorage.setItem(this.guidId, JSON.stringify(obj));\n return data;\n };\n /**\n * Method will trigger before send the request to server side. Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {Request} request\n * @param {Fetch} settings?\n * @param settings\n */\n CacheAdaptor.prototype.beforeSend = function (dm, request, settings) {\n if (!isNullOrUndefined(this.cacheAdaptor.options.batch) && DataUtil.endsWith(settings.url, this.cacheAdaptor.options.batch)\n && settings.type.toLowerCase() === 'post') {\n request.headers.set('Accept', this.cacheAdaptor.options.multipartAccept);\n }\n if (!dm.dataSource.crossDomain) {\n request.headers.set('Accept', this.cacheAdaptor.options.accept);\n }\n };\n /**\n * Updates existing record and saves the changes to the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName\n */\n CacheAdaptor.prototype.update = function (dm, keyField, value, tableName) {\n this.isCrudAction = true;\n return this.cacheAdaptor.update(dm, keyField, value, tableName);\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n * @param tableName\n */\n CacheAdaptor.prototype.insert = function (dm, data, tableName) {\n this.isInsertAction = true;\n return this.cacheAdaptor.insert(dm, data, tableName);\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n */\n CacheAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n this.isCrudAction = true;\n return this.cacheAdaptor.remove(dm, keyField, value, tableName);\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n */\n CacheAdaptor.prototype.batchRequest = function (dm, changes, e) {\n return this.cacheAdaptor.batchRequest(dm, changes, e);\n };\n return CacheAdaptor;\n}(UrlAdaptor));\nexport { CacheAdaptor };\n","/* eslint-disable valid-jsdoc */\n/* eslint-disable security/detect-object-injection */\nimport { Fetch } from '@syncfusion/ej2-base';\nimport { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataUtil } from './util';\nimport { Predicate, Query } from './query';\nimport { ODataAdaptor, JsonAdaptor, CacheAdaptor, RemoteSaveAdaptor, CustomDataAdaptor } from './adaptors';\n/**\n * DataManager is used to manage and manipulate relational data.\n */\nvar DataManager = /** @class */ (function () {\n /**\n * Constructor for DataManager class\n *\n * @param {DataOptions|JSON[]} dataSource?\n * @param {Query} query?\n * @param {AdaptorOptions|string} adaptor?\n * @param dataSource\n * @param query\n * @param adaptor\n * @hidden\n */\n function DataManager(dataSource, query, adaptor) {\n var _this = this;\n /** @hidden */\n this.dateParse = true;\n /** @hidden */\n this.timeZoneHandling = true;\n this.persistQuery = {};\n this.isInitialLoad = false;\n this.requests = [];\n this.isInitialLoad = true;\n if (!dataSource && !this.dataSource) {\n dataSource = [];\n }\n adaptor = adaptor || dataSource.adaptor;\n if (dataSource && dataSource.timeZoneHandling === false) {\n this.timeZoneHandling = dataSource.timeZoneHandling;\n }\n var data;\n if (dataSource instanceof Array) {\n data = {\n json: dataSource,\n offline: true\n };\n }\n else if (typeof dataSource === 'object') {\n if (!dataSource.json) {\n dataSource.json = [];\n }\n if (!dataSource.enablePersistence) {\n dataSource.enablePersistence = false;\n }\n if (!dataSource.id) {\n dataSource.id = '';\n }\n if (!dataSource.ignoreOnPersist) {\n dataSource.ignoreOnPersist = [];\n }\n data = {\n url: dataSource.url,\n insertUrl: dataSource.insertUrl,\n removeUrl: dataSource.removeUrl,\n updateUrl: dataSource.updateUrl,\n crudUrl: dataSource.crudUrl,\n batchUrl: dataSource.batchUrl,\n json: dataSource.json,\n headers: dataSource.headers,\n accept: dataSource.accept,\n data: dataSource.data,\n timeTillExpiration: dataSource.timeTillExpiration,\n cachingPageSize: dataSource.cachingPageSize,\n enableCaching: dataSource.enableCaching,\n requestType: dataSource.requestType,\n key: dataSource.key,\n crossDomain: dataSource.crossDomain,\n jsonp: dataSource.jsonp,\n dataType: dataSource.dataType,\n offline: dataSource.offline !== undefined ? dataSource.offline\n : dataSource.adaptor instanceof RemoteSaveAdaptor || dataSource.adaptor instanceof CustomDataAdaptor ?\n false : dataSource.url ? false : true,\n requiresFormat: dataSource.requiresFormat,\n enablePersistence: dataSource.enablePersistence,\n id: dataSource.id,\n ignoreOnPersist: dataSource.ignoreOnPersist\n };\n }\n else {\n DataUtil.throwError('DataManager: Invalid arguments');\n }\n if (data.requiresFormat === undefined && !DataUtil.isCors()) {\n data.requiresFormat = isNullOrUndefined(data.crossDomain) ? true : data.crossDomain;\n }\n if (data.dataType === undefined) {\n data.dataType = 'json';\n }\n this.dataSource = data;\n this.defaultQuery = query;\n if (this.dataSource.enablePersistence && this.dataSource.id) {\n window.addEventListener('unload', this.setPersistData.bind(this));\n }\n if (data.url && data.offline && !data.json.length) {\n this.isDataAvailable = false;\n this.adaptor = adaptor || new ODataAdaptor();\n this.dataSource.offline = false;\n this.ready = this.executeQuery(query || new Query());\n this.ready.then(function (e) {\n _this.dataSource.offline = true;\n _this.isDataAvailable = true;\n data.json = e.result;\n _this.adaptor = new JsonAdaptor();\n });\n }\n else {\n this.adaptor = data.offline ? new JsonAdaptor() : new ODataAdaptor();\n }\n if (!data.jsonp && this.adaptor instanceof ODataAdaptor) {\n data.jsonp = 'callback';\n }\n this.adaptor = adaptor || this.adaptor;\n if (data.enableCaching) {\n this.adaptor = new CacheAdaptor(this.adaptor, data.timeTillExpiration, data.cachingPageSize);\n }\n return this;\n }\n Object.defineProperty(DataManager.prototype, \"moduleName\", {\n /** @hidden */\n get: function () { return 'datamanager'; },\n enumerable: true,\n configurable: true\n });\n ;\n /**\n * Get the queries maintained in the persisted state.\n * @param {string} id - The identifier of the persisted query to retrieve.\n * @returns {object} The persisted data object.\n */\n DataManager.prototype.getPersistedData = function (id) {\n var persistedData = localStorage.getItem(id || this.dataSource.id);\n return JSON.parse(persistedData);\n };\n /**\n * Set the queries to be maintained in the persisted state.\n * @param {Event} e - The event parameter that triggers the setPersistData method.\n * @param {string} id - The identifier of the persisted query to set.\n * @param {object} persistData - The data to be persisted.\n * @returns {void} .\n */\n DataManager.prototype.setPersistData = function (e, id, persistData) {\n localStorage.setItem(id || this.dataSource.id, JSON.stringify(persistData || this.persistQuery));\n };\n DataManager.prototype.setPersistQuery = function (query) {\n var _this = this;\n var persistedQuery = this.getPersistedData();\n if (this.isInitialLoad && persistedQuery && Object.keys(persistedQuery).length) {\n this.persistQuery = persistedQuery;\n this.persistQuery.queries = this.persistQuery.queries.filter(function (query) {\n if (_this.dataSource.ignoreOnPersist && _this.dataSource.ignoreOnPersist.length) {\n if (query.fn && _this.dataSource.ignoreOnPersist.some(function (keyword) { return query.fn === keyword; })) {\n return false; // Exclude the matching query\n }\n }\n if (query.fn === 'onWhere') {\n var e = query.e;\n if (e && e.isComplex && e.predicates instanceof Array) {\n var allPredicates = e.predicates.map(function (predicateObj) {\n if (predicateObj.predicates && predicateObj.predicates instanceof Array) {\n // Process nested predicate array\n var nestedPredicates = predicateObj.predicates.map(function (nestedPredicate) {\n var field = nestedPredicate.field, operator = nestedPredicate.operator, value = nestedPredicate.value, ignoreCase = nestedPredicate.ignoreCase, ignoreAccent = nestedPredicate.ignoreAccent, matchCase = nestedPredicate.matchCase;\n return new Predicate(field, operator, value, ignoreCase, ignoreAccent, matchCase);\n });\n return predicateObj.condition === 'and' ? Predicate.and(nestedPredicates) : Predicate.or(nestedPredicates);\n }\n else {\n // Process individual predicate\n var field = predicateObj.field, operator = predicateObj.operator, value = predicateObj.value, ignoreCase = predicateObj.ignoreCase, ignoreAccent = predicateObj.ignoreAccent, matchCase = predicateObj.matchCase;\n return new Predicate(field, operator, value, ignoreCase, ignoreAccent, matchCase);\n }\n });\n query.e = new Predicate(allPredicates[0], e.condition, allPredicates.slice(1));\n }\n }\n return true; // Keep all other queries\n });\n var newQuery = extend(new Query(), this.persistQuery);\n this.isInitialLoad = false;\n return (newQuery);\n }\n else {\n this.persistQuery = query;\n this.isInitialLoad = false;\n return query;\n }\n };\n /**\n * Overrides DataManager's default query with given query.\n *\n * @param {Query} query - Defines the new default query.\n */\n DataManager.prototype.setDefaultQuery = function (query) {\n this.defaultQuery = query;\n return this;\n };\n /**\n * Executes the given query with local data source.\n *\n * @param {Query} query - Defines the query to retrieve data.\n */\n DataManager.prototype.executeLocal = function (query) {\n if (!this.defaultQuery && !(query instanceof Query)) {\n DataUtil.throwError('DataManager - executeLocal() : A query is required to execute');\n }\n if (!this.dataSource.json) {\n DataUtil.throwError('DataManager - executeLocal() : Json data is required to execute');\n }\n if (this.dataSource.enablePersistence && this.dataSource.id) {\n query = this.setPersistQuery(query);\n }\n query = query || this.defaultQuery;\n var result = this.adaptor.processQuery(this, query);\n if (query.subQuery) {\n var from = query.subQuery.fromTable;\n var lookup = query.subQuery.lookups;\n var res = query.isCountRequired ? result.result :\n result;\n if (lookup && lookup instanceof Array) {\n DataUtil.buildHierarchy(query.subQuery.fKey, from, res, lookup, query.subQuery.key);\n }\n for (var j = 0; j < res.length; j++) {\n if (res[j][from] instanceof Array) {\n res[j] = extend({}, {}, res[j]);\n res[j][from] = this.adaptor.processResponse(query.subQuery.using(new DataManager(res[j][from].slice(0))).executeLocal(), this, query);\n }\n }\n }\n return this.adaptor.processResponse(result, this, query);\n };\n /**\n * Executes the given query with either local or remote data source.\n * It will be executed as asynchronously and returns Promise object which will be resolved or rejected after action completed.\n *\n * @param {Query|Function} query - Defines the query to retrieve data.\n * @param {Function} done - Defines the callback function and triggers when the Promise is resolved.\n * @param {Function} fail - Defines the callback function and triggers when the Promise is rejected.\n * @param {Function} always - Defines the callback function and triggers when the Promise is resolved or rejected.\n */\n DataManager.prototype.executeQuery = function (query, done, fail, always) {\n var _this = this;\n var makeRequest = 'makeRequest';\n if (this.dataSource.enablePersistence && this.dataSource.id) {\n query = this.setPersistQuery(query);\n }\n if (typeof query === 'function') {\n always = fail;\n fail = done;\n done = query;\n query = null;\n }\n if (!query) {\n query = this.defaultQuery;\n }\n if (!(query instanceof Query)) {\n DataUtil.throwError('DataManager - executeQuery() : A query is required to execute');\n }\n var deffered = new Deferred();\n var args = { query: query };\n if (!this.dataSource.offline && (this.dataSource.url !== undefined && this.dataSource.url !== '')\n || (!isNullOrUndefined(this.adaptor[makeRequest])) || this.isCustomDataAdaptor(this.adaptor)) {\n var result = this.adaptor.processQuery(this, query);\n if (!isNullOrUndefined(this.adaptor[makeRequest])) {\n this.adaptor[makeRequest](result, deffered, args, query);\n }\n else if (!isNullOrUndefined(result.url) || this.isCustomDataAdaptor(this.adaptor)) {\n this.requests = [];\n this.makeRequest(result, deffered, args, query);\n }\n else {\n args = DataManager.getDeferedArgs(query, result, args);\n deffered.resolve(args);\n }\n }\n else {\n DataManager.nextTick(function () {\n var res = _this.executeLocal(query);\n args = DataManager.getDeferedArgs(query, res, args);\n deffered.resolve(args);\n });\n }\n if (done || fail) {\n deffered.promise.then(done, fail);\n }\n if (always) {\n deffered.promise.then(always, always);\n }\n return deffered.promise;\n };\n DataManager.getDeferedArgs = function (query, result, args) {\n if (query.isCountRequired) {\n args.result = result.result;\n args.count = result.count;\n args.aggregates = result.aggregates;\n }\n else {\n args.result = result;\n }\n return args;\n };\n DataManager.nextTick = function (fn) {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n // tslint:disable-next-line:no-any\n (window.setImmediate || window.setTimeout)(fn, 0);\n /* eslint-enable @typescript-eslint/no-explicit-any */\n };\n DataManager.prototype.extendRequest = function (url, fnSuccess, fnFail) {\n return extend({}, {\n type: 'GET',\n dataType: this.dataSource.dataType,\n crossDomain: this.dataSource.crossDomain,\n jsonp: this.dataSource.jsonp,\n cache: true,\n processData: false,\n onSuccess: fnSuccess,\n onFailure: fnFail\n }, url);\n };\n // tslint:disable-next-line:max-func-body-length\n DataManager.prototype.makeRequest = function (url, deffered, args, query) {\n var _this = this;\n var isSelector = !!query.subQuerySelector;\n var fnFail = function (e) {\n args.error = e;\n deffered.reject(args);\n };\n var process = function (data, count, xhr, request, actual, aggregates, virtualSelectRecords) {\n args.xhr = xhr;\n args.count = count ? parseInt(count.toString(), 10) : 0;\n args.result = data;\n args.request = request;\n args.aggregates = aggregates;\n args.actual = actual;\n args.virtualSelectRecords = virtualSelectRecords;\n deffered.resolve(args);\n };\n var fnQueryChild = function (data, selector) {\n var subDeffer = new Deferred();\n var childArgs = { parent: args };\n query.subQuery.isChild = true;\n var subUrl = _this.adaptor.processQuery(_this, query.subQuery, data ? _this.adaptor.processResponse(data) : selector);\n var childReq = _this.makeRequest(subUrl, subDeffer, childArgs, query.subQuery);\n if (!isSelector) {\n subDeffer.then(function (subData) {\n if (data) {\n DataUtil.buildHierarchy(query.subQuery.fKey, query.subQuery.fromTable, data, subData, query.subQuery.key);\n process(data, subData.count, subData.xhr);\n }\n }, fnFail);\n }\n return childReq;\n };\n var fnSuccess = function (data, request) {\n if (_this.isGraphQLAdaptor(_this.adaptor)) {\n // tslint:disable-next-line:no-string-literal\n if (!isNullOrUndefined(data['errors'])) {\n // tslint:disable-next-line:no-string-literal\n return fnFail(data['errors'], request);\n }\n }\n if (_this.isCustomDataAdaptor(_this.adaptor)) {\n request = extend({}, _this.fetchReqOption, request);\n }\n if (request.contentType.indexOf('xml') === -1 && _this.dateParse) {\n data = DataUtil.parse.parseJson(data);\n }\n var result = _this.adaptor.processResponse(data, _this, query, request.fetchRequest, request);\n var count = 0;\n var aggregates = null;\n var virtualSelectRecords = 'virtualSelectRecords';\n var virtualRecords = data[virtualSelectRecords];\n if (query.isCountRequired) {\n count = result.count;\n aggregates = result.aggregates;\n result = result.result;\n }\n if (!query.subQuery) {\n process(result, count, request.fetchRequest, request.type, data, aggregates, virtualRecords);\n return;\n }\n if (!isSelector) {\n fnQueryChild(result, request);\n }\n };\n var req = this.extendRequest(url, fnSuccess, fnFail);\n if (!this.isCustomDataAdaptor(this.adaptor)) {\n var fetch_1 = new Fetch(req);\n fetch_1.beforeSend = function () {\n _this.beforeSend(fetch_1.fetchRequest, fetch_1);\n };\n req = fetch_1.send();\n req.catch(function (e) { return true; }); // to handle failure remote requests.\n this.requests.push(fetch_1);\n }\n else {\n this.fetchReqOption = req;\n var request = req;\n this.adaptor.options.getData({\n data: request.data,\n onSuccess: request.onSuccess, onFailure: request.onFailure\n });\n }\n if (isSelector) {\n var promise = void 0;\n var res = query.subQuerySelector.call(this, { query: query.subQuery, parent: query });\n if (res && res.length) {\n promise = Promise.all([req, fnQueryChild(null, res)]);\n promise.then(function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var result = args[0];\n var pResult = _this.adaptor.processResponse(result[0], _this, query, _this.requests[0].fetchRequest, _this.requests[0]);\n var count = 0;\n if (query.isCountRequired) {\n count = pResult.count;\n pResult = pResult.result;\n }\n var cResult = _this.adaptor.processResponse(result[1], _this, query.subQuery, _this.requests[1].fetchRequest, _this.requests[1]);\n count = 0;\n if (query.subQuery.isCountRequired) {\n count = cResult.count;\n cResult = cResult.result;\n }\n DataUtil.buildHierarchy(query.subQuery.fKey, query.subQuery.fromTable, pResult, cResult, query.subQuery.key);\n isSelector = false;\n process(pResult, count, _this.requests[0].fetchRequest);\n });\n }\n else {\n isSelector = false;\n }\n }\n return req;\n };\n DataManager.prototype.beforeSend = function (request, settings) {\n this.adaptor.beforeSend(this, request, settings);\n var headers = this.dataSource.headers;\n var props;\n for (var i = 0; headers && i < headers.length; i++) {\n props = [];\n var keys = Object.keys(headers[i]);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var prop = keys_1[_i];\n props.push(prop);\n request.headers.set(prop, headers[i][prop]);\n }\n }\n };\n /**\n * Save bulk changes to the given table name.\n * User can add a new record, edit an existing record, and delete a record at the same time.\n * If the datasource from remote, then updated in a single post.\n *\n * @param {Object} changes - Defines the CrudOptions.\n * @param {string} key - Defines the column field.\n * @param {string|Query} tableName - Defines the table name.\n * @param {Query} query - Sets default query for the DataManager.\n * @param original\n */\n DataManager.prototype.saveChanges = function (changes, key, tableName, query, original) {\n var _this = this;\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var args = {\n url: tableName,\n key: key || this.dataSource.key\n };\n var req = this.adaptor.batchRequest(this, changes, args, query || new Query(), original);\n var dofetchRequest = 'dofetchRequest';\n if (this.dataSource.offline) {\n return req;\n }\n if (!isNullOrUndefined(this.adaptor[dofetchRequest])) {\n return this.adaptor[dofetchRequest](req);\n }\n else if (!this.isCustomDataAdaptor(this.adaptor)) {\n var deff_1 = new Deferred();\n var fetch_2 = new Fetch(req);\n fetch_2.beforeSend = function () {\n _this.beforeSend(fetch_2.fetchRequest, fetch_2);\n };\n fetch_2.onSuccess = function (data, request) {\n if (_this.isGraphQLAdaptor(_this.adaptor)) {\n // tslint:disable-next-line:no-string-literal\n if (!isNullOrUndefined(data['errors'])) {\n // tslint:disable-next-line:no-string-literal\n fetch_2.onFailure(JSON.stringify(data['errors']));\n }\n }\n deff_1.resolve(_this.adaptor.processResponse(data, _this, null, request.fetchRequest, request, changes, args));\n };\n fetch_2.onFailure = function (e) {\n deff_1.reject([{ error: e }]);\n };\n fetch_2.send().catch(function (e) { return true; }); // to handle the failure requests.\n return deff_1.promise;\n }\n else {\n return this.dofetchRequest(req, this.adaptor.options.batchUpdate, changes);\n }\n };\n /**\n * Inserts new record in the given table.\n *\n * @param {Object} data - Defines the data to insert.\n * @param {string|Query} tableName - Defines the table name.\n * @param {Query} query - Sets default query for the DataManager.\n * @param position\n */\n DataManager.prototype.insert = function (data, tableName, query, position) {\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var req = this.adaptor.insert(this, data, tableName, query, position);\n var dofetchRequest = 'dofetchRequest';\n if (this.dataSource.offline) {\n return req;\n }\n if (!isNullOrUndefined(this.adaptor[dofetchRequest])) {\n return this.adaptor[dofetchRequest](req);\n }\n else {\n return this.dofetchRequest(req, this.adaptor.options.addRecord);\n }\n };\n /**\n * Removes data from the table with the given key.\n *\n * @param {string} keyField - Defines the column field.\n * @param {Object} value - Defines the value to find the data in the specified column.\n * @param {string|Query} tableName - Defines the table name\n * @param {Query} query - Sets default query for the DataManager.\n */\n DataManager.prototype.remove = function (keyField, value, tableName, query) {\n if (typeof value === 'object') {\n value = DataUtil.getObject(keyField, value);\n }\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var res = this.adaptor.remove(this, keyField, value, tableName, query);\n var dofetchRequest = 'dofetchRequest';\n if (this.dataSource.offline) {\n return res;\n }\n if (!isNullOrUndefined(this.adaptor[dofetchRequest])) {\n return this.adaptor[dofetchRequest](res);\n }\n else {\n var remove = this.adaptor.options.deleteRecord;\n return this.dofetchRequest(res, remove);\n }\n };\n /**\n * Updates existing record in the given table.\n *\n * @param {string} keyField - Defines the column field.\n * @param {Object} value - Defines the value to find the data in the specified column.\n * @param {string|Query} tableName - Defines the table name\n * @param {Query} query - Sets default query for the DataManager.\n * @param original\n */\n DataManager.prototype.update = function (keyField, value, tableName, query, original) {\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var res = this.adaptor.update(this, keyField, value, tableName, query, original);\n var dofetchRequest = 'dofetchRequest';\n if (this.dataSource.offline) {\n return res;\n }\n if (!isNullOrUndefined(this.adaptor[dofetchRequest])) {\n return this.adaptor[dofetchRequest](res);\n }\n else {\n var update = this.adaptor.options.updateRecord;\n return this.dofetchRequest(res, update);\n }\n };\n DataManager.prototype.isCustomDataAdaptor = function (dataSource) {\n return this.adaptor.getModuleName &&\n this.adaptor.getModuleName() === 'CustomDataAdaptor';\n };\n DataManager.prototype.isGraphQLAdaptor = function (dataSource) {\n return this.adaptor.getModuleName &&\n this.adaptor.getModuleName() === 'GraphQLAdaptor';\n };\n DataManager.prototype.successFunc = function (record, request, changes) {\n if (this.isGraphQLAdaptor(this.adaptor)) {\n var data = typeof record === 'object' ? record : JSON.parse(record);\n // tslint:disable-next-line:no-string-literal\n if (!isNullOrUndefined(data['errors'])) {\n // tslint:disable-next-line:no-string-literal\n this.failureFunc(JSON.stringify(data['errors']));\n }\n }\n if (this.isCustomDataAdaptor(this.adaptor)) {\n request = extend({}, this.fetchReqOption, request);\n }\n try {\n DataUtil.parse.parseJson(record);\n }\n catch (e) {\n record = [];\n }\n record = this.adaptor.processResponse(DataUtil.parse.parseJson(record), this, null, request.fetchRequest, request, changes);\n this.fetchDeffered.resolve(record);\n };\n DataManager.prototype.failureFunc = function (e) {\n this.fetchDeffered.reject([{ error: e }]);\n };\n DataManager.prototype.dofetchRequest = function (res, fetchFunc, changes) {\n var _this = this;\n res = extend({}, {\n type: 'POST',\n contentType: 'application/json; charset=utf-8',\n processData: false\n }, res);\n this.fetchDeffered = new Deferred();\n if (!this.isCustomDataAdaptor(this.adaptor)) {\n var fetch_3 = new Fetch(res);\n fetch_3.beforeSend = function () {\n _this.beforeSend(fetch_3.fetchRequest, fetch_3);\n };\n fetch_3.onSuccess = this.successFunc.bind(this);\n fetch_3.onFailure = this.failureFunc.bind(this);\n fetch_3.send().catch(function (e) { return true; }); // to handle the failure requests.\n }\n else {\n this.fetchReqOption = res;\n fetchFunc.call(this, {\n data: res.data, onSuccess: this.successFunc.bind(this),\n onFailure: this.failureFunc.bind(this),\n changes: changes\n });\n }\n return this.fetchDeffered.promise;\n };\n DataManager.prototype.clearPersistence = function () {\n window.removeEventListener('unload', this.setPersistData.bind(this));\n this.dataSource.enablePersistence = false;\n this.persistQuery = {};\n window.localStorage.setItem(this.dataSource.id, '[]');\n };\n return DataManager;\n}());\nexport { DataManager };\n/**\n * Deferred is used to handle asynchronous operation.\n */\nvar Deferred = /** @class */ (function () {\n function Deferred() {\n var _this = this;\n /**\n * Promise is an object that represents a value that may not be available yet, but will be resolved at some point in the future.\n */\n this.promise = new Promise(function (resolve, reject) {\n _this.resolve = resolve;\n _this.reject = reject;\n });\n /**\n * Defines the callback function triggers when the Deferred object is resolved.\n */\n this.then = this.promise.then.bind(this.promise);\n /**\n * Defines the callback function triggers when the Deferred object is rejected.\n */\n this.catch = this.promise.catch.bind(this.promise);\n }\n return Deferred;\n}());\nexport { Deferred };\n","var instances = 'ej2_instances';\nvar uid = 0;\nvar isBlazorPlatform = false;\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {void} result\n * @private\n */\nexport function disableBlazorMode() {\n isBlazorPlatform = false;\n}\n/**\n * Create Instance from constructor function with desired parameters.\n *\n * @param {Function} classFunction - Class function to which need to create instance\n * @param {any[]} params - Parameters need to passed while creating instance\n * @returns {any} ?\n * @private\n */\nexport function createInstance(classFunction, params) {\n var arrayParam = params;\n arrayParam.unshift(undefined);\n return new (Function.prototype.bind.apply(classFunction, arrayParam));\n}\n/**\n * To run a callback function immediately after the browser has completed other operations.\n *\n * @param {Function} handler - callback function to be triggered.\n * @returns {Function} ?\n * @private\n */\nexport function setImmediate(handler) {\n var unbind;\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n intCrypto.getRandomValues(num);\n var secret = 'ej2' + combineArray(num);\n var messageHandler = function (event) {\n if (event.source === window && typeof event.data === 'string' && event.data.length <= 32 && event.data === secret) {\n handler();\n unbind();\n }\n };\n window.addEventListener('message', messageHandler, false);\n window.postMessage(secret, '*');\n return unbind = function () {\n window.removeEventListener('message', messageHandler);\n handler = messageHandler = secret = undefined;\n };\n}\n/**\n * To get nameSpace value from the desired object.\n *\n * @param {string} nameSpace - String value to the get the inner object\n * @param {any} obj - Object to get the inner object value.\n * @returns {any} ?\n * @private\n */\nexport function getValue(nameSpace, obj) {\n var value = obj;\n var splits = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n for (var i = 0; i < splits.length && !isUndefined(value); i++) {\n value = value[splits[parseInt(i.toString(), 10)]];\n }\n return value;\n}\n/**\n * To set value for the nameSpace in desired object.\n *\n * @param {string} nameSpace - String value to the get the inner object\n * @param {any} value - Value that you need to set.\n * @param {any} obj - Object to get the inner object value.\n * @returns {any} ?\n * @private\n */\nexport function setValue(nameSpace, value, obj) {\n var keys = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n var start = obj || {};\n var fromObj = start;\n var i;\n var length = keys.length;\n var key;\n for (i = 0; i < length; i++) {\n key = keys[parseInt(i.toString(), 10)];\n if (i + 1 === length) {\n fromObj[\"\" + key] = value === undefined ? {} : value;\n }\n else if (isNullOrUndefined(fromObj[\"\" + key])) {\n fromObj[\"\" + key] = {};\n }\n fromObj = fromObj[\"\" + key];\n }\n return start;\n}\n/**\n * Delete an item from Object\n *\n * @param {any} obj - Object in which we need to delete an item.\n * @param {string} key - String value to the get the inner object\n * @returns {void} ?\n * @private\n */\nexport function deleteObject(obj, key) {\n delete obj[\"\" + key];\n}\n/**\n *@private\n */\nexport var containerObject = typeof window !== 'undefined' ? window : {};\n/**\n * Check weather the given argument is only object.\n *\n * @param {any} obj - Object which is need to check.\n * @returns {boolean} ?\n * @private\n */\nexport function isObject(obj) {\n var objCon = {};\n return (!isNullOrUndefined(obj) && obj.constructor === objCon.constructor);\n}\n/**\n * To get enum value by giving the string.\n *\n * @param {any} enumObject - Enum object.\n * @param {string} enumValue - Enum value to be searched\n * @returns {any} ?\n * @private\n */\nexport function getEnumValue(enumObject, enumValue) {\n return enumObject[\"\" + enumValue];\n}\n/**\n * Merge the source object into destination object.\n *\n * @param {any} source - source object which is going to merge with destination object\n * @param {any} destination - object need to be merged\n * @returns {void} ?\n * @private\n */\nexport function merge(source, destination) {\n if (!isNullOrUndefined(destination)) {\n var temrObj = source;\n var tempProp = destination;\n var keys = Object.keys(destination);\n var deepmerge = 'deepMerge';\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (!isNullOrUndefined(temrObj[\"\" + deepmerge]) && (temrObj[\"\" + deepmerge].indexOf(key) !== -1) &&\n (isObject(tempProp[\"\" + key]) || Array.isArray(tempProp[\"\" + key]))) {\n extend(temrObj[\"\" + key], temrObj[\"\" + key], tempProp[\"\" + key], true);\n }\n else {\n temrObj[\"\" + key] = tempProp[\"\" + key];\n }\n }\n }\n}\n/**\n * Extend the two object with newer one.\n *\n * @param {any} copied - Resultant object after merged\n * @param {Object} first - First object need to merge\n * @param {Object} second - Second object need to merge\n * @param {boolean} deep ?\n * @returns {Object} ?\n * @private\n */\nexport function extend(copied, first, second, deep) {\n var result = copied && typeof copied === 'object' ? copied : {};\n var length = arguments.length;\n var args = [copied, first, second, deep];\n if (deep) {\n length = length - 1;\n }\n var _loop_1 = function (i) {\n if (!args[parseInt(i.toString(), 10)]) {\n return \"continue\";\n }\n var obj1 = args[parseInt(i.toString(), 10)];\n Object.keys(obj1).forEach(function (key) {\n var src = result[\"\" + key];\n var copy = obj1[\"\" + key];\n var clone;\n var isArrayChanged = Array.isArray(copy) && Array.isArray(src) && (copy.length !== src.length);\n var blazorEventExtend = isBlazor() ? (!(src instanceof Event) && !isArrayChanged) : true;\n if (deep && blazorEventExtend && (isObject(copy) || Array.isArray(copy))) {\n if (isObject(copy)) {\n clone = src ? src : {};\n if (Array.isArray(clone) && Object.prototype.hasOwnProperty.call(clone, 'isComplexArray')) {\n extend(clone, {}, copy, deep);\n }\n else {\n result[\"\" + key] = extend(clone, {}, copy, deep);\n }\n }\n else {\n /* istanbul ignore next */\n clone = isBlazor() ? src && Object.keys(copy).length : src ? src : [];\n result[\"\" + key] = extend([], clone, copy, (clone && clone.length) || (copy && copy.length));\n }\n }\n else {\n result[\"\" + key] = copy;\n }\n });\n };\n for (var i = 1; i < length; i++) {\n _loop_1(i);\n }\n return result;\n}\n/**\n * To check whether the object is null or undefined.\n *\n * @param {any} value - To check the object is null or undefined\n * @returns {boolean} ?\n * @private\n */\nexport function isNullOrUndefined(value) {\n return value === undefined || value === null;\n}\n/**\n * To check whether the object is undefined.\n *\n * @param {any} value - To check the object is undefined\n * @returns {boolean} ?\n * @private\n */\nexport function isUndefined(value) {\n return ('undefined' === typeof value);\n}\n/**\n * To return the generated unique name\n *\n * @param {string} definedName - To concatenate the unique id to provided name\n * @returns {string} ?\n * @private\n */\nexport function getUniqueID(definedName) {\n return definedName + '_' + uid++;\n}\n/**\n * It limits the rate at which a function can fire. The function will fire only once every provided second instead of as quickly.\n *\n * @param {Function} eventFunction - Specifies the function to run when the event occurs\n * @param {number} delay - A number that specifies the milliseconds for function delay call option\n * @returns {Function} ?\n * @private\n */\nexport function debounce(eventFunction, delay) {\n var out;\n return function () {\n var _this = this;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var later = function () {\n out = null;\n return eventFunction.apply(_this, args);\n };\n clearTimeout(out);\n out = setTimeout(later, delay);\n };\n}\n/**\n * To convert the object to string for query url\n *\n * @param {Object} data ?\n * @returns {string} ?\n * @private\n */\nexport function queryParams(data) {\n var array = [];\n var keys = Object.keys(data);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n array.push(encodeURIComponent(key) + '=' + encodeURIComponent('' + data[\"\" + key]));\n }\n return array.join('&');\n}\n/**\n * To check whether the given array contains object.\n *\n * @param {any} value - Specifies the T type array to be checked.\n * @returns {boolean} ?\n * @private\n */\nexport function isObjectArray(value) {\n var parser = Object.prototype.toString;\n if (parser.call(value) === '[object Array]') {\n if (parser.call(value[0]) === '[object Object]') {\n return true;\n }\n }\n return false;\n}\n/**\n * To check whether the child element is descendant to parent element or parent and child are same element.\n *\n * @param {Element} child - Specifies the child element to compare with parent.\n * @param {Element} parent - Specifies the parent element.\n * @returns {boolean} ?\n * @private\n */\nexport function compareElementParent(child, parent) {\n var node = child;\n if (node === parent) {\n return true;\n }\n else if (node === document || !node) {\n return false;\n }\n else {\n return compareElementParent(node.parentNode, parent);\n }\n}\n/**\n * To throw custom error message.\n *\n * @param {string} message - Specifies the error message to be thrown.\n * @returns {void} ?\n * @private\n */\nexport function throwError(message) {\n try {\n throw new Error(message);\n }\n catch (e) {\n throw new Error(e.message + '\\n' + e.stack);\n }\n}\n/**\n * This function is used to print given element\n *\n * @param {Element} element - Specifies the print content element.\n * @param {Window} printWindow - Specifies the print window.\n * @returns {Window} ?\n * @private\n */\nexport function print(element, printWindow) {\n var div = document.createElement('div');\n var links = [].slice.call(document.getElementsByTagName('head')[0].querySelectorAll('base, link, style'));\n var blinks = [].slice.call(document.getElementsByTagName('body')[0].querySelectorAll('link, style'));\n if (blinks.length) {\n for (var l = 0, len = blinks.length; l < len; l++) {\n links.push(blinks[parseInt(l.toString(), 10)]);\n }\n }\n var reference = '';\n if (isNullOrUndefined(printWindow)) {\n printWindow = window.open('', 'print', 'height=452,width=1024,tabbar=no');\n }\n div.appendChild(element.cloneNode(true));\n for (var i = 0, len = links.length; i < len; i++) {\n reference += links[parseInt(i.toString(), 10)].outerHTML;\n }\n printWindow.document.write(' ' + reference + '' + div.innerHTML +\n '' + '');\n printWindow.document.close();\n printWindow.focus();\n var interval = setInterval(function () {\n if (printWindow.ready) {\n printWindow.print();\n printWindow.close();\n clearInterval(interval);\n }\n }, 500);\n return printWindow;\n}\n/**\n * Function to normalize the units applied to the element.\n *\n * @param {number|string} value ?\n * @returns {string} result\n * @private\n */\nexport function formatUnit(value) {\n var result = value + '';\n if (result.match(/auto|cm|mm|in|px|pt|pc|%|em|ex|ch|rem|vw|vh|vmin|vmax/)) {\n return result;\n }\n return result + 'px';\n}\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {void} result\n * @private\n */\nexport function enableBlazorMode() {\n isBlazorPlatform = true;\n}\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {boolean} result\n * @private\n */\nexport function isBlazor() {\n return isBlazorPlatform;\n}\n/**\n * Function to convert xPath to DOM element in blazor platform\n *\n * @returns {HTMLElement} result\n * @param {HTMLElement | object} element ?\n * @private\n */\nexport function getElement(element) {\n var xPath = 'xPath';\n if (!(element instanceof Node) && isBlazor() && !isNullOrUndefined(element[\"\" + xPath])) {\n return document.evaluate(element[\"\" + xPath], document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;\n }\n return element;\n}\n/**\n * Function to fetch the Instances of a HTML element for the given component.\n *\n * @param {string | HTMLElement} element ?\n * @param {any} component ?\n * @returns {Object} ?\n * @private\n */\nexport function getInstance(element, component) {\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[\"\" + instances]) {\n for (var _i = 0, _a = elem[\"\" + instances]; _i < _a.length; _i++) {\n var inst = _a[_i];\n if (inst instanceof component) {\n return inst;\n }\n }\n }\n return null;\n}\n/**\n * Function to add instances for the given element.\n *\n * @param {string | HTMLElement} element ?\n * @param {Object} instance ?\n * @returns {void} ?\n * @private\n */\nexport function addInstance(element, instance) {\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[\"\" + instances]) {\n elem[\"\" + instances].push(instance);\n }\n else {\n elem[\"\" + instances] = [instance];\n }\n}\n/**\n * Function to generate the unique id.\n *\n * @returns {any} ?\n * @private\n */\nexport function uniqueID() {\n if ((typeof window) === 'undefined') {\n return;\n }\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n return intCrypto.getRandomValues(num);\n}\n/**\n *\n * @param {Int16Array} num ?\n * @returns {string} ?\n */\nfunction combineArray(num) {\n var ret = '';\n for (var i = 0; i < 5; i++) {\n ret += (i ? ',' : '') + num[parseInt(i.toString(), 10)];\n }\n return ret;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Parser\n */\nvar defaultNumberingSystem = {\n 'latn': {\n '_digits': '0123456789',\n '_type': 'numeric'\n }\n};\nimport { isUndefined, getValue, isBlazor } from '../util';\nvar defaultNumberSymbols = {\n 'decimal': '.',\n 'group': ',',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'exponential': 'E'\n};\nvar latnNumberSystem = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];\n/**\n * Interface for parser base\n *\n * @private\n */\nvar ParserBase = /** @class */ (function () {\n function ParserBase() {\n }\n /**\n * Returns the cldr object for the culture specifies\n *\n * @param {Object} obj - Specifies the object from which culture object to be acquired.\n * @param {string} cName - Specifies the culture name.\n * @returns {Object} ?\n */\n ParserBase.getMainObject = function (obj, cName) {\n var value = isBlazor() ? cName : 'main.' + cName;\n return getValue(value, obj);\n };\n /**\n * Returns the numbering system object from given cldr data.\n *\n * @param {Object} obj - Specifies the object from which number system is acquired.\n * @returns {Object} ?\n */\n ParserBase.getNumberingSystem = function (obj) {\n return getValue('supplemental.numberingSystems', obj) || this.numberingSystems;\n };\n /**\n * Returns the reverse of given object keys or keys specified.\n *\n * @param {Object} prop - Specifies the object to be reversed.\n * @param {number[]} keys - Optional parameter specifies the custom keyList for reversal.\n * @returns {Object} ?\n */\n ParserBase.reverseObject = function (prop, keys) {\n var propKeys = keys || Object.keys(prop);\n var res = {};\n for (var _i = 0, propKeys_1 = propKeys; _i < propKeys_1.length; _i++) {\n var key = propKeys_1[_i];\n if (!Object.prototype.hasOwnProperty.call(res, prop[\"\" + key])) {\n res[prop[\"\" + key]] = key;\n }\n }\n return res;\n };\n /**\n * Returns the symbol regex by skipping the escape sequence.\n *\n * @param {string[]} props - Specifies the array values to be skipped.\n * @returns {RegExp} ?\n */\n ParserBase.getSymbolRegex = function (props) {\n var regexStr = props.map(function (str) {\n return str.replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1');\n }).join('|');\n var regExp = RegExp;\n return new regExp(regexStr, 'g');\n };\n /**\n *\n * @param {Object} prop ?\n * @returns {Object} ?\n */\n ParserBase.getSymbolMatch = function (prop) {\n var matchKeys = Object.keys(defaultNumberSymbols);\n var ret = {};\n for (var _i = 0, matchKeys_1 = matchKeys; _i < matchKeys_1.length; _i++) {\n var key = matchKeys_1[_i];\n ret[prop[\"\" + key]] = defaultNumberSymbols[\"\" + key];\n }\n return ret;\n };\n /**\n * Returns regex string for provided value\n *\n * @param {string} val ?\n * @returns {string} ?\n */\n ParserBase.constructRegex = function (val) {\n var len = val.length;\n var ret = '';\n for (var i = 0; i < len; i++) {\n if (i !== len - 1) {\n ret += val[parseInt(i.toString(), 10)] + '|';\n }\n else {\n ret += val[parseInt(i.toString(), 10)];\n }\n }\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n *\n * @param {string} value - Specifies the values to be replaced.\n * @param {RegExp} regex - Specifies the regex to search.\n * @param {Object} obj - Specifies the object matcher to be replace value parts.\n * @returns {string} ?\n */\n ParserBase.convertValueParts = function (value, regex, obj) {\n return value.replace(regex, function (str) {\n return obj[\"\" + str];\n });\n };\n /**\n * Returns default numbering system object for formatting from cldr data\n *\n * @param {Object} obj ?\n * @returns {NumericObject} ?\n */\n ParserBase.getDefaultNumberingSystem = function (obj) {\n var ret = {};\n ret.obj = getValue('numbers', obj);\n ret.nSystem = getValue('defaultNumberingSystem', ret.obj);\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n *\n * @param {Object} curObj ?\n * @param {Object} numberSystem ?\n * @param {boolean} needSymbols ?\n * @param {boolean} blazorMode ?\n * @returns {Object} ?\n */\n ParserBase.getCurrentNumericOptions = function (curObj, numberSystem, needSymbols, blazorMode) {\n var ret = {};\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem) || blazorMode) {\n var digits = blazorMode ? getValue('obj.mapperDigits', cur) : getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n ret.numericPair = this.reverseObject(digits, latnNumberSystem);\n var regExp = RegExp;\n ret.numberParseRegex = new regExp(this.constructRegex(digits), 'g');\n ret.numericRegex = '[' + digits[0] + '-' + digits[9] + ']';\n if (needSymbols) {\n ret.numericRegex = digits[0] + '-' + digits[9];\n ret.symbolNumberSystem = getValue(blazorMode ? 'numberSymbols' : 'symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.symbolMatch = this.getSymbolMatch(ret.symbolNumberSystem);\n ret.numberSystem = cur.nSystem;\n }\n }\n }\n return ret;\n };\n /**\n * Returns number mapper object for the provided cldr data\n *\n * @param {Object} curObj ?\n * @param {Object} numberSystem ?\n * @param {boolean} isNumber ?\n * @returns {NumberMapper} ?\n */\n ParserBase.getNumberMapper = function (curObj, numberSystem, isNumber) {\n var ret = { mapper: {} };\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem)) {\n ret.numberSystem = cur.nSystem;\n ret.numberSymbols = getValue('symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.timeSeparator = getValue('timeSeparator', ret.numberSymbols);\n var digits = getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n for (var _i = 0, latnNumberSystem_1 = latnNumberSystem; _i < latnNumberSystem_1.length; _i++) {\n var i = latnNumberSystem_1[_i];\n ret.mapper[parseInt(i.toString(), 10)] = digits[parseInt(i.toString(), 10)];\n }\n }\n }\n return ret;\n };\n ParserBase.nPair = 'numericPair';\n ParserBase.nRegex = 'numericRegex';\n ParserBase.numberingSystems = defaultNumberingSystem;\n return ParserBase;\n}());\nexport { ParserBase };\n/**\n * @private\n */\nvar blazorCurrencyData = {\n 'DJF': 'Fdj',\n 'ERN': 'Nfk',\n 'ETB': 'Br',\n 'NAD': '$',\n 'ZAR': 'R',\n 'XAF': 'FCFA',\n 'GHS': 'GH₵',\n 'XDR': 'XDR',\n 'AED': 'د.إ.',\n 'BHD': 'د.ب.',\n 'DZD': 'د.ج.',\n 'EGP': 'ج.م.',\n 'ILS': '₪',\n 'IQD': 'د.ع.',\n 'JOD': 'د.ا.',\n 'KMF': 'CF',\n 'KWD': 'د.ك.',\n 'LBP': 'ل.ل.',\n 'LYD': 'د.ل.',\n 'MAD': 'د.م.',\n 'MRU': 'أ.م.',\n 'OMR': 'ر.ع.',\n 'QAR': 'ر.ق.',\n 'SAR': 'ر.س.',\n 'SDG': 'ج.س.',\n 'SOS': 'S',\n 'SSP': '£',\n 'SYP': 'ل.س.',\n 'TND': 'د.ت.',\n 'YER': 'ر.ي.',\n 'CLP': '$',\n 'INR': '₹',\n 'TZS': 'TSh',\n 'EUR': '€',\n 'AZN': '₼',\n 'RUB': '₽',\n 'BYN': 'Br',\n 'ZMW': 'K',\n 'BGN': 'лв.',\n 'NGN': '₦',\n 'XOF': 'CFA',\n 'BDT': '৳',\n 'CNY': '¥',\n 'BAM': 'КМ',\n 'UGX': 'USh',\n 'USD': '$',\n 'CZK': 'Kč',\n 'GBP': '£',\n 'DKK': 'kr.',\n 'KES': 'Ksh',\n 'CHF': 'CHF',\n 'MVR': 'ރ.',\n 'BTN': 'Nu.',\n 'XCD': 'EC$',\n 'AUD': '$',\n 'BBD': '$',\n 'BIF': 'FBu',\n 'BMD': '$',\n 'BSD': '$',\n 'BWP': 'P',\n 'BZD': '$',\n 'CAD': '$',\n 'NZD': '$',\n 'FJD': '$',\n 'FKP': '£',\n 'GIP': '£',\n 'GMD': 'D',\n 'GYD': '$',\n 'HKD': '$',\n 'IDR': 'Rp',\n 'JMD': '$',\n 'KYD': '$',\n 'LRD': '$',\n 'MGA': 'Ar',\n 'MOP': 'MOP$',\n 'MUR': 'Rs',\n 'MWK': 'MK',\n 'MYR': 'RM',\n 'PGK': 'K',\n 'PHP': '₱',\n 'PKR': 'Rs',\n 'RWF': 'RF',\n 'SBD': '$',\n 'SCR': 'SR',\n 'SEK': 'kr',\n 'SGD': '$',\n 'SHP': '£',\n 'SLL': 'Le',\n 'ANG': 'NAf.',\n 'SZL': 'E',\n 'TOP': 'T$',\n 'TTD': '$',\n 'VUV': 'VT',\n 'WST': 'WS$',\n 'ARS': '$',\n 'BOB': 'Bs',\n 'BRL': 'R$',\n 'COP': '$',\n 'CRC': '₡',\n 'CUP': '$',\n 'DOP': '$',\n 'GTQ': 'Q',\n 'HNL': 'L',\n 'MXN': '$',\n 'NIO': 'C$',\n 'PAB': 'B/.',\n 'PEN': 'S/',\n 'PYG': '₲',\n 'UYU': '$',\n 'VES': 'Bs.S',\n 'IRR': 'ريال',\n 'GNF': 'FG',\n 'CDF': 'FC',\n 'HTG': 'G',\n 'XPF': 'FCFP',\n 'HRK': 'kn',\n 'HUF': 'Ft',\n 'AMD': '֏',\n 'ISK': 'kr',\n 'JPY': '¥',\n 'GEL': '₾',\n 'CVE': '​',\n 'KZT': '₸',\n 'KHR': '៛',\n 'KPW': '₩',\n 'KRW': '₩',\n 'KGS': 'сом',\n 'AOA': 'Kz',\n 'LAK': '₭',\n 'MZN': 'MTn',\n 'MKD': 'ден',\n 'MNT': '₮',\n 'BND': '$',\n 'MMK': 'K',\n 'NOK': 'kr',\n 'NPR': 'रु',\n 'AWG': 'Afl.',\n 'SRD': '$',\n 'PLN': 'zł',\n 'AFN': '؋',\n 'STN': 'Db',\n 'MDL': 'L',\n 'RON': 'lei',\n 'UAH': '₴',\n 'LKR': 'රු.',\n 'ALL': 'Lekë',\n 'RSD': 'дин.',\n 'TJS': 'смн',\n 'THB': '฿',\n 'TMT': 'm.',\n 'TRY': '₺',\n 'UZS': 'сўм',\n 'VND': '₫',\n 'TWD': 'NT$'\n};\n/**\n *\n * @param {string} currencyCode ?\n * @returns {string} ?\n */\nexport function getBlazorCurrencySymbol(currencyCode) {\n return getValue(currencyCode || '', blazorCurrencyData);\n}\n","/***\n * Hijri parser\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var HijriParser;\n(function (HijriParser) {\n var dateCorrection = [28607, 28636, 28665, 28695, 28724, 28754, 28783, 28813, 28843, 28872, 28901, 28931, 28960, 28990,\n 29019, 29049, 29078, 29108, 29137, 29167, 29196, 29226, 29255, 29285, 29315, 29345, 29375, 29404, 29434, 29463, 29492, 29522,\n 29551, 29580, 29610, 29640, 29669, 29699, 29729, 29759, 29788, 29818, 29847, 29876, 29906, 29935, 29964, 29994, 30023, 30053,\n 30082, 30112, 30141, 30171, 30200, 30230, 30259, 30289, 30318, 30348, 30378, 30408, 30437, 30467, 30496, 30526, 30555, 30585,\n 30614, 30644, 30673, 30703, 30732, 30762, 30791, 30821, 30850, 30880, 30909, 30939, 30968, 30998, 31027, 31057, 31086, 31116,\n 31145, 31175, 31204, 31234, 31263, 31293, 31322, 31352, 31381, 31411, 31441, 31471, 31500, 31530, 31559, 31589, 31618, 31648,\n 31676, 31706, 31736, 31766, 31795, 31825, 31854, 31884, 31913, 31943, 31972, 32002, 32031, 32061, 32090, 32120, 32150, 32180,\n 32209, 32239, 32268, 32298, 32327, 32357, 32386, 32416, 32445, 32475, 32504, 32534, 32563, 32593, 32622, 32652, 32681, 32711,\n 32740, 32770, 32799, 32829, 32858, 32888, 32917, 32947, 32976, 33006, 33035, 33065, 33094, 33124, 33153, 33183, 33213, 33243,\n 33272, 33302, 33331, 33361, 33390, 33420, 33450, 33479, 33509, 33539, 33568, 33598, 33627, 33657, 33686, 33716, 33745, 33775,\n 33804, 33834, 33863, 33893, 33922, 33952, 33981, 34011, 34040, 34069, 34099, 34128, 34158, 34187, 34217, 34247, 34277, 34306,\n 34336, 34365, 34395, 34424, 34454, 34483, 34512, 34542, 34571, 34601, 34631, 34660, 34690, 34719, 34749, 34778, 34808, 34837,\n 34867, 34896, 34926, 34955, 34985, 35015, 35044, 35074, 35103, 35133, 35162, 35192, 35222, 35251, 35280, 35310, 35340, 35370,\n 35399, 35429, 35458, 35488, 35517, 35547, 35576, 35605, 35635, 35665, 35694, 35723, 35753, 35782, 35811, 35841, 35871, 35901,\n 35930, 35960, 35989, 36019, 36048, 36078, 36107, 36136, 36166, 36195, 36225, 36254, 36284, 36314, 36343, 36373, 36403, 36433,\n 36462, 36492, 36521, 36551, 36580, 36610, 36639, 36669, 36698, 36728, 36757, 36786, 36816, 36845, 36875, 36904, 36934, 36963,\n 36993, 37022, 37052, 37081, 37111, 37141, 37170, 37200, 37229, 37259, 37288, 37318, 37347, 37377, 37406, 37436, 37465, 37495,\n 37524, 37554, 37584, 37613, 37643, 37672, 37701, 37731, 37760, 37790, 37819, 37849, 37878, 37908, 37938, 37967, 37997, 38027,\n 38056, 38085, 38115, 38144, 38174, 38203, 38233, 38262, 38292, 38322, 38351, 38381, 38410, 38440, 38469, 38499, 38528, 38558,\n 38587, 38617, 38646, 38676, 38705, 38735, 38764, 38794, 38823, 38853, 38882, 38912, 38941, 38971, 39001, 39030, 39059, 39089,\n 39118, 39148, 39178, 39208, 39237, 39267, 39297, 39326, 39355, 39385, 39414, 39444, 39473, 39503, 39532, 39562, 39592, 39621,\n 39650, 39680, 39709, 39739, 39768, 39798, 39827, 39857, 39886, 39916, 39946, 39975, 40005, 40035, 40064, 40094, 40123, 40153,\n 40182, 40212, 40241, 40271, 40300, 40330, 40359, 40389, 40418, 40448, 40477, 40507, 40536, 40566, 40595, 40625, 40655, 40685,\n 40714, 40744, 40773, 40803, 40832, 40862, 40892, 40921, 40951, 40980, 41009, 41039, 41068, 41098, 41127, 41157, 41186, 41216,\n 41245, 41275, 41304, 41334, 41364, 41393, 41422, 41452, 41481, 41511, 41540, 41570, 41599, 41629, 41658, 41688, 41718, 41748,\n 41777, 41807, 41836, 41865, 41894, 41924, 41953, 41983, 42012, 42042, 42072, 42102, 42131, 42161, 42190, 42220, 42249, 42279,\n 42308, 42337, 42367, 42397, 42426, 42456, 42485, 42515, 42545, 42574, 42604, 42633, 42662, 42692, 42721, 42751, 42780, 42810,\n 42839, 42869, 42899, 42929, 42958, 42988, 43017, 43046, 43076, 43105, 43135, 43164, 43194, 43223, 43253, 43283, 43312, 43342,\n 43371, 43401, 43430, 43460, 43489, 43519, 43548, 43578, 43607, 43637, 43666, 43696, 43726, 43755, 43785, 43814, 43844, 43873,\n 43903, 43932, 43962, 43991, 44021, 44050, 44080, 44109, 44139, 44169, 44198, 44228, 44258, 44287, 44317, 44346, 44375, 44405,\n 44434, 44464, 44493, 44523, 44553, 44582, 44612, 44641, 44671, 44700, 44730, 44759, 44788, 44818, 44847, 44877, 44906, 44936,\n 44966, 44996, 45025, 45055, 45084, 45114, 45143, 45172, 45202, 45231, 45261, 45290, 45320, 45350, 45380, 45409, 45439, 45468,\n 45498, 45527, 45556, 45586, 45615, 45644, 45674, 45704, 45733, 45763, 45793, 45823, 45852, 45882, 45911, 45940, 45970, 45999,\n 46028, 46058, 46088, 46117, 46147, 46177, 46206, 46236, 46265, 46295, 46324, 46354, 46383, 46413, 46442, 46472, 46501, 46531,\n 46560, 46590, 46620, 46649, 46679, 46708, 46738, 46767, 46797, 46826, 46856, 46885, 46915, 46944, 46974, 47003, 47033, 47063,\n 47092, 47122, 47151, 47181, 47210, 47240, 47269, 47298, 47328, 47357, 47387, 47417, 47446, 47476, 47506, 47535, 47565, 47594,\n 47624, 47653, 47682, 47712, 47741, 47771, 47800, 47830, 47860, 47890, 47919, 47949, 47978, 48008, 48037, 48066, 48096, 48125,\n 48155, 48184, 48214, 48244, 48273, 48303, 48333, 48362, 48392, 48421, 48450, 48480, 48509, 48538, 48568, 48598, 48627, 48657,\n 48687, 48717, 48746, 48776, 48805, 48834, 48864, 48893, 48922, 48952, 48982, 49011, 49041, 49071, 49100, 49130, 49160, 49189,\n 49218, 49248, 49277, 49306, 49336, 49365, 49395, 49425, 49455, 49484, 49514, 49543, 49573, 49602, 49632, 49661, 49690, 49720,\n 49749, 49779, 49809, 49838, 49868, 49898, 49927, 49957, 49986, 50016, 50045, 50075, 50104, 50133, 50163, 50192, 50222, 50252,\n 50281, 50311, 50340, 50370, 50400, 50429, 50459, 50488, 50518, 50547, 50576, 50606, 50635, 50665, 50694, 50724, 50754, 50784,\n 50813, 50843, 50872, 50902, 50931, 50960, 50990, 51019, 51049, 51078, 51108, 51138, 51167, 51197, 51227, 51256, 51286, 51315,\n 51345, 51374, 51403, 51433, 51462, 51492, 51522, 51552, 51582, 51611, 51641, 51670, 51699, 51729, 51758, 51787, 51816, 51846,\n 51876, 51906, 51936, 51965, 51995, 52025, 52054, 52083, 52113, 52142, 52171, 52200, 52230, 52260, 52290, 52319, 52349, 52379,\n 52408, 52438, 52467, 52497, 52526, 52555, 52585, 52614, 52644, 52673, 52703, 52733, 52762, 52792, 52822, 52851, 52881, 52910,\n 52939, 52969, 52998, 53028, 53057, 53087, 53116, 53146, 53176, 53205, 53235, 53264, 53294, 53324, 53353, 53383, 53412, 53441,\n 53471, 53500, 53530, 53559, 53589, 53619, 53648, 53678, 53708, 53737, 53767, 53796, 53825, 53855, 53884, 53913, 53943, 53973,\n 54003, 54032, 54062, 54092, 54121, 54151, 54180, 54209, 54239, 54268, 54297, 54327, 54357, 54387, 54416, 54446, 54476, 54505,\n 54535, 54564, 54593, 54623, 54652, 54681, 54711, 54741, 54770, 54800, 54830, 54859, 54889, 54919, 54948, 54977, 55007, 55036,\n 55066, 55095, 55125, 55154, 55184, 55213, 55243, 55273, 55302, 55332, 55361, 55391, 55420, 55450, 55479, 55508, 55538, 55567,\n 55597, 55627, 55657, 55686, 55716, 55745, 55775, 55804, 55834, 55863, 55892, 55922, 55951, 55981, 56011, 56040, 56070, 56100,\n 56129, 56159, 56188, 56218, 56247, 56276, 56306, 56335, 56365, 56394, 56424, 56454, 56483, 56513, 56543, 56572, 56601, 56631,\n 56660, 56690, 56719, 56749, 56778, 56808, 56837, 56867, 56897, 56926, 56956, 56985, 57015, 57044, 57074, 57103, 57133, 57162,\n 57192, 57221, 57251, 57280, 57310, 57340, 57369, 57399, 57429, 57458, 57487, 57517, 57546, 57576, 57605, 57634, 57664, 57694,\n 57723, 57753, 57783, 57813, 57842, 57871, 57901, 57930, 57959, 57989, 58018, 58048, 58077, 58107, 58137, 58167, 58196, 58226,\n 58255, 58285, 58314, 58343, 58373, 58402, 58432, 58461, 58491, 58521, 58551, 58580, 58610, 58639, 58669, 58698, 58727, 58757,\n 58786, 58816, 58845, 58875, 58905, 58934, 58964, 58994, 59023, 59053, 59082, 59111, 59141, 59170, 59200, 59229, 59259, 59288,\n 59318, 59348, 59377, 59407, 59436, 59466, 59495, 59525, 59554, 59584, 59613, 59643, 59672, 59702, 59731, 59761, 59791, 59820,\n 59850, 59879, 59909, 59939, 59968, 59997, 60027, 60056, 60086, 60115, 60145, 60174, 60204, 60234, 60264, 60293, 60323, 60352,\n 60381, 60411, 60440, 60469, 60499, 60528, 60558, 60588, 60618, 60648, 60677, 60707, 60736, 60765, 60795, 60824, 60853, 60883,\n 60912, 60942, 60972, 61002, 61031, 61061, 61090, 61120, 61149, 61179, 61208, 61237, 61267, 61296, 61326, 61356, 61385, 61415,\n 61445, 61474, 61504, 61533, 61563, 61592, 61621, 61651, 61680, 61710, 61739, 61769, 61799, 61828, 61858, 61888, 61917, 61947,\n 61976, 62006, 62035, 62064, 62094, 62123, 62153, 62182, 62212, 62242, 62271, 62301, 62331, 62360, 62390, 62419, 62448, 62478,\n 62507, 62537, 62566, 62596, 62625, 62655, 62685, 62715, 62744, 62774, 62803, 62832, 62862, 62891, 62921, 62950, 62980, 63009,\n 63039, 63069, 63099, 63128, 63157, 63187, 63216, 63246, 63275, 63305, 63334, 63363, 63393, 63423, 63453, 63482, 63512, 63541,\n 63571, 63600, 63630, 63659, 63689, 63718, 63747, 63777, 63807, 63836, 63866, 63895, 63925, 63955, 63984, 64014, 64043, 64073,\n 64102, 64131, 64161, 64190, 64220, 64249, 64279, 64309, 64339, 64368, 64398, 64427, 64457, 64486, 64515, 64545, 64574, 64603,\n 64633, 64663, 64692, 64722, 64752, 64782, 64811, 64841, 64870, 64899, 64929, 64958, 64987, 65017, 65047, 65076, 65106, 65136,\n 65166, 65195, 65225, 65254, 65283, 65313, 65342, 65371, 65401, 65431, 65460, 65490, 65520, 65549, 65579, 65608, 65638, 65667,\n 65697, 65726, 65755, 65785, 65815, 65844, 65874, 65903, 65933, 65963, 65992, 66022, 66051, 66081, 66110, 66140, 66169, 66199,\n 66228, 66258, 66287, 66317, 66346, 66376, 66405, 66435, 66465, 66494, 66524, 66553, 66583, 66612, 66641, 66671, 66700, 66730,\n 66760, 66789, 66819, 66849, 66878, 66908, 66937, 66967, 66996, 67025, 67055, 67084, 67114, 67143, 67173, 67203, 67233, 67262,\n 67292, 67321, 67351, 67380, 67409, 67439, 67468, 67497, 67527, 67557, 67587, 67617, 67646, 67676, 67705, 67735, 67764, 67793,\n 67823, 67852, 67882, 67911, 67941, 67971, 68000, 68030, 68060, 68089, 68119, 68148, 68177, 68207, 68236, 68266, 68295, 68325,\n 68354, 68384, 68414, 68443, 68473, 68502, 68532, 68561, 68591, 68620, 68650, 68679, 68708, 68738, 68768, 68797, 68827, 68857,\n 68886, 68916, 68946, 68975, 69004, 69034, 69063, 69092, 69122, 69152, 69181, 69211, 69240, 69270, 69300, 69330, 69359, 69388,\n 69418, 69447, 69476, 69506, 69535, 69565, 69595, 69624, 69654, 69684, 69713, 69743, 69772, 69802, 69831, 69861, 69890, 69919,\n 69949, 69978, 70008, 70038, 70067, 70097, 70126, 70156, 70186, 70215, 70245, 70274, 70303, 70333, 70362, 70392, 70421, 70451,\n 70481, 70510, 70540, 70570, 70599, 70629, 70658, 70687, 70717, 70746, 70776, 70805, 70835, 70864, 70894, 70924, 70954, 70983,\n 71013, 71042, 71071, 71101, 71130, 71159, 71189, 71218, 71248, 71278, 71308, 71337, 71367, 71397, 71426, 71455, 71485, 71514,\n 71543, 71573, 71602, 71632, 71662, 71691, 71721, 71751, 71781, 71810, 71839, 71869, 71898, 71927, 71957, 71986, 72016, 72046,\n 72075, 72105, 72135, 72164, 72194, 72223, 72253, 72282, 72311, 72341, 72370, 72400, 72429, 72459, 72489, 72518, 72548, 72577,\n 72607, 72637, 72666, 72695, 72725, 72754, 72784, 72813, 72843, 72872, 72902, 72931, 72961, 72991, 73020, 73050, 73080, 73109,\n 73139, 73168, 73197, 73227, 73256, 73286, 73315, 73345, 73375, 73404, 73434, 73464, 73493, 73523, 73552, 73581, 73611, 73640,\n 73669, 73699, 73729, 73758, 73788, 73818, 73848, 73877, 73907, 73936, 73965, 73995, 74024, 74053, 74083, 74113, 74142, 74172,\n 74202, 74231, 74261, 74291, 74320, 74349, 74379, 74408, 74437, 74467, 74497, 74526, 74556, 74586, 74615, 74645, 74675, 74704,\n 74733, 74763, 74792, 74822, 74851, 74881, 74910, 74940, 74969, 74999, 75029, 75058, 75088, 75117, 75147, 75176, 75206, 75235,\n 75264, 75294, 75323, 75353, 75383, 75412, 75442, 75472, 75501, 75531, 75560, 75590, 75619, 75648, 75678, 75707, 75737, 75766,\n 75796, 75826, 75856, 75885, 75915, 75944, 75974, 76003, 76032, 76062, 76091, 76121, 76150, 76180, 76210, 76239, 76269, 76299,\n 76328, 76358, 76387, 76416, 76446, 76475, 76505, 76534, 76564, 76593, 76623, 76653, 76682, 76712, 76741, 76771, 76801, 76830,\n 76859, 76889, 76918, 76948, 76977, 77007, 77036, 77066, 77096, 77125, 77155, 77185, 77214, 77243, 77273, 77302, 77332, 77361,\n 77390, 77420, 77450, 77479, 77509, 77539, 77569, 77598, 77627, 77657, 77686, 77715, 77745, 77774, 77804, 77833, 77863, 77893,\n 77923, 77952, 77982, 78011, 78041, 78070, 78099, 78129, 78158, 78188, 78217, 78247, 78277, 78307, 78336, 78366, 78395, 78425,\n 78454, 78483, 78513, 78542, 78572, 78601, 78631, 78661, 78690, 78720, 78750, 78779, 78808, 78838, 78867, 78897, 78926, 78956,\n 78985, 79015, 79044, 79074, 79104, 79133, 79163, 79192, 79222, 79251, 79281, 79310, 79340, 79369, 79399, 79428, 79458, 79487,\n 79517, 79546, 79576, 79606, 79635, 79665, 79695, 79724, 79753, 79783, 79812, 79841, 79871, 79900, 79930, 79960, 79990\n ];\n /**\n *\n * @param {Date} gDate ?\n * @returns {Object} ?\n */\n function getHijriDate(gDate) {\n var day = gDate.getDate();\n var month = gDate.getMonth();\n var year = gDate.getFullYear();\n var tMonth = month + 1;\n var tYear = year;\n if (tMonth < 3) {\n tYear -= 1;\n tMonth += 12;\n }\n var yPrefix = Math.floor(tYear / 100);\n var julilanOffset = yPrefix - Math.floor(yPrefix / 4.) - 2;\n var julianNumber = Math.floor(365.25 * (tYear + 4716)) + Math.floor(30.6001 * (tMonth + 1)) + day - julilanOffset - 1524;\n yPrefix = Math.floor((julianNumber - 1867216.25) / 36524.25);\n julilanOffset = yPrefix - Math.floor(yPrefix / 4.) + 1;\n var b = julianNumber + julilanOffset + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var tempMonth = Math.floor((b - d) / 30.6001);\n day = (b - d) - Math.floor(30.6001 * tempMonth);\n month = Math.floor((b - d) / 20.6001);\n if (month > 13) {\n c += 1;\n month -= 12;\n }\n month -= 1;\n year = c - 4716;\n var modifiedJulianDate = julianNumber - 2400000;\n // date calculation for year after 2077\n var iyear = 10631 / 30;\n var z = julianNumber - 1948084;\n var cyc = Math.floor(z / 10631.);\n z = z - 10631 * cyc;\n var j = Math.floor((z - 0.1335) / iyear);\n var iy = 30 * cyc + j;\n z = z - Math.floor(j * iyear + 0.1335);\n var im = Math.floor((z + 28.5001) / 29.5);\n /* istanbul ignore next */\n if (im === 13) {\n im = 12;\n }\n var tempDay = z - Math.floor(29.5001 * im - 29);\n var i = 0;\n for (; i < dateCorrection.length; i++) {\n if (dateCorrection[parseInt(i.toString(), 10)] > modifiedJulianDate) {\n break;\n }\n }\n var iln = i + 16260;\n var ii = Math.floor((iln - 1) / 12);\n var hYear = ii + 1;\n var hmonth = iln - 12 * ii;\n var hDate = modifiedJulianDate - dateCorrection[i - 1] + 1;\n if ((hDate + '').length > 2) {\n hDate = tempDay;\n hmonth = im;\n hYear = iy;\n }\n return { year: hYear, month: hmonth, date: hDate };\n }\n HijriParser.getHijriDate = getHijriDate;\n /**\n *\n * @param {number} year ?\n * @param {number} month ?\n * @param {number} day ?\n * @returns {Date} ?\n */\n function toGregorian(year, month, day) {\n var iy = year;\n var im = month;\n var id = day;\n var ii = iy - 1;\n var iln = (ii * 12) + 1 + (im - 1);\n var i = iln - 16260;\n var mcjdn = id + dateCorrection[i - 1] - 1;\n var julianDate = mcjdn + 2400000;\n var z = Math.floor(julianDate + 0.5);\n var a = Math.floor((z - 1867216.25) / 36524.25);\n a = z + 1 + a - Math.floor(a / 4);\n var b = a + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var e = Math.floor((b - d) / 30.6001);\n var gDay = b - d - Math.floor(e * 30.6001);\n var gMonth = e - (e > 13.5 ? 13 : 1);\n var gYear = c - (gMonth > 2.5 ? 4716 : 4715);\n /* istanbul ignore next */\n if (gYear <= 0) {\n gMonth--;\n } // No year zero\n return new Date(gYear + '/' + (gMonth) + '/' + gDay);\n }\n HijriParser.toGregorian = toGregorian;\n})(HijriParser || (HijriParser = {}));\n","import { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nimport { isUndefined, throwError, getValue, isBlazor } from '../util';\nimport { HijriParser } from '../hijri-parser';\nimport { isNullOrUndefined, extend } from '../util';\nvar abbreviateRegexGlobal = /\\/MMMMM|MMMM|MMM|a|LLLL|LLL|EEEEE|EEEE|E|K|cccc|ccc|WW|W|G+|z+/gi;\nvar standalone = 'stand-alone';\nvar weekdayKey = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\nexport var basicPatterns = ['short', 'medium', 'long', 'full'];\nvar timeSetter = {\n m: 'getMinutes',\n h: 'getHours',\n H: 'getHours',\n s: 'getSeconds',\n d: 'getDate',\n f: 'getMilliseconds'\n};\nexport var datePartMatcher = {\n 'M': 'month',\n 'd': 'day',\n 'E': 'weekday',\n 'c': 'weekday',\n 'y': 'year',\n 'm': 'minute',\n 'h': 'hour',\n 'H': 'hour',\n 's': 'second',\n 'L': 'month',\n 'a': 'designator',\n 'z': 'timeZone',\n 'Z': 'timeZone',\n 'G': 'era',\n 'f': 'milliseconds'\n};\nvar timeSeparator = 'timeSeparator';\n/**\n * Date Format is a framework provides support for date formatting.\n *\n * @private\n */\nvar DateFormat = /** @class */ (function () {\n function DateFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} option - Specific the format in which date will format.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n DateFormat.dateFormat = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n var numObject = getValue('parserObject.numbers', dependable);\n var dateObject = dependable.dateObject;\n var formatOptions = { isIslamic: base.islamicRegex.test(option.calendar) };\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n formatOptions.dateSeperator = isBlazor() ? getValue('dateSeperator', dateObject) : base.getDateSeparator(dependable.dateObject);\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n if (isBlazor()) {\n resPattern = resPattern.replace(/tt/, 'a');\n }\n formatOptions.pattern = resPattern;\n formatOptions.numMapper = isBlazor() ?\n extend({}, numObject) : parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n var patternMatch = resPattern.match(abbreviateRegexGlobal) || [];\n for (var _i = 0, patternMatch_1 = patternMatch; _i < patternMatch_1.length; _i++) {\n var str = patternMatch_1[_i];\n var len = str.length;\n var char = str[0];\n if (char === 'K') {\n char = 'h';\n }\n switch (char) {\n case 'E':\n case 'c':\n if (isBlazor()) {\n formatOptions.weekday = getValue('days.' + base.monthIndex[\"\" + len], dateObject);\n }\n else {\n formatOptions.weekday = dependable.dateObject[\"\" + base.days][\"\" + standalone][base.monthIndex[\"\" + len]];\n }\n break;\n case 'M':\n case 'L':\n if (isBlazor()) {\n formatOptions.month = getValue('months.' + base.monthIndex[\"\" + len], dateObject);\n }\n else {\n formatOptions.month = dependable.dateObject[\"\" + base.month][\"\" + standalone][base.monthIndex[\"\" + len]];\n }\n break;\n case 'a':\n formatOptions.designator = isBlazor() ?\n getValue('dayPeriods', dateObject) : getValue('dayPeriods.format.wide', dateObject);\n break;\n case 'G': {\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n formatOptions.era = isBlazor() ? getValue('eras', dateObject) : getValue('eras.' + eText, dependable.dateObject);\n break;\n }\n case 'z':\n formatOptions.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n break;\n }\n }\n }\n return function (value) {\n if (isNaN(value.getDate())) {\n return null;\n }\n return _this.intDateFormatter(value, formatOptions);\n };\n };\n /**\n * Returns formatted date string based on options passed.\n *\n * @param {Date} value ?\n * @param {FormatOptions} options ?\n * @returns {string} ?\n */\n DateFormat.intDateFormatter = function (value, options) {\n var pattern = options.pattern;\n var ret = '';\n var matches = pattern.match(base.dateParseRegex);\n var dObject = this.getCurrentDateValue(value, options.isIslamic);\n for (var _i = 0, matches_1 = matches; _i < matches_1.length; _i++) {\n var match = matches_1[_i];\n var length_1 = match.length;\n var char = match[0];\n if (char === 'K') {\n char = 'h';\n }\n var curval = void 0;\n var curvalstr = '';\n var isNumber = void 0;\n var processNumber = void 0;\n var curstr = '';\n switch (char) {\n case 'M':\n case 'L':\n curval = dObject.month;\n if (length_1 > 2) {\n ret += options.month[\"\" + curval];\n }\n else {\n isNumber = true;\n }\n break;\n case 'E':\n case 'c':\n ret += options.weekday[\"\" + weekdayKey[value.getDay()]];\n break;\n case 'H':\n case 'h':\n case 'm':\n case 's':\n case 'd':\n case 'f':\n isNumber = true;\n if (char === 'd') {\n curval = dObject.date;\n }\n else if (char === 'f') {\n isNumber = false;\n processNumber = true;\n curvalstr = value[\"\" + timeSetter[\"\" + char]]().toString();\n curvalstr = curvalstr.substring(0, length_1);\n var curlength = curvalstr.length;\n if (length_1 !== curlength) {\n if (length_1 > 3) {\n continue;\n }\n for (var i = 0; i < length_1 - curlength; i++) {\n curvalstr = '0' + curvalstr.toString();\n }\n }\n curstr += curvalstr;\n }\n else {\n curval = value[\"\" + timeSetter[\"\" + char]]();\n }\n if (char === 'h') {\n curval = curval % 12 || 12;\n }\n break;\n case 'y':\n processNumber = true;\n curstr += dObject.year;\n if (length_1 === 2) {\n curstr = curstr.substr(curstr.length - 2);\n }\n break;\n case 'a': {\n var desig = value.getHours() < 12 ? 'am' : 'pm';\n ret += options.designator[\"\" + desig];\n break;\n }\n case 'G': {\n var dec = value.getFullYear() < 0 ? 0 : 1;\n var retu = options.era[\"\" + dec];\n if (isNullOrUndefined(retu)) {\n retu = options.era[dec ? 0 : 1];\n }\n ret += retu || '';\n break;\n }\n case '\\'':\n ret += (match === '\\'\\'') ? '\\'' : match.replace(/'/g, '');\n break;\n case 'z': {\n var timezone = value.getTimezoneOffset();\n var pattern_1 = (length_1 < 4) ? '+H;-H' : options.timeZone.hourFormat;\n pattern_1 = pattern_1.replace(/:/g, options.numMapper.timeSeparator);\n if (timezone === 0) {\n ret += options.timeZone.gmtZeroFormat;\n }\n else {\n processNumber = true;\n curstr = this.getTimeZoneValue(timezone, pattern_1);\n }\n curstr = options.timeZone.gmtFormat.replace(/\\{0\\}/, curstr);\n break;\n }\n case ':':\n ret += options.numMapper.numberSymbols[\"\" + timeSeparator];\n break;\n case '/':\n ret += options.dateSeperator;\n break;\n case 'W':\n isNumber = true;\n curval = base.getWeekOfYear(value);\n break;\n default:\n ret += match;\n }\n if (isNumber) {\n processNumber = true;\n curstr = this.checkTwodigitNumber(curval, length_1);\n }\n if (processNumber) {\n ret += parser.convertValueParts(curstr, base.latnParseRegex, options.numMapper.mapper);\n }\n }\n return ret;\n };\n DateFormat.getCurrentDateValue = function (value, isIslamic) {\n if (isIslamic) {\n return HijriParser.getHijriDate(value);\n }\n return { year: value.getFullYear(), month: value.getMonth() + 1, date: value.getDate() };\n };\n /**\n * Returns two digit numbers for given value and length\n *\n * @param {number} val ?\n * @param {number} len ?\n * @returns {string} ?\n */\n DateFormat.checkTwodigitNumber = function (val, len) {\n var ret = val + '';\n if (len === 2 && ret.length !== 2) {\n return '0' + ret;\n }\n return ret;\n };\n /**\n * Returns the value of the Time Zone.\n *\n * @param {number} tVal ?\n * @param {string} pattern ?\n * @returns {string} ?\n * @private\n */\n DateFormat.getTimeZoneValue = function (tVal, pattern) {\n var _this = this;\n var splt = pattern.split(';');\n var curPattern = splt[tVal > 0 ? 1 : 0];\n var no = Math.abs(tVal);\n return curPattern = curPattern.replace(/HH?|mm/g, function (str) {\n var len = str.length;\n var ishour = str.indexOf('H') !== -1;\n return _this.checkTwodigitNumber(Math.floor(ishour ? (no / 60) : (no % 60)), len);\n });\n };\n return DateFormat;\n}());\nexport { DateFormat };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isUndefined, throwError, isNullOrUndefined, extend, isBlazor, getValue } from '../util';\nimport { defaultCurrencyCode } from '../internationalization';\nimport { IntlBase as base } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nvar errorText = {\n 'ms': 'minimumSignificantDigits',\n 'ls': 'maximumSignificantDigits',\n 'mf': 'minimumFractionDigits',\n 'lf': 'maximumFractionDigits'\n};\nvar percentSign = 'percentSign';\nvar minusSign = 'minusSign';\nvar mapper = ['infinity', 'nan', 'group', 'decimal', 'exponential'];\n/**\n * Module for number formatting.\n *\n * @private\n */\nvar NumberFormat = /** @class */ (function () {\n function NumberFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} option - Specific the format in which number will format.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n NumberFormat.numberFormatter = function (culture, option, cldr) {\n var _this = this;\n var fOptions = extend({}, option);\n var cOptions = {};\n var dOptions = {};\n var symbolPattern;\n var dependable = base.getDependables(cldr, culture, '', true);\n var numObject = dependable.numericObject;\n dOptions.numberMapper = isBlazor() ? extend({}, numObject) :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n dOptions.currencySymbol = isBlazor() ? getValue('currencySymbol', numObject) : base.getCurrencySymbol(dependable.numericObject, fOptions.currency || defaultCurrencyCode, option.altSymbol, option.ignoreCurrency);\n dOptions.percentSymbol = isBlazor() ? getValue('numberSymbols.percentSign', numObject) :\n dOptions.numberMapper.numberSymbols[\"\" + percentSign];\n dOptions.minusSymbol = isBlazor() ? getValue('numberSymbols.minusSign', numObject) :\n dOptions.numberMapper.numberSymbols[\"\" + minusSign];\n var symbols = dOptions.numberMapper.numberSymbols;\n if ((option.format) && !(base.formatRegex.test(option.format))) {\n cOptions = base.customFormat(option.format, dOptions, dependable.numericObject);\n if (!isUndefined(fOptions.useGrouping) && fOptions.useGrouping) {\n fOptions.useGrouping = cOptions.pData.useGrouping;\n }\n }\n else {\n extend(fOptions, base.getProperNumericSkeleton(option.format || 'N'));\n fOptions.isCurrency = fOptions.type === 'currency';\n fOptions.isPercent = fOptions.type === 'percent';\n if (!isBlazor()) {\n symbolPattern = base.getSymbolPattern(fOptions.type, dOptions.numberMapper.numberSystem, dependable.numericObject, fOptions.isAccount);\n }\n fOptions.groupOne = this.checkValueRange(fOptions.maximumSignificantDigits, fOptions.minimumSignificantDigits, true);\n this.checkValueRange(fOptions.maximumFractionDigits, fOptions.minimumFractionDigits, false, true);\n if (!isUndefined(fOptions.fractionDigits)) {\n fOptions.minimumFractionDigits = fOptions.maximumFractionDigits = fOptions.fractionDigits;\n }\n if (isUndefined(fOptions.useGrouping)) {\n fOptions.useGrouping = true;\n }\n if (fOptions.isCurrency && !isBlazor()) {\n symbolPattern = symbolPattern.replace(/\\u00A4/g, base.defaultCurrency);\n }\n if (!isBlazor()) {\n var split = symbolPattern.split(';');\n cOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, dOptions.currencySymbol);\n cOptions.pData = base.getFormatData(split[0], false, dOptions.currencySymbol);\n if (fOptions.useGrouping) {\n fOptions.groupSeparator = symbols[mapper[2]];\n fOptions.groupData = this.getGroupingDetails(split[0]);\n }\n }\n else {\n cOptions.nData = extend({}, {}, getValue(fOptions.type + 'nData', numObject));\n cOptions.pData = extend({}, {}, getValue(fOptions.type + 'pData', numObject));\n if (fOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([cOptions.pData, cOptions.nData], dOptions.currencySymbol, option.currency);\n }\n }\n var minFrac = isUndefined(fOptions.minimumFractionDigits);\n if (minFrac) {\n fOptions.minimumFractionDigits = cOptions.nData.minimumFraction;\n }\n if (isUndefined(fOptions.maximumFractionDigits)) {\n var mval = cOptions.nData.maximumFraction;\n fOptions.maximumFractionDigits = isUndefined(mval) && fOptions.isPercent ? 0 : mval;\n }\n var mfrac = fOptions.minimumFractionDigits;\n var lfrac = fOptions.maximumFractionDigits;\n if (!isUndefined(mfrac) && !isUndefined(lfrac)) {\n if (mfrac > lfrac) {\n fOptions.maximumFractionDigits = mfrac;\n }\n }\n }\n extend(cOptions.nData, fOptions);\n extend(cOptions.pData, fOptions);\n return function (value) {\n if (isNaN(value)) {\n return symbols[mapper[1]];\n }\n else if (!isFinite(value)) {\n return symbols[mapper[0]];\n }\n return _this.intNumberFormatter(value, cOptions, dOptions, option);\n };\n };\n /**\n * Returns grouping details for the pattern provided\n *\n * @param {string} pattern ?\n * @returns {GroupDetails} ?\n */\n NumberFormat.getGroupingDetails = function (pattern) {\n var ret = {};\n var match = pattern.match(base.negativeDataRegex);\n if (match && match[4]) {\n var pattern_1 = match[4];\n var p = pattern_1.lastIndexOf(',');\n if (p !== -1) {\n var temp = pattern_1.split('.')[0];\n ret.primary = (temp.length - p) - 1;\n var s = pattern_1.lastIndexOf(',', p - 1);\n if (s !== -1) {\n ret.secondary = p - 1 - s;\n }\n }\n }\n return ret;\n };\n /**\n * Returns if the provided integer range is valid.\n *\n * @param {number} val1 ?\n * @param {number} val2 ?\n * @param {boolean} checkbothExist ?\n * @param {boolean} isFraction ?\n * @returns {boolean} ?\n */\n NumberFormat.checkValueRange = function (val1, val2, checkbothExist, isFraction) {\n var decide = isFraction ? 'f' : 's';\n var dint = 0;\n var str1 = errorText['l' + decide];\n var str2 = errorText['m' + decide];\n if (!isUndefined(val1)) {\n this.checkRange(val1, str1, isFraction);\n dint++;\n }\n if (!isUndefined(val2)) {\n this.checkRange(val2, str2, isFraction);\n dint++;\n }\n if (dint === 2) {\n if (val1 < val2) {\n throwError(str2 + 'specified must be less than the' + str1);\n }\n else {\n return true;\n }\n }\n else if (checkbothExist && dint === 1) {\n throwError('Both' + str2 + 'and' + str2 + 'must be present');\n }\n return false;\n };\n /**\n * Check if the provided fraction range is valid\n *\n * @param {number} val ?\n * @param {string} text ?\n * @param {boolean} isFraction ?\n * @returns {void} ?\n */\n NumberFormat.checkRange = function (val, text, isFraction) {\n var range = isFraction ? [0, 20] : [1, 21];\n if (val < range[0] || val > range[1]) {\n throwError(text + 'value must be within the range' + range[0] + 'to' + range[1]);\n }\n };\n /**\n * Returns formatted numeric string for provided formatting options\n *\n * @param {number} value ?\n * @param {base.GenericFormatOptions} fOptions ?\n * @param {CommonOptions} dOptions ?\n * @param {NumberFormatOptions} [option] ?\n * @returns {string} ?\n */\n NumberFormat.intNumberFormatter = function (value, fOptions, dOptions, option) {\n var curData;\n if (isUndefined(fOptions.nData.type)) {\n return undefined;\n }\n else {\n if (value < 0) {\n value = value * -1;\n curData = fOptions.nData;\n }\n else if (value === 0) {\n curData = fOptions.zeroData || fOptions.pData;\n }\n else {\n curData = fOptions.pData;\n }\n var fValue = '';\n if (curData.isPercent) {\n value = value * 100;\n }\n if (curData.groupOne) {\n fValue = this.processSignificantDigits(value, curData.minimumSignificantDigits, curData.maximumSignificantDigits);\n }\n else {\n fValue = this.processFraction(value, curData.minimumFractionDigits, curData.maximumFractionDigits, option);\n if (curData.minimumIntegerDigits) {\n fValue = this.processMinimumIntegers(fValue, curData.minimumIntegerDigits);\n }\n if (dOptions.isCustomFormat && curData.minimumFractionDigits < curData.maximumFractionDigits\n && /\\d+\\.\\d+/.test(fValue)) {\n var temp = fValue.split('.');\n var decimalPart = temp[1];\n var len = decimalPart.length;\n for (var i = len - 1; i >= 0; i--) {\n if (decimalPart[parseInt(i.toString(), 10)] === '0' && i >= curData.minimumFractionDigits) {\n decimalPart = decimalPart.slice(0, i);\n }\n else {\n break;\n }\n }\n fValue = temp[0] + '.' + decimalPart;\n }\n }\n if (curData.type === 'scientific') {\n fValue = value.toExponential(curData.maximumFractionDigits);\n fValue = fValue.replace('e', dOptions.numberMapper.numberSymbols[mapper[4]]);\n }\n fValue = fValue.replace('.', dOptions.numberMapper.numberSymbols[mapper[3]]);\n fValue = curData.format === '#,###,,;(#,###,,)' ? this.customPivotFormat(parseInt(fValue, 10)) : fValue;\n if (curData.useGrouping) {\n fValue = this.groupNumbers(fValue, curData.groupData.primary, curData.groupSeparator || ',', dOptions.numberMapper.numberSymbols[mapper[3]] || '.', curData.groupData.secondary);\n }\n fValue = parser.convertValueParts(fValue, base.latnParseRegex, dOptions.numberMapper.mapper);\n if (curData.nlead === 'N/A') {\n return curData.nlead;\n }\n else {\n if (fValue === '0' && option && option.format === '0') {\n return fValue + curData.nend;\n }\n return curData.nlead + fValue + curData.nend;\n }\n }\n };\n /**\n * Returns significant digits processed numeric string\n *\n * @param {number} value ?\n * @param {number} min ?\n * @param {number} max ?\n * @returns {string} ?\n */\n NumberFormat.processSignificantDigits = function (value, min, max) {\n var temp = value + '';\n var tn;\n var length = temp.length;\n if (length < min) {\n return value.toPrecision(min);\n }\n else {\n temp = value.toPrecision(max);\n tn = +temp;\n return tn + '';\n }\n };\n /**\n * Returns grouped numeric string\n *\n * @param {string} val ?\n * @param {number} level1 ?\n * @param {string} sep ?\n * @param {string} decimalSymbol ?\n * @param {number} level2 ?\n * @returns {string} ?\n */\n NumberFormat.groupNumbers = function (val, level1, sep, decimalSymbol, level2) {\n var flag = !isNullOrUndefined(level2) && level2 !== 0;\n var split = val.split(decimalSymbol);\n var prefix = split[0];\n var length = prefix.length;\n var str = '';\n while (length > level1) {\n str = prefix.slice(length - level1, length) + (str.length ?\n (sep + str) : '');\n length -= level1;\n if (flag) {\n level1 = level2;\n flag = false;\n }\n }\n split[0] = prefix.slice(0, length) + (str.length ? sep : '') + str;\n return split.join(decimalSymbol);\n };\n /**\n * Returns fraction processed numeric string\n *\n * @param {number} value ?\n * @param {number} min ?\n * @param {number} max ?\n * @param {NumberFormatOptions} [option] ?\n * @returns {string} ?\n */\n NumberFormat.processFraction = function (value, min, max, option) {\n var temp = (value + '').split('.')[1];\n var length = temp ? temp.length : 0;\n if (min && length < min) {\n var ret = '';\n if (length === 0) {\n ret = value.toFixed(min);\n }\n else {\n ret += value;\n for (var j = 0; j < min - length; j++) {\n ret += '0';\n }\n return ret;\n }\n return value.toFixed(min);\n }\n else if (!isNullOrUndefined(max) && (length > max || max === 0)) {\n return value.toFixed(max);\n }\n var str = value + '';\n if (str[0] === '0' && option && option.format === '###.00') {\n str = str.slice(1);\n }\n return str;\n };\n /**\n * Returns integer processed numeric string\n *\n * @param {string} value ?\n * @param {number} min ?\n * @returns {string} ?\n */\n NumberFormat.processMinimumIntegers = function (value, min) {\n var temp = value.split('.');\n var lead = temp[0];\n var len = lead.length;\n if (len < min) {\n for (var i = 0; i < min - len; i++) {\n lead = '0' + lead;\n }\n temp[0] = lead;\n }\n return temp.join('.');\n };\n /**\n * Returns custom format for pivot table\n *\n * @param {number} value ?\n * @returns {string} ?\n */\n NumberFormat.customPivotFormat = function (value) {\n if (value >= 500000) {\n value /= 1000000;\n var _a = value.toString().split('.'), integer = _a[0], decimal = _a[1];\n return decimal && +decimal.substring(0, 1) >= 5\n ? Math.ceil(value).toString()\n : Math.floor(value).toString();\n }\n return '';\n };\n return NumberFormat;\n}());\nexport { NumberFormat };\n","import { IntlBase as base } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nimport { isUndefined, throwError, getValue, isNullOrUndefined, isBlazor } from '../util';\nimport { datePartMatcher } from './date-formatter';\nimport { HijriParser } from '../hijri-parser';\nvar standalone = 'stand-alone';\nvar latnRegex = /^[0-9]*$/;\nvar timeSetter = {\n minute: 'setMinutes',\n hour: 'setHours',\n second: 'setSeconds',\n day: 'setDate',\n month: 'setMonth',\n milliseconds: 'setMilliseconds'\n};\nvar month = 'months';\n/**\n * Date Parser.\n *\n * @private\n */\nvar DateParser = /** @class */ (function () {\n function DateParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} option - Specific the format in which string date will be parsed.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n DateParser.dateParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n var numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), false, isBlazor());\n var parseOptions = {};\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n var regexString = '';\n var hourOnly;\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n parseOptions = { isIslamic: base.islamicRegex.test(option.calendar), pattern: resPattern, evalposition: {}, culture: culture };\n var patternMatch = resPattern.match(base.dateParseRegex) || [];\n var length_1 = patternMatch.length;\n var gmtCorrection = 0;\n var zCorrectTemp = 0;\n var isgmtTraversed = false;\n var nRegx = numOptions.numericRegex;\n var numMapper = isBlazor() ? dependable.parserObject.numbers\n : parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n for (var i = 0; i < length_1; i++) {\n var str = patternMatch[parseInt(i.toString(), 10)];\n var len = str.length;\n var char = (str[0] === 'K') ? 'h' : str[0];\n var isNumber = void 0;\n var canUpdate = void 0;\n var charKey = datePartMatcher[\"\" + char];\n var optional = (len === 2) ? '' : '?';\n if (isgmtTraversed) {\n gmtCorrection = zCorrectTemp;\n isgmtTraversed = false;\n }\n switch (char) {\n case 'E':\n case 'c': {\n var weekData = void 0;\n if (isBlazor()) {\n weekData = getValue('days.' + base.monthIndex[\"\" + len], dependable.dateObject);\n }\n else {\n weekData = dependable.dateObject[\"\" + base.days][\"\" + standalone][base.monthIndex[\"\" + len]];\n }\n var weekObject = parser.reverseObject(weekData);\n regexString += '(' + Object.keys(weekObject).join('|') + ')';\n break;\n }\n case 'M':\n case 'L':\n case 'd':\n case 'm':\n case 's':\n case 'h':\n case 'H':\n case 'f':\n canUpdate = true;\n if ((char === 'M' || char === 'L') && len > 2) {\n var monthData = void 0;\n if (isBlazor()) {\n monthData = getValue('months.' + base.monthIndex[\"\" + len], dependable.dateObject);\n }\n else {\n monthData = dependable.dateObject[\"\" + month][\"\" + standalone][base.monthIndex[\"\" + len]];\n }\n parseOptions[\"\" + charKey] = parser.reverseObject(monthData);\n regexString += '(' + Object.keys(parseOptions[\"\" + charKey]).join('|') + ')';\n }\n else if (char === 'f') {\n if (len > 3) {\n continue;\n }\n isNumber = true;\n regexString += '(' + nRegx + nRegx + '?' + nRegx + '?' + ')';\n }\n else {\n isNumber = true;\n regexString += '(' + nRegx + nRegx + optional + ')';\n }\n if (char === 'h') {\n parseOptions.hour12 = true;\n }\n break;\n case 'W': {\n var opt = len === 1 ? '?' : '';\n regexString += '(' + nRegx + opt + nRegx + ')';\n break;\n }\n case 'y':\n canUpdate = isNumber = true;\n if (len === 2) {\n regexString += '(' + nRegx + nRegx + ')';\n }\n else {\n regexString += '(' + nRegx + '{' + len + ',})';\n }\n break;\n case 'a': {\n canUpdate = true;\n var periodValur = isBlazor() ?\n getValue('dayPeriods', dependable.dateObject) :\n getValue('dayPeriods.format.wide', dependable.dateObject);\n parseOptions[\"\" + charKey] = parser.reverseObject(periodValur);\n regexString += '(' + Object.keys(parseOptions[\"\" + charKey]).join('|') + ')';\n break;\n }\n case 'G': {\n canUpdate = true;\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n parseOptions[\"\" + charKey] = parser.reverseObject(isBlazor() ?\n getValue('eras', dependable.dateObject) : getValue('eras.' + eText, dependable.dateObject));\n regexString += '(' + Object.keys(parseOptions[\"\" + charKey]).join('|') + '?)';\n break;\n }\n case 'z': {\n var tval = new Date().getTimezoneOffset();\n canUpdate = (tval !== 0);\n parseOptions[\"\" + charKey] = getValue('dates.timeZoneNames', dependable.parserObject);\n var tzone = parseOptions[\"\" + charKey];\n hourOnly = (len < 4);\n var hpattern = hourOnly ? '+H;-H' : tzone.hourFormat;\n hpattern = hpattern.replace(/:/g, numMapper.timeSeparator);\n regexString += '(' + this.parseTimeZoneRegx(hpattern, tzone, nRegx) + ')?';\n isgmtTraversed = true;\n zCorrectTemp = hourOnly ? 6 : 12;\n break;\n }\n case '\\'': {\n var iString = str.replace(/'/g, '');\n regexString += '(' + iString + ')?';\n break;\n }\n default:\n regexString += '([\\\\D])';\n break;\n }\n if (canUpdate) {\n parseOptions.evalposition[\"\" + charKey] = { isNumber: isNumber, pos: i + 1 + gmtCorrection, hourOnly: hourOnly };\n }\n if (i === length_1 - 1 && !isNullOrUndefined(regexString)) {\n var regExp = RegExp;\n parseOptions.parserRegex = new regExp('^' + regexString + '$', 'i');\n }\n }\n }\n return function (value) {\n var parsedDateParts = _this.internalDateParse(value, parseOptions, numOptions);\n if (isNullOrUndefined(parsedDateParts) || !Object.keys(parsedDateParts).length) {\n return null;\n }\n if (parseOptions.isIslamic) {\n var dobj = {};\n var tYear = parsedDateParts.year;\n var tDate = parsedDateParts.day;\n var tMonth = parsedDateParts.month;\n var ystrig = tYear ? (tYear + '') : '';\n var is2DigitYear = (ystrig.length === 2);\n if (!tYear || !tMonth || !tDate || is2DigitYear) {\n dobj = HijriParser.getHijriDate(new Date());\n }\n if (is2DigitYear) {\n tYear = parseInt((dobj.year + '').slice(0, 2) + ystrig, 10);\n }\n var dateObject = HijriParser.toGregorian(tYear || dobj.year, tMonth || dobj.month, tDate || dobj.date);\n parsedDateParts.year = dateObject.getFullYear();\n parsedDateParts.month = dateObject.getMonth() + 1;\n parsedDateParts.day = dateObject.getDate();\n }\n return _this.getDateObject(parsedDateParts);\n };\n };\n /**\n * Returns date object for provided date options\n *\n * @param {DateParts} options ?\n * @param {Date} value ?\n * @returns {Date} ?\n */\n DateParser.getDateObject = function (options, value) {\n var res = value || new Date();\n res.setMilliseconds(0);\n var tKeys = ['hour', 'minute', 'second', 'milliseconds', 'month', 'day'];\n var y = options.year;\n var desig = options.designator;\n var tzone = options.timeZone;\n if (!isUndefined(y)) {\n var len = (y + '').length;\n if (len <= 2) {\n var century = Math.floor(res.getFullYear() / 100) * 100;\n y += century;\n }\n res.setFullYear(y);\n }\n for (var _i = 0, tKeys_1 = tKeys; _i < tKeys_1.length; _i++) {\n var key = tKeys_1[_i];\n var tValue = options[\"\" + key];\n if (isUndefined(tValue) && key === 'day') {\n res.setDate(1);\n }\n if (!isUndefined(tValue)) {\n if (key === 'month') {\n tValue -= 1;\n if (tValue < 0 || tValue > 11) {\n return new Date('invalid');\n }\n var pDate = res.getDate();\n res.setDate(1);\n res[timeSetter[\"\" + key]](tValue);\n var lDate = new Date(res.getFullYear(), tValue + 1, 0).getDate();\n res.setDate(pDate < lDate ? pDate : lDate);\n }\n else {\n if (key === 'day') {\n var lastDay = new Date(res.getFullYear(), res.getMonth() + 1, 0).getDate();\n if ((tValue < 1 || tValue > lastDay)) {\n return null;\n }\n }\n res[\"\" + timeSetter[\"\" + key]](tValue);\n }\n }\n }\n if (!isUndefined(desig)) {\n var hour = res.getHours();\n if (desig === 'pm') {\n res.setHours(hour + (hour === 12 ? 0 : 12));\n }\n else if (hour === 12) {\n res.setHours(0);\n }\n }\n if (!isUndefined(tzone)) {\n var tzValue = tzone - res.getTimezoneOffset();\n if (tzValue !== 0) {\n res.setMinutes(res.getMinutes() + tzValue);\n }\n }\n return res;\n };\n /**\n * Returns date parsing options for provided value along with parse and numeric options\n *\n * @param {string} value ?\n * @param {ParseOptions} parseOptions ?\n * @param {NumericOptions} num ?\n * @returns {DateParts} ?\n */\n DateParser.internalDateParse = function (value, parseOptions, num) {\n var matches = value.match(parseOptions.parserRegex);\n var retOptions = { 'hour': 0, 'minute': 0, 'second': 0 };\n if (isNullOrUndefined(matches)) {\n return null;\n }\n else {\n var props = Object.keys(parseOptions.evalposition);\n for (var _i = 0, props_1 = props; _i < props_1.length; _i++) {\n var prop = props_1[_i];\n var curObject = parseOptions.evalposition[\"\" + prop];\n var matchString = matches[curObject.pos];\n if (curObject.isNumber) {\n retOptions[\"\" + prop] = this.internalNumberParser(matchString, num);\n }\n else {\n if (prop === 'timeZone' && !isUndefined(matchString)) {\n var pos = curObject.pos;\n var val = void 0;\n var tmatch = matches[pos + 1];\n var flag = !isUndefined(tmatch);\n if (curObject.hourOnly) {\n val = this.getZoneValue(flag, tmatch, matches[pos + 4], num) * 60;\n }\n else {\n val = this.getZoneValue(flag, tmatch, matches[pos + 7], num) * 60;\n val += this.getZoneValue(flag, matches[pos + 4], matches[pos + 10], num);\n }\n if (!isNullOrUndefined(val)) {\n retOptions[\"\" + prop] = val;\n }\n }\n else {\n var cultureOptions = ['en-US', 'en-MH', 'en-MP'];\n matchString = ((prop === 'month') && (!parseOptions.isIslamic) && (parseOptions.culture === 'en' || parseOptions.culture === 'en-GB' || parseOptions.culture === 'en-US'))\n ? matchString[0].toUpperCase() + matchString.substring(1).toLowerCase() : matchString;\n matchString = ((prop !== 'month') && (prop === 'designator') && parseOptions.culture && parseOptions.culture.indexOf('en-') !== -1 && cultureOptions.indexOf(parseOptions.culture) === -1)\n ? matchString.toLowerCase() : matchString;\n retOptions[\"\" + prop] = parseOptions[\"\" + prop][\"\" + matchString];\n }\n }\n }\n if (parseOptions.hour12) {\n retOptions.hour12 = true;\n }\n }\n return retOptions;\n };\n /**\n * Returns parsed number for provided Numeric string and Numeric Options\n *\n * @param {string} value ?\n * @param {NumericOptions} option ?\n * @returns {number} ?\n */\n DateParser.internalNumberParser = function (value, option) {\n value = parser.convertValueParts(value, option.numberParseRegex, option.numericPair);\n if (latnRegex.test(value)) {\n return +value;\n }\n return null;\n };\n /**\n * Returns parsed time zone RegExp for provided hour format and time zone\n *\n * @param {string} hourFormat ?\n * @param {base.TimeZoneOptions} tZone ?\n * @param {string} nRegex ?\n * @returns {string} ?\n */\n DateParser.parseTimeZoneRegx = function (hourFormat, tZone, nRegex) {\n var pattern = tZone.gmtFormat;\n var ret;\n var cRegex = '(' + nRegex + ')' + '(' + nRegex + ')';\n ret = hourFormat.replace('+', '\\\\+');\n if (hourFormat.indexOf('HH') !== -1) {\n ret = ret.replace(/HH|mm/g, '(' + cRegex + ')');\n }\n else {\n ret = ret.replace(/H|m/g, '(' + cRegex + '?)');\n }\n var splitStr = (ret.split(';').map(function (str) {\n return pattern.replace('{0}', str);\n }));\n ret = splitStr.join('|') + '|' + tZone.gmtZeroFormat;\n return ret;\n };\n /**\n * Returns zone based value.\n *\n * @param {boolean} flag ?\n * @param {string} val1 ?\n * @param {string} val2 ?\n * @param {NumericOptions} num ?\n * @returns {number} ?\n */\n DateParser.getZoneValue = function (flag, val1, val2, num) {\n var ival = flag ? val1 : val2;\n if (!ival) {\n return 0;\n }\n var value = this.internalNumberParser(ival, num);\n if (flag) {\n return -value;\n }\n return value;\n };\n return DateParser;\n}());\nexport { DateParser };\n","import { extend, isNullOrUndefined, isBlazor, getValue } from '../util';\nimport { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nvar regExp = RegExp;\nvar parseRegex = new regExp('^([^0-9]*)' + '(([0-9,]*[0-9]+)(.[0-9]+)?)' + '([Ee][+-]?[0-9]+)?([^0-9]*)$');\nvar groupRegex = /,/g;\nvar keys = ['minusSign', 'infinity'];\n/**\n * Module for Number Parser.\n *\n * @private\n */\nvar NumberParser = /** @class */ (function () {\n function NumberParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} option - Specific the format in which number will parsed.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n NumberParser.numberParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n if ((base.formatRegex.test(option.format)) || !(option.format)) {\n extend(parseOptions, base.getProperNumericSkeleton(option.format || 'N'));\n parseOptions.custom = false;\n if (!parseOptions.fractionDigits) {\n if (option.maximumFractionDigits) {\n parseOptions.maximumFractionDigits = option.maximumFractionDigits;\n }\n }\n }\n else {\n extend(parseOptions, base.customFormat(option.format, null, null));\n }\n var numbers = getValue('numbers', dependable.parserObject);\n var numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), true, isBlazor());\n parseOptions.symbolRegex = parser.getSymbolRegex(Object.keys(numOptions.symbolMatch));\n parseOptions.infinity = numOptions.symbolNumberSystem[keys[1]];\n var symbolpattern;\n if (!isBlazor()) {\n symbolpattern = base.getSymbolPattern(parseOptions.type, numOptions.numberSystem, dependable.numericObject, parseOptions.isAccount);\n if (symbolpattern) {\n symbolpattern = symbolpattern.replace(/\\u00A4/g, base.defaultCurrency);\n var split = symbolpattern.split(';');\n parseOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, '');\n parseOptions.pData = base.getFormatData(split[0], true, '');\n }\n }\n else {\n parseOptions.nData = extend({}, {}, getValue(parseOptions.type + 'nData', numbers));\n parseOptions.pData = extend({}, {}, getValue(parseOptions.type + 'pData', numbers));\n if (parseOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([parseOptions.pData, parseOptions.nData], getValue('currencySymbol', numbers), option.currency);\n }\n }\n return function (value) {\n return _this.getParsedNumber(value, parseOptions, numOptions);\n };\n };\n /**\n * Returns parsed number for the provided formatting options\n *\n * @param {string} value ?\n * @param {NumericParts} options ?\n * @param {NumericOptions} numOptions ?\n * @returns {number} ?\n */\n NumberParser.getParsedNumber = function (value, options, numOptions) {\n var isNegative;\n var isPercent;\n var tempValue;\n var lead;\n var end;\n var ret;\n if (value.indexOf(options.infinity) !== -1) {\n return Infinity;\n }\n else {\n value = parser.convertValueParts(value, options.symbolRegex, numOptions.symbolMatch);\n value = parser.convertValueParts(value, numOptions.numberParseRegex, numOptions.numericPair);\n value = value.indexOf('-') !== -1 ? value.replace('-.', '-0.') : value;\n if (value.indexOf('.') === 0) {\n value = '0' + value;\n }\n var matches = value.match(parseRegex);\n if (isNullOrUndefined(matches)) {\n return NaN;\n }\n lead = matches[1];\n tempValue = matches[2];\n var exponent = matches[5];\n end = matches[6];\n isNegative = options.custom ? ((lead === options.nData.nlead) && (end === options.nData.nend)) :\n ((lead.indexOf(options.nData.nlead) !== -1) && (end.indexOf(options.nData.nend) !== -1));\n isPercent = isNegative ?\n options.nData.isPercent :\n options.pData.isPercent;\n tempValue = tempValue.replace(groupRegex, '');\n if (exponent) {\n tempValue += exponent;\n }\n ret = +tempValue;\n if (options.type === 'percent' || isPercent) {\n ret = ret / 100;\n }\n if (options.custom || options.fractionDigits) {\n ret = parseFloat(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.fractionDigits));\n }\n if (options.maximumFractionDigits) {\n ret = this.convertMaxFracDigits(tempValue, options, ret, isNegative);\n }\n if (isNegative) {\n ret *= -1;\n }\n return ret;\n }\n };\n NumberParser.convertMaxFracDigits = function (value, options, ret, isNegative) {\n var decimalSplitValue = value.split('.');\n if (decimalSplitValue[1] && decimalSplitValue[1].length > options.maximumFractionDigits) {\n ret = +(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.maximumFractionDigits));\n }\n return ret;\n };\n return NumberParser;\n}());\nexport { NumberParser };\n","/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types */\nimport { isNullOrUndefined, getValue, extend, isBlazor } from './util';\nvar Observer = /** @class */ (function () {\n function Observer(context) {\n this.ranArray = [];\n this.boundedEvents = {};\n if (isNullOrUndefined(context)) {\n return;\n }\n this.context = context;\n }\n /**\n * To attach handler for given property in current context.\n *\n * @param {string} property - specifies the name of the event.\n * @param {Function} handler - Specifies the handler function to be called while event notified.\n * @param {Object} context - Specifies the context binded to the handler.\n * @param {string} id - specifies the random generated id.\n * @returns {void}\n */\n Observer.prototype.on = function (property, handler, context, id) {\n if (isNullOrUndefined(handler)) {\n return;\n }\n var cntxt = context || this.context;\n if (this.notExist(property)) {\n this.boundedEvents[\"\" + property] = [{ handler: handler, context: cntxt, id: id }];\n return;\n }\n if (!isNullOrUndefined(id)) {\n if (this.ranArray.indexOf(id) === -1) {\n this.ranArray.push(id);\n this.boundedEvents[\"\" + property].push({ handler: handler, context: cntxt, id: id });\n }\n }\n else if (!this.isHandlerPresent(this.boundedEvents[\"\" + property], handler)) {\n this.boundedEvents[\"\" + property].push({ handler: handler, context: cntxt });\n }\n };\n /**\n * To remove handlers from a event attached using on() function.\n *\n * @param {string} property - specifies the name of the event.\n * @param {Function} handler - Optional argument specifies the handler function to be called while event notified.\n * @param {string} id - specifies the random generated id.\n * @returns {void} ?\n */\n Observer.prototype.off = function (property, handler, id) {\n if (this.notExist(property)) {\n return;\n }\n var curObject = getValue(property, this.boundedEvents);\n if (handler) {\n for (var i = 0; i < curObject.length; i++) {\n if (id) {\n if (curObject[parseInt(i.toString(), 10)].id === id) {\n curObject.splice(i, 1);\n var indexLocation = this.ranArray.indexOf(id);\n if (indexLocation !== -1) {\n this.ranArray.splice(indexLocation, 1);\n }\n break;\n }\n }\n else if (handler === curObject[parseInt(i.toString(), 10)].handler) {\n curObject.splice(i, 1);\n break;\n }\n }\n }\n else {\n delete this.boundedEvents[\"\" + property];\n }\n };\n /**\n * To notify the handlers in the specified event.\n *\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it was failure to call.\n * @returns {void} ?\n */\n Observer.prototype.notify = function (property, argument, successHandler, errorHandler) {\n if (this.notExist(property)) {\n if (successHandler) {\n successHandler.call(this, argument);\n }\n return;\n }\n if (argument) {\n argument.name = property;\n }\n var blazor = 'Blazor';\n var curObject = getValue(property, this.boundedEvents).slice(0);\n if (window[\"\" + blazor]) {\n return this.blazorCallback(curObject, argument, successHandler, errorHandler, 0);\n }\n else {\n for (var _i = 0, curObject_1 = curObject; _i < curObject_1.length; _i++) {\n var cur = curObject_1[_i];\n cur.handler.call(cur.context, argument);\n }\n if (successHandler) {\n successHandler.call(this, argument);\n }\n }\n };\n Observer.prototype.blazorCallback = function (objs, argument, successHandler, errorHandler, index) {\n var _this = this;\n var isTrigger = index === objs.length - 1;\n if (index < objs.length) {\n var obj_1 = objs[parseInt(index.toString(), 10)];\n var promise = obj_1.handler.call(obj_1.context, argument);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n return promise;\n }\n promise.then(function (data) {\n data = typeof data === 'string' && _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data;\n extend(argument, argument, data, true);\n if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return _this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }).catch(function (data) {\n if (errorHandler) {\n errorHandler.call(obj_1.context, typeof data === 'string' &&\n _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data);\n }\n });\n }\n else if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }\n };\n Observer.prototype.dateReviver = function (key, value) {\n var dPattern = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}/;\n if (isBlazor && typeof value === 'string' && value.match(dPattern) !== null) {\n return (new Date(value));\n }\n return (value);\n };\n Observer.prototype.isJson = function (value) {\n try {\n JSON.parse(value);\n }\n catch (e) {\n return false;\n }\n return true;\n };\n /**\n * To destroy handlers in the event\n *\n * @returns {void} ?\n */\n Observer.prototype.destroy = function () {\n this.boundedEvents = this.context = undefined;\n };\n /**\n * To remove internationalization events\n *\n * @returns {void} ?\n */\n Observer.prototype.offIntlEvents = function () {\n var eventsArr = this.boundedEvents['notifyExternalChange'];\n if (eventsArr) {\n for (var i = 0; i < eventsArr.length; i++) {\n var curContext = eventsArr[parseInt(i.toString(), 10)].context;\n if (curContext && curContext.detectFunction && curContext.randomId && !curContext.isRendered) {\n this.off('notifyExternalChange', curContext.detectFunction, curContext.randomId);\n i--;\n }\n }\n if (!this.boundedEvents['notifyExternalChange'].length) {\n delete this.boundedEvents['notifyExternalChange'];\n }\n }\n };\n /**\n * Returns if the property exists.\n *\n * @param {string} prop ?\n * @returns {boolean} ?\n */\n Observer.prototype.notExist = function (prop) {\n return Object.prototype.hasOwnProperty.call(this.boundedEvents, prop) === false || this.boundedEvents[\"\" + prop].length <= 0;\n };\n /**\n * Returns if the handler is present.\n *\n * @param {BoundOptions[]} boundedEvents ?\n * @param {Function} handler ?\n * @returns {boolean} ?\n */\n Observer.prototype.isHandlerPresent = function (boundedEvents, handler) {\n for (var _i = 0, boundedEvents_1 = boundedEvents; _i < boundedEvents_1.length; _i++) {\n var cur = boundedEvents_1[_i];\n if (cur.handler === handler) {\n return true;\n }\n }\n return false;\n };\n return Observer;\n}());\nexport { Observer };\n","import { DateFormat } from './intl/date-formatter';\nimport { NumberFormat } from './intl/number-formatter';\nimport { DateParser } from './intl/date-parser';\nimport { NumberParser } from './intl/number-parser';\nimport { IntlBase } from './intl/intl-base';\nimport { extend, getValue, isBlazor } from './util';\nimport { Observer } from './observer';\n/**\n * Specifies the observer used for external change detection.\n */\nexport var onIntlChange = new Observer();\n/**\n * Specifies the default rtl status for EJ2 components.\n */\nexport var rightToLeft = false;\n/**\n * Specifies the CLDR data loaded for internationalization functionalities.\n *\n * @private\n */\nexport var cldrData = {};\n/**\n * Specifies the default culture value to be considered.\n *\n * @private\n */\nexport var defaultCulture = 'en-US';\n/**\n * Specifies default currency code to be considered\n *\n * @private\n */\nexport var defaultCurrencyCode = 'USD';\nvar mapper = ['numericObject', 'dateObject'];\n/**\n * Internationalization class provides support to parse and format the number and date object to the desired format.\n * ```typescript\n * // To set the culture globally\n * setCulture('en-GB');\n *\n * // To set currency code globally\n * setCurrencyCode('EUR');\n *\n * //Load cldr data\n * loadCldr(gregorainData);\n * loadCldr(timeZoneData);\n * loadCldr(numbersData);\n * loadCldr(numberSystemData);\n *\n * // To use formatter in component side\n * let Intl:Internationalization = new Internationalization();\n *\n * // Date formatting\n * let dateFormatter: Function = Intl.getDateFormat({skeleton:'long',type:'dateTime'});\n * dateFormatter(new Date('11/2/2016'));\n * dateFormatter(new Date('25/2/2030'));\n * Intl.formatDate(new Date(),{skeleton:'E'});\n *\n * //Number formatting\n * let numberFormatter: Function = Intl.getNumberFormat({skeleton:'C5'})\n * numberFormatter(24563334);\n * Intl.formatNumber(123123,{skeleton:'p2'});\n *\n * // Date parser\n * let dateParser: Function = Intl.getDateParser({skeleton:'short',type:'time'});\n * dateParser('10:30 PM');\n * Intl.parseDate('10',{skeleton:'H'});\n * ```\n */\nvar Internationalization = /** @class */ (function () {\n function Internationalization(cultureName) {\n if (cultureName) {\n this.culture = cultureName;\n }\n }\n /**\n * Returns the format function for given options.\n *\n * @param {DateFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getDateFormat = function (options) {\n return DateFormat.dateFormat(this.getCulture(), options || { type: 'date', skeleton: 'short' }, cldrData);\n };\n /**\n * Returns the format function for given options.\n *\n * @param {NumberFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getNumberFormat = function (options) {\n if (options && !options.currency) {\n options.currency = defaultCurrencyCode;\n }\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberFormat.numberFormatter(this.getCulture(), options || {}, cldrData);\n };\n /**\n * Returns the parser function for given options.\n *\n * @param {DateFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getDateParser = function (options) {\n return DateParser.dateParser(this.getCulture(), options || { skeleton: 'short', type: 'date' }, cldrData);\n };\n /**\n * Returns the parser function for given options.\n *\n * @param {NumberFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getNumberParser = function (options) {\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberParser.numberParser(this.getCulture(), options || { format: 'N' }, cldrData);\n };\n /**\n * Returns the formatted string based on format options.\n *\n * @param {number} value - Specifies the number to format.\n * @param {NumberFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string} ?\n */\n Internationalization.prototype.formatNumber = function (value, option) {\n return this.getNumberFormat(option)(value);\n };\n /**\n * Returns the formatted date string based on format options.\n *\n * @param {Date} value - Specifies the number to format.\n * @param {DateFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string} ?\n */\n Internationalization.prototype.formatDate = function (value, option) {\n return this.getDateFormat(option)(value);\n };\n /**\n * Returns the date object for given date string and options.\n *\n * @param {string} value - Specifies the string to parse.\n * @param {DateFormatOptions} option - Specifies the parse options in which the date string will be parsed.\n * @returns {Date} ?\n */\n Internationalization.prototype.parseDate = function (value, option) {\n return this.getDateParser(option)(value);\n };\n /**\n * Returns the number object from the given string value and options.\n *\n * @param {string} value - Specifies the string to parse.\n * @param {NumberFormatOptions} option - Specifies the parse options in which the string number will be parsed.\n * @returns {number} ?\n */\n Internationalization.prototype.parseNumber = function (value, option) {\n return this.getNumberParser(option)(value);\n };\n /**\n * Returns Native Date Time Pattern\n *\n * @param {DateFormatOptions} option - Specifies the parse options for resultant date time pattern.\n * @param {boolean} isExcelFormat - Specifies format value to be converted to excel pattern.\n * @returns {string} ?\n * @private\n */\n Internationalization.prototype.getDatePattern = function (option, isExcelFormat) {\n return IntlBase.getActualDateTimeFormat(this.getCulture(), option, cldrData, isExcelFormat);\n };\n /**\n * Returns Native Number Pattern\n *\n * @param {NumberFormatOptions} option - Specifies the parse options for resultant number pattern.\n * @param {boolean} isExcel ?\n * @returns {string} ?\n * @private\n */\n Internationalization.prototype.getNumberPattern = function (option, isExcel) {\n return IntlBase.getActualNumberFormat(this.getCulture(), option, cldrData, isExcel);\n };\n /**\n * Returns the First Day of the Week\n *\n * @returns {number} ?\n */\n Internationalization.prototype.getFirstDayOfWeek = function () {\n return IntlBase.getWeekData(this.getCulture(), cldrData);\n };\n /**\n * Returns the culture\n *\n * @returns {string} ?\n */\n Internationalization.prototype.getCulture = function () {\n return this.culture || defaultCulture;\n };\n return Internationalization;\n}());\nexport { Internationalization };\n/**\n * Set the default culture to all EJ2 components\n *\n * @param {string} cultureName - Specifies the culture name to be set as default culture.\n * @returns {void} ?\n */\nexport function setCulture(cultureName) {\n defaultCulture = cultureName;\n onIntlChange.notify('notifyExternalChange', { 'locale': defaultCulture });\n}\n/**\n * Set the default currency code to all EJ2 components\n *\n * @param {string} currencyCode Specifies the culture name to be set as default culture.\n * @returns {void} ?\n */\nexport function setCurrencyCode(currencyCode) {\n defaultCurrencyCode = currencyCode;\n onIntlChange.notify('notifyExternalChange', { 'currencyCode': defaultCurrencyCode });\n}\n/**\n * Load the CLDR data into context\n *\n * @param {Object[]} data Specifies the CLDR data's to be used for formatting and parser.\n * @returns {void} ?\n */\nexport function loadCldr() {\n var data = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n data[_i] = arguments[_i];\n }\n for (var _a = 0, data_1 = data; _a < data_1.length; _a++) {\n var obj = data_1[_a];\n extend(cldrData, obj, {}, true);\n }\n}\n/**\n * To enable or disable RTL functionality for all components globally.\n *\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable rtl option.\n * @returns {void} ?\n */\nexport function enableRtl(status) {\n if (status === void 0) { status = true; }\n rightToLeft = status;\n onIntlChange.notify('notifyExternalChange', { enableRtl: rightToLeft });\n}\n/**\n * To get the numeric CLDR object for given culture\n *\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} type ?\n * @returns {Object} ?\n * @ignore\n * @private\n */\nexport function getNumericObject(locale, type) {\n var numObject = IntlBase.getDependables(cldrData, locale, '', true)[mapper[0]];\n var dateObject = IntlBase.getDependables(cldrData, locale, '')[mapper[1]];\n var numSystem = getValue('defaultNumberingSystem', numObject);\n var symbPattern = isBlazor() ? getValue('numberSymbols', numObject) : getValue('symbols-numberSystem-' + numSystem, numObject);\n var pattern = IntlBase.getSymbolPattern(type || 'decimal', numSystem, numObject, false);\n return extend(symbPattern, IntlBase.getFormatData(pattern, true, '', true), { 'dateSeparator': IntlBase.getDateSeparator(dateObject) });\n}\n/**\n * To get the numeric CLDR number base object for given culture\n *\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} currency - Specifies the currency for which numericObject to be returned.\n * @returns {string} ?\n * @ignore\n * @private\n */\nexport function getNumberDependable(locale, currency) {\n var numObject = IntlBase.getDependables(cldrData, locale, '', true);\n return IntlBase.getCurrencySymbol(numObject.numericObject, currency);\n}\n/**\n * To get the default date CLDR object.\n *\n * @param {string} mode ?\n * @returns {Object} ?\n * @ignore\n * @private\n */\nexport function getDefaultDateObject(mode) {\n return IntlBase.getDependables(cldrData, '', mode, false)[mapper[1]];\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types */\nimport { defaultCurrencyCode } from '../internationalization';\nimport { getValue, isNullOrUndefined, extend, isBlazor } from '../util';\nimport { ParserBase as parser, getBlazorCurrencySymbol } from './parser-base';\nimport { DateFormat } from './date-formatter';\nimport { NumberFormat } from './number-formatter';\nimport { isUndefined } from '../util';\nvar regExp = RegExp;\nexport var blazorCultureFormats = {\n 'en-US': {\n 'd': 'M/d/y',\n 'D': 'EEEE, MMMM d, y',\n 'f': 'EEEE, MMMM d, y h:mm a',\n 'F': 'EEEE, MMMM d, y h:mm:s a',\n 'g': 'M/d/y h:mm a',\n 'G': 'M/d/yyyy h:mm:ss tt',\n 'm': 'MMMM d',\n 'M': 'MMMM d',\n 'r': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 'R': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 's': 'yyyy\\'-\\'MM\\'-\\'dd\\'T\\'HH\\':\\'mm\\':\\'ss',\n 't': 'h:mm tt',\n 'T': 'h:m:s tt',\n 'u': 'yyyy\\'-\\'MM\\'-\\'dd HH\\':\\'mm\\':\\'ss\\'Z\\'',\n 'U': 'dddd, MMMM d, yyyy h:mm:ss tt',\n 'y': 'MMMM yyyy',\n 'Y': 'MMMM yyyy'\n }\n};\n/**\n * Date base common constants and function for date parser and formatter.\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var IntlBase;\n(function (IntlBase) {\n // eslint-disable-next-line security/detect-unsafe-regex\n IntlBase.negativeDataRegex = /^(('[^']+'|''|[^*#@0,.E])*)(\\*.)?((([#,]*[0,]*0+)(\\.0*[0-9]*#*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n // eslint-disable-next-line security/detect-unsafe-regex\n IntlBase.customRegex = /^(('[^']+'|''|[^*#@0,.])*)(\\*.)?((([0#,]*[0,]*[0#]*[0# ]*)(\\.[0#]*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.latnParseRegex = /0|1|2|3|4|5|6|7|8|9/g;\n var fractionRegex = /[0-9]/g;\n IntlBase.defaultCurrency = '$';\n var mapper = ['infinity', 'nan', 'group', 'decimal'];\n var patternRegex = /G|M|L|H|c|'| a|yy|y|EEEE|E/g;\n var patternMatch = {\n 'G': '',\n 'M': 'm',\n 'L': 'm',\n 'H': 'h',\n 'c': 'd',\n '\\'': '\"',\n ' a': ' AM/PM',\n 'yy': 'yy',\n 'y': 'yyyy',\n 'EEEE': 'dddd',\n 'E': 'ddd'\n };\n IntlBase.dateConverterMapper = /dddd|ddd/ig;\n var defaultFirstDay = 'sun';\n IntlBase.islamicRegex = /^islamic/;\n var firstDayMapper = {\n 'sun': 0,\n 'mon': 1,\n 'tue': 2,\n 'wed': 3,\n 'thu': 4,\n 'fri': 5,\n 'sat': 6\n };\n IntlBase.formatRegex = new regExp('(^[ncpae]{1})([0-1]?[0-9]|20)?$', 'i');\n IntlBase.currencyFormatRegex = new regExp('(^[ca]{1})([0-1]?[0-9]|20)?$', 'i');\n IntlBase.curWithoutNumberRegex = /(c|a)$/ig;\n var typeMapper = {\n '$': 'isCurrency',\n '%': 'isPercent',\n '-': 'isNegative',\n 0: 'nlead',\n 1: 'nend'\n };\n IntlBase.dateParseRegex = /([a-z])\\1*|'([^']|'')+'|''|./gi;\n IntlBase.basicPatterns = ['short', 'medium', 'long', 'full'];\n IntlBase.defaultObject = {\n 'dates': {\n 'calendars': {\n 'gregorian': {\n 'months': {\n 'stand-alone': {\n 'abbreviated': {\n '1': 'Jan',\n '2': 'Feb',\n '3': 'Mar',\n '4': 'Apr',\n '5': 'May',\n '6': 'Jun',\n '7': 'Jul',\n '8': 'Aug',\n '9': 'Sep',\n '10': 'Oct',\n '11': 'Nov',\n '12': 'Dec'\n },\n 'narrow': {\n '1': 'J',\n '2': 'F',\n '3': 'M',\n '4': 'A',\n '5': 'M',\n '6': 'J',\n '7': 'J',\n '8': 'A',\n '9': 'S',\n '10': 'O',\n '11': 'N',\n '12': 'D'\n },\n 'wide': {\n '1': 'January',\n '2': 'February',\n '3': 'March',\n '4': 'April',\n '5': 'May',\n '6': 'June',\n '7': 'July',\n '8': 'August',\n '9': 'September',\n '10': 'October',\n '11': 'November',\n '12': 'December'\n }\n }\n },\n 'days': {\n 'stand-alone': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'narrow': {\n 'sun': 'S',\n 'mon': 'M',\n 'tue': 'T',\n 'wed': 'W',\n 'thu': 'T',\n 'fri': 'F',\n 'sat': 'S'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n }\n },\n 'dayPeriods': {\n 'format': {\n 'wide': {\n 'am': 'AM',\n 'pm': 'PM'\n }\n }\n },\n 'eras': {\n 'eraNames': {\n '0': 'Before Christ',\n '0-alt-variant': 'Before Common Era',\n '1': 'Anno Domini',\n '1-alt-variant': 'Common Era'\n },\n 'eraAbbr': {\n '0': 'BC',\n '0-alt-variant': 'BCE',\n '1': 'AD',\n '1-alt-variant': 'CE'\n },\n 'eraNarrow': {\n '0': 'B',\n '0-alt-variant': 'BCE',\n '1': 'A',\n '1-alt-variant': 'CE'\n }\n },\n 'dateFormats': {\n 'full': 'EEEE, MMMM d, y',\n 'long': 'MMMM d, y',\n 'medium': 'MMM d, y',\n 'short': 'M/d/yy'\n },\n 'timeFormats': {\n 'full': 'h:mm:ss a zzzz',\n 'long': 'h:mm:ss a z',\n 'medium': 'h:mm:ss a',\n 'short': 'h:mm a'\n },\n 'dateTimeFormats': {\n 'full': '{1} \\'at\\' {0}',\n 'long': '{1} \\'at\\' {0}',\n 'medium': '{1}, {0}',\n 'short': '{1}, {0}',\n 'availableFormats': {\n 'd': 'd',\n 'E': 'ccc',\n 'Ed': 'd E',\n 'Ehm': 'E h:mm a',\n 'EHm': 'E HH:mm',\n 'Ehms': 'E h:mm:ss a',\n 'EHms': 'E HH:mm:ss',\n 'Gy': 'y G',\n 'GyMMM': 'MMM y G',\n 'GyMMMd': 'MMM d, y G',\n 'GyMMMEd': 'E, MMM d, y G',\n 'h': 'h a',\n 'H': 'HH',\n 'hm': 'h:mm a',\n 'Hm': 'HH:mm',\n 'hms': 'h:mm:ss a',\n 'Hms': 'HH:mm:ss',\n 'hmsv': 'h:mm:ss a v',\n 'Hmsv': 'HH:mm:ss v',\n 'hmv': 'h:mm a v',\n 'Hmv': 'HH:mm v',\n 'M': 'L',\n 'Md': 'M/d',\n 'MEd': 'E, M/d',\n 'MMM': 'LLL',\n 'MMMd': 'MMM d',\n 'MMMEd': 'E, MMM d',\n 'MMMMd': 'MMMM d',\n 'ms': 'mm:ss',\n 'y': 'y',\n 'yM': 'M/y',\n 'yMd': 'M/d/y',\n 'yMEd': 'E, M/d/y',\n 'yMMM': 'MMM y',\n 'yMMMd': 'MMM d, y',\n 'yMMMEd': 'E, MMM d, y',\n 'yMMMM': 'MMMM y'\n }\n }\n },\n 'islamic': {\n 'months': {\n 'stand-alone': {\n 'abbreviated': {\n '1': 'Muh.',\n '2': 'Saf.',\n '3': 'Rab. I',\n '4': 'Rab. II',\n '5': 'Jum. I',\n '6': 'Jum. II',\n '7': 'Raj.',\n '8': 'Sha.',\n '9': 'Ram.',\n '10': 'Shaw.',\n '11': 'Dhuʻl-Q.',\n '12': 'Dhuʻl-H.'\n },\n 'narrow': {\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9',\n '10': '10',\n '11': '11',\n '12': '12'\n },\n 'wide': {\n '1': 'Muharram',\n '2': 'Safar',\n '3': 'Rabiʻ I',\n '4': 'Rabiʻ II',\n '5': 'Jumada I',\n '6': 'Jumada II',\n '7': 'Rajab',\n '8': 'Shaʻban',\n '9': 'Ramadan',\n '10': 'Shawwal',\n '11': 'Dhuʻl-Qiʻdah',\n '12': 'Dhuʻl-Hijjah'\n }\n }\n },\n 'days': {\n 'stand-alone': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'narrow': {\n 'sun': 'S',\n 'mon': 'M',\n 'tue': 'T',\n 'wed': 'W',\n 'thu': 'T',\n 'fri': 'F',\n 'sat': 'S'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n }\n },\n 'dayPeriods': {\n 'format': {\n 'wide': {\n 'am': 'AM',\n 'pm': 'PM'\n }\n }\n },\n 'eras': {\n 'eraNames': {\n '0': 'AH'\n },\n 'eraAbbr': {\n '0': 'AH'\n },\n 'eraNarrow': {\n '0': 'AH'\n }\n },\n 'dateFormats': {\n 'full': 'EEEE, MMMM d, y G',\n 'long': 'MMMM d, y G',\n 'medium': 'MMM d, y G',\n 'short': 'M/d/y GGGGG'\n },\n 'timeFormats': {\n 'full': 'h:mm:ss a zzzz',\n 'long': 'h:mm:ss a z',\n 'medium': 'h:mm:ss a',\n 'short': 'h:mm a'\n },\n 'dateTimeFormats': {\n 'full': '{1} \\'at\\' {0}',\n 'long': '{1} \\'at\\' {0}',\n 'medium': '{1}, {0}',\n 'short': '{1}, {0}',\n 'availableFormats': {\n 'd': 'd',\n 'E': 'ccc',\n 'Ed': 'd E',\n 'Ehm': 'E h:mm a',\n 'EHm': 'E HH:mm',\n 'Ehms': 'E h:mm:ss a',\n 'EHms': 'E HH:mm:ss',\n 'Gy': 'y G',\n 'GyMMM': 'MMM y G',\n 'GyMMMd': 'MMM d, y G',\n 'GyMMMEd': 'E, MMM d, y G',\n 'h': 'h a',\n 'H': 'HH',\n 'hm': 'h:mm a',\n 'Hm': 'HH:mm',\n 'hms': 'h:mm:ss a',\n 'Hms': 'HH:mm:ss',\n 'M': 'L',\n 'Md': 'M/d',\n 'MEd': 'E, M/d',\n 'MMM': 'LLL',\n 'MMMd': 'MMM d',\n 'MMMEd': 'E, MMM d',\n 'MMMMd': 'MMMM d',\n 'ms': 'mm:ss',\n 'y': 'y G',\n 'yyyy': 'y G',\n 'yyyyM': 'M/y GGGGG',\n 'yyyyMd': 'M/d/y GGGGG',\n 'yyyyMEd': 'E, M/d/y GGGGG',\n 'yyyyMMM': 'MMM y G',\n 'yyyyMMMd': 'MMM d, y G',\n 'yyyyMMMEd': 'E, MMM d, y G',\n 'yyyyMMMM': 'MMMM y G',\n 'yyyyQQQ': 'QQQ y G',\n 'yyyyQQQQ': 'QQQQ y G'\n }\n }\n }\n },\n 'timeZoneNames': {\n 'hourFormat': '+HH:mm;-HH:mm',\n 'gmtFormat': 'GMT{0}',\n 'gmtZeroFormat': 'GMT'\n }\n },\n 'numbers': {\n 'currencies': {\n 'USD': {\n 'displayName': 'US Dollar',\n 'symbol': '$',\n 'symbol-alt-narrow': '$'\n },\n 'EUR': {\n 'displayName': 'Euro',\n 'symbol': '€',\n 'symbol-alt-narrow': '€'\n },\n 'GBP': {\n 'displayName': 'British Pound',\n 'symbol-alt-narrow': '£'\n }\n },\n 'defaultNumberingSystem': 'latn',\n 'minimumGroupingDigits': '1',\n 'symbols-numberSystem-latn': {\n 'decimal': '.',\n 'group': ',',\n 'list': ';',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'exponential': 'E',\n 'superscriptingExponent': '×',\n 'perMille': '‰',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'timeSeparator': ':'\n },\n 'decimalFormats-numberSystem-latn': {\n 'standard': '#,##0.###'\n },\n 'percentFormats-numberSystem-latn': {\n 'standard': '#,##0%'\n },\n 'currencyFormats-numberSystem-latn': {\n 'standard': '¤#,##0.00',\n 'accounting': '¤#,##0.00;(¤#,##0.00)'\n },\n 'scientificFormats-numberSystem-latn': {\n 'standard': '#E0'\n }\n }\n };\n IntlBase.blazorDefaultObject = {\n 'numbers': {\n 'mapper': {\n '0': '0',\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9'\n },\n 'mapperDigits': '0123456789',\n 'numberSymbols': {\n 'decimal': '.',\n 'group': ',',\n 'plusSign': '+',\n 'minusSign': '-',\n 'percentSign': '%',\n 'nan': 'NaN',\n 'timeSeparator': ':',\n 'infinity': '∞'\n },\n 'timeSeparator': ':',\n 'currencySymbol': '$',\n 'currencypData': {\n 'nlead': '$',\n 'nend': '',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'percentpData': {\n 'nlead': '',\n 'nend': '%',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'percentnData': {\n 'nlead': '-',\n 'nend': '%',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'currencynData': {\n 'nlead': '($',\n 'nend': ')',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'decimalnData': {\n 'nlead': '-',\n 'nend': '',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'decimalpData': {\n 'nlead': '',\n 'nend': '',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n }\n },\n 'dates': {\n 'dayPeriods': {\n 'am': 'AM',\n 'pm': 'PM'\n },\n 'dateSeperator': '/',\n 'days': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n },\n 'months': {\n 'abbreviated': {\n '1': 'Jan',\n '2': 'Feb',\n '3': 'Mar',\n '4': 'Apr',\n '5': 'May',\n '6': 'Jun',\n '7': 'Jul',\n '8': 'Aug',\n '9': 'Sep',\n '10': 'Oct',\n '11': 'Nov',\n '12': 'Dec'\n },\n 'wide': {\n '1': 'January',\n '2': 'February',\n '3': 'March',\n '4': 'April',\n '5': 'May',\n '6': 'June',\n '7': 'July',\n '8': 'August',\n '9': 'September',\n '10': 'October',\n '11': 'November',\n '12': 'December'\n }\n },\n 'eras': {\n '1': 'AD'\n }\n }\n };\n IntlBase.monthIndex = {\n 3: 'abbreviated',\n 4: 'wide',\n 5: 'narrow',\n 1: 'abbreviated'\n };\n /**\n *\n */\n IntlBase.month = 'months';\n IntlBase.days = 'days';\n /**\n * Default numerber Object\n */\n IntlBase.patternMatcher = {\n C: 'currency',\n P: 'percent',\n N: 'decimal',\n A: 'currency',\n E: 'scientific'\n };\n /**\n * Returns the resultant pattern based on the skeleton, dateObject and the type provided\n *\n * @private\n * @param {string} skeleton ?\n * @param {Object} dateObject ?\n * @param {string} type ?\n * @param {boolean} isIslamic ?\n * @param {string} blazorCulture ?\n * @returns {string} ?\n */\n function getResultantPattern(skeleton, dateObject, type, isIslamic, blazorCulture) {\n var resPattern;\n var iType = type || 'date';\n if (blazorCulture) {\n resPattern = compareBlazorDateFormats({ skeleton: skeleton }, blazorCulture).format ||\n compareBlazorDateFormats({ skeleton: 'd' }, 'en-US').format;\n }\n else {\n if (IntlBase.basicPatterns.indexOf(skeleton) !== -1) {\n resPattern = getValue(iType + 'Formats.' + skeleton, dateObject);\n if (iType === 'dateTime') {\n var dPattern = getValue('dateFormats.' + skeleton, dateObject);\n var tPattern = getValue('timeFormats.' + skeleton, dateObject);\n resPattern = resPattern.replace('{1}', dPattern).replace('{0}', tPattern);\n }\n }\n else {\n resPattern = getValue('dateTimeFormats.availableFormats.' + skeleton, dateObject);\n }\n if (isUndefined(resPattern) && skeleton === 'yMd') {\n resPattern = 'M/d/y';\n }\n }\n return resPattern;\n }\n IntlBase.getResultantPattern = getResultantPattern;\n /**\n * Returns the dependable object for provided cldr data and culture\n *\n * @private\n * @param {Object} cldr ?\n * @param {string} culture ?\n * @param {string} mode ?\n * @param {boolean} isNumber ?\n * @returns {any} ?\n */\n function getDependables(cldr, culture, mode, isNumber) {\n var ret = {};\n var calendartype = mode || 'gregorian';\n ret.parserObject = parser.getMainObject(cldr, culture) || (isBlazor() ? IntlBase.blazorDefaultObject : IntlBase.defaultObject);\n if (isNumber) {\n ret.numericObject = getValue('numbers', ret.parserObject);\n }\n else {\n var dateString = isBlazor() ? 'dates' : ('dates.calendars.' + calendartype);\n ret.dateObject = getValue(dateString, ret.parserObject);\n }\n return ret;\n }\n IntlBase.getDependables = getDependables;\n /**\n * Returns the symbol pattern for provided parameters\n *\n * @private\n * @param {string} type ?\n * @param {string} numSystem ?\n * @param {Object} obj ?\n * @param {boolean} isAccount ?\n * @returns {string} ?\n */\n function getSymbolPattern(type, numSystem, obj, isAccount) {\n return getValue(type + 'Formats-numberSystem-' +\n numSystem + (isAccount ? '.accounting' : '.standard'), obj) || (isAccount ? getValue(type + 'Formats-numberSystem-' +\n numSystem + '.standard', obj) : '');\n }\n IntlBase.getSymbolPattern = getSymbolPattern;\n /**\n *\n * @param {string} format ?\n * @returns {string} ?\n */\n function ConvertDateToWeekFormat(format) {\n var convertMapper = format.match(IntlBase.dateConverterMapper);\n if (convertMapper && isBlazor()) {\n var tempString = convertMapper[0].length === 3 ? 'EEE' : 'EEEE';\n return format.replace(IntlBase.dateConverterMapper, tempString);\n }\n return format;\n }\n IntlBase.ConvertDateToWeekFormat = ConvertDateToWeekFormat;\n /**\n *\n * @param {DateFormatOptions} formatOptions ?\n * @param {string} culture ?\n * @returns {DateFormatOptions} ?\n */\n function compareBlazorDateFormats(formatOptions, culture) {\n var format = formatOptions.format || formatOptions.skeleton;\n var curFormatMapper = getValue((culture || 'en-US') + '.' + format, blazorCultureFormats);\n if (!curFormatMapper) {\n curFormatMapper = getValue('en-US.' + format, blazorCultureFormats);\n }\n if (curFormatMapper) {\n curFormatMapper = ConvertDateToWeekFormat(curFormatMapper);\n formatOptions.format = curFormatMapper.replace(/tt/, 'a');\n }\n return formatOptions;\n }\n IntlBase.compareBlazorDateFormats = compareBlazorDateFormats;\n /**\n * Returns proper numeric skeleton\n *\n * @private\n * @param {string} skeleton ?\n * @returns {any} ?\n */\n function getProperNumericSkeleton(skeleton) {\n var matches = skeleton.match(IntlBase.formatRegex);\n var ret = {};\n var pattern = matches[1].toUpperCase();\n ret.isAccount = (pattern === 'A');\n ret.type = IntlBase.patternMatcher[\"\" + pattern];\n if (skeleton.length > 1) {\n ret.fractionDigits = parseInt(matches[2], 10);\n }\n return ret;\n }\n IntlBase.getProperNumericSkeleton = getProperNumericSkeleton;\n /**\n * Returns format data for number formatting like minimum fraction, maximum fraction, etc..,\n *\n * @private\n * @param {string} pattern ?\n * @param {boolean} needFraction ?\n * @param {string} cSymbol ?\n * @param {boolean} fractionOnly ?\n * @returns {any} ?\n */\n function getFormatData(pattern, needFraction, cSymbol, fractionOnly) {\n var nData = fractionOnly ? {} : { nlead: '', nend: '' };\n var match = pattern.match(IntlBase.customRegex);\n if (match) {\n if (!fractionOnly) {\n nData.nlead = changeCurrencySymbol(match[1], cSymbol);\n nData.nend = changeCurrencySymbol(match[10], cSymbol);\n nData.groupPattern = match[4];\n }\n var fraction = match[7];\n if (fraction && needFraction) {\n var fmatch = fraction.match(fractionRegex);\n if (!isNullOrUndefined(fmatch)) {\n nData.minimumFraction = fmatch.length;\n }\n else {\n nData.minimumFraction = 0;\n }\n nData.maximumFraction = fraction.length - 1;\n }\n }\n return nData;\n }\n IntlBase.getFormatData = getFormatData;\n /**\n * Changes currency symbol\n *\n * @private\n * @param {string} val ?\n * @param {string} sym ?\n * @returns {string} ?\n */\n function changeCurrencySymbol(val, sym) {\n if (val) {\n val = val.replace(IntlBase.defaultCurrency, sym);\n return (sym === '') ? val.trim() : val;\n }\n return '';\n }\n IntlBase.changeCurrencySymbol = changeCurrencySymbol;\n /**\n * Returns currency symbol based on currency code ?\n *\n * @private\n * @param {Object} numericObject ?\n * @param {string} currencyCode ?\n * @param {string} altSymbol ?\n * @param {string} ignoreCurrency ?\n * @returns {string} ?\n */\n function getCurrencySymbol(numericObject, currencyCode, altSymbol, ignoreCurrency) {\n var symbol = altSymbol ? ('.' + altSymbol) : '.symbol';\n var getCurrency = ignoreCurrency ? '$' : getValue('currencies.' + currencyCode + symbol, numericObject) ||\n getValue('currencies.' + currencyCode + '.symbol-alt-narrow', numericObject) || '$';\n return getCurrency;\n }\n IntlBase.getCurrencySymbol = getCurrencySymbol;\n /**\n * Returns formatting options for custom number format\n *\n * @private\n * @param {string} format ?\n * @param {CommonOptions} dOptions ?\n * @param {any} obj ?\n * @returns {any} ?\n */\n function customFormat(format, dOptions, obj) {\n var options = {};\n var formatSplit = format.split(';');\n var data = ['pData', 'nData', 'zeroData'];\n for (var i = 0; i < formatSplit.length; i++) {\n options[\"\" + data[parseInt(i.toString(), 10)]] = customNumberFormat(formatSplit[parseInt(i.toString(), 10)], dOptions, obj);\n }\n if (isNullOrUndefined(options.nData)) {\n options.nData = extend({}, options.pData);\n options.nData.nlead = isNullOrUndefined(dOptions) ? '-' + options.nData.nlead : dOptions.minusSymbol + options.nData.nlead;\n }\n return options;\n }\n IntlBase.customFormat = customFormat;\n /**\n * Returns custom formatting options\n *\n * @private\n * @param {string} format ?\n * @param {CommonOptions} dOptions ?\n * @param {Object} numObject ?\n * @returns {any} ?\n */\n function customNumberFormat(format, dOptions, numObject) {\n var cOptions = { type: 'decimal', minimumFractionDigits: 0, maximumFractionDigits: 0 };\n var pattern = format.match(IntlBase.customRegex);\n if (isNullOrUndefined(pattern) || (pattern[5] === '' && format !== 'N/A')) {\n cOptions.type = undefined;\n return cOptions;\n }\n cOptions.nlead = pattern[1];\n cOptions.nend = pattern[10];\n var integerPart = pattern[6];\n var spaceCapture = integerPart.match(/ $/g) ? true : false;\n var spaceGrouping = integerPart.replace(/ $/g, '').indexOf(' ') !== -1;\n cOptions.useGrouping = integerPart.indexOf(',') !== -1 || spaceGrouping;\n integerPart = integerPart.replace(/,/g, '');\n var fractionPart = pattern[7];\n if (integerPart.indexOf('0') !== -1) {\n cOptions.minimumIntegerDigits = integerPart.length - integerPart.indexOf('0');\n }\n if (!isNullOrUndefined(fractionPart)) {\n cOptions.minimumFractionDigits = fractionPart.lastIndexOf('0');\n cOptions.maximumFractionDigits = fractionPart.lastIndexOf('#');\n if (cOptions.minimumFractionDigits === -1) {\n cOptions.minimumFractionDigits = 0;\n }\n if (cOptions.maximumFractionDigits === -1 || cOptions.maximumFractionDigits < cOptions.minimumFractionDigits) {\n cOptions.maximumFractionDigits = cOptions.minimumFractionDigits;\n }\n }\n if (!isNullOrUndefined(dOptions)) {\n dOptions.isCustomFormat = true;\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '$', dOptions.currencySymbol));\n if (!cOptions.isCurrency) {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', dOptions.percentSymbol));\n }\n }\n else {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', '%'));\n }\n if (!isNullOrUndefined(numObject)) {\n var symbolPattern = getSymbolPattern(cOptions.type, dOptions.numberMapper.numberSystem, numObject, false);\n if (cOptions.useGrouping) {\n cOptions.groupSeparator = spaceGrouping ? ' ' : dOptions.numberMapper.numberSymbols[mapper[2]];\n cOptions.groupData = NumberFormat.getGroupingDetails(symbolPattern.split(';')[0]);\n }\n cOptions.nlead = cOptions.nlead.replace(/'/g, '');\n cOptions.nend = spaceCapture ? ' ' + cOptions.nend.replace(/'/g, '') : cOptions.nend.replace(/'/g, '');\n }\n return cOptions;\n }\n IntlBase.customNumberFormat = customNumberFormat;\n /**\n * Returns formatting options for currency or percent type\n *\n * @private\n * @param {string[]} parts ?\n * @param {string} actual ?\n * @param {string} symbol ?\n * @returns {any} ?\n */\n function isCurrencyPercent(parts, actual, symbol) {\n var options = { nlead: parts[0], nend: parts[1] };\n for (var i = 0; i < 2; i++) {\n var part = parts[parseInt(i.toString(), 10)];\n var loc = part.indexOf(actual);\n if ((loc !== -1) && ((loc < part.indexOf('\\'')) || (loc > part.lastIndexOf('\\'')))) {\n options[\"\" + typeMapper[parseInt(i.toString(), 10)]] = part.substr(0, loc) + symbol + part.substr(loc + 1);\n options[\"\" + typeMapper[\"\" + actual]] = true;\n options.type = options.isCurrency ? 'currency' : 'percent';\n break;\n }\n }\n return options;\n }\n IntlBase.isCurrencyPercent = isCurrencyPercent;\n /**\n * Returns culture based date separator\n *\n * @private\n * @param {Object} dateObj ?\n * @returns {string} ?\n */\n function getDateSeparator(dateObj) {\n var value = (getValue('dateFormats.short', dateObj) || '').match(/[dM]([^dM])[dM]/i);\n return value ? value[1] : '/';\n }\n IntlBase.getDateSeparator = getDateSeparator;\n /**\n * Returns Native Date Time pattern\n *\n * @private\n * @param {string} culture ?\n * @param {DateFormatOptions} options ?\n * @param {Object} cldr ?\n * @param {boolean} isExcelFormat ?\n * @returns {string} ?\n */\n function getActualDateTimeFormat(culture, options, cldr, isExcelFormat) {\n var dependable = getDependables(cldr, culture, options.calendar);\n if (isBlazor()) {\n options = compareBlazorDateFormats(options, culture);\n }\n var actualPattern = options.format || getResultantPattern(options.skeleton, dependable.dateObject, options.type);\n if (isExcelFormat) {\n actualPattern = actualPattern.replace(patternRegex, function (pattern) {\n return patternMatch[\"\" + pattern];\n });\n if (actualPattern.indexOf('z') !== -1) {\n var tLength = actualPattern.match(/z/g).length;\n var timeZonePattern = void 0;\n var options_1 = { 'timeZone': {} };\n options_1.numMapper = parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n options_1.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n var value = new Date();\n var timezone = value.getTimezoneOffset();\n var pattern = (tLength < 4) ? '+H;-H' : options_1.timeZone.hourFormat;\n pattern = pattern.replace(/:/g, options_1.numMapper.timeSeparator);\n if (timezone === 0) {\n timeZonePattern = options_1.timeZone.gmtZeroFormat;\n }\n else {\n timeZonePattern = DateFormat.getTimeZoneValue(timezone, pattern);\n timeZonePattern = options_1.timeZone.gmtFormat.replace(/\\{0\\}/, timeZonePattern);\n }\n actualPattern = actualPattern.replace(/[z]+/, '\"' + timeZonePattern + '\"');\n }\n actualPattern = actualPattern.replace(/ $/, '');\n }\n return actualPattern;\n }\n IntlBase.getActualDateTimeFormat = getActualDateTimeFormat;\n /**\n *\n * @param {string} actual ?\n * @param {any} option ?\n * @returns {any} ?\n */\n function processSymbol(actual, option) {\n if (actual.indexOf(',') !== -1) {\n var split = actual.split(',');\n actual = (split[0] + getValue('numberMapper.numberSymbols.group', option) +\n split[1].replace('.', getValue('numberMapper.numberSymbols.decimal', option)));\n }\n else {\n actual = actual.replace('.', getValue('numberMapper.numberSymbols.decimal', option));\n }\n return actual;\n }\n IntlBase.processSymbol = processSymbol;\n /**\n * Returns Native Number pattern\n *\n * @private\n * @param {string} culture ?\n * @param {NumberFormatOptions} options ?\n * @param {Object} cldr ?\n * @param {boolean} isExcel ?\n * @returns {string} ?\n */\n function getActualNumberFormat(culture, options, cldr, isExcel) {\n var dependable = getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n var numrericObject = dependable.numericObject;\n var minFrac;\n var curObj = {};\n var curMatch = (options.format || '').match(IntlBase.currencyFormatRegex);\n var type = IntlBase.formatRegex.test(options.format) ? getProperNumericSkeleton(options.format || 'N') : {};\n var dOptions = {};\n if (curMatch) {\n dOptions.numberMapper = isBlazor() ?\n extend({}, dependable.numericObject) :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n var curCode = isBlazor() ? getValue('currencySymbol', dependable.numericObject) :\n getCurrencySymbol(dependable.numericObject, options.currency || defaultCurrencyCode, options.altSymbol);\n var symbolPattern = getSymbolPattern('currency', dOptions.numberMapper.numberSystem, dependable.numericObject, (/a/i).test(options.format));\n symbolPattern = symbolPattern.replace(/\\u00A4/g, curCode);\n var split = symbolPattern.split(';');\n curObj.hasNegativePattern = isBlazor() ? true : (split.length > 1);\n curObj.nData = isBlazor() ? getValue(type.type + 'nData', numrericObject) :\n getFormatData(split[1] || '-' + split[0], true, curCode);\n curObj.pData = isBlazor() ? getValue(type.type + 'pData', numrericObject) :\n getFormatData(split[0], false, curCode);\n if (!curMatch[2] && !options.minimumFractionDigits && !options.maximumFractionDigits) {\n minFrac = getFormatData(symbolPattern.split(';')[0], true, '', true).minimumFraction;\n }\n }\n var actualPattern;\n if ((IntlBase.formatRegex.test(options.format)) || !(options.format)) {\n extend(parseOptions, getProperNumericSkeleton(options.format || 'N'));\n parseOptions.custom = false;\n actualPattern = '###0';\n if (parseOptions.fractionDigits || options.minimumFractionDigits || options.maximumFractionDigits || minFrac) {\n var defaultMinimum = 0;\n if (parseOptions.fractionDigits) {\n options.minimumFractionDigits = options.maximumFractionDigits = parseOptions.fractionDigits;\n }\n actualPattern = fractionDigitsPattern(actualPattern, minFrac || parseOptions.fractionDigits ||\n options.minimumFractionDigits || defaultMinimum, options.maximumFractionDigits || defaultMinimum);\n }\n if (options.minimumIntegerDigits) {\n actualPattern = minimumIntegerPattern(actualPattern, options.minimumIntegerDigits);\n }\n if (options.useGrouping) {\n actualPattern = groupingPattern(actualPattern);\n }\n if (parseOptions.type === 'currency' || (parseOptions.type && isBlazor())) {\n if (isBlazor() && parseOptions.type !== 'currency') {\n curObj.pData = getValue(parseOptions.type + 'pData', numrericObject);\n curObj.nData = getValue(parseOptions.type + 'nData', numrericObject);\n }\n var cPattern = actualPattern;\n actualPattern = curObj.pData.nlead + cPattern + curObj.pData.nend;\n if (curObj.hasNegativePattern || isBlazor()) {\n actualPattern += ';' + curObj.nData.nlead + cPattern + curObj.nData.nend;\n }\n }\n if (parseOptions.type === 'percent' && !isBlazor()) {\n actualPattern += ' %';\n }\n }\n else {\n actualPattern = options.format.replace(/'/g, '\"');\n }\n if (Object.keys(dOptions).length > 0) {\n actualPattern = !isExcel ? processSymbol(actualPattern, dOptions) : actualPattern;\n }\n return actualPattern;\n }\n IntlBase.getActualNumberFormat = getActualNumberFormat;\n /**\n *\n * @param {string} pattern ?\n * @param {number} minDigits ?\n * @param {number} maxDigits ?\n * @returns {string} ?\n */\n function fractionDigitsPattern(pattern, minDigits, maxDigits) {\n pattern += '.';\n for (var a = 0; a < minDigits; a++) {\n pattern += '0';\n }\n if (minDigits < maxDigits) {\n var diff = maxDigits - minDigits;\n for (var b = 0; b < diff; b++) {\n pattern += '#';\n }\n }\n return pattern;\n }\n IntlBase.fractionDigitsPattern = fractionDigitsPattern;\n /**\n *\n * @param {string} pattern ?\n * @param {number} digits ?\n * @returns {string} ?\n */\n function minimumIntegerPattern(pattern, digits) {\n var temp = pattern.split('.');\n var integer = '';\n for (var x = 0; x < digits; x++) {\n integer += '0';\n }\n return temp[1] ? (integer + '.' + temp[1]) : integer;\n }\n IntlBase.minimumIntegerPattern = minimumIntegerPattern;\n /**\n *\n * @param {string} pattern ?\n * @returns {string} ?\n */\n function groupingPattern(pattern) {\n var temp = pattern.split('.');\n var integer = temp[0];\n var no = 3 - integer.length % 3;\n var hash = (no && no === 1) ? '#' : (no === 2 ? '##' : '');\n integer = hash + integer;\n pattern = '';\n for (var x = integer.length - 1; x > 0; x = x - 3) {\n pattern = ',' + integer[x - 2] + integer[x - 1] + integer[parseInt(x.toString(), 10)] + pattern;\n }\n pattern = pattern.slice(1);\n return temp[1] ? (pattern + '.' + temp[1]) : pattern;\n }\n IntlBase.groupingPattern = groupingPattern;\n /**\n *\n * @param {string} culture ?\n * @param {Object} cldr ?\n * @returns {number} ?\n */\n function getWeekData(culture, cldr) {\n var firstDay = defaultFirstDay;\n var mapper = getValue('supplemental.weekData.firstDay', cldr);\n var iCulture = culture;\n if ((/en-/).test(iCulture)) {\n iCulture = iCulture.slice(3);\n }\n iCulture = iCulture.slice(0, 2).toUpperCase() + iCulture.substr(2);\n if (mapper) {\n firstDay = mapper[\"\" + iCulture] || mapper[iCulture.slice(0, 2)] || defaultFirstDay;\n }\n return firstDayMapper[\"\" + firstDay];\n }\n IntlBase.getWeekData = getWeekData;\n /**\n * @private\n * @param {any} pData ?\n * @param {string} aCurrency ?\n * @param {string} rCurrency ?\n * @returns {void} ?\n */\n function replaceBlazorCurrency(pData, aCurrency, rCurrency) {\n var iCurrency = getBlazorCurrencySymbol(rCurrency);\n if (aCurrency !== iCurrency) {\n for (var _i = 0, pData_1 = pData; _i < pData_1.length; _i++) {\n var data = pData_1[_i];\n data.nend = data.nend.replace(aCurrency, iCurrency);\n data.nlead = data.nlead.replace(aCurrency, iCurrency);\n }\n }\n }\n IntlBase.replaceBlazorCurrency = replaceBlazorCurrency;\n /**\n * @private\n * @param {Date} date ?\n * @returns {number} ?\n */\n function getWeekOfYear(date) {\n var newYear = new Date(date.getFullYear(), 0, 1);\n var day = newYear.getDay();\n var weeknum;\n day = (day >= 0 ? day : day + 7);\n var daynum = Math.floor((date.getTime() - newYear.getTime() -\n (date.getTimezoneOffset() - newYear.getTimezoneOffset()) * 60000) / 86400000) + 1;\n if (day < 4) {\n weeknum = Math.floor((daynum + day - 1) / 7) + 1;\n if (weeknum > 52) {\n var nYear = new Date(date.getFullYear() + 1, 0, 1);\n var nday = nYear.getDay();\n nday = nday >= 0 ? nday : nday + 7;\n weeknum = nday < 4 ? 1 : 53;\n }\n }\n else {\n weeknum = Math.floor((daynum + day - 1) / 7);\n }\n return weeknum;\n }\n IntlBase.getWeekOfYear = getWeekOfYear;\n})(IntlBase || (IntlBase = {}));\n","import { isNullOrUndefined, merge } from './util';\nvar headerRegex = /^(.*?):[ \\t]*([^\\r\\n]*)$/gm;\nvar defaultType = 'GET';\n/**\n * Ajax class provides ability to make asynchronous HTTP request to the server\n * ```typescript\n * var ajax = new Ajax(\"index.html\", \"GET\", true);\n * ajax.send().then(\n * function (value) {\n * console.log(value);\n * },\n * function (reason) {\n * console.log(reason);\n * });\n * ```\n */\nvar Ajax = /** @class */ (function () {\n /**\n * Constructor for Ajax class\n *\n * @param {string|Object} options ?\n * @param {string} type ?\n * @param {boolean} async ?\n * @returns defaultType any\n */\n function Ajax(options, type, async, contentType) {\n /**\n * A boolean value indicating whether the request should be sent asynchronous or not.\n *\n * @default true\n */\n this.mode = true;\n /**\n * A boolean value indicating whether to ignore the promise reject.\n *\n * @private\n * @default true\n */\n this.emitError = true;\n this.options = {};\n if (typeof options === 'string') {\n this.url = options;\n this.type = type ? type.toUpperCase() : defaultType;\n this.mode = !isNullOrUndefined(async) ? async : true;\n }\n else if (typeof options === 'object') {\n this.options = options;\n merge(this, this.options);\n }\n this.type = this.type ? this.type.toUpperCase() : defaultType;\n this.contentType = (this.contentType !== undefined) ? this.contentType : contentType;\n }\n /**\n *\n * Send the request to server.\n *\n * @param {any} data - To send the user data\n * @returns {Promise} ?\n */\n Ajax.prototype.send = function (data) {\n var _this = this;\n this.data = isNullOrUndefined(data) ? this.data : data;\n var eventArgs = {\n cancel: false,\n httpRequest: null\n };\n var promise = new Promise(function (resolve, reject) {\n _this.httpRequest = new XMLHttpRequest();\n _this.httpRequest.onreadystatechange = function () { _this.stateChange(resolve, reject); };\n if (!isNullOrUndefined(_this.onLoad)) {\n _this.httpRequest.onload = _this.onLoad;\n }\n if (!isNullOrUndefined(_this.onProgress)) {\n _this.httpRequest.onprogress = _this.onProgress;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onAbort)) {\n _this.httpRequest.onabort = _this.onAbort;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onError)) {\n _this.httpRequest.onerror = _this.onError;\n }\n //** Upload Events **/\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onUploadProgress)) {\n _this.httpRequest.upload.onprogress = _this.onUploadProgress;\n }\n _this.httpRequest.open(_this.type, _this.url, _this.mode);\n // Set default headers\n if (!isNullOrUndefined(_this.data) && _this.contentType !== null) {\n _this.httpRequest.setRequestHeader('Content-Type', _this.contentType || 'application/json; charset=utf-8');\n }\n if (_this.beforeSend) {\n eventArgs.httpRequest = _this.httpRequest;\n _this.beforeSend(eventArgs);\n }\n if (!eventArgs.cancel) {\n _this.httpRequest.send(!isNullOrUndefined(_this.data) ? _this.data : null);\n }\n });\n return promise;\n };\n Ajax.prototype.successHandler = function (data) {\n if (this.onSuccess) {\n this.onSuccess(data, this);\n }\n return data;\n };\n Ajax.prototype.failureHandler = function (reason) {\n if (this.onFailure) {\n this.onFailure(this.httpRequest);\n }\n return reason;\n };\n Ajax.prototype.stateChange = function (resolve, reject) {\n var data = this.httpRequest.responseText;\n if (this.dataType && this.dataType.toLowerCase() === 'json') {\n if (data === '') {\n data = undefined;\n }\n else {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n // no exception handle\n }\n }\n }\n if (this.httpRequest.readyState === 4) {\n //success range should be 200 to 299\n if ((this.httpRequest.status >= 200 && this.httpRequest.status <= 299) || this.httpRequest.status === 304) {\n resolve(this.successHandler(data));\n }\n else {\n if (this.emitError) {\n reject(new Error(this.failureHandler(this.httpRequest.statusText)));\n }\n else {\n resolve();\n }\n }\n }\n };\n /**\n * To get the response header from XMLHttpRequest\n *\n * @param {string} key Key to search in the response header\n * @returns {string} ?\n */\n Ajax.prototype.getResponseHeader = function (key) {\n var responseHeaders = {};\n var headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n while (headers) {\n responseHeaders[headers[1].toLowerCase()] = headers[2];\n headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n }\n var header = responseHeaders[key.toLowerCase()];\n return isNullOrUndefined(header) ? null : header;\n };\n return Ajax;\n}());\nexport { Ajax };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isUndefined } from './util';\nvar REGX_MOBILE = /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini|mobile/i;\nvar REGX_IE = /msie|trident/i;\nvar REGX_IE11 = /Trident\\/7\\./;\nvar REGX_IOS = /(ipad|iphone|ipod touch)/i;\nvar REGX_IOS7 = /(ipad|iphone|ipod touch);.*os 7_\\d|(ipad|iphone|ipod touch);.*os 8_\\d/i;\nvar REGX_ANDROID = /android/i;\nvar REGX_WINDOWS = /trident|windows phone|edge/i;\nvar REGX_VERSION = /(version)[ /]([\\w.]+)/i;\nvar REGX_BROWSER = {\n OPERA: /(opera|opr)(?:.*version|)[ /]([\\w.]+)/i,\n EDGE: /(edge)(?:.*version|)[ /]([\\w.]+)/i,\n CHROME: /(chrome|crios)[ /]([\\w.]+)/i,\n PANTHOMEJS: /(phantomjs)[ /]([\\w.]+)/i,\n SAFARI: /(safari)[ /]([\\w.]+)/i,\n WEBKIT: /(webkit)[ /]([\\w.]+)/i,\n MSIE: /(msie|trident) ([\\w.]+)/i,\n MOZILLA: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n};\n/* istanbul ignore else */\nif (typeof window !== 'undefined') {\n window.browserDetails = window.browserDetails || {};\n}\n/**\n * Get configuration details for Browser\n *\n * @private\n */\nvar Browser = /** @class */ (function () {\n function Browser() {\n }\n Browser.extractBrowserDetail = function () {\n var browserInfo = { culture: {} };\n var keys = Object.keys(REGX_BROWSER);\n var clientInfo = [];\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n clientInfo = Browser.userAgent.match(REGX_BROWSER[\"\" + key]);\n if (clientInfo) {\n browserInfo.name = (clientInfo[1].toLowerCase() === 'opr' ? 'opera' : clientInfo[1].toLowerCase());\n browserInfo.name = (clientInfo[1].toLowerCase() === 'crios' ? 'chrome' : browserInfo.name);\n browserInfo.version = clientInfo[2];\n browserInfo.culture.name = browserInfo.culture.language = navigator.language;\n if (Browser.userAgent.match(REGX_IE11)) {\n browserInfo.name = 'msie';\n break;\n }\n var version = Browser.userAgent.match(REGX_VERSION);\n if (browserInfo.name === 'safari' && version) {\n browserInfo.version = version[2];\n }\n break;\n }\n }\n return browserInfo;\n };\n /**\n * To get events from the browser\n *\n * @param {string} event - type of event triggered.\n * @returns {string} ?\n */\n Browser.getEvent = function (event) {\n var events = {\n start: {\n isPointer: 'pointerdown', isTouch: 'touchstart', isDevice: 'mousedown'\n },\n move: {\n isPointer: 'pointermove', isTouch: 'touchmove', isDevice: 'mousemove'\n },\n end: {\n isPointer: 'pointerup', isTouch: 'touchend', isDevice: 'mouseup'\n },\n cancel: {\n isPointer: 'pointercancel', isTouch: 'touchcancel', isDevice: 'mouseleave'\n }\n };\n return (Browser.isPointer ? events[\"\" + event].isPointer :\n (Browser.isTouch ? events[\"\" + event].isTouch + (!Browser.isDevice ? ' ' + events[\"\" + event].isDevice : '')\n : events[\"\" + event].isDevice));\n };\n /**\n * To get the Touch start event from browser\n *\n * @returns {string}\n */\n Browser.getTouchStartEvent = function () {\n return Browser.getEvent('start');\n };\n /**\n * To get the Touch end event from browser\n *\n * @returns {string}\n */\n Browser.getTouchEndEvent = function () {\n return Browser.getEvent('end');\n };\n /**\n * To get the Touch move event from browser\n *\n * @returns {string}\n */\n Browser.getTouchMoveEvent = function () {\n return Browser.getEvent('move');\n };\n /**\n * To cancel the touch event from browser\n *\n * @returns {string}\n */\n Browser.getTouchCancelEvent = function () {\n return Browser.getEvent('cancel');\n };\n /**\n * Check whether the browser on the iPad device is Safari or not\n *\n * @returns {boolean}\n */\n Browser.isSafari = function () {\n return (Browser.isDevice && Browser.isIos && Browser.isTouch && typeof window !== 'undefined'\n && window.navigator.userAgent.toLowerCase().indexOf('iphone') === -1\n && window.navigator.userAgent.toLowerCase().indexOf('safari') > -1);\n };\n /**\n * To get the value based on provided key and regX\n *\n * @param {string} key ?\n * @param {RegExp} regX ?\n * @returns {Object} ?\n */\n Browser.getValue = function (key, regX) {\n var browserDetails = typeof window !== 'undefined' ? window.browserDetails : {};\n if (typeof navigator !== 'undefined' && navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 && Browser.isTouch === true && !REGX_BROWSER.CHROME.test(navigator.userAgent)) {\n browserDetails['isIos'] = true;\n browserDetails['isDevice'] = true;\n browserDetails['isTouch'] = true;\n browserDetails['isPointer'] = true;\n }\n if ('undefined' === typeof browserDetails[\"\" + key]) {\n return browserDetails[\"\" + key] = regX.test(Browser.userAgent);\n }\n return browserDetails[\"\" + key];\n };\n Object.defineProperty(Browser, \"userAgent\", {\n get: function () {\n return Browser.uA;\n },\n //Properties\n /**\n * Property specifies the userAgent of the browser. Default userAgent value is based on the browser.\n * Also we can set our own userAgent.\n *\n * @param {string} uA ?\n */\n set: function (uA) {\n Browser.uA = uA;\n window.browserDetails = {};\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"info\", {\n //Read Only Properties\n /**\n * Property is to get the browser information like Name, Version and Language\n *\n * @returns {BrowserInfo} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.info)) {\n return window.browserDetails.info = Browser.extractBrowserDetail();\n }\n return window.browserDetails.info;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIE\", {\n /**\n * Property is to get whether the userAgent is based IE.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIE', REGX_IE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isTouch\", {\n /**\n * Property is to get whether the browser has touch support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isTouch)) {\n return (window.browserDetails.isTouch =\n ('ontouchstart' in window.navigator) ||\n (window &&\n window.navigator &&\n (window.navigator.maxTouchPoints > 0)) || ('ontouchstart' in window));\n }\n return window.browserDetails.isTouch;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isPointer\", {\n /**\n * Property is to get whether the browser has Pointer support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isPointer)) {\n return window.browserDetails.isPointer = ('pointerEnabled' in window.navigator);\n }\n return window.browserDetails.isPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isMSPointer\", {\n /**\n * Property is to get whether the browser has MSPointer support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isMSPointer)) {\n return window.browserDetails.isMSPointer = ('msPointerEnabled' in window.navigator);\n }\n return window.browserDetails.isMSPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isDevice\", {\n /**\n * Property is to get whether the userAgent is device based.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isDevice', REGX_MOBILE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos\", {\n /**\n * Property is to get whether the userAgent is IOS.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIos', REGX_IOS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos7\", {\n /**\n * Property is to get whether the userAgent is Ios7.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIos7', REGX_IOS7);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isAndroid\", {\n /**\n * Property is to get whether the userAgent is Android.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isAndroid', REGX_ANDROID);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWebView\", {\n /**\n * Property is to identify whether application ran in web view.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isWebView)) {\n window.browserDetails.isWebView = !(isUndefined(window.cordova) && isUndefined(window.PhoneGap)\n && isUndefined(window.phonegap) && window.forge !== 'object');\n return window.browserDetails.isWebView;\n }\n return window.browserDetails.isWebView;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWindows\", {\n /**\n * Property is to get whether the userAgent is Windows.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isWindows', REGX_WINDOWS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchStartEvent\", {\n /**\n * Property is to get the touch start event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchStartEvent)) {\n return window.browserDetails.touchStartEvent = Browser.getTouchStartEvent();\n }\n return window.browserDetails.touchStartEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchMoveEvent\", {\n /**\n * Property is to get the touch move event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchMoveEvent)) {\n return window.browserDetails.touchMoveEvent = Browser.getTouchMoveEvent();\n }\n return window.browserDetails.touchMoveEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchEndEvent\", {\n /**\n * Property is to get the touch end event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchEndEvent)) {\n return window.browserDetails.touchEndEvent = Browser.getTouchEndEvent();\n }\n return window.browserDetails.touchEndEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchCancelEvent\", {\n /**\n * Property is to cancel the touch end event.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchCancelEvent)) {\n return window.browserDetails.touchCancelEvent = Browser.getTouchCancelEvent();\n }\n return window.browserDetails.touchCancelEvent;\n },\n enumerable: true,\n configurable: true\n });\n /* istanbul ignore next */\n Browser.uA = typeof navigator !== 'undefined' ? navigator.userAgent : '';\n return Browser;\n}());\nexport { Browser };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isNullOrUndefined as isNOU, isObject, merge } from './util';\n/**\n * The Fetch class provides a way to make asynchronous network requests, typically to retrieve resources from a server.\n * ```typescript\n * var fetchApi = new Fetch('index.html', 'GET');\n * fetchApi.send()\n * .then((value) => {\n * console.log(value);\n * }).catch((error) => {\n * console.log(error);\n * });\n * ```\n */\nvar Fetch = /** @class */ (function () {\n /**\n * Constructor for Fetch class.\n *\n * @param {string|Object} options - Specifies the URL or Request object with URL to which the request is to be sent.\n * @param {string} type - Specifies which request method is to be used, such as GET, POST, etc.\n * @param {string} contentType - Specifies the content type of the request, which is used to indicate the original media type of the resource.\n */\n function Fetch(options, type, contentType) {\n /**\n * Specifies which request method is to be used, such as GET, POST, etc.\n *\n * @default GET\n */\n this.type = 'GET';\n /**\n * A boolean value indicating whether to reject the promise or not.\n *\n * @private\n * @default true\n */\n this.emitError = true;\n if (typeof options === 'string') {\n this.url = options;\n this.type = !isNOU(type) ? type.toUpperCase() : this.type;\n this.contentType = contentType;\n }\n else if (isObject(options) && Object.keys(options).length > 0) {\n merge(this, options);\n }\n this.contentType = !isNOU(this.contentType) ? this.contentType : 'application/json; charset=utf-8';\n }\n /**\n * Send the request to server.\n *\n * @param {string|Object} data - Specifies the data that needs to be added to the request.\n * @returns {Promise} - Returns the response to a request.\n */\n Fetch.prototype.send = function (data) {\n var _this = this;\n var contentTypes = {\n 'application/json': 'json',\n 'multipart/form-data': 'formData',\n 'application/octet-stream': 'blob',\n 'application/x-www-form-urlencoded': 'formData'\n };\n try {\n if (isNOU(this.fetchRequest) && this.type === 'GET') {\n this.fetchRequest = new Request(this.url, { method: this.type });\n }\n else if (isNOU(this.fetchRequest)) {\n this.data = !isNOU(data) ? data : this.data;\n this.fetchRequest = new Request(this.url, {\n method: this.type,\n headers: { 'Content-Type': this.contentType },\n body: this.data\n });\n }\n var eventArgs = { cancel: false, fetchRequest: this.fetchRequest };\n this.triggerEvent(this['beforeSend'], eventArgs);\n if (eventArgs.cancel) {\n return null;\n }\n this.fetchResponse = fetch(this.fetchRequest);\n return this.fetchResponse.then(function (response) {\n _this.triggerEvent(_this['onLoad'], response);\n if (!response.ok) {\n throw response;\n }\n var responseType = 'text';\n for (var _i = 0, _a = Object.keys(contentTypes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (response.headers.get('Content-Type') && response.headers.get('Content-Type').indexOf(key) !== -1) {\n responseType = contentTypes[key];\n }\n }\n return response[responseType]();\n }).then(function (data) {\n _this.triggerEvent(_this['onSuccess'], data, _this);\n return data;\n }).catch(function (error) {\n var returnVal = {};\n if (_this.emitError) {\n _this.triggerEvent(_this['onFailure'], error);\n returnVal = Promise.reject(error);\n }\n return returnVal;\n });\n }\n catch (error) {\n return error;\n }\n };\n Fetch.prototype.triggerEvent = function (callback, data, instance) {\n if (!isNOU(callback) && typeof callback === 'function') {\n callback(data, instance);\n }\n };\n return Fetch;\n}());\nexport { Fetch };\n","import { debounce, extend } from './util';\nimport { Browser } from './browser';\n/**\n * EventHandler class provides option to add, remove, clear and trigger events to a HTML DOM element\n * ```html\n *
\n * \n * ```\n */\nvar EventHandler = /** @class */ (function () {\n function EventHandler() {\n }\n // to get the event data based on element\n EventHandler.addOrGetEventData = function (element) {\n if ('__eventList' in element) {\n return element.__eventList.events;\n }\n else {\n element.__eventList = {};\n return element.__eventList.events = [];\n }\n };\n /**\n * Add an event to the specified DOM element.\n *\n * @param {any} element - Target HTML DOM element\n * @param {string} eventName - A string that specifies the name of the event\n * @param {Function} listener - Specifies the function to run when the event occurs\n * @param {Object} bindTo - A object that binds 'this' variable in the event handler\n * @param {number} intDebounce - Specifies at what interval given event listener should be triggered.\n * @returns {Function} ?\n */\n EventHandler.add = function (element, eventName, listener, bindTo, intDebounce) {\n var eventData = EventHandler.addOrGetEventData(element);\n var debounceListener;\n if (intDebounce) {\n debounceListener = debounce(listener, intDebounce);\n }\n else {\n debounceListener = listener;\n }\n if (bindTo) {\n debounceListener = debounceListener.bind(bindTo);\n }\n var event = eventName.split(' ');\n for (var i = 0; i < event.length; i++) {\n eventData.push({\n name: event[parseInt(i.toString(), 10)],\n listener: listener,\n debounce: debounceListener\n });\n if (Browser.isIE) {\n element.addEventListener(event[parseInt(i.toString(), 10)], debounceListener);\n }\n else {\n element.addEventListener(event[parseInt(i.toString(), 10)], debounceListener, { passive: false });\n }\n }\n return debounceListener;\n };\n /**\n * Remove an event listener that has been attached before.\n *\n * @param {any} element - Specifies the target html element to remove the event\n * @param {string} eventName - A string that specifies the name of the event to remove\n * @param {Function} listener - Specifies the function to remove\n * @returns {void} ?\n */\n EventHandler.remove = function (element, eventName, listener) {\n var eventData = EventHandler.addOrGetEventData(element);\n var event = eventName.split(' ');\n var _loop_1 = function (j) {\n var index = -1;\n var debounceListener;\n if (eventData && eventData.length !== 0) {\n eventData.some(function (x, i) {\n return x.name === event[parseInt(j.toString(), 10)] && x.listener === listener ?\n (index = i, debounceListener = x.debounce, true) : false;\n });\n }\n if (index !== -1) {\n eventData.splice(index, 1);\n }\n if (debounceListener) {\n element.removeEventListener(event[parseInt(j.toString(), 10)], debounceListener);\n }\n };\n for (var j = 0; j < event.length; j++) {\n _loop_1(j);\n }\n };\n /**\n * Clear all the event listeners that has been previously attached to the element.\n *\n * @param {any} element - Specifies the target html element to clear the events\n * @returns {void} ?\n */\n EventHandler.clearEvents = function (element) {\n var eventData = EventHandler.addOrGetEventData(element);\n var copyData = extend([], undefined, eventData);\n for (var i = 0; i < copyData.length; i++) {\n var parseValue = copyData[parseInt(i.toString(), 10)];\n element.removeEventListener(parseValue.name, parseValue.debounce);\n eventData.shift();\n }\n };\n /**\n * Trigger particular event of the element.\n *\n * @param {any} element - Specifies the target html element to trigger the events\n * @param {string} eventName - Specifies the event to trigger for the specified element.\n * Can be a custom event, or any of the standard events.\n * @param {any} eventProp - Additional parameters to pass on to the event properties\n * @returns {void} ?\n */\n EventHandler.trigger = function (element, eventName, eventProp) {\n var eventData = EventHandler.addOrGetEventData(element);\n for (var _i = 0, eventData_1 = eventData; _i < eventData_1.length; _i++) {\n var event_1 = eventData_1[_i];\n if (event_1.name === eventName) {\n event_1.debounce.call(this, eventProp);\n }\n }\n };\n return EventHandler;\n}());\nexport { EventHandler };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Functions related to dom operations.\n */\nimport { EventHandler } from './event-handler';\nimport { isNullOrUndefined, getValue, setValue, isObject, extend } from './util';\nvar SVG_REG = /^svg|^path|^g/;\n/**\n * Function to create Html element.\n *\n * @param {string} tagName - Name of the tag, id and class names.\n * @param {ElementProperties} properties - Object to set properties in the element.\n * @param {ElementProperties} properties.id - To set the id to the created element.\n * @param {ElementProperties} properties.className - To add classes to the element.\n * @param {ElementProperties} properties.innerHTML - To set the innerHTML to element.\n * @param {ElementProperties} properties.styles - To set the some custom styles to element.\n * @param {ElementProperties} properties.attrs - To set the attributes to element.\n * @returns {any} ?\n * @private\n */\nexport function createElement(tagName, properties) {\n var element = (SVG_REG.test(tagName) ? document.createElementNS('http://www.w3.org/2000/svg', tagName) : document.createElement(tagName));\n if (typeof (properties) === 'undefined') {\n return element;\n }\n element.innerHTML = (properties.innerHTML ? properties.innerHTML : '');\n if (properties.className !== undefined) {\n element.className = properties.className;\n }\n if (properties.id !== undefined) {\n element.id = properties.id;\n }\n if (properties.styles !== undefined) {\n element.setAttribute('style', properties.styles);\n }\n if (properties.attrs !== undefined) {\n attributes(element, properties.attrs);\n }\n return element;\n}\n/**\n * The function used to add the classes to array of elements\n *\n * @param {Element[]|NodeList} elements - An array of elements that need to add a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @returns {any} .\n * @private\n */\nexport function addClass(elements, classes) {\n var classList = getClassList(classes);\n var regExp = RegExp;\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n for (var _b = 0, classList_1 = classList; _b < classList_1.length; _b++) {\n var className = classList_1[_b];\n if (isObject(ele)) {\n var curClass = getValue('attributes.className', ele);\n if (isNullOrUndefined(curClass)) {\n setValue('attributes.className', className, ele);\n }\n else if (!new regExp('\\\\b' + className + '\\\\b', 'i').test(curClass)) {\n setValue('attributes.className', curClass + ' ' + className, ele);\n }\n }\n else {\n if (!ele.classList.contains(className)) {\n ele.classList.add(className);\n }\n }\n }\n }\n return elements;\n}\n/**\n * The function used to add the classes to array of elements\n *\n * @param {Element[]|NodeList} elements - An array of elements that need to remove a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @returns {any} .\n * @private\n */\nexport function removeClass(elements, classes) {\n var classList = getClassList(classes);\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n var flag = isObject(ele);\n var canRemove = flag ? getValue('attributes.className', ele) : ele.className !== '';\n if (canRemove) {\n for (var _b = 0, classList_2 = classList; _b < classList_2.length; _b++) {\n var className = classList_2[_b];\n if (flag) {\n var classes_1 = getValue('attributes.className', ele);\n var classArr = classes_1.split(' ');\n var index = classArr.indexOf(className);\n if (index !== -1) {\n classArr.splice(index, 1);\n }\n setValue('attributes.className', classArr.join(' '), ele);\n }\n else {\n ele.classList.remove(className);\n }\n }\n }\n }\n return elements;\n}\n/**\n * The function used to get classlist.\n *\n * @param {string | string[]} classes - An element the need to check visibility\n * @returns {string[]} ?\n * @private\n */\nfunction getClassList(classes) {\n var classList = [];\n if (typeof classes === 'string') {\n classList.push(classes);\n }\n else {\n classList = classes;\n }\n return classList;\n}\n/**\n * The function used to check element is visible or not.\n *\n * @param {Element|Node} element - An element the need to check visibility\n * @returns {boolean} ?\n * @private\n */\nexport function isVisible(element) {\n var ele = element;\n return (ele.style.visibility === '' && ele.offsetWidth > 0);\n}\n/**\n * The function used to insert an array of elements into a first of the element.\n *\n * @param {Element[]|NodeList} fromElements - An array of elements that need to prepend.\n * @param {Element} toElement - An element that is going to prepend.\n * @param {boolean} isEval - ?\n * @returns {Element[] | NodeList} ?\n * @private\n */\nexport function prepend(fromElements, toElement, isEval) {\n var docFrag = document.createDocumentFragment();\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n toElement.insertBefore(docFrag, toElement.firstElementChild);\n if (isEval) {\n executeScript(toElement);\n }\n return fromElements;\n}\n/**\n * The function used to insert an array of elements into last of the element.\n *\n * @param {Element[]|NodeList} fromElements - An array of elements that need to append.\n * @param {Element} toElement - An element that is going to prepend.\n * @param {boolean} isEval - ?\n * @returns {Element[] | NodeList} ?\n * @private\n */\nexport function append(fromElements, toElement, isEval) {\n var docFrag = document.createDocumentFragment();\n if (fromElements instanceof NodeList) {\n while (fromElements.length > 0) {\n docFrag.appendChild(fromElements[0]);\n }\n }\n else {\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n }\n toElement.appendChild(docFrag);\n if (isEval) {\n executeScript(toElement);\n }\n return fromElements;\n}\n/**\n * The function is used to evaluate script from Ajax request\n *\n * @param {Element} ele - An element is going to evaluate the script\n * @returns {void} ?\n */\nfunction executeScript(ele) {\n var eleArray = ele.querySelectorAll('script');\n eleArray.forEach(function (element) {\n var script = document.createElement('script');\n script.text = element.innerHTML;\n document.head.appendChild(script);\n detach(script);\n });\n}\n/**\n * The function used to remove the element from parentnode\n *\n * @param {Element|Node|HTMLElement} element - An element that is going to detach from the Dom\n * @returns {any} ?\n * @private\n */\nexport function detach(element) {\n var parentNode = element.parentNode;\n if (parentNode) {\n return parentNode.removeChild(element);\n }\n}\n/**\n * The function used to remove the element from Dom also clear the bounded events\n *\n * @param {Element|Node|HTMLElement} element - An element remove from the Dom\n * @returns {void} ?\n * @private\n */\nexport function remove(element) {\n var parentNode = element.parentNode;\n EventHandler.clearEvents(element);\n parentNode.removeChild(element);\n}\n/**\n * The function helps to set multiple attributes to an element\n *\n * @param {Element|Node} element - An element that need to set attributes.\n * @param {string} attributes - JSON Object that is going to as attributes.\n * @returns {Element} ?\n * @private\n */\nexport function attributes(element, attributes) {\n var keys = Object.keys(attributes);\n var ele = element;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (isObject(ele)) {\n var iKey = key;\n if (key === 'tabindex') {\n iKey = 'tabIndex';\n }\n ele.attributes[\"\" + iKey] = attributes[\"\" + key];\n }\n else {\n ele.setAttribute(key, attributes[\"\" + key]);\n }\n }\n return ele;\n}\n/**\n * The function selects the element from giving context.\n *\n * @param {string} selector - Selector string need fetch element\n * @param {Document|Element} context - It is an optional type, That specifies a Dom context.\n * @param {boolean} needsVDOM ?\n * @returns {any} ?\n * @private\n */\nexport function select(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n selector = querySelectId(selector);\n return context.querySelector(selector);\n}\n/**\n * The function selects an array of element from the given context.\n *\n * @param {string} selector - Selector string need fetch element\n * @param {Document|Element} context - It is an optional type, That specifies a Dom context.\n * @param {boolean} needsVDOM ?\n * @returns {HTMLElement[]} ?\n * @private\n */\nexport function selectAll(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n selector = querySelectId(selector);\n var nodeList = context.querySelectorAll(selector);\n return nodeList;\n}\n/**\n * The function selects an id of element from the given context.\n *\n * @param {string} selector - Selector string need fetch element\n * @returns {string} ?\n * @private\n */\nfunction querySelectId(selector) {\n var charRegex = /(!|\"|\\$|%|&|'|\\(|\\)|\\*|\\/|:|;|<|=|\\?|@|\\]|\\^|`|{|}|\\||\\+|~)/g;\n if (selector.match(/#[0-9]/g) || selector.match(charRegex)) {\n var idList = selector.split(',');\n for (var i = 0; i < idList.length; i++) {\n var list = idList[parseInt(i.toString(), 10)].split(' ');\n for (var j = 0; j < list.length; j++) {\n if (list[parseInt(j.toString(), 10)].indexOf('#') > -1) {\n if (!list[parseInt(j.toString(), 10)].match(/\\[.*\\]/)) {\n var splitId = list[parseInt(j.toString(), 10)].split('#');\n if (splitId[1].match(/^\\d/) || splitId[1].match(charRegex)) {\n var setId = list[parseInt(j.toString(), 10)].split('.');\n setId[0] = setId[0].replace(/#/, '[id=\\'') + '\\']';\n list[parseInt(j.toString(), 10)] = setId.join('.');\n }\n }\n }\n }\n idList[parseInt(i.toString(), 10)] = list.join(' ');\n }\n return idList.join(',');\n }\n return selector;\n}\n/**\n * Returns single closest parent element based on class selector.\n *\n * @param {Element} element - An element that need to find the closest element.\n * @param {string} selector - A classSelector of closest element.\n * @returns {Element} ?\n * @private\n */\nexport function closest(element, selector) {\n var el = element;\n if (typeof el.closest === 'function') {\n return el.closest(selector);\n }\n while (el && el.nodeType === 1) {\n if (matches(el, selector)) {\n return el;\n }\n el = el.parentNode;\n }\n return null;\n}\n/**\n * Returns all sibling elements of the given element.\n *\n * @param {Element|Node} element - An element that need to get siblings.\n * @returns {Element[]} ?\n * @private\n */\nexport function siblings(element) {\n var siblings = [];\n var childNodes = Array.prototype.slice.call(element.parentNode.childNodes);\n for (var _i = 0, childNodes_1 = childNodes; _i < childNodes_1.length; _i++) {\n var curNode = childNodes_1[_i];\n if (curNode.nodeType === Node.ELEMENT_NODE && element !== curNode) {\n siblings.push(curNode);\n }\n }\n return siblings;\n}\n/**\n * set the value if not exist. Otherwise set the existing value\n *\n * @param {HTMLElement} element - An element to which we need to set value.\n * @param {string} property - Property need to get or set.\n * @param {string} value - value need to set.\n * @returns {string} ?\n * @private\n */\nexport function getAttributeOrDefault(element, property, value) {\n var attrVal;\n var isObj = isObject(element);\n if (isObj) {\n attrVal = getValue('attributes.' + property, element);\n }\n else {\n attrVal = element.getAttribute(property);\n }\n if (isNullOrUndefined(attrVal) && value) {\n if (!isObj) {\n element.setAttribute(property, value.toString());\n }\n else {\n element.attributes[\"\" + property] = value;\n }\n attrVal = value;\n }\n return attrVal;\n}\n/**\n * Set the style attributes to Html element.\n *\n * @param {HTMLElement} element - Element which we want to set attributes\n * @param {any} attrs - Set the given attributes to element\n * @returns {void} ?\n * @private\n */\nexport function setStyleAttribute(element, attrs) {\n if (attrs !== undefined) {\n Object.keys(attrs).forEach(function (key) {\n element.style[\"\" + key] = attrs[\"\" + key];\n });\n }\n}\n/**\n * Method for add and remove classes to a dom element.\n *\n * @param {Element} element - Element for add and remove classes\n * @param {string[]} addClasses - List of classes need to be add to the element\n * @param {string[]} removeClasses - List of classes need to be remove from the element\n * @returns {void} ?\n * @private\n */\nexport function classList(element, addClasses, removeClasses) {\n addClass([element], addClasses);\n removeClass([element], removeClasses);\n}\n/**\n * Method to check whether the element matches the given selector.\n *\n * @param {Element} element - Element to compare with the selector.\n * @param {string} selector - String selector which element will satisfy.\n * @returns {void} ?\n * @private\n */\nexport function matches(element, selector) {\n var matches = element.matches || element.msMatchesSelector || element.webkitMatchesSelector;\n if (matches) {\n return matches.call(element, selector);\n }\n else {\n return [].indexOf.call(document.querySelectorAll(selector), element) !== -1;\n }\n}\n/**\n * Method to get the html text from DOM.\n *\n * @param {HTMLElement} ele - Element to compare with the selector.\n * @param {string} innerHTML - String selector which element will satisfy.\n * @returns {void} ?\n * @private\n */\nexport function includeInnerHTML(ele, innerHTML) {\n ele.innerHTML = innerHTML;\n}\n/**\n * Method to get the containsclass.\n *\n * @param {HTMLElement} ele - Element to compare with the selector.\n * @param {string} className - String selector which element will satisfy.\n * @returns {any} ?\n * @private\n */\nexport function containsClass(ele, className) {\n if (isObject(ele)) {\n var regExp = RegExp;\n return new regExp('\\\\b' + className + '\\\\b', 'i').test(ele.attributes.className);\n }\n else {\n return ele.classList.contains(className);\n }\n}\n/**\n * Method to check whether the element matches the given selector.\n *\n * @param {Object} element - Element to compare with the selector.\n * @param {boolean} deep ?\n * @returns {any} ?\n * @private\n */\nexport function cloneNode(element, deep) {\n if (isObject(element)) {\n if (deep) {\n return extend({}, {}, element, true);\n }\n }\n else {\n return element.cloneNode(deep);\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isUndefined, isNullOrUndefined, merge, setImmediate, setValue, isBlazor, getValue, extend } from './util';\nimport { addClass, removeClass } from './dom';\nimport { Observer } from './observer';\nvar isColEName = new RegExp(']');\n/**\n * Base library module is common module for Framework modules like touch,keyboard and etc.,\n *\n * @private\n * @returns {void} ?\n */\nvar Base = /** @class */ (function () {\n /**\n * Base constructor accept options and element\n *\n * @param {Object} options ?\n * @param {string} element ?\n */\n function Base(options, element) {\n this.isRendered = false;\n this.isComplexArraySetter = false;\n this.isServerRendered = false;\n this.allowServerDataBinding = true;\n this.isProtectedOnChange = true;\n this.properties = {};\n this.changedProperties = {};\n this.oldProperties = {};\n this.bulkChanges = {};\n this.refreshing = false;\n this.ignoreCollectionWatch = false;\n this.finalUpdate = function () { };\n this.childChangedProperties = {};\n this.modelObserver = new Observer(this);\n if (!isUndefined(element)) {\n if ('string' === typeof (element)) {\n this.element = document.querySelector(element);\n }\n else {\n this.element = element;\n }\n if (!isNullOrUndefined(this.element)) {\n this.isProtectedOnChange = false;\n this.addInstance();\n }\n }\n if (!isUndefined(options)) {\n this.setProperties(options, true);\n }\n this.isDestroyed = false;\n }\n /** Property base section */\n /**\n * Function used to set bunch of property at a time.\n *\n * @private\n * @param {Object} prop - JSON object which holds components properties.\n * @param {boolean} muteOnChange ? - Specifies to true when we set properties.\n * @returns {void} ?\n */\n Base.prototype.setProperties = function (prop, muteOnChange) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = !!muteOnChange;\n merge(this, prop);\n if (muteOnChange !== true) {\n merge(this.changedProperties, prop);\n this.dataBind();\n }\n else if (isBlazor() && this.isRendered) {\n this.serverDataBind(prop);\n }\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.isProtectedOnChange = prevDetection;\n };\n /**\n * Calls for child element data bind\n *\n * @param {Object} obj ?\n * @param {Object} parent ?\n * @returns {void} ?\n */\n Base.callChildDataBind = function (obj, parent) {\n var keys = Object.keys(obj);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (parent[\"\" + key] instanceof Array) {\n for (var _a = 0, _b = parent[\"\" + key]; _a < _b.length; _a++) {\n var obj_1 = _b[_a];\n if (obj_1.dataBind !== undefined) {\n obj_1.dataBind();\n }\n }\n }\n else {\n parent[\"\" + key].dataBind();\n }\n }\n };\n Base.prototype.clearChanges = function () {\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.childChangedProperties = {};\n };\n /**\n * Bind property changes immediately to components\n *\n * @returns {void} ?\n */\n Base.prototype.dataBind = function () {\n Base.callChildDataBind(this.childChangedProperties, this);\n if (Object.getOwnPropertyNames(this.changedProperties).length) {\n var prevDetection = this.isProtectedOnChange;\n var newChanges = this.changedProperties;\n var oldChanges = this.oldProperties;\n this.clearChanges();\n this.isProtectedOnChange = true;\n this.onPropertyChanged(newChanges, oldChanges);\n this.isProtectedOnChange = prevDetection;\n }\n };\n Base.prototype.serverDataBind = function (newChanges) {\n if (!isBlazor()) {\n return;\n }\n newChanges = newChanges ? newChanges : {};\n extend(this.bulkChanges, {}, newChanges, true);\n var sfBlazor = 'sfBlazor';\n if (this.allowServerDataBinding && window[\"\" + sfBlazor].updateModel) {\n window[\"\" + sfBlazor].updateModel(this);\n this.bulkChanges = {};\n }\n };\n Base.prototype.saveChanges = function (key, newValue, oldValue) {\n if (isBlazor()) {\n var newChanges = {};\n newChanges[\"\" + key] = newValue;\n this.serverDataBind(newChanges);\n }\n if (this.isProtectedOnChange) {\n return;\n }\n this.oldProperties[\"\" + key] = oldValue;\n this.changedProperties[\"\" + key] = newValue;\n this.finalUpdate();\n this.finalUpdate = setImmediate(this.dataBind.bind(this));\n };\n /** Event Base Section */\n /**\n * Adds the handler to the given event listener.\n *\n * @param {string} eventName - A String that specifies the name of the event\n * @param {Function} handler - Specifies the call to run when the event occurs.\n * @returns {void} ?\n */\n Base.prototype.addEventListener = function (eventName, handler) {\n this.modelObserver.on(eventName, handler);\n };\n /**\n * Removes the handler from the given event listener.\n *\n * @param {string} eventName - A String that specifies the name of the event to remove\n * @param {Function} handler - Specifies the function to remove\n * @returns {void} ?\n */\n Base.prototype.removeEventListener = function (eventName, handler) {\n this.modelObserver.off(eventName, handler);\n };\n /**\n * Triggers the handlers in the specified event.\n *\n * @private\n * @param {string} eventName - Specifies the event to trigger for the specified component properties.\n * Can be a custom event, or any of the standard events.\n * @param {Event} eventProp - Additional parameters to pass on to the event properties\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it failured to call.\n * @returns {void} ?\n */\n Base.prototype.trigger = function (eventName, eventProp, successHandler, errorHandler) {\n var _this = this;\n if (this.isDestroyed !== true) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = false;\n var data = this.modelObserver.notify(eventName, eventProp, successHandler, errorHandler);\n if (isColEName.test(eventName)) {\n var handler = getValue(eventName, this);\n if (handler) {\n var blazor = 'Blazor';\n if (window[\"\" + blazor]) {\n var promise = handler.call(this, eventProp);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n data = promise;\n }\n else {\n promise.then(function (data) {\n if (successHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ?\n JSON.parse(data) : data;\n successHandler.call(_this, data);\n }\n }).catch(function (data) {\n if (errorHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ? JSON.parse(data) : data;\n errorHandler.call(_this, data);\n }\n });\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n else {\n handler.call(this, eventProp);\n if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n this.isProtectedOnChange = prevDetection;\n return data;\n }\n };\n /**\n * To maintain instance in base class\n *\n * @returns {void} ?\n */\n Base.prototype.addInstance = function () {\n // Add module class to the root element\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-lib', moduleClass]);\n if (!isNullOrUndefined(this.element.ej2_instances)) {\n this.element.ej2_instances.push(this);\n }\n else {\n setValue('ej2_instances', [this], this.element);\n }\n };\n /**\n * To remove the instance from the element\n *\n * @returns {void} ?\n */\n Base.prototype.destroy = function () {\n var _this = this;\n // eslint-disable-next-line camelcase\n this.element.ej2_instances =\n this.element.ej2_instances ?\n this.element.ej2_instances.filter(function (i) {\n if (proxyToRaw) {\n return proxyToRaw(i) !== proxyToRaw(_this);\n }\n return i !== _this;\n })\n : [];\n removeClass([this.element], ['e-' + this.getModuleName()]);\n if (this.element.ej2_instances.length === 0) {\n // Remove module class from the root element\n removeClass([this.element], ['e-lib']);\n }\n this.clearChanges();\n this.modelObserver.destroy();\n this.isDestroyed = true;\n };\n return Base;\n}());\nexport { Base };\n/**\n * Global function to get the component instance from the rendered element.\n *\n * @param {HTMLElement} elem Specifies the HTMLElement or element id string.\n * @param {string} comp Specifies the component module name or Component.\n * @returns {any} ?\n */\nexport function getComponent(elem, comp) {\n var instance;\n var i;\n var ele = typeof elem === 'string' ? document.getElementById(elem) : elem;\n for (i = 0; i < ele.ej2_instances.length; i++) {\n instance = ele.ej2_instances[parseInt(i.toString(), 10)];\n if (typeof comp === 'string') {\n var compName = instance.getModuleName();\n if (comp === compName) {\n return instance;\n }\n }\n else {\n if (instance instanceof comp) {\n return instance;\n }\n }\n }\n return undefined;\n}\n/**\n * Function to remove the child instances.\n *\n * @param {HTMLElement} element ?\n * @returns {void} ?\n * @private\n */\nexport function removeChildInstance(element) {\n var childEle = [].slice.call(element.getElementsByClassName('e-control'));\n for (var i = 0; i < childEle.length; i++) {\n var compName = childEle[parseInt(i.toString(), 10)].classList[1].split('e-')[1];\n var compInstance = getComponent(childEle[parseInt(i.toString(), 10)], compName);\n if (!isUndefined(compInstance)) {\n compInstance.destroy();\n }\n }\n}\nexport var proxyToRaw;\nexport var setProxyToRaw = function (toRaw) { proxyToRaw = toRaw; };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { createInstance, isUndefined, merge, extend, getValue } from './util';\n/**\n * Returns the Class Object\n *\n * @param {ClassObject} instance - instance of ClassObject\n * @param {string} curKey - key of the current instance\n * @param {Object} defaultValue - default Value\n * @param {Object[]} type ?\n * @returns {ClassObject} ?\n */\nfunction getObject(instance, curKey, defaultValue, type) {\n if (!Object.prototype.hasOwnProperty.call(instance.properties, curKey) || !(instance.properties[\"\" + curKey] instanceof type)) {\n instance.properties[\"\" + curKey] = createInstance(type, [instance, curKey, defaultValue]);\n }\n return instance.properties[\"\" + curKey];\n}\n/**\n * Returns object array\n *\n * @param {ClassObject} instance ?\n * @param {string} curKey ?\n * @param {Object[]} defaultValue ?\n * @param {Object} type ?\n * @param {boolean} isSetter ?\n * @param {boolean} isFactory ?\n * @returns {Object[]} ?\n */\nfunction getObjectArray(instance, curKey, defaultValue, type, isSetter, isFactory) {\n var result = [];\n var len = defaultValue ? defaultValue.length : 0;\n for (var i = 0; i < len; i++) {\n var curType = type;\n if (isFactory) {\n curType = type(defaultValue[parseInt(i.toString(), 10)], instance);\n }\n if (isSetter) {\n var inst = createInstance(curType, [instance, curKey, {}, true]);\n inst.setProperties(defaultValue[parseInt(i.toString(), 10)], true);\n result.push(inst);\n }\n else {\n result.push(createInstance(curType, [instance, curKey, defaultValue[parseInt(i.toString(), 10)], false]));\n }\n }\n return result;\n}\n/**\n * Returns the properties of the object\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @returns {void} ?\n */\nfunction propertyGetter(defaultValue, curKey) {\n return function () {\n if (!Object.prototype.hasOwnProperty.call(this.properties, curKey)) {\n this.properties[\"\" + curKey] = defaultValue;\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n * Set the properties for the object\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @returns {void} ?\n */\nfunction propertySetter(defaultValue, curKey) {\n return function (newValue) {\n if (this.properties[\"\" + curKey] !== newValue) {\n var oldVal = Object.prototype.hasOwnProperty.call(this.properties, curKey) ? this.properties[\"\" + curKey] : defaultValue;\n this.saveChanges(curKey, newValue, oldVal);\n this.properties[\"\" + curKey] = newValue;\n }\n };\n}\n/**\n * Returns complex objects\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexGetter(defaultValue, curKey, type) {\n return function () {\n return getObject(this, curKey, defaultValue, type);\n };\n}\n/**\n * Sets complex objects\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexSetter(defaultValue, curKey, type) {\n return function (newValue) {\n getObject(this, curKey, defaultValue, type).setProperties(newValue);\n };\n}\n/**\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {FunctionConstructor} type ?\n * @returns {void} ?\n */\nfunction complexFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n if (Object.prototype.hasOwnProperty.call(this.properties, curKey)) {\n return this.properties[\"\" + curKey];\n }\n else {\n return getObject(this, curKey, defaultValue, curType);\n }\n };\n}\n/**\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n var curType = type(newValue, this);\n getObject(this, curKey, defaultValue, curType).setProperties(newValue);\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArrayGetter(defaultValue, curKey, type) {\n return function () {\n var _this = this;\n if (!Object.prototype.hasOwnProperty.call(this.properties, curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, type, false);\n this.properties[\"\" + curKey] = defCollection;\n }\n var ignore = ((this.controlParent !== undefined && this.controlParent.ignoreCollectionWatch)\n || this.ignoreCollectionWatch);\n if (!Object.prototype.hasOwnProperty.call(this.properties[\"\" + curKey], 'push') && !ignore) {\n ['push', 'pop'].forEach(function (extendFunc) {\n var descriptor = {\n value: complexArrayDefinedCallback(extendFunc, curKey, type, _this.properties[\"\" + curKey]).bind(_this),\n configurable: true\n };\n Object.defineProperty(_this.properties[\"\" + curKey], extendFunc, descriptor);\n });\n }\n if (!Object.prototype.hasOwnProperty.call(this.properties[\"\" + curKey], 'isComplexArray')) {\n Object.defineProperty(this.properties[\"\" + curKey], 'isComplexArray', { value: true });\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArraySetter(defaultValue, curKey, type) {\n return function (newValue) {\n this.isComplexArraySetter = true;\n var oldValueCollection = getObjectArray(this, curKey, defaultValue, type, false);\n var newValCollection = getObjectArray(this, curKey, newValue, type, true);\n this.isComplexArraySetter = false;\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[\"\" + curKey] = newValCollection;\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArrayFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n var oldValueCollection = Object.prototype.hasOwnProperty.call(this.properties, curKey) ? this.properties[\"\" + curKey] : defaultValue;\n var newValCollection = getObjectArray(this, curKey, newValue, type, true, true);\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[\"\" + curKey] = newValCollection;\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {FunctionConstructor} type ?\n * @returns {void} ?\n */\nfunction complexArrayFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n if (!Object.prototype.hasOwnProperty.call(this.properties, curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, curType, false);\n this.properties[\"\" + curKey] = defCollection;\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n *\n * @param {string} dFunc ?\n * @param {string} curKey ?\n * @param {Object} type ?\n * @param {Object} prop ?\n * @returns {Object} ?\n */\nfunction complexArrayDefinedCallback(dFunc, curKey, type, prop) {\n return function () {\n var newValue = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newValue[_i] = arguments[_i];\n }\n var keyString = this.propName ? this.getParentKey() + '.' + curKey + '-' : curKey + '-';\n switch (dFunc) {\n case 'push':\n for (var i = 0; i < newValue.length; i++) {\n var newValueParse = newValue[parseInt(i.toString(), 10)];\n Array.prototype[\"\" + dFunc].apply(prop, [newValueParse]);\n var model = getArrayModel(keyString + (prop.length - 1), newValueParse, !this.controlParent, dFunc);\n this.serverDataBind(model, newValue[parseInt(i.toString(), 10)], false, dFunc);\n }\n break;\n case 'pop': {\n Array.prototype[\"\" + dFunc].apply(prop);\n var model = getArrayModel(keyString + prop.length, null, !this.controlParent, dFunc);\n this.serverDataBind(model, { ejsAction: 'pop' }, false, dFunc);\n break;\n }\n }\n return prop;\n };\n}\n/**\n *\n * @param {string} keyString ?\n * @param {Object} value ?\n * @param {boolean} isControlParent ?\n * @param {string} arrayFunction ?\n * @returns {Object} ?\n */\nfunction getArrayModel(keyString, value, isControlParent, arrayFunction) {\n var modelObject = keyString;\n if (isControlParent) {\n modelObject = {};\n modelObject[\"\" + keyString] = value;\n if (value && typeof value === 'object') {\n var action = 'ejsAction';\n modelObject[\"\" + keyString][\"\" + action] = arrayFunction;\n }\n }\n return modelObject;\n}\n/**\n * Method used to create property. General syntax below.\n *\n * @param {Object} defaultValue - Specifies the default value of property.\n * @returns {PropertyDecorator} ?\n * @private\n */\nexport function Property(defaultValue) {\n return function (target, key) {\n var propertyDescriptor = {\n set: propertySetter(defaultValue, key),\n get: propertyGetter(defaultValue, key),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'prop', defaultValue);\n };\n}\n/**\n * Method used to create complex property. General syntax below.\n *\n * @param {any} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @Complex({},Type)\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Complex(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexSetter(defaultValue, key, type),\n get: complexGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex Factory property. General syntax below.\n *\n * @param {Function} type - Specifies the class factory type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @ComplexFactory(defaultType, factoryFunction)\n * propertyName: Type1 | Type2;\n * ```\n * @private\n */\nexport function ComplexFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexFactorySetter({}, key, type),\n get: complexFactoryGetter({}, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', {}, type);\n };\n}\n/**\n * Method used to create complex array property. General syntax below.\n *\n * @param {any} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Collection(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArraySetter(defaultValue, key, type),\n get: complexArrayGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex factory array property. General syntax below.\n *\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyCollectionInfo} ?\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function CollectionFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArrayFactorySetter([], key, type),\n get: complexArrayFactoryGetter([], key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', {}, type);\n };\n}\n/**\n * Method used to create event property. General syntax below.\n *\n * @returns {PropertyDecorator} ?\n * ```\n * @Event(()=>{return true;})\n * ```\n * @private\n */\nexport function Event() {\n return function (target, key) {\n var eventDescriptor = {\n set: function (newValue) {\n var oldValue = this.properties[\"\" + key];\n if (oldValue !== newValue) {\n var finalContext = getParentContext(this, key);\n if (isUndefined(oldValue) === false) {\n finalContext.context.removeEventListener(finalContext.prefix, oldValue);\n }\n finalContext.context.addEventListener(finalContext.prefix, newValue);\n this.properties[\"\" + key] = newValue;\n }\n },\n get: propertyGetter(undefined, key),\n enumerable: true,\n configurable: true\n };\n Object.defineProperty(target, key, eventDescriptor);\n addPropertyCollection(target, key, 'event');\n };\n}\n/**\n * NotifyPropertyChanges is triggers the call back when the property has been changed.\n *\n * @param {Function} classConstructor ?\n * @returns {void} ?\n * @private\n */\nexport function NotifyPropertyChanges(classConstructor) {\n /** Need to code */\n}\n/**\n * Method used to create the builderObject for the target component.\n *\n * @param {BuildInfo} target ?\n * @param {string} key ?\n * @param {string} propertyType ?\n * @param {Object} defaultValue ?\n * @param {Function} type ?\n * @returns {void} ?\n * @private\n */\nfunction addPropertyCollection(target, key, propertyType, defaultValue, type) {\n if (isUndefined(target.propList)) {\n target.propList = {\n props: [],\n complexProps: [],\n colProps: [],\n events: [],\n propNames: [],\n complexPropNames: [],\n colPropNames: [],\n eventNames: []\n };\n }\n target.propList[propertyType + 's'].push({\n propertyName: key,\n defaultValue: defaultValue,\n type: type\n });\n target.propList[propertyType + 'Names'].push(key);\n}\n/**\n * Returns an object containing the builder properties\n *\n * @param {Function} component ?\n * @returns {Object} ?\n * @private\n */\nfunction getBuilderProperties(component) {\n if (isUndefined(component.prototype.builderObject)) {\n component.prototype.builderObject = {\n properties: {}, propCollections: [], add: function () {\n this.isPropertyArray = true;\n this.propCollections.push(extend({}, this.properties, {}));\n }\n };\n var rex = /complex/;\n for (var _i = 0, _a = Object.keys(component.prototype.propList); _i < _a.length; _i++) {\n var key = _a[_i];\n var _loop_1 = function (prop) {\n if (rex.test(key)) {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n var childType = {};\n merge(childType, getBuilderProperties(prop.type));\n value(childType);\n var tempValue;\n if (!childType.isPropertyArray) {\n tempValue = extend({}, childType.properties, {});\n }\n else {\n tempValue = childType.propCollections;\n }\n this.properties[prop.propertyName] = tempValue;\n childType.properties = {};\n childType.propCollections = [];\n childType.isPropertyArray = false;\n return this;\n };\n }\n else {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n this.properties[prop.propertyName] = value;\n return this;\n };\n }\n };\n for (var _b = 0, _c = component.prototype.propList[\"\" + key]; _b < _c.length; _b++) {\n var prop = _c[_b];\n _loop_1(prop);\n }\n }\n }\n return component.prototype.builderObject;\n}\n/**\n * Method used to create builder for the components\n *\n * @param {any} component -specifies the target component for which builder to be created.\n * @returns {Object} ?\n * @private\n */\nexport function CreateBuilder(component) {\n var builderFunction = function (element) {\n this.element = element;\n return this;\n };\n var instanceFunction = function (element) {\n if (!Object.prototype.hasOwnProperty.call(builderFunction, 'create')) {\n builderFunction.prototype = getBuilderProperties(component);\n builderFunction.prototype.create = function () {\n var temp = extend({}, {}, this.properties);\n this.properties = {};\n return new component(temp, this.element);\n };\n }\n return new builderFunction(element);\n };\n return instanceFunction;\n}\n/**\n * Returns parent options for the object\n *\n * @param {Object} context ?\n * @param {string} prefix ?\n * @returns {ParentOption} ?\n * @private\n */\nfunction getParentContext(context, prefix) {\n if (Object.prototype.hasOwnProperty.call(context, 'parentObj') === false) {\n return { context: context, prefix: prefix };\n }\n else {\n var curText = getValue('propName', context);\n if (curText) {\n prefix = curText + '-' + prefix;\n }\n return getParentContext(getValue('parentObj', context), prefix);\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { createElement, selectAll, closest } from './dom';\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { EventHandler } from './event-handler';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\n/**\n * The Animation framework provide options to animate the html DOM elements\n * ```typescript\n * let animeObject = new Animation({\n * name: 'SlideLeftIn',\n * duration: 1000\n * });\n * animeObject.animate('#anime1');\n * animeObject.animate('#anime2', { duration: 500 });\n * ```\n */\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation(options) {\n var _this = _super.call(this, options, undefined) || this;\n /**\n * @private\n */\n _this.easing = {\n ease: 'cubic-bezier(0.250, 0.100, 0.250, 1.000)',\n linear: 'cubic-bezier(0.250, 0.250, 0.750, 0.750)',\n easeIn: 'cubic-bezier(0.420, 0.000, 1.000, 1.000)',\n easeOut: 'cubic-bezier(0.000, 0.000, 0.580, 1.000)',\n easeInOut: 'cubic-bezier(0.420, 0.000, 0.580, 1.000)',\n elasticInOut: 'cubic-bezier(0.5,-0.58,0.38,1.81)',\n elasticIn: 'cubic-bezier(0.17,0.67,0.59,1.81)',\n elasticOut: 'cubic-bezier(0.7,-0.75,0.99,1.01)'\n };\n return _this;\n }\n Animation_1 = Animation;\n /**\n * Applies animation to the current element.\n *\n * @param {string | HTMLElement} element - Element which needs to be animated.\n * @param {AnimationModel} options - Overriding default animation settings.\n * @returns {void} ?\n */\n Animation.prototype.animate = function (element, options) {\n options = !options ? {} : options;\n var model = this.getModel(options);\n if (typeof element === 'string') {\n var elements = Array.prototype.slice.call(selectAll(element, document));\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var element_1 = elements_1[_i];\n model.element = element_1;\n Animation_1.delayAnimation(model);\n }\n }\n else {\n model.element = element;\n Animation_1.delayAnimation(model);\n }\n };\n /**\n * Stop the animation effect on animated element.\n *\n * @param {HTMLElement} element - Element which needs to be stop the animation.\n * @param {AnimationOptions} model - Handling the animation model at stop function.\n * @returns {void}\n */\n Animation.stop = function (element, model) {\n element.style.animation = '';\n element.removeAttribute('e-animate');\n var animationId = element.getAttribute('e-animation-id');\n if (animationId) {\n var frameId = parseInt(animationId, 10);\n cancelAnimationFrame(frameId);\n element.removeAttribute('e-animation-id');\n }\n if (model && model.end) {\n model.end.call(this, model);\n }\n };\n /**\n * Set delay to animation element\n *\n * @param {AnimationModel} model ?\n * @returns {void}\n */\n Animation.delayAnimation = function (model) {\n if (animationMode === 'Disable' || animationMode === GlobalAnimationMode.Disable) {\n if (model.begin) {\n model.begin.call(this, model);\n }\n if (model.end) {\n model.end.call(this, model);\n }\n }\n else {\n if (model.delay) {\n setTimeout(function () { Animation_1.applyAnimation(model); }, model.delay);\n }\n else {\n Animation_1.applyAnimation(model);\n }\n }\n };\n /**\n * Triggers animation\n *\n * @param {AnimationModel} model ?\n * @returns {void}\n */\n Animation.applyAnimation = function (model) {\n var _this = this;\n model.timeStamp = 0;\n var step = 0;\n var timerId = 0;\n var prevTimeStamp = 0;\n var duration = model.duration;\n model.element.setAttribute('e-animate', 'true');\n var startAnimation = function (timeStamp) {\n try {\n if (timeStamp) {\n // let step: number = model.timeStamp = timeStamp - startTime;\n /** phantomjs workaround for timestamp fix */\n prevTimeStamp = prevTimeStamp === 0 ? timeStamp : prevTimeStamp;\n model.timeStamp = (timeStamp + model.timeStamp) - prevTimeStamp;\n prevTimeStamp = timeStamp;\n /** phantomjs workaround end */\n // trigger animation begin event\n if (!step && model.begin) {\n model.begin.call(_this, model);\n }\n step = step + 1;\n var avg = model.timeStamp / step;\n if (model.timeStamp < duration && model.timeStamp + avg < duration && model.element.getAttribute('e-animate')) {\n // apply animation effect to the current element\n model.element.style.animation = model.name + ' ' + model.duration + 'ms ' + model.timingFunction;\n if (model.progress) {\n model.progress.call(_this, model);\n }\n // repeat requestAnimationFrame\n requestAnimationFrame(startAnimation);\n }\n else {\n // clear requestAnimationFrame\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n model.element.removeAttribute('e-animate');\n model.element.style.animation = '';\n if (model.end) {\n model.end.call(_this, model);\n }\n }\n }\n else {\n //startTime = performance.now();\n // set initial requestAnimationFrame\n timerId = requestAnimationFrame(startAnimation);\n model.element.setAttribute('e-animation-id', timerId.toString());\n }\n }\n catch (e) {\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n if (model.fail) {\n model.fail.call(_this, e);\n }\n }\n };\n startAnimation();\n };\n /**\n * Returns Animation Model\n *\n * @param {AnimationModel} options ?\n * @returns {AnimationModel} ?\n */\n Animation.prototype.getModel = function (options) {\n return {\n name: options.name || this.name,\n delay: options.delay || this.delay,\n duration: (options.duration !== undefined ? options.duration : this.duration),\n begin: options.begin || this.begin,\n end: options.end || this.end,\n fail: options.fail || this.fail,\n progress: options.progress || this.progress,\n timingFunction: this.easing[options.timingFunction] ? this.easing[options.timingFunction] :\n (options.timingFunction || this.easing[this.timingFunction])\n };\n };\n /**\n * @private\n * @param {AnimationModel} newProp ?\n * @param {AnimationModel} oldProp ?\n * @returns {void} ?\n */\n Animation.prototype.onPropertyChanged = function (newProp, oldProp) {\n // no code needed\n };\n /**\n * Returns module name as animation\n *\n * @private\n * @returns {void} ?\n */\n Animation.prototype.getModuleName = function () {\n return 'animation';\n };\n /**\n *\n * @private\n * @returns {void} ?\n */\n Animation.prototype.destroy = function () {\n //Override base destroy;\n };\n var Animation_1;\n __decorate([\n Property('FadeIn')\n ], Animation.prototype, \"name\", void 0);\n __decorate([\n Property(400)\n ], Animation.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], Animation.prototype, \"timingFunction\", void 0);\n __decorate([\n Property(0)\n ], Animation.prototype, \"delay\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"progress\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"begin\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"end\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"fail\", void 0);\n Animation = Animation_1 = __decorate([\n NotifyPropertyChanges\n ], Animation);\n return Animation;\n}(Base));\nexport { Animation };\n/**\n * Ripple provides material theme's wave effect when an element is clicked\n * ```html\n *
\n * \n * ```\n *\n * @private\n * @param {HTMLElement} element - Target element\n * @param {RippleOptions} rippleOptions - Ripple options .\n * @param {Function} done .\n * @returns {void} .\n */\nexport function rippleEffect(element, rippleOptions, done) {\n var rippleModel = getRippleModel(rippleOptions);\n if (rippleModel.rippleFlag === false || (rippleModel.rippleFlag === undefined && !isRippleEnabled)) {\n return (function () {\n // do nothing.\n });\n }\n element.setAttribute('data-ripple', 'true');\n EventHandler.add(element, 'mousedown', rippleHandler, { parent: element, rippleOptions: rippleModel });\n EventHandler.add(element, 'mouseup', rippleUpHandler, { parent: element, rippleOptions: rippleModel, done: done });\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n if (Browser.isPointer) {\n EventHandler.add(element, 'transitionend', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n }\n return (function () {\n element.removeAttribute('data-ripple');\n EventHandler.remove(element, 'mousedown', rippleHandler);\n EventHandler.remove(element, 'mouseup', rippleUpHandler);\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n EventHandler.remove(element, 'transitionend', rippleLeaveHandler);\n });\n}\n/**\n * Handler for ripple model\n *\n * @param {RippleOptions} rippleOptions ?\n * @returns {RippleOptions} ?\n */\nfunction getRippleModel(rippleOptions) {\n var rippleModel = {\n selector: rippleOptions && rippleOptions.selector ? rippleOptions.selector : null,\n ignore: rippleOptions && rippleOptions.ignore ? rippleOptions.ignore : null,\n rippleFlag: rippleOptions && rippleOptions.rippleFlag,\n isCenterRipple: rippleOptions && rippleOptions.isCenterRipple,\n duration: rippleOptions && rippleOptions.duration ? rippleOptions.duration : 350\n };\n return rippleModel;\n}\n/**\n * Handler for ripple event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleHandler(e) {\n var target = (e.target);\n var selector = this.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (this.rippleOptions && closest(target, this.rippleOptions.ignore))) {\n return;\n }\n var offset = element.getBoundingClientRect();\n var offsetX = e.pageX - document.body.scrollLeft;\n var offsetY = e.pageY - ((!document.body.scrollTop && document.documentElement) ?\n document.documentElement.scrollTop : document.body.scrollTop);\n var pageX = Math.max(Math.abs(offsetX - offset.left), Math.abs(offsetX - offset.right));\n var pageY = Math.max(Math.abs(offsetY - offset.top), Math.abs(offsetY - offset.bottom));\n var radius = Math.sqrt(pageX * pageX + pageY * pageY);\n var diameter = radius * 2 + 'px';\n var x = offsetX - offset.left - radius;\n var y = offsetY - offset.top - radius;\n if (this.rippleOptions && this.rippleOptions.isCenterRipple) {\n x = 0;\n y = 0;\n diameter = '100%';\n }\n element.classList.add('e-ripple');\n var duration = this.rippleOptions.duration.toString();\n var styles = 'width: ' + diameter + ';height: ' + diameter + ';left: ' + x + 'px;top: ' + y + 'px;' +\n 'transition-duration: ' + duration + 'ms;';\n var rippleElement = createElement('div', { className: 'e-ripple-element', styles: styles });\n element.appendChild(rippleElement);\n window.getComputedStyle(rippleElement).getPropertyValue('opacity');\n rippleElement.style.transform = 'scale(1)';\n if (element !== this.parent) {\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: this.parent, rippleOptions: this.rippleOptions });\n }\n}\n/**\n * Handler for ripple element mouse up event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleUpHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for ripple element mouse move event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleLeaveHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for removing ripple element\n *\n * @param {MouseEvent} e ?\n * @param {RippleArgs} eventArgs ?\n * @returns {void} ?\n * @private\n */\nfunction removeRipple(e, eventArgs) {\n var duration = eventArgs.rippleOptions.duration;\n var target = (e.target);\n var selector = eventArgs.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (element && element.className.indexOf('e-ripple') === -1)) {\n return;\n }\n var rippleElements = selectAll('.e-ripple-element', element);\n var rippleElement = rippleElements[rippleElements.length - 1];\n if (rippleElement) {\n rippleElement.style.opacity = '0.5';\n }\n if (eventArgs.parent !== element) {\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n }\n setTimeout(function () {\n if (rippleElement && rippleElement.parentNode) {\n rippleElement.parentNode.removeChild(rippleElement);\n }\n if (!element.getElementsByClassName('e-ripple-element').length) {\n element.classList.remove('e-ripple');\n }\n if (eventArgs.done) {\n eventArgs.done(e);\n }\n }, duration);\n}\nexport var isRippleEnabled = false;\n/**\n * Animation Module provides support to enable ripple effect functionality to Essential JS 2 components.\n *\n * @param {boolean} isRipple Specifies the boolean value to enable or disable ripple effect.\n * @returns {boolean} ?\n */\nexport function enableRipple(isRipple) {\n isRippleEnabled = isRipple;\n return isRippleEnabled;\n}\n/**\n * Defines the Modes of Global animation.\n *\n * @private\n */\nexport var animationMode;\n/**\n * This method is used to enable or disable the animation for all components.\n *\n * @param {string|GlobalAnimationMode} value - Specifies the value to enable or disable the animation for all components. When set to 'enable', it enables the animation for all components, regardless of the individual component's animation settings. When set to 'disable', it disables the animation for all components, regardless of the individual component's animation settings.\n * @returns {void}\n */\nexport function setGlobalAnimation(value) {\n animationMode = value;\n}\n/**\n * Defines the global animation modes for all components.\n */\nexport var GlobalAnimationMode;\n(function (GlobalAnimationMode) {\n /**\n * Defines the global animation mode as Default. Animation is enabled or disabled based on the component's animation settings.\n */\n GlobalAnimationMode[\"Default\"] = \"Default\";\n /**\n * Defines the global animation mode as Enable. Enables the animation for all components, regardless of the individual component's animation settings.\n */\n GlobalAnimationMode[\"Enable\"] = \"Enable\";\n /**\n * Defines the global animation mode as Disable. Disables the animation for all components, regardless of the individual component's animation settings.\n */\n GlobalAnimationMode[\"Disable\"] = \"Disable\";\n})(GlobalAnimationMode || (GlobalAnimationMode = {}));\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Module loading operations\n */\nimport { createInstance, setValue, getValue, deleteObject } from './util';\nvar MODULE_SUFFIX = 'Module';\nvar ModuleLoader = /** @class */ (function () {\n function ModuleLoader(parent) {\n this.loadedModules = [];\n this.parent = parent;\n }\n /**\n * Inject required modules in component library\n *\n * @returns {void} ?\n * @param {ModuleDeclaration[]} requiredModules - Array of modules to be required\n * @param {Function[]} moduleList - Array of modules to be injected from sample side\n */\n ModuleLoader.prototype.inject = function (requiredModules, moduleList) {\n var reqLength = requiredModules.length;\n if (reqLength === 0) {\n this.clean();\n return;\n }\n if (this.loadedModules.length) {\n this.clearUnusedModule(requiredModules);\n }\n for (var i = 0; i < reqLength; i++) {\n var modl = requiredModules[parseInt(i.toString(), 10)];\n for (var _i = 0, moduleList_1 = moduleList; _i < moduleList_1.length; _i++) {\n var module = moduleList_1[_i];\n var modName = modl.member;\n if (module && module.prototype.getModuleName() === modl.member && !this.isModuleLoaded(modName)) {\n var moduleObject = createInstance(module, modl.args);\n var memberName = this.getMemberName(modName);\n if (modl.isProperty) {\n setValue(memberName, module, this.parent);\n }\n else {\n setValue(memberName, moduleObject, this.parent);\n }\n var loadedModule = modl;\n loadedModule.member = memberName;\n this.loadedModules.push(loadedModule);\n }\n }\n }\n };\n /**\n * To remove the created object while destroying the control\n *\n * @returns {void}\n */\n ModuleLoader.prototype.clean = function () {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var modules = _a[_i];\n if (!modules.isProperty) {\n getValue(modules.member, this.parent).destroy();\n }\n }\n this.loadedModules = [];\n };\n /**\n * Returns the array of modules that are not loaded in the component library.\n *\n * @param {ModuleDeclaration[]} requiredModules - Array of modules to be required\n * @returns {ModuleDeclaration[]} ?\n * @private\n */\n ModuleLoader.prototype.getNonInjectedModules = function (requiredModules) {\n var _this = this;\n return requiredModules.filter(function (module) { return !_this.isModuleLoaded(module.member); });\n };\n /**\n * Removes all unused modules\n *\n * @param {ModuleDeclaration[]} moduleList ?\n * @returns {void} ?\n */\n ModuleLoader.prototype.clearUnusedModule = function (moduleList) {\n var _this = this;\n var usedModules = moduleList.map(function (arg) { return _this.getMemberName(arg.member); });\n var removableModule = this.loadedModules.filter(function (module) {\n return usedModules.indexOf(module.member) === -1;\n });\n for (var _i = 0, removableModule_1 = removableModule; _i < removableModule_1.length; _i++) {\n var mod = removableModule_1[_i];\n if (!mod.isProperty) {\n getValue(mod.member, this.parent).destroy();\n }\n this.loadedModules.splice(this.loadedModules.indexOf(mod), 1);\n deleteObject(this.parent, mod.member);\n }\n };\n /**\n * To get the name of the member.\n *\n * @param {string} name ?\n * @returns {string} ?\n */\n ModuleLoader.prototype.getMemberName = function (name) {\n return name[0].toLowerCase() + name.substring(1) + MODULE_SUFFIX;\n };\n /**\n * Returns boolean based on whether the module specified is loaded or not\n *\n * @param {string} modName ?\n * @returns {boolean} ?\n */\n ModuleLoader.prototype.isModuleLoaded = function (modName) {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var mod = _a[_i];\n if (mod.member === this.getMemberName(modName)) {\n return true;\n }\n }\n return false;\n };\n return ModuleLoader;\n}());\nexport { ModuleLoader };\n","import { createElement } from './dom';\nimport { getValue, containerObject, setValue, isNullOrUndefined } from './util';\nexport var componentList = ['grid', 'pivotview', 'treegrid', 'spreadsheet', 'rangeNavigator', 'DocumentEditor', 'listbox', 'inplaceeditor', 'PdfViewer', 'richtexteditor', 'DashboardLayout', 'chart', 'stockChart', 'circulargauge', 'diagram', 'heatmap', 'lineargauge', 'maps', 'slider', 'smithchart', 'barcode', 'sparkline', 'treemap', 'bulletChart', 'kanban', 'daterangepicker', 'schedule', 'gantt', 'signature', 'query-builder', 'drop-down-tree', 'carousel', 'filemanager', 'uploader', 'accordion', 'tab', 'treeview'];\nvar bypassKey = [115, 121, 110, 99, 102, 117, 115, 105,\n 111, 110, 46, 105, 115, 76, 105, 99, 86, 97, 108,\n 105, 100, 97, 116, 101, 100];\nvar accountURL;\n/**\n * License validation module\n *\n * @private\n */\nvar LicenseValidator = /** @class */ (function () {\n function LicenseValidator(key) {\n this.isValidated = false;\n this.isLicensed = true;\n this.version = '27';\n this.platform = /JavaScript|ASPNET|ASPNETCORE|ASPNETMVC|FileFormats|essentialstudio/i;\n this.errors = {\n noLicense: 'This application was built using a trial version of Syncfusion Essential Studio.' +\n ' To remove the license validation message permanently, a valid license key must be included.',\n trailExpired: 'This application was built using a trial version of Syncfusion Essential Studio.' +\n ' To remove the license validation message permanently, a valid license key must be included.',\n versionMismatched: 'The included Syncfusion license key is invalid.',\n platformMismatched: 'The included Syncfusion license key is invalid.',\n invalidKey: 'The included Syncfusion license key is invalid.'\n };\n /**\n * To manage licensing operation.\n */\n this.manager = (function () {\n var licKey = null;\n /**\n * Sets the license key.\n *\n * @param {string} key - Specifies the license key.\n * @returns {void}\n */\n function set(key) { licKey = key; }\n /**\n * Gets the license key.\n *\n * @returns {string} -Gets the license key.\n */\n function get() { return licKey; }\n return {\n setKey: set,\n getKey: get\n };\n })();\n /**\n * To manage npx licensing operation.\n */\n this.npxManager = (function () {\n var npxLicKey = 'npxKeyReplace';\n /**\n * Gets the license key.\n *\n * @returns {string} - Gets the license key.\n */\n function get() { return npxLicKey; }\n return {\n getKey: get\n };\n })();\n this.manager.setKey(key);\n }\n /**\n * To validate the provided license key.\n *\n * @returns {boolean} ?\n */\n LicenseValidator.prototype.validate = function () {\n var contentKey = [115, 121, 110, 99, 102, 117, 115, 105, 111, 110, 46,\n 108, 105, 99, 101, 110, 115, 101, 67, 111, 110, 116, 101, 110, 116];\n var URLKey = [115, 121, 110, 99, 102, 117, 115, 105, 111, 110, 46,\n 99, 108, 97, 105, 109, 65, 99, 99, 111, 117, 110, 116, 85, 82, 76];\n if (!this.isValidated && (containerObject && !getValue(convertToChar(bypassKey), containerObject) && !getValue('Blazor', containerObject))) {\n var validateMsg = void 0;\n var validateURL = void 0;\n if ((this.manager && this.manager.getKey()) || (this.npxManager && this.npxManager.getKey() !== 'npxKeyReplace')) {\n var result = this.getInfoFromKey();\n if (result && result.length) {\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var res = result_1[_i];\n if (!this.platform.test(res.platform) || res.invalidPlatform) {\n validateMsg = this.errors.platformMismatched;\n }\n else if (res.version.indexOf(this.version) === -1) {\n validateMsg = this.errors.versionMismatched;\n validateMsg = validateMsg.replace('##LicenseVersion', res.version);\n validateMsg = validateMsg.replace('##Requireversion', this.version + '.x');\n }\n else if (res.expiryDate) {\n var expDate = new Date(res.expiryDate);\n var currDate = new Date();\n if (expDate !== currDate && expDate < currDate) {\n validateMsg = this.errors.trailExpired;\n }\n else {\n break;\n }\n }\n }\n }\n else {\n validateMsg = this.errors.invalidKey;\n }\n }\n else {\n var licenseContent = getValue(convertToChar(contentKey), containerObject);\n validateURL = getValue(convertToChar(URLKey), containerObject);\n if (licenseContent && licenseContent !== '') {\n validateMsg = licenseContent;\n }\n else {\n validateMsg = this.errors.noLicense;\n }\n }\n if (validateMsg && typeof document !== 'undefined' && !isNullOrUndefined(document)) {\n accountURL = (validateURL && validateURL !== '') ? validateURL : 'https://www.syncfusion.com/account/claim-license-key?pl=SmF2YVNjcmlwdA==&vs=Mjc=&utm_source=es_license_validation_banner&utm_medium=listing&utm_campaign=license-information';\n var errorDiv = createElement('div', {\n innerHTML: \"\" + validateMsg + ' ' + 'Claim your free account'\n });\n errorDiv.setAttribute('style', \"position: fixed;\\n top: 10px;\\n left: 10px;\\n right: 10px;\\n font-size: 14px;\\n background: #EEF2FF;\\n color: #222222;\\n z-index: 999999999;\\n text-align: left;\\n border: 1px solid #EEEEEE;\\n padding: 10px 11px 10px 50px;\\n border-radius: 8px;\\n font-family: Helvetica Neue, Helvetica, Arial;\");\n document.body.appendChild(errorDiv);\n this.isLicensed = false;\n }\n this.isValidated = true;\n setValue(convertToChar(bypassKey), this.isValidated, containerObject);\n }\n return this.isLicensed;\n };\n LicenseValidator.prototype.getDecryptedData = function (key) {\n try {\n return atob(key);\n }\n catch (error) {\n return '';\n }\n };\n /**\n * Get license information from key.\n *\n * @returns {IValidator} - Get license information from key.\n */\n LicenseValidator.prototype.getInfoFromKey = function () {\n try {\n var licKey = '';\n var pkey = [5439488, 7929856, 5111808, 6488064, 4587520, 7667712, 5439488,\n 6881280, 5177344, 7208960, 4194304, 4456448, 6619136, 7733248, 5242880, 7077888,\n 6356992, 7602176, 4587520, 7274496, 7471104, 7143424];\n var decryptedStr = [];\n var resultArray = [];\n var invalidPlatform = false;\n var isNpxKey = false;\n if (this.manager.getKey()) {\n licKey = this.manager.getKey();\n }\n else {\n isNpxKey = true;\n licKey = this.npxManager.getKey().split('npxKeyReplace')[1];\n }\n var licKeySplit = licKey.split(';');\n for (var _i = 0, licKeySplit_1 = licKeySplit; _i < licKeySplit_1.length; _i++) {\n var lKey = licKeySplit_1[_i];\n var decodeStr = this.getDecryptedData(lKey);\n if (!decodeStr) {\n continue;\n }\n var k = 0;\n var buffr = '';\n if (!isNpxKey) {\n for (var i = 0; i < decodeStr.length; i++, k++) {\n if (k === pkey.length) {\n k = 0;\n }\n var c = decodeStr.charCodeAt(i);\n buffr += String.fromCharCode(c ^ (pkey[parseInt(k.toString(), 10)] >> 16));\n }\n }\n else {\n var charKey = decodeStr[decodeStr.length - 1];\n var decryptedKey = [];\n for (var i = 0; i < decodeStr.length; i++) {\n decryptedKey[parseInt(i.toString(), 10)] = decodeStr[parseInt(i.toString(), 10)].charCodeAt(0)\n - charKey.charCodeAt(0);\n }\n for (var i = 0; i < decryptedKey.length; i++) {\n buffr += String.fromCharCode(decryptedKey[parseInt(i.toString(), 10)]);\n }\n }\n if (this.platform.test(buffr)) {\n decryptedStr = buffr.split(';');\n invalidPlatform = false;\n // checked the length to verify the key in proper strucutre\n if (decryptedStr.length > 3) {\n resultArray.push({ platform: decryptedStr[0],\n version: decryptedStr[1],\n expiryDate: decryptedStr[2] });\n }\n }\n else if (buffr && buffr.split(';').length > 3) {\n invalidPlatform = true;\n }\n }\n if (invalidPlatform && !resultArray.length) {\n return [{ invalidPlatform: invalidPlatform }];\n }\n else {\n return resultArray.length ? resultArray : null;\n }\n }\n catch (error) {\n return null;\n }\n };\n return LicenseValidator;\n}());\nvar licenseValidator = new LicenseValidator();\n/**\n * Converts the given number to characters.\n *\n * @param {number} cArr - Specifies the license key as number.\n * @returns {string} ?\n */\nfunction convertToChar(cArr) {\n var ret = '';\n for (var _i = 0, cArr_1 = cArr; _i < cArr_1.length; _i++) {\n var arr = cArr_1[_i];\n ret += String.fromCharCode(arr);\n }\n return ret;\n}\n/**\n * To set license key.\n *\n * @param {string} key - license key\n * @returns {void}\n */\nexport function registerLicense(key) {\n licenseValidator = new LicenseValidator(key);\n}\nexport var validateLicense = function (key) {\n if (key) {\n registerLicense(key);\n }\n return licenseValidator.validate();\n};\nexport var getVersion = function () {\n return licenseValidator.version;\n};\n// Method for create overlay over the sample\nexport var createLicenseOverlay = function () {\n var bannerTemplate = \"\\n
\\n
\\n
\\n \\n
\\n
Claim your FREE account and get a key in less than a minute
\\n
    \\n
  • Access to a 30-day free trial of any of our products.
  • \\n
  • Access to 24x5 support by developers via the support tickets, forum, feature & feedback page and chat.
  • \\n
  • 200+ ebooks on the latest technologies, industry trends, and research topics.\\n
  • \\n
  • Largest collection of over 7,000 flat and wireframe icons for free with Syncfusion Metro Studio.
  • \\n
  • Free and unlimited access to Syncfusion technical blogs and whitepapers.
  • \\n
\\n
Syncfusion is trusted by 29,000+ businesses worldwide
\\n \\n Claim your FREE account\\n
have a Syncfusion account? Sign In
\\n
\\n
\";\n if (typeof document !== 'undefined' && !isNullOrUndefined(document)) {\n var errorBackground = createElement('div', {\n innerHTML: bannerTemplate\n });\n document.body.appendChild(errorBackground);\n }\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { getValue, setValue, merge, isBlazor } from './util';\nimport { Base } from './base';\n/**\n * To detect the changes for inner properties.\n *\n * @private\n * @returns {void} ?\n */\nvar ChildProperty = /** @class */ (function () {\n function ChildProperty(parent, propName, defaultValue, isArray) {\n this.isComplexArraySetter = false;\n this.properties = {};\n this.changedProperties = {};\n this.childChangedProperties = {};\n this.oldProperties = {};\n this.finalUpdate = function () { };\n this.callChildDataBind = getValue('callChildDataBind', Base);\n this.parentObj = parent;\n this.controlParent = this.parentObj.controlParent || this.parentObj;\n this.propName = propName;\n this.isParentArray = isArray;\n this.setProperties(defaultValue, true);\n }\n /**\n * Updates the property changes\n *\n * @param {boolean} val ?\n * @param {string} propName ?\n * @returns {void} ?\n */\n ChildProperty.prototype.updateChange = function (val, propName) {\n if (val === true) {\n this.parentObj.childChangedProperties[\"\" + propName] = val;\n }\n else {\n delete this.parentObj.childChangedProperties[\"\" + propName];\n }\n if (this.parentObj.updateChange) {\n this.parentObj.updateChange(val, this.parentObj.propName);\n }\n };\n /**\n * Updates time out duration\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.updateTimeOut = function () {\n if (this.parentObj.updateTimeOut) {\n this.parentObj.finalUpdate();\n this.parentObj.updateTimeOut();\n }\n else {\n var changeTime_1 = setTimeout(this.parentObj.dataBind.bind(this.parentObj));\n var clearUpdate = function () {\n clearTimeout(changeTime_1);\n };\n this.finalUpdate = clearUpdate;\n }\n };\n /**\n * Clears changed properties\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.clearChanges = function () {\n this.finalUpdate();\n this.updateChange(false, this.propName);\n this.oldProperties = {};\n this.changedProperties = {};\n };\n /**\n * Set property changes\n *\n * @param {Object} prop ?\n * @param {boolean} muteOnChange ?\n * @returns {void} ?\n */\n ChildProperty.prototype.setProperties = function (prop, muteOnChange) {\n if (muteOnChange === true) {\n merge(this, prop);\n this.updateChange(false, this.propName);\n this.clearChanges();\n }\n else {\n merge(this, prop);\n }\n };\n /**\n * Binds data\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.dataBind = function () {\n this.callChildDataBind(this.childChangedProperties, this);\n if (this.isParentArray) {\n var curIndex = this.parentObj[this.propName].indexOf(this);\n if (Object.keys(this.changedProperties).length) {\n setValue(this.propName + '.' + curIndex, this.changedProperties, this.parentObj.changedProperties);\n setValue(this.propName + '.' + curIndex, this.oldProperties, this.parentObj.oldProperties);\n }\n }\n else {\n this.parentObj.changedProperties[this.propName] = this.changedProperties;\n this.parentObj.oldProperties[this.propName] = this.oldProperties;\n }\n this.clearChanges();\n };\n /**\n * Saves changes to newer values\n *\n * @param {string} key ?\n * @param {Object} newValue ?\n * @param {Object} oldValue ?\n * @param {boolean} restrictServerDataBind ?\n * @returns {void} ?\n */\n ChildProperty.prototype.saveChanges = function (key, newValue, oldValue, restrictServerDataBind) {\n if (this.controlParent.isProtectedOnChange) {\n return;\n }\n if (!restrictServerDataBind) {\n this.serverDataBind(key, newValue, true);\n }\n this.oldProperties[\"\" + key] = oldValue;\n this.changedProperties[\"\" + key] = newValue;\n this.updateChange(true, this.propName);\n this.finalUpdate();\n this.updateTimeOut();\n };\n ChildProperty.prototype.serverDataBind = function (key, value, isSaveChanges, action) {\n if (isBlazor() && !this.parentObj.isComplexArraySetter) {\n var parent_1;\n var newChanges = {};\n var parentKey = isSaveChanges ? this.getParentKey(true) + '.' + key : key;\n /* istanbul ignore else */\n if (parentKey.indexOf('.') !== -1) {\n var complexKeys = parentKey.split('.');\n parent_1 = newChanges;\n for (var i = 0; i < complexKeys.length; i++) {\n var isFinal = i === complexKeys.length - 1;\n parent_1[complexKeys[parseInt(i.toString(), 10)]] = isFinal ? value : {};\n parent_1 = isFinal ? parent_1 : parent_1[complexKeys[parseInt(i.toString(), 10)]];\n }\n }\n else {\n newChanges[\"\" + parentKey] = {};\n parent_1 = newChanges[\"\" + parentKey];\n newChanges[\"\" + parentKey][\"\" + key] = value;\n }\n /* istanbul ignore next */\n if (this.isParentArray) {\n var actionProperty = 'ejsAction';\n parent_1[\"\" + actionProperty] = action ? action : 'none';\n }\n this.controlParent.serverDataBind(newChanges);\n }\n };\n ChildProperty.prototype.getParentKey = function (isSaveChanges) {\n var index = '';\n var propName = this.propName;\n /* istanbul ignore next */\n if (this.isParentArray) {\n index = this.parentObj[this.propName].indexOf(this);\n var valueLength = this.parentObj[this.propName].length;\n valueLength = isSaveChanges ? valueLength : (valueLength > 0 ? valueLength - 1 : 0);\n index = index !== -1 ? '-' + index : '-' + valueLength;\n propName = propName + index;\n }\n if (this.controlParent !== this.parentObj) {\n propName = this.parentObj.getParentKey() + '.' + this.propName + index;\n }\n return propName;\n };\n return ChildProperty;\n}());\nexport { ChildProperty };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types */\nimport { isUndefined, getValue, isNullOrUndefined, setValue, uniqueID, isBlazor } from './util';\nimport { ModuleLoader } from './module-loader';\nimport { Base } from './base';\nimport { Observer } from './observer';\nimport { ChildProperty } from './child-property';\nimport { Property, NotifyPropertyChanges } from './notify-property-change';\nimport { onIntlChange, rightToLeft, defaultCulture } from './internationalization';\nimport { createElement, addClass, removeClass, select } from './dom';\nimport { validateLicense, createLicenseOverlay, componentList } from './validate-lic';\nvar componentCount = 0;\nvar lastPageID;\nvar lastHistoryLen = 0;\n// Decalre the static variable to count the instance\nvar instancecount = 0;\n// Decalre the static variable to find if control limit exceed or not\nvar isvalid = true;\n// We have added styles to inline type so here declare the static variable to detect if banner is added or not\nvar isBannerAdded = false;\nexport var versionBasedStatePersistence = false;\n/**\n * To enable or disable version based statePersistence functionality for all components globally.\n *\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable versionBasedStatePersistence option.\n * @returns {void}\n */\nexport function enableVersionBasedPersistence(status) {\n versionBasedStatePersistence = status;\n}\n/**\n * Base class for all Essential JavaScript components\n */\nvar Component = /** @class */ (function (_super) {\n __extends(Component, _super);\n /**\n * Initialize the constructor for component base\n *\n * @param {Object} options ?\n * @param {string} selector ?\n */\n function Component(options, selector) {\n var _this = _super.call(this, options, selector) || this;\n _this.randomId = uniqueID();\n /**\n * string template option for Blazor template rendering\n *\n * @private\n */\n _this.isStringTemplate = false;\n _this.needsID = false;\n _this.isReactHybrid = false;\n _this.isAngular = false;\n _this.isReact = false;\n _this.isVue = false;\n if (isNullOrUndefined(_this.enableRtl)) {\n _this.setProperties({ 'enableRtl': rightToLeft }, true);\n }\n if (isNullOrUndefined(_this.locale)) {\n _this.setProperties({ 'locale': defaultCulture }, true);\n }\n _this.moduleLoader = new ModuleLoader(_this);\n _this.localObserver = new Observer(_this);\n onIntlChange.on('notifyExternalChange', _this.detectFunction, _this, _this.randomId);\n // Based on the considered control list we have count the instance\n if (typeof window !== 'undefined' && typeof document !== 'undefined' && !validateLicense()) {\n if (componentList.indexOf(_this.getModuleName()) !== -1) {\n instancecount = instancecount + 1;\n if (instancecount > 5) {\n isvalid = false;\n }\n }\n }\n if (!isUndefined(selector)) {\n _this.appendTo();\n }\n return _this;\n }\n Component.prototype.requiredModules = function () {\n return [];\n };\n /**\n * Destroys the sub modules while destroying the widget\n *\n * @returns {void} ?\n */\n Component.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (this.enablePersistence) {\n this.setPersistData();\n this.detachUnloadEvent();\n }\n this.localObserver.destroy();\n if (this.refreshing) {\n return;\n }\n removeClass([this.element], ['e-control']);\n this.trigger('destroyed', { cancel: false });\n _super.prototype.destroy.call(this);\n this.moduleLoader.clean();\n onIntlChange.off('notifyExternalChange', this.detectFunction, this.randomId);\n };\n /**\n * Applies all the pending property changes and render the component again.\n *\n * @returns {void} ?\n */\n Component.prototype.refresh = function () {\n this.refreshing = true;\n this.moduleLoader.clean();\n this.destroy();\n this.clearChanges();\n this.localObserver = new Observer(this);\n this.preRender();\n this.injectModules();\n this.render();\n this.refreshing = false;\n };\n Component.prototype.accessMount = function () {\n if (this.mount && !this.isReactHybrid) {\n this.mount();\n }\n };\n /**\n * Returns the route element of the component\n *\n * @returns {HTMLElement} ?\n */\n Component.prototype.getRootElement = function () {\n if (this.isReactHybrid) {\n return this.actualElement;\n }\n else {\n return this.element;\n }\n };\n /**\n * Returns the persistence data for component\n *\n * @returns {any} ?\n */\n Component.prototype.getLocalData = function () {\n var eleId = this.getModuleName() + this.element.id;\n if (versionBasedStatePersistence) {\n return window.localStorage.getItem(eleId + this.ej2StatePersistenceVersion);\n }\n else {\n return window.localStorage.getItem(eleId);\n }\n };\n /**\n * Adding unload event to persist data when enable persistence true\n *\n * @returns {void}\n */\n Component.prototype.attachUnloadEvent = function () {\n this.handleUnload = this.handleUnload.bind(this);\n window.addEventListener('pagehide', this.handleUnload);\n };\n /**\n * Handling unload event to persist data when enable persistence true\n *\n * @returns {void}\n */\n Component.prototype.handleUnload = function () {\n this.setPersistData();\n };\n /**\n * Removing unload event to persist data when enable persistence true\n *\n * @returns {void}\n */\n Component.prototype.detachUnloadEvent = function () {\n window.removeEventListener('pagehide', this.handleUnload);\n };\n /**\n * Appends the control within the given HTML element\n *\n * @param {string | HTMLElement} selector - Target element where control needs to be appended\n * @returns {void} ?\n */\n Component.prototype.appendTo = function (selector) {\n if (!isNullOrUndefined(selector) && typeof (selector) === 'string') {\n this.element = select(selector, document);\n }\n else if (!isNullOrUndefined(selector)) {\n this.element = selector;\n }\n if (!isNullOrUndefined(this.element)) {\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-control', moduleClass]);\n this.isProtectedOnChange = false;\n if (this.needsID && !this.element.id) {\n this.element.id = this.getUniqueID(this.getModuleName());\n }\n if (this.enablePersistence) {\n this.mergePersistData();\n this.attachUnloadEvent();\n }\n var inst = getValue('ej2_instances', this.element);\n if (!inst || inst.indexOf(this) === -1) {\n _super.prototype.addInstance.call(this);\n }\n this.preRender();\n this.injectModules();\n // Throw a warning for the required modules to be injected.\n var ignoredComponents = {\n schedule: 'all',\n diagram: 'all',\n PdfViewer: 'all',\n grid: ['logger'],\n richtexteditor: ['link', 'table', 'image', 'audio', 'video', 'formatPainter', 'emojiPicker', 'pasteCleanup', 'htmlEditor', 'toolbar', 'importExport'],\n treegrid: ['filter'],\n gantt: ['tooltip'],\n chart: ['Export', 'Zoom'],\n accumulationchart: ['Export'],\n 'query-builder': 'all'\n };\n var component = this.getModuleName();\n if (this.requiredModules && (!ignoredComponents[\"\" + component] || ignoredComponents[\"\" + component] !== 'all')) {\n var modulesRequired = this.requiredModules();\n for (var _i = 0, _a = this.moduleLoader.getNonInjectedModules(modulesRequired); _i < _a.length; _i++) {\n var module = _a[_i];\n var moduleName = module.name ? module.name : module.member;\n if (ignoredComponents[\"\" + component] && ignoredComponents[\"\" + component].indexOf(module.member) !== -1) {\n continue;\n }\n var componentName = component.charAt(0).toUpperCase() + component.slice(1); // To capitalize the component name\n console.warn(\"[WARNING] :: Module \\\"\" + moduleName + \"\\\" is not available in \" + componentName + \" component! You either misspelled the module name or forgot to load it.\");\n }\n }\n // Checked weather cases are valid or not. If control leads to more than five counts\n if (!isvalid && !isBannerAdded) {\n createLicenseOverlay();\n isBannerAdded = true;\n }\n this.render();\n if (!this.mount) {\n this.trigger('created');\n }\n else {\n this.accessMount();\n }\n }\n };\n /**\n * It is used to process the post rendering functionalities to a component.\n *\n * @param {Node} wrapperElement ?\n * @returns {void} ?\n */\n Component.prototype.renderComplete = function (wrapperElement) {\n if (isBlazor()) {\n var sfBlazor = 'sfBlazor';\n window[\"\" + sfBlazor].renderComplete(this.element, wrapperElement);\n }\n this.isRendered = true;\n };\n /**\n * When invoked, applies the pending property changes immediately to the component.\n *\n * @returns {void} ?\n */\n Component.prototype.dataBind = function () {\n this.injectModules();\n _super.prototype.dataBind.call(this);\n };\n /**\n * Attach one or more event handler to the current component context.\n * It is used for internal handling event internally within the component only.\n *\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the handler to run when the event occurs\n * @param {Object} context - optional parameter Specifies the context to be bind in the handler.\n * @returns {void} ?\n * @private\n */\n Component.prototype.on = function (event, handler, context) {\n if (typeof event === 'string') {\n this.localObserver.on(event, handler, context);\n }\n else {\n for (var _i = 0, event_1 = event; _i < event_1.length; _i++) {\n var arg = event_1[_i];\n this.localObserver.on(arg.event, arg.handler, arg.context);\n }\n }\n };\n /**\n * To remove one or more event handler that has been attached with the on() method.\n *\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the function to run when the event occurs\n * @returns {void} ?\n * @private\n */\n Component.prototype.off = function (event, handler) {\n if (typeof event === 'string') {\n this.localObserver.off(event, handler);\n }\n else {\n for (var _i = 0, event_2 = event; _i < event_2.length; _i++) {\n var arg = event_2[_i];\n this.localObserver.off(arg.event, arg.handler);\n }\n }\n };\n /**\n * To notify the handlers in the specified event.\n *\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @returns {void} ?\n * @private\n */\n Component.prototype.notify = function (property, argument) {\n if (this.isDestroyed !== true) {\n this.localObserver.notify(property, argument);\n }\n };\n /**\n * Get injected modules\n *\n * @returns {Function} ?\n * @private\n */\n Component.prototype.getInjectedModules = function () {\n return this.injectedModules;\n };\n /**\n * Dynamically injects the required modules to the component.\n *\n * @param {Function} moduleList ?\n * @returns {void} ?\n */\n Component.Inject = function () {\n var moduleList = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n moduleList[_i] = arguments[_i];\n }\n if (!this.prototype.injectedModules) {\n this.prototype.injectedModules = [];\n }\n for (var i = 0; i < moduleList.length; i++) {\n if (this.prototype.injectedModules.indexOf(moduleList[parseInt(i.toString(), 10)]) === -1) {\n this.prototype.injectedModules.push(moduleList[parseInt(i.toString(), 10)]);\n }\n }\n };\n /**\n * This is a instance method to create an element.\n *\n * @param {string} tagName ?\n * @param {ElementProperties} prop ?\n * @param {boolean} isVDOM ?\n * @returns {any} ?\n * @private\n */\n Component.prototype.createElement = function (tagName, prop, isVDOM) {\n return createElement(tagName, prop);\n };\n /**\n *\n * @param {Function} handler - handler to be triggered after state Updated.\n * @param {any} argument - Arguments to be passed to caller.\n * @returns {void} .\n * @private\n */\n Component.prototype.triggerStateChange = function (handler, argument) {\n if (this.isReactHybrid) {\n this.setState();\n this.currentContext = { calls: handler, args: argument };\n }\n };\n Component.prototype.injectModules = function () {\n if (this.injectedModules && this.injectedModules.length) {\n this.moduleLoader.inject(this.requiredModules(), this.injectedModules);\n }\n };\n Component.prototype.detectFunction = function (args) {\n var prop = Object.keys(args);\n if (prop.length) {\n this[prop[0]] = args[prop[0]];\n }\n };\n Component.prototype.mergePersistData = function () {\n var data;\n if (versionBasedStatePersistence) {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id + this.ej2StatePersistenceVersion);\n }\n else {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n }\n if (!(isNullOrUndefined(data) || (data === ''))) {\n this.setProperties(JSON.parse(data), true);\n }\n };\n Component.prototype.setPersistData = function () {\n if (!this.isDestroyed) {\n if (versionBasedStatePersistence) {\n window.localStorage.setItem(this.getModuleName() +\n this.element.id + this.ej2StatePersistenceVersion, this.getPersistData());\n }\n else {\n window.localStorage.setItem(this.getModuleName() + this.element.id, this.getPersistData());\n }\n }\n };\n Component.prototype.renderReactTemplates = function (callback) {\n if (!isNullOrUndefined(callback)) {\n callback();\n }\n };\n Component.prototype.clearTemplate = function (templateName, index) {\n //No Code\n };\n Component.prototype.getUniqueID = function (definedName) {\n if (this.isHistoryChanged()) {\n componentCount = 0;\n }\n lastPageID = this.pageID(location.href);\n lastHistoryLen = history.length;\n return definedName + '_' + lastPageID + '_' + componentCount++;\n };\n Component.prototype.pageID = function (url) {\n var hash = 0;\n if (url.length === 0) {\n return hash;\n }\n for (var i = 0; i < url.length; i++) {\n var char = url.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash = hash & hash; // Convert to 32bit integer\n }\n return Math.abs(hash);\n };\n Component.prototype.isHistoryChanged = function () {\n return lastPageID !== this.pageID(location.href) || lastHistoryLen !== history.length;\n };\n Component.prototype.addOnPersist = function (options) {\n var _this = this;\n var persistObj = {};\n for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {\n var key = options_1[_i];\n var objValue = getValue(key, this);\n if (!isUndefined(objValue)) {\n setValue(key, this.getActualProperties(objValue), persistObj);\n }\n }\n return JSON.stringify(persistObj, function (key, value) {\n return _this.getActualProperties(value);\n });\n };\n Component.prototype.getActualProperties = function (obj) {\n if (obj instanceof ChildProperty) {\n return getValue('properties', obj);\n }\n else {\n return obj;\n }\n };\n Component.prototype.ignoreOnPersist = function (options) {\n return JSON.stringify(this.iterateJsonProperties(this.properties, options));\n };\n Component.prototype.iterateJsonProperties = function (obj, ignoreList) {\n var newObj = {};\n var _loop_1 = function (key) {\n if (ignoreList.indexOf(key) === -1) {\n var value = obj[\"\" + key];\n if (typeof value === 'object' && !(value instanceof Array)) {\n var newList = ignoreList.filter(function (str) {\n var regExp = RegExp;\n return new regExp(key + '.').test(str);\n }).map(function (str) {\n return str.replace(key + '.', '');\n });\n newObj[\"\" + key] = this_1.iterateJsonProperties(this_1.getActualProperties(value), newList);\n }\n else {\n newObj[\"\" + key] = value;\n }\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\n var key = _a[_i];\n _loop_1(key);\n }\n return newObj;\n };\n __decorate([\n Property(false)\n ], Component.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"enableRtl\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"locale\", void 0);\n Component = __decorate([\n NotifyPropertyChanges\n ], Component);\n return Component;\n}(Base));\nexport { Component };\n//Function handling for page navigation detection\n/* istanbul ignore next */\n(function () {\n if (typeof window !== 'undefined') {\n window.addEventListener('popstate', \n /* istanbul ignore next */\n function () {\n componentCount = 0;\n });\n }\n})();\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible } from './dom';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { ChildProperty } from './child-property';\nimport { select, closest, setStyleAttribute, addClass, createElement } from './dom';\nimport { extend, isUndefined, isNullOrUndefined, compareElementParent, isBlazor } from './util';\nvar defaultPosition = { left: 0, top: 0, bottom: 0, right: 0 };\nvar isDraggedObject = { isDragged: false };\n/**\n * Specifies the position coordinates\n */\nvar Position = /** @class */ (function (_super) {\n __extends(Position, _super);\n function Position() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Position.prototype, \"left\", void 0);\n __decorate([\n Property(0)\n ], Position.prototype, \"top\", void 0);\n return Position;\n}(ChildProperty));\nexport { Position };\n/**\n * Draggable Module provides support to enable draggable functionality in Dom Elements.\n * ```html\n *
Draggable
\n * \n * ```\n */\nvar Draggable = /** @class */ (function (_super) {\n __extends(Draggable, _super);\n function Draggable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.dragLimit = Draggable_1.getDefaultPosition();\n _this.borderWidth = Draggable_1.getDefaultPosition();\n _this.padding = Draggable_1.getDefaultPosition();\n _this.diffX = 0;\n _this.prevLeft = 0;\n _this.prevTop = 0;\n _this.dragProcessStarted = false;\n _this.eleTop = 0;\n _this.tapHoldTimer = 0;\n _this.externalInitialize = false;\n _this.diffY = 0;\n _this.parentScrollX = 0;\n _this.parentScrollY = 0;\n _this.droppables = {};\n _this.bind();\n return _this;\n }\n Draggable_1 = Draggable;\n Draggable.prototype.bind = function () {\n this.toggleEvents();\n if (Browser.isIE) {\n addClass([this.element], 'e-block-touch');\n }\n this.droppables[this.scope] = {};\n };\n Draggable.getDefaultPosition = function () {\n return extend({}, defaultPosition);\n };\n Draggable.prototype.toggleEvents = function (isUnWire) {\n var ele;\n if (!isUndefined(this.handle)) {\n ele = select(this.handle, this.element);\n }\n var handler = (this.enableTapHold && Browser.isDevice && Browser.isTouch) ? this.mobileInitialize : this.initialize;\n if (isUnWire) {\n EventHandler.remove(ele || this.element, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, handler);\n }\n else {\n EventHandler.add(ele || this.element, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, handler, this);\n }\n };\n /* istanbul ignore next */\n Draggable.prototype.mobileInitialize = function (evt) {\n var _this = this;\n var target = evt.currentTarget;\n this.tapHoldTimer = setTimeout(function () {\n _this.externalInitialize = true;\n _this.removeTapholdTimer();\n _this.initialize(evt, target);\n }, this.tapHoldThreshold);\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.removeTapholdTimer, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.removeTapholdTimer, this);\n };\n /* istanbul ignore next */\n Draggable.prototype.removeTapholdTimer = function () {\n clearTimeout(this.tapHoldTimer);\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.removeTapholdTimer);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.removeTapholdTimer);\n };\n /* istanbul ignore next */\n Draggable.prototype.getScrollableParent = function (element, axis) {\n var scroll = { 'vertical': 'scrollHeight', 'horizontal': 'scrollWidth' };\n var client = { 'vertical': 'clientHeight', 'horizontal': 'clientWidth' };\n if (isNullOrUndefined(element)) {\n return null;\n }\n if (element[scroll[\"\" + axis]] > element[client[\"\" + axis]]) {\n if (axis === 'vertical' ? element.scrollTop > 0 : element.scrollLeft > 0) {\n if (axis === 'vertical') {\n this.parentScrollY = this.parentScrollY +\n (this.parentScrollY === 0 ? element.scrollTop : element.scrollTop - this.parentScrollY);\n this.tempScrollHeight = element.scrollHeight;\n }\n else {\n this.parentScrollX = this.parentScrollX +\n (this.parentScrollX === 0 ? element.scrollLeft : element.scrollLeft - this.parentScrollX);\n this.tempScrollWidth = element.scrollWidth;\n }\n if (!isNullOrUndefined(element)) {\n return this.getScrollableParent(element.parentNode, axis);\n }\n else {\n return element;\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n };\n Draggable.prototype.getScrollableValues = function () {\n this.parentScrollX = 0;\n this.parentScrollY = 0;\n var isModalDialog = this.element.classList.contains('e-dialog') && this.element.classList.contains('e-dlg-modal');\n var verticalScrollParent = this.getScrollableParent(this.element.parentNode, 'vertical');\n var horizontalScrollParent = this.getScrollableParent(this.element.parentNode, 'horizontal');\n };\n Draggable.prototype.initialize = function (evt, curTarget) {\n this.currentStateTarget = evt.target;\n if (this.isDragStarted()) {\n return;\n }\n else {\n this.isDragStarted(true);\n this.externalInitialize = false;\n }\n this.target = (evt.currentTarget || curTarget);\n this.dragProcessStarted = false;\n if (this.abort) {\n var abortSelectors = this.abort;\n if (typeof abortSelectors === 'string') {\n abortSelectors = [abortSelectors];\n }\n for (var i = 0; i < abortSelectors.length; i++) {\n if (!isNullOrUndefined(closest(evt.target, abortSelectors[parseInt(i.toString(), 10)]))) {\n /* istanbul ignore next */\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n return;\n }\n }\n }\n if (this.preventDefault && !isUndefined(evt.changedTouches) && evt.type !== 'touchstart') {\n evt.preventDefault();\n }\n this.element.setAttribute('aria-grabbed', 'true');\n var intCoord = this.getCoordinates(evt);\n this.initialPosition = { x: intCoord.pageX, y: intCoord.pageY };\n if (!this.clone) {\n var pos = this.element.getBoundingClientRect();\n this.getScrollableValues();\n if (evt.clientX === evt.pageX) {\n this.parentScrollX = 0;\n }\n if (evt.clientY === evt.pageY) {\n this.parentScrollY = 0;\n }\n this.relativeXPosition = intCoord.pageX - (pos.left + this.parentScrollX);\n this.relativeYPosition = intCoord.pageY - (pos.top + this.parentScrollY);\n }\n if (this.externalInitialize) {\n this.intDragStart(evt);\n }\n else {\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy, this);\n }\n this.toggleEvents(true);\n if (evt.type !== 'touchstart' && this.isPreventSelect) {\n document.body.classList.add('e-prevent-select');\n }\n this.externalInitialize = false;\n EventHandler.trigger(document.documentElement, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, evt);\n };\n Draggable.prototype.intDragStart = function (evt) {\n this.removeTapholdTimer();\n var isChangeTouch = !isUndefined(evt.changedTouches);\n if (isChangeTouch && (evt.changedTouches.length !== 1)) {\n return;\n }\n var intCordinate = this.getCoordinates(evt);\n var pos;\n var styleProp = getComputedStyle(this.element);\n this.margin = {\n left: parseInt(styleProp.marginLeft, 10),\n top: parseInt(styleProp.marginTop, 10),\n right: parseInt(styleProp.marginRight, 10),\n bottom: parseInt(styleProp.marginBottom, 10)\n };\n var element = this.element;\n if (this.clone && this.dragTarget) {\n var intClosest = closest(evt.target, this.dragTarget);\n if (!isNullOrUndefined(intClosest)) {\n element = intClosest;\n }\n }\n /* istanbul ignore next */\n if (this.isReplaceDragEle) {\n element = this.currentStateCheck(evt.target, element);\n }\n this.offset = this.calculateParentPosition(element);\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var x = this.initialPosition.x - intCordinate.pageX;\n var y = this.initialPosition.y - intCordinate.pageY;\n var distance = Math.sqrt((x * x) + (y * y));\n if ((distance >= this.distance || this.externalInitialize)) {\n var ele = this.getHelperElement(evt);\n if (!ele || isNullOrUndefined(ele)) {\n return;\n }\n if (isChangeTouch) {\n evt.preventDefault();\n }\n var dragTargetElement = this.helperElement = ele;\n this.parentClientRect = this.calculateParentPosition(dragTargetElement.offsetParent);\n if (this.dragStart) {\n var curTarget = this.getProperTargetElement(evt);\n var args = {\n event: evt,\n element: element,\n target: curTarget,\n bindEvents: isBlazor() ? this.bindDragEvents.bind(this) : null,\n dragElement: dragTargetElement\n };\n this.trigger('dragStart', args);\n }\n if (this.dragArea) {\n this.setDragArea();\n }\n else {\n this.dragLimit = { left: 0, right: 0, bottom: 0, top: 0 };\n this.borderWidth = { top: 0, left: 0 };\n }\n pos = { left: this.position.left - this.parentClientRect.left, top: this.position.top - this.parentClientRect.top };\n if (this.clone && !this.enableTailMode) {\n this.diffX = this.position.left - this.offset.left;\n this.diffY = this.position.top - this.offset.top;\n }\n this.getScrollableValues();\n // when drag element has margin-top\n var styles = getComputedStyle(element);\n var marginTop = parseFloat(styles.marginTop);\n /* istanbul ignore next */\n if (this.clone && marginTop !== 0) {\n pos.top += marginTop;\n }\n this.eleTop = !isNaN(parseFloat(styles.top)) ? parseFloat(styles.top) - this.offset.top : 0;\n /* istanbul ignore next */\n // if (this.eleTop > 0) {\n // pos.top += this.eleTop;\n // }\n if (this.enableScrollHandler && !this.clone) {\n pos.top -= this.parentScrollY;\n pos.left -= this.parentScrollX;\n }\n var posValue = this.getProcessedPositionValue({\n top: (pos.top - this.diffY) + 'px',\n left: (pos.left - this.diffX) + 'px'\n });\n if (this.dragArea && typeof this.dragArea !== 'string' && this.dragArea.classList.contains('e-kanban-content') && this.dragArea.style.position === 'relative') {\n pos.top += this.dragArea.scrollTop;\n }\n this.dragElePosition = { top: pos.top, left: pos.left };\n setStyleAttribute(dragTargetElement, this.getDragPosition({ position: 'absolute', left: posValue.left, top: posValue.top }));\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy);\n if (!isBlazor()) {\n this.bindDragEvents(dragTargetElement);\n }\n }\n };\n Draggable.prototype.bindDragEvents = function (dragTargetElement) {\n if (isVisible(dragTargetElement)) {\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDrag, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDragStop, this);\n this.setGlobalDroppables(false, this.element, dragTargetElement);\n }\n else {\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n }\n };\n Draggable.prototype.elementInViewport = function (el) {\n this.top = el.offsetTop;\n this.left = el.offsetLeft;\n this.width = el.offsetWidth;\n this.height = el.offsetHeight;\n while (el.offsetParent) {\n el = el.offsetParent;\n this.top += el.offsetTop;\n this.left += el.offsetLeft;\n }\n return (this.top >= window.pageYOffset &&\n this.left >= window.pageXOffset &&\n (this.top + this.height) <= (window.pageYOffset + window.innerHeight) &&\n (this.left + this.width) <= (window.pageXOffset + window.innerWidth));\n };\n Draggable.prototype.getProcessedPositionValue = function (value) {\n if (this.queryPositionInfo) {\n return this.queryPositionInfo(value);\n }\n return value;\n };\n Draggable.prototype.calculateParentPosition = function (ele) {\n if (isNullOrUndefined(ele)) {\n return { left: 0, top: 0 };\n }\n var rect = ele.getBoundingClientRect();\n var style = getComputedStyle(ele);\n return {\n left: (rect.left + window.pageXOffset) - parseInt(style.marginLeft, 10),\n top: (rect.top + window.pageYOffset) - parseInt(style.marginTop, 10)\n };\n };\n Draggable.prototype.intDrag = function (evt) {\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n if (this.clone && evt.changedTouches && Browser.isDevice && Browser.isTouch) {\n evt.preventDefault();\n }\n var left;\n var top;\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var docHeight = this.getDocumentWidthHeight('Height');\n if (docHeight < this.position.top) {\n this.position.top = docHeight;\n }\n var docWidth = this.getDocumentWidthHeight('Width');\n if (docWidth < this.position.left) {\n this.position.left = docWidth;\n }\n if (this.drag) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('drag', { event: evt, element: this.element, target: curTarget });\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n var flag = true;\n if (this.hoverObject) {\n if (this.hoverObject.instance !== eleObj.instance) {\n this.triggerOutFunction(evt, eleObj);\n }\n else {\n flag = false;\n }\n }\n if (flag) {\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intOver(evt, eleObj.target);\n this.hoverObject = eleObj;\n }\n }\n else if (this.hoverObject) {\n this.triggerOutFunction(evt, eleObj);\n }\n var helperElement = this.droppables[this.scope].helper;\n this.parentClientRect = this.calculateParentPosition(this.helperElement.offsetParent);\n var tLeft = this.parentClientRect.left;\n var tTop = this.parentClientRect.top;\n var intCoord = this.getCoordinates(evt);\n var pagex = intCoord.pageX;\n var pagey = intCoord.pageY;\n var dLeft = this.position.left - this.diffX;\n var dTop = this.position.top - this.diffY;\n var styles = getComputedStyle(helperElement);\n if (this.dragArea) {\n if (this.enableAutoScroll) {\n this.setDragArea();\n }\n if (this.pageX !== pagex || this.skipDistanceCheck) {\n var helperWidth = helperElement.offsetWidth + (parseFloat(styles.marginLeft)\n + parseFloat(styles.marginRight));\n if (this.dragLimit.left > dLeft && dLeft > 0) {\n left = this.dragLimit.left;\n }\n else if (this.dragLimit.right + window.pageXOffset < dLeft + helperWidth && dLeft > 0) {\n left = dLeft - (dLeft - this.dragLimit.right) + window.pageXOffset - helperWidth;\n }\n else {\n left = dLeft < 0 ? this.dragLimit.left : dLeft;\n }\n }\n if (this.pageY !== pagey || this.skipDistanceCheck) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)\n + parseFloat(styles.marginBottom));\n if (this.dragLimit.top > dTop && dTop > 0) {\n top = this.dragLimit.top;\n }\n else if (this.dragLimit.bottom + window.pageYOffset < dTop + helperHeight && dTop > 0) {\n top = dTop - (dTop - this.dragLimit.bottom) + window.pageYOffset - helperHeight;\n }\n else {\n top = dTop < 0 ? this.dragLimit.top : dTop;\n }\n }\n }\n else {\n left = dLeft;\n top = dTop;\n }\n var iTop = tTop + this.borderWidth.top;\n var iLeft = tLeft + this.borderWidth.left;\n if (this.dragProcessStarted) {\n if (isNullOrUndefined(top)) {\n top = this.prevTop;\n }\n if (isNullOrUndefined(left)) {\n left = this.prevLeft;\n }\n }\n var draEleTop;\n var draEleLeft;\n if (this.helperElement.classList.contains('e-treeview')) {\n if (this.dragArea) {\n this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - this.borderWidth.top);\n draEleLeft = (left - iLeft) < 0 ? this.dragLimit.left : (left - this.borderWidth.left);\n }\n else {\n draEleTop = top - this.borderWidth.top;\n draEleLeft = left - this.borderWidth.left;\n }\n }\n else {\n if (this.dragArea) {\n var isDialogEle = this.helperElement.classList.contains('e-dialog');\n this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - iTop);\n draEleLeft = (left - iLeft) < 0 ? isDialogEle ? (left - (iLeft - this.borderWidth.left)) :\n this.dragElePosition.left : (left - iLeft);\n }\n else {\n draEleTop = top - iTop;\n draEleLeft = left - iLeft;\n }\n }\n var marginTop = parseFloat(getComputedStyle(this.element).marginTop);\n // when drag-element has margin-top\n /* istanbul ignore next */\n if (marginTop > 0) {\n if (this.clone) {\n draEleTop += marginTop;\n if (dTop < 0) {\n if ((marginTop + dTop) >= 0) {\n draEleTop = marginTop + dTop;\n }\n else {\n draEleTop -= marginTop;\n }\n }\n if (this.dragArea) {\n draEleTop = (this.dragLimit.bottom < draEleTop) ? this.dragLimit.bottom : draEleTop;\n }\n }\n if ((top - iTop) < 0) {\n if (dTop + marginTop + (helperElement.offsetHeight - iTop) >= 0) {\n var tempDraEleTop = this.dragLimit.top + dTop - iTop;\n if ((tempDraEleTop + marginTop + iTop) < 0) {\n draEleTop -= marginTop + iTop;\n }\n else {\n draEleTop = tempDraEleTop;\n }\n }\n else {\n draEleTop -= marginTop + iTop;\n }\n }\n }\n if (this.dragArea && this.helperElement.classList.contains('e-treeview')) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)\n + parseFloat(styles.marginBottom));\n draEleTop = (draEleTop + helperHeight) > this.dragLimit.bottom ? (this.dragLimit.bottom - helperHeight) : draEleTop;\n }\n /* istanbul ignore next */\n // if(this.eleTop > 0) {\n // draEleTop += this.eleTop;\n // }\n if (this.enableScrollHandler && !this.clone) {\n draEleTop -= this.parentScrollY;\n draEleLeft -= this.parentScrollX;\n }\n if (this.dragArea && typeof this.dragArea !== 'string' && this.dragArea.classList.contains('e-kanban-content') && this.dragArea.style.position === 'relative') {\n draEleTop += this.dragArea.scrollTop;\n }\n var dragValue = this.getProcessedPositionValue({ top: draEleTop + 'px', left: draEleLeft + 'px' });\n setStyleAttribute(helperElement, this.getDragPosition(dragValue));\n if (!this.elementInViewport(helperElement) && this.enableAutoScroll && !this.helperElement.classList.contains('e-treeview')) {\n this.helperElement.scrollIntoView();\n }\n var elements = document.querySelectorAll(':hover');\n if (this.enableAutoScroll && this.helperElement.classList.contains('e-treeview')) {\n if (elements.length === 0) {\n elements = this.getPathElements(evt);\n }\n var scrollParent = this.getScrollParent(elements, false);\n if (this.elementInViewport(this.helperElement)) {\n this.getScrollPosition(scrollParent, draEleTop);\n }\n else if (!this.elementInViewport(this.helperElement)) {\n elements = [].slice.call(document.querySelectorAll(':hover'));\n if (elements.length === 0) {\n elements = this.getPathElements(evt);\n }\n scrollParent = this.getScrollParent(elements, true);\n this.getScrollPosition(scrollParent, draEleTop);\n }\n }\n this.dragProcessStarted = true;\n this.prevLeft = left;\n this.prevTop = top;\n this.position.left = left;\n this.position.top = top;\n this.pageX = pagex;\n this.pageY = pagey;\n };\n Draggable.prototype.getScrollParent = function (node, reverse) {\n var nodeEl = reverse ? node.reverse() : node;\n var hasScroll;\n for (var i = nodeEl.length - 1; i >= 0; i--) {\n hasScroll = window.getComputedStyle(nodeEl[parseInt(i.toString(), 10)])['overflow-y'];\n if ((hasScroll === 'auto' || hasScroll === 'scroll')\n && nodeEl[parseInt(i.toString(), 10)].scrollHeight > nodeEl[parseInt(i.toString(), 10)].clientHeight) {\n return nodeEl[parseInt(i.toString(), 10)];\n }\n }\n hasScroll = window.getComputedStyle(document.scrollingElement)['overflow-y'];\n if (hasScroll === 'visible') {\n document.scrollingElement.style.overflow = 'auto';\n return document.scrollingElement;\n }\n };\n Draggable.prototype.getScrollPosition = function (nodeEle, draEleTop) {\n if (nodeEle && nodeEle === document.scrollingElement) {\n if ((nodeEle.clientHeight + document.scrollingElement.scrollTop - this.helperElement.clientHeight) < draEleTop\n && nodeEle.getBoundingClientRect().height + this.parentClientRect.top > draEleTop) {\n nodeEle.scrollTop += this.helperElement.clientHeight;\n }\n else if (nodeEle.scrollTop > draEleTop - this.helperElement.clientHeight) {\n nodeEle.scrollTop -= this.helperElement.clientHeight;\n }\n }\n else if (nodeEle && nodeEle !== document.scrollingElement) {\n var docScrollTop = document.scrollingElement.scrollTop;\n var helperClientHeight = this.helperElement.clientHeight;\n if ((nodeEle.clientHeight + nodeEle.getBoundingClientRect().top - helperClientHeight + docScrollTop) < draEleTop) {\n nodeEle.scrollTop += this.helperElement.clientHeight;\n }\n else if (nodeEle.getBoundingClientRect().top > (draEleTop - helperClientHeight - docScrollTop)) {\n nodeEle.scrollTop -= this.helperElement.clientHeight;\n }\n }\n };\n Draggable.prototype.getPathElements = function (evt) {\n var elementTop = evt.clientX > 0 ? evt.clientX : 0;\n var elementLeft = evt.clientY > 0 ? evt.clientY : 0;\n return document.elementsFromPoint(elementTop, elementLeft);\n };\n Draggable.prototype.triggerOutFunction = function (evt, eleObj) {\n this.hoverObject.instance.intOut(evt, eleObj.target);\n this.hoverObject.instance.dragData[this.scope] = null;\n this.hoverObject = null;\n };\n Draggable.prototype.getDragPosition = function (dragValue) {\n var temp = extend({}, dragValue);\n if (this.axis) {\n if (this.axis === 'x') {\n delete temp.top;\n }\n else if (this.axis === 'y') {\n delete temp.left;\n }\n }\n return temp;\n };\n Draggable.prototype.getDocumentWidthHeight = function (str) {\n var docBody = document.body;\n var docEle = document.documentElement;\n var returnValue = Math.max(docBody['scroll' + str], docEle['scroll' + str], docBody['offset' + str], docEle['offset' + str], docEle['client' + str]);\n return returnValue;\n };\n Draggable.prototype.intDragStop = function (evt) {\n this.dragProcessStarted = false;\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n var type = ['touchend', 'pointerup', 'mouseup'];\n if (type.indexOf(evt.type) !== -1) {\n if (this.dragStop) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('dragStop', { event: evt, element: this.element, target: curTarget, helper: this.helperElement });\n }\n this.intDestroy(evt);\n }\n else {\n this.element.setAttribute('aria-grabbed', 'false');\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n eleObj.instance.dragStopCalled = true;\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intDrop(evt, eleObj.target);\n }\n this.setGlobalDroppables(true);\n document.body.classList.remove('e-prevent-select');\n };\n /**\n * @param {MouseEvent | TouchEvent} evt ?\n * @returns {void}\n * @private\n */\n Draggable.prototype.intDestroy = function (evt) {\n this.dragProcessStarted = false;\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n this.element.setAttribute('aria-grabbed', 'false');\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDragStop);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy);\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDrag);\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n };\n // triggers when property changed\n Draggable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Draggable.prototype.getModuleName = function () {\n return 'draggable';\n };\n Draggable.prototype.isDragStarted = function (change) {\n if (change) {\n isDraggedObject.isDragged = !isDraggedObject.isDragged;\n }\n return isDraggedObject.isDragged;\n };\n Draggable.prototype.setDragArea = function () {\n var eleWidthBound;\n var eleHeightBound;\n var top = 0;\n var left = 0;\n var ele;\n var type = typeof this.dragArea;\n if (type === 'string') {\n ele = select(this.dragArea);\n }\n else {\n ele = this.dragArea;\n }\n if (ele) {\n var elementArea = ele.getBoundingClientRect();\n eleWidthBound = ele.scrollWidth ? ele.scrollWidth : elementArea.right - elementArea.left;\n eleHeightBound = ele.scrollHeight ? (this.dragArea && !isNullOrUndefined(this.helperElement) && this.helperElement.classList.contains('e-treeview')) ? ele.clientHeight : ele.scrollHeight : elementArea.bottom - elementArea.top;\n var keys = ['Top', 'Left', 'Bottom', 'Right'];\n var styles = getComputedStyle(ele);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[parseInt(i.toString(), 10)];\n var tborder = styles['border' + key + 'Width'];\n var tpadding = styles['padding' + key];\n var lowerKey = key.toLowerCase();\n this.borderWidth[\"\" + lowerKey] = isNaN(parseFloat(tborder)) ? 0 : parseFloat(tborder);\n this.padding[\"\" + lowerKey] = isNaN(parseFloat(tpadding)) ? 0 : parseFloat(tpadding);\n }\n if (this.dragArea && !isNullOrUndefined(this.helperElement) && this.helperElement.classList.contains('e-treeview')) {\n top = elementArea.top + document.scrollingElement.scrollTop;\n }\n else {\n top = elementArea.top;\n }\n left = elementArea.left;\n this.dragLimit.left = left + this.borderWidth.left + this.padding.left;\n this.dragLimit.top = ele.offsetTop + this.borderWidth.top + this.padding.top;\n this.dragLimit.right = left + eleWidthBound - (this.borderWidth.right + this.padding.right);\n this.dragLimit.bottom = top + eleHeightBound - (this.borderWidth.bottom + this.padding.bottom);\n }\n };\n Draggable.prototype.getProperTargetElement = function (evt) {\n var intCoord = this.getCoordinates(evt);\n var ele;\n var prevStyle = this.helperElement.style.pointerEvents || '';\n var isPointer = evt.type.indexOf('pointer') !== -1 && Browser.info.name === 'safari' && parseInt(Browser.info.version, 10) > 12;\n if (compareElementParent(evt.target, this.helperElement) || evt.type.indexOf('touch') !== -1 || isPointer) {\n this.helperElement.style.pointerEvents = 'none';\n ele = document.elementFromPoint(intCoord.clientX, intCoord.clientY);\n this.helperElement.style.pointerEvents = prevStyle;\n }\n else {\n ele = evt.target;\n }\n return ele;\n };\n /* istanbul ignore next */\n Draggable.prototype.currentStateCheck = function (ele, oldEle) {\n var elem;\n if (!isNullOrUndefined(this.currentStateTarget) && this.currentStateTarget !== ele) {\n elem = this.currentStateTarget;\n }\n else {\n elem = !isNullOrUndefined(oldEle) ? oldEle : ele;\n }\n return elem;\n };\n Draggable.prototype.getMousePosition = function (evt, isdragscroll) {\n var dragEle = evt.srcElement !== undefined ? evt.srcElement : evt.target;\n var intCoord = this.getCoordinates(evt);\n var pageX;\n var pageY;\n var isOffsetParent = isNullOrUndefined(dragEle.offsetParent);\n /* istanbul ignore next */\n if (isdragscroll) {\n pageX = this.clone ? intCoord.pageX :\n (intCoord.pageX + (isOffsetParent ? 0 : dragEle.offsetParent.scrollLeft)) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY :\n (intCoord.pageY + (isOffsetParent ? 0 : dragEle.offsetParent.scrollTop)) - this.relativeYPosition;\n }\n else {\n pageX = this.clone ? intCoord.pageX : (intCoord.pageX + window.pageXOffset) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY : (intCoord.pageY + window.pageYOffset) - this.relativeYPosition;\n }\n if (document.scrollingElement && (!isdragscroll && !this.clone)) {\n var ele = document.scrollingElement;\n var isVerticalScroll = ele.scrollHeight > 0 && ele.scrollHeight > ele.clientHeight && ele.scrollTop > 0;\n var isHorrizontalScroll = ele.scrollWidth > 0 && ele.scrollWidth > ele.clientWidth && ele.scrollLeft > 0;\n pageX = isHorrizontalScroll ? pageX - ele.scrollLeft : pageX;\n pageY = isVerticalScroll ? pageY - ele.scrollTop : pageY;\n }\n return {\n left: pageX - (this.margin.left + this.cursorAt.left),\n top: pageY - (this.margin.top + this.cursorAt.top)\n };\n };\n Draggable.prototype.getCoordinates = function (evt) {\n if (evt.type.indexOf('touch') > -1) {\n return evt.changedTouches[0];\n }\n return evt;\n };\n Draggable.prototype.getHelperElement = function (evt) {\n var element;\n if (this.clone) {\n if (this.helper) {\n element = this.helper({ sender: evt, element: this.target });\n }\n else {\n element = createElement('div', { className: 'e-drag-helper e-block-touch', innerHTML: 'Draggable' });\n document.body.appendChild(element);\n }\n }\n else {\n element = this.element;\n }\n return element;\n };\n Draggable.prototype.setGlobalDroppables = function (reset, drag, helper) {\n this.droppables[this.scope] = reset ? null : {\n draggable: drag,\n helper: helper,\n draggedElement: this.element\n };\n };\n Draggable.prototype.checkTargetElement = function (evt) {\n var target = this.getProperTargetElement(evt);\n var dropIns = this.getDropInstance(target);\n if (!dropIns && target && !isNullOrUndefined(target.parentNode)) {\n var parent_1 = closest(target.parentNode, '.e-droppable') || target.parentElement;\n if (parent_1) {\n dropIns = this.getDropInstance(parent_1);\n }\n }\n return { target: target, instance: dropIns };\n };\n Draggable.prototype.getDropInstance = function (ele) {\n var name = 'getModuleName';\n var drop;\n var eleInst = ele && ele.ej2_instances;\n if (eleInst) {\n for (var _i = 0, eleInst_1 = eleInst; _i < eleInst_1.length; _i++) {\n var inst = eleInst_1[_i];\n if (inst[\"\" + name]() === 'droppable') {\n drop = inst;\n break;\n }\n }\n }\n return drop;\n };\n Draggable.prototype.destroy = function () {\n this.toggleEvents(true);\n _super.prototype.destroy.call(this);\n };\n var Draggable_1;\n __decorate([\n Complex({}, Position)\n ], Draggable.prototype, \"cursorAt\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"clone\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"dragArea\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"isDragScroll\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"isReplaceDragEle\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"isPreventSelect\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"dragStop\", void 0);\n __decorate([\n Property(1)\n ], Draggable.prototype, \"distance\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"handle\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"abort\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"helper\", void 0);\n __decorate([\n Property('default')\n ], Draggable.prototype, \"scope\", void 0);\n __decorate([\n Property('')\n ], Draggable.prototype, \"dragTarget\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"axis\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"queryPositionInfo\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableTailMode\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"skipDistanceCheck\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"preventDefault\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableAutoScroll\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableTapHold\", void 0);\n __decorate([\n Property(750)\n ], Draggable.prototype, \"tapHoldThreshold\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableScrollHandler\", void 0);\n Draggable = Draggable_1 = __decorate([\n NotifyPropertyChanges\n ], Draggable);\n return Draggable;\n}(Base));\nexport { Draggable };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible, matches } from './dom';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { compareElementParent } from './util';\n/**\n * Droppable Module provides support to enable droppable functionality in Dom Elements.\n * ```html\n *
Droppable
\n * \n * ```\n */\nvar Droppable = /** @class */ (function (_super) {\n __extends(Droppable, _super);\n function Droppable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.mouseOver = false;\n _this.dragData = {};\n _this.dragStopCalled = false;\n _this.bind();\n return _this;\n }\n Droppable.prototype.bind = function () {\n this.wireEvents();\n };\n Droppable.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDrop, this);\n };\n // triggers when property changed\n Droppable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Droppable.prototype.getModuleName = function () {\n return 'droppable';\n };\n Droppable.prototype.intOver = function (event, element) {\n if (!this.mouseOver) {\n var drag = this.dragData[this.scope];\n this.trigger('over', { event: event, target: element, dragData: drag });\n this.mouseOver = true;\n }\n };\n Droppable.prototype.intOut = function (event, element) {\n if (this.mouseOver) {\n this.trigger('out', { evt: event, target: element });\n this.mouseOver = false;\n }\n };\n Droppable.prototype.intDrop = function (evt, element) {\n if (!this.dragStopCalled) {\n return;\n }\n else {\n this.dragStopCalled = false;\n }\n var accept = true;\n var drag = this.dragData[this.scope];\n var isDrag = drag ? (drag.helper && isVisible(drag.helper)) : false;\n var area;\n if (isDrag) {\n area = this.isDropArea(evt, drag.helper, element);\n if (this.accept) {\n accept = matches(drag.helper, this.accept);\n }\n }\n if (isDrag && this.drop && area.canDrop && accept) {\n this.trigger('drop', { event: evt, target: area.target, droppedElement: drag.helper, dragData: drag });\n }\n this.mouseOver = false;\n };\n Droppable.prototype.isDropArea = function (evt, helper, element) {\n var area = { canDrop: true, target: element || evt.target };\n var isTouch = evt.type === 'touchend';\n if (isTouch || area.target === helper) {\n helper.style.display = 'none';\n var coord = isTouch ? (evt.changedTouches[0]) : evt;\n var ele = document.elementFromPoint(coord.clientX, coord.clientY);\n area.canDrop = false;\n area.canDrop = compareElementParent(ele, this.element);\n if (area.canDrop) {\n area.target = ele;\n }\n helper.style.display = '';\n }\n return area;\n };\n Droppable.prototype.destroy = function () {\n EventHandler.remove(this.element, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDrop);\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Property()\n ], Droppable.prototype, \"accept\", void 0);\n __decorate([\n Property('default')\n ], Droppable.prototype, \"scope\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"drop\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"over\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"out\", void 0);\n Droppable = __decorate([\n NotifyPropertyChanges\n ], Droppable);\n return Droppable;\n}(Base));\nexport { Droppable };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Base } from './base';\nvar keyCode = {\n 'backspace': 8,\n 'tab': 9,\n 'enter': 13,\n 'shift': 16,\n 'control': 17,\n 'alt': 18,\n 'pause': 19,\n 'capslock': 20,\n 'space': 32,\n 'escape': 27,\n 'pageup': 33,\n 'pagedown': 34,\n 'end': 35,\n 'home': 36,\n 'leftarrow': 37,\n 'uparrow': 38,\n 'rightarrow': 39,\n 'downarrow': 40,\n 'insert': 45,\n 'delete': 46,\n 'f1': 112,\n 'f2': 113,\n 'f3': 114,\n 'f4': 115,\n 'f5': 116,\n 'f6': 117,\n 'f7': 118,\n 'f8': 119,\n 'f9': 120,\n 'f10': 121,\n 'f11': 122,\n 'f12': 123,\n 'semicolon': 186,\n 'plus': 187,\n 'comma': 188,\n 'minus': 189,\n 'dot': 190,\n 'forwardslash': 191,\n 'graveaccent': 192,\n 'openbracket': 219,\n 'backslash': 220,\n 'closebracket': 221,\n 'singlequote': 222\n};\n/**\n * KeyboardEvents class enables you to bind key action desired key combinations for ex., Ctrl+A, Delete, Alt+Space etc.\n * ```html\n *
;\n * \n * ```\n */\nvar KeyboardEvents = /** @class */ (function (_super) {\n __extends(KeyboardEvents, _super);\n /**\n * Initializes the KeyboardEvents\n *\n * @param {HTMLElement} element ?\n * @param {KeyboardEventsModel} options ?\n */\n function KeyboardEvents(element, options) {\n var _this = _super.call(this, options, element) || this;\n /**\n * To handle a key press event returns null\n *\n * @param {KeyboardEventArgs} e ?\n * @returns {void} ?\n */\n _this.keyPressHandler = function (e) {\n var isAltKey = e.altKey;\n var isCtrlKey = e.ctrlKey;\n var isShiftKey = e.shiftKey;\n var curkeyCode = e.which;\n var keys = Object.keys(_this.keyConfigs);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n var configCollection = _this.keyConfigs[\"\" + key].split(',');\n for (var _a = 0, configCollection_1 = configCollection; _a < configCollection_1.length; _a++) {\n var rconfig = configCollection_1[_a];\n var rKeyObj = KeyboardEvents_1.getKeyConfigData(rconfig.trim());\n if (isAltKey === rKeyObj.altKey && isCtrlKey === rKeyObj.ctrlKey &&\n isShiftKey === rKeyObj.shiftKey && curkeyCode === rKeyObj.keyCode) {\n e.action = key;\n if (_this.keyAction) {\n _this.keyAction(e);\n }\n }\n }\n }\n };\n _this.bind();\n return _this;\n }\n KeyboardEvents_1 = KeyboardEvents;\n /**\n * Unwire bound events and destroy the instance.\n *\n * @returns {void} ?\n */\n KeyboardEvents.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n /**\n * Function can be used to specify certain action if a property is changed\n *\n * @param {KeyboardEventsModel} newProp ?\n * @param {KeyboardEventsModel} oldProp ?\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.onPropertyChanged = function (newProp, oldProp) {\n // No code are needed\n };\n KeyboardEvents.prototype.bind = function () {\n this.wireEvents();\n };\n /**\n * To get the module name, returns 'keyboard'.\n *\n * @returns {string} ?\n * @private\n */\n KeyboardEvents.prototype.getModuleName = function () {\n return 'keyboard';\n };\n /**\n * Wiring event handlers to events\n *\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.wireEvents = function () {\n this.element.addEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * Unwiring event handlers to events\n *\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.unwireEvents = function () {\n this.element.removeEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * To get the key configuration data\n *\n * @param {string} config - configuration data\n * @returns {KeyData} ?\n */\n KeyboardEvents.getKeyConfigData = function (config) {\n if (config in this.configCache) {\n return this.configCache[\"\" + config];\n }\n var keys = config.toLowerCase().split('+');\n var keyData = {\n altKey: (keys.indexOf('alt') !== -1 ? true : false),\n ctrlKey: (keys.indexOf('ctrl') !== -1 ? true : false),\n shiftKey: (keys.indexOf('shift') !== -1 ? true : false),\n keyCode: null\n };\n if (keys[keys.length - 1].length > 1 && !!Number(keys[keys.length - 1])) {\n keyData.keyCode = Number(keys[keys.length - 1]);\n }\n else {\n keyData.keyCode = KeyboardEvents_1.getKeyCode(keys[keys.length - 1]);\n }\n KeyboardEvents_1.configCache[\"\" + config] = keyData;\n return keyData;\n };\n // Return the keycode value as string\n KeyboardEvents.getKeyCode = function (keyVal) {\n return keyCode[\"\" + keyVal] || keyVal.toUpperCase().charCodeAt(0);\n };\n var KeyboardEvents_1;\n KeyboardEvents.configCache = {};\n __decorate([\n Property({})\n ], KeyboardEvents.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property('keyup')\n ], KeyboardEvents.prototype, \"eventName\", void 0);\n __decorate([\n Event()\n ], KeyboardEvents.prototype, \"keyAction\", void 0);\n KeyboardEvents = KeyboardEvents_1 = __decorate([\n NotifyPropertyChanges\n ], KeyboardEvents);\n return KeyboardEvents;\n}(Base));\nexport { KeyboardEvents };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { extend } from './util';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Browser } from './browser';\nimport { Base } from './base';\nimport { ChildProperty } from './child-property';\nimport { EventHandler } from './event-handler';\n/**\n * SwipeSettings is a framework module that provides support to handle swipe event like swipe up, swipe right, etc..,\n */\nvar SwipeSettings = /** @class */ (function (_super) {\n __extends(SwipeSettings, _super);\n function SwipeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(50)\n ], SwipeSettings.prototype, \"swipeThresholdDistance\", void 0);\n return SwipeSettings;\n}(ChildProperty));\nexport { SwipeSettings };\nvar swipeRegex = /(Up|Down)/;\n/**\n * Touch class provides support to handle the touch event like tap, double tap, tap hold, etc..,\n * ```typescript\n * let node: HTMLElement;\n * let touchObj: Touch = new Touch({\n * element: node,\n * tap: function (e) {\n * // tap handler function code\n * }\n * tapHold: function (e) {\n * // tap hold handler function code\n * }\n * scroll: function (e) {\n * // scroll handler function code\n * }\n * swipe: function (e) {\n * // swipe handler function code\n * }\n * });\n * ```\n */\nvar Touch = /** @class */ (function (_super) {\n __extends(Touch, _super);\n /* End-Properties */\n function Touch(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.touchAction = true;\n _this.tapCount = 0;\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.startEvent = function (evt) {\n if (_this.touchAction === true) {\n var point = _this.updateChangeTouches(evt);\n if (evt.changedTouches !== undefined) {\n _this.touchAction = false;\n }\n _this.isTouchMoved = false;\n _this.movedDirection = '';\n _this.startPoint = _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n _this.startEventData = point;\n _this.hScrollLocked = _this.vScrollLocked = false;\n _this.tStampStart = Date.now();\n _this.timeOutTapHold = setTimeout(function () { _this.tapHoldEvent(evt); }, _this.tapHoldThreshold);\n EventHandler.add(_this.element, Browser.touchMoveEvent, _this.moveEvent, _this);\n EventHandler.add(_this.element, Browser.touchEndEvent, _this.endEvent, _this);\n EventHandler.add(_this.element, Browser.touchCancelEvent, _this.cancelEvent, _this);\n }\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.moveEvent = function (evt) {\n var point = _this.updateChangeTouches(evt);\n _this.movedPoint = point;\n _this.isTouchMoved = !(point.clientX === _this.startPoint.clientX && point.clientY === _this.startPoint.clientY);\n var eScrollArgs = {};\n if (_this.isTouchMoved) {\n clearTimeout(_this.timeOutTapHold);\n _this.calcScrollPoints(evt);\n var scrollArg = {\n startEvents: _this.startEventData,\n originalEvent: evt, startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY, distanceX: _this.distanceX,\n distanceY: _this.distanceY, scrollDirection: _this.scrollDirection,\n velocity: _this.getVelocity(point)\n };\n eScrollArgs = extend(eScrollArgs, {}, scrollArg);\n _this.trigger('scroll', eScrollArgs);\n _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n }\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.cancelEvent = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n _this.tapCount = 0;\n _this.swipeFn(evt);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.endEvent = function (evt) {\n _this.swipeFn(evt);\n if (!_this.isTouchMoved) {\n if (typeof _this.tap === 'function') {\n _this.trigger('tap', { originalEvent: evt, tapCount: ++_this.tapCount });\n _this.timeOutTap = setTimeout(function () {\n _this.tapCount = 0;\n }, _this.tapThreshold);\n }\n }\n _this.modeclear();\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.swipeFn = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n var point = _this.updateChangeTouches(evt);\n var diffX = point.clientX - _this.startPoint.clientX;\n var diffY = point.clientY - _this.startPoint.clientY;\n diffX = Math.floor(diffX < 0 ? -1 * diffX : diffX);\n diffY = Math.floor(diffY < 0 ? -1 * diffY : diffX);\n _this.isTouchMoved = diffX > 1 || diffY > 1;\n var isFirefox = (/Firefox/).test(Browser.userAgent);\n if (isFirefox && point.clientX === 0 && point.clientY === 0 && evt.type === 'mouseup') {\n _this.isTouchMoved = false;\n }\n _this.endPoint = point;\n _this.calcPoints(evt);\n var swipeArgs = {\n originalEvent: evt,\n startEvents: _this.startEventData,\n startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY,\n distanceX: _this.distanceX, distanceY: _this.distanceY, swipeDirection: _this.movedDirection,\n velocity: _this.getVelocity(point)\n };\n if (_this.isTouchMoved) {\n var tDistance = _this.swipeSettings.swipeThresholdDistance;\n var eSwipeArgs = extend(undefined, _this.defaultArgs, swipeArgs);\n var canTrigger = false;\n var ele = _this.element;\n var scrollBool = _this.isScrollable(ele);\n var moved = swipeRegex.test(_this.movedDirection);\n if ((tDistance < _this.distanceX && !moved) || (tDistance < _this.distanceY && moved)) {\n if (!scrollBool) {\n canTrigger = true;\n }\n else {\n canTrigger = _this.checkSwipe(ele, moved);\n }\n }\n if (canTrigger) {\n _this.trigger('swipe', eSwipeArgs);\n }\n }\n _this.modeclear();\n };\n _this.modeclear = function () {\n _this.modeClear = setTimeout(function () {\n _this.touchAction = true;\n }, (typeof _this.tap !== 'function' ? 0 : 20));\n _this.lastTapTime = new Date().getTime();\n EventHandler.remove(_this.element, Browser.touchMoveEvent, _this.moveEvent);\n EventHandler.remove(_this.element, Browser.touchEndEvent, _this.endEvent);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n _this.bind();\n return _this;\n }\n // triggers when property changed\n /**\n *\n * @private\n * @param {TouchModel} newProp ?\n * @param {TouchModel} oldProp ?\n * @returns {void} ?\n */\n Touch.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Touch.prototype.bind = function () {\n this.wireEvents();\n if (Browser.isIE) {\n this.element.classList.add('e-block-touch');\n }\n };\n /**\n * To destroy the touch instance.\n *\n * @returns {void}\n */\n Touch.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n // Need to changes the event binding once we updated the event handler.\n Touch.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.touchStartEvent, this.startEvent, this);\n };\n Touch.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.startEvent);\n };\n /**\n * Returns module name as touch\n *\n * @returns {string} ?\n * @private\n */\n Touch.prototype.getModuleName = function () {\n return 'touch';\n };\n /**\n * Returns if the HTML element is Scrollable.\n *\n * @param {HTMLElement} element - HTML Element to check if Scrollable.\n * @returns {boolean} ?\n */\n Touch.prototype.isScrollable = function (element) {\n var eleStyle = getComputedStyle(element);\n var style = eleStyle.overflow + eleStyle.overflowX + eleStyle.overflowY;\n if ((/(auto|scroll)/).test(style)) {\n return true;\n }\n return false;\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n Touch.prototype.tapHoldEvent = function (evt) {\n this.tapCount = 0;\n this.touchAction = true;\n EventHandler.remove(this.element, Browser.touchMoveEvent, this.moveEvent);\n EventHandler.remove(this.element, Browser.touchEndEvent, this.endEvent);\n var eTapArgs = { originalEvent: evt };\n this.trigger('tapHold', eTapArgs);\n EventHandler.remove(this.element, Browser.touchCancelEvent, this.cancelEvent);\n };\n Touch.prototype.calcPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.startPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.startPoint.clientY)));\n if (this.distanceX > this.distanceY) {\n this.movedDirection = (point.clientX > this.startPoint.clientX) ? 'Right' : 'Left';\n }\n else {\n this.movedDirection = (point.clientY < this.startPoint.clientY) ? 'Up' : 'Down';\n }\n };\n Touch.prototype.calcScrollPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.lastMovedPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.lastMovedPoint.clientY)));\n if ((this.distanceX > this.distanceY || this.hScrollLocked === true) && this.vScrollLocked === false) {\n this.scrollDirection = (point.clientX > this.lastMovedPoint.clientX) ? 'Right' : 'Left';\n this.hScrollLocked = true;\n }\n else {\n this.scrollDirection = (point.clientY < this.lastMovedPoint.clientY) ? 'Up' : 'Down';\n this.vScrollLocked = true;\n }\n };\n Touch.prototype.getVelocity = function (pnt) {\n var newX = pnt.clientX;\n var newY = pnt.clientY;\n var newT = Date.now();\n var xDist = newX - this.startPoint.clientX;\n var yDist = newY - this.startPoint.clientX;\n var interval = newT - this.tStampStart;\n return Math.sqrt(xDist * xDist + yDist * yDist) / interval;\n };\n Touch.prototype.checkSwipe = function (ele, flag) {\n var keys = ['scroll', 'offset'];\n var temp = flag ? ['Height', 'Top'] : ['Width', 'Left'];\n if ((ele[keys[0] + temp[0]] <= ele[keys[1] + temp[0]])) {\n return true;\n }\n return (ele[keys[0] + temp[1]] === 0) ||\n (ele[keys[1] + temp[0]] + ele[keys[0] + temp[1]] >= ele[keys[0] + temp[0]]);\n };\n Touch.prototype.updateChangeTouches = function (evt) {\n var point = evt.changedTouches && evt.changedTouches.length !== 0 ? evt.changedTouches[0] : evt;\n return point;\n };\n __decorate([\n Event()\n ], Touch.prototype, \"tap\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"tapHold\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"swipe\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"scroll\", void 0);\n __decorate([\n Property(350)\n ], Touch.prototype, \"tapThreshold\", void 0);\n __decorate([\n Property(750)\n ], Touch.prototype, \"tapHoldThreshold\", void 0);\n __decorate([\n Complex({}, SwipeSettings)\n ], Touch.prototype, \"swipeSettings\", void 0);\n Touch = __decorate([\n NotifyPropertyChanges\n ], Touch);\n return Touch;\n}(Base));\nexport { Touch };\n","import { extend, isNullOrUndefined } from './util';\nimport { defaultCulture } from './internationalization';\n/**\n * L10n modules provides localized text for different culture.\n * ```typescript\n * import {setCulture} from '@syncfusion/ts-base-library';\n * //load global locale object common for all components.\n * L10n.load({\n * 'fr-BE': {\n * 'button': {\n * 'check': 'vérifié'\n * }\n * }\n * });\n * //set globale default locale culture.\n * setCulture('fr-BE');\n * let instance: L10n = new L10n('button', {\n * check: 'checked'\n * });\n * //Get locale text for current property.\n * instance.getConstant('check');\n * //Change locale culture in a component.\n * instance.setLocale('en-US');\n * ```\n */\nvar L10n = /** @class */ (function () {\n /**\n * Constructor\n *\n * @param {string} controlName ?\n * @param {Object} localeStrings ?\n * @param {string} locale ?\n */\n function L10n(controlName, localeStrings, locale) {\n this.controlName = controlName;\n this.localeStrings = localeStrings;\n this.setLocale(locale || defaultCulture);\n }\n /**\n * Sets the locale text\n *\n * @param {string} locale ?\n * @returns {void} ?\n */\n L10n.prototype.setLocale = function (locale) {\n var intLocale = this.intGetControlConstant(L10n.locale, locale);\n this.currentLocale = intLocale || this.localeStrings;\n };\n /**\n * Sets the global locale for all components.\n *\n * @param {Object} localeObject - specifies the localeObject to be set as global locale.\n * @returns {void} ?\n */\n L10n.load = function (localeObject) {\n this.locale = extend(this.locale, localeObject, {}, true);\n };\n /**\n * Returns current locale text for the property based on the culture name and control name.\n *\n * @param {string} prop - specifies the property for which localize text to be returned.\n * @returns {string} ?\n */\n L10n.prototype.getConstant = function (prop) {\n // Removed conditional operator because this method does not return correct value when passing 0 as value in localization\n if (!isNullOrUndefined(this.currentLocale[\"\" + prop])) {\n return this.currentLocale[\"\" + prop];\n }\n else {\n return this.localeStrings[\"\" + prop] || '';\n }\n };\n /**\n * Returns the control constant object for current object and the locale specified.\n *\n * @param {Object} curObject ?\n * @param {string} locale ?\n * @returns {Object} ?\n */\n L10n.prototype.intGetControlConstant = function (curObject, locale) {\n if ((curObject)[\"\" + locale]) {\n return (curObject)[\"\" + locale][this.controlName];\n }\n return null;\n };\n L10n.locale = {};\n return L10n;\n}());\nexport { L10n };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Template Engine\n */\nvar LINES = new RegExp('\\\\n|\\\\r|\\\\s\\\\s+', 'g');\nvar QUOTES = new RegExp(/'|\"/g);\nvar IF_STMT = new RegExp('if ?\\\\(');\nvar ELSEIF_STMT = new RegExp('else if ?\\\\(');\nvar ELSE_STMT = new RegExp('else');\nvar FOR_STMT = new RegExp('for ?\\\\(');\nvar IF_OR_FOR = new RegExp('(/if|/for)');\nvar CALL_FUNCTION = new RegExp('\\\\((.*)\\\\)', '');\nvar NOT_NUMBER = new RegExp('^[0-9]+$', 'g');\nvar WORD = new RegExp('[\\\\w\"\\'.\\\\s+]+', 'g');\nvar DBL_QUOTED_STR = new RegExp('\"(.*?)\"', 'g');\nvar WORDIF = new RegExp('[\\\\w\"\\'@#$.\\\\s-+]+', 'g');\nvar exp = new RegExp('\\\\${([^}]*)}', 'g');\n// let cachedTemplate: Object = {};\nvar ARR_OBJ = /^\\..*/gm;\nvar SINGLE_SLASH = /\\\\/gi;\nvar DOUBLE_SLASH = /\\\\\\\\/gi;\nvar WORDFUNC = new RegExp('[\\\\w\"\\'@#$.\\\\s+]+', 'g');\nvar WINDOWFUNC = /\\window\\./gm;\n/**\n * The function to set regular expression for template expression string.\n *\n * @param {RegExp} value - Value expression.\n * @returns {RegExp} ?\n * @private\n */\nexport function expression(value) {\n if (value) {\n exp = value;\n }\n return exp;\n}\n// /**\n// * To render the template string from the given data.\n// * @param {string} template - String Template.\n// * @param {Object[]|JSON} data - DataSource for the template.\n// * @param {Object} helper? - custom helper object.\n// */\n// export function template(template: string, data: JSON, helper?: Object): string {\n// let hash: string = hashCode(template);\n// let tmpl: Function;\n// if (!cachedTemplate[hash]) {\n// tmpl = cachedTemplate[hash] = compile(template, helper);\n// } else {\n// tmpl = cachedTemplate[hash];\n// }\n// return tmpl(data);\n// }\n/**\n * Compile the template string into template function.\n *\n * @param {string | Function} template - The template string which is going to convert.\n * @param {Object} helper - Helper functions as an object.\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n * @private\n */\nexport function compile(template, helper, ignorePrefix) {\n if (typeof template === 'function') {\n return template;\n }\n else {\n var argName = 'data';\n var evalExpResult = evalExp(template, argName, helper, ignorePrefix);\n var condtion = \"var valueRegEx = (/value=\\\\'([A-Za-z0-9 _]*)((.)([\\\\w)(!-;?-\\u25A0\\\\s]+)['])/g);\\n var hrefRegex = (/(?:href)([\\\\s='\\\"./]+)([\\\\w-./?=&\\\\\\\\#\\\"]+)((.)([\\\\w)(!-;/?-\\u25A0\\\\s]+)['])/g);\\n if(str.match(valueRegEx)){\\n var check = str.match(valueRegEx);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(valueRegEx)[i].split('value=')[1];\\n var change = check1.match(/^'/) !== null ? check1.replace(/^'/, '\\\"') : check1;\\n change =change.match(/.$/)[0] === '\\\\'' ? change.replace(/.$/,'\\\"') : change;\\n str1 = str1.replace(check1, change);\\n }\\n str = str.replace(str, str1);\\n }\\n else if (str.match(/(?:href='')/) === null) {\\n if(str.match(hrefRegex)) {\\n var check = str.match(hrefRegex);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(hrefRegex)[i].split('href=')[1];\\n if (check1) {\\n var change = check1.match(/^'/) !== null ? check1.replace(/^'/, '\\\"') : check1;\\n change =change.match(/.$/)[0] === '\\\\'' ? change.replace(/.$/,'\\\"') : change;\\n str1 = str1.replace(check1, change);\\n }\\n }\\n str = str.replace(str, str1);\\n }\\n }\\n \";\n var fnCode = 'var str=\"' + evalExpResult + '\";' + condtion + ' return str;';\n var fn = new Function(argName, fnCode);\n return fn.bind(helper);\n }\n}\n/** function used to evaluate the function expression\n *\n * @param {string} str ?\n * @param {string} nameSpace ?\n * @param {Object} helper ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction evalExp(str, nameSpace, helper, ignorePrefix) {\n var varCOunt = 0;\n /**\n * Variable containing Local Keys\n */\n var localKeys = [];\n var isClass = str.match(/class=\"([^\"]+|)\\s{2}/g);\n var singleSpace = '';\n if (isClass) {\n isClass.forEach(function (value) {\n singleSpace = value.replace(/\\s\\s+/g, ' ');\n str = str.replace(value, singleSpace);\n });\n }\n if (exp.test(str)) {\n var insideBraces = false;\n var outputString = '';\n for (var i = 0; i < str.length; i++) {\n if (str[i + ''] === '$' && str[i + 1] === '{') {\n insideBraces = true;\n }\n else if (str[i + ''] === '}') {\n insideBraces = false;\n }\n outputString += (str[i + ''] === '\"' && !insideBraces) ? '\\\\\"' : str[i + ''];\n }\n str = outputString;\n }\n else {\n str = str.replace(/\\\\?\"/g, '\\\\\"');\n }\n return str.replace(LINES, '').replace(DBL_QUOTED_STR, '\\'$1\\'').replace(exp, function (match, cnt, offset, matchStr) {\n var SPECIAL_CHAR = /@|#|\\$/gm;\n var matches = cnt.match(CALL_FUNCTION);\n // matches to detect any function calls\n if (matches) {\n var rlStr = matches[1];\n if (ELSEIF_STMT.test(cnt)) {\n //handling else-if condition\n cnt = '\";} ' + cnt.replace(matches[1], rlStr.replace(WORD, function (str) {\n str = str.trim();\n return addNameSpace(str, !(QUOTES.test(str)) && (localKeys.indexOf(str) === -1), nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n }\n else if (IF_STMT.test(cnt)) {\n //handling if condition\n cnt = '\"; ' + cnt.replace(matches[1], rlStr.replace(WORDIF, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n }\n else if (FOR_STMT.test(cnt)) {\n //handling for condition\n var rlStr_1 = matches[1].split(' of ');\n // replace for each into actual JavaScript\n cnt = '\"; ' + cnt.replace(matches[1], function (mtc) {\n localKeys.push(rlStr_1[0]);\n localKeys.push(rlStr_1[0] + 'Index');\n varCOunt = varCOunt + 1;\n return 'var i' + varCOunt + '=0; i' + varCOunt + ' < ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix) + '.length; i' + varCOunt + '++';\n }) + '{ \\n ' + rlStr_1[0] + '= ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix)\n + '[i' + varCOunt + ']; \\n var ' + rlStr_1[0] + 'Index=i' + varCOunt + '; \\n str = str + \"';\n }\n else {\n //helper function handling\n var fnStr = cnt.split('(');\n var fNameSpace = (helper && Object.prototype.hasOwnProperty.call(helper, fnStr[0]) ? 'this.' : 'global');\n fNameSpace = (/\\./.test(fnStr[0]) ? '' : fNameSpace);\n var ftArray = matches[1].split(',');\n if (matches[1].length !== 0 && !(/data/).test(ftArray[0]) && !(/window./).test(ftArray[0])) {\n matches[1] = (fNameSpace === 'global' ? nameSpace + '.' + matches[1] : matches[1]);\n }\n var splRegexp = /@|\\$|#/gm;\n var arrObj = /\\]\\./gm;\n if (WINDOWFUNC.test(cnt) && arrObj.test(cnt) || splRegexp.test(cnt)) {\n var splArrRegexp = /@|\\$|#|\\]\\./gm;\n if (splArrRegexp.test(cnt)) {\n cnt = '\"+ ' + (fNameSpace === 'global' ? '' : fNameSpace) + cnt.replace(matches[1], rlStr.replace(WORDFUNC, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '+ \"';\n }\n }\n else {\n cnt = '\" + ' + (fNameSpace === 'global' ? '' : fNameSpace) +\n cnt.replace(rlStr, addNameSpace(matches[1].replace(/,( |)data.|,/gi, ',' + nameSpace + '.').replace(/,( |)data.window/gi, ',window'), (fNameSpace === 'global' ? false : true), nameSpace, localKeys, ignorePrefix)) +\n '+\"';\n }\n }\n }\n else if (ELSE_STMT.test(cnt)) {\n // handling else condition\n cnt = '\"; ' + cnt.replace(ELSE_STMT, '} else { \\n str = str + \"');\n }\n else if (cnt.match(IF_OR_FOR)) {\n // close condition\n cnt = cnt.replace(IF_OR_FOR, '\"; \\n } \\n str = str + \"');\n }\n else if (SPECIAL_CHAR.test(cnt)) {\n // template string with double slash with special character\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n }\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // template string with double slash\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // evaluate normal expression\n cnt = cnt !== '' ? '\"+' + addNameSpace(cnt.replace(/,/gi, '+' + nameSpace + '.'), (localKeys.indexOf(cnt) === -1), nameSpace, localKeys, ignorePrefix) + '+\"' : '${}';\n }\n }\n return cnt;\n });\n}\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction addNameSpace(str, addNS, nameSpace, ignoreList, ignorePrefix) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1 && !ignorePrefix && str !== 'true' && str !== 'false') ? nameSpace + '.' + str : str);\n}\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @returns {string} ?\n */\nfunction NameSpaceArrObj(str, addNS, nameSpace, ignoreList) {\n var arrObjReg = /^\\..*/gm;\n return ((addNS && !(NOT_NUMBER.test(str)) &&\n ignoreList.indexOf(str.split('.')[0]) === -1 && !(arrObjReg.test(str))) ? nameSpace + '.' + str : str);\n}\n// // Create hashCode for template string to storeCached function\n// function hashCode(str: string): string {\n// return str.split('').reduce((a: number, b: string) => { a = ((a << 5) - a) + b.charCodeAt(0); return a & a; }, 0).toString();\n// }\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @returns {string} ?\n */\nfunction NameSpaceForspecialChar(str, addNS, nameSpace, ignoreList) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1) ? nameSpace + '[\"' + str : str);\n}\n/**\n * Replace double slashes to single slash.\n *\n * @param {string} tempStr ?\n * @returns {any} ?\n */\nfunction SlashReplace(tempStr) {\n var double = '\\\\\\\\';\n if (tempStr.match(DOUBLE_SLASH)) {\n return tempStr;\n }\n else {\n return tempStr.replace(SINGLE_SLASH, double);\n }\n}\n/**\n *\n * @param {string} str ?\n * @param {string} nameSpaceNew ?\n * @param {string[]} keys ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction HandleSpecialCharArrObj(str, nameSpaceNew, keys, ignorePrefix) {\n str = str.trim();\n var windowFunc = /\\window\\./gm;\n if (!windowFunc.test(str)) {\n var quotes = /'|\"/gm;\n var splRegexp = /@|\\$|#/gm;\n if (splRegexp.test(str)) {\n str = NameSpaceForspecialChar(str, (keys.indexOf(str) === -1), nameSpaceNew, keys) + '\"]';\n }\n if (ARR_OBJ.test(str)) {\n return NameSpaceArrObj(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys);\n }\n else {\n return addNameSpace(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys, ignorePrefix);\n }\n }\n else {\n return str;\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types */\n/**\n * Template Engine Bridge\n */\nimport { compile as render } from './template';\nimport { createElement } from './dom';\nimport { isNullOrUndefined, isBlazor } from './util';\nvar HAS_ROW = /^[\\n\\r.]+ 0) {\n elements.forEach(function (element) {\n detach(element);\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeJsEvents = function () {\n var elements = this.wrapElement.querySelectorAll('[' + jsEvents.join('],[') + ']');\n if (elements.length > 0) {\n elements.forEach(function (element) {\n jsEvents.forEach(function (attr) {\n if (element.hasAttribute(attr)) {\n element.removeAttribute(attr);\n }\n });\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeXssAttrs = function () {\n var _this = this;\n this.removeAttrs.forEach(function (item, index) {\n var elements = _this.wrapElement.querySelectorAll(item.selector);\n if (elements.length > 0) {\n if (item.selector === 'a[href]') {\n elements.forEach(function (element) {\n if ((element.getAttribute(item.attribute)).replace(/\\t|\\s|&/, '').indexOf('javascript:alert') !== -1) {\n element.removeAttribute(item.attribute);\n }\n });\n }\n else {\n elements.forEach(function (element) {\n element.removeAttribute(item.attribute);\n });\n }\n }\n });\n };\n return SanitizeHtmlHelper;\n}());\nexport { SanitizeHtmlHelper };\n","/* eslint-disable jsdoc/require-returns */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * To import utils\n */\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nvar SvgRenderer = /** @class */ (function () {\n /* End-Properties */\n function SvgRenderer(rootID) {\n //Internal Variables\n this.svgLink = 'http://www.w3.org/2000/svg';\n this.rootId = rootID;\n }\n // method to get the attributes value\n // tslint:disable-next-line:no-any\n SvgRenderer.prototype.getOptionValue = function (options, key) {\n return options[key];\n }; /* tslint:enable */\n /**\n * To create a Html5 SVG element\n *\n * @param {SVGAttributes} options - Options to create SVG\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createSvg = function (options) {\n if (isNullOrUndefined(options.id)) {\n options.id = this.rootId + '_svg';\n }\n this.svgObj = document.getElementById(options.id);\n if (isNullOrUndefined(document.getElementById(options.id))) {\n this.svgObj = document.createElementNS(this.svgLink, 'svg');\n }\n this.svgObj = this.setElementAttributes(options, this.svgObj);\n this.setSVGSize(options.width, options.height);\n return this.svgObj;\n };\n // method to set the height and width for the SVG element\n SvgRenderer.prototype.setSVGSize = function (width, height) {\n var element = document.getElementById(this.rootId);\n var size = !isNullOrUndefined(element) ? element.getBoundingClientRect() : null;\n if (isNullOrUndefined(this.width) || this.width <= 0) {\n this.svgObj.setAttribute('width', width ? width.toString() : size.width.toString());\n }\n else {\n this.svgObj.setAttribute('width', this.width.toString());\n }\n if (isNullOrUndefined(this.height) || this.height <= 0) {\n this.svgObj.setAttribute('height', height ? height.toString() : '450');\n }\n else {\n this.svgObj.setAttribute('height', this.height.toString());\n }\n };\n /**\n * To draw a path\n *\n * @param {PathAttributes} options - Options to draw a path in SVG\n * @returns {Element} It returns a appropriate path\n */\n SvgRenderer.prototype.drawPath = function (options) {\n var path = document.getElementById(options.id);\n if (path === null) {\n path = document.createElementNS(this.svgLink, 'path');\n }\n path = this.setElementAttributes(options, path);\n return path;\n };\n /**\n * To draw a line\n *\n * @param {LineAttributes} options - Options to draw a line in SVG\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawLine = function (options) {\n var line = document.getElementById(options.id);\n if (line === null) {\n line = document.createElementNS(this.svgLink, 'line');\n }\n line = this.setElementAttributes(options, line);\n return line;\n };\n /**\n * To draw a rectangle\n *\n * @param {BaseAttibutes} options - Required options to draw a rectangle in SVG\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawRectangle = function (options) {\n var rectangle = document.getElementById(options.id);\n if (rectangle === null) {\n rectangle = document.createElementNS(this.svgLink, 'rect');\n }\n rectangle = this.setElementAttributes(options, rectangle);\n return rectangle;\n };\n /**\n * To draw a circle\n *\n * @param {CircleAttributes} options - Required options to draw a circle in SVG\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawCircle = function (options) {\n var circle = document.getElementById(options.id);\n if (circle === null) {\n circle = document.createElementNS(this.svgLink, 'circle');\n }\n circle = this.setElementAttributes(options, circle);\n return circle;\n };\n /**\n * To draw a polyline\n *\n * @param {PolylineAttributes} options - Options required to draw a polyline\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawPolyline = function (options) {\n var polyline = document.getElementById(options.id);\n if (polyline === null) {\n polyline = document.createElementNS(this.svgLink, 'polyline');\n }\n polyline = this.setElementAttributes(options, polyline);\n return polyline;\n };\n /**\n * To draw an ellipse\n *\n * @param {EllipseAttributes} options - Options required to draw an ellipse\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawEllipse = function (options) {\n var ellipse = document.getElementById(options.id);\n if (ellipse === null) {\n ellipse = document.createElementNS(this.svgLink, 'ellipse');\n }\n ellipse = this.setElementAttributes(options, ellipse);\n return ellipse;\n };\n /**\n * To draw a polygon\n *\n * @param {PolylineAttributes} options - Options needed to draw a polygon in SVG\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawPolygon = function (options) {\n var polygon = document.getElementById(options.id);\n if (polygon === null) {\n polygon = document.createElementNS(this.svgLink, 'polygon');\n }\n polygon = this.setElementAttributes(options, polygon);\n return polygon;\n };\n /**\n * To draw an image\n *\n * @param {ImageAttributes} options - Required options to draw an image in SVG\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawImage = function (options) {\n var img = document.createElementNS(this.svgLink, 'image');\n img.setAttributeNS(null, 'height', options.height.toString());\n img.setAttributeNS(null, 'width', options.width.toString());\n img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', options.href);\n img.setAttributeNS(null, 'x', options.x.toString());\n img.setAttributeNS(null, 'y', options.y.toString());\n img.setAttributeNS(null, 'id', options.id);\n img.setAttributeNS(null, 'visibility', options.visibility);\n if (!isNullOrUndefined(this.getOptionValue(options, 'clip-path'))) {\n img.setAttributeNS(null, 'clip-path', this.getOptionValue(options, 'clip-path'));\n }\n if (!isNullOrUndefined(options.preserveAspectRatio)) {\n img.setAttributeNS(null, 'preserveAspectRatio', options.preserveAspectRatio);\n }\n return img;\n };\n /**\n * To draw a text\n *\n * @param {TextAttributes} options - Options needed to draw a text in SVG\n * @param {string} label - Label of the text\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createText = function (options, label) {\n var text = document.createElementNS(this.svgLink, 'text');\n text = this.setElementAttributes(options, text);\n if (!isNullOrUndefined(label)) {\n text.textContent = label;\n }\n return text;\n };\n /**\n * To create a tSpan\n *\n * @param {TextAttributes} options - Options to create tSpan\n * @param {string} label - The text content which is to be rendered in the tSpan\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createTSpan = function (options, label) {\n var tSpan = document.createElementNS(this.svgLink, 'tspan');\n tSpan = this.setElementAttributes(options, tSpan);\n if (!isNullOrUndefined(label)) {\n tSpan.textContent = label;\n }\n return tSpan;\n };\n /**\n * To create a title\n *\n * @param {string} text - The text content which is to be rendered in the title\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createTitle = function (text) {\n var title = document.createElementNS(this.svgLink, 'title');\n title.textContent = text;\n return title;\n };\n /**\n * To create defs element in SVG\n *\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createDefs = function () {\n var defs = document.createElementNS(this.svgLink, 'defs');\n return defs;\n };\n /**\n * To create clip path in SVG\n *\n * @param {BaseAttibutes} options - Options needed to create clip path\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createClipPath = function (options) {\n var clipPath = document.createElementNS(this.svgLink, 'clipPath');\n clipPath = this.setElementAttributes(options, clipPath);\n return clipPath;\n };\n /**\n * To create foreign object in SVG\n *\n * @param {BaseAttibutes} options - Options needed to create foreign object\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createForeignObject = function (options) {\n var foreignObject = document.createElementNS(this.svgLink, 'foreignObject');\n foreignObject = this.setElementAttributes(options, foreignObject);\n return foreignObject;\n };\n /**\n * To create group element in SVG\n *\n * @param {BaseAttibutes} options - Options needed to create group\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createGroup = function (options) {\n var group = document.createElementNS(this.svgLink, 'g');\n group = this.setElementAttributes(options, group);\n return group;\n };\n /**\n * To create pattern in SVG\n *\n * @param {PatternAttributes} options - Required options to create pattern in SVG\n * @param {string} element - Specifies the name of the pattern\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createPattern = function (options, element) {\n var pattern = document.createElementNS(this.svgLink, element);\n pattern = this.setElementAttributes(options, pattern);\n return pattern;\n };\n /**\n * To create radial gradient in SVG\n *\n * @param {string[]} colors - Specifies the colors required to create radial gradient\n * @param {string} name - Specifies the name of the gradient\n * @param {RadialGradient} options - value for radial gradient\n * @returns {string} It returns color name\n */\n SvgRenderer.prototype.createRadialGradient = function (colors, name, options) {\n var colorName;\n if (!isNullOrUndefined(colors[0].colorStop)) {\n var newOptions = {\n 'id': this.rootId + '_' + name + 'radialGradient',\n 'cx': options.cx + '%',\n 'cy': options.cy + '%',\n 'r': options.r + '%',\n 'fx': options.fx + '%',\n 'fy': options.fy + '%'\n };\n this.drawGradient('radialGradient', newOptions, colors);\n colorName = 'url(#' + this.rootId + '_' + name + 'radialGradient)';\n }\n else {\n colorName = colors[0].color.toString();\n }\n return colorName;\n };\n /**\n * To create linear gradient in SVG\n *\n * @param {GradientColor[]} colors - Array of string specifies the values for color\n * @param {string} name - Specifies the name of the gradient\n * @param {LinearGradient} options - Specifies the options for gradient\n * @returns {string} It returns color name\n */\n SvgRenderer.prototype.createLinearGradient = function (colors, name, options) {\n var colorName;\n if (!isNullOrUndefined(colors[0].colorStop)) {\n var newOptions = {\n 'id': this.rootId + '_' + name + 'linearGradient',\n 'x1': options.x1 + '%',\n 'y1': options.y1 + '%',\n 'x2': options.x2 + '%',\n 'y2': options.y2 + '%'\n };\n this.drawGradient('linearGradient', newOptions, colors);\n colorName = 'url(#' + this.rootId + '_' + name + 'linearGradient)';\n }\n else {\n colorName = colors[0].color.toString();\n }\n return colorName;\n };\n /**\n * To render the gradient element in SVG\n *\n * @param {string} gradientType - Specifies the type of the gradient\n * @param {RadialGradient | LinearGradient} options - Options required to render a gradient\n * @param {string[]} colors - Array of string specifies the values for color\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawGradient = function (gradientType, options, colors) {\n var defs = this.createDefs();\n var gradient = document.createElementNS(this.svgLink, gradientType);\n gradient = this.setElementAttributes(options, gradient);\n for (var i = 0; i < colors.length; i++) {\n var stop_1 = document.createElementNS(this.svgLink, 'stop');\n stop_1.setAttribute('offset', colors[i].colorStop);\n stop_1.setAttribute('stop-color', colors[i].color);\n stop_1.setAttribute('stop-opacity', colors[i].opacity ? (colors[i].opacity) : '1');\n if (!isNullOrUndefined(colors[i].style)) {\n stop_1.style.cssText = colors[i].style;\n }\n gradient.appendChild(stop_1);\n }\n defs.appendChild(gradient);\n return defs;\n };\n /**\n * To render a clip path\n *\n * @param {BaseAttibutes} options - Options required to render a clip path\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawClipPath = function (options) {\n var defs = this.createDefs();\n var clipPath = this.createClipPath({ 'id': options.id });\n options.id = options.id + '_Rect';\n var rect = this.drawRectangle(options);\n clipPath.appendChild(rect);\n defs.appendChild(clipPath);\n return defs;\n };\n /**\n * To create circular clip path in SVG\n *\n * @param {CircleAttributes} options - Options required to create circular clip path\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawCircularClipPath = function (options) {\n var defs = this.createDefs();\n var clipPath = this.createClipPath({ 'id': options.id });\n options.id = options.id + '_Circle';\n var circle = this.drawCircle(options);\n clipPath.appendChild(circle);\n defs.appendChild(clipPath);\n return defs;\n };\n /**\n * To set the attributes to the element\n *\n * @param {SVGCanvasAttributes} options - Attributes to set for the element\n * @param {Element} element - The element to which the attributes need to be set\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.setElementAttributes = function (options, element) {\n var keys = Object.keys(options);\n for (var i = 0; i < keys.length; i++) {\n if (keys[i] === 'style') {\n element.style.cssText = options[keys[i]];\n }\n else {\n element.setAttribute(keys[i], options[keys[i]]);\n }\n }\n return element;\n };\n /**\n * To create a Html5 canvas element\n * Dummy method for using canvas/svg render in the same variable name in chart control\n */\n SvgRenderer.prototype.createCanvas = function () {\n return null;\n };\n return SvgRenderer;\n}());\nexport { SvgRenderer };\n","/* eslint-disable no-case-declarations */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * To import utils.\n */\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * @private\n */\nvar CanvasRenderer = /** @class */ (function () {\n /* End-Properties */\n function CanvasRenderer(rootID) {\n this.rootId = rootID;\n }\n // method to get the attributes value\n // tslint:disable-next-line:no-any\n CanvasRenderer.prototype.getOptionValue = function (options, key) {\n return options[key];\n };\n /* tslint:enable */\n /**\n * To create a Html5 canvas element\n *\n * @param {BaseAttibutes} options - Options to create canvas\n * @returns {HTMLCanvasElement} Creating a canvas\n */\n CanvasRenderer.prototype.createCanvas = function (options) {\n var canvasObj = document.createElement('canvas');\n canvasObj.setAttribute('id', this.rootId + '_canvas');\n this.ctx = canvasObj.getContext('2d');\n this.canvasObj = canvasObj;\n this.setCanvasSize(options.width, options.height);\n return this.canvasObj;\n };\n /**\n * To set the width and height for the Html5 canvas element\n *\n * @param {number} width - width of the canvas\n * @param {number} height - height of the canvas\n * @returns {void} Setting canvas size\n */\n CanvasRenderer.prototype.setCanvasSize = function (width, height) {\n var element = document.getElementById(this.rootId);\n var size = !isNullOrUndefined(element) ? element.getBoundingClientRect() : null;\n if (isNullOrUndefined(this.width)) {\n this.canvasObj.setAttribute('width', width ? width.toString() : size.width.toString());\n }\n else {\n this.canvasObj.setAttribute('width', this.width.toString());\n }\n if (isNullOrUndefined(this.height)) {\n this.canvasObj.setAttribute('height', height ? height.toString() : '450');\n }\n else {\n this.canvasObj.setAttribute('height', this.height.toString());\n }\n };\n // To set the values to the attributes\n CanvasRenderer.prototype.setAttributes = function (options) {\n this.ctx.lineWidth = this.getOptionValue(options, 'stroke-width');\n var dashArray = this.getOptionValue(options, 'stroke-dasharray');\n if (!isNullOrUndefined(dashArray)) {\n var dashArrayString = dashArray.split(',');\n this.ctx.setLineDash([parseInt(dashArrayString[0], 10), parseInt(dashArrayString[1], 10)]);\n }\n this.ctx.strokeStyle = this.getOptionValue(options, 'stroke');\n };\n /**\n * To draw a line\n *\n * @param {LineAttributes} options - required options to draw a line on the canvas\n * @returns {void} To draw a line\n */\n CanvasRenderer.prototype.drawLine = function (options) {\n this.ctx.save();\n this.ctx.beginPath();\n this.ctx.lineWidth = this.getOptionValue(options, 'stroke-width');\n this.ctx.strokeStyle = options.stroke;\n this.ctx.moveTo(options.x1, options.y1);\n this.ctx.lineTo(options.x2, options.y2);\n this.ctx.stroke();\n this.ctx.restore();\n };\n /**\n * To draw a rectangle\n *\n * @param {RectAttributes} options - required options to draw a rectangle on the canvas.\n * @param {Int32Array} canvasTranslate TO get a translate value of canvas.\n * @returns {void} To draw rectangle.\n */\n CanvasRenderer.prototype.drawRectangle = function (options, canvasTranslate) {\n var canvasCtx = this.ctx;\n var cornerRadius = options.rx;\n this.ctx.save();\n this.ctx.beginPath();\n if (canvasTranslate) {\n this.ctx.translate(canvasTranslate[0], canvasTranslate[1]);\n }\n this.ctx.globalAlpha = this.getOptionValue(options, 'opacity');\n this.setAttributes(options);\n this.ctx.rect(options.x, options.y, options.width, options.height);\n if (cornerRadius !== null && cornerRadius >= 0) {\n this.drawCornerRadius(options);\n }\n else {\n if (options.fill === 'none') {\n options.fill = 'transparent';\n }\n this.ctx.fillStyle = options.fill;\n this.ctx.fillRect(options.x, options.y, options.width, options.height);\n this.ctx.stroke();\n }\n this.ctx.restore();\n this.ctx = canvasCtx;\n return (this.canvasObj);\n };\n // To draw the corner of a rectangle\n CanvasRenderer.prototype.drawCornerRadius = function (options) {\n var cornerRadius = options.rx;\n var x = options.x;\n var y = options.y;\n var width = options.width;\n var height = options.height;\n if (options.fill === 'none') {\n options.fill = 'transparent';\n }\n this.ctx.fillStyle = options.fill;\n if (width < 2 * cornerRadius) {\n cornerRadius = width / 2;\n }\n if (height < 2 * cornerRadius) {\n cornerRadius = height / 2;\n }\n this.ctx.beginPath();\n this.ctx.moveTo(x + width - cornerRadius, y);\n this.ctx.arcTo(x + width, y, x + width, y + height, cornerRadius);\n this.ctx.arcTo(x + width, y + height, x, y + height, cornerRadius);\n this.ctx.arcTo(x, y + height, x, y, cornerRadius);\n this.ctx.arcTo(x, y, x + width, y, cornerRadius);\n this.ctx.closePath();\n this.ctx.fill();\n this.ctx.stroke();\n };\n /**\n * To draw a path on the canvas\n *\n * @param {PathAttributes} options - options needed to draw path.\n * @param {Int32Array} canvasTranslate - Array of numbers to translate the canvas.\n * @returns {Element} To draw a path.\n */\n CanvasRenderer.prototype.drawPath = function (options, canvasTranslate) {\n var path = options.d;\n var dataSplit = path.split(' ');\n var borderWidth = this.getOptionValue(options, 'stroke-width');\n var canvasCtx = this.ctx;\n var flag = true;\n this.ctx.save();\n this.ctx.beginPath();\n if (canvasTranslate) {\n this.ctx.translate(canvasTranslate[0], canvasTranslate[1]);\n }\n this.ctx.globalAlpha = options.opacity ? options.opacity : this.getOptionValue(options, 'fill-opacity');\n this.setAttributes(options);\n for (var i = 0; i < dataSplit.length; i = i + 3) {\n var x1 = parseFloat(dataSplit[i + 1]);\n var y1 = parseFloat(dataSplit[i + 2]);\n switch (dataSplit[i]) {\n case 'M':\n if (!options.innerR && !options.cx) {\n this.ctx.moveTo(x1, y1);\n }\n break;\n case 'L':\n if (!options.innerR) {\n this.ctx.lineTo(x1, y1);\n }\n break;\n case 'Q':\n var q1 = parseFloat(dataSplit[i + 3]);\n var q2 = parseFloat(dataSplit[i + 4]);\n this.ctx.quadraticCurveTo(x1, y1, q1, q2);\n i = i + 2;\n break;\n case 'C':\n var c1 = parseFloat(dataSplit[i + 3]);\n var c2 = parseFloat(dataSplit[i + 4]);\n var c3 = parseFloat(dataSplit[i + 5]);\n var c4 = parseFloat(dataSplit[i + 6]);\n this.ctx.bezierCurveTo(x1, y1, c1, c2, c3, c4);\n i = i + 4;\n break;\n case 'A':\n if (!options.innerR) {\n if (options.cx) {\n this.ctx.arc(options.cx, options.cy, options.radius, 0, 2 * Math.PI, options.counterClockWise);\n }\n else {\n this.ctx.moveTo(options.x, options.y);\n this.ctx.arc(options.x, options.y, options.radius, options.start, options.end, options.counterClockWise);\n this.ctx.lineTo(options.x, options.y);\n }\n }\n else if (flag) {\n this.ctx.arc(options.x, options.y, options.radius, options.start, options.end, options.counterClockWise);\n this.ctx.arc(options.x, options.y, options.innerR, options.end, options.start, !options.counterClockWise);\n flag = false;\n }\n i = i + 5;\n break;\n case 'z':\n case 'Z':\n this.ctx.closePath();\n //since for loop is incremented by 3, to get next value after 'z' i is decremented for 2.\n i = i - 2;\n break;\n }\n }\n if (options.fill !== 'none' && options.fill !== undefined) {\n this.ctx.fillStyle = options.fill;\n this.ctx.fill();\n }\n if (borderWidth > 0) {\n this.ctx.stroke();\n }\n this.ctx.restore();\n this.ctx = canvasCtx;\n return this.canvasObj;\n };\n /**\n * To draw a text\n *\n * @param {TextAttributes} options - options required to draw text\n * @param {string} label - Specifies the text which has to be drawn on the canvas\n * @param {number} transX - Specifies the text of translate X\n * @param {number} transY - Specifies the text of translate Y\n * @param {number} dy - Specifies the text of translate dy\n * @param {boolean} isTSpan - Specifies the boolean value of span value\n * @returns {void}\n */\n CanvasRenderer.prototype.createText = function (options, label, transX, transY, dy, isTSpan) {\n var fontWeight = this.getOptionValue(options, 'font-weight');\n if (!isNullOrUndefined(fontWeight) && fontWeight.toLowerCase() === 'regular') {\n fontWeight = 'normal';\n }\n var fontSize = this.getOptionValue(options, 'font-size');\n var fontFamily = this.getOptionValue(options, 'font-family');\n var fontStyle = this.getOptionValue(options, 'font-style').toLowerCase();\n var font = (fontStyle + ' ' + fontWeight + ' ' + fontSize + ' ' + fontFamily);\n var anchor = this.getOptionValue(options, 'text-anchor');\n var opacity = options.opacity !== undefined ? options.opacity : 1;\n if (anchor === 'middle') {\n anchor = 'center';\n }\n this.ctx.save();\n this.ctx.fillStyle = options.fill;\n this.ctx.font = font;\n this.ctx.textAlign = anchor;\n this.ctx.globalAlpha = opacity;\n if (options.baseline) {\n this.ctx.textBaseline = options.baseline;\n }\n if (!isTSpan) {\n var txtlngth = 0;\n this.ctx.translate(options.x + (txtlngth / 2) + (transX ? transX : 0), options.y + (transY ? transY : 0));\n this.ctx.rotate(options.labelRotation * Math.PI / 180);\n }\n this.ctx.fillText(label, isTSpan ? options.x : 0, isTSpan ? dy : 0);\n this.ctx.restore();\n return this.canvasObj;\n };\n /**\n * To draw circle on the canvas\n *\n * @param {CircleAttributes} options - required options to draw the circle\n * @param {Int32Array} canvasTranslate Translate value of canvas\n * @returns {void}\n */\n CanvasRenderer.prototype.drawCircle = function (options, canvasTranslate) {\n var canvasCtx = this.ctx;\n this.ctx.save();\n this.ctx.beginPath();\n this.ctx.arc(options.cx, options.cy, options.r, 0, 2 * Math.PI);\n this.ctx.fillStyle = options.fill;\n this.ctx.globalAlpha = options.opacity;\n this.ctx.fill();\n if (canvasTranslate) {\n this.ctx.translate(canvasTranslate[0], canvasTranslate[1]);\n }\n this.setAttributes(options);\n this.ctx.stroke();\n this.ctx.restore();\n this.ctx = canvasCtx;\n return this.canvasObj;\n };\n /**\n * To draw polyline\n *\n * @param {PolylineAttributes} options - options needed to draw polyline\n * @returns {void}\n */\n CanvasRenderer.prototype.drawPolyline = function (options) {\n this.ctx.save();\n this.ctx.beginPath();\n var points = options.points.split(' ');\n for (var i = 0; i < points.length - 1; i++) {\n var point = points[i].split(',');\n var x = parseFloat(point[0]);\n var y = parseFloat(point[1]);\n if (i === 0) {\n this.ctx.moveTo(x, y);\n }\n else {\n this.ctx.lineTo(x, y);\n }\n }\n this.ctx.lineWidth = this.getOptionValue(options, 'stroke-width');\n this.ctx.strokeStyle = options.stroke;\n this.ctx.stroke();\n this.ctx.restore();\n };\n /**\n * To draw an ellipse on the canvas\n *\n * @param {EllipseAttributes} options - options needed to draw ellipse\n * @param {Int32Array} canvasTranslate Translate value of canvas\n * @returns {void}\n */\n CanvasRenderer.prototype.drawEllipse = function (options, canvasTranslate) {\n var canvasCtx = this.ctx;\n var circumference = Math.max(options.rx, options.ry);\n var scaleX = options.rx / circumference;\n var scaleY = options.ry / circumference;\n this.ctx.save();\n this.ctx.beginPath();\n this.ctx.translate(options.cx, options.cy);\n if (canvasTranslate) {\n this.ctx.translate(canvasTranslate[0], canvasTranslate[1]);\n }\n this.ctx.save();\n this.ctx.scale(scaleX, scaleY);\n this.ctx.arc(0, 0, circumference, 0, 2 * Math.PI, false);\n this.ctx.fillStyle = options.fill;\n this.ctx.fill();\n this.ctx.restore();\n this.ctx.lineWidth = this.getOptionValue(options, 'stroke-width');\n this.ctx.strokeStyle = options.stroke;\n this.ctx.stroke();\n this.ctx.restore();\n this.ctx = canvasCtx;\n };\n /**\n * To draw an image\n *\n * @param {ImageAttributes} options - options required to draw an image on the canvas\n * @returns {void}\n */\n CanvasRenderer.prototype.drawImage = function (options) {\n this.ctx.save();\n var imageObj = new Image();\n if (!isNullOrUndefined(options.href)) {\n imageObj.src = options.href;\n this.ctx.drawImage(imageObj, options.x, options.y, options.width, options.height);\n }\n this.ctx.restore();\n };\n /**\n * To create a linear gradient\n *\n * @param {string[]} colors - Specifies the colors required to create linear gradient\n * @returns {string} It returns color\n */\n CanvasRenderer.prototype.createLinearGradient = function (colors) {\n var myGradient;\n if (!isNullOrUndefined(colors[0].colorStop)) {\n myGradient = this.ctx.createLinearGradient(0, 0, 0, this.canvasObj.height);\n }\n var color = this.setGradientValues(colors, myGradient);\n return color;\n };\n /**\n * To create a radial gradient\n *\n * @param {string[]} colors - Specifies the colors required to create linear gradient\n * @returns {string} It returns gradient color\n */\n CanvasRenderer.prototype.createRadialGradient = function (colors) {\n var myGradient;\n if (!isNullOrUndefined(colors[0].colorStop)) {\n myGradient = this.ctx.createRadialGradient(0, 0, 0, 0, 0, this.canvasObj.height);\n }\n var colorName = this.setGradientValues(colors, myGradient);\n return colorName;\n };\n // To set the gradient values\n CanvasRenderer.prototype.setGradientValues = function (colors, myGradient) {\n var colorName;\n if (!isNullOrUndefined(colors[0].colorStop)) {\n for (var i = 0; i <= colors.length - 1; i++) {\n var color = colors[i].color;\n var newColorStop = (colors[i].colorStop).slice(0, -1);\n var stopColor = parseInt(newColorStop, 10) / 100;\n myGradient.addColorStop(stopColor, color);\n }\n colorName = myGradient.toString();\n }\n else {\n colorName = colors[0].color.toString();\n }\n return colorName;\n };\n /**\n * To set the attributes to the element\n *\n * @param {SVGCanvasAttributes} options - Attributes to set for the element\n * @param {HTMLElement} element - The element to which the attributes need to be set\n * @returns {HTMLElement} It returns null value\n */\n CanvasRenderer.prototype.setElementAttributes = function (options, element) {\n var keys = Object.keys(options);\n var values = Object.keys(options).map(function (key) { return options[key]; });\n for (var i = 0; i < keys.length; i++) {\n element.setAttribute(keys[i], values[i]);\n }\n return null;\n };\n /**\n * To update the values of the canvas element attributes\n *\n * @param {SVGCanvasAttributes} options - Specifies the colors required to create gradient\n * @returns {void}\n */\n CanvasRenderer.prototype.updateCanvasAttributes = function (options) {\n this.setElementAttributes(options, this.canvasObj);\n var ctx = this.ctx;\n if (!isNullOrUndefined(this.dataUrl)) {\n var img_1 = new Image;\n img_1.onload = function () {\n ctx.drawImage(img_1, 0, 0);\n };\n img_1.src = this.dataUrl;\n }\n };\n /**\n * This method clears the given rectangle region\n *\n * @param {Rect} rect The rect parameter as passed\n */\n CanvasRenderer.prototype.clearRect = function (rect) {\n this.ctx.restore();\n this.ctx.clearRect(rect.x, rect.y, rect.width, rect.height);\n };\n /**\n * For canvas rendering in chart\n * Dummy method for using canvas/svg render in the same variable name in chart control\n */\n CanvasRenderer.prototype.createGroup = function () {\n return null;\n };\n /**\n * To render a clip path\n *\n * Dummy method for using canvas/svg render in the same variable name in chart control\n */\n CanvasRenderer.prototype.drawClipPath = function () {\n return null;\n };\n /**\n * To render a Circular clip path\n *\n * Dummy method for using canvas/svg render in the same variable name in chart control\n */\n CanvasRenderer.prototype.drawCircularClipPath = function () {\n return null;\n };\n /**\n * Clip method to perform clip in canvas mode\n *\n * @param {BaseAttibutes} options The canvas clip of options\n */\n CanvasRenderer.prototype.canvasClip = function (options) {\n this.ctx.save();\n this.ctx.fillStyle = 'transparent';\n this.ctx.rect(options.x, options.y, options.width, options.height);\n this.ctx.fill();\n this.ctx.clip();\n };\n /**\n * Tp restore the canvas\n */\n CanvasRenderer.prototype.canvasRestore = function () {\n this.ctx.restore();\n };\n /**\n * To draw a polygon\n * Dummy method for using canvas/svg render in the same variable name in chart control\n */\n CanvasRenderer.prototype.drawPolygon = function () {\n return null;\n };\n /**\n * To create defs element in SVG\n * Dummy method for using canvas/svg render in the same variable name in chart control\n *\n * @returns {Element} It returns null\n */\n CanvasRenderer.prototype.createDefs = function () {\n return null;\n };\n /**\n * To create clip path in SVG\n * Dummy method for using canvas/svg render in the same variable name in chart control\n */\n CanvasRenderer.prototype.createClipPath = function () {\n return null;\n };\n /**\n * To create a Html5 SVG element\n * Dummy method for using canvas/svg render in the same variable name in chart control\n *\n * @returns {Element} It returns null\n */\n CanvasRenderer.prototype.createSvg = function () {\n return null;\n };\n return CanvasRenderer;\n}());\nexport { CanvasRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { SvgRenderer } from '../svg-render/index';\nimport { createElement, remove, merge } from '@syncfusion/ej2-base';\n/**\n * Function to measure the height and width of the text.\n *\n * @private\n * @param {string} text To get a text\n * @param {FontModel} font To get a font of the text\n * @returns {Size} measureText\n */\nexport function measureText(text, font, themeFontStyle, isHeader) {\n var breakText = text || ''; // For avoid NuLL value\n var htmlObject = document.getElementById('chartmeasuretext');\n if (htmlObject === null) {\n htmlObject = createElement('text', { id: 'chartmeasuretext' });\n document.body.appendChild(htmlObject);\n }\n if (typeof (text) === 'string' && (text.indexOf('<') > -1 || text.indexOf('>') > -1)) {\n var textArray = text.split(' ');\n for (var i = 0; i < textArray.length; i++) {\n if (textArray[i].indexOf('
') === -1) {\n textArray[i] = textArray[i].replace(/[<>]/g, '&');\n }\n }\n text = textArray.join(' ');\n }\n htmlObject.innerHTML = (breakText.indexOf('
') > -1 || breakText.indexOf('
') > -1) ? breakText : text;\n htmlObject.style.position = 'fixed';\n htmlObject.style.fontSize = font.size || (isHeader ? themeFontStyle.headerTextSize : themeFontStyle.size);\n htmlObject.style.fontStyle = font.fontStyle || themeFontStyle.fontStyle;\n htmlObject.style.fontFamily = font.fontFamily || themeFontStyle.fontFamily;\n htmlObject.style.visibility = 'hidden';\n htmlObject.style.top = '-100';\n htmlObject.style.left = '0';\n htmlObject.style.whiteSpace = 'nowrap';\n // For bootstrap line height issue\n htmlObject.style.lineHeight = 'normal';\n var fontWidth = htmlObject.clientWidth;\n var fontHeight = htmlObject.clientHeight;\n var fontWeight = htmlObject.style.fontWeight;\n htmlObject.style.fontWeight = font.fontWeight || themeFontStyle.fontWeight;\n return new Size(htmlObject.style.fontWeight === 'bold' && fontWeight === 'normal' ? Math.max(fontWidth, htmlObject.clientWidth) : htmlObject.clientWidth, htmlObject.style.fontWeight === 'bold' && fontWeight === 'normal' ? Math.max(fontHeight, htmlObject.clientHeight) : htmlObject.clientHeight);\n}\n/** @private */\nexport function withInAreaBounds(x, y, areaBounds, width, height) {\n if (width === void 0) { width = 0; }\n if (height === void 0) { height = 0; }\n return (x >= areaBounds.x - width && x <= areaBounds.x + areaBounds.width + width && y >= areaBounds.y - height\n && y <= areaBounds.y + areaBounds.height + height);\n}\n/** @private */\nexport function findDirection(rX, rY, rect, arrowLocation, arrowPadding, top, bottom, left, tipX, tipY, controlName) {\n if (controlName === void 0) { controlName = ''; }\n var direction = '';\n var startX = rect.x;\n var startY = rect.y;\n var width = rect.x + rect.width;\n var height = rect.y + rect.height;\n if (top) {\n direction = direction.concat('M' + ' ' + (startX) + ' ' + (startY + rY) + ' Q ' + startX + ' '\n + startY + ' ' + (startX + rX) + ' ' + startY + ' ' +\n ' L' + ' ' + (width - rX) + ' ' + (startY) + ' Q ' + width + ' '\n + startY + ' ' + (width) + ' ' + (startY + rY));\n direction = direction.concat(' L' + ' ' + (width) + ' ' + (height - rY) + ' Q ' + width + ' '\n + (height) + ' ' + (width - rX) + ' ' + (height));\n if (arrowPadding !== 0) {\n if (controlName === 'RangeNavigator') {\n if ((arrowLocation.x - arrowPadding) > width / 2) {\n direction = direction.concat(' L' + ' ' + (arrowLocation.x + arrowPadding) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (tipX + arrowPadding) + ' ' + (height + arrowPadding)\n + ' L' + ' ' + (arrowLocation.x) + ' ' + height);\n }\n else {\n direction = direction.concat(' L' + ' ' + (arrowLocation.x) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (tipX - arrowPadding) + ' ' + (height + arrowPadding)\n + ' L' + ' ' + (arrowLocation.x - arrowPadding) + ' ' + height);\n }\n }\n else {\n direction = direction.concat(' L' + ' ' + (arrowLocation.x + arrowPadding) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (tipX) + ' ' + (height + arrowPadding)\n + ' L' + ' ' + (arrowLocation.x - arrowPadding) + ' ' + height);\n }\n }\n if ((arrowLocation.x - arrowPadding) > startX) {\n direction = direction.concat(' L' + ' ' + (startX + rX) + ' ' + height + ' Q ' + startX + ' '\n + height + ' ' + (startX) + ' ' + (height - rY) + ' z');\n }\n else {\n if (arrowPadding === 0) {\n direction = direction.concat(' L' + ' ' + (startX + rX) + ' ' + height + ' Q ' + startX + ' '\n + height + ' ' + (startX) + ' ' + (height - rY) + ' z');\n }\n else {\n direction = direction.concat(' L' + ' ' + (startX) + ' ' + (height + rY) + ' z');\n }\n }\n }\n else if (bottom) {\n direction = direction.concat('M' + ' ' + (startX) + ' ' + (startY + rY) + ' Q ' + startX + ' '\n + (startY) + ' ' + (startX + rX) + ' ' + (startY) + ' L' + ' ' + (arrowLocation.x - arrowPadding) + ' ' + (startY));\n direction = direction.concat(' L' + ' ' + (tipX) + ' ' + (arrowLocation.y));\n direction = direction.concat(' L' + ' ' + (arrowLocation.x + arrowPadding) + ' ' + (startY));\n direction = direction.concat(' L' + ' ' + (width - rX) + ' ' + (startY)\n + ' Q ' + (width) + ' ' + (startY) + ' ' + (width) + ' ' + (startY + rY));\n direction = direction.concat(' L' + ' ' + (width) + ' ' + (height - rY) + ' Q ' + (width) + ' '\n + (height) + ' ' + (width - rX) + ' ' + (height) +\n ' L' + ' ' + (startX + rX) + ' ' + (height) + ' Q ' + (startX) + ' '\n + (height) + ' ' + (startX) + ' ' + (height - rY) + ' z');\n }\n else if (left) {\n direction = direction.concat('M' + ' ' + (startX) + ' ' + (startY + rY) + ' Q ' + startX + ' '\n + (startY) + ' ' + (startX + rX) + ' ' + (startY));\n direction = direction.concat(' L' + ' ' + (width - rX) + ' ' + (startY) + ' Q ' + (width) + ' '\n + (startY) + ' ' + (width) + ' ' + ((controlName === 'RangeNavigator' ? 0 : (startY + rY)) + ' L' + ' ' + (width) + ' ' + (controlName === 'RangeNavigator' ? 0 : (arrowLocation.y - arrowPadding))));\n direction = (controlName === 'RangeNavigator') ? direction.concat(' L' + ' ' + (width + arrowPadding) + ' ' + 0) :\n direction.concat(' L' + ' ' + (width + arrowPadding) + ' ' + (tipY));\n direction = (controlName === 'RangeNavigator') ? direction.concat(' L' + ' ' + (width) + ' ' + (arrowLocation.y - rY)) :\n direction.concat(' L' + ' ' + (width) + ' ' + (arrowLocation.y + arrowPadding));\n direction = direction.concat(' L' + ' ' + (width) + ' ' + (height - rY) + ' Q ' + width + ' ' + (height) + ' ' + (width - rX) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (startX + rX) + ' ' + (height) + ' Q ' + startX + ' '\n + (height) + ' ' + (startX) + ' ' + (height - rY) + ' z');\n }\n else {\n direction = direction.concat('M' + ' ' + (startX + rX) + ' ' + (startY) + ' Q ' + (startX) + ' '\n + (startY) + ' ' + (startX) + ' ' + ((controlName === 'RangeNavigator' ? 0 : (startY + rY)) + ' L' + ' ' + (startX) + ' ' + (controlName === 'RangeNavigator' ? 0 : (arrowLocation.y - arrowPadding))));\n direction = (controlName === 'RangeNavigator') ? direction.concat(' L' + ' ' + (startX - arrowPadding) + ' ' + 0) :\n direction.concat(' L' + ' ' + (startX - arrowPadding) + ' ' + (tipY));\n direction = (controlName === 'RangeNavigator') ? direction.concat(' L' + ' ' + (startX) + ' ' + (arrowLocation.y - rY)) :\n direction.concat(' L' + ' ' + (startX) + ' ' + (arrowLocation.y + arrowPadding));\n direction = direction.concat(' L' + ' ' + (startX) + ' ' + (height - rY) + ' Q ' + startX + ' '\n + (height) + ' ' + (startX + rX) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (width - rX) + ' ' + (height) + ' Q ' + width + ' '\n + (height) + ' ' + (width) + ' ' + (height - rY) +\n ' L' + ' ' + (width) + ' ' + (startY + rY) + ' Q ' + width + ' '\n + (startY) + ' ' + (width - rX) + ' ' + (startY) + ' z');\n }\n return direction;\n}\n/** @private */\nvar Size = /** @class */ (function () {\n function Size(width, height) {\n this.width = width;\n this.height = height;\n }\n return Size;\n}());\nexport { Size };\n/** @private */\nvar Rect = /** @class */ (function () {\n function Rect(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n return Rect;\n}());\nexport { Rect };\nvar Side = /** @class */ (function () {\n function Side(bottom, right) {\n this.isRight = right;\n this.isBottom = bottom;\n }\n return Side;\n}());\nexport { Side };\n/** @private */\nvar CustomizeOption = /** @class */ (function () {\n function CustomizeOption(id) {\n this.id = id;\n }\n return CustomizeOption;\n}());\nexport { CustomizeOption };\n/** @private */\nvar TextOption = /** @class */ (function (_super) {\n __extends(TextOption, _super);\n function TextOption(id, x, y, anchor, text, transform, baseLine, labelRotation) {\n if (transform === void 0) { transform = ''; }\n var _this = _super.call(this, id) || this;\n _this.transform = '';\n _this.baseLine = 'auto';\n _this.labelRotation = 0;\n _this.x = x;\n _this.y = y;\n _this.anchor = anchor;\n _this.text = text;\n _this.transform = transform;\n _this.baseLine = baseLine;\n _this.labelRotation = labelRotation;\n return _this;\n }\n return TextOption;\n}(CustomizeOption));\nexport { TextOption };\n/** @private */\nexport function getElement(id) {\n return document.getElementById(id);\n}\n/** @private */\nexport function removeElement(id) {\n var element = getElement(id);\n if (element) {\n remove(element);\n }\n}\n/** @private */\nexport function drawSymbol(location, shape, size, url, options, role, label) {\n var renderer = new SvgRenderer('');\n var temp = calculateShapes(location, size, shape, options, url);\n var htmlObject = renderer['draw' + temp.functionName](temp.renderOption);\n htmlObject.setAttribute('role', role);\n htmlObject.setAttribute('aria-label', label);\n return htmlObject;\n}\n/** @private */\nexport function calculateShapes(location, size, shape, options, url) {\n var path;\n var functionName = 'Path';\n var width = size.width;\n var height = size.height;\n var locX = location.x;\n var locY = location.y;\n var x = location.x + (-width / 2);\n var y = location.y + (-height / 2);\n switch (shape) {\n case 'Circle':\n case 'Bubble':\n functionName = 'Ellipse';\n merge(options, { 'rx': width / 2, 'ry': height / 2, 'cx': locX, 'cy': locY });\n break;\n case 'Plus':\n path = 'M' + ' ' + x + ' ' + locY + ' ' + 'L' + ' ' + (locX + (width / 2)) + ' ' + locY + ' ' +\n 'M' + ' ' + locX + ' ' + (locY + (height / 2)) + ' ' + 'L' + ' ' + locX + ' ' +\n (locY + (-height / 2));\n merge(options, { 'd': path, stroke: options.fill });\n break;\n case 'Cross':\n path = 'M' + ' ' + x + ' ' + (locY + (-height / 2)) + ' ' + 'L' + ' ' + (locX + (width / 2)) + ' ' + (locY + (height / 2)) + ' ' +\n 'M' + ' ' + x + ' ' + (locY + (height / 2)) + ' ' + 'L' + ' ' + (locX + (width / 2)) + ' ' +\n (locY + (-height / 2));\n merge(options, { 'd': path, stroke: options.fill });\n break;\n case 'HorizontalLine':\n path = 'M' + ' ' + x + ' ' + locY + ' ' + 'L' + ' ' + (locX + (width / 2)) + ' ' + locY;\n merge(options, { 'd': path, stroke: options.fill });\n break;\n case 'VerticalLine':\n path = 'M' + ' ' + locX + ' ' + (locY + (height / 2)) + ' ' + 'L' + ' ' + locX + ' ' + (locY + (-height / 2));\n merge(options, { 'd': path, stroke: options.fill });\n break;\n case 'Diamond':\n path = 'M' + ' ' + x + ' ' + locY + ' ' +\n 'L' + ' ' + locX + ' ' + (locY + (-height / 2)) + ' ' +\n 'L' + ' ' + (locX + (width / 2)) + ' ' + locY + ' ' +\n 'L' + ' ' + locX + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + locY + ' z';\n merge(options, { 'd': path });\n break;\n case 'Rectangle':\n path = 'M' + ' ' + x + ' ' + (locY + (-height / 2)) + ' ' +\n 'L' + ' ' + (locX + (width / 2)) + ' ' + (locY + (-height / 2)) + ' ' +\n 'L' + ' ' + (locX + (width / 2)) + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (locY + (-height / 2)) + ' z';\n merge(options, { 'd': path });\n break;\n case 'Triangle':\n path = 'M' + ' ' + x + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + locX + ' ' + (locY + (-height / 2)) + ' ' +\n 'L' + ' ' + (locX + (width / 2)) + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (locY + (height / 2)) + ' z';\n merge(options, { 'd': path });\n break;\n case 'InvertedTriangle':\n path = 'M' + ' ' + (locX + (width / 2)) + ' ' + (locY - (height / 2)) + ' ' +\n 'L' + ' ' + locX + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + (locX - (width / 2)) + ' ' + (locY - (height / 2)) + ' ' +\n 'L' + ' ' + (locX + (width / 2)) + ' ' + (locY - (height / 2)) + ' z';\n merge(options, { 'd': path });\n break;\n case 'Pentagon':\n var eq = 72;\n var xValue = void 0;\n var yValue = void 0;\n for (var i = 0; i <= 5; i++) {\n xValue = (width / 2) * Math.cos((Math.PI / 180) * (i * eq));\n yValue = (height / 2) * Math.sin((Math.PI / 180) * (i * eq));\n if (i === 0) {\n path = 'M' + ' ' + (locX + xValue) + ' ' + (locY + yValue) + ' ';\n }\n else {\n path = path.concat('L' + ' ' + (locX + xValue) + ' ' + (locY + yValue) + ' ');\n }\n }\n path = path.concat('Z');\n merge(options, { 'd': path });\n break;\n case 'Image':\n functionName = 'Image';\n merge(options, { 'href': url, 'height': height, 'width': width, x: x, y: y });\n break;\n case 'Star': {\n var cornerPoints = 5;\n var outerRadius = Math.min(width, height) / 2;\n var innerRadius = outerRadius / 2;\n var angle = Math.PI / cornerPoints;\n var starPath = '';\n for (var i = 0; i < 2 * cornerPoints; i++) {\n var radius = (i % 2 === 0) ? outerRadius : innerRadius;\n var currentX = locX + radius * Math.cos(i * angle - Math.PI / 2);\n var currentY = locY + radius * Math.sin(i * angle - Math.PI / 2);\n starPath += (i === 0 ? 'M' : 'L') + currentX + ',' + currentY;\n }\n starPath += 'Z';\n merge(options, { 'd': starPath });\n break;\n }\n }\n return { renderOption: options, functionName: functionName };\n}\n/** @private */\nvar PathOption = /** @class */ (function (_super) {\n __extends(PathOption, _super);\n function PathOption(id, fill, width, color, opacity, dashArray, d) {\n var _this = _super.call(this, id) || this;\n _this.opacity = opacity;\n _this.fill = fill;\n _this.stroke = color;\n _this['stroke-width'] = width;\n _this['stroke-dasharray'] = dashArray;\n _this.d = d;\n return _this;\n }\n return PathOption;\n}(CustomizeOption));\nexport { PathOption };\n/** @private */\nexport function textElement(options, font, color, parent, themeStyle) {\n var renderOptions = {};\n var renderer = new SvgRenderer('');\n renderOptions = {\n 'id': options.id,\n 'x': options.x,\n 'y': options.y,\n 'fill': color,\n 'font-size': font.size || themeStyle.size,\n 'font-style': font.fontStyle || themeStyle.fontStyle,\n 'font-family': font.fontFamily || themeStyle.fontFamily,\n 'font-weight': font.fontWeight || themeStyle.fontWeight,\n 'text-anchor': options.anchor,\n 'transform': options.transform,\n 'opacity': font.opacity,\n 'dominant-baseline': options.baseLine\n };\n var text = typeof options.text === 'string' ? options.text : options.text[0];\n var htmlObject = renderer.createText(renderOptions, text);\n if (parent) {\n parent.appendChild(htmlObject);\n }\n return htmlObject;\n}\nvar TooltipLocation = /** @class */ (function () {\n function TooltipLocation(x, y) {\n this.x = x;\n this.y = y;\n }\n return TooltipLocation;\n}());\nexport { TooltipLocation };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable security/detect-object-injection */\n/* eslint-disable no-useless-escape */\n/* eslint-disable security/detect-non-literal-regexp */\n/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable valid-jsdoc */\nimport { NotifyPropertyChanges, Property, Event, Complex, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { extend, compile as templateComplier, Component, resetBlazorTemplate, isBlazor, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '../svg-render/index';\nimport { ChildProperty, createElement, remove, Browser, Animation, animationMode } from '@syncfusion/ej2-base';\nimport { getTooltipThemeColor } from './interface';\nimport { Size, Rect, Side, measureText, getElement, findDirection, drawSymbol, textElement } from './helper';\nimport { removeElement, TextOption, TooltipLocation, PathOption, withInAreaBounds } from './helper';\n/**\n * Configures the fonts in charts.\n *\n * @private\n */\nvar TextStyle = /** @class */ (function (_super) {\n __extends(TextStyle, _super);\n function TextStyle() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], TextStyle.prototype, \"size\", void 0);\n __decorate([\n Property('')\n ], TextStyle.prototype, \"color\", void 0);\n __decorate([\n Property('Segoe UI')\n ], TextStyle.prototype, \"fontFamily\", void 0);\n __decorate([\n Property('Normal')\n ], TextStyle.prototype, \"fontWeight\", void 0);\n __decorate([\n Property('Normal')\n ], TextStyle.prototype, \"fontStyle\", void 0);\n __decorate([\n Property(1)\n ], TextStyle.prototype, \"opacity\", void 0);\n __decorate([\n Property(null)\n ], TextStyle.prototype, \"headerTextSize\", void 0);\n __decorate([\n Property(null)\n ], TextStyle.prototype, \"boldTextSize\", void 0);\n return TextStyle;\n}(ChildProperty));\nexport { TextStyle };\n/**\n * Configures the borders in the chart.\n *\n * @private\n */\nvar TooltipBorder = /** @class */ (function (_super) {\n __extends(TooltipBorder, _super);\n function TooltipBorder() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], TooltipBorder.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], TooltipBorder.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], TooltipBorder.prototype, \"dashArray\", void 0);\n return TooltipBorder;\n}(ChildProperty));\nexport { TooltipBorder };\n/**\n * Configures the borders in the chart.\n *\n * @private\n */\nvar AreaBounds = /** @class */ (function (_super) {\n __extends(AreaBounds, _super);\n function AreaBounds() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], AreaBounds.prototype, \"x\", void 0);\n __decorate([\n Property(0)\n ], AreaBounds.prototype, \"y\", void 0);\n __decorate([\n Property(0)\n ], AreaBounds.prototype, \"width\", void 0);\n __decorate([\n Property(0)\n ], AreaBounds.prototype, \"height\", void 0);\n return AreaBounds;\n}(ChildProperty));\nexport { AreaBounds };\n/**\n * Configures the borders in the chart.\n *\n * @private\n */\nvar ToolLocation = /** @class */ (function (_super) {\n __extends(ToolLocation, _super);\n function ToolLocation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], ToolLocation.prototype, \"x\", void 0);\n __decorate([\n Property(0)\n ], ToolLocation.prototype, \"y\", void 0);\n return ToolLocation;\n}(ChildProperty));\nexport { ToolLocation };\n/**\n * Represents the Tooltip control.\n * ```html\n *
\n * \n * ```\n *\n * @private\n */\nvar Tooltip = /** @class */ (function (_super) {\n __extends(Tooltip, _super);\n /**\n * Constructor for creating the widget\n *\n * @hidden\n */\n function Tooltip(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler.\n *\n * @private\n */\n Tooltip.prototype.preRender = function () {\n this.allowServerDataBinding = false;\n this.initPrivateVariable();\n if (!this.isCanvas) {\n this.removeSVG();\n }\n this.createTooltipElement();\n };\n Tooltip.prototype.initPrivateVariable = function () {\n this.renderer = new SvgRenderer(this.element.id);\n this.themeStyle = getTooltipThemeColor(this.theme);\n this.formattedText = [];\n this.padding = 5;\n this.highlightPadding = 3;\n this.areaMargin = 10;\n this.isFirst = true;\n this.markerPoint = [];\n };\n Tooltip.prototype.removeSVG = function () {\n var svgObject = document.getElementById(this.element.id + '_svg');\n var templateObject = document.getElementById(this.element.id + 'parent_template');\n if (this.blazorTemplate) {\n resetBlazorTemplate(this.element.id + 'parent_template' + '_blazorTemplate');\n }\n if (svgObject && svgObject.parentNode) {\n remove(svgObject);\n }\n if (templateObject && templateObject.parentNode) {\n remove(templateObject);\n }\n };\n /**\n * To Initialize the control rendering.\n */\n Tooltip.prototype.render = function () {\n this.fadeOuted = false;\n if (!this.template) {\n this.renderText(this.isFirst);\n var argsData = {\n cancel: false, name: 'tooltipRender', tooltip: this\n };\n this.trigger('tooltipRender', argsData);\n var markerSide = this.renderTooltipElement(this.areaBounds, this.location);\n this.drawMarker(markerSide.isBottom, markerSide.isRight, this.markerSize);\n }\n else {\n this.updateTemplateFn();\n this.createTemplate(this.areaBounds, this.location);\n }\n this.trigger('loaded', { tooltip: this });\n var element = document.getElementById('chartmeasuretext');\n if (element) {\n remove(element);\n }\n this.allowServerDataBinding = true;\n };\n Tooltip.prototype.createTooltipElement = function () {\n this.textElements = [];\n if (!this.template || this.shared) {\n // SVG element for tooltip\n if (this.enableRTL) {\n this.element.setAttribute('dir', 'ltr');\n }\n var svgObject = this.renderer.createSvg({ id: this.element.id + '_svg' });\n this.element.appendChild(svgObject);\n // Group to hold text and path.\n var groupElement = document.getElementById(this.element.id + '_group');\n if (!groupElement) {\n groupElement = this.renderer.createGroup({ id: this.element.id + '_group' });\n groupElement.setAttribute('transform', 'translate(0,0)');\n }\n svgObject.appendChild(groupElement);\n var pathElement = this.renderer.drawPath({\n 'id': this.element.id + '_path', 'stroke-width': ((this.theme === 'Fabric' || this.theme === 'Fluent' || this.theme === 'Fluent2' || this.theme === 'Fluent2HighContrast') && !this.border.width) ? 1 : this.border.width,\n 'fill': this.fill || this.themeStyle.tooltipFill, 'opacity': ((this.theme === 'TailwindDark' || this.theme === 'Tailwind' || this.theme === 'Bootstrap5' || this.theme === 'Bootstrap5Dark' || this.theme.indexOf('Fluent2') > -1) && this.opacity === 0.75) ?\n 1 : this.opacity,\n 'stroke': this.border.color || (this.theme === 'Fabric' || this.theme === 'Fluent' || this.theme === 'Fluent2' ? '#D2D0CE' : this.border.color)\n });\n groupElement.appendChild(pathElement);\n }\n };\n Tooltip.prototype.drawMarker = function (isBottom, isRight, size) {\n if (this.shapes.length <= 0) {\n return null;\n }\n var shapeOption;\n var count = 0;\n var markerGroup = this.renderer.createGroup({ id: this.element.id + '_trackball_group' });\n var groupElement = getElement(this.element.id + '_group');\n if (!groupElement) {\n return null;\n }\n var x = ((this.enableRTL) ? this.elementSize.width - (size / 2) :\n (this.marginX * 2) + (size / 2)) + (isRight ? this.arrowPadding : 0);\n for (var _i = 0, _a = this.shapes; _i < _a.length; _i++) {\n var shape = _a[_i];\n if (shape !== 'None') {\n shapeOption = new PathOption(this.element.id + '_Trackball_' + count, this.palette[count], 1, '#cccccc', 1, null);\n if (this.markerPoint[count]) {\n var padding = 0;\n if (this.header.indexOf(' -1) {\n padding = this.header.split(//g).length + count;\n }\n var tooltipContent = (this.formattedText && this.formattedText.length >= 2)\n ? this.getTooltipTextContent(this.formattedText[1]) + \", \" + this.getTooltipTextContent(this.formattedText[0])\n : '';\n markerGroup.appendChild(drawSymbol(new TooltipLocation(x, this.markerPoint[count] - this.padding + (isBottom ? this.arrowPadding : padding)), shape, new Size(size, size), '', shapeOption, 'img', tooltipContent));\n }\n count++;\n }\n }\n groupElement.appendChild(markerGroup);\n };\n Tooltip.prototype.renderTooltipElement = function (areaBounds, location) {\n var tooltipDiv = getElement(this.element.id);\n var arrowLocation = new TooltipLocation(0, 0);\n var tipLocation = new TooltipLocation(0, 0);\n var svgObject = getElement(this.element.id + '_svg');\n var groupElement = getElement(this.element.id + '_group');\n var pathElement = getElement(this.element.id + '_path');\n var rect;\n var isTop = false;\n var isLeft = false;\n var isBottom = false;\n var x = 0;\n var y = 0;\n if (!isNullOrUndefined(groupElement)) {\n if (this.header !== '') {\n this.elementSize.height += this.marginY;\n }\n if (this.isFixed) {\n var width = this.elementSize.width + (2 * this.marginX);\n var height = this.elementSize.height + (2 * this.marginY);\n rect = new Rect(location.x, location.y, width, height);\n }\n else if (this.content.length > 1) {\n rect = this.sharedTooltipLocation(areaBounds, this.location.x, this.location.y);\n isTop = true;\n }\n else {\n rect = this.tooltipLocation(areaBounds, location, arrowLocation, tipLocation);\n if (!this.inverted) {\n isTop = (rect.y < (location.y + this.clipBounds.y));\n isBottom = !isTop;\n y = (isTop ? 0 : this.arrowPadding);\n }\n else {\n isLeft = (rect.x < (location.x + this.clipBounds.x));\n x = (isLeft ? 0 : this.arrowPadding);\n if (this.allowHighlight) {\n rect.x += isLeft ? this.highlightPadding : -(2 * this.highlightPadding);\n }\n }\n }\n if (this.header !== '') {\n var wrapPadding = 2;\n var padding = 0;\n var wrapHeader = this.isWrap ? this.wrappedText : this.header;\n if (this.isWrap && typeof (wrapHeader) === 'string' && (wrapHeader.indexOf('<') > -1 || wrapHeader.indexOf('>') > -1)) {\n var textArray = wrapHeader.split('
');\n wrapPadding = textArray.length;\n }\n if (this.header.indexOf(' -1) {\n padding = 5 * (this.header.split(//g).length - 1);\n }\n var key = 'properties';\n var font = extend({}, this.textStyle, null, true)[key];\n var headerSize = measureText(this.isWrap ? this.wrappedText : this.header, font, this.themeStyle.textStyle).height\n + (this.marginY * wrapPadding) + (isBottom ? this.arrowPadding : 0) + (this.isWrap ? 5 : padding); //header padding;\n var xLength = (this.marginX * 3) + (!isLeft && !isTop && !isBottom ? this.arrowPadding : 0);\n var direction = 'M ' + xLength + ' ' + headerSize +\n 'L ' + (rect.width + (!isLeft && !isTop && !isBottom ? this.arrowPadding : 0) - (this.marginX * 2)) +\n ' ' + headerSize;\n var pathElement_1 = this.renderer.drawPath({\n 'id': this.element.id + '_header_path', 'stroke-width': 1,\n 'fill': null, 'opacity': this.theme === 'Material3' || this.theme === 'Material3Dark' ? 0.2 : 0.8, 'stroke': this.themeStyle.tooltipHeaderLine, 'd': direction\n });\n groupElement.appendChild(pathElement_1);\n }\n var start = this.border.width / 2;\n var pointRect = new Rect(start + x, start + y, rect.width - start, rect.height - start);\n groupElement.setAttribute('opacity', '1');\n if (this.enableAnimation && !this.isFirst && !this.crosshair) {\n this.animateTooltipDiv(tooltipDiv, rect);\n }\n else {\n this.updateDiv(tooltipDiv, rect.x, rect.y);\n }\n // eslint-disable-next-line no-extra-boolean-cast\n svgObject.setAttribute('height', (rect.height + this.border.width + (!((!this.inverted)) ? 0 : this.arrowPadding) + 5).toString());\n svgObject.setAttribute('width', (rect.width + this.border.width + (((!this.inverted)) ? 0 : this.arrowPadding) + 5).toString());\n svgObject.setAttribute('opacity', '1');\n if (!isNullOrUndefined(this.tooltipPlacement)) {\n isTop = this.tooltipPlacement.indexOf('Top') > -1;\n isBottom = this.tooltipPlacement.indexOf('Bottom') > -1;\n isLeft = this.tooltipPlacement.indexOf('Left') > -1;\n }\n pathElement.setAttribute('d', findDirection(this.rx, this.ry, pointRect, arrowLocation, this.arrowPadding, isTop, isBottom, isLeft, tipLocation.x, tipLocation.y, this.controlName));\n if ((this.enableShadow && this.theme !== 'Bootstrap4') || this.theme.indexOf('Fluent2') > -1) {\n // To fix next chart initial tooltip opacity issue in tab control\n var shadowId = this.element.id + '_shadow';\n if (this.theme === 'Tailwind' || this.theme === 'TailwindDark'\n || this.theme === 'Bootstrap5' || this.theme === 'Bootstrap5Dark') {\n pathElement.setAttribute('box-shadow', '0px 1px 2px rgba(0, 0, 0, 0.06), 0px 1px 3px rgba(0, 0, 0, 0.1)');\n }\n else {\n pathElement.setAttribute('filter', Browser.isIE ? '' : 'url(#' + shadowId + ')');\n }\n var shadow = '';\n if (this.theme.indexOf('Fluent2') > -1) {\n shadow += '';\n }\n else {\n shadow += '';\n }\n shadow += '';\n var defElement = this.renderer.createDefs();\n defElement.setAttribute('id', this.element.id + 'SVG_tooltip_definition');\n groupElement.appendChild(defElement);\n defElement.innerHTML = shadow;\n }\n var borderColor = ((this.theme === 'Fabric' || this.theme === 'Fluent' || this.theme === 'Fluent2') && !this.border.color) ? '#D2D0CE' : this.theme === 'Fluent2HighContrast' ? '#FFFFFF' : this.border.color;\n pathElement.setAttribute('stroke', borderColor);\n if (!isNullOrUndefined(this.border.dashArray)) {\n pathElement.setAttribute('stroke-dasharray', this.border.dashArray);\n }\n this.changeText(new TooltipLocation(x, y), isBottom, !isLeft && !isTop && !isBottom);\n if (this.revert) {\n this.inverted = !this.inverted;\n this.revert = false;\n }\n }\n return new Side(isBottom, !isLeft && !isTop && !isBottom);\n };\n Tooltip.prototype.changeText = function (point, isBottom, isRight) {\n var element = document.getElementById(this.element.id + '_text');\n if (isBottom) {\n element.setAttribute('transform', 'translate(0,' + this.arrowPadding + ')');\n }\n if (isRight) {\n element.setAttribute('transform', 'translate(' + this.arrowPadding + ' 0)');\n }\n };\n Tooltip.prototype.findFormattedText = function () {\n this.formattedText = [];\n if (this.header.replace(//g, '').replace(/<\\/b>/g, '').trim() !== '') {\n this.formattedText = this.formattedText.concat(this.header);\n }\n this.formattedText = this.formattedText.concat(this.content);\n };\n // tslint:disable-next-line:max-func-body-length\n Tooltip.prototype.renderText = function (isRender) {\n var height = 0;\n var width = 0; // Padding for text;\n var subWidth = 0;\n var lines;\n var key = 'properties';\n var font = extend({}, this.textStyle, null, true)[key];\n var groupElement = getElement(this.element.id + '_group');\n var tspanElement;\n var textCollection;\n var tspanStyle = '';\n var line;\n var tspanOption;\n this.findFormattedText();\n this.isWrap = false;\n var isRtlEnabled = document.body.getAttribute('dir') === 'rtl';\n var anchor = isRtlEnabled && !this.enableRTL ? 'end' : 'start';\n this.leftSpace = this.areaBounds.x + this.location.x;\n this.rightSpace = (this.areaBounds.x + this.areaBounds.width) - this.leftSpace;\n var headerContent = this.header.replace(//g, '').replace(/<\\/b>/g, '').trim();\n var isBoldTag = this.header.indexOf('') > -1 && this.header.indexOf('') > -1;\n var headerWidth = measureText(this.formattedText[0], font, this.themeStyle.textStyle).width\n + (2 * this.marginX) + this.arrowPadding;\n var isLeftSpace = (this.location.x - headerWidth) < this.location.x;\n var isRightSpace = (this.areaBounds.x + this.areaBounds.width) < (this.location.x + headerWidth);\n var header;\n var headerSpace = (headerContent !== '') ? this.marginY : 0;\n var isRow = true;\n var isColumn = true;\n this.markerPoint = [];\n var markerSize = (this.shapes.length > 0) ? 10 : 0;\n var markerPadding = (this.shapes.length > 0) ? 5 : 0;\n var spaceWidth = 4;\n var subStringLength;\n var fontSize = '12px';\n var fontWeight = '400';\n var labelColor = this.themeStyle.tooltipLightLabel;\n var dy = (22 / parseFloat(fontSize)) * (parseFloat(font.size || this.themeStyle.textStyle.size));\n var contentWidth = [];\n var textHeight = 0;\n if (!isRender || this.isCanvas) {\n removeElement(this.element.id + '_text');\n removeElement(this.element.id + '_header_path');\n removeElement(this.element.id + '_trackball_group');\n removeElement(this.element.id + 'SVG_tooltip_definition');\n }\n // Condition to resolve the text size issue only in chart.\n if (this.controlName === 'Chart' && parseFloat(fontSize) < parseFloat(font.size || this.themeStyle.textStyle.headerTextSize)) {\n textHeight = (parseFloat(font.size || this.themeStyle.textStyle.size) - parseFloat(fontSize));\n }\n var options = new TextOption(this.element.id + '_text', this.marginX * 2, (textHeight + this.marginY * 2 + this.padding * 2 + (this.marginY === 2 ? this.controlName === 'RangeNavigator' ? 5 : 3 : 0)), anchor, '');\n var parentElement = textElement(options, font, font.color || this.themeStyle.tooltipBoldLabel, groupElement, this.themeStyle.textStyle);\n var withoutHeader = this.formattedText.length === 1 && this.formattedText[0].indexOf(' : ') > -1;\n var isHeader = this.header !== '';\n var size = isHeader && isBoldTag ? 16 : 13;\n for (var k = 0, pointsLength = this.formattedText.length; k < pointsLength; k++) {\n textCollection = this.formattedText[k].replace(/<(b|strong)>/g, '')\n .replace(/<\\/(b|strong)>/g, '')\n .split(//g);\n if (this.isTextWrap && this.header !== this.formattedText[k] && this.formattedText[k].indexOf(' this.rightSpace ? (this.leftSpace / size) : (this.rightSpace / size));\n textCollection = this.formattedText[k].match(new RegExp('.{1,' + subStringLength + '}', 'g'));\n }\n if (k === 0 && !withoutHeader && this.isTextWrap &&\n (this.leftSpace < headerWidth || isLeftSpace) &&\n (this.rightSpace < headerWidth || isRightSpace)) {\n subStringLength = Math.round(this.leftSpace > this.rightSpace ? (this.leftSpace / size) : (this.rightSpace / size));\n header = headerContent !== '' ? headerContent : this.formattedText[k];\n textCollection = header.match(new RegExp('.{1,' + subStringLength + '}', 'g'));\n this.wrappedText = isBoldTag ? '' + textCollection.join('
') + '
' : textCollection.join('
');\n this.isWrap = textCollection.length > 1;\n }\n if (textCollection[0] === '') {\n continue;\n }\n if ((k !== 0) || (headerContent === '')) {\n this.markerPoint.push((headerContent !== '' ? (this.marginY) : 0) + options.y + height - (textHeight !== 0 ? ((textHeight / this.markerSize) * (parseFloat(font.size || this.themeStyle.textStyle.headerTextSize) / this.markerSize)) : 0));\n }\n for (var i = 0, len = textCollection.length; i < len; i++) { // string value of unicode for LTR is \\u200E\n lines = textCollection[i].replace(//g, '
').replace(/<\\/b>/g, '
').replace(/:/g, (this.enableRTL) ? '
\\u200E:
' : '
\\u200E:
')\n .split('
');\n if (this.enableRTL && lines.length > 0 && textCollection[i].match(/:/g)) {\n lines[0] = lines[0].trim();\n lines.reverse();\n }\n subWidth = 0;\n isColumn = true;\n height += dy;\n for (var j = 0, len_1 = lines.length; j < len_1; j++) {\n line = lines[j];\n if (this.enableRTL && line !== '' && this.isRTLText(line)) {\n line = line.concat('\\u200E');\n }\n if (!/\\S/.test(line) && line !== '') {\n line = ' '; //to trim multiple white spaces to single white space\n }\n if ((!isColumn && line === ' ') || (line.replace(//g, '').replace(/<\\/b>/g, '').trim() !== '')) {\n subWidth += line !== ' ' ? spaceWidth : 0;\n if (isColumn && !isRow) {\n if (this.header.indexOf(' -1 && k !== 0) {\n headerSpace += this.header.split(//g).length;\n }\n tspanOption = {\n x: (this.marginX * 2) + (markerSize + markerPadding),\n dy: dy + ((isColumn) ? headerSpace : 0), fill: ''\n };\n headerSpace = null;\n }\n else {\n if (isRow && isColumn) {\n tspanOption = {\n x: (headerContent === '') ? ((this.marginX * 2) + (markerSize + markerPadding))\n : (this.marginX * 2) + (this.isWrap ? (markerSize + markerPadding) : 0)\n };\n }\n else {\n tspanOption = {};\n }\n }\n isColumn = false;\n tspanElement = this.renderer.createTSpan(tspanOption, '');\n parentElement.appendChild(tspanElement);\n if (line.indexOf('') > -1 || ((isBoldTag && j === 0 && k === 0) && (isHeader || this.isWrap))) {\n fontWeight = '600';\n labelColor = this.themeStyle.tooltipBoldLabel;\n tspanStyle = 'font-weight:' + fontWeight;\n font.fontWeight = fontWeight;\n (tspanElement).setAttribute('fill', this.textStyle.color || labelColor);\n }\n else {\n tspanStyle = fontWeight === '600' ? 'font-weight:' + fontWeight : '';\n font.fontWeight = fontWeight;\n (tspanElement).setAttribute('fill', this.textStyle.color || labelColor);\n }\n if (line.indexOf('') > -1 || ((isBoldTag && j === len_1 - 1 && k === 0) && (isHeader || this.isWrap))) {\n fontWeight = 'Normal';\n labelColor = this.themeStyle.tooltipLightLabel;\n }\n // eslint-disable-next-line no-useless-escape\n if (tspanStyle !== '') {\n tspanElement.style.fontWeight = tspanStyle.split('font-weight:')[1];\n tspanElement.style.color = tspanElement.getAttribute('fill');\n }\n // 'inherit' will apply css style from parent element.\n tspanElement.style.fontFamily = 'inherit';\n tspanElement.style.fontStyle = 'inherit';\n tspanElement.style.fontSize = (this.header === this.formattedText[k]) ? font.size || this.themeStyle.textStyle.headerTextSize : (line.indexOf('') > -1 || line.indexOf('') > -1) ? font.size || this.themeStyle.textStyle.boldTextSize : font.size || this.themeStyle.textStyle.size;\n tspanElement.style.fontWeight = (this.header === this.formattedText[k] && (this.header.indexOf('') || this.header.indexOf('')) === -1) ? (this.textStyle.fontWeight || '600') : line.indexOf('') > -1 || line.indexOf('') > -1 ? this.theme.indexOf('Bootstrap5') > -1 ? this.textStyle.fontWeight || '600' : 'bold' : ((line.indexOf('') === -1 || line.indexOf('') === -1) && this.theme.indexOf('Bootstrap5') > -1) ? this.textStyle.fontWeight || '600' : (this.textStyle.fontWeight || font.fontWeight);\n var textFont = extend({}, this.textStyle, null, true)[key];\n textFont.fontWeight = tspanElement.style.fontWeight;\n textFont.size = tspanElement.style.fontSize;\n isRow = false;\n (tspanElement).textContent = line = this.getTooltipTextContent(line);\n subWidth += measureText(line, textFont, this.themeStyle.textStyle).width;\n }\n }\n subWidth -= spaceWidth;\n width = Math.max(width, subWidth);\n contentWidth.push(subWidth);\n }\n }\n this.elementSize = new Size(width + (width > 0 ? (2 * this.marginX) : 0), height);\n this.elementSize.width += (markerSize + markerPadding); // marker size + marker Spacing\n var element = (parentElement.childNodes[0]);\n if (headerContent !== '' && element && !this.isWrap) {\n font.fontWeight = '600';\n var width_1 = (this.elementSize.width + (2 * this.padding)) / 2 - measureText(headerContent, font, this.themeStyle.textStyle, true).width\n / 2;\n element.setAttribute('x', width_1.toString());\n }\n this.renderContentRTL(parentElement, isHeader, markerSize + markerPadding, contentWidth);\n };\n Tooltip.prototype.renderContentRTL = function (textElement, isHeader, markerSize, contentWidth) {\n if (this.enableRTL) {\n var tspanElement = void 0;\n var contentWidthIndex = isHeader ? 1 : 0;\n for (var i = 0; i < textElement.childNodes.length; i++) {\n tspanElement = (textElement.childNodes[i]);\n if ((!isHeader || i > 0) && !isNullOrUndefined(tspanElement.getAttribute('x'))) {\n tspanElement.setAttribute('x', (this.elementSize.width - (markerSize + contentWidth[contentWidthIndex])).toString());\n contentWidthIndex++;\n }\n }\n }\n };\n Tooltip.prototype.getTooltipTextContent = function (tooltipText) {\n var characterCollection = tooltipText.match(/<[a-zA-Z\\/](.|\\n)*?>/g);\n if (isNullOrUndefined(characterCollection)) {\n return tooltipText;\n }\n var isRtlText = this.isRTLText(tooltipText);\n for (var i = 0; i < characterCollection.length; i++) {\n if (this.isValidHTMLElement(characterCollection[i].replace('<', '').replace('/', '').replace('>', '').trim())) {\n tooltipText = tooltipText.replace(characterCollection[i], isRtlText ? '\\u200E' : '');\n }\n }\n return tooltipText;\n };\n Tooltip.prototype.isValidHTMLElement = function (element) {\n return document.createElement(element).toString() !== '[object HTMLUnknownElement]';\n };\n Tooltip.prototype.isRTLText = function (tooltipContent) {\n return /[\\u0590-\\u07FF\\u200F\\u202B\\u202E\\uFB1D-\\uFDFD\\uFE70-\\uFEFC]/.test(tooltipContent);\n };\n Tooltip.prototype.createTemplate = function (areaBounds, location) {\n var argsData = { cancel: false, name: 'tooltipRender', tooltip: this };\n this.trigger('tooltipRender', argsData);\n var parent = document.getElementById(this.element.id);\n if (this.isCanvas) {\n this.removeSVG();\n }\n var firstElement = parent.firstElementChild;\n if (firstElement) {\n remove(firstElement);\n }\n if (!argsData.cancel) {\n var elem = createElement('div', { id: this.element.id + 'parent_template' });\n var templateElement = void 0;\n if (this.controlName === 'Chart' && this.shared) {\n for (var i = 0; i < this.data.length; i++) {\n var sharedTemplateElement = this.templateFn(this.data[i], this.controlInstance, elem.id, elem.id + '_blazorTemplate', '');\n if (i === 0) {\n templateElement = sharedTemplateElement;\n }\n else {\n if (sharedTemplateElement.length > 1) {\n templateElement[i].outerHTML = sharedTemplateElement[i].outerHTML || sharedTemplateElement[i].textContent;\n }\n else {\n templateElement[templateElement.length - 1].outerHTML += sharedTemplateElement[0].outerHTML;\n }\n }\n }\n }\n else {\n templateElement = this.templateFn(this.data, this.controlInstance, elem.id, elem.id + '_blazorTemplate', '');\n }\n while (templateElement && templateElement.length > 0) {\n if (isBlazor() || templateElement.length === 1) {\n elem.appendChild(templateElement[0]);\n templateElement = null;\n }\n else {\n elem.appendChild(templateElement[0]);\n }\n }\n parent.appendChild(elem);\n var element = this.isCanvas ? elem : this.element;\n var rect = element.getBoundingClientRect();\n this.padding = 0;\n this.elementSize = new Size(rect.width, rect.height);\n var tooltipRect = this.shared ? this.sharedTooltipLocation(areaBounds, this.location.x, this.location.y)\n : this.tooltipLocation(areaBounds, location, new TooltipLocation(0, 0), new TooltipLocation(0, 0));\n if (this.enableAnimation && !this.isFirst && !this.crosshair) {\n this.animateTooltipDiv(this.element, tooltipRect);\n }\n else {\n this.updateDiv(element, tooltipRect.x, tooltipRect.y);\n }\n if (this.blazorTemplate) {\n //Customer issue - F149037 Call back function to handle the blazor tooltip alignment issues\n var tooltipRendered = function () {\n var rect1 = getElement(thisObject_1.element.id).getBoundingClientRect();\n thisObject_1.elementSize = new Size(rect1.width, rect1.height);\n var tooltipRect1 = thisObject_1.tooltipLocation(areaBounds, location, new TooltipLocation(0, 0), new TooltipLocation(0, 0));\n thisObject_1.updateDiv(getElement(thisObject_1.element.id), tooltipRect1.x, tooltipRect1.y);\n };\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisObject_1 = this;\n tooltipRendered.bind(thisObject_1, areaBounds, location);\n updateBlazorTemplate(this.element.id + 'parent_template' + '_blazorTemplate', this.blazorTemplate.name, this.blazorTemplate.parent, undefined, tooltipRendered);\n }\n }\n else {\n remove(getElement(this.element.id + '_tooltip'));\n }\n };\n Tooltip.prototype.sharedTooltipLocation = function (bounds, x, y) {\n var width = this.elementSize.width + (2 * this.marginX);\n var height = this.elementSize.height + (2 * this.marginY);\n var tooltipRect = new Rect(x + 2 * this.padding, y - height - this.padding, width, height);\n if (tooltipRect.y < bounds.y) {\n tooltipRect.y += (tooltipRect.height + 2 * this.padding);\n }\n if (tooltipRect.y + tooltipRect.height > bounds.y + bounds.height) {\n tooltipRect.y = Math.max((bounds.y + bounds.height) - (tooltipRect.height + 2 * this.padding), bounds.y);\n }\n if (tooltipRect.x + tooltipRect.width > bounds.x + bounds.width) {\n tooltipRect.x = (bounds.x + this.location.x) - (tooltipRect.width + 4 * this.padding);\n }\n if (tooltipRect.x < bounds.x) {\n tooltipRect.x = bounds.x;\n }\n return tooltipRect;\n };\n /** @private */\n Tooltip.prototype.getCurrentPosition = function (bounds, symbolLocation, arrowLocation, tipLocation) {\n var position = this.tooltipPlacement;\n var clipX = this.clipBounds.x;\n var clipY = this.clipBounds.y;\n var markerHeight = this.offset;\n var width = this.elementSize.width + (2 * this.marginX);\n var height = this.elementSize.height + (2 * this.marginY);\n var location = new TooltipLocation(symbolLocation.x, symbolLocation.y);\n if (position === 'Top' || position === 'Bottom') {\n location = new TooltipLocation(location.x + clipX - this.elementSize.width / 2 - this.padding, location.y + clipY - this.elementSize.height - (2 * this.padding) - this.arrowPadding - markerHeight);\n arrowLocation.x = tipLocation.x = width / 2;\n if (position === 'Bottom') {\n location.y = symbolLocation.y + clipY + markerHeight;\n }\n if (bounds.x + bounds.width < location.x + width) {\n location.x = (bounds.width > width) ? ((bounds.x + bounds.width) - width + 6) : bounds.x;\n arrowLocation.x = tipLocation.x = (bounds.width > width) ? (bounds.x + symbolLocation.x - location.x) : symbolLocation.x;\n }\n else if (bounds.x > location.x) {\n location.x = bounds.x;\n arrowLocation.x = tipLocation.x = symbolLocation.x;\n }\n }\n else {\n location = new TooltipLocation(location.x + clipX + markerHeight, location.y + clipY - this.elementSize.height / 2 - (this.padding));\n arrowLocation.y = tipLocation.y = height / 2;\n if (position === 'Left') {\n location.x = symbolLocation.x + clipX - markerHeight - (width + this.arrowPadding);\n }\n if (bounds.y + bounds.height < location.y + height) {\n location.y = (bounds.height > height) ? ((bounds.y + bounds.height) - height + 6) : bounds.y;\n arrowLocation.y = tipLocation.y = (bounds.height > height) ? (bounds.y + symbolLocation.y - location.y) : symbolLocation.y;\n }\n else if (bounds.y > location.y) {\n location.y = bounds.y;\n arrowLocation.y = tipLocation.y = symbolLocation.y;\n }\n }\n return new Rect(location.x, location.y, width, height);\n };\n // tslint:disable-next-line:max-func-body-length\n /** @private */\n Tooltip.prototype.tooltipLocation = function (bounds, symbolLocation, arrowLocation, tipLocation) {\n if (!isNullOrUndefined(this.tooltipPlacement)) {\n var tooltipRect = this.getCurrentPosition(bounds, symbolLocation, arrowLocation, tipLocation);\n return tooltipRect;\n }\n var location = new TooltipLocation(symbolLocation.x, symbolLocation.y);\n var width = this.elementSize.width + (2 * this.marginX);\n var height = this.elementSize.height + (2 * this.marginY);\n var markerHeight = this.offset;\n var clipX = this.clipBounds.x;\n var clipY = this.clipBounds.y;\n var boundsX = bounds.x;\n var boundsY = bounds.y;\n this.outOfBounds = false;\n if (!this.inverted) {\n location = new TooltipLocation(location.x + clipX - this.elementSize.width / 2 - this.padding, location.y + clipY - this.elementSize.height - (2 * (this.allowHighlight ? this.highlightPadding : this.padding)) -\n this.arrowPadding - markerHeight);\n arrowLocation.x = tipLocation.x = width / 2;\n if ((location.y < boundsY || (this.isNegative)) && !(this.controlName === 'Progressbar')) {\n location.y = (symbolLocation.y < 0 ? 0 : symbolLocation.y) + clipY + markerHeight;\n }\n if (location.y + height + this.arrowPadding > boundsY + bounds.height) {\n location.y = Math.min(symbolLocation.y, boundsY + bounds.height) + clipY\n - this.elementSize.height - (2 * this.padding) - this.arrowPadding - markerHeight;\n }\n if (((location.x + width > boundsX + bounds.width) && location.y < boundsY || (this.isNegative)) && !(this.controlName === 'Progressbar')) {\n location.y = (symbolLocation.y < 0 ? 0 : symbolLocation.y) + clipY + markerHeight;\n }\n tipLocation.x = width / 2;\n if (location.x < boundsX && !(this.controlName === 'Progressbar')) {\n arrowLocation.x -= (boundsX - location.x);\n tipLocation.x -= (boundsX - location.x);\n location.x = boundsX;\n }\n if (location.x + width > boundsX + bounds.width && !(this.controlName === 'Progressbar')) {\n arrowLocation.x += ((location.x + width) - (boundsX + bounds.width));\n tipLocation.x += ((location.x + width) - (boundsX + bounds.width));\n location.x -= ((location.x + width) - (boundsX + bounds.width));\n }\n if (location.x < boundsX && !(this.controlName === 'Progressbar')) {\n arrowLocation.x -= (boundsX - location.x);\n tipLocation.x -= (boundsX - location.x);\n location.x = boundsX;\n }\n if (arrowLocation.x + this.arrowPadding > width - this.rx) {\n arrowLocation.x = width - this.rx - this.arrowPadding;\n tipLocation.x = width - this.rx - this.arrowPadding;\n }\n if (arrowLocation.x - this.arrowPadding < this.rx) {\n arrowLocation.x = tipLocation.x = this.rx + this.arrowPadding;\n }\n if (this.controlName === 'Chart') {\n if (((bounds.x + bounds.width) - (location.x + arrowLocation.x)) < this.areaMargin + this.arrowPadding ||\n (location.x + arrowLocation.x) < this.areaMargin + this.arrowPadding) {\n this.outOfBounds = true;\n }\n if (this.template && (location.y < 0)) {\n location.y = symbolLocation.y + clipY + markerHeight;\n }\n if (!withInAreaBounds(location.x, location.y, bounds) || this.outOfBounds) {\n this.inverted = !this.inverted;\n this.revert = true;\n location = new TooltipLocation(symbolLocation.x + markerHeight + clipX, symbolLocation.y + clipY - this.elementSize.height / 2 - (this.padding));\n tipLocation.x = arrowLocation.x = 0;\n tipLocation.y = arrowLocation.y = height / 2;\n if ((location.x + this.arrowPadding + width > boundsX + bounds.width) || (this.isNegative)) {\n location.x = (symbolLocation.x > boundsX + bounds.width ? bounds.width : symbolLocation.x)\n + clipX - markerHeight - (this.arrowPadding + width);\n }\n if (location.x < boundsX) {\n location.x = (symbolLocation.x < 0 ? 0 : symbolLocation.x) + markerHeight + clipX;\n }\n if (location.y <= boundsY) {\n tipLocation.y -= (boundsY - location.y);\n arrowLocation.y -= (boundsY - location.y);\n location.y = boundsY;\n }\n if (location.y + height >= bounds.height + boundsY) {\n arrowLocation.y += ((location.y + height) - (bounds.height + boundsY));\n tipLocation.y += ((location.y + height) - (bounds.height + boundsY));\n location.y -= ((location.y + height) - (bounds.height + boundsY));\n }\n if ((this.arrowPadding) + arrowLocation.y > height - this.ry) {\n arrowLocation.y = height - this.arrowPadding - this.ry;\n tipLocation.y = height;\n }\n if (arrowLocation.y - this.arrowPadding < this.ry) {\n arrowLocation.y = (this.arrowPadding) + this.ry;\n tipLocation.y = 0;\n }\n }\n }\n }\n else {\n location = new TooltipLocation(location.x + clipX + markerHeight, location.y + clipY - this.elementSize.height / 2 - (this.padding));\n arrowLocation.y = tipLocation.y = height / 2;\n if ((location.x + width + this.arrowPadding > boundsX + bounds.width) || (this.isNegative)) {\n location.x = (symbolLocation.x > bounds.width + bounds.x ? bounds.width : symbolLocation.x)\n + clipX - markerHeight - (width + this.arrowPadding);\n }\n if (location.x < boundsX) {\n location.x = (symbolLocation.x < 0 ? 0 : symbolLocation.x) + clipX + markerHeight;\n }\n if ((location.x + width + this.arrowPadding > boundsX + bounds.width)) {\n location.x = (symbolLocation.x > bounds.width + bounds.x ? bounds.width : symbolLocation.x)\n + clipX - markerHeight - (width + this.arrowPadding);\n }\n if (location.y <= boundsY) {\n arrowLocation.y -= (boundsY - location.y);\n tipLocation.y -= (boundsY - location.y);\n location.y = boundsY;\n }\n if (location.y + height >= boundsY + bounds.height) {\n arrowLocation.y += ((location.y + height) - (boundsY + bounds.height));\n tipLocation.y += ((location.y + height) - (boundsY + bounds.height));\n location.y -= ((location.y + height) - (boundsY + bounds.height));\n }\n if (arrowLocation.y + this.arrowPadding > height - this.ry) {\n arrowLocation.y = height - this.ry - this.arrowPadding;\n tipLocation.y = height;\n }\n if (arrowLocation.y - this.arrowPadding < this.ry) {\n arrowLocation.y = tipLocation.y = this.ry + this.arrowPadding;\n }\n if (this.controlName === 'Chart') {\n if ((location.y + arrowLocation.y) < this.areaMargin + this.arrowPadding ||\n ((bounds.y + bounds.height) - (location.y + arrowLocation.y)) < this.areaMargin + this.arrowPadding) {\n this.outOfBounds = true;\n }\n if (!withInAreaBounds(location.x, location.y, bounds) || this.outOfBounds) {\n this.inverted = !this.inverted;\n location = new TooltipLocation(symbolLocation.x + clipX - this.padding - this.elementSize.width / 2, symbolLocation.y + clipY - this.elementSize.height - (2 * this.padding) - markerHeight - this.arrowPadding);\n this.revert = true;\n tipLocation.x = arrowLocation.x = width / 2;\n tipLocation.y = arrowLocation.y = 0;\n if (location.y < boundsY || (this.isNegative)) {\n location.y = (symbolLocation.y < 0 ? 0 : symbolLocation.y) + markerHeight + clipY;\n }\n if (location.y + this.arrowPadding + height > boundsY + bounds.height) {\n location.y = Math.min(symbolLocation.y, boundsY + bounds.height) + clipY\n - this.elementSize.height - (2 * this.padding) - markerHeight - this.arrowPadding;\n }\n tipLocation.x = width / 2;\n if (location.x < boundsX) {\n tipLocation.x -= (boundsX - location.x);\n arrowLocation.x -= (boundsX - location.x);\n location.x = boundsX;\n }\n if (location.x + width > bounds.width + boundsX) {\n arrowLocation.x += ((location.x + width) - (bounds.width + boundsX));\n tipLocation.x += ((location.x + width) - (bounds.width + boundsX));\n location.x -= ((location.x + width) - (bounds.width + boundsX));\n }\n if ((this.arrowPadding) + arrowLocation.x > width - this.rx) {\n tipLocation.x = width - this.rx - (this.arrowPadding);\n arrowLocation.x = width - this.rx - (this.arrowPadding);\n }\n if (arrowLocation.x - (this.arrowPadding) < this.rx) {\n arrowLocation.x = tipLocation.x = this.rx + (this.arrowPadding);\n }\n }\n }\n }\n return new Rect(location.x, location.y, width, height);\n };\n Tooltip.prototype.animateTooltipDiv = function (tooltipDiv, rect) {\n var _this = this;\n var x = parseFloat(tooltipDiv.style.left);\n var y = parseFloat(tooltipDiv.style.top);\n var currenDiff;\n new Animation({}).animate(tooltipDiv, {\n duration: (this.duration === 0 && animationMode === 'Enable') ? 300 : this.duration,\n progress: function (args) {\n currenDiff = (args.timeStamp / args.duration);\n tooltipDiv.style.animation = null;\n if ((_this.controlName === 'Chart' && _this.shared) && !_this.enableRTL) {\n tooltipDiv.style.transition = 'transform 0.3s';\n tooltipDiv.style.transform = 'translate(' + (x + currenDiff * (rect.x - x)) + 'px,' + (y + currenDiff * (rect.y - y)) + 'px)';\n tooltipDiv.style.left = '';\n tooltipDiv.style.top = '';\n }\n else {\n tooltipDiv.style.left = (x + currenDiff * (rect.x - x)) + 'px';\n tooltipDiv.style.top = (y + currenDiff * (rect.y - y)) + 'px';\n tooltipDiv.style.transform = _this.controlName === 'RangeNavigator' ? tooltipDiv.style.transform : '';\n }\n },\n end: function (model) {\n _this.updateDiv(tooltipDiv, rect.x, rect.y);\n _this.trigger('animationComplete', { tooltip: _this });\n }\n });\n };\n Tooltip.prototype.updateDiv = function (tooltipDiv, x, y) {\n if ((this.controlName === 'Chart' && this.shared && !this.crosshair) && !this.enableRTL) {\n tooltipDiv.style.transform = 'translate(' + x + 'px,' + y + 'px)';\n tooltipDiv.style.left = '';\n tooltipDiv.style.top = '';\n }\n else {\n tooltipDiv.style.left = x + 'px';\n tooltipDiv.style.top = y + 'px';\n tooltipDiv.style.transform = this.controlName === 'RangeNavigator' ? tooltipDiv.style.transform : '';\n }\n };\n Tooltip.prototype.updateTemplateFn = function () {\n if (this.template) {\n try {\n if (typeof this.template !== 'function' && document.querySelectorAll(this.template).length) {\n this.templateFn = templateComplier(document.querySelector(this.template).innerHTML.trim());\n }\n else {\n this.templateFn = templateComplier(this.template);\n }\n }\n catch (e) {\n this.templateFn = templateComplier(this.template);\n }\n }\n };\n /** @private */\n Tooltip.prototype.fadeOut = function () {\n var _this = this;\n var tooltipElement = (this.isCanvas && !this.template) ? getElement(this.element.id + '_svg') :\n getElement(this.element.id);\n var tooltipDiv = getElement(this.element.id);\n if (tooltipElement) {\n var tooltipGroup_1 = tooltipElement.firstChild;\n if (tooltipGroup_1.nodeType !== Node.ELEMENT_NODE) {\n tooltipGroup_1 = tooltipElement.firstElementChild;\n }\n if (this.isCanvas && !this.template) {\n tooltipGroup_1 = document.getElementById(this.element.id + '_group') ? document.getElementById(this.element.id + '_group') :\n tooltipGroup_1;\n }\n if (!tooltipGroup_1) {\n return null;\n }\n var opacity_1 = parseFloat(tooltipGroup_1.getAttribute('opacity'));\n opacity_1 = !isNullOrUndefined(opacity_1) ? opacity_1 : 1;\n new Animation({}).animate(tooltipGroup_1, {\n duration: 200,\n progress: function (args) {\n // tooltipGroup.removeAttribute('e-animate');\n _this.progressAnimation(tooltipGroup_1, opacity_1, (args.timeStamp / args.duration));\n },\n end: function () {\n _this.fadeOuted = true;\n _this.endAnimation(tooltipGroup_1);\n tooltipDiv.style.transition = '';\n }\n });\n }\n };\n Tooltip.prototype.progressAnimation = function (tooltipGroup, opacity, timeStamp) {\n tooltipGroup.style.animation = '';\n tooltipGroup.setAttribute('opacity', (opacity - timeStamp).toString());\n };\n /*\n * @hidden\n */\n Tooltip.prototype.endAnimation = function (tooltipGroup) {\n tooltipGroup.setAttribute('opacity', '0');\n if (this.template) {\n tooltipGroup.style.display = 'none';\n }\n this.trigger('animationComplete', { tooltip: this });\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @private\n */\n Tooltip.prototype.getPersistData = function () {\n var keyEntity = [];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Get component name\n *\n * @private\n */\n Tooltip.prototype.getModuleName = function () {\n return 'tooltip';\n };\n /**\n * To destroy the accumulationcharts\n *\n * @private\n */\n Tooltip.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.element.classList.remove('e-tooltip');\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @returns {void}\n * @private\n */\n Tooltip.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.blazorTemplate) {\n resetBlazorTemplate(this.element.id + 'parent_template' + '_blazorTemplate');\n }\n this.isFirst = false;\n this.render();\n };\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"enable\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"shared\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"crosshair\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"enableShadow\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"fill\", void 0);\n __decorate([\n Property('')\n ], Tooltip.prototype, \"header\", void 0);\n __decorate([\n Property(0.75)\n ], Tooltip.prototype, \"opacity\", void 0);\n __decorate([\n Complex({ size: '12px', fontWeight: null, color: null, fontStyle: 'Normal', fontFamily: null }, TextStyle)\n ], Tooltip.prototype, \"textStyle\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"template\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"enableAnimation\", void 0);\n __decorate([\n Property(300)\n ], Tooltip.prototype, \"duration\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"inverted\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isNegative\", void 0);\n __decorate([\n Complex({ color: null, width: null }, TooltipBorder)\n ], Tooltip.prototype, \"border\", void 0);\n __decorate([\n Property([])\n ], Tooltip.prototype, \"content\", void 0);\n __decorate([\n Property(10)\n ], Tooltip.prototype, \"markerSize\", void 0);\n __decorate([\n Complex({ x: 0, y: 0 }, ToolLocation)\n ], Tooltip.prototype, \"clipBounds\", void 0);\n __decorate([\n Property([])\n ], Tooltip.prototype, \"palette\", void 0);\n __decorate([\n Property([])\n ], Tooltip.prototype, \"shapes\", void 0);\n __decorate([\n Complex({ x: 0, y: 0 }, ToolLocation)\n ], Tooltip.prototype, \"location\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"offset\", void 0);\n __decorate([\n Property(4)\n ], Tooltip.prototype, \"rx\", void 0);\n __decorate([\n Property(4)\n ], Tooltip.prototype, \"ry\", void 0);\n __decorate([\n Property(5)\n ], Tooltip.prototype, \"marginX\", void 0);\n __decorate([\n Property(5)\n ], Tooltip.prototype, \"marginY\", void 0);\n __decorate([\n Property(7)\n ], Tooltip.prototype, \"arrowPadding\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"data\", void 0);\n __decorate([\n Property('Material')\n ], Tooltip.prototype, \"theme\", void 0);\n __decorate([\n Complex({ x: 0, y: 0, width: 0, height: 0 }, AreaBounds)\n ], Tooltip.prototype, \"areaBounds\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"availableSize\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"blazorTemplate\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isCanvas\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isTextWrap\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isFixed\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"tooltipPlacement\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"controlInstance\", void 0);\n __decorate([\n Property('')\n ], Tooltip.prototype, \"controlName\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"tooltipRender\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"loaded\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"animationComplete\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"enableRTL\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"allowHighlight\", void 0);\n Tooltip = __decorate([\n NotifyPropertyChanges\n ], Tooltip);\n return Tooltip;\n}(Component));\nexport { Tooltip };\n","/** @private */\nexport function getTooltipThemeColor(theme) {\n var style;\n switch (theme) {\n case 'Highcontrast':\n case 'HighContrast':\n style = {\n tooltipFill: '#ffffff',\n tooltipBoldLabel: '#000000',\n tooltipLightLabel: '#000000',\n tooltipHeaderLine: '#969696',\n textStyle: { fontFamily: 'Segoe UI', color: '#000000', fontWeight: null, size: '12px', headerTextSize: '12px', boldTextSize: '12px' }\n };\n break;\n case 'MaterialDark':\n case 'FabricDark':\n case 'BootstrapDark':\n style = {\n tooltipFill: theme === 'MaterialDark' ? '#F4F4F4' : theme === 'FabricDark' ? '#A19F9D' : '#F0F0F0',\n tooltipBoldLabel: theme === 'MaterialDark' ? 'rgba(18, 18, 18, 1)' : theme === 'FabricDark' ? '#DADADA' : '#1A1A1A',\n tooltipLightLabel: theme === 'MaterialDark' ? 'rgba(18, 18, 18, 1)' : theme === 'FabricDark' ? '#DADADA' : '#1A1A1A',\n tooltipHeaderLine: '#9A9A9A',\n textStyle: theme === 'MaterialDark' ? { fontFamily: 'Roboto', color: 'rgba(18, 18, 18, 1)', fontWeight: null, size: '12px', headerTextSize: '12px', boldTextSize: '12px' } : theme === 'FabricDark' ? { fontFamily: 'Segoe UI', color: '#DADADA', fontWeight: null, size: '12px', headerTextSize: '12px', boldTextSize: '12px' } : { fontFamily: 'Helvetica', color: '#1A1A1A', fontWeight: null, size: '12px', headerTextSize: '12px', boldTextSize: '12px' }\n };\n break;\n case 'Bootstrap4':\n style = {\n tooltipFill: '#212529',\n tooltipBoldLabel: '#F9FAFB',\n tooltipLightLabel: '#F9FAFB',\n tooltipHeaderLine: 'rgba(255, 255, 255, 0.2)',\n textStyle: { fontFamily: 'Helvetica', color: '#F9FAFB', fontWeight: null, size: '12px', headerTextSize: '12px', boldTextSize: '12px' }\n };\n break;\n case 'Tailwind':\n style = {\n tooltipFill: '#111827',\n tooltipBoldLabel: '#F9FAFB',\n tooltipLightLabel: '#F9FAFB',\n tooltipHeaderLine: '#6B7280',\n textStyle: { fontFamily: 'Inter', color: '#F9FAFB', fontWeight: null, size: '12px', headerTextSize: '12px', boldTextSize: '12px' }\n };\n break;\n case 'TailwindDark':\n style = {\n tooltipFill: '#E9ECEF',\n tooltipBoldLabel: '#1F2937',\n tooltipLightLabel: '#1F2937',\n tooltipHeaderLine: '#9CA3AF',\n textStyle: { fontFamily: 'Inter', color: '#1F2937', fontWeight: null, size: '12px', headerTextSize: '12px', boldTextSize: '12px' }\n };\n break;\n case 'Bootstrap5':\n style = {\n tooltipFill: '#000000E5',\n tooltipBoldLabel: '#FFFFFF',\n tooltipLightLabel: '#FFFFFF',\n tooltipHeaderLine: '#FFFFFF',\n textStyle: { fontFamily: 'Segoe UI', color: '#FFFFFF', fontWeight: null, size: '12px', headerTextSize: '16px', boldTextSize: '14px' }\n };\n break;\n case 'Bootstrap5Dark':\n style = {\n tooltipFill: '#FFFFFFE5',\n tooltipBoldLabel: '#212529',\n tooltipLightLabel: '#212529',\n tooltipHeaderLine: '#212529',\n textStyle: { fontFamily: 'Helvetica', color: '#212529', fontWeight: null, size: '12px', headerTextSize: '16px', boldTextSize: '14px' }\n };\n break;\n case 'Fluent':\n style = {\n tooltipFill: '#FFFFFF',\n tooltipBoldLabel: '#323130',\n tooltipLightLabel: '#323130',\n tooltipHeaderLine: '#D2D0CE',\n textStyle: { fontFamily: 'Segoe UI', color: '#323130', fontWeight: null, size: '12px', headerTextSize: '12px', boldTextSize: '12px' }\n };\n break;\n case 'FluentDark':\n style = {\n tooltipFill: '#323130',\n tooltipBoldLabel: '#F3F2F2',\n tooltipLightLabel: '#F3F2F1',\n tooltipHeaderLine: '#3B3A39',\n textStyle: { fontFamily: 'Segoe UI', color: '#F3F2F1', fontWeight: null, size: '12px', headerTextSize: '12px', boldTextSize: '12px' }\n };\n break;\n case 'Fluent2':\n style = {\n tooltipFill: '#FFFFFF',\n tooltipBoldLabel: '#242424',\n tooltipLightLabel: '#242424',\n tooltipHeaderLine: '#D2D0CE',\n textStyle: { fontFamily: 'Segoe UI', color: '#242424', fontWeight: null, size: '12px', headerTextSize: '12px', boldTextSize: '12px' }\n };\n break;\n case 'Fluent2Dark':\n style = {\n tooltipFill: '#292929',\n tooltipBoldLabel: '#FFFFFF',\n tooltipLightLabel: '#FFFFFF',\n tooltipHeaderLine: '#3B3A39',\n textStyle: { fontFamily: 'Segoe UI', color: '#FFFFFF', fontWeight: null, size: '12px', headerTextSize: '12px', boldTextSize: '12px' }\n };\n break;\n case 'Fluent2HighContrast':\n style = {\n tooltipFill: '#000000',\n tooltipBoldLabel: '#FFFFFF',\n tooltipLightLabel: '#FFFFFF',\n tooltipHeaderLine: '#3B3A39',\n textStyle: { fontFamily: 'Segoe UI', color: '#FFFFFF', fontWeight: null, size: '12px', headerTextSize: '12px', boldTextSize: '12px' }\n };\n break;\n case 'Material3':\n style = {\n tooltipFill: '#313033',\n tooltipBoldLabel: '#F4EFF4',\n tooltipLightLabel: '#F4EFF4',\n tooltipHeaderLine: '#F4EFF4',\n textStyle: { fontFamily: 'Roboto', color: '#F4EFF4', fontWeight: null, size: '12px', headerTextSize: '12px', boldTextSize: '12px' }\n };\n break;\n case 'Material3Dark':\n style = {\n tooltipFill: '#E6E1E5',\n tooltipBoldLabel: '#313033',\n tooltipLightLabel: '#313033',\n tooltipHeaderLine: '#313033',\n textStyle: { fontFamily: 'Roboto', color: '#313033', fontWeight: null, size: '12px', headerTextSize: '12px', boldTextSize: '12px' }\n };\n break;\n default:\n style = {\n tooltipFill: theme === 'Material' ? '#000816' : theme === 'Fabric' ? '#FFFFFF' : '#212529',\n tooltipBoldLabel: theme === 'Material' ? 'rgba(249, 250, 251, 1)' : theme === 'Fabric' ? '#333333' : '#F9FAFB',\n tooltipLightLabel: theme === 'Material' ? 'rgba(249, 250, 251, 1)' : theme === 'Fabric' ? '#333333' : '#F9FAFB',\n tooltipHeaderLine: theme === 'Fabric' ? '#D2D0CE' : '#ffffff',\n textStyle: theme === 'Material' ? { fontFamily: 'Roboto', color: 'rgba(249, 250, 251, 1)', fontWeight: null, size: '12px', headerTextSize: '12px', boldTextSize: '12px' } : theme === 'Fabric' ? { fontFamily: 'Segoe UI', color: '#333333', fontWeight: null, size: '12px', headerTextSize: '12px', boldTextSize: '12px' } : { fontFamily: 'Helvetica', color: '#F9FAFB', fontWeight: null, size: '12px', headerTextSize: '12px', boldTextSize: '12px' }\n };\n break;\n }\n return style;\n}\n","/**\n * The `DoubleRange` class represents a numeric range with minimum and maximum values.\n *\n * @private\n */\nvar DoubleRange = /** @class */ (function () {\n function DoubleRange(start, end) {\n /*\n if (!isNaN(start) && !isNaN(end)) {\n this.mIsEmpty = true;\n } else {\n this.mIsEmpty = false;\n }*/\n if (start < end) {\n this.mStart = start;\n this.mEnd = end;\n }\n else {\n this.mStart = end;\n this.mEnd = start;\n }\n }\n Object.defineProperty(DoubleRange.prototype, \"start\", {\n //private mIsEmpty: boolean;\n /**\n * Gets the start value.\n *\n * @returns {number} - The start value.\n * @private\n */\n get: function () {\n return this.mStart;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DoubleRange.prototype, \"end\", {\n /**\n * Gets the end value.\n *\n * @returns {number} - The end value.\n * @private\n */\n get: function () {\n return this.mEnd;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DoubleRange.prototype, \"delta\", {\n /*\n get isEmpty(): boolean {\n return this.mIsEmpty;\n }*/\n /**\n * Gets the delta value.\n *\n * @returns {number} - The delta value.\n * @private\n */\n get: function () {\n return (this.mEnd - this.mStart);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DoubleRange.prototype, \"median\", {\n /**\n * Gets the median value.\n *\n * @returns {number} - The median value.\n * @private\n */\n get: function () {\n return this.mStart + (this.mEnd - this.mStart) / 2;\n },\n enumerable: true,\n configurable: true\n });\n return DoubleRange;\n}());\nexport { DoubleRange };\n","import { getMinPointsDelta, getActualDesiredIntervalsCount, setRange, triggerLabelRender } from '../../common/utils/helper';\nimport { DoubleRange } from '../utils/double-range';\nimport { withIn, logBase } from '../../common/utils/helper';\nimport { isNullOrUndefined, extend, getValue } from '@syncfusion/ej2-base';\n/**\n * The `Double` module is used to render the numeric axis in charts.\n */\nvar Double = /** @class */ (function () {\n /**\n * Constructor for the dateTime module.\n *\n * @private\n * @param {Chart} chart - Specifies the chart.\n */\n function Double(chart) {\n this.isColumn = 0;\n this.isStacking = false;\n this.chart = chart;\n }\n /**\n * Numeric Nice Interval for the axis.\n *\n * @private\n * @param {Axis} axis - The axis.\n * @param {number} delta - The delta value.\n * @param {Size} size - The size.\n * @returns {number} - The calculated nice interval.\n */\n Double.prototype.calculateNumericNiceInterval = function (axis, delta, size) {\n var actualDesiredIntervalsCount = getActualDesiredIntervalsCount(size, axis);\n var niceInterval = delta / actualDesiredIntervalsCount;\n if (!isNullOrUndefined(axis.desiredIntervals)) {\n if (this.isAutoIntervalOnBothAxis(axis)) {\n return niceInterval;\n }\n }\n var minInterval = Math.pow(10, Math.floor(logBase(niceInterval, 10)));\n for (var _i = 0, _a = axis.intervalDivs; _i < _a.length; _i++) {\n var interval = _a[_i];\n var currentInterval = minInterval * interval;\n if (actualDesiredIntervalsCount < (delta / currentInterval)) {\n break;\n }\n niceInterval = currentInterval;\n }\n return niceInterval;\n };\n /**\n * Determines whether auto interval is enabled on both axes.\n *\n * @private\n * @param {Axis} axis - The axis.\n * @returns {boolean} - The boolean value indicating if auto interval is enabled on both axes.\n */\n Double.prototype.isAutoIntervalOnBothAxis = function (axis) {\n if (((axis.zoomFactor < 1 || axis.zoomPosition > 0) && axis.enableAutoIntervalOnZooming)) {\n return false;\n }\n else {\n return true;\n }\n };\n Double.prototype.getActualRange = function (axis, size) {\n this.initializeDoubleRange(axis);\n if ((!axis.startFromZero) && (this.isColumn > 0)) {\n axis.actualRange.interval = axis.interval || this.calculateNumericNiceInterval(axis, axis.doubleRange.delta, size);\n axis.actualRange.max = axis.doubleRange.end + axis.actualRange.interval;\n if ((axis.doubleRange.start - axis.actualRange.interval < 0 && axis.doubleRange.start > 0)) {\n axis.actualRange.min = 0;\n }\n else {\n axis.actualRange.min = axis.doubleRange.start - (this.isStacking ? 0 : axis.actualRange.interval);\n }\n }\n else {\n axis.actualRange.interval = axis.interval || this.calculateNumericNiceInterval(axis, axis.doubleRange.delta, size);\n axis.actualRange.min = axis.doubleRange.start;\n axis.actualRange.max = axis.doubleRange.end;\n }\n };\n /**\n * Range for the axis.\n *\n * @private\n * @param {Axis} axis - The axis.\n * @returns {void}\n */\n Double.prototype.initializeDoubleRange = function (axis) {\n //Axis Min\n if (axis.minimum !== null) {\n this.min = axis.minimum;\n }\n else if (this.min === null || this.min === Number.POSITIVE_INFINITY) {\n this.min = 0;\n }\n // Axis Max\n if (axis.maximum !== null) {\n this.max = axis.maximum;\n }\n else if (this.max === null || this.max === Number.NEGATIVE_INFINITY) {\n this.max = 5;\n }\n if (this.min === this.max) {\n this.max = axis.valueType.indexOf('Category') > -1 ? this.max : this.min + 1;\n }\n axis.doubleRange = new DoubleRange(this.min, this.max);\n axis.actualRange = {};\n };\n /**\n * The function to calculate the range and labels for the axis.\n *\n * @returns {void}\n * @private\n */\n Double.prototype.calculateRangeAndInterval = function (size, axis) {\n this.calculateRange(axis);\n this.getActualRange(axis, size);\n this.applyRangePadding(axis, size);\n this.calculateVisibleLabels(axis, this.chart);\n };\n /**\n * Calculate Range for the axis.\n *\n * @private\n */\n Double.prototype.calculateRange = function (axis) {\n /** Generate axis range */\n this.min = null;\n this.max = null;\n if (!setRange(axis)) {\n for (var _i = 0, _a = axis.series; _i < _a.length; _i++) {\n var series = _a[_i];\n if (!series.visible) {\n continue;\n }\n this.paddingInterval = 0;\n if (!isNullOrUndefined(series.points)) {\n axis.maxPointLength = series.points.length;\n }\n axis.maxPointLength = series.points.length;\n if (((series.type.indexOf('Column') > -1 || series.type.indexOf('Histogram') > -1) && axis.orientation === 'Horizontal')\n || (series.type.indexOf('Bar') > -1 && axis.orientation === 'Vertical')) {\n if ((series.xAxis.valueType === 'Double' || series.xAxis.valueType === 'DateTime')\n && series.xAxis.rangePadding === 'Auto') {\n this.paddingInterval = getMinPointsDelta(series.xAxis, axis.series) * 0.5;\n }\n }\n //For xRange\n if (axis.orientation === 'Horizontal') {\n if (this.chart.requireInvertedAxis) {\n this.yAxisRange(axis, series);\n }\n else {\n this.findMinMax(series.xMin - this.paddingInterval, series.xMax + this.paddingInterval);\n }\n }\n // For yRange\n if (axis.orientation === 'Vertical') {\n this.isColumn += (series.type.indexOf('Column') !== -1 || series.type.indexOf('Bar') !== -1 || series.drawType === 'Column') ? 1 : 0;\n this.isStacking = series.type.indexOf('Stacking') !== -1;\n if (this.chart.requireInvertedAxis) {\n this.findMinMax(series.xMin - this.paddingInterval, series.xMax + this.paddingInterval);\n }\n else {\n this.yAxisRange(axis, series);\n }\n }\n }\n }\n };\n Double.prototype.yAxisRange = function (axis, series) {\n if (series.dragSettings.enable && this.chart.dragY) {\n if (this.chart.dragY >= axis.visibleRange.max) {\n series.yMax = this.chart.dragY + axis.visibleRange.interval;\n }\n if (this.chart.dragY <= axis.visibleRange.min) {\n series.yMin = this.chart.dragY - axis.visibleRange.interval;\n }\n }\n if (series.type === 'Waterfall') {\n var cumulativeMax = 0;\n var cumulativeValue = 0;\n for (var i = 0; i < series.yData.length; i++) {\n if (!(series.intermediateSumIndexes && series.intermediateSumIndexes.indexOf(i) !== -1) &&\n !(series.sumIndexes && series.sumIndexes.indexOf(i) !== -1)) {\n cumulativeValue += series.yData[i];\n }\n if (cumulativeValue > cumulativeMax) {\n cumulativeMax = cumulativeValue;\n }\n }\n this.findMinMax(series.yMin, cumulativeMax);\n }\n else {\n this.findMinMax(series.yMin, series.yMax);\n }\n };\n Double.prototype.findMinMax = function (min, max) {\n if (this.min === null || this.min > min) {\n this.min = min;\n }\n if (this.max === null || this.max < max) {\n this.max = max;\n }\n if ((this.max === this.min) && this.max < 0 && this.min < 0) { // max == min\n this.max = 0;\n }\n };\n /**\n * Apply padding for the range.\n *\n * @private\n * @param {Axis} axis - The axis for which padding is applied.\n * @param {Size} size - The size used for padding calculation.\n * @returns {void}\n */\n Double.prototype.applyRangePadding = function (axis, size) {\n var start = axis.actualRange.min;\n var end = axis.actualRange.max;\n if (!setRange(axis)) {\n var interval = axis.actualRange.interval;\n var padding = axis.getRangePadding(this.chart);\n if (padding === 'Additional' || padding === 'Round') {\n this.findAdditional(axis, start, end, interval, size);\n }\n else if (padding === 'Normal') {\n this.findNormal(axis, start, end, interval, size);\n }\n else {\n this.updateActualRange(axis, start, end, interval);\n }\n }\n axis.actualRange.delta = axis.actualRange.max - axis.actualRange.min;\n this.calculateVisibleRange(size, axis);\n };\n Double.prototype.updateActualRange = function (axis, minimum, maximum, interval) {\n axis.actualRange = {\n min: axis.minimum != null ? axis.minimum : minimum,\n max: axis.maximum != null ? axis.maximum : maximum,\n interval: axis.interval != null ? axis.interval : interval,\n delta: axis.actualRange.delta\n };\n };\n Double.prototype.findAdditional = function (axis, start, end, interval, size) {\n var minimum;\n var maximum;\n minimum = Math.floor(start / interval) * interval;\n maximum = Math.ceil(end / interval) * interval;\n if (axis.rangePadding === 'Additional') {\n minimum -= interval;\n maximum += interval;\n }\n if (!isNullOrUndefined(axis.desiredIntervals)) {\n var delta = maximum - minimum;\n interval = this.calculateNumericNiceInterval(axis, delta, size);\n }\n this.updateActualRange(axis, minimum, maximum, interval);\n };\n Double.prototype.findNormal = function (axis, start, end, interval, size) {\n var remaining;\n var minimum;\n var maximum;\n var startValue = start;\n if (start < 0) {\n startValue = 0;\n minimum = start + (start * 0.05);\n remaining = interval + (minimum % interval);\n if ((0.365 * interval) >= remaining) {\n minimum -= interval;\n }\n if (minimum % interval < 0) {\n minimum = (minimum - interval) - (minimum % interval);\n }\n }\n else {\n minimum = start < ((5.0 / 6.0) * end) ? 0 : (start - (end - start) * 0.5);\n if (minimum % interval > 0) {\n minimum -= (minimum % interval);\n }\n }\n maximum = (end > 0) ? (end + (end - startValue) * 0.05) : (end - (end - startValue) * 0.05);\n remaining = interval - (maximum % interval);\n if ((0.365 * interval) >= remaining) {\n maximum += interval;\n }\n if (maximum % interval > 0) {\n maximum = (maximum + interval) - (maximum % interval);\n }\n axis.doubleRange = new DoubleRange(minimum, maximum);\n if (minimum === 0 || (minimum < 0 && maximum < 0)) {\n interval = this.calculateNumericNiceInterval(axis, axis.doubleRange.delta, size);\n maximum = Math.ceil(maximum / interval) * interval;\n }\n this.updateActualRange(axis, minimum, maximum, interval);\n };\n /**\n * Calculate visible range for axis.\n *\n * @private\n * @param {Size} size - The size used for calculation.\n * @param {Axis} axis - The axis for which the visible range is calculated.\n * @returns {void}\n */\n Double.prototype.calculateVisibleRange = function (size, axis) {\n axis.visibleRange = {\n max: axis.actualRange.max, min: axis.actualRange.min,\n delta: axis.actualRange.delta, interval: axis.actualRange.interval\n };\n if (this.chart.chartAreaType === 'Cartesian') {\n var isLazyLoad = isNullOrUndefined(axis.zoomingScrollBar) ? false : axis.zoomingScrollBar.isLazyLoad;\n if ((axis.zoomFactor < 1 || axis.zoomPosition > 0) && !isLazyLoad) {\n axis.calculateVisibleRangeOnZooming();\n axis.visibleRange.interval = (axis.enableAutoIntervalOnZooming) ?\n this.calculateNumericNiceInterval(axis, axis.doubleRange.delta, size)\n : axis.visibleRange.interval;\n }\n }\n if ((axis.visibleRange.max - axis.visibleRange.min) % axis.visibleRange.interval !== 0 && axis.valueType === 'Double' &&\n axis.orientation === 'Vertical' && axis.rangePadding === 'Auto') {\n var duplicateTempInterval = void 0;\n var tempInterval = axis.visibleRange.min;\n for (; (tempInterval <= axis.visibleRange.max) && (duplicateTempInterval !== tempInterval); tempInterval += axis.visibleRange.interval) {\n duplicateTempInterval = tempInterval;\n }\n if (duplicateTempInterval < axis.visibleRange.max) {\n axis.visibleRange.max = duplicateTempInterval + axis.visibleRange.interval;\n }\n }\n axis.triggerRangeRender(this.chart, axis.visibleRange.min, axis.visibleRange.max, axis.visibleRange.interval);\n };\n /**\n * Calculate label for the axis.\n *\n * @private\n */\n Double.prototype.calculateVisibleLabels = function (axis, chart) {\n /** Generate axis labels */\n axis.visibleLabels = [];\n var tempInterval = axis.visibleRange.min;\n var labelStyle;\n var controlName = chart.getModuleName();\n var isPolarRadar = controlName === 'chart' && chart.chartAreaType === 'PolarRadar';\n if (!isPolarRadar && (axis.zoomFactor < 1 || axis.zoomPosition > 0 || this.paddingInterval)) {\n tempInterval = axis.visibleRange.min - (axis.visibleRange.min % axis.visibleRange.interval);\n }\n var format = this.getFormat(axis);\n var isCustom = format.match('{value}') !== null;\n var intervalDigits = 0;\n var formatDigits = 0;\n if (axis.labelFormat && axis.labelFormat.indexOf('n') > -1) {\n formatDigits = parseInt(axis.labelFormat.substring(1, axis.labelFormat.length), 10);\n }\n axis.format = chart.intl.getNumberFormat({\n format: isCustom ? '' : format,\n useGrouping: chart.useGroupingSeparator\n });\n axis.startLabel = axis.format(axis.visibleRange.min);\n axis.endLabel = axis.format(axis.visibleRange.max);\n if (axis.visibleRange.interval && (axis.visibleRange.interval + '').indexOf('.') >= 0) {\n intervalDigits = (axis.visibleRange.interval + '').split('.')[1].length;\n }\n var duplicateTempInterval;\n for (; (tempInterval <= axis.visibleRange.max) && (duplicateTempInterval !== tempInterval); tempInterval += axis.visibleRange.interval) {\n duplicateTempInterval = tempInterval;\n labelStyle = (extend({}, getValue('properties', axis.labelStyle), null, true));\n if (withIn(tempInterval, axis.visibleRange)) {\n triggerLabelRender(chart, tempInterval, this.formatValue(axis, isCustom, format, tempInterval), labelStyle, axis);\n }\n }\n if (tempInterval && (tempInterval + '').indexOf('.') >= 0 && (tempInterval + '').split('.')[1].length > 10) {\n tempInterval = (tempInterval + '').split('.')[1].length > (formatDigits || intervalDigits) ?\n +tempInterval.toFixed(formatDigits || intervalDigits) : tempInterval;\n if (tempInterval <= axis.visibleRange.max) {\n triggerLabelRender(chart, tempInterval, this.formatValue(axis, isCustom, format, tempInterval), labelStyle, axis);\n }\n }\n if (axis.getMaxLabelWidth) {\n axis.getMaxLabelWidth(this.chart);\n }\n };\n /**\n * Format of the axis label.\n *\n * @private\n */\n Double.prototype.getFormat = function (axis) {\n if (axis.labelFormat) {\n if (axis.labelFormat.indexOf('p') === 0 && axis.labelFormat.indexOf('{value}') === -1 && axis.isStack100) {\n return '{value}%';\n }\n return axis.labelFormat;\n }\n return axis.isStack100 ? '{value}%' : '';\n };\n /**\n * Formatted the axis label.\n *\n * @private\n */\n Double.prototype.formatValue = function (axis, isCustom, format, tempInterval) {\n /*The toLocaleString method is used to adjust the decimal points for this ticket, specifically for ticket numbers I481747 and I541484.*/\n var labelValue = !(tempInterval % 1) ? tempInterval : Number(tempInterval.toLocaleString('en-US').split(',').join(''));\n return isCustom ? format.replace('{value}', axis.format(labelValue))\n : format ? axis.format(tempInterval) : axis.format(labelValue);\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name.\n */\n Double.prototype.getModuleName = function () {\n /**\n * Returns the module name\n */\n return 'Double';\n };\n /**\n * To destroy the double axis.\n *\n * @returns {void}\n * @private\n */\n Double.prototype.destroy = function () {\n /**\n * Destroy method performed here.\n */\n };\n return Double;\n}());\nexport { Double };\n","/**\n * Specifies the chart constant value\n */\n/** @private */\nexport var loaded = 'loaded';\n/** @private */\nexport var legendClick = 'legendClick';\n/** @private */\nexport var load = 'load';\n/** @private */\nexport var animationComplete = 'animationComplete';\n/** @private */\nexport var legendRender = 'legendRender';\n/** @private */\nexport var textRender = 'textRender';\n/** @private */\nexport var pointRender = 'pointRender';\n/** @private */\nexport var sharedTooltipRender = 'sharedTooltipRender';\n/** @private */\nexport var seriesRender = 'seriesRender';\n/** @private */\nexport var axisLabelRender = 'axisLabelRender';\n/** @private */\nexport var axisLabelClick = 'axisLabelClick';\n/** @private */\nexport var axisRangeCalculated = 'axisRangeCalculated';\n/** @private */\nexport var axisMultiLabelRender = 'axisMultiLabelRender';\n/** @private */\nexport var tooltipRender = 'tooltipRender';\n/** @private */\nexport var chartMouseMove = 'chartMouseMove';\n/** @private */\nexport var chartMouseClick = 'chartMouseClick';\n/** @private */\nexport var chartDoubleClick = 'chartDoubleClick';\n/** @private */\nexport var pointClick = 'pointClick';\n/** @private */\nexport var pointDoubleClick = 'pointDoubleClick';\n/** @private */\nexport var pointMove = 'pointMove';\n/** @private */\nexport var chartMouseLeave = 'chartMouseLeave';\n/** @private */\nexport var chartMouseDown = 'chartMouseDown';\n/** @private */\nexport var chartMouseUp = 'chartMouseUp';\n/** @private */\nexport var zoomComplete = 'zoomComplete';\n/** @private */\nexport var dragComplete = 'dragComplete';\n/** @private */\nexport var selectionComplete = 'selectionComplete';\n/** @private */\nexport var resized = 'resized';\n/** @private */\nexport var beforeResize = 'beforeResize';\n/** @private */\nexport var beforePrint = 'beforePrint';\n/** @private */\nexport var annotationRender = 'annotationRender';\n/** @private */\nexport var scrollStart = 'scrollStart';\n/** @private */\nexport var scrollEnd = 'scrollEnd';\n/** @private */\nexport var scrollChanged = 'scrollChanged';\n/** @private */\nexport var stockEventRender = 'stockEventRender';\n/** @private */\nexport var multiLevelLabelClick = 'multiLevelLabelClick';\n/** @private */\nexport var dragStart = 'dragStart';\n/** @private */\nexport var drag = 'drag';\n/** @private */\nexport var dragEnd = 'dragEnd';\n/*** @private*/\nexport var regSub = /~\\d+~/g;\n/*** @private*/\nexport var regSup = /\\^\\d+\\^/g;\n/** @private */\nexport var beforeExport = 'beforeExport';\n/** @private */\nexport var afterExport = 'afterExport';\n/** @private */\nexport var bulletChartMouseClick = 'bulletChartMouseClick';\n/** @private */\nexport var onZooming = 'onZooming';\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Complex, Collection } from '@syncfusion/ej2-base';\nimport { Font, Border } from '../../common/model/base';\n/**\n * Configures the annotation settings for a chart to highlight or provide additional information about specific points or regions.\n */\nvar ChartAnnotationSettings = /** @class */ (function (_super) {\n __extends(ChartAnnotationSettings, _super);\n function ChartAnnotationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('0')\n ], ChartAnnotationSettings.prototype, \"x\", void 0);\n __decorate([\n Property('0')\n ], ChartAnnotationSettings.prototype, \"y\", void 0);\n __decorate([\n Property(null)\n ], ChartAnnotationSettings.prototype, \"content\", void 0);\n __decorate([\n Property('Center')\n ], ChartAnnotationSettings.prototype, \"horizontalAlignment\", void 0);\n __decorate([\n Property('Pixel')\n ], ChartAnnotationSettings.prototype, \"coordinateUnits\", void 0);\n __decorate([\n Property('Chart')\n ], ChartAnnotationSettings.prototype, \"region\", void 0);\n __decorate([\n Property('Middle')\n ], ChartAnnotationSettings.prototype, \"verticalAlignment\", void 0);\n __decorate([\n Property(null)\n ], ChartAnnotationSettings.prototype, \"xAxisName\", void 0);\n __decorate([\n Property(null)\n ], ChartAnnotationSettings.prototype, \"yAxisName\", void 0);\n __decorate([\n Property(null)\n ], ChartAnnotationSettings.prototype, \"description\", void 0);\n return ChartAnnotationSettings;\n}(ChildProperty));\nexport { ChartAnnotationSettings };\n/**\n * The `LabelBorder` class provides options to customize the border settings for chart labels.\n */\nvar LabelBorder = /** @class */ (function (_super) {\n __extends(LabelBorder, _super);\n function LabelBorder() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], LabelBorder.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], LabelBorder.prototype, \"width\", void 0);\n __decorate([\n Property('Rectangle')\n ], LabelBorder.prototype, \"type\", void 0);\n return LabelBorder;\n}(ChildProperty));\nexport { LabelBorder };\n/**\n * The `MultiLevelCategories` class allows defining and customizing the categories used in multi-level labels.\n * This is particularly useful when there is a need to display hierarchical or grouped data labels on the chart axis.\n */\nvar MultiLevelCategories = /** @class */ (function (_super) {\n __extends(MultiLevelCategories, _super);\n function MultiLevelCategories() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], MultiLevelCategories.prototype, \"start\", void 0);\n __decorate([\n Property(null)\n ], MultiLevelCategories.prototype, \"end\", void 0);\n __decorate([\n Property('')\n ], MultiLevelCategories.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], MultiLevelCategories.prototype, \"maximumTextWidth\", void 0);\n __decorate([\n Property(null)\n ], MultiLevelCategories.prototype, \"customAttributes\", void 0);\n __decorate([\n Property('')\n ], MultiLevelCategories.prototype, \"type\", void 0);\n return MultiLevelCategories;\n}(ChildProperty));\nexport { MultiLevelCategories };\n/**\n * The `StripLineSettings` class provides configuration options for strip lines in a chart.\n */\nvar StripLineSettings = /** @class */ (function (_super) {\n __extends(StripLineSettings, _super);\n function StripLineSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], StripLineSettings.prototype, \"visible\", void 0);\n __decorate([\n Property(false)\n ], StripLineSettings.prototype, \"startFromAxis\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"start\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"end\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"size\", void 0);\n __decorate([\n Property('#808080')\n ], StripLineSettings.prototype, \"color\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"dashArray\", void 0);\n __decorate([\n Property('Auto')\n ], StripLineSettings.prototype, \"sizeType\", void 0);\n __decorate([\n Property(false)\n ], StripLineSettings.prototype, \"isRepeat\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"repeatEvery\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"repeatUntil\", void 0);\n __decorate([\n Property(false)\n ], StripLineSettings.prototype, \"isSegmented\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"segmentStart\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"segmentEnd\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"segmentAxisName\", void 0);\n __decorate([\n Complex({ color: 'transparent', width: 1 }, Border)\n ], StripLineSettings.prototype, \"border\", void 0);\n __decorate([\n Property('')\n ], StripLineSettings.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"rotation\", void 0);\n __decorate([\n Property('Middle')\n ], StripLineSettings.prototype, \"horizontalAlignment\", void 0);\n __decorate([\n Property('Middle')\n ], StripLineSettings.prototype, \"verticalAlignment\", void 0);\n __decorate([\n Complex({ size: '12px', color: null, fontStyle: 'Normal', fontWeight: '400', fontFamily: null }, Font)\n ], StripLineSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property('Behind')\n ], StripLineSettings.prototype, \"zIndex\", void 0);\n __decorate([\n Property(1)\n ], StripLineSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('')\n ], StripLineSettings.prototype, \"imageUrl\", void 0);\n return StripLineSettings;\n}(ChildProperty));\nexport { StripLineSettings };\n/**\n * The `MultiLevelLabels` class is used to customize the appearance and behavior of multi-level labels in charts.\n */\nvar MultiLevelLabels = /** @class */ (function (_super) {\n __extends(MultiLevelLabels, _super);\n function MultiLevelLabels() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Center')\n ], MultiLevelLabels.prototype, \"alignment\", void 0);\n __decorate([\n Property('Wrap')\n ], MultiLevelLabels.prototype, \"overflow\", void 0);\n __decorate([\n Complex({ fontFamily: null, size: '12px', fontStyle: 'Normal', fontWeight: '400', color: null }, Font)\n ], MultiLevelLabels.prototype, \"textStyle\", void 0);\n __decorate([\n Complex({ color: null, width: 1, type: 'Rectangle' }, LabelBorder)\n ], MultiLevelLabels.prototype, \"border\", void 0);\n __decorate([\n Collection([], MultiLevelCategories)\n ], MultiLevelLabels.prototype, \"categories\", void 0);\n return MultiLevelLabels;\n}(ChildProperty));\nexport { MultiLevelLabels };\n/**\n * The `ScrollbarSettingsRange` class allows defining the start and end values for the scrollbar range in a chart.\n *\n * @public\n */\nvar ScrollbarSettingsRange = /** @class */ (function (_super) {\n __extends(ScrollbarSettingsRange, _super);\n function ScrollbarSettingsRange() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], ScrollbarSettingsRange.prototype, \"minimum\", void 0);\n __decorate([\n Property(null)\n ], ScrollbarSettingsRange.prototype, \"maximum\", void 0);\n return ScrollbarSettingsRange;\n}(ChildProperty));\nexport { ScrollbarSettingsRange };\n/**\n * Specifies properties for customizing the scrollbar settings in lazy loading.\n */\nvar ScrollbarSettings = /** @class */ (function (_super) {\n __extends(ScrollbarSettings, _super);\n function ScrollbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], ScrollbarSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(null)\n ], ScrollbarSettings.prototype, \"pointsLength\", void 0);\n __decorate([\n Complex({}, ScrollbarSettingsRange)\n ], ScrollbarSettings.prototype, \"range\", void 0);\n __decorate([\n Property(null)\n ], ScrollbarSettings.prototype, \"trackColor\", void 0);\n __decorate([\n Property(0)\n ], ScrollbarSettings.prototype, \"scrollbarRadius\", void 0);\n __decorate([\n Property(null)\n ], ScrollbarSettings.prototype, \"scrollbarColor\", void 0);\n __decorate([\n Property(0)\n ], ScrollbarSettings.prototype, \"trackRadius\", void 0);\n __decorate([\n Property(null)\n ], ScrollbarSettings.prototype, \"gripColor\", void 0);\n __decorate([\n Property(16)\n ], ScrollbarSettings.prototype, \"height\", void 0);\n __decorate([\n Property(true)\n ], ScrollbarSettings.prototype, \"enableZoom\", void 0);\n return ScrollbarSettings;\n}(ChildProperty));\nexport { ScrollbarSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, Complex, ChildProperty, Collection, extend, Browser } from '@syncfusion/ej2-base';\nimport { Font, Border } from '../../common/model/base';\nimport { rotateTextSize, firstToLowerCase, valueToCoefficient, inside, isBreakLabel, isZoomSet, getTitle, getElement, appendChildElement } from '../../common/utils/helper';\nimport { Size, Rect, measureText } from '@syncfusion/ej2-svg-base';\nimport { DoubleRange } from '../utils/double-range';\nimport { Double } from '../axis/double-axis';\nimport { axisRangeCalculated } from '../../common/model/constants';\nimport { StripLineSettings, MultiLevelLabels, LabelBorder, ScrollbarSettings } from '../model/chart-base';\nimport { textWrap } from '../../common/utils/helper';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Configures the `rows` of the chart to create multiple vertical rows within the chart area.\n */\nvar Row = /** @class */ (function (_super) {\n __extends(Row, _super);\n function Row() {\n /**\n * The height of the row as a string accepts input both as '100px' and '100%'.\n * If specified as '100%', the row renders to the full height of its chart.\n *\n * @default '100%'\n */\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** @private */\n _this.axes = [];\n /** @private */\n _this.nearSizes = [];\n /** @private */\n _this.farSizes = [];\n /** @private */\n _this.insideFarSizes = [];\n /** @private */\n _this.insideNearSizes = [];\n return _this;\n }\n /**\n * Measure the row size.\n *\n * @param {Axis} axis - The axis for which to measure the row size.\n * @param {number} scrollBarHeight - The height of the scrollbar.\n * @param {Row | Column} definition - The definition of the row or column.\n * @param {Chart} chart - The chart instance.\n * @returns {void}\n * @private\n */\n Row.prototype.computeSize = function (axis, scrollBarHeight, definition, chart) {\n var width = 0;\n var innerPadding = (axis.labelPosition === 'Inside' && (chart.axes.indexOf(axis) > -1)) ? -5 : 5;\n if (axis.visible && axis.internalVisibility) {\n width += (axis.findTickSize(axis.crossInAxis) + scrollBarHeight +\n axis.findLabelSize(axis.crossInAxis, innerPadding, definition, chart) + axis.lineStyle.width * 0.5);\n }\n if (axis.isAxisOpposedPosition) {\n this.farSizes.push(width);\n }\n else {\n this.nearSizes.push(width);\n }\n };\n __decorate([\n Property('100%')\n ], Row.prototype, \"height\", void 0);\n __decorate([\n Complex({}, Border)\n ], Row.prototype, \"border\", void 0);\n return Row;\n}(ChildProperty));\nexport { Row };\n/**\n * Configures the `columns` of the chart to create multiple horizontal columns within the chart area.\n */\nvar Column = /** @class */ (function (_super) {\n __extends(Column, _super);\n function Column() {\n /**\n * The width of the column as a string accepts input both as '100px' and '100%'.\n * If specified as '100%', the column renders to the full width of its chart.\n *\n * @default '100%'\n */\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** @private */\n _this.axes = [];\n /** @private */\n _this.nearSizes = [];\n /** @private */\n _this.farSizes = [];\n /** @private */\n _this.insideFarSizes = [];\n /** @private */\n _this.insideNearSizes = [];\n /** @private */\n _this.padding = 0;\n return _this;\n }\n /**\n * Measure the column size\n *\n * @returns {void}\n * @private\n */\n Column.prototype.computeSize = function (axis, scrollBarHeight, definition, chart) {\n var height = 0;\n var innerPadding = 5;\n if (axis.visible && axis.internalVisibility) {\n height += (axis.findTickSize(axis.crossInAxis) + scrollBarHeight +\n axis.findLabelSize(axis.crossInAxis, innerPadding, definition, chart) + axis.lineStyle.width * 0.5);\n }\n if (axis.isAxisOpposedPosition) {\n this.farSizes.push(height);\n }\n else {\n this.nearSizes.push(height);\n }\n };\n __decorate([\n Property('100%')\n ], Column.prototype, \"width\", void 0);\n __decorate([\n Complex({}, Border)\n ], Column.prototype, \"border\", void 0);\n return Column;\n}(ChildProperty));\nexport { Column };\n/**\n * Configures the major grid lines in the axis, allowing for the setting of properties such as color, width, and dashArray to define how the grid lines appear on the chart.\n */\nvar MajorGridLines = /** @class */ (function (_super) {\n __extends(MajorGridLines, _super);\n function MajorGridLines() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(1)\n ], MajorGridLines.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], MajorGridLines.prototype, \"dashArray\", void 0);\n __decorate([\n Property(null)\n ], MajorGridLines.prototype, \"color\", void 0);\n return MajorGridLines;\n}(ChildProperty));\nexport { MajorGridLines };\n/**\n * Configures the minor grid lines in the axis, allowing for the setting of properties such as color, width, and dashArray to define how the grid lines appear on the chart.\n */\nvar MinorGridLines = /** @class */ (function (_super) {\n __extends(MinorGridLines, _super);\n function MinorGridLines() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0.7)\n ], MinorGridLines.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], MinorGridLines.prototype, \"dashArray\", void 0);\n __decorate([\n Property(null)\n ], MinorGridLines.prototype, \"color\", void 0);\n return MinorGridLines;\n}(ChildProperty));\nexport { MinorGridLines };\n/**\n * Configures the axis line of a chart, allowing customization of the line's appearance, including its color, width, and dashArray.\n */\nvar AxisLine = /** @class */ (function (_super) {\n __extends(AxisLine, _super);\n function AxisLine() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(1)\n ], AxisLine.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], AxisLine.prototype, \"dashArray\", void 0);\n __decorate([\n Property(null)\n ], AxisLine.prototype, \"color\", void 0);\n return AxisLine;\n}(ChildProperty));\nexport { AxisLine };\n/**\n * Configures the major tick lines in the axis, allowing for the setting of properties such as color, width, and height to define how the tick lines appear on the chart.\n */\nvar MajorTickLines = /** @class */ (function (_super) {\n __extends(MajorTickLines, _super);\n function MajorTickLines() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(1)\n ], MajorTickLines.prototype, \"width\", void 0);\n __decorate([\n Property(5)\n ], MajorTickLines.prototype, \"height\", void 0);\n __decorate([\n Property(null)\n ], MajorTickLines.prototype, \"color\", void 0);\n return MajorTickLines;\n}(ChildProperty));\nexport { MajorTickLines };\n/**\n * Configures the minor tick lines in the axis, allowing for the setting of properties such as color, width, and height to define how the tick lines appear on the chart.\n */\nvar MinorTickLines = /** @class */ (function (_super) {\n __extends(MinorTickLines, _super);\n function MinorTickLines() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0.7)\n ], MinorTickLines.prototype, \"width\", void 0);\n __decorate([\n Property(5)\n ], MinorTickLines.prototype, \"height\", void 0);\n __decorate([\n Property(null)\n ], MinorTickLines.prototype, \"color\", void 0);\n return MinorTickLines;\n}(ChildProperty));\nexport { MinorTickLines };\n/**\n * Configures the crosshair tooltip for the chart, allowing customization of the tooltip's appearance and content during crosshair interactions.\n */\nvar CrosshairTooltip = /** @class */ (function (_super) {\n __extends(CrosshairTooltip, _super);\n function CrosshairTooltip() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], CrosshairTooltip.prototype, \"enable\", void 0);\n __decorate([\n Property(null)\n ], CrosshairTooltip.prototype, \"fill\", void 0);\n __decorate([\n Complex({ fontFamily: null, size: null, fontStyle: null, fontWeight: null, color: null }, Font)\n ], CrosshairTooltip.prototype, \"textStyle\", void 0);\n return CrosshairTooltip;\n}(ChildProperty));\nexport { CrosshairTooltip };\n/**\n * The Axis class configures the axes in the chart. It provides various properties to customize the appearance and behavior of chart axes, including settings for labels, grid lines, ticks, and more.\n *\n * @public\n */\nvar Axis = /** @class */ (function (_super) {\n __extends(Axis, _super);\n function Axis(parent, propName, defaultValue, isArray) {\n var _this = _super.call(this, parent, propName, defaultValue, isArray) || this;\n /** @private */\n _this.visibleLabels = [];\n /** @private */\n _this.series = [];\n /** @private */\n _this.rect = new Rect(undefined, undefined, 0, 0);\n /** @private */\n _this.axisBottomLine = null;\n /** @private */\n _this.intervalDivs = [10, 5, 2, 1];\n /** @private */\n _this.isStack100 = false;\n /** @private */\n _this.crossAt = null;\n /** @private */\n _this.updatedRect = null;\n /** @private */\n _this.multiLevelLabelHeight = 0;\n /** @private */\n _this.isChart = true;\n /** @private */\n _this.isIntervalInDecimal = true;\n /** @private */\n _this.titleCollection = [];\n /** @private */\n _this.titleSize = new Size(0, 0);\n /**\n * Task: BLAZ-2044\n * This property used to hide the axis when series hide from legend click\n *\n * @private\n */\n _this.internalVisibility = true;\n /**\n * This property is used to place the vertical axis in opposed position and horizontal axis in inversed\n * when RTL is enabled in chart\n *\n * @private */\n _this.isRTLEnabled = false;\n _this.angle = _this.labelRotation;\n return _this;\n }\n /**\n * The function used to find tick size.\n *\n * @param {Axis} crossAxis - The cross axis for which to find the tick size.\n * @returns {number} - The tick line size.\n * @private\n */\n Axis.prototype.findTickSize = function (crossAxis) {\n if (this.tickPosition === 'Inside') {\n return 0;\n }\n if (crossAxis && (!crossAxis.visibleRange || this.isInside(crossAxis.visibleRange))) {\n return 0;\n }\n return this.majorTickLines.height;\n };\n /**\n * The function used to find axis position.\n *\n * @returns {number}\n * @private\n */\n Axis.prototype.isInside = function (range) {\n return (inside(this.crossAt, range) ||\n (!this.isAxisOpposedPosition && this.crossAt >= range.max) || (this.isAxisOpposedPosition && this.crossAt <= range.min));\n };\n /**\n * The function used to find label Size.\n *\n * @param {Axis} crossAxis - The cross axis for which to find the label size.\n * @param {number} innerPadding - The inner padding.\n * @param {Row | Column} definition - The row or column definition.\n * @param {Chart} chart - The chart instance.\n * @returns {number} - The label size.\n * @private\n */\n Axis.prototype.findLabelSize = function (crossAxis, innerPadding, definition, chart) {\n var titleSize = 0;\n var isHorizontal = this.orientation === 'Horizontal';\n if (this.title) {\n var angle = this.titleRotation;\n if ((isNullOrUndefined(angle))) {\n this.titleSize = measureText(this.title, this.titleStyle, chart.themeStyle.axisTitleFont);\n titleSize = this.titleSize.height + innerPadding;\n }\n else {\n this.titleSize = rotateTextSize(this.titleStyle, this.title, angle, chart, chart.themeStyle.axisTitleFont);\n titleSize = (this.orientation === 'Vertical' ? this.titleSize.width : this.titleSize.height) + innerPadding;\n }\n if (this.rect.width || this.rect.height) {\n var length_1 = isHorizontal ? this.rect.width : this.rect.height;\n this.titleCollection = getTitle(this.title, this.titleStyle, length_1, chart.enableRtl, chart.themeStyle.axisTitleFont);\n titleSize = (titleSize * this.titleCollection.length);\n }\n }\n var diff;\n var value;\n var labelSize = titleSize + innerPadding + this.titlePadding + this.labelPadding +\n ((this.orientation === 'Vertical') ? this.maxLabelSize.width : this.maxLabelSize.height) + this.multiLevelLabelHeight;\n if (crossAxis && this.placeNextToAxisLine) {\n var range = crossAxis.visibleRange;\n var size = (crossAxis.orientation === 'Horizontal') ? crossAxis.rect.width : crossAxis.rect.height;\n if (!range || !size) {\n return 0;\n }\n else if (this.isInside(range)) {\n value = this.findDifference(crossAxis);\n diff = (value) * (size / range.delta);\n diff = (value) * ((size - (diff < labelSize ? (labelSize - diff) : 0)) / range.delta);\n labelSize = (diff < labelSize) ? (labelSize - diff) : 0;\n }\n }\n if (this.isAxisOpposedPosition) {\n definition.insideFarSizes.push(labelSize);\n }\n else {\n definition.insideNearSizes.push(labelSize);\n }\n if (this.labelPosition === 'Inside') {\n return titleSize + innerPadding;\n }\n return labelSize;\n };\n /**\n * The function used to find axis position.\n *\n * @returns {void}\n * @private\n */\n Axis.prototype.updateCrossValue = function () {\n var value = this.crossAt;\n if (value === null || !this.isInside(this.crossInAxis.visibleRange)) {\n this.updatedRect = this.rect;\n return null;\n }\n var range = this.crossInAxis.visibleRange;\n if (!this.isAxisOpposedPosition) {\n if (this.crossAt > range.max) {\n value = range.max;\n }\n }\n else {\n if (this.crossAt < range.min) {\n value = range.min;\n }\n }\n this.updatedRect = extend({}, this.rect, null, true);\n if (this.orientation === 'Horizontal') {\n value = this.crossInAxis.rect.height - (valueToCoefficient(value, this.crossInAxis) * this.crossInAxis.rect.height);\n this.updatedRect.y = this.crossInAxis.rect.y + value;\n }\n else {\n value = valueToCoefficient(value, this.crossInAxis) * this.crossInAxis.rect.width;\n this.updatedRect.x = this.crossInAxis.rect.x + value;\n }\n };\n Axis.prototype.findDifference = function (crossAxis) {\n var value = 0;\n if (this.isAxisOpposedPosition) {\n value = crossAxis.isAxisInverse ? crossAxis.visibleRange.min : crossAxis.visibleRange.max;\n }\n else {\n value = crossAxis.isAxisInverse ? crossAxis.visibleRange.max : crossAxis.visibleRange.min;\n }\n return Math.abs(this.crossAt - value);\n };\n /**\n * Calculate the visible range for the axis.\n *\n * @returns {void}\n * @private\n */\n Axis.prototype.calculateVisibleRangeOnZooming = function () {\n if (isZoomSet(this)) {\n var baseRange = this.actualRange;\n var start = void 0;\n var end = void 0;\n if (!this.isAxisInverse) {\n start = this.actualRange.min + this.zoomPosition * this.actualRange.delta;\n end = start + this.zoomFactor * this.actualRange.delta;\n }\n else {\n start = this.actualRange.max - (this.zoomPosition * this.actualRange.delta);\n end = start - (this.zoomFactor * this.actualRange.delta);\n }\n if (start < baseRange.min) {\n end = end + (baseRange.min - start);\n start = baseRange.min;\n }\n if (end > baseRange.max) {\n start = start - (end - baseRange.max);\n end = baseRange.max;\n }\n this.doubleRange = new DoubleRange(start, end);\n this.visibleRange = { min: this.doubleRange.start, max: this.doubleRange.end,\n delta: this.doubleRange.delta, interval: this.visibleRange.interval };\n }\n };\n /**\n * Triggers the event.\n *\n * @returns {void}\n * @private\n */\n Axis.prototype.triggerRangeRender = function (chart, minimum, maximum, interval) {\n var argsData = {\n cancel: false, name: axisRangeCalculated, axis: this,\n minimum: minimum, maximum: maximum, interval: interval\n };\n chart.trigger(axisRangeCalculated, argsData);\n if (!argsData.cancel) {\n this.visibleRange = { min: argsData.minimum, max: argsData.maximum, interval: argsData.interval,\n delta: argsData.maximum - argsData.minimum };\n }\n };\n /**\n * Calculate padding for the axis.\n *\n * @returns {string}\n * @private\n */\n Axis.prototype.getRangePadding = function (chart) {\n var padding = this.rangePadding;\n if (padding !== 'Auto') {\n return padding;\n }\n switch (this.orientation) {\n case 'Horizontal':\n if (chart.requireInvertedAxis) {\n padding = (this.isStack100 || this.baseModule.chart.stockChart ? 'Round' : 'Normal');\n }\n else {\n padding = 'None';\n }\n break;\n case 'Vertical':\n if (!chart.requireInvertedAxis) {\n padding = (this.isStack100 || this.baseModule.chart.stockChart ? 'Round' : 'Normal');\n }\n else {\n padding = 'None';\n }\n break;\n }\n return padding;\n };\n /**\n * Calculate maximum label width for the axis.\n *\n * @param {Chart} chart - The chart for which to calculate the maximum label width.\n * @returns {void}\n * @private\n */\n Axis.prototype.getMaxLabelWidth = function (chart) {\n var pointX;\n var previousEnd = 0;\n var isIntersect = false;\n var isAxisLabelBreak;\n this.angle = this.labelRotation;\n this.maxLabelSize = new Size(0, 0);\n var action = this.labelIntersectAction;\n var label;\n for (var i = 0, len = this.visibleLabels.length; i < len; i++) {\n label = this.visibleLabels[i];\n isAxisLabelBreak = isBreakLabel(label.originalText);\n if (isAxisLabelBreak) {\n label.size = measureText(label.originalText.replace(/
/g, ' '), this.labelStyle, chart.themeStyle.axisLabelFont);\n label.breakLabelSize = measureText(this.enableTrim ? label.text.join('
') : label.originalText, this.labelStyle, chart.themeStyle.axisLabelFont);\n }\n else {\n if ((this.angle === -90 || this.angle === 90 || this.angle === 270 || this.angle === -270) && this.orientation === 'Vertical') {\n label.size = rotateTextSize(this.labelStyle, label.text, this.angle, chart, chart.themeStyle.axisLabelFont);\n }\n else {\n label.size = measureText(label.text, this.labelStyle, chart.themeStyle.axisLabelFont);\n }\n }\n var width = isAxisLabelBreak ? label.breakLabelSize.width : label.size.width;\n if (width > this.maxLabelSize.width) {\n this.maxLabelSize.width = width;\n this.rotatedLabel = label.text;\n }\n var height = isAxisLabelBreak ? label.breakLabelSize.height : label.size.height;\n if (height > this.maxLabelSize.height) {\n this.maxLabelSize.height = height;\n }\n if (isAxisLabelBreak) {\n label.text = this.enableTrim ? label.text : label.originalText.split('
');\n }\n if (action === 'None' || action === 'Hide' || action === 'Trim') {\n continue;\n }\n if ((action !== 'None' || this.angle % 360 === 0) && this.orientation === 'Horizontal' &&\n this.rect.width > 0 && !isIntersect) {\n var width1 = isAxisLabelBreak ? label.breakLabelSize.width : label.size.width;\n pointX = (valueToCoefficient(label.value, this) * this.rect.width) + this.rect.x;\n pointX -= width1 / 2;\n if (this.edgeLabelPlacement === 'Shift') {\n if (i === 0 && pointX < this.rect.x) {\n pointX = this.rect.x;\n }\n if (i === this.visibleLabels.length - 1 && ((pointX + width1) > (this.rect.x + this.rect.width))) {\n pointX = this.rect.x + this.rect.width - width1;\n }\n }\n switch (action) {\n case 'MultipleRows':\n if (i > 0) {\n this.findMultiRows(i, pointX, label, isAxisLabelBreak);\n }\n break;\n case 'Rotate45':\n case 'Rotate90':\n if (i > 0 && (!this.isAxisInverse ? pointX <= previousEnd : pointX + width1 >= previousEnd)) {\n this.angle = (action === 'Rotate45') ? 45 : 90;\n isIntersect = true;\n }\n break;\n default: {\n if (isAxisLabelBreak) {\n var result = void 0;\n var result1 = [];\n var str = void 0;\n for (var index = 0; index < label.text.length; index++) {\n result = textWrap(label.text[index], this.rect.width / this.visibleLabels.length, this.labelStyle, chart.enableRtl, null, null, chart.themeStyle.axisLabelFont);\n if (result.length > 1) {\n for (var j = 0; j < result.length; j++) {\n str = result[j];\n result1.push(str);\n }\n }\n else {\n result1.push(result[0]);\n }\n }\n label.text = result1;\n }\n else {\n label.text = textWrap(label.text, this.rect.width / this.visibleLabels.length, this.labelStyle, chart.enableRtl, null, null, chart.themeStyle.axisLabelFont);\n }\n var height_1 = (label.size.height * label.text.length);\n if (height_1 > this.maxLabelSize.height) {\n this.maxLabelSize.height = height_1;\n }\n break;\n }\n }\n previousEnd = this.isAxisInverse ? pointX : pointX + width1;\n }\n }\n if (this.angle !== 0 && this.orientation === 'Horizontal') {\n //I264474: Fix for datasource bind im mounted console error ocurred\n this.rotatedLabel = isNullOrUndefined(this.rotatedLabel) ? '' : this.rotatedLabel;\n var isHorizontalAngle = this.angle === -360 || this.angle === 0 || this.angle === -180 ||\n this.angle === 180 || this.angle === 360;\n // To avoid overlap axis label with chart title or chart legend when it is outside.\n if (this.labelPosition === 'Outside' && !isHorizontalAngle && isBreakLabel(this.rotatedLabel)) {\n this.maxLabelSize = new Size(this.maxLabelSize.height, this.maxLabelSize.width);\n }\n else {\n this.maxLabelSize = rotateTextSize(this.labelStyle, this.rotatedLabel, this.angle, chart, chart.themeStyle.axisLabelFont);\n }\n }\n else if (this.angle !== 0 && this.orientation === 'Vertical') {\n //I264474: Fix for datasource bind im mounted console error ocurred\n this.rotatedLabel = isNullOrUndefined(this.rotatedLabel) ? '' : this.rotatedLabel;\n var isHorizontalAngle = this.angle === -360 || this.angle === 0 || this.angle === -180 ||\n this.angle === 180 || this.angle === 360;\n // To avoid overlap axis label with chart title or chart legend when it is outside.\n if (this.labelPosition === 'Outside' && !isHorizontalAngle && isBreakLabel(this.rotatedLabel)) {\n this.maxLabelSize = new Size(this.maxLabelSize.height, this.maxLabelSize.width);\n }\n else {\n this.maxLabelSize = rotateTextSize(this.labelStyle, this.rotatedLabel, this.angle, chart, chart.themeStyle.axisLabelFont);\n }\n }\n if (chart.multiLevelLabelModule && this.multiLevelLabels.length > 0) {\n chart.multiLevelLabelModule.getMultilevelLabelsHeight(this);\n }\n };\n /**\n * Finds the multiple rows for axis.\n *\n * @returns {void}\n */\n Axis.prototype.findMultiRows = function (length, currentX, currentLabel, isBreakLabels) {\n var label;\n var pointX;\n var width2;\n var store = [];\n var isMultiRows;\n for (var i = length - 1; i >= 0; i--) {\n label = this.visibleLabels[i];\n width2 = isBreakLabels ? label.breakLabelSize.width : label.size.width;\n pointX = (valueToCoefficient(label.value, this) * this.rect.width) + this.rect.x;\n isMultiRows = !this.isAxisInverse ? currentX < (pointX + width2 * 0.5) :\n currentX + currentLabel.size.width > (pointX - width2 * 0.5);\n if (isMultiRows) {\n store.push(label.index);\n currentLabel.index = (currentLabel.index > label.index) ? currentLabel.index : label.index + 1;\n }\n else {\n currentLabel.index = store.indexOf(label.index) > -1 ? currentLabel.index : label.index;\n }\n }\n var height = ((isBreakLabels ? currentLabel.breakLabelSize.height : currentLabel.size.height) * currentLabel.index) +\n (5 * (currentLabel.index - 1));\n if (height > this.maxLabelSize.height) {\n this.maxLabelSize.height = height;\n }\n };\n /**\n * Finds the default module for axis.\n *\n * @returns {void}\n * @private\n */\n Axis.prototype.getModule = function (chart) {\n if (this.valueType === 'Double') {\n this.baseModule = new Double(chart);\n }\n else {\n this.baseModule = chart[firstToLowerCase(this.valueType) + 'Module'];\n }\n };\n /**\n * Set the axis `opposedPosition` and `isInversed` properties.\n *\n * @param {boolean} isPolar - Indicates whether the axis is polar or not.\n * @returns {void}\n * @private\n */\n Axis.prototype.setIsInversedAndOpposedPosition = function (isPolar) {\n if (isPolar === void 0) { isPolar = false; }\n this.isAxisOpposedPosition = this.opposedPosition || (!isPolar && this.isRTLEnabled && this.orientation === 'Vertical');\n if (this.opposedPosition && (!isPolar && this.isRTLEnabled && this.orientation === 'Vertical')) {\n this.isAxisOpposedPosition = false;\n }\n this.isAxisInverse = this.isInversed || (this.isRTLEnabled && this.orientation === 'Horizontal');\n if (this.isInversed && (!isPolar && this.isRTLEnabled && this.orientation === 'Horizontal')) {\n this.isAxisInverse = false;\n }\n };\n /**\n * Updates the axis within the chart.\n *\n * @returns {void}\n * @private\n */\n Axis.prototype.updateAxis = function () {\n var chart = this.baseModule.chart;\n var chartAxisLayoutPanel = chart.chartAxisLayoutPanel;\n var index = chart.axisCollections.indexOf(this);\n var axisElement = getElement(chart.element.id + 'AxisInsideCollection');\n var axisLineElement = getElement(chart.element.id + 'AxisOutsideCollection');\n chartAxisLayoutPanel.element = chart.renderer.createGroup({ id: chart.element.id + 'AxisGroup' + index + 'Inside' });\n var outsideElement = chart.renderer.createGroup({ id: chart.element.id + 'AxisGroup' + index + 'Outside' });\n var isInside = chartAxisLayoutPanel.findAxisPosition(this);\n chartAxisLayoutPanel.drawAxis(this, index, isInside, outsideElement, axisElement, axisLineElement);\n if (!chart.enableCanvas) {\n appendChildElement(chart.enableCanvas, axisElement, chartAxisLayoutPanel.element, chart.redraw);\n }\n };\n __decorate([\n Complex({ fontFamily: null, size: '12px', fontStyle: 'Normal', fontWeight: '400', color: null }, Font)\n ], Axis.prototype, \"labelStyle\", void 0);\n __decorate([\n Complex({}, CrosshairTooltip)\n ], Axis.prototype, \"crosshairTooltip\", void 0);\n __decorate([\n Property('')\n ], Axis.prototype, \"title\", void 0);\n __decorate([\n Complex({ fontFamily: null, size: null, fontStyle: null, fontWeight: null, color: null }, Font)\n ], Axis.prototype, \"titleStyle\", void 0);\n __decorate([\n Property('')\n ], Axis.prototype, \"labelFormat\", void 0);\n __decorate([\n Property('')\n ], Axis.prototype, \"skeleton\", void 0);\n __decorate([\n Property('DateTime')\n ], Axis.prototype, \"skeletonType\", void 0);\n __decorate([\n Property('Center')\n ], Axis.prototype, \"lineBreakAlignment\", void 0);\n __decorate([\n Property(0)\n ], Axis.prototype, \"plotOffset\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"plotOffsetLeft\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"plotOffsetTop\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"plotOffsetRight\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"plotOffsetBottom\", void 0);\n __decorate([\n Property(false)\n ], Axis.prototype, \"isIndexed\", void 0);\n __decorate([\n Property(10)\n ], Axis.prototype, \"logBase\", void 0);\n __decorate([\n Property(0)\n ], Axis.prototype, \"columnIndex\", void 0);\n __decorate([\n Property(0)\n ], Axis.prototype, \"rowIndex\", void 0);\n __decorate([\n Property(1)\n ], Axis.prototype, \"span\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"desiredIntervals\", void 0);\n __decorate([\n Property(3)\n ], Axis.prototype, \"maximumLabels\", void 0);\n __decorate([\n Property(1)\n ], Axis.prototype, \"zoomFactor\", void 0);\n __decorate([\n Property(0)\n ], Axis.prototype, \"zoomPosition\", void 0);\n __decorate([\n Property(true)\n ], Axis.prototype, \"enableScrollbarOnZooming\", void 0);\n __decorate([\n Property(false)\n ], Axis.prototype, \"opposedPosition\", void 0);\n __decorate([\n Property(true)\n ], Axis.prototype, \"enableAutoIntervalOnZooming\", void 0);\n __decorate([\n Property('Auto')\n ], Axis.prototype, \"rangePadding\", void 0);\n __decorate([\n Property('Double')\n ], Axis.prototype, \"valueType\", void 0);\n __decorate([\n Property('None')\n ], Axis.prototype, \"edgeLabelPlacement\", void 0);\n __decorate([\n Property('Auto')\n ], Axis.prototype, \"intervalType\", void 0);\n __decorate([\n Property('BetweenTicks')\n ], Axis.prototype, \"labelPlacement\", void 0);\n __decorate([\n Property('Outside')\n ], Axis.prototype, \"tickPosition\", void 0);\n __decorate([\n Property('Outside')\n ], Axis.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('')\n ], Axis.prototype, \"name\", void 0);\n __decorate([\n Property(true)\n ], Axis.prototype, \"visible\", void 0);\n __decorate([\n Property(0)\n ], Axis.prototype, \"minorTicksPerInterval\", void 0);\n __decorate([\n Property(0)\n ], Axis.prototype, \"labelRotation\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"titleRotation\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"crossesAt\", void 0);\n __decorate([\n Property(true)\n ], Axis.prototype, \"placeNextToAxisLine\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"crossesInAxis\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"minimum\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"maximum\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"interval\", void 0);\n __decorate([\n Property(34)\n ], Axis.prototype, \"maximumLabelWidth\", void 0);\n __decorate([\n Property(false)\n ], Axis.prototype, \"enableTrim\", void 0);\n __decorate([\n Property(5)\n ], Axis.prototype, \"labelPadding\", void 0);\n __decorate([\n Property(5)\n ], Axis.prototype, \"titlePadding\", void 0);\n __decorate([\n Complex({}, MajorTickLines)\n ], Axis.prototype, \"majorTickLines\", void 0);\n __decorate([\n Complex({}, MinorTickLines)\n ], Axis.prototype, \"minorTickLines\", void 0);\n __decorate([\n Complex({}, MajorGridLines)\n ], Axis.prototype, \"majorGridLines\", void 0);\n __decorate([\n Complex({}, MinorGridLines)\n ], Axis.prototype, \"minorGridLines\", void 0);\n __decorate([\n Complex({}, AxisLine)\n ], Axis.prototype, \"lineStyle\", void 0);\n __decorate([\n Property(Browser.isDevice ? 'Rotate45' : 'Trim')\n ], Axis.prototype, \"labelIntersectAction\", void 0);\n __decorate([\n Property(false)\n ], Axis.prototype, \"isInversed\", void 0);\n __decorate([\n Property(100)\n ], Axis.prototype, \"coefficient\", void 0);\n __decorate([\n Property(0)\n ], Axis.prototype, \"startAngle\", void 0);\n __decorate([\n Property(true)\n ], Axis.prototype, \"startFromZero\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"description\", void 0);\n __decorate([\n Property(2)\n ], Axis.prototype, \"tabIndex\", void 0);\n __decorate([\n Collection([], StripLineSettings)\n ], Axis.prototype, \"stripLines\", void 0);\n __decorate([\n Collection([], MultiLevelLabels)\n ], Axis.prototype, \"multiLevelLabels\", void 0);\n __decorate([\n Complex({ color: null, width: 0, type: 'Rectangle' }, LabelBorder)\n ], Axis.prototype, \"border\", void 0);\n __decorate([\n Complex({}, ScrollbarSettings)\n ], Axis.prototype, \"scrollbarSettings\", void 0);\n return Axis;\n}(ChildProperty));\nexport { Axis };\n/** @private */\nvar VisibleLabels = /** @class */ (function () {\n function VisibleLabels(text, value, labelStyle, originalText, size, breakLabelSize, index) {\n if (size === void 0) { size = new Size(0, 0); }\n if (breakLabelSize === void 0) { breakLabelSize = new Size(0, 0); }\n if (index === void 0) { index = 1; }\n this.text = text;\n this.originalText = originalText;\n this.value = value;\n this.labelStyle = labelStyle;\n this.size = size;\n this.breakLabelSize = breakLabelSize;\n this.index = index;\n }\n return VisibleLabels;\n}());\nexport { VisibleLabels };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Animation, compile as templateComplier, Browser } from '@syncfusion/ej2-base';\nimport { merge, extend, isNullOrUndefined, resetBlazorTemplate } from '@syncfusion/ej2-base';\nimport { createElement, remove } from '@syncfusion/ej2-base';\nimport { Index } from '../../common/model/base';\nimport { VisibleLabels } from '../../chart/axis/axis';\nimport { axisLabelRender, regSub } from '../model/constants';\nimport { measureText, Rect, TextOption, Size, PathOption, SvgRenderer, CanvasRenderer } from '@syncfusion/ej2-svg-base';\n/**\n * Function to sort the dataSource, by default it sort the data in ascending order.\n *\n * @param {Object} data chart data\n * @param {string} fields date fields\n * @param {boolean} isDescending boolean values of descending\n * @returns {Object[]} It returns chart data which be sorted.\n */\nexport function sort(data, fields, isDescending) {\n var sortData = extend([], data, null);\n for (var i = 0; i < sortData.length; i++) {\n for (var j = 0; j < fields.length; j++) {\n if (sortData[i][fields[j]] instanceof Date) {\n sortData[i][fields[j]] = sortData[i][fields[j]].getTime();\n }\n }\n }\n sortData.sort(function (a, b) {\n var first = 0;\n var second = 0;\n for (var i = 0; i < fields.length; i++) {\n first += a[fields[i]];\n second += b[fields[i]];\n }\n if ((!isDescending && first < second) || (isDescending && first > second)) {\n return -1;\n }\n else if (first === second) {\n return 0;\n }\n return 1;\n });\n return sortData;\n}\n/**\n * Checks if a label contains a line break.\n *\n * @param {string} label - The label to check.\n * @returns {boolean} - True if the label contains a line break, otherwise false.\n */\nexport function isBreakLabel(label) {\n return label.indexOf('
') !== -1;\n}\n/**\n * Retrieves the visible data points from a series.\n *\n * @param {Series | Chart3DSeries} series - The series to retrieve the visible data points.\n * @returns {Points[]} - An array containing the visible data points.\n */\nexport function getVisiblePoints(series) {\n var points = extend([], series.points, null, true);\n var tempPoints = [];\n var tempPoint;\n var pointIndex = 0;\n for (var i = 0; i < points.length; i++) {\n tempPoint = points[i];\n if (isNullOrUndefined(tempPoint.x)) {\n continue;\n }\n else {\n tempPoint.index = pointIndex++;\n tempPoints.push(tempPoint);\n }\n }\n return tempPoints;\n}\n/**\n * Rotates the size of text based on the provided angle.\n *\n * @param {FontModel} font - The font style of the text.\n * @param {string} text - The text to be rotated.\n * @param {number} angle - The angle of rotation.\n * @param {Chart | Chart3D} chart - The chart instance.\n * @param {FontModel} themeFontStyle - The font style based on the theme.\n * @returns {Size} - The rotated size of the text.\n */\nexport function rotateTextSize(font, text, angle, chart, themeFontStyle) {\n var transformValue = chart.element.style.transform;\n if (transformValue) {\n chart.element.style.transform = '';\n }\n var renderer = new SvgRenderer(chart.element.id);\n var labelText;\n var textCollection = [];\n var height;\n var dy;\n var label;\n var tspanElement;\n var options = {\n id: 'rotate_text',\n x: chart.initialClipRect.x,\n y: chart.initialClipRect.y,\n 'font-size': font.size || themeFontStyle.size,\n 'font-style': font.fontStyle || themeFontStyle.fontStyle,\n 'font-family': font.fontFamily,\n 'font-weight': font.fontWeight || themeFontStyle.fontWeight,\n 'transform': 'rotate(' + angle + ', 0, 0)',\n 'text-anchor': 'middle'\n };\n if (isBreakLabel(text)) {\n textCollection = text.split('
');\n labelText = textCollection[0];\n }\n else {\n labelText = text;\n }\n var htmlObject = renderer.createText(options, labelText);\n if (!chart.delayRedraw && !chart.redraw && !chart.stockChart) {\n chart.element.appendChild(chart.svgObject);\n }\n // for line break label\n if (typeof textCollection !== 'string' && textCollection.length > 1) {\n for (var i = 1, len = textCollection.length; i < len; i++) {\n height = (measureText(textCollection[i], font, chart.themeStyle.axisLabelFont).height);\n dy = (options.y) + ((i * height));\n label = textCollection[i];\n tspanElement = renderer.createTSpan({\n 'x': options.x, 'id': options.id,\n 'y': dy\n }, label);\n htmlObject.appendChild(tspanElement);\n }\n }\n var axisSvgObject = chart.svgRenderer.createSvg({ id: 'AxisLabelMax_svg' });\n document.body.appendChild(axisSvgObject);\n axisSvgObject.appendChild(htmlObject);\n var box = htmlObject.getBoundingClientRect();\n if (transformValue) {\n chart.element.style.transform = transformValue;\n }\n remove(axisSvgObject);\n if (!chart.delayRedraw && !chart.redraw && !chart.stockChart && !chart.pointsAdded) {\n remove(chart.svgObject);\n }\n if (chart.enableCanvas) {\n var textWidth = measureText(text, font, chart.themeStyle.axisLabelFont).width;\n var textHeight = measureText(text, font, chart.themeStyle.axisLabelFont).height;\n var angleInRadians = (angle * Math.PI) / 180; // Convert the rotation angle to radians\n var rotatedTextWidth = Math.abs(Math.cos(angleInRadians) * textWidth) + Math.abs(Math.sin(angleInRadians) * textHeight);\n var rotatedTextHeight = Math.abs(Math.sin(angleInRadians) * textWidth) + Math.abs(Math.cos(angleInRadians) * textHeight);\n return new Size(rotatedTextWidth, rotatedTextHeight);\n }\n return new Size((box.right - box.left), (box.bottom - box.top));\n}\n/**\n * Removes the specified element.\n *\n * @param {string | Element} id - The id or reference of the element to be removed.\n * @returns {void}\n */\nexport function removeElement(id) {\n if (!id) {\n return null;\n }\n var element = typeof id === 'string' ? getElement(id) : id;\n if (element) {\n remove(element);\n }\n}\n/**\n * Calculates the logarithm of a specified value with respect to a specified base.\n *\n * @param {number} value - The value for which to calculate the logarithm.\n * @param {number} base - The base of the logarithm.\n * @returns {number} - The logarithm of the value with respect to the specified base.\n */\nexport function logBase(value, base) {\n return Math.log(value) / Math.log(base);\n}\n/**\n * Displays a tooltip at the specified coordinates with the given text.\n *\n * @param {string} text - The text content of the tooltip.\n * @param {number} x - The x-coordinate where the tooltip should be displayed.\n * @param {number} y - The y-coordinate where the tooltip should be displayed.\n * @param {number} areaWidth - The width of the area where the tooltip is displayed.\n * @param {string} id - The id of the tooltip element.\n * @param {Element} element - The element to which the tooltip is appended.\n * @param {boolean} isTouch - Indicates whether the tooltip is displayed on a touch device.\n * @param {boolean} isTitleOrLegendEnabled - Indicates whether the tooltip is enabled for title or legend.\n * @param {Rect} bound - The bounding rectangle in which the tooltip should be confined.\n * @returns {void}\n * @private\n */\nexport function showTooltip(text, x, y, areaWidth, id, element, isTouch, isTitleOrLegendEnabled, bound) {\n //let id1: string = 'EJ2_legend_tooltip';\n var tooltip = document.getElementById(id);\n var size = measureText(text, {\n fontFamily: 'Segoe UI', size: '12px',\n fontStyle: 'Normal', fontWeight: 'Regular'\n });\n var width = size.width + 5;\n x = (x + width > areaWidth) ? x - (width + 15) : x;\n if (bound && x < bound.x) {\n x = bound.x;\n }\n y = isTitleOrLegendEnabled ? (y - size.height / 2) : y + 15;\n if (!tooltip) {\n tooltip = createElement('div', {\n id: id,\n styles: 'top:' + (y).toString() + 'px;left:' + (x + 15).toString() +\n 'px;background-color: rgb(255, 255, 255) !important; color:black !important; ' +\n 'position:absolute;border:1px solid rgb(112, 112, 112); padding-left : 3px; padding-right : 2px;' +\n 'padding-bottom : 2px; padding-top : 2px; font-size:12px; font-family: \"Segoe UI\"'\n });\n tooltip.innerText = text;\n element.appendChild(tooltip);\n var left = parseInt(tooltip.style.left.replace('px', ''), 10);\n if (left < 0) {\n tooltip.style.left = '0px';\n }\n }\n else {\n tooltip.innerText = text;\n tooltip.style.top = (y).toString() + 'px';\n tooltip.style.left = (x + 15).toString() + 'px';\n }\n if (isTouch) {\n setTimeout(function () { removeElement(id); }, 1500);\n }\n}\n/**\n * Checks if a value is within the specified range.\n *\n * @param {number} value - The value to check.\n * @param {VisibleRangeModel} range - The range to check against.\n * @returns {boolean} - True if the value is inside the range, otherwise false.\n */\nexport function inside(value, range) {\n return (value < range.max) && (value > range.min);\n}\n/**\n * Checks if a value is within the specified range.\n *\n * @param {number} value - The value to check.\n * @param {VisibleRangeModel} range - The range to check against.\n * @returns {boolean} - True if the value is inside the range, otherwise false.\n */\nexport function withIn(value, range) {\n return (value <= range.max) && (value >= range.min);\n}\n/**\n * Adjusts the value based on the axis type.\n *\n * @param {number} value - The value to adjust.\n * @param {Axis} axis - The axis used for adjustment.\n * @returns {number} - The adjusted value.\n */\nexport function logWithIn(value, axis) {\n return axis.valueType === 'Logarithmic' ? logBase(value, axis.logBase) : value;\n}\n/**\n * Checks if a point is within the range of the previous and next points in a series.\n *\n * @param {Points} previousPoint - The previous point in the series.\n * @param {Points} currentPoint - The current point to check.\n * @param {Points} nextPoint - The next point in the series.\n * @param {Series} series - The series to which the points belong.\n * @returns {boolean} - A boolean indicating if the point is within the range.\n * @private\n */\nexport function withInRange(previousPoint, currentPoint, nextPoint, series) {\n if (series.chart.zoomModule && series.chart.zoomSettings.enableAnimation) {\n return true;\n }\n var mX2 = logWithIn(currentPoint.xValue, series.xAxis);\n var mX1 = previousPoint ? logWithIn(previousPoint.xValue, series.xAxis) : mX2;\n var mX3 = nextPoint ? logWithIn(nextPoint.xValue, series.xAxis) : mX2;\n var xStart = Math.floor(series.xAxis.visibleRange.min);\n var xEnd = Math.ceil(series.xAxis.visibleRange.max);\n return ((mX1 >= xStart && mX1 <= xEnd) || (mX2 >= xStart && mX2 <= xEnd) ||\n (mX3 >= xStart && mX3 <= xEnd) || (xStart >= mX1 && xStart <= mX3));\n}\n/**\n * Calculates the sum of an array of numbers.\n *\n * @param {number[]} values - An array of numbers.\n * @returns {number} - The sum of the numbers in the array.\n */\nexport function sum(values) {\n var sum = 0;\n for (var _i = 0, values_1 = values; _i < values_1.length; _i++) {\n var value = values_1[_i];\n sum += value;\n }\n return sum;\n}\n/**\n * Calculates the sum of elements in a subarray.\n *\n * @param {Object[]} values - The array containing elements.\n * @param {number} first - The index of the first element in the subarray.\n * @param {number} last - The index of the last element in the subarray.\n * @param {number[]} index - The array of indices.\n * @param {Series} series - The series object.\n * @returns {number} - The sum of elements in the subarray.\n * @private\n */\nexport function subArraySum(values, first, last, index, series) {\n var sum = 0;\n if (index !== null) {\n for (var i = (first + 1); i < last; i++) {\n if (index.indexOf(i) === -1) {\n sum += values[i][series.yName];\n }\n }\n }\n else {\n for (var i = (first + 1); i < last; i++) {\n if (!isNullOrUndefined(values[i][series.yName])) {\n sum += values[i][series.yName];\n }\n }\n }\n return sum;\n}\n/**\n * Subtracts thickness from the given rectangle.\n *\n * @param {Rect} rect - The rectangle from which to subtract thickness.\n * @param {Thickness} thickness - The thickness to subtract.\n * @returns {Rect} - The resulting rectangle after subtracting thickness.\n */\nexport function subtractThickness(rect, thickness) {\n rect.x += thickness.left;\n rect.y += thickness.top;\n rect.width -= thickness.left + thickness.right;\n rect.height -= thickness.top + thickness.bottom;\n return rect;\n}\n/**\n * Subtracts a rectangle representing thickness from the given rectangle.\n *\n * @param {Rect} rect - The rectangle from which to subtract the thickness rectangle.\n * @param {Thickness} thickness - The rectangle representing the thickness to subtract.\n * @returns {Rect} - The resulting rectangle after subtracting the thickness rectangle.\n */\nexport function subtractRect(rect, thickness) {\n rect.x += thickness.x;\n rect.y += thickness.y;\n rect.width -= thickness.x + thickness.width;\n rect.height -= thickness.y + thickness.height;\n return rect;\n}\n/**\n * Converts a degree value to a location on the chart based on the provided radius and center point.\n *\n * @param {number} degree - The degree value to convert.\n * @param {number} radius - The radius from the center point.\n * @param {ChartLocation} center - The center point of the chart.\n * @returns {ChartLocation} - The location on the chart corresponding to the degree value.\n */\nexport function degreeToLocation(degree, radius, center) {\n var radian = (degree * Math.PI) / 180;\n return new ChartLocation(Math.cos(radian) * radius + center.x, Math.sin(radian) * radius + center.y);\n}\n/**\n * Converts a degree value to radians.\n *\n * @param {number} degree - The degree value to convert.\n * @returns {number} - The equivalent value in radians.\n */\nexport function degreeToRadian(degree) {\n return degree * (Math.PI / 180);\n}\n/**\n * Get the coordinates of a rotated rectangle.\n *\n * @param {ChartLocation[]} actualPoints - The coordinates of the original rectangle.\n * @param {number} centerX - The x-coordinate of the center of rotation.\n * @param {number} centerY - The y-coordinate of the center of rotation.\n * @param {number} angle - The angle of rotation in degrees.\n * @returns {ChartLocation[]} - The coordinates of the rotated rectangle.\n */\nexport function getRotatedRectangleCoordinates(actualPoints, centerX, centerY, angle) {\n var coordinatesAfterRotation = [];\n for (var i = 0; i < 4; i++) {\n var point = actualPoints[i];\n // translate point to origin\n var tempX = point.x - centerX;\n var tempY = point.y - centerY;\n // now apply rotation\n var rotatedX = tempX * Math.cos(degreeToRadian(angle)) - tempY * Math.sin(degreeToRadian(angle));\n var rotatedY = tempX * Math.sin(degreeToRadian(angle)) + tempY * Math.cos(degreeToRadian(angle));\n // translate back\n point.x = rotatedX + centerX;\n point.y = rotatedY + centerY;\n coordinatesAfterRotation.push(new ChartLocation(point.x, point.y));\n }\n return coordinatesAfterRotation;\n}\n/**\n * Helper function to determine whether there is an intersection between the two polygons described\n * by the lists of vertices. Uses the Separating Axis Theorem.\n *\n * @param {ChartLocation[]} a an array of connected points [{x:, y:}, {x:, y:},...] that form a closed polygon.\n * @param {ChartLocation[]} b an array of connected points [{x:, y:}, {x:, y:},...] that form a closed polygon.\n * @returns {boolean} if there is any intersection between the 2 polygons, false otherwise.\n */\nexport function isRotatedRectIntersect(a, b) {\n var polygons = [a, b];\n var minA;\n var maxA;\n var projected;\n var i;\n var i1;\n var j;\n var minB;\n var maxB;\n for (i = 0; i < polygons.length; i++) {\n // for each polygon, look at each edge of the polygon, and determine if it separates\n // the two shapes\n var polygon = polygons[i];\n for (i1 = 0; i1 < polygon.length; i1++) {\n // grab 2 vertices to create an edge\n var i2 = (i1 + 1) % polygon.length;\n var p1 = polygon[i1];\n var p2 = polygon[i2];\n // find the line perpendicular to this edge\n var normal = new ChartLocation(p2.y - p1.y, p1.x - p2.x);\n minA = maxA = undefined;\n // for each vertex in the first shape, project it onto the line perpendicular to the edge\n // and keep track of the min and max of these values\n for (j = 0; j < a.length; j++) {\n projected = normal.x * a[j].x + normal.y * a[j].y;\n if (isNullOrUndefined(minA) || projected < minA) {\n minA = projected;\n }\n if (isNullOrUndefined(maxA) || projected > maxA) {\n maxA = projected;\n }\n }\n // for each vertex in the second shape, project it onto the line perpendicular to the edge\n // and keep track of the min and max of these values\n minB = maxB = undefined;\n for (j = 0; j < b.length; j++) {\n projected = normal.x * b[j].x + normal.y * b[j].y;\n if (isNullOrUndefined(minB) || projected < minB) {\n minB = projected;\n }\n if (isNullOrUndefined(maxB) || projected > maxB) {\n maxB = projected;\n }\n }\n // if there is no overlap between the projects, the edge we are looking at separates the two\n // polygons, and we know there is no overlap\n if (maxA < minB || maxB < minA) {\n return false;\n }\n }\n }\n return true;\n}\n/**\n * Generates the legend for accumulation chart.\n *\n * @param {number} locX - The x-coordinate of the legend position.\n * @param {number} locY - The y-coordinate of the legend position.\n * @param {number} r - The radius of the chart.\n * @param {number} height - The height of the legend.\n * @param {number} width - The width of the legend.\n * @returns {string} - The generated legend.\n */\nfunction getAccumulationLegend(locX, locY, r, height, width) {\n var cartesianlarge = degreeToLocation(270, r, new ChartLocation(locX, locY));\n var cartesiansmall = degreeToLocation(270, r, new ChartLocation(locX + (width / 10), locY));\n return 'M' + ' ' + locX + ' ' + locY + ' ' + 'L' + ' ' + (locX + r) + ' ' + (locY) + ' ' + 'A' + ' ' + (r) + ' ' + (r) +\n ' ' + 0 + ' ' + 1 + ' ' + 1 + ' ' + cartesianlarge.x + ' ' + cartesianlarge.y + ' ' + 'Z' + ' ' + 'M' + ' ' + (locX +\n (width / 10)) + ' ' + (locY - (height / 10)) + ' ' + 'L' + (locX + (r)) + ' ' + (locY - height / 10) + ' ' + 'A' + ' '\n + (r) + ' ' + (r) + ' ' + 0 + ' ' + 0 + ' ' + 0 + ' ' + cartesiansmall.x + ' ' + cartesiansmall.y + ' ' + 'Z';\n}\n/**\n * Calculates the angle between two points.\n *\n * @param {ChartLocation} center - The center point.\n * @param {ChartLocation} point - The point to calculate the angle from the center.\n * @returns {number} - The angle in degrees.\n */\nexport function getAngle(center, point) {\n var angle = Math.atan2((point.y - center.y), (point.x - center.x));\n angle = angle < 0 ? (6.283 + angle) : angle;\n return angle * (180 / Math.PI);\n}\n/**\n * Returns a sub-array of values starting from the specified index.\n *\n * @param {number[]} values - The array of numbers.\n * @param {number} index - The index from which the sub-array starts.\n * @returns {number[]} - The sub-array of values.\n */\nexport function subArray(values, index) {\n var subArray = [];\n for (var i = 0; i <= index - 1; i++) {\n subArray.push(values[i]);\n }\n return subArray;\n}\n/**\n * Converts a value to its corresponding coefficient based on the axis range.\n *\n * @param {number} value - The value to be converted.\n * @param {Axis} axis - The axis object containing range information.\n * @returns {number} - The coefficient value corresponding to the input value.\n */\nexport function valueToCoefficient(value, axis) {\n var range = axis.visibleRange;\n var result = (value - range.min) / (range.delta);\n var isInverse = axis.isChart ? axis.isAxisInverse : axis.isInversed;\n return isInverse ? (1 - result) : result;\n}\n/**\n * Transforms a point to its visible position based on the axes range and inversion.\n *\n * @param {number} x - The x-coordinate of the point.\n * @param {number} y - The y-coordinate of the point.\n * @param {Axis} xAxis - The x-axis object containing range information.\n * @param {Axis} yAxis - The y-axis object containing range information.\n * @param {boolean} [isInverted=false] - Specifies if the chart is inverted.\n * @param {Series} [series] - The series object for additional information (optional).\n * @returns {ChartLocation} - The transformed visible position of the point.\n */\nexport function TransformToVisible(x, y, xAxis, yAxis, isInverted, series) {\n x = (xAxis.valueType === 'Logarithmic' ? logBase(x > 1 ? x : 1, xAxis.logBase) : x);\n y = (yAxis.valueType === 'Logarithmic' ?\n logBase(y > 1 ? y : 1, yAxis.logBase) : y);\n x += xAxis.valueType === 'Category' && xAxis.labelPlacement === 'BetweenTicks' && series.type !== 'Radar' ? 0.5 : 0;\n var radius = series.chart.radius * valueToCoefficient(y, yAxis);\n var point = CoefficientToVector(valueToPolarCoefficient(x, xAxis), series.chart.primaryXAxis.startAngle);\n return {\n x: (series.clipRect.width / 2 + series.clipRect.x) + radius * point.x,\n y: (series.clipRect.height / 2 + series.clipRect.y) + radius * point.y\n };\n}\n/**\n * Finds the index from the given id.\n *\n * @param {string} id - The id to search for.\n * @param {boolean} [isPoint=false] - Specifies if the id represents a data point (optional).\n * @returns {Index} - The index found from the id.\n */\nexport function indexFinder(id, isPoint) {\n if (isPoint === void 0) { isPoint = false; }\n var ids = ['NaN', 'NaN'];\n if (id.indexOf('_Point_') > -1) {\n ids = id.split('_Series_')[1].split('_Point_');\n }\n else if (id.indexOf('_shape_') > -1 && (!isPoint || (isPoint && id.indexOf('_legend_') === -1))) {\n ids = id.split('_shape_');\n ids[0] = '0';\n }\n else if (id.indexOf('_text_') > -1 && (!isPoint || (isPoint && id.indexOf('_legend_') === -1))) {\n ids = id.split('_text_');\n ids[0] = '0';\n }\n return new Index(parseInt(ids[0], 10), parseInt(ids[1], 10));\n}\n/**\n * Converts a coefficient value to a vector representing a point on the circumference of a circle.\n *\n * @param {number} coefficient - The coefficient value to convert.\n * @param {number} startAngle - The starting angle of the circle.\n * @returns {ChartLocation} - The vector representing the point on the circle.\n */\nexport function CoefficientToVector(coefficient, startAngle) {\n startAngle = startAngle < 0 ? startAngle + 360 : startAngle;\n var angle = Math.PI * (1.5 - 2 * coefficient);\n angle = angle + (startAngle * Math.PI) / 180;\n return { x: Math.cos(angle), y: Math.sin(angle) };\n}\n/**\n * Converts a value to a polar coefficient value based on the axis.\n *\n * @param {number} value - The value to convert.\n * @param {Axis} axis - The axis object.\n * @returns {number} - The polar coefficient value.\n */\nexport function valueToPolarCoefficient(value, axis) {\n var range = axis.visibleRange;\n var delta;\n var length;\n if (axis.valueType !== 'Category') {\n delta = (range.max - (axis.valueType === 'DateTime' ? axis.dateTimeInterval : range.interval)) - range.min;\n length = axis.visibleLabels.length - 1;\n delta = delta === 0 ? 1 : delta;\n }\n else {\n // To split an interval equally based on visible labels count\n delta = axis.visibleLabels.length === 1 ? 1 :\n (axis.visibleLabels[axis.visibleLabels.length - 1].value - axis.visibleLabels[0].value);\n length = axis.visibleLabels.length;\n }\n return axis.isAxisInverse ? ((value - range.min) / delta) * (1 - 1 / (length)) :\n 1 - ((value - range.min) / delta) * (1 - 1 / (length));\n}\n/** @private */\nvar Mean = /** @class */ (function () {\n function Mean(verticalStandardMean, verticalSquareRoot, horizontalStandardMean, horizontalSquareRoot, verticalMean, horizontalMean) {\n this.verticalStandardMean = verticalStandardMean;\n this.horizontalStandardMean = horizontalStandardMean;\n this.verticalSquareRoot = verticalSquareRoot;\n this.horizontalSquareRoot = horizontalSquareRoot;\n this.verticalMean = verticalMean;\n this.horizontalMean = horizontalMean;\n }\n return Mean;\n}());\nexport { Mean };\n/** @private */\nvar PolarArc = /** @class */ (function () {\n function PolarArc(startAngle, endAngle, innerRadius, radius, currentXPosition) {\n this.startAngle = startAngle;\n this.endAngle = endAngle;\n this.innerRadius = innerRadius;\n this.radius = radius;\n this.currentXPosition = currentXPosition;\n }\n return PolarArc;\n}());\nexport { PolarArc };\n/**\n * Creates a tooltip element with the specified id, text, position, and font size.\n *\n * @param {string} id - The id of the tooltip element.\n * @param {string} text - The text content of the tooltip.\n * @param {number} top - The top position of the tooltip.\n * @param {number} left - The left position of the tooltip.\n * @param {string} fontSize - The font size of the tooltip text.\n * @returns {void}\n */\nexport function createTooltip(id, text, top, left, fontSize) {\n var tooltip = getElement(id);\n var style = 'top:' + top.toString() + 'px;' +\n 'left:' + left.toString() + 'px;' +\n 'color:black !important; ' +\n 'background:#FFFFFF !important; ' +\n 'position:absolute;border:1px solid #707070;font-size:' + fontSize + ';border-radius:2px; z-index:1';\n if (!tooltip) {\n tooltip = createElement('div', {\n id: id, innerHTML: ' ' + text + ' ', styles: style\n });\n document.body.appendChild(tooltip);\n }\n else {\n tooltip.setAttribute('innerHTML', ' ' + text + ' ');\n tooltip.setAttribute('styles', style);\n }\n}\n/**\n * Creates zooming labels for the specified axis and adds them to the parent element.\n *\n * @param {Chart} chart - The chart instance.\n * @param {Axis} axis - The axis for which to create zooming labels.\n * @param {Element} parent - The parent element to which the labels will be appended.\n * @param {number} index - The index of the label.\n * @param {boolean} isVertical - Indicates whether the axis is vertical.\n * @param {Rect} rect - The bounding rectangle of the label.\n * @returns {Element} - The created zooming label element.\n */\nexport function createZoomingLabels(chart, axis, parent, index, isVertical, rect) {\n var margin = 5;\n var opposedPosition = axis.isAxisOpposedPosition;\n var anchor = chart.enableRtl ? 'end' : isVertical ? 'start' : 'auto';\n var size;\n var chartRect = chart.availableSize.width;\n var pathElement;\n var x;\n var y;\n var rx = 3;\n var arrowLocation;\n var direction;\n var scrollBarHeight = axis.scrollbarSettings.enable || (axis.zoomingScrollBar && axis.zoomingScrollBar.svgObject)\n ? axis.scrollBarHeight : 0;\n var isRtlEnabled = (chart.enableRtl && !isVertical && !axis.isInversed) ||\n (axis.isInversed && !(chart.enableRtl && !isVertical));\n for (var i = 0; i < 2; i++) {\n size = measureText(i ? (isRtlEnabled ? axis.startLabel : axis.endLabel) : (isRtlEnabled ? axis.endLabel : axis.startLabel), axis.labelStyle, chart.themeStyle.axisLabelFont);\n if (isVertical) {\n arrowLocation = i ? new ChartLocation(rect.x - scrollBarHeight, rect.y + rx) :\n new ChartLocation(axis.rect.x - scrollBarHeight, (rect.y + rect.height - rx));\n x = (rect.x + (opposedPosition ? (rect.width + margin + scrollBarHeight) : -(size.width + margin + margin + scrollBarHeight)));\n y = (rect.y + (i ? 0 : rect.height - size.height - margin));\n x += (x < 0 || ((chartRect) < (x + size.width + margin))) ? (opposedPosition ? -(size.width / 2) : size.width / 2) : 0;\n direction = findCrosshairDirection(rx, rx, new Rect(x, y, size.width + margin, size.height + margin), arrowLocation, margin, false, false, !opposedPosition, arrowLocation.x, arrowLocation.y + (i ? -rx : rx));\n }\n else {\n arrowLocation = i ? new ChartLocation((rect.x + rect.width - rx), (rect.y + rect.height + scrollBarHeight)) :\n new ChartLocation(rect.x + rx, (rect.y + rect.height + scrollBarHeight));\n x = (rect.x + (i ? (rect.width - size.width - margin) : 0));\n y = (opposedPosition ? (rect.y - size.height - 10 - scrollBarHeight) : (rect.y + rect.height + margin + scrollBarHeight));\n direction = findCrosshairDirection(rx, rx, new Rect(x, y, size.width + margin, size.height + margin), arrowLocation, margin, opposedPosition, !opposedPosition, false, arrowLocation.x + (i ? rx : -rx), arrowLocation.y);\n }\n x = x + (margin / 2);\n y = y + (3 * (size.height / 4)) + (margin / 2);\n pathElement = chart.renderer.drawPath({\n 'id': chart.element.id + '_Zoom_' + index + '_AxisLabel_Shape_' + i,\n 'fill': chart.themeStyle.crosshairFill, 'width': 2, 'color': chart.themeStyle.crosshairFill,\n 'opacity': 1, 'stroke-dasharray': null, 'd': direction\n }, null);\n parent.appendChild(pathElement);\n if (chart.theme === 'Fluent' || chart.theme === 'FluentDark') {\n var shadowId = chart.element.id + '_shadow';\n pathElement.setAttribute('filter', Browser.isIE ? '' : 'url(#' + shadowId + ')');\n var shadow = '';\n shadow += '';\n shadow += '';\n var defElement = chart.renderer.createDefs();\n defElement.setAttribute('id', chart.element.id + 'SVG_tooltip_definition');\n parent.appendChild(defElement);\n defElement.innerHTML = shadow;\n pathElement.setAttribute('stroke', '#cccccc');\n pathElement.setAttribute('stroke-width', '0.5');\n }\n textElement(chart.renderer, new TextOption(chart.element.id + '_Zoom_' + index + '_AxisLabel_' + i, x, y, anchor, i ? (isRtlEnabled ? axis.startLabel : axis.endLabel) : (isRtlEnabled ? axis.endLabel : axis.startLabel)), { color: chart.themeStyle.crosshairLabelFont.color, fontFamily: 'Segoe UI', fontWeight: 'Regular', size: '11px' }, chart.themeStyle.crosshairLabelFont.color, parent, null, null, null, null, null, null, null, null, null, null, chart.themeStyle.crosshairLabelFont);\n }\n return parent;\n}\n/**\n * Finds the direction of the crosshair based on the provided parameters.\n *\n * @param {number} rX - The x-coordinate of the crosshair line.\n * @param {number} rY - The y-coordinate of the crosshair line.\n * @param {Rect} rect - The bounding rectangle of the crosshair.\n * @param {ChartLocation} arrowLocation - The location of the arrow in the crosshair.\n * @param {number} arrowPadding - The padding for the arrow.\n * @param {boolean} top - Indicates whether the crosshair is positioned at the top.\n * @param {boolean} bottom - Indicates whether the crosshair is positioned at the bottom.\n * @param {boolean} left - Indicates whether the crosshair is positioned at the left.\n * @param {number} tipX - The x-coordinate of the crosshair tip.\n * @param {number} tipY - The y-coordinate of the crosshair tip.\n * @returns {string} - The direction of the crosshair ('Top', 'Bottom', 'Left', 'Right', 'Center').\n */\nexport function findCrosshairDirection(rX, rY, rect, arrowLocation, arrowPadding, top, bottom, left, tipX, tipY) {\n var direction = '';\n var startX = rect.x;\n var startY = rect.y;\n var width = rect.x + rect.width;\n var height = rect.y + rect.height;\n if (top) {\n direction = direction.concat('M' + ' ' + (startX) + ' ' + (startY + rY) + ' Q ' + startX + ' '\n + startY + ' ' + (startX + rX) + ' ' + startY);\n direction = direction.concat(' L' + ' ' + (width - rX) + ' ' + (startY) + ' Q ' + width + ' '\n + startY + ' ' + (width) + ' ' + (startY + rY));\n direction = direction.concat(' L' + ' ' + (width) + ' ' + (height - rY) + ' Q ' + width + ' '\n + (height) + ' ' + (width - rX) + ' ' + (height));\n if (arrowPadding !== 0) {\n direction = direction.concat(' L' + ' ' + (arrowLocation.x + arrowPadding / 2) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (tipX) + ' ' + (height + arrowPadding)\n + ' L' + ' ' + (arrowLocation.x - arrowPadding / 2) + ' ' + height);\n }\n if ((arrowLocation.x - arrowPadding / 2) > startX) {\n direction = direction.concat(' L' + ' ' + (startX + rX) + ' ' + height + ' Q ' + startX + ' '\n + height + ' ' + (startX) + ' ' + (height - rY) + ' z');\n }\n else {\n if (arrowPadding === 0) {\n direction = direction.concat(' L' + ' ' + (startX + rX) + ' ' + height + ' Q ' + startX + ' '\n + height + ' ' + (startX) + ' ' + (height - rY) + ' z');\n }\n else {\n direction = direction.concat(' L' + ' ' + (startX) + ' ' + (height + rY) + ' z');\n }\n }\n }\n else if (bottom) {\n direction = direction.concat('M' + ' ' + (startX) + ' ' + (startY + rY) + ' Q ' + startX + ' '\n + (startY) + ' ' + (startX + rX) + ' ' + (startY) + ' L' + ' ' + (arrowLocation.x - arrowPadding / 2) + ' ' + (startY));\n direction = direction.concat(' L' + ' ' + (tipX) + ' ' + (arrowLocation.y));\n direction = direction.concat(' L' + ' ' + (arrowLocation.x + arrowPadding / 2) + ' ' + (startY));\n direction = direction.concat(' L' + ' ' + (width - rX) + ' ' + (startY)\n + ' Q ' + (width) + ' ' + (startY) + ' ' + (width) + ' ' + (startY + rY));\n direction = direction.concat(' L' + ' ' + (width) + ' ' + (height - rY) + ' Q ' + (width) + ' '\n + (height) + ' ' + (width - rX) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (startX + rX) + ' ' + (height) + ' Q ' + (startX) + ' '\n + (height) + ' ' + (startX) + ' ' + (height - rY) + ' z');\n }\n else if (left) {\n direction = direction.concat('M' + ' ' + (startX) + ' ' + (startY + rY) + ' Q ' + startX + ' '\n + (startY) + ' ' + (startX + rX) + ' ' + (startY));\n direction = direction.concat(' L' + ' ' + (width - rX) + ' ' + (startY) + ' Q ' + (width) + ' '\n + (startY) + ' ' + (width) + ' ' + (startY + rY) + ' L' + ' ' + (width) + ' ' + (arrowLocation.y - arrowPadding / 2));\n direction = direction.concat(' L' + ' ' + (width + arrowPadding) + ' ' + (tipY));\n direction = direction.concat(' L' + ' ' + (width) + ' ' + (arrowLocation.y + arrowPadding / 2));\n direction = direction.concat(' L' + ' ' + (width) + ' ' + (height - rY) + ' Q ' + width + ' ' + (height) + ' ' + (width - rX) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (startX + rX) + ' ' + (height) + ' Q ' + startX + ' '\n + (height) + ' ' + (startX) + ' ' + (height - rY) + ' z');\n }\n else {\n direction = direction.concat('M' + ' ' + (startX + rX) + ' ' + (startY) + ' Q ' + (startX) + ' '\n + (startY) + ' ' + (startX) + ' ' + (startY + rY) + ' L' + ' ' + (startX) + ' ' + (arrowLocation.y - arrowPadding / 2));\n direction = direction.concat(' L' + ' ' + (startX - arrowPadding) + ' ' + (tipY));\n direction = direction.concat(' L' + ' ' + (startX) + ' ' + (arrowLocation.y + arrowPadding / 2));\n direction = direction.concat(' L' + ' ' + (startX) + ' ' + (height - rY) + ' Q ' + startX + ' '\n + (height) + ' ' + (startX + rX) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (width - rX) + ' ' + (height) + ' Q ' + width + ' '\n + (height) + ' ' + (width) + ' ' + (height - rY));\n direction = direction.concat(' L' + ' ' + (width) + ' ' + (startY + rY) + ' Q ' + width + ' '\n + (startY) + ' ' + (width - rX) + ' ' + (startY) + ' z');\n }\n return direction;\n}\n//Within bounds\n/**\n * Checks if the provided coordinates are within the bounds of the rectangle.\n *\n * @param {number} x - The x-coordinate to check.\n * @param {number} y - The y-coordinate to check.\n * @param {Rect} bounds - The bounding rectangle.\n * @param {number} width - The width of the area to include in the bounds check.\n * @param {number} height - The height of the area to include in the bounds check.\n * @returns {boolean} - Returns true if the coordinates are within the bounds; otherwise, false.\n */\nexport function withInBounds(x, y, bounds, width, height) {\n if (width === void 0) { width = 0; }\n if (height === void 0) { height = 0; }\n return (x >= bounds.x - width && x <= bounds.x + bounds.width + width && y >= bounds.y - height\n && y <= bounds.y + bounds.height + height);\n}\n/**\n * Gets the x-coordinate value for a given point value on the axis.\n *\n * @param {number} value - The point value.\n * @param {number} size - The size of the axis.\n * @param {Axis} axis - The axis.\n * @returns {number} - Returns the x-coordinate value.\n */\nexport function getValueXByPoint(value, size, axis) {\n var actualValue = !axis.isAxisInverse ? value / size : (1 - (value / size));\n return actualValue * (axis.visibleRange.delta) + axis.visibleRange.min;\n}\n/**\n * Gets the y-coordinate value for a given point value on the axis.\n *\n * @param {number} value - The point value.\n * @param {number} size - The size of the axis.\n * @param {Axis} axis - The axis.\n * @returns {number} - Returns the y-coordinate value.\n */\nexport function getValueYByPoint(value, size, axis) {\n var actualValue = axis.isAxisInverse ? value / size : (1 - (value / size));\n return actualValue * (axis.visibleRange.delta) + axis.visibleRange.min;\n}\n/**\n * Finds the clip rectangle for a series.\n *\n * @param {Series} series - The series for which to find the clip rectangle.\n * @param {boolean} isCanvas - Indicates whether the rendering is on a canvas.\n * @returns {void}\n */\nexport function findClipRect(series, isCanvas) {\n if (isCanvas === void 0) { isCanvas = false; }\n var rect = series.clipRect;\n if (isCanvas && (series.type === 'Polar' || series.type === 'Radar')) {\n if (series.drawType === 'Scatter') {\n rect.x = series.xAxis.rect.x;\n rect.y = series.yAxis.rect.y;\n rect.width = series.xAxis.rect.width;\n rect.height = series.yAxis.rect.height;\n }\n else {\n rect.x = series.xAxis.rect.x / 2;\n rect.y = series.yAxis.rect.y / 2;\n rect.width = series.xAxis.rect.width;\n rect.height = series.yAxis.rect.height;\n }\n }\n else {\n if (series.chart.requireInvertedAxis) {\n rect.x = series.yAxis.rect.x;\n rect.y = series.xAxis.rect.y;\n rect.width = series.yAxis.rect.width;\n rect.height = series.xAxis.rect.height;\n }\n else {\n rect.x = series.xAxis.rect.x;\n rect.y = series.yAxis.rect.y;\n rect.width = series.xAxis.rect.width;\n rect.height = series.yAxis.rect.height;\n }\n }\n}\n/**\n * Converts the first character of a string to lowercase.\n *\n * @param {string} str - The string to convert.\n * @returns {string} The converted string.\n */\nexport function firstToLowerCase(str) {\n return str.substr(0, 1).toLowerCase() + str.substr(1);\n}\n/**\n * Gets the transformation of the chart area based on the provided axes and inverted axis state.\n *\n * @param {Axis} xAxis - The X-axis of the chart.\n * @param {Axis} yAxis - The Y-axis of the chart.\n * @param {boolean} invertedAxis - Indicates whether the chart axis is inverted.\n * @returns {Rect} The transformed chart area.\n */\nexport function getTransform(xAxis, yAxis, invertedAxis) {\n var x;\n var y;\n var width;\n var height;\n if (invertedAxis) {\n x = yAxis.rect.x;\n y = xAxis.rect.y;\n width = yAxis.rect.width;\n height = xAxis.rect.height;\n }\n else {\n x = xAxis.rect.x;\n y = yAxis.rect.y;\n width = xAxis.rect.width;\n height = yAxis.rect.height;\n }\n return new Rect(x, y, width, height);\n}\n/**\n * Calculates the minimum points delta between data points on the provided axis.\n *\n * @param {Axis | Chart3DAxis} axis - The axis for which to calculate the minimum points delta.\n * @param {Series[]} seriesCollection - The collection of series in the chart.\n * @returns {number} The minimum points delta.\n */\nexport function getMinPointsDelta(axis, seriesCollection) {\n var minDelta = Number.MAX_VALUE;\n var xValues;\n var minVal;\n var seriesMin;\n var stackingGroups = [];\n for (var index = 0; index < seriesCollection.length; index++) {\n var series = seriesCollection[index];\n xValues = [];\n if (series.visible &&\n (axis.name === series.xAxisName || (axis.name === 'primaryXAxis' && series.xAxisName === null)\n || (axis.name === series.chart.primaryXAxis.name && !series.xAxisName))) {\n if (series.type.indexOf('Stacking') > -1 && stackingGroups.indexOf(series.stackingGroup) === -1) {\n stackingGroups.push(series.stackingGroup);\n }\n xValues = series.points.map(function (point) {\n return point.xValue;\n });\n xValues.sort(function (first, second) { return first - second; });\n if (xValues.length === 1) {\n var timeOffset = seriesCollection.length === 1 ? 25920000 : 2592000000;\n seriesMin = (axis.valueType === 'DateTime' && series.xMin === series.xMax) ? (series.xMin - timeOffset) : series.xMin;\n minVal = xValues[0] - (!isNullOrUndefined(seriesMin) ?\n seriesMin : axis.visibleRange.min);\n if (minVal !== 0) {\n minDelta = Math.min(minDelta, minVal);\n }\n }\n else {\n for (var index_1 = 0; index_1 < xValues.length; index_1++) {\n var value = xValues[index_1];\n if (index_1 > 0 && value) {\n minVal = series.type.indexOf('Stacking') > -1 && axis.valueType === 'Category' ? stackingGroups.length : value - xValues[index_1 - 1];\n if (minVal !== 0) {\n minDelta = Math.min(minDelta, minVal);\n }\n }\n }\n }\n }\n }\n if (minDelta === Number.MAX_VALUE) {\n minDelta = 1;\n }\n return minDelta;\n}\n/**\n * Retrieves the animation function based on the specified effect.\n *\n * @param {string} effect - The name of the animation effect.\n * @returns {Function} The animation function corresponding to the effect.\n */\nexport function getAnimationFunction(effect) {\n var functionName;\n switch (effect) {\n case 'Linear':\n functionName = linear;\n break;\n }\n return functionName;\n}\n/**\n * Linear animation function.\n *\n * @param {number} currentTime - The current time of the animation.\n * @param {number} startValue - The starting value of the animation.\n * @param {number} endValue - The ending value of the animation.\n * @param {number} duration - The duration of the animation.\n * @returns {number} The interpolated value at the current time.\n * @private\n */\nexport function linear(currentTime, startValue, endValue, duration) {\n return -endValue * Math.cos(currentTime / duration * (Math.PI / 2)) + endValue + startValue;\n}\n/**\n * Animates the marker element.\n *\n * @param {Element} element - The marker element to animate.\n * @param {number} delay - The delay before starting the animation.\n * @param {number} duration - The duration of the animation.\n * @param {Series | AccumulationSeries} series - The series associated with the marker.\n * @param {number} pointIndex - The index of the point in the series.\n * @param {ChartLocation} point - The location of the point.\n * @param {boolean} isLabel - Specifies whether the marker is a data label.\n * @returns {void}\n */\nexport function markerAnimate(element, delay, duration, series, pointIndex, point, isLabel) {\n element.style.visibility = 'hidden';\n var transform = element.getAttribute('transform');\n new Animation({}).animate(element, {\n duration: duration,\n delay: delay,\n progress: function (args) {\n if (args.timeStamp > args.delay) {\n args.element.style.visibility = 'visible';\n }\n },\n end: function () {\n var annotations = document.getElementById(series.chart.element.id + '_Annotation_Collections');\n if (annotations && series.type !== 'Line') {\n annotations.style.visibility = 'visible';\n }\n element.style.visibility = '';\n element.setAttribute('transform', transform ? transform : '');\n if ((series.type === 'Scatter' || series.type === 'Bubble') && !isLabel && (pointIndex === series.points.length - 1)) {\n series.chart.trigger('animationComplete', { series: series.chart.isBlazor ? {} : series });\n }\n }\n });\n}\n/**\n * Animates the rectangle element.\n *\n * @param {Element} element - The rectangle element to animate.\n * @param {number} delay - The delay before starting the animation.\n * @param {number} duration - The duration of the animation.\n * @param {Rect} currentRect - The current rectangle dimensions.\n * @param {Rect} previousRect - The previous rectangle dimensions.\n * @returns {void}\n */\nexport function animateRectElement(element, delay, duration, currentRect, previousRect) {\n var setStyle = function (rect) {\n element.setAttribute('x', rect.x + '');\n element.setAttribute('y', rect.y + '');\n element.setAttribute('width', rect.width + '');\n element.setAttribute('height', rect.height + '');\n };\n new Animation({}).animate(createElement('div'), {\n duration: duration,\n delay: delay,\n //name: name,\n progress: function (args) {\n setStyle(new Rect(linear(args.timeStamp, previousRect.x, currentRect.x - previousRect.x, args.duration), linear(args.timeStamp, previousRect.y, currentRect.y - previousRect.y, args.duration), linear(args.timeStamp, previousRect.width, currentRect.width - previousRect.width, args.duration), linear(args.timeStamp, previousRect.height, currentRect.height - previousRect.height, args.duration)));\n },\n end: function () {\n setStyle(currentRect);\n }\n });\n}\n/**\n * Animation after legend click a path.\n *\n * @param {Element} element - element to be animated\n * @param {string} direction - current direction of the path\n * @param {boolean} redraw - chart redraw\n * @param {string} previousDirection - previous direction of the path\n * @param {number} animateDuration - animateDuration of the path\n * @returns {void}\n */\nexport function pathAnimation(element, direction, redraw, previousDirection, animateDuration) {\n if (!redraw || (!previousDirection && !element)) {\n return null;\n }\n var duration = 300;\n if (!isNullOrUndefined(animateDuration)) {\n duration = animateDuration;\n }\n var startDirections = previousDirection || element.getAttribute('d');\n var splitDirections = startDirections.split(/(?=[LMCZAQ])/);\n var endDirections = direction.split(/(?=[LMCZAQ])/);\n var currentDireciton;\n var startPath = [];\n var endPath = [];\n var c;\n var end;\n element.setAttribute('d', startDirections);\n new Animation({}).animate(createElement('div'), {\n duration: duration,\n progress: function (args) {\n currentDireciton = '';\n splitDirections.map(function (directions, index) {\n startPath = directions.split(' ');\n endPath = endDirections[index] ? endDirections[index].split(' ') : startPath;\n if (startPath[0] === 'Z') {\n currentDireciton += 'Z' + ' ';\n }\n else if (startPath[0] === '') {\n currentDireciton = '';\n }\n else {\n currentDireciton += startPath[0] + ' ' +\n linear(args.timeStamp, +startPath[1], (+endPath[1] - +startPath[1]), args.duration) + ' ' +\n linear(args.timeStamp, +startPath[2], (+endPath[2] - +startPath[2]), args.duration) + ' ';\n }\n if (startPath[0] === 'C' || startPath[0] === 'Q') {\n c = 3;\n end = startPath[0] === 'Q' ? 4 : 6;\n while (c < end) {\n currentDireciton += linear(args.timeStamp, +startPath[c], (+endPath[c] - +startPath[c]), args.duration) + ' ' +\n linear(args.timeStamp, +startPath[++c], (+endPath[c] - +startPath[c]), args.duration) + ' ';\n ++c;\n }\n }\n if (startPath[0] === 'A') {\n currentDireciton += 0 + ' ' + 0 + ' ' + 1 + ' ' +\n linear(args.timeStamp, +startPath[6], (+endPath[6] - +startPath[6]), args.duration) + ' ' +\n linear(args.timeStamp, +startPath[7], (+endPath[7] - +startPath[7]), args.duration) + ' ';\n }\n });\n element.setAttribute('d', currentDireciton);\n },\n end: function () {\n element.setAttribute('d', direction);\n }\n });\n}\n/**\n * Point based animation in chart series.\n *\n * @param {Element} element element to be animated.\n * @param {string} direction current direction of the path.\n * @param {boolean} redraw chart redraw.\n * @param {string} previousDirection previous direction of the path.\n * @param {number} animateDuration animateDuration of the path.\n * @param {string} removeDirection removeDirection of the path.\n * @returns {void}\n */\nexport function animateAddPoints(element, direction, redraw, previousDirection, animateDuration, removeDirection) {\n if (!redraw || (!previousDirection && !element)) {\n return null;\n }\n var duration = 300;\n if (!isNullOrUndefined(animateDuration)) {\n duration = animateDuration;\n }\n var startDirections = previousDirection || element.getAttribute('d');\n var endDirections = direction;\n var currentDirection = '';\n element.setAttribute('d', startDirections);\n new Animation({}).animate(createElement('div'), {\n duration: duration,\n progress: function (args) {\n currentDirection = '';\n var startPathCommands = startDirections.match(/[MLHVCSQTAZ][^MLHVCSQTAZ]*/g);\n var endPathCommands = endDirections.match(/[MLHVCSQTAZ][^MLHVCSQTAZ]*/g);\n var maxLength = Math.max(startPathCommands.length, endPathCommands.length);\n for (var i = 0; i < maxLength; i++) {\n var startPathCommand = startPathCommands[i] || '';\n var endPathCommand = endPathCommands[i] || '';\n var startCoords = startPathCommand.trim().split(/\\s+/);\n var endCoords = endPathCommand.trim().split(/\\s+/);\n var interpolatedCoords = [];\n for (var j = 1; j < startCoords.length; j++) {\n var startCoord = parseFloat(startCoords[j]);\n var endCoord = parseFloat(endCoords[j]);\n if (!isNaN(startCoord) && !isNaN(endCoord) && startCoords.length === endCoords.length) {\n var interpolatedValue = linear(args.timeStamp, startCoord, (endCoord - startCoord), duration);\n if (i === maxLength - 1) {\n interpolatedCoords.push(interpolatedValue);\n }\n else {\n interpolatedCoords.push(interpolatedValue);\n }\n }\n }\n if (startCoords.length !== endCoords.length) {\n currentDirection += 'L';\n }\n else {\n currentDirection += startCoords[0];\n }\n currentDirection += ' ' + interpolatedCoords.join(' ');\n currentDirection += ' ';\n }\n element.setAttribute('d', currentDirection);\n },\n end: function () {\n element.setAttribute('d', removeDirection || direction);\n }\n });\n}\n/**\n * To append the clip rect element.\n *\n * @param {boolean} redraw - chart redraw value.\n * @param {BaseAttibutes} options - element options.\n * @param {SvgRenderer} renderer - svg renderer values.\n * @param {string} clipPath - clipPath of the element.\n * @returns {Element} - Returns clip rect element.\n */\nexport function appendClipElement(redraw, options, renderer, clipPath) {\n if (clipPath === void 0) { clipPath = 'drawClipPath'; }\n var clipElement = redrawElement(redraw, options.id, options, renderer);\n if (clipElement) {\n var def = renderer.createDefs();\n def.appendChild(clipElement);\n return def;\n }\n else {\n return renderer[clipPath](options);\n }\n}\n/**\n * Triggers the label render event.\n *\n * @param {Chart | RangeNavigator | Chart3D} chart - The chart or range navigator instance.\n * @param {number} tempInterval - The temporary interval value.\n * @param {string} text - The label text.\n * @param {FontModel} labelStyle - The style of the label.\n * @param {Axis | Chart3DAxis} axis - The axis associated with the label.\n * @returns {void}\n */\nexport function triggerLabelRender(chart, tempInterval, text, labelStyle, axis) {\n var argsData = {\n cancel: false, name: axisLabelRender, axis: axis,\n text: text, value: tempInterval, labelStyle: labelStyle\n };\n chart.trigger(axisLabelRender, argsData);\n if (!argsData.cancel) {\n var isLineBreakLabels = argsData.text.indexOf('
') !== -1;\n var text_1 = (axis.enableTrim) ? (isLineBreakLabels ?\n lineBreakLabelTrim(axis.maximumLabelWidth, argsData.text, axis.labelStyle, chart.themeStyle.axisLabelFont) :\n textTrim(axis.maximumLabelWidth, argsData.text, axis.labelStyle, chart.enableRtl, chart.themeStyle.axisLabelFont))\n : argsData.text;\n axis.visibleLabels.push(new VisibleLabels(text_1, argsData.value, argsData.labelStyle, argsData.text));\n }\n}\n/**\n * The function used to find whether the range is set.\n *\n * @param {Axis | Chart3DAxis} axis - The axis to check.\n * @returns {boolean} - It returns true if the axis range is set otherwise false.\n * @private\n */\nexport function setRange(axis) {\n return (axis.minimum != null && axis.maximum != null);\n}\n/**\n * Checks if zooming is enabled for the axis.\n *\n * @param {Axis} axis - The axis to check for zooming.\n * @returns {boolean} - Returns true if zooming is enabled for the axis, otherwise false.\n */\nexport function isZoomSet(axis) {\n return (axis.zoomFactor < 1 && axis.zoomPosition >= 0);\n}\n/**\n * Calculates the actual desired intervals count based on the available size and axis.\n *\n * @param {Size} availableSize - The available size for rendering.\n * @param {Axis | Chart3DAxis} axis - The axis for which to calculate the intervals count.\n * @returns {number} - The actual desired intervals count.\n */\nexport function getActualDesiredIntervalsCount(availableSize, axis) {\n var size = axis.orientation === 'Horizontal' ? availableSize.width : availableSize.height;\n if (isNullOrUndefined(axis.desiredIntervals)) {\n var desiredIntervalsCount = (axis.orientation === 'Horizontal' ? 0.533 : 1) * axis.maximumLabels;\n desiredIntervalsCount = Math.max((size * (desiredIntervalsCount / 100)), 1);\n return desiredIntervalsCount;\n }\n else {\n return axis.desiredIntervals;\n }\n}\n/**\n * Animates the template element.\n *\n * @param {Element} element - The element to animate.\n * @param {number} delay - The delay before starting the animation.\n * @param {number} duration - The duration of the animation.\n * @param {Effect} name - The name of the animation effect.\n * @param {boolean} [isRemove] - Indicates whether to remove the element after animation completion.\n * @returns {void}\n */\nexport function templateAnimate(element, delay, duration, name, isRemove) {\n new Animation({}).animate(element, {\n duration: duration,\n delay: delay,\n name: name,\n progress: function (args) {\n args.element.style.visibility = 'visible';\n },\n end: function (args) {\n if (isRemove) {\n remove(args.element);\n }\n else {\n args.element.style.visibility = 'visible';\n }\n }\n });\n}\n/**\n * Draws a symbol at the specified location.\n *\n * @param {ChartLocation} location - The location to draw the symbol.\n * @param {string} shape - The shape of the symbol.\n * @param {Size} size - The size of the symbol.\n * @param {string} url - The URL of the image symbol.\n * @param {PathOption} options - The options for drawing the symbol.\n * @param {string} label - The label for the symbol.\n * @param {SvgRenderer | CanvasRenderer} [renderer] - The renderer for drawing the symbol.\n * @param {Rect} [clipRect] - The clipping rectangle.\n * @param {boolean} [isChartControl] - Indicates whether it is a chart control.\n * @param {BulletChart} [control] - The bullet chart control.\n * @returns {Element} - The element representing the drawn symbol.\n */\nexport function drawSymbol(location, shape, size, url, options, label, renderer, clipRect, isChartControl, control) {\n var chartRenderer = renderer ? renderer : new SvgRenderer('');\n var shapeOption = calculateShapes(location, size, shape, options, url, isChartControl, control);\n var drawElement = chartRenderer['draw' + shapeOption.functionName](shapeOption.renderOption, clipRect ? new Int32Array([clipRect.x, clipRect.y]) : null);\n //drawElement.setAttribute('aria-label', label);\n return drawElement;\n}\n/**\n * Calculates the shapes based on the specified parameters.\n *\n * @param {ChartLocation} location - The location for the shapes.\n * @param {Size} size - The size of the shapes.\n * @param {string} shape - The shape of the symbols.\n * @param {PathOption} options - The options for drawing the shapes.\n * @param {string} url - The URL of the image symbols.\n * @param {boolean} [isChart] - Indicates whether it is a chart.\n * @param {BulletChart} [control] - The bullet chart control.\n * @returns {IShapes} - The calculated shapes.\n */\nexport function calculateShapes(location, size, shape, options, url, isChart, control) {\n var dir;\n var functionName = 'Path';\n var isBulletChart = isChart;\n var width = (isBulletChart && shape === 'Circle') ? (size.width - 2) : size.width;\n var height = (isBulletChart && shape === 'Circle') ? (size.height - 2) : size.height;\n var sizeBullet = (isBulletChart) ? control.targetWidth : 0;\n var lx = location.x;\n var ly = location.y;\n var y = location.y + (-height / 2);\n var x = location.x + (-width / 2);\n var eq = 72;\n var xVal;\n var yVal;\n switch (shape) {\n case 'Bubble':\n case 'Circle':\n functionName = 'Ellipse';\n merge(options, { 'rx': width / 2, 'ry': height / 2, 'cx': lx, 'cy': ly });\n break;\n case 'Plus':\n dir = 'M' + ' ' + x + ' ' + ly + ' ' + 'L' + ' ' + (lx + (width / 2)) + ' ' + ly + ' ' +\n 'M' + ' ' + lx + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' + lx + ' ' +\n (ly + (-height / 2));\n merge(options, { 'd': dir });\n break;\n case 'Cross':\n dir = 'M' + ' ' + x + ' ' + (ly + (-height / 2)) + ' ' + 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly + (height / 2)) + ' ' +\n 'M' + ' ' + x + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly + (-height / 2));\n merge(options, { 'd': dir });\n break;\n case 'Multiply':\n dir = 'M ' + (lx - sizeBullet) + ' ' + (ly - sizeBullet) + ' L ' +\n (lx + sizeBullet) + ' ' + (ly + sizeBullet) + ' M ' +\n (lx - sizeBullet) + ' ' + (ly + sizeBullet) + ' L ' + (lx + sizeBullet) + ' ' + (ly - sizeBullet);\n merge(options, { 'd': dir, stroke: options.fill });\n break;\n case 'HorizontalLine':\n dir = 'M' + ' ' + x + ' ' + ly + ' ' + 'L' + ' ' + (lx + (width / 2)) + ' ' + ly;\n merge(options, { 'd': dir });\n break;\n case 'VerticalLine':\n dir = 'M' + ' ' + lx + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' + lx + ' ' + (ly + (-height / 2));\n merge(options, { 'd': dir });\n break;\n case 'Diamond':\n dir = 'M' + ' ' + x + ' ' + ly + ' ' +\n 'L' + ' ' + lx + ' ' + (ly + (-height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + ly + ' ' +\n 'L' + ' ' + lx + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + ly + ' z';\n merge(options, { 'd': dir });\n break;\n case 'ActualRect':\n dir = 'M' + ' ' + x + ' ' + (ly + (-height / 8)) + ' ' +\n 'L' + ' ' + (lx + (sizeBullet)) + ' ' + (ly + (-height / 8)) + ' ' +\n 'L' + ' ' + (lx + (sizeBullet)) + ' ' + (ly + (height / 8)) + ' ' +\n 'L' + ' ' + x + ' ' + (ly + (height / 8)) + ' ' +\n 'L' + ' ' + x + ' ' + (ly + (-height / 8)) + ' z';\n merge(options, { 'd': dir });\n break;\n case 'TargetRect':\n dir = 'M' + ' ' + (x + (sizeBullet)) + ' ' + (ly + (-height / 2)) + ' ' +\n 'L' + ' ' + (lx + (sizeBullet / 2)) + ' ' + (ly + (-height / 2)) + ' ' +\n 'L' + ' ' + (lx + (sizeBullet / 2)) + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + (x + (sizeBullet)) + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + (x + (sizeBullet)) + ' ' + (ly + (-height / 2)) + ' z';\n merge(options, { 'd': dir });\n break;\n case 'Rectangle':\n case 'Hilo':\n case 'HiloOpenClose':\n case 'Candle':\n case 'Waterfall':\n case 'BoxAndWhisker':\n case 'StepArea':\n case 'RangeStepArea':\n case 'StackingStepArea':\n case 'Square':\n case 'Flag':\n dir = 'M' + ' ' + x + ' ' + (ly + (-height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly + (-height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (ly + (-height / 2)) + ' z';\n merge(options, { 'd': dir });\n break;\n case 'Pyramid':\n case 'Triangle':\n dir = 'M' + ' ' + x + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + lx + ' ' + (ly + (-height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (ly + (height / 2)) + ' z';\n merge(options, { 'd': dir });\n break;\n case 'Funnel':\n case 'InvertedTriangle':\n dir = 'M' + ' ' + (lx + (width / 2)) + ' ' + (ly - (height / 2)) + ' ' +\n 'L' + ' ' + lx + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + (lx - (width / 2)) + ' ' + (ly - (height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly - (height / 2)) + ' z';\n merge(options, { 'd': dir });\n break;\n case 'Pentagon':\n for (var i = 0; i <= 5; i++) {\n xVal = (width / 2) * Math.cos((Math.PI / 180) * (i * eq));\n yVal = (height / 2) * Math.sin((Math.PI / 180) * (i * eq));\n if (i === 0) {\n dir = 'M' + ' ' + (lx + xVal) + ' ' + (ly + yVal) + ' ';\n }\n else {\n dir = dir.concat('L' + ' ' + (lx + xVal) + ' ' + (ly + yVal) + ' ');\n }\n }\n dir = dir.concat('Z');\n merge(options, { 'd': dir });\n break;\n case 'Image':\n functionName = 'Image';\n merge(options, { 'href': url, 'height': height, 'width': width, x: x, y: y });\n break;\n case 'Star': {\n var cornerPoints = 5;\n var outerRadius = Math.min(width, height) / 2;\n var innerRadius = outerRadius / 2;\n var angle = Math.PI / cornerPoints;\n var starPath = '';\n for (var i = 0; i < 2 * cornerPoints; i++) {\n var radius = (i % 2 === 0) ? outerRadius : innerRadius;\n var currentX = lx + radius * Math.cos(i * angle - Math.PI / 2);\n var currentY = ly + radius * Math.sin(i * angle - Math.PI / 2);\n starPath += (i === 0 ? 'M' : 'L') + currentX + ',' + currentY;\n }\n starPath += 'Z';\n merge(options, { 'd': starPath });\n break;\n }\n }\n options = calculateLegendShapes(location, new Size(width, height), shape, options).renderOption;\n return { renderOption: options, functionName: functionName };\n}\n/**\n * Gets the location of the rectangle based on the specified start and end locations and the outer rectangle.\n *\n * @param {ChartLocation} startLocation - The start location.\n * @param {ChartLocation} endLocation - The end location.\n * @param {Rect} outerRect - The outer rectangle.\n * @returns {Rect} - The location of the rectangle.\n */\nexport function getRectLocation(startLocation, endLocation, outerRect) {\n var x = (endLocation.x < outerRect.x) ? outerRect.x :\n (endLocation.x > (outerRect.x + outerRect.width)) ? outerRect.x + outerRect.width : endLocation.x;\n var y = (endLocation.y < outerRect.y) ? outerRect.y :\n (endLocation.y > (outerRect.y + outerRect.height)) ? outerRect.y + outerRect.height : endLocation.y;\n return new Rect((x > startLocation.x ? startLocation.x : x), (y > startLocation.y ? startLocation.y : y), Math.abs(x - startLocation.x), Math.abs(y - startLocation.y));\n}\n/**\n * Returns the value constrained within the specified minimum and maximum limits.\n *\n * @param {number} value - The input value.\n * @param {number} min - The minimum limit.\n * @param {number} max - The maximum limit.\n * @returns {number} - The constrained value.\n */\nexport function minMax(value, min, max) {\n return value > max ? max : (value < min ? min : value);\n}\n/**\n * Retrieves the DOM element with the specified ID.\n *\n * @param {string} id - The ID of the element to retrieve.\n * @returns {Element} - The DOM element.\n */\nexport function getElement(id) {\n return document.getElementById(id);\n}\n/**\n * Gets the template function from the provided template string or function.\n *\n * @param {string | Function} template - The template string or function.\n * @returns {Function} - The template function.\n */\nexport function getTemplateFunction(template) {\n var templateFn = null;\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n templateFn = templateComplier(document.querySelector(template).innerHTML.trim());\n }\n else {\n templateFn = templateComplier(template);\n }\n }\n catch (e) {\n templateFn = templateComplier(template);\n }\n return templateFn;\n}\n/**\n * Renders the accumulation chart data labels using template.\n *\n * @param {HTMLElement} childElement - The child element.\n * @param {AccumulationChart} chart - The accumulation chart instance.\n * @param {boolean} isTemplate - Defines whether the template is applied or not.\n * @param {AccPoints[]} points - The accumulation chart points.\n * @param {IAccTextRenderEventArgs} argsData - The accumulation chart text render event arguments.\n * @param {AccPoints} [point] - The accumulation chart point.\n * @param {Element} [datalabelGroup] - The data label group element.\n * @param {string} [id] - The id of the element.\n * @param {AccumulationDataLabelSettingsModel} [dataLabel] - The accumulation chart data label settings.\n * @param {boolean} [redraw] - Defines whether to redraw the chart or not.\n * @returns {void}\n */\nexport function accReactTemplate(childElement, chart, isTemplate, points, argsData, point, datalabelGroup, id, dataLabel, redraw) {\n var clientRect = childElement.getBoundingClientRect();\n chart.accumulationDataLabelModule.calculateLabelSize(isTemplate, childElement, point, points, argsData, datalabelGroup, id, dataLabel, redraw, clientRect, true);\n}\n/**\n * Renders the chart data labels using template.\n *\n * @param {HTMLElement} childElement - The child element.\n * @param {Chart} chart - The chart instance.\n * @param {Points} point - The chart point.\n * @param {Series} series - The chart series.\n * @param {number} labelIndex - The index of the label.\n * @param {boolean} [redraw] - Defines whether to redraw the chart or not.\n * @returns {void}\n */\nexport function chartReactTemplate(childElement, chart, point, series, labelIndex, redraw) {\n var parentElement = document.getElementById(chart.element.id + '_Series_' + (series.index === undefined ? series.category : series.index) + '_DataLabelCollections');\n if (parentElement) {\n if (point.index === 0) {\n chart.dataLabelCollections = []; // clear old datalabel bounds for react callback\n }\n chart.dataLabelModule.calculateTemplateLabelSize(parentElement, childElement, point, series, series.marker.dataLabel, labelIndex, series.clipRect, redraw, true);\n }\n}\n/**\n * Creates a template.\n *\n * @param {HTMLElement} childElement - The child element of the template.\n * @param {number} pointIndex - The index of the point.\n * @param {string | Function} content - The content of the template.\n * @param {Chart | AccumulationChart | RangeNavigator} chart - The chart instance.\n * @param {Points | AccPoints} point - The chart or accumulation point.\n * @param {Series | AccumulationSeries} series - The chart or accumulation series.\n * @param {string} dataLabelId - The id of the data label.\n * @param {number} labelIndex - The index of the label.\n * @param {IAccTextRenderEventArgs} argsData - The event arguments for text rendering.\n * @param {boolean} isTemplate - Indicates whether it is a template.\n * @param {AccPoints[]} points - The accumulation points.\n * @param {Element} datalabelGroup - The group element of the data label.\n * @param {string} id - The id of the element.\n * @param {AccumulationDataLabelSettingsModel} dataLabel - The data label settings.\n * @param {boolean} redraw - Indicates whether to redraw.\n * @returns {HTMLElement} - The created template element.\n * @private\n */\nexport function createTemplate(childElement, pointIndex, content, chart, point, series, dataLabelId, labelIndex, argsData, isTemplate, points, datalabelGroup, id, dataLabel, redraw) {\n var templateFn = getTemplateFunction(content);\n var templateElement;\n try {\n var blazor = 'Blazor';\n var tempObject = window[blazor] ? (dataLabelId ? point : { point: point }) :\n { chart: chart, series: series, point: point };\n var templateId = dataLabelId ? dataLabelId + '_template' : 'template';\n var elementData = templateFn ? templateFn(tempObject, chart, templateId, dataLabelId ||\n childElement.id.replace(/[^a-zA-Z0-9]/g, '')) : [];\n if (elementData.length) {\n templateElement = Array.prototype.slice.call(elementData);\n var len = templateElement.length;\n for (var i = 0; i < len; i++) {\n childElement.appendChild(templateElement[i]);\n }\n }\n var reactCallback = void 0;\n if (chart.getModuleName() === 'accumulationchart') {\n reactCallback = accReactTemplate.bind(this, childElement, chart, isTemplate, points, argsData, points[pointIndex], datalabelGroup, id, dataLabel, redraw);\n if (chart.isReact) {\n chart.renderReactTemplates(reactCallback);\n }\n }\n else if (chart.getModuleName() === 'chart') {\n reactCallback = (point && series) ? chartReactTemplate.bind(this, childElement, chart, point, series, labelIndex, redraw) : reactCallback;\n if (chart.isReact) {\n chart.renderReactTemplates(reactCallback);\n }\n }\n }\n catch (e) {\n return childElement;\n }\n return childElement;\n}\n/**\n * Gets the font style.\n *\n * @param {FontModel} font - The font settings.\n * @param {FontModel} themeFontStyle - The theme font settings.\n * @returns {string} - The font style.\n * @private\n */\nexport function getFontStyle(font, themeFontStyle) {\n var style = '';\n style = 'font-size:' + (font.size || themeFontStyle.size) +\n '; font-style:' + (font.fontStyle || themeFontStyle.fontStyle) + '; font-weight:' + (font.fontWeight || themeFontStyle.fontWeight) +\n '; font-family:' + font.fontFamily + ';opacity:' + font.opacity +\n '; color:' + font.color + ';';\n return style;\n}\n/**\n * Measures the bounding rectangle of an HTML element.\n *\n * @param {HTMLElement} element - The HTML element to measure.\n * @param {boolean} redraw - Indicates whether to redraw.\n * @param {boolean} isReactCallback - Indicates whether it's a React callback.\n * @returns {ClientRect} - The bounding rectangle of the element.\n * @private\n */\nexport function measureElementRect(element, redraw, isReactCallback) {\n if (redraw === void 0) { redraw = false; }\n if (!isReactCallback) { // If the element is already in DOM, no need to append in the body.\n document.body.appendChild(element);\n }\n var bounds = element.getBoundingClientRect();\n if (redraw) {\n remove(element);\n }\n else if (!isReactCallback) { // for react chart data label template - (callback function)\n removeElement(element.id);\n }\n return bounds;\n}\n/**\n * Finds an element in a NodeList based on its id.\n *\n * @param {NodeList} elements - The NodeList to search.\n * @param {string} id - The id of the element to find.\n * @returns {Element} - The found element.\n * @private\n */\nexport function findlElement(elements, id) {\n var element;\n for (var i = 0, length_1 = elements.length; i < length_1; i++) {\n if (elements[i].id.indexOf(id) > -1) {\n element = elements[i];\n continue;\n }\n }\n return element;\n}\n/**\n * Gets the point on the chart based on the provided coordinates and axes.\n *\n * @param {number} x - The x-coordinate of the point.\n * @param {number} y - The y-coordinate of the point.\n * @param {Axis} xAxis - The x-axis of the chart.\n * @param {Axis} yAxis - The y-axis of the chart.\n * @param {boolean} isInverted - Indicates whether the chart is inverted.\n * @returns {ChartLocation} - The calculated point.\n * @private\n */\nexport function getPoint(x, y, xAxis, yAxis, isInverted) {\n x = ((xAxis.valueType === 'Logarithmic') ?\n logBase(((x > 0) ? x : Math.pow(xAxis.logBase, xAxis.visibleRange.min)), xAxis.logBase) : x);\n y = ((yAxis.valueType === 'Logarithmic') ?\n logBase(((y > 0) ? y : Math.pow(yAxis.logBase, yAxis.visibleRange.min)), yAxis.logBase) : y);\n x = valueToCoefficient(x, xAxis);\n y = valueToCoefficient(y, yAxis);\n var xLength = (isInverted ? xAxis.rect.height : xAxis.rect.width);\n var yLength = (isInverted ? yAxis.rect.width : yAxis.rect.height);\n var locationX = isInverted ? y * (yLength) : x * (xLength);\n var locationY = isInverted ? (1 - x) * (xLength) : (1 - y) * (yLength);\n return new ChartLocation(locationX, locationY);\n}\n/**\n * Appends an element to a parent element.\n *\n * @param {Element} child - The child element to be appended.\n * @param {Element} parent - The parent element to which the child element will be appended.\n * @param {boolean} [redraw=false] - A boolean value indicating whether to redraw. Default is false.\n * @param {boolean} [animate=false] - A boolean value indicating whether to animate the appending operation. Default is false.\n * @param {string} [x='x'] - The x-coordinate for the position of the child element. Default is 'x'.\n * @param {string} [y='y'] - The y-coordinate for the position of the child element. Default is 'y'.\n * @param {number} duration - duration of the animation\n * @returns {void}\n */\nexport function appendElement(child, parent, redraw, animate, x, y, duration) {\n if (redraw === void 0) { redraw = false; }\n if (animate === void 0) { animate = false; }\n if (x === void 0) { x = 'x'; }\n if (y === void 0) { y = 'y'; }\n if (child && child.hasChildNodes() && parent) {\n appendChildElement(false, parent, child, redraw, animate, x, y, undefined, undefined, undefined, undefined, undefined, duration);\n }\n else {\n return null;\n }\n}\n/**\n * Method to append child element.\n *\n * @param {boolean} isCanvas - canvas mode value\n * @param {Element | HTMLElement} parent - parent element\n * @param {Element | HTMLElement} childElement - childElement element\n * @param {boolean} redraw - chart redraw value\n * @param {boolean} isAnimate - animation value\n * @param {string} x - x position\n * @param {string} y - y position\n * @param {ChartLocation} start - start location value\n * @param {string} direction - direction of the element\n * @param {boolean} forceAnimate - forceAnimate\n * @param {boolean} isRect - isRect\n * @param {Rect} previousRect - previousRect\n * @param {number} animateDuration - duration of the animation\n * @param {boolean} scatterElement - The scatter element.\n * @param {number} angle - The angle of the element.\n * @param {ChartLocation} currentTransform - The current transform of the element.\n * @param {string} previousTranslate - The previous translate of the element.\n * @returns {void}\n * @private\n */\nexport function appendChildElement(isCanvas, parent, childElement, redraw, isAnimate, x, y, start, direction, forceAnimate, isRect, previousRect, animateDuration, scatterElement, angle, currentTransform, previousTranslate) {\n if (isAnimate === void 0) { isAnimate = false; }\n if (x === void 0) { x = 'x'; }\n if (y === void 0) { y = 'y'; }\n if (forceAnimate === void 0) { forceAnimate = false; }\n if (isRect === void 0) { isRect = false; }\n if (previousRect === void 0) { previousRect = null; }\n if (scatterElement === void 0) { scatterElement = false; }\n if (angle === void 0) { angle = 0; }\n if (isCanvas) {\n return null;\n }\n var existChild = scatterElement ? null : parent.querySelector('#' + childElement.id);\n var element = (existChild || getElement(childElement.id));\n var child = childElement;\n var duration = !isNullOrUndefined(animateDuration) ? animateDuration : 300;\n if (redraw && isAnimate && element) {\n start = start || (element.tagName === 'DIV' ?\n new ChartLocation(+(element.style[x].split('px')[0]), +(element.style[y].split('px')[0])) :\n new ChartLocation(+element.getAttribute(x), +element.getAttribute(y)));\n if (direction && direction !== 'undefined') {\n pathAnimation(childElement, childElement.getAttribute('d'), redraw, direction, duration);\n }\n else if (isRect && previousRect) {\n animateRectElement(child, 0, duration, new Rect(+element.getAttribute('x'), +element.getAttribute('y'), +element.getAttribute('width'), +element.getAttribute('height')), previousRect);\n }\n else {\n var end = child.tagName === 'DIV' ?\n new ChartLocation(+(child.style[x].split('px')[0]), +(child.style[y].split('px')[0])) :\n new ChartLocation(+child.getAttribute(x), +child.getAttribute(y));\n var previousTranform = element.getAttribute('transform');\n animateRedrawElement(child, duration, start, end, x, y, angle, currentTransform, previousTranslate !== undefined ? new ChartLocation(previousTranslate.match(/\\d+/g).map(Number)[0], previousTranslate.match(/\\d+/g).map(Number)[1]) : previousTranform ? new ChartLocation(parseFloat(previousTranform.split(',')[1]), parseFloat(previousTranform.split(',')[2])) : new ChartLocation(0, 0), previousTranslate !== undefined);\n }\n }\n else if (redraw && isAnimate && !element && forceAnimate) {\n templateAnimate(child, 0, 600, 'FadeIn');\n }\n if (existChild) {\n parent.replaceChild(child, element);\n }\n else {\n parent.appendChild(child);\n }\n}\n/**\n * Calculates the location of the dragged rectangle.\n *\n * @param {number} x1 - The x-coordinate of the starting point.\n * @param {number} y1 - The y-coordinate of the starting point.\n * @param {number} x2 - The x-coordinate of the ending point.\n * @param {number} y2 - The y-coordinate of the ending point.\n * @param {Rect} outerRect - The outer rectangle containing the dragged rectangle.\n * @returns {Rect} - The location of the dragged rectangle.\n * @private\n */\nexport function getDraggedRectLocation(x1, y1, x2, y2, outerRect) {\n var width = Math.abs(x1 - x2);\n var height = Math.abs(y1 - y2);\n var x = Math.max(checkBounds(Math.min(x1, x2), width, outerRect.x, outerRect.width), outerRect.x);\n var y = Math.max(checkBounds(Math.min(y1, y2), height, outerRect.y, outerRect.height), outerRect.y);\n return new Rect(x, y, Math.min(width, outerRect.width), Math.min(height, outerRect.height));\n}\n/**\n * Checks if a value is within bounds defined by minimum and maximum values.\n *\n * @param {number} start - The start value.\n * @param {number} size - The size of the value.\n * @param {number} min - The minimum value of the bound.\n * @param {number} max - The maximum value of the bound.\n * @returns {number} - The adjusted value within the bounds.\n * @private\n */\nexport function checkBounds(start, size, min, max) {\n if (start < min) {\n start = min;\n }\n else if ((start + size) > (max + min)) {\n start = (max + min) - size;\n }\n return start;\n}\n/**\n * Retrieves label text for a data point.\n *\n * @param {Points} currentPoint - The current data point.\n * @param {Series} series - The series to which the data point belongs.\n * @param {Chart} chart - The chart instance.\n * @returns {string[]} - The label text.\n * @private\n */\nexport function getLabelText(currentPoint, series, chart) {\n var labelFormat = series.marker.dataLabel.format ? series.marker.dataLabel.format : series.yAxis.labelFormat;\n var text = [];\n var customLabelFormat = labelFormat.match('{value}') !== null;\n switch (series.seriesType) {\n case 'XY':\n /**\n * I255790\n * For Polar radar series, the dataLabel appears out of range when axis range is given for yaxis\n * Cause: Since symbol location for the points which did not lies in within range, lies outside of seriesRect.\n * Fix: DataLabel rendered after checking WithIn for the points\n */\n if (series.chart.chartAreaType === 'PolarRadar') {\n if (series.drawType.indexOf('Stacking') !== -1) {\n if ((series.yAxis.valueType === 'Logarithmic' &&\n logWithIn(series.stackedValues.endValues[currentPoint.index], series.yAxis)) ||\n withIn(series.stackedValues.endValues[currentPoint.index], series.yAxis.visibleRange)) {\n text.push(currentPoint.text || currentPoint.yValue.toString());\n }\n }\n else {\n if ((series.yAxis.valueType === 'Logarithmic' && logWithIn(currentPoint.yValue, series.yAxis)) ||\n withIn(currentPoint.yValue, series.yAxis.visibleRange)) {\n text.push(currentPoint.text || currentPoint.yValue.toString());\n }\n }\n }\n else {\n text.push(currentPoint.text || currentPoint.yValue.toString());\n }\n break;\n case 'HighLow':\n text.push(currentPoint.text || Math.max(currentPoint.high, currentPoint.low).toString());\n text.push(currentPoint.text || Math.min(currentPoint.high, currentPoint.low).toString());\n break;\n case 'HighLowOpenClose':\n text.push(currentPoint.text || Math.max(currentPoint.high, currentPoint.low).toString());\n text.push(currentPoint.text || Math.min(currentPoint.high, currentPoint.low).toString());\n text.push(currentPoint.text || Math.max(currentPoint.open, currentPoint.close).toString());\n text.push(currentPoint.text || Math.min(currentPoint.open, currentPoint.close).toString());\n break;\n case 'BoxPlot':\n text.push(currentPoint.text || currentPoint.median.toString());\n text.push(currentPoint.text || currentPoint.maximum.toString());\n text.push(currentPoint.text || currentPoint.minimum.toString());\n text.push(currentPoint.text || currentPoint.upperQuartile.toString());\n text.push(currentPoint.text || currentPoint.lowerQuartile.toString());\n for (var _i = 0, _a = currentPoint.outliers; _i < _a.length; _i++) {\n var liers = _a[_i];\n text.push(currentPoint.text || liers.toString());\n }\n break;\n }\n if ((labelFormat || chart.useGroupingSeparator) && !currentPoint.text) {\n series.yAxis.format = chart.intl.getNumberFormat({\n format: customLabelFormat ? '' : labelFormat,\n useGrouping: chart.useGroupingSeparator\n });\n for (var i = 0; i < text.length; i++) {\n text[i] = customLabelFormat ? labelFormat.replace('{value}', series.yAxis.format(parseFloat(text[i]))) :\n series.yAxis.format(parseFloat(text[i]));\n }\n }\n return text;\n}\n/**\n * Stops the specified timer.\n *\n * @param {number} timer - The timer to stop.\n * @returns {void}\n */\nexport function stopTimer(timer) {\n window.clearInterval(timer);\n}\n/**\n * Checks if the specified rect collides with any of the rect in the collection within the given clip rect.\n *\n * @param {Rect} rect - The rect to check for collision.\n * @param {Rect[]} collections - The collection of rect to check against.\n * @param {Rect} clipRect - The clip rect.\n * @returns {boolean} - Returns true if collision occurs; otherwise, false.\n */\nexport function isCollide(rect, collections, clipRect) {\n var currentRect = new Rect(rect.x + clipRect.x, rect.y + clipRect.y, rect.width, rect.height);\n var isCollide = collections.some(function (rect) {\n return (currentRect.x < rect.x + rect.width && currentRect.x + currentRect.width > rect.x &&\n currentRect.y < rect.y + rect.height && currentRect.height + currentRect.y > rect.y);\n });\n return isCollide;\n}\n/**\n * Checks if the specified rect overlap each other.\n *\n * @param {Rect} currentRect - The first rect.\n * @param {Rect} rect - The second rect.\n * @returns {boolean} - Returns true if the rect overlap; otherwise, false.\n */\nexport function isOverlap(currentRect, rect) {\n return (currentRect.x < rect.x + rect.width && currentRect.x + currentRect.width > rect.x &&\n currentRect.y < rect.y + rect.height && currentRect.height + currentRect.y > rect.y);\n}\n/**\n * Checks if the specified rect is completely contained within another rect.\n *\n * @param {Rect} currentRect - The rect to check if it's contained.\n * @param {Rect} rect - The containing rect.\n * @returns {boolean} - Returns true if the specified rect is completely contained within the containing rect; otherwise, false.\n */\nexport function containsRect(currentRect, rect) {\n return (currentRect.x <= rect.x && currentRect.x + currentRect.width >= rect.x + rect.width &&\n currentRect.y <= rect.y && currentRect.height + currentRect.y >= rect.y + rect.height);\n}\n/**\n * Calculates the rect based on the specified location, text size, and margin.\n *\n * @param {ChartLocation} location - The location of the rect.\n * @param {Size} textSize - The size of the text.\n * @param {MarginModel} margin - The margin to be applied around the text.\n * @returns {Rect} - Returns the calculated rect.\n */\nexport function calculateRect(location, textSize, margin) {\n return new Rect((location.x - (textSize.width / 2) - margin.left), (location.y - (textSize.height / 2) - margin.top), textSize.width + margin.left + margin.right, textSize.height + margin.top + margin.bottom);\n}\n/**\n * Converts the color value to hexadecimal code.\n *\n * @param {ColorValue} value - The color value to convert.\n * @returns {string} - Returns the hexadecimal representation of the color.\n */\nexport function convertToHexCode(value) {\n return '#' + componentToHex(value.r) + componentToHex(value.g) + componentToHex(value.b);\n}\n/**\n * Converts a component value to its hexadecimal representation.\n *\n * @param {number} value - The component value to convert.\n * @returns {string} - Returns the hexadecimal representation of the component.\n */\nexport function componentToHex(value) {\n var hex = value.toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n}\n/**\n * Converts a hexadecimal color code to its RedGreenBlue representation.\n *\n * @param {string} hex - The hexadecimal color code to convert.\n * @returns {ColorValue} - Returns the RedGreenBlue representation of the hexadecimal color code.\n */\nexport function convertHexToColor(hex) {\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? new ColorValue(parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)) :\n new ColorValue(255, 255, 255);\n}\n/**\n * Converts a color name to its corresponding hexadecimal color code.\n *\n * @param {string} color - The color name to convert.\n * @returns {string} - Returns the hexadecimal color code.\n */\nexport function colorNameToHex(color) {\n color = color === 'transparent' ? 'white' : color;\n document.body.appendChild(createElement('text', { id: 'chartmeasuretext' }));\n var element = document.getElementById('chartmeasuretext');\n element.style.color = color;\n color = window.getComputedStyle(element).color;\n remove(element);\n var isRGBValue;\n if (color.indexOf('rgb') === 0 || color.indexOf('hsl') === 0) {\n color = color.replace(/\\s/g, '').replace(/[()]/g, '');\n isRGBValue = color.slice(3).split(',');\n }\n return convertToHexCode(new ColorValue(parseInt(isRGBValue[0], 10), parseInt(isRGBValue[1], 10), parseInt(isRGBValue[2], 10)));\n}\n/**\n * Checks if the provided color string is in a valid format.\n *\n * @param {string} color - The color string to check.\n * @returns {boolean} - Returns true if the color string is in a valid format, otherwise returns false.\n */\nexport function checkColorFormat(color) {\n if (color.indexOf('rgba(') === 0 || color.indexOf('rgb(') === 0) {\n var rgbaValues = color.substring(color.indexOf('(') + 1, color.lastIndexOf(')')).split(',');\n if (rgbaValues.length === 3 || rgbaValues.length === 4) {\n return rgbaValues.every(function (val) {\n var num = parseFloat(val);\n return !isNaN(num) && num >= 0 && num <= 255;\n });\n }\n }\n else if (color.indexOf('#') === 0) {\n var hex = color.substring(1);\n return (hex.length === 3 || hex.length === 6) && /^[0-9A-Fa-f]{3,6}$/.test(hex);\n }\n return false;\n}\n/**\n * Gets the color with adjusted saturation.\n *\n * @param {string} color - The input color string.\n * @param {number} factor - The factor by which to adjust the saturation.\n * @returns {string} - The modified color string.\n */\nexport function getSaturationColor(color, factor) {\n color = colorNameToHex(color);\n color = color.replace(/[^0-9a-f]/gi, '');\n if (color.length < 6) {\n color = color[0] + color[0] + color[1] + color[1] + color[2] + color[2];\n }\n factor = factor || 0;\n // convert to decimal and change luminosity\n var rgb = '#';\n var colorCode;\n for (var i = 0; i < 3; i++) {\n colorCode = parseInt(color.substr(i * 2, 2), 16);\n colorCode = Math.round(Math.min(Math.max(0, colorCode + (colorCode * factor)), 255));\n rgb += ('00' + colorCode.toString(16)).substr(colorCode.toString(16).length);\n }\n return rgb;\n}\n/**\n * Applies a lightness adjustment to the given color.\n *\n * @param {string} color - The input color string.\n * @param {number} value - The value by which to adjust the lightness.\n * @returns {string} - The modified color string.\n */\nexport function applyZLight(color, value) {\n var RGB = convertHexToColor(color);\n RGB.r = parseInt(Math.floor(RGB.r * value).toString(), 10);\n RGB.g = parseInt(Math.floor(RGB.g * value).toString(), 10);\n RGB.b = parseInt(Math.floor(RGB.b * value).toString(), 10);\n return '#' + componentToHex(RGB.r).toUpperCase() + componentToHex(RGB.g).toUpperCase() + componentToHex(RGB.b).toUpperCase();\n}\n/**\n * Calculates the median value of an array of numbers.\n *\n * @param {number[]} values - The array of numbers.\n * @returns {number} - The median value.\n */\nexport function getMedian(values) {\n var half = Math.floor(values.length / 2);\n return values.length % 2 ? values[half] : ((values[half - 1] + values[half]) / 2.0);\n}\n/**\n * Calculates the legend shapes based on the provided parameters.\n *\n * @param {ChartLocation} location - The location to position the legend shape.\n * @param {Size} size - The size of the legend shape.\n * @param {string} shape - The shape of the legend.\n * @param {PathOption} options - The options for drawing the legend shape.\n * @returns {IShapes} - The calculated legend shape.\n */\nexport function calculateLegendShapes(location, size, shape, options) {\n var padding = 10;\n var dir = '';\n var space = 2;\n var height = size.height;\n var width = size.width;\n var lx = location.x;\n var ly = location.y;\n switch (shape) {\n case 'MultiColoredLine':\n case 'Line':\n case 'StackingLine':\n case 'StackingLine100':\n dir = 'M' + ' ' + (lx + (-width * (3 / 4))) + ' ' + (ly) + ' ' +\n 'L' + ' ' + (lx + (width * (3 / 4))) + ' ' + (ly);\n merge(options, { 'd': dir });\n break;\n case 'StepLine':\n options.fill = 'transparent';\n dir = 'M' + ' ' + (lx + (-width / 2) - (padding / 4)) + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' + (lx +\n (-width / 2) + (width / 10)) + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' + (lx + (-width / 2) + (width / 10))\n + ' ' + (ly) + ' ' + 'L' + ' ' + (lx + (-width / 10)) + ' ' + (ly) + ' ' + 'L' + ' ' + (lx + (-width / 10))\n + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' + (lx + (width / 5)) + ' ' + (ly + (height / 2)) + ' ' + 'L' +\n ' ' + (lx + (width / 5)) + ' ' + (ly + (-height / 2)) + ' ' + 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly +\n (-height / 2)) + 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly + (height / 2)) + ' ' + 'L' + '' + (lx + (width / 2)\n + (padding / 4)) + ' ' + (ly + (height / 2));\n merge(options, { 'd': dir });\n break;\n case 'UpArrow':\n options.fill = options.stroke;\n options.stroke = 'transparent';\n dir = 'M' + ' ' + (lx + (-width / 2)) + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + (lx) + ' ' + (ly - (height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly + (height / 2)) +\n 'L' + ' ' + (lx + (width / 2) - space) + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + (lx) + ' ' + (ly - (height / 2) + (2 * space)) +\n 'L' + (lx - (width / 2) + space) + ' ' + (ly + (height / 2)) + ' Z';\n merge(options, { 'd': dir });\n break;\n case 'DownArrow':\n dir = 'M' + ' ' + (lx - (width / 2)) + ' ' + (ly - (height / 2)) + ' ' +\n 'L' + ' ' + (lx) + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly - (height / 2)) +\n 'L' + ' ' + (lx + (width / 2) - space) + ' ' + (ly - (height / 2)) + ' ' +\n 'L' + ' ' + (lx) + ' ' + (ly + (height / 2) - (2 * space)) +\n 'L' + (lx - (width / 2) + space) + ' ' + (ly - (height / 2)) + ' Z';\n merge(options, { 'd': dir });\n break;\n case 'RightArrow':\n dir = 'M' + ' ' + (lx + (-width / 2)) + ' ' + (ly - (height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly) + ' ' + 'L' + ' ' +\n (lx + (-width / 2)) + ' ' + (ly + (height / 2)) + ' L' + ' ' + (lx + (-width / 2)) + ' ' +\n (ly + (height / 2) - space) + ' ' + 'L' + ' ' + (lx + (width / 2) - (2 * space)) + ' ' + (ly) +\n ' L' + (lx + (-width / 2)) + ' ' + (ly - (height / 2) + space) + ' Z';\n merge(options, { 'd': dir });\n break;\n case 'LeftArrow':\n options.fill = options.stroke;\n options.stroke = 'transparent';\n dir = 'M' + ' ' + (lx + (width / 2)) + ' ' + (ly - (height / 2)) + ' ' +\n 'L' + ' ' + (lx + (-width / 2)) + ' ' + (ly) + ' ' + 'L' + ' ' +\n (lx + (width / 2)) + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' +\n (lx + (width / 2)) + ' ' + (ly + (height / 2) - space) + ' L' + ' ' + (lx + (-width / 2) + (2 * space))\n + ' ' + (ly) + ' L' + (lx + (width / 2)) + ' ' + (ly - (height / 2) + space) + ' Z';\n merge(options, { 'd': dir });\n break;\n case 'Column':\n case 'Pareto':\n case 'StackingColumn':\n case 'StackingColumn100':\n case 'RangeColumn':\n case 'Histogram':\n dir = 'M' + ' ' + (lx - 3 * (width / 5)) + ' ' + (ly - (height / 5)) + ' ' + 'L' + ' ' +\n (lx + 3 * (-width / 10)) + ' ' + (ly - (height / 5)) + ' ' + 'L' + ' ' +\n (lx + 3 * (-width / 10)) + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' + (lx - 3 *\n (width / 5)) + ' ' + (ly + (height / 2)) + ' ' + 'Z' + ' ' + 'M' + ' ' +\n (lx + (-width / 10) - (width / 20)) + ' ' + (ly - (height / 4) - (padding / 2))\n + ' ' + 'L' + ' ' + (lx + (width / 10) + (width / 20)) + ' ' + (ly - (height / 4) -\n (padding / 2)) + ' ' + 'L' + ' ' + (lx + (width / 10) + (width / 20)) + ' ' + (ly\n + (height / 2)) + ' ' + 'L' + ' ' + (lx + (-width / 10) - (width / 20)) + ' ' + (ly +\n (height / 2)) + ' ' + 'Z' + ' ' + 'M' + ' ' + (lx + 3 * (width / 10)) + ' ' + (ly) + ' ' +\n 'L' + ' ' + (lx + 3 * (width / 5)) + ' ' + (ly) + ' ' + 'L' + ' '\n + (lx + 3 * (width / 5)) + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' '\n + (lx + 3 * (width / 10)) + ' ' + (ly + (height / 2)) + ' ' + 'Z';\n merge(options, { 'd': dir });\n break;\n case 'Bar':\n case 'StackingBar':\n case 'StackingBar100':\n dir = 'M' + ' ' + (lx + (-width / 2) + (-padding / 4)) + ' ' + (ly - 3 * (height / 5)) + ' '\n + 'L' + ' ' + (lx + 3 * (width / 10)) + ' ' + (ly - 3 * (height / 5)) + ' ' + 'L' + ' ' +\n (lx + 3 * (width / 10)) + ' ' + (ly - 3 * (height / 10)) + ' ' + 'L' + ' ' +\n (lx - (width / 2) + (-padding / 4)) + ' ' + (ly - 3 * (height / 10)) + ' ' + 'Z' + ' '\n + 'M' + ' ' + (lx + (-width / 2) + (-padding / 4)) + ' ' + (ly - (height / 5)\n + (padding / 20)) + ' ' + 'L' + ' ' + (lx + (width / 2) + (padding / 4)) + ' ' + (ly\n - (height / 5) + (padding / 20)) + ' ' + 'L' + ' ' + (lx + (width / 2) + (padding / 4))\n + ' ' + (ly + (height / 10) + (padding / 20)) + ' ' + 'L' + ' ' + (lx - (width / 2)\n + (-padding / 4)) + ' ' + (ly + (height / 10) + (padding / 20)) + ' ' + 'Z' + ' ' + 'M'\n + ' ' + (lx - (width / 2) + (-padding / 4)) + ' ' + (ly + (height / 5)\n + (padding / 10)) + ' ' + 'L' + ' ' + (lx + (-width / 4)) + ' ' + (ly + (height / 5)\n + (padding / 10)) + ' ' + 'L' + ' ' + (lx + (-width / 4)) + ' ' + (ly + (height / 2)\n + (padding / 10)) + ' ' + 'L' + ' ' + (lx - (width / 2) + (-padding / 4))\n + ' ' + (ly + (height / 2) + (padding / 10)) + ' ' + 'Z';\n merge(options, { 'd': dir });\n break;\n case 'Spline':\n options.fill = 'transparent';\n dir = 'M' + ' ' + (lx - (width / 2)) + ' ' + (ly + (height / 5)) + ' ' + 'Q' + ' '\n + lx + ' ' + (ly - height) + ' ' + lx + ' ' + (ly + (height / 5))\n + ' ' + 'M' + ' ' + lx + ' ' + (ly + (height / 5)) + ' ' + 'Q' + ' ' + (lx\n + (width / 2)) + ' ' + (ly + (height / 2)) + ' ' + (lx + (width / 2)) + ' '\n + (ly - (height / 2));\n merge(options, { 'd': dir });\n break;\n case 'Area':\n case 'MultiColoredArea':\n case 'RangeArea':\n case 'StackingArea':\n case 'StackingArea100':\n dir = 'M' + ' ' + (lx - (width / 2) - (padding / 4)) + ' ' + (ly + (height / 2))\n + ' ' + 'L' + ' ' + (lx + (-width / 4) + (-padding / 8)) + ' ' + (ly - (height / 2))\n + ' ' + 'L' + ' ' + (lx) + ' ' + (ly + (height / 4)) + ' ' + 'L' + ' ' + (lx\n + (width / 4) + (padding / 8)) + ' ' + (ly + (-height / 2) + (height / 4)) + ' '\n + 'L' + ' ' + (lx + (height / 2) + (padding / 4)) + ' ' + (ly + (height / 2)) + ' ' + 'Z';\n merge(options, { 'd': dir });\n break;\n case 'SplineArea':\n case 'SplineRangeArea':\n dir = 'M' + ' ' + (lx - (width / 2)) + ' ' + (ly + (height / 5)) + ' ' + 'Q' + ' ' + lx\n + ' ' + (ly - height) + ' ' + lx + ' ' + (ly + (height / 5)) + ' ' + 'Z' + ' ' + 'M'\n + ' ' + lx + ' ' + (ly + (height / 5)) + ' ' + 'Q' + ' ' + (lx + (width / 2)) + ' '\n + (ly + (height / 2)) + ' ' + (lx + (width / 2)) + ' '\n + (ly - (height / 2)) + ' ' + ' Z';\n merge(options, { 'd': dir });\n break;\n case 'Pie':\n case 'Doughnut': {\n options.stroke = 'transparent';\n var r = Math.min(height, width) / 2;\n dir = getAccumulationLegend(lx, ly, r, height, width);\n merge(options, { 'd': dir });\n break;\n }\n }\n return { renderOption: options };\n}\n/**\n * Trims the text to fit within the specified maximum width.\n *\n * @param {number} maxWidth - The maximum width for the text.\n * @param {string} text - The text to be trimmed.\n * @param {FontModel} font - The font settings for the text.\n * @param {boolean} isRtlEnabled - Indicates whether right-to-left text rendering is enabled.\n * @param {FontModel} [themeFontStyle] - The font style to be used for theme-specific settings.\n * @returns {string} - The trimmed text.\n */\nexport function textTrim(maxWidth, text, font, isRtlEnabled, themeFontStyle) {\n var label = text;\n var size = measureText(text, font, themeFontStyle).width;\n if (size > maxWidth) {\n var textLength = text.length;\n for (var i = textLength - 1; i >= 0; --i) {\n label = isRtlEnabled ? '...' + text.substring(0, i) : text.substring(0, i) + '...';\n size = measureText(label, font, themeFontStyle).width;\n if (size <= maxWidth) {\n return label;\n }\n }\n }\n return label;\n}\n/**\n * Trims the text and performs line breaks based on the maximum width and font settings.\n *\n * @param {number} maxWidth - The maximum width allowed for the text.\n * @param {string} text - The text to be trimmed.\n * @param {FontModel} font - The font settings for the text.\n * @param {FontModel} [themeFontStyle] - Optional. The font style based on the theme.\n * @returns {string[]} - An array of trimmed text lines with line breaks.\n */\nexport function lineBreakLabelTrim(maxWidth, text, font, themeFontStyle) {\n var labelCollection = [];\n var breakLabels = text.split('
');\n for (var i = 0; i < breakLabels.length; i++) {\n text = breakLabels[i];\n var size = measureText(text, font, themeFontStyle).width;\n if (size > maxWidth) {\n var textLength = text.length;\n for (var i_1 = textLength - 1; i_1 >= 0; --i_1) {\n text = text.substring(0, i_1) + '...';\n size = measureText(text, font, themeFontStyle).width;\n if (size <= maxWidth) {\n labelCollection.push(text);\n break;\n }\n }\n }\n else {\n labelCollection.push(text);\n }\n }\n return labelCollection;\n}\n/**\n * Converts a string value to a number, considering the container size for percentage values.\n *\n * @param {string} value - The string value to convert to a number.\n * @param {number} containerSize - The size of the container, used for percentage values.\n * @returns {number} - The converted numeric value.\n */\nexport function stringToNumber(value, containerSize) {\n if (value !== null && value !== undefined) {\n return value.indexOf('%') !== -1 ? (containerSize / 100) * parseInt(value, 10) : parseInt(value, 10);\n }\n return null;\n}\n/**\n * Redraws the SVG or canvas element based on the provided options.\n *\n * @param {boolean} redraw - Specifies whether to redraw the element.\n * @param {string} id - The id of the element to redraw.\n * @param {PathAttributes | RectAttributes | CircleAttributes} [options] - The attributes of the element to redraw.\n * @param {SvgRenderer | CanvasRenderer} [renderer] - The renderer to use for redrawing.\n * @returns {Element} - The redrawn element.\n */\nexport function redrawElement(redraw, id, options, renderer) {\n if (!redraw) {\n return null;\n }\n var element = getElement(id);\n if (element && options) {\n renderer.setElementAttributes(options, element.tagName === 'clipPath' ? element.childNodes[0] : element);\n }\n return element;\n}\n/**\n * Animates the redrawn element from its start to end location over a specified duration.\n *\n * @param {Element | HTMLElement} element - The element to animate.\n * @param {number} duration - The duration of the animation in milliseconds.\n * @param {ChartLocation} start - The start location of the element.\n * @param {ChartLocation} end - The end location of the element.\n * @param {string} [x='x'] - The attribute representing the horizontal position of the element.\n * @param {string} [y='y'] - The attribute representing the vertical position of the element.\n * @param {number} [angle=0] - The angle of rotation for the element.\n * @param {ChartLocation} [newTransform=new ChartLocation(0, 0)] - The new transform location of the element.\n * @param {ChartLocation} [previousTransform=new ChartLocation(0, 0)] - The previous transform location of the element.\n * @param {boolean} [pointAnimation] - Specifies the animation based on points.\n * @returns {void}\n */\nexport function animateRedrawElement(element, duration, start, end, x, y, angle, newTransform, previousTransform, pointAnimation) {\n if (x === void 0) { x = 'x'; }\n if (y === void 0) { y = 'y'; }\n if (angle === void 0) { angle = 0; }\n if (newTransform === void 0) { newTransform = new ChartLocation(0, 0); }\n if (previousTransform === void 0) { previousTransform = new ChartLocation(0, 0); }\n var isDiv = element.tagName === 'DIV';\n var setStyle = function (xValue, yValue, rotateX, rotateY) {\n if (isDiv) {\n element.style[x] = xValue + 'px';\n element.style[y] = yValue + 'px';\n }\n else {\n element.setAttribute(x, xValue + '');\n element.setAttribute(y, yValue + '');\n if (angle && newTransform.x && newTransform.y && previousTransform.x && previousTransform.y && rotateX && rotateY) {\n element.setAttribute('transform', 'rotate(' + angle + ',' + rotateX + ',' + rotateY + ')');\n }\n if (pointAnimation) {\n element.setAttribute('transform', 'translate(' + rotateX + ',' + rotateY + ')');\n }\n }\n };\n setStyle(start.x, start.y, previousTransform.x, previousTransform.y);\n new Animation({}).animate(createElement('div'), {\n duration: duration,\n progress: function (args) {\n setStyle(linear(args.timeStamp, start.x, end.x - start.x, args.duration), linear(args.timeStamp, start.y, end.y - start.y, args.duration), linear(args.timeStamp, previousTransform.x, newTransform.x - previousTransform.x, args.duration), linear(args.timeStamp, previousTransform.y, newTransform.y - previousTransform.y, args.duration));\n },\n end: function () {\n setStyle(end.x, end.y, newTransform.x, newTransform.y);\n }\n });\n}\n/**\n * Animates the text content of an HTML element from a start value to an end value over a specified duration.\n *\n * @param {HTMLElement} element - The HTML element whose text content will be animated.\n * @param {number} duration - The duration of the animation in milliseconds.\n * @param {number} start - The starting value of the animation.\n * @param {number} end - The ending value of the animation.\n * @param {string} customLabelFormat - A custom format string that includes a placeholder for the value.\n * @returns {void}\n */\nexport function animateTextElement(element, duration, start, end, customLabelFormat) {\n if (element && start && end) {\n var formatText_1 = function (value) {\n return customLabelFormat ? customLabelFormat.replace('{value}', value.toString()) : value.toString();\n };\n new Animation({}).animate(createElement('div'), {\n duration: duration,\n progress: function (args) {\n element.style.animation = '';\n var progress = args.timeStamp / args.duration;\n var currentValue = start + (end - start) * progress;\n if (start % 1 !== 0 || end % 1 !== 0) {\n currentValue = parseFloat(currentValue.toFixed(1));\n }\n else {\n currentValue = Math.round(currentValue);\n }\n element.textContent = formatText_1(currentValue);\n },\n end: function () {\n element.textContent = formatText_1(end);\n }\n });\n }\n}\n/**\n * Renders a text element using the specified renderer and options.\n *\n * @param {SvgRenderer | CanvasRenderer} renderer - The renderer used for rendering.\n * @param {TextOption} option - The options for the text element.\n * @param {FontModel} font - The font settings for the text.\n * @param {string} color - The color of the text.\n * @param {HTMLElement | Element} parent - The parent element to which the text element is appended.\n * @param {boolean} [isMinus=false] - Indicates whether the text represents a negative value.\n * @param {boolean} [redraw] - Indicates whether to redraw the element.\n * @param {boolean} [isAnimate] - Indicates whether to animate the element.\n * @param {boolean} [forceAnimate=false] - Indicates whether to force animation.\n * @param {number} [animateDuration] - The duration of the animation in milliseconds.\n * @param {Rect} [seriesClipRect] - The clipping rectangle for the series.\n * @param {Size} [labelSize] - The size of the label.\n * @param {boolean} [isRotatedLabelIntersect] - Indicates whether rotated labels intersect.\n * @param {boolean} [isCanvas] - Indicates whether the rendering is done on a canvas.\n * @param {boolean} [isDataLabelWrap] - Indicates whether data labels are wrapped.\n * @param {FontModel} [themeFontStyle] - The font settings based on the theme.\n * @param {ChartLocation} [transform] - The location to transform the text element.\n * @param {string} [previousTransform] - The previous transform of the text element.\n * @returns {Element} - The rendered text element.\n */\nexport function textElement(renderer, option, font, color, parent, isMinus, redraw, isAnimate, forceAnimate, animateDuration, seriesClipRect, labelSize, isRotatedLabelIntersect, isCanvas, isDataLabelWrap, themeFontStyle, transform, previousTransform) {\n if (isMinus === void 0) { isMinus = false; }\n if (forceAnimate === void 0) { forceAnimate = false; }\n var renderOptions = {};\n var tspanElement;\n //let renderer: SvgRenderer = new SvgRenderer('');\n var height;\n var dy;\n var label;\n var width = 0;\n var dx;\n var maxWidth = 0;\n if (option.text.length > 1 && isDataLabelWrap) {\n for (var i = 0, len = option.text.length; i < len; i++) {\n maxWidth = Math.max(maxWidth, measureText(option.text[i], font, themeFontStyle).width);\n }\n width = measureText(option.text[0], font, themeFontStyle).width;\n }\n dx = (option.text.length > 1 && isDataLabelWrap) ? (option.x + maxWidth / 2 - width / 2) : option.x;\n renderOptions = {\n 'id': option.id,\n 'x': dx,\n 'y': option.y,\n 'fill': color ? color : 'black',\n 'font-size': font.size || themeFontStyle.size,\n 'font-style': font.fontStyle || themeFontStyle.fontStyle,\n 'font-family': font.fontFamily || themeFontStyle.fontFamily,\n 'font-weight': font.fontWeight || themeFontStyle.fontWeight,\n 'text-anchor': option.anchor,\n 'labelRotation': option.labelRotation,\n 'transform': option.transform,\n 'opacity': font.opacity,\n 'dominant-baseline': option.baseLine\n };\n var text = typeof option.text === 'string' ? option.text : isMinus ? option.text[option.text.length - 1] : option.text[0];\n var transX = seriesClipRect ? seriesClipRect.x : 0;\n var transY = seriesClipRect ? seriesClipRect.y : 0;\n var htmlObject = renderer.createText(renderOptions, text, transX, transY);\n if (typeof option.text !== 'string' && option.text.length > 1) {\n for (var i = 1, len = option.text.length; i < len; i++) {\n height = (measureText(option.text[i], font, themeFontStyle).height);\n width = measureText(option.text[i], font, themeFontStyle).width;\n dy = (option.y) + ((isMinus) ? -(i * height) : (i * height));\n dx = isDataLabelWrap ? (option.x + maxWidth / 2 - width / 2) : option.x;\n label = isMinus ? option.text[option.text.length - (i + 1)] : option.text[i];\n if (isCanvas) {\n tspanElement = renderer.createText(renderOptions, label, null, null, dy, true);\n }\n else {\n tspanElement = renderer.createTSpan({\n 'x': dx, 'id': option.id,\n 'y': dy\n }, label);\n htmlObject.appendChild(tspanElement);\n }\n }\n }\n if (!isRotatedLabelIntersect) {\n appendChildElement(renderer instanceof CanvasRenderer, parent, htmlObject, redraw, isAnimate, 'x', 'y', null, null, forceAnimate, false, null, animateDuration, false, option.labelRotation, transform, previousTransform);\n }\n return htmlObject;\n}\n/**\n * Calculates the size of the chart.\n *\n * @param {Chart | AccumulationChart | RangeNavigator | StockChart | Chart3D | CircularChart3D} chart - The chart for which to calculate the size.\n * @returns {void}\n */\nexport function calculateSize(chart) {\n // fix for Chart rendered with default width in IE issue\n var containerWidth = chart.element.clientWidth || chart.element.offsetWidth;\n var containerHeight = chart.element.clientHeight;\n if (chart.stockChart) {\n containerWidth = chart.stockChart.availableSize.width;\n containerHeight = chart.stockChart.availableSize.height;\n }\n var height = 450;\n var marginHeight;\n if (chart.getModuleName() === 'rangeNavigator') {\n var range = chart;\n var tooltipSpace = range.tooltip.enable ? 35 : 0;\n var periodHeight = range.periodSelectorSettings.periods.length ?\n range.periodSelectorSettings.height : 0;\n marginHeight = range.margin.top + range.margin.bottom + tooltipSpace;\n var labelSize = measureText('tempString', range.labelStyle, range.themeStyle.axisLabelFont).height;\n var labelPadding = 15;\n height = (chart.series.length ? (Browser.isDevice ? 80 : 120) : ((range.enableGrouping ? (40 + labelPadding + labelSize) : 40)\n + marginHeight)) + periodHeight;\n if (range.disableRangeSelector) {\n height = periodHeight;\n }\n if (chart.stockChart && chart.stockChart.chart.axisCollections[1].labelPosition === 'Outside') {\n var padding = chart.stockChart.chart.axisCollections[1].labelPadding +\n chart.stockChart.chart.axisCollections[1].lineStyle.width * 0.5;\n chart.width = (chart.stockChart.availableSize.width -\n (chart.stockChart.chart.axisCollections[1].maxLabelSize.width + padding)).toString();\n }\n }\n chart.availableSize = new Size(stringToNumber(chart.width, containerWidth) || containerWidth || 600, stringToNumber(chart.height, containerHeight || height) || containerHeight || height);\n if (chart.getModuleName() === 'chart') {\n chart.scaleX = 1;\n chart.scaleY = 1;\n }\n}\n/**\n * Creates an SVG element for the specified chart or chart element.\n *\n * @param {Chart | AccumulationChart | RangeNavigator | Chart3D | CircularChart3D} chart - The chart or chart element for which to create the SVG element.\n * @returns {void}\n */\nexport function createSvg(chart) {\n chart.canvasRender = new CanvasRenderer(chart.element.id);\n chart.renderer = chart.enableCanvas ? chart.canvasRender : new SvgRenderer(chart.element.id);\n calculateSize(chart);\n if (chart.stockChart && chart.getModuleName() === 'chart') {\n chart.svgObject = chart.stockChart.chartObject;\n }\n else if (chart.stockChart && chart.getModuleName() === 'rangeNavigator') {\n chart.svgObject = chart.stockChart.selectorObject;\n }\n else {\n if (chart.enableCanvas) {\n chart.svgObject = chart.renderer.createCanvas({\n id: chart.element.id + '_canvas',\n width: chart.availableSize.width,\n height: chart.availableSize.height\n });\n }\n else {\n chart.svgObject = chart.renderer.createSvg({\n id: chart.element.id + '_svg',\n width: chart.availableSize.width,\n height: chart.availableSize.height\n });\n }\n }\n if (chart.enableCanvas) {\n chart.renderer.ctx.direction = chart.enableRtl ? 'rtl' : 'ltr';\n }\n}\n/**\n * Gets the title text with specified style and width, and supports right-to-left rendering.\n *\n * @param {string} title - The title text.\n * @param {FontModel} style - The font style for the title.\n * @param {number} width - The width available for rendering the title.\n * @param {boolean} isRtlEnabled - Specifies whether right-to-left rendering is enabled.\n * @param {FontModel} [themeFontStyle] - The font style used for theme rendering.\n * @returns {string[]} An array of strings containing the title text with line breaks if needed.\n */\nexport function getTitle(title, style, width, isRtlEnabled, themeFontStyle) {\n var titleCollection = [];\n switch (style.textOverflow) {\n case 'Wrap':\n titleCollection = textWrap(title, width, style, isRtlEnabled, title.indexOf(' ') < 0 ? true : null, null, themeFontStyle);\n break;\n case 'Trim':\n titleCollection.push(textTrim(width, title, style, isRtlEnabled, themeFontStyle));\n break;\n default:\n titleCollection.push(title);\n break;\n }\n return titleCollection;\n}\n/**\n * Calculates the x-coordinate position for rendering the title text within the specified rect.\n *\n * @param {Rect} rect - The rect within which the title text is to be rendered.\n * @param {FontModel} titleStyle - The font style used for rendering the title text.\n * @returns {number} The x-coordinate position for rendering the title text.\n */\nexport function titlePositionX(rect, titleStyle) {\n var positionX;\n if (titleStyle.textAlignment === 'Near') {\n positionX = rect.x;\n }\n else if (titleStyle.textAlignment === 'Center') {\n positionX = rect.x + rect.width / 2;\n }\n else {\n positionX = rect.x + rect.width;\n }\n return positionX;\n}\n/**\n * Wraps the input text into multiple lines based on the specified maximum width and font style.\n *\n * @param {string} currentLabel - The text to be wrapped.\n * @param {number} maximumWidth - The maximum width allowed for each line of text.\n * @param {FontModel} font - The font style used for rendering the text.\n * @param {boolean} isRtlEnabled - Specifies whether right-to-left text direction is enabled.\n * @param {boolean} [wrapAnyWhere=false] - Indicates whether the text can be wrapped at any position.\n * @param {boolean} [clip=false] - Specifies whether text exceeding the maximum width should be clipped.\n * @param {FontModel} [themeFontStyle] - The font style used as the base for the text wrapping operation.\n * @returns {string[]} An array of strings representing the wrapped lines of text.\n */\nexport function textWrap(currentLabel, maximumWidth, font, isRtlEnabled, wrapAnyWhere, clip, themeFontStyle) {\n if (wrapAnyWhere) {\n return (textWrapAnyWhere(currentLabel, maximumWidth, font, themeFontStyle));\n }\n else {\n var textCollection = currentLabel.split(' ');\n var label = '';\n var labelCollection = [];\n var text = void 0;\n for (var i = 0, len = textCollection.length; i < len; i++) {\n text = textCollection[i];\n if (measureText(label.concat(label === '' ? '' : ' ' + text), font, themeFontStyle).width < maximumWidth) {\n label = label.concat((label === '' ? '' : ' ') + text);\n }\n else {\n if (label !== '') {\n labelCollection.push(clip ? label : textTrim(maximumWidth, label, font, isRtlEnabled, themeFontStyle));\n label = text;\n }\n else {\n labelCollection.push(clip ? text : textTrim(maximumWidth, text, font, isRtlEnabled, themeFontStyle));\n text = '';\n }\n }\n if (label && i === len - 1) {\n labelCollection.push(clip ? label : textTrim(maximumWidth, label, font, isRtlEnabled, themeFontStyle));\n }\n }\n return labelCollection;\n }\n}\n/**\n * Wraps the input text into multiple lines, allowing wrapping at any position.\n *\n * @param {string} currentLabel - The text to be wrapped.\n * @param {number} maximumWidth - The maximum width allowed for each line of text.\n * @param {FontModel} font - The font style used for rendering the text.\n * @param {FontModel} [themeFontStyle] - The font style used as the base for the text wrapping operation.\n * @returns {string[]} An array of strings representing the wrapped lines of text.\n * @private\n */\nexport function textWrapAnyWhere(currentLabel, maximumWidth, font, themeFontStyle) {\n var size = measureText(currentLabel, font, themeFontStyle).width;\n var labelCollection = [];\n if (size > maximumWidth) {\n var label = '';\n var startIndex = 0;\n var labelIndex = 1;\n while (labelIndex < currentLabel.length) {\n label = currentLabel.substring(startIndex, labelIndex);\n size = measureText(label, font, themeFontStyle).width;\n if (size < maximumWidth) {\n labelIndex++;\n }\n else if (size === maximumWidth) {\n startIndex = labelIndex;\n labelCollection.push(label);\n labelIndex++;\n label = '';\n }\n else if (size > maximumWidth) {\n label = label.slice(0, -1);\n startIndex = labelIndex - 1;\n labelCollection.push(label);\n label = '';\n }\n }\n if (label.length > 0) {\n labelCollection.push(label);\n }\n }\n else {\n labelCollection.push(currentLabel);\n }\n return labelCollection;\n}\n/**\n * Gets the Unicode text from the input string based on the provided regular expression.\n *\n * @param {string} text - The input string.\n * @param {RegExp} regexp - The regular expression pattern to match Unicode characters.\n * @returns {string} The Unicode text extracted from the input string.\n */\nexport function getUnicodeText(text, regexp) {\n var title = text.replace(regexp, ' ');\n var digit = text.match(regexp);\n var digitSpecific = ' ';\n var convertedText = ' ';\n var k = 0;\n var unicodeSub = {\n '0': '\\u2080', '1': '\\u2081', '2': '\\u2082', '3': '\\u2083', '4': '\\u2084',\n '5': '\\u2085', '6': '\\u2086', '7': '\\u2087', '8': '\\u2088', '9': '\\u2089'\n };\n var unicodeSup = {\n '0': '\\u2070', '1': '\\u00B9', '2': '\\u00B2', '3': '\\u00B3', '4': '\\u2074',\n '5': '\\u2075', '6': '\\u2076', '7': '\\u2077', '8': '\\u2078', '9': '\\u2079'\n };\n for (var i = 0; i <= title.length - 1; i++) {\n if (title[i] === ' ') {\n digitSpecific = (regexp === regSub) ? digit[k].replace(/~/g, '') : digit[k].replace(/\\^/g, '');\n for (var j = 0; j < digitSpecific.length; j++) {\n convertedText += (regexp === regSub) ? unicodeSub[digitSpecific[j]] : unicodeSup[digitSpecific[j]];\n }\n k++;\n }\n else {\n convertedText += title[i];\n }\n }\n return convertedText.trim();\n}\n/**\n * Resets the Blazor templates of the given control (Chart or AccumulationChart).\n *\n * @param {Chart | AccumulationChart} control - The control to reset Blazor templates for.\n * @returns {void}\n */\nexport function blazorTemplatesReset(control) {\n for (var i = 0; i < control.annotations.length; i++) {\n resetBlazorTemplate((control.element.id + '_Annotation_' + i).replace(/[^a-zA-Z0-9]/g, ''), 'ContentTemplate');\n }\n //This reset the tooltip templates\n resetBlazorTemplate(control.element.id + '_tooltipparent_template' + '_blazorTemplate', 'Template');\n //Datalabel templates reset\n resetBlazorTemplate(control.element.id + '_DataLabel');\n}\n/** @private */\nvar CustomizeOption = /** @class */ (function () {\n function CustomizeOption(id) {\n this.id = id;\n }\n return CustomizeOption;\n}());\nexport { CustomizeOption };\n/** @private */\nvar StackValues = /** @class */ (function () {\n function StackValues(startValue, endValue) {\n this.startValues = startValue;\n this.endValues = endValue;\n }\n return StackValues;\n}());\nexport { StackValues };\n/** @private */\nvar RectOption = /** @class */ (function (_super) {\n __extends(RectOption, _super);\n function RectOption(id, fill, border, opacity, rect, rx, ry, transform, dashArray) {\n var _this = _super.call(this, id, fill, border.width, border.color, opacity, dashArray) || this;\n _this.y = rect.y;\n _this.x = rect.x;\n _this.height = rect.height;\n _this.width = rect.width;\n _this.rx = rx ? rx : 0;\n _this.ry = ry ? ry : 0;\n _this.transform = transform ? transform : '';\n _this.stroke = (border.width !== 0 && _this.stroke !== '') ? border.color === null ? '' : border.color : 'transparent';\n return _this;\n }\n return RectOption;\n}(PathOption));\nexport { RectOption };\n/** @private */\nvar ImageOption = /** @class */ (function () {\n function ImageOption(height, width, href, x, y, id, visibility, preserveAspectRatio) {\n this.height = height;\n this.width = width;\n this.href = href;\n this.x = x;\n this.y = y;\n this.id = id;\n this.visibility = visibility;\n this.preserveAspectRatio = preserveAspectRatio;\n }\n return ImageOption;\n}());\nexport { ImageOption };\n/** @private */\nvar CircleOption = /** @class */ (function (_super) {\n __extends(CircleOption, _super);\n function CircleOption(id, fill, border, opacity, cx, cy, r) {\n var _this = _super.call(this, id, fill, border.width, border.color, opacity) || this;\n _this.cy = cy;\n _this.cx = cx;\n _this.r = r;\n return _this;\n }\n return CircleOption;\n}(PathOption));\nexport { CircleOption };\n/** @private */\nvar PolygonOption = /** @class */ (function () {\n function PolygonOption(id, points, fill) {\n this.id = id;\n this.points = points;\n this.fill = fill;\n }\n return PolygonOption;\n}());\nexport { PolygonOption };\n/** @private */\nvar ChartLocation = /** @class */ (function () {\n function ChartLocation(x, y) {\n this.x = x;\n this.y = y;\n }\n return ChartLocation;\n}());\nexport { ChartLocation };\n/** @private */\nvar LabelLocation = /** @class */ (function () {\n function LabelLocation(x, y) {\n this.x = 0;\n this.y = 0;\n this.x = x;\n this.y = y;\n }\n return LabelLocation;\n}());\nexport { LabelLocation };\n/** @private */\nvar Thickness = /** @class */ (function () {\n function Thickness(left, right, top, bottom) {\n this.left = left;\n this.right = right;\n this.top = top;\n this.bottom = bottom;\n }\n return Thickness;\n}());\nexport { Thickness };\n/** @private */\nvar ColorValue = /** @class */ (function () {\n function ColorValue(r, g, b) {\n this.r = r;\n this.g = g;\n this.b = b;\n }\n return ColorValue;\n}());\nexport { ColorValue };\n/** @private */\nvar PointData = /** @class */ (function () {\n function PointData(point, series, index) {\n if (index === void 0) { index = 0; }\n this.point = point;\n this.series = series;\n this.lierIndex = index;\n }\n return PointData;\n}());\nexport { PointData };\n/** @private */\nvar AccPointData = /** @class */ (function () {\n function AccPointData(point, series, index) {\n if (index === void 0) { index = 0; }\n this.point = point;\n this.series = series;\n this.index = index;\n }\n return AccPointData;\n}());\nexport { AccPointData };\n/** @private */\nvar Point3D = /** @class */ (function () {\n /**\n * Initializes a new instance of the Chart3DData class.\n *\n * @param {Chart3DPoint} point - The 3D point object.\n * @param {Chart3DSeries} series - The 3D series object.\n * @private\n */\n function Point3D(point, series) {\n this.point = point;\n this.series = series;\n }\n return Point3D;\n}());\nexport { Point3D };\n/** @private */\nvar ControlPoints = /** @class */ (function () {\n function ControlPoints(controlPoint1, controlPoint2) {\n this.controlPoint1 = controlPoint1;\n this.controlPoint2 = controlPoint2;\n }\n return ControlPoints;\n}());\nexport { ControlPoints };\n/**\n * Gets the color from the range color setting model based on the specified value.\n *\n * @param {RangeColorSettingModel} colorMap - The range color setting model.\n * @param {number} value - The value for which to get the color.\n * @returns {string} - The color corresponding to the specified value.\n */\nexport function getColorByValue(colorMap, value) {\n var color = '';\n var rbgColorValue;\n if (Number(value) === colorMap.start) {\n color = colorMap.colors[0];\n }\n else if (Number(value) === colorMap.end) {\n color = colorMap.colors[colorMap.colors.length - 1];\n }\n else {\n rbgColorValue = getGradientColor(Number(value), colorMap);\n color = convertToHexCode(rbgColorValue);\n }\n return color;\n}\n/**\n * Gets the gradient color from the range color setting model based on the specified value.\n *\n * @param {number} value - The value for which to get the gradient color.\n * @param {RangeColorSettingModel} colorMap - The range color setting model.\n * @returns {ColorValue} - The gradient color corresponding to the specified value.\n */\nexport function getGradientColor(value, colorMap) {\n var previousOffset = colorMap.start;\n var nextOffset = colorMap.end;\n var percent = 0;\n var full = nextOffset - previousOffset;\n var midColor;\n percent = (value - previousOffset) / full;\n var previousColor;\n var nextColor;\n if (colorMap.colors.length <= 2) {\n previousColor = colorMap.colors[0].charAt(0) === '#' ? colorMap.colors[0] : colorNameToHex(colorMap.colors[0]);\n nextColor = colorMap.colors[colorMap.colors.length - 1].charAt(0) === '#' ?\n colorMap.colors[colorMap.colors.length - 1] : colorNameToHex(colorMap.colors[colorMap.colors.length - 1]);\n }\n else {\n previousColor = colorMap.colors[0].charAt(0) === '#' ? colorMap.colors[0] : colorNameToHex(colorMap.colors[0]);\n nextColor = colorMap.colors[colorMap.colors.length - 1].charAt(0) === '#' ?\n colorMap.colors[colorMap.colors.length - 1] : colorNameToHex(colorMap.colors[colorMap.colors.length - 1]);\n var a = full / (colorMap.colors.length - 1);\n var b = void 0;\n var c = void 0;\n var length_2 = colorMap.colors.length - 1;\n var splitColorValueOffset = [];\n var splitColor = {};\n for (var j = 1; j < length_2; j++) {\n c = j * a;\n b = previousOffset + c;\n splitColor = { b: b, color: colorMap.colors[j] };\n splitColorValueOffset.push(splitColor);\n }\n for (var i = 0; i < splitColorValueOffset.length; i++) {\n if (previousOffset <= value && value <= splitColorValueOffset[i]['b'] && i === 0) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n nextColor = midColor;\n percent = value <= splitColorValueOffset[i]['b'] ? 1 - Math.abs((value - splitColorValueOffset[i]['b']) / a)\n : (value - splitColorValueOffset[i]['b']) / a;\n }\n else if (splitColorValueOffset[i]['b'] <= value && value <= nextOffset && i === (splitColorValueOffset.length - 1)) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n previousColor = midColor;\n percent = value < splitColorValueOffset[i]['b'] ?\n 1 - Math.abs((value - splitColorValueOffset[i]['b']) / a) : (value - splitColorValueOffset[i]['b']) / a;\n }\n if (i !== splitColorValueOffset.length - 1 && i < splitColorValueOffset.length) {\n if (splitColorValueOffset[i]['b'] <= value && value <= splitColorValueOffset[i + 1]['b']) {\n midColor = splitColorValueOffset[i]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i]['color'] : colorNameToHex(splitColorValueOffset[i]['color']);\n previousColor = midColor;\n nextColor = splitColorValueOffset[i + 1]['color'].charAt(0) === '#' ?\n splitColorValueOffset[i + 1]['color'] : colorNameToHex(splitColorValueOffset[i + 1]['color']);\n percent = Math.abs((value - splitColorValueOffset[i + 1]['b'])) / a;\n }\n }\n }\n }\n return getPercentageColor(percent, previousColor, nextColor);\n}\n/**\n * Calculates the color based on the percentage change between two values.\n *\n * @param {number} percent - The percentage change.\n * @param {string} previous - The color for the previous value.\n * @param {string} next - The color for the next value.\n * @returns {ColorValue} - The calculated color value.\n */\nexport function getPercentageColor(percent, previous, next) {\n var nextColor = next.split('#')[1];\n var prevColor = previous.split('#')[1];\n var r = getPercentage(percent, parseInt(prevColor.substr(0, 2), 16), parseInt(nextColor.substr(0, 2), 16));\n var g = getPercentage(percent, parseInt(prevColor.substr(2, 2), 16), parseInt(nextColor.substr(2, 2), 16));\n var b = getPercentage(percent, parseInt(prevColor.substr(4, 2), 16), parseInt(nextColor.substr(4, 2), 16));\n return new ColorValue(r, g, b);\n}\n/**\n * Calculates the percentage change between two values.\n *\n * @param {number} percent - The percentage to calculate.\n * @param {number} previous - The previous value.\n * @param {number} next - The next value.\n * @returns {number} - The calculated percentage change.\n */\nexport function getPercentage(percent, previous, next) {\n var full = next - previous;\n return Math.round((previous + (full * percent)));\n}\n/**\n * Gets the text anchor based on the specified alignment and Right-to-Left setting.\n *\n * @param {Alignment} alignment - The alignment of the text.\n * @param {boolean} enableRtl - Specifies whether Right-to-Left is enabled.\n * @returns {string} - The text anchor value.\n */\nexport function getTextAnchor(alignment, enableRtl) {\n switch (alignment) {\n case 'Near':\n return enableRtl ? 'end' : 'start';\n case 'Far':\n return enableRtl ? 'start' : 'end';\n default:\n return 'middle';\n }\n}\n","import { Rect } from '@syncfusion/ej2-svg-base';\n/** @private */\nexport var stockEventFont = {\n size: '13px',\n fontWeight: '400',\n color: null,\n fontStyle: 'Normal',\n fontFamily: 'Segoe UI'\n};\n/**\n * Gets an array of series colors for chart visualization.\n *\n * @param {ChartTheme | AccumulationTheme} theme - The theme for which to retrieve the series colors.\n * @returns {string[]} - An array of series colors.\n * @private\n */\nexport function getSeriesColor(theme) {\n var palette;\n switch (theme) {\n case 'Fabric':\n palette = ['#4472c4', '#ed7d31', '#ffc000', '#70ad47', '#5b9bd5',\n '#c1c1c1', '#6f6fe2', '#e269ae', '#9e480e', '#997300'];\n break;\n case 'Bootstrap4':\n palette = ['#a16ee5', '#f7ce69', '#55a5c2', '#7ddf1e', '#ff6ea6',\n '#7953ac', '#b99b4f', '#407c92', '#5ea716', '#b91c52'];\n break;\n case 'Bootstrap':\n palette = ['#a16ee5', '#f7ce69', '#55a5c2', '#7ddf1e', '#ff6ea6',\n '#7953ac', '#b99b4f', '#407c92', '#5ea716', '#b91c52'];\n break;\n case 'HighContrastLight':\n case 'HighContrast':\n palette = ['#79ECE4', '#E98272', '#DFE6B6', '#C6E773', '#BA98FF',\n '#FA83C3', '#00C27A', '#43ACEF', '#D681EF', '#D8BC6E'];\n break;\n case 'MaterialDark':\n palette = ['#9ECB08', '#56AEFF', '#C57AFF', '#61EAA9', '#EBBB3E',\n '#F45C5C', '#8A77FF', '#63C7FF', '#FF84B0', '#F7C928'];\n break;\n case 'FabricDark':\n palette = ['#4472c4', '#ed7d31', '#ffc000', '#70ad47', '#5b9bd5',\n '#c1c1c1', '#6f6fe2', '#e269ae', '#9e480e', '#997300'];\n break;\n case 'BootstrapDark':\n palette = ['#a16ee5', '#f7ce69', '#55a5c2', '#7ddf1e', '#ff6ea6',\n '#7953ac', '#b99b4f', '#407c92', '#5ea716', '#b91c52'];\n break;\n case 'Tailwind':\n palette = ['#5A61F6', '#65A30D', '#334155', '#14B8A6', '#8B5CF6',\n '#0369A1', '#F97316', '#9333EA', '#F59E0B', '#15803D'];\n break;\n case 'TailwindDark':\n palette = ['#8B5CF6', '#22D3EE', '#F87171', '#4ADE80', '#E879F9',\n '#FCD34D', '#F97316', '#2DD4BF', '#F472B6', '#10B981'];\n break;\n case 'Bootstrap5Dark':\n case 'Bootstrap5':\n palette = ['#FD7E14', '#6610F2', '#6F42C1', '#D63384', '#DC3545', '#FFC107', '#198754', '#0DCAF0'];\n break;\n case 'FluentDark':\n palette = ['#1AC9E6', '#DA4CB2', '#EDBB40', '#AF4BCF', '#FF7266',\n '#1BD565', '#EE993D', '#5887FF', '#EC548D', '#7D39C0'];\n break;\n case 'Fluent':\n palette = ['#1AC9E6', '#DA4CB2', '#EDBB40', '#AF4BCF', '#FF7266',\n '#1BD565', '#EE993D', '#5887FF', '#EC548D', '#7D39C0'];\n break;\n case 'Fluent2':\n palette = ['#6200EE', '#09AF74', '#0076E5', '#CB3587', '#E7910F',\n '#0364DE', '#66CD15', '#F3A93C', '#107C10', '#C19C00'];\n break;\n case 'Fluent2Dark':\n palette = ['#9BB449', '#2A72D5', '#43B786', '#3F579A', '#584EC6',\n '#E85F9C', '#6E7A89', '#EA6266', '#0B6A0B', '#C19C00'];\n break;\n case 'Fluent2HighContrast':\n palette = ['#9BB449', '#2A72D5', '#43B786', '#3F579A', '#584EC6',\n '#E85F9C', '#6E7A89', '#EA6266', '#0B6A0B', '#C19C00'];\n break;\n case 'Material3':\n palette = ['#6355C7', '#00AEE0', '#FFB400', '#F7523F', '#963C70',\n '#FD7400', '#4BE0BC', '#2196F5', '#DE3D8A', '#162F88'];\n break;\n case 'Material3Dark':\n palette = ['#4EAAFF', '#FA4EAB', '#FFF500', '#17EA58', '#38FFE7',\n '#FF9E45', '#B3F32F', '#B93CE4', '#FC5664', '#9B55FF'];\n break;\n default:\n palette = ['#00bdae', '#404041', '#357cd2', '#e56590', '#f8b883',\n '#70ad47', '#dd8abd', '#7f84e8', '#7bb4eb', '#ea7a57'];\n break;\n }\n return palette;\n}\n/**\n * Gets a theme color.\n *\n * @param {ChartTheme | AccumulationTheme} theme - The theme for which to retrieve the series colors.\n * @param {boolean} canvas - Specifies whether the canvas is used.\n * @param {AccumulationChart | Chart | StockChart} [chart] - The chart instance (optional).\n * @returns {IThemeStyle} - Returns theme style.\n * @private\n */\nexport function getThemeColor(theme, canvas, chart) {\n var style;\n var darkBackground = theme === 'MaterialDark' ? '#383838' : (theme === 'FabricDark' ? '#242424' : '#1b1b1b');\n switch (theme) {\n case 'HighContrastLight':\n case 'HighContrast':\n style = {\n axisLabel: '#ffffff',\n axisTitle: '#ffffff',\n axisLine: '#ffffff',\n majorGridLine: '#BFBFBF',\n minorGridLine: '#969696',\n majorTickLine: '#BFBFBF',\n minorTickLine: '#969696',\n chartTitle: '#ffffff',\n legendLabel: '#ffffff',\n background: canvas ? '#000000' : 'transparent',\n areaBorder: '#ffffff',\n errorBar: '#ffffff',\n crosshairLine: '#ffffff',\n crosshairFill: '#ffffff',\n crosshairLabel: '#000000',\n tooltipFill: '#ffffff',\n tooltipBoldLabel: '#000000',\n tooltipLightLabel: '#000000',\n tooltipHeaderLine: '#969696',\n markerShadow: '#BFBFBF',\n selectionRectFill: 'rgba(255, 217, 57, 0.3)',\n selectionRectStroke: '#ffffff',\n selectionCircleStroke: '#FFD939',\n tabColor: '#FFD939',\n bearFillColor: '#2ecd71',\n bullFillColor: '#e74c3d',\n toolkitSelectionColor: '#FFD939',\n toolkitFill: '#737373',\n toolkitIconRectOverFill: 'transparent',\n toolkitIconRectSelectionFill: 'transparent',\n toolkitIconRect: new Rect(0, 0, 16, 16),\n chartTitleFont: {\n color: '#FFFFFF', fontFamily: 'Segoe UI', size: '16px', fontStyle: 'Normal', fontWeight: '600'\n },\n axisLabelFont: {\n color: '#969696', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n },\n legendTitleFont: {\n color: '#FFFFFF', fontFamily: 'Segoe UI', size: '14px', fontStyle: 'Normal', fontWeight: '600'\n },\n legendLabelFont: {\n color: '#969696', fontFamily: 'Segoe UI', size: '14px', fontStyle: 'Normal', fontWeight: '400'\n },\n tooltipLabelFont: {\n color: '#000000', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal'\n },\n axisTitleFont: {\n color: '#FFFFFF', fontFamily: 'Segoe UI', size: '14px', fontStyle: 'Normal', fontWeight: '600'\n },\n datalabelFont: {\n color: '#969696', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n },\n chartSubTitleFont: {\n color: '#FFFFFF', fontFamily: 'Segoe UI', size: '14px', fontStyle: 'Normal', fontWeight: '400'\n },\n crosshairLabelFont: {\n color: '#000000', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n },\n stripLineLabelFont: {\n color: '#969696', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n }\n };\n break;\n case 'MaterialDark':\n case 'FabricDark':\n case 'BootstrapDark':\n style = {\n axisLabel: '#DADADA', axisTitle: '#ffffff',\n axisLine: ' #6F6C6C',\n majorGridLine: '#414040',\n minorGridLine: '#514F4F',\n majorTickLine: '#414040',\n minorTickLine: ' #4A4848',\n chartTitle: '#ffffff',\n legendLabel: '#DADADA',\n background: canvas ? darkBackground : 'transparent',\n areaBorder: ' #9A9A9A',\n errorBar: '#ffffff',\n crosshairLine: '#F4F4F4',\n crosshairFill: theme === 'MaterialDark' ? '#F4F4F4' : theme === 'FabricDark' ? '#A19F9D' : '#F0F0F0',\n crosshairLabel: '#282727',\n tooltipFill: '#F4F4F4',\n tooltipBoldLabel: '#282727',\n tooltipLightLabel: '#333232',\n tooltipHeaderLine: '#9A9A9A',\n markerShadow: null,\n selectionRectFill: 'rgba(56,169,255, 0.1)',\n selectionRectStroke: '#38A9FF',\n selectionCircleStroke: '#282727',\n tabColor: theme === 'MaterialDark' ? '#00B0FF' : theme === 'FabricDark' ? '#0074CC' : '#0070F0',\n bearFillColor: '#2ecd71',\n bullFillColor: '#e74c3d',\n toolkitSelectionColor: theme === 'MaterialDark' ? '#00B0FF' : theme === 'FabricDark' ? '#0074CC' : '#0070F0',\n toolkitFill: '#737373',\n toolkitIconRectOverFill: 'transparent',\n toolkitIconRectSelectionFill: 'transparent',\n toolkitIconRect: new Rect(0, 0, 16, 16),\n chartTitleFont: {\n color: theme === 'MaterialDark' ? 'rgba(255, 255, 255, 0.87)' : theme === 'FabricDark' ? '#DADADA' : '#FFFFFF', fontFamily: theme === 'MaterialDark' ? 'Roboto' : theme === 'FabricDark' ? 'Segoe UI' : 'Helvetica', size: '16px', fontStyle: 'Normal', fontWeight: '600'\n },\n axisLabelFont: {\n color: theme === 'MaterialDark' ? 'rgba(255, 255, 255, 0.6)' : theme === 'FabricDark' ? '#A19F9D' : '#CED4DA', fontFamily: theme === 'MaterialDark' ? 'Roboto' : theme === 'FabricDark' ? 'Segoe UI' : 'Helvetica', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n },\n legendTitleFont: {\n color: theme === 'MaterialDark' ? 'rgba(255, 255, 255, 0.87)' : theme === 'FabricDark' ? '#DADADA' : '#FFFFFF', fontFamily: theme === 'MaterialDark' ? 'Roboto' : theme === 'FabricDark' ? 'Segoe UI' : 'Helvetica', size: '14px', fontStyle: 'Normal', fontWeight: '600'\n },\n legendLabelFont: {\n color: theme === 'MaterialDark' ? 'rgba(255, 255, 255, 0.6)' : theme === 'FabricDark' ? '#A19F9D' : '#676767', fontFamily: theme === 'MaterialDark' ? 'Roboto' : theme === 'FabricDark' ? 'Segoe UI' : 'Helvetica', size: '14px', fontStyle: 'Normal', fontWeight: '400'\n },\n tooltipLabelFont: {\n color: theme === 'MaterialDark' ? 'rgba(18, 18, 18, 1)' : theme === 'FabricDark' ? '#DADADA' : '#1A1A1A', fontFamily: theme === 'MaterialDark' ? 'Roboto' : theme === 'FabricDark' ? 'Segoe UI' : 'Helvetica', size: '12px', fontStyle: 'Normal'\n },\n axisTitleFont: {\n color: theme === 'MaterialDark' ? 'rgba(255, 255, 255, 0.87)' : theme === 'FabricDark' ? '#DADADA' : '#FFFFFF', fontFamily: theme === 'MaterialDark' ? 'Roboto' : theme === 'FabricDark' ? 'Segoe UI' : 'Helvetica', size: '14px', fontStyle: 'Normal', fontWeight: '600'\n },\n datalabelFont: {\n color: theme === 'MaterialDark' ? 'rgba(255, 255, 255, 0.6)' : theme === 'FabricDark' ? '#A19F9D' : '#676767', fontFamily: theme === 'MaterialDark' ? 'Roboto' : theme === 'FabricDark' ? 'Segoe UI' : 'Helvetica', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n },\n chartSubTitleFont: {\n color: theme === 'MaterialDark' ? 'rgba(255, 255, 255, 0.87)' : theme === 'FabricDark' ? '#DADADA' : '#FFFFFF', fontFamily: theme === 'MaterialDark' ? 'Roboto' : theme === 'FabricDark' ? 'Segoe UI' : 'Helvetica', size: '14px', fontStyle: 'Normal', fontWeight: '400'\n },\n crosshairLabelFont: {\n color: theme === 'MaterialDark' ? 'rgba(18, 18, 18, 1)' : theme === 'FabricDark' ? '#DADADA' : '#1A1A1A', fontFamily: theme === 'MaterialDark' ? 'Roboto' : theme === 'FabricDark' ? 'Segoe UI' : 'Helvetica', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n },\n stripLineLabelFont: {\n color: theme === 'MaterialDark' ? 'rgba(255, 255, 255, 0.24)' : theme === 'FabricDark' ? '#6F6C6C' : '#414141', fontFamily: theme === 'MaterialDark' ? 'Roboto' : theme === 'FabricDark' ? 'Segoe UI' : 'Helvetica', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n }\n };\n break;\n case 'Bootstrap4':\n style = {\n axisLabel: '#212529', axisTitle: '#212529', axisLine: '#CED4DA', majorGridLine: '#CED4DA',\n minorGridLine: '#DEE2E6', majorTickLine: '#ADB5BD', minorTickLine: '#CED4DA', chartTitle: '#212529', legendLabel: '#212529',\n background: canvas ? '#FFFFFF' : 'transparent', areaBorder: '#DEE2E6', errorBar: '#000000', crosshairLine: '#6C757D', crosshairFill: '#212529',\n crosshairLabel: '#FFFFFF', tooltipFill: '#020202', tooltipBoldLabel: 'rgba(255,255,255)',\n tooltipLightLabel: 'rgba(255,255,255, 0.9)', tooltipHeaderLine: 'rgba(255,255,255, 0.2)', markerShadow: null,\n selectionRectFill: 'rgba(255,255,255, 0.1)', selectionRectStroke: 'rgba(0, 123, 255)', selectionCircleStroke: '#495057', tabColor: '#007BFF', bearFillColor: '#2ecd71', bullFillColor: '#e74c3d',\n toolkitSelectionColor: '#007BFF',\n toolkitFill: '#495057',\n toolkitIconRectOverFill: 'transparent',\n toolkitIconRectSelectionFill: 'transparent',\n toolkitIconRect: new Rect(-5, -5, 26, 26),\n chartTitleFont: {\n color: '#212529', fontFamily: 'Helvetica', size: '16px', fontStyle: 'Normal', fontWeight: '600'\n },\n axisLabelFont: {\n color: '#495057', fontFamily: 'Helvetica', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n },\n legendTitleFont: {\n color: '#212529', fontFamily: 'Helvetica', size: '14px', fontStyle: 'Normal', fontWeight: '600'\n },\n legendLabelFont: {\n color: '#666666', fontFamily: 'Helvetica', size: '14px', fontStyle: 'Normal', fontWeight: '400'\n },\n tooltipLabelFont: {\n color: '#F9FAFB', fontFamily: 'Helvetica', size: '12px', fontStyle: 'Normal'\n },\n axisTitleFont: {\n color: '#212529', fontFamily: 'Helvetica', size: '14px', fontStyle: 'Normal', fontWeight: '600'\n },\n datalabelFont: {\n color: '#495057', fontFamily: 'Helvetica', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n },\n chartSubTitleFont: {\n color: '#212529', fontFamily: 'Helvetica', size: '14px', fontStyle: 'Normal', fontWeight: '400'\n },\n crosshairLabelFont: {\n color: '#F9FAFB', fontFamily: 'Helvetica', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n },\n stripLineLabelFont: {\n color: '#6C757D', fontFamily: 'Helvetica', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n }\n };\n break;\n case 'Tailwind':\n style = {\n axisLabel: '#6B728', axisTitle: '#374151',\n axisLine: ' #D1D5DB',\n majorGridLine: '#E5E7EB',\n minorGridLine: '#E5E7EB',\n majorTickLine: '#D1D5DB',\n minorTickLine: ' #D1D5DB',\n chartTitle: '#374151',\n legendLabel: '#374151',\n background: canvas ? 'rgba(255,255,255, 0.0)' : 'transparent',\n areaBorder: ' #E5E7EB',\n errorBar: '#374151',\n crosshairLine: '#1F2937',\n crosshairFill: '#111827',\n crosshairLabel: '#F9FAFB',\n tooltipFill: '#111827',\n tooltipBoldLabel: '#D1D5DB',\n tooltipLightLabel: '#F9FAFB',\n tooltipHeaderLine: '#6B7280',\n markerShadow: null,\n selectionRectFill: 'rgba(79,70,229, 0.1)',\n selectionRectStroke: '#4F46E5',\n selectionCircleStroke: '#6B7280',\n tabColor: '#4F46E5',\n bearFillColor: '#2ecd71',\n bullFillColor: '#e74c3d',\n toolkitSelectionColor: '#4F46E5',\n toolkitFill: '#6B7280',\n toolkitIconRectOverFill: 'transparent',\n toolkitIconRectSelectionFill: 'transparent',\n toolkitIconRect: new Rect(0, 0, 16, 16),\n chartTitleFont: {\n color: '#374151', fontFamily: 'Inter', size: '16px', fontStyle: 'Normal', fontWeight: '600'\n },\n axisLabelFont: {\n color: '#6B7280', fontFamily: 'Inter', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n },\n legendTitleFont: {\n color: '#374151', fontFamily: 'Inter', size: '14px', fontStyle: 'Normal', fontWeight: '600'\n },\n legendLabelFont: {\n color: '#374151', fontFamily: 'Inter', size: '14px', fontStyle: 'Normal', fontWeight: '400'\n },\n tooltipLabelFont: {\n color: '#F9FAFB', fontFamily: 'Inter', size: '12px', fontStyle: 'Normal'\n },\n axisTitleFont: {\n color: '#374151', fontFamily: 'Inter', size: '14px', fontStyle: 'Normal', fontWeight: '600'\n },\n datalabelFont: {\n color: '#6B7280', fontFamily: 'Inter', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n },\n chartSubTitleFont: {\n color: '#374151', fontFamily: 'Inter', size: '14px', fontStyle: 'Normal', fontWeight: '400'\n },\n crosshairLabelFont: {\n color: '#F9FAFB', fontFamily: 'Inter', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n },\n stripLineLabelFont: {\n color: '#D1D5DB', fontFamily: 'Inter', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n }\n };\n break;\n case 'TailwindDark':\n style = {\n axisLabel: '#9CA3AF', axisTitle: '#9CA3AF',\n axisLine: ' #4B5563',\n majorGridLine: '#374151',\n minorGridLine: '#374151',\n majorTickLine: '#4B5563',\n minorTickLine: ' #4B5563',\n chartTitle: '#D1D5DB',\n legendLabel: '#D1D5DB',\n background: canvas ? '#1f2937' : 'transparent',\n areaBorder: ' #374151',\n errorBar: '#ffffff',\n crosshairLine: '#9CA3AF',\n crosshairFill: '#F9FAFB',\n crosshairLabel: '#1F2937',\n tooltipFill: '#F9FAFB',\n tooltipBoldLabel: '#6B7280',\n tooltipLightLabel: '#1F2937',\n tooltipHeaderLine: '#9CA3AF',\n markerShadow: null,\n selectionRectFill: 'rgba(34,211,238, 0.1)',\n selectionRectStroke: '#22D3EE',\n selectionCircleStroke: '#282727',\n tabColor: '#22D3EE',\n bearFillColor: '#2ecd71',\n bullFillColor: '#e74c3d',\n toolkitSelectionColor: '#22D3EE',\n toolkitFill: '#D1D5DB',\n toolkitIconRectOverFill: 'transparent',\n toolkitIconRectSelectionFill: 'transparent',\n toolkitIconRect: new Rect(0, 0, 16, 16),\n chartTitleFont: {\n color: '#D1D5DB', fontFamily: 'Inter', size: '16px', fontStyle: 'Normal', fontWeight: '600'\n },\n axisLabelFont: {\n color: '#9CA3AF', fontFamily: 'Inter', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n },\n legendTitleFont: {\n color: '#D1D5DB', fontFamily: 'Inter', size: '14px', fontStyle: 'Normal', fontWeight: '600'\n },\n legendLabelFont: {\n color: '#D1D5DB', fontFamily: 'Inter', size: '14px', fontStyle: 'Normal', fontWeight: '400'\n },\n tooltipLabelFont: {\n color: '#1F2937', fontFamily: 'Inter', size: '12px', fontStyle: 'Normal'\n },\n axisTitleFont: {\n color: '#D1D5DB', fontFamily: 'Inter', size: '14px', fontStyle: 'Normal', fontWeight: '600'\n },\n datalabelFont: {\n color: '#9CA3AF', fontFamily: 'Inter', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n },\n chartSubTitleFont: {\n color: '#D1D5DB', fontFamily: 'Inter', size: '14px', fontStyle: 'Normal', fontWeight: '400'\n },\n crosshairLabelFont: {\n color: '#1F2937', fontFamily: 'Inter', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n },\n stripLineLabelFont: {\n color: '#6B7280', fontFamily: 'Inter', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n }\n };\n break;\n case 'Bootstrap5':\n style = {\n axisLabel: '#212529',\n axisTitle: '#212529',\n axisLine: '#DEE2E6',\n majorGridLine: '#E9ECEF',\n minorGridLine: '#E9ECEF',\n majorTickLine: '#DEE2E6',\n minorTickLine: '#E9ECEF',\n chartTitle: '#212529',\n legendLabel: '#212529',\n background: canvas ? '#212529' : 'transparent',\n areaBorder: '#E9ECEF',\n errorBar: '#343A40',\n crosshairLine: '#343A40',\n crosshairFill: '#000000',\n crosshairLabel: '#FFFFFF',\n tooltipFill: '#E9ECEF',\n tooltipBoldLabel: '#FFFFFF',\n tooltipLightLabel: '#FFFFFF',\n tooltipHeaderLine: '#FFFFFF',\n markerShadow: null,\n selectionRectFill: 'rgba(134,183,254, 0.1)',\n selectionRectStroke: '#0D6EFD',\n selectionCircleStroke: '#6B7280',\n tabColor: '#0D6EFD',\n bearFillColor: '#DC3545',\n bullFillColor: '#6F42C1',\n toolkitSelectionColor: '#6E757D',\n toolkitFill: '#6E757D',\n toolkitIconRectOverFill: '#F8F9FA',\n toolkitIconRectSelectionFill: '#F8F9FA',\n toolkitIconRect: new Rect(-6, -8, 32, 32),\n chartTitleFont: {\n color: '#212529', fontFamily: 'Segoe UI', size: chart.getModuleName() === 'accumulationchart' ? '16px' : '14px', fontStyle: 'Normal', fontWeight: '600'\n },\n axisLabelFont: {\n color: '#212529', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n },\n legendTitleFont: {\n color: '#212529', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal', fontWeight: '600'\n },\n legendLabelFont: {\n color: '#212529', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n },\n tooltipLabelFont: {\n color: '#212529', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal'\n },\n axisTitleFont: {\n color: '#212529', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal', fontWeight: '600'\n },\n datalabelFont: {\n color: '#212529', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n },\n chartSubTitleFont: {\n color: chart.getModuleName() === 'accumulationchart' ? '#21252980' : '#212529', fontFamily: 'Segoe UI', size: chart.getModuleName() === 'accumulationchart' ? '14px' : '12px', fontStyle: 'Normal', fontWeight: '600'\n },\n crosshairLabelFont: {\n color: '#FFFFFF', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal', fontWeight: '600'\n },\n stripLineLabelFont: {\n color: '#6C757D', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n }\n };\n break;\n case 'Bootstrap5Dark':\n style = {\n axisLabel: '#DEE2E6',\n axisTitle: '#DEE2E6',\n axisLine: '#495057',\n majorGridLine: '#343A40',\n minorGridLine: '#343A40',\n majorTickLine: '#495057',\n minorTickLine: '#343A40',\n chartTitle: '#DEE2E6',\n legendLabel: '#DEE2E6',\n background: canvas ? '#212529' : 'transparent',\n areaBorder: '#343A40',\n errorBar: '#ADB5BD',\n crosshairLine: '#ADB5BD',\n crosshairFill: '#FFFFFF',\n crosshairLabel: '#212529',\n tooltipFill: '#FFFFFF',\n tooltipBoldLabel: '#212529',\n tooltipLightLabel: '#212529',\n tooltipHeaderLine: '#212529',\n markerShadow: null,\n selectionRectFill: 'rgba(134,183,254, 0.25)',\n selectionRectStroke: '#0D6EFD',\n selectionCircleStroke: '#0D6EFD',\n tabColor: '#0D6EFD',\n bearFillColor: '#DC3545',\n bullFillColor: '#6F42C1',\n toolkitSelectionColor: '#F8F9FA',\n toolkitFill: '#ADB5BD',\n toolkitIconRectOverFill: '#2B3035',\n toolkitIconRectSelectionFill: '#343A40',\n toolkitIconRect: new Rect(-6, -8, 32, 32),\n chartTitleFont: {\n color: '#DEE2E6', fontFamily: 'Segoe UI', size: chart.getModuleName() === 'accumulationchart' ? '16px' : '14px', fontStyle: 'Normal', fontWeight: '600'\n },\n axisLabelFont: {\n color: '#DEE2E6', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n },\n legendTitleFont: {\n color: '#DEE2E6', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal', fontWeight: '600'\n },\n legendLabelFont: {\n color: '#DEE2E6', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n },\n tooltipLabelFont: {\n color: '#212529', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal'\n },\n axisTitleFont: {\n color: '#DEE2E6', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal', fontWeight: '600'\n },\n datalabelFont: {\n color: '#DEE2E6', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n },\n chartSubTitleFont: {\n color: chart.getModuleName() === 'accumulationchart' ? '#DEE2E680' : '#DEE2E6', fontFamily: 'Segoe UI', size: chart.getModuleName() === 'accumulationchart' ? '14px' : '12px', fontStyle: 'Normal', fontWeight: '600'\n },\n crosshairLabelFont: {\n color: '#212529', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal', fontWeight: '600'\n },\n stripLineLabelFont: {\n color: '#DEE2E6', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n }\n };\n break;\n case 'Fluent':\n style = {\n axisLabel: '#3B3A39',\n axisTitle: '#201F1E',\n axisLine: '#D2D0CE',\n majorGridLine: '#EDEBE9',\n minorGridLine: '#EDEBE9',\n majorTickLine: '#D2D0CE',\n minorTickLine: ' #D2D0CE',\n chartTitle: '#201F1E',\n legendLabel: '#323130',\n background: canvas ? '#FFFFFF' : 'transparent',\n areaBorder: '#EDEBE9',\n errorBar: '#A19F9D',\n crosshairLine: '#A19F9D',\n crosshairFill: '#FFFFFF',\n crosshairLabel: '#323130',\n tooltipFill: '#FFFFFF',\n tooltipBoldLabel: '#323130',\n tooltipLightLabel: '#323130',\n tooltipHeaderLine: '#D2D0CE',\n markerShadow: null,\n selectionRectFill: 'rgba(79,70,229, 0.1)',\n selectionRectStroke: '#4F46E5',\n selectionCircleStroke: '#6B7280',\n tabColor: '#0078D4',\n bearFillColor: '#2ecd71',\n bullFillColor: '#e74c3d',\n toolkitSelectionColor: '#0078D4',\n toolkitFill: '#A19F9D',\n toolkitIconRectOverFill: 'transparent',\n toolkitIconRectSelectionFill: 'transparent',\n toolkitIconRect: new Rect(0, 0, 16, 16),\n chartTitleFont: {\n color: '#201F1E', fontFamily: 'Segoe UI', size: '16px', fontStyle: 'Normal', fontWeight: '600'\n },\n axisLabelFont: {\n color: '#3B3A39', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n },\n legendTitleFont: {\n color: '#201F1E', fontFamily: 'Segoe UI', size: '14px', fontStyle: 'Normal', fontWeight: '600'\n },\n legendLabelFont: {\n color: '#49454E', fontFamily: 'Segoe UI', size: '14px', fontStyle: 'Normal', fontWeight: '400'\n },\n tooltipLabelFont: {\n color: '#323130', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal'\n },\n axisTitleFont: {\n color: '#201F1E', fontFamily: 'Segoe UI', size: '14px', fontStyle: 'Normal', fontWeight: '600'\n },\n datalabelFont: {\n color: '#3B3A39', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n },\n chartSubTitleFont: {\n color: '#323129', fontFamily: 'Segoe UI', size: '14px', fontStyle: 'Normal', fontWeight: '400'\n },\n crosshairLabelFont: {\n color: '#323130', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n },\n stripLineLabelFont: {\n color: '#A19F9D', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n }\n };\n break;\n case 'FluentDark':\n style = {\n axisLabel: '#C8C6C4',\n axisTitle: '#F3F2F1',\n axisLine: '#3B3A39',\n majorGridLine: '#414040',\n minorGridLine: '#414040',\n majorTickLine: '#3B3A39',\n minorTickLine: '#3B3A39',\n chartTitle: '#F3F2F1',\n legendLabel: '#D2D0CE',\n background: canvas ? '#383838' : 'transparent',\n areaBorder: '#414040',\n errorBar: '#D2D0CE',\n crosshairLine: '#D2D0CE',\n crosshairFill: '#323130',\n crosshairLabel: '#F3F2F1',\n tooltipFill: '#252423',\n tooltipBoldLabel: '#F3F2F1',\n tooltipLightLabel: '#F3F2F1',\n tooltipHeaderLine: '#3B3A39',\n markerShadow: null,\n selectionRectFill: 'rgba(79,70,229, 0.1)',\n selectionRectStroke: '#4F46E5',\n selectionCircleStroke: '#6B7280',\n tabColor: '#0078D4',\n bearFillColor: '#2ecd71',\n bullFillColor: '#e74c3d',\n toolkitSelectionColor: '#0078D4',\n toolkitFill: '#484644',\n toolkitIconRectOverFill: 'transparent',\n toolkitIconRectSelectionFill: 'transparent',\n toolkitIconRect: new Rect(0, 0, 16, 16),\n chartTitleFont: {\n color: '#C8C6C4', fontFamily: 'Segoe UI', size: '16px', fontStyle: 'Normal', fontWeight: '600'\n },\n axisLabelFont: {\n color: '#C8C6C4', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n },\n legendTitleFont: {\n color: '#F3F2F1', fontFamily: 'Segoe UI', size: '14px', fontStyle: 'Normal', fontWeight: '600'\n },\n legendLabelFont: {\n color: '#D2D0CE', fontFamily: 'Segoe UI', size: '14px', fontStyle: 'Normal', fontWeight: '400'\n },\n tooltipLabelFont: {\n color: '#F3F2F1', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal'\n },\n axisTitleFont: {\n color: '#F3F2F2', fontFamily: 'Segoe UI', size: '14px', fontStyle: 'Normal', fontWeight: '600'\n },\n datalabelFont: {\n color: '#D2D0CE', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n },\n chartSubTitleFont: {\n color: '#F3F2F1', fontFamily: 'Segoe UI', size: '14px', fontStyle: 'Normal', fontWeight: '400'\n },\n crosshairLabelFont: {\n color: '#F3F2F1', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n },\n stripLineLabelFont: {\n color: '#484644', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n }\n };\n break;\n case 'Fluent2':\n style = {\n axisLabel: '#616161',\n axisTitle: '#242424',\n axisLine: '#D2D0CE',\n majorGridLine: '#EDEBE9',\n minorGridLine: '#EDEBE9',\n majorTickLine: '#D2D0CE',\n minorTickLine: '#D2D0CE',\n chartTitle: '#242424',\n legendLabel: '#242424',\n background: canvas ? '#383838' : 'transparent',\n areaBorder: '#EDEBE9',\n errorBar: '#A19F9D',\n crosshairLine: '#A19F9D',\n crosshairFill: '#FFFFFF',\n crosshairLabel: '#242424',\n tooltipFill: '#FFFFFF',\n tooltipBoldLabel: '#242424',\n tooltipLightLabel: '#242424',\n tooltipHeaderLine: '#D2D0CE',\n markerShadow: null,\n selectionRectFill: 'rgba(180, 214, 250, 0.1)',\n selectionRectStroke: '#0F6CBD',\n selectionCircleStroke: '#0F6CBD',\n tabColor: '#0078D4',\n bearFillColor: '#E7910F',\n bullFillColor: '#0076E5',\n toolkitSelectionColor: '#424242',\n toolkitFill: '#424242',\n toolkitIconRectOverFill: '#E6E6E6',\n toolkitIconRectSelectionFill: '#E6E6E6',\n toolkitIconRect: new Rect(-6, -8, 32, 32),\n chartTitleFont: {\n color: '#242424', fontFamily: 'Segoe UI', size: chart.getModuleName() === 'accumulationchart' ? '16px' : '14px', fontStyle: 'Normal', fontWeight: '600'\n },\n axisLabelFont: {\n color: '#616161', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n },\n legendTitleFont: {\n color: '#242424', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal', fontWeight: '600'\n },\n legendLabelFont: {\n color: '#242424', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n },\n tooltipLabelFont: {\n color: '#242424', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal'\n },\n axisTitleFont: {\n color: '#242424', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal', fontWeight: '600'\n },\n datalabelFont: {\n color: '#242424', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n },\n chartSubTitleFont: {\n color: '#616161', fontFamily: 'Segoe UI', size: chart.getModuleName() === 'chart' ? '12px' : '14px', fontStyle: 'Normal', fontWeight: '600'\n },\n crosshairLabelFont: {\n color: '#242424', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal', fontWeight: '700'\n },\n stripLineLabelFont: {\n color: '#616161', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n }\n };\n break;\n case 'Fluent2HighContrast':\n style = {\n axisLabel: '#FFFFFF',\n axisTitle: '#FFFFFF',\n axisLine: '#3B3A39',\n majorGridLine: '#292827',\n minorGridLine: '#3B3A39',\n majorTickLine: '#292827',\n minorTickLine: '#292827',\n chartTitle: '#FFFFFF',\n legendLabel: '#FFFFFF',\n background: canvas ? '#383838' : 'transparent',\n areaBorder: '#292827',\n errorBar: '#8A8886',\n crosshairLine: '#8A8886',\n crosshairFill: '#000000',\n crosshairLabel: '#FFFFFF',\n tooltipFill: '#292929',\n tooltipBoldLabel: '#FFFFFF',\n tooltipLightLabel: '#FFFFFF',\n tooltipHeaderLine: '#3B3A39',\n markerShadow: null,\n selectionRectFill: 'rgba(26, 235, 255, 0.2)',\n selectionRectStroke: '#1AEBFF',\n selectionCircleStroke: '#1AEBFF',\n tabColor: '#0078D4',\n bearFillColor: '#584EC6',\n bullFillColor: '#43B786',\n toolkitSelectionColor: '#FFFFFF',\n toolkitFill: '#FFFFFF',\n toolkitIconRectOverFill: '#1AEBFF',\n toolkitIconRectSelectionFill: '#1AEBFF',\n toolkitIconRect: new Rect(-6, -8, 32, 32),\n chartTitleFont: {\n color: '#FFFFFF', fontFamily: 'Segoe UI', size: chart.getModuleName() === 'accumulationchart' ? '16px' : '14px', fontStyle: 'Normal', fontWeight: '600'\n },\n axisLabelFont: {\n color: '#FFFFFF', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n },\n legendTitleFont: {\n color: '#FFFFFF', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal', fontWeight: '600'\n },\n legendLabelFont: {\n color: '#FFFFFF', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n },\n tooltipLabelFont: {\n color: '#FFFFFF', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal'\n },\n axisTitleFont: {\n color: '#FFFFFF', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal', fontWeight: '600'\n },\n datalabelFont: {\n color: '#FFFFFF', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n },\n chartSubTitleFont: {\n color: '#FFFFFF', fontFamily: 'Segoe UI', size: chart.getModuleName() === 'chart' ? '12px' : '14px', fontStyle: 'Normal', fontWeight: '600'\n },\n crosshairLabelFont: {\n color: '#FFFFFF', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal', fontWeight: '700'\n },\n stripLineLabelFont: {\n color: '#ADADAD', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n }\n };\n break;\n case 'Fluent2Dark':\n style = {\n axisLabel: '#ADADAD',\n axisTitle: '#FFFFFF',\n axisLine: '#3B3A39',\n majorGridLine: '#3B3A39',\n minorGridLine: '#3B3A39',\n majorTickLine: '#292827',\n minorTickLine: '#292827',\n chartTitle: '#FFFFFF',\n legendLabel: '#FFFFFF',\n background: canvas ? '#383838' : 'transparent',\n areaBorder: '#292827',\n errorBar: '#8A8886',\n crosshairLine: '#8A8886',\n crosshairFill: '#292929',\n crosshairLabel: '#FFFFFF',\n tooltipFill: '#292929',\n tooltipBoldLabel: '#FFFFFF',\n tooltipLightLabel: '#FFFFFF',\n tooltipHeaderLine: '#3B3A39',\n markerShadow: null,\n selectionRectFill: 'rgba(14, 71, 117, 0.1)',\n selectionRectStroke: '#115EA3',\n selectionCircleStroke: '#115EA3',\n tabColor: '#0078D4',\n bearFillColor: '#584EC6',\n bullFillColor: '#43B786',\n toolkitSelectionColor: '#D6D6D6',\n toolkitFill: '#D6D6D6',\n toolkitIconRectOverFill: '#333333',\n toolkitIconRectSelectionFill: '#333333',\n toolkitIconRect: new Rect(-6, -8, 32, 32),\n chartTitleFont: {\n color: '#FFFFFF', fontFamily: 'Segoe UI', size: chart.getModuleName() === 'accumulationchart' ? '16px' : '14px', fontStyle: 'Normal', fontWeight: '600'\n },\n axisLabelFont: {\n color: '#ADADAD', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n },\n legendTitleFont: {\n color: '#FFFFFF', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal', fontWeight: '600'\n },\n legendLabelFont: {\n color: '#FFFFFF', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n },\n tooltipLabelFont: {\n color: '#FFFFFF', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal'\n },\n axisTitleFont: {\n color: '#FFFFFF', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal', fontWeight: '600'\n },\n datalabelFont: {\n color: '#FFFFFF', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n },\n chartSubTitleFont: {\n color: '#ADADAD', fontFamily: 'Segoe UI', size: chart.getModuleName() === 'chart' ? '12px' : '14px', fontStyle: 'Normal', fontWeight: '600'\n },\n crosshairLabelFont: {\n color: '#FFFFFF', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal', fontWeight: '700'\n },\n stripLineLabelFont: {\n color: '#ADADAD', fontFamily: 'Segoe UI', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n }\n };\n break;\n case 'Material3':\n style = {\n axisLabel: '#1E192B',\n axisTitle: '#1C1B1F',\n axisLine: '#C4C7C5',\n majorGridLine: '#C4C7C5',\n minorGridLine: '#C4C7C5',\n majorTickLine: '#C4C7C5',\n minorTickLine: ' #C4C7C5',\n chartTitle: '#1C1B1F',\n legendLabel: '#49454E',\n background: canvas ? '#FFFFFF' : 'transparent',\n areaBorder: '#E7E0EC',\n errorBar: '#79747E',\n crosshairLine: '#49454E',\n crosshairFill: '#313033',\n crosshairLabel: '#F4EFF4',\n tooltipFill: '#313033',\n tooltipBoldLabel: '#F4EFF4',\n tooltipLightLabel: '#F4EFF4',\n tooltipHeaderLine: '#F4EFF4',\n markerShadow: null,\n selectionRectFill: 'rgb(98, 0, 238, 0.06)',\n selectionRectStroke: '#6200EE',\n selectionCircleStroke: '#79747E',\n tabColor: '#49454E',\n bearFillColor: '#5887FF',\n bullFillColor: '#F7523F',\n toolkitSelectionColor: '#49454E',\n toolkitFill: '#49454E',\n toolkitIconRectOverFill: '#EADDFF',\n toolkitIconRectSelectionFill: '#EADDFF',\n toolkitIconRect: new Rect(-4, -5, 26, 26),\n histogram: '#D21020',\n chartTitleFont: {\n color: '#1C1B1F', fontFamily: 'Roboto', size: '16px', fontStyle: 'Normal', fontWeight: '600'\n },\n axisLabelFont: {\n color: '#1E192B', fontFamily: 'Roboto', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n },\n legendTitleFont: {\n color: '#1C1B1F', fontFamily: 'Roboto', size: '14px', fontStyle: 'Normal', fontWeight: '600'\n },\n legendLabelFont: {\n color: '#49454E', fontFamily: 'Roboto', size: '14px', fontStyle: 'Normal', fontWeight: '400'\n },\n tooltipLabelFont: {\n color: '#F4EFF4', fontFamily: 'Roboto', size: '12px', fontStyle: 'Normal'\n },\n axisTitleFont: {\n color: '#1C1B1F', fontFamily: 'Roboto', size: '14px', fontStyle: 'Normal', fontWeight: '600'\n },\n datalabelFont: {\n color: '#49454E', fontFamily: 'Roboto', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n },\n chartSubTitleFont: {\n color: '#49454E', fontFamily: 'Roboto', size: '14px', fontStyle: 'Normal', fontWeight: '400'\n },\n crosshairLabelFont: {\n color: '#F4EFF4', fontFamily: 'Roboto', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n },\n stripLineLabelFont: {\n color: '#79747E', fontFamily: 'Roboto', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n }\n };\n break;\n case 'Material3Dark':\n style = {\n axisLabel: '#E6E1E5',\n axisTitle: '#E6E1E5',\n axisLine: '#49454F',\n majorGridLine: '#444746',\n minorGridLine: '#444746',\n majorTickLine: '#444746',\n minorTickLine: ' #444746',\n chartTitle: '#E6E1E5',\n legendLabel: '#CAC4D0',\n background: canvas ? '#FFFFFF' : 'transparent',\n areaBorder: '#49454F',\n errorBar: '#938F99',\n crosshairLine: '#CAC4D0',\n crosshairFill: '#E6E1E5',\n crosshairLabel: '#313033',\n tooltipFill: '#E6E1E5',\n tooltipBoldLabel: '#313033',\n tooltipLightLabel: '#313033',\n tooltipHeaderLine: '#313033',\n markerShadow: null,\n selectionRectFill: 'rgba(78, 170, 255, 0.06)',\n selectionRectStroke: '#4EAAFF',\n selectionCircleStroke: '#938F99',\n tabColor: '#CAC4D0',\n bearFillColor: '#B3F32F',\n bullFillColor: '#FF9E45',\n toolkitSelectionColor: '#CAC4D0',\n toolkitFill: '#CAC4D0',\n toolkitIconRectOverFill: '#4F378B',\n toolkitIconRectSelectionFill: '#4F378B',\n toolkitIconRect: new Rect(-4, -5, 26, 26),\n histogram: '#FF9E45',\n chartTitleFont: {\n color: '#E6E1E5', fontFamily: 'Roboto', size: '16px', fontStyle: 'Normal', fontWeight: '600'\n },\n axisLabelFont: {\n color: '#CAC4D0', fontFamily: 'Roboto', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n },\n legendTitleFont: {\n color: '#E6E1E5', fontFamily: 'Roboto', size: '14px', fontStyle: 'Normal', fontWeight: '600'\n },\n legendLabelFont: {\n color: '#CAC4D0', fontFamily: 'Roboto', size: '14px', fontStyle: 'Normal', fontWeight: '400'\n },\n tooltipLabelFont: {\n color: '#313033', fontFamily: 'Roboto', size: '12px', fontStyle: 'Normal'\n },\n axisTitleFont: {\n color: '#E6E1E5', fontFamily: 'Roboto', size: '14px', fontStyle: 'Normal', fontWeight: '600'\n },\n datalabelFont: {\n color: '#CAC4D0', fontFamily: 'Roboto', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n },\n chartSubTitleFont: {\n color: '#CAC4D0', fontFamily: 'Roboto', size: '14px', fontStyle: 'Normal', fontWeight: '400'\n },\n crosshairLabelFont: {\n color: '#313033', fontFamily: 'Roboto', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n },\n stripLineLabelFont: {\n color: '#938F99', fontFamily: 'Roboto', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n }\n };\n break;\n default:\n style = {\n axisLabel: '#686868',\n axisTitle: '#424242',\n axisLine: '#b5b5b5',\n majorGridLine: '#dbdbdb',\n minorGridLine: '#eaeaea',\n majorTickLine: '#b5b5b5',\n minorTickLine: '#d6d6d6',\n chartTitle: '#424242',\n legendLabel: '#353535',\n background: canvas ? '#FFFFFF' : 'transparent',\n areaBorder: 'Gray',\n errorBar: '#000000',\n crosshairLine: '#4f4f4f',\n crosshairFill: theme === 'Material' ? '#000816' : theme === 'Fabric' ? '#FFFFFF' : '#212529',\n crosshairLabel: '#e5e5e5',\n tooltipFill: '#000816',\n tooltipBoldLabel: '#ffffff',\n tooltipLightLabel: '#dbdbdb',\n tooltipHeaderLine: '#ffffff',\n markerShadow: null,\n selectionRectFill: 'rgba(41, 171, 226, 0.1)',\n selectionRectStroke: '#29abe2',\n selectionCircleStroke: '#29abe2',\n tabColor: theme === 'Material' ? '#ff4081' : theme === 'Fabric' ? '#0078D6' : '#317AB9',\n bearFillColor: '#2ecd71',\n bullFillColor: '#e74c3d',\n toolkitSelectionColor: theme === 'Material' ? '#ff4081' : theme === 'Fabric' ? '#0078D6' : '#317AB9',\n toolkitFill: '#737373',\n toolkitIconRectOverFill: 'transparent',\n toolkitIconRectSelectionFill: 'transparent',\n toolkitIconRect: new Rect(0, 0, 16, 16),\n chartTitleFont: {\n color: theme === 'Material' ? 'rgba(0, 0, 0, 1)' : theme === 'Fabric' ? '#333333' : '#212529', fontFamily: theme === 'Material' ? 'Roboto' : theme === 'Fabric' ? 'Segoe UI' : 'Helvetica', size: '16px', fontStyle: 'Normal', fontWeight: '600'\n },\n axisLabelFont: {\n color: theme === 'Material' ? 'rgba(97, 97, 97, 1)' : theme === 'Fabric' ? '#666666' : '#676767', fontFamily: theme === 'Material' ? 'Roboto' : theme === 'Fabric' ? 'Segoe UI' : 'Helvetica', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n },\n legendTitleFont: {\n color: theme === 'Material' ? 'rgba(0, 0, 0, 1)' : theme === 'Fabric' ? '#333333' : '#212529', fontFamily: theme === 'Material' ? 'Roboto' : theme === 'Fabric' ? 'Segoe UI' : 'Helvetica', size: '14px', fontStyle: 'Normal', fontWeight: '600'\n },\n legendLabelFont: {\n color: theme === 'Material' ? 'rgba(97, 97, 97, 1)' : theme === 'Fabric' ? '#666666' : '#666666', fontFamily: theme === 'Material' ? 'Roboto' : theme === 'Fabric' ? 'Segoe UI' : 'Helvetica', size: '14px', fontStyle: 'Normal', fontWeight: '400'\n },\n tooltipLabelFont: {\n color: theme === 'Material' ? 'rgba(249, 250, 251, 1)' : theme === 'Fabric' ? '#333333' : '#F9FAFB', fontFamily: theme === 'Material' ? 'Roboto' : theme === 'Fabric' ? 'Segoe UI' : 'Helvetica', size: '12px', fontStyle: 'Normal'\n },\n axisTitleFont: {\n color: theme === 'Material' ? 'rgba(0, 0, 0, 1)' : theme === 'Fabric' ? '#333333' : '#212529', fontFamily: theme === 'Material' ? 'Roboto' : theme === 'Fabric' ? 'Segoe UI' : 'Helvetica', size: '14px', fontStyle: 'Normal', fontWeight: '600'\n },\n datalabelFont: {\n color: theme === 'Material' ? 'rgba(97, 97, 97, 1)' : theme === 'Fabric' ? '#666666' : '#676767', fontFamily: theme === 'Material' ? 'Roboto' : theme === 'Fabric' ? 'Segoe UI' : 'Helvetica', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n },\n chartSubTitleFont: {\n color: theme === 'Material' ? 'rgba(0, 0, 0, 1)' : theme === 'Fabric' ? '#333333' : '#212529', fontFamily: theme === 'Material' ? 'Roboto' : theme === 'Fabric' ? 'Segoe UI' : 'Helvetica', size: '14px', fontStyle: 'Normal', fontWeight: '400'\n },\n crosshairLabelFont: {\n color: theme === 'Material' ? 'rgba(249, 250, 251, 1)' : theme === 'Fabric' ? '#333333' : '#F9FAFB', fontFamily: theme === 'Material' ? 'Roboto' : theme === 'Fabric' ? 'Segoe UI' : 'Helvetica', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n },\n stripLineLabelFont: {\n color: theme === 'Material' ? 'rgba(158, 158, 158, 1)' : theme === 'Fabric' ? '#A6A6A6' : '#676767', fontFamily: theme === 'Material' ? 'Roboto' : theme === 'Fabric' ? 'Segoe UI' : 'Helvetica', size: '12px', fontStyle: 'Normal', fontWeight: '400'\n }\n };\n break;\n }\n return style;\n}\n/**\n * Gets an scroll bar theme color.\n *\n * @param {ChartTheme} theme - The theme for which to retrieve the series colors.\n * @returns {IScrollbarThemeStyle} - Returns scroll bar theme style.\n * @private\n */\nexport function getScrollbarThemeColor(theme) {\n var scrollStyle;\n switch (theme) {\n case 'HighContrastLight':\n scrollStyle = {\n backRect: '#333',\n thumb: '#bfbfbf',\n circle: '#fff',\n circleHover: '#685708',\n arrow: '#333',\n grip: '#333',\n arrowHover: '#fff',\n backRectBorder: '#969696'\n };\n break;\n case 'Bootstrap':\n scrollStyle = {\n backRect: '#f5f5f5',\n thumb: '#e6e6e6',\n circle: '#fff',\n circleHover: '#eee',\n arrow: '#8c8c8c',\n grip: '#8c8c8c'\n };\n break;\n case 'Fabric':\n scrollStyle = {\n backRect: '#f8f8f8',\n thumb: '#eaeaea',\n circle: '#fff',\n circleHover: '#eaeaea',\n arrow: '#a6a6a6',\n grip: '#a6a6a6'\n };\n break;\n case 'MaterialDark':\n scrollStyle = {\n backRect: '#424242',\n thumb: '#616161',\n circle: '#757575',\n circleHover: '#616161',\n arrow: '#BDBDBD',\n grip: '#BDBDBD'\n };\n break;\n case 'FabricDark':\n scrollStyle = {\n backRect: '#282727',\n thumb: '#333232',\n circle: '#4A4848',\n circleHover: '#514F4F',\n arrow: '#ADB5BD',\n grip: '#DADADA'\n };\n break;\n case 'BootstrapDark':\n scrollStyle = {\n backRect: '#2A2A2A',\n thumb: '#313131',\n circle: '#414141',\n circleHover: '#484848',\n arrow: '#DADADA',\n grip: '#FFFFFF'\n };\n break;\n case 'Bootstrap5':\n scrollStyle = {\n backRect: '#E9ECEF',\n thumb: '#ADB5BD',\n circle: '#F8F9FA',\n circleHover: '#F8F9FA',\n arrow: '#6E757D',\n grip: '#6E757D'\n };\n break;\n case 'Bootstrap5Dark':\n scrollStyle = {\n backRect: '#343A40',\n thumb: '#ADB5BD',\n circle: '#2B3035',\n circleHover: '#2B3035',\n arrow: '#ADB5BD',\n grip: '#ADB5BD'\n };\n break;\n case 'HighContrast':\n scrollStyle = {\n backRect: '#757575',\n thumb: '#BFBFBF',\n circle: '#FFFFFF',\n circleHover: '#FFFFFF',\n arrow: '#ADB5BD',\n grip: '#969696'\n };\n break;\n case 'TailwindDark':\n scrollStyle = {\n backRect: '#6B7280',\n thumb: '#374151',\n circle: '#4B5563',\n circleHover: '#4B5563',\n arrow: '#ADB5BD',\n grip: '#D1D5DB'\n };\n break;\n case 'Fluent':\n scrollStyle = {\n backRect: '#F3F2F1',\n thumb: '#E1DFDD',\n circle: '#FFFFFF',\n circleHover: '#E1DFDD',\n arrow: '#605E5C',\n grip: '#605E5C'\n };\n break;\n case 'FluentDark':\n scrollStyle = {\n backRect: '#252423',\n thumb: '#323130',\n circle: '#3B3A39',\n circleHover: '#3B3A39',\n arrow: '#ADB5BD',\n grip: '#A19F9D'\n };\n break;\n case 'Fluent2':\n scrollStyle = {\n backRect: '#F5F5F5',\n thumb: '#F0F0F0',\n circle: '#FAFAFA',\n circleHover: '#FAFAFA',\n arrow: '#424242',\n grip: '#424242'\n };\n break;\n case 'Fluent2Dark':\n scrollStyle = {\n thumb: '#0A0A0A',\n backRect: '#141414',\n circle: '#1F1F1F',\n circleHover: '#1F1F1F',\n arrow: '#D6D6D6',\n grip: '#D6D6D6'\n };\n break;\n case 'Fluent2HighContrast':\n scrollStyle = {\n thumb: '#333333',\n backRect: '#000000',\n circle: '#000000',\n circleHover: '#000000',\n arrow: '#FFFFFF',\n grip: '#FFFFFF'\n };\n break;\n case 'Material3':\n scrollStyle = {\n backRect: 'rgba(103, 80, 164, 0.05)',\n thumb: ' rgba(103, 80, 164, 0.14)',\n circle: '#FFFFFF',\n circleHover: '#E1DFDD',\n arrow: '#49454E',\n grip: '#49454E'\n };\n break;\n case 'Material3Dark':\n scrollStyle = {\n backRect: 'rgba(208, 188, 255, 0.05)',\n thumb: 'rgba(208, 188, 255, 0.14)',\n circle: '#FFFFFF',\n circleHover: '#E1DFDD',\n arrow: '#CAC4D0',\n grip: '#CAC4D0'\n };\n break;\n default:\n scrollStyle = {\n backRect: '#f5f5f5',\n thumb: '#e0e0e0',\n circle: '#fff',\n circleHover: '#eee',\n arrow: '#9e9e9e',\n grip: '#9e9e9e'\n };\n break;\n }\n return scrollStyle;\n}\n","/**\n * Selection src file\n */\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Selection Module handles the selection for chart.\n *\n * @private\n */\nvar BaseSelection = /** @class */ (function () {\n function BaseSelection(control) {\n this.control = control;\n }\n /**\n * To create selection styles for series\n *\n * @returns {void}\n */\n BaseSelection.prototype.seriesStyles = function () {\n var seriesclass;\n var style = document.getElementById(this.styleId);\n var pattern = '{}';\n var fill;\n var opacity;\n var selectionPattern = this.control.selectionPattern;\n var highlightPattern = this.control.highlightPattern;\n if ((this.styleId.indexOf('highlight') > 0 && this.control.highlightColor !== '') || isNullOrUndefined(style) || selectionPattern !== 'None' || highlightPattern !== 'None') {\n if (document.getElementById(this.styleId)) {\n document.getElementById(this.styleId).remove();\n }\n style = document.createElement('style');\n style.setAttribute('id', this.styleId);\n for (var _i = 0, _a = this.control.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n var visibleSeries = this.control.visibleSeries[series.index] ||\n this.control.visibleSeries[series.index];\n if ((this.styleId.indexOf('highlight') > 0 && this.control.highlightColor !== '') || (!isNullOrUndefined(selectionPattern) || !isNullOrUndefined(highlightPattern)) &&\n (selectionPattern !== 'None' || highlightPattern !== 'None')) {\n var patternName = this.styleId.indexOf('highlight') > 0 ? highlightPattern : selectionPattern;\n if (((visibleSeries.type === 'Pie' || visibleSeries.type === 'Funnel' ||\n visibleSeries.type === 'Pyramid') || this.control.getModuleName() === 'circularchart3d') && this.control.highlightColor !== 'transparent') {\n for (var i = 0; i < visibleSeries.points.length; i++) {\n opacity = visibleSeries.opacity;\n fill = this.pattern(this.control, (this.styleId.indexOf('highlight') > 0 && this.control.highlightColor !== '') ? this.control.highlightColor : (visibleSeries.points[i]).color, series.points[i].index, patternName, opacity);\n pattern = '{ fill:' + fill + '}';\n seriesclass = series.selectionStyle || this.styleId + '_series_' + series.index + '_point_' + series.points[i].index + ',' + '.' +\n this.styleId + '_series_' + series.index + '_point_' + series.points[i].index + '> *';\n if (this.control.highlightMode === 'None' && this.control.legendSettings.enableHighlight && !series.isRectSeries) {\n style.innerText += '.' + this.styleId + '_series_' + series.index + '> *' + ' { stroke-width:' + (3) + ';} ';\n }\n pattern = (pattern.indexOf('None') > -1) ? '{fill:' + ((this.styleId.indexOf('highlight') > 0 && this.control.highlightColor !== '') ? this.control.highlightColor : (visibleSeries.points[i]).color) + '!important}' : pattern;\n style.innerText += series.selectionStyle ? '' : '.' + seriesclass + pattern;\n }\n }\n else if (visibleSeries.type && this.control.highlightColor !== 'transparent') {\n opacity = visibleSeries.opacity;\n fill = this.pattern(this.control, (this.styleId.indexOf('highlight') > 0 && this.control.highlightColor !== '') ? this.control.highlightColor :\n (visibleSeries.pointColorMapping !== '' || (this.control.rangeColorSettings && this.control.rangeColorSettings.length > 1)) ? (visibleSeries.points[0]).color\n : visibleSeries.interior, series.index, patternName, opacity);\n pattern = '{ fill:' + fill + '}';\n }\n }\n seriesclass = series.selectionStyle || this.styleId + '_series_' + series.index + ',' + '.' +\n this.styleId + '_series_' + series.index + '> *';\n if (this.control.highlightMode === 'None' && this.control.legendSettings.enableHighlight && !series.isRectSeries) {\n style.innerText += '.' + this.styleId + '_series_' + series.index + '> *' + ' { stroke-width:' + (parseFloat((series.width ? series.width.toString() : '0')) + 1) + ';} ';\n }\n pattern = (pattern.indexOf('None') > -1) ? '{}' : pattern;\n style.innerText += series.selectionStyle ? '' : '.' + seriesclass + pattern;\n }\n var unSelectOpacity = (this.control).highlightColor !== 'transparent' ? (this.control.getModuleName() === 'circularchart3d' ? 0.2 : 0.3) : opacity;\n if (isNullOrUndefined(this.control.selectionModule) && this.control.selectionMode === 'None' && this.control.highlightColor !== '') {\n unSelectOpacity = 1;\n }\n style.innerText += '.' + this.unselected + ' { opacity:' + (unSelectOpacity) + ';} ';\n document.body.appendChild(style);\n }\n };\n /**\n * To create the pattern for series/points.\n *\n * @param chart\n * @param color\n * @param index\n * @param patternName\n * @param opacity\n * @param chart\n * @param color\n * @param index\n * @param patternName\n * @param opacity\n * @param chart\n * @param color\n * @param index\n * @param patternName\n * @param opacity\n * @param chart\n * @param color\n * @param index\n * @param patternName\n * @param opacity\n * @param chart\n * @param color\n * @param index\n * @param patternName\n * @param opacity\n */\n BaseSelection.prototype.pattern = function (chart, color, index, patternName, opacity) {\n var backgroundColor = '#ffffff';\n var svg = chart.svgObject;\n var pathOptions = [];\n var patternGroup = {\n 'id': chart.element.id + '_' + patternName + '_Selection' + '_' + index, 'patternUnits': 'userSpaceOnUse'\n };\n var heightStr = 'height';\n var widthStr = 'width';\n var width = 10;\n var height = 12;\n var patternNum = 6;\n var turquoiseNum = 17;\n var turstrokewidth = 1;\n var starNum = 21;\n var circleNum = 9;\n var tileNum = 18;\n var strokeWidth = 1;\n var bubNum = 20;\n switch (patternName) {\n case 'Dots':\n patternGroup[heightStr] = patternGroup[widthStr] = patternNum;\n patternGroup[widthStr] = patternNum;\n pathOptions[0] = {\n 'x': 0, 'y': 0, 'width': 7, 'height': 7, 'transform': 'translate(0,0)',\n 'fill': backgroundColor, 'opacity': opacity, 'name': 'rect'\n };\n pathOptions[1] = {\n 'cx': 3,\n 'cy': 3,\n 'r': 2,\n 'stroke-width': 1,\n 'fill': color,\n 'name': 'circle'\n };\n break;\n case 'Pacman':\n patternGroup[heightStr] = '18.384';\n patternGroup[widthStr] = '17.917';\n pathOptions[0] = {\n 'name': 'rect', 'x': 0, 'y': 0, 'width': 17.917, 'height': 18.384,\n 'transform': 'translate(0,0)', 'fill': backgroundColor, 'opacity': opacity\n };\n pathOptions[1] = {\n 'name': 'path', 'd': 'M9.081,9.194l5.806-3.08c-0.812-1.496-2.403-3.052-4.291-3.052H8.835C6.138,3.063,3,6.151,3,8.723v1.679 c0,2.572,3.138,5.661,5.835,5.661h1.761c2.085,0,3.835-1.76,4.535-3.514L9.081,9.194z', 'stroke-width': 1, 'stroke': color, 'fill': color\n };\n break;\n case 'Chessboard':\n patternGroup[heightStr] = patternGroup[widthStr] = width;\n pathOptions[0] = {\n 'x': 0, 'y': 0, 'width': width, 'height': width, 'fill': backgroundColor, 'opacity': opacity,\n 'name': 'rect'\n };\n pathOptions[1] = { 'x': 0, 'y': 0, 'width': 5, 'height': 5, 'fill': color, 'opacity': opacity, 'name': 'rect' };\n pathOptions[2] = { 'x': 5, 'y': 5, 'width': 5, 'height': 5, 'fill': color, 'opacity': opacity, 'name': 'rect' };\n break;\n case 'Crosshatch':\n patternGroup[heightStr] = patternGroup[widthStr] = '8';\n pathOptions[0] = {\n 'x': 0, 'y': 0, 'width': 8, 'height': 8, 'transform': 'translate(0,0)',\n 'fill': backgroundColor, 'opacity': opacity, 'name': 'rect'\n };\n pathOptions[1] = {\n 'd': 'M0 0L8 8ZM8 0L0 8Z',\n 'stroke-width': 1,\n 'stroke': color,\n 'name': 'path'\n };\n break;\n case 'DiagonalForward':\n patternGroup[heightStr] = patternGroup[widthStr] = patternNum;\n pathOptions[0] = {\n 'x': 0, 'y': 0, 'width': patternNum, 'height': patternNum, 'transform': 'translate(0,0)',\n 'fill': backgroundColor, 'opacity': opacity, 'name': 'rect'\n };\n pathOptions[1] = {\n 'd': 'M 3 -3 L 9 3 M 6 6 L 0 0 M 3 9 L -3 3',\n 'stroke-width': 2,\n 'stroke': color,\n 'name': 'path'\n };\n break;\n case 'DiagonalBackward':\n patternGroup[heightStr] = patternGroup[widthStr] = patternNum;\n pathOptions[0] = {\n 'x': 0, 'y': 0, 'width': patternNum, 'height': patternNum, 'transform': 'translate(0,0)',\n 'fill': backgroundColor, 'opacity': opacity, 'name': 'rect'\n };\n pathOptions[1] = {\n 'd': 'M 3 -3 L -3 3 M 0 6 L 6 0 M 9 3 L 3 9',\n 'stroke-width': 2,\n 'stroke': color,\n 'name': 'path'\n };\n break;\n case 'Grid':\n patternGroup[heightStr] = patternGroup[widthStr] = patternNum;\n pathOptions[0] = {\n 'name': 'rect', 'x': 0, 'y': 0, 'width': patternNum, 'height': patternNum, 'transform': 'translate(0,0)',\n 'fill': backgroundColor, 'opacity': opacity\n };\n pathOptions[1] = {\n 'name': 'path',\n 'd': 'M1 3.5L11 3.5 M0 3.5L11 3.5 M0 7.5L11 7.5 M0 11.5L11 11.5 M5.5 0L5.5 12 M11.5 0L11.5 12Z',\n 'stroke-width': 1,\n 'stroke': color\n };\n break;\n case 'Turquoise':\n patternGroup[heightStr] = patternGroup[widthStr] = turquoiseNum;\n pathOptions[0] = {\n 'name': 'rect', 'x': 0, 'y': 0, 'width': turquoiseNum, 'height': turquoiseNum, 'transform': 'translate(0,0)',\n 'fill': backgroundColor, 'opacity': opacity\n };\n pathOptions[1] = {\n 'name': 'path', 'd': 'M0.5739999999999998,2.643a2.123,2.111 0 1,0 4.246,0a2.123,2.111 0 1,0 -4.246,0',\n 'stroke-width': turstrokewidth, 'stroke-miterlimit': width, 'stroke': color, 'fill': color\n };\n pathOptions[2] = {\n 'name': 'path', 'd': 'M11.805,2.643a2.123,2.111 0 1,0 4.246,0a2.123,2.111 0 1,0 -4.246,0',\n 'stroke-width': turstrokewidth, 'stroke-miterlimit': width, 'stroke': color, 'fill': color\n };\n pathOptions[3] = {\n 'name': 'path', 'd': 'M6.19,2.643a2.123,2.111 0 1,0 4.246,0a2.123,2.111 0 1,0 -4.246,0',\n 'stroke-width': turstrokewidth, 'stroke-miterlimit': width, 'stroke': color, 'fill': color\n };\n pathOptions[4] = {\n 'name': 'path', 'd': 'M11.805,8.217a2.123,2.111 0 1,0 4.246,0a2.123,2.111 0 1,0 -4.246,0',\n 'stroke-width': turstrokewidth, 'stroke-miterlimit': width, 'stroke': color, 'fill': color\n };\n pathOptions[5] = {\n 'name': 'path', 'd': 'M6.19,8.217a2.123,2.111 0 1,0 4.246,0a2.123,2.111 0 1,0 -4.246,0',\n 'stroke-width': turstrokewidth, 'stroke-miterlimit': width, 'stroke': color, 'fill': color\n };\n pathOptions[6] = {\n 'name': 'path', 'd': 'M11.805,13.899a2.123,2.111 0 1,0 4.246,0a2.123,2.111 0 1,0 -4.246,0',\n 'stroke-width': turstrokewidth, 'stroke-miterlimit': width, 'stroke': color, 'fill': color\n };\n pathOptions[7] = {\n 'name': 'path', 'd': 'M6.19,13.899a2.123,2.111 0 1,0 4.246,0a2.123,2.111 0 1,0 -4.246,0',\n 'stroke-width': turstrokewidth, 'stroke-miterlimit': width, 'stroke': color, 'fill': color\n };\n break;\n case 'Star':\n patternGroup[heightStr] = patternGroup[widthStr] = starNum;\n pathOptions[0] = {\n 'name': 'rect', 'x': 0, 'y': 0, 'width': starNum, 'height': starNum, 'transform': 'translate(0,0)',\n 'fill': backgroundColor, 'opacity': opacity\n };\n pathOptions[1] = {\n 'name': 'path',\n 'd': 'M15.913,18.59L10.762 12.842 5.613 18.75 8.291 11.422 0.325 9.91 8.154 8.33 5.337 0.91 10.488 6.658 15.637 0.75 12.959 8.078 20.925 9.59 13.096 11.17 z',\n 'stroke-width': 1,\n 'stroke': color,\n 'fill': color\n };\n break;\n case 'Triangle':\n patternGroup[heightStr] = patternGroup[widthStr] = width;\n pathOptions[0] = {\n 'name': 'rect', 'x': 0, 'y': 0, 'width': width, 'height': width, 'transform': 'translate(0,0)',\n 'fill': backgroundColor, 'opacity': opacity\n };\n pathOptions[1] = {\n 'name': 'path',\n 'd': 'M4.987,0L7.48 4.847 9.974 9.694 4.987 9.694 0 9.694 2.493 4.847 z',\n 'stroke-width': 1,\n 'stroke': color,\n 'fill': color\n };\n break;\n case 'Circle':\n patternGroup[heightStr] = patternGroup[widthStr] = circleNum;\n pathOptions[0] = {\n 'name': 'rect', 'x': 0, 'y': 0, 'width': circleNum, 'height': circleNum, 'transform': 'translate(0,0)',\n 'fill': backgroundColor, 'opacity': opacity\n };\n pathOptions[1] = {\n 'name': 'circle',\n 'cx': 5.125,\n 'cy': 3.875,\n 'r': 3.625,\n 'stroke-width': 1,\n 'fill': color\n };\n break;\n case 'Tile':\n patternGroup[heightStr] = patternGroup[widthStr] = tileNum;\n pathOptions[0] = {\n 'name': 'rect', 'x': 0, 'y': 0, 'width': tileNum, 'height': tileNum, 'transform': 'translate(0,0)',\n 'fill': backgroundColor, 'opacity': opacity\n };\n pathOptions[1] = { 'name': 'path', 'd': 'M0,9L0 0 9 0 z', 'stroke-width': strokeWidth, 'stroke': color, 'fill': color };\n pathOptions[2] = { 'name': 'path', 'd': 'M9,9L9 0 18 0 z', 'stroke-width': strokeWidth, 'stroke': color, 'fill': color };\n pathOptions[3] = { 'name': 'path', 'd': 'M0,18L0 9 9 9 z', 'stroke-width': strokeWidth, 'stroke': color, 'fill': color };\n pathOptions[4] = { 'name': 'path', 'd': 'M9,18L9 9 18 9 z', 'stroke-width': strokeWidth, 'stroke': color, 'fill': color };\n break;\n case 'HorizontalDash':\n patternGroup[heightStr] = patternGroup[widthStr] = height;\n pathOptions[0] = {\n 'name': 'rect', 'x': 0, 'y': 0, 'width': height, 'height': height, 'transform': 'translate(0,0)',\n 'fill': backgroundColor, 'opacity': opacity\n };\n pathOptions[1] = {\n 'name': 'path', 'd': 'M0,1.5 L10 1.5 M0,5.5 L10 5.5 M0,9.5 L10 9.5 z', 'stroke-width': 1,\n 'stroke': color, 'fill': color\n };\n break;\n case 'VerticalDash':\n patternGroup[heightStr] = patternGroup[widthStr] = height;\n pathOptions[0] = {\n 'name': 'rect', 'x': 0, 'y': 0, 'width': height, 'height': height, 'transform': 'translate(0,0)',\n 'fill': backgroundColor, 'opacity': opacity\n };\n pathOptions[1] = {\n 'name': 'path', 'd': 'M1.5,0 L1.5 10 M5.5,0 L5.5 10 M9.5,0 L9.5 10 z', 'stroke-width': 1,\n 'stroke': color, 'fill': color\n };\n break;\n case 'Rectangle':\n patternGroup[heightStr] = patternGroup[widthStr] = height;\n pathOptions[0] = { 'name': 'rect', 'width': height, 'height': height, 'fill': backgroundColor, 'opacity': opacity };\n pathOptions[1] = { 'name': 'rect', 'x': 1, 'y': 2, 'width': 4, 'height': 9, 'fill': color, 'opacity': opacity };\n pathOptions[2] = { 'name': 'rect', 'x': 7, 'y': 2, 'width': 4, 'height': 9, 'fill': color, 'opacity': opacity };\n break;\n case 'Box':\n patternGroup[heightStr] = patternGroup[widthStr] = width;\n pathOptions[0] = { 'name': 'rect', 'width': 13, 'height': 13, 'fill': backgroundColor, 'opacity': opacity };\n pathOptions[1] = {\n 'name': 'rect', 'x': 1.5, 'y': 1.5, 'width': width, 'height': 9, 'fill': color,\n 'opacity': opacity\n };\n break;\n case 'HorizontalStripe':\n patternGroup[heightStr] = height;\n patternGroup[widthStr] = width;\n pathOptions[0] = {\n 'name': 'rect', 'x': 0, 'y': 0, 'width': width, 'height': height,\n 'transform': 'translate(0,0)', 'fill': backgroundColor, 'opacity': opacity\n };\n pathOptions[1] = {\n 'name': 'path', 'd': 'M0,0.5 L10 0.5 M0,4.5 L10 4.5 M0,8.5 L10 8.5 z', 'stroke-width': 1,\n 'stroke': color, 'fill': color\n };\n break;\n case 'VerticalStripe':\n patternGroup[heightStr] = width;\n patternGroup[widthStr] = height;\n pathOptions[0] = {\n 'name': 'rect', 'x': 0, 'y': 0, 'width': height, 'height': width, 'transform': 'translate(0,0)',\n 'fill': backgroundColor, 'opacity': opacity\n };\n pathOptions[1] = {\n 'name': 'path', 'd': 'M0.5,0 L0.5 10 M4.5,0 L4.5 10 M8.5,0 L8.5 10 z', 'stroke-width': 1,\n 'stroke': color, 'fill': color\n };\n break;\n case 'Bubble':\n patternGroup[heightStr] = patternGroup[widthStr] = bubNum;\n pathOptions[0] = {\n 'name': 'rect', 'x': 0, 'y': 0, 'width': bubNum, 'height': bubNum, 'transform': 'translate(0,0)',\n 'fill': backgroundColor, 'opacity': opacity\n };\n pathOptions[1] = { 'name': 'circle', 'cx': 5.217, 'cy': 11.325, 'r': 3.429, 'stroke-width': 1, 'fill': '#D0A6D1' };\n pathOptions[2] = { 'name': 'circle', 'cx': 13.328, 'cy': 6.24, 'r': 4.884, 'stroke-width': 1, 'fill': color };\n pathOptions[3] = {\n 'name': 'circle', 'cx': 13.277, 'cy': 14.66, 'r': 3.018, 'stroke-width': 1,\n 'fill': '#D0A6D1'\n };\n break;\n }\n var svgRenderer = (chart.svgRenderer || chart.renderer);\n var pattern = svgRenderer.createPattern(patternGroup, 'pattern');\n this.loadPattern(chart, pathOptions, pattern, svgRenderer);\n svg.appendChild(pattern);\n return 'url(#' + chart.element.id + '_' + patternName + '_' + 'Selection' + '_' + index + ')';\n };\n /**\n * To load the pattern into svg\n *\n * @param chart\n * @param options\n * @param pattern\n * @param svgRenderer\n * @param chart\n * @param options\n * @param pattern\n * @param svgRenderer\n * @param chart\n * @param options\n * @param pattern\n * @param svgRenderer\n * @param chart\n * @param options\n * @param pattern\n * @param svgRenderer\n */\n BaseSelection.prototype.loadPattern = function (chart, options, pattern, svgRenderer) {\n var i;\n for (i = 0; i < options.length; i++) {\n var path = svgRenderer.createPattern(options[i], options[i].name);\n pattern.appendChild(path);\n }\n };\n /**\n * To concat indexes\n *\n * @param userIndexes\n * @param localIndexes\n * @param userIndexes\n * @param localIndexes\n */\n BaseSelection.prototype.concatIndexes = function (userIndexes, localIndexes) {\n return userIndexes.concat(localIndexes);\n };\n /**\n * Selected points series visibility checking on legend click\n *\n * @param selectedIndexes\n */\n BaseSelection.prototype.checkVisibility = function (selectedIndexes, chart) {\n if (chart === void 0) { chart = null; }\n if (!selectedIndexes) {\n return false;\n }\n var visible = false;\n var uniqueSeries = [];\n for (var _i = 0, selectedIndexes_1 = selectedIndexes; _i < selectedIndexes_1.length; _i++) {\n var index = selectedIndexes_1[_i];\n if (uniqueSeries.indexOf(index.series) === -1) {\n uniqueSeries.push(index.series);\n }\n }\n for (var _a = 0, uniqueSeries_1 = uniqueSeries; _a < uniqueSeries_1.length; _a++) {\n var index = uniqueSeries_1[_a];\n if (chart != null && chart.rangeColorSettings && chart.rangeColorSettings.length > 0 &&\n chart.rangeColorSettings[0].colors.length > 0) {\n if (this.control.series[0].visible) {\n visible = true;\n break;\n }\n }\n else {\n if (this.control.visibleSeries[index].visible) {\n visible = true;\n break;\n }\n }\n }\n return visible;\n };\n /**\n * To add svg element style class\n *\n * @param element\n * @param className\n * @param element\n * @param className\n * @private\n */\n BaseSelection.prototype.addSvgClass = function (element, className) {\n var elementClassName = element.getAttribute('class') || '';\n elementClassName += ((elementClassName !== '') ? ' ' : '');\n if (elementClassName.indexOf(className) === -1) {\n element.setAttribute('class', elementClassName + className);\n }\n };\n /**\n * To remove svg element style class\n *\n * @param element\n * @param className\n * @param element\n * @param className\n * @private\n */\n BaseSelection.prototype.removeSvgClass = function (element, className) {\n var elementClassName = element.getAttribute('class') || '';\n if (elementClassName.indexOf(className) > -1) {\n element.setAttribute('class', elementClassName.replace(className, ''));\n }\n };\n /**\n * To get children from parent element\n *\n * @param parent\n */\n BaseSelection.prototype.getChildren = function (parent) {\n var children = [];\n for (var i = 0; i < parent.childNodes.length; i++) {\n if (parent.childNodes[i].tagName !== 'defs') {\n children.push(parent.childNodes[i]);\n }\n }\n return children;\n };\n return BaseSelection;\n}());\nexport { BaseSelection };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, Complex, ChildProperty } from '@syncfusion/ej2-base';\nimport { measureText, Rect, TextOption, Size, PathOption } from '@syncfusion/ej2-svg-base';\nimport { Font, Border, Margin, Location, ContainerPadding } from '../model/base';\nimport { subtractThickness, Thickness, drawSymbol, ChartLocation, titlePositionX, getTitle, textTrim, getTextAnchor } from '../utils/helper';\nimport { RectOption, textElement, stringToNumber } from '../utils/helper';\nimport { removeElement, showTooltip, getElement, appendChildElement } from '../utils/helper';\n/**\n * Configures the appearance and behavior of legends in charts.\n */\nvar LegendSettings = /** @class */ (function (_super) {\n __extends(LegendSettings, _super);\n function LegendSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], LegendSettings.prototype, \"visible\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"height\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"width\", void 0);\n __decorate([\n Complex({ x: 0, y: 0 }, Location)\n ], LegendSettings.prototype, \"location\", void 0);\n __decorate([\n Property('Auto')\n ], LegendSettings.prototype, \"position\", void 0);\n __decorate([\n Property('Series')\n ], LegendSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(8)\n ], LegendSettings.prototype, \"padding\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"itemPadding\", void 0);\n __decorate([\n Property('Center')\n ], LegendSettings.prototype, \"alignment\", void 0);\n __decorate([\n Complex({ fontFamily: null, size: null, fontStyle: null, fontWeight: null, color: null }, Font)\n ], LegendSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property(10)\n ], LegendSettings.prototype, \"shapeHeight\", void 0);\n __decorate([\n Property(10)\n ], LegendSettings.prototype, \"shapeWidth\", void 0);\n __decorate([\n Complex({}, Border)\n ], LegendSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ left: 0, right: 0, top: 0, bottom: 0 }, Margin)\n ], LegendSettings.prototype, \"margin\", void 0);\n __decorate([\n Complex({ left: 0, right: 0, top: 0, bottom: 0 }, ContainerPadding)\n ], LegendSettings.prototype, \"containerPadding\", void 0);\n __decorate([\n Property(8)\n ], LegendSettings.prototype, \"shapePadding\", void 0);\n __decorate([\n Property('transparent')\n ], LegendSettings.prototype, \"background\", void 0);\n __decorate([\n Property(1)\n ], LegendSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(true)\n ], LegendSettings.prototype, \"toggleVisibility\", void 0);\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"enableHighlight\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"description\", void 0);\n __decorate([\n Property(3)\n ], LegendSettings.prototype, \"tabIndex\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"title\", void 0);\n __decorate([\n Complex({ fontFamily: null, size: null, fontStyle: null, fontWeight: null, color: null }, Font)\n ], LegendSettings.prototype, \"titleStyle\", void 0);\n __decorate([\n Property('Top')\n ], LegendSettings.prototype, \"titlePosition\", void 0);\n __decorate([\n Property('Normal')\n ], LegendSettings.prototype, \"textWrap\", void 0);\n __decorate([\n Property('Ellipsis')\n ], LegendSettings.prototype, \"textOverflow\", void 0);\n __decorate([\n Property(100)\n ], LegendSettings.prototype, \"maximumTitleWidth\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"maximumLabelWidth\", void 0);\n __decorate([\n Property(true)\n ], LegendSettings.prototype, \"enablePages\", void 0);\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"isInversed\", void 0);\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"reverse\", void 0);\n return LegendSettings;\n}(ChildProperty));\nexport { LegendSettings };\n/**\n * Legend base class for Chart and Accumulation chart.\n *\n * @private\n */\nvar BaseLegend = /** @class */ (function () {\n /**\n * Constructor for the dateTime module.\n *\n * @private\n */\n function BaseLegend(chart) {\n this.maxItemHeight = 0;\n this.rowHeights = [];\n this.pageHeights = [];\n this.columnHeights = [];\n this.pageXCollections = []; // pages of x locations\n this.chartRowCount = 1;\n this.legendTitleCollections = [];\n this.legendRegions = [];\n this.pagingRegions = [];\n this.chart = chart;\n this.legend = chart.legendSettings;\n this.legendID = chart.element.id + '_chart_legend';\n this.isChartControl = (chart.getModuleName() === 'chart' || chart.getModuleName() === 'chart3d');\n this.isAccChartControl = (chart.getModuleName() === 'accumulationchart' || chart.getModuleName() === 'circularchart3d');\n this.isBulletChartControl = (chart.getModuleName() === 'bulletChart');\n this.isStockChartControl = (chart.getModuleName() === 'stockChart');\n this.bulletChart = this.chart;\n this.fivePixel = 5;\n this.rowCount = 0;\n this.pageButtonSize = 8;\n this.maxColumns = 0;\n this.maxWidth = 0;\n this.currentPage = 1;\n this.backwardArrowOpacity = 0;\n this.forwardArrowOpacity = 1;\n this.arrowWidth = (2 * (this.fivePixel + this.pageButtonSize + this.fivePixel));\n this.arrowHeight = this.arrowWidth;\n this.isTop = false;\n this.isTitle = false;\n this.currentPageNumber = 1;\n }\n /**\n * Calculate the bounds for the legends.\n *\n * @returns {void}\n * @private\n */\n BaseLegend.prototype.calculateLegendBounds = function (rect, availableSize, maxLabelSize, previousLegendBounds, pointAnimation) {\n var legend = this.legend;\n var defaultValue = (this.isBulletChartControl) ? '40%' : '20%';\n this.getPosition(legend.position, availableSize);\n this.legendBounds = new Rect(rect.x, rect.y, 0, 0);\n this.isVertical = (this.position === 'Left' || this.position === 'Right');\n this.itemPadding = this.legend.itemPadding ? this.legend.itemPadding : this.isVertical ? this.legend.padding : 20;\n if (this.isVertical) {\n this.legendBounds.height = stringToNumber(legend.height, availableSize.height - (rect.y - this.chart.margin.top)) || rect.height;\n this.legendBounds.width = stringToNumber(legend.width || defaultValue, availableSize.width);\n }\n else {\n this.legendBounds.width = stringToNumber(legend.width, availableSize.width) || rect.width;\n this.legendBounds.height = stringToNumber(legend.height || defaultValue, availableSize.height);\n }\n if (this.chart.getModuleName() === 'chart3d') {\n this.library.get3DLegendBounds(availableSize, this.legendBounds, legend);\n }\n else {\n this.library.getLegendBounds(availableSize, this.legendBounds, legend);\n }\n if (!this.isBulletChartControl) {\n this.legendBounds.width += (this.legend.containerPadding.left + this.legend.containerPadding.right);\n this.legendBounds.height += (this.legend.containerPadding.top + this.legend.containerPadding.bottom);\n }\n this.getLocation(this.position, legend.alignment, this.legendBounds, rect, availableSize, maxLabelSize, previousLegendBounds, pointAnimation);\n };\n /**\n * To find legend position based on available size for chart and accumulation chart\n *\n * @param position\n * @param availableSize\n * @param position\n * @param availableSize\n * @returns {void}\n */\n BaseLegend.prototype.getPosition = function (position, availableSize) {\n var chart = this.chart;\n var accumulation = this.chart;\n if (this.isChartControl || this.isBulletChartControl || this.isStockChartControl) {\n this.position = (position !== 'Auto') ? position : 'Bottom';\n }\n else {\n if (position === 'Auto' && ((chart || accumulation).visibleSeries && (chart || accumulation).visibleSeries[0].type === 'Funnel' || (chart || accumulation).visibleSeries[0].type === 'Pyramid')) {\n position = 'Top';\n }\n this.position = (position !== 'Auto') ? position :\n (availableSize.width > availableSize.height ? 'Right' : 'Bottom');\n }\n };\n /**\n * To set bounds for chart and accumulation chart\n *\n * @param computedWidth\n * @param computedHeight\n * @param legend\n * @param legendBounds\n * @param computedWidth\n * @param computedHeight\n * @param legend\n * @param legendBounds\n * @param computedWidth\n * @param computedHeight\n * @param legend\n * @param legendBounds\n * @param computedWidth\n * @param computedHeight\n * @param legend\n * @param legendBounds\n * @returns {void}\n */\n BaseLegend.prototype.setBounds = function (computedWidth, computedHeight, legend, legendBounds) {\n var titleHeight = legend.title && legend.titlePosition === 'Top' ? this.legendTitleSize.height + this.fivePixel : 0;\n if (this.isVertical && this.isPaging && !legend.enablePages && !this.isBulletChartControl) {\n titleHeight = legend.title && legend.titlePosition === 'Top' ? this.legendTitleSize.height + this.fivePixel : 0;\n titleHeight += (this.pageButtonSize + this.fivePixel);\n }\n computedWidth = Math.min(computedWidth, legendBounds.width);\n computedHeight = Math.min(computedHeight, legendBounds.height);\n if (legend.mode === 'Gradient') {\n legendBounds.width = legend.width ? legendBounds.width : this.isVertical ? computedWidth : 0.75 * legendBounds.width;\n legendBounds.height = legend.height ? legendBounds.height : this.isVertical ? 0.75 * legendBounds.height : computedHeight;\n }\n else {\n legendBounds.width = !legend.width ? computedWidth : legendBounds.width;\n legendBounds.height = !legend.height ? computedHeight : legendBounds.height;\n }\n if (!this.isBulletChartControl) {\n if (this.isTop && legend.titleStyle.textOverflow !== 'None') {\n this.calculateLegendTitle(legend, legendBounds);\n legendBounds.height += legend.titleStyle.textOverflow === 'Wrap' && this.legendTitleCollections.length > 1 ?\n (this.legendTitleSize.height - (this.legendTitleSize.height / this.legendTitleCollections.length)) : 0;\n }\n }\n this.rowCount = Math.max(1, Math.ceil((legendBounds.height - legend.padding - titleHeight) /\n (this.maxItemHeight + legend.padding)));\n };\n /**\n * To find legend location based on position, alignment for chart and accumulation chart\n *\n * @param position\n * @param alignment\n * @param legendBounds\n * @param rect\n * @param availableSize\n * @param maxLabelSize\n * @param position\n * @param alignment\n * @param legendBounds\n * @param rect\n * @param availableSize\n * @param maxLabelSize\n * @param position\n * @param alignment\n * @param legendBounds\n * @param rect\n * @param availableSize\n * @param maxLabelSize\n * @param position\n * @param alignment\n * @param legendBounds\n * @param rect\n * @param availableSize\n * @param maxLabelSize\n * @param position\n * @param alignment\n * @param legendBounds\n * @param rect\n * @param availableSize\n * @param maxLabelSize\n * @param position\n * @param alignment\n * @param legendBounds\n * @param rect\n * @param availableSize\n * @param maxLabelSize\n */\n BaseLegend.prototype.getLocation = function (position, alignment, legendBounds, rect, availableSize, maxLabelSize, previousLegendBounds, pointAnimation) {\n var padding = this.legend.border.width;\n var isBulletChart = this.isBulletChartControl;\n var bulletChart = this.bulletChart;\n var labelIns = bulletChart.labelPosition === 'Inside';\n var ticklIns = bulletChart.tickPosition === 'Inside';\n var isVertical = bulletChart.orientation === 'Vertical';\n var categoryFieldValue = (isBulletChart && bulletChart.categoryField !== '') ?\n maxLabelSize.width + this.chart.border.width + padding * 3 : 0;\n var marginBottom = this.chart.margin.bottom;\n var legendHeight = legendBounds.height + padding + this.legend.margin.top + this.legend.margin.bottom;\n var legendWidth = legendBounds.width + padding + this.legend.margin.left + this.legend.margin.right;\n if (position === 'Bottom') {\n legendBounds.x = this.alignLegend(legendBounds.x, availableSize.width, legendBounds.width, alignment);\n legendBounds.y = (previousLegendBounds && (legendBounds.height === previousLegendBounds.height || this.chart.series[0].type !== 'Pie')) ? previousLegendBounds.y : rect.y + (rect.height - legendHeight) + padding + this.legend.margin.top;\n legendBounds.y += (isBulletChart && !bulletChart.opposedPosition && !labelIns && !ticklIns\n && !isVertical) ? bulletChart.majorTickLines.height + marginBottom + this.legend.border.width + padding * 2 :\n (isVertical && bulletChart.categoryField !== '') ? maxLabelSize.height + padding * 2 : 0;\n if ((!pointAnimation || (legendBounds.height !== previousLegendBounds.height))) {\n {\n subtractThickness(rect, new Thickness(0, 0, 0, legendHeight));\n }\n }\n }\n else if (position === 'Top') {\n var axisTextSize = void 0;\n if (this.isChartControl) {\n axisTextSize = measureText('100', this.chart.verticalAxes[0].labelStyle, this.chart.themeStyle.legendLabelFont);\n }\n legendBounds.x = this.alignLegend(legendBounds.x, availableSize.width, legendBounds.width, alignment);\n legendBounds.y = (previousLegendBounds && (legendBounds.height === previousLegendBounds.height || this.chart.series[0].type !== 'Pie')) ? previousLegendBounds.y : rect.y + padding + this.legend.margin.top;\n legendBounds.y -= (isBulletChart && bulletChart.opposedPosition && !labelIns && !ticklIns &&\n !isVertical) ? bulletChart.majorTickLines.height + this.chart.margin.top : 0;\n legendHeight -= (isBulletChart) ? -padding * 2 : (this.isChartControl ? -padding * 2 - axisTextSize.height / 2 : 0);\n if (!pointAnimation || (legendBounds.height !== previousLegendBounds.height)) {\n subtractThickness(rect, new Thickness(0, 0, legendHeight, 0));\n }\n }\n else if (position === 'Right') {\n legendBounds.x = (previousLegendBounds && (legendBounds.width === previousLegendBounds.width || this.chart.series[0].type !== 'Pie')) ? previousLegendBounds.x : rect.x + (rect.width - legendBounds.width) - this.legend.margin.right;\n legendBounds.y = rect.y + this.alignLegend(0, availableSize.height - (rect.y + marginBottom), legendBounds.height, alignment);\n legendWidth += (isBulletChart && bulletChart.opposedPosition && !labelIns && !ticklIns &&\n isVertical) ? (this.chart.margin.left + this.chart.margin.right + bulletChart.majorTickLines.height) : 0;\n if (!pointAnimation || (legendBounds.width !== previousLegendBounds.width)) {\n subtractThickness(rect, new Thickness(0, legendWidth, 0, 0));\n }\n }\n else if (position === 'Left') {\n legendBounds.x = (previousLegendBounds && (legendBounds.width === previousLegendBounds.width || this.chart.series[0].type !== 'Pie')) ? previousLegendBounds.x : legendBounds.x + this.legend.margin.left;\n legendBounds.y = rect.y + this.alignLegend(0, availableSize.height - (rect.y + marginBottom), legendBounds.height, alignment);\n legendWidth += (isBulletChart && !bulletChart.opposedPosition && !labelIns && !ticklIns &&\n isVertical) ? (legendBounds.x - this.chart.margin.left + padding + bulletChart.majorTickLines.height) :\n (bulletChart.orientation !== 'Vertical' && bulletChart.categoryField !== '') ? categoryFieldValue : 0;\n if (!pointAnimation || (legendBounds.width !== previousLegendBounds.width)) {\n subtractThickness(rect, new Thickness(legendWidth, 0, 0, 0));\n }\n }\n else {\n legendBounds.x = this.legend.location.x;\n legendBounds.y = this.legend.location.y;\n subtractThickness(rect, new Thickness(0, 0, 0, 0));\n }\n };\n /**\n * To find legend alignment for chart and accumulation chart\n *\n * @param start\n * @param size\n * @param legendSize\n * @param alignment\n * @param start\n * @param size\n * @param legendSize\n * @param alignment\n * @param start\n * @param size\n * @param legendSize\n * @param alignment\n * @param start\n * @param size\n * @param legendSize\n * @param alignment\n */\n BaseLegend.prototype.alignLegend = function (start, size, legendSize, alignment) {\n switch (alignment) {\n case 'Far':\n start = (size - legendSize) - start;\n break;\n case 'Center':\n start = ((size - legendSize) / 2);\n break;\n }\n return start;\n };\n /**\n * Renders the legend.\n *\n * @param chart\n * @param legend\n * @param legendBounds\n * @param redraw\n * @param chart\n * @param legend\n * @param legendBounds\n * @param redraw\n * @param chart\n * @param legend\n * @param legendBounds\n * @param redraw\n * @param chart\n * @param legend\n * @param legendBounds\n * @param redraw\n * @returns {void}\n * @private\n */\n BaseLegend.prototype.renderLegend = function (chart, legend, legendBounds, redraw, pointAnimation) {\n var titleHeight = 0;\n var titlePlusArrowWidth = 0;\n var pagingLegendBounds = new Rect(0, 0, 0, 0);\n var requireLegendBounds = new Rect(0, 0, 0, 0);\n var xValue;\n var yValue;\n if (pointAnimation) {\n xValue = getElement(this.legendID + '_element').getAttribute('x');\n yValue = getElement(this.legendID + '_element').getAttribute('y');\n }\n var firstLegend = this.findFirstLegendPosition(this.legendCollections);\n var padding = legend.padding;\n this.itemPadding = this.isBulletChartControl ? legend.padding : this.itemPadding;\n var isPaging = legend.enablePages;\n var titlePosition = legend.titlePosition;\n var upArrowHeight = this.isPaging && !legend.enablePages && this.isVertical ? this.pageButtonSize : 0;\n var legendGroup = chart.renderer.createGroup({ id: this.legendID + '_g' });\n var legendTranslateGroup = this.createLegendElements(chart, legendBounds, legendGroup, legend, this.legendID, redraw);\n this.legendRegions = [];\n this.chartRowCount = 1;\n var maxHeight = 0;\n titleHeight = !this.isTitle ? 0 : (this.isTop || this.isVertical ? this.legendTitleSize.height : 0);\n if (this.isChartControl || (this.isAccChartControl && !this.isVertical)) {\n var pageCount = 1;\n var rowHeights = this.rowHeights[0] + padding;\n for (var i = 1; i < this.rowHeights.length; i++) {\n if ((rowHeights + this.rowHeights[i] + padding) >\n (this.legendBounds.height - this.pageButtonSize - this.maxItemHeight / 2)) {\n this.pageHeights[pageCount - 1] = rowHeights + titleHeight;\n pageCount++;\n rowHeights = 0;\n }\n rowHeights += (this.rowHeights[i] + (this.isVertical ? this.itemPadding : padding));\n }\n this.pageHeights[pageCount - 1] = rowHeights + titleHeight;\n this.totalPages = pageCount;\n }\n for (var i = 0; i < this.legendCollections.length; i++) {\n if (this.legendCollections[i].text !== '') {\n maxHeight = Math.max(this.legendCollections[i].textSize.height, maxHeight);\n break;\n }\n else {\n continue;\n }\n }\n if (!this.isChartControl && !this.isAccChartControl) {\n this.maxItemHeight = Math.max(maxHeight, legend.shapeHeight);\n }\n // For new legend navigation\n if (!isPaging && this.isPaging && !this.isVertical) {\n titlePlusArrowWidth = !this.isTitle ? 0 : titlePosition === 'Left' ? this.legendTitleSize.width : 0;\n titlePlusArrowWidth += (this.pageButtonSize + (2 * this.fivePixel));\n }\n else if (this.isTitle && !this.isPaging && !this.isVertical) {\n titlePlusArrowWidth = titlePosition === ((!this.isRtlEnable) ? 'Left' : 'Right') ? (this.fivePixel + this.legendTitleSize.width) : 0;\n }\n if (chart.legendSettings.mode === 'Gradient' && this.legendCollections.length > 1) {\n this.getLinearLegend(legendBounds, chart, legend, legendTranslateGroup);\n this.totalPages = 1;\n }\n else if (firstLegend !== this.legendCollections.length) {\n var legendSeriesGroup = void 0; // legendItem group for each series group element\n var count = 0;\n var previousLegend = this.legendCollections[firstLegend];\n // starting shape center x,y position && to resolve lint error used new line for declaration\n var startPadding = this.isBulletChartControl ? padding : titlePlusArrowWidth + padding +\n (legend.shapeWidth / 2) + legend.containerPadding.left;\n var xLocation = (this.isBulletChartControl && !this.isRtlEnable) ? legendBounds.x + titlePlusArrowWidth +\n padding + (legend.shapeWidth / 2) :\n (!this.isRtlEnable) ? legendBounds.x + startPadding : legendBounds.x + ((this.chart.getModuleName() === 'accumulationchart' && this.isVertical) ? this.maxWidth : legendBounds.width) - startPadding;\n var start = new ChartLocation(xLocation, this.isBulletChartControl ? legendBounds.y + titleHeight + upArrowHeight + padding + (this.maxItemHeight / 2) :\n legendBounds.y + titleHeight + upArrowHeight + padding + (this.maxItemHeight / 2) + legend.containerPadding.top);\n var anchor = chart.isRtlEnabled || chart.enableRtl ? 'end' : 'start';\n var textOptions = new TextOption('', start.x, start.y, anchor);\n var textPadding = legend.shapePadding + this.itemPadding + legend.shapeWidth;\n // initialization for totalPages legend click totalpage again calculate\n this.totalPages = this.totalPages = (this.isAccChartControl || this.isChartControl || this.isBulletChartControl ||\n this.isStockChartControl) ? this.totalPages : 0;\n this.pageXCollections = [];\n this.legendCollections[firstLegend].location = start;\n var legendIndex = void 0;\n if (!legend.enablePages && this.isPaging) {\n var x = start.x - this.fivePixel;\n var y = start.y - this.fivePixel;\n var leftSpace = this.isTitle && !this.isVertical && titlePosition === 'Left' ?\n this.legendTitleSize.width + this.fivePixel : 0;\n var bottomSapce = this.isVertical ? (this.pageButtonSize) + Math.abs(y - legendBounds.y) : 0;\n var rightSpace = this.isTitle && !this.isVertical && titlePosition === 'Right' ?\n this.legendTitleSize.width + this.fivePixel : 0;\n rightSpace += this.isVertical ? 0 : (this.fivePixel + this.pageButtonSize + this.fivePixel);\n pagingLegendBounds = new Rect(x, y, legendBounds.width - rightSpace - leftSpace, legendBounds.height - bottomSapce);\n requireLegendBounds = pagingLegendBounds;\n }\n else {\n requireLegendBounds = legendBounds;\n }\n var legendOption = void 0;\n for (var i = 0; i < this.legendCollections.length; i++) {\n legendOption = this.legendCollections[i];\n legendIndex = !this.isReverse ? count : (this.legendCollections.length - 1) - count;\n if (this.chart.getModuleName() === 'accumulationchart') {\n legendOption.fill = (this.chart || this.chart || this.chart ||\n this.chart).visibleSeries[0].points[legendOption.pointIndex].color;\n }\n if (this.chart.getModuleName() === 'stockChart') {\n legendOption.type = this.chart.visibleSeries[count].type;\n }\n this.accessbilityText = (this.isBulletChartControl) ? 'Legend of bullet chart' + '' + legendOption.text\n : 'Click to show or hide the ' + legendOption.text + ' series';\n if (legendOption.render && legendOption.text && legendOption.text !== '') {\n legendSeriesGroup = chart.renderer.createGroup({\n id: this.legendID + this.generateId(legendOption, '_g_', legendIndex)\n });\n if (legendSeriesGroup) {\n legendSeriesGroup.setAttribute('tabindex', i === 0 ? '0' : '');\n legendSeriesGroup.setAttribute('aria-label', legend.description || (legendOption.text + ' series is ' + (legendOption.visible ? 'showing, press enter to hide the ' : 'hidden, press enter to show the ') + legendOption.text + ' series'));\n legendSeriesGroup.setAttribute('role', 'button');\n legendSeriesGroup.setAttribute('aria-pressed', legendOption.visible ? 'true' : 'false');\n }\n this.library.getRenderPoint(legendOption, start, textPadding, previousLegend, requireLegendBounds, count, firstLegend);\n this.renderSymbol(legendOption, legendSeriesGroup, legendIndex);\n this.renderText(chart, legendOption, legendSeriesGroup, textOptions, count, legendIndex);\n if (legendSeriesGroup) {\n legendSeriesGroup.style.cssText =\n 'pointer-events: bounding-box; cursor: ' + ((!legend.toggleVisibility && (chart.selectionMode === 'None' ||\n chart.highlightMode === 'None' ||\n chart.selectionMode === 'None') || this.isBulletChartControl) ? 'auto' : 'pointer');\n }\n if (legendTranslateGroup) {\n legendTranslateGroup.appendChild(legendSeriesGroup);\n }\n previousLegend = legendOption;\n }\n count++;\n }\n this.totalPages = (this.isPaging && !this.isBulletChartControl && !this.legend.enablePages && !this.isVertical &&\n this.totalPages > this.chartRowCount) ? this.chartRowCount : this.totalPages;\n if (this.isPaging && this.totalPages > 1) {\n this.renderPagingElements(chart, legendBounds, textOptions, legendGroup);\n }\n else {\n this.totalPages = 1;\n }\n }\n if (pointAnimation) {\n var translateX = \"translate(\" + (this.rowCount > 1 ? 0 : Math.round(Number(xValue)) - Math.round(this.legendBounds.x)) + \" \\n + ',' + \" + (Math.round(Number(yValue)) - Math.round(this.legendBounds.y)) + \")\";\n var translateY = \"translate(\" + (Math.round(Number(xValue)) - Math.round(this.legendBounds.x)) + \", \" + (Math.round(Number(yValue)) - Math.round(this.legendBounds.y)) + \")\";\n appendChildElement(chart.enableCanvas, chart.svgObject, legendGroup, redraw, true, 'x', 'y', undefined, undefined, undefined, undefined, undefined, chart.duration, undefined, undefined, new ChartLocation(0, 0), this.position === 'Top' || this.position === 'Bottom' ? translateX : translateY);\n }\n else {\n appendChildElement(chart.enableCanvas, chart.svgObject, legendGroup, redraw);\n }\n };\n /**\n * To get linear legend.\n *\n * @param {Rect} legendBounds - The bounds of the legend.\n * @param {Chart | AccumulationChart | BulletChart | StockChart | Chart3D | CircularChart3D} chart - The chart instance.\n * @param {LegendSettingsModel} legend - The legend settings.\n * @param {Element} legendTranslateGroup - The group element to translate the legend.\n * @returns {void}\n * @private\n */\n BaseLegend.prototype.getLinearLegend = function (legendBounds, chart, legend, legendTranslateGroup) {\n var xmlns = 'http://www.w3.org/2000/svg';\n var previousLegend = this.legendCollections[0];\n var nextLegend = this.legendCollections[1];\n var defElement = this.chart.renderer.createDefs();\n var gradientLegendCount = 0;\n var linerGradientEle = document.createElementNS(xmlns, 'linearGradient');\n var opacity = 1;\n var fillColors = [];\n var numberItems = [];\n if (legend.title) {\n if (!this.isVertical) {\n if (legend.titlePosition === 'Left') {\n legendBounds.x += this.legendTitleSize.width;\n legendBounds.width -= this.legendTitleSize.width;\n }\n else if (legend.titlePosition === 'Right') {\n legendBounds.width -= this.legendTitleSize.width;\n }\n else if (legend.titlePosition === 'Top') {\n legendBounds.y += this.legendTitleSize.height;\n legendBounds.height -= this.legendTitleSize.height;\n }\n }\n else {\n legendBounds.y += this.legendTitleSize.height;\n legendBounds.height -= this.legendTitleSize.height;\n }\n }\n for (var _i = 0, _a = this.chart.rangeColorSettings; _i < _a.length; _i++) {\n var colorMap = _a[_i];\n if (numberItems.indexOf(colorMap.start) < 0) {\n numberItems.push(colorMap.start);\n }\n if (colorMap.colors.length > 2) {\n var diffValue = (colorMap.end - colorMap.start);\n var colorsLength = colorMap.colors.length - 1;\n if (diffValue > 0) {\n diffValue = diffValue / colorsLength;\n for (var index = 1; index < colorsLength; index++) {\n var calculatedValue = colorMap.start + (diffValue * index);\n numberItems.push(calculatedValue);\n }\n }\n else {\n for (var index = 1; index < colorsLength; index++) {\n numberItems.push(colorMap.start);\n }\n }\n }\n if (numberItems.indexOf(colorMap.end) < 0) {\n numberItems.push(colorMap.end);\n }\n for (var _b = 0, _c = colorMap.colors; _b < _c.length; _b++) {\n var fillColor = _c[_b];\n if (fillColors.indexOf(fillColor) < 0) {\n fillColors.push(fillColor);\n }\n }\n if (colorMap.colors.length > 0 && colorMap.colors.length < 2) {\n fillColors.push(colorMap.colors[0]);\n }\n }\n var x1 = this.isRtlEnable && !this.isVertical ? '100%' : '0%';\n var x2 = this.isVertical || this.isRtlEnable ? '0%' : '100%';\n var y2 = this.isVertical ? '100%' : '0%';\n linerGradientEle.setAttribute('id', this.generateId(previousLegend, 'linearGradient', gradientLegendCount));\n linerGradientEle.setAttribute('x1', x1);\n linerGradientEle.setAttribute('y1', '0%');\n linerGradientEle.setAttribute('x2', x2);\n linerGradientEle.setAttribute('y2', y2);\n var full = numberItems[numberItems.length - 1] - numberItems[0];\n for (var b = 0; b < fillColors.length; b++) {\n var offsetValue = numberItems[b] - numberItems[0];\n offsetValue = offsetValue / full;\n var stopEle = document.createElementNS(xmlns, 'stop');\n stopEle.setAttribute('offset', offsetValue.toString());\n stopEle.setAttribute('stop-color', fillColors[b]);\n stopEle.setAttribute('stop-opacity', opacity.toString());\n linerGradientEle.appendChild(stopEle);\n }\n var startLabel = previousLegend.text.toString();\n var endLabel = nextLegend.text.toString();\n var startTextSize = measureText(startLabel, legend.textStyle, this.chart.themeStyle.legendLabelFont);\n var endTextSize = measureText(endLabel, legend.textStyle, this.chart.themeStyle.legendLabelFont);\n var textWidth = startTextSize.width > endTextSize.width ? startTextSize.width : endTextSize.width;\n var textHeight = startTextSize.height > endTextSize.height ? startTextSize.height : endTextSize.height;\n var otherSpaces = (2 * textWidth) + (4 * legend.padding);\n var linearBarWidth = legendBounds.width;\n var linearBarHeight = legendBounds.height;\n var xValue = legendBounds.x + textWidth + (2 * legend.padding);\n var yValue = legendBounds.y + legend.padding;\n var startLabelY;\n var endLabelY;\n var startLabelX;\n var endLabelX;\n if (this.isVertical) {\n otherSpaces = (2 * textHeight) + (4 * legend.padding);\n linearBarWidth = legendBounds.width - (2 * legend.padding);\n linearBarHeight = legendBounds.height - otherSpaces;\n xValue = legendBounds.x + legend.padding;\n yValue = legendBounds.y + textHeight + (2 * legend.padding);\n startLabelY = legendBounds.y + legend.padding + textHeight;\n endLabelY = yValue + linearBarHeight + textHeight;\n startLabelX = (legendBounds.x + (legendBounds.width * 0.5)) - (textWidth * 0.5);\n endLabelX = startLabelX;\n if (linearBarWidth > 30) {\n var diffWidth = linearBarWidth - 30;\n linearBarWidth = 30;\n xValue = xValue + (diffWidth / 2);\n }\n }\n else {\n linearBarWidth = legendBounds.width - otherSpaces;\n linearBarHeight = legendBounds.height - (2 * legend.padding);\n startLabelX = legendBounds.x + ((!this.isRtlEnable) ? legend.padding + (textWidth - startTextSize.width) :\n linearBarWidth + (3 * legend.padding) + textWidth);\n endLabelX = legendBounds.x + ((!this.isRtlEnable) ? linearBarWidth + (3 * legend.padding) + textWidth :\n legend.padding + (textWidth - endTextSize.width));\n startLabelY = legendBounds.y + (legendBounds.height * 0.5) + (textHeight * 0.25);\n endLabelY = startLabelY;\n if (linearBarHeight > 30) {\n var diffHeight = linearBarHeight - 30;\n linearBarHeight = 30;\n yValue = yValue + (diffHeight / 2);\n }\n }\n var anchor = chart.enableRtl ? 'end' : '';\n var textOptions = new TextOption('', startLabelX, startLabelY, anchor, startLabel);\n var hiddenColor = '#D3D3D3';\n textOptions.id = this.legendID + this.generateId(previousLegend, '_text_', 1);\n var fontcolor = previousLegend.visible ? legend.textStyle.color || chart.themeStyle.legendLabelFont.color : hiddenColor;\n var isCanvas = this.isStockChartControl ? false : this.chart.enableCanvas;\n textElement(chart.renderer, textOptions, legend.textStyle, fontcolor, legendTranslateGroup, false, false, false, false, null, this.currentPageNumber && isCanvas ?\n new Rect(0, -this.translatePage(isCanvas, null, this.currentPageNumber - 1, this.currentPageNumber), 0, 0) :\n null, null, null, null, null, this.chart.themeStyle.legendLabelFont);\n textOptions = new TextOption('', endLabelX, endLabelY, anchor, endLabel);\n textOptions.id = this.legendID + this.generateId(previousLegend, '_text_', 2);\n textElement(chart.renderer, textOptions, legend.textStyle, fontcolor, legendTranslateGroup, false, false, false, false, null, this.currentPageNumber && isCanvas ?\n new Rect(0, -this.translatePage(isCanvas, null, this.currentPageNumber - 1, this.currentPageNumber), 0, 0) :\n null, null, null, null, null, this.chart.themeStyle.legendLabelFont);\n var gradientLegend = chart.renderer.drawRectangle({\n width: linearBarWidth,\n height: linearBarHeight,\n x: xValue,\n y: yValue,\n fill: 'url(#' + this.generateId(previousLegend, 'linearGradient', gradientLegendCount) + ')'\n });\n defElement.appendChild(linerGradientEle);\n legendTranslateGroup.appendChild(defElement);\n legendTranslateGroup.appendChild(gradientLegend);\n };\n /**\n * To find first valid legend text index for chart and accumulation chart\n *\n * @param legendCollection\n * @returns {number}\n * @private\n */\n BaseLegend.prototype.findFirstLegendPosition = function (legendCollection) {\n var count = 0;\n for (var _i = 0, legendCollection_1 = legendCollection; _i < legendCollection_1.length; _i++) {\n var legend = legendCollection_1[_i];\n if (legend.render && legend.text && legend.text !== '') {\n break;\n }\n count++;\n }\n return count;\n };\n /**\n * To get the legend title text width and height.\n *\n * @param legend\n * @param legendBounds\n */\n BaseLegend.prototype.calculateLegendTitle = function (legend, legendBounds) {\n if (legend.title) {\n this.isTop = legend.titlePosition === 'Top';\n var padding = legend.titleStyle.textOverflow === 'Trim' ? 2 * legend.padding : 0;\n if (this.isTop || this.isVertical) {\n this.legendTitleCollections = getTitle(legend.title, legend.titleStyle, (legendBounds.width - padding), this.chart.enableRtl, this.chart.themeStyle.legendTitleFont);\n }\n else {\n this.legendTitleCollections[0] = textTrim(legend.maximumTitleWidth, legend.title, legend.titleStyle, this.chart.enableRtl, this.chart.themeStyle.legendTitleFont);\n }\n var text = this.isTop ? legend.title : this.legendTitleCollections[0];\n this.legendTitleSize = measureText(text, legend.titleStyle, this.chart.themeStyle.legendTitleFont);\n this.legendTitleSize.height *= this.legendTitleCollections.length;\n }\n else {\n this.legendTitleSize = new Size(0, 0);\n }\n };\n /**\n * Render the legend title\n *\n * @param chart\n * @param legend\n * @param legendBounds\n * @param legendGroup\n */\n BaseLegend.prototype.renderLegendTitle = function (chart, legend, legendBounds, legendGroup) {\n var padding = legend.padding;\n var alignment = legend.titleStyle.textAlignment;\n this.isTop = legend.titlePosition === 'Top';\n var anchor = getTextAnchor(legend.titleStyle.textAlignment, chart.enableRtl);\n var x = titlePositionX(legendBounds, legend.titleStyle);\n anchor = this.isTop || this.isVertical ? anchor : (chart.enableRtl) ? 'end' : '';\n x = alignment === 'Near' ? (x + padding) : alignment === 'Far' ? (x - padding) : x;\n x = (this.isTop || this.isVertical) ? x : ((legendBounds.x) + (legend.titlePosition === 'Left' ? 5 :\n (legendBounds.width - this.legendTitleSize.width - 5)));\n var topPadding = (legendBounds.height / 2) + (this.legendTitleSize.height / 4);\n var y = legendBounds.y + (!this.isTop && !this.isVertical ? topPadding :\n (this.legendTitleSize.height / this.legendTitleCollections.length));\n var legendTitleTextOptions = new TextOption(this.legendID + '_title', x, y, anchor, this.legendTitleCollections);\n textElement(chart.renderer, legendTitleTextOptions, legend.titleStyle, legend.titleStyle.color ||\n this.chart.themeStyle.legendTitleFont.color, legendGroup, null, null, null, null, null, null, null, null, null, null, this.chart.themeStyle.legendTitleFont);\n };\n /**\n * To create legend rendering elements for chart and accumulation chart\n *\n * @param chart\n * @param legendBounds\n * @param legendGroup\n * @param legend\n * @param id\n * @param redraw\n */\n BaseLegend.prototype.createLegendElements = function (chart, legendBounds, legendGroup, legend, id, redraw) {\n var padding = legend.padding;\n var options = new RectOption(id + '_element', legend.background, legend.border, legend.opacity, legendBounds, 0, 0, '', this.legend.border.dashArray);\n var legendItemsGroup = chart.renderer.createGroup({ id: id + '_collections' });\n var isCanvas = this.isStockChartControl ? false : chart.enableCanvas;\n var clippath = chart.renderer.createClipPath({ id: id + '_clipPath' });\n options.width = (this.isRtlEnable && this.chart.getModuleName() === 'accumulationchart' && this.isVertical) ? this.maxWidth : legendBounds.width;\n if (legendGroup) {\n legendGroup.appendChild(chart.renderer.drawRectangle(options));\n }\n else {\n chart.renderer.drawRectangle(options);\n }\n if (legend.title) {\n this.renderLegendTitle(chart, legend, legendBounds, legendGroup);\n }\n if (!isCanvas) {\n legendGroup.appendChild(legendItemsGroup);\n }\n this.legendTranslateGroup = chart.renderer.createGroup({ id: id + '_translate_g' });\n if (!isCanvas) {\n legendItemsGroup.appendChild(this.legendTranslateGroup);\n }\n options.y += (this.isTop ? this.legendTitleSize.height : 0);\n options.id += '_clipPath_rect';\n options.width = ((!this.isChartControl && chart.getModuleName() !== 'bulletChart' && !this.isStockChartControl) && this.isVertical) ? this.maxWidth - padding + legend.containerPadding.left + legend.containerPadding.right\n : legendBounds.width;\n if (!isCanvas) {\n this.clipRect = chart.renderer.drawRectangle(options);\n clippath.appendChild(this.clipRect);\n }\n else {\n this.pagingClipRect = options;\n }\n appendChildElement(isCanvas, chart.svgObject, clippath, redraw);\n if (!isCanvas) {\n legendItemsGroup.style.cssText = 'clip-path:url(#' + clippath.id + ')';\n }\n return this.legendTranslateGroup;\n };\n /**\n * To render legend symbols for chart and accumulation chart\n *\n * @param legendOption\n * @param group\n * @param i\n * @param legendOption\n * @param group\n * @param i\n * @param legendOption\n * @param group\n * @param i\n */\n BaseLegend.prototype.renderSymbol = function (legendOption, group, legendIndex) {\n var control = this.isBulletChartControl ? this.chart : null;\n var symbolColor = legendOption.visible ? legendOption.fill : '#D3D3D3';\n var isStrokeWidth = (this.chart.getModuleName() === 'chart' || this.chart.getModuleName() === 'stockChart') && (((legendOption.shape === 'SeriesType') &&\n (legendOption.type.toLowerCase().indexOf('line') > -1) && (legendOption.type.toLowerCase().indexOf('area') === -1)) ||\n ((legendOption.shape === 'HorizontalLine') || (legendOption.shape === 'VerticalLine') || (legendOption.shape === 'Cross')));\n var isCustomBorder = (this.chart.getModuleName() === 'chart' || this.chart.getModuleName() === 'stockChart') &&\n (legendOption.type === 'Scatter' || legendOption.type === 'Bubble');\n var isCanvas = this.isStockChartControl ? false : this.chart.enableCanvas;\n var borderColor;\n var shape = (legendOption.shape === 'SeriesType') ? legendOption.type : legendOption.shape;\n var strokewidth = isStrokeWidth ? (this.legend.mode === 'Series' ?\n this.chart.visibleSeries[legendIndex].width : this.chart.visibleSeries[0].width) :\n (this.isBulletChartControl && legendOption.shape === 'Multiply') ? 4 : 1;\n var regionPadding;\n shape = shape === 'Scatter' ? legendOption.markerShape : shape;\n if (isCustomBorder && legendIndex < this.chart.visibleSeries.length) {\n var series = this.chart.visibleSeries[legendIndex];\n var seriesBorder = series.border;\n var isLineShapemarker = shape === 'HorizontalLine' || shape === 'VerticalLine';\n borderColor = isLineShapemarker ? symbolColor : seriesBorder.color ? seriesBorder.color : symbolColor;\n strokewidth = isLineShapemarker ? series.width : seriesBorder.width ? seriesBorder.width : 1;\n }\n var symbolOption = new PathOption(this.legendID + this.generateId(legendOption, '_shape_', legendIndex), symbolColor, strokewidth, (isCustomBorder ? borderColor : symbolColor), this.legend.opacity, legendOption.dashArray, '');\n var textSize = measureText(legendOption.text, this.legend.textStyle, this.chart.themeStyle.legendLabelFont);\n var x = this.legend.isInversed && !this.isRtlEnable ? legendOption.location.x + textSize.width + this.legend.shapePadding\n : legendOption.location.x;\n var y = legendOption.location.y;\n if (!isCanvas) {\n group.appendChild(drawSymbol({ x: x, y: y }, shape, new Size(this.legend.shapeWidth, this.legend.shapeHeight), legendOption.url, symbolOption, this.accessbilityText, this.chart.renderer, null, this.isBulletChartControl, control));\n }\n else {\n regionPadding = -this.translatePage(isCanvas, null, this.currentPageNumber - 1, this.currentPageNumber);\n drawSymbol({ x: x, y: y }, shape, new Size(this.legend.shapeWidth, this.legend.shapeHeight), '', symbolOption, this.accessbilityText, this.chart.renderer, this.currentPageNumber ? new Rect(0, regionPadding, 0, 0) : null, this.isBulletChartControl, control);\n this.legendRegions.push({\n rect: new Rect(legendOption.location.x - this.legend.shapeWidth, legendOption.location.y, this.legend.shapeWidth + this.legend.shapePadding, this.legend.shapeHeight + regionPadding),\n index: legendIndex\n });\n }\n if (shape === 'Line' && legendOption.markerVisibility && legendOption.markerShape !== 'Image' ||\n (legendOption.type === 'Doughnut' && shape === 'Doughnut')) {\n symbolOption.id = this.legendID + this.generateId(legendOption, '_shape_marker_', legendIndex);\n shape = legendOption.type === 'Doughnut' ? 'Circle' : legendOption.markerShape;\n symbolOption.fill = legendOption.type === 'Doughnut' ? '#FFFFFF' : symbolOption.fill;\n if (!isCanvas) {\n group.appendChild(drawSymbol({ x: x, y: y }, shape, new Size(this.legend.shapeWidth / 2, this.legend.shapeHeight / 2), '', symbolOption, this.accessbilityText, null, null, this.isBulletChartControl, control));\n }\n else {\n drawSymbol({ x: x, y: y }, shape, new Size(this.legend.shapeWidth / 2, this.legend.shapeHeight / 2), '', symbolOption, this.accessbilityText, this.chart.renderer, this.currentPageNumber ?\n new Rect(0, -this.translatePage(isCanvas, null, this.currentPageNumber - 1, this.currentPageNumber), 0, 0) : null, this.isBulletChartControl, control);\n }\n }\n };\n /**\n * To render legend text for chart and accumulation chart\n *\n * @param chart\n * @param legendOption\n * @param group\n * @param textOptions\n * @param i\n * @param chart\n * @param legendOption\n * @param group\n * @param textOptions\n * @param i\n * @param chart\n * @param legendOption\n * @param group\n * @param textOptions\n * @param i\n * @param chart\n * @param legendOption\n * @param group\n * @param textOptions\n * @param i\n * @param chart\n * @param legendOption\n * @param group\n * @param textOptions\n * @param i\n */\n BaseLegend.prototype.renderText = function (chart, legendOption, group, textOptions, i, legendIndex) {\n var legend = chart.legendSettings;\n var hiddenColor = '#D3D3D3';\n var fontcolor = legendOption.visible ? legend.textStyle.color || chart.themeStyle.legendLabelFont.color : hiddenColor;\n var isCanvas = this.isStockChartControl ? false : this.chart.enableCanvas;\n textOptions.id = this.legendID + this.generateId(legendOption, '_text_', legendIndex);\n textOptions.text = legendOption.textCollection.length > 0 ? legendOption.textCollection : legendOption.text;\n if (legend.isInversed && !this.isRtlEnable) {\n textOptions.x = legendOption.location.x - (legend.shapeWidth / 2);\n }\n else if (this.isRtlEnable) {\n var textWidth = measureText(legendOption.text, legend.textStyle, this.chart.themeStyle.legendLabelFont).width;\n textOptions.x = this.chart.getModuleName() === 'bulletChart' ? legendOption.location.x - legend.shapeWidth : legendOption.location.x - ((legendOption.textCollection.length > 1 ? textWidth / legendOption.textCollection.length : textWidth) + legend.shapeWidth / 2 + legend.shapePadding);\n }\n else {\n textOptions.x = legendOption.location.x + (legend.shapeWidth / 2) + legend.shapePadding;\n }\n textOptions.y = legendOption.location.y + this.maxItemHeight / 4;\n textElement(chart.renderer, textOptions, legend.textStyle, fontcolor, group, false, false, false, false, null, this.currentPageNumber && isCanvas ?\n new Rect(0, -this.translatePage(isCanvas, null, this.currentPageNumber - 1, this.currentPageNumber), 0, 0) :\n null, null, null, null, null, this.chart.themeStyle.legendLabelFont);\n if (isCanvas) {\n var textSize = measureText(legendOption.text, legend.textStyle, this.chart.themeStyle.legendLabelFont);\n var region = void 0;\n for (var j = 0; j < this.legendRegions.length; j++) {\n if (this.legendRegions[j].index === i) {\n region = this.legendRegions[j];\n break;\n }\n }\n region.rect.y = textOptions.y < region.rect.y ? textOptions.y : region.rect.y;\n region.rect.width += textSize.width;\n region.rect.height = textSize.height;\n region.rect.y -= textSize.height * 0.5;\n region.rect.x -= (this.isRtlEnable) ? region.rect.width : 0;\n }\n };\n /**\n * To render legend paging elements for chart and accumulation chart\n *\n * @param chart\n * @param bounds\n * @param textOption\n * @param legendGroup\n * @param chart\n * @param bounds\n * @param textOption\n * @param legendGroup\n * @param chart\n * @param bounds\n * @param textOption\n * @param legendGroup\n * @param chart\n * @param bounds\n * @param textOption\n * @param legendGroup\n */\n BaseLegend.prototype.renderPagingElements = function (chart, bounds, textOption, legendGroup) {\n var paginggroup = chart.renderer.createGroup({ id: this.legendID + '_navigation' });\n var isCanvas = this.isStockChartControl ? false : chart.enableCanvas;\n var titleHeight = this.isBulletChartControl ? 0 : this.legendTitleSize.height;\n var grayColor = (this.chart.theme.indexOf('Dark') > -1 || this.chart.theme.indexOf('Contrast') > -1) ? '#FFFFFF' : '#545454';\n var legend = chart.legendSettings; // to solve parameter lint error, legend declaration is here\n var padding = 8; // const padding for paging elements\n var pageUp = this.legendID + (!this.isRtlEnable ? '_pageup' : '_pagedown');\n var pageDown = this.legendID + (!this.isRtlEnable ? '_pagedown' : '_pageup');\n var symbolOption = new PathOption(pageUp, 'transparent', 5, grayColor, 1, '', '');\n var iconSize = chart.availableSize.width < 110 || chart.availableSize.height < 190 ? 4 : this.pageButtonSize;\n // Page left arrow drawing calculation started here\n var rowCount = !legend.enablePages && this.isPaging && !this.isVertical && !this.isBulletChartControl ? 1 :\n (this.rowCount - 1);\n var titleWidth = this.isTitle && legend.titlePosition === 'Left' ? this.legendTitleSize.width : 0;\n this.pagingRegions = [];\n this.backwardArrowOpacity = this.currentPage !== 1 ? 1 : 0;\n this.forwardArrowOpacity = this.currentPage === this.totalPages ? 0 : 1;\n if (!isCanvas) {\n legendGroup.appendChild(paginggroup);\n }\n if (!this.isChartControl && !this.isAccChartControl) {\n if (this.isBulletChartControl || this.isStockChartControl || !this.isVertical) {\n this.totalPages = Math.ceil(this.totalPages / Math.max(1, this.rowCount - 1));\n }\n else {\n this.totalPages = Math.ceil(this.totalPages / this.maxColumns);\n }\n }\n if (paginggroup) {\n paginggroup.style.cursor = 'pointer';\n }\n if ((this.isChartControl || this.isAccChartControl) && !(!legend.enablePages && this.isPaging)) {\n this.clipPathHeight = this.pageHeights[0];\n }\n else {\n this.clipPathHeight = (rowCount * (this.maxItemHeight + legend.padding));\n }\n //this.clipPathHeight = !(this.isChartControl) ? (rowCount * (this.maxItemHeight + legend.padding)) : this.columnHeights[0];\n if (!isCanvas) {\n this.clipRect.setAttribute('height', this.clipPathHeight.toString());\n }\n else {\n //paging clipRect only for canvas mode\n this.pagingClipRect.height = this.legendBounds.height - this.clipPathHeight -\n (this.pagingClipRect.y - this.legendBounds.y) - legend.border.width;\n this.pagingClipRect.y = this.pagingClipRect.y + this.clipPathHeight;\n this.pagingClipRect.x += legend.border.width;\n this.pagingClipRect.width -= (legend.border.width + legend.border.width / 2);\n this.chart.renderer.clearRect(new Rect(this.pagingClipRect.x, this.pagingClipRect.y, this.pagingClipRect.width, this.pagingClipRect.height));\n }\n var pageTextElement;\n var x = (bounds.x + iconSize / 2);\n var y = bounds.y + this.clipPathHeight + ((titleHeight + bounds.height - this.clipPathHeight) / 2);\n if (this.isPaging && !legend.enablePages && !this.isVertical && !this.isBulletChartControl) {\n x = (bounds.x + this.pageButtonSize + titleWidth);\n y = legend.title && this.isTop ? (bounds.y + padding + titleHeight + (iconSize / 1) + 0.5) :\n (bounds.y + padding + iconSize + 0.5);\n }\n var size = measureText(this.totalPages + '/' + this.totalPages, legend.textStyle, this.chart.themeStyle.legendLabelFont);\n var translateX = (this.isRtlEnable) ? legend.border.width + (iconSize / 2) :\n bounds.width - (2 * (iconSize + padding) + padding + size.width);\n if (!isCanvas) {\n if (this.isVertical && !legend.enablePages && !this.isBulletChartControl) {\n x = bounds.x + (bounds.width / 2);\n y = bounds.y + (iconSize / 2) + (padding / 2) + titleHeight;\n symbolOption.opacity = this.backwardArrowOpacity;\n paginggroup.appendChild(drawSymbol({ x: x, y: y }, 'UpArrow', new Size(iconSize, iconSize), '', symbolOption, 'UpArrow'));\n }\n else {\n symbolOption.opacity = this.isBulletChartControl ? symbolOption.opacity :\n (legend.enablePages ? 1 : !this.isRtlEnable ? this.backwardArrowOpacity : this.forwardArrowOpacity);\n paginggroup.appendChild(drawSymbol({ x: x, y: y }, 'LeftArrow', new Size(iconSize, iconSize), '', symbolOption, 'LeftArrow'));\n }\n }\n else {\n drawSymbol({ x: x, y: y }, 'LeftArrow', new Size(iconSize, iconSize), '', symbolOption, 'LeftArrow', this.chart.renderer, new Rect(translateX, 0, 0, 0));\n }\n this.pagingRegions.push(new Rect(!this.isRtlEnable ? x + bounds.width -\n (2 * (iconSize + padding) + padding + size.width) - iconSize * 0.5 : x, y - iconSize * 0.5, iconSize, iconSize));\n // Page numbering rendering calculation started here\n textOption.x = x + (iconSize / 2) + padding;\n textOption.y = y + (size.height / 4);\n textOption.id = this.legendID + '_pagenumber';\n textOption.text = !this.isRtlEnable ? '1/' + this.totalPages : this.totalPages + '/1';\n var color = (this.chart.theme.indexOf('Dark') > -1 || this.chart.theme.indexOf('Contrast') > -1) ? '#FFFFFF' : legend.textStyle.color || this.chart.themeStyle.legendLabelFont.color;\n if (isCanvas && this.totalNoOfPages) {\n textOption.text = !this.isRtlEnable ? this.currentPageNumber + '/' + this.totalNoOfPages : this.totalNoOfPages + '/' + this.currentPageNumber;\n }\n if (legend.enablePages || this.isBulletChartControl) {\n legend.textStyle.size = (chart.availableSize.width < 110 || chart.availableSize.height < 190 && !this.isBulletChartControl) ? '8px' : legend.textStyle.size;\n pageTextElement = textElement(chart.renderer, textOption, legend.textStyle, color, paginggroup, false, false, false, false, null, new Rect(translateX, 0, 0, 0), null, null, null, null, this.chart.themeStyle.legendLabelFont);\n }\n // Page right arrow rendering calculation started here\n x = textOption.x + padding + (iconSize / 2) + size.width;\n if (this.isPaging && !legend.enablePages && !this.isVertical) {\n x = (bounds.x + bounds.width - (this.isBulletChartControl ? this.fivePixel : 0) - this.pageButtonSize - (legend.title && legend.titlePosition === 'Right' ?\n this.legendTitleSize.width + this.fivePixel : 0));\n }\n symbolOption.id = pageDown;\n symbolOption.opacity = !legend.enablePages ? !this.isRtlEnable ? this.forwardArrowOpacity : this.backwardArrowOpacity : 1;\n if (!isCanvas) {\n if (this.isVertical && !legend.enablePages && !this.isBulletChartControl) {\n x = bounds.x + (bounds.width / 2);\n y = bounds.y + bounds.height - (iconSize / 2);\n paginggroup.appendChild(drawSymbol({ x: x, y: y }, 'DownArrow', new Size(iconSize, iconSize), '', symbolOption, 'DownArrow'));\n }\n else {\n paginggroup.appendChild(drawSymbol({ x: x, y: y }, 'RightArrow', new Size(iconSize, iconSize), '', symbolOption, 'RightArrow'));\n }\n }\n else {\n drawSymbol({ x: x, y: y }, 'RightArrow', new Size(iconSize, iconSize), '', symbolOption, 'RightArrow', this.chart.renderer, new Rect(translateX, 0, 0, 0));\n }\n this.pagingRegions.push(new Rect(!this.isRtlEnable ? x + (bounds.width -\n (2 * (iconSize + padding) + padding + size.width) - iconSize * 0.5) : x, y - iconSize * 0.5, iconSize, iconSize));\n if (!isCanvas && (legend.enablePages || this.isBulletChartControl)) {\n //placing the navigation buttons and page numbering in legend right corner\n paginggroup.setAttribute('transform', 'translate(' + translateX + ', ' + 0 + ')');\n }\n else {\n if (this.currentPageNumber === 1 && this.calTotalPage && (legend.enablePages || this.isBulletChartControl)) {\n this.totalNoOfPages = this.totalPages;\n this.calTotalPage = false;\n }\n if (!legend.enablePages && !this.isBulletChartControl) { // For new legend page navigation\n this.translatePage(isCanvas, null, this.currentPage - 1, this.currentPage, legend);\n }\n }\n if (legend.enablePages || this.isBulletChartControl) {\n this.translatePage(isCanvas, pageTextElement, this.currentPage - 1, this.currentPage, legend);\n }\n };\n BaseLegend.prototype.getPageHeight = function (pageHeights, pageCount) {\n var sum = 0;\n for (var i = 0; i < pageCount; i++) {\n sum += pageHeights[i];\n }\n return sum;\n };\n /**\n * To translate legend pages for chart and accumulation chart\n *\n * @param pagingText\n * @param page\n * @param pageNumber\n * @param legend\n * @param pagingText\n * @param page\n * @param pageNumber\n * @param legend\n * @param pagingText\n * @param page\n * @param pageNumber\n * @param legend\n * @param pagingText\n * @param page\n * @param pageNumber\n * @param legend\n */\n BaseLegend.prototype.translatePage = function (isCanvas, pagingText, page, pageNumber, legend) {\n var size = (this.isChartControl || this.isAccChartControl) ?\n (page ? this.getPageHeight(this.pageHeights, page) : 0) : ((this.clipPathHeight) * page);\n if (!isCanvas && (this.isChartControl || this.isAccChartControl)) {\n this.clipRect.setAttribute('height', this.pageHeights[page].toString());\n if (this.isAccChartControl && this.isPaging && !legend.enablePages && this.isVertical) {\n this.clipRect.setAttribute('height', this.legendBounds.height.toString());\n }\n }\n var translate = 'translate(0,-' + size + ')';\n if (!this.isChartControl && !this.isBulletChartControl && !this.isStockChartControl && this.isVertical) {\n var pageX = this.pageXCollections[page * this.maxColumns];\n size = (!this.isRtlEnable) ? pageX - this.legendBounds.x : (this.legendBounds.x + this.maxWidth) - pageX;\n size = size < 0 ? 0 : size; // to avoid small pixel variation\n translate = ((!this.isRtlEnable) ? 'translate(-' : 'translate(') + size + ',0)';\n }\n if (!this.chart.enableCanvas) {\n this.legendTranslateGroup.setAttribute('transform', translate);\n }\n if (!this.chart.enableCanvas && (legend.enablePages || this.isBulletChartControl)) {\n pagingText.textContent = (pageNumber) + '/' + this.totalPages;\n }\n this.currentPage = pageNumber;\n return size;\n };\n /**\n * To change legend pages for chart and accumulation chart\n *\n * @param event\n * @param pageUp\n * @param event\n * @param pageUp\n */\n BaseLegend.prototype.changePage = function (event, pageUp) {\n var legend = this.chart.legendSettings;\n var backwardArrow = document.getElementById(this.legendID + '_pageup');\n var forwardArrow = document.getElementById(this.legendID + '_pagedown');\n var isCanvas = this.isStockChartControl ? false : this.chart.enableCanvas;\n var pageText = (legend.enablePages || this.isBulletChartControl) ?\n document.getElementById(this.legendID + '_pagenumber') : null;\n var page = (legend.enablePages || this.isBulletChartControl) ? parseInt(pageText.textContent.split('/')[0], 10) :\n this.currentPage;\n if (pageUp && page > 1) {\n this.translatePage(isCanvas, pageText, (page - 2), (page - 1), legend);\n }\n else if (!pageUp && page < this.totalPages) {\n this.translatePage(isCanvas, pageText, page, (page + 1), legend);\n }\n if (this.isPaging && !legend.enablePages && !this.isBulletChartControl) {\n if (this.currentPage === this.totalPages) {\n this.hideArrow(forwardArrow);\n }\n else {\n this.showArrow(forwardArrow);\n }\n if (this.currentPage === 1) {\n this.hideArrow(backwardArrow);\n }\n else {\n this.showArrow(backwardArrow);\n }\n // this.currentPage === this.totalPages ? this.hideArrow(forwardArrow) : this.showArrow(forwardArrow);\n // this.currentPage === 1 ? this.hideArrow(backwardArrow) : this.showArrow(backwardArrow);\n }\n };\n /**\n * To hide the backward and forward arrow\n *\n * @param arrowElement\n */\n BaseLegend.prototype.hideArrow = function (arrowElement) {\n arrowElement.setAttribute('opacity', '0');\n };\n /**\n * To show the backward and forward arrow\n *\n * @param arrowElement\n */\n BaseLegend.prototype.showArrow = function (arrowElement) {\n arrowElement.setAttribute('opacity', '1');\n };\n /**\n * To find legend elements id based on chart or accumulation chart\n *\n * @param option\n * @param prefix\n * @param count\n * @param option\n * @param prefix\n * @param count\n * @param option\n * @param prefix\n * @param count\n * @private\n */\n BaseLegend.prototype.generateId = function (option, prefix, count) {\n if (this.isChartControl || this.isStockChartControl) {\n return prefix + count;\n }\n else {\n return prefix + option.pointIndex;\n }\n };\n /**\n * To show or hide trimmed text tooltip for legend.\n *\n * @param event\n * @returns {void}\n * @private\n */\n BaseLegend.prototype.move = function (event) {\n var _this = this;\n var x = this.chart.mouseX;\n var y = this.chart.mouseY;\n if (event.target.textContent.indexOf('...') > -1) {\n var targetId = event.target.id.split(this.legendID + '_text_');\n if (targetId.length === 2) {\n var index = parseInt(targetId[1], 10);\n var element = this.chart.element;\n if (!isNaN(index)) {\n if (this.chart.isTouch) {\n removeElement(this.chart.element.id + '_EJ2_Legend_Tooltip');\n }\n if (this.isChartControl) {\n showTooltip(this.chart.series[index].name, x, y, element.offsetWidth, element.id + '_EJ2_Legend_Tooltip', getElement(this.chart.element.id + '_Secondary_Element'));\n }\n else {\n showTooltip(this.chart.visibleSeries[0].points[index].x.toString(), x + 10, y + 10, element.offsetWidth, element.id + '_EJ2_Legend_Tooltip', getElement(this.chart.element.id + '_Secondary_Element'));\n }\n }\n }\n }\n else {\n removeElement(this.chart.element.id + '_EJ2_Legend_Tooltip');\n }\n if (this.chart.isTouch) {\n clearTimeout(this.clearTooltip);\n this.clearTooltip = +setTimeout(function () { removeElement(_this.chart.element.id + '_EJ2_Legend_Tooltip'); }, 1000);\n }\n };\n return BaseLegend;\n}());\nexport { BaseLegend };\n/**\n * Class for legend options\n *\n * @private\n */\nvar LegendOptions = /** @class */ (function () {\n function LegendOptions(text, fill, shape, visible, type, url, markerShape, markerVisibility, pointIndex, seriesIndex, dashArray) {\n this.location = { x: 0, y: 0 };\n this.textCollection = [];\n this.text = text;\n this.fill = fill;\n this.shape = shape;\n this.url = url;\n this.visible = visible;\n this.type = type;\n this.markerVisibility = markerVisibility;\n this.markerShape = markerShape;\n this.pointIndex = pointIndex;\n this.seriesIndex = seriesIndex;\n this.dashArray = dashArray;\n }\n return LegendOptions;\n}());\nexport { LegendOptions };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/**\n * AccumulationChart base file\n */\nimport { Property, ChildProperty, Complex, createElement, Browser, animationMode, extend } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport { Border, Font, Animation, EmptyPointSettings, Connector } from '../../common/model/base';\nimport { Rect, PathOption, measureText } from '@syncfusion/ej2-svg-base';\nimport { stringToNumber, appendChildElement, subtractRect } from '../../common/utils/helper';\nimport { seriesRender, pointRender } from '../../common/model/constants';\nimport { getSeriesColor } from '../../common/model/theme';\nimport { getElement, firstToLowerCase } from '../../common/utils/helper';\nimport { BaseSelection } from '../../common/user-interaction/selection';\nimport { LegendOptions } from '../../common/legend/legend';\n/**\n * Configures the annotation settings for an accumulation chart.\n * Annotations are used to highlight or provide additional information about specific points or regions in the accumulation chart.\n */\nvar AccumulationAnnotationSettings = /** @class */ (function (_super) {\n __extends(AccumulationAnnotationSettings, _super);\n function AccumulationAnnotationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], AccumulationAnnotationSettings.prototype, \"content\", void 0);\n __decorate([\n Property('0')\n ], AccumulationAnnotationSettings.prototype, \"x\", void 0);\n __decorate([\n Property('0')\n ], AccumulationAnnotationSettings.prototype, \"y\", void 0);\n __decorate([\n Property('Pixel')\n ], AccumulationAnnotationSettings.prototype, \"coordinateUnits\", void 0);\n __decorate([\n Property('Chart')\n ], AccumulationAnnotationSettings.prototype, \"region\", void 0);\n __decorate([\n Property('Middle')\n ], AccumulationAnnotationSettings.prototype, \"verticalAlignment\", void 0);\n __decorate([\n Property('Center')\n ], AccumulationAnnotationSettings.prototype, \"horizontalAlignment\", void 0);\n __decorate([\n Property(null)\n ], AccumulationAnnotationSettings.prototype, \"description\", void 0);\n return AccumulationAnnotationSettings;\n}(ChildProperty));\nexport { AccumulationAnnotationSettings };\n/**\n * This class provides options to customize the appearance and behavior of data labels within a series.\n */\nvar AccumulationDataLabelSettings = /** @class */ (function (_super) {\n __extends(AccumulationDataLabelSettings, _super);\n function AccumulationDataLabelSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], AccumulationDataLabelSettings.prototype, \"visible\", void 0);\n __decorate([\n Property(true)\n ], AccumulationDataLabelSettings.prototype, \"showZero\", void 0);\n __decorate([\n Property(null)\n ], AccumulationDataLabelSettings.prototype, \"name\", void 0);\n __decorate([\n Property('transparent')\n ], AccumulationDataLabelSettings.prototype, \"fill\", void 0);\n __decorate([\n Property('Inside')\n ], AccumulationDataLabelSettings.prototype, \"position\", void 0);\n __decorate([\n Property(5)\n ], AccumulationDataLabelSettings.prototype, \"rx\", void 0);\n __decorate([\n Property(5)\n ], AccumulationDataLabelSettings.prototype, \"ry\", void 0);\n __decorate([\n Property(0)\n ], AccumulationDataLabelSettings.prototype, \"angle\", void 0);\n __decorate([\n Property(false)\n ], AccumulationDataLabelSettings.prototype, \"enableRotation\", void 0);\n __decorate([\n Complex({ width: null, color: null }, Border)\n ], AccumulationDataLabelSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ fontFamily: null, size: null, fontStyle: null, fontWeight: null, color: null }, Font)\n ], AccumulationDataLabelSettings.prototype, \"font\", void 0);\n __decorate([\n Complex({}, Connector)\n ], AccumulationDataLabelSettings.prototype, \"connectorStyle\", void 0);\n __decorate([\n Property(null)\n ], AccumulationDataLabelSettings.prototype, \"template\", void 0);\n __decorate([\n Property('')\n ], AccumulationDataLabelSettings.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], AccumulationDataLabelSettings.prototype, \"maxWidth\", void 0);\n __decorate([\n Property('Ellipsis')\n ], AccumulationDataLabelSettings.prototype, \"textOverflow\", void 0);\n __decorate([\n Property('Normal')\n ], AccumulationDataLabelSettings.prototype, \"textWrap\", void 0);\n return AccumulationDataLabelSettings;\n}(ChildProperty));\nexport { AccumulationDataLabelSettings };\n/**\n * The `PieCenter` class provides options to set the center position for the Pie series in a chart.\n */\nvar PieCenter = /** @class */ (function (_super) {\n __extends(PieCenter, _super);\n function PieCenter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('50%')\n ], PieCenter.prototype, \"x\", void 0);\n __decorate([\n Property('50%')\n ], PieCenter.prototype, \"y\", void 0);\n return PieCenter;\n}(ChildProperty));\nexport { PieCenter };\n/**\n * The `AccPoints` class is used to define and manage the data points within a series of accumulation charts.\n *\n * @public\n */\nvar AccPoints = /** @class */ (function () {\n function AccPoints() {\n /** Accumulation point visibility. */\n this.visible = true;\n /** Accumulation point symbol location. */\n this.symbolLocation = null;\n /** @private */\n this.region = null;\n /** @private */\n this.labelRegion = null;\n /** @private */\n this.labelVisible = true;\n this.regions = null;\n /** @private */\n this.isExplode = false;\n /** @private */\n this.isClubbed = false;\n /** @private */\n this.isSliced = false;\n /** @private */\n this.argsData = null;\n /** @private */\n this.isLabelUpdated = null;\n /** @private */\n this.initialLabelRegion = null;\n }\n return AccPoints;\n}());\nexport { AccPoints };\n/**\n * Configures the series in the accumulation chart.\n */\nvar AccumulationSeries = /** @class */ (function (_super) {\n __extends(AccumulationSeries, _super);\n function AccumulationSeries() {\n /**\n * Specifies the data source for the series. It can be an array of JSON objects, or an instance of DataManager.\n * ```html\n *
\n * ```\n * ```typescript\n * let dataManager: DataManager = new DataManager({\n * url: 'https://services.syncfusion.com/js/production/api/orders'\n * });\n * let query: Query = new Query().take(5);\n * let pie: AccumulationChart = new AccumulationChart({\n * ...\n * series: [{\n * dataSource: dataManager,\n * xName: 'CustomerID',\n * yName: 'Freight',\n * query: query\n * }],\n * ...\n * });\n * pie.appendTo('#Pie');\n * ```\n *\n * @default ''\n */\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** @private */\n _this.points = [];\n /** @private */\n _this.clubbedPoints = [];\n /** @private */\n _this.sumOfPoints = 0;\n /** @private */\n _this.isRectSeries = true;\n /** @private */\n _this.clipRect = new Rect(0, 0, 0, 0);\n /** @private */\n _this.category = 'Series';\n /** @private */\n _this.rightSidePoints = [];\n /** @private */\n _this.leftSidePoints = [];\n return _this;\n }\n /**\n * To refresh the Datamanager for series.\n *\n * @private\n * @param {AccumulationChart} accumulation - The accumulation chart control.\n * @param {boolean} render - Specifies whether to render the accumulation chart after refreshing the DataManager.\n * @returns {void}\n */\n AccumulationSeries.prototype.refreshDataManager = function (accumulation, render) {\n var _this = this;\n this.accumulation = accumulation;\n this.radius = this.radius ? this.radius : (Browser.isDevice && this.dataLabel.position === 'Outside') ? '40%' : '80%';\n var dateSource = this.dataSource || accumulation.dataSource;\n if (!(dateSource instanceof DataManager) && isNullOrUndefined(this.query)) {\n this.dataManagerSuccess({ result: dateSource, count: dateSource.length }, accumulation, render);\n return;\n }\n var dataManager = this.dataModule.getData(this.dataModule.generateQuery().requiresCount());\n dataManager.then(function (e) { return _this.dataManagerSuccess(e, accumulation); });\n };\n /**\n * To get points on dataManager is success.\n *\n * @private\n * @param {Object} e - The data manager result object.\n * @param {Object} e.result - The result of the data manager process.\n * @param {number} e.count - The count of items in the result.\n * @param {AccumulationChart} accumulation - The accumulation chart control.\n * @param {boolean} render - Specifies whether to render the accumulation chart after retrieving the points.\n * @returns {void}\n */\n AccumulationSeries.prototype.dataManagerSuccess = function (e, accumulation, render) {\n if (render === void 0) { render = true; }\n var argsData = {\n name: seriesRender, series: this, data: e.result\n };\n accumulation.allowServerDataBinding = false;\n accumulation.trigger(seriesRender, argsData);\n this.resultData = e.result !== '' ? e.result : [];\n if (!accumulation.isBlazor && !render) {\n this.getPoints(this.resultData, accumulation); // To update datasource using onPropertyChanged method. incident id: 290690\n }\n if ((++accumulation.seriesCounts === accumulation.visibleSeries.length && render)\n || (window['Blazor'] && !render && accumulation.seriesCounts === 1)) {\n this.getPoints(this.resultData, accumulation);\n accumulation.refreshChart();\n }\n };\n /**\n * To find points from result data.\n *\n * @private\n * @param {Object} result - The result of the process.\n * @param {AccumulationChart} accumulation - The accumulation chart control.\n * @returns {void}\n */\n AccumulationSeries.prototype.getPoints = function (result, accumulation) {\n var length = Object.keys(result).length;\n this.sumOfPoints = 0;\n if (length === 0) {\n // fix for Pie datalabels are not removed for empty datasource\n this.points = [];\n return null;\n }\n this.findSumOfPoints(result);\n this.points = [];\n this.clubbedPoints = [];\n this.sumOfClub = 0;\n var point;\n var colors = this.palettes.length ? this.palettes : getSeriesColor(accumulation.theme);\n var clubValue = stringToNumber(this.groupTo, this.sumOfPoints);\n for (var i = 0; i < length; i++) {\n point = this.setPoints(result, i, colors, accumulation);\n if (!this.isClub(point, clubValue, i)) {\n if (isNullOrUndefined(point.y)) {\n point.visible = false;\n }\n this.pushPoints(point, colors);\n }\n else {\n point.index = this.clubbedPoints.length;\n point.isExplode = true;\n this.clubbedPoints.push(point);\n point.isSliced = true;\n }\n }\n this.lastGroupTo = this.groupTo;\n if (this.sumOfClub > 0) {\n var clubPoint_1 = this.generateClubPoint();\n this.pushPoints(clubPoint_1, colors);\n var pointsLength_1 = this.points.length - 1;\n this.clubbedPoints.map(function (point) {\n point.index += pointsLength_1;\n point.color = clubPoint_1.color;\n });\n }\n if (this.clubbedPoints.length && this.explode && this.type === 'Pie'\n && (this.explodeAll || this.points[this.points.length - 1].index === this.explodeIndex)) {\n this.points.splice(this.points.length - 1, 1);\n this.points = this.points.concat(this.clubbedPoints);\n }\n };\n AccumulationSeries.prototype.generateClubPoint = function () {\n var clubPoint = new AccPoints();\n clubPoint.isClubbed = true;\n clubPoint.x = 'Others';\n clubPoint.y = this.sumOfClub;\n clubPoint.text = clubPoint.originalText = clubPoint.x + ': ' + this.sumOfClub;\n clubPoint.sliceRadius = '80%';\n return clubPoint;\n };\n /**\n * Method to set point index and color.\n *\n * @param {AccPoints} point - The point data.\n * @param {string[]} colors - The array of colors used in the accumulation chart.\n * @returns {void}\n */\n AccumulationSeries.prototype.pushPoints = function (point, colors) {\n point.index = this.points.length;\n point.isExplode = this.explodeAll || (point.index === this.explodeIndex);\n point.color = point.color || colors[point.index % colors.length];\n this.points.push(point);\n };\n /**\n * Method to find club point.\n *\n * @param {AccPoints} point - The point data.\n * @param {number} clubValue - The club value for accumulation chart.\n * @param {number} index - The index of the point in the data set.\n * @returns {boolean} - false\n */\n AccumulationSeries.prototype.isClub = function (point, clubValue, index) {\n if (!isNullOrUndefined(clubValue)) {\n if (this.groupMode === 'Value' && Math.abs(point.y) <= clubValue) {\n this.sumOfClub += Math.abs(point.y);\n return true;\n }\n else if (this.groupMode === 'Point' && index >= clubValue) {\n this.sumOfClub += Math.abs(point.y);\n return true;\n }\n }\n return false;\n };\n /**\n * Method to find sum of points in the series.\n *\n * @param {Object} result - The result of the process.\n * @returns {void}\n */\n AccumulationSeries.prototype.findSumOfPoints = function (result) {\n var length = Object.keys(result).length;\n for (var i = 0; i < length; i++) {\n if (!isNullOrUndefined(result[i]) && !isNullOrUndefined(result[i][this.yName])\n && !isNaN(result[i][this.yName])) {\n this.sumOfPoints += Math.abs(result[i][this.yName]);\n }\n }\n };\n /**\n * Method to set points x, y and text from data source.\n *\n * @param {Object} data - The data containing information for the points.\n * @param {number} i - The index of the current point in the data set.\n * @param {string[]} colors - The array of colors used in the accumulation chart.\n * @param {AccumulationChart} accumulation - The accumulation chart control.\n * @returns {AccPoints} - The point data retrieved from the specified index.\n */\n AccumulationSeries.prototype.setPoints = function (data, i, colors, accumulation) {\n var point = new AccPoints();\n point.x = getValue(this.xName, data[i]);\n point.y = getValue(this.yName, data[i]);\n point.legendImageUrl = getValue(this.legendImageUrl, data[i]);\n point.color = getValue(this.pointColorMapping, data[i]);\n point.text = point.originalText = getValue(this.dataLabel.name || '', data[i]);\n point.tooltip = getValue(this.tooltipMappingName || '', data[i]);\n point.sliceRadius = getValue(this.radius, data[i]);\n point.sliceRadius = isNullOrUndefined(point.sliceRadius) ? '80%' : point.sliceRadius;\n point.separatorY = accumulation.intl.formatNumber(point.y, { useGrouping: accumulation.useGroupingSeparator });\n this.setAccEmptyPoint(point, i, data);\n return point;\n };\n /**\n * Method render the series elements for accumulation chart.\n *\n * @private\n * @param {AccumulationChart} accumulation - The AccumulationChart control.\n * @param {boolean} redraw - Specifies whether to redraw the points.\n * @returns {void}\n */\n AccumulationSeries.prototype.renderSeries = function (accumulation, redraw) {\n var seriesGroup = redraw ? getElement(accumulation.element.id + '_Series_' + this.index) :\n accumulation.renderer.createGroup({ id: accumulation.element.id + '_Series_' + this.index });\n this.renderPoints(accumulation, seriesGroup, redraw);\n var datalabelGroup;\n if (accumulation.accumulationDataLabelModule && this.dataLabel.visible) {\n datalabelGroup = accumulation.renderer.createGroup({ id: accumulation.element.id + '_datalabel_Series_' + this.index });\n datalabelGroup.style.visibility =\n (((this.animation.enable && animationMode !== 'Disable') || animationMode === 'Enable') && accumulation.animateSeries && this.type === 'Pie') ? 'hidden' : 'visible';\n this.renderDataLabel(accumulation, datalabelGroup, redraw);\n }\n if (this.type === 'Pie') {\n if (!accumulation.redraw) {\n this.findMaxBounds(this.labelBound, this.accumulationBound);\n }\n accumulation.pieSeriesModule.animateSeries(accumulation, this.animation, this, seriesGroup, this.borderRadius, this.points);\n }\n if (!accumulation.redraw && accumulation.accumulationLegendModule) {\n this.labelBound.x -= accumulation.explodeDistance;\n this.labelBound.y -= accumulation.explodeDistance;\n this.labelBound.height += (accumulation.explodeDistance - this.labelBound.y);\n this.labelBound.width += (accumulation.explodeDistance - this.labelBound.x);\n }\n };\n /**\n * Method render the points elements for accumulation chart series.\n *\n * @param {AccumulationChart} accumulation - The AccumulationChart control.\n * @param {Element} seriesGroup - The group element to contain the point elements.\n * @param {boolean} redraw - Specifies whether to redraw the points.\n * @param {boolean} previouRadius - Specifies the previous radius of the pie when animating the individual series point.\n * @param {boolean} previousCenter - Specifies the previous center of the pie when animating the individual series point.\n * @param {boolean} pointAnimation - Specifies whether the point based animation is enabled.\n * @returns {void}\n */\n AccumulationSeries.prototype.renderPoints = function (accumulation, seriesGroup, redraw, previouRadius, previousCenter, pointAnimation) {\n var pointId = accumulation.element.id + '_Series_' + this.index + '_Point_';\n var option;\n var patternFill;\n var patterns = ['Chessboard', 'Dots', 'DiagonalForward', 'Crosshatch', 'Pacman', 'DiagonalBackward', 'Grid', 'Turquoise', 'Star', 'Triangle', 'Circle', 'Tile', 'HorizontalDash', 'VerticalDash', 'Rectangle', 'Box', 'VerticalStripe', 'HorizontalStripe', 'Bubble'];\n for (var _i = 0, _a = this.points; _i < _a.length; _i++) {\n var point = _a[_i];\n point.percentage = (+(point.y / this.sumOfPoints * 100).toFixed(2));\n var argsData = {\n cancel: false, name: pointRender, series: this, point: point, fill: point.color,\n border: this.isEmpty(point) ? { width: this.emptyPointSettings.border.width, color: this.emptyPointSettings.border.color } :\n { width: this.border.width, color: this.border.color }, pattern: this.applyPattern ? patterns[point.index % patterns.length] : 'None'\n };\n accumulation.trigger(pointRender, argsData);\n point.color = argsData.fill;\n patternFill = point.color;\n if (this.applyPattern) {\n var selection = new BaseSelection(accumulation);\n patternFill = selection.pattern(accumulation, point.color, point.index, argsData.pattern, this.opacity);\n }\n option = new PathOption(pointId + point.index, patternFill, argsData.border.width || 1, argsData.border.color || point.color, this.opacity, argsData.series.dashArray, '');\n accumulation[(firstToLowerCase(this.type) + 'SeriesModule')].\n renderPoint(point, this, accumulation, option, seriesGroup, redraw, previouRadius, previousCenter, pointAnimation);\n }\n appendChildElement(false, accumulation.getSeriesElement(), seriesGroup, redraw);\n };\n /**\n * Method render the datalabel elements for accumulation chart.\n *\n * @param {AccumulationChart} accumulation - The AccumulationChart control.\n * @param {Element} datalabelGroup - The group element to contain the data label elements.\n * @param {boolean} redraw - Specifies whether to redraw the data labels.\n * @returns {void}\n */\n AccumulationSeries.prototype.renderDataLabel = function (accumulation, datalabelGroup, redraw) {\n accumulation.accumulationDataLabelModule.findAreaRect();\n var element = createElement('div', {\n id: accumulation.element.id + '_Series_0' + '_DataLabelCollections'\n });\n this.leftSidePoints = [];\n this.rightSidePoints = [];\n var firstQuarter = [];\n var secondQuarter = [];\n for (var _i = 0, _a = this.points; _i < _a.length; _i++) {\n var point = _a[_i];\n if (point.visible) {\n if (this.dataLabel.showZero || (!this.dataLabel.showZero && ((point.y !== 0) || (point.y === 0 &&\n this.emptyPointSettings.mode === 'Zero')))) {\n accumulation.accumulationDataLabelModule.renderDataLabel(point, this.dataLabel, datalabelGroup, this.points, this.index, element, redraw);\n }\n }\n if (point.midAngle >= 90 && point.midAngle <= 270) {\n this.leftSidePoints.push(point);\n }\n else {\n if (point.midAngle >= 0 && point.midAngle <= 90) {\n secondQuarter.push(point);\n }\n else {\n firstQuarter.push(point);\n }\n }\n }\n firstQuarter.sort(function (a, b) { return a.midAngle - b.midAngle; });\n secondQuarter.sort(function (a, b) { return a.midAngle - b.midAngle; });\n this.leftSidePoints.sort(function (a, b) { return a.midAngle - b.midAngle; });\n this.rightSidePoints = firstQuarter.concat(secondQuarter);\n accumulation.accumulationDataLabelModule.drawDataLabels(this, this.dataLabel, datalabelGroup, element, redraw);\n if (this.dataLabel.template !== null && element.childElementCount) {\n var dataLabelCallBack = accumulation.accumulationDataLabelModule.drawDataLabels.bind(accumulation.accumulationDataLabelModule, this, this.dataLabel, datalabelGroup, element, redraw);\n if (accumulation.isReact) {\n accumulation.renderReactTemplates(dataLabelCallBack);\n }\n appendChildElement(false, getElement(accumulation.element.id + '_Secondary_Element'), element, redraw);\n }\n appendChildElement(false, accumulation.getSeriesElement(), datalabelGroup, redraw);\n };\n /**\n * To find maximum bounds for smart legend placing.\n *\n * @private\n * @param {Rect} totalbound - The total bounding rect.\n * @param {Rect} bound - The bounding rect to be compared.\n * @returns {void}\n */\n AccumulationSeries.prototype.findMaxBounds = function (totalbound, bound) {\n totalbound.x = bound.x < totalbound.x ? bound.x : totalbound.x;\n totalbound.y = bound.y < totalbound.y ? bound.y : totalbound.y;\n totalbound.height = (bound.y + bound.height) > totalbound.height ? (bound.y + bound.height) : totalbound.height;\n totalbound.width = (bound.x + bound.width) > totalbound.width ? (bound.x + bound.width) : totalbound.width;\n };\n /**\n * Finds the maximum width of the labels for legend placement.\n *\n * @private\n * @returns {number} The maximum label width.\n */\n AccumulationSeries.prototype.findMaxLabelWidth = function () {\n var max;\n for (var i = 0; i < this.points.length; i++) {\n max = this.points[0].textSize.width;\n if (max < this.points[i].textSize.width) {\n max = this.points[i].textSize.width;\n }\n }\n return max;\n };\n /**\n * To set empty point value for null points.\n *\n * @private\n * @param {AccPoints} point - The point to set as empty.\n * @param {number} i - The index of the point in the data set.\n * @param {Object} data - The data object.\n * @returns {void}\n */\n AccumulationSeries.prototype.setAccEmptyPoint = function (point, i, data) {\n if (!(isNullOrUndefined(point.y) || isNaN(point.y))) {\n return null;\n }\n point.color = this.emptyPointSettings.fill || point.color;\n switch (this.emptyPointSettings.mode) {\n case 'Zero':\n point.y = 0;\n point.visible = true;\n break;\n case 'Average': {\n var previous = data[i - 1] ? (data[i - 1][this.yName] || 0) : 0;\n var next = data[i + 1] ? (data[i + 1][this.yName] || 0) : 0;\n point.y = (Math.abs(previous) + Math.abs(next)) / 2;\n this.sumOfPoints += point.y;\n point.visible = true;\n break;\n }\n default:\n point.visible = false;\n break;\n }\n };\n /**\n * Updates the data source for the series.\n *\n * @function setData\n * @param {Object} data – Updated data source for the series.\n * @param {number} duration – The duration for the animation.\n * @returns {void}\n */\n AccumulationSeries.prototype.setData = function (data, duration) {\n if (!data) {\n return null;\n }\n var samePoints = false;\n if (this.dataSource.length === data.length) {\n samePoints = true;\n for (var i = 0; i < data.length; i++) {\n if (this.dataSource[i][this.xName] === data[i][this.xName]) {\n var point = this.points[i];\n var existingPoint = this.dataSource[i];\n if ((existingPoint[this.yName] !== data[i][this.yName])) {\n point.y = data[i][this.yName];\n this.dataSource[i] = data[i];\n }\n }\n else {\n samePoints = false;\n break;\n }\n }\n }\n if (!samePoints) {\n this.dataSource = data;\n }\n else {\n this.sumOfPoints = 0;\n this.findSumOfPoints(this.dataSource);\n this.accumulation.redraw = this.borderRadius ? false : this.accumulation.enableAnimation;\n this.accumulation.animateSeries = false;\n var chartDuration = this.accumulation.duration;\n this.accumulation.duration = isNullOrUndefined(duration) ? 500 : duration;\n this.accumulation[(firstToLowerCase(this.type) + 'SeriesModule')].initProperties(this.accumulation, this);\n this.renderPoints(this.accumulation, getElement(this.accumulation.element.id + '_Series_' + this.index), this.accumulation.redraw);\n if (this.accumulation.centerLabel.text) {\n this.accumulation.renderCenterLabel(true, true);\n }\n if (this.accumulation.annotationModule) {\n this.accumulation.annotationModule.renderAnnotations(getElement(this.accumulation.element.id + '_Secondary_Element'));\n }\n if (this.accumulation.accumulationDataLabelModule && this.dataLabel.visible) {\n this.renderDataLabel(this.accumulation, getElement(this.accumulation.element.id + '_datalabel_Series_' + this.index), this.accumulation.redraw);\n }\n this.accumulation.redraw = false;\n this.accumulation.duration = chartDuration;\n }\n };\n /**\n * Adds a data point to the data source for the series.\n *\n * @function addPoint\n * @param {Object} dataPoint - The data point to be added.\n * @param {number} duration – The duration for the animation.\n * @returns {void}\n */\n AccumulationSeries.prototype.addPoint = function (dataPoint, duration) {\n var maxWidth;\n if (this.accumulation.series[0].dataLabel.visible) {\n maxWidth = this.findMaxLabelWidth();\n }\n this.dataSource.push(dataPoint);\n this.resultData = this.dataSource;\n this.sumOfPoints = 0;\n var visiblepoints = [];\n for (var i = 0; i < this.resultData.length; i++) {\n if (this.points[i] && this.points[i].visible) {\n visiblepoints.push(this.resultData[i]);\n }\n else if (i === this.resultData.length - 1) {\n visiblepoints.push(this.resultData[i]);\n }\n }\n this.findSumOfPoints(visiblepoints);\n var pointIndex = this.points.length === 0 ? 0 : this.points[this.points.length - 1].index + 1;\n var colors = this.palettes.length ? this.palettes : getSeriesColor(this.accumulation.theme);\n var point = this.setPoints(this.dataSource, pointIndex, colors, this.accumulation);\n this.pushPoints(point, colors);\n this.accumulation.redraw = this.borderRadius ? false : this.accumulation.enableAnimation;\n var chartDuration = this.accumulation.duration;\n this.accumulation.duration = isNullOrUndefined(duration) ? 500 : duration;\n this.updateSeries(getElement(this.accumulation.element.id + '_Series_' + this.index), maxWidth, 'addPoint');\n this.accumulation.redraw = false;\n this.accumulation.duration = chartDuration;\n };\n /**\n * Removes a data point from the series data source at the specified index.\n *\n * @function removePoint\n * @param {number} index – The index of the data point to be removed from the series.\n * @param {number} duration – The duration for the animation.\n * @returns {void}\n */\n AccumulationSeries.prototype.removePoint = function (index, duration) {\n var dataSource = extend([], this.dataSource, null, true);\n var chartDuration = this.accumulation.duration;\n if (dataSource.length > 0 && index >= 0 && index < dataSource.length) {\n this.sumOfPoints = 0;\n var removepoints = [];\n for (var i = 0; i < this.dataSource.length; i++) {\n if (i !== index && this.points[i] && this.points[i].visible) {\n removepoints.push(this.dataSource[i]);\n }\n }\n dataSource.splice(index, 1);\n this.dataSource.splice(index, 1);\n this.findSumOfPoints(removepoints);\n this.accumulation.redraw = this.borderRadius ? false : this.accumulation.enableAnimation;\n this.accumulation.duration = isNullOrUndefined(duration) ? 500 : duration;\n this.points.splice(index, 1);\n for (var i = index; i < this.points.length; i++) {\n var point = this.points[i];\n point.index = i;\n point.y = this.points[i].y;\n }\n var element = getElement(this.accumulation.element.id + '_Series_0_Point_' + (this.points.length));\n if (element) {\n element.parentNode.removeChild(element);\n }\n this.updateSeries(getElement(this.accumulation.element.id + '_Series_' + this.index), undefined, 'removePoint', index);\n this.accumulation.redraw = false;\n this.accumulation.duration = chartDuration;\n }\n };\n /**\n * Update the series based on addPoint and removePoint function.\n *\n * @param {Element} seriesGroup - Series group needs to be update.\n * @param {number} maxLabelWidth - Specifies the maximum label width.\n * @param {string} updatePoint - Specifies remove or add point.\n * @param {number} index - specifies point index to remove.\n * @returns {void}\n */\n AccumulationSeries.prototype.updateSeries = function (seriesGroup, maxLabelWidth, updatePoint, index) {\n var previousRadius = this.accumulation[(firstToLowerCase(this.type) + 'SeriesModule')].radius;\n var previousCenter = this.accumulation[(firstToLowerCase(this.type) + 'SeriesModule')].center;\n var previousLegendBounds;\n if (this.accumulation.legendSettings.visible) {\n if (updatePoint === 'addPoint') {\n this.accumulation.accumulationLegendModule.\n legendCollections.push(new LegendOptions(this.points[this.points.length - 1].x.toString(), this.points[this.points.length - 1].color, this.legendShape, this.points[this.points.length - 1].visible, this.type, this.points[this.points.length - 1].legendImageUrl, null, null, this.points[this.points.length - 1].index, this.index));\n }\n else {\n this.accumulation.accumulationLegendModule.legendCollections.splice(index, 1);\n for (var i = index; i < this.accumulation.accumulationLegendModule.legendCollections.length; i++) {\n this.accumulation.accumulationLegendModule.legendCollections[i].pointIndex = i;\n }\n }\n if (this.accumulation.accumulationLegendModule.legendCollections.length >= 1) {\n previousLegendBounds = this.accumulation.accumulationLegendModule.legendBounds;\n this.accumulation.accumulationLegendModule.calculateLegendBounds(this.accumulation.initialClipRect, this.accumulation.availableSize, null, previousLegendBounds, true);\n if (this.dataLabel && this.dataLabel.position === 'Outside' && (this.accumulation.legendSettings.position === 'Bottom' || (this.accumulation.legendSettings.position === 'Top')) ? (previousLegendBounds.height !== this.accumulation.accumulationLegendModule.legendBounds.height) : (previousLegendBounds.width !== this.accumulation.accumulationLegendModule.legendBounds.width)) {\n var titleHeight = (this.accumulation.title ? measureText(this.accumulation.title, this.accumulation.titleStyle, this.accumulation.themeStyle.chartTitleFont).height *\n this.accumulation.titleCollection.length : 0);\n var subTitleHeight = (this.accumulation.subTitle ?\n (measureText(this.accumulation.subTitle, this.accumulation.subTitleStyle, this.accumulation.themeStyle.chartSubTitleFont).height *\n this.accumulation.subTitleCollection.length) : 0);\n this.accumulation.initialClipRect = new Rect(this.accumulation.margin.left, this.accumulation.margin.top, this.accumulation.availableSize.width, this.accumulation.availableSize.height);\n subtractRect(this.accumulation.initialClipRect, new Rect(0, (subTitleHeight\n + titleHeight), this.accumulation.margin.right +\n this.accumulation.margin.left, this.accumulation.margin.bottom + this.accumulation.margin.top));\n this.accumulation.accumulationLegendModule.calculateLegendBounds(this.accumulation.initialClipRect, this.accumulation.availableSize, null);\n }\n }\n }\n this.accumulation[(firstToLowerCase(this.type) + 'SeriesModule')].initProperties(this.accumulation, this);\n this.renderPoints(this.accumulation, seriesGroup, this.accumulation.redraw, previousRadius, previousCenter, true);\n if (previousLegendBounds && ((this.accumulation.legendSettings.position === 'Bottom' || (this.accumulation.legendSettings.position === 'Top')) ? (previousLegendBounds.height !== this.accumulation.accumulationLegendModule.legendBounds.height) : (previousLegendBounds.width !== this.accumulation.accumulationLegendModule.legendBounds.width)) && this.accumulation.centerLabel.text) {\n this.accumulation.renderCenterLabel(true, true);\n }\n if (this.accumulation.annotationModule) {\n this.accumulation.annotationModule.renderAnnotations(getElement(this.accumulation.element.id + '_Secondary_Element'));\n }\n if (this.accumulation.accumulationDataLabelModule && this.dataLabel.visible) {\n var datalabelGroup = this.accumulation.renderer.createGroup({ id: this.accumulation.element.id + '_datalabel_Series_' + this.index });\n this.renderDataLabel(this.accumulation, datalabelGroup, this.accumulation.redraw);\n }\n if (this.accumulation.legendSettings.visible) {\n if (this.type === 'Pie') {\n if (this.dataLabel.visible && this.points[this.points.length - 1] && this.points[this.points.length - 1].textSize.width > maxLabelWidth && this.accumulation.legendSettings.position !== 'Top' && this.accumulation.legendSettings.position !== 'Bottom') {\n this.accumulation.visibleSeries[0].findMaxBounds(this.accumulation.visibleSeries[0].labelBound, this.points[this.points.length - 1].labelRegion);\n this.findMaxBounds(this.labelBound, this.accumulationBound);\n this.labelBound.x -= this.accumulation.explodeDistance;\n this.labelBound.y -= this.accumulation.explodeDistance;\n this.labelBound.height += (this.accumulation.explodeDistance - this.labelBound.y);\n this.labelBound.width += (this.accumulation.explodeDistance - this.labelBound.x);\n }\n this.accumulation.accumulationLegendModule.getSmartLegendLocation(this.accumulation.visibleSeries[0].labelBound, this.accumulation.accumulationLegendModule.legendBounds, this.accumulation.margin);\n }\n this.accumulation.accumulationLegendModule.renderLegend(this.accumulation, this.accumulation.legendSettings, this.accumulation.accumulationLegendModule.legendBounds, this.accumulation.redraw, true);\n }\n };\n /**\n * To find point is empty.\n *\n * @param {AccPoints} point - The point to check.\n * @returns {boolean} - True if the point is empty, otherwise false.\n */\n AccumulationSeries.prototype.isEmpty = function (point) {\n return point.color === this.emptyPointSettings.fill;\n };\n __decorate([\n Property('')\n ], AccumulationSeries.prototype, \"dataSource\", void 0);\n __decorate([\n Property()\n ], AccumulationSeries.prototype, \"query\", void 0);\n __decorate([\n Property('')\n ], AccumulationSeries.prototype, \"xName\", void 0);\n __decorate([\n Property('')\n ], AccumulationSeries.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], AccumulationSeries.prototype, \"tooltipMappingName\", void 0);\n __decorate([\n Property('')\n ], AccumulationSeries.prototype, \"yName\", void 0);\n __decorate([\n Property(true)\n ], AccumulationSeries.prototype, \"visible\", void 0);\n __decorate([\n Complex({ color: null, width: 0 }, Border)\n ], AccumulationSeries.prototype, \"border\", void 0);\n __decorate([\n Complex(null, Animation)\n ], AccumulationSeries.prototype, \"animation\", void 0);\n __decorate([\n Property('SeriesType')\n ], AccumulationSeries.prototype, \"legendShape\", void 0);\n __decorate([\n Property('')\n ], AccumulationSeries.prototype, \"legendImageUrl\", void 0);\n __decorate([\n Property('')\n ], AccumulationSeries.prototype, \"pointColorMapping\", void 0);\n __decorate([\n Property(false)\n ], AccumulationSeries.prototype, \"applyPattern\", void 0);\n __decorate([\n Property(null)\n ], AccumulationSeries.prototype, \"selectionStyle\", void 0);\n __decorate([\n Property(null)\n ], AccumulationSeries.prototype, \"groupTo\", void 0);\n __decorate([\n Property('Value')\n ], AccumulationSeries.prototype, \"groupMode\", void 0);\n __decorate([\n Complex({}, AccumulationDataLabelSettings)\n ], AccumulationSeries.prototype, \"dataLabel\", void 0);\n __decorate([\n Property([])\n ], AccumulationSeries.prototype, \"palettes\", void 0);\n __decorate([\n Property(0)\n ], AccumulationSeries.prototype, \"startAngle\", void 0);\n __decorate([\n Property(null)\n ], AccumulationSeries.prototype, \"endAngle\", void 0);\n __decorate([\n Property(null)\n ], AccumulationSeries.prototype, \"radius\", void 0);\n __decorate([\n Property('0')\n ], AccumulationSeries.prototype, \"innerRadius\", void 0);\n __decorate([\n Property('Pie')\n ], AccumulationSeries.prototype, \"type\", void 0);\n __decorate([\n Property(true)\n ], AccumulationSeries.prototype, \"enableTooltip\", void 0);\n __decorate([\n Property(false)\n ], AccumulationSeries.prototype, \"explode\", void 0);\n __decorate([\n Property('30%')\n ], AccumulationSeries.prototype, \"explodeOffset\", void 0);\n __decorate([\n Property(false)\n ], AccumulationSeries.prototype, \"explodeAll\", void 0);\n __decorate([\n Property(null)\n ], AccumulationSeries.prototype, \"explodeIndex\", void 0);\n __decorate([\n Complex({ mode: 'Drop' }, EmptyPointSettings)\n ], AccumulationSeries.prototype, \"emptyPointSettings\", void 0);\n __decorate([\n Property(0)\n ], AccumulationSeries.prototype, \"gapRatio\", void 0);\n __decorate([\n Property('80%')\n ], AccumulationSeries.prototype, \"width\", void 0);\n __decorate([\n Property('80%')\n ], AccumulationSeries.prototype, \"height\", void 0);\n __decorate([\n Property('20%')\n ], AccumulationSeries.prototype, \"neckWidth\", void 0);\n __decorate([\n Property('20%')\n ], AccumulationSeries.prototype, \"neckHeight\", void 0);\n __decorate([\n Property('Linear')\n ], AccumulationSeries.prototype, \"pyramidMode\", void 0);\n __decorate([\n Property(1)\n ], AccumulationSeries.prototype, \"opacity\", void 0);\n __decorate([\n Property('0')\n ], AccumulationSeries.prototype, \"dashArray\", void 0);\n __decorate([\n Property(0)\n ], AccumulationSeries.prototype, \"borderRadius\", void 0);\n return AccumulationSeries;\n}(ChildProperty));\nexport { AccumulationSeries };\n/**\n * method to get series from index.\n *\n * @private\n * @param {number} index - The index of the series to retrieve.\n * @param {AccumulationSeries[]} visibleSeries - The array of visible series in the chart.\n * @returns {AccumulationSeries} - The series retrieved from the specified index.\n */\nexport function getSeriesFromIndex(index, visibleSeries) {\n for (var _i = 0, visibleSeries_1 = visibleSeries; _i < visibleSeries_1.length; _i++) {\n var series = visibleSeries_1[_i];\n if (index === series.index) {\n return series;\n }\n }\n return visibleSeries[0];\n}\n/**\n * method to get point from index.\n *\n * @private\n * @param {number} index - The index of the point to retrieve.\n * @param {AccPoints[]} points - The array of points in the data set.\n * @returns {AccPoints} - The point retrieved from the specified index.\n */\nexport function pointByIndex(index, points) {\n for (var _i = 0, points_1 = points; _i < points_1.length; _i++) {\n var point = points_1[_i];\n if (point.index === index) {\n return point;\n }\n }\n return null;\n}\n","import { Query, DataManager, Deferred } from '@syncfusion/ej2-data';\n/**\n * data module is used to generate query and dataSource\n */\nvar Data = /** @class */ (function () {\n /**\n * Constructor for data module\n *\n * @param dataSource\n * @param query\n * @param dataSource\n * @param query\n * @private\n */\n function Data(dataSource, query) {\n this.initDataManager(dataSource, query);\n }\n /**\n * The function used to initialize dataManager and query\n *\n * @param dataSource\n * @param query\n * @param dataSource\n * @param query\n * @returns {void}\n * @private\n */\n Data.prototype.initDataManager = function (dataSource, query) {\n this.dataManager = dataSource instanceof DataManager ? dataSource : new DataManager(dataSource);\n this.query = query instanceof Query ? query : new Query();\n };\n /**\n * The function used to generate updated Query from chart model\n *\n * @returns {void}\n * @private\n */\n Data.prototype.generateQuery = function () {\n var query = this.query.clone();\n return query;\n };\n /**\n * The function used to get dataSource by executing given Query\n *\n * @param {Query} query - A Query that specifies to generate dataSource\n * @returns {void}\n * @private\n */\n Data.prototype.getData = function (dataQuery) {\n var _this = this;\n if (this.dataManager.ready) {\n var dataManagerDeferred_1 = new Deferred();\n var ready = this.dataManager.ready;\n ready.then(function () {\n _this.dataManager.executeQuery(dataQuery).then(function (result) {\n dataManagerDeferred_1.resolve(result);\n });\n }).catch(function (e) { dataManagerDeferred_1.reject(e); });\n return dataManagerDeferred_1.promise;\n }\n else {\n return this.dataManager.executeQuery(dataQuery);\n }\n };\n return Data;\n}());\nexport { Data };\n","/**\n * Defines the common functionalities of accumulation series\n */\nimport { isNullOrUndefined, Animation, createElement } from '@syncfusion/ej2-base';\nimport { degreeToLocation, getElement, indexFinder, linear } from '../../common/utils/helper';\nimport { pointByIndex } from '../model/acc-base';\n/**\n * The `AccumulationBase` class is used to perform base calculations for accumulation charts.\n *\n * @private\n */\nvar AccumulationBase = /** @class */ (function () {\n /** @private */\n function AccumulationBase(accumulation) {\n this.accumulation = accumulation;\n }\n Object.defineProperty(AccumulationBase.prototype, \"center\", {\n /**\n * Gets the center of the pie.\n *\n * @private\n * @returns {ChartLocation} - The center of the pie.\n */\n get: function () {\n return this.pieCenter || (this.accumulation.visibleSeries[0].type === 'Pie' ?\n this.accumulation.pieSeriesModule.pieBaseCenter : null);\n },\n /**\n * Sets the center of the pie.\n *\n * @private\n * @param {ChartLocation} value - The center point to set.\n */\n set: function (value) {\n this.pieCenter = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AccumulationBase.prototype, \"radius\", {\n /**\n * Gets the radius of the pie.\n *\n * @private\n * @returns {number} - The radius of the pie.\n */\n get: function () {\n return this.pieRadius !== undefined ? this.pieRadius :\n this.accumulation.pieSeriesModule.pieBaseRadius;\n },\n /**\n * Sets the radius of the pie.\n *\n * @private\n * @param {number} value - The radius value to set.\n */\n set: function (value) {\n this.pieRadius = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(AccumulationBase.prototype, \"labelRadius\", {\n /**\n * Gets the label radius of the pie.\n *\n * @private\n * @returns {number} - The label radius of the pie.\n */\n get: function () {\n return this.pieLabelRadius !== undefined ? this.pieLabelRadius :\n this.accumulation.pieSeriesModule.pieBaseLabelRadius;\n },\n /**\n * Sets the label radius of the pie.\n *\n * @private\n * @param {number} value - The label radius value to set.\n */\n set: function (value) {\n this.pieLabelRadius = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Checks whether the series is circular or not.\n *\n * @private\n * @returns {boolean} - True if the series is circular, otherwise false.\n */\n AccumulationBase.prototype.isCircular = function () {\n return this.accumulation.type === 'Pie';\n };\n /**\n * To check various radius pie.\n *\n * @private\n * @returns {boolean} - True if various radius is enabled, otherwise false.\n */\n AccumulationBase.prototype.isVariousRadius = function () {\n return this.accumulation.pieSeriesModule.isRadiusMapped;\n };\n /**\n * To process the explode on accumulation chart loading.\n *\n * @private\n * @param {Event} event - The event triggered during loading.\n * @returns {void}\n */\n AccumulationBase.prototype.processExplode = function (event) {\n if (event.target.id.indexOf('_Series_') > -1 || event.target.id.indexOf('_datalabel_') > -1) {\n var pointIndex = indexFinder(event.target.id).point;\n if (isNaN(pointIndex) || (event.target.id.indexOf('_datalabel_') > -1 &&\n this.accumulation.visibleSeries[0].points[pointIndex].labelPosition === 'Outside')) {\n return null;\n }\n this.explodePoints(pointIndex, this.accumulation);\n this.deExplodeAll(pointIndex, this.accumulation.enableAnimation ? 300 : 0);\n }\n };\n /**\n * To invoke the explode on accumulation chart loading.\n *\n * @private\n * @returns {void}\n */\n AccumulationBase.prototype.invokeExplode = function () {\n var series = this.accumulation.visibleSeries[0];\n var duration = this.accumulation.enableAnimation ? 300 : 0;\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var point = _a[_i];\n if (point.isExplode && point.y !== 0) {\n this.pointExplode(point.index, point, duration);\n }\n }\n if (this.accumulation.accumulationSelectionModule && this.accumulation.selectionMode !== 'None' &&\n this.accumulation.accumulationSelectionModule.selectedDataIndexes.length) {\n for (var _b = 0, _c = this.accumulation.accumulationSelectionModule.selectedDataIndexes; _b < _c.length; _b++) {\n var index = _c[_b];\n this.explodePoints(index.point, this.accumulation, true);\n this.deExplodeAll(index.point, duration);\n }\n }\n };\n /**\n * To deExplode all points in the series.\n *\n * @private\n * @param {number} index - The index of the point to explode.\n * @param {number} animationDuration - The duration of the animation.\n * @returns {void}\n */\n AccumulationBase.prototype.deExplodeAll = function (index, animationDuration) {\n var pointId = this.accumulation.element.id + '_Series_0_Point_';\n var points = this.accumulation.visibleSeries[0].points;\n for (var _i = 0, points_1 = points; _i < points_1.length; _i++) {\n var currentPoint = points_1[_i];\n if ((index !== currentPoint.index && !currentPoint.isSliced) || currentPoint.isClubbed) {\n currentPoint.isExplode = false;\n this.deExplodeSlice(currentPoint.index, pointId, animationDuration);\n }\n }\n };\n /**\n * To explode point by index.\n *\n * @private\n * @param {number} index - The index of the point to explode.\n * @param {AccumulationChart} chart - The accumulation chart control.\n * @param {boolean} explode - Specifies whether to explode the point (default: false).\n * @param {boolean} pointAnimation - Specifies whether the point based animation is enabled.\n * @returns {void}\n */\n AccumulationBase.prototype.explodePoints = function (index, chart, explode, pointAnimation) {\n if (explode === void 0) { explode = false; }\n var series = chart.visibleSeries[0];\n var points = series.points;\n var point = pointByIndex(index, points);\n var explodePoints = true;\n var duration = this.accumulation.enableAnimation ? 300 : 0;\n if (isNullOrUndefined(point)) {\n return null;\n }\n var clubPointsExploded = !explode &&\n (point.isSliced || (series.clubbedPoints.length &&\n points[points.length - 1].index === series.clubbedPoints[series.clubbedPoints.length - 1].index));\n if (series.type === 'Pie' && (clubPointsExploded || point.isClubbed)) {\n explodePoints = this.clubPointExplode(index, point, series, points, chart, duration, clubPointsExploded);\n }\n if (explodePoints && point.y !== 0) {\n this.pointExplode(index, point, duration, explode, pointAnimation);\n }\n };\n AccumulationBase.prototype.getSum = function (points) {\n var total = 0;\n points.map(function (point) {\n total += point.visible ? point.y : 0;\n });\n return total;\n };\n AccumulationBase.prototype.clubPointExplode = function (index, point, series, points, chart, duration, clubPointsExploded) {\n if (clubPointsExploded === void 0) { clubPointsExploded = false; }\n if (point.isClubbed) {\n chart.animateSeries = false;\n points.splice(points.length - 1, 1);\n series.clubbedPoints.map(function (point) {\n point.visible = true;\n point.isExplode = true;\n });\n chart.visibleSeries[0].points = points.concat(series.clubbedPoints);\n this.deExplodeAll(index, duration);\n series.sumOfPoints = this.getSum(chart.visibleSeries[0].points);\n chart.refreshChart();\n return false;\n }\n else if (clubPointsExploded || point.isSliced) {\n chart.animateSeries = false;\n points.splice(points.length - series.clubbedPoints.length, series.clubbedPoints.length);\n var clubPoint = series.generateClubPoint();\n clubPoint.index = points.length;\n clubPoint.color = series.clubbedPoints[0].color;\n points.push(clubPoint);\n series.sumOfPoints = this.getSum(points);\n this.deExplodeAll(index, duration);\n clubPoint.isExplode = false;\n chart.visibleSeries[0].points = points;\n chart.refreshChart();\n this.pointExplode(clubPoint.index, points[clubPoint.index], 0, true);\n clubPoint.isExplode = false;\n this.deExplodeSlice(clubPoint.index, chart.element.id + '_Series_0_Point_', duration);\n if (point.isSliced) {\n return false;\n }\n }\n return true;\n };\n /**\n * To Explode points.\n *\n * @param {number} index - Index of a point.\n * @param {AccPoints} point - To get the point of explode.\n * @param {number} duration - Duration of the explode point.\n * @param {boolean} explode - Either true or false.\n * @param {boolean} pointAnimation - Specifies whether the point based animation is enabled.\n * @returns {void}\n */\n AccumulationBase.prototype.pointExplode = function (index, point, duration, explode, pointAnimation) {\n var translate;\n var pointId = this.accumulation.element.id + '_Series_0_Point_';\n var chart = this.accumulation;\n if (!this.isCircular()) {\n translate = {\n x: ((point.labelRegion && point.labelRegion.x < point.region.x) ? -chart.explodeDistance :\n chart.explodeDistance), y: 0\n };\n }\n else {\n translate = degreeToLocation(point.midAngle, chart.explodeDistance, this.center);\n }\n if (this.isExplode(pointId + index) || explode) {\n point.isExplode = true;\n this.explodeSlice(index, translate, pointId, this.center || { x: 0, y: 0 }, duration, pointAnimation);\n }\n else {\n point.isExplode = false;\n this.deExplodeSlice(index, pointId, duration);\n }\n };\n /**\n * To check point is exploded by id.\n *\n * @param {string} id - The id of the point to check.\n * @returns {boolean} - True if the point is exploded, otherwise false.\n */\n AccumulationBase.prototype.isExplode = function (id) {\n var element = getElement(id);\n var transform = element ? element.getAttribute('transform') : null;\n return (element && (transform === 'translate(0, 0)' || transform === null || transform === 'translate(0)'));\n };\n /**\n * To deExplode the point by index.\n *\n * @param {number} index - The index of the point.\n * @param {string} sliceId - The id of the slice.\n * @param {number} animationDuration - The duration of the animation.\n * @returns {void}\n */\n AccumulationBase.prototype.deExplodeSlice = function (index, sliceId, animationDuration) {\n var element = getElement(sliceId + index);\n var transform = element ? element.getAttribute('transform') : null;\n if (this.accumulation.enableAnimation && element && transform &&\n transform !== 'translate(0, 0)' && transform !== 'translate(0)') {\n var result = transform.split('(')[1].split(')')[0].split(',');\n this.performAnimation(index, sliceId, 0, 0, +result[0], +result[1] || 0, animationDuration, true);\n }\n else {\n this.performAnimation(index, sliceId, 0, 0, 0, 0, animationDuration, true);\n }\n };\n /**\n * To translate the point elements by index and position.\n *\n * @param {number} index - The index of the point.\n * @param {string} sliceId - The id of the slice.\n * @param {string} position - The position to translate the point to.\n * @param {string} transform - The transformation to apply to the point.\n * @returns {void}\n */\n AccumulationBase.prototype.setTranslate = function (index, sliceId, position, transform) {\n this.setElementTransform(sliceId + index, position);\n if (this.accumulation.visibleSeries[0].dataLabel.visible) {\n sliceId = this.accumulation.element.id + '_datalabel_Series_0_';\n this.setElementTransform(sliceId + 'shape_' + index, position);\n this.setElementTransform(sliceId + 'text_' + index, position + transform);\n this.setElementTransform(sliceId + 'connector_' + index, position);\n }\n };\n /**\n * To translate the point element by id and position.\n *\n * @param {string} id - The id of the point element.\n * @param {string} position - The position to translate the point to.\n * @returns {void}\n */\n AccumulationBase.prototype.setElementTransform = function (id, position) {\n var element = getElement(id);\n if (element) {\n element.setAttribute('transform', position);\n }\n };\n /**\n * To translate the point elements by index position.\n *\n * @param {number} index - The index of the point.\n * @param {ChartLocation} translate - The translation values (x, y).\n * @param {string} sliceId - The id of the slice.\n * @param {ChartLocation} center - The center point of the accumulation chart.\n * @param {number} animationDuration - The duration of the animation.\n * @param {boolean} pointAnimation - Specifies whether the point based animation is enabled.\n * @returns {void}\n */\n AccumulationBase.prototype.explodeSlice = function (index, translate, sliceId, center, animationDuration, pointAnimation) {\n if (pointAnimation\n && getElement(this.accumulation.element.id + '_Series_0_Point_' + index).getAttribute('transform')) {\n this.setElementTransform(sliceId + index, \"translate(\" + (translate.x - center.x) + \", \" + (translate.y - center.y) + \")\");\n }\n else {\n this.performAnimation(index, sliceId, 0, 0, translate.x - center.x, translate.y - center.y, animationDuration);\n }\n };\n /**\n * To Perform animation point explode.\n *\n * @param {number} index - Index of the series.\n * @param {string} sliceId - ID of the series.\n * @param {number} startX - X value of start.\n * @param {number} startY - Y value of start.\n * @param {number} endX - X value of end.\n * @param {number} endY - Y value of end.\n * @param {number} duration - Duration of the animation.\n * @param {boolean} isReverse - Duration of the animation.\n * @returns {void}\n */\n AccumulationBase.prototype.performAnimation = function (index, sliceId, startX, startY, endX, endY, duration, isReverse) {\n var _this = this;\n var chart = this.accumulation;\n var values = sliceId.split('_');\n var seriesIndex = parseInt(sliceId.split('_')[values.length - 3], 10);\n var point = chart.visibleSeries[seriesIndex].points[index];\n if (duration <= 0) {\n this.setTranslate(index, sliceId, 'translate(' + (endX) + ', ' + (endY) + ')', point.transform);\n return null;\n }\n var xValue;\n var yValue;\n new Animation({}).animate(createElement('div'), {\n duration: duration,\n progress: function (args) {\n xValue = linear(args.timeStamp, startX, endX, args.duration);\n yValue = linear(args.timeStamp, startY, endY, args.duration);\n _this.setTranslate(index, sliceId, 'translate(' + (isReverse ? endX - xValue : xValue) + ', ' + (isReverse ? endY - yValue : yValue) + ')', point.transform);\n },\n end: function () {\n _this.setTranslate(index, sliceId, 'translate(' + (isReverse ? startX : endX) + ', ' + (isReverse ? startX : endY) + ')', point.transform);\n }\n });\n };\n return AccumulationBase;\n}());\nexport { AccumulationBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * Accumulation charts base file\n */\nimport { Animation, animationMode, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { stringToNumber, ChartLocation, degreeToLocation, getAnimationFunction, getElement } from '../../common/utils/helper';\nimport { Rect } from '@syncfusion/ej2-svg-base';\nimport { animationComplete } from '../../common/model/constants';\nimport { AccumulationBase } from './accumulation-base';\n/**\n * The `PieBase` class is used to perform base calculations for the `Pie` series.\n *\n * @private\n */\nvar PieBase = /** @class */ (function (_super) {\n __extends(PieBase, _super);\n function PieBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * To initialize the property values.\n *\n * @private\n * @param {AccumulationChart} chart - The accumulation chart control.\n * @param {AccumulationSeries} series - The series for which the properties are initialized.\n * @returns {void}\n */\n PieBase.prototype.initProperties = function (chart, series) {\n this.accumulation = chart;\n this.size = Math.min(chart.initialClipRect.width, chart.initialClipRect.height);\n this.initAngles(series);\n var r = parseInt(series.radius, 10);\n if ((series.radius.indexOf('%') !== -1 || typeof r === 'number') && !isNaN(r)) {\n this.isRadiusMapped = false;\n this.pieBaseRadius = stringToNumber(series.radius, this.size / 2);\n this.innerRadius = stringToNumber(series.innerRadius, this.pieBaseRadius);\n this.pieBaseLabelRadius = series.dataLabel.position === 'Inside' ? (((this.pieBaseRadius - this.innerRadius) / 2) + this.innerRadius) :\n (this.pieBaseRadius + stringToNumber(series.dataLabel.connectorStyle.length || '4%', this.size / 2));\n }\n else {\n var radiusCollection = [];\n this.isRadiusMapped = true;\n for (var i = 0; i < Object.keys(series.points).length; i++) {\n if (series.points[i].sliceRadius.indexOf('%') !== -1) {\n radiusCollection[i] = stringToNumber(series.points[i].sliceRadius, this.size / 2);\n }\n else {\n radiusCollection[i] = parseInt(series.points[i].sliceRadius, 10);\n }\n }\n var minRadius = Math.min.apply(null, radiusCollection);\n var maxRadius = Math.max.apply(null, radiusCollection);\n this.pieBaseRadius = this.seriesRadius = maxRadius;\n this.innerRadius = stringToNumber(series.innerRadius, this.seriesRadius);\n this.innerRadius = this.innerRadius > minRadius ? (this.innerRadius / 2) : this.innerRadius;\n }\n // this.radius = stringToNumber(series.radius, size / 2);\n // this.innerRadius = stringToNumber(series.innerRadius, this.radius);\n // this.labelRadius = series.dataLabel.position === 'Inside' ? (((this.radius - this.innerRadius) / 2) + this.innerRadius) :\n // (this.radius + stringToNumber(series.dataLabel.connectorStyle.length || '4%', size / 2));\n this.radius = this.pieBaseRadius;\n this.labelRadius = this.pieBaseLabelRadius;\n chart.explodeDistance = series.explode ? stringToNumber(series.explodeOffset, this.pieBaseRadius) : 0;\n this.findCenter(chart, series);\n this.center = this.pieBaseCenter;\n if (!chart.redraw) {\n this.defaultLabelBound(series, series.dataLabel.visible, series.dataLabel.position);\n }\n this.totalAngle -= 0.001;\n };\n /*\n * To get label radius of the pie.\n * @private\n */\n PieBase.prototype.getLabelRadius = function (series, point) {\n return series.dataLabel.position === 'Inside' ?\n ((((stringToNumber(point.sliceRadius, this.pieBaseRadius) - this.innerRadius)) / 2) + this.innerRadius) :\n (stringToNumber(point.sliceRadius, this.size / 2) + stringToNumber(series.dataLabel.connectorStyle.length || '4%', this.size / 2));\n };\n /**\n * To find the center of the accumulation.\n *\n * @private\n * @param {AccumulationChart} accumulation - The accumulation chart control.\n * @param {AccumulationSeries} series - The series for which the center is calculated.\n * @returns {void}\n */\n PieBase.prototype.findCenter = function (accumulation, series) {\n this.accumulation = accumulation;\n this.pieBaseCenter = {\n x: stringToNumber(accumulation.center.x, accumulation.initialClipRect.width) + (accumulation.initialClipRect.x),\n y: stringToNumber(accumulation.center.y, accumulation.initialClipRect.height) + (accumulation.initialClipRect.y)\n };\n var accumulationRect = this.getSeriesBound(series);\n var accumulationRectCenter = new ChartLocation(accumulationRect.x + accumulationRect.width / 2, accumulationRect.y + accumulationRect.height / 2);\n this.pieBaseCenter.x += (this.pieBaseCenter.x - accumulationRectCenter.x);\n this.pieBaseCenter.y += (this.pieBaseCenter.y - accumulationRectCenter.y);\n this.accumulation.origin = this.pieBaseCenter;\n };\n /**\n * To find angles from series.\n *\n * @param {AccumulationSeries} series - The series for which to calculate angles.\n * @returns {void}\n */\n PieBase.prototype.initAngles = function (series) {\n var endAngle = isNullOrUndefined(series.endAngle) ? series.startAngle : series.endAngle;\n this.totalAngle = (endAngle - series.startAngle) % 360;\n this.startAngle = series.startAngle - 90;\n this.totalAngle = this.totalAngle <= 0 ? (360 + this.totalAngle) : this.totalAngle;\n this.startAngle = (this.startAngle < 0 ? (this.startAngle + 360) : this.startAngle) % 360;\n };\n /**\n * To calculate data-label bound.\n *\n * @private\n * @param {AccumulationSeries} series - The series for which to calculate data-label bounds.\n * @param {boolean} visible - Indicates whether the data-labels are visible.\n * @param {AccumulationLabelPosition} position - The position of the data-labels.\n * @returns {void}\n */\n PieBase.prototype.defaultLabelBound = function (series, visible, position) {\n var accumulationBound = this.getSeriesBound(series);\n series.accumulationBound = accumulationBound;\n series.labelBound = new Rect(accumulationBound.x, accumulationBound.y, accumulationBound.width + accumulationBound.x, accumulationBound.height + accumulationBound.y);\n if (visible && position === 'Outside') {\n series.labelBound = new Rect(Infinity, Infinity, -Infinity, -Infinity);\n }\n };\n /**\n * To calculate series bound.\n *\n * @private\n * @param {AccumulationSeries} series - The series for which to calculate the bound.\n * @returns {Rect} - Returns a rect.\n */\n PieBase.prototype.getSeriesBound = function (series) {\n var rect = new Rect(Infinity, Infinity, -Infinity, -Infinity);\n this.initAngles(series);\n var start = this.startAngle;\n var total = this.totalAngle;\n var end = (this.startAngle + total) % 360;\n end = (end === 0) ? 360 : end;\n series.findMaxBounds(rect, this.getRectFromAngle(start));\n series.findMaxBounds(rect, this.getRectFromAngle(end));\n series.findMaxBounds(rect, new Rect(this.pieBaseCenter.x, this.pieBaseCenter.y, 0, 0));\n var nextQuandrant = (Math.floor(start / 90) * 90 + 90) % 360;\n var lastQuadrant = (Math.floor(end / 90) * 90) % 360;\n lastQuadrant = (lastQuadrant === 0) ? 360 : lastQuadrant;\n if (total >= 90 || lastQuadrant === nextQuandrant) {\n series.findMaxBounds(rect, this.getRectFromAngle(nextQuandrant));\n series.findMaxBounds(rect, this.getRectFromAngle(lastQuadrant));\n }\n if (start === 0 || (start + total >= 360)) {\n series.findMaxBounds(rect, this.getRectFromAngle(0));\n }\n var length = nextQuandrant === lastQuadrant ? 0 : Math.floor(total / 90);\n for (var i = 1; i < length; i++) {\n nextQuandrant = nextQuandrant + 90;\n if ((nextQuandrant < lastQuadrant || end < start) || total === 360) {\n series.findMaxBounds(rect, this.getRectFromAngle(nextQuandrant));\n }\n }\n rect.width -= rect.x;\n rect.height -= rect.y;\n return rect;\n };\n /**\n * To get rect location size from angle.\n *\n * @param {number} angle - The angle in degrees.\n * @returns {Rect} - The rect representing the location size from angle.\n */\n PieBase.prototype.getRectFromAngle = function (angle) {\n var location = degreeToLocation(angle, this.pieBaseRadius, this.pieBaseCenter);\n return new Rect(location.x, location.y, 0, 0);\n };\n /**\n * To get path arc direction.\n *\n * @param {ChartLocation} center - The center coordinates of the arc.\n * @param {number} start - The starting angle of the arc in degrees.\n * @param {number} end - The ending angle of the arc in degrees.\n * @param {number} radius - The radius of the arc.\n * @param {number} innerRadius - The inner radius of the arc.\n * @param {number} borderRadius - The border radius of the arc.\n * @param {boolean} isBorder - It specifies whether it is for rendering a border.\n * @param {AccPoints[]} seriesPoints - The points of the series.\n * @returns {string} - The path string representing the arc direction.\n */\n PieBase.prototype.getPathArc = function (center, start, end, radius, innerRadius, borderRadius, isBorder, seriesPoints) {\n var degree = end - start;\n degree = degree < 0 ? (degree + 360) : degree;\n var flag = (degree < 180) ? 0 : 1;\n if (!innerRadius && innerRadius === 0) {\n return this.getPiePath(center, degreeToLocation(start, radius, center), degreeToLocation(end, radius, center), radius, flag, borderRadius, seriesPoints);\n }\n else {\n return this.getDoughnutPath(center, degreeToLocation(start, radius, center), degreeToLocation(end, radius, center), radius, degreeToLocation(start, innerRadius, center), degreeToLocation(end, innerRadius, center), innerRadius, flag, borderRadius, isBorder, seriesPoints);\n }\n };\n /**\n * To get pie direction.\n *\n * @param {ChartLocation} center - The center of the pie.\n * @param {ChartLocation} start - The starting location of the pie.\n * @param {ChartLocation} end - The ending location of the pie.\n * @param {number} radius - The radius of the pie.\n * @param {number} clockWise - The direction of the pie.\n * @param {number} cornerRadius - The border radius of the arc.\n * @param {AccPoints[]} seriesPoints - The points of the series.\n * @returns {string} - The path direction for the pie.\n */\n PieBase.prototype.getPiePath = function (center, start, end, radius, clockWise, cornerRadius, seriesPoints) {\n var sliceCount = this.sliceCheck(seriesPoints);\n cornerRadius = sliceCount === 1 ? 0 : cornerRadius;\n var startAngle = Math.atan2(start.y - center.y, start.x - center.x);\n var endAngle = Math.atan2(end.y - center.y, end.x - center.x);\n cornerRadius = this.adjustCornerRadius(startAngle, endAngle, radius, cornerRadius);\n var x1 = start.x - cornerRadius * Math.cos(startAngle);\n var y1 = start.y - cornerRadius * Math.sin(startAngle);\n var x2 = end.x - cornerRadius * Math.cos(Math.PI / 2 + endAngle);\n var y2 = end.y - cornerRadius * Math.sin(Math.PI / 2 + endAngle);\n var cx2 = end.x - cornerRadius * Math.cos(endAngle);\n var cy2 = end.y - cornerRadius * Math.sin(endAngle);\n var cx1 = start.x + cornerRadius * Math.cos(Math.PI / 2 + startAngle);\n var cy1 = start.y + cornerRadius * Math.sin(Math.PI / 2 + startAngle);\n return \"M \" + center.x + \" \" + center.y + \" L \" + x1 + \" \" + y1 + \" A \" + cornerRadius + \" \" + cornerRadius + \" 0 0 1 \" + cx1 + \" \" + cy1 + \" A \" + radius + \" \" + radius + \" 0 \" + clockWise + \" 1 \" + x2 + \" \" + y2 + \" A \" + cornerRadius + \" \" + cornerRadius + \" 0 0 1 \" + cx2 + \" \" + cy2 + \" Z\";\n };\n /**\n * To get doughnut direction.\n *\n * @param {ChartLocation} center - The center of the doughnut.\n * @param {ChartLocation} start - The starting location of the outer doughnut.\n * @param {ChartLocation} end - The ending location of the outer doughnut.\n * @param {number} radius - The radius of the outer doughnut.\n * @param {ChartLocation} innerStart - The starting location of the inner doughnut.\n * @param {ChartLocation} innerEnd - The ending location of the inner doughnut.\n * @param {number} innerRadius - The radius of the inner doughnut.\n * @param {number} clockWise - The direction of the doughnut.\n * @param {number} cornerRadius - The border radius of the arc.\n * @param {boolean} isBorder - It specifies whether it is for rendering a border.\n * @param {AccPoints[]} seriesPoints - The points of the series.\n * @returns {string} - The path direction for the doughnut.\n */\n PieBase.prototype.getDoughnutPath = function (center, start, end, radius, innerStart, innerEnd, innerRadius, clockWise, cornerRadius, isBorder, seriesPoints) {\n var sliceCount = this.sliceCheck(seriesPoints);\n cornerRadius = sliceCount === 1 ? 0 : cornerRadius;\n var startAngle = Math.atan2(start.y - innerStart.y, start.x - innerStart.x);\n var endAngle = Math.atan2(end.y - innerEnd.y, end.x - innerEnd.x);\n cornerRadius = this.adjustCornerRadius(startAngle, endAngle, innerRadius, cornerRadius);\n cornerRadius = (isBorder && (this.innerRadius === 0)) ? cornerRadius * -1 : cornerRadius;\n var x1 = start.x - cornerRadius * Math.cos(startAngle);\n var y1 = start.y - cornerRadius * Math.sin(startAngle);\n var x2 = end.x - cornerRadius * Math.cos(Math.PI / 2 + endAngle);\n var y2 = end.y - cornerRadius * Math.sin(Math.PI / 2 + endAngle);\n var x3 = innerEnd.x + cornerRadius * Math.cos(endAngle);\n var y3 = innerEnd.y + cornerRadius * Math.sin(endAngle);\n var x4 = innerStart.x + cornerRadius * Math.cos(Math.PI / 2 + startAngle);\n var y4 = innerStart.y + cornerRadius * Math.sin(Math.PI / 2 + startAngle);\n var cx1 = start.x + cornerRadius * Math.cos(Math.PI / 2 + startAngle);\n var cy1 = start.y + cornerRadius * Math.sin(Math.PI / 2 + startAngle);\n var cx2 = end.x - cornerRadius * Math.cos(endAngle);\n var cy2 = end.y - cornerRadius * Math.sin(endAngle);\n var cx3 = innerEnd.x - cornerRadius * Math.cos(Math.PI / 2 + endAngle);\n var cy3 = innerEnd.y - cornerRadius * Math.sin(Math.PI / 2 + endAngle);\n var cx4 = innerStart.x + cornerRadius * Math.cos(startAngle);\n var cy4 = innerStart.y + cornerRadius * Math.sin(startAngle);\n if (isBorder) {\n return \"M \" + cx1 + \" \" + cy1 + \" A \" + radius + \" \" + radius + \" 0 \" + clockWise + \" 1 \" + x2 + \" \" + y2 + \" L \" + cx3 + \" \" + cy3 + \" A \" + innerRadius + \" \" + innerRadius + \" 0 \" + clockWise + \" 0 \" + x4 + \" \" + y4 + \" Z\";\n }\n else {\n return \"M \" + x1 + \" \" + y1 + \" A \" + cornerRadius + \" \" + cornerRadius + \" 0 0 1 \" + cx1 + \" \" + cy1 + \" A \" + radius + \" \" + radius + \" 0 \" + clockWise + \" 1 \" + x2 + \" \" + y2 + \" A \" + cornerRadius + \" \" + cornerRadius + \" 0 0 1 \" + cx2 + \" \" + cy2 + \" L \" + x3 + \" \" + y3 + \" A \" + cornerRadius + \" \" + cornerRadius + \" 0 0 1 \" + cx3 + \" \" + cy3 + \" A \" + innerRadius + \" \" + innerRadius + \" 0 \" + clockWise + \" 0 \" + x4 + \" \" + y4 + \" A \" + cornerRadius + \" \" + cornerRadius + \" 0 0 1 \" + cx4 + \" \" + cy4 + \" Z\";\n }\n };\n /**\n * Adjusts the corner radius of a pie chart slice based on the angle of the slice.\n * Ensures that the corner radius does not exceed a value that would cause the arcs\n * of the slice to overlap or create an invalid shape.\n *\n * @param {number} startAngle - The start angle of the pie.\n * @param {number} endAngle - The end angle of the pie.\n * @param {number} radius - The radius of the pie.\n * @param {number} cornerRadius - The border radius of the arc.\n * @returns {number} - The adjusted corner radius of the pie.\n */\n PieBase.prototype.adjustCornerRadius = function (startAngle, endAngle, radius, cornerRadius) {\n var anglePerSlice = Math.abs(endAngle - startAngle);\n if (anglePerSlice > Math.PI) {\n anglePerSlice = 2 * Math.PI - anglePerSlice; // Handle large angles that cross the -PI to PI boundary\n }\n // Adjust corner radius based on the angle per slice\n var angleFactor = anglePerSlice / (2 * Math.PI);\n var adjustedCornerRadius = radius * angleFactor;\n return Math.min(cornerRadius, adjustedCornerRadius);\n };\n /**\n * To Check slice count.\n *\n * @param {AccPoints[]} seriesPoints - The points of the series.\n * @returns {number} - The number of visible pie slice.\n */\n PieBase.prototype.sliceCheck = function (seriesPoints) {\n var isOneSlice = 0;\n for (var index = 0; index < seriesPoints.length; index++) {\n var point = seriesPoints[index];\n if (point.visible) {\n isOneSlice++;\n }\n }\n return isOneSlice;\n };\n /**\n * Method to start animation for pie series.\n *\n * @param {Element} slice - The slice element to animate.\n * @param {AccumulationSeries} series - The accumulation chart control.\n * @param {Element} groupElement - The group element containing the pie series.\n * @param {number} borderRadius - The border radius of the arc.\n * @param {AccPoints[]} seriesPoints - The points of the series.\n * @returns {void}\n */\n PieBase.prototype.doAnimation = function (slice, series, groupElement, borderRadius, seriesPoints) {\n var _this = this;\n var startAngle = series.startAngle - 90;\n var duration = this.accumulation.duration ? this.accumulation.duration : series.animation.duration;\n var value;\n this.pieBaseCenter.x += 1;\n var radius = Math.max(this.accumulation.availableSize.height, this.accumulation.availableSize.width) * 0.75;\n radius += radius * (0.414); // formula r + r / 2 * (1.414 -1)\n var effect = getAnimationFunction('Linear'); // need to check animation type\n new Animation({}).animate(slice, {\n duration: (duration === 0 && animationMode === 'Enable') ? 1000 : duration,\n delay: series.animation.delay,\n progress: function (args) {\n value = effect(args.timeStamp, startAngle, _this.totalAngle, args.duration);\n slice.setAttribute('d', _this.getPathArc(_this.pieBaseCenter, startAngle, value, radius, 0, borderRadius, false, seriesPoints));\n },\n end: function () {\n _this.pieBaseCenter.x -= 1;\n slice.setAttribute('d', _this.getPathArc(_this.pieBaseCenter, 0, 359.99999, radius, 0, borderRadius, false, seriesPoints));\n _this.accumulation.trigger(animationComplete, _this.accumulation.isBlazor ? {} :\n { series: series, accumulation: _this.accumulation, chart: _this.accumulation });\n var datalabelGroup = getElement(_this.accumulation.element.id + '_datalabel_Series_' + series.index);\n if (datalabelGroup) {\n datalabelGroup.style.visibility = _this.accumulation.isDestroyed ? 'hidden' : 'visible';\n }\n groupElement.style.cssText = '';\n var annotationElement = getElement(_this.accumulation.element.id + '_Annotation_Collections');\n if (annotationElement) {\n annotationElement.style.visibility = 'visible';\n }\n }\n });\n };\n return PieBase;\n}(AccumulationBase));\nexport { PieBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PathOption } from '@syncfusion/ej2-svg-base';\nimport { degreeToLocation, getElement, linear, stringToNumber, indexFinder } from '../../common/utils/helper';\nimport { PieBase } from '../renderer/pie-base';\nimport { Animation, animationMode, createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * The `PieSeries` module is used to render the `Pie` series.\n */\nvar PieSeries = /** @class */ (function (_super) {\n __extends(PieSeries, _super);\n function PieSeries() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * To get path option, degree, symbolLocation from the point.\n *\n * @private\n * @param {AccPoints} point - The point data.\n * @param {AccumulationSeries} series - The series of the chart.\n * @param {AccumulationChart} chart - The accumulation chart control.\n * @param {PathOption} option - The rendering options for the point.\n * @param {Element} seriesGroup - The group element to contain the series elements.\n * @param {boolean} redraw - Specifies whether to redraw the series.\n * @param {string} previousRadius - Specifies the previous radius of the pie when animating the individual series point.\n * @param {Object[]} previousCenter - Specifies the previous center of the pie when animating the individual series point.\n * @param {boolean} pointAnimation - Specifies whether the point based animation is enabled.\n * @returns {void}\n */\n PieSeries.prototype.renderPoint = function (point, series, chart, option, seriesGroup, redraw, previousRadius, previousCenter, pointAnimation) {\n var sum = series.sumOfPoints;\n var seriesPoints = this.accumulation.visibleSeries[0].points;\n var borderRadius = series.borderRadius;\n point.startAngle = this.startAngle;\n var yValue = point.visible ? point.y : 0;\n var degree = (sum) ? ((Math.abs(yValue) / sum) * (this.totalAngle)) : null;\n var start = Math.PI / 180 * ((90 - (360 - this.startAngle)) - 90);\n this.radius = this.isRadiusMapped ? stringToNumber(point.sliceRadius, this.seriesRadius) : this.radius;\n option.d = this.getPathOption(point, degree, this.startAngle % 360, borderRadius, seriesPoints);\n point.midAngle = (this.startAngle - (degree / 2)) % 360;\n point.endAngle = this.startAngle % 360;\n point.symbolLocation = degreeToLocation(point.midAngle, (this.radius + this.innerRadius) / 2, this.center);\n if (!redraw) {\n var element = chart.renderer.drawPath(option);\n element.setAttribute('role', 'img');\n element.setAttribute('tabindex', point.index === 0 ? '0' : '-1');\n element.setAttribute('aria-label', (point.x + ': ' + point.y + '%. ' + series.name));\n seriesGroup.appendChild(element);\n point.degree = degree;\n point.start = start;\n }\n else {\n var element = chart.renderer.drawPath(option);\n if (!point.isExplode && pointAnimation) {\n element.setAttribute('transform', 'translate(0, 0)');\n }\n element.setAttribute('role', 'img');\n element.setAttribute('tabindex', point.index === 0 ? '0' : '-1');\n element.setAttribute('aria-label', (point.x + ': ' + point.y + '%. ' + series.name));\n if (point.degree === undefined) {\n point.degree = degree;\n point.start = start;\n }\n seriesGroup.appendChild(element);\n this.refresh(point, degree, start, chart, option, borderRadius, seriesPoints, previousRadius, previousCenter, pointAnimation);\n }\n };\n PieSeries.prototype.findSeries = function (e, borderRadius) {\n var borderGap = 3; // Gap between pie/doughnut chart and border\n var width = 2; // width of the border\n var radius = this.innerRadius === 0 ? this.radius + borderGap : this.innerRadius - borderGap;\n var innerRadius = this.innerRadius === 0 ? radius + width : radius - width;\n this.toggleInnerPoint(e, radius, innerRadius, borderRadius);\n };\n PieSeries.prototype.toggleInnerPoint = function (event, radius, innerRadius, borderRadius) {\n var target = event.target;\n var id = indexFinder(target.id, true);\n var accumulationId = event.target.id.substring(0, (event.target.id.indexOf('Series') - 1));\n var borderElement = document.getElementById(this.accumulation.element.id + 'PointHover_Border');\n var createBorderEle;\n var seriesPoints = this.accumulation.visibleSeries[0].points;\n var seriesIndex = id.series;\n var pointIndex = id.point;\n var srcElem = getElement(accumulationId + '_Series_' + seriesIndex + '_Point_' + pointIndex);\n if (!isNaN(id.series) && srcElem) {\n if (!isNullOrUndefined(seriesIndex) && !isNaN(seriesIndex) && !isNullOrUndefined(pointIndex) && !isNaN(pointIndex)) {\n var point = this.accumulation.visibleSeries[0].points[pointIndex];\n var opacity = srcElem.getAttribute('class') === accumulationId + '_ej2_deselected' ?\n this.accumulation.tooltip.enable ? 0.5 : 0.3 : this.accumulation.tooltip.enable ? 0.5 : 1;\n var innerPie = this.getPathArc(this.accumulation.pieSeriesModule.center, point.startAngle % 360, (point.startAngle + point.degree) % 360, radius, innerRadius, borderRadius, true, seriesPoints);\n // while using annotation as a chart border will appear in both chart.so changed checked the id with target id\n if ((borderElement) && (accumulationId === this.accumulation.element.id) &&\n (borderElement.getAttribute('d') !== innerPie || point.isExplode)) {\n borderElement.parentNode.removeChild(borderElement);\n borderElement = null;\n }\n var seriousGroup = getElement(accumulationId + '_Series_' + seriesIndex);\n if (!borderElement && ((!point.isExplode) || (point.isExplode && event.type !== 'click'))) {\n var path = new PathOption(accumulationId + 'PointHover_Border', point.color, 1, point.color, opacity, '', innerPie);\n createBorderEle = this.accumulation.renderer.drawPath(path);\n createBorderEle.removeAttribute('transform');\n if (this.accumulation.selectionMode !== 'None' && event.target.hasAttribute('class')) {\n this.accumulation.accumulationSelectionModule.addSvgClass(createBorderEle, event.target.getAttribute('class'));\n }\n seriousGroup.appendChild(createBorderEle);\n if (point.isExplode && createBorderEle) {\n var borderExplode = srcElem.getAttribute('transform');\n if (borderExplode) {\n createBorderEle.setAttribute('transform', borderExplode);\n }\n }\n }\n }\n }\n else if (borderElement) {\n this.removeBorder(borderElement, 1000);\n borderElement = null;\n }\n };\n PieSeries.prototype.removeBorder = function (borderElement, duration) {\n if (borderElement) {\n setTimeout(function () {\n if (borderElement.parentNode) {\n borderElement.parentNode.removeChild(borderElement);\n }\n }, duration);\n }\n };\n PieSeries.prototype.refresh = function (point, degree, start, chart, option, borderRadius, seriesPoints, previousRadius, previouCenter, pointAnimation) {\n var _this = this;\n var seriesElement = getElement(option.id);\n var duration = chart.duration ? chart.duration : 300;\n new Animation({}).animate(createElement('div'), {\n duration: duration,\n delay: 0,\n progress: function (args) {\n var curentDegree = linear(args.timeStamp, point.degree, (degree - point.degree), args.duration);\n var currentStartAngle = linear(args.timeStamp, point.start, start - point.start, args.duration);\n currentStartAngle = ((currentStartAngle / (Math.PI / 180)) + 360) % 360;\n if (previousRadius && previouCenter) {\n var currentRadius = linear(args.timeStamp, previousRadius, (_this.radius - previousRadius), args.duration);\n var previouCenterx = linear(args.timeStamp, previouCenter.x, (_this.center.x - previouCenter.x), args.duration);\n var previouCentery = linear(args.timeStamp, previouCenter.y, (_this.center.y - previouCenter.y), args.duration);\n seriesElement.setAttribute('d', _this.getPathOption(point, curentDegree, currentStartAngle, borderRadius, seriesPoints, currentRadius, previouCenterx, previouCentery));\n }\n else {\n seriesElement.setAttribute('d', _this.getPathOption(point, curentDegree, currentStartAngle, borderRadius, seriesPoints));\n }\n if (point.isExplode) {\n chart.accBaseModule.explodePoints(point.index, chart, true, pointAnimation);\n }\n seriesElement.style.visibility = 'visible';\n },\n end: function () {\n seriesElement.style.visibility = point.visible ? 'visible' : 'hidden';\n seriesElement.setAttribute('d', option.d);\n point.degree = degree;\n point.start = start;\n }\n });\n };\n /**\n * To get path option from the point.\n *\n * @param {AccPoints} point - The point data.\n * @param {number} degree - The angle of the point.\n * @param {number} startAngle - The start angle of the slice.\n * @param {number} borderRadius - The border radius of the arc.\n * @param {AccPoints[]} seriesPoints - The points of the series.\n * @param {number} previouRadius - The previous radius of the pie.\n * @param {number} previousCenterX - The previous center x of the pie.\n * @param {number} previousCenterY - The previous center y of the pie.\n * @returns {string} - Returns the path option.\n */\n PieSeries.prototype.getPathOption = function (point, degree, startAngle, borderRadius, seriesPoints, previouRadius, previousCenterX, previousCenterY) {\n if (!degree) {\n return '';\n }\n var path = this.getPathArc(previousCenterX ? { x: previousCenterX, y: previousCenterY } : this.center, startAngle % 360, (startAngle + degree) % 360, this.isRadiusMapped ? stringToNumber(point.sliceRadius, this.size / 2) : previouRadius ? previouRadius : this.radius, this.innerRadius, borderRadius, false, seriesPoints);\n //const path: string = this.getPathArc(this.center, startAngle % 360, (startAngle + degree) % 360, this.radius, this.innerRadius);\n this.startAngle += degree;\n return path;\n };\n /**\n * To animate the pie series.\n *\n * @private\n * @param {AccumulationChart} accumulation - The accumulation chart control.\n * @param {AnimationModel} option - The animation options.\n * @param {AccumulationSeries} series - The pie series.\n * @param {Element} slice - The slice element to animate.\n * @param {number} borderRadius - The border radius of the arc.\n * @param {AccPoints[]} seriesPoints - The points of the series.\n * @returns {void}\n */\n PieSeries.prototype.animateSeries = function (accumulation, option, series, slice, borderRadius, seriesPoints) {\n var groupId = accumulation.element.id + 'SeriesGroup' + series.index;\n if (((series.animation.enable && animationMode !== 'Disable') || animationMode === 'Enable') && accumulation.animateSeries) {\n var clippath = accumulation.renderer.createClipPath({ id: groupId + '_clipPath' });\n var path = new PathOption(groupId + '_slice', 'transparent', 1, 'transparent', 1, '', '');\n var clipslice = accumulation.renderer.drawPath(path);\n clippath.appendChild(clipslice);\n accumulation.svgObject.appendChild(clippath);\n // I263828 pie chart animation issue fixed for safari browser\n slice.style.cssText = 'clip-path:url(#' + clippath.id + '); -webkit-clip-path:url(#' + clippath.id + ');';\n this.doAnimation(clipslice, series, slice, borderRadius, seriesPoints);\n }\n };\n /**\n * To get the module name of the Pie series.\n *\n * @returns {string} - Returns the module name.\n */\n PieSeries.prototype.getModuleName = function () {\n return 'PieSeries';\n };\n /**\n * To destroy the pie series.\n *\n * @returns {void}\n * @private\n */\n PieSeries.prototype.destroy = function () {\n /**\n * Destroy method calling here.\n */\n };\n return PieSeries;\n}(PieBase));\nexport { PieSeries };\n","import { print as printWindow, createElement } from '@syncfusion/ej2-base';\nimport { getElement } from '../utils/helper';\nimport { beforePrint } from '../model/constants';\nvar PrintUtils = /** @class */ (function () {\n /**\n * Constructor for chart and accumulation annotation\n *\n * @param control\n */\n function PrintUtils(control) {\n this.control = control;\n }\n /**\n * To print the accumulation and chart elements.\n *\n * @param elements\n */\n PrintUtils.prototype.print = function (elements) {\n this.printWindow = window.open('', 'print', 'height=' + window.outerHeight + ',width=' + window.outerWidth + ',tabbar=no');\n this.printWindow.moveTo(0, 0);\n this.printWindow.resizeTo(screen.availWidth, screen.availHeight);\n var argsData = {\n cancel: false, htmlContent: this.getHTMLContent(elements), name: beforePrint\n };\n this.control.trigger(beforePrint, argsData);\n if (!argsData.cancel) {\n printWindow(argsData.htmlContent, this.printWindow);\n }\n };\n /**\n * To get the html string of the chart and accumulation\n *\n * @param elements\n * @private\n */\n PrintUtils.prototype.getHTMLContent = function (elements) {\n var div = createElement('div');\n if (elements) {\n if (elements instanceof Array) {\n for (var j = 0; j < elements.length; j++) {\n var value = elements[j];\n div.appendChild(getElement(value).cloneNode(true));\n }\n }\n else if (elements instanceof Element) {\n div.appendChild(elements.cloneNode(true));\n }\n else {\n div.appendChild(getElement(elements).cloneNode(true));\n }\n }\n else {\n div.appendChild(this.control.element.cloneNode(true));\n }\n for (var index = 0; index < div.children.length; index++) {\n var backgroundColor = (this.control.theme.indexOf('Dark') > -1 || this.control.theme.indexOf('HighContrast') > -1) ? 'rgba(0, 0, 0, 1)' : 'rgba(255, 255, 255, 1)';\n var svg = div.children[index];\n for (var childIndex = 0; childIndex < svg.children.length; childIndex++) {\n var actualBackgroundColor = void 0;\n var isSVG = false;\n if (svg.id.indexOf('_stockChart_svg') > -1) {\n actualBackgroundColor = svg.children[0].getAttribute('fill');\n isSVG = true;\n }\n else if (svg.children[childIndex].id.indexOf('_svg') > -1) {\n actualBackgroundColor = svg.children[childIndex].children[0].getAttribute('fill');\n isSVG = true;\n }\n if (isSVG) {\n actualBackgroundColor = actualBackgroundColor === 'transparent' ? backgroundColor : actualBackgroundColor;\n svg.children[childIndex].children[0].setAttribute('fill', actualBackgroundColor);\n }\n }\n div[index] = svg;\n }\n return div;\n };\n return PrintUtils;\n}());\nexport { PrintUtils };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/**\n * AccumulationChart file\n */\nimport { Property, Component, Complex, Collection, NotifyPropertyChanges, animationMode } from '@syncfusion/ej2-base';\nimport { Internationalization, Event, Browser, EventHandler, Touch } from '@syncfusion/ej2-base';\nimport { remove, extend, isNullOrUndefined, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { Font, Margin, Border, TooltipSettings, CenterLabel, Indexes } from '../common/model/base';\nimport { AccumulationSeries, PieCenter } from './model/acc-base';\nimport { getThemeColor } from '../common/model/theme';\nimport { load, pointClick } from '../common/model/constants';\nimport { pointMove, chartDoubleClick, chartMouseClick, chartMouseDown } from '../common/model/constants';\nimport { chartMouseLeave, chartMouseMove, chartMouseUp, resized, beforeResize } from '../common/model/constants';\nimport { LegendSettings } from '../common/legend/legend';\nimport { subtractRect, indexFinder, appendChildElement, redrawElement, blazorTemplatesReset, getTextAnchor, stringToNumber, textWrap } from '../common/utils/helper';\nimport { RectOption, showTooltip, ImageOption } from '../common/utils/helper';\nimport { textElement, createSvg, calculateSize, removeElement, firstToLowerCase, withInBounds } from '../common/utils/helper';\nimport { getElement, titlePositionX } from '../common/utils/helper';\nimport { Rect, Size, measureText, TextOption } from '@syncfusion/ej2-svg-base';\nimport { Data } from '../common/model/data';\nimport { AccumulationBase } from './renderer/accumulation-base';\nimport { PieSeries } from './renderer/pie-series';\nimport { AccumulationAnnotationSettings } from './model/acc-base';\nimport { getTitle, AccPointData } from '../common/utils/helper';\nimport { Animation } from '@syncfusion/ej2-base';\nimport { PrintUtils } from '../common/utils/print';\n/**\n * Represents the AccumulationChart control.\n * ```html\n *
\n * \n * ```\n *\n * @public\n */\nvar AccumulationChart = /** @class */ (function (_super) {\n __extends(AccumulationChart, _super);\n /**\n * Constructor for creating the AccumulationChart widget.\n *\n * @private\n * @param {AccumulationChartModel} options - Specifies the accumulation chart model.\n * @param {string | HTMLElement} element - Specifies the element for the accumulation chart.\n */\n function AccumulationChart(options, element) {\n var _this = _super.call(this, options, element) || this;\n /** @private */\n _this.animateselected = false;\n /** @private */\n _this.explodeDistance = 0;\n /** @private */\n _this.currentLegendIndex = 0;\n /** @private */\n _this.currentPointIndex = 0;\n /** @private */\n _this.previousTargetId = '';\n /** @private */\n _this.isLegendClicked = false;\n _this.chartid = 57724;\n return _this;\n }\n /**\n * Animate the series bounds on data change.\n *\n * @private\n * @param {number} duration - The duration of the animation.\n * @returns {void}\n */\n AccumulationChart.prototype.animate = function (duration) {\n this.duration = (duration === 0 && animationMode === 'Enable') ? 700 : duration;\n this.animateselected = true;\n this.animateSeries = false;\n var temIndex = 0;\n var tempcolor = [];\n var tempindex = [];\n var tempindex1 = [];\n var currentSeries = this.visibleSeries[0];\n var datasource = [];\n datasource = currentSeries.dataSource;\n currentSeries.sumOfPoints = 0;\n if (currentSeries.points.length < Object.keys(currentSeries.dataSource).length) {\n this.refresh();\n }\n else if (currentSeries.points.length > Object.keys(currentSeries.dataSource).length) {\n var currentSeries_1 = this.visibleSeries[0];\n currentSeries_1.points = currentSeries_1.points.filter(function (entry1) {\n entry1.visible = false;\n tempindex.push(entry1.index);\n tempcolor.push(entry1.color);\n return (datasource).some(function (entry2) {\n var accPoint = entry2;\n if (entry1.x === accPoint.x) {\n entry1.visible = true;\n tempindex1.push(entry1.index);\n entry1.index = temIndex;\n temIndex++;\n }\n return entry1.x === accPoint.x;\n });\n });\n var missing = tempindex.filter(function (item) { return tempindex1.indexOf(item) < 0; });\n var interval = tempindex.length - missing.length;\n for (var i = (tempindex.length - 1); i >= interval; i--) {\n removeElement('container_Series_0_Point_' + tempindex[i]);\n }\n for (var i = 0; i < currentSeries_1.points.length; i++) {\n currentSeries_1.points[i].y = currentSeries_1.dataSource[i].y;\n currentSeries_1.points[i].color = tempcolor[i];\n currentSeries_1.sumOfPoints += currentSeries_1.dataSource[i].y;\n }\n this.redraw = this.enableAnimation;\n this.animateSeries = false;\n this.calculateBounds();\n this.renderElements();\n }\n else {\n for (var i = 0; i < currentSeries.points.length; i++) {\n currentSeries.points[i].y = currentSeries.dataSource[i][currentSeries.yName];\n currentSeries.points[i].color = currentSeries.dataSource[i][currentSeries.pointColorMapping] != null\n ? currentSeries.dataSource[i][currentSeries.pointColorMapping] : currentSeries.points[i].color;\n currentSeries.sumOfPoints += currentSeries.dataSource[i][currentSeries.yName];\n }\n this.redraw = this.enableAnimation;\n this.animateSeries = false;\n this.removeSvg();\n this.refreshPoints(currentSeries.points);\n this.renderElements();\n }\n };\n Object.defineProperty(AccumulationChart.prototype, \"type\", {\n /**\n * Gets the type of accumulation chart.\n *\n * @returns {AccumulationType} - The type of accumulation chart.\n * @private\n * */\n get: function () {\n if (this.series && this.series.length) {\n return this.series[0].type;\n }\n return 'Pie';\n },\n enumerable: true,\n configurable: true\n });\n // accumulation chart methods.\n /**\n * To create svg object, renderer and binding events for the container.\n *\n * @returns {void}\n */\n AccumulationChart.prototype.preRender = function () {\n var blazor = 'Blazor';\n this.isBlazor = window[blazor];\n this.allowServerDataBinding = false;\n this.unWireEvents();\n this.setCulture();\n this.animateSeries = true;\n if (this.element.id === '') {\n var collection = document.getElementsByClassName('e-accumulationchart').length;\n this.element.id = 'acc_chart_' + this.chartid + '_' + collection;\n }\n this.wireEvents();\n this.element.setAttribute('dir', this.enableRtl ? 'rtl' : 'ltr');\n };\n /**\n * Themeing for chart goes here.\n *\n * @returns {void}\n */\n AccumulationChart.prototype.setTheme = function () {\n /** Set theme for accumulation chart */\n this.themeStyle = getThemeColor(this.theme, false, this);\n };\n /**\n * To render the accumulation chart elements.\n *\n * @returns {void}\n */\n AccumulationChart.prototype.render = function () {\n var _this = this;\n if (this.element.className.indexOf('e-accumulationchart') === -1) {\n this.element.classList.add('e-accumulationchart');\n }\n this.element.setAttribute('role', 'region');\n this.element.setAttribute('tabindex', '0');\n this.element.setAttribute('aria-label', this.title + '. Syncfusion interactive chart.');\n this.element.setAttribute('class', this.element.getAttribute('class') + ' e-accumulationchart-focused');\n var loadEventData = {\n chart: this.isBlazor ? {} : this,\n accumulation: this.isBlazor ? {} : this,\n theme: this.theme, name: load, cancel: false\n };\n this.trigger(load, loadEventData, function () {\n _this.theme = _this.isBlazor ? loadEventData.theme : _this.theme;\n _this.setTheme();\n _this.accBaseModule = new AccumulationBase(_this);\n _this.pieSeriesModule = new PieSeries(_this);\n _this.calculateVisibleSeries();\n _this.processData();\n _this.renderComplete();\n _this.allowServerDataBinding = true;\n });\n };\n /**\n * Method to unbind events for accumulation chart.\n *\n * @returns {void}\n */\n AccumulationChart.prototype.unWireEvents = function () {\n /** Find the Events type */\n var isIE11Pointer = Browser.isPointer;\n var start = Browser.touchStartEvent;\n var move = Browser.touchMoveEvent;\n var stop = Browser.touchEndEvent;\n var cancel = isIE11Pointer ? 'pointerleave' : 'mouseleave';\n /** UnBind the Event handler */\n EventHandler.remove(this.element, move, this.accumulationMouseMove);\n EventHandler.remove(this.element, stop, this.accumulationMouseEnd);\n EventHandler.remove(this.element, start, this.accumulationMouseStart);\n EventHandler.remove(this.element, 'click', this.accumulationOnMouseClick);\n EventHandler.remove(this.element, 'dblclick', this.accumulationOnDoubleClick);\n EventHandler.remove(this.element, 'contextmenu', this.accumulationRightClick);\n EventHandler.remove(this.element, cancel, this.accumulationMouseLeave);\n EventHandler.remove(this.element, 'keydown', this.accumulationChartKeyDown);\n EventHandler.remove(document.body, 'keydown', this.documentKeyHandler);\n EventHandler.remove(this.element, 'keyup', this.accumulationChartKeyUp);\n window.removeEventListener((Browser.isTouch && ('orientation' in window && 'onorientationchange' in window)) ? 'orientationchange' : 'resize', this.accumulationResizeBound);\n };\n /**\n * Method to bind events for the accumulation chart.\n *\n * @returns {void}\n */\n AccumulationChart.prototype.wireEvents = function () {\n /**\n * To fix react timeout destroy issue.\n */\n if (!this.element) {\n return;\n }\n /** Find the Events type */\n var isIE11Pointer = Browser.isPointer;\n var start = Browser.touchStartEvent;\n var stop = Browser.touchEndEvent;\n var move = Browser.touchMoveEvent;\n var cancel = isIE11Pointer ? 'pointerleave' : 'mouseleave';\n /** Bind the Event handler */\n EventHandler.add(this.element, move, this.accumulationMouseMove, this);\n EventHandler.add(this.element, stop, this.accumulationMouseEnd, this);\n EventHandler.add(this.element, start, this.accumulationMouseStart, this);\n EventHandler.add(this.element, 'click', this.accumulationOnMouseClick, this);\n EventHandler.add(this.element, 'dblclick', this.accumulationOnDoubleClick, this);\n EventHandler.add(this.element, 'contextmenu', this.accumulationRightClick, this);\n EventHandler.add(this.element, cancel, this.accumulationMouseLeave, this);\n EventHandler.add(this.element, 'keydown', this.accumulationChartKeyDown, this);\n EventHandler.add(document.body, 'keydown', this.documentKeyHandler, this);\n EventHandler.add(this.element, 'keyup', this.accumulationChartKeyUp, this);\n this.accumulationResizeBound = this.accumulationResize.bind(this);\n window.addEventListener((Browser.isTouch && ('orientation' in window && 'onorientationchange' in window)) ? 'orientationchange' : 'resize', this.accumulationResizeBound);\n new Touch(this.element); // To avoid geasture blocking for browser\n /** Apply the style for chart */\n this.setStyle(this.element);\n };\n /**\n * Method to set mouse x, y from events.\n *\n * @param {PointerEvent} e - The pointer event containing mouse coordinates.\n * @returns {void}\n */\n AccumulationChart.prototype.setMouseXY = function (e) {\n var pageX;\n var pageY;\n var svgRectElement = getElement(this.element.id + '_svg');\n if (svgRectElement && this.element) {\n var svgRect = svgRectElement.getBoundingClientRect();\n var rect = this.element.getBoundingClientRect();\n if (e.type.indexOf('touch') > -1) {\n this.isTouch = true;\n var touchArg = e;\n pageY = touchArg.changedTouches[0].clientY;\n pageX = touchArg.changedTouches[0].clientX;\n }\n else {\n this.isTouch = e.pointerType === 'touch' || e.pointerType === '2';\n pageX = e.clientX;\n pageY = e.clientY;\n }\n this.mouseY = (pageY - rect.top) - Math.max(svgRect.top - rect.top, 0);\n this.mouseX = (pageX - rect.left) - Math.max(svgRect.left - rect.left, 0);\n }\n };\n /**\n * Handles the mouse end.\n *\n * @param {PointerEvent} e - The pointer event containing mouse coordinates.\n * @returns {boolean} - Mouse end of accumulation chart.\n * @private\n */\n AccumulationChart.prototype.accumulationMouseEnd = function (e) {\n this.setMouseXY(e);\n this.trigger(chartMouseUp, { target: e.target.id, x: this.mouseX, y: this.mouseY });\n if (this.isTouch) {\n this.titleTooltip(e, this.mouseX, this.mouseY, this.isTouch);\n if (this.accumulationDataLabelModule && this.visibleSeries[0].dataLabel.visible) {\n this.accumulationDataLabelModule.move(e, this.mouseX, this.mouseY, this.isTouch);\n }\n if (this.accumulationLegendModule && this.legendSettings.visible) {\n this.accumulationLegendModule.move(e);\n }\n }\n if (this.centerLabel.hoverTextFormat) {\n this.updateCenterLabel(e);\n }\n this.notify(Browser.touchEndEvent, e);\n return false;\n };\n /*public removeSvgOffset(x: number, y: number): ChartLocation {\n let rect: ClientRect = this.element.getBoundingClientRect();\n let svgRect: ClientRect = getElement(this.element.id + '_svg').getBoundingClientRect();\n return { x: (x - rect.left) - Math.max(svgRect.left - rect.left, 0), y: (y - rect.top) - Math.max(svgRect.top - rect.top, 0)};\n }*/\n /**\n * Handles the mouse start.\n *\n * @param {PointerEvent} e - The pointer event containing mouse coordinates.\n * @returns {boolean} - Mouse start of accumulation chart.\n * @private\n */\n AccumulationChart.prototype.accumulationMouseStart = function (e) {\n this.setMouseXY(e);\n this.trigger(chartMouseDown, { target: e.target.id, x: this.mouseX, y: this.mouseY });\n return false;\n };\n /**\n * Handles the accumulation chart resize.\n *\n * @returns {boolean} - Resize method of accumulation chart.\n * @private\n */\n AccumulationChart.prototype.accumulationResize = function () {\n var _this = this;\n this.animateSeries = false;\n var args = {\n accumulation: this.isBlazor ? {} : this,\n previousSize: new Size(this.availableSize.width, this.availableSize.height),\n name: resized,\n currentSize: new Size(0, 0),\n chart: this.isBlazor ? {} : this\n };\n var beforeResizeArgs = { name: 'beforeResize', cancelResizedEvent: false };\n if (this.resizeTo) {\n clearTimeout(this.resizeTo);\n }\n this.trigger(beforeResize, beforeResizeArgs);\n if (!beforeResizeArgs.cancelResizedEvent) {\n this.resizeTo = +setTimeout(function () {\n if (_this.isDestroyed) {\n clearTimeout(_this.resizeTo);\n return;\n }\n calculateSize(_this);\n args.currentSize = _this.availableSize;\n _this.trigger(resized, args);\n _this.refreshSeries();\n _this.refreshChart();\n }, 500);\n }\n return false;\n };\n /**\n * Handles the print method for accumulation chart control.\n *\n * @param {string[] | string | Element} id - The id of the accumulation chart to be printed on the page.\n * @returns {void}\n */\n AccumulationChart.prototype.print = function (id) {\n // To handle the print funtion in IE and Edge browsers\n var clippath = document.getElementById(this.element.id + '_Series_0').style.clipPath;\n document.getElementById(this.element.id + '_Series_0').style.clipPath = '';\n var exportChart = new PrintUtils(this);\n exportChart.print(id);\n document.getElementById(this.element.id + '_Series_0').style.clipPath = clippath;\n };\n /**\n * Export method for the chart.\n *\n * @param {ExportType} type - The type of export.\n * @param {string} fileName - The name of the file for export.\n * @returns {void}\n */\n AccumulationChart.prototype.export = function (type, fileName) {\n if (this.exportModule) {\n this.exportModule.export(type, fileName);\n if (this.afterExport) {\n this.exportModule.getDataUrl(this);\n }\n }\n };\n /**\n * Applying styles for accumulation chart element.\n *\n * @param {HTMLElement} element - Specifies the element.\n * @returns {void}\n */\n AccumulationChart.prototype.setStyle = function (element) {\n element.style.touchAction = 'element';\n element.style.msTouchAction = 'element';\n element.style.msContentZooming = 'none';\n element.style.msUserSelect = 'none';\n element.style.webkitUserSelect = 'none';\n element.style.position = 'relative';\n element.style.display = 'block';\n element.style.height = (element.style.height || (this.height && this.height.indexOf('%') === -1)) ? element.style.height : 'inherit';\n var tabColor = '';\n switch (this.theme) {\n case 'HighContrastLight':\n case 'HighContrast':\n tabColor = '#969696';\n break;\n case 'MaterialDark':\n case 'FabricDark':\n case 'Bootstrap':\n case 'Bootstrap4':\n tabColor = '#66afe9';\n break;\n case 'Tailwind':\n case 'TailwindDark':\n tabColor = '#4f46e5';\n break;\n case 'Bootstrap5':\n case 'Bootstrap5Dark':\n tabColor = '#0d6efd';\n break;\n case 'Fluent':\n case 'FluentDark':\n tabColor = '#9e9e9e';\n break;\n case 'Fluent2':\n case 'Fluent2Dark':\n case 'Fluent2HighContrast':\n tabColor = '#0078D4';\n break;\n default:\n tabColor = '#9e9e9e';\n break;\n }\n var style = document.createElement('style');\n style.setAttribute('id', element.id + 'Keyboard_accumulationchart_focus');\n style.innerText = '.e-accumulationchart-focused:focus,path[id*=_Series_0_Point_]:focus, text[id*=_title]:focus' +\n '{outline: none} .e-accumulationchart-focused:focus-visible,path[id*=_Series_0_Point_]:focus-visible, text[id*=_title]:focus-visible' +\n '{outline: 1.5px ' + tabColor + ' solid}';\n document.body.appendChild(style);\n };\n /**\n * Method to set the annotation content dynamically for accumulation.\n *\n * @param {number} annotationIndex - The index of the annotation.\n * @param {string} content - The content to set for the annotation.\n * @returns {void}\n */\n AccumulationChart.prototype.setAnnotationValue = function (annotationIndex, content) {\n var annotation = this.annotations[annotationIndex];\n var element;\n var parentNode = getElement(this.element.id + '_Annotation_Collections');\n if (content) {\n annotation.content = content;\n if (parentNode) {\n element = this.createElement('div');\n removeElement(this.element.id + '_Annotation_' + annotationIndex);\n this.annotationModule.processAnnotation(annotation, annotationIndex, element);\n parentNode.appendChild(element.children[0]);\n }\n else {\n this.annotationModule.renderAnnotations(getElement(this.element.id + '_Secondary_Element'));\n }\n }\n };\n /**\n * Handles the mouse move on accumulation chart.\n *\n * @param {PointerEvent} e - The pointer event containing mouse coordinates.\n * @returns {boolean} - Mouse move of accumulation chart.\n * @private\n */\n AccumulationChart.prototype.accumulationMouseMove = function (e) {\n if (!getElement(this.element.id + '_svg')) {\n return false;\n }\n this.setMouseXY(e);\n this.trigger(chartMouseMove, { target: e.target.id, x: this.mouseX, y: this.mouseY });\n if (this.pointMove) {\n this.triggerPointEvent(pointMove, e.target, e);\n }\n if (this.accumulationLegendModule && this.legendSettings.visible) {\n this.accumulationLegendModule.move(e);\n }\n if (this.accumulationDataLabelModule && this.visibleSeries[0] && this.visibleSeries[0].dataLabel.visible) {\n this.accumulationDataLabelModule.move(e, this.mouseX, this.mouseY);\n }\n if (this.centerLabel.hoverTextFormat) {\n this.updateCenterLabel(e);\n }\n if (!this.isTouch) {\n this.titleTooltip(e, this.mouseX, this.mouseY);\n }\n if (this.enableBorderOnMouseMove && this.type === 'Pie' && this.pieSeriesModule &&\n withInBounds(this.mouseX, this.mouseY, this.initialClipRect)) {\n this.pieSeriesModule.findSeries(e, this.series[0].borderRadius);\n }\n this.notify(Browser.touchMoveEvent, e);\n return false;\n };\n AccumulationChart.prototype.titleTooltip = function (event, x, y, isTouch) {\n var targetId = event.target.id;\n var id = (targetId === (this.element.id + '_title') || targetId === (this.element.id + '_subTitle') ||\n targetId === (this.element.id + '_chart_legend_title'));\n if ((event.target.textContent.indexOf('...') > -1) && id) {\n var title = (targetId === (this.element.id + '_title')) ?\n this.title : (targetId === (this.element.id + '_subTitle')) ? this.subTitle : this.legendSettings.title;\n showTooltip(title, x, y, this.element.offsetWidth, this.element.id + '_EJ2_Title_Tooltip', getElement(this.element.id + '_Secondary_Element'), isTouch);\n }\n else {\n removeElement(this.element.id + '_EJ2_Title_Tooltip');\n }\n };\n /**\n * Handles the keyboard onkeydown on chart.\n *\n * @param {KeyboardEvent} e - The keyboard event.\n * @returns {boolean} - false\n * @private\n */\n AccumulationChart.prototype.accumulationChartKeyDown = function (e) {\n var actionKey = '';\n if (this.tooltip.enable && ((e.code === 'Tab' && this.previousTargetId.indexOf('Series') > -1) || e.code === 'Escape')) {\n actionKey = 'ESC';\n }\n if (e.code.indexOf('Arrow') > -1) {\n e.preventDefault();\n }\n if (e.ctrlKey && (e.key === 'p')) {\n e.preventDefault();\n actionKey = 'CtrlP';\n }\n if (actionKey !== '') {\n this.chartKeyboardNavigations(e, e.target.id, actionKey);\n }\n return false;\n };\n /**\n * Handles the keyboard onkeydown on chart.\n *\n * @param {KeyboardEvent} e - The keyboard event.\n * @returns {boolean} - false\n * @private\n */\n AccumulationChart.prototype.accumulationChartKeyUp = function (e) {\n var actionKey = '';\n var targetId = e.target['id'];\n var legendElement = getElement(this.element.id + '_chart_legend_translate_g');\n var pagingElement = getElement(this.element.id + '_chart_legend_pageup');\n if (legendElement) {\n var firstChild = legendElement.firstElementChild;\n var className = firstChild.getAttribute('class');\n if (className && className.indexOf('e-accumulationchart-focused') === -1) {\n className = className + ' e-accumulationchart-focused';\n }\n else if (!className) {\n className = 'e-accumulationchart-focused';\n }\n firstChild.setAttribute('class', className);\n }\n if (pagingElement) {\n pagingElement.setAttribute('class', 'e-accumulationchart-focused');\n }\n if (e.code === 'Tab') {\n if (this.previousTargetId !== '') {\n if (this.previousTargetId.indexOf('_Point_') > -1 && targetId.indexOf('_Point_') === -1) {\n var groupElement = document.getElementById(this.previousTargetId).parentElement;\n this.setTabIndex(groupElement.children[this.currentPointIndex], groupElement.firstElementChild);\n this.currentPointIndex = 0;\n }\n else if (this.previousTargetId.indexOf('_chart_legend_page') > -1 && targetId.indexOf('_chart_legend_page') === -1 &&\n targetId.indexOf('_chart_legend_g_') === -1) {\n this.setTabIndex(e.target, pagingElement);\n }\n else if (this.previousTargetId.indexOf('_chart_legend_g_') > -1 && targetId.indexOf('chart_legend_g_') === -1) {\n this.setTabIndex(legendElement.children[this.currentLegendIndex], legendElement.firstElementChild);\n }\n }\n this.previousTargetId = targetId;\n if (targetId.indexOf('_chart_legend_g_') > -1 && this.highlightMode !== 'None') {\n targetId = e.target['lastElementChild'].id;\n actionKey = 'Tab';\n }\n else if (targetId.indexOf('_Point_') > -1 && (this.highlightMode !== 'None' || this.tooltip.enable)) {\n actionKey = 'Tab';\n }\n }\n else if (e.code.indexOf('Arrow') > -1) {\n e.preventDefault();\n if (targetId.indexOf('_chart_legend_page') > -1) {\n e.target.removeAttribute('tabindex');\n this.previousTargetId = targetId = this.element.id + '_chart_legend_page' + (e.code === 'ArrowRight' ? 'up' : 'down');\n this.focusTarget(getElement(targetId));\n }\n else if ((targetId.indexOf('_chart_legend_') > -1)) {\n e.target.removeAttribute('tabindex');\n this.currentLegendIndex += (e.code === 'ArrowUp' || e.code === 'ArrowRight') ? +1 : -1;\n this.currentLegendIndex = this.getActualIndex(this.currentLegendIndex, legendElement.children.length);\n var currentLegend = legendElement.children[this.currentLegendIndex];\n this.focusTarget(currentLegend);\n this.previousTargetId = targetId = currentLegend.lastElementChild.id;\n actionKey = this.highlightMode !== 'None' ? 'ArrowMove' : '';\n }\n else if (targetId.indexOf('_Point_') > -1) {\n e.target.setAttribute('tabindex', '-1');\n this.currentPointIndex += (e.code === 'ArrowUp' || e.code === 'ArrowRight') ? +1 : -1;\n var totalLength = 0;\n for (var i = 0; i < e.target['parentElement'].children.length; i++) {\n totalLength = e.target['parentElement'].children[i].id.indexOf('_Point_') > -1 ? totalLength + 1 : totalLength;\n }\n this.currentPointIndex = this.getActualIndex(this.currentPointIndex, totalLength);\n targetId = this.element.id + '_Series_0_Point_' + this.currentPointIndex;\n this.focusTarget(getElement(targetId));\n actionKey = this.tooltip.enable ? 'ArrowMove' : '';\n }\n }\n else if ((e.code === 'Enter' || e.code === 'Space') && ((targetId.indexOf('_chart_legend_') > -1) ||\n (targetId.indexOf('_Point_') > -1))) {\n targetId = (targetId.indexOf('_chart_legend_g') > -1) ? e.target['lastElementChild'].id : targetId;\n actionKey = 'Enter';\n }\n if (actionKey !== '') {\n this.chartKeyboardNavigations(e, targetId, actionKey);\n }\n return false;\n };\n AccumulationChart.prototype.setTabIndex = function (previousElement, currentElement) {\n if (previousElement) {\n previousElement.removeAttribute('tabindex');\n }\n if (currentElement) {\n currentElement.setAttribute('tabindex', '0');\n }\n };\n AccumulationChart.prototype.getActualIndex = function (index, totalLength) {\n return index > totalLength - 1 ? 0 : (index < 0 ? totalLength - 1 : index);\n };\n AccumulationChart.prototype.focusTarget = function (element) {\n var className = element.getAttribute('class');\n element.setAttribute('tabindex', '0');\n if (className && className.indexOf('e-accumulationchart-focused') === -1) {\n className = className + ' e-accumulationchart-focused';\n }\n else if (!className) {\n className = 'e-accumulationchart-focused';\n }\n element.setAttribute('tabindex', '0');\n element.setAttribute('class', className);\n element.focus();\n return element.id;\n };\n /**\n * Handles the document onkey.\n *\n * @param {KeyboardEvent} e - The keyboard event.\n * @returns {void}\n * @private\n */\n AccumulationChart.prototype.documentKeyHandler = function (e) {\n // 74 - J\n if (e.altKey && e.keyCode === 74 && !isNullOrUndefined(this.element)) {\n this.element.focus();\n }\n };\n AccumulationChart.prototype.chartKeyboardNavigations = function (e, targetId, actionKey) {\n this.isLegendClicked = false;\n switch (actionKey) {\n case 'Tab':\n case 'ArrowMove':\n if (this.accumulationHighlightModule) {\n // this.accumulationHighlightModule.removeHighlightElements();\n }\n if (targetId.indexOf('_Point_') > -1) {\n var seriesIndex = +(targetId.split('_Series_')[1].split('_Point_')[0]);\n var pointIndex = +(targetId.split('_Series_')[1].replace('_Symbol', '').split('_Point_')[1]);\n var pointRegion = this.visibleSeries[seriesIndex].points[pointIndex].symbolLocation;\n this.mouseX = pointRegion.x + this.initialClipRect.x;\n this.mouseY = pointRegion.y + this.initialClipRect.y;\n if (this.accumulationHighlightModule) {\n var targetElement = getElement(targetId);\n if (!isNullOrUndefined(targetElement)) {\n if (targetElement.id.indexOf('text') > 1) {\n targetElement = getElement(targetElement.id.replace('text', 'shape'));\n }\n if ((targetElement).hasAttribute('class') && (targetElement).getAttribute('class').indexOf('highlight') > -1) {\n return;\n }\n this.accumulationHighlightModule.calculateSelectedElements(this, targetElement, 'mousemove');\n return;\n }\n }\n if (this.accumulationTooltipModule) {\n var series = this.visibleSeries[seriesIndex];\n var data = void 0;\n if (series.enableTooltip) {\n data = new AccPointData(series.points[pointIndex], series);\n }\n this.accumulationTooltipModule.renderSeriesTooltip(this, data);\n }\n }\n if (this.accumulationHighlightModule && this.highlightMode !== 'None') {\n targetId = targetId.indexOf('_chart_legend_g_') > -1 ? document.getElementById(targetId).firstChild['id'] : targetId;\n var legendID = this.element.id + '_chart_legend';\n var legendItemsId = [legendID + '_text_', legendID + '_shape_marker_',\n legendID + '_shape_'];\n for (var i = 0; i < legendItemsId.length; i++) {\n var id = legendItemsId[i];\n if (targetId.indexOf(id) > -1) {\n document.getElementById(targetId).setAttribute('class', '');\n this.accumulationHighlightModule.legendSelection(this, 0, parseInt(targetId.split(id)[1], 10), getElement(targetId), 'mousemove');\n break;\n }\n }\n }\n break;\n case 'Enter':\n case 'Space':\n if (targetId.indexOf('_chart_legend_') > -1 && this.accumulationLegendModule) {\n this.isLegendClicked = true;\n this.accumulationLegendModule.click(e);\n this.focusChild(document.getElementById(targetId).parentElement);\n }\n else {\n if (this.accumulationSelectionModule) {\n this.accumulationSelectionModule.calculateSelectedElements(this, document.getElementById(targetId), 'click');\n }\n }\n break;\n case 'CtrlP':\n this.print();\n break;\n case 'ESC':\n if (this.accumulationTooltipModule) {\n this.accumulationTooltipModule.removeTooltip(1);\n }\n break;\n }\n };\n AccumulationChart.prototype.focusChild = function (element) {\n element.setAttribute('tabindex', '0');\n var className = element.getAttribute('class');\n element.setAttribute('tabindex', '0');\n if (className && className.indexOf('e-accumulationchart-focused') === -1) {\n className = 'e-accumulationchart-focused ' + className;\n }\n else if (!className) {\n className = 'e-accumulationchart-focused';\n }\n element.setAttribute('class', className);\n element.focus();\n return element.id;\n };\n /**\n * Handles the mouse double click on accumulation chart.\n *\n * @param {PointerEvent} e - The pointer event.\n * @returns {boolean} - Mouse double click of accumulation chart.\n * @private\n */\n AccumulationChart.prototype.accumulationOnDoubleClick = function (e) {\n this.trigger(chartDoubleClick, { target: e.target.id, x: this.mouseX, y: this.mouseY });\n return false;\n };\n /**\n * Handles the mouse click on accumulation chart.\n *\n * @param {PointerEvent} e - The pointer event.\n * @returns {boolean} - Mouse click of accumulation chart.\n * @private\n */\n AccumulationChart.prototype.accumulationOnMouseClick = function (e) {\n this.setMouseXY(e);\n if (this.accumulationLegendModule && this.legendSettings.visible) {\n this.accumulationLegendModule.click(e);\n }\n if (this.selectionMode !== 'None' && this.accumulationSelectionModule) {\n this.accumulationSelectionModule.calculateSelectedElements(this, e.target, e.type);\n }\n if (this.visibleSeries[0].explode) {\n this.accBaseModule.processExplode(e);\n }\n if (this.enableBorderOnMouseMove && this.pieSeriesModule && this.type === 'Pie') {\n this.pieSeriesModule.findSeries(e, this.series[0].borderRadius);\n }\n this.trigger(chartMouseClick, { target: e.target.id, x: this.mouseX, y: this.mouseY });\n if (this.pointClick) {\n this.triggerPointEvent(pointClick, e.target, e);\n }\n return false;\n };\n AccumulationChart.prototype.triggerPointEvent = function (event, element, e) {\n var evt = e;\n var indexes = indexFinder(element.id, true);\n if (indexes.series >= 0 && indexes.point >= 0) {\n this.trigger(event, {\n series: this.isBlazor ? {} : this.series[indexes.series],\n point: this.series[indexes.series].points[indexes.point],\n seriesIndex: indexes.series, pointIndex: indexes.point,\n x: this.mouseX, y: this.mouseY, pageX: evt.pageX, pageY: evt.pageY\n });\n }\n };\n /**\n * Handles the mouse right click on accumulation chart.\n *\n * @param {MouseEvent | PointerEvent} event - The mouse event or pointer event.\n * @returns {boolean} - Right click of accumulation chart.\n * @private\n */\n AccumulationChart.prototype.accumulationRightClick = function (event) {\n if (event.buttons === 2 && event.pointerType === 'touch') {\n event.preventDefault();\n event.stopPropagation();\n return false;\n }\n return true;\n };\n /**\n * Handles the mouse leave on accumulation chart.\n *\n * @param {PointerEvent} e - The pointer event.\n * @returns {boolean} - Mouse leave of accumulation chart.\n * @private\n */\n AccumulationChart.prototype.accumulationMouseLeave = function (e) {\n this.setMouseXY(e);\n this.trigger(chartMouseLeave, { target: e.target.id, x: this.mouseX, y: this.mouseY });\n this.notify(Browser.isPointer ? 'pointerleave' : 'mouseleave', e);\n var borderElement = document.getElementById(this.element.id + 'PointHover_Border');\n if (borderElement) {\n this.pieSeriesModule.removeBorder(borderElement, 1000);\n borderElement = null;\n }\n return false;\n };\n /**\n * Method to set culture for chart.\n *\n * @returns {void}\n */\n AccumulationChart.prototype.setCulture = function () {\n this.intl = new Internationalization();\n };\n /**\n * Method to create SVG element for accumulation chart.\n *\n * @returns {void}\n */\n AccumulationChart.prototype.createPieSvg = function () {\n this.removeSvg();\n createSvg(this);\n };\n /**\n * To Remove the SVG from accumulation chart.\n *\n * @returns {boolean} - Remove svg.\n * @private\n */\n AccumulationChart.prototype.removeSvg = function () {\n if (this.redraw) {\n return null;\n }\n blazorTemplatesReset(this);\n removeElement(this.element.id + '_Secondary_Element');\n if (this.svgObject) {\n while (this.svgObject.childNodes.length > 0) {\n this.svgObject.removeChild(this.svgObject.firstChild);\n }\n if (!this.svgObject.hasChildNodes() && this.svgObject.parentNode) {\n remove(this.svgObject);\n }\n }\n removeElement('EJ2_legend_tooltip');\n removeElement('EJ2_datalabel_tooltip');\n removeElement(this.element.id + 'PointHover_Border');\n };\n /**\n * Method to create the secondary element for tooltip, datalabel and annotaitons.\n *\n * @returns {void}\n */\n AccumulationChart.prototype.createSecondaryElement = function () {\n var element = redrawElement(this.redraw, this.element.id + '_Secondary_Element') ||\n this.createElement('div', {\n id: this.element.id + '_Secondary_Element',\n styles: 'position: relative'\n });\n appendChildElement(false, this.element, element, this.redraw);\n };\n /**\n * Method to find visible series based on series types.\n *\n * @returns {void}\n */\n AccumulationChart.prototype.calculateVisibleSeries = function () {\n this.visibleSeries = [];\n for (var i = 0, length_1 = this.series.length; i < length_1; i++) {\n this.series[i].index = i;\n if (this.series[i].type === this.type && this.visibleSeries.length === 0) {\n this.visibleSeries.push(this.series[i]);\n break;\n }\n }\n };\n /**\n * To find points from dataSource.\n *\n * @param {boolean} render - Indicates whether to render the points (default: true).\n * @returns {void}\n */\n AccumulationChart.prototype.processData = function (render) {\n if (render === void 0) { render = true; }\n this.seriesCounts = 0;\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n series.dataModule = new Data(series.dataSource || this.dataSource, series.query);\n series.refreshDataManager(this, render);\n }\n };\n /**\n * To refresh the accumulation chart.\n *\n * @private\n * @returns {void}\n */\n AccumulationChart.prototype.refreshChart = function () {\n this.doGrouppingProcess();\n this.createPieSvg();\n this.calculateBounds();\n this.renderElements();\n removeElement('chartmeasuretext');\n };\n /**\n * Method to find groupped points.\n *\n * @returns {void}\n */\n AccumulationChart.prototype.doGrouppingProcess = function () {\n var series = this.visibleSeries[0];\n if (!isNullOrUndefined(series.resultData) && ((!isNullOrUndefined(series.lastGroupTo) &&\n series.lastGroupTo !== series.groupTo))) {\n series.getPoints(series.resultData, this);\n }\n };\n /**\n * Method to calculate bounds for accumulation chart.\n *\n * @returns {void}\n */\n AccumulationChart.prototype.calculateBounds = function () {\n this.initialClipRect = new Rect(this.margin.left, this.margin.top, this.availableSize.width, this.availableSize.height);\n this.titleCollection = [];\n this.subTitleCollection = [];\n var titleHeight = 0;\n var subTitleHeight = 0;\n var maxWidth = 0;\n var titleWidth = 0;\n if (this.title) {\n this.titleCollection = getTitle(this.title, this.titleStyle, this.initialClipRect.width, this.enableRtl, this.themeStyle.chartTitleFont);\n }\n titleHeight = this.title ? measureText(this.title, this.titleStyle, this.themeStyle.chartTitleFont).height * this.titleCollection.length : titleHeight;\n if (this.subTitle) {\n for (var _i = 0, _a = this.titleCollection; _i < _a.length; _i++) {\n var titleText = _a[_i];\n titleWidth = measureText(titleText, this.titleStyle, this.themeStyle.chartSubTitleFont).width;\n maxWidth = titleWidth > maxWidth ? titleWidth : maxWidth;\n }\n this.subTitleCollection = getTitle(this.subTitle, this.subTitleStyle, maxWidth, this.enableRtl, this.themeStyle.chartSubTitleFont);\n subTitleHeight = (measureText(this.subTitle, this.subTitleStyle, this.themeStyle.chartSubTitleFont).height * this.subTitleCollection.length);\n }\n subtractRect(this.initialClipRect, new Rect(0, (subTitleHeight + titleHeight), this.margin.right + this.margin.left, this.margin.bottom + this.margin.top));\n this.calculateLegendBounds();\n };\n /**\n * Method to calculate legend bounds for accumulation chart.\n *\n * @returns {void}\n */\n AccumulationChart.prototype.calculateLegendBounds = function () {\n if (!this.accumulationLegendModule || !this.legendSettings.visible) {\n return null;\n }\n this.accumulationLegendModule.getLegendOptions(this, this.visibleSeries);\n this.accumulationLegendModule.calculateLegendBounds(this.initialClipRect, this.availableSize, null);\n };\n /**\n * To render elements for accumulation chart.\n *\n * @private\n * @returns {void}\n */\n AccumulationChart.prototype.renderElements = function () {\n this.renderBorder();\n this.createSecondaryElement();\n this.renderSeries();\n this.renderTitle();\n this.renderCenterLabel(true);\n this.renderLegend();\n appendChildElement(false, this.element, this.svgObject, this.redraw);\n this.processSelection();\n this.processExplode();\n this.renderAnnotation();\n this.setSecondaryElementPosition();\n updateBlazorTemplate(this.element.id + '_DataLabel', 'Template', this.series[0].dataLabel);\n this.trigger('loaded', { accumulation: this.isBlazor ? {} : this, chart: this.isBlazor ? {} : this });\n this.animateSeries = false;\n };\n /**\n * To set the left and top position for data label template for center aligned chart.\n *\n * @private\n * @returns {void}\n */\n AccumulationChart.prototype.setSecondaryElementPosition = function () {\n var tooltipParent = getElement(this.element.id + '_Secondary_Element');\n if (!tooltipParent) {\n return;\n }\n var rect = this.element.getBoundingClientRect();\n var svgRect = getElement(this.element.id + '_svg').getBoundingClientRect();\n tooltipParent.style.left = Math.max(svgRect.left - rect.left, 0) + 'px';\n tooltipParent.style.top = Math.max(svgRect.top - rect.top, 0) + 'px';\n };\n /**\n * To render the annotaitions for accumulation series.\n *\n * @private\n * @returns {void}\n */\n AccumulationChart.prototype.renderAnnotation = function () {\n if (this.annotationModule) {\n this.annotationModule.renderAnnotations(getElement(this.element.id + '_Secondary_Element'));\n }\n };\n /**\n * Method to process the explode in accumulation chart.\n *\n * @private\n * @returns {void}\n */\n AccumulationChart.prototype.processExplode = function () {\n if (this.redraw) {\n return null;\n }\n if (!this.visibleSeries[0].explode) {\n return null;\n }\n this.accBaseModule.invokeExplode();\n };\n /**\n * Method to render series for accumulation chart.\n *\n * @returns {void}\n */\n AccumulationChart.prototype.renderSeries = function () {\n if (!this.redraw) {\n this.svgObject.appendChild(this.renderer.createGroup({ id: this.element.id + '_SeriesCollection' }));\n }\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n if (series.visible && this[(firstToLowerCase(series.type) + 'SeriesModule')]) {\n this[(firstToLowerCase(series.type) + 'SeriesModule')].initProperties(this, series);\n series.renderSeries(this, this.redraw);\n }\n }\n };\n /**\n * Method to render border for accumulation chart.\n *\n * @returns {void}\n */\n AccumulationChart.prototype.renderBorder = function () {\n var padding = this.border.width;\n var rect = new RectOption(this.element.id + '_border', this.background || this.themeStyle.background, this.border, 1, new Rect(padding / 2, padding / 2, this.availableSize.width - padding, this.availableSize.height - padding), 0, 0, '', this.border.dashArray);\n var htmlObject = this.renderer.drawRectangle(rect);\n htmlObject.setAttribute('aria-hidden', 'true');\n appendChildElement(false, this.svgObject, htmlObject, this.redraw);\n // to draw back ground image for accumulation chart\n var backGroundImage = this.backgroundImage;\n if (backGroundImage) {\n var image = new ImageOption(this.availableSize.height - padding, this.availableSize.width - padding, backGroundImage, 0, 0, this.element.id + '_background', 'visible', 'none');\n appendChildElement(false, this.svgObject, this.renderer.drawImage(image), this.redraw);\n }\n };\n /**\n * Method to render legend for accumulation chart.\n *\n * @returns {void}\n */\n AccumulationChart.prototype.renderLegend = function () {\n if (!this.accumulationLegendModule || !this.legendSettings.visible) {\n return null;\n }\n if (this.accumulationLegendModule.legendCollections.length) {\n if (this.visibleSeries[0].type === 'Pie') {\n this.accumulationLegendModule.getSmartLegendLocation(this.visibleSeries[0].labelBound, this.accumulationLegendModule.legendBounds, this.margin);\n }\n this.accumulationLegendModule.renderLegend(this, this.legendSettings, this.accumulationLegendModule.legendBounds, this.redraw);\n }\n };\n /**\n * To process the selection in accumulation chart.\n *\n * @private\n * @returns {void}\n */\n AccumulationChart.prototype.processSelection = function () {\n var selectedDataIndexes = [];\n if (this.accumulationSelectionModule && this.selectionMode !== 'None') {\n selectedDataIndexes = extend([], this.accumulationSelectionModule.selectedDataIndexes, null, true);\n this.accumulationSelectionModule.invokeSelection(this);\n }\n if (this.accumulationHighlightModule && this.highlightMode !== 'None') {\n this.accumulationHighlightModule.invokeHighlight(this);\n }\n if (selectedDataIndexes.length > 0) {\n this.accumulationSelectionModule.selectedDataIndexes = selectedDataIndexes;\n this.accumulationSelectionModule.redrawSelection(this);\n }\n };\n /**\n * To render title for accumulation chart.\n *\n * @returns {void}\n */\n AccumulationChart.prototype.renderTitle = function () {\n var margin = this.margin;\n if (!this.title) {\n return null;\n }\n var getAnchor = getTextAnchor(this.titleStyle.textAlignment, this.enableRtl);\n var titleSize = measureText(this.title, this.titleStyle, this.themeStyle.chartTitleFont);\n var padding = 20;\n var titleHeight = this.margin.top + (titleSize.height * 3 / 4);\n var legendHeight = this.accumulationLegendModule === undefined ? 0 : this.legendSettings.position === 'Top' ?\n this.accumulationLegendModule.legendBounds.height : 0;\n var explode = this.explodeDistance === 0 ? 0 : this.explodeDistance;\n var expodeValue = legendHeight !== 0 ? 0 : explode / 2;\n var rect = new Rect(margin.left, 0, this.availableSize.width - margin.left - margin.right, 0);\n var options = new TextOption(this.element.id + '_title', titlePositionX(rect, this.titleStyle), titleHeight, getAnchor, this.titleCollection, '', 'auto');\n var space = (this.series[0].type === 'Pie' && this.visibleSeries[0].dataLabel.position === 'Outside' && this.visibleSeries[0].dataLabel.connectorStyle.length) ? stringToNumber(this.visibleSeries[0].dataLabel.connectorStyle.length, this.accBaseModule.radius) : 0;\n if (!this.subTitle && (this.series[0].type !== 'Funnel' && this.series[0].type !== 'Pyramid')) {\n options.y = parseInt(this.series[0].radius, 10) >= 80 ? options.y :\n (this.accBaseModule.center.y - this.accBaseModule.radius - padding\n - titleHeight - legendHeight - expodeValue - space);\n if (this.series[0].type === 'Pie' && (parseInt(this.series[0].radius, 10) < 80 || isNaN(parseInt(this.series[0].radius, 10)))) {\n options.y = options.y < (this.initialClipRect.y - legendHeight) ? (this.initialClipRect.y - legendHeight) : options.y;\n }\n }\n var element = textElement(this.renderer, options, this.titleStyle, this.titleStyle.color || this.themeStyle.chartTitleFont.color, this.svgObject, false, this.redraw, null, null, null, null, null, null, null, null, this.themeStyle.chartTitleFont);\n if (element) {\n element.setAttribute('tabindex', '0');\n element.parentNode.insertBefore(element, this.svgObject.children && this.svgObject.children[1]);\n }\n if (this.subTitle) {\n this.renderSubTitle(options);\n }\n };\n /**\n * To update center label on mouse move.\n *\n * @param {Event} event - The mouse move event.\n * @returns {void}\n */\n AccumulationChart.prototype.updateCenterLabel = function (event) {\n var data = this.getPieData(event);\n this.format = (data.point == null) ? '' : this.parseFormat(data.point, this.visibleSeries[0], this.centerLabel.hoverTextFormat);\n this.renderCenterLabel();\n };\n /**\n * Function to get pie data on mouse move.\n *\n * @param {PointerEvent | TouchEvent} e - The event object containing mouse or touch coordinates.\n * @returns {AccPointData} - The data of the pie.\n */\n AccumulationChart.prototype.getPieData = function (e) {\n var dataIndex = indexFinder(e.target.id, true);\n if (!isNaN(dataIndex.series)) {\n return new AccPointData(this.visibleSeries[0].points[dataIndex.point], this.visibleSeries[0]);\n }\n return new AccPointData(null, null);\n };\n /**\n * Function to get format of pie data on mouse move.\n *\n * @param {AccPoints} point - The point data.\n * @param {AccumulationSeries} series - The series to which the point belongs.\n * @param {string} format - The format string for the data.\n * @returns {string} - The formatted data.\n */\n AccumulationChart.prototype.parseFormat = function (point, series, format) {\n var value;\n var textValue;\n var regExp = RegExp;\n for (var _i = 0, _a = Object.keys(point); _i < _a.length; _i++) {\n var dataValue = _a[_i];\n value = new regExp('${point' + '.' + dataValue + '}', 'gm');\n format = format.replace(value.source, point[dataValue]);\n }\n for (var _b = 0, _c = Object.keys(Object.getPrototypeOf(series)); _b < _c.length; _b++) {\n var dataValue = _c[_b];\n value = new regExp('${series' + '.' + dataValue + '}', 'gm');\n textValue = series[dataValue];\n format = format.replace(value.source, textValue);\n }\n return format;\n };\n /**\n * To render center label for accumulation chart.\n *\n * @param {boolean} isanimate - Specifies whether to animate the rendering.\n * @param {boolean} pointAnimation - Specifies whether point animation is enabled.\n * @private\n * @returns {void}\n */\n AccumulationChart.prototype.renderCenterLabel = function (isanimate, pointAnimation) {\n var _this = this;\n if (!this.centerLabel.text || this.type !== 'Pie') {\n return null;\n }\n var initialPositions = [];\n if (pointAnimation) {\n var tspanElements_1 = (getElement(this.element.id + '_centerLabel')).querySelectorAll('tspan');\n tspanElements_1.forEach(function (tspan) {\n initialPositions.push({\n x: tspan.getAttribute('x'),\n y: tspan.getAttribute('y')\n });\n });\n }\n var series = this.series[0];\n var ypos;\n var getAnchor = getTextAnchor(this.centerLabel.textStyle.textAlignment, this.enableRtl);\n var padding = 10;\n // To get side of square inside the circle , which is considered as maxwidth , d*sqrt(0.5)\n var maxwidth = this.pieSeriesModule.innerRadius ? ((2 * this.pieSeriesModule.innerRadius) * (0.7071067)) :\n ((2 * this.pieSeriesModule.radius) * (0.7071067));\n var labelCollection = (this.format || this.centerLabel.text).split('
');\n var centerLabelSize = measureText(labelCollection[0], this.centerLabel.textStyle, this.themeStyle.chartTitleFont);\n var collectionLength = labelCollection.length;\n for (var i = 0; i < collectionLength; i++) {\n var labelSize = measureText(labelCollection[i], this.centerLabel.textStyle, this.themeStyle.chartTitleFont);\n if (labelSize.width > maxwidth) {\n labelCollection.splice.apply(labelCollection, [i, 1].concat((textWrap(labelCollection[i], maxwidth, this.centerLabel.textStyle, this.enableRtl, null, null, this.themeStyle.chartTitleFont))));\n }\n }\n if (centerLabelSize.height * (labelCollection.length) > maxwidth) {\n ypos = this.accBaseModule.center.y + ((centerLabelSize.height + padding) / 2) - (maxwidth / 2);\n }\n else if ((series.startAngle && series.endAngle) && (Math.abs(series.endAngle - series.startAngle) === 180)) {\n ypos = this.accBaseModule.center.y - (centerLabelSize.height * labelCollection.length / 2) +\n ((centerLabelSize.height + padding) / 2) - this.pieSeriesModule.innerRadius / 2 +\n (this.pieSeriesModule.innerRadius ? padding : 0);\n if ((centerLabelSize.height * (labelCollection.length) + this.pieSeriesModule.innerRadius / 2 + padding > maxwidth)) {\n ypos = this.accBaseModule.center.y + ((centerLabelSize.height + padding) / 2) - (maxwidth / 2);\n }\n }\n else {\n ypos = labelCollection.length > 1 ? (this.accBaseModule.center.y - (centerLabelSize.height * labelCollection.length / 2) +\n ((centerLabelSize.height + padding) / 2)) : (this.accBaseModule.center.y + (centerLabelSize.height) / 4);\n }\n var options = new TextOption(this.element.id + '_centerLabel', (((this.series[0].animation.enable && animationMode !== 'Disable') || animationMode === 'Enable') && isanimate) ? this.pieSeriesModule.center.x - 1 : this.pieSeriesModule.center.x, ypos, getAnchor, '', '', 'auto');\n var element = textElement(this.renderer, options, this.centerLabel.textStyle, this.centerLabel.textStyle.color ||\n this.themeStyle.chartTitleFont.color, this.svgObject, false, this.redraw, null, null, null, null, null, null, null, null, this.themeStyle.chartTitleFont);\n var tspanElements = [];\n for (var i = 0; i < labelCollection.length; i++) {\n var tspanOption = { x: options.x, y: options.y + (i * centerLabelSize.height), fill: '' };\n var tspanElement = this.renderer.createTSpan(tspanOption, '');\n tspanElement.style.fontFamily = 'inherit';\n tspanElement.style.fontStyle = 'inherit';\n tspanElement.style.fontSize = 'inherit';\n tspanElement.style.fontWeight = (labelCollection[i].indexOf('') > -1 || labelCollection[i].indexOf('') > -1) ? 'bold' : 'inherit';\n tspanElement.textContent = labelCollection[i].replace(/<\\/?b>/g, '');\n element.appendChild(tspanElement);\n tspanElements.push(tspanElement);\n }\n if (pointAnimation) {\n tspanElements.forEach(function (tspanElement, index) {\n _this.animateTspan(tspanElement, Number(initialPositions[index].x), Number(initialPositions[index].y), Number(tspanElement.getAttribute('x')), Number(tspanElement.getAttribute('y')), _this.duration);\n });\n }\n if (isanimate && ((this.series[0].animation.enable && animationMode !== 'Disable') || animationMode === 'Enable') && this.animateSeries) {\n this.centerLabelDelay(element);\n }\n };\n /**\n * Animates the x and y attributes of a tspan element.\n *\n * @param {HTMLElement} element - The tspan element to animate.\n * @param {number} startx - The initial x coordinate of the tspan.\n * @param {number} starty - The initial y coordinate of the tspan.\n * @param {number} endx - The final x coordinate of the tspan.\n * @param {number} endy - The final y coordinate of the tspan.\n * @param {number} duration - The duration of the animation in milliseconds.\n *\n * @private\n * @returns {void}\n */\n AccumulationChart.prototype.animateTspan = function (element, startx, starty, endx, endy, duration) {\n new Animation({}).animate(element, {\n duration: duration,\n progress: function (args) {\n element.style.animation = '';\n var progress = args.timeStamp / args.duration;\n var currentX = startx + (endx - startx) * progress;\n var currentY = starty + (endy - starty) * progress;\n element.setAttribute('x', currentX.toString());\n element.setAttribute('y', currentY.toString());\n },\n end: function () {\n element.setAttribute('x', endx.toString());\n element.setAttribute('y', endy.toString());\n }\n });\n };\n /**\n * Function to delay Center label at initial stage of accumulation chart.\n *\n * @param {Element} element - The element to delay.\n * @returns {void}\n */\n AccumulationChart.prototype.centerLabelDelay = function (element) {\n element.style.visibility = 'hidden';\n var animation = new Animation({});\n animation.animate(element, {\n delay: this.duration ? this.duration : this.series[0].animation.duration,\n progress: function (args) {\n args.element.style.visibility = 'visible';\n }\n });\n };\n AccumulationChart.prototype.renderSubTitle = function (options) {\n var maxWidth = 0;\n var titleWidth = 0;\n var padding = 10;\n var alignment = this.titleStyle.textAlignment;\n var subTitleElementSize = measureText(this.subTitle, this.subTitleStyle, this.themeStyle.chartSubTitleFont);\n for (var _i = 0, _a = this.titleCollection; _i < _a.length; _i++) {\n var titleText = _a[_i];\n titleWidth = measureText(titleText, this.titleStyle, this.themeStyle.chartSubTitleFont).width;\n maxWidth = titleWidth > maxWidth ? titleWidth : maxWidth;\n }\n var rect = new Rect(alignment === 'Center' ? (options.x - maxWidth / 2) : alignment === 'Far' ? options.x - maxWidth : options.x, 0, maxWidth, 0);\n var subTitleOption = new TextOption(this.element.id + '_subTitle', titlePositionX(rect, this.subTitleStyle), options.y * options.text.length + ((subTitleElementSize.height) * 3 / 4) + padding, getTextAnchor(this.subTitleStyle.textAlignment, this.enableRtl), this.subTitleCollection, '', 'auto');\n textElement(this.renderer, subTitleOption, this.subTitleStyle, this.subTitleStyle.color || this.themeStyle.chartSubTitleFont.color, this.svgObject, false, this.redraw, null, null, null, null, null, null, null, null, this.themeStyle.chartSubTitleFont);\n };\n /**\n * To get the series parent element.\n *\n * @private\n * @returns {Element} - The parent element of the series.\n */\n AccumulationChart.prototype.getSeriesElement = function () {\n return this.svgObject.getElementsByTagName('g')[0];\n };\n /**\n * To refresh the all visible series points.\n *\n * @private\n * @returns {void}\n */\n AccumulationChart.prototype.refreshSeries = function () {\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n this.refreshPoints(series.points);\n }\n };\n /**\n * To refresh points label region and visible.\n *\n * @private\n * @param {AccPoints[]} points - The array of points to refresh.\n * @returns {void}\n */\n AccumulationChart.prototype.refreshPoints = function (points) {\n for (var _i = 0, points_1 = points; _i < points_1.length; _i++) {\n var point = points_1[_i];\n point.labelPosition = null;\n point.labelRegion = null;\n point.labelVisible = true;\n }\n };\n /**\n * To get Module name.\n *\n * @private\n * @returns {string} - Returns the module name.\n */\n AccumulationChart.prototype.getModuleName = function () {\n return 'accumulationchart';\n };\n /**\n * To destroy the accumulation charts.\n *\n * @private\n * @returns {void}\n */\n AccumulationChart.prototype.destroy = function () {\n /**\n * To fix react timeout destroy issue.\n */\n if (this.element) {\n this.unWireEvents();\n _super.prototype.destroy.call(this);\n this.element.classList.remove('e-accumulationchart');\n this.element.classList.remove('e-accumulationchart-focused');\n var element = document.getElementById(this.element.id + 'Keyboard_accumulationchart_focus');\n if (element) {\n element.remove();\n }\n removeElement('chartmeasuretext');\n this.removeSvg();\n this.svgObject = null;\n }\n };\n /**\n * To provide the array of modules needed for control rendering.\n *\n * @returns {ModuleDeclaration[]} - required modules.\n * @private\n */\n AccumulationChart.prototype.requiredModules = function () {\n var modules = [];\n var enableAnnotation = false;\n modules.push({\n member: this.type + 'Series',\n args: [this]\n });\n if (this.legendSettings.visible) {\n modules.push({\n member: 'AccumulationLegend',\n args: [this]\n });\n }\n if (this.findDatalabelVisibility()) {\n modules.push({\n member: 'AccumulationDataLabel',\n args: [this]\n });\n }\n if (this.tooltip.enable) {\n modules.push({\n member: 'AccumulationTooltip',\n args: [this]\n });\n }\n if (this.selectionMode !== 'None') {\n modules.push({\n member: 'AccumulationSelection',\n args: [this]\n });\n }\n if (this.highlightMode !== 'None') {\n modules.push({\n member: 'AccumulationHighlight',\n args: [this]\n });\n }\n if (this.enableExport || this.allowExport) {\n modules.push({\n member: 'Export',\n args: [this]\n });\n }\n enableAnnotation = this.annotations.some(function (value) {\n return (value.content !== null);\n });\n if (enableAnnotation) {\n modules.push({\n member: 'Annotation',\n args: [this]\n });\n }\n return modules;\n };\n /**\n * To find datalabel visibility in series.\n *\n * @returns {boolean} - false\n */\n AccumulationChart.prototype.findDatalabelVisibility = function () {\n for (var _i = 0, _a = this.series; _i < _a.length; _i++) {\n var series = _a[_i];\n if (series.dataLabel.visible) {\n return true;\n }\n }\n return false;\n };\n /**\n * Get visible series for accumulation chart by index.\n *\n * @param {AccumulationSeries[]} visibleSeries - The array of visible series in the accumulation chart.\n * @param {number} index - The index of the series to retrieve.\n * @returns {AccumulationSeries} - The visible series at the specified index.\n */\n AccumulationChart.prototype.changeVisibleSeries = function (visibleSeries, index) {\n for (var _i = 0, visibleSeries_1 = visibleSeries; _i < visibleSeries_1.length; _i++) {\n var series = visibleSeries_1[_i];\n if (index === series.index) {\n return series;\n }\n }\n return null;\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @private\n * @returns {string} - The persisted data containing the properties.\n */\n AccumulationChart.prototype.getPersistData = function () {\n return '';\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @private\n * @param {AccumulationChartModel} newProp - The new AccumulationChartModel.\n * @param {AccumulationChartModel} oldProp - The old AccumulationChartModel.\n * @returns {void}\n */\n AccumulationChart.prototype.onPropertyChanged = function (newProp, oldProp) {\n var update = {\n refreshElements: false, refreshBounds: false\n };\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'theme':\n this.animateSeries = true;\n break;\n case 'title':\n case 'subTitle':\n case 'height':\n case 'width':\n case 'margin':\n update.refreshBounds = true;\n break;\n case 'titleStyle':\n if (newProp.titleStyle && (newProp.titleStyle.size || newProp.titleStyle.textOverflow)) {\n update.refreshBounds = true;\n }\n else {\n update.refreshElements = true;\n }\n break;\n case 'subTitleStyle':\n if (newProp.subTitleStyle && (newProp.subTitleStyle.size || newProp.subTitleStyle.textOverflow)) {\n update.refreshBounds = true;\n }\n else {\n update.refreshElements = true;\n }\n break;\n case 'legendSettings':\n update.refreshBounds = true;\n update.refreshElements = true;\n break;\n case 'dataSource':\n this.processData(false);\n update.refreshBounds = true;\n break;\n case 'series':\n if (!this.animateselected) {\n var len = this.series.length;\n var seriesRefresh = false;\n var series = void 0;\n var blazorProp = void 0;\n for (var i = 0; i < len; i++) {\n series = newProp.series[i];\n if ((series.startAngle || series.endAngle || series.explodeOffset || series.neckHeight ||\n series.neckWidth || series.radius || series.innerRadius || series.groupMode ||\n series.emptyPointSettings) && this.isBlazor) {\n blazorProp = true;\n }\n if (newProp.series[i] && (newProp.series[i].dataSource || newProp.series[i].yName\n || newProp.series[i].xName || series.type ||\n newProp.series[i].dataLabel || blazorProp)) {\n extend(this.changeVisibleSeries(this.visibleSeries, i), series, null, true);\n seriesRefresh = true;\n }\n if (newProp.series[i] && !isNullOrUndefined(newProp.series[i].explodeIndex) &&\n newProp.series[i].explodeIndex >= 0\n && newProp.series[i].explodeIndex !== oldProp.series[i].explodeIndex) {\n this.accBaseModule.explodePoints(newProp.series[i].explodeIndex, this);\n this.accBaseModule.deExplodeAll(newProp.series[i].explodeIndex, this.enableAnimation ? 300 : 0);\n }\n else if (newProp.series[i].explodeIndex < 0) {\n this.accBaseModule.deExplodeAll(newProp.series[i].explodeIndex, this.enableAnimation ? 300 : 0);\n }\n if (!this.pieSeriesModule) {\n this.pieSeriesModule = new PieSeries(this);\n }\n }\n if (seriesRefresh) {\n this.processData(false);\n update.refreshBounds = true;\n }\n }\n this.animateselected = false;\n this.redraw = false;\n break;\n case 'enableRtl':\n case 'locale':\n case 'currencyCode':\n _super.prototype.refresh.call(this);\n break;\n case 'background':\n case 'border':\n case 'annotations':\n case 'enableSmartLabels':\n update.refreshElements = true;\n break;\n case 'isMultiSelect':\n case 'selectedDataIndexes':\n case 'selectionMode':\n if (this.accumulationSelectionModule) {\n if (isNullOrUndefined(this.accumulationSelectionModule.selectedDataIndexes)) {\n this.accumulationSelectionModule.invokeSelection(this);\n }\n else {\n this.accumulationSelectionModule.selectedDataIndexes = this.selectedDataIndexes;\n this.accumulationSelectionModule.redrawSelection(this);\n }\n }\n break;\n case 'tooltip':\n if (this.accumulationTooltipModule) { // To check the tooltip enable is true.\n this.accumulationTooltipModule.previousPoints = [];\n if (this.tooltip.template) {\n this.accumulationTooltipModule.template = this.tooltip.template;\n }\n }\n break;\n }\n }\n if (!update.refreshBounds && update.refreshElements) {\n this.createPieSvg();\n this.renderElements();\n }\n else if (update.refreshBounds) {\n this.refreshSeries();\n this.createPieSvg();\n this.calculateBounds();\n this.renderElements();\n }\n };\n __decorate([\n Property(null)\n ], AccumulationChart.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], AccumulationChart.prototype, \"height\", void 0);\n __decorate([\n Property(null)\n ], AccumulationChart.prototype, \"title\", void 0);\n __decorate([\n Property(null)\n ], AccumulationChart.prototype, \"backgroundImage\", void 0);\n __decorate([\n Complex({}, PieCenter)\n ], AccumulationChart.prototype, \"center\", void 0);\n __decorate([\n Property('')\n ], AccumulationChart.prototype, \"dataSource\", void 0);\n __decorate([\n Complex({ fontFamily: null, size: null, fontStyle: null, fontWeight: null, color: null }, Font)\n ], AccumulationChart.prototype, \"titleStyle\", void 0);\n __decorate([\n Property(null)\n ], AccumulationChart.prototype, \"subTitle\", void 0);\n __decorate([\n Complex({ fontFamily: null, size: null, fontStyle: null, fontWeight: null, color: null }, Font)\n ], AccumulationChart.prototype, \"subTitleStyle\", void 0);\n __decorate([\n Complex({}, LegendSettings)\n ], AccumulationChart.prototype, \"legendSettings\", void 0);\n __decorate([\n Complex({}, TooltipSettings)\n ], AccumulationChart.prototype, \"tooltip\", void 0);\n __decorate([\n Complex({}, CenterLabel)\n ], AccumulationChart.prototype, \"centerLabel\", void 0);\n __decorate([\n Property('None')\n ], AccumulationChart.prototype, \"selectionMode\", void 0);\n __decorate([\n Property('')\n ], AccumulationChart.prototype, \"highlightColor\", void 0);\n __decorate([\n Property('None')\n ], AccumulationChart.prototype, \"highlightMode\", void 0);\n __decorate([\n Property('None')\n ], AccumulationChart.prototype, \"selectionPattern\", void 0);\n __decorate([\n Property('None')\n ], AccumulationChart.prototype, \"highlightPattern\", void 0);\n __decorate([\n Property(true)\n ], AccumulationChart.prototype, \"enableBorderOnMouseMove\", void 0);\n __decorate([\n Property(false)\n ], AccumulationChart.prototype, \"isMultiSelect\", void 0);\n __decorate([\n Property(true)\n ], AccumulationChart.prototype, \"enableAnimation\", void 0);\n __decorate([\n Collection([], Indexes)\n ], AccumulationChart.prototype, \"selectedDataIndexes\", void 0);\n __decorate([\n Complex({}, Margin)\n ], AccumulationChart.prototype, \"margin\", void 0);\n __decorate([\n Property(true)\n ], AccumulationChart.prototype, \"enableSmartLabels\", void 0);\n __decorate([\n Complex({ color: '#DDDDDD', width: 0 }, Border)\n ], AccumulationChart.prototype, \"border\", void 0);\n __decorate([\n Property(null)\n ], AccumulationChart.prototype, \"background\", void 0);\n __decorate([\n Collection([{}], AccumulationSeries)\n ], AccumulationChart.prototype, \"series\", void 0);\n __decorate([\n Collection([{}], AccumulationAnnotationSettings)\n ], AccumulationChart.prototype, \"annotations\", void 0);\n __decorate([\n Property('Material')\n ], AccumulationChart.prototype, \"theme\", void 0);\n __decorate([\n Property(false)\n ], AccumulationChart.prototype, \"useGroupingSeparator\", void 0);\n __decorate([\n Property(true)\n ], AccumulationChart.prototype, \"enableExport\", void 0);\n __decorate([\n Property(false)\n ], AccumulationChart.prototype, \"allowExport\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"loaded\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"legendClick\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"seriesRender\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"legendRender\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"textRender\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"tooltipRender\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"pointRender\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"annotationRender\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"chartMouseMove\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"chartMouseClick\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"chartDoubleClick\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"pointClick\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"pointMove\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"animationComplete\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"chartMouseDown\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"chartMouseLeave\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"chartMouseUp\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"beforeResize\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"resized\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"afterExport\", void 0);\n __decorate([\n Event()\n ], AccumulationChart.prototype, \"selectionComplete\", void 0);\n __decorate([\n Property('USD')\n ], AccumulationChart.prototype, \"currencyCode\", void 0);\n AccumulationChart = __decorate([\n NotifyPropertyChanges\n ], AccumulationChart);\n return AccumulationChart;\n}(Component));\nexport { AccumulationChart };\n","var instances = 'ej2_instances';\nvar uid = 0;\nvar isBlazorPlatform = false;\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {void} result\n * @private\n */\nexport function disableBlazorMode() {\n isBlazorPlatform = false;\n}\n/**\n * Create Instance from constructor function with desired parameters.\n *\n * @param {Function} classFunction - Class function to which need to create instance\n * @param {any[]} params - Parameters need to passed while creating instance\n * @returns {any} ?\n * @private\n */\nexport function createInstance(classFunction, params) {\n var arrayParam = params;\n arrayParam.unshift(undefined);\n return new (Function.prototype.bind.apply(classFunction, arrayParam));\n}\n/**\n * To run a callback function immediately after the browser has completed other operations.\n *\n * @param {Function} handler - callback function to be triggered.\n * @returns {Function} ?\n * @private\n */\nexport function setImmediate(handler) {\n var unbind;\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n intCrypto.getRandomValues(num);\n var secret = 'ej2' + combineArray(num);\n var messageHandler = function (event) {\n if (event.source === window && typeof event.data === 'string' && event.data.length <= 32 && event.data === secret) {\n handler();\n unbind();\n }\n };\n window.addEventListener('message', messageHandler, false);\n window.postMessage(secret, '*');\n return unbind = function () {\n window.removeEventListener('message', messageHandler);\n handler = messageHandler = secret = undefined;\n };\n}\n/**\n * To get nameSpace value from the desired object.\n *\n * @param {string} nameSpace - String value to the get the inner object\n * @param {any} obj - Object to get the inner object value.\n * @returns {any} ?\n * @private\n */\nexport function getValue(nameSpace, obj) {\n var value = obj;\n var splits = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n for (var i = 0; i < splits.length && !isUndefined(value); i++) {\n value = value[splits[parseInt(i.toString(), 10)]];\n }\n return value;\n}\n/**\n * To set value for the nameSpace in desired object.\n *\n * @param {string} nameSpace - String value to the get the inner object\n * @param {any} value - Value that you need to set.\n * @param {any} obj - Object to get the inner object value.\n * @returns {any} ?\n * @private\n */\nexport function setValue(nameSpace, value, obj) {\n var keys = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n var start = obj || {};\n var fromObj = start;\n var i;\n var length = keys.length;\n var key;\n for (i = 0; i < length; i++) {\n key = keys[parseInt(i.toString(), 10)];\n if (i + 1 === length) {\n fromObj[\"\" + key] = value === undefined ? {} : value;\n }\n else if (isNullOrUndefined(fromObj[\"\" + key])) {\n fromObj[\"\" + key] = {};\n }\n fromObj = fromObj[\"\" + key];\n }\n return start;\n}\n/**\n * Delete an item from Object\n *\n * @param {any} obj - Object in which we need to delete an item.\n * @param {string} key - String value to the get the inner object\n * @returns {void} ?\n * @private\n */\nexport function deleteObject(obj, key) {\n delete obj[\"\" + key];\n}\n/**\n *@private\n */\nexport var containerObject = typeof window !== 'undefined' ? window : {};\n/**\n * Check weather the given argument is only object.\n *\n * @param {any} obj - Object which is need to check.\n * @returns {boolean} ?\n * @private\n */\nexport function isObject(obj) {\n var objCon = {};\n return (!isNullOrUndefined(obj) && obj.constructor === objCon.constructor);\n}\n/**\n * To get enum value by giving the string.\n *\n * @param {any} enumObject - Enum object.\n * @param {string} enumValue - Enum value to be searched\n * @returns {any} ?\n * @private\n */\nexport function getEnumValue(enumObject, enumValue) {\n return enumObject[\"\" + enumValue];\n}\n/**\n * Merge the source object into destination object.\n *\n * @param {any} source - source object which is going to merge with destination object\n * @param {any} destination - object need to be merged\n * @returns {void} ?\n * @private\n */\nexport function merge(source, destination) {\n if (!isNullOrUndefined(destination)) {\n var temrObj = source;\n var tempProp = destination;\n var keys = Object.keys(destination);\n var deepmerge = 'deepMerge';\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (!isNullOrUndefined(temrObj[\"\" + deepmerge]) && (temrObj[\"\" + deepmerge].indexOf(key) !== -1) &&\n (isObject(tempProp[\"\" + key]) || Array.isArray(tempProp[\"\" + key]))) {\n extend(temrObj[\"\" + key], temrObj[\"\" + key], tempProp[\"\" + key], true);\n }\n else {\n temrObj[\"\" + key] = tempProp[\"\" + key];\n }\n }\n }\n}\n/**\n * Extend the two object with newer one.\n *\n * @param {any} copied - Resultant object after merged\n * @param {Object} first - First object need to merge\n * @param {Object} second - Second object need to merge\n * @param {boolean} deep ?\n * @returns {Object} ?\n * @private\n */\nexport function extend(copied, first, second, deep) {\n var result = copied && typeof copied === 'object' ? copied : {};\n var length = arguments.length;\n var args = [copied, first, second, deep];\n if (deep) {\n length = length - 1;\n }\n var _loop_1 = function (i) {\n if (!args[parseInt(i.toString(), 10)]) {\n return \"continue\";\n }\n var obj1 = args[parseInt(i.toString(), 10)];\n Object.keys(obj1).forEach(function (key) {\n var src = result[\"\" + key];\n var copy = obj1[\"\" + key];\n var clone;\n var isArrayChanged = Array.isArray(copy) && Array.isArray(src) && (copy.length !== src.length);\n var blazorEventExtend = isBlazor() ? (!(src instanceof Event) && !isArrayChanged) : true;\n if (deep && blazorEventExtend && (isObject(copy) || Array.isArray(copy))) {\n if (isObject(copy)) {\n clone = src ? src : {};\n if (Array.isArray(clone) && Object.prototype.hasOwnProperty.call(clone, 'isComplexArray')) {\n extend(clone, {}, copy, deep);\n }\n else {\n result[\"\" + key] = extend(clone, {}, copy, deep);\n }\n }\n else {\n /* istanbul ignore next */\n clone = isBlazor() ? src && Object.keys(copy).length : src ? src : [];\n result[\"\" + key] = extend([], clone, copy, (clone && clone.length) || (copy && copy.length));\n }\n }\n else {\n result[\"\" + key] = copy;\n }\n });\n };\n for (var i = 1; i < length; i++) {\n _loop_1(i);\n }\n return result;\n}\n/**\n * To check whether the object is null or undefined.\n *\n * @param {any} value - To check the object is null or undefined\n * @returns {boolean} ?\n * @private\n */\nexport function isNullOrUndefined(value) {\n return value === undefined || value === null;\n}\n/**\n * To check whether the object is undefined.\n *\n * @param {any} value - To check the object is undefined\n * @returns {boolean} ?\n * @private\n */\nexport function isUndefined(value) {\n return ('undefined' === typeof value);\n}\n/**\n * To return the generated unique name\n *\n * @param {string} definedName - To concatenate the unique id to provided name\n * @returns {string} ?\n * @private\n */\nexport function getUniqueID(definedName) {\n return definedName + '_' + uid++;\n}\n/**\n * It limits the rate at which a function can fire. The function will fire only once every provided second instead of as quickly.\n *\n * @param {Function} eventFunction - Specifies the function to run when the event occurs\n * @param {number} delay - A number that specifies the milliseconds for function delay call option\n * @returns {Function} ?\n * @private\n */\nexport function debounce(eventFunction, delay) {\n var out;\n return function () {\n var _this = this;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var later = function () {\n out = null;\n return eventFunction.apply(_this, args);\n };\n clearTimeout(out);\n out = setTimeout(later, delay);\n };\n}\n/**\n * To convert the object to string for query url\n *\n * @param {Object} data ?\n * @returns {string} ?\n * @private\n */\nexport function queryParams(data) {\n var array = [];\n var keys = Object.keys(data);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n array.push(encodeURIComponent(key) + '=' + encodeURIComponent('' + data[\"\" + key]));\n }\n return array.join('&');\n}\n/**\n * To check whether the given array contains object.\n *\n * @param {any} value - Specifies the T type array to be checked.\n * @returns {boolean} ?\n * @private\n */\nexport function isObjectArray(value) {\n var parser = Object.prototype.toString;\n if (parser.call(value) === '[object Array]') {\n if (parser.call(value[0]) === '[object Object]') {\n return true;\n }\n }\n return false;\n}\n/**\n * To check whether the child element is descendant to parent element or parent and child are same element.\n *\n * @param {Element} child - Specifies the child element to compare with parent.\n * @param {Element} parent - Specifies the parent element.\n * @returns {boolean} ?\n * @private\n */\nexport function compareElementParent(child, parent) {\n var node = child;\n if (node === parent) {\n return true;\n }\n else if (node === document || !node) {\n return false;\n }\n else {\n return compareElementParent(node.parentNode, parent);\n }\n}\n/**\n * To throw custom error message.\n *\n * @param {string} message - Specifies the error message to be thrown.\n * @returns {void} ?\n * @private\n */\nexport function throwError(message) {\n try {\n throw new Error(message);\n }\n catch (e) {\n throw new Error(e.message + '\\n' + e.stack);\n }\n}\n/**\n * This function is used to print given element\n *\n * @param {Element} element - Specifies the print content element.\n * @param {Window} printWindow - Specifies the print window.\n * @returns {Window} ?\n * @private\n */\nexport function print(element, printWindow) {\n var div = document.createElement('div');\n var links = [].slice.call(document.getElementsByTagName('head')[0].querySelectorAll('base, link, style'));\n var blinks = [].slice.call(document.getElementsByTagName('body')[0].querySelectorAll('link, style'));\n if (blinks.length) {\n for (var l = 0, len = blinks.length; l < len; l++) {\n links.push(blinks[parseInt(l.toString(), 10)]);\n }\n }\n var reference = '';\n if (isNullOrUndefined(printWindow)) {\n printWindow = window.open('', 'print', 'height=452,width=1024,tabbar=no');\n }\n div.appendChild(element.cloneNode(true));\n for (var i = 0, len = links.length; i < len; i++) {\n reference += links[parseInt(i.toString(), 10)].outerHTML;\n }\n printWindow.document.write(' ' + reference + '' + div.innerHTML +\n '' + '');\n printWindow.document.close();\n printWindow.focus();\n var interval = setInterval(function () {\n if (printWindow.ready) {\n printWindow.print();\n printWindow.close();\n clearInterval(interval);\n }\n }, 500);\n return printWindow;\n}\n/**\n * Function to normalize the units applied to the element.\n *\n * @param {number|string} value ?\n * @returns {string} result\n * @private\n */\nexport function formatUnit(value) {\n var result = value + '';\n if (result.match(/auto|cm|mm|in|px|pt|pc|%|em|ex|ch|rem|vw|vh|vmin|vmax/)) {\n return result;\n }\n return result + 'px';\n}\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {void} result\n * @private\n */\nexport function enableBlazorMode() {\n isBlazorPlatform = true;\n}\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {boolean} result\n * @private\n */\nexport function isBlazor() {\n return isBlazorPlatform;\n}\n/**\n * Function to convert xPath to DOM element in blazor platform\n *\n * @returns {HTMLElement} result\n * @param {HTMLElement | object} element ?\n * @private\n */\nexport function getElement(element) {\n var xPath = 'xPath';\n if (!(element instanceof Node) && isBlazor() && !isNullOrUndefined(element[\"\" + xPath])) {\n return document.evaluate(element[\"\" + xPath], document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;\n }\n return element;\n}\n/**\n * Function to fetch the Instances of a HTML element for the given component.\n *\n * @param {string | HTMLElement} element ?\n * @param {any} component ?\n * @returns {Object} ?\n * @private\n */\nexport function getInstance(element, component) {\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[\"\" + instances]) {\n for (var _i = 0, _a = elem[\"\" + instances]; _i < _a.length; _i++) {\n var inst = _a[_i];\n if (inst instanceof component) {\n return inst;\n }\n }\n }\n return null;\n}\n/**\n * Function to add instances for the given element.\n *\n * @param {string | HTMLElement} element ?\n * @param {Object} instance ?\n * @returns {void} ?\n * @private\n */\nexport function addInstance(element, instance) {\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[\"\" + instances]) {\n elem[\"\" + instances].push(instance);\n }\n else {\n elem[\"\" + instances] = [instance];\n }\n}\n/**\n * Function to generate the unique id.\n *\n * @returns {any} ?\n * @private\n */\nexport function uniqueID() {\n if ((typeof window) === 'undefined') {\n return;\n }\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n return intCrypto.getRandomValues(num);\n}\n/**\n *\n * @param {Int16Array} num ?\n * @returns {string} ?\n */\nfunction combineArray(num) {\n var ret = '';\n for (var i = 0; i < 5; i++) {\n ret += (i ? ',' : '') + num[parseInt(i.toString(), 10)];\n }\n return ret;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Parser\n */\nvar defaultNumberingSystem = {\n 'latn': {\n '_digits': '0123456789',\n '_type': 'numeric'\n }\n};\nimport { isUndefined, getValue, isBlazor } from '../util';\nvar defaultNumberSymbols = {\n 'decimal': '.',\n 'group': ',',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'exponential': 'E'\n};\nvar latnNumberSystem = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];\n/**\n * Interface for parser base\n *\n * @private\n */\nvar ParserBase = /** @class */ (function () {\n function ParserBase() {\n }\n /**\n * Returns the cldr object for the culture specifies\n *\n * @param {Object} obj - Specifies the object from which culture object to be acquired.\n * @param {string} cName - Specifies the culture name.\n * @returns {Object} ?\n */\n ParserBase.getMainObject = function (obj, cName) {\n var value = isBlazor() ? cName : 'main.' + cName;\n return getValue(value, obj);\n };\n /**\n * Returns the numbering system object from given cldr data.\n *\n * @param {Object} obj - Specifies the object from which number system is acquired.\n * @returns {Object} ?\n */\n ParserBase.getNumberingSystem = function (obj) {\n return getValue('supplemental.numberingSystems', obj) || this.numberingSystems;\n };\n /**\n * Returns the reverse of given object keys or keys specified.\n *\n * @param {Object} prop - Specifies the object to be reversed.\n * @param {number[]} keys - Optional parameter specifies the custom keyList for reversal.\n * @returns {Object} ?\n */\n ParserBase.reverseObject = function (prop, keys) {\n var propKeys = keys || Object.keys(prop);\n var res = {};\n for (var _i = 0, propKeys_1 = propKeys; _i < propKeys_1.length; _i++) {\n var key = propKeys_1[_i];\n if (!Object.prototype.hasOwnProperty.call(res, prop[\"\" + key])) {\n res[prop[\"\" + key]] = key;\n }\n }\n return res;\n };\n /**\n * Returns the symbol regex by skipping the escape sequence.\n *\n * @param {string[]} props - Specifies the array values to be skipped.\n * @returns {RegExp} ?\n */\n ParserBase.getSymbolRegex = function (props) {\n var regexStr = props.map(function (str) {\n return str.replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1');\n }).join('|');\n var regExp = RegExp;\n return new regExp(regexStr, 'g');\n };\n /**\n *\n * @param {Object} prop ?\n * @returns {Object} ?\n */\n ParserBase.getSymbolMatch = function (prop) {\n var matchKeys = Object.keys(defaultNumberSymbols);\n var ret = {};\n for (var _i = 0, matchKeys_1 = matchKeys; _i < matchKeys_1.length; _i++) {\n var key = matchKeys_1[_i];\n ret[prop[\"\" + key]] = defaultNumberSymbols[\"\" + key];\n }\n return ret;\n };\n /**\n * Returns regex string for provided value\n *\n * @param {string} val ?\n * @returns {string} ?\n */\n ParserBase.constructRegex = function (val) {\n var len = val.length;\n var ret = '';\n for (var i = 0; i < len; i++) {\n if (i !== len - 1) {\n ret += val[parseInt(i.toString(), 10)] + '|';\n }\n else {\n ret += val[parseInt(i.toString(), 10)];\n }\n }\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n *\n * @param {string} value - Specifies the values to be replaced.\n * @param {RegExp} regex - Specifies the regex to search.\n * @param {Object} obj - Specifies the object matcher to be replace value parts.\n * @returns {string} ?\n */\n ParserBase.convertValueParts = function (value, regex, obj) {\n return value.replace(regex, function (str) {\n return obj[\"\" + str];\n });\n };\n /**\n * Returns default numbering system object for formatting from cldr data\n *\n * @param {Object} obj ?\n * @returns {NumericObject} ?\n */\n ParserBase.getDefaultNumberingSystem = function (obj) {\n var ret = {};\n ret.obj = getValue('numbers', obj);\n ret.nSystem = getValue('defaultNumberingSystem', ret.obj);\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n *\n * @param {Object} curObj ?\n * @param {Object} numberSystem ?\n * @param {boolean} needSymbols ?\n * @param {boolean} blazorMode ?\n * @returns {Object} ?\n */\n ParserBase.getCurrentNumericOptions = function (curObj, numberSystem, needSymbols, blazorMode) {\n var ret = {};\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem) || blazorMode) {\n var digits = blazorMode ? getValue('obj.mapperDigits', cur) : getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n ret.numericPair = this.reverseObject(digits, latnNumberSystem);\n var regExp = RegExp;\n ret.numberParseRegex = new regExp(this.constructRegex(digits), 'g');\n ret.numericRegex = '[' + digits[0] + '-' + digits[9] + ']';\n if (needSymbols) {\n ret.numericRegex = digits[0] + '-' + digits[9];\n ret.symbolNumberSystem = getValue(blazorMode ? 'numberSymbols' : 'symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.symbolMatch = this.getSymbolMatch(ret.symbolNumberSystem);\n ret.numberSystem = cur.nSystem;\n }\n }\n }\n return ret;\n };\n /**\n * Returns number mapper object for the provided cldr data\n *\n * @param {Object} curObj ?\n * @param {Object} numberSystem ?\n * @param {boolean} isNumber ?\n * @returns {NumberMapper} ?\n */\n ParserBase.getNumberMapper = function (curObj, numberSystem, isNumber) {\n var ret = { mapper: {} };\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem)) {\n ret.numberSystem = cur.nSystem;\n ret.numberSymbols = getValue('symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.timeSeparator = getValue('timeSeparator', ret.numberSymbols);\n var digits = getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n for (var _i = 0, latnNumberSystem_1 = latnNumberSystem; _i < latnNumberSystem_1.length; _i++) {\n var i = latnNumberSystem_1[_i];\n ret.mapper[parseInt(i.toString(), 10)] = digits[parseInt(i.toString(), 10)];\n }\n }\n }\n return ret;\n };\n ParserBase.nPair = 'numericPair';\n ParserBase.nRegex = 'numericRegex';\n ParserBase.numberingSystems = defaultNumberingSystem;\n return ParserBase;\n}());\nexport { ParserBase };\n/**\n * @private\n */\nvar blazorCurrencyData = {\n 'DJF': 'Fdj',\n 'ERN': 'Nfk',\n 'ETB': 'Br',\n 'NAD': '$',\n 'ZAR': 'R',\n 'XAF': 'FCFA',\n 'GHS': 'GH₵',\n 'XDR': 'XDR',\n 'AED': 'د.إ.',\n 'BHD': 'د.ب.',\n 'DZD': 'د.ج.',\n 'EGP': 'ج.م.',\n 'ILS': '₪',\n 'IQD': 'د.ع.',\n 'JOD': 'د.ا.',\n 'KMF': 'CF',\n 'KWD': 'د.ك.',\n 'LBP': 'ل.ل.',\n 'LYD': 'د.ل.',\n 'MAD': 'د.م.',\n 'MRU': 'أ.م.',\n 'OMR': 'ر.ع.',\n 'QAR': 'ر.ق.',\n 'SAR': 'ر.س.',\n 'SDG': 'ج.س.',\n 'SOS': 'S',\n 'SSP': '£',\n 'SYP': 'ل.س.',\n 'TND': 'د.ت.',\n 'YER': 'ر.ي.',\n 'CLP': '$',\n 'INR': '₹',\n 'TZS': 'TSh',\n 'EUR': '€',\n 'AZN': '₼',\n 'RUB': '₽',\n 'BYN': 'Br',\n 'ZMW': 'K',\n 'BGN': 'лв.',\n 'NGN': '₦',\n 'XOF': 'CFA',\n 'BDT': '৳',\n 'CNY': '¥',\n 'BAM': 'КМ',\n 'UGX': 'USh',\n 'USD': '$',\n 'CZK': 'Kč',\n 'GBP': '£',\n 'DKK': 'kr.',\n 'KES': 'Ksh',\n 'CHF': 'CHF',\n 'MVR': 'ރ.',\n 'BTN': 'Nu.',\n 'XCD': 'EC$',\n 'AUD': '$',\n 'BBD': '$',\n 'BIF': 'FBu',\n 'BMD': '$',\n 'BSD': '$',\n 'BWP': 'P',\n 'BZD': '$',\n 'CAD': '$',\n 'NZD': '$',\n 'FJD': '$',\n 'FKP': '£',\n 'GIP': '£',\n 'GMD': 'D',\n 'GYD': '$',\n 'HKD': '$',\n 'IDR': 'Rp',\n 'JMD': '$',\n 'KYD': '$',\n 'LRD': '$',\n 'MGA': 'Ar',\n 'MOP': 'MOP$',\n 'MUR': 'Rs',\n 'MWK': 'MK',\n 'MYR': 'RM',\n 'PGK': 'K',\n 'PHP': '₱',\n 'PKR': 'Rs',\n 'RWF': 'RF',\n 'SBD': '$',\n 'SCR': 'SR',\n 'SEK': 'kr',\n 'SGD': '$',\n 'SHP': '£',\n 'SLL': 'Le',\n 'ANG': 'NAf.',\n 'SZL': 'E',\n 'TOP': 'T$',\n 'TTD': '$',\n 'VUV': 'VT',\n 'WST': 'WS$',\n 'ARS': '$',\n 'BOB': 'Bs',\n 'BRL': 'R$',\n 'COP': '$',\n 'CRC': '₡',\n 'CUP': '$',\n 'DOP': '$',\n 'GTQ': 'Q',\n 'HNL': 'L',\n 'MXN': '$',\n 'NIO': 'C$',\n 'PAB': 'B/.',\n 'PEN': 'S/',\n 'PYG': '₲',\n 'UYU': '$',\n 'VES': 'Bs.S',\n 'IRR': 'ريال',\n 'GNF': 'FG',\n 'CDF': 'FC',\n 'HTG': 'G',\n 'XPF': 'FCFP',\n 'HRK': 'kn',\n 'HUF': 'Ft',\n 'AMD': '֏',\n 'ISK': 'kr',\n 'JPY': '¥',\n 'GEL': '₾',\n 'CVE': '​',\n 'KZT': '₸',\n 'KHR': '៛',\n 'KPW': '₩',\n 'KRW': '₩',\n 'KGS': 'сом',\n 'AOA': 'Kz',\n 'LAK': '₭',\n 'MZN': 'MTn',\n 'MKD': 'ден',\n 'MNT': '₮',\n 'BND': '$',\n 'MMK': 'K',\n 'NOK': 'kr',\n 'NPR': 'रु',\n 'AWG': 'Afl.',\n 'SRD': '$',\n 'PLN': 'zł',\n 'AFN': '؋',\n 'STN': 'Db',\n 'MDL': 'L',\n 'RON': 'lei',\n 'UAH': '₴',\n 'LKR': 'රු.',\n 'ALL': 'Lekë',\n 'RSD': 'дин.',\n 'TJS': 'смн',\n 'THB': '฿',\n 'TMT': 'm.',\n 'TRY': '₺',\n 'UZS': 'сўм',\n 'VND': '₫',\n 'TWD': 'NT$'\n};\n/**\n *\n * @param {string} currencyCode ?\n * @returns {string} ?\n */\nexport function getBlazorCurrencySymbol(currencyCode) {\n return getValue(currencyCode || '', blazorCurrencyData);\n}\n","/***\n * Hijri parser\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var HijriParser;\n(function (HijriParser) {\n var dateCorrection = [28607, 28636, 28665, 28695, 28724, 28754, 28783, 28813, 28843, 28872, 28901, 28931, 28960, 28990,\n 29019, 29049, 29078, 29108, 29137, 29167, 29196, 29226, 29255, 29285, 29315, 29345, 29375, 29404, 29434, 29463, 29492, 29522,\n 29551, 29580, 29610, 29640, 29669, 29699, 29729, 29759, 29788, 29818, 29847, 29876, 29906, 29935, 29964, 29994, 30023, 30053,\n 30082, 30112, 30141, 30171, 30200, 30230, 30259, 30289, 30318, 30348, 30378, 30408, 30437, 30467, 30496, 30526, 30555, 30585,\n 30614, 30644, 30673, 30703, 30732, 30762, 30791, 30821, 30850, 30880, 30909, 30939, 30968, 30998, 31027, 31057, 31086, 31116,\n 31145, 31175, 31204, 31234, 31263, 31293, 31322, 31352, 31381, 31411, 31441, 31471, 31500, 31530, 31559, 31589, 31618, 31648,\n 31676, 31706, 31736, 31766, 31795, 31825, 31854, 31884, 31913, 31943, 31972, 32002, 32031, 32061, 32090, 32120, 32150, 32180,\n 32209, 32239, 32268, 32298, 32327, 32357, 32386, 32416, 32445, 32475, 32504, 32534, 32563, 32593, 32622, 32652, 32681, 32711,\n 32740, 32770, 32799, 32829, 32858, 32888, 32917, 32947, 32976, 33006, 33035, 33065, 33094, 33124, 33153, 33183, 33213, 33243,\n 33272, 33302, 33331, 33361, 33390, 33420, 33450, 33479, 33509, 33539, 33568, 33598, 33627, 33657, 33686, 33716, 33745, 33775,\n 33804, 33834, 33863, 33893, 33922, 33952, 33981, 34011, 34040, 34069, 34099, 34128, 34158, 34187, 34217, 34247, 34277, 34306,\n 34336, 34365, 34395, 34424, 34454, 34483, 34512, 34542, 34571, 34601, 34631, 34660, 34690, 34719, 34749, 34778, 34808, 34837,\n 34867, 34896, 34926, 34955, 34985, 35015, 35044, 35074, 35103, 35133, 35162, 35192, 35222, 35251, 35280, 35310, 35340, 35370,\n 35399, 35429, 35458, 35488, 35517, 35547, 35576, 35605, 35635, 35665, 35694, 35723, 35753, 35782, 35811, 35841, 35871, 35901,\n 35930, 35960, 35989, 36019, 36048, 36078, 36107, 36136, 36166, 36195, 36225, 36254, 36284, 36314, 36343, 36373, 36403, 36433,\n 36462, 36492, 36521, 36551, 36580, 36610, 36639, 36669, 36698, 36728, 36757, 36786, 36816, 36845, 36875, 36904, 36934, 36963,\n 36993, 37022, 37052, 37081, 37111, 37141, 37170, 37200, 37229, 37259, 37288, 37318, 37347, 37377, 37406, 37436, 37465, 37495,\n 37524, 37554, 37584, 37613, 37643, 37672, 37701, 37731, 37760, 37790, 37819, 37849, 37878, 37908, 37938, 37967, 37997, 38027,\n 38056, 38085, 38115, 38144, 38174, 38203, 38233, 38262, 38292, 38322, 38351, 38381, 38410, 38440, 38469, 38499, 38528, 38558,\n 38587, 38617, 38646, 38676, 38705, 38735, 38764, 38794, 38823, 38853, 38882, 38912, 38941, 38971, 39001, 39030, 39059, 39089,\n 39118, 39148, 39178, 39208, 39237, 39267, 39297, 39326, 39355, 39385, 39414, 39444, 39473, 39503, 39532, 39562, 39592, 39621,\n 39650, 39680, 39709, 39739, 39768, 39798, 39827, 39857, 39886, 39916, 39946, 39975, 40005, 40035, 40064, 40094, 40123, 40153,\n 40182, 40212, 40241, 40271, 40300, 40330, 40359, 40389, 40418, 40448, 40477, 40507, 40536, 40566, 40595, 40625, 40655, 40685,\n 40714, 40744, 40773, 40803, 40832, 40862, 40892, 40921, 40951, 40980, 41009, 41039, 41068, 41098, 41127, 41157, 41186, 41216,\n 41245, 41275, 41304, 41334, 41364, 41393, 41422, 41452, 41481, 41511, 41540, 41570, 41599, 41629, 41658, 41688, 41718, 41748,\n 41777, 41807, 41836, 41865, 41894, 41924, 41953, 41983, 42012, 42042, 42072, 42102, 42131, 42161, 42190, 42220, 42249, 42279,\n 42308, 42337, 42367, 42397, 42426, 42456, 42485, 42515, 42545, 42574, 42604, 42633, 42662, 42692, 42721, 42751, 42780, 42810,\n 42839, 42869, 42899, 42929, 42958, 42988, 43017, 43046, 43076, 43105, 43135, 43164, 43194, 43223, 43253, 43283, 43312, 43342,\n 43371, 43401, 43430, 43460, 43489, 43519, 43548, 43578, 43607, 43637, 43666, 43696, 43726, 43755, 43785, 43814, 43844, 43873,\n 43903, 43932, 43962, 43991, 44021, 44050, 44080, 44109, 44139, 44169, 44198, 44228, 44258, 44287, 44317, 44346, 44375, 44405,\n 44434, 44464, 44493, 44523, 44553, 44582, 44612, 44641, 44671, 44700, 44730, 44759, 44788, 44818, 44847, 44877, 44906, 44936,\n 44966, 44996, 45025, 45055, 45084, 45114, 45143, 45172, 45202, 45231, 45261, 45290, 45320, 45350, 45380, 45409, 45439, 45468,\n 45498, 45527, 45556, 45586, 45615, 45644, 45674, 45704, 45733, 45763, 45793, 45823, 45852, 45882, 45911, 45940, 45970, 45999,\n 46028, 46058, 46088, 46117, 46147, 46177, 46206, 46236, 46265, 46295, 46324, 46354, 46383, 46413, 46442, 46472, 46501, 46531,\n 46560, 46590, 46620, 46649, 46679, 46708, 46738, 46767, 46797, 46826, 46856, 46885, 46915, 46944, 46974, 47003, 47033, 47063,\n 47092, 47122, 47151, 47181, 47210, 47240, 47269, 47298, 47328, 47357, 47387, 47417, 47446, 47476, 47506, 47535, 47565, 47594,\n 47624, 47653, 47682, 47712, 47741, 47771, 47800, 47830, 47860, 47890, 47919, 47949, 47978, 48008, 48037, 48066, 48096, 48125,\n 48155, 48184, 48214, 48244, 48273, 48303, 48333, 48362, 48392, 48421, 48450, 48480, 48509, 48538, 48568, 48598, 48627, 48657,\n 48687, 48717, 48746, 48776, 48805, 48834, 48864, 48893, 48922, 48952, 48982, 49011, 49041, 49071, 49100, 49130, 49160, 49189,\n 49218, 49248, 49277, 49306, 49336, 49365, 49395, 49425, 49455, 49484, 49514, 49543, 49573, 49602, 49632, 49661, 49690, 49720,\n 49749, 49779, 49809, 49838, 49868, 49898, 49927, 49957, 49986, 50016, 50045, 50075, 50104, 50133, 50163, 50192, 50222, 50252,\n 50281, 50311, 50340, 50370, 50400, 50429, 50459, 50488, 50518, 50547, 50576, 50606, 50635, 50665, 50694, 50724, 50754, 50784,\n 50813, 50843, 50872, 50902, 50931, 50960, 50990, 51019, 51049, 51078, 51108, 51138, 51167, 51197, 51227, 51256, 51286, 51315,\n 51345, 51374, 51403, 51433, 51462, 51492, 51522, 51552, 51582, 51611, 51641, 51670, 51699, 51729, 51758, 51787, 51816, 51846,\n 51876, 51906, 51936, 51965, 51995, 52025, 52054, 52083, 52113, 52142, 52171, 52200, 52230, 52260, 52290, 52319, 52349, 52379,\n 52408, 52438, 52467, 52497, 52526, 52555, 52585, 52614, 52644, 52673, 52703, 52733, 52762, 52792, 52822, 52851, 52881, 52910,\n 52939, 52969, 52998, 53028, 53057, 53087, 53116, 53146, 53176, 53205, 53235, 53264, 53294, 53324, 53353, 53383, 53412, 53441,\n 53471, 53500, 53530, 53559, 53589, 53619, 53648, 53678, 53708, 53737, 53767, 53796, 53825, 53855, 53884, 53913, 53943, 53973,\n 54003, 54032, 54062, 54092, 54121, 54151, 54180, 54209, 54239, 54268, 54297, 54327, 54357, 54387, 54416, 54446, 54476, 54505,\n 54535, 54564, 54593, 54623, 54652, 54681, 54711, 54741, 54770, 54800, 54830, 54859, 54889, 54919, 54948, 54977, 55007, 55036,\n 55066, 55095, 55125, 55154, 55184, 55213, 55243, 55273, 55302, 55332, 55361, 55391, 55420, 55450, 55479, 55508, 55538, 55567,\n 55597, 55627, 55657, 55686, 55716, 55745, 55775, 55804, 55834, 55863, 55892, 55922, 55951, 55981, 56011, 56040, 56070, 56100,\n 56129, 56159, 56188, 56218, 56247, 56276, 56306, 56335, 56365, 56394, 56424, 56454, 56483, 56513, 56543, 56572, 56601, 56631,\n 56660, 56690, 56719, 56749, 56778, 56808, 56837, 56867, 56897, 56926, 56956, 56985, 57015, 57044, 57074, 57103, 57133, 57162,\n 57192, 57221, 57251, 57280, 57310, 57340, 57369, 57399, 57429, 57458, 57487, 57517, 57546, 57576, 57605, 57634, 57664, 57694,\n 57723, 57753, 57783, 57813, 57842, 57871, 57901, 57930, 57959, 57989, 58018, 58048, 58077, 58107, 58137, 58167, 58196, 58226,\n 58255, 58285, 58314, 58343, 58373, 58402, 58432, 58461, 58491, 58521, 58551, 58580, 58610, 58639, 58669, 58698, 58727, 58757,\n 58786, 58816, 58845, 58875, 58905, 58934, 58964, 58994, 59023, 59053, 59082, 59111, 59141, 59170, 59200, 59229, 59259, 59288,\n 59318, 59348, 59377, 59407, 59436, 59466, 59495, 59525, 59554, 59584, 59613, 59643, 59672, 59702, 59731, 59761, 59791, 59820,\n 59850, 59879, 59909, 59939, 59968, 59997, 60027, 60056, 60086, 60115, 60145, 60174, 60204, 60234, 60264, 60293, 60323, 60352,\n 60381, 60411, 60440, 60469, 60499, 60528, 60558, 60588, 60618, 60648, 60677, 60707, 60736, 60765, 60795, 60824, 60853, 60883,\n 60912, 60942, 60972, 61002, 61031, 61061, 61090, 61120, 61149, 61179, 61208, 61237, 61267, 61296, 61326, 61356, 61385, 61415,\n 61445, 61474, 61504, 61533, 61563, 61592, 61621, 61651, 61680, 61710, 61739, 61769, 61799, 61828, 61858, 61888, 61917, 61947,\n 61976, 62006, 62035, 62064, 62094, 62123, 62153, 62182, 62212, 62242, 62271, 62301, 62331, 62360, 62390, 62419, 62448, 62478,\n 62507, 62537, 62566, 62596, 62625, 62655, 62685, 62715, 62744, 62774, 62803, 62832, 62862, 62891, 62921, 62950, 62980, 63009,\n 63039, 63069, 63099, 63128, 63157, 63187, 63216, 63246, 63275, 63305, 63334, 63363, 63393, 63423, 63453, 63482, 63512, 63541,\n 63571, 63600, 63630, 63659, 63689, 63718, 63747, 63777, 63807, 63836, 63866, 63895, 63925, 63955, 63984, 64014, 64043, 64073,\n 64102, 64131, 64161, 64190, 64220, 64249, 64279, 64309, 64339, 64368, 64398, 64427, 64457, 64486, 64515, 64545, 64574, 64603,\n 64633, 64663, 64692, 64722, 64752, 64782, 64811, 64841, 64870, 64899, 64929, 64958, 64987, 65017, 65047, 65076, 65106, 65136,\n 65166, 65195, 65225, 65254, 65283, 65313, 65342, 65371, 65401, 65431, 65460, 65490, 65520, 65549, 65579, 65608, 65638, 65667,\n 65697, 65726, 65755, 65785, 65815, 65844, 65874, 65903, 65933, 65963, 65992, 66022, 66051, 66081, 66110, 66140, 66169, 66199,\n 66228, 66258, 66287, 66317, 66346, 66376, 66405, 66435, 66465, 66494, 66524, 66553, 66583, 66612, 66641, 66671, 66700, 66730,\n 66760, 66789, 66819, 66849, 66878, 66908, 66937, 66967, 66996, 67025, 67055, 67084, 67114, 67143, 67173, 67203, 67233, 67262,\n 67292, 67321, 67351, 67380, 67409, 67439, 67468, 67497, 67527, 67557, 67587, 67617, 67646, 67676, 67705, 67735, 67764, 67793,\n 67823, 67852, 67882, 67911, 67941, 67971, 68000, 68030, 68060, 68089, 68119, 68148, 68177, 68207, 68236, 68266, 68295, 68325,\n 68354, 68384, 68414, 68443, 68473, 68502, 68532, 68561, 68591, 68620, 68650, 68679, 68708, 68738, 68768, 68797, 68827, 68857,\n 68886, 68916, 68946, 68975, 69004, 69034, 69063, 69092, 69122, 69152, 69181, 69211, 69240, 69270, 69300, 69330, 69359, 69388,\n 69418, 69447, 69476, 69506, 69535, 69565, 69595, 69624, 69654, 69684, 69713, 69743, 69772, 69802, 69831, 69861, 69890, 69919,\n 69949, 69978, 70008, 70038, 70067, 70097, 70126, 70156, 70186, 70215, 70245, 70274, 70303, 70333, 70362, 70392, 70421, 70451,\n 70481, 70510, 70540, 70570, 70599, 70629, 70658, 70687, 70717, 70746, 70776, 70805, 70835, 70864, 70894, 70924, 70954, 70983,\n 71013, 71042, 71071, 71101, 71130, 71159, 71189, 71218, 71248, 71278, 71308, 71337, 71367, 71397, 71426, 71455, 71485, 71514,\n 71543, 71573, 71602, 71632, 71662, 71691, 71721, 71751, 71781, 71810, 71839, 71869, 71898, 71927, 71957, 71986, 72016, 72046,\n 72075, 72105, 72135, 72164, 72194, 72223, 72253, 72282, 72311, 72341, 72370, 72400, 72429, 72459, 72489, 72518, 72548, 72577,\n 72607, 72637, 72666, 72695, 72725, 72754, 72784, 72813, 72843, 72872, 72902, 72931, 72961, 72991, 73020, 73050, 73080, 73109,\n 73139, 73168, 73197, 73227, 73256, 73286, 73315, 73345, 73375, 73404, 73434, 73464, 73493, 73523, 73552, 73581, 73611, 73640,\n 73669, 73699, 73729, 73758, 73788, 73818, 73848, 73877, 73907, 73936, 73965, 73995, 74024, 74053, 74083, 74113, 74142, 74172,\n 74202, 74231, 74261, 74291, 74320, 74349, 74379, 74408, 74437, 74467, 74497, 74526, 74556, 74586, 74615, 74645, 74675, 74704,\n 74733, 74763, 74792, 74822, 74851, 74881, 74910, 74940, 74969, 74999, 75029, 75058, 75088, 75117, 75147, 75176, 75206, 75235,\n 75264, 75294, 75323, 75353, 75383, 75412, 75442, 75472, 75501, 75531, 75560, 75590, 75619, 75648, 75678, 75707, 75737, 75766,\n 75796, 75826, 75856, 75885, 75915, 75944, 75974, 76003, 76032, 76062, 76091, 76121, 76150, 76180, 76210, 76239, 76269, 76299,\n 76328, 76358, 76387, 76416, 76446, 76475, 76505, 76534, 76564, 76593, 76623, 76653, 76682, 76712, 76741, 76771, 76801, 76830,\n 76859, 76889, 76918, 76948, 76977, 77007, 77036, 77066, 77096, 77125, 77155, 77185, 77214, 77243, 77273, 77302, 77332, 77361,\n 77390, 77420, 77450, 77479, 77509, 77539, 77569, 77598, 77627, 77657, 77686, 77715, 77745, 77774, 77804, 77833, 77863, 77893,\n 77923, 77952, 77982, 78011, 78041, 78070, 78099, 78129, 78158, 78188, 78217, 78247, 78277, 78307, 78336, 78366, 78395, 78425,\n 78454, 78483, 78513, 78542, 78572, 78601, 78631, 78661, 78690, 78720, 78750, 78779, 78808, 78838, 78867, 78897, 78926, 78956,\n 78985, 79015, 79044, 79074, 79104, 79133, 79163, 79192, 79222, 79251, 79281, 79310, 79340, 79369, 79399, 79428, 79458, 79487,\n 79517, 79546, 79576, 79606, 79635, 79665, 79695, 79724, 79753, 79783, 79812, 79841, 79871, 79900, 79930, 79960, 79990\n ];\n /**\n *\n * @param {Date} gDate ?\n * @returns {Object} ?\n */\n function getHijriDate(gDate) {\n var day = gDate.getDate();\n var month = gDate.getMonth();\n var year = gDate.getFullYear();\n var tMonth = month + 1;\n var tYear = year;\n if (tMonth < 3) {\n tYear -= 1;\n tMonth += 12;\n }\n var yPrefix = Math.floor(tYear / 100);\n var julilanOffset = yPrefix - Math.floor(yPrefix / 4.) - 2;\n var julianNumber = Math.floor(365.25 * (tYear + 4716)) + Math.floor(30.6001 * (tMonth + 1)) + day - julilanOffset - 1524;\n yPrefix = Math.floor((julianNumber - 1867216.25) / 36524.25);\n julilanOffset = yPrefix - Math.floor(yPrefix / 4.) + 1;\n var b = julianNumber + julilanOffset + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var tempMonth = Math.floor((b - d) / 30.6001);\n day = (b - d) - Math.floor(30.6001 * tempMonth);\n month = Math.floor((b - d) / 20.6001);\n if (month > 13) {\n c += 1;\n month -= 12;\n }\n month -= 1;\n year = c - 4716;\n var modifiedJulianDate = julianNumber - 2400000;\n // date calculation for year after 2077\n var iyear = 10631 / 30;\n var z = julianNumber - 1948084;\n var cyc = Math.floor(z / 10631.);\n z = z - 10631 * cyc;\n var j = Math.floor((z - 0.1335) / iyear);\n var iy = 30 * cyc + j;\n z = z - Math.floor(j * iyear + 0.1335);\n var im = Math.floor((z + 28.5001) / 29.5);\n /* istanbul ignore next */\n if (im === 13) {\n im = 12;\n }\n var tempDay = z - Math.floor(29.5001 * im - 29);\n var i = 0;\n for (; i < dateCorrection.length; i++) {\n if (dateCorrection[parseInt(i.toString(), 10)] > modifiedJulianDate) {\n break;\n }\n }\n var iln = i + 16260;\n var ii = Math.floor((iln - 1) / 12);\n var hYear = ii + 1;\n var hmonth = iln - 12 * ii;\n var hDate = modifiedJulianDate - dateCorrection[i - 1] + 1;\n if ((hDate + '').length > 2) {\n hDate = tempDay;\n hmonth = im;\n hYear = iy;\n }\n return { year: hYear, month: hmonth, date: hDate };\n }\n HijriParser.getHijriDate = getHijriDate;\n /**\n *\n * @param {number} year ?\n * @param {number} month ?\n * @param {number} day ?\n * @returns {Date} ?\n */\n function toGregorian(year, month, day) {\n var iy = year;\n var im = month;\n var id = day;\n var ii = iy - 1;\n var iln = (ii * 12) + 1 + (im - 1);\n var i = iln - 16260;\n var mcjdn = id + dateCorrection[i - 1] - 1;\n var julianDate = mcjdn + 2400000;\n var z = Math.floor(julianDate + 0.5);\n var a = Math.floor((z - 1867216.25) / 36524.25);\n a = z + 1 + a - Math.floor(a / 4);\n var b = a + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var e = Math.floor((b - d) / 30.6001);\n var gDay = b - d - Math.floor(e * 30.6001);\n var gMonth = e - (e > 13.5 ? 13 : 1);\n var gYear = c - (gMonth > 2.5 ? 4716 : 4715);\n /* istanbul ignore next */\n if (gYear <= 0) {\n gMonth--;\n } // No year zero\n return new Date(gYear + '/' + (gMonth) + '/' + gDay);\n }\n HijriParser.toGregorian = toGregorian;\n})(HijriParser || (HijriParser = {}));\n","import { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nimport { isUndefined, throwError, getValue, isBlazor } from '../util';\nimport { HijriParser } from '../hijri-parser';\nimport { isNullOrUndefined, extend } from '../util';\nvar abbreviateRegexGlobal = /\\/MMMMM|MMMM|MMM|a|LLLL|LLL|EEEEE|EEEE|E|K|cccc|ccc|WW|W|G+|z+/gi;\nvar standalone = 'stand-alone';\nvar weekdayKey = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\nexport var basicPatterns = ['short', 'medium', 'long', 'full'];\nvar timeSetter = {\n m: 'getMinutes',\n h: 'getHours',\n H: 'getHours',\n s: 'getSeconds',\n d: 'getDate',\n f: 'getMilliseconds'\n};\nexport var datePartMatcher = {\n 'M': 'month',\n 'd': 'day',\n 'E': 'weekday',\n 'c': 'weekday',\n 'y': 'year',\n 'm': 'minute',\n 'h': 'hour',\n 'H': 'hour',\n 's': 'second',\n 'L': 'month',\n 'a': 'designator',\n 'z': 'timeZone',\n 'Z': 'timeZone',\n 'G': 'era',\n 'f': 'milliseconds'\n};\nvar timeSeparator = 'timeSeparator';\n/**\n * Date Format is a framework provides support for date formatting.\n *\n * @private\n */\nvar DateFormat = /** @class */ (function () {\n function DateFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} option - Specific the format in which date will format.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n DateFormat.dateFormat = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n var numObject = getValue('parserObject.numbers', dependable);\n var dateObject = dependable.dateObject;\n var formatOptions = { isIslamic: base.islamicRegex.test(option.calendar) };\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n formatOptions.dateSeperator = isBlazor() ? getValue('dateSeperator', dateObject) : base.getDateSeparator(dependable.dateObject);\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n if (isBlazor()) {\n resPattern = resPattern.replace(/tt/, 'a');\n }\n formatOptions.pattern = resPattern;\n formatOptions.numMapper = isBlazor() ?\n extend({}, numObject) : parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n var patternMatch = resPattern.match(abbreviateRegexGlobal) || [];\n for (var _i = 0, patternMatch_1 = patternMatch; _i < patternMatch_1.length; _i++) {\n var str = patternMatch_1[_i];\n var len = str.length;\n var char = str[0];\n if (char === 'K') {\n char = 'h';\n }\n switch (char) {\n case 'E':\n case 'c':\n if (isBlazor()) {\n formatOptions.weekday = getValue('days.' + base.monthIndex[\"\" + len], dateObject);\n }\n else {\n formatOptions.weekday = dependable.dateObject[\"\" + base.days][\"\" + standalone][base.monthIndex[\"\" + len]];\n }\n break;\n case 'M':\n case 'L':\n if (isBlazor()) {\n formatOptions.month = getValue('months.' + base.monthIndex[\"\" + len], dateObject);\n }\n else {\n formatOptions.month = dependable.dateObject[\"\" + base.month][\"\" + standalone][base.monthIndex[\"\" + len]];\n }\n break;\n case 'a':\n formatOptions.designator = isBlazor() ?\n getValue('dayPeriods', dateObject) : getValue('dayPeriods.format.wide', dateObject);\n break;\n case 'G': {\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n formatOptions.era = isBlazor() ? getValue('eras', dateObject) : getValue('eras.' + eText, dependable.dateObject);\n break;\n }\n case 'z':\n formatOptions.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n break;\n }\n }\n }\n return function (value) {\n if (isNaN(value.getDate())) {\n return null;\n }\n return _this.intDateFormatter(value, formatOptions);\n };\n };\n /**\n * Returns formatted date string based on options passed.\n *\n * @param {Date} value ?\n * @param {FormatOptions} options ?\n * @returns {string} ?\n */\n DateFormat.intDateFormatter = function (value, options) {\n var pattern = options.pattern;\n var ret = '';\n var matches = pattern.match(base.dateParseRegex);\n var dObject = this.getCurrentDateValue(value, options.isIslamic);\n for (var _i = 0, matches_1 = matches; _i < matches_1.length; _i++) {\n var match = matches_1[_i];\n var length_1 = match.length;\n var char = match[0];\n if (char === 'K') {\n char = 'h';\n }\n var curval = void 0;\n var curvalstr = '';\n var isNumber = void 0;\n var processNumber = void 0;\n var curstr = '';\n switch (char) {\n case 'M':\n case 'L':\n curval = dObject.month;\n if (length_1 > 2) {\n ret += options.month[\"\" + curval];\n }\n else {\n isNumber = true;\n }\n break;\n case 'E':\n case 'c':\n ret += options.weekday[\"\" + weekdayKey[value.getDay()]];\n break;\n case 'H':\n case 'h':\n case 'm':\n case 's':\n case 'd':\n case 'f':\n isNumber = true;\n if (char === 'd') {\n curval = dObject.date;\n }\n else if (char === 'f') {\n isNumber = false;\n processNumber = true;\n curvalstr = value[\"\" + timeSetter[\"\" + char]]().toString();\n curvalstr = curvalstr.substring(0, length_1);\n var curlength = curvalstr.length;\n if (length_1 !== curlength) {\n if (length_1 > 3) {\n continue;\n }\n for (var i = 0; i < length_1 - curlength; i++) {\n curvalstr = '0' + curvalstr.toString();\n }\n }\n curstr += curvalstr;\n }\n else {\n curval = value[\"\" + timeSetter[\"\" + char]]();\n }\n if (char === 'h') {\n curval = curval % 12 || 12;\n }\n break;\n case 'y':\n processNumber = true;\n curstr += dObject.year;\n if (length_1 === 2) {\n curstr = curstr.substr(curstr.length - 2);\n }\n break;\n case 'a': {\n var desig = value.getHours() < 12 ? 'am' : 'pm';\n ret += options.designator[\"\" + desig];\n break;\n }\n case 'G': {\n var dec = value.getFullYear() < 0 ? 0 : 1;\n var retu = options.era[\"\" + dec];\n if (isNullOrUndefined(retu)) {\n retu = options.era[dec ? 0 : 1];\n }\n ret += retu || '';\n break;\n }\n case '\\'':\n ret += (match === '\\'\\'') ? '\\'' : match.replace(/'/g, '');\n break;\n case 'z': {\n var timezone = value.getTimezoneOffset();\n var pattern_1 = (length_1 < 4) ? '+H;-H' : options.timeZone.hourFormat;\n pattern_1 = pattern_1.replace(/:/g, options.numMapper.timeSeparator);\n if (timezone === 0) {\n ret += options.timeZone.gmtZeroFormat;\n }\n else {\n processNumber = true;\n curstr = this.getTimeZoneValue(timezone, pattern_1);\n }\n curstr = options.timeZone.gmtFormat.replace(/\\{0\\}/, curstr);\n break;\n }\n case ':':\n ret += options.numMapper.numberSymbols[\"\" + timeSeparator];\n break;\n case '/':\n ret += options.dateSeperator;\n break;\n case 'W':\n isNumber = true;\n curval = base.getWeekOfYear(value);\n break;\n default:\n ret += match;\n }\n if (isNumber) {\n processNumber = true;\n curstr = this.checkTwodigitNumber(curval, length_1);\n }\n if (processNumber) {\n ret += parser.convertValueParts(curstr, base.latnParseRegex, options.numMapper.mapper);\n }\n }\n return ret;\n };\n DateFormat.getCurrentDateValue = function (value, isIslamic) {\n if (isIslamic) {\n return HijriParser.getHijriDate(value);\n }\n return { year: value.getFullYear(), month: value.getMonth() + 1, date: value.getDate() };\n };\n /**\n * Returns two digit numbers for given value and length\n *\n * @param {number} val ?\n * @param {number} len ?\n * @returns {string} ?\n */\n DateFormat.checkTwodigitNumber = function (val, len) {\n var ret = val + '';\n if (len === 2 && ret.length !== 2) {\n return '0' + ret;\n }\n return ret;\n };\n /**\n * Returns the value of the Time Zone.\n *\n * @param {number} tVal ?\n * @param {string} pattern ?\n * @returns {string} ?\n * @private\n */\n DateFormat.getTimeZoneValue = function (tVal, pattern) {\n var _this = this;\n var splt = pattern.split(';');\n var curPattern = splt[tVal > 0 ? 1 : 0];\n var no = Math.abs(tVal);\n return curPattern = curPattern.replace(/HH?|mm/g, function (str) {\n var len = str.length;\n var ishour = str.indexOf('H') !== -1;\n return _this.checkTwodigitNumber(Math.floor(ishour ? (no / 60) : (no % 60)), len);\n });\n };\n return DateFormat;\n}());\nexport { DateFormat };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isUndefined, throwError, isNullOrUndefined, extend, isBlazor, getValue } from '../util';\nimport { defaultCurrencyCode } from '../internationalization';\nimport { IntlBase as base } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nvar errorText = {\n 'ms': 'minimumSignificantDigits',\n 'ls': 'maximumSignificantDigits',\n 'mf': 'minimumFractionDigits',\n 'lf': 'maximumFractionDigits'\n};\nvar percentSign = 'percentSign';\nvar minusSign = 'minusSign';\nvar mapper = ['infinity', 'nan', 'group', 'decimal', 'exponential'];\n/**\n * Module for number formatting.\n *\n * @private\n */\nvar NumberFormat = /** @class */ (function () {\n function NumberFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} option - Specific the format in which number will format.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n NumberFormat.numberFormatter = function (culture, option, cldr) {\n var _this = this;\n var fOptions = extend({}, option);\n var cOptions = {};\n var dOptions = {};\n var symbolPattern;\n var dependable = base.getDependables(cldr, culture, '', true);\n var numObject = dependable.numericObject;\n dOptions.numberMapper = isBlazor() ? extend({}, numObject) :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n dOptions.currencySymbol = isBlazor() ? getValue('currencySymbol', numObject) : base.getCurrencySymbol(dependable.numericObject, fOptions.currency || defaultCurrencyCode, option.altSymbol, option.ignoreCurrency);\n dOptions.percentSymbol = isBlazor() ? getValue('numberSymbols.percentSign', numObject) :\n dOptions.numberMapper.numberSymbols[\"\" + percentSign];\n dOptions.minusSymbol = isBlazor() ? getValue('numberSymbols.minusSign', numObject) :\n dOptions.numberMapper.numberSymbols[\"\" + minusSign];\n var symbols = dOptions.numberMapper.numberSymbols;\n if ((option.format) && !(base.formatRegex.test(option.format))) {\n cOptions = base.customFormat(option.format, dOptions, dependable.numericObject);\n if (!isUndefined(fOptions.useGrouping) && fOptions.useGrouping) {\n fOptions.useGrouping = cOptions.pData.useGrouping;\n }\n }\n else {\n extend(fOptions, base.getProperNumericSkeleton(option.format || 'N'));\n fOptions.isCurrency = fOptions.type === 'currency';\n fOptions.isPercent = fOptions.type === 'percent';\n if (!isBlazor()) {\n symbolPattern = base.getSymbolPattern(fOptions.type, dOptions.numberMapper.numberSystem, dependable.numericObject, fOptions.isAccount);\n }\n fOptions.groupOne = this.checkValueRange(fOptions.maximumSignificantDigits, fOptions.minimumSignificantDigits, true);\n this.checkValueRange(fOptions.maximumFractionDigits, fOptions.minimumFractionDigits, false, true);\n if (!isUndefined(fOptions.fractionDigits)) {\n fOptions.minimumFractionDigits = fOptions.maximumFractionDigits = fOptions.fractionDigits;\n }\n if (isUndefined(fOptions.useGrouping)) {\n fOptions.useGrouping = true;\n }\n if (fOptions.isCurrency && !isBlazor()) {\n symbolPattern = symbolPattern.replace(/\\u00A4/g, base.defaultCurrency);\n }\n if (!isBlazor()) {\n var split = symbolPattern.split(';');\n cOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, dOptions.currencySymbol);\n cOptions.pData = base.getFormatData(split[0], false, dOptions.currencySymbol);\n if (fOptions.useGrouping) {\n fOptions.groupSeparator = symbols[mapper[2]];\n fOptions.groupData = this.getGroupingDetails(split[0]);\n }\n }\n else {\n cOptions.nData = extend({}, {}, getValue(fOptions.type + 'nData', numObject));\n cOptions.pData = extend({}, {}, getValue(fOptions.type + 'pData', numObject));\n if (fOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([cOptions.pData, cOptions.nData], dOptions.currencySymbol, option.currency);\n }\n }\n var minFrac = isUndefined(fOptions.minimumFractionDigits);\n if (minFrac) {\n fOptions.minimumFractionDigits = cOptions.nData.minimumFraction;\n }\n if (isUndefined(fOptions.maximumFractionDigits)) {\n var mval = cOptions.nData.maximumFraction;\n fOptions.maximumFractionDigits = isUndefined(mval) && fOptions.isPercent ? 0 : mval;\n }\n var mfrac = fOptions.minimumFractionDigits;\n var lfrac = fOptions.maximumFractionDigits;\n if (!isUndefined(mfrac) && !isUndefined(lfrac)) {\n if (mfrac > lfrac) {\n fOptions.maximumFractionDigits = mfrac;\n }\n }\n }\n extend(cOptions.nData, fOptions);\n extend(cOptions.pData, fOptions);\n return function (value) {\n if (isNaN(value)) {\n return symbols[mapper[1]];\n }\n else if (!isFinite(value)) {\n return symbols[mapper[0]];\n }\n return _this.intNumberFormatter(value, cOptions, dOptions, option);\n };\n };\n /**\n * Returns grouping details for the pattern provided\n *\n * @param {string} pattern ?\n * @returns {GroupDetails} ?\n */\n NumberFormat.getGroupingDetails = function (pattern) {\n var ret = {};\n var match = pattern.match(base.negativeDataRegex);\n if (match && match[4]) {\n var pattern_1 = match[4];\n var p = pattern_1.lastIndexOf(',');\n if (p !== -1) {\n var temp = pattern_1.split('.')[0];\n ret.primary = (temp.length - p) - 1;\n var s = pattern_1.lastIndexOf(',', p - 1);\n if (s !== -1) {\n ret.secondary = p - 1 - s;\n }\n }\n }\n return ret;\n };\n /**\n * Returns if the provided integer range is valid.\n *\n * @param {number} val1 ?\n * @param {number} val2 ?\n * @param {boolean} checkbothExist ?\n * @param {boolean} isFraction ?\n * @returns {boolean} ?\n */\n NumberFormat.checkValueRange = function (val1, val2, checkbothExist, isFraction) {\n var decide = isFraction ? 'f' : 's';\n var dint = 0;\n var str1 = errorText['l' + decide];\n var str2 = errorText['m' + decide];\n if (!isUndefined(val1)) {\n this.checkRange(val1, str1, isFraction);\n dint++;\n }\n if (!isUndefined(val2)) {\n this.checkRange(val2, str2, isFraction);\n dint++;\n }\n if (dint === 2) {\n if (val1 < val2) {\n throwError(str2 + 'specified must be less than the' + str1);\n }\n else {\n return true;\n }\n }\n else if (checkbothExist && dint === 1) {\n throwError('Both' + str2 + 'and' + str2 + 'must be present');\n }\n return false;\n };\n /**\n * Check if the provided fraction range is valid\n *\n * @param {number} val ?\n * @param {string} text ?\n * @param {boolean} isFraction ?\n * @returns {void} ?\n */\n NumberFormat.checkRange = function (val, text, isFraction) {\n var range = isFraction ? [0, 20] : [1, 21];\n if (val < range[0] || val > range[1]) {\n throwError(text + 'value must be within the range' + range[0] + 'to' + range[1]);\n }\n };\n /**\n * Returns formatted numeric string for provided formatting options\n *\n * @param {number} value ?\n * @param {base.GenericFormatOptions} fOptions ?\n * @param {CommonOptions} dOptions ?\n * @param {NumberFormatOptions} [option] ?\n * @returns {string} ?\n */\n NumberFormat.intNumberFormatter = function (value, fOptions, dOptions, option) {\n var curData;\n if (isUndefined(fOptions.nData.type)) {\n return undefined;\n }\n else {\n if (value < 0) {\n value = value * -1;\n curData = fOptions.nData;\n }\n else if (value === 0) {\n curData = fOptions.zeroData || fOptions.pData;\n }\n else {\n curData = fOptions.pData;\n }\n var fValue = '';\n if (curData.isPercent) {\n value = value * 100;\n }\n if (curData.groupOne) {\n fValue = this.processSignificantDigits(value, curData.minimumSignificantDigits, curData.maximumSignificantDigits);\n }\n else {\n fValue = this.processFraction(value, curData.minimumFractionDigits, curData.maximumFractionDigits, option);\n if (curData.minimumIntegerDigits) {\n fValue = this.processMinimumIntegers(fValue, curData.minimumIntegerDigits);\n }\n if (dOptions.isCustomFormat && curData.minimumFractionDigits < curData.maximumFractionDigits\n && /\\d+\\.\\d+/.test(fValue)) {\n var temp = fValue.split('.');\n var decimalPart = temp[1];\n var len = decimalPart.length;\n for (var i = len - 1; i >= 0; i--) {\n if (decimalPart[parseInt(i.toString(), 10)] === '0' && i >= curData.minimumFractionDigits) {\n decimalPart = decimalPart.slice(0, i);\n }\n else {\n break;\n }\n }\n fValue = temp[0] + '.' + decimalPart;\n }\n }\n if (curData.type === 'scientific') {\n fValue = value.toExponential(curData.maximumFractionDigits);\n fValue = fValue.replace('e', dOptions.numberMapper.numberSymbols[mapper[4]]);\n }\n fValue = fValue.replace('.', dOptions.numberMapper.numberSymbols[mapper[3]]);\n fValue = curData.format === '#,###,,;(#,###,,)' ? this.customPivotFormat(parseInt(fValue, 10)) : fValue;\n if (curData.useGrouping) {\n fValue = this.groupNumbers(fValue, curData.groupData.primary, curData.groupSeparator || ',', dOptions.numberMapper.numberSymbols[mapper[3]] || '.', curData.groupData.secondary);\n }\n fValue = parser.convertValueParts(fValue, base.latnParseRegex, dOptions.numberMapper.mapper);\n if (curData.nlead === 'N/A') {\n return curData.nlead;\n }\n else {\n if (fValue === '0' && option && option.format === '0') {\n return fValue + curData.nend;\n }\n return curData.nlead + fValue + curData.nend;\n }\n }\n };\n /**\n * Returns significant digits processed numeric string\n *\n * @param {number} value ?\n * @param {number} min ?\n * @param {number} max ?\n * @returns {string} ?\n */\n NumberFormat.processSignificantDigits = function (value, min, max) {\n var temp = value + '';\n var tn;\n var length = temp.length;\n if (length < min) {\n return value.toPrecision(min);\n }\n else {\n temp = value.toPrecision(max);\n tn = +temp;\n return tn + '';\n }\n };\n /**\n * Returns grouped numeric string\n *\n * @param {string} val ?\n * @param {number} level1 ?\n * @param {string} sep ?\n * @param {string} decimalSymbol ?\n * @param {number} level2 ?\n * @returns {string} ?\n */\n NumberFormat.groupNumbers = function (val, level1, sep, decimalSymbol, level2) {\n var flag = !isNullOrUndefined(level2) && level2 !== 0;\n var split = val.split(decimalSymbol);\n var prefix = split[0];\n var length = prefix.length;\n var str = '';\n while (length > level1) {\n str = prefix.slice(length - level1, length) + (str.length ?\n (sep + str) : '');\n length -= level1;\n if (flag) {\n level1 = level2;\n flag = false;\n }\n }\n split[0] = prefix.slice(0, length) + (str.length ? sep : '') + str;\n return split.join(decimalSymbol);\n };\n /**\n * Returns fraction processed numeric string\n *\n * @param {number} value ?\n * @param {number} min ?\n * @param {number} max ?\n * @param {NumberFormatOptions} [option] ?\n * @returns {string} ?\n */\n NumberFormat.processFraction = function (value, min, max, option) {\n var temp = (value + '').split('.')[1];\n var length = temp ? temp.length : 0;\n if (min && length < min) {\n var ret = '';\n if (length === 0) {\n ret = value.toFixed(min);\n }\n else {\n ret += value;\n for (var j = 0; j < min - length; j++) {\n ret += '0';\n }\n return ret;\n }\n return value.toFixed(min);\n }\n else if (!isNullOrUndefined(max) && (length > max || max === 0)) {\n return value.toFixed(max);\n }\n var str = value + '';\n if (str[0] === '0' && option && option.format === '###.00') {\n str = str.slice(1);\n }\n return str;\n };\n /**\n * Returns integer processed numeric string\n *\n * @param {string} value ?\n * @param {number} min ?\n * @returns {string} ?\n */\n NumberFormat.processMinimumIntegers = function (value, min) {\n var temp = value.split('.');\n var lead = temp[0];\n var len = lead.length;\n if (len < min) {\n for (var i = 0; i < min - len; i++) {\n lead = '0' + lead;\n }\n temp[0] = lead;\n }\n return temp.join('.');\n };\n /**\n * Returns custom format for pivot table\n *\n * @param {number} value ?\n * @returns {string} ?\n */\n NumberFormat.customPivotFormat = function (value) {\n if (value >= 500000) {\n value /= 1000000;\n var _a = value.toString().split('.'), integer = _a[0], decimal = _a[1];\n return decimal && +decimal.substring(0, 1) >= 5\n ? Math.ceil(value).toString()\n : Math.floor(value).toString();\n }\n return '';\n };\n return NumberFormat;\n}());\nexport { NumberFormat };\n","import { IntlBase as base } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nimport { isUndefined, throwError, getValue, isNullOrUndefined, isBlazor } from '../util';\nimport { datePartMatcher } from './date-formatter';\nimport { HijriParser } from '../hijri-parser';\nvar standalone = 'stand-alone';\nvar latnRegex = /^[0-9]*$/;\nvar timeSetter = {\n minute: 'setMinutes',\n hour: 'setHours',\n second: 'setSeconds',\n day: 'setDate',\n month: 'setMonth',\n milliseconds: 'setMilliseconds'\n};\nvar month = 'months';\n/**\n * Date Parser.\n *\n * @private\n */\nvar DateParser = /** @class */ (function () {\n function DateParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} option - Specific the format in which string date will be parsed.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n DateParser.dateParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n var numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), false, isBlazor());\n var parseOptions = {};\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n var regexString = '';\n var hourOnly;\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n parseOptions = { isIslamic: base.islamicRegex.test(option.calendar), pattern: resPattern, evalposition: {}, culture: culture };\n var patternMatch = resPattern.match(base.dateParseRegex) || [];\n var length_1 = patternMatch.length;\n var gmtCorrection = 0;\n var zCorrectTemp = 0;\n var isgmtTraversed = false;\n var nRegx = numOptions.numericRegex;\n var numMapper = isBlazor() ? dependable.parserObject.numbers\n : parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n for (var i = 0; i < length_1; i++) {\n var str = patternMatch[parseInt(i.toString(), 10)];\n var len = str.length;\n var char = (str[0] === 'K') ? 'h' : str[0];\n var isNumber = void 0;\n var canUpdate = void 0;\n var charKey = datePartMatcher[\"\" + char];\n var optional = (len === 2) ? '' : '?';\n if (isgmtTraversed) {\n gmtCorrection = zCorrectTemp;\n isgmtTraversed = false;\n }\n switch (char) {\n case 'E':\n case 'c': {\n var weekData = void 0;\n if (isBlazor()) {\n weekData = getValue('days.' + base.monthIndex[\"\" + len], dependable.dateObject);\n }\n else {\n weekData = dependable.dateObject[\"\" + base.days][\"\" + standalone][base.monthIndex[\"\" + len]];\n }\n var weekObject = parser.reverseObject(weekData);\n regexString += '(' + Object.keys(weekObject).join('|') + ')';\n break;\n }\n case 'M':\n case 'L':\n case 'd':\n case 'm':\n case 's':\n case 'h':\n case 'H':\n case 'f':\n canUpdate = true;\n if ((char === 'M' || char === 'L') && len > 2) {\n var monthData = void 0;\n if (isBlazor()) {\n monthData = getValue('months.' + base.monthIndex[\"\" + len], dependable.dateObject);\n }\n else {\n monthData = dependable.dateObject[\"\" + month][\"\" + standalone][base.monthIndex[\"\" + len]];\n }\n parseOptions[\"\" + charKey] = parser.reverseObject(monthData);\n regexString += '(' + Object.keys(parseOptions[\"\" + charKey]).join('|') + ')';\n }\n else if (char === 'f') {\n if (len > 3) {\n continue;\n }\n isNumber = true;\n regexString += '(' + nRegx + nRegx + '?' + nRegx + '?' + ')';\n }\n else {\n isNumber = true;\n regexString += '(' + nRegx + nRegx + optional + ')';\n }\n if (char === 'h') {\n parseOptions.hour12 = true;\n }\n break;\n case 'W': {\n var opt = len === 1 ? '?' : '';\n regexString += '(' + nRegx + opt + nRegx + ')';\n break;\n }\n case 'y':\n canUpdate = isNumber = true;\n if (len === 2) {\n regexString += '(' + nRegx + nRegx + ')';\n }\n else {\n regexString += '(' + nRegx + '{' + len + ',})';\n }\n break;\n case 'a': {\n canUpdate = true;\n var periodValur = isBlazor() ?\n getValue('dayPeriods', dependable.dateObject) :\n getValue('dayPeriods.format.wide', dependable.dateObject);\n parseOptions[\"\" + charKey] = parser.reverseObject(periodValur);\n regexString += '(' + Object.keys(parseOptions[\"\" + charKey]).join('|') + ')';\n break;\n }\n case 'G': {\n canUpdate = true;\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n parseOptions[\"\" + charKey] = parser.reverseObject(isBlazor() ?\n getValue('eras', dependable.dateObject) : getValue('eras.' + eText, dependable.dateObject));\n regexString += '(' + Object.keys(parseOptions[\"\" + charKey]).join('|') + '?)';\n break;\n }\n case 'z': {\n var tval = new Date().getTimezoneOffset();\n canUpdate = (tval !== 0);\n parseOptions[\"\" + charKey] = getValue('dates.timeZoneNames', dependable.parserObject);\n var tzone = parseOptions[\"\" + charKey];\n hourOnly = (len < 4);\n var hpattern = hourOnly ? '+H;-H' : tzone.hourFormat;\n hpattern = hpattern.replace(/:/g, numMapper.timeSeparator);\n regexString += '(' + this.parseTimeZoneRegx(hpattern, tzone, nRegx) + ')?';\n isgmtTraversed = true;\n zCorrectTemp = hourOnly ? 6 : 12;\n break;\n }\n case '\\'': {\n var iString = str.replace(/'/g, '');\n regexString += '(' + iString + ')?';\n break;\n }\n default:\n regexString += '([\\\\D])';\n break;\n }\n if (canUpdate) {\n parseOptions.evalposition[\"\" + charKey] = { isNumber: isNumber, pos: i + 1 + gmtCorrection, hourOnly: hourOnly };\n }\n if (i === length_1 - 1 && !isNullOrUndefined(regexString)) {\n var regExp = RegExp;\n parseOptions.parserRegex = new regExp('^' + regexString + '$', 'i');\n }\n }\n }\n return function (value) {\n var parsedDateParts = _this.internalDateParse(value, parseOptions, numOptions);\n if (isNullOrUndefined(parsedDateParts) || !Object.keys(parsedDateParts).length) {\n return null;\n }\n if (parseOptions.isIslamic) {\n var dobj = {};\n var tYear = parsedDateParts.year;\n var tDate = parsedDateParts.day;\n var tMonth = parsedDateParts.month;\n var ystrig = tYear ? (tYear + '') : '';\n var is2DigitYear = (ystrig.length === 2);\n if (!tYear || !tMonth || !tDate || is2DigitYear) {\n dobj = HijriParser.getHijriDate(new Date());\n }\n if (is2DigitYear) {\n tYear = parseInt((dobj.year + '').slice(0, 2) + ystrig, 10);\n }\n var dateObject = HijriParser.toGregorian(tYear || dobj.year, tMonth || dobj.month, tDate || dobj.date);\n parsedDateParts.year = dateObject.getFullYear();\n parsedDateParts.month = dateObject.getMonth() + 1;\n parsedDateParts.day = dateObject.getDate();\n }\n return _this.getDateObject(parsedDateParts);\n };\n };\n /**\n * Returns date object for provided date options\n *\n * @param {DateParts} options ?\n * @param {Date} value ?\n * @returns {Date} ?\n */\n DateParser.getDateObject = function (options, value) {\n var res = value || new Date();\n res.setMilliseconds(0);\n var tKeys = ['hour', 'minute', 'second', 'milliseconds', 'month', 'day'];\n var y = options.year;\n var desig = options.designator;\n var tzone = options.timeZone;\n if (!isUndefined(y)) {\n var len = (y + '').length;\n if (len <= 2) {\n var century = Math.floor(res.getFullYear() / 100) * 100;\n y += century;\n }\n res.setFullYear(y);\n }\n for (var _i = 0, tKeys_1 = tKeys; _i < tKeys_1.length; _i++) {\n var key = tKeys_1[_i];\n var tValue = options[\"\" + key];\n if (isUndefined(tValue) && key === 'day') {\n res.setDate(1);\n }\n if (!isUndefined(tValue)) {\n if (key === 'month') {\n tValue -= 1;\n if (tValue < 0 || tValue > 11) {\n return new Date('invalid');\n }\n var pDate = res.getDate();\n res.setDate(1);\n res[timeSetter[\"\" + key]](tValue);\n var lDate = new Date(res.getFullYear(), tValue + 1, 0).getDate();\n res.setDate(pDate < lDate ? pDate : lDate);\n }\n else {\n if (key === 'day') {\n var lastDay = new Date(res.getFullYear(), res.getMonth() + 1, 0).getDate();\n if ((tValue < 1 || tValue > lastDay)) {\n return null;\n }\n }\n res[\"\" + timeSetter[\"\" + key]](tValue);\n }\n }\n }\n if (!isUndefined(desig)) {\n var hour = res.getHours();\n if (desig === 'pm') {\n res.setHours(hour + (hour === 12 ? 0 : 12));\n }\n else if (hour === 12) {\n res.setHours(0);\n }\n }\n if (!isUndefined(tzone)) {\n var tzValue = tzone - res.getTimezoneOffset();\n if (tzValue !== 0) {\n res.setMinutes(res.getMinutes() + tzValue);\n }\n }\n return res;\n };\n /**\n * Returns date parsing options for provided value along with parse and numeric options\n *\n * @param {string} value ?\n * @param {ParseOptions} parseOptions ?\n * @param {NumericOptions} num ?\n * @returns {DateParts} ?\n */\n DateParser.internalDateParse = function (value, parseOptions, num) {\n var matches = value.match(parseOptions.parserRegex);\n var retOptions = { 'hour': 0, 'minute': 0, 'second': 0 };\n if (isNullOrUndefined(matches)) {\n return null;\n }\n else {\n var props = Object.keys(parseOptions.evalposition);\n for (var _i = 0, props_1 = props; _i < props_1.length; _i++) {\n var prop = props_1[_i];\n var curObject = parseOptions.evalposition[\"\" + prop];\n var matchString = matches[curObject.pos];\n if (curObject.isNumber) {\n retOptions[\"\" + prop] = this.internalNumberParser(matchString, num);\n }\n else {\n if (prop === 'timeZone' && !isUndefined(matchString)) {\n var pos = curObject.pos;\n var val = void 0;\n var tmatch = matches[pos + 1];\n var flag = !isUndefined(tmatch);\n if (curObject.hourOnly) {\n val = this.getZoneValue(flag, tmatch, matches[pos + 4], num) * 60;\n }\n else {\n val = this.getZoneValue(flag, tmatch, matches[pos + 7], num) * 60;\n val += this.getZoneValue(flag, matches[pos + 4], matches[pos + 10], num);\n }\n if (!isNullOrUndefined(val)) {\n retOptions[\"\" + prop] = val;\n }\n }\n else {\n var cultureOptions = ['en-US', 'en-MH', 'en-MP'];\n matchString = ((prop === 'month') && (!parseOptions.isIslamic) && (parseOptions.culture === 'en' || parseOptions.culture === 'en-GB' || parseOptions.culture === 'en-US'))\n ? matchString[0].toUpperCase() + matchString.substring(1).toLowerCase() : matchString;\n matchString = ((prop !== 'month') && (prop === 'designator') && parseOptions.culture && parseOptions.culture.indexOf('en-') !== -1 && cultureOptions.indexOf(parseOptions.culture) === -1)\n ? matchString.toLowerCase() : matchString;\n retOptions[\"\" + prop] = parseOptions[\"\" + prop][\"\" + matchString];\n }\n }\n }\n if (parseOptions.hour12) {\n retOptions.hour12 = true;\n }\n }\n return retOptions;\n };\n /**\n * Returns parsed number for provided Numeric string and Numeric Options\n *\n * @param {string} value ?\n * @param {NumericOptions} option ?\n * @returns {number} ?\n */\n DateParser.internalNumberParser = function (value, option) {\n value = parser.convertValueParts(value, option.numberParseRegex, option.numericPair);\n if (latnRegex.test(value)) {\n return +value;\n }\n return null;\n };\n /**\n * Returns parsed time zone RegExp for provided hour format and time zone\n *\n * @param {string} hourFormat ?\n * @param {base.TimeZoneOptions} tZone ?\n * @param {string} nRegex ?\n * @returns {string} ?\n */\n DateParser.parseTimeZoneRegx = function (hourFormat, tZone, nRegex) {\n var pattern = tZone.gmtFormat;\n var ret;\n var cRegex = '(' + nRegex + ')' + '(' + nRegex + ')';\n ret = hourFormat.replace('+', '\\\\+');\n if (hourFormat.indexOf('HH') !== -1) {\n ret = ret.replace(/HH|mm/g, '(' + cRegex + ')');\n }\n else {\n ret = ret.replace(/H|m/g, '(' + cRegex + '?)');\n }\n var splitStr = (ret.split(';').map(function (str) {\n return pattern.replace('{0}', str);\n }));\n ret = splitStr.join('|') + '|' + tZone.gmtZeroFormat;\n return ret;\n };\n /**\n * Returns zone based value.\n *\n * @param {boolean} flag ?\n * @param {string} val1 ?\n * @param {string} val2 ?\n * @param {NumericOptions} num ?\n * @returns {number} ?\n */\n DateParser.getZoneValue = function (flag, val1, val2, num) {\n var ival = flag ? val1 : val2;\n if (!ival) {\n return 0;\n }\n var value = this.internalNumberParser(ival, num);\n if (flag) {\n return -value;\n }\n return value;\n };\n return DateParser;\n}());\nexport { DateParser };\n","import { extend, isNullOrUndefined, isBlazor, getValue } from '../util';\nimport { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nvar regExp = RegExp;\nvar parseRegex = new regExp('^([^0-9]*)' + '(([0-9,]*[0-9]+)(.[0-9]+)?)' + '([Ee][+-]?[0-9]+)?([^0-9]*)$');\nvar groupRegex = /,/g;\nvar keys = ['minusSign', 'infinity'];\n/**\n * Module for Number Parser.\n *\n * @private\n */\nvar NumberParser = /** @class */ (function () {\n function NumberParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} option - Specific the format in which number will parsed.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n NumberParser.numberParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n if ((base.formatRegex.test(option.format)) || !(option.format)) {\n extend(parseOptions, base.getProperNumericSkeleton(option.format || 'N'));\n parseOptions.custom = false;\n if (!parseOptions.fractionDigits) {\n if (option.maximumFractionDigits) {\n parseOptions.maximumFractionDigits = option.maximumFractionDigits;\n }\n }\n }\n else {\n extend(parseOptions, base.customFormat(option.format, null, null));\n }\n var numbers = getValue('numbers', dependable.parserObject);\n var numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), true, isBlazor());\n parseOptions.symbolRegex = parser.getSymbolRegex(Object.keys(numOptions.symbolMatch));\n parseOptions.infinity = numOptions.symbolNumberSystem[keys[1]];\n var symbolpattern;\n if (!isBlazor()) {\n symbolpattern = base.getSymbolPattern(parseOptions.type, numOptions.numberSystem, dependable.numericObject, parseOptions.isAccount);\n if (symbolpattern) {\n symbolpattern = symbolpattern.replace(/\\u00A4/g, base.defaultCurrency);\n var split = symbolpattern.split(';');\n parseOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, '');\n parseOptions.pData = base.getFormatData(split[0], true, '');\n }\n }\n else {\n parseOptions.nData = extend({}, {}, getValue(parseOptions.type + 'nData', numbers));\n parseOptions.pData = extend({}, {}, getValue(parseOptions.type + 'pData', numbers));\n if (parseOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([parseOptions.pData, parseOptions.nData], getValue('currencySymbol', numbers), option.currency);\n }\n }\n return function (value) {\n return _this.getParsedNumber(value, parseOptions, numOptions);\n };\n };\n /**\n * Returns parsed number for the provided formatting options\n *\n * @param {string} value ?\n * @param {NumericParts} options ?\n * @param {NumericOptions} numOptions ?\n * @returns {number} ?\n */\n NumberParser.getParsedNumber = function (value, options, numOptions) {\n var isNegative;\n var isPercent;\n var tempValue;\n var lead;\n var end;\n var ret;\n if (value.indexOf(options.infinity) !== -1) {\n return Infinity;\n }\n else {\n value = parser.convertValueParts(value, options.symbolRegex, numOptions.symbolMatch);\n value = parser.convertValueParts(value, numOptions.numberParseRegex, numOptions.numericPair);\n value = value.indexOf('-') !== -1 ? value.replace('-.', '-0.') : value;\n if (value.indexOf('.') === 0) {\n value = '0' + value;\n }\n var matches = value.match(parseRegex);\n if (isNullOrUndefined(matches)) {\n return NaN;\n }\n lead = matches[1];\n tempValue = matches[2];\n var exponent = matches[5];\n end = matches[6];\n isNegative = options.custom ? ((lead === options.nData.nlead) && (end === options.nData.nend)) :\n ((lead.indexOf(options.nData.nlead) !== -1) && (end.indexOf(options.nData.nend) !== -1));\n isPercent = isNegative ?\n options.nData.isPercent :\n options.pData.isPercent;\n tempValue = tempValue.replace(groupRegex, '');\n if (exponent) {\n tempValue += exponent;\n }\n ret = +tempValue;\n if (options.type === 'percent' || isPercent) {\n ret = ret / 100;\n }\n if (options.custom || options.fractionDigits) {\n ret = parseFloat(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.fractionDigits));\n }\n if (options.maximumFractionDigits) {\n ret = this.convertMaxFracDigits(tempValue, options, ret, isNegative);\n }\n if (isNegative) {\n ret *= -1;\n }\n return ret;\n }\n };\n NumberParser.convertMaxFracDigits = function (value, options, ret, isNegative) {\n var decimalSplitValue = value.split('.');\n if (decimalSplitValue[1] && decimalSplitValue[1].length > options.maximumFractionDigits) {\n ret = +(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.maximumFractionDigits));\n }\n return ret;\n };\n return NumberParser;\n}());\nexport { NumberParser };\n","/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types */\nimport { isNullOrUndefined, getValue, extend, isBlazor } from './util';\nvar Observer = /** @class */ (function () {\n function Observer(context) {\n this.ranArray = [];\n this.boundedEvents = {};\n if (isNullOrUndefined(context)) {\n return;\n }\n this.context = context;\n }\n /**\n * To attach handler for given property in current context.\n *\n * @param {string} property - specifies the name of the event.\n * @param {Function} handler - Specifies the handler function to be called while event notified.\n * @param {Object} context - Specifies the context binded to the handler.\n * @param {string} id - specifies the random generated id.\n * @returns {void}\n */\n Observer.prototype.on = function (property, handler, context, id) {\n if (isNullOrUndefined(handler)) {\n return;\n }\n var cntxt = context || this.context;\n if (this.notExist(property)) {\n this.boundedEvents[\"\" + property] = [{ handler: handler, context: cntxt, id: id }];\n return;\n }\n if (!isNullOrUndefined(id)) {\n if (this.ranArray.indexOf(id) === -1) {\n this.ranArray.push(id);\n this.boundedEvents[\"\" + property].push({ handler: handler, context: cntxt, id: id });\n }\n }\n else if (!this.isHandlerPresent(this.boundedEvents[\"\" + property], handler)) {\n this.boundedEvents[\"\" + property].push({ handler: handler, context: cntxt });\n }\n };\n /**\n * To remove handlers from a event attached using on() function.\n *\n * @param {string} property - specifies the name of the event.\n * @param {Function} handler - Optional argument specifies the handler function to be called while event notified.\n * @param {string} id - specifies the random generated id.\n * @returns {void} ?\n */\n Observer.prototype.off = function (property, handler, id) {\n if (this.notExist(property)) {\n return;\n }\n var curObject = getValue(property, this.boundedEvents);\n if (handler) {\n for (var i = 0; i < curObject.length; i++) {\n if (id) {\n if (curObject[parseInt(i.toString(), 10)].id === id) {\n curObject.splice(i, 1);\n var indexLocation = this.ranArray.indexOf(id);\n if (indexLocation !== -1) {\n this.ranArray.splice(indexLocation, 1);\n }\n break;\n }\n }\n else if (handler === curObject[parseInt(i.toString(), 10)].handler) {\n curObject.splice(i, 1);\n break;\n }\n }\n }\n else {\n delete this.boundedEvents[\"\" + property];\n }\n };\n /**\n * To notify the handlers in the specified event.\n *\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it was failure to call.\n * @returns {void} ?\n */\n Observer.prototype.notify = function (property, argument, successHandler, errorHandler) {\n if (this.notExist(property)) {\n if (successHandler) {\n successHandler.call(this, argument);\n }\n return;\n }\n if (argument) {\n argument.name = property;\n }\n var blazor = 'Blazor';\n var curObject = getValue(property, this.boundedEvents).slice(0);\n if (window[\"\" + blazor]) {\n return this.blazorCallback(curObject, argument, successHandler, errorHandler, 0);\n }\n else {\n for (var _i = 0, curObject_1 = curObject; _i < curObject_1.length; _i++) {\n var cur = curObject_1[_i];\n cur.handler.call(cur.context, argument);\n }\n if (successHandler) {\n successHandler.call(this, argument);\n }\n }\n };\n Observer.prototype.blazorCallback = function (objs, argument, successHandler, errorHandler, index) {\n var _this = this;\n var isTrigger = index === objs.length - 1;\n if (index < objs.length) {\n var obj_1 = objs[parseInt(index.toString(), 10)];\n var promise = obj_1.handler.call(obj_1.context, argument);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n return promise;\n }\n promise.then(function (data) {\n data = typeof data === 'string' && _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data;\n extend(argument, argument, data, true);\n if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return _this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }).catch(function (data) {\n if (errorHandler) {\n errorHandler.call(obj_1.context, typeof data === 'string' &&\n _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data);\n }\n });\n }\n else if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }\n };\n Observer.prototype.dateReviver = function (key, value) {\n var dPattern = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}/;\n if (isBlazor && typeof value === 'string' && value.match(dPattern) !== null) {\n return (new Date(value));\n }\n return (value);\n };\n Observer.prototype.isJson = function (value) {\n try {\n JSON.parse(value);\n }\n catch (e) {\n return false;\n }\n return true;\n };\n /**\n * To destroy handlers in the event\n *\n * @returns {void} ?\n */\n Observer.prototype.destroy = function () {\n this.boundedEvents = this.context = undefined;\n };\n /**\n * To remove internationalization events\n *\n * @returns {void} ?\n */\n Observer.prototype.offIntlEvents = function () {\n var eventsArr = this.boundedEvents['notifyExternalChange'];\n if (eventsArr) {\n for (var i = 0; i < eventsArr.length; i++) {\n var curContext = eventsArr[parseInt(i.toString(), 10)].context;\n if (curContext && curContext.detectFunction && curContext.randomId && !curContext.isRendered) {\n this.off('notifyExternalChange', curContext.detectFunction, curContext.randomId);\n i--;\n }\n }\n if (!this.boundedEvents['notifyExternalChange'].length) {\n delete this.boundedEvents['notifyExternalChange'];\n }\n }\n };\n /**\n * Returns if the property exists.\n *\n * @param {string} prop ?\n * @returns {boolean} ?\n */\n Observer.prototype.notExist = function (prop) {\n return Object.prototype.hasOwnProperty.call(this.boundedEvents, prop) === false || this.boundedEvents[\"\" + prop].length <= 0;\n };\n /**\n * Returns if the handler is present.\n *\n * @param {BoundOptions[]} boundedEvents ?\n * @param {Function} handler ?\n * @returns {boolean} ?\n */\n Observer.prototype.isHandlerPresent = function (boundedEvents, handler) {\n for (var _i = 0, boundedEvents_1 = boundedEvents; _i < boundedEvents_1.length; _i++) {\n var cur = boundedEvents_1[_i];\n if (cur.handler === handler) {\n return true;\n }\n }\n return false;\n };\n return Observer;\n}());\nexport { Observer };\n","import { DateFormat } from './intl/date-formatter';\nimport { NumberFormat } from './intl/number-formatter';\nimport { DateParser } from './intl/date-parser';\nimport { NumberParser } from './intl/number-parser';\nimport { IntlBase } from './intl/intl-base';\nimport { extend, getValue, isBlazor } from './util';\nimport { Observer } from './observer';\n/**\n * Specifies the observer used for external change detection.\n */\nexport var onIntlChange = new Observer();\n/**\n * Specifies the default rtl status for EJ2 components.\n */\nexport var rightToLeft = false;\n/**\n * Specifies the CLDR data loaded for internationalization functionalities.\n *\n * @private\n */\nexport var cldrData = {};\n/**\n * Specifies the default culture value to be considered.\n *\n * @private\n */\nexport var defaultCulture = 'en-US';\n/**\n * Specifies default currency code to be considered\n *\n * @private\n */\nexport var defaultCurrencyCode = 'USD';\nvar mapper = ['numericObject', 'dateObject'];\n/**\n * Internationalization class provides support to parse and format the number and date object to the desired format.\n * ```typescript\n * // To set the culture globally\n * setCulture('en-GB');\n *\n * // To set currency code globally\n * setCurrencyCode('EUR');\n *\n * //Load cldr data\n * loadCldr(gregorainData);\n * loadCldr(timeZoneData);\n * loadCldr(numbersData);\n * loadCldr(numberSystemData);\n *\n * // To use formatter in component side\n * let Intl:Internationalization = new Internationalization();\n *\n * // Date formatting\n * let dateFormatter: Function = Intl.getDateFormat({skeleton:'long',type:'dateTime'});\n * dateFormatter(new Date('11/2/2016'));\n * dateFormatter(new Date('25/2/2030'));\n * Intl.formatDate(new Date(),{skeleton:'E'});\n *\n * //Number formatting\n * let numberFormatter: Function = Intl.getNumberFormat({skeleton:'C5'})\n * numberFormatter(24563334);\n * Intl.formatNumber(123123,{skeleton:'p2'});\n *\n * // Date parser\n * let dateParser: Function = Intl.getDateParser({skeleton:'short',type:'time'});\n * dateParser('10:30 PM');\n * Intl.parseDate('10',{skeleton:'H'});\n * ```\n */\nvar Internationalization = /** @class */ (function () {\n function Internationalization(cultureName) {\n if (cultureName) {\n this.culture = cultureName;\n }\n }\n /**\n * Returns the format function for given options.\n *\n * @param {DateFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getDateFormat = function (options) {\n return DateFormat.dateFormat(this.getCulture(), options || { type: 'date', skeleton: 'short' }, cldrData);\n };\n /**\n * Returns the format function for given options.\n *\n * @param {NumberFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getNumberFormat = function (options) {\n if (options && !options.currency) {\n options.currency = defaultCurrencyCode;\n }\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberFormat.numberFormatter(this.getCulture(), options || {}, cldrData);\n };\n /**\n * Returns the parser function for given options.\n *\n * @param {DateFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getDateParser = function (options) {\n return DateParser.dateParser(this.getCulture(), options || { skeleton: 'short', type: 'date' }, cldrData);\n };\n /**\n * Returns the parser function for given options.\n *\n * @param {NumberFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getNumberParser = function (options) {\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberParser.numberParser(this.getCulture(), options || { format: 'N' }, cldrData);\n };\n /**\n * Returns the formatted string based on format options.\n *\n * @param {number} value - Specifies the number to format.\n * @param {NumberFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string} ?\n */\n Internationalization.prototype.formatNumber = function (value, option) {\n return this.getNumberFormat(option)(value);\n };\n /**\n * Returns the formatted date string based on format options.\n *\n * @param {Date} value - Specifies the number to format.\n * @param {DateFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string} ?\n */\n Internationalization.prototype.formatDate = function (value, option) {\n return this.getDateFormat(option)(value);\n };\n /**\n * Returns the date object for given date string and options.\n *\n * @param {string} value - Specifies the string to parse.\n * @param {DateFormatOptions} option - Specifies the parse options in which the date string will be parsed.\n * @returns {Date} ?\n */\n Internationalization.prototype.parseDate = function (value, option) {\n return this.getDateParser(option)(value);\n };\n /**\n * Returns the number object from the given string value and options.\n *\n * @param {string} value - Specifies the string to parse.\n * @param {NumberFormatOptions} option - Specifies the parse options in which the string number will be parsed.\n * @returns {number} ?\n */\n Internationalization.prototype.parseNumber = function (value, option) {\n return this.getNumberParser(option)(value);\n };\n /**\n * Returns Native Date Time Pattern\n *\n * @param {DateFormatOptions} option - Specifies the parse options for resultant date time pattern.\n * @param {boolean} isExcelFormat - Specifies format value to be converted to excel pattern.\n * @returns {string} ?\n * @private\n */\n Internationalization.prototype.getDatePattern = function (option, isExcelFormat) {\n return IntlBase.getActualDateTimeFormat(this.getCulture(), option, cldrData, isExcelFormat);\n };\n /**\n * Returns Native Number Pattern\n *\n * @param {NumberFormatOptions} option - Specifies the parse options for resultant number pattern.\n * @param {boolean} isExcel ?\n * @returns {string} ?\n * @private\n */\n Internationalization.prototype.getNumberPattern = function (option, isExcel) {\n return IntlBase.getActualNumberFormat(this.getCulture(), option, cldrData, isExcel);\n };\n /**\n * Returns the First Day of the Week\n *\n * @returns {number} ?\n */\n Internationalization.prototype.getFirstDayOfWeek = function () {\n return IntlBase.getWeekData(this.getCulture(), cldrData);\n };\n /**\n * Returns the culture\n *\n * @returns {string} ?\n */\n Internationalization.prototype.getCulture = function () {\n return this.culture || defaultCulture;\n };\n return Internationalization;\n}());\nexport { Internationalization };\n/**\n * Set the default culture to all EJ2 components\n *\n * @param {string} cultureName - Specifies the culture name to be set as default culture.\n * @returns {void} ?\n */\nexport function setCulture(cultureName) {\n defaultCulture = cultureName;\n onIntlChange.notify('notifyExternalChange', { 'locale': defaultCulture });\n}\n/**\n * Set the default currency code to all EJ2 components\n *\n * @param {string} currencyCode Specifies the culture name to be set as default culture.\n * @returns {void} ?\n */\nexport function setCurrencyCode(currencyCode) {\n defaultCurrencyCode = currencyCode;\n onIntlChange.notify('notifyExternalChange', { 'currencyCode': defaultCurrencyCode });\n}\n/**\n * Load the CLDR data into context\n *\n * @param {Object[]} data Specifies the CLDR data's to be used for formatting and parser.\n * @returns {void} ?\n */\nexport function loadCldr() {\n var data = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n data[_i] = arguments[_i];\n }\n for (var _a = 0, data_1 = data; _a < data_1.length; _a++) {\n var obj = data_1[_a];\n extend(cldrData, obj, {}, true);\n }\n}\n/**\n * To enable or disable RTL functionality for all components globally.\n *\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable rtl option.\n * @returns {void} ?\n */\nexport function enableRtl(status) {\n if (status === void 0) { status = true; }\n rightToLeft = status;\n onIntlChange.notify('notifyExternalChange', { enableRtl: rightToLeft });\n}\n/**\n * To get the numeric CLDR object for given culture\n *\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} type ?\n * @returns {Object} ?\n * @ignore\n * @private\n */\nexport function getNumericObject(locale, type) {\n var numObject = IntlBase.getDependables(cldrData, locale, '', true)[mapper[0]];\n var dateObject = IntlBase.getDependables(cldrData, locale, '')[mapper[1]];\n var numSystem = getValue('defaultNumberingSystem', numObject);\n var symbPattern = isBlazor() ? getValue('numberSymbols', numObject) : getValue('symbols-numberSystem-' + numSystem, numObject);\n var pattern = IntlBase.getSymbolPattern(type || 'decimal', numSystem, numObject, false);\n return extend(symbPattern, IntlBase.getFormatData(pattern, true, '', true), { 'dateSeparator': IntlBase.getDateSeparator(dateObject) });\n}\n/**\n * To get the numeric CLDR number base object for given culture\n *\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} currency - Specifies the currency for which numericObject to be returned.\n * @returns {string} ?\n * @ignore\n * @private\n */\nexport function getNumberDependable(locale, currency) {\n var numObject = IntlBase.getDependables(cldrData, locale, '', true);\n return IntlBase.getCurrencySymbol(numObject.numericObject, currency);\n}\n/**\n * To get the default date CLDR object.\n *\n * @param {string} mode ?\n * @returns {Object} ?\n * @ignore\n * @private\n */\nexport function getDefaultDateObject(mode) {\n return IntlBase.getDependables(cldrData, '', mode, false)[mapper[1]];\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types */\nimport { defaultCurrencyCode } from '../internationalization';\nimport { getValue, isNullOrUndefined, extend, isBlazor } from '../util';\nimport { ParserBase as parser, getBlazorCurrencySymbol } from './parser-base';\nimport { DateFormat } from './date-formatter';\nimport { NumberFormat } from './number-formatter';\nimport { isUndefined } from '../util';\nvar regExp = RegExp;\nexport var blazorCultureFormats = {\n 'en-US': {\n 'd': 'M/d/y',\n 'D': 'EEEE, MMMM d, y',\n 'f': 'EEEE, MMMM d, y h:mm a',\n 'F': 'EEEE, MMMM d, y h:mm:s a',\n 'g': 'M/d/y h:mm a',\n 'G': 'M/d/yyyy h:mm:ss tt',\n 'm': 'MMMM d',\n 'M': 'MMMM d',\n 'r': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 'R': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 's': 'yyyy\\'-\\'MM\\'-\\'dd\\'T\\'HH\\':\\'mm\\':\\'ss',\n 't': 'h:mm tt',\n 'T': 'h:m:s tt',\n 'u': 'yyyy\\'-\\'MM\\'-\\'dd HH\\':\\'mm\\':\\'ss\\'Z\\'',\n 'U': 'dddd, MMMM d, yyyy h:mm:ss tt',\n 'y': 'MMMM yyyy',\n 'Y': 'MMMM yyyy'\n }\n};\n/**\n * Date base common constants and function for date parser and formatter.\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var IntlBase;\n(function (IntlBase) {\n // eslint-disable-next-line security/detect-unsafe-regex\n IntlBase.negativeDataRegex = /^(('[^']+'|''|[^*#@0,.E])*)(\\*.)?((([#,]*[0,]*0+)(\\.0*[0-9]*#*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n // eslint-disable-next-line security/detect-unsafe-regex\n IntlBase.customRegex = /^(('[^']+'|''|[^*#@0,.])*)(\\*.)?((([0#,]*[0,]*[0#]*[0# ]*)(\\.[0#]*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.latnParseRegex = /0|1|2|3|4|5|6|7|8|9/g;\n var fractionRegex = /[0-9]/g;\n IntlBase.defaultCurrency = '$';\n var mapper = ['infinity', 'nan', 'group', 'decimal'];\n var patternRegex = /G|M|L|H|c|'| a|yy|y|EEEE|E/g;\n var patternMatch = {\n 'G': '',\n 'M': 'm',\n 'L': 'm',\n 'H': 'h',\n 'c': 'd',\n '\\'': '\"',\n ' a': ' AM/PM',\n 'yy': 'yy',\n 'y': 'yyyy',\n 'EEEE': 'dddd',\n 'E': 'ddd'\n };\n IntlBase.dateConverterMapper = /dddd|ddd/ig;\n var defaultFirstDay = 'sun';\n IntlBase.islamicRegex = /^islamic/;\n var firstDayMapper = {\n 'sun': 0,\n 'mon': 1,\n 'tue': 2,\n 'wed': 3,\n 'thu': 4,\n 'fri': 5,\n 'sat': 6\n };\n IntlBase.formatRegex = new regExp('(^[ncpae]{1})([0-1]?[0-9]|20)?$', 'i');\n IntlBase.currencyFormatRegex = new regExp('(^[ca]{1})([0-1]?[0-9]|20)?$', 'i');\n IntlBase.curWithoutNumberRegex = /(c|a)$/ig;\n var typeMapper = {\n '$': 'isCurrency',\n '%': 'isPercent',\n '-': 'isNegative',\n 0: 'nlead',\n 1: 'nend'\n };\n IntlBase.dateParseRegex = /([a-z])\\1*|'([^']|'')+'|''|./gi;\n IntlBase.basicPatterns = ['short', 'medium', 'long', 'full'];\n IntlBase.defaultObject = {\n 'dates': {\n 'calendars': {\n 'gregorian': {\n 'months': {\n 'stand-alone': {\n 'abbreviated': {\n '1': 'Jan',\n '2': 'Feb',\n '3': 'Mar',\n '4': 'Apr',\n '5': 'May',\n '6': 'Jun',\n '7': 'Jul',\n '8': 'Aug',\n '9': 'Sep',\n '10': 'Oct',\n '11': 'Nov',\n '12': 'Dec'\n },\n 'narrow': {\n '1': 'J',\n '2': 'F',\n '3': 'M',\n '4': 'A',\n '5': 'M',\n '6': 'J',\n '7': 'J',\n '8': 'A',\n '9': 'S',\n '10': 'O',\n '11': 'N',\n '12': 'D'\n },\n 'wide': {\n '1': 'January',\n '2': 'February',\n '3': 'March',\n '4': 'April',\n '5': 'May',\n '6': 'June',\n '7': 'July',\n '8': 'August',\n '9': 'September',\n '10': 'October',\n '11': 'November',\n '12': 'December'\n }\n }\n },\n 'days': {\n 'stand-alone': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'narrow': {\n 'sun': 'S',\n 'mon': 'M',\n 'tue': 'T',\n 'wed': 'W',\n 'thu': 'T',\n 'fri': 'F',\n 'sat': 'S'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n }\n },\n 'dayPeriods': {\n 'format': {\n 'wide': {\n 'am': 'AM',\n 'pm': 'PM'\n }\n }\n },\n 'eras': {\n 'eraNames': {\n '0': 'Before Christ',\n '0-alt-variant': 'Before Common Era',\n '1': 'Anno Domini',\n '1-alt-variant': 'Common Era'\n },\n 'eraAbbr': {\n '0': 'BC',\n '0-alt-variant': 'BCE',\n '1': 'AD',\n '1-alt-variant': 'CE'\n },\n 'eraNarrow': {\n '0': 'B',\n '0-alt-variant': 'BCE',\n '1': 'A',\n '1-alt-variant': 'CE'\n }\n },\n 'dateFormats': {\n 'full': 'EEEE, MMMM d, y',\n 'long': 'MMMM d, y',\n 'medium': 'MMM d, y',\n 'short': 'M/d/yy'\n },\n 'timeFormats': {\n 'full': 'h:mm:ss a zzzz',\n 'long': 'h:mm:ss a z',\n 'medium': 'h:mm:ss a',\n 'short': 'h:mm a'\n },\n 'dateTimeFormats': {\n 'full': '{1} \\'at\\' {0}',\n 'long': '{1} \\'at\\' {0}',\n 'medium': '{1}, {0}',\n 'short': '{1}, {0}',\n 'availableFormats': {\n 'd': 'd',\n 'E': 'ccc',\n 'Ed': 'd E',\n 'Ehm': 'E h:mm a',\n 'EHm': 'E HH:mm',\n 'Ehms': 'E h:mm:ss a',\n 'EHms': 'E HH:mm:ss',\n 'Gy': 'y G',\n 'GyMMM': 'MMM y G',\n 'GyMMMd': 'MMM d, y G',\n 'GyMMMEd': 'E, MMM d, y G',\n 'h': 'h a',\n 'H': 'HH',\n 'hm': 'h:mm a',\n 'Hm': 'HH:mm',\n 'hms': 'h:mm:ss a',\n 'Hms': 'HH:mm:ss',\n 'hmsv': 'h:mm:ss a v',\n 'Hmsv': 'HH:mm:ss v',\n 'hmv': 'h:mm a v',\n 'Hmv': 'HH:mm v',\n 'M': 'L',\n 'Md': 'M/d',\n 'MEd': 'E, M/d',\n 'MMM': 'LLL',\n 'MMMd': 'MMM d',\n 'MMMEd': 'E, MMM d',\n 'MMMMd': 'MMMM d',\n 'ms': 'mm:ss',\n 'y': 'y',\n 'yM': 'M/y',\n 'yMd': 'M/d/y',\n 'yMEd': 'E, M/d/y',\n 'yMMM': 'MMM y',\n 'yMMMd': 'MMM d, y',\n 'yMMMEd': 'E, MMM d, y',\n 'yMMMM': 'MMMM y'\n }\n }\n },\n 'islamic': {\n 'months': {\n 'stand-alone': {\n 'abbreviated': {\n '1': 'Muh.',\n '2': 'Saf.',\n '3': 'Rab. I',\n '4': 'Rab. II',\n '5': 'Jum. I',\n '6': 'Jum. II',\n '7': 'Raj.',\n '8': 'Sha.',\n '9': 'Ram.',\n '10': 'Shaw.',\n '11': 'Dhuʻl-Q.',\n '12': 'Dhuʻl-H.'\n },\n 'narrow': {\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9',\n '10': '10',\n '11': '11',\n '12': '12'\n },\n 'wide': {\n '1': 'Muharram',\n '2': 'Safar',\n '3': 'Rabiʻ I',\n '4': 'Rabiʻ II',\n '5': 'Jumada I',\n '6': 'Jumada II',\n '7': 'Rajab',\n '8': 'Shaʻban',\n '9': 'Ramadan',\n '10': 'Shawwal',\n '11': 'Dhuʻl-Qiʻdah',\n '12': 'Dhuʻl-Hijjah'\n }\n }\n },\n 'days': {\n 'stand-alone': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'narrow': {\n 'sun': 'S',\n 'mon': 'M',\n 'tue': 'T',\n 'wed': 'W',\n 'thu': 'T',\n 'fri': 'F',\n 'sat': 'S'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n }\n },\n 'dayPeriods': {\n 'format': {\n 'wide': {\n 'am': 'AM',\n 'pm': 'PM'\n }\n }\n },\n 'eras': {\n 'eraNames': {\n '0': 'AH'\n },\n 'eraAbbr': {\n '0': 'AH'\n },\n 'eraNarrow': {\n '0': 'AH'\n }\n },\n 'dateFormats': {\n 'full': 'EEEE, MMMM d, y G',\n 'long': 'MMMM d, y G',\n 'medium': 'MMM d, y G',\n 'short': 'M/d/y GGGGG'\n },\n 'timeFormats': {\n 'full': 'h:mm:ss a zzzz',\n 'long': 'h:mm:ss a z',\n 'medium': 'h:mm:ss a',\n 'short': 'h:mm a'\n },\n 'dateTimeFormats': {\n 'full': '{1} \\'at\\' {0}',\n 'long': '{1} \\'at\\' {0}',\n 'medium': '{1}, {0}',\n 'short': '{1}, {0}',\n 'availableFormats': {\n 'd': 'd',\n 'E': 'ccc',\n 'Ed': 'd E',\n 'Ehm': 'E h:mm a',\n 'EHm': 'E HH:mm',\n 'Ehms': 'E h:mm:ss a',\n 'EHms': 'E HH:mm:ss',\n 'Gy': 'y G',\n 'GyMMM': 'MMM y G',\n 'GyMMMd': 'MMM d, y G',\n 'GyMMMEd': 'E, MMM d, y G',\n 'h': 'h a',\n 'H': 'HH',\n 'hm': 'h:mm a',\n 'Hm': 'HH:mm',\n 'hms': 'h:mm:ss a',\n 'Hms': 'HH:mm:ss',\n 'M': 'L',\n 'Md': 'M/d',\n 'MEd': 'E, M/d',\n 'MMM': 'LLL',\n 'MMMd': 'MMM d',\n 'MMMEd': 'E, MMM d',\n 'MMMMd': 'MMMM d',\n 'ms': 'mm:ss',\n 'y': 'y G',\n 'yyyy': 'y G',\n 'yyyyM': 'M/y GGGGG',\n 'yyyyMd': 'M/d/y GGGGG',\n 'yyyyMEd': 'E, M/d/y GGGGG',\n 'yyyyMMM': 'MMM y G',\n 'yyyyMMMd': 'MMM d, y G',\n 'yyyyMMMEd': 'E, MMM d, y G',\n 'yyyyMMMM': 'MMMM y G',\n 'yyyyQQQ': 'QQQ y G',\n 'yyyyQQQQ': 'QQQQ y G'\n }\n }\n }\n },\n 'timeZoneNames': {\n 'hourFormat': '+HH:mm;-HH:mm',\n 'gmtFormat': 'GMT{0}',\n 'gmtZeroFormat': 'GMT'\n }\n },\n 'numbers': {\n 'currencies': {\n 'USD': {\n 'displayName': 'US Dollar',\n 'symbol': '$',\n 'symbol-alt-narrow': '$'\n },\n 'EUR': {\n 'displayName': 'Euro',\n 'symbol': '€',\n 'symbol-alt-narrow': '€'\n },\n 'GBP': {\n 'displayName': 'British Pound',\n 'symbol-alt-narrow': '£'\n }\n },\n 'defaultNumberingSystem': 'latn',\n 'minimumGroupingDigits': '1',\n 'symbols-numberSystem-latn': {\n 'decimal': '.',\n 'group': ',',\n 'list': ';',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'exponential': 'E',\n 'superscriptingExponent': '×',\n 'perMille': '‰',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'timeSeparator': ':'\n },\n 'decimalFormats-numberSystem-latn': {\n 'standard': '#,##0.###'\n },\n 'percentFormats-numberSystem-latn': {\n 'standard': '#,##0%'\n },\n 'currencyFormats-numberSystem-latn': {\n 'standard': '¤#,##0.00',\n 'accounting': '¤#,##0.00;(¤#,##0.00)'\n },\n 'scientificFormats-numberSystem-latn': {\n 'standard': '#E0'\n }\n }\n };\n IntlBase.blazorDefaultObject = {\n 'numbers': {\n 'mapper': {\n '0': '0',\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9'\n },\n 'mapperDigits': '0123456789',\n 'numberSymbols': {\n 'decimal': '.',\n 'group': ',',\n 'plusSign': '+',\n 'minusSign': '-',\n 'percentSign': '%',\n 'nan': 'NaN',\n 'timeSeparator': ':',\n 'infinity': '∞'\n },\n 'timeSeparator': ':',\n 'currencySymbol': '$',\n 'currencypData': {\n 'nlead': '$',\n 'nend': '',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'percentpData': {\n 'nlead': '',\n 'nend': '%',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'percentnData': {\n 'nlead': '-',\n 'nend': '%',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'currencynData': {\n 'nlead': '($',\n 'nend': ')',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'decimalnData': {\n 'nlead': '-',\n 'nend': '',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'decimalpData': {\n 'nlead': '',\n 'nend': '',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n }\n },\n 'dates': {\n 'dayPeriods': {\n 'am': 'AM',\n 'pm': 'PM'\n },\n 'dateSeperator': '/',\n 'days': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n },\n 'months': {\n 'abbreviated': {\n '1': 'Jan',\n '2': 'Feb',\n '3': 'Mar',\n '4': 'Apr',\n '5': 'May',\n '6': 'Jun',\n '7': 'Jul',\n '8': 'Aug',\n '9': 'Sep',\n '10': 'Oct',\n '11': 'Nov',\n '12': 'Dec'\n },\n 'wide': {\n '1': 'January',\n '2': 'February',\n '3': 'March',\n '4': 'April',\n '5': 'May',\n '6': 'June',\n '7': 'July',\n '8': 'August',\n '9': 'September',\n '10': 'October',\n '11': 'November',\n '12': 'December'\n }\n },\n 'eras': {\n '1': 'AD'\n }\n }\n };\n IntlBase.monthIndex = {\n 3: 'abbreviated',\n 4: 'wide',\n 5: 'narrow',\n 1: 'abbreviated'\n };\n /**\n *\n */\n IntlBase.month = 'months';\n IntlBase.days = 'days';\n /**\n * Default numerber Object\n */\n IntlBase.patternMatcher = {\n C: 'currency',\n P: 'percent',\n N: 'decimal',\n A: 'currency',\n E: 'scientific'\n };\n /**\n * Returns the resultant pattern based on the skeleton, dateObject and the type provided\n *\n * @private\n * @param {string} skeleton ?\n * @param {Object} dateObject ?\n * @param {string} type ?\n * @param {boolean} isIslamic ?\n * @param {string} blazorCulture ?\n * @returns {string} ?\n */\n function getResultantPattern(skeleton, dateObject, type, isIslamic, blazorCulture) {\n var resPattern;\n var iType = type || 'date';\n if (blazorCulture) {\n resPattern = compareBlazorDateFormats({ skeleton: skeleton }, blazorCulture).format ||\n compareBlazorDateFormats({ skeleton: 'd' }, 'en-US').format;\n }\n else {\n if (IntlBase.basicPatterns.indexOf(skeleton) !== -1) {\n resPattern = getValue(iType + 'Formats.' + skeleton, dateObject);\n if (iType === 'dateTime') {\n var dPattern = getValue('dateFormats.' + skeleton, dateObject);\n var tPattern = getValue('timeFormats.' + skeleton, dateObject);\n resPattern = resPattern.replace('{1}', dPattern).replace('{0}', tPattern);\n }\n }\n else {\n resPattern = getValue('dateTimeFormats.availableFormats.' + skeleton, dateObject);\n }\n if (isUndefined(resPattern) && skeleton === 'yMd') {\n resPattern = 'M/d/y';\n }\n }\n return resPattern;\n }\n IntlBase.getResultantPattern = getResultantPattern;\n /**\n * Returns the dependable object for provided cldr data and culture\n *\n * @private\n * @param {Object} cldr ?\n * @param {string} culture ?\n * @param {string} mode ?\n * @param {boolean} isNumber ?\n * @returns {any} ?\n */\n function getDependables(cldr, culture, mode, isNumber) {\n var ret = {};\n var calendartype = mode || 'gregorian';\n ret.parserObject = parser.getMainObject(cldr, culture) || (isBlazor() ? IntlBase.blazorDefaultObject : IntlBase.defaultObject);\n if (isNumber) {\n ret.numericObject = getValue('numbers', ret.parserObject);\n }\n else {\n var dateString = isBlazor() ? 'dates' : ('dates.calendars.' + calendartype);\n ret.dateObject = getValue(dateString, ret.parserObject);\n }\n return ret;\n }\n IntlBase.getDependables = getDependables;\n /**\n * Returns the symbol pattern for provided parameters\n *\n * @private\n * @param {string} type ?\n * @param {string} numSystem ?\n * @param {Object} obj ?\n * @param {boolean} isAccount ?\n * @returns {string} ?\n */\n function getSymbolPattern(type, numSystem, obj, isAccount) {\n return getValue(type + 'Formats-numberSystem-' +\n numSystem + (isAccount ? '.accounting' : '.standard'), obj) || (isAccount ? getValue(type + 'Formats-numberSystem-' +\n numSystem + '.standard', obj) : '');\n }\n IntlBase.getSymbolPattern = getSymbolPattern;\n /**\n *\n * @param {string} format ?\n * @returns {string} ?\n */\n function ConvertDateToWeekFormat(format) {\n var convertMapper = format.match(IntlBase.dateConverterMapper);\n if (convertMapper && isBlazor()) {\n var tempString = convertMapper[0].length === 3 ? 'EEE' : 'EEEE';\n return format.replace(IntlBase.dateConverterMapper, tempString);\n }\n return format;\n }\n IntlBase.ConvertDateToWeekFormat = ConvertDateToWeekFormat;\n /**\n *\n * @param {DateFormatOptions} formatOptions ?\n * @param {string} culture ?\n * @returns {DateFormatOptions} ?\n */\n function compareBlazorDateFormats(formatOptions, culture) {\n var format = formatOptions.format || formatOptions.skeleton;\n var curFormatMapper = getValue((culture || 'en-US') + '.' + format, blazorCultureFormats);\n if (!curFormatMapper) {\n curFormatMapper = getValue('en-US.' + format, blazorCultureFormats);\n }\n if (curFormatMapper) {\n curFormatMapper = ConvertDateToWeekFormat(curFormatMapper);\n formatOptions.format = curFormatMapper.replace(/tt/, 'a');\n }\n return formatOptions;\n }\n IntlBase.compareBlazorDateFormats = compareBlazorDateFormats;\n /**\n * Returns proper numeric skeleton\n *\n * @private\n * @param {string} skeleton ?\n * @returns {any} ?\n */\n function getProperNumericSkeleton(skeleton) {\n var matches = skeleton.match(IntlBase.formatRegex);\n var ret = {};\n var pattern = matches[1].toUpperCase();\n ret.isAccount = (pattern === 'A');\n ret.type = IntlBase.patternMatcher[\"\" + pattern];\n if (skeleton.length > 1) {\n ret.fractionDigits = parseInt(matches[2], 10);\n }\n return ret;\n }\n IntlBase.getProperNumericSkeleton = getProperNumericSkeleton;\n /**\n * Returns format data for number formatting like minimum fraction, maximum fraction, etc..,\n *\n * @private\n * @param {string} pattern ?\n * @param {boolean} needFraction ?\n * @param {string} cSymbol ?\n * @param {boolean} fractionOnly ?\n * @returns {any} ?\n */\n function getFormatData(pattern, needFraction, cSymbol, fractionOnly) {\n var nData = fractionOnly ? {} : { nlead: '', nend: '' };\n var match = pattern.match(IntlBase.customRegex);\n if (match) {\n if (!fractionOnly) {\n nData.nlead = changeCurrencySymbol(match[1], cSymbol);\n nData.nend = changeCurrencySymbol(match[10], cSymbol);\n nData.groupPattern = match[4];\n }\n var fraction = match[7];\n if (fraction && needFraction) {\n var fmatch = fraction.match(fractionRegex);\n if (!isNullOrUndefined(fmatch)) {\n nData.minimumFraction = fmatch.length;\n }\n else {\n nData.minimumFraction = 0;\n }\n nData.maximumFraction = fraction.length - 1;\n }\n }\n return nData;\n }\n IntlBase.getFormatData = getFormatData;\n /**\n * Changes currency symbol\n *\n * @private\n * @param {string} val ?\n * @param {string} sym ?\n * @returns {string} ?\n */\n function changeCurrencySymbol(val, sym) {\n if (val) {\n val = val.replace(IntlBase.defaultCurrency, sym);\n return (sym === '') ? val.trim() : val;\n }\n return '';\n }\n IntlBase.changeCurrencySymbol = changeCurrencySymbol;\n /**\n * Returns currency symbol based on currency code ?\n *\n * @private\n * @param {Object} numericObject ?\n * @param {string} currencyCode ?\n * @param {string} altSymbol ?\n * @param {string} ignoreCurrency ?\n * @returns {string} ?\n */\n function getCurrencySymbol(numericObject, currencyCode, altSymbol, ignoreCurrency) {\n var symbol = altSymbol ? ('.' + altSymbol) : '.symbol';\n var getCurrency = ignoreCurrency ? '$' : getValue('currencies.' + currencyCode + symbol, numericObject) ||\n getValue('currencies.' + currencyCode + '.symbol-alt-narrow', numericObject) || '$';\n return getCurrency;\n }\n IntlBase.getCurrencySymbol = getCurrencySymbol;\n /**\n * Returns formatting options for custom number format\n *\n * @private\n * @param {string} format ?\n * @param {CommonOptions} dOptions ?\n * @param {any} obj ?\n * @returns {any} ?\n */\n function customFormat(format, dOptions, obj) {\n var options = {};\n var formatSplit = format.split(';');\n var data = ['pData', 'nData', 'zeroData'];\n for (var i = 0; i < formatSplit.length; i++) {\n options[\"\" + data[parseInt(i.toString(), 10)]] = customNumberFormat(formatSplit[parseInt(i.toString(), 10)], dOptions, obj);\n }\n if (isNullOrUndefined(options.nData)) {\n options.nData = extend({}, options.pData);\n options.nData.nlead = isNullOrUndefined(dOptions) ? '-' + options.nData.nlead : dOptions.minusSymbol + options.nData.nlead;\n }\n return options;\n }\n IntlBase.customFormat = customFormat;\n /**\n * Returns custom formatting options\n *\n * @private\n * @param {string} format ?\n * @param {CommonOptions} dOptions ?\n * @param {Object} numObject ?\n * @returns {any} ?\n */\n function customNumberFormat(format, dOptions, numObject) {\n var cOptions = { type: 'decimal', minimumFractionDigits: 0, maximumFractionDigits: 0 };\n var pattern = format.match(IntlBase.customRegex);\n if (isNullOrUndefined(pattern) || (pattern[5] === '' && format !== 'N/A')) {\n cOptions.type = undefined;\n return cOptions;\n }\n cOptions.nlead = pattern[1];\n cOptions.nend = pattern[10];\n var integerPart = pattern[6];\n var spaceCapture = integerPart.match(/ $/g) ? true : false;\n var spaceGrouping = integerPart.replace(/ $/g, '').indexOf(' ') !== -1;\n cOptions.useGrouping = integerPart.indexOf(',') !== -1 || spaceGrouping;\n integerPart = integerPart.replace(/,/g, '');\n var fractionPart = pattern[7];\n if (integerPart.indexOf('0') !== -1) {\n cOptions.minimumIntegerDigits = integerPart.length - integerPart.indexOf('0');\n }\n if (!isNullOrUndefined(fractionPart)) {\n cOptions.minimumFractionDigits = fractionPart.lastIndexOf('0');\n cOptions.maximumFractionDigits = fractionPart.lastIndexOf('#');\n if (cOptions.minimumFractionDigits === -1) {\n cOptions.minimumFractionDigits = 0;\n }\n if (cOptions.maximumFractionDigits === -1 || cOptions.maximumFractionDigits < cOptions.minimumFractionDigits) {\n cOptions.maximumFractionDigits = cOptions.minimumFractionDigits;\n }\n }\n if (!isNullOrUndefined(dOptions)) {\n dOptions.isCustomFormat = true;\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '$', dOptions.currencySymbol));\n if (!cOptions.isCurrency) {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', dOptions.percentSymbol));\n }\n }\n else {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', '%'));\n }\n if (!isNullOrUndefined(numObject)) {\n var symbolPattern = getSymbolPattern(cOptions.type, dOptions.numberMapper.numberSystem, numObject, false);\n if (cOptions.useGrouping) {\n cOptions.groupSeparator = spaceGrouping ? ' ' : dOptions.numberMapper.numberSymbols[mapper[2]];\n cOptions.groupData = NumberFormat.getGroupingDetails(symbolPattern.split(';')[0]);\n }\n cOptions.nlead = cOptions.nlead.replace(/'/g, '');\n cOptions.nend = spaceCapture ? ' ' + cOptions.nend.replace(/'/g, '') : cOptions.nend.replace(/'/g, '');\n }\n return cOptions;\n }\n IntlBase.customNumberFormat = customNumberFormat;\n /**\n * Returns formatting options for currency or percent type\n *\n * @private\n * @param {string[]} parts ?\n * @param {string} actual ?\n * @param {string} symbol ?\n * @returns {any} ?\n */\n function isCurrencyPercent(parts, actual, symbol) {\n var options = { nlead: parts[0], nend: parts[1] };\n for (var i = 0; i < 2; i++) {\n var part = parts[parseInt(i.toString(), 10)];\n var loc = part.indexOf(actual);\n if ((loc !== -1) && ((loc < part.indexOf('\\'')) || (loc > part.lastIndexOf('\\'')))) {\n options[\"\" + typeMapper[parseInt(i.toString(), 10)]] = part.substr(0, loc) + symbol + part.substr(loc + 1);\n options[\"\" + typeMapper[\"\" + actual]] = true;\n options.type = options.isCurrency ? 'currency' : 'percent';\n break;\n }\n }\n return options;\n }\n IntlBase.isCurrencyPercent = isCurrencyPercent;\n /**\n * Returns culture based date separator\n *\n * @private\n * @param {Object} dateObj ?\n * @returns {string} ?\n */\n function getDateSeparator(dateObj) {\n var value = (getValue('dateFormats.short', dateObj) || '').match(/[dM]([^dM])[dM]/i);\n return value ? value[1] : '/';\n }\n IntlBase.getDateSeparator = getDateSeparator;\n /**\n * Returns Native Date Time pattern\n *\n * @private\n * @param {string} culture ?\n * @param {DateFormatOptions} options ?\n * @param {Object} cldr ?\n * @param {boolean} isExcelFormat ?\n * @returns {string} ?\n */\n function getActualDateTimeFormat(culture, options, cldr, isExcelFormat) {\n var dependable = getDependables(cldr, culture, options.calendar);\n if (isBlazor()) {\n options = compareBlazorDateFormats(options, culture);\n }\n var actualPattern = options.format || getResultantPattern(options.skeleton, dependable.dateObject, options.type);\n if (isExcelFormat) {\n actualPattern = actualPattern.replace(patternRegex, function (pattern) {\n return patternMatch[\"\" + pattern];\n });\n if (actualPattern.indexOf('z') !== -1) {\n var tLength = actualPattern.match(/z/g).length;\n var timeZonePattern = void 0;\n var options_1 = { 'timeZone': {} };\n options_1.numMapper = parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n options_1.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n var value = new Date();\n var timezone = value.getTimezoneOffset();\n var pattern = (tLength < 4) ? '+H;-H' : options_1.timeZone.hourFormat;\n pattern = pattern.replace(/:/g, options_1.numMapper.timeSeparator);\n if (timezone === 0) {\n timeZonePattern = options_1.timeZone.gmtZeroFormat;\n }\n else {\n timeZonePattern = DateFormat.getTimeZoneValue(timezone, pattern);\n timeZonePattern = options_1.timeZone.gmtFormat.replace(/\\{0\\}/, timeZonePattern);\n }\n actualPattern = actualPattern.replace(/[z]+/, '\"' + timeZonePattern + '\"');\n }\n actualPattern = actualPattern.replace(/ $/, '');\n }\n return actualPattern;\n }\n IntlBase.getActualDateTimeFormat = getActualDateTimeFormat;\n /**\n *\n * @param {string} actual ?\n * @param {any} option ?\n * @returns {any} ?\n */\n function processSymbol(actual, option) {\n if (actual.indexOf(',') !== -1) {\n var split = actual.split(',');\n actual = (split[0] + getValue('numberMapper.numberSymbols.group', option) +\n split[1].replace('.', getValue('numberMapper.numberSymbols.decimal', option)));\n }\n else {\n actual = actual.replace('.', getValue('numberMapper.numberSymbols.decimal', option));\n }\n return actual;\n }\n IntlBase.processSymbol = processSymbol;\n /**\n * Returns Native Number pattern\n *\n * @private\n * @param {string} culture ?\n * @param {NumberFormatOptions} options ?\n * @param {Object} cldr ?\n * @param {boolean} isExcel ?\n * @returns {string} ?\n */\n function getActualNumberFormat(culture, options, cldr, isExcel) {\n var dependable = getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n var numrericObject = dependable.numericObject;\n var minFrac;\n var curObj = {};\n var curMatch = (options.format || '').match(IntlBase.currencyFormatRegex);\n var type = IntlBase.formatRegex.test(options.format) ? getProperNumericSkeleton(options.format || 'N') : {};\n var dOptions = {};\n if (curMatch) {\n dOptions.numberMapper = isBlazor() ?\n extend({}, dependable.numericObject) :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n var curCode = isBlazor() ? getValue('currencySymbol', dependable.numericObject) :\n getCurrencySymbol(dependable.numericObject, options.currency || defaultCurrencyCode, options.altSymbol);\n var symbolPattern = getSymbolPattern('currency', dOptions.numberMapper.numberSystem, dependable.numericObject, (/a/i).test(options.format));\n symbolPattern = symbolPattern.replace(/\\u00A4/g, curCode);\n var split = symbolPattern.split(';');\n curObj.hasNegativePattern = isBlazor() ? true : (split.length > 1);\n curObj.nData = isBlazor() ? getValue(type.type + 'nData', numrericObject) :\n getFormatData(split[1] || '-' + split[0], true, curCode);\n curObj.pData = isBlazor() ? getValue(type.type + 'pData', numrericObject) :\n getFormatData(split[0], false, curCode);\n if (!curMatch[2] && !options.minimumFractionDigits && !options.maximumFractionDigits) {\n minFrac = getFormatData(symbolPattern.split(';')[0], true, '', true).minimumFraction;\n }\n }\n var actualPattern;\n if ((IntlBase.formatRegex.test(options.format)) || !(options.format)) {\n extend(parseOptions, getProperNumericSkeleton(options.format || 'N'));\n parseOptions.custom = false;\n actualPattern = '###0';\n if (parseOptions.fractionDigits || options.minimumFractionDigits || options.maximumFractionDigits || minFrac) {\n var defaultMinimum = 0;\n if (parseOptions.fractionDigits) {\n options.minimumFractionDigits = options.maximumFractionDigits = parseOptions.fractionDigits;\n }\n actualPattern = fractionDigitsPattern(actualPattern, minFrac || parseOptions.fractionDigits ||\n options.minimumFractionDigits || defaultMinimum, options.maximumFractionDigits || defaultMinimum);\n }\n if (options.minimumIntegerDigits) {\n actualPattern = minimumIntegerPattern(actualPattern, options.minimumIntegerDigits);\n }\n if (options.useGrouping) {\n actualPattern = groupingPattern(actualPattern);\n }\n if (parseOptions.type === 'currency' || (parseOptions.type && isBlazor())) {\n if (isBlazor() && parseOptions.type !== 'currency') {\n curObj.pData = getValue(parseOptions.type + 'pData', numrericObject);\n curObj.nData = getValue(parseOptions.type + 'nData', numrericObject);\n }\n var cPattern = actualPattern;\n actualPattern = curObj.pData.nlead + cPattern + curObj.pData.nend;\n if (curObj.hasNegativePattern || isBlazor()) {\n actualPattern += ';' + curObj.nData.nlead + cPattern + curObj.nData.nend;\n }\n }\n if (parseOptions.type === 'percent' && !isBlazor()) {\n actualPattern += ' %';\n }\n }\n else {\n actualPattern = options.format.replace(/'/g, '\"');\n }\n if (Object.keys(dOptions).length > 0) {\n actualPattern = !isExcel ? processSymbol(actualPattern, dOptions) : actualPattern;\n }\n return actualPattern;\n }\n IntlBase.getActualNumberFormat = getActualNumberFormat;\n /**\n *\n * @param {string} pattern ?\n * @param {number} minDigits ?\n * @param {number} maxDigits ?\n * @returns {string} ?\n */\n function fractionDigitsPattern(pattern, minDigits, maxDigits) {\n pattern += '.';\n for (var a = 0; a < minDigits; a++) {\n pattern += '0';\n }\n if (minDigits < maxDigits) {\n var diff = maxDigits - minDigits;\n for (var b = 0; b < diff; b++) {\n pattern += '#';\n }\n }\n return pattern;\n }\n IntlBase.fractionDigitsPattern = fractionDigitsPattern;\n /**\n *\n * @param {string} pattern ?\n * @param {number} digits ?\n * @returns {string} ?\n */\n function minimumIntegerPattern(pattern, digits) {\n var temp = pattern.split('.');\n var integer = '';\n for (var x = 0; x < digits; x++) {\n integer += '0';\n }\n return temp[1] ? (integer + '.' + temp[1]) : integer;\n }\n IntlBase.minimumIntegerPattern = minimumIntegerPattern;\n /**\n *\n * @param {string} pattern ?\n * @returns {string} ?\n */\n function groupingPattern(pattern) {\n var temp = pattern.split('.');\n var integer = temp[0];\n var no = 3 - integer.length % 3;\n var hash = (no && no === 1) ? '#' : (no === 2 ? '##' : '');\n integer = hash + integer;\n pattern = '';\n for (var x = integer.length - 1; x > 0; x = x - 3) {\n pattern = ',' + integer[x - 2] + integer[x - 1] + integer[parseInt(x.toString(), 10)] + pattern;\n }\n pattern = pattern.slice(1);\n return temp[1] ? (pattern + '.' + temp[1]) : pattern;\n }\n IntlBase.groupingPattern = groupingPattern;\n /**\n *\n * @param {string} culture ?\n * @param {Object} cldr ?\n * @returns {number} ?\n */\n function getWeekData(culture, cldr) {\n var firstDay = defaultFirstDay;\n var mapper = getValue('supplemental.weekData.firstDay', cldr);\n var iCulture = culture;\n if ((/en-/).test(iCulture)) {\n iCulture = iCulture.slice(3);\n }\n iCulture = iCulture.slice(0, 2).toUpperCase() + iCulture.substr(2);\n if (mapper) {\n firstDay = mapper[\"\" + iCulture] || mapper[iCulture.slice(0, 2)] || defaultFirstDay;\n }\n return firstDayMapper[\"\" + firstDay];\n }\n IntlBase.getWeekData = getWeekData;\n /**\n * @private\n * @param {any} pData ?\n * @param {string} aCurrency ?\n * @param {string} rCurrency ?\n * @returns {void} ?\n */\n function replaceBlazorCurrency(pData, aCurrency, rCurrency) {\n var iCurrency = getBlazorCurrencySymbol(rCurrency);\n if (aCurrency !== iCurrency) {\n for (var _i = 0, pData_1 = pData; _i < pData_1.length; _i++) {\n var data = pData_1[_i];\n data.nend = data.nend.replace(aCurrency, iCurrency);\n data.nlead = data.nlead.replace(aCurrency, iCurrency);\n }\n }\n }\n IntlBase.replaceBlazorCurrency = replaceBlazorCurrency;\n /**\n * @private\n * @param {Date} date ?\n * @returns {number} ?\n */\n function getWeekOfYear(date) {\n var newYear = new Date(date.getFullYear(), 0, 1);\n var day = newYear.getDay();\n var weeknum;\n day = (day >= 0 ? day : day + 7);\n var daynum = Math.floor((date.getTime() - newYear.getTime() -\n (date.getTimezoneOffset() - newYear.getTimezoneOffset()) * 60000) / 86400000) + 1;\n if (day < 4) {\n weeknum = Math.floor((daynum + day - 1) / 7) + 1;\n if (weeknum > 52) {\n var nYear = new Date(date.getFullYear() + 1, 0, 1);\n var nday = nYear.getDay();\n nday = nday >= 0 ? nday : nday + 7;\n weeknum = nday < 4 ? 1 : 53;\n }\n }\n else {\n weeknum = Math.floor((daynum + day - 1) / 7);\n }\n return weeknum;\n }\n IntlBase.getWeekOfYear = getWeekOfYear;\n})(IntlBase || (IntlBase = {}));\n","import { isNullOrUndefined, merge } from './util';\nvar headerRegex = /^(.*?):[ \\t]*([^\\r\\n]*)$/gm;\nvar defaultType = 'GET';\n/**\n * Ajax class provides ability to make asynchronous HTTP request to the server\n * ```typescript\n * var ajax = new Ajax(\"index.html\", \"GET\", true);\n * ajax.send().then(\n * function (value) {\n * console.log(value);\n * },\n * function (reason) {\n * console.log(reason);\n * });\n * ```\n */\nvar Ajax = /** @class */ (function () {\n /**\n * Constructor for Ajax class\n *\n * @param {string|Object} options ?\n * @param {string} type ?\n * @param {boolean} async ?\n * @returns defaultType any\n */\n function Ajax(options, type, async, contentType) {\n /**\n * A boolean value indicating whether the request should be sent asynchronous or not.\n *\n * @default true\n */\n this.mode = true;\n /**\n * A boolean value indicating whether to ignore the promise reject.\n *\n * @private\n * @default true\n */\n this.emitError = true;\n this.options = {};\n if (typeof options === 'string') {\n this.url = options;\n this.type = type ? type.toUpperCase() : defaultType;\n this.mode = !isNullOrUndefined(async) ? async : true;\n }\n else if (typeof options === 'object') {\n this.options = options;\n merge(this, this.options);\n }\n this.type = this.type ? this.type.toUpperCase() : defaultType;\n this.contentType = (this.contentType !== undefined) ? this.contentType : contentType;\n }\n /**\n *\n * Send the request to server.\n *\n * @param {any} data - To send the user data\n * @returns {Promise} ?\n */\n Ajax.prototype.send = function (data) {\n var _this = this;\n this.data = isNullOrUndefined(data) ? this.data : data;\n var eventArgs = {\n cancel: false,\n httpRequest: null\n };\n var promise = new Promise(function (resolve, reject) {\n _this.httpRequest = new XMLHttpRequest();\n _this.httpRequest.onreadystatechange = function () { _this.stateChange(resolve, reject); };\n if (!isNullOrUndefined(_this.onLoad)) {\n _this.httpRequest.onload = _this.onLoad;\n }\n if (!isNullOrUndefined(_this.onProgress)) {\n _this.httpRequest.onprogress = _this.onProgress;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onAbort)) {\n _this.httpRequest.onabort = _this.onAbort;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onError)) {\n _this.httpRequest.onerror = _this.onError;\n }\n //** Upload Events **/\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onUploadProgress)) {\n _this.httpRequest.upload.onprogress = _this.onUploadProgress;\n }\n _this.httpRequest.open(_this.type, _this.url, _this.mode);\n // Set default headers\n if (!isNullOrUndefined(_this.data) && _this.contentType !== null) {\n _this.httpRequest.setRequestHeader('Content-Type', _this.contentType || 'application/json; charset=utf-8');\n }\n if (_this.beforeSend) {\n eventArgs.httpRequest = _this.httpRequest;\n _this.beforeSend(eventArgs);\n }\n if (!eventArgs.cancel) {\n _this.httpRequest.send(!isNullOrUndefined(_this.data) ? _this.data : null);\n }\n });\n return promise;\n };\n Ajax.prototype.successHandler = function (data) {\n if (this.onSuccess) {\n this.onSuccess(data, this);\n }\n return data;\n };\n Ajax.prototype.failureHandler = function (reason) {\n if (this.onFailure) {\n this.onFailure(this.httpRequest);\n }\n return reason;\n };\n Ajax.prototype.stateChange = function (resolve, reject) {\n var data = this.httpRequest.responseText;\n if (this.dataType && this.dataType.toLowerCase() === 'json') {\n if (data === '') {\n data = undefined;\n }\n else {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n // no exception handle\n }\n }\n }\n if (this.httpRequest.readyState === 4) {\n //success range should be 200 to 299\n if ((this.httpRequest.status >= 200 && this.httpRequest.status <= 299) || this.httpRequest.status === 304) {\n resolve(this.successHandler(data));\n }\n else {\n if (this.emitError) {\n reject(new Error(this.failureHandler(this.httpRequest.statusText)));\n }\n else {\n resolve();\n }\n }\n }\n };\n /**\n * To get the response header from XMLHttpRequest\n *\n * @param {string} key Key to search in the response header\n * @returns {string} ?\n */\n Ajax.prototype.getResponseHeader = function (key) {\n var responseHeaders = {};\n var headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n while (headers) {\n responseHeaders[headers[1].toLowerCase()] = headers[2];\n headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n }\n var header = responseHeaders[key.toLowerCase()];\n return isNullOrUndefined(header) ? null : header;\n };\n return Ajax;\n}());\nexport { Ajax };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isUndefined } from './util';\nvar REGX_MOBILE = /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini|mobile/i;\nvar REGX_IE = /msie|trident/i;\nvar REGX_IE11 = /Trident\\/7\\./;\nvar REGX_IOS = /(ipad|iphone|ipod touch)/i;\nvar REGX_IOS7 = /(ipad|iphone|ipod touch);.*os 7_\\d|(ipad|iphone|ipod touch);.*os 8_\\d/i;\nvar REGX_ANDROID = /android/i;\nvar REGX_WINDOWS = /trident|windows phone|edge/i;\nvar REGX_VERSION = /(version)[ /]([\\w.]+)/i;\nvar REGX_BROWSER = {\n OPERA: /(opera|opr)(?:.*version|)[ /]([\\w.]+)/i,\n EDGE: /(edge)(?:.*version|)[ /]([\\w.]+)/i,\n CHROME: /(chrome|crios)[ /]([\\w.]+)/i,\n PANTHOMEJS: /(phantomjs)[ /]([\\w.]+)/i,\n SAFARI: /(safari)[ /]([\\w.]+)/i,\n WEBKIT: /(webkit)[ /]([\\w.]+)/i,\n MSIE: /(msie|trident) ([\\w.]+)/i,\n MOZILLA: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n};\n/* istanbul ignore else */\nif (typeof window !== 'undefined') {\n window.browserDetails = window.browserDetails || {};\n}\n/**\n * Get configuration details for Browser\n *\n * @private\n */\nvar Browser = /** @class */ (function () {\n function Browser() {\n }\n Browser.extractBrowserDetail = function () {\n var browserInfo = { culture: {} };\n var keys = Object.keys(REGX_BROWSER);\n var clientInfo = [];\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n clientInfo = Browser.userAgent.match(REGX_BROWSER[\"\" + key]);\n if (clientInfo) {\n browserInfo.name = (clientInfo[1].toLowerCase() === 'opr' ? 'opera' : clientInfo[1].toLowerCase());\n browserInfo.name = (clientInfo[1].toLowerCase() === 'crios' ? 'chrome' : browserInfo.name);\n browserInfo.version = clientInfo[2];\n browserInfo.culture.name = browserInfo.culture.language = navigator.language;\n if (Browser.userAgent.match(REGX_IE11)) {\n browserInfo.name = 'msie';\n break;\n }\n var version = Browser.userAgent.match(REGX_VERSION);\n if (browserInfo.name === 'safari' && version) {\n browserInfo.version = version[2];\n }\n break;\n }\n }\n return browserInfo;\n };\n /**\n * To get events from the browser\n *\n * @param {string} event - type of event triggered.\n * @returns {string} ?\n */\n Browser.getEvent = function (event) {\n var events = {\n start: {\n isPointer: 'pointerdown', isTouch: 'touchstart', isDevice: 'mousedown'\n },\n move: {\n isPointer: 'pointermove', isTouch: 'touchmove', isDevice: 'mousemove'\n },\n end: {\n isPointer: 'pointerup', isTouch: 'touchend', isDevice: 'mouseup'\n },\n cancel: {\n isPointer: 'pointercancel', isTouch: 'touchcancel', isDevice: 'mouseleave'\n }\n };\n return (Browser.isPointer ? events[\"\" + event].isPointer :\n (Browser.isTouch ? events[\"\" + event].isTouch + (!Browser.isDevice ? ' ' + events[\"\" + event].isDevice : '')\n : events[\"\" + event].isDevice));\n };\n /**\n * To get the Touch start event from browser\n *\n * @returns {string}\n */\n Browser.getTouchStartEvent = function () {\n return Browser.getEvent('start');\n };\n /**\n * To get the Touch end event from browser\n *\n * @returns {string}\n */\n Browser.getTouchEndEvent = function () {\n return Browser.getEvent('end');\n };\n /**\n * To get the Touch move event from browser\n *\n * @returns {string}\n */\n Browser.getTouchMoveEvent = function () {\n return Browser.getEvent('move');\n };\n /**\n * To cancel the touch event from browser\n *\n * @returns {string}\n */\n Browser.getTouchCancelEvent = function () {\n return Browser.getEvent('cancel');\n };\n /**\n * Check whether the browser on the iPad device is Safari or not\n *\n * @returns {boolean}\n */\n Browser.isSafari = function () {\n return (Browser.isDevice && Browser.isIos && Browser.isTouch && typeof window !== 'undefined'\n && window.navigator.userAgent.toLowerCase().indexOf('iphone') === -1\n && window.navigator.userAgent.toLowerCase().indexOf('safari') > -1);\n };\n /**\n * To get the value based on provided key and regX\n *\n * @param {string} key ?\n * @param {RegExp} regX ?\n * @returns {Object} ?\n */\n Browser.getValue = function (key, regX) {\n var browserDetails = typeof window !== 'undefined' ? window.browserDetails : {};\n if (typeof navigator !== 'undefined' && navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 && Browser.isTouch === true && !REGX_BROWSER.CHROME.test(navigator.userAgent)) {\n browserDetails['isIos'] = true;\n browserDetails['isDevice'] = true;\n browserDetails['isTouch'] = true;\n browserDetails['isPointer'] = true;\n }\n if ('undefined' === typeof browserDetails[\"\" + key]) {\n return browserDetails[\"\" + key] = regX.test(Browser.userAgent);\n }\n return browserDetails[\"\" + key];\n };\n Object.defineProperty(Browser, \"userAgent\", {\n get: function () {\n return Browser.uA;\n },\n //Properties\n /**\n * Property specifies the userAgent of the browser. Default userAgent value is based on the browser.\n * Also we can set our own userAgent.\n *\n * @param {string} uA ?\n */\n set: function (uA) {\n Browser.uA = uA;\n window.browserDetails = {};\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"info\", {\n //Read Only Properties\n /**\n * Property is to get the browser information like Name, Version and Language\n *\n * @returns {BrowserInfo} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.info)) {\n return window.browserDetails.info = Browser.extractBrowserDetail();\n }\n return window.browserDetails.info;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIE\", {\n /**\n * Property is to get whether the userAgent is based IE.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIE', REGX_IE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isTouch\", {\n /**\n * Property is to get whether the browser has touch support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isTouch)) {\n return (window.browserDetails.isTouch =\n ('ontouchstart' in window.navigator) ||\n (window &&\n window.navigator &&\n (window.navigator.maxTouchPoints > 0)) || ('ontouchstart' in window));\n }\n return window.browserDetails.isTouch;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isPointer\", {\n /**\n * Property is to get whether the browser has Pointer support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isPointer)) {\n return window.browserDetails.isPointer = ('pointerEnabled' in window.navigator);\n }\n return window.browserDetails.isPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isMSPointer\", {\n /**\n * Property is to get whether the browser has MSPointer support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isMSPointer)) {\n return window.browserDetails.isMSPointer = ('msPointerEnabled' in window.navigator);\n }\n return window.browserDetails.isMSPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isDevice\", {\n /**\n * Property is to get whether the userAgent is device based.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isDevice', REGX_MOBILE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos\", {\n /**\n * Property is to get whether the userAgent is IOS.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIos', REGX_IOS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos7\", {\n /**\n * Property is to get whether the userAgent is Ios7.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIos7', REGX_IOS7);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isAndroid\", {\n /**\n * Property is to get whether the userAgent is Android.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isAndroid', REGX_ANDROID);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWebView\", {\n /**\n * Property is to identify whether application ran in web view.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isWebView)) {\n window.browserDetails.isWebView = !(isUndefined(window.cordova) && isUndefined(window.PhoneGap)\n && isUndefined(window.phonegap) && window.forge !== 'object');\n return window.browserDetails.isWebView;\n }\n return window.browserDetails.isWebView;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWindows\", {\n /**\n * Property is to get whether the userAgent is Windows.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isWindows', REGX_WINDOWS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchStartEvent\", {\n /**\n * Property is to get the touch start event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchStartEvent)) {\n return window.browserDetails.touchStartEvent = Browser.getTouchStartEvent();\n }\n return window.browserDetails.touchStartEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchMoveEvent\", {\n /**\n * Property is to get the touch move event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchMoveEvent)) {\n return window.browserDetails.touchMoveEvent = Browser.getTouchMoveEvent();\n }\n return window.browserDetails.touchMoveEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchEndEvent\", {\n /**\n * Property is to get the touch end event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchEndEvent)) {\n return window.browserDetails.touchEndEvent = Browser.getTouchEndEvent();\n }\n return window.browserDetails.touchEndEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchCancelEvent\", {\n /**\n * Property is to cancel the touch end event.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchCancelEvent)) {\n return window.browserDetails.touchCancelEvent = Browser.getTouchCancelEvent();\n }\n return window.browserDetails.touchCancelEvent;\n },\n enumerable: true,\n configurable: true\n });\n /* istanbul ignore next */\n Browser.uA = typeof navigator !== 'undefined' ? navigator.userAgent : '';\n return Browser;\n}());\nexport { Browser };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isNullOrUndefined as isNOU, isObject, merge } from './util';\n/**\n * The Fetch class provides a way to make asynchronous network requests, typically to retrieve resources from a server.\n * ```typescript\n * var fetchApi = new Fetch('index.html', 'GET');\n * fetchApi.send()\n * .then((value) => {\n * console.log(value);\n * }).catch((error) => {\n * console.log(error);\n * });\n * ```\n */\nvar Fetch = /** @class */ (function () {\n /**\n * Constructor for Fetch class.\n *\n * @param {string|Object} options - Specifies the URL or Request object with URL to which the request is to be sent.\n * @param {string} type - Specifies which request method is to be used, such as GET, POST, etc.\n * @param {string} contentType - Specifies the content type of the request, which is used to indicate the original media type of the resource.\n */\n function Fetch(options, type, contentType) {\n /**\n * Specifies which request method is to be used, such as GET, POST, etc.\n *\n * @default GET\n */\n this.type = 'GET';\n /**\n * A boolean value indicating whether to reject the promise or not.\n *\n * @private\n * @default true\n */\n this.emitError = true;\n if (typeof options === 'string') {\n this.url = options;\n this.type = !isNOU(type) ? type.toUpperCase() : this.type;\n this.contentType = contentType;\n }\n else if (isObject(options) && Object.keys(options).length > 0) {\n merge(this, options);\n }\n this.contentType = !isNOU(this.contentType) ? this.contentType : 'application/json; charset=utf-8';\n }\n /**\n * Send the request to server.\n *\n * @param {string|Object} data - Specifies the data that needs to be added to the request.\n * @returns {Promise} - Returns the response to a request.\n */\n Fetch.prototype.send = function (data) {\n var _this = this;\n var contentTypes = {\n 'application/json': 'json',\n 'multipart/form-data': 'formData',\n 'application/octet-stream': 'blob',\n 'application/x-www-form-urlencoded': 'formData'\n };\n try {\n if (isNOU(this.fetchRequest) && this.type === 'GET') {\n this.fetchRequest = new Request(this.url, { method: this.type });\n }\n else if (isNOU(this.fetchRequest)) {\n this.data = !isNOU(data) ? data : this.data;\n this.fetchRequest = new Request(this.url, {\n method: this.type,\n headers: { 'Content-Type': this.contentType },\n body: this.data\n });\n }\n var eventArgs = { cancel: false, fetchRequest: this.fetchRequest };\n this.triggerEvent(this['beforeSend'], eventArgs);\n if (eventArgs.cancel) {\n return null;\n }\n this.fetchResponse = fetch(this.fetchRequest);\n return this.fetchResponse.then(function (response) {\n _this.triggerEvent(_this['onLoad'], response);\n if (!response.ok) {\n throw response;\n }\n var responseType = 'text';\n for (var _i = 0, _a = Object.keys(contentTypes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (response.headers.get('Content-Type') && response.headers.get('Content-Type').indexOf(key) !== -1) {\n responseType = contentTypes[key];\n }\n }\n return response[responseType]();\n }).then(function (data) {\n _this.triggerEvent(_this['onSuccess'], data, _this);\n return data;\n }).catch(function (error) {\n var returnVal = {};\n if (_this.emitError) {\n _this.triggerEvent(_this['onFailure'], error);\n returnVal = Promise.reject(error);\n }\n return returnVal;\n });\n }\n catch (error) {\n return error;\n }\n };\n Fetch.prototype.triggerEvent = function (callback, data, instance) {\n if (!isNOU(callback) && typeof callback === 'function') {\n callback(data, instance);\n }\n };\n return Fetch;\n}());\nexport { Fetch };\n","import { debounce, extend } from './util';\nimport { Browser } from './browser';\n/**\n * EventHandler class provides option to add, remove, clear and trigger events to a HTML DOM element\n * ```html\n *
\n * \n * ```\n */\nvar EventHandler = /** @class */ (function () {\n function EventHandler() {\n }\n // to get the event data based on element\n EventHandler.addOrGetEventData = function (element) {\n if ('__eventList' in element) {\n return element.__eventList.events;\n }\n else {\n element.__eventList = {};\n return element.__eventList.events = [];\n }\n };\n /**\n * Add an event to the specified DOM element.\n *\n * @param {any} element - Target HTML DOM element\n * @param {string} eventName - A string that specifies the name of the event\n * @param {Function} listener - Specifies the function to run when the event occurs\n * @param {Object} bindTo - A object that binds 'this' variable in the event handler\n * @param {number} intDebounce - Specifies at what interval given event listener should be triggered.\n * @returns {Function} ?\n */\n EventHandler.add = function (element, eventName, listener, bindTo, intDebounce) {\n var eventData = EventHandler.addOrGetEventData(element);\n var debounceListener;\n if (intDebounce) {\n debounceListener = debounce(listener, intDebounce);\n }\n else {\n debounceListener = listener;\n }\n if (bindTo) {\n debounceListener = debounceListener.bind(bindTo);\n }\n var event = eventName.split(' ');\n for (var i = 0; i < event.length; i++) {\n eventData.push({\n name: event[parseInt(i.toString(), 10)],\n listener: listener,\n debounce: debounceListener\n });\n if (Browser.isIE) {\n element.addEventListener(event[parseInt(i.toString(), 10)], debounceListener);\n }\n else {\n element.addEventListener(event[parseInt(i.toString(), 10)], debounceListener, { passive: false });\n }\n }\n return debounceListener;\n };\n /**\n * Remove an event listener that has been attached before.\n *\n * @param {any} element - Specifies the target html element to remove the event\n * @param {string} eventName - A string that specifies the name of the event to remove\n * @param {Function} listener - Specifies the function to remove\n * @returns {void} ?\n */\n EventHandler.remove = function (element, eventName, listener) {\n var eventData = EventHandler.addOrGetEventData(element);\n var event = eventName.split(' ');\n var _loop_1 = function (j) {\n var index = -1;\n var debounceListener;\n if (eventData && eventData.length !== 0) {\n eventData.some(function (x, i) {\n return x.name === event[parseInt(j.toString(), 10)] && x.listener === listener ?\n (index = i, debounceListener = x.debounce, true) : false;\n });\n }\n if (index !== -1) {\n eventData.splice(index, 1);\n }\n if (debounceListener) {\n element.removeEventListener(event[parseInt(j.toString(), 10)], debounceListener);\n }\n };\n for (var j = 0; j < event.length; j++) {\n _loop_1(j);\n }\n };\n /**\n * Clear all the event listeners that has been previously attached to the element.\n *\n * @param {any} element - Specifies the target html element to clear the events\n * @returns {void} ?\n */\n EventHandler.clearEvents = function (element) {\n var eventData = EventHandler.addOrGetEventData(element);\n var copyData = extend([], undefined, eventData);\n for (var i = 0; i < copyData.length; i++) {\n var parseValue = copyData[parseInt(i.toString(), 10)];\n element.removeEventListener(parseValue.name, parseValue.debounce);\n eventData.shift();\n }\n };\n /**\n * Trigger particular event of the element.\n *\n * @param {any} element - Specifies the target html element to trigger the events\n * @param {string} eventName - Specifies the event to trigger for the specified element.\n * Can be a custom event, or any of the standard events.\n * @param {any} eventProp - Additional parameters to pass on to the event properties\n * @returns {void} ?\n */\n EventHandler.trigger = function (element, eventName, eventProp) {\n var eventData = EventHandler.addOrGetEventData(element);\n for (var _i = 0, eventData_1 = eventData; _i < eventData_1.length; _i++) {\n var event_1 = eventData_1[_i];\n if (event_1.name === eventName) {\n event_1.debounce.call(this, eventProp);\n }\n }\n };\n return EventHandler;\n}());\nexport { EventHandler };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Functions related to dom operations.\n */\nimport { EventHandler } from './event-handler';\nimport { isNullOrUndefined, getValue, setValue, isObject, extend } from './util';\nvar SVG_REG = /^svg|^path|^g/;\n/**\n * Function to create Html element.\n *\n * @param {string} tagName - Name of the tag, id and class names.\n * @param {ElementProperties} properties - Object to set properties in the element.\n * @param {ElementProperties} properties.id - To set the id to the created element.\n * @param {ElementProperties} properties.className - To add classes to the element.\n * @param {ElementProperties} properties.innerHTML - To set the innerHTML to element.\n * @param {ElementProperties} properties.styles - To set the some custom styles to element.\n * @param {ElementProperties} properties.attrs - To set the attributes to element.\n * @returns {any} ?\n * @private\n */\nexport function createElement(tagName, properties) {\n var element = (SVG_REG.test(tagName) ? document.createElementNS('http://www.w3.org/2000/svg', tagName) : document.createElement(tagName));\n if (typeof (properties) === 'undefined') {\n return element;\n }\n element.innerHTML = (properties.innerHTML ? properties.innerHTML : '');\n if (properties.className !== undefined) {\n element.className = properties.className;\n }\n if (properties.id !== undefined) {\n element.id = properties.id;\n }\n if (properties.styles !== undefined) {\n element.setAttribute('style', properties.styles);\n }\n if (properties.attrs !== undefined) {\n attributes(element, properties.attrs);\n }\n return element;\n}\n/**\n * The function used to add the classes to array of elements\n *\n * @param {Element[]|NodeList} elements - An array of elements that need to add a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @returns {any} .\n * @private\n */\nexport function addClass(elements, classes) {\n var classList = getClassList(classes);\n var regExp = RegExp;\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n for (var _b = 0, classList_1 = classList; _b < classList_1.length; _b++) {\n var className = classList_1[_b];\n if (isObject(ele)) {\n var curClass = getValue('attributes.className', ele);\n if (isNullOrUndefined(curClass)) {\n setValue('attributes.className', className, ele);\n }\n else if (!new regExp('\\\\b' + className + '\\\\b', 'i').test(curClass)) {\n setValue('attributes.className', curClass + ' ' + className, ele);\n }\n }\n else {\n if (!ele.classList.contains(className)) {\n ele.classList.add(className);\n }\n }\n }\n }\n return elements;\n}\n/**\n * The function used to add the classes to array of elements\n *\n * @param {Element[]|NodeList} elements - An array of elements that need to remove a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @returns {any} .\n * @private\n */\nexport function removeClass(elements, classes) {\n var classList = getClassList(classes);\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n var flag = isObject(ele);\n var canRemove = flag ? getValue('attributes.className', ele) : ele.className !== '';\n if (canRemove) {\n for (var _b = 0, classList_2 = classList; _b < classList_2.length; _b++) {\n var className = classList_2[_b];\n if (flag) {\n var classes_1 = getValue('attributes.className', ele);\n var classArr = classes_1.split(' ');\n var index = classArr.indexOf(className);\n if (index !== -1) {\n classArr.splice(index, 1);\n }\n setValue('attributes.className', classArr.join(' '), ele);\n }\n else {\n ele.classList.remove(className);\n }\n }\n }\n }\n return elements;\n}\n/**\n * The function used to get classlist.\n *\n * @param {string | string[]} classes - An element the need to check visibility\n * @returns {string[]} ?\n * @private\n */\nfunction getClassList(classes) {\n var classList = [];\n if (typeof classes === 'string') {\n classList.push(classes);\n }\n else {\n classList = classes;\n }\n return classList;\n}\n/**\n * The function used to check element is visible or not.\n *\n * @param {Element|Node} element - An element the need to check visibility\n * @returns {boolean} ?\n * @private\n */\nexport function isVisible(element) {\n var ele = element;\n return (ele.style.visibility === '' && ele.offsetWidth > 0);\n}\n/**\n * The function used to insert an array of elements into a first of the element.\n *\n * @param {Element[]|NodeList} fromElements - An array of elements that need to prepend.\n * @param {Element} toElement - An element that is going to prepend.\n * @param {boolean} isEval - ?\n * @returns {Element[] | NodeList} ?\n * @private\n */\nexport function prepend(fromElements, toElement, isEval) {\n var docFrag = document.createDocumentFragment();\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n toElement.insertBefore(docFrag, toElement.firstElementChild);\n if (isEval) {\n executeScript(toElement);\n }\n return fromElements;\n}\n/**\n * The function used to insert an array of elements into last of the element.\n *\n * @param {Element[]|NodeList} fromElements - An array of elements that need to append.\n * @param {Element} toElement - An element that is going to prepend.\n * @param {boolean} isEval - ?\n * @returns {Element[] | NodeList} ?\n * @private\n */\nexport function append(fromElements, toElement, isEval) {\n var docFrag = document.createDocumentFragment();\n if (fromElements instanceof NodeList) {\n while (fromElements.length > 0) {\n docFrag.appendChild(fromElements[0]);\n }\n }\n else {\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n }\n toElement.appendChild(docFrag);\n if (isEval) {\n executeScript(toElement);\n }\n return fromElements;\n}\n/**\n * The function is used to evaluate script from Ajax request\n *\n * @param {Element} ele - An element is going to evaluate the script\n * @returns {void} ?\n */\nfunction executeScript(ele) {\n var eleArray = ele.querySelectorAll('script');\n eleArray.forEach(function (element) {\n var script = document.createElement('script');\n script.text = element.innerHTML;\n document.head.appendChild(script);\n detach(script);\n });\n}\n/**\n * The function used to remove the element from parentnode\n *\n * @param {Element|Node|HTMLElement} element - An element that is going to detach from the Dom\n * @returns {any} ?\n * @private\n */\nexport function detach(element) {\n var parentNode = element.parentNode;\n if (parentNode) {\n return parentNode.removeChild(element);\n }\n}\n/**\n * The function used to remove the element from Dom also clear the bounded events\n *\n * @param {Element|Node|HTMLElement} element - An element remove from the Dom\n * @returns {void} ?\n * @private\n */\nexport function remove(element) {\n var parentNode = element.parentNode;\n EventHandler.clearEvents(element);\n parentNode.removeChild(element);\n}\n/**\n * The function helps to set multiple attributes to an element\n *\n * @param {Element|Node} element - An element that need to set attributes.\n * @param {string} attributes - JSON Object that is going to as attributes.\n * @returns {Element} ?\n * @private\n */\nexport function attributes(element, attributes) {\n var keys = Object.keys(attributes);\n var ele = element;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (isObject(ele)) {\n var iKey = key;\n if (key === 'tabindex') {\n iKey = 'tabIndex';\n }\n ele.attributes[\"\" + iKey] = attributes[\"\" + key];\n }\n else {\n ele.setAttribute(key, attributes[\"\" + key]);\n }\n }\n return ele;\n}\n/**\n * The function selects the element from giving context.\n *\n * @param {string} selector - Selector string need fetch element\n * @param {Document|Element} context - It is an optional type, That specifies a Dom context.\n * @param {boolean} needsVDOM ?\n * @returns {any} ?\n * @private\n */\nexport function select(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n selector = querySelectId(selector);\n return context.querySelector(selector);\n}\n/**\n * The function selects an array of element from the given context.\n *\n * @param {string} selector - Selector string need fetch element\n * @param {Document|Element} context - It is an optional type, That specifies a Dom context.\n * @param {boolean} needsVDOM ?\n * @returns {HTMLElement[]} ?\n * @private\n */\nexport function selectAll(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n selector = querySelectId(selector);\n var nodeList = context.querySelectorAll(selector);\n return nodeList;\n}\n/**\n * The function selects an id of element from the given context.\n *\n * @param {string} selector - Selector string need fetch element\n * @returns {string} ?\n * @private\n */\nfunction querySelectId(selector) {\n var charRegex = /(!|\"|\\$|%|&|'|\\(|\\)|\\*|\\/|:|;|<|=|\\?|@|\\]|\\^|`|{|}|\\||\\+|~)/g;\n if (selector.match(/#[0-9]/g) || selector.match(charRegex)) {\n var idList = selector.split(',');\n for (var i = 0; i < idList.length; i++) {\n var list = idList[parseInt(i.toString(), 10)].split(' ');\n for (var j = 0; j < list.length; j++) {\n if (list[parseInt(j.toString(), 10)].indexOf('#') > -1) {\n if (!list[parseInt(j.toString(), 10)].match(/\\[.*\\]/)) {\n var splitId = list[parseInt(j.toString(), 10)].split('#');\n if (splitId[1].match(/^\\d/) || splitId[1].match(charRegex)) {\n var setId = list[parseInt(j.toString(), 10)].split('.');\n setId[0] = setId[0].replace(/#/, '[id=\\'') + '\\']';\n list[parseInt(j.toString(), 10)] = setId.join('.');\n }\n }\n }\n }\n idList[parseInt(i.toString(), 10)] = list.join(' ');\n }\n return idList.join(',');\n }\n return selector;\n}\n/**\n * Returns single closest parent element based on class selector.\n *\n * @param {Element} element - An element that need to find the closest element.\n * @param {string} selector - A classSelector of closest element.\n * @returns {Element} ?\n * @private\n */\nexport function closest(element, selector) {\n var el = element;\n if (typeof el.closest === 'function') {\n return el.closest(selector);\n }\n while (el && el.nodeType === 1) {\n if (matches(el, selector)) {\n return el;\n }\n el = el.parentNode;\n }\n return null;\n}\n/**\n * Returns all sibling elements of the given element.\n *\n * @param {Element|Node} element - An element that need to get siblings.\n * @returns {Element[]} ?\n * @private\n */\nexport function siblings(element) {\n var siblings = [];\n var childNodes = Array.prototype.slice.call(element.parentNode.childNodes);\n for (var _i = 0, childNodes_1 = childNodes; _i < childNodes_1.length; _i++) {\n var curNode = childNodes_1[_i];\n if (curNode.nodeType === Node.ELEMENT_NODE && element !== curNode) {\n siblings.push(curNode);\n }\n }\n return siblings;\n}\n/**\n * set the value if not exist. Otherwise set the existing value\n *\n * @param {HTMLElement} element - An element to which we need to set value.\n * @param {string} property - Property need to get or set.\n * @param {string} value - value need to set.\n * @returns {string} ?\n * @private\n */\nexport function getAttributeOrDefault(element, property, value) {\n var attrVal;\n var isObj = isObject(element);\n if (isObj) {\n attrVal = getValue('attributes.' + property, element);\n }\n else {\n attrVal = element.getAttribute(property);\n }\n if (isNullOrUndefined(attrVal) && value) {\n if (!isObj) {\n element.setAttribute(property, value.toString());\n }\n else {\n element.attributes[\"\" + property] = value;\n }\n attrVal = value;\n }\n return attrVal;\n}\n/**\n * Set the style attributes to Html element.\n *\n * @param {HTMLElement} element - Element which we want to set attributes\n * @param {any} attrs - Set the given attributes to element\n * @returns {void} ?\n * @private\n */\nexport function setStyleAttribute(element, attrs) {\n if (attrs !== undefined) {\n Object.keys(attrs).forEach(function (key) {\n element.style[\"\" + key] = attrs[\"\" + key];\n });\n }\n}\n/**\n * Method for add and remove classes to a dom element.\n *\n * @param {Element} element - Element for add and remove classes\n * @param {string[]} addClasses - List of classes need to be add to the element\n * @param {string[]} removeClasses - List of classes need to be remove from the element\n * @returns {void} ?\n * @private\n */\nexport function classList(element, addClasses, removeClasses) {\n addClass([element], addClasses);\n removeClass([element], removeClasses);\n}\n/**\n * Method to check whether the element matches the given selector.\n *\n * @param {Element} element - Element to compare with the selector.\n * @param {string} selector - String selector which element will satisfy.\n * @returns {void} ?\n * @private\n */\nexport function matches(element, selector) {\n var matches = element.matches || element.msMatchesSelector || element.webkitMatchesSelector;\n if (matches) {\n return matches.call(element, selector);\n }\n else {\n return [].indexOf.call(document.querySelectorAll(selector), element) !== -1;\n }\n}\n/**\n * Method to get the html text from DOM.\n *\n * @param {HTMLElement} ele - Element to compare with the selector.\n * @param {string} innerHTML - String selector which element will satisfy.\n * @returns {void} ?\n * @private\n */\nexport function includeInnerHTML(ele, innerHTML) {\n ele.innerHTML = innerHTML;\n}\n/**\n * Method to get the containsclass.\n *\n * @param {HTMLElement} ele - Element to compare with the selector.\n * @param {string} className - String selector which element will satisfy.\n * @returns {any} ?\n * @private\n */\nexport function containsClass(ele, className) {\n if (isObject(ele)) {\n var regExp = RegExp;\n return new regExp('\\\\b' + className + '\\\\b', 'i').test(ele.attributes.className);\n }\n else {\n return ele.classList.contains(className);\n }\n}\n/**\n * Method to check whether the element matches the given selector.\n *\n * @param {Object} element - Element to compare with the selector.\n * @param {boolean} deep ?\n * @returns {any} ?\n * @private\n */\nexport function cloneNode(element, deep) {\n if (isObject(element)) {\n if (deep) {\n return extend({}, {}, element, true);\n }\n }\n else {\n return element.cloneNode(deep);\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isUndefined, isNullOrUndefined, merge, setImmediate, setValue, isBlazor, getValue, extend } from './util';\nimport { addClass, removeClass } from './dom';\nimport { Observer } from './observer';\nvar isColEName = new RegExp(']');\n/**\n * Base library module is common module for Framework modules like touch,keyboard and etc.,\n *\n * @private\n * @returns {void} ?\n */\nvar Base = /** @class */ (function () {\n /**\n * Base constructor accept options and element\n *\n * @param {Object} options ?\n * @param {string} element ?\n */\n function Base(options, element) {\n this.isRendered = false;\n this.isComplexArraySetter = false;\n this.isServerRendered = false;\n this.allowServerDataBinding = true;\n this.isProtectedOnChange = true;\n this.properties = {};\n this.changedProperties = {};\n this.oldProperties = {};\n this.bulkChanges = {};\n this.refreshing = false;\n this.ignoreCollectionWatch = false;\n this.finalUpdate = function () { };\n this.childChangedProperties = {};\n this.modelObserver = new Observer(this);\n if (!isUndefined(element)) {\n if ('string' === typeof (element)) {\n this.element = document.querySelector(element);\n }\n else {\n this.element = element;\n }\n if (!isNullOrUndefined(this.element)) {\n this.isProtectedOnChange = false;\n this.addInstance();\n }\n }\n if (!isUndefined(options)) {\n this.setProperties(options, true);\n }\n this.isDestroyed = false;\n }\n /** Property base section */\n /**\n * Function used to set bunch of property at a time.\n *\n * @private\n * @param {Object} prop - JSON object which holds components properties.\n * @param {boolean} muteOnChange ? - Specifies to true when we set properties.\n * @returns {void} ?\n */\n Base.prototype.setProperties = function (prop, muteOnChange) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = !!muteOnChange;\n merge(this, prop);\n if (muteOnChange !== true) {\n merge(this.changedProperties, prop);\n this.dataBind();\n }\n else if (isBlazor() && this.isRendered) {\n this.serverDataBind(prop);\n }\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.isProtectedOnChange = prevDetection;\n };\n /**\n * Calls for child element data bind\n *\n * @param {Object} obj ?\n * @param {Object} parent ?\n * @returns {void} ?\n */\n Base.callChildDataBind = function (obj, parent) {\n var keys = Object.keys(obj);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (parent[\"\" + key] instanceof Array) {\n for (var _a = 0, _b = parent[\"\" + key]; _a < _b.length; _a++) {\n var obj_1 = _b[_a];\n if (obj_1.dataBind !== undefined) {\n obj_1.dataBind();\n }\n }\n }\n else {\n parent[\"\" + key].dataBind();\n }\n }\n };\n Base.prototype.clearChanges = function () {\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.childChangedProperties = {};\n };\n /**\n * Bind property changes immediately to components\n *\n * @returns {void} ?\n */\n Base.prototype.dataBind = function () {\n Base.callChildDataBind(this.childChangedProperties, this);\n if (Object.getOwnPropertyNames(this.changedProperties).length) {\n var prevDetection = this.isProtectedOnChange;\n var newChanges = this.changedProperties;\n var oldChanges = this.oldProperties;\n this.clearChanges();\n this.isProtectedOnChange = true;\n this.onPropertyChanged(newChanges, oldChanges);\n this.isProtectedOnChange = prevDetection;\n }\n };\n Base.prototype.serverDataBind = function (newChanges) {\n if (!isBlazor()) {\n return;\n }\n newChanges = newChanges ? newChanges : {};\n extend(this.bulkChanges, {}, newChanges, true);\n var sfBlazor = 'sfBlazor';\n if (this.allowServerDataBinding && window[\"\" + sfBlazor].updateModel) {\n window[\"\" + sfBlazor].updateModel(this);\n this.bulkChanges = {};\n }\n };\n Base.prototype.saveChanges = function (key, newValue, oldValue) {\n if (isBlazor()) {\n var newChanges = {};\n newChanges[\"\" + key] = newValue;\n this.serverDataBind(newChanges);\n }\n if (this.isProtectedOnChange) {\n return;\n }\n this.oldProperties[\"\" + key] = oldValue;\n this.changedProperties[\"\" + key] = newValue;\n this.finalUpdate();\n this.finalUpdate = setImmediate(this.dataBind.bind(this));\n };\n /** Event Base Section */\n /**\n * Adds the handler to the given event listener.\n *\n * @param {string} eventName - A String that specifies the name of the event\n * @param {Function} handler - Specifies the call to run when the event occurs.\n * @returns {void} ?\n */\n Base.prototype.addEventListener = function (eventName, handler) {\n this.modelObserver.on(eventName, handler);\n };\n /**\n * Removes the handler from the given event listener.\n *\n * @param {string} eventName - A String that specifies the name of the event to remove\n * @param {Function} handler - Specifies the function to remove\n * @returns {void} ?\n */\n Base.prototype.removeEventListener = function (eventName, handler) {\n this.modelObserver.off(eventName, handler);\n };\n /**\n * Triggers the handlers in the specified event.\n *\n * @private\n * @param {string} eventName - Specifies the event to trigger for the specified component properties.\n * Can be a custom event, or any of the standard events.\n * @param {Event} eventProp - Additional parameters to pass on to the event properties\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it failured to call.\n * @returns {void} ?\n */\n Base.prototype.trigger = function (eventName, eventProp, successHandler, errorHandler) {\n var _this = this;\n if (this.isDestroyed !== true) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = false;\n var data = this.modelObserver.notify(eventName, eventProp, successHandler, errorHandler);\n if (isColEName.test(eventName)) {\n var handler = getValue(eventName, this);\n if (handler) {\n var blazor = 'Blazor';\n if (window[\"\" + blazor]) {\n var promise = handler.call(this, eventProp);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n data = promise;\n }\n else {\n promise.then(function (data) {\n if (successHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ?\n JSON.parse(data) : data;\n successHandler.call(_this, data);\n }\n }).catch(function (data) {\n if (errorHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ? JSON.parse(data) : data;\n errorHandler.call(_this, data);\n }\n });\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n else {\n handler.call(this, eventProp);\n if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n this.isProtectedOnChange = prevDetection;\n return data;\n }\n };\n /**\n * To maintain instance in base class\n *\n * @returns {void} ?\n */\n Base.prototype.addInstance = function () {\n // Add module class to the root element\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-lib', moduleClass]);\n if (!isNullOrUndefined(this.element.ej2_instances)) {\n this.element.ej2_instances.push(this);\n }\n else {\n setValue('ej2_instances', [this], this.element);\n }\n };\n /**\n * To remove the instance from the element\n *\n * @returns {void} ?\n */\n Base.prototype.destroy = function () {\n var _this = this;\n // eslint-disable-next-line camelcase\n this.element.ej2_instances =\n this.element.ej2_instances ?\n this.element.ej2_instances.filter(function (i) {\n if (proxyToRaw) {\n return proxyToRaw(i) !== proxyToRaw(_this);\n }\n return i !== _this;\n })\n : [];\n removeClass([this.element], ['e-' + this.getModuleName()]);\n if (this.element.ej2_instances.length === 0) {\n // Remove module class from the root element\n removeClass([this.element], ['e-lib']);\n }\n this.clearChanges();\n this.modelObserver.destroy();\n this.isDestroyed = true;\n };\n return Base;\n}());\nexport { Base };\n/**\n * Global function to get the component instance from the rendered element.\n *\n * @param {HTMLElement} elem Specifies the HTMLElement or element id string.\n * @param {string} comp Specifies the component module name or Component.\n * @returns {any} ?\n */\nexport function getComponent(elem, comp) {\n var instance;\n var i;\n var ele = typeof elem === 'string' ? document.getElementById(elem) : elem;\n for (i = 0; i < ele.ej2_instances.length; i++) {\n instance = ele.ej2_instances[parseInt(i.toString(), 10)];\n if (typeof comp === 'string') {\n var compName = instance.getModuleName();\n if (comp === compName) {\n return instance;\n }\n }\n else {\n if (instance instanceof comp) {\n return instance;\n }\n }\n }\n return undefined;\n}\n/**\n * Function to remove the child instances.\n *\n * @param {HTMLElement} element ?\n * @returns {void} ?\n * @private\n */\nexport function removeChildInstance(element) {\n var childEle = [].slice.call(element.getElementsByClassName('e-control'));\n for (var i = 0; i < childEle.length; i++) {\n var compName = childEle[parseInt(i.toString(), 10)].classList[1].split('e-')[1];\n var compInstance = getComponent(childEle[parseInt(i.toString(), 10)], compName);\n if (!isUndefined(compInstance)) {\n compInstance.destroy();\n }\n }\n}\nexport var proxyToRaw;\nexport var setProxyToRaw = function (toRaw) { proxyToRaw = toRaw; };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { createInstance, isUndefined, merge, extend, getValue } from './util';\n/**\n * Returns the Class Object\n *\n * @param {ClassObject} instance - instance of ClassObject\n * @param {string} curKey - key of the current instance\n * @param {Object} defaultValue - default Value\n * @param {Object[]} type ?\n * @returns {ClassObject} ?\n */\nfunction getObject(instance, curKey, defaultValue, type) {\n if (!Object.prototype.hasOwnProperty.call(instance.properties, curKey) || !(instance.properties[\"\" + curKey] instanceof type)) {\n instance.properties[\"\" + curKey] = createInstance(type, [instance, curKey, defaultValue]);\n }\n return instance.properties[\"\" + curKey];\n}\n/**\n * Returns object array\n *\n * @param {ClassObject} instance ?\n * @param {string} curKey ?\n * @param {Object[]} defaultValue ?\n * @param {Object} type ?\n * @param {boolean} isSetter ?\n * @param {boolean} isFactory ?\n * @returns {Object[]} ?\n */\nfunction getObjectArray(instance, curKey, defaultValue, type, isSetter, isFactory) {\n var result = [];\n var len = defaultValue ? defaultValue.length : 0;\n for (var i = 0; i < len; i++) {\n var curType = type;\n if (isFactory) {\n curType = type(defaultValue[parseInt(i.toString(), 10)], instance);\n }\n if (isSetter) {\n var inst = createInstance(curType, [instance, curKey, {}, true]);\n inst.setProperties(defaultValue[parseInt(i.toString(), 10)], true);\n result.push(inst);\n }\n else {\n result.push(createInstance(curType, [instance, curKey, defaultValue[parseInt(i.toString(), 10)], false]));\n }\n }\n return result;\n}\n/**\n * Returns the properties of the object\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @returns {void} ?\n */\nfunction propertyGetter(defaultValue, curKey) {\n return function () {\n if (!Object.prototype.hasOwnProperty.call(this.properties, curKey)) {\n this.properties[\"\" + curKey] = defaultValue;\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n * Set the properties for the object\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @returns {void} ?\n */\nfunction propertySetter(defaultValue, curKey) {\n return function (newValue) {\n if (this.properties[\"\" + curKey] !== newValue) {\n var oldVal = Object.prototype.hasOwnProperty.call(this.properties, curKey) ? this.properties[\"\" + curKey] : defaultValue;\n this.saveChanges(curKey, newValue, oldVal);\n this.properties[\"\" + curKey] = newValue;\n }\n };\n}\n/**\n * Returns complex objects\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexGetter(defaultValue, curKey, type) {\n return function () {\n return getObject(this, curKey, defaultValue, type);\n };\n}\n/**\n * Sets complex objects\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexSetter(defaultValue, curKey, type) {\n return function (newValue) {\n getObject(this, curKey, defaultValue, type).setProperties(newValue);\n };\n}\n/**\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {FunctionConstructor} type ?\n * @returns {void} ?\n */\nfunction complexFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n if (Object.prototype.hasOwnProperty.call(this.properties, curKey)) {\n return this.properties[\"\" + curKey];\n }\n else {\n return getObject(this, curKey, defaultValue, curType);\n }\n };\n}\n/**\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n var curType = type(newValue, this);\n getObject(this, curKey, defaultValue, curType).setProperties(newValue);\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArrayGetter(defaultValue, curKey, type) {\n return function () {\n var _this = this;\n if (!Object.prototype.hasOwnProperty.call(this.properties, curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, type, false);\n this.properties[\"\" + curKey] = defCollection;\n }\n var ignore = ((this.controlParent !== undefined && this.controlParent.ignoreCollectionWatch)\n || this.ignoreCollectionWatch);\n if (!Object.prototype.hasOwnProperty.call(this.properties[\"\" + curKey], 'push') && !ignore) {\n ['push', 'pop'].forEach(function (extendFunc) {\n var descriptor = {\n value: complexArrayDefinedCallback(extendFunc, curKey, type, _this.properties[\"\" + curKey]).bind(_this),\n configurable: true\n };\n Object.defineProperty(_this.properties[\"\" + curKey], extendFunc, descriptor);\n });\n }\n if (!Object.prototype.hasOwnProperty.call(this.properties[\"\" + curKey], 'isComplexArray')) {\n Object.defineProperty(this.properties[\"\" + curKey], 'isComplexArray', { value: true });\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArraySetter(defaultValue, curKey, type) {\n return function (newValue) {\n this.isComplexArraySetter = true;\n var oldValueCollection = getObjectArray(this, curKey, defaultValue, type, false);\n var newValCollection = getObjectArray(this, curKey, newValue, type, true);\n this.isComplexArraySetter = false;\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[\"\" + curKey] = newValCollection;\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArrayFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n var oldValueCollection = Object.prototype.hasOwnProperty.call(this.properties, curKey) ? this.properties[\"\" + curKey] : defaultValue;\n var newValCollection = getObjectArray(this, curKey, newValue, type, true, true);\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[\"\" + curKey] = newValCollection;\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {FunctionConstructor} type ?\n * @returns {void} ?\n */\nfunction complexArrayFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n if (!Object.prototype.hasOwnProperty.call(this.properties, curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, curType, false);\n this.properties[\"\" + curKey] = defCollection;\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n *\n * @param {string} dFunc ?\n * @param {string} curKey ?\n * @param {Object} type ?\n * @param {Object} prop ?\n * @returns {Object} ?\n */\nfunction complexArrayDefinedCallback(dFunc, curKey, type, prop) {\n return function () {\n var newValue = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newValue[_i] = arguments[_i];\n }\n var keyString = this.propName ? this.getParentKey() + '.' + curKey + '-' : curKey + '-';\n switch (dFunc) {\n case 'push':\n for (var i = 0; i < newValue.length; i++) {\n var newValueParse = newValue[parseInt(i.toString(), 10)];\n Array.prototype[\"\" + dFunc].apply(prop, [newValueParse]);\n var model = getArrayModel(keyString + (prop.length - 1), newValueParse, !this.controlParent, dFunc);\n this.serverDataBind(model, newValue[parseInt(i.toString(), 10)], false, dFunc);\n }\n break;\n case 'pop': {\n Array.prototype[\"\" + dFunc].apply(prop);\n var model = getArrayModel(keyString + prop.length, null, !this.controlParent, dFunc);\n this.serverDataBind(model, { ejsAction: 'pop' }, false, dFunc);\n break;\n }\n }\n return prop;\n };\n}\n/**\n *\n * @param {string} keyString ?\n * @param {Object} value ?\n * @param {boolean} isControlParent ?\n * @param {string} arrayFunction ?\n * @returns {Object} ?\n */\nfunction getArrayModel(keyString, value, isControlParent, arrayFunction) {\n var modelObject = keyString;\n if (isControlParent) {\n modelObject = {};\n modelObject[\"\" + keyString] = value;\n if (value && typeof value === 'object') {\n var action = 'ejsAction';\n modelObject[\"\" + keyString][\"\" + action] = arrayFunction;\n }\n }\n return modelObject;\n}\n/**\n * Method used to create property. General syntax below.\n *\n * @param {Object} defaultValue - Specifies the default value of property.\n * @returns {PropertyDecorator} ?\n * @private\n */\nexport function Property(defaultValue) {\n return function (target, key) {\n var propertyDescriptor = {\n set: propertySetter(defaultValue, key),\n get: propertyGetter(defaultValue, key),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'prop', defaultValue);\n };\n}\n/**\n * Method used to create complex property. General syntax below.\n *\n * @param {any} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @Complex({},Type)\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Complex(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexSetter(defaultValue, key, type),\n get: complexGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex Factory property. General syntax below.\n *\n * @param {Function} type - Specifies the class factory type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @ComplexFactory(defaultType, factoryFunction)\n * propertyName: Type1 | Type2;\n * ```\n * @private\n */\nexport function ComplexFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexFactorySetter({}, key, type),\n get: complexFactoryGetter({}, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', {}, type);\n };\n}\n/**\n * Method used to create complex array property. General syntax below.\n *\n * @param {any} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Collection(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArraySetter(defaultValue, key, type),\n get: complexArrayGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex factory array property. General syntax below.\n *\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyCollectionInfo} ?\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function CollectionFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArrayFactorySetter([], key, type),\n get: complexArrayFactoryGetter([], key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', {}, type);\n };\n}\n/**\n * Method used to create event property. General syntax below.\n *\n * @returns {PropertyDecorator} ?\n * ```\n * @Event(()=>{return true;})\n * ```\n * @private\n */\nexport function Event() {\n return function (target, key) {\n var eventDescriptor = {\n set: function (newValue) {\n var oldValue = this.properties[\"\" + key];\n if (oldValue !== newValue) {\n var finalContext = getParentContext(this, key);\n if (isUndefined(oldValue) === false) {\n finalContext.context.removeEventListener(finalContext.prefix, oldValue);\n }\n finalContext.context.addEventListener(finalContext.prefix, newValue);\n this.properties[\"\" + key] = newValue;\n }\n },\n get: propertyGetter(undefined, key),\n enumerable: true,\n configurable: true\n };\n Object.defineProperty(target, key, eventDescriptor);\n addPropertyCollection(target, key, 'event');\n };\n}\n/**\n * NotifyPropertyChanges is triggers the call back when the property has been changed.\n *\n * @param {Function} classConstructor ?\n * @returns {void} ?\n * @private\n */\nexport function NotifyPropertyChanges(classConstructor) {\n /** Need to code */\n}\n/**\n * Method used to create the builderObject for the target component.\n *\n * @param {BuildInfo} target ?\n * @param {string} key ?\n * @param {string} propertyType ?\n * @param {Object} defaultValue ?\n * @param {Function} type ?\n * @returns {void} ?\n * @private\n */\nfunction addPropertyCollection(target, key, propertyType, defaultValue, type) {\n if (isUndefined(target.propList)) {\n target.propList = {\n props: [],\n complexProps: [],\n colProps: [],\n events: [],\n propNames: [],\n complexPropNames: [],\n colPropNames: [],\n eventNames: []\n };\n }\n target.propList[propertyType + 's'].push({\n propertyName: key,\n defaultValue: defaultValue,\n type: type\n });\n target.propList[propertyType + 'Names'].push(key);\n}\n/**\n * Returns an object containing the builder properties\n *\n * @param {Function} component ?\n * @returns {Object} ?\n * @private\n */\nfunction getBuilderProperties(component) {\n if (isUndefined(component.prototype.builderObject)) {\n component.prototype.builderObject = {\n properties: {}, propCollections: [], add: function () {\n this.isPropertyArray = true;\n this.propCollections.push(extend({}, this.properties, {}));\n }\n };\n var rex = /complex/;\n for (var _i = 0, _a = Object.keys(component.prototype.propList); _i < _a.length; _i++) {\n var key = _a[_i];\n var _loop_1 = function (prop) {\n if (rex.test(key)) {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n var childType = {};\n merge(childType, getBuilderProperties(prop.type));\n value(childType);\n var tempValue;\n if (!childType.isPropertyArray) {\n tempValue = extend({}, childType.properties, {});\n }\n else {\n tempValue = childType.propCollections;\n }\n this.properties[prop.propertyName] = tempValue;\n childType.properties = {};\n childType.propCollections = [];\n childType.isPropertyArray = false;\n return this;\n };\n }\n else {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n this.properties[prop.propertyName] = value;\n return this;\n };\n }\n };\n for (var _b = 0, _c = component.prototype.propList[\"\" + key]; _b < _c.length; _b++) {\n var prop = _c[_b];\n _loop_1(prop);\n }\n }\n }\n return component.prototype.builderObject;\n}\n/**\n * Method used to create builder for the components\n *\n * @param {any} component -specifies the target component for which builder to be created.\n * @returns {Object} ?\n * @private\n */\nexport function CreateBuilder(component) {\n var builderFunction = function (element) {\n this.element = element;\n return this;\n };\n var instanceFunction = function (element) {\n if (!Object.prototype.hasOwnProperty.call(builderFunction, 'create')) {\n builderFunction.prototype = getBuilderProperties(component);\n builderFunction.prototype.create = function () {\n var temp = extend({}, {}, this.properties);\n this.properties = {};\n return new component(temp, this.element);\n };\n }\n return new builderFunction(element);\n };\n return instanceFunction;\n}\n/**\n * Returns parent options for the object\n *\n * @param {Object} context ?\n * @param {string} prefix ?\n * @returns {ParentOption} ?\n * @private\n */\nfunction getParentContext(context, prefix) {\n if (Object.prototype.hasOwnProperty.call(context, 'parentObj') === false) {\n return { context: context, prefix: prefix };\n }\n else {\n var curText = getValue('propName', context);\n if (curText) {\n prefix = curText + '-' + prefix;\n }\n return getParentContext(getValue('parentObj', context), prefix);\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { createElement, selectAll, closest } from './dom';\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { EventHandler } from './event-handler';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\n/**\n * The Animation framework provide options to animate the html DOM elements\n * ```typescript\n * let animeObject = new Animation({\n * name: 'SlideLeftIn',\n * duration: 1000\n * });\n * animeObject.animate('#anime1');\n * animeObject.animate('#anime2', { duration: 500 });\n * ```\n */\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation(options) {\n var _this = _super.call(this, options, undefined) || this;\n /**\n * @private\n */\n _this.easing = {\n ease: 'cubic-bezier(0.250, 0.100, 0.250, 1.000)',\n linear: 'cubic-bezier(0.250, 0.250, 0.750, 0.750)',\n easeIn: 'cubic-bezier(0.420, 0.000, 1.000, 1.000)',\n easeOut: 'cubic-bezier(0.000, 0.000, 0.580, 1.000)',\n easeInOut: 'cubic-bezier(0.420, 0.000, 0.580, 1.000)',\n elasticInOut: 'cubic-bezier(0.5,-0.58,0.38,1.81)',\n elasticIn: 'cubic-bezier(0.17,0.67,0.59,1.81)',\n elasticOut: 'cubic-bezier(0.7,-0.75,0.99,1.01)'\n };\n return _this;\n }\n Animation_1 = Animation;\n /**\n * Applies animation to the current element.\n *\n * @param {string | HTMLElement} element - Element which needs to be animated.\n * @param {AnimationModel} options - Overriding default animation settings.\n * @returns {void} ?\n */\n Animation.prototype.animate = function (element, options) {\n options = !options ? {} : options;\n var model = this.getModel(options);\n if (typeof element === 'string') {\n var elements = Array.prototype.slice.call(selectAll(element, document));\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var element_1 = elements_1[_i];\n model.element = element_1;\n Animation_1.delayAnimation(model);\n }\n }\n else {\n model.element = element;\n Animation_1.delayAnimation(model);\n }\n };\n /**\n * Stop the animation effect on animated element.\n *\n * @param {HTMLElement} element - Element which needs to be stop the animation.\n * @param {AnimationOptions} model - Handling the animation model at stop function.\n * @returns {void}\n */\n Animation.stop = function (element, model) {\n element.style.animation = '';\n element.removeAttribute('e-animate');\n var animationId = element.getAttribute('e-animation-id');\n if (animationId) {\n var frameId = parseInt(animationId, 10);\n cancelAnimationFrame(frameId);\n element.removeAttribute('e-animation-id');\n }\n if (model && model.end) {\n model.end.call(this, model);\n }\n };\n /**\n * Set delay to animation element\n *\n * @param {AnimationModel} model ?\n * @returns {void}\n */\n Animation.delayAnimation = function (model) {\n if (animationMode === 'Disable' || animationMode === GlobalAnimationMode.Disable) {\n if (model.begin) {\n model.begin.call(this, model);\n }\n if (model.end) {\n model.end.call(this, model);\n }\n }\n else {\n if (model.delay) {\n setTimeout(function () { Animation_1.applyAnimation(model); }, model.delay);\n }\n else {\n Animation_1.applyAnimation(model);\n }\n }\n };\n /**\n * Triggers animation\n *\n * @param {AnimationModel} model ?\n * @returns {void}\n */\n Animation.applyAnimation = function (model) {\n var _this = this;\n model.timeStamp = 0;\n var step = 0;\n var timerId = 0;\n var prevTimeStamp = 0;\n var duration = model.duration;\n model.element.setAttribute('e-animate', 'true');\n var startAnimation = function (timeStamp) {\n try {\n if (timeStamp) {\n // let step: number = model.timeStamp = timeStamp - startTime;\n /** phantomjs workaround for timestamp fix */\n prevTimeStamp = prevTimeStamp === 0 ? timeStamp : prevTimeStamp;\n model.timeStamp = (timeStamp + model.timeStamp) - prevTimeStamp;\n prevTimeStamp = timeStamp;\n /** phantomjs workaround end */\n // trigger animation begin event\n if (!step && model.begin) {\n model.begin.call(_this, model);\n }\n step = step + 1;\n var avg = model.timeStamp / step;\n if (model.timeStamp < duration && model.timeStamp + avg < duration && model.element.getAttribute('e-animate')) {\n // apply animation effect to the current element\n model.element.style.animation = model.name + ' ' + model.duration + 'ms ' + model.timingFunction;\n if (model.progress) {\n model.progress.call(_this, model);\n }\n // repeat requestAnimationFrame\n requestAnimationFrame(startAnimation);\n }\n else {\n // clear requestAnimationFrame\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n model.element.removeAttribute('e-animate');\n model.element.style.animation = '';\n if (model.end) {\n model.end.call(_this, model);\n }\n }\n }\n else {\n //startTime = performance.now();\n // set initial requestAnimationFrame\n timerId = requestAnimationFrame(startAnimation);\n model.element.setAttribute('e-animation-id', timerId.toString());\n }\n }\n catch (e) {\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n if (model.fail) {\n model.fail.call(_this, e);\n }\n }\n };\n startAnimation();\n };\n /**\n * Returns Animation Model\n *\n * @param {AnimationModel} options ?\n * @returns {AnimationModel} ?\n */\n Animation.prototype.getModel = function (options) {\n return {\n name: options.name || this.name,\n delay: options.delay || this.delay,\n duration: (options.duration !== undefined ? options.duration : this.duration),\n begin: options.begin || this.begin,\n end: options.end || this.end,\n fail: options.fail || this.fail,\n progress: options.progress || this.progress,\n timingFunction: this.easing[options.timingFunction] ? this.easing[options.timingFunction] :\n (options.timingFunction || this.easing[this.timingFunction])\n };\n };\n /**\n * @private\n * @param {AnimationModel} newProp ?\n * @param {AnimationModel} oldProp ?\n * @returns {void} ?\n */\n Animation.prototype.onPropertyChanged = function (newProp, oldProp) {\n // no code needed\n };\n /**\n * Returns module name as animation\n *\n * @private\n * @returns {void} ?\n */\n Animation.prototype.getModuleName = function () {\n return 'animation';\n };\n /**\n *\n * @private\n * @returns {void} ?\n */\n Animation.prototype.destroy = function () {\n //Override base destroy;\n };\n var Animation_1;\n __decorate([\n Property('FadeIn')\n ], Animation.prototype, \"name\", void 0);\n __decorate([\n Property(400)\n ], Animation.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], Animation.prototype, \"timingFunction\", void 0);\n __decorate([\n Property(0)\n ], Animation.prototype, \"delay\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"progress\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"begin\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"end\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"fail\", void 0);\n Animation = Animation_1 = __decorate([\n NotifyPropertyChanges\n ], Animation);\n return Animation;\n}(Base));\nexport { Animation };\n/**\n * Ripple provides material theme's wave effect when an element is clicked\n * ```html\n *
\n * \n * ```\n *\n * @private\n * @param {HTMLElement} element - Target element\n * @param {RippleOptions} rippleOptions - Ripple options .\n * @param {Function} done .\n * @returns {void} .\n */\nexport function rippleEffect(element, rippleOptions, done) {\n var rippleModel = getRippleModel(rippleOptions);\n if (rippleModel.rippleFlag === false || (rippleModel.rippleFlag === undefined && !isRippleEnabled)) {\n return (function () {\n // do nothing.\n });\n }\n element.setAttribute('data-ripple', 'true');\n EventHandler.add(element, 'mousedown', rippleHandler, { parent: element, rippleOptions: rippleModel });\n EventHandler.add(element, 'mouseup', rippleUpHandler, { parent: element, rippleOptions: rippleModel, done: done });\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n if (Browser.isPointer) {\n EventHandler.add(element, 'transitionend', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n }\n return (function () {\n element.removeAttribute('data-ripple');\n EventHandler.remove(element, 'mousedown', rippleHandler);\n EventHandler.remove(element, 'mouseup', rippleUpHandler);\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n EventHandler.remove(element, 'transitionend', rippleLeaveHandler);\n });\n}\n/**\n * Handler for ripple model\n *\n * @param {RippleOptions} rippleOptions ?\n * @returns {RippleOptions} ?\n */\nfunction getRippleModel(rippleOptions) {\n var rippleModel = {\n selector: rippleOptions && rippleOptions.selector ? rippleOptions.selector : null,\n ignore: rippleOptions && rippleOptions.ignore ? rippleOptions.ignore : null,\n rippleFlag: rippleOptions && rippleOptions.rippleFlag,\n isCenterRipple: rippleOptions && rippleOptions.isCenterRipple,\n duration: rippleOptions && rippleOptions.duration ? rippleOptions.duration : 350\n };\n return rippleModel;\n}\n/**\n * Handler for ripple event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleHandler(e) {\n var target = (e.target);\n var selector = this.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (this.rippleOptions && closest(target, this.rippleOptions.ignore))) {\n return;\n }\n var offset = element.getBoundingClientRect();\n var offsetX = e.pageX - document.body.scrollLeft;\n var offsetY = e.pageY - ((!document.body.scrollTop && document.documentElement) ?\n document.documentElement.scrollTop : document.body.scrollTop);\n var pageX = Math.max(Math.abs(offsetX - offset.left), Math.abs(offsetX - offset.right));\n var pageY = Math.max(Math.abs(offsetY - offset.top), Math.abs(offsetY - offset.bottom));\n var radius = Math.sqrt(pageX * pageX + pageY * pageY);\n var diameter = radius * 2 + 'px';\n var x = offsetX - offset.left - radius;\n var y = offsetY - offset.top - radius;\n if (this.rippleOptions && this.rippleOptions.isCenterRipple) {\n x = 0;\n y = 0;\n diameter = '100%';\n }\n element.classList.add('e-ripple');\n var duration = this.rippleOptions.duration.toString();\n var styles = 'width: ' + diameter + ';height: ' + diameter + ';left: ' + x + 'px;top: ' + y + 'px;' +\n 'transition-duration: ' + duration + 'ms;';\n var rippleElement = createElement('div', { className: 'e-ripple-element', styles: styles });\n element.appendChild(rippleElement);\n window.getComputedStyle(rippleElement).getPropertyValue('opacity');\n rippleElement.style.transform = 'scale(1)';\n if (element !== this.parent) {\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: this.parent, rippleOptions: this.rippleOptions });\n }\n}\n/**\n * Handler for ripple element mouse up event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleUpHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for ripple element mouse move event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleLeaveHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for removing ripple element\n *\n * @param {MouseEvent} e ?\n * @param {RippleArgs} eventArgs ?\n * @returns {void} ?\n * @private\n */\nfunction removeRipple(e, eventArgs) {\n var duration = eventArgs.rippleOptions.duration;\n var target = (e.target);\n var selector = eventArgs.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (element && element.className.indexOf('e-ripple') === -1)) {\n return;\n }\n var rippleElements = selectAll('.e-ripple-element', element);\n var rippleElement = rippleElements[rippleElements.length - 1];\n if (rippleElement) {\n rippleElement.style.opacity = '0.5';\n }\n if (eventArgs.parent !== element) {\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n }\n setTimeout(function () {\n if (rippleElement && rippleElement.parentNode) {\n rippleElement.parentNode.removeChild(rippleElement);\n }\n if (!element.getElementsByClassName('e-ripple-element').length) {\n element.classList.remove('e-ripple');\n }\n if (eventArgs.done) {\n eventArgs.done(e);\n }\n }, duration);\n}\nexport var isRippleEnabled = false;\n/**\n * Animation Module provides support to enable ripple effect functionality to Essential JS 2 components.\n *\n * @param {boolean} isRipple Specifies the boolean value to enable or disable ripple effect.\n * @returns {boolean} ?\n */\nexport function enableRipple(isRipple) {\n isRippleEnabled = isRipple;\n return isRippleEnabled;\n}\n/**\n * Defines the Modes of Global animation.\n *\n * @private\n */\nexport var animationMode;\n/**\n * This method is used to enable or disable the animation for all components.\n *\n * @param {string|GlobalAnimationMode} value - Specifies the value to enable or disable the animation for all components. When set to 'enable', it enables the animation for all components, regardless of the individual component's animation settings. When set to 'disable', it disables the animation for all components, regardless of the individual component's animation settings.\n * @returns {void}\n */\nexport function setGlobalAnimation(value) {\n animationMode = value;\n}\n/**\n * Defines the global animation modes for all components.\n */\nexport var GlobalAnimationMode;\n(function (GlobalAnimationMode) {\n /**\n * Defines the global animation mode as Default. Animation is enabled or disabled based on the component's animation settings.\n */\n GlobalAnimationMode[\"Default\"] = \"Default\";\n /**\n * Defines the global animation mode as Enable. Enables the animation for all components, regardless of the individual component's animation settings.\n */\n GlobalAnimationMode[\"Enable\"] = \"Enable\";\n /**\n * Defines the global animation mode as Disable. Disables the animation for all components, regardless of the individual component's animation settings.\n */\n GlobalAnimationMode[\"Disable\"] = \"Disable\";\n})(GlobalAnimationMode || (GlobalAnimationMode = {}));\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Module loading operations\n */\nimport { createInstance, setValue, getValue, deleteObject } from './util';\nvar MODULE_SUFFIX = 'Module';\nvar ModuleLoader = /** @class */ (function () {\n function ModuleLoader(parent) {\n this.loadedModules = [];\n this.parent = parent;\n }\n /**\n * Inject required modules in component library\n *\n * @returns {void} ?\n * @param {ModuleDeclaration[]} requiredModules - Array of modules to be required\n * @param {Function[]} moduleList - Array of modules to be injected from sample side\n */\n ModuleLoader.prototype.inject = function (requiredModules, moduleList) {\n var reqLength = requiredModules.length;\n if (reqLength === 0) {\n this.clean();\n return;\n }\n if (this.loadedModules.length) {\n this.clearUnusedModule(requiredModules);\n }\n for (var i = 0; i < reqLength; i++) {\n var modl = requiredModules[parseInt(i.toString(), 10)];\n for (var _i = 0, moduleList_1 = moduleList; _i < moduleList_1.length; _i++) {\n var module = moduleList_1[_i];\n var modName = modl.member;\n if (module && module.prototype.getModuleName() === modl.member && !this.isModuleLoaded(modName)) {\n var moduleObject = createInstance(module, modl.args);\n var memberName = this.getMemberName(modName);\n if (modl.isProperty) {\n setValue(memberName, module, this.parent);\n }\n else {\n setValue(memberName, moduleObject, this.parent);\n }\n var loadedModule = modl;\n loadedModule.member = memberName;\n this.loadedModules.push(loadedModule);\n }\n }\n }\n };\n /**\n * To remove the created object while destroying the control\n *\n * @returns {void}\n */\n ModuleLoader.prototype.clean = function () {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var modules = _a[_i];\n if (!modules.isProperty) {\n getValue(modules.member, this.parent).destroy();\n }\n }\n this.loadedModules = [];\n };\n /**\n * Returns the array of modules that are not loaded in the component library.\n *\n * @param {ModuleDeclaration[]} requiredModules - Array of modules to be required\n * @returns {ModuleDeclaration[]} ?\n * @private\n */\n ModuleLoader.prototype.getNonInjectedModules = function (requiredModules) {\n var _this = this;\n return requiredModules.filter(function (module) { return !_this.isModuleLoaded(module.member); });\n };\n /**\n * Removes all unused modules\n *\n * @param {ModuleDeclaration[]} moduleList ?\n * @returns {void} ?\n */\n ModuleLoader.prototype.clearUnusedModule = function (moduleList) {\n var _this = this;\n var usedModules = moduleList.map(function (arg) { return _this.getMemberName(arg.member); });\n var removableModule = this.loadedModules.filter(function (module) {\n return usedModules.indexOf(module.member) === -1;\n });\n for (var _i = 0, removableModule_1 = removableModule; _i < removableModule_1.length; _i++) {\n var mod = removableModule_1[_i];\n if (!mod.isProperty) {\n getValue(mod.member, this.parent).destroy();\n }\n this.loadedModules.splice(this.loadedModules.indexOf(mod), 1);\n deleteObject(this.parent, mod.member);\n }\n };\n /**\n * To get the name of the member.\n *\n * @param {string} name ?\n * @returns {string} ?\n */\n ModuleLoader.prototype.getMemberName = function (name) {\n return name[0].toLowerCase() + name.substring(1) + MODULE_SUFFIX;\n };\n /**\n * Returns boolean based on whether the module specified is loaded or not\n *\n * @param {string} modName ?\n * @returns {boolean} ?\n */\n ModuleLoader.prototype.isModuleLoaded = function (modName) {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var mod = _a[_i];\n if (mod.member === this.getMemberName(modName)) {\n return true;\n }\n }\n return false;\n };\n return ModuleLoader;\n}());\nexport { ModuleLoader };\n","import { createElement } from './dom';\nimport { getValue, containerObject, setValue, isNullOrUndefined } from './util';\nexport var componentList = ['grid', 'pivotview', 'treegrid', 'spreadsheet', 'rangeNavigator', 'DocumentEditor', 'listbox', 'inplaceeditor', 'PdfViewer', 'richtexteditor', 'DashboardLayout', 'chart', 'stockChart', 'circulargauge', 'diagram', 'heatmap', 'lineargauge', 'maps', 'slider', 'smithchart', 'barcode', 'sparkline', 'treemap', 'bulletChart', 'kanban', 'daterangepicker', 'schedule', 'gantt', 'signature', 'query-builder', 'drop-down-tree', 'carousel', 'filemanager', 'uploader', 'accordion', 'tab', 'treeview'];\nvar bypassKey = [115, 121, 110, 99, 102, 117, 115, 105,\n 111, 110, 46, 105, 115, 76, 105, 99, 86, 97, 108,\n 105, 100, 97, 116, 101, 100];\nvar accountURL;\n/**\n * License validation module\n *\n * @private\n */\nvar LicenseValidator = /** @class */ (function () {\n function LicenseValidator(key) {\n this.isValidated = false;\n this.isLicensed = true;\n this.version = '27';\n this.platform = /JavaScript|ASPNET|ASPNETCORE|ASPNETMVC|FileFormats|essentialstudio/i;\n this.errors = {\n noLicense: 'This application was built using a trial version of Syncfusion Essential Studio.' +\n ' To remove the license validation message permanently, a valid license key must be included.',\n trailExpired: 'This application was built using a trial version of Syncfusion Essential Studio.' +\n ' To remove the license validation message permanently, a valid license key must be included.',\n versionMismatched: 'The included Syncfusion license key is invalid.',\n platformMismatched: 'The included Syncfusion license key is invalid.',\n invalidKey: 'The included Syncfusion license key is invalid.'\n };\n /**\n * To manage licensing operation.\n */\n this.manager = (function () {\n var licKey = null;\n /**\n * Sets the license key.\n *\n * @param {string} key - Specifies the license key.\n * @returns {void}\n */\n function set(key) { licKey = key; }\n /**\n * Gets the license key.\n *\n * @returns {string} -Gets the license key.\n */\n function get() { return licKey; }\n return {\n setKey: set,\n getKey: get\n };\n })();\n /**\n * To manage npx licensing operation.\n */\n this.npxManager = (function () {\n var npxLicKey = 'npxKeyReplace';\n /**\n * Gets the license key.\n *\n * @returns {string} - Gets the license key.\n */\n function get() { return npxLicKey; }\n return {\n getKey: get\n };\n })();\n this.manager.setKey(key);\n }\n /**\n * To validate the provided license key.\n *\n * @returns {boolean} ?\n */\n LicenseValidator.prototype.validate = function () {\n var contentKey = [115, 121, 110, 99, 102, 117, 115, 105, 111, 110, 46,\n 108, 105, 99, 101, 110, 115, 101, 67, 111, 110, 116, 101, 110, 116];\n var URLKey = [115, 121, 110, 99, 102, 117, 115, 105, 111, 110, 46,\n 99, 108, 97, 105, 109, 65, 99, 99, 111, 117, 110, 116, 85, 82, 76];\n if (!this.isValidated && (containerObject && !getValue(convertToChar(bypassKey), containerObject) && !getValue('Blazor', containerObject))) {\n var validateMsg = void 0;\n var validateURL = void 0;\n if ((this.manager && this.manager.getKey()) || (this.npxManager && this.npxManager.getKey() !== 'npxKeyReplace')) {\n var result = this.getInfoFromKey();\n if (result && result.length) {\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var res = result_1[_i];\n if (!this.platform.test(res.platform) || res.invalidPlatform) {\n validateMsg = this.errors.platformMismatched;\n }\n else if (res.version.indexOf(this.version) === -1) {\n validateMsg = this.errors.versionMismatched;\n validateMsg = validateMsg.replace('##LicenseVersion', res.version);\n validateMsg = validateMsg.replace('##Requireversion', this.version + '.x');\n }\n else if (res.expiryDate) {\n var expDate = new Date(res.expiryDate);\n var currDate = new Date();\n if (expDate !== currDate && expDate < currDate) {\n validateMsg = this.errors.trailExpired;\n }\n else {\n break;\n }\n }\n }\n }\n else {\n validateMsg = this.errors.invalidKey;\n }\n }\n else {\n var licenseContent = getValue(convertToChar(contentKey), containerObject);\n validateURL = getValue(convertToChar(URLKey), containerObject);\n if (licenseContent && licenseContent !== '') {\n validateMsg = licenseContent;\n }\n else {\n validateMsg = this.errors.noLicense;\n }\n }\n if (validateMsg && typeof document !== 'undefined' && !isNullOrUndefined(document)) {\n accountURL = (validateURL && validateURL !== '') ? validateURL : 'https://www.syncfusion.com/account/claim-license-key?pl=SmF2YVNjcmlwdA==&vs=Mjc=&utm_source=es_license_validation_banner&utm_medium=listing&utm_campaign=license-information';\n var errorDiv = createElement('div', {\n innerHTML: \"\" + validateMsg + ' ' + 'Claim your free account'\n });\n errorDiv.setAttribute('style', \"position: fixed;\\n top: 10px;\\n left: 10px;\\n right: 10px;\\n font-size: 14px;\\n background: #EEF2FF;\\n color: #222222;\\n z-index: 999999999;\\n text-align: left;\\n border: 1px solid #EEEEEE;\\n padding: 10px 11px 10px 50px;\\n border-radius: 8px;\\n font-family: Helvetica Neue, Helvetica, Arial;\");\n document.body.appendChild(errorDiv);\n this.isLicensed = false;\n }\n this.isValidated = true;\n setValue(convertToChar(bypassKey), this.isValidated, containerObject);\n }\n return this.isLicensed;\n };\n LicenseValidator.prototype.getDecryptedData = function (key) {\n try {\n return atob(key);\n }\n catch (error) {\n return '';\n }\n };\n /**\n * Get license information from key.\n *\n * @returns {IValidator} - Get license information from key.\n */\n LicenseValidator.prototype.getInfoFromKey = function () {\n try {\n var licKey = '';\n var pkey = [5439488, 7929856, 5111808, 6488064, 4587520, 7667712, 5439488,\n 6881280, 5177344, 7208960, 4194304, 4456448, 6619136, 7733248, 5242880, 7077888,\n 6356992, 7602176, 4587520, 7274496, 7471104, 7143424];\n var decryptedStr = [];\n var resultArray = [];\n var invalidPlatform = false;\n var isNpxKey = false;\n if (this.manager.getKey()) {\n licKey = this.manager.getKey();\n }\n else {\n isNpxKey = true;\n licKey = this.npxManager.getKey().split('npxKeyReplace')[1];\n }\n var licKeySplit = licKey.split(';');\n for (var _i = 0, licKeySplit_1 = licKeySplit; _i < licKeySplit_1.length; _i++) {\n var lKey = licKeySplit_1[_i];\n var decodeStr = this.getDecryptedData(lKey);\n if (!decodeStr) {\n continue;\n }\n var k = 0;\n var buffr = '';\n if (!isNpxKey) {\n for (var i = 0; i < decodeStr.length; i++, k++) {\n if (k === pkey.length) {\n k = 0;\n }\n var c = decodeStr.charCodeAt(i);\n buffr += String.fromCharCode(c ^ (pkey[parseInt(k.toString(), 10)] >> 16));\n }\n }\n else {\n var charKey = decodeStr[decodeStr.length - 1];\n var decryptedKey = [];\n for (var i = 0; i < decodeStr.length; i++) {\n decryptedKey[parseInt(i.toString(), 10)] = decodeStr[parseInt(i.toString(), 10)].charCodeAt(0)\n - charKey.charCodeAt(0);\n }\n for (var i = 0; i < decryptedKey.length; i++) {\n buffr += String.fromCharCode(decryptedKey[parseInt(i.toString(), 10)]);\n }\n }\n if (this.platform.test(buffr)) {\n decryptedStr = buffr.split(';');\n invalidPlatform = false;\n // checked the length to verify the key in proper strucutre\n if (decryptedStr.length > 3) {\n resultArray.push({ platform: decryptedStr[0],\n version: decryptedStr[1],\n expiryDate: decryptedStr[2] });\n }\n }\n else if (buffr && buffr.split(';').length > 3) {\n invalidPlatform = true;\n }\n }\n if (invalidPlatform && !resultArray.length) {\n return [{ invalidPlatform: invalidPlatform }];\n }\n else {\n return resultArray.length ? resultArray : null;\n }\n }\n catch (error) {\n return null;\n }\n };\n return LicenseValidator;\n}());\nvar licenseValidator = new LicenseValidator();\n/**\n * Converts the given number to characters.\n *\n * @param {number} cArr - Specifies the license key as number.\n * @returns {string} ?\n */\nfunction convertToChar(cArr) {\n var ret = '';\n for (var _i = 0, cArr_1 = cArr; _i < cArr_1.length; _i++) {\n var arr = cArr_1[_i];\n ret += String.fromCharCode(arr);\n }\n return ret;\n}\n/**\n * To set license key.\n *\n * @param {string} key - license key\n * @returns {void}\n */\nexport function registerLicense(key) {\n licenseValidator = new LicenseValidator(key);\n}\nexport var validateLicense = function (key) {\n if (key) {\n registerLicense(key);\n }\n return licenseValidator.validate();\n};\nexport var getVersion = function () {\n return licenseValidator.version;\n};\n// Method for create overlay over the sample\nexport var createLicenseOverlay = function () {\n var bannerTemplate = \"\\n
\\n
\\n
\\n \\n
\\n
Claim your FREE account and get a key in less than a minute
\\n
    \\n
  • Access to a 30-day free trial of any of our products.
  • \\n
  • Access to 24x5 support by developers via the support tickets, forum, feature & feedback page and chat.
  • \\n
  • 200+ ebooks on the latest technologies, industry trends, and research topics.\\n
  • \\n
  • Largest collection of over 7,000 flat and wireframe icons for free with Syncfusion Metro Studio.
  • \\n
  • Free and unlimited access to Syncfusion technical blogs and whitepapers.
  • \\n
\\n
Syncfusion is trusted by 29,000+ businesses worldwide
\\n \\n Claim your FREE account\\n
have a Syncfusion account? Sign In
\\n
\\n
\";\n if (typeof document !== 'undefined' && !isNullOrUndefined(document)) {\n var errorBackground = createElement('div', {\n innerHTML: bannerTemplate\n });\n document.body.appendChild(errorBackground);\n }\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { getValue, setValue, merge, isBlazor } from './util';\nimport { Base } from './base';\n/**\n * To detect the changes for inner properties.\n *\n * @private\n * @returns {void} ?\n */\nvar ChildProperty = /** @class */ (function () {\n function ChildProperty(parent, propName, defaultValue, isArray) {\n this.isComplexArraySetter = false;\n this.properties = {};\n this.changedProperties = {};\n this.childChangedProperties = {};\n this.oldProperties = {};\n this.finalUpdate = function () { };\n this.callChildDataBind = getValue('callChildDataBind', Base);\n this.parentObj = parent;\n this.controlParent = this.parentObj.controlParent || this.parentObj;\n this.propName = propName;\n this.isParentArray = isArray;\n this.setProperties(defaultValue, true);\n }\n /**\n * Updates the property changes\n *\n * @param {boolean} val ?\n * @param {string} propName ?\n * @returns {void} ?\n */\n ChildProperty.prototype.updateChange = function (val, propName) {\n if (val === true) {\n this.parentObj.childChangedProperties[\"\" + propName] = val;\n }\n else {\n delete this.parentObj.childChangedProperties[\"\" + propName];\n }\n if (this.parentObj.updateChange) {\n this.parentObj.updateChange(val, this.parentObj.propName);\n }\n };\n /**\n * Updates time out duration\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.updateTimeOut = function () {\n if (this.parentObj.updateTimeOut) {\n this.parentObj.finalUpdate();\n this.parentObj.updateTimeOut();\n }\n else {\n var changeTime_1 = setTimeout(this.parentObj.dataBind.bind(this.parentObj));\n var clearUpdate = function () {\n clearTimeout(changeTime_1);\n };\n this.finalUpdate = clearUpdate;\n }\n };\n /**\n * Clears changed properties\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.clearChanges = function () {\n this.finalUpdate();\n this.updateChange(false, this.propName);\n this.oldProperties = {};\n this.changedProperties = {};\n };\n /**\n * Set property changes\n *\n * @param {Object} prop ?\n * @param {boolean} muteOnChange ?\n * @returns {void} ?\n */\n ChildProperty.prototype.setProperties = function (prop, muteOnChange) {\n if (muteOnChange === true) {\n merge(this, prop);\n this.updateChange(false, this.propName);\n this.clearChanges();\n }\n else {\n merge(this, prop);\n }\n };\n /**\n * Binds data\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.dataBind = function () {\n this.callChildDataBind(this.childChangedProperties, this);\n if (this.isParentArray) {\n var curIndex = this.parentObj[this.propName].indexOf(this);\n if (Object.keys(this.changedProperties).length) {\n setValue(this.propName + '.' + curIndex, this.changedProperties, this.parentObj.changedProperties);\n setValue(this.propName + '.' + curIndex, this.oldProperties, this.parentObj.oldProperties);\n }\n }\n else {\n this.parentObj.changedProperties[this.propName] = this.changedProperties;\n this.parentObj.oldProperties[this.propName] = this.oldProperties;\n }\n this.clearChanges();\n };\n /**\n * Saves changes to newer values\n *\n * @param {string} key ?\n * @param {Object} newValue ?\n * @param {Object} oldValue ?\n * @param {boolean} restrictServerDataBind ?\n * @returns {void} ?\n */\n ChildProperty.prototype.saveChanges = function (key, newValue, oldValue, restrictServerDataBind) {\n if (this.controlParent.isProtectedOnChange) {\n return;\n }\n if (!restrictServerDataBind) {\n this.serverDataBind(key, newValue, true);\n }\n this.oldProperties[\"\" + key] = oldValue;\n this.changedProperties[\"\" + key] = newValue;\n this.updateChange(true, this.propName);\n this.finalUpdate();\n this.updateTimeOut();\n };\n ChildProperty.prototype.serverDataBind = function (key, value, isSaveChanges, action) {\n if (isBlazor() && !this.parentObj.isComplexArraySetter) {\n var parent_1;\n var newChanges = {};\n var parentKey = isSaveChanges ? this.getParentKey(true) + '.' + key : key;\n /* istanbul ignore else */\n if (parentKey.indexOf('.') !== -1) {\n var complexKeys = parentKey.split('.');\n parent_1 = newChanges;\n for (var i = 0; i < complexKeys.length; i++) {\n var isFinal = i === complexKeys.length - 1;\n parent_1[complexKeys[parseInt(i.toString(), 10)]] = isFinal ? value : {};\n parent_1 = isFinal ? parent_1 : parent_1[complexKeys[parseInt(i.toString(), 10)]];\n }\n }\n else {\n newChanges[\"\" + parentKey] = {};\n parent_1 = newChanges[\"\" + parentKey];\n newChanges[\"\" + parentKey][\"\" + key] = value;\n }\n /* istanbul ignore next */\n if (this.isParentArray) {\n var actionProperty = 'ejsAction';\n parent_1[\"\" + actionProperty] = action ? action : 'none';\n }\n this.controlParent.serverDataBind(newChanges);\n }\n };\n ChildProperty.prototype.getParentKey = function (isSaveChanges) {\n var index = '';\n var propName = this.propName;\n /* istanbul ignore next */\n if (this.isParentArray) {\n index = this.parentObj[this.propName].indexOf(this);\n var valueLength = this.parentObj[this.propName].length;\n valueLength = isSaveChanges ? valueLength : (valueLength > 0 ? valueLength - 1 : 0);\n index = index !== -1 ? '-' + index : '-' + valueLength;\n propName = propName + index;\n }\n if (this.controlParent !== this.parentObj) {\n propName = this.parentObj.getParentKey() + '.' + this.propName + index;\n }\n return propName;\n };\n return ChildProperty;\n}());\nexport { ChildProperty };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types */\nimport { isUndefined, getValue, isNullOrUndefined, setValue, uniqueID, isBlazor } from './util';\nimport { ModuleLoader } from './module-loader';\nimport { Base } from './base';\nimport { Observer } from './observer';\nimport { ChildProperty } from './child-property';\nimport { Property, NotifyPropertyChanges } from './notify-property-change';\nimport { onIntlChange, rightToLeft, defaultCulture } from './internationalization';\nimport { createElement, addClass, removeClass, select } from './dom';\nimport { validateLicense, createLicenseOverlay, componentList } from './validate-lic';\nvar componentCount = 0;\nvar lastPageID;\nvar lastHistoryLen = 0;\n// Decalre the static variable to count the instance\nvar instancecount = 0;\n// Decalre the static variable to find if control limit exceed or not\nvar isvalid = true;\n// We have added styles to inline type so here declare the static variable to detect if banner is added or not\nvar isBannerAdded = false;\nexport var versionBasedStatePersistence = false;\n/**\n * To enable or disable version based statePersistence functionality for all components globally.\n *\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable versionBasedStatePersistence option.\n * @returns {void}\n */\nexport function enableVersionBasedPersistence(status) {\n versionBasedStatePersistence = status;\n}\n/**\n * Base class for all Essential JavaScript components\n */\nvar Component = /** @class */ (function (_super) {\n __extends(Component, _super);\n /**\n * Initialize the constructor for component base\n *\n * @param {Object} options ?\n * @param {string} selector ?\n */\n function Component(options, selector) {\n var _this = _super.call(this, options, selector) || this;\n _this.randomId = uniqueID();\n /**\n * string template option for Blazor template rendering\n *\n * @private\n */\n _this.isStringTemplate = false;\n _this.needsID = false;\n _this.isReactHybrid = false;\n _this.isAngular = false;\n _this.isReact = false;\n _this.isVue = false;\n if (isNullOrUndefined(_this.enableRtl)) {\n _this.setProperties({ 'enableRtl': rightToLeft }, true);\n }\n if (isNullOrUndefined(_this.locale)) {\n _this.setProperties({ 'locale': defaultCulture }, true);\n }\n _this.moduleLoader = new ModuleLoader(_this);\n _this.localObserver = new Observer(_this);\n onIntlChange.on('notifyExternalChange', _this.detectFunction, _this, _this.randomId);\n // Based on the considered control list we have count the instance\n if (typeof window !== 'undefined' && typeof document !== 'undefined' && !validateLicense()) {\n if (componentList.indexOf(_this.getModuleName()) !== -1) {\n instancecount = instancecount + 1;\n if (instancecount > 5) {\n isvalid = false;\n }\n }\n }\n if (!isUndefined(selector)) {\n _this.appendTo();\n }\n return _this;\n }\n Component.prototype.requiredModules = function () {\n return [];\n };\n /**\n * Destroys the sub modules while destroying the widget\n *\n * @returns {void} ?\n */\n Component.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (this.enablePersistence) {\n this.setPersistData();\n this.detachUnloadEvent();\n }\n this.localObserver.destroy();\n if (this.refreshing) {\n return;\n }\n removeClass([this.element], ['e-control']);\n this.trigger('destroyed', { cancel: false });\n _super.prototype.destroy.call(this);\n this.moduleLoader.clean();\n onIntlChange.off('notifyExternalChange', this.detectFunction, this.randomId);\n };\n /**\n * Applies all the pending property changes and render the component again.\n *\n * @returns {void} ?\n */\n Component.prototype.refresh = function () {\n this.refreshing = true;\n this.moduleLoader.clean();\n this.destroy();\n this.clearChanges();\n this.localObserver = new Observer(this);\n this.preRender();\n this.injectModules();\n this.render();\n this.refreshing = false;\n };\n Component.prototype.accessMount = function () {\n if (this.mount && !this.isReactHybrid) {\n this.mount();\n }\n };\n /**\n * Returns the route element of the component\n *\n * @returns {HTMLElement} ?\n */\n Component.prototype.getRootElement = function () {\n if (this.isReactHybrid) {\n return this.actualElement;\n }\n else {\n return this.element;\n }\n };\n /**\n * Returns the persistence data for component\n *\n * @returns {any} ?\n */\n Component.prototype.getLocalData = function () {\n var eleId = this.getModuleName() + this.element.id;\n if (versionBasedStatePersistence) {\n return window.localStorage.getItem(eleId + this.ej2StatePersistenceVersion);\n }\n else {\n return window.localStorage.getItem(eleId);\n }\n };\n /**\n * Adding unload event to persist data when enable persistence true\n *\n * @returns {void}\n */\n Component.prototype.attachUnloadEvent = function () {\n this.handleUnload = this.handleUnload.bind(this);\n window.addEventListener('pagehide', this.handleUnload);\n };\n /**\n * Handling unload event to persist data when enable persistence true\n *\n * @returns {void}\n */\n Component.prototype.handleUnload = function () {\n this.setPersistData();\n };\n /**\n * Removing unload event to persist data when enable persistence true\n *\n * @returns {void}\n */\n Component.prototype.detachUnloadEvent = function () {\n window.removeEventListener('pagehide', this.handleUnload);\n };\n /**\n * Appends the control within the given HTML element\n *\n * @param {string | HTMLElement} selector - Target element where control needs to be appended\n * @returns {void} ?\n */\n Component.prototype.appendTo = function (selector) {\n if (!isNullOrUndefined(selector) && typeof (selector) === 'string') {\n this.element = select(selector, document);\n }\n else if (!isNullOrUndefined(selector)) {\n this.element = selector;\n }\n if (!isNullOrUndefined(this.element)) {\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-control', moduleClass]);\n this.isProtectedOnChange = false;\n if (this.needsID && !this.element.id) {\n this.element.id = this.getUniqueID(this.getModuleName());\n }\n if (this.enablePersistence) {\n this.mergePersistData();\n this.attachUnloadEvent();\n }\n var inst = getValue('ej2_instances', this.element);\n if (!inst || inst.indexOf(this) === -1) {\n _super.prototype.addInstance.call(this);\n }\n this.preRender();\n this.injectModules();\n // Throw a warning for the required modules to be injected.\n var ignoredComponents = {\n schedule: 'all',\n diagram: 'all',\n PdfViewer: 'all',\n grid: ['logger'],\n richtexteditor: ['link', 'table', 'image', 'audio', 'video', 'formatPainter', 'emojiPicker', 'pasteCleanup', 'htmlEditor', 'toolbar', 'importExport'],\n treegrid: ['filter'],\n gantt: ['tooltip'],\n chart: ['Export', 'Zoom'],\n accumulationchart: ['Export'],\n 'query-builder': 'all'\n };\n var component = this.getModuleName();\n if (this.requiredModules && (!ignoredComponents[\"\" + component] || ignoredComponents[\"\" + component] !== 'all')) {\n var modulesRequired = this.requiredModules();\n for (var _i = 0, _a = this.moduleLoader.getNonInjectedModules(modulesRequired); _i < _a.length; _i++) {\n var module = _a[_i];\n var moduleName = module.name ? module.name : module.member;\n if (ignoredComponents[\"\" + component] && ignoredComponents[\"\" + component].indexOf(module.member) !== -1) {\n continue;\n }\n var componentName = component.charAt(0).toUpperCase() + component.slice(1); // To capitalize the component name\n console.warn(\"[WARNING] :: Module \\\"\" + moduleName + \"\\\" is not available in \" + componentName + \" component! You either misspelled the module name or forgot to load it.\");\n }\n }\n // Checked weather cases are valid or not. If control leads to more than five counts\n if (!isvalid && !isBannerAdded) {\n createLicenseOverlay();\n isBannerAdded = true;\n }\n this.render();\n if (!this.mount) {\n this.trigger('created');\n }\n else {\n this.accessMount();\n }\n }\n };\n /**\n * It is used to process the post rendering functionalities to a component.\n *\n * @param {Node} wrapperElement ?\n * @returns {void} ?\n */\n Component.prototype.renderComplete = function (wrapperElement) {\n if (isBlazor()) {\n var sfBlazor = 'sfBlazor';\n window[\"\" + sfBlazor].renderComplete(this.element, wrapperElement);\n }\n this.isRendered = true;\n };\n /**\n * When invoked, applies the pending property changes immediately to the component.\n *\n * @returns {void} ?\n */\n Component.prototype.dataBind = function () {\n this.injectModules();\n _super.prototype.dataBind.call(this);\n };\n /**\n * Attach one or more event handler to the current component context.\n * It is used for internal handling event internally within the component only.\n *\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the handler to run when the event occurs\n * @param {Object} context - optional parameter Specifies the context to be bind in the handler.\n * @returns {void} ?\n * @private\n */\n Component.prototype.on = function (event, handler, context) {\n if (typeof event === 'string') {\n this.localObserver.on(event, handler, context);\n }\n else {\n for (var _i = 0, event_1 = event; _i < event_1.length; _i++) {\n var arg = event_1[_i];\n this.localObserver.on(arg.event, arg.handler, arg.context);\n }\n }\n };\n /**\n * To remove one or more event handler that has been attached with the on() method.\n *\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the function to run when the event occurs\n * @returns {void} ?\n * @private\n */\n Component.prototype.off = function (event, handler) {\n if (typeof event === 'string') {\n this.localObserver.off(event, handler);\n }\n else {\n for (var _i = 0, event_2 = event; _i < event_2.length; _i++) {\n var arg = event_2[_i];\n this.localObserver.off(arg.event, arg.handler);\n }\n }\n };\n /**\n * To notify the handlers in the specified event.\n *\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @returns {void} ?\n * @private\n */\n Component.prototype.notify = function (property, argument) {\n if (this.isDestroyed !== true) {\n this.localObserver.notify(property, argument);\n }\n };\n /**\n * Get injected modules\n *\n * @returns {Function} ?\n * @private\n */\n Component.prototype.getInjectedModules = function () {\n return this.injectedModules;\n };\n /**\n * Dynamically injects the required modules to the component.\n *\n * @param {Function} moduleList ?\n * @returns {void} ?\n */\n Component.Inject = function () {\n var moduleList = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n moduleList[_i] = arguments[_i];\n }\n if (!this.prototype.injectedModules) {\n this.prototype.injectedModules = [];\n }\n for (var i = 0; i < moduleList.length; i++) {\n if (this.prototype.injectedModules.indexOf(moduleList[parseInt(i.toString(), 10)]) === -1) {\n this.prototype.injectedModules.push(moduleList[parseInt(i.toString(), 10)]);\n }\n }\n };\n /**\n * This is a instance method to create an element.\n *\n * @param {string} tagName ?\n * @param {ElementProperties} prop ?\n * @param {boolean} isVDOM ?\n * @returns {any} ?\n * @private\n */\n Component.prototype.createElement = function (tagName, prop, isVDOM) {\n return createElement(tagName, prop);\n };\n /**\n *\n * @param {Function} handler - handler to be triggered after state Updated.\n * @param {any} argument - Arguments to be passed to caller.\n * @returns {void} .\n * @private\n */\n Component.prototype.triggerStateChange = function (handler, argument) {\n if (this.isReactHybrid) {\n this.setState();\n this.currentContext = { calls: handler, args: argument };\n }\n };\n Component.prototype.injectModules = function () {\n if (this.injectedModules && this.injectedModules.length) {\n this.moduleLoader.inject(this.requiredModules(), this.injectedModules);\n }\n };\n Component.prototype.detectFunction = function (args) {\n var prop = Object.keys(args);\n if (prop.length) {\n this[prop[0]] = args[prop[0]];\n }\n };\n Component.prototype.mergePersistData = function () {\n var data;\n if (versionBasedStatePersistence) {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id + this.ej2StatePersistenceVersion);\n }\n else {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n }\n if (!(isNullOrUndefined(data) || (data === ''))) {\n this.setProperties(JSON.parse(data), true);\n }\n };\n Component.prototype.setPersistData = function () {\n if (!this.isDestroyed) {\n if (versionBasedStatePersistence) {\n window.localStorage.setItem(this.getModuleName() +\n this.element.id + this.ej2StatePersistenceVersion, this.getPersistData());\n }\n else {\n window.localStorage.setItem(this.getModuleName() + this.element.id, this.getPersistData());\n }\n }\n };\n Component.prototype.renderReactTemplates = function (callback) {\n if (!isNullOrUndefined(callback)) {\n callback();\n }\n };\n Component.prototype.clearTemplate = function (templateName, index) {\n //No Code\n };\n Component.prototype.getUniqueID = function (definedName) {\n if (this.isHistoryChanged()) {\n componentCount = 0;\n }\n lastPageID = this.pageID(location.href);\n lastHistoryLen = history.length;\n return definedName + '_' + lastPageID + '_' + componentCount++;\n };\n Component.prototype.pageID = function (url) {\n var hash = 0;\n if (url.length === 0) {\n return hash;\n }\n for (var i = 0; i < url.length; i++) {\n var char = url.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash = hash & hash; // Convert to 32bit integer\n }\n return Math.abs(hash);\n };\n Component.prototype.isHistoryChanged = function () {\n return lastPageID !== this.pageID(location.href) || lastHistoryLen !== history.length;\n };\n Component.prototype.addOnPersist = function (options) {\n var _this = this;\n var persistObj = {};\n for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {\n var key = options_1[_i];\n var objValue = getValue(key, this);\n if (!isUndefined(objValue)) {\n setValue(key, this.getActualProperties(objValue), persistObj);\n }\n }\n return JSON.stringify(persistObj, function (key, value) {\n return _this.getActualProperties(value);\n });\n };\n Component.prototype.getActualProperties = function (obj) {\n if (obj instanceof ChildProperty) {\n return getValue('properties', obj);\n }\n else {\n return obj;\n }\n };\n Component.prototype.ignoreOnPersist = function (options) {\n return JSON.stringify(this.iterateJsonProperties(this.properties, options));\n };\n Component.prototype.iterateJsonProperties = function (obj, ignoreList) {\n var newObj = {};\n var _loop_1 = function (key) {\n if (ignoreList.indexOf(key) === -1) {\n var value = obj[\"\" + key];\n if (typeof value === 'object' && !(value instanceof Array)) {\n var newList = ignoreList.filter(function (str) {\n var regExp = RegExp;\n return new regExp(key + '.').test(str);\n }).map(function (str) {\n return str.replace(key + '.', '');\n });\n newObj[\"\" + key] = this_1.iterateJsonProperties(this_1.getActualProperties(value), newList);\n }\n else {\n newObj[\"\" + key] = value;\n }\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\n var key = _a[_i];\n _loop_1(key);\n }\n return newObj;\n };\n __decorate([\n Property(false)\n ], Component.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"enableRtl\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"locale\", void 0);\n Component = __decorate([\n NotifyPropertyChanges\n ], Component);\n return Component;\n}(Base));\nexport { Component };\n//Function handling for page navigation detection\n/* istanbul ignore next */\n(function () {\n if (typeof window !== 'undefined') {\n window.addEventListener('popstate', \n /* istanbul ignore next */\n function () {\n componentCount = 0;\n });\n }\n})();\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible } from './dom';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { ChildProperty } from './child-property';\nimport { select, closest, setStyleAttribute, addClass, createElement } from './dom';\nimport { extend, isUndefined, isNullOrUndefined, compareElementParent, isBlazor } from './util';\nvar defaultPosition = { left: 0, top: 0, bottom: 0, right: 0 };\nvar isDraggedObject = { isDragged: false };\n/**\n * Specifies the position coordinates\n */\nvar Position = /** @class */ (function (_super) {\n __extends(Position, _super);\n function Position() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Position.prototype, \"left\", void 0);\n __decorate([\n Property(0)\n ], Position.prototype, \"top\", void 0);\n return Position;\n}(ChildProperty));\nexport { Position };\n/**\n * Draggable Module provides support to enable draggable functionality in Dom Elements.\n * ```html\n *
Draggable
\n * \n * ```\n */\nvar Draggable = /** @class */ (function (_super) {\n __extends(Draggable, _super);\n function Draggable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.dragLimit = Draggable_1.getDefaultPosition();\n _this.borderWidth = Draggable_1.getDefaultPosition();\n _this.padding = Draggable_1.getDefaultPosition();\n _this.diffX = 0;\n _this.prevLeft = 0;\n _this.prevTop = 0;\n _this.dragProcessStarted = false;\n _this.eleTop = 0;\n _this.tapHoldTimer = 0;\n _this.externalInitialize = false;\n _this.diffY = 0;\n _this.parentScrollX = 0;\n _this.parentScrollY = 0;\n _this.droppables = {};\n _this.bind();\n return _this;\n }\n Draggable_1 = Draggable;\n Draggable.prototype.bind = function () {\n this.toggleEvents();\n if (Browser.isIE) {\n addClass([this.element], 'e-block-touch');\n }\n this.droppables[this.scope] = {};\n };\n Draggable.getDefaultPosition = function () {\n return extend({}, defaultPosition);\n };\n Draggable.prototype.toggleEvents = function (isUnWire) {\n var ele;\n if (!isUndefined(this.handle)) {\n ele = select(this.handle, this.element);\n }\n var handler = (this.enableTapHold && Browser.isDevice && Browser.isTouch) ? this.mobileInitialize : this.initialize;\n if (isUnWire) {\n EventHandler.remove(ele || this.element, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, handler);\n }\n else {\n EventHandler.add(ele || this.element, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, handler, this);\n }\n };\n /* istanbul ignore next */\n Draggable.prototype.mobileInitialize = function (evt) {\n var _this = this;\n var target = evt.currentTarget;\n this.tapHoldTimer = setTimeout(function () {\n _this.externalInitialize = true;\n _this.removeTapholdTimer();\n _this.initialize(evt, target);\n }, this.tapHoldThreshold);\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.removeTapholdTimer, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.removeTapholdTimer, this);\n };\n /* istanbul ignore next */\n Draggable.prototype.removeTapholdTimer = function () {\n clearTimeout(this.tapHoldTimer);\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.removeTapholdTimer);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.removeTapholdTimer);\n };\n /* istanbul ignore next */\n Draggable.prototype.getScrollableParent = function (element, axis) {\n var scroll = { 'vertical': 'scrollHeight', 'horizontal': 'scrollWidth' };\n var client = { 'vertical': 'clientHeight', 'horizontal': 'clientWidth' };\n if (isNullOrUndefined(element)) {\n return null;\n }\n if (element[scroll[\"\" + axis]] > element[client[\"\" + axis]]) {\n if (axis === 'vertical' ? element.scrollTop > 0 : element.scrollLeft > 0) {\n if (axis === 'vertical') {\n this.parentScrollY = this.parentScrollY +\n (this.parentScrollY === 0 ? element.scrollTop : element.scrollTop - this.parentScrollY);\n this.tempScrollHeight = element.scrollHeight;\n }\n else {\n this.parentScrollX = this.parentScrollX +\n (this.parentScrollX === 0 ? element.scrollLeft : element.scrollLeft - this.parentScrollX);\n this.tempScrollWidth = element.scrollWidth;\n }\n if (!isNullOrUndefined(element)) {\n return this.getScrollableParent(element.parentNode, axis);\n }\n else {\n return element;\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n };\n Draggable.prototype.getScrollableValues = function () {\n this.parentScrollX = 0;\n this.parentScrollY = 0;\n var isModalDialog = this.element.classList.contains('e-dialog') && this.element.classList.contains('e-dlg-modal');\n var verticalScrollParent = this.getScrollableParent(this.element.parentNode, 'vertical');\n var horizontalScrollParent = this.getScrollableParent(this.element.parentNode, 'horizontal');\n };\n Draggable.prototype.initialize = function (evt, curTarget) {\n this.currentStateTarget = evt.target;\n if (this.isDragStarted()) {\n return;\n }\n else {\n this.isDragStarted(true);\n this.externalInitialize = false;\n }\n this.target = (evt.currentTarget || curTarget);\n this.dragProcessStarted = false;\n if (this.abort) {\n var abortSelectors = this.abort;\n if (typeof abortSelectors === 'string') {\n abortSelectors = [abortSelectors];\n }\n for (var i = 0; i < abortSelectors.length; i++) {\n if (!isNullOrUndefined(closest(evt.target, abortSelectors[parseInt(i.toString(), 10)]))) {\n /* istanbul ignore next */\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n return;\n }\n }\n }\n if (this.preventDefault && !isUndefined(evt.changedTouches) && evt.type !== 'touchstart') {\n evt.preventDefault();\n }\n this.element.setAttribute('aria-grabbed', 'true');\n var intCoord = this.getCoordinates(evt);\n this.initialPosition = { x: intCoord.pageX, y: intCoord.pageY };\n if (!this.clone) {\n var pos = this.element.getBoundingClientRect();\n this.getScrollableValues();\n if (evt.clientX === evt.pageX) {\n this.parentScrollX = 0;\n }\n if (evt.clientY === evt.pageY) {\n this.parentScrollY = 0;\n }\n this.relativeXPosition = intCoord.pageX - (pos.left + this.parentScrollX);\n this.relativeYPosition = intCoord.pageY - (pos.top + this.parentScrollY);\n }\n if (this.externalInitialize) {\n this.intDragStart(evt);\n }\n else {\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy, this);\n }\n this.toggleEvents(true);\n if (evt.type !== 'touchstart' && this.isPreventSelect) {\n document.body.classList.add('e-prevent-select');\n }\n this.externalInitialize = false;\n EventHandler.trigger(document.documentElement, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, evt);\n };\n Draggable.prototype.intDragStart = function (evt) {\n this.removeTapholdTimer();\n var isChangeTouch = !isUndefined(evt.changedTouches);\n if (isChangeTouch && (evt.changedTouches.length !== 1)) {\n return;\n }\n var intCordinate = this.getCoordinates(evt);\n var pos;\n var styleProp = getComputedStyle(this.element);\n this.margin = {\n left: parseInt(styleProp.marginLeft, 10),\n top: parseInt(styleProp.marginTop, 10),\n right: parseInt(styleProp.marginRight, 10),\n bottom: parseInt(styleProp.marginBottom, 10)\n };\n var element = this.element;\n if (this.clone && this.dragTarget) {\n var intClosest = closest(evt.target, this.dragTarget);\n if (!isNullOrUndefined(intClosest)) {\n element = intClosest;\n }\n }\n /* istanbul ignore next */\n if (this.isReplaceDragEle) {\n element = this.currentStateCheck(evt.target, element);\n }\n this.offset = this.calculateParentPosition(element);\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var x = this.initialPosition.x - intCordinate.pageX;\n var y = this.initialPosition.y - intCordinate.pageY;\n var distance = Math.sqrt((x * x) + (y * y));\n if ((distance >= this.distance || this.externalInitialize)) {\n var ele = this.getHelperElement(evt);\n if (!ele || isNullOrUndefined(ele)) {\n return;\n }\n if (isChangeTouch) {\n evt.preventDefault();\n }\n var dragTargetElement = this.helperElement = ele;\n this.parentClientRect = this.calculateParentPosition(dragTargetElement.offsetParent);\n if (this.dragStart) {\n var curTarget = this.getProperTargetElement(evt);\n var args = {\n event: evt,\n element: element,\n target: curTarget,\n bindEvents: isBlazor() ? this.bindDragEvents.bind(this) : null,\n dragElement: dragTargetElement\n };\n this.trigger('dragStart', args);\n }\n if (this.dragArea) {\n this.setDragArea();\n }\n else {\n this.dragLimit = { left: 0, right: 0, bottom: 0, top: 0 };\n this.borderWidth = { top: 0, left: 0 };\n }\n pos = { left: this.position.left - this.parentClientRect.left, top: this.position.top - this.parentClientRect.top };\n if (this.clone && !this.enableTailMode) {\n this.diffX = this.position.left - this.offset.left;\n this.diffY = this.position.top - this.offset.top;\n }\n this.getScrollableValues();\n // when drag element has margin-top\n var styles = getComputedStyle(element);\n var marginTop = parseFloat(styles.marginTop);\n /* istanbul ignore next */\n if (this.clone && marginTop !== 0) {\n pos.top += marginTop;\n }\n this.eleTop = !isNaN(parseFloat(styles.top)) ? parseFloat(styles.top) - this.offset.top : 0;\n /* istanbul ignore next */\n // if (this.eleTop > 0) {\n // pos.top += this.eleTop;\n // }\n if (this.enableScrollHandler && !this.clone) {\n pos.top -= this.parentScrollY;\n pos.left -= this.parentScrollX;\n }\n var posValue = this.getProcessedPositionValue({\n top: (pos.top - this.diffY) + 'px',\n left: (pos.left - this.diffX) + 'px'\n });\n if (this.dragArea && typeof this.dragArea !== 'string' && this.dragArea.classList.contains('e-kanban-content') && this.dragArea.style.position === 'relative') {\n pos.top += this.dragArea.scrollTop;\n }\n this.dragElePosition = { top: pos.top, left: pos.left };\n setStyleAttribute(dragTargetElement, this.getDragPosition({ position: 'absolute', left: posValue.left, top: posValue.top }));\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy);\n if (!isBlazor()) {\n this.bindDragEvents(dragTargetElement);\n }\n }\n };\n Draggable.prototype.bindDragEvents = function (dragTargetElement) {\n if (isVisible(dragTargetElement)) {\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDrag, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDragStop, this);\n this.setGlobalDroppables(false, this.element, dragTargetElement);\n }\n else {\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n }\n };\n Draggable.prototype.elementInViewport = function (el) {\n this.top = el.offsetTop;\n this.left = el.offsetLeft;\n this.width = el.offsetWidth;\n this.height = el.offsetHeight;\n while (el.offsetParent) {\n el = el.offsetParent;\n this.top += el.offsetTop;\n this.left += el.offsetLeft;\n }\n return (this.top >= window.pageYOffset &&\n this.left >= window.pageXOffset &&\n (this.top + this.height) <= (window.pageYOffset + window.innerHeight) &&\n (this.left + this.width) <= (window.pageXOffset + window.innerWidth));\n };\n Draggable.prototype.getProcessedPositionValue = function (value) {\n if (this.queryPositionInfo) {\n return this.queryPositionInfo(value);\n }\n return value;\n };\n Draggable.prototype.calculateParentPosition = function (ele) {\n if (isNullOrUndefined(ele)) {\n return { left: 0, top: 0 };\n }\n var rect = ele.getBoundingClientRect();\n var style = getComputedStyle(ele);\n return {\n left: (rect.left + window.pageXOffset) - parseInt(style.marginLeft, 10),\n top: (rect.top + window.pageYOffset) - parseInt(style.marginTop, 10)\n };\n };\n Draggable.prototype.intDrag = function (evt) {\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n if (this.clone && evt.changedTouches && Browser.isDevice && Browser.isTouch) {\n evt.preventDefault();\n }\n var left;\n var top;\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var docHeight = this.getDocumentWidthHeight('Height');\n if (docHeight < this.position.top) {\n this.position.top = docHeight;\n }\n var docWidth = this.getDocumentWidthHeight('Width');\n if (docWidth < this.position.left) {\n this.position.left = docWidth;\n }\n if (this.drag) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('drag', { event: evt, element: this.element, target: curTarget });\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n var flag = true;\n if (this.hoverObject) {\n if (this.hoverObject.instance !== eleObj.instance) {\n this.triggerOutFunction(evt, eleObj);\n }\n else {\n flag = false;\n }\n }\n if (flag) {\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intOver(evt, eleObj.target);\n this.hoverObject = eleObj;\n }\n }\n else if (this.hoverObject) {\n this.triggerOutFunction(evt, eleObj);\n }\n var helperElement = this.droppables[this.scope].helper;\n this.parentClientRect = this.calculateParentPosition(this.helperElement.offsetParent);\n var tLeft = this.parentClientRect.left;\n var tTop = this.parentClientRect.top;\n var intCoord = this.getCoordinates(evt);\n var pagex = intCoord.pageX;\n var pagey = intCoord.pageY;\n var dLeft = this.position.left - this.diffX;\n var dTop = this.position.top - this.diffY;\n var styles = getComputedStyle(helperElement);\n if (this.dragArea) {\n if (this.enableAutoScroll) {\n this.setDragArea();\n }\n if (this.pageX !== pagex || this.skipDistanceCheck) {\n var helperWidth = helperElement.offsetWidth + (parseFloat(styles.marginLeft)\n + parseFloat(styles.marginRight));\n if (this.dragLimit.left > dLeft && dLeft > 0) {\n left = this.dragLimit.left;\n }\n else if (this.dragLimit.right + window.pageXOffset < dLeft + helperWidth && dLeft > 0) {\n left = dLeft - (dLeft - this.dragLimit.right) + window.pageXOffset - helperWidth;\n }\n else {\n left = dLeft < 0 ? this.dragLimit.left : dLeft;\n }\n }\n if (this.pageY !== pagey || this.skipDistanceCheck) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)\n + parseFloat(styles.marginBottom));\n if (this.dragLimit.top > dTop && dTop > 0) {\n top = this.dragLimit.top;\n }\n else if (this.dragLimit.bottom + window.pageYOffset < dTop + helperHeight && dTop > 0) {\n top = dTop - (dTop - this.dragLimit.bottom) + window.pageYOffset - helperHeight;\n }\n else {\n top = dTop < 0 ? this.dragLimit.top : dTop;\n }\n }\n }\n else {\n left = dLeft;\n top = dTop;\n }\n var iTop = tTop + this.borderWidth.top;\n var iLeft = tLeft + this.borderWidth.left;\n if (this.dragProcessStarted) {\n if (isNullOrUndefined(top)) {\n top = this.prevTop;\n }\n if (isNullOrUndefined(left)) {\n left = this.prevLeft;\n }\n }\n var draEleTop;\n var draEleLeft;\n if (this.helperElement.classList.contains('e-treeview')) {\n if (this.dragArea) {\n this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - this.borderWidth.top);\n draEleLeft = (left - iLeft) < 0 ? this.dragLimit.left : (left - this.borderWidth.left);\n }\n else {\n draEleTop = top - this.borderWidth.top;\n draEleLeft = left - this.borderWidth.left;\n }\n }\n else {\n if (this.dragArea) {\n var isDialogEle = this.helperElement.classList.contains('e-dialog');\n this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - iTop);\n draEleLeft = (left - iLeft) < 0 ? isDialogEle ? (left - (iLeft - this.borderWidth.left)) :\n this.dragElePosition.left : (left - iLeft);\n }\n else {\n draEleTop = top - iTop;\n draEleLeft = left - iLeft;\n }\n }\n var marginTop = parseFloat(getComputedStyle(this.element).marginTop);\n // when drag-element has margin-top\n /* istanbul ignore next */\n if (marginTop > 0) {\n if (this.clone) {\n draEleTop += marginTop;\n if (dTop < 0) {\n if ((marginTop + dTop) >= 0) {\n draEleTop = marginTop + dTop;\n }\n else {\n draEleTop -= marginTop;\n }\n }\n if (this.dragArea) {\n draEleTop = (this.dragLimit.bottom < draEleTop) ? this.dragLimit.bottom : draEleTop;\n }\n }\n if ((top - iTop) < 0) {\n if (dTop + marginTop + (helperElement.offsetHeight - iTop) >= 0) {\n var tempDraEleTop = this.dragLimit.top + dTop - iTop;\n if ((tempDraEleTop + marginTop + iTop) < 0) {\n draEleTop -= marginTop + iTop;\n }\n else {\n draEleTop = tempDraEleTop;\n }\n }\n else {\n draEleTop -= marginTop + iTop;\n }\n }\n }\n if (this.dragArea && this.helperElement.classList.contains('e-treeview')) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)\n + parseFloat(styles.marginBottom));\n draEleTop = (draEleTop + helperHeight) > this.dragLimit.bottom ? (this.dragLimit.bottom - helperHeight) : draEleTop;\n }\n /* istanbul ignore next */\n // if(this.eleTop > 0) {\n // draEleTop += this.eleTop;\n // }\n if (this.enableScrollHandler && !this.clone) {\n draEleTop -= this.parentScrollY;\n draEleLeft -= this.parentScrollX;\n }\n if (this.dragArea && typeof this.dragArea !== 'string' && this.dragArea.classList.contains('e-kanban-content') && this.dragArea.style.position === 'relative') {\n draEleTop += this.dragArea.scrollTop;\n }\n var dragValue = this.getProcessedPositionValue({ top: draEleTop + 'px', left: draEleLeft + 'px' });\n setStyleAttribute(helperElement, this.getDragPosition(dragValue));\n if (!this.elementInViewport(helperElement) && this.enableAutoScroll && !this.helperElement.classList.contains('e-treeview')) {\n this.helperElement.scrollIntoView();\n }\n var elements = document.querySelectorAll(':hover');\n if (this.enableAutoScroll && this.helperElement.classList.contains('e-treeview')) {\n if (elements.length === 0) {\n elements = this.getPathElements(evt);\n }\n var scrollParent = this.getScrollParent(elements, false);\n if (this.elementInViewport(this.helperElement)) {\n this.getScrollPosition(scrollParent, draEleTop);\n }\n else if (!this.elementInViewport(this.helperElement)) {\n elements = [].slice.call(document.querySelectorAll(':hover'));\n if (elements.length === 0) {\n elements = this.getPathElements(evt);\n }\n scrollParent = this.getScrollParent(elements, true);\n this.getScrollPosition(scrollParent, draEleTop);\n }\n }\n this.dragProcessStarted = true;\n this.prevLeft = left;\n this.prevTop = top;\n this.position.left = left;\n this.position.top = top;\n this.pageX = pagex;\n this.pageY = pagey;\n };\n Draggable.prototype.getScrollParent = function (node, reverse) {\n var nodeEl = reverse ? node.reverse() : node;\n var hasScroll;\n for (var i = nodeEl.length - 1; i >= 0; i--) {\n hasScroll = window.getComputedStyle(nodeEl[parseInt(i.toString(), 10)])['overflow-y'];\n if ((hasScroll === 'auto' || hasScroll === 'scroll')\n && nodeEl[parseInt(i.toString(), 10)].scrollHeight > nodeEl[parseInt(i.toString(), 10)].clientHeight) {\n return nodeEl[parseInt(i.toString(), 10)];\n }\n }\n hasScroll = window.getComputedStyle(document.scrollingElement)['overflow-y'];\n if (hasScroll === 'visible') {\n document.scrollingElement.style.overflow = 'auto';\n return document.scrollingElement;\n }\n };\n Draggable.prototype.getScrollPosition = function (nodeEle, draEleTop) {\n if (nodeEle && nodeEle === document.scrollingElement) {\n if ((nodeEle.clientHeight + document.scrollingElement.scrollTop - this.helperElement.clientHeight) < draEleTop\n && nodeEle.getBoundingClientRect().height + this.parentClientRect.top > draEleTop) {\n nodeEle.scrollTop += this.helperElement.clientHeight;\n }\n else if (nodeEle.scrollTop > draEleTop - this.helperElement.clientHeight) {\n nodeEle.scrollTop -= this.helperElement.clientHeight;\n }\n }\n else if (nodeEle && nodeEle !== document.scrollingElement) {\n var docScrollTop = document.scrollingElement.scrollTop;\n var helperClientHeight = this.helperElement.clientHeight;\n if ((nodeEle.clientHeight + nodeEle.getBoundingClientRect().top - helperClientHeight + docScrollTop) < draEleTop) {\n nodeEle.scrollTop += this.helperElement.clientHeight;\n }\n else if (nodeEle.getBoundingClientRect().top > (draEleTop - helperClientHeight - docScrollTop)) {\n nodeEle.scrollTop -= this.helperElement.clientHeight;\n }\n }\n };\n Draggable.prototype.getPathElements = function (evt) {\n var elementTop = evt.clientX > 0 ? evt.clientX : 0;\n var elementLeft = evt.clientY > 0 ? evt.clientY : 0;\n return document.elementsFromPoint(elementTop, elementLeft);\n };\n Draggable.prototype.triggerOutFunction = function (evt, eleObj) {\n this.hoverObject.instance.intOut(evt, eleObj.target);\n this.hoverObject.instance.dragData[this.scope] = null;\n this.hoverObject = null;\n };\n Draggable.prototype.getDragPosition = function (dragValue) {\n var temp = extend({}, dragValue);\n if (this.axis) {\n if (this.axis === 'x') {\n delete temp.top;\n }\n else if (this.axis === 'y') {\n delete temp.left;\n }\n }\n return temp;\n };\n Draggable.prototype.getDocumentWidthHeight = function (str) {\n var docBody = document.body;\n var docEle = document.documentElement;\n var returnValue = Math.max(docBody['scroll' + str], docEle['scroll' + str], docBody['offset' + str], docEle['offset' + str], docEle['client' + str]);\n return returnValue;\n };\n Draggable.prototype.intDragStop = function (evt) {\n this.dragProcessStarted = false;\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n var type = ['touchend', 'pointerup', 'mouseup'];\n if (type.indexOf(evt.type) !== -1) {\n if (this.dragStop) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('dragStop', { event: evt, element: this.element, target: curTarget, helper: this.helperElement });\n }\n this.intDestroy(evt);\n }\n else {\n this.element.setAttribute('aria-grabbed', 'false');\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n eleObj.instance.dragStopCalled = true;\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intDrop(evt, eleObj.target);\n }\n this.setGlobalDroppables(true);\n document.body.classList.remove('e-prevent-select');\n };\n /**\n * @param {MouseEvent | TouchEvent} evt ?\n * @returns {void}\n * @private\n */\n Draggable.prototype.intDestroy = function (evt) {\n this.dragProcessStarted = false;\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n this.element.setAttribute('aria-grabbed', 'false');\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDragStop);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy);\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDrag);\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n };\n // triggers when property changed\n Draggable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Draggable.prototype.getModuleName = function () {\n return 'draggable';\n };\n Draggable.prototype.isDragStarted = function (change) {\n if (change) {\n isDraggedObject.isDragged = !isDraggedObject.isDragged;\n }\n return isDraggedObject.isDragged;\n };\n Draggable.prototype.setDragArea = function () {\n var eleWidthBound;\n var eleHeightBound;\n var top = 0;\n var left = 0;\n var ele;\n var type = typeof this.dragArea;\n if (type === 'string') {\n ele = select(this.dragArea);\n }\n else {\n ele = this.dragArea;\n }\n if (ele) {\n var elementArea = ele.getBoundingClientRect();\n eleWidthBound = ele.scrollWidth ? ele.scrollWidth : elementArea.right - elementArea.left;\n eleHeightBound = ele.scrollHeight ? (this.dragArea && !isNullOrUndefined(this.helperElement) && this.helperElement.classList.contains('e-treeview')) ? ele.clientHeight : ele.scrollHeight : elementArea.bottom - elementArea.top;\n var keys = ['Top', 'Left', 'Bottom', 'Right'];\n var styles = getComputedStyle(ele);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[parseInt(i.toString(), 10)];\n var tborder = styles['border' + key + 'Width'];\n var tpadding = styles['padding' + key];\n var lowerKey = key.toLowerCase();\n this.borderWidth[\"\" + lowerKey] = isNaN(parseFloat(tborder)) ? 0 : parseFloat(tborder);\n this.padding[\"\" + lowerKey] = isNaN(parseFloat(tpadding)) ? 0 : parseFloat(tpadding);\n }\n if (this.dragArea && !isNullOrUndefined(this.helperElement) && this.helperElement.classList.contains('e-treeview')) {\n top = elementArea.top + document.scrollingElement.scrollTop;\n }\n else {\n top = elementArea.top;\n }\n left = elementArea.left;\n this.dragLimit.left = left + this.borderWidth.left + this.padding.left;\n this.dragLimit.top = ele.offsetTop + this.borderWidth.top + this.padding.top;\n this.dragLimit.right = left + eleWidthBound - (this.borderWidth.right + this.padding.right);\n this.dragLimit.bottom = top + eleHeightBound - (this.borderWidth.bottom + this.padding.bottom);\n }\n };\n Draggable.prototype.getProperTargetElement = function (evt) {\n var intCoord = this.getCoordinates(evt);\n var ele;\n var prevStyle = this.helperElement.style.pointerEvents || '';\n var isPointer = evt.type.indexOf('pointer') !== -1 && Browser.info.name === 'safari' && parseInt(Browser.info.version, 10) > 12;\n if (compareElementParent(evt.target, this.helperElement) || evt.type.indexOf('touch') !== -1 || isPointer) {\n this.helperElement.style.pointerEvents = 'none';\n ele = document.elementFromPoint(intCoord.clientX, intCoord.clientY);\n this.helperElement.style.pointerEvents = prevStyle;\n }\n else {\n ele = evt.target;\n }\n return ele;\n };\n /* istanbul ignore next */\n Draggable.prototype.currentStateCheck = function (ele, oldEle) {\n var elem;\n if (!isNullOrUndefined(this.currentStateTarget) && this.currentStateTarget !== ele) {\n elem = this.currentStateTarget;\n }\n else {\n elem = !isNullOrUndefined(oldEle) ? oldEle : ele;\n }\n return elem;\n };\n Draggable.prototype.getMousePosition = function (evt, isdragscroll) {\n var dragEle = evt.srcElement !== undefined ? evt.srcElement : evt.target;\n var intCoord = this.getCoordinates(evt);\n var pageX;\n var pageY;\n var isOffsetParent = isNullOrUndefined(dragEle.offsetParent);\n /* istanbul ignore next */\n if (isdragscroll) {\n pageX = this.clone ? intCoord.pageX :\n (intCoord.pageX + (isOffsetParent ? 0 : dragEle.offsetParent.scrollLeft)) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY :\n (intCoord.pageY + (isOffsetParent ? 0 : dragEle.offsetParent.scrollTop)) - this.relativeYPosition;\n }\n else {\n pageX = this.clone ? intCoord.pageX : (intCoord.pageX + window.pageXOffset) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY : (intCoord.pageY + window.pageYOffset) - this.relativeYPosition;\n }\n if (document.scrollingElement && (!isdragscroll && !this.clone)) {\n var ele = document.scrollingElement;\n var isVerticalScroll = ele.scrollHeight > 0 && ele.scrollHeight > ele.clientHeight && ele.scrollTop > 0;\n var isHorrizontalScroll = ele.scrollWidth > 0 && ele.scrollWidth > ele.clientWidth && ele.scrollLeft > 0;\n pageX = isHorrizontalScroll ? pageX - ele.scrollLeft : pageX;\n pageY = isVerticalScroll ? pageY - ele.scrollTop : pageY;\n }\n return {\n left: pageX - (this.margin.left + this.cursorAt.left),\n top: pageY - (this.margin.top + this.cursorAt.top)\n };\n };\n Draggable.prototype.getCoordinates = function (evt) {\n if (evt.type.indexOf('touch') > -1) {\n return evt.changedTouches[0];\n }\n return evt;\n };\n Draggable.prototype.getHelperElement = function (evt) {\n var element;\n if (this.clone) {\n if (this.helper) {\n element = this.helper({ sender: evt, element: this.target });\n }\n else {\n element = createElement('div', { className: 'e-drag-helper e-block-touch', innerHTML: 'Draggable' });\n document.body.appendChild(element);\n }\n }\n else {\n element = this.element;\n }\n return element;\n };\n Draggable.prototype.setGlobalDroppables = function (reset, drag, helper) {\n this.droppables[this.scope] = reset ? null : {\n draggable: drag,\n helper: helper,\n draggedElement: this.element\n };\n };\n Draggable.prototype.checkTargetElement = function (evt) {\n var target = this.getProperTargetElement(evt);\n var dropIns = this.getDropInstance(target);\n if (!dropIns && target && !isNullOrUndefined(target.parentNode)) {\n var parent_1 = closest(target.parentNode, '.e-droppable') || target.parentElement;\n if (parent_1) {\n dropIns = this.getDropInstance(parent_1);\n }\n }\n return { target: target, instance: dropIns };\n };\n Draggable.prototype.getDropInstance = function (ele) {\n var name = 'getModuleName';\n var drop;\n var eleInst = ele && ele.ej2_instances;\n if (eleInst) {\n for (var _i = 0, eleInst_1 = eleInst; _i < eleInst_1.length; _i++) {\n var inst = eleInst_1[_i];\n if (inst[\"\" + name]() === 'droppable') {\n drop = inst;\n break;\n }\n }\n }\n return drop;\n };\n Draggable.prototype.destroy = function () {\n this.toggleEvents(true);\n _super.prototype.destroy.call(this);\n };\n var Draggable_1;\n __decorate([\n Complex({}, Position)\n ], Draggable.prototype, \"cursorAt\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"clone\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"dragArea\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"isDragScroll\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"isReplaceDragEle\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"isPreventSelect\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"dragStop\", void 0);\n __decorate([\n Property(1)\n ], Draggable.prototype, \"distance\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"handle\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"abort\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"helper\", void 0);\n __decorate([\n Property('default')\n ], Draggable.prototype, \"scope\", void 0);\n __decorate([\n Property('')\n ], Draggable.prototype, \"dragTarget\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"axis\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"queryPositionInfo\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableTailMode\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"skipDistanceCheck\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"preventDefault\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableAutoScroll\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableTapHold\", void 0);\n __decorate([\n Property(750)\n ], Draggable.prototype, \"tapHoldThreshold\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableScrollHandler\", void 0);\n Draggable = Draggable_1 = __decorate([\n NotifyPropertyChanges\n ], Draggable);\n return Draggable;\n}(Base));\nexport { Draggable };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible, matches } from './dom';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { compareElementParent } from './util';\n/**\n * Droppable Module provides support to enable droppable functionality in Dom Elements.\n * ```html\n *
Droppable
\n * \n * ```\n */\nvar Droppable = /** @class */ (function (_super) {\n __extends(Droppable, _super);\n function Droppable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.mouseOver = false;\n _this.dragData = {};\n _this.dragStopCalled = false;\n _this.bind();\n return _this;\n }\n Droppable.prototype.bind = function () {\n this.wireEvents();\n };\n Droppable.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDrop, this);\n };\n // triggers when property changed\n Droppable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Droppable.prototype.getModuleName = function () {\n return 'droppable';\n };\n Droppable.prototype.intOver = function (event, element) {\n if (!this.mouseOver) {\n var drag = this.dragData[this.scope];\n this.trigger('over', { event: event, target: element, dragData: drag });\n this.mouseOver = true;\n }\n };\n Droppable.prototype.intOut = function (event, element) {\n if (this.mouseOver) {\n this.trigger('out', { evt: event, target: element });\n this.mouseOver = false;\n }\n };\n Droppable.prototype.intDrop = function (evt, element) {\n if (!this.dragStopCalled) {\n return;\n }\n else {\n this.dragStopCalled = false;\n }\n var accept = true;\n var drag = this.dragData[this.scope];\n var isDrag = drag ? (drag.helper && isVisible(drag.helper)) : false;\n var area;\n if (isDrag) {\n area = this.isDropArea(evt, drag.helper, element);\n if (this.accept) {\n accept = matches(drag.helper, this.accept);\n }\n }\n if (isDrag && this.drop && area.canDrop && accept) {\n this.trigger('drop', { event: evt, target: area.target, droppedElement: drag.helper, dragData: drag });\n }\n this.mouseOver = false;\n };\n Droppable.prototype.isDropArea = function (evt, helper, element) {\n var area = { canDrop: true, target: element || evt.target };\n var isTouch = evt.type === 'touchend';\n if (isTouch || area.target === helper) {\n helper.style.display = 'none';\n var coord = isTouch ? (evt.changedTouches[0]) : evt;\n var ele = document.elementFromPoint(coord.clientX, coord.clientY);\n area.canDrop = false;\n area.canDrop = compareElementParent(ele, this.element);\n if (area.canDrop) {\n area.target = ele;\n }\n helper.style.display = '';\n }\n return area;\n };\n Droppable.prototype.destroy = function () {\n EventHandler.remove(this.element, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDrop);\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Property()\n ], Droppable.prototype, \"accept\", void 0);\n __decorate([\n Property('default')\n ], Droppable.prototype, \"scope\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"drop\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"over\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"out\", void 0);\n Droppable = __decorate([\n NotifyPropertyChanges\n ], Droppable);\n return Droppable;\n}(Base));\nexport { Droppable };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Base } from './base';\nvar keyCode = {\n 'backspace': 8,\n 'tab': 9,\n 'enter': 13,\n 'shift': 16,\n 'control': 17,\n 'alt': 18,\n 'pause': 19,\n 'capslock': 20,\n 'space': 32,\n 'escape': 27,\n 'pageup': 33,\n 'pagedown': 34,\n 'end': 35,\n 'home': 36,\n 'leftarrow': 37,\n 'uparrow': 38,\n 'rightarrow': 39,\n 'downarrow': 40,\n 'insert': 45,\n 'delete': 46,\n 'f1': 112,\n 'f2': 113,\n 'f3': 114,\n 'f4': 115,\n 'f5': 116,\n 'f6': 117,\n 'f7': 118,\n 'f8': 119,\n 'f9': 120,\n 'f10': 121,\n 'f11': 122,\n 'f12': 123,\n 'semicolon': 186,\n 'plus': 187,\n 'comma': 188,\n 'minus': 189,\n 'dot': 190,\n 'forwardslash': 191,\n 'graveaccent': 192,\n 'openbracket': 219,\n 'backslash': 220,\n 'closebracket': 221,\n 'singlequote': 222\n};\n/**\n * KeyboardEvents class enables you to bind key action desired key combinations for ex., Ctrl+A, Delete, Alt+Space etc.\n * ```html\n *
;\n * \n * ```\n */\nvar KeyboardEvents = /** @class */ (function (_super) {\n __extends(KeyboardEvents, _super);\n /**\n * Initializes the KeyboardEvents\n *\n * @param {HTMLElement} element ?\n * @param {KeyboardEventsModel} options ?\n */\n function KeyboardEvents(element, options) {\n var _this = _super.call(this, options, element) || this;\n /**\n * To handle a key press event returns null\n *\n * @param {KeyboardEventArgs} e ?\n * @returns {void} ?\n */\n _this.keyPressHandler = function (e) {\n var isAltKey = e.altKey;\n var isCtrlKey = e.ctrlKey;\n var isShiftKey = e.shiftKey;\n var curkeyCode = e.which;\n var keys = Object.keys(_this.keyConfigs);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n var configCollection = _this.keyConfigs[\"\" + key].split(',');\n for (var _a = 0, configCollection_1 = configCollection; _a < configCollection_1.length; _a++) {\n var rconfig = configCollection_1[_a];\n var rKeyObj = KeyboardEvents_1.getKeyConfigData(rconfig.trim());\n if (isAltKey === rKeyObj.altKey && isCtrlKey === rKeyObj.ctrlKey &&\n isShiftKey === rKeyObj.shiftKey && curkeyCode === rKeyObj.keyCode) {\n e.action = key;\n if (_this.keyAction) {\n _this.keyAction(e);\n }\n }\n }\n }\n };\n _this.bind();\n return _this;\n }\n KeyboardEvents_1 = KeyboardEvents;\n /**\n * Unwire bound events and destroy the instance.\n *\n * @returns {void} ?\n */\n KeyboardEvents.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n /**\n * Function can be used to specify certain action if a property is changed\n *\n * @param {KeyboardEventsModel} newProp ?\n * @param {KeyboardEventsModel} oldProp ?\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.onPropertyChanged = function (newProp, oldProp) {\n // No code are needed\n };\n KeyboardEvents.prototype.bind = function () {\n this.wireEvents();\n };\n /**\n * To get the module name, returns 'keyboard'.\n *\n * @returns {string} ?\n * @private\n */\n KeyboardEvents.prototype.getModuleName = function () {\n return 'keyboard';\n };\n /**\n * Wiring event handlers to events\n *\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.wireEvents = function () {\n this.element.addEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * Unwiring event handlers to events\n *\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.unwireEvents = function () {\n this.element.removeEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * To get the key configuration data\n *\n * @param {string} config - configuration data\n * @returns {KeyData} ?\n */\n KeyboardEvents.getKeyConfigData = function (config) {\n if (config in this.configCache) {\n return this.configCache[\"\" + config];\n }\n var keys = config.toLowerCase().split('+');\n var keyData = {\n altKey: (keys.indexOf('alt') !== -1 ? true : false),\n ctrlKey: (keys.indexOf('ctrl') !== -1 ? true : false),\n shiftKey: (keys.indexOf('shift') !== -1 ? true : false),\n keyCode: null\n };\n if (keys[keys.length - 1].length > 1 && !!Number(keys[keys.length - 1])) {\n keyData.keyCode = Number(keys[keys.length - 1]);\n }\n else {\n keyData.keyCode = KeyboardEvents_1.getKeyCode(keys[keys.length - 1]);\n }\n KeyboardEvents_1.configCache[\"\" + config] = keyData;\n return keyData;\n };\n // Return the keycode value as string\n KeyboardEvents.getKeyCode = function (keyVal) {\n return keyCode[\"\" + keyVal] || keyVal.toUpperCase().charCodeAt(0);\n };\n var KeyboardEvents_1;\n KeyboardEvents.configCache = {};\n __decorate([\n Property({})\n ], KeyboardEvents.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property('keyup')\n ], KeyboardEvents.prototype, \"eventName\", void 0);\n __decorate([\n Event()\n ], KeyboardEvents.prototype, \"keyAction\", void 0);\n KeyboardEvents = KeyboardEvents_1 = __decorate([\n NotifyPropertyChanges\n ], KeyboardEvents);\n return KeyboardEvents;\n}(Base));\nexport { KeyboardEvents };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { extend } from './util';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Browser } from './browser';\nimport { Base } from './base';\nimport { ChildProperty } from './child-property';\nimport { EventHandler } from './event-handler';\n/**\n * SwipeSettings is a framework module that provides support to handle swipe event like swipe up, swipe right, etc..,\n */\nvar SwipeSettings = /** @class */ (function (_super) {\n __extends(SwipeSettings, _super);\n function SwipeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(50)\n ], SwipeSettings.prototype, \"swipeThresholdDistance\", void 0);\n return SwipeSettings;\n}(ChildProperty));\nexport { SwipeSettings };\nvar swipeRegex = /(Up|Down)/;\n/**\n * Touch class provides support to handle the touch event like tap, double tap, tap hold, etc..,\n * ```typescript\n * let node: HTMLElement;\n * let touchObj: Touch = new Touch({\n * element: node,\n * tap: function (e) {\n * // tap handler function code\n * }\n * tapHold: function (e) {\n * // tap hold handler function code\n * }\n * scroll: function (e) {\n * // scroll handler function code\n * }\n * swipe: function (e) {\n * // swipe handler function code\n * }\n * });\n * ```\n */\nvar Touch = /** @class */ (function (_super) {\n __extends(Touch, _super);\n /* End-Properties */\n function Touch(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.touchAction = true;\n _this.tapCount = 0;\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.startEvent = function (evt) {\n if (_this.touchAction === true) {\n var point = _this.updateChangeTouches(evt);\n if (evt.changedTouches !== undefined) {\n _this.touchAction = false;\n }\n _this.isTouchMoved = false;\n _this.movedDirection = '';\n _this.startPoint = _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n _this.startEventData = point;\n _this.hScrollLocked = _this.vScrollLocked = false;\n _this.tStampStart = Date.now();\n _this.timeOutTapHold = setTimeout(function () { _this.tapHoldEvent(evt); }, _this.tapHoldThreshold);\n EventHandler.add(_this.element, Browser.touchMoveEvent, _this.moveEvent, _this);\n EventHandler.add(_this.element, Browser.touchEndEvent, _this.endEvent, _this);\n EventHandler.add(_this.element, Browser.touchCancelEvent, _this.cancelEvent, _this);\n }\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.moveEvent = function (evt) {\n var point = _this.updateChangeTouches(evt);\n _this.movedPoint = point;\n _this.isTouchMoved = !(point.clientX === _this.startPoint.clientX && point.clientY === _this.startPoint.clientY);\n var eScrollArgs = {};\n if (_this.isTouchMoved) {\n clearTimeout(_this.timeOutTapHold);\n _this.calcScrollPoints(evt);\n var scrollArg = {\n startEvents: _this.startEventData,\n originalEvent: evt, startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY, distanceX: _this.distanceX,\n distanceY: _this.distanceY, scrollDirection: _this.scrollDirection,\n velocity: _this.getVelocity(point)\n };\n eScrollArgs = extend(eScrollArgs, {}, scrollArg);\n _this.trigger('scroll', eScrollArgs);\n _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n }\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.cancelEvent = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n _this.tapCount = 0;\n _this.swipeFn(evt);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.endEvent = function (evt) {\n _this.swipeFn(evt);\n if (!_this.isTouchMoved) {\n if (typeof _this.tap === 'function') {\n _this.trigger('tap', { originalEvent: evt, tapCount: ++_this.tapCount });\n _this.timeOutTap = setTimeout(function () {\n _this.tapCount = 0;\n }, _this.tapThreshold);\n }\n }\n _this.modeclear();\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.swipeFn = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n var point = _this.updateChangeTouches(evt);\n var diffX = point.clientX - _this.startPoint.clientX;\n var diffY = point.clientY - _this.startPoint.clientY;\n diffX = Math.floor(diffX < 0 ? -1 * diffX : diffX);\n diffY = Math.floor(diffY < 0 ? -1 * diffY : diffX);\n _this.isTouchMoved = diffX > 1 || diffY > 1;\n var isFirefox = (/Firefox/).test(Browser.userAgent);\n if (isFirefox && point.clientX === 0 && point.clientY === 0 && evt.type === 'mouseup') {\n _this.isTouchMoved = false;\n }\n _this.endPoint = point;\n _this.calcPoints(evt);\n var swipeArgs = {\n originalEvent: evt,\n startEvents: _this.startEventData,\n startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY,\n distanceX: _this.distanceX, distanceY: _this.distanceY, swipeDirection: _this.movedDirection,\n velocity: _this.getVelocity(point)\n };\n if (_this.isTouchMoved) {\n var tDistance = _this.swipeSettings.swipeThresholdDistance;\n var eSwipeArgs = extend(undefined, _this.defaultArgs, swipeArgs);\n var canTrigger = false;\n var ele = _this.element;\n var scrollBool = _this.isScrollable(ele);\n var moved = swipeRegex.test(_this.movedDirection);\n if ((tDistance < _this.distanceX && !moved) || (tDistance < _this.distanceY && moved)) {\n if (!scrollBool) {\n canTrigger = true;\n }\n else {\n canTrigger = _this.checkSwipe(ele, moved);\n }\n }\n if (canTrigger) {\n _this.trigger('swipe', eSwipeArgs);\n }\n }\n _this.modeclear();\n };\n _this.modeclear = function () {\n _this.modeClear = setTimeout(function () {\n _this.touchAction = true;\n }, (typeof _this.tap !== 'function' ? 0 : 20));\n _this.lastTapTime = new Date().getTime();\n EventHandler.remove(_this.element, Browser.touchMoveEvent, _this.moveEvent);\n EventHandler.remove(_this.element, Browser.touchEndEvent, _this.endEvent);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n _this.bind();\n return _this;\n }\n // triggers when property changed\n /**\n *\n * @private\n * @param {TouchModel} newProp ?\n * @param {TouchModel} oldProp ?\n * @returns {void} ?\n */\n Touch.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Touch.prototype.bind = function () {\n this.wireEvents();\n if (Browser.isIE) {\n this.element.classList.add('e-block-touch');\n }\n };\n /**\n * To destroy the touch instance.\n *\n * @returns {void}\n */\n Touch.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n // Need to changes the event binding once we updated the event handler.\n Touch.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.touchStartEvent, this.startEvent, this);\n };\n Touch.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.startEvent);\n };\n /**\n * Returns module name as touch\n *\n * @returns {string} ?\n * @private\n */\n Touch.prototype.getModuleName = function () {\n return 'touch';\n };\n /**\n * Returns if the HTML element is Scrollable.\n *\n * @param {HTMLElement} element - HTML Element to check if Scrollable.\n * @returns {boolean} ?\n */\n Touch.prototype.isScrollable = function (element) {\n var eleStyle = getComputedStyle(element);\n var style = eleStyle.overflow + eleStyle.overflowX + eleStyle.overflowY;\n if ((/(auto|scroll)/).test(style)) {\n return true;\n }\n return false;\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n Touch.prototype.tapHoldEvent = function (evt) {\n this.tapCount = 0;\n this.touchAction = true;\n EventHandler.remove(this.element, Browser.touchMoveEvent, this.moveEvent);\n EventHandler.remove(this.element, Browser.touchEndEvent, this.endEvent);\n var eTapArgs = { originalEvent: evt };\n this.trigger('tapHold', eTapArgs);\n EventHandler.remove(this.element, Browser.touchCancelEvent, this.cancelEvent);\n };\n Touch.prototype.calcPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.startPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.startPoint.clientY)));\n if (this.distanceX > this.distanceY) {\n this.movedDirection = (point.clientX > this.startPoint.clientX) ? 'Right' : 'Left';\n }\n else {\n this.movedDirection = (point.clientY < this.startPoint.clientY) ? 'Up' : 'Down';\n }\n };\n Touch.prototype.calcScrollPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.lastMovedPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.lastMovedPoint.clientY)));\n if ((this.distanceX > this.distanceY || this.hScrollLocked === true) && this.vScrollLocked === false) {\n this.scrollDirection = (point.clientX > this.lastMovedPoint.clientX) ? 'Right' : 'Left';\n this.hScrollLocked = true;\n }\n else {\n this.scrollDirection = (point.clientY < this.lastMovedPoint.clientY) ? 'Up' : 'Down';\n this.vScrollLocked = true;\n }\n };\n Touch.prototype.getVelocity = function (pnt) {\n var newX = pnt.clientX;\n var newY = pnt.clientY;\n var newT = Date.now();\n var xDist = newX - this.startPoint.clientX;\n var yDist = newY - this.startPoint.clientX;\n var interval = newT - this.tStampStart;\n return Math.sqrt(xDist * xDist + yDist * yDist) / interval;\n };\n Touch.prototype.checkSwipe = function (ele, flag) {\n var keys = ['scroll', 'offset'];\n var temp = flag ? ['Height', 'Top'] : ['Width', 'Left'];\n if ((ele[keys[0] + temp[0]] <= ele[keys[1] + temp[0]])) {\n return true;\n }\n return (ele[keys[0] + temp[1]] === 0) ||\n (ele[keys[1] + temp[0]] + ele[keys[0] + temp[1]] >= ele[keys[0] + temp[0]]);\n };\n Touch.prototype.updateChangeTouches = function (evt) {\n var point = evt.changedTouches && evt.changedTouches.length !== 0 ? evt.changedTouches[0] : evt;\n return point;\n };\n __decorate([\n Event()\n ], Touch.prototype, \"tap\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"tapHold\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"swipe\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"scroll\", void 0);\n __decorate([\n Property(350)\n ], Touch.prototype, \"tapThreshold\", void 0);\n __decorate([\n Property(750)\n ], Touch.prototype, \"tapHoldThreshold\", void 0);\n __decorate([\n Complex({}, SwipeSettings)\n ], Touch.prototype, \"swipeSettings\", void 0);\n Touch = __decorate([\n NotifyPropertyChanges\n ], Touch);\n return Touch;\n}(Base));\nexport { Touch };\n","import { extend, isNullOrUndefined } from './util';\nimport { defaultCulture } from './internationalization';\n/**\n * L10n modules provides localized text for different culture.\n * ```typescript\n * import {setCulture} from '@syncfusion/ts-base-library';\n * //load global locale object common for all components.\n * L10n.load({\n * 'fr-BE': {\n * 'button': {\n * 'check': 'vérifié'\n * }\n * }\n * });\n * //set globale default locale culture.\n * setCulture('fr-BE');\n * let instance: L10n = new L10n('button', {\n * check: 'checked'\n * });\n * //Get locale text for current property.\n * instance.getConstant('check');\n * //Change locale culture in a component.\n * instance.setLocale('en-US');\n * ```\n */\nvar L10n = /** @class */ (function () {\n /**\n * Constructor\n *\n * @param {string} controlName ?\n * @param {Object} localeStrings ?\n * @param {string} locale ?\n */\n function L10n(controlName, localeStrings, locale) {\n this.controlName = controlName;\n this.localeStrings = localeStrings;\n this.setLocale(locale || defaultCulture);\n }\n /**\n * Sets the locale text\n *\n * @param {string} locale ?\n * @returns {void} ?\n */\n L10n.prototype.setLocale = function (locale) {\n var intLocale = this.intGetControlConstant(L10n.locale, locale);\n this.currentLocale = intLocale || this.localeStrings;\n };\n /**\n * Sets the global locale for all components.\n *\n * @param {Object} localeObject - specifies the localeObject to be set as global locale.\n * @returns {void} ?\n */\n L10n.load = function (localeObject) {\n this.locale = extend(this.locale, localeObject, {}, true);\n };\n /**\n * Returns current locale text for the property based on the culture name and control name.\n *\n * @param {string} prop - specifies the property for which localize text to be returned.\n * @returns {string} ?\n */\n L10n.prototype.getConstant = function (prop) {\n // Removed conditional operator because this method does not return correct value when passing 0 as value in localization\n if (!isNullOrUndefined(this.currentLocale[\"\" + prop])) {\n return this.currentLocale[\"\" + prop];\n }\n else {\n return this.localeStrings[\"\" + prop] || '';\n }\n };\n /**\n * Returns the control constant object for current object and the locale specified.\n *\n * @param {Object} curObject ?\n * @param {string} locale ?\n * @returns {Object} ?\n */\n L10n.prototype.intGetControlConstant = function (curObject, locale) {\n if ((curObject)[\"\" + locale]) {\n return (curObject)[\"\" + locale][this.controlName];\n }\n return null;\n };\n L10n.locale = {};\n return L10n;\n}());\nexport { L10n };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Template Engine\n */\nvar LINES = new RegExp('\\\\n|\\\\r|\\\\s\\\\s+', 'g');\nvar QUOTES = new RegExp(/'|\"/g);\nvar IF_STMT = new RegExp('if ?\\\\(');\nvar ELSEIF_STMT = new RegExp('else if ?\\\\(');\nvar ELSE_STMT = new RegExp('else');\nvar FOR_STMT = new RegExp('for ?\\\\(');\nvar IF_OR_FOR = new RegExp('(/if|/for)');\nvar CALL_FUNCTION = new RegExp('\\\\((.*)\\\\)', '');\nvar NOT_NUMBER = new RegExp('^[0-9]+$', 'g');\nvar WORD = new RegExp('[\\\\w\"\\'.\\\\s+]+', 'g');\nvar DBL_QUOTED_STR = new RegExp('\"(.*?)\"', 'g');\nvar WORDIF = new RegExp('[\\\\w\"\\'@#$.\\\\s-+]+', 'g');\nvar exp = new RegExp('\\\\${([^}]*)}', 'g');\n// let cachedTemplate: Object = {};\nvar ARR_OBJ = /^\\..*/gm;\nvar SINGLE_SLASH = /\\\\/gi;\nvar DOUBLE_SLASH = /\\\\\\\\/gi;\nvar WORDFUNC = new RegExp('[\\\\w\"\\'@#$.\\\\s+]+', 'g');\nvar WINDOWFUNC = /\\window\\./gm;\n/**\n * The function to set regular expression for template expression string.\n *\n * @param {RegExp} value - Value expression.\n * @returns {RegExp} ?\n * @private\n */\nexport function expression(value) {\n if (value) {\n exp = value;\n }\n return exp;\n}\n// /**\n// * To render the template string from the given data.\n// * @param {string} template - String Template.\n// * @param {Object[]|JSON} data - DataSource for the template.\n// * @param {Object} helper? - custom helper object.\n// */\n// export function template(template: string, data: JSON, helper?: Object): string {\n// let hash: string = hashCode(template);\n// let tmpl: Function;\n// if (!cachedTemplate[hash]) {\n// tmpl = cachedTemplate[hash] = compile(template, helper);\n// } else {\n// tmpl = cachedTemplate[hash];\n// }\n// return tmpl(data);\n// }\n/**\n * Compile the template string into template function.\n *\n * @param {string | Function} template - The template string which is going to convert.\n * @param {Object} helper - Helper functions as an object.\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n * @private\n */\nexport function compile(template, helper, ignorePrefix) {\n if (typeof template === 'function') {\n return template;\n }\n else {\n var argName = 'data';\n var evalExpResult = evalExp(template, argName, helper, ignorePrefix);\n var condtion = \"var valueRegEx = (/value=\\\\'([A-Za-z0-9 _]*)((.)([\\\\w)(!-;?-\\u25A0\\\\s]+)['])/g);\\n var hrefRegex = (/(?:href)([\\\\s='\\\"./]+)([\\\\w-./?=&\\\\\\\\#\\\"]+)((.)([\\\\w)(!-;/?-\\u25A0\\\\s]+)['])/g);\\n if(str.match(valueRegEx)){\\n var check = str.match(valueRegEx);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(valueRegEx)[i].split('value=')[1];\\n var change = check1.match(/^'/) !== null ? check1.replace(/^'/, '\\\"') : check1;\\n change =change.match(/.$/)[0] === '\\\\'' ? change.replace(/.$/,'\\\"') : change;\\n str1 = str1.replace(check1, change);\\n }\\n str = str.replace(str, str1);\\n }\\n else if (str.match(/(?:href='')/) === null) {\\n if(str.match(hrefRegex)) {\\n var check = str.match(hrefRegex);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(hrefRegex)[i].split('href=')[1];\\n if (check1) {\\n var change = check1.match(/^'/) !== null ? check1.replace(/^'/, '\\\"') : check1;\\n change =change.match(/.$/)[0] === '\\\\'' ? change.replace(/.$/,'\\\"') : change;\\n str1 = str1.replace(check1, change);\\n }\\n }\\n str = str.replace(str, str1);\\n }\\n }\\n \";\n var fnCode = 'var str=\"' + evalExpResult + '\";' + condtion + ' return str;';\n var fn = new Function(argName, fnCode);\n return fn.bind(helper);\n }\n}\n/** function used to evaluate the function expression\n *\n * @param {string} str ?\n * @param {string} nameSpace ?\n * @param {Object} helper ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction evalExp(str, nameSpace, helper, ignorePrefix) {\n var varCOunt = 0;\n /**\n * Variable containing Local Keys\n */\n var localKeys = [];\n var isClass = str.match(/class=\"([^\"]+|)\\s{2}/g);\n var singleSpace = '';\n if (isClass) {\n isClass.forEach(function (value) {\n singleSpace = value.replace(/\\s\\s+/g, ' ');\n str = str.replace(value, singleSpace);\n });\n }\n if (exp.test(str)) {\n var insideBraces = false;\n var outputString = '';\n for (var i = 0; i < str.length; i++) {\n if (str[i + ''] === '$' && str[i + 1] === '{') {\n insideBraces = true;\n }\n else if (str[i + ''] === '}') {\n insideBraces = false;\n }\n outputString += (str[i + ''] === '\"' && !insideBraces) ? '\\\\\"' : str[i + ''];\n }\n str = outputString;\n }\n else {\n str = str.replace(/\\\\?\"/g, '\\\\\"');\n }\n return str.replace(LINES, '').replace(DBL_QUOTED_STR, '\\'$1\\'').replace(exp, function (match, cnt, offset, matchStr) {\n var SPECIAL_CHAR = /@|#|\\$/gm;\n var matches = cnt.match(CALL_FUNCTION);\n // matches to detect any function calls\n if (matches) {\n var rlStr = matches[1];\n if (ELSEIF_STMT.test(cnt)) {\n //handling else-if condition\n cnt = '\";} ' + cnt.replace(matches[1], rlStr.replace(WORD, function (str) {\n str = str.trim();\n return addNameSpace(str, !(QUOTES.test(str)) && (localKeys.indexOf(str) === -1), nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n }\n else if (IF_STMT.test(cnt)) {\n //handling if condition\n cnt = '\"; ' + cnt.replace(matches[1], rlStr.replace(WORDIF, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n }\n else if (FOR_STMT.test(cnt)) {\n //handling for condition\n var rlStr_1 = matches[1].split(' of ');\n // replace for each into actual JavaScript\n cnt = '\"; ' + cnt.replace(matches[1], function (mtc) {\n localKeys.push(rlStr_1[0]);\n localKeys.push(rlStr_1[0] + 'Index');\n varCOunt = varCOunt + 1;\n return 'var i' + varCOunt + '=0; i' + varCOunt + ' < ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix) + '.length; i' + varCOunt + '++';\n }) + '{ \\n ' + rlStr_1[0] + '= ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix)\n + '[i' + varCOunt + ']; \\n var ' + rlStr_1[0] + 'Index=i' + varCOunt + '; \\n str = str + \"';\n }\n else {\n //helper function handling\n var fnStr = cnt.split('(');\n var fNameSpace = (helper && Object.prototype.hasOwnProperty.call(helper, fnStr[0]) ? 'this.' : 'global');\n fNameSpace = (/\\./.test(fnStr[0]) ? '' : fNameSpace);\n var ftArray = matches[1].split(',');\n if (matches[1].length !== 0 && !(/data/).test(ftArray[0]) && !(/window./).test(ftArray[0])) {\n matches[1] = (fNameSpace === 'global' ? nameSpace + '.' + matches[1] : matches[1]);\n }\n var splRegexp = /@|\\$|#/gm;\n var arrObj = /\\]\\./gm;\n if (WINDOWFUNC.test(cnt) && arrObj.test(cnt) || splRegexp.test(cnt)) {\n var splArrRegexp = /@|\\$|#|\\]\\./gm;\n if (splArrRegexp.test(cnt)) {\n cnt = '\"+ ' + (fNameSpace === 'global' ? '' : fNameSpace) + cnt.replace(matches[1], rlStr.replace(WORDFUNC, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '+ \"';\n }\n }\n else {\n cnt = '\" + ' + (fNameSpace === 'global' ? '' : fNameSpace) +\n cnt.replace(rlStr, addNameSpace(matches[1].replace(/,( |)data.|,/gi, ',' + nameSpace + '.').replace(/,( |)data.window/gi, ',window'), (fNameSpace === 'global' ? false : true), nameSpace, localKeys, ignorePrefix)) +\n '+\"';\n }\n }\n }\n else if (ELSE_STMT.test(cnt)) {\n // handling else condition\n cnt = '\"; ' + cnt.replace(ELSE_STMT, '} else { \\n str = str + \"');\n }\n else if (cnt.match(IF_OR_FOR)) {\n // close condition\n cnt = cnt.replace(IF_OR_FOR, '\"; \\n } \\n str = str + \"');\n }\n else if (SPECIAL_CHAR.test(cnt)) {\n // template string with double slash with special character\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n }\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // template string with double slash\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // evaluate normal expression\n cnt = cnt !== '' ? '\"+' + addNameSpace(cnt.replace(/,/gi, '+' + nameSpace + '.'), (localKeys.indexOf(cnt) === -1), nameSpace, localKeys, ignorePrefix) + '+\"' : '${}';\n }\n }\n return cnt;\n });\n}\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction addNameSpace(str, addNS, nameSpace, ignoreList, ignorePrefix) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1 && !ignorePrefix && str !== 'true' && str !== 'false') ? nameSpace + '.' + str : str);\n}\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @returns {string} ?\n */\nfunction NameSpaceArrObj(str, addNS, nameSpace, ignoreList) {\n var arrObjReg = /^\\..*/gm;\n return ((addNS && !(NOT_NUMBER.test(str)) &&\n ignoreList.indexOf(str.split('.')[0]) === -1 && !(arrObjReg.test(str))) ? nameSpace + '.' + str : str);\n}\n// // Create hashCode for template string to storeCached function\n// function hashCode(str: string): string {\n// return str.split('').reduce((a: number, b: string) => { a = ((a << 5) - a) + b.charCodeAt(0); return a & a; }, 0).toString();\n// }\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @returns {string} ?\n */\nfunction NameSpaceForspecialChar(str, addNS, nameSpace, ignoreList) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1) ? nameSpace + '[\"' + str : str);\n}\n/**\n * Replace double slashes to single slash.\n *\n * @param {string} tempStr ?\n * @returns {any} ?\n */\nfunction SlashReplace(tempStr) {\n var double = '\\\\\\\\';\n if (tempStr.match(DOUBLE_SLASH)) {\n return tempStr;\n }\n else {\n return tempStr.replace(SINGLE_SLASH, double);\n }\n}\n/**\n *\n * @param {string} str ?\n * @param {string} nameSpaceNew ?\n * @param {string[]} keys ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction HandleSpecialCharArrObj(str, nameSpaceNew, keys, ignorePrefix) {\n str = str.trim();\n var windowFunc = /\\window\\./gm;\n if (!windowFunc.test(str)) {\n var quotes = /'|\"/gm;\n var splRegexp = /@|\\$|#/gm;\n if (splRegexp.test(str)) {\n str = NameSpaceForspecialChar(str, (keys.indexOf(str) === -1), nameSpaceNew, keys) + '\"]';\n }\n if (ARR_OBJ.test(str)) {\n return NameSpaceArrObj(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys);\n }\n else {\n return addNameSpace(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys, ignorePrefix);\n }\n }\n else {\n return str;\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types */\n/**\n * Template Engine Bridge\n */\nimport { compile as render } from './template';\nimport { createElement } from './dom';\nimport { isNullOrUndefined, isBlazor } from './util';\nvar HAS_ROW = /^[\\n\\r.]+ 0) {\n elements.forEach(function (element) {\n detach(element);\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeJsEvents = function () {\n var elements = this.wrapElement.querySelectorAll('[' + jsEvents.join('],[') + ']');\n if (elements.length > 0) {\n elements.forEach(function (element) {\n jsEvents.forEach(function (attr) {\n if (element.hasAttribute(attr)) {\n element.removeAttribute(attr);\n }\n });\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeXssAttrs = function () {\n var _this = this;\n this.removeAttrs.forEach(function (item, index) {\n var elements = _this.wrapElement.querySelectorAll(item.selector);\n if (elements.length > 0) {\n if (item.selector === 'a[href]') {\n elements.forEach(function (element) {\n if ((element.getAttribute(item.attribute)).replace(/\\t|\\s|&/, '').indexOf('javascript:alert') !== -1) {\n element.removeAttribute(item.attribute);\n }\n });\n }\n else {\n elements.forEach(function (element) {\n element.removeAttribute(item.attribute);\n });\n }\n }\n });\n };\n return SanitizeHtmlHelper;\n}());\nexport { SanitizeHtmlHelper };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types */\n/**\n * React Component Base\n */\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { extend, isNullOrUndefined, setValue, getValue, isObject, onIntlChange } from '@syncfusion/ej2-base';\nvar defaulthtmlkeys = ['alt', 'className', 'disabled', 'form', 'id',\n 'readOnly', 'style', 'tabIndex', 'title', 'type', 'name',\n 'onClick', 'onFocus', 'onBlur'];\nvar delayUpdate = ['accordion', 'tab', 'splitter'];\nvar isColEName = /\\]/;\nvar ComponentBase = /** @class */ (function (_super) {\n __extends(ComponentBase, _super);\n function ComponentBase() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.mountingState = false;\n _this.attrKeys = [];\n _this.cachedTimeOut = 0;\n _this.isAppendCalled = false;\n _this.initRenderCalled = false;\n _this.isReactForeceUpdate = false;\n _this.isReact = true;\n _this.isshouldComponentUpdateCalled = false;\n _this.isCreated = false;\n return _this;\n }\n // Lifecycle methods are changed by React team and so we can deprecate this method and use\n // Reference link:https://reactjs.org/docs/react-component.html#unsafe_componentWillMount\n ComponentBase.prototype.componentDidMount = function () {\n this.refreshChild(true);\n this.canDelayUpdate = delayUpdate.indexOf(this.getModuleName()) !== -1;\n // Used timeout to resolve template binding\n // Reference link: https://github.com/facebook/react/issues/10309#issuecomment-318433235\n this.renderReactComponent();\n if (this.portals && this.portals.length) {\n this.mountingState = true;\n this.renderReactTemplates();\n this.mountingState = false;\n }\n };\n ComponentBase.prototype.componentDidUpdate = function (prev) {\n if (!this.isshouldComponentUpdateCalled && this.initRenderCalled && !this.isReactForeceUpdate) {\n if (prev !== this.props) {\n this.isshouldComponentUpdateCalled = true;\n this.updateProperties(this.props, false, prev);\n }\n }\n };\n ComponentBase.prototype.renderReactComponent = function () {\n var ele = this.reactElement;\n if (ele && !this.isAppendCalled) {\n this.isAppendCalled = true;\n this.appendTo(ele);\n }\n };\n // Lifecycle methods are changed by React team and so we can deprecate this method and use\n // Reference link:https://reactjs.org/docs/react-component.html#unsafe_componentwillreceiveprops\n /**\n * @param {Object} nextProps - Specifies the property value.\n * @returns {boolean} - Returns boolean value.\n * @private\n */\n ComponentBase.prototype.shouldComponentUpdate = function (nextProps) {\n this.isshouldComponentUpdateCalled = true;\n if (!this.initRenderCalled) {\n this.updateProperties(nextProps, true);\n return true;\n }\n if (!this.isAppendCalled) {\n clearTimeout(this.cachedTimeOut);\n this.isAppendCalled = true;\n this.appendTo(this.reactElement);\n }\n this.updateProperties(nextProps);\n return true;\n };\n ComponentBase.prototype.updateProperties = function (nextProps, silent, prev) {\n var _this = this;\n var dProps = extend({}, nextProps);\n var keys = Object.keys(nextProps);\n var prevProps = extend({}, prev || this.props);\n // The statelessTemplates props value is taken from sample level property or default component property.\n var statelessTemplates = !isNullOrUndefined(prevProps['statelessTemplates']) ? prevProps['statelessTemplates'] :\n (!isNullOrUndefined(this['statelessTemplateProps']) ? this['statelessTemplateProps'] : []);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var propkey = keys_1[_i];\n var isClassName = propkey === 'className';\n if (propkey === 'children') {\n continue;\n }\n if (!isClassName && !isNullOrUndefined(this.htmlattributes[\"\" + propkey]) &&\n this.htmlattributes[\"\" + propkey] !== dProps[\"\" + propkey]) {\n this.htmlattributes[\"\" + propkey] = dProps[\"\" + propkey];\n }\n if (this.compareValues(prevProps[\"\" + propkey], nextProps[\"\" + propkey])) {\n delete dProps[\"\" + propkey];\n }\n else if (this.attrKeys.indexOf(propkey) !== -1) {\n if (isClassName) {\n this.clsName = true;\n var propsClsName = prevProps[\"\" + propkey].split(' ');\n for (var i = 0; i < propsClsName.length; i++) {\n this.element.classList.remove(propsClsName[parseInt(i.toString(), 10)]);\n }\n var dpropsClsName = dProps[\"\" + propkey].split(' ');\n for (var j = 0; j < dpropsClsName.length; j++) {\n this.element.classList.add(dpropsClsName[parseInt(j.toString(), 10)]);\n }\n }\n else if (propkey !== 'disabled' && !Object.prototype.hasOwnProperty.call(this.properties, propkey)) {\n delete dProps[\"\" + propkey];\n }\n }\n else if (propkey === 'value' && nextProps[\"\" + propkey] === this[\"\" + propkey]) {\n delete dProps[\"\" + propkey];\n }\n else if (statelessTemplates.indexOf(propkey) > -1 && ((propkey === 'content' && typeof dProps[\"\" + propkey] === 'function') || (nextProps[\"\" + propkey].toString() === this[\"\" + propkey].toString()))) {\n delete dProps[\"\" + propkey];\n }\n }\n if (dProps['children']) {\n delete dProps['children'];\n }\n if (this.initRenderCalled && (this.canDelayUpdate || prevProps.delayUpdate)) {\n setTimeout(function () {\n _this.refreshProperties(dProps, nextProps, silent);\n });\n }\n else {\n this.refreshProperties(dProps, nextProps, silent);\n }\n };\n ComponentBase.prototype.refreshProperties = function (dProps, nextProps, silent) {\n var statelessTemplates = !isNullOrUndefined(this.props['statelessTemplates']) ? this.props['statelessTemplates'] : [];\n if (Object.keys(dProps).length) {\n if (!silent) {\n this.processComplexTemplate(dProps, this);\n }\n this.setProperties(dProps, silent);\n }\n if (statelessTemplates.indexOf('directiveTemplates') === -1) {\n this.refreshChild(silent, nextProps);\n }\n };\n ComponentBase.prototype.processComplexTemplate = function (curObject, context) {\n var compTemplate = context.complexTemplate;\n if (compTemplate) {\n for (var prop in compTemplate) {\n if (Object.prototype.hasOwnProperty.call(compTemplate, prop)) {\n var PropVal = compTemplate[\"\" + prop];\n if (curObject[\"\" + prop]) {\n setValue(PropVal, getValue(prop, curObject), curObject);\n }\n }\n }\n }\n };\n ComponentBase.prototype.getDefaultAttributes = function () {\n var _this = this;\n this.isReact = true;\n var propKeys = Object.keys(this.props);\n //let stringValue: string[] = ['autocomplete', 'dropdownlist', 'combobox'];\n var ignoreProps = ['children', 'statelessTemplates', 'immediateRender', 'isLegacyTemplate', 'delayUpdate'];\n // if ((stringValue.indexOf(this.getModuleName()) !== -1) && (!isNullOrUndefined(this.props[\"value\"]))) {\n // this.value = (<{ [key: string]: Object }>this.props)[\"value\"];\n // }\n if (!this.htmlattributes) {\n this.htmlattributes = {};\n }\n this.attrKeys = defaulthtmlkeys.concat(this.controlAttributes || []);\n for (var _i = 0, propKeys_1 = propKeys; _i < propKeys_1.length; _i++) {\n var prop = propKeys_1[_i];\n if (prop.indexOf('data-') !== -1 || prop.indexOf('aria-') !== -1 || this.attrKeys.indexOf(prop) !== -1 || (Object.keys(this.properties).indexOf(\"\" + prop) === -1 && ignoreProps.indexOf(\"\" + prop) === -1)) {\n if (this.htmlattributes[\"\" + prop] !== this.props[\"\" + prop]) {\n this.htmlattributes[\"\" + prop] = this.props[\"\" + prop];\n }\n }\n }\n if (!this.htmlattributes.ref) {\n this.htmlattributes.ref = function (ele) {\n _this.reactElement = ele;\n };\n var keycompoentns = ['autocomplete', 'combobox', 'dropdownlist', 'dropdowntree', 'multiselect',\n 'listbox', 'colorpicker', 'numerictextbox', 'textbox', 'smarttextarea',\n 'uploader', 'maskedtextbox', 'slider', 'datepicker', 'datetimepicker', 'daterangepicker', 'timepicker', 'checkbox', 'switch', 'radio', 'rating', 'textarea', 'multicolumncombobox'];\n if (keycompoentns.indexOf(this.getModuleName()) !== -1) {\n this.htmlattributes.key = '' + ComponentBase.reactUid;\n ComponentBase.reactUid++;\n if (this.type && !this.htmlattributes['type']) {\n this.htmlattributes['type'] = this.multiline ? 'hidden' : this.type;\n }\n if (this.name && !this.htmlattributes['name']) {\n this.htmlattributes['name'] = this.name;\n }\n }\n }\n if (this.clsName) {\n var clsList = this.element.classList;\n var className = this.htmlattributes['className'];\n for (var i = 0; i < clsList.length; i++) {\n if ((className.indexOf(clsList[parseInt(i.toString(), 10)]) === -1)) {\n this.htmlattributes['className'] = this.htmlattributes['className'] + ' ' + clsList[parseInt(i.toString(), 10)];\n }\n }\n }\n return this.htmlattributes;\n };\n ComponentBase.prototype.trigger = function (eventName, eventProp, successHandler) {\n var _this = this;\n if (this.isDestroyed !== true && this.modelObserver) {\n if (isColEName.test(eventName)) {\n var handler = getValue(eventName, this);\n if (handler) {\n handler.call(this, eventProp);\n if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n if ((eventName === 'change' || eventName === 'input')) {\n if (this.props.onChange && eventProp.event) {\n this.props.onChange.call(undefined, {\n syntheticEvent: eventProp.event,\n nativeEvent: { text: eventProp.value },\n value: eventProp.value,\n target: this\n });\n }\n }\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = false;\n if (eventName === 'created') {\n setTimeout(function () {\n _this.isCreated = true;\n if (!_this.isDestroyed) {\n _this.modelObserver.notify(eventName, eventProp, successHandler);\n }\n }, 10);\n }\n else {\n this.modelObserver.notify(eventName, eventProp, successHandler);\n }\n this.isProtectedOnChange = prevDetection;\n }\n };\n ComponentBase.prototype.compareValues = function (value1, value2) {\n var typeVal = typeof value1;\n var typeVal2 = typeof value2;\n if (typeVal === typeVal2) {\n if (value1 === value2) {\n return true;\n }\n if ((!isNullOrUndefined(value1) && value1.constructor) !== (!isNullOrUndefined(value2) && value2.constructor)) {\n return false;\n }\n if (value1 instanceof Date ||\n value1 instanceof RegExp ||\n value1 instanceof String ||\n value1 instanceof Number) {\n return value1.toString() === value2.toString();\n }\n if (isObject(value1) || Array.isArray(value1)) {\n var tempVal = value1;\n var tempVal2 = value2;\n if (isObject(tempVal)) {\n tempVal = [value1];\n tempVal2 = [value2];\n }\n return this.compareObjects(tempVal, tempVal2).status;\n }\n if (value1.moduleName &&\n value1.moduleName === value2.moduleName &&\n (value1.moduleName === 'query' ||\n value1.moduleName === 'datamanager')) {\n if (JSON.stringify(value1) === JSON.stringify(value2)) {\n return true;\n }\n }\n }\n return false;\n };\n ComponentBase.prototype.compareObjects = function (oldProps, newProps, propName) {\n var status = true;\n var lenSimilarity = (oldProps.length === newProps.length);\n var diffArray = [];\n var templateProps = !isNullOrUndefined(this['templateProps']) ? this['templateProps'] : [];\n if (lenSimilarity) {\n for (var i = 0, len = newProps.length; i < len; i++) {\n var curObj = {};\n var oldProp = oldProps[parseInt(i.toString(), 10)];\n var newProp = newProps[parseInt(i.toString(), 10)];\n var keys = Object.keys(newProp);\n if (keys.length !== 0) {\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n var oldValue = oldProp[\"\" + key];\n var newValue = newProp[\"\" + key];\n if (key === 'items') {\n for (var _j = 0; _j < newValue.length; _j++) {\n if (this.getModuleName() === 'richtexteditor' && typeof (newValue[parseInt(_j.toString(), 10)]) === 'object') {\n return { status: true };\n }\n }\n }\n if (this.getModuleName() === 'grid' && key === 'field') {\n curObj[\"\" + key] = newValue;\n }\n if (!Object.prototype.hasOwnProperty.call(oldProp, key) || !((templateProps.length > 0 && templateProps.indexOf(\"\" + key) === -1 && typeof (newValue) === 'function') ? this.compareValues(oldValue.toString(), newValue.toString()) : this.compareValues(oldValue, newValue))) {\n if (!propName) {\n return { status: false };\n }\n status = false;\n curObj[\"\" + key] = newValue;\n }\n }\n }\n else if (newProps[parseInt(i.toString(), 10)] === oldProps[parseInt(i.toString(), 10)]) {\n status = true;\n }\n else {\n if (!propName) {\n return { status: false };\n }\n status = false;\n }\n if (this.getModuleName() === 'grid' && propName === 'columns' && isNullOrUndefined(curObj['field'])) {\n curObj['field'] = undefined;\n }\n if (Object.keys(curObj).length) {\n diffArray.push({ index: i, value: curObj, key: propName });\n }\n }\n }\n else {\n status = false;\n }\n return { status: status, changedProperties: diffArray };\n };\n ComponentBase.prototype.refreshChild = function (silent, props) {\n if (this.checkInjectedModules) {\n var prevModule = this.getInjectedModules() || [];\n var curModule = this.getInjectedServices() || [];\n for (var _i = 0, curModule_1 = curModule; _i < curModule_1.length; _i++) {\n var mod = curModule_1[_i];\n if (prevModule.indexOf(mod) === -1) {\n prevModule.push(mod);\n }\n }\n this.injectedModules = prevModule;\n }\n if (this.directivekeys) {\n var changedProps = [];\n var key = '';\n var directiveValue = this.validateChildren({}, this.directivekeys, (props || this.props));\n if (directiveValue && Object.keys(directiveValue).length) {\n if (!silent && this.skipRefresh) {\n for (var _a = 0, _b = this.skipRefresh; _a < _b.length; _a++) {\n var fields = _b[_a];\n delete directiveValue[\"\" + fields];\n }\n }\n if (this.prevProperties) {\n var dKeys = Object.keys(this.prevProperties);\n for (var i = 0; i < dKeys.length; i++) {\n key = dKeys[parseInt(i.toString(), 10)];\n if (!Object.prototype.hasOwnProperty.call(directiveValue, key)) {\n continue;\n }\n var compareOutput = this.compareObjects(this.prevProperties[\"\" + key], directiveValue[\"\" + key], key);\n if (compareOutput.status) {\n delete directiveValue[\"\" + key];\n }\n else {\n if (compareOutput.changedProperties.length) {\n changedProps = changedProps.concat(compareOutput.changedProperties);\n }\n var obj = {};\n obj[\"\" + key] = directiveValue[\"\" + key];\n this.prevProperties = extend(this.prevProperties, obj);\n }\n }\n }\n else {\n this.prevProperties = extend({}, directiveValue, {}, true);\n }\n if (changedProps.length) {\n if (this.getModuleName() === 'grid' && key === 'columns') {\n for (var _c1 = 0, allColumns = this.columns; _c1 < allColumns.length; _c1++) {\n var compareField1 = getValue('field', allColumns[parseInt(_c1.toString(), 10)]);\n var compareField2 = getValue(_c1 + '.value.field', changedProps);\n if (compareField1 === compareField2) {\n var propInstance = getValue(changedProps[parseInt(_c1.toString(), 10)].key + '.' + changedProps[parseInt(_c1.toString(), 10)].index, this);\n if (propInstance && propInstance.setProperties) {\n propInstance.setProperties(changedProps[parseInt(_c1.toString(), 10)].value);\n }\n else {\n extend(propInstance, changedProps[parseInt(_c1.toString(), 10)].value);\n }\n }\n else {\n this.setProperties(directiveValue, silent);\n }\n }\n }\n else {\n for (var _c = 0, changedProps_1 = changedProps; _c < changedProps_1.length; _c++) {\n var changes = changedProps_1[_c];\n var propInstance = getValue(changes.key + '.' + changes.index, this);\n if (propInstance && propInstance.setProperties) {\n propInstance.setProperties(changes.value);\n }\n else {\n extend(propInstance, changes.value);\n }\n }\n }\n }\n else {\n this.setProperties(directiveValue, silent);\n }\n }\n }\n };\n ComponentBase.prototype.componentWillUnmount = function () {\n clearTimeout(this.cachedTimeOut);\n var modulesName = ['dropdowntree', 'checkbox'];\n var hasModule = ((!modulesName.indexOf(this.getModuleName())) ? document.body.contains(this.element) : true);\n if (this.initRenderCalled && this.isAppendCalled && this.element && hasModule && !this.isDestroyed && this.isCreated) {\n this.destroy();\n }\n onIntlChange.offIntlEvents();\n };\n ComponentBase.prototype.appendReactElement = function (element, container) {\n var portal = ReactDOM.createPortal(element, container);\n if (!this.portals) {\n this.portals = [portal];\n }\n else {\n this.portals.push(portal);\n }\n };\n ComponentBase.prototype.renderReactTemplates = function (callback) {\n this.isReactForeceUpdate = true;\n if (callback) {\n this.forceUpdate(callback);\n }\n else {\n this.forceUpdate();\n }\n this.isReactForeceUpdate = false;\n };\n ComponentBase.prototype.clearTemplate = function (templateNames, index, callback) {\n var _this = this;\n var tempPortal = [];\n if (templateNames && templateNames.length) {\n Array.prototype.forEach.call(templateNames, function (propName) {\n var propIndexCount = 0;\n _this.portals.forEach(function (portal) {\n if (portal.propName === propName) {\n tempPortal.push(propIndexCount);\n propIndexCount++;\n }\n });\n if (!isNullOrUndefined(index) && _this.portals[index] && _this.portals[index].propName === propName) {\n _this.portals.splice(index, 1);\n }\n else {\n for (var i = 0; i < _this.portals.length; i++) {\n if (_this.portals[parseInt(i.toString(), 10)].propName === propName) {\n _this.portals.splice(i, 1);\n i--;\n }\n }\n }\n });\n }\n else {\n this.portals = [];\n }\n this.renderReactTemplates(callback);\n };\n ComponentBase.prototype.validateChildren = function (childCache, mapper, props) {\n var flag = false;\n var childs = React.Children.toArray(props.children);\n for (var _i = 0, childs_1 = childs; _i < childs_1.length; _i++) {\n var child = childs_1[_i];\n var ifield = this.getChildType(child);\n var key = mapper[\"\" + ifield];\n if (ifield && mapper) {\n var childProps = this.getChildProps(React.Children.toArray(child.props.children), key);\n if (childProps.length) {\n flag = true;\n childCache[child.type.propertyName || ifield] = childProps;\n }\n }\n }\n if (flag) {\n return childCache;\n }\n return null;\n };\n ComponentBase.prototype.getChildType = function (child) {\n if (child.type && child.type.isDirective) {\n return child.type.moduleName || '';\n }\n return '';\n };\n ComponentBase.prototype.getChildProps = function (subChild, matcher) {\n var ret = [];\n for (var _i = 0, subChild_1 = subChild; _i < subChild_1.length; _i++) {\n var child = subChild_1[_i];\n var accessProp = false;\n var key = void 0;\n if (typeof matcher === 'string') {\n accessProp = true;\n key = matcher;\n }\n else {\n key = Object.keys(matcher)[0];\n }\n var prop = child.props;\n var field = this.getChildType(child);\n if (field === key) {\n if (accessProp || !prop.children) {\n var cacheVal = extend({}, prop, {}, true);\n this.processComplexTemplate(cacheVal, child.type);\n ret.push(cacheVal);\n }\n else {\n var cachedValue = this.validateChildren(extend({}, prop), matcher[\"\" + key], prop) || prop;\n if (cachedValue['children']) {\n delete cachedValue['children'];\n }\n this.processComplexTemplate(cachedValue, child.type);\n ret.push(cachedValue);\n }\n }\n }\n return ret;\n };\n ComponentBase.prototype.getInjectedServices = function () {\n var childs = React.Children.toArray(this.props.children);\n for (var _i = 0, childs_2 = childs; _i < childs_2.length; _i++) {\n var child = childs_2[_i];\n if (child.type && child.type.isService) {\n return child.props.services;\n }\n }\n return [];\n };\n /**\n * @private\n */\n ComponentBase.reactUid = 1;\n return ComponentBase;\n}(React.Component));\nexport { ComponentBase };\n","/**\n * Apply mixins for the React components.\n *\n * @param {any} derivedClass ?\n * @param {any[]} baseClass ?\n * @returns {void} ?\n * @private\n */\nexport function applyMixins(derivedClass, baseClass) {\n baseClass.forEach(function (baseClass) {\n Object.getOwnPropertyNames(baseClass.prototype).forEach(function (name) {\n if (name !== 'isMounted' && name !== 'replaceState' && name !== 'render') {\n derivedClass.prototype[\"\" + name] = baseClass.prototype[\"\" + name];\n }\n });\n });\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\n/**\n * Directory base\n */\nvar ComplexBase = /** @class */ (function (_super) {\n __extends(ComplexBase, _super);\n function ComplexBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ComplexBase.prototype.render = function () {\n return null;\n };\n ComplexBase.isDirective = true;\n return ComplexBase;\n}(React.PureComponent));\nexport { ComplexBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Dependency injection\n */\nimport * as React from 'react';\nvar Inject = /** @class */ (function (_super) {\n __extends(Inject, _super);\n function Inject() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Inject.prototype.render = function () {\n return null;\n };\n Inject.isService = true;\n return Inject;\n}(React.PureComponent));\nexport { Inject };\n","/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types */\n/**\n * Template compiler for react\n */\nimport { setTemplateEngine, getTemplateEngine, extend } from '@syncfusion/ej2-base';\nimport * as ReactDOM from 'react-dom';\nimport * as React from 'react';\n/**\n * Compile the string value to DOM elements.\n */\nvar stringCompiler = getTemplateEngine();\n/**\n * Compile the template property to the DOM elements.\n *\n * @param {any} templateElement ?\n * @param {Object} helper ?\n * @returns {Function} ?\n * @private\n */\nexport function compile(templateElement, helper) {\n if (typeof templateElement === 'string' || (templateElement.prototype && templateElement.prototype.CSPTemplate && typeof templateElement === 'function')) {\n return stringCompiler(templateElement, helper);\n }\n else {\n return function (data, component, prop, element) {\n var actTemplate = templateElement;\n var actData = data;\n if (typeof actTemplate === 'object') {\n actTemplate = templateElement.template;\n actData = extend({}, data, templateElement.data || {});\n }\n var cEle;\n if (element) {\n cEle = element;\n }\n else {\n cEle = document.createElement('div');\n }\n var rele = React.createElement(actTemplate, actData);\n var portal = ReactDOM.createPortal(rele, cEle);\n portal.propName = prop;\n if (!component.portals) {\n component.portals = [portal];\n }\n else {\n component.portals.push(portal);\n }\n if (!element) {\n return [cEle];\n }\n };\n }\n}\nsetTemplateEngine({ compile: compile });\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { AccumulationChart } from '@syncfusion/ej2-charts';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents react AccumulationChart Component\n * ```tsx\n * \n * ```\n */\nvar AccumulationChartComponent = /** @class */ (function (_super) {\n __extends(AccumulationChartComponent, _super);\n function AccumulationChartComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = true;\n _this.directivekeys = { 'accumulationSeriesCollection': 'accumulationSeries', 'accumulationAnnotations': 'accumulationAnnotation' };\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n AccumulationChartComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement('div', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return AccumulationChartComponent;\n}(AccumulationChart));\nexport { AccumulationChartComponent };\napplyMixins(AccumulationChartComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * AccumulationChart legend\n */\nimport { Browser, isNullOrUndefined, Animation } from '@syncfusion/ej2-base';\nimport { pointByIndex } from '../model/acc-base';\nimport { BaseLegend, LegendOptions } from '../../common/legend/legend';\nimport { Rect, measureText } from '@syncfusion/ej2-svg-base';\nimport { textTrim, getElement, blazorTemplatesReset } from '../../common/utils/helper';\nimport { textWrap } from '../../common/utils/helper';\nimport { legendClick } from '../../common/model/constants';\n/**\n * The `AccumulationLegend` module is used to render the `Legend` for the Accumulation chart.\n */\nvar AccumulationLegend = /** @class */ (function (_super) {\n __extends(AccumulationLegend, _super);\n /**\n * Constructor for Accumulation Legend.\n *\n * @param {AccumulationChart} chart Get a chart as a parameter.\n */\n function AccumulationLegend(chart) {\n var _this = _super.call(this, chart) || this;\n _this.library = _this;\n _this.titleRect = new Rect(0, chart.margin.top, 0, 0);\n _this.addEventListener();\n return _this;\n }\n /**\n * Binding events for legend module.\n *\n * @returns {void}\n */\n AccumulationLegend.prototype.addEventListener = function () {\n if (this.chart.isDestroyed) {\n return;\n }\n this.chart.on(Browser.touchMoveEvent, this.mouseMove, this);\n this.chart.on(Browser.touchEndEvent, this.mouseEnd, this);\n this.chart.on('click', this.click, this);\n };\n /**\n * UnBinding events for legend module.\n *\n * @returns {void}\n */\n AccumulationLegend.prototype.removeEventListener = function () {\n if (this.chart.isDestroyed) {\n return;\n }\n this.chart.off(Browser.touchMoveEvent, this.mouseMove);\n this.chart.off('click', this.click);\n this.chart.off(Browser.touchEndEvent, this.mouseEnd);\n };\n /**\n * To handle mosue move for legend module.\n *\n * @param {MouseEvent} e - The mouse move event for legend module.\n * @returns {void}\n */\n AccumulationLegend.prototype.mouseMove = function (e) {\n if (this.chart.legendSettings.visible && !this.chart.isTouch) {\n if (this.chart.accumulationHighlightModule && this.chart.highlightMode !== 'None') {\n if (!this.chart.legendSettings.toggleVisibility) {\n this.click(e);\n }\n var legendItemsId = [this.legendID + '_text_', this.legendID + '_shape_marker_',\n this.legendID + '_shape_', this.legendID + '_g_'];\n var targetId = e.target.id;\n var index = void 0;\n for (var _i = 0, legendItemsId_1 = legendItemsId; _i < legendItemsId_1.length; _i++) {\n var id = legendItemsId_1[_i];\n if (targetId.indexOf(id) > -1) {\n index = parseInt(targetId.split(id)[1], 10);\n this.chart.accumulationHighlightModule.legendSelection(this.chart, 0, index, e.target, e.type);\n break;\n }\n }\n }\n }\n };\n /**\n * To handle mosue end for legend module.\n *\n * @param {MouseEvent} e - The mouse end event for legend module.\n * @returns {void}\n */\n AccumulationLegend.prototype.mouseEnd = function (e) {\n if (this.chart.legendSettings.visible && this.chart.isTouch) {\n this.move(e);\n }\n };\n /**\n * Get the legend options.\n *\n * @param {AccumulationChart} chart - The accumulation chart control.\n * @param {AccumulationSeries[]} series - The array of series in the accumulation chart.\n * @returns {void}\n * @private\n */\n AccumulationLegend.prototype.getLegendOptions = function (chart, series) {\n this.legendCollections = [];\n this.isRtlEnable = chart.enableRtl;\n this.isReverse = !this.isRtlEnable && chart.legendSettings.reverse;\n for (var i = 0; i < 1; i++) {\n var seriesType = series[i].type;\n if (seriesType === 'Pie' || seriesType === 'Doughnut') {\n seriesType = (series[i].innerRadius !== '0' && series[i].innerRadius !== '0%') ?\n 'Doughnut' : 'Pie';\n }\n for (var _i = 0, _a = series[i].points; _i < _a.length; _i++) {\n var point = _a[_i];\n if (!isNullOrUndefined(point.x) && !isNullOrUndefined(point.y)) {\n this.legendCollections.push(new LegendOptions((chart.useGroupingSeparator && typeof point.x === 'number') ? chart.intl.formatNumber(point.x, { useGrouping: true })\n : point.x.toString(), point.color, series[i].legendShape, point.visible, seriesType, point.legendImageUrl, null, null, point.index, series[i].index));\n }\n }\n if (this.isReverse) {\n this.legendCollections.reverse();\n }\n }\n };\n /**\n * To find legend bounds for accumulation chart.\n *\n * @param {Size} availableSize - The available size for the legend.\n * @param {Rect} legendBounds - The boundary of the legend.\n * @param {LegendSettingsModel} legend - The legend settings.\n * @returns {void}\n * @private\n */\n AccumulationLegend.prototype.getLegendBounds = function (availableSize, legendBounds, legend) {\n this.calculateLegendTitle(legend, legendBounds);\n this.isTitle = legend.title ? true : false;\n var extraWidth = 0;\n var extraHeight = 0;\n var legendOption;\n this.chartRowCount = 1;\n this.rowHeights = [];\n this.columnHeights = [];\n this.pageHeights = [];\n var padding = legend.padding;\n var titlePosition = legend.titlePosition;\n var titlePlusArrowSpace = 0;\n var arrowWidth = this.arrowWidth;\n var arrowHeight = legend.enablePages ? 0 : this.arrowHeight;\n if (!this.isVertical) {\n extraHeight = !legend.height ? ((availableSize.height / 100) * 5) : 0;\n }\n else {\n extraWidth = !legend.width ? ((availableSize.width / 100) * 5) : 0;\n }\n legendBounds.width += extraWidth;\n legendBounds.height += extraHeight;\n var shapePadding = legend.shapePadding;\n var maximumWidth = legend.maximumLabelWidth ? legend.maximumLabelWidth : 0;\n var shapeWidth = legend.shapeWidth;\n var rowWidth = 0;\n var columnCount = 0;\n var rowCount = 0;\n var columnWidth = [];\n var pageWidth = [];\n var pageRowWidth = 0;\n var previousRowCount = 0;\n var columnHeight = 0;\n var legendWidth = 0;\n var titleHeight = 0;\n this.maxItemHeight = Math.max(measureText('MeasureText', legend.textStyle, this.chart.themeStyle.legendLabelFont).height, legend.shapeHeight);\n var legendEventArgs;\n var render = false;\n for (var i = 0; i < this.legendCollections.length; i++) {\n legendOption = this.legendCollections[i];\n legendEventArgs = { fill: legendOption.fill, text: legendOption.text, shape: legendOption.shape,\n name: 'legendRender', cancel: false };\n this.chart.trigger('legendRender', legendEventArgs);\n legendOption.render = !legendEventArgs.cancel;\n legendOption.text = ((legendEventArgs.text.indexOf('&') > -1) ?\n this.convertHtmlEntities(legendEventArgs.text) : legendEventArgs.text);\n legendOption.fill = legendEventArgs.fill;\n legendOption.shape = legendEventArgs.shape;\n legendOption.textSize = measureText(legendOption.text, legend.textStyle, this.chart.themeStyle.legendLabelFont);\n if (legendOption.render && legendOption.text !== '') {\n render = true;\n legendWidth = shapeWidth + shapePadding + (legend.maximumLabelWidth ? legend.maximumLabelWidth :\n legendOption.textSize.width) + (!this.isVertical ? (i === 0) ? padding : this.itemPadding : padding);\n this.getLegendHeight(legendOption, legend, legendBounds, rowWidth, this.maxItemHeight, padding);\n if (this.isVertical) {\n columnHeight += legendOption.textSize.height + ((i === 0) ? padding : this.itemPadding);\n if (columnHeight + this.itemPadding + (arrowHeight / this.pageButtonSize) > (legendBounds.height)) {\n //columnHeight = Math.max(columnHeight, (rowCount * (this.maxItemHeight + padding)) + padding + arrowHeight);\n rowWidth = rowWidth + maximumWidth;\n pageRowWidth = this.getPageWidth(pageWidth);\n this.totalPages = Math.max(rowCount, this.totalPages || 1);\n if ((rowWidth - pageRowWidth + legendWidth) > legendBounds.width) {\n pageWidth.push(rowWidth - pageRowWidth);\n rowCount = this.rowHeights.length;\n previousRowCount = rowCount;\n }\n else {\n rowCount = previousRowCount;\n }\n columnWidth.push(maximumWidth);\n maximumWidth = 0;\n columnHeight = legendOption.textSize.height + padding;\n columnCount++;\n }\n this.columnHeights[columnCount] = (this.columnHeights[columnCount] ?\n this.columnHeights[columnCount] : 0) + legendOption.textSize.height + ((i === 0) ?\n padding : this.itemPadding);\n maximumWidth = Math.max(legendWidth, maximumWidth);\n this.rowHeights[rowCount] = Math.max((this.rowHeights[rowCount] ?\n this.rowHeights[rowCount] : 0), legendOption.textSize.height);\n rowCount++;\n }\n else {\n if (!legend.enablePages) { // For new legend navigation support\n titlePlusArrowSpace = this.isTitle && titlePosition !== 'Top' ? this.legendTitleSize.width + this.fivePixel : 0;\n titlePlusArrowSpace += arrowWidth;\n }\n rowWidth = rowWidth + legendWidth;\n if (legendBounds.width < (padding + rowWidth + titlePlusArrowSpace)) {\n maximumWidth = Math.max(maximumWidth, (rowWidth + padding + titlePlusArrowSpace - legendWidth));\n if (rowCount === 0 && (legendWidth !== rowWidth)) {\n rowCount = 1;\n }\n rowWidth = legendWidth;\n rowCount++;\n columnCount = 0;\n // columnHeight = (rowCount * (this.maxItemHeight + padding)) + padding + this.legendTitleSize.height;\n }\n var len = rowCount ? (rowCount - 1) : rowCount;\n this.rowHeights[len] = Math.max((this.rowHeights[len] ? this.rowHeights[len] : 0), legendOption.textSize.height);\n this.columnHeights[columnCount] = (this.columnHeights[columnCount] ?\n this.columnHeights[columnCount] : 0) +\n legendOption.textSize.height + padding;\n columnCount++;\n }\n }\n }\n titleHeight = titlePosition === 'Top' ? this.legendTitleSize.height : 0;\n if (this.isVertical) {\n rowWidth = rowWidth + maximumWidth;\n this.isPaging = legendBounds.width < (rowWidth + padding);\n columnHeight = Math.max.apply(null, this.columnHeights) + padding + arrowHeight + titleHeight;\n columnHeight = Math.max(columnHeight, ((this.totalPages || 1) * (this.maxItemHeight + padding)) + padding + arrowHeight);\n this.isPaging = this.isPaging && (this.totalPages > 1);\n columnWidth.push(maximumWidth);\n }\n else {\n this.totalPages = this.totalRowCount = rowCount;\n columnHeight = Math.max.apply(null, this.columnHeights) + padding + arrowHeight + titleHeight;\n this.isPaging = legendBounds.height < columnHeight;\n columnHeight = !legend.enablePages && this.isPaging ? (this.maxItemHeight + padding) + padding + titleHeight : columnHeight;\n columnHeight = Math.max(columnHeight, (this.maxItemHeight + padding) + padding + titleHeight);\n if (!this.isPaging) { // For title left and right position\n rowWidth += this.isTitle && titlePosition !== 'Top' ? (this.fivePixel + this.legendTitleSize.width + this.fivePixel) : 0;\n }\n }\n this.maxColumns = 0; // initialization for max columns\n var width = this.isVertical ? this.getMaxColumn(columnWidth, legendBounds.width, padding, rowWidth + padding) :\n Math.max(rowWidth + padding, maximumWidth);\n if (render) { // if any legends not skipped in event check\n this.setBounds(width, columnHeight, legend, legendBounds);\n }\n else {\n this.setBounds(0, 0, legend, legendBounds);\n }\n };\n AccumulationLegend.prototype.getPageWidth = function (pageWidth) {\n var sum = 0;\n for (var i = 0; i < pageWidth.length; i++) {\n sum += pageWidth[i];\n }\n return sum;\n };\n /** @private */\n AccumulationLegend.prototype.getLegendHeight = function (option, legend, bounds, rowWidth, legendHeight, padding) {\n var legendWidth = option.textSize.width;\n var textPadding = legend.shapePadding + (padding * 2) + legend.shapeWidth;\n switch (legend.textWrap) {\n case 'Wrap':\n case 'AnyWhere':\n if (legendWidth > legend.maximumLabelWidth || legendWidth + rowWidth > bounds.width) {\n option.textCollection = textWrap(option.text, (legend.maximumLabelWidth ? Math.min(legend.maximumLabelWidth, (bounds.width - textPadding)) :\n (bounds.width - textPadding)), legend.textStyle, this.chart.enableRtl, legend.textWrap === 'AnyWhere', null, this.chart.themeStyle.legendLabelFont);\n }\n else {\n option.textCollection.push(option.text);\n }\n option.textSize.height = (legendHeight * option.textCollection.length);\n break;\n }\n };\n /**\n * To find html entities value for legend.\n *\n * @param {string} legendText - The text of the legend item.\n * @returns {string} - Converts the entities to normal string.\n * @private\n */\n AccumulationLegend.prototype.convertHtmlEntities = function (legendText) {\n var text = (legendText).replace('&', '&').replace('<', '<').replace('>', '>').replace('"', '\"').replace(' ', ' ').replace('¢', '¢').replace('£', '£').replace('¥', '¥').replace('€', '€').replace('©', '©').replace('®', '®');\n text = (text).replace('&', '&').replace('<', '<').replace('>', '>').replace('"', '\"').replace(' ', ' ').\n replace('¢', '¢').replace('£', '£').replace('¥', '¥').replace('€', '€').replace('©', '©').replace('®', '®');\n return text;\n };\n /**\n * To find maximum column size for legend.\n *\n * @param {number[]} columns - Array containing the number of legend items in each column.\n * @param {number} width - The total width available.\n * @param {number} padding - The padding between legend items.\n * @param {number} rowWidth - The width of each row of legend items.\n * @returns {number} - Get a maximum columns.\n */\n AccumulationLegend.prototype.getMaxColumn = function (columns, width, padding, rowWidth) {\n var maxPageColumn = padding;\n this.maxColumnWidth = Math.max.apply(null, columns);\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n maxPageColumn += this.maxColumnWidth;\n this.maxColumns++;\n if (maxPageColumn + padding > width) {\n maxPageColumn -= this.maxColumnWidth;\n this.maxColumns--;\n break;\n }\n }\n this.isPaging = (maxPageColumn < rowWidth) && (this.totalPages > 1);\n if (maxPageColumn === padding) {\n maxPageColumn = width;\n }\n this.maxColumns = Math.max(1, this.maxColumns);\n this.maxWidth = maxPageColumn;\n var columnWidth = this.maxColumnWidth + padding;\n var prevPage = 0;\n var columnCount = this.columnHeights.length;\n if (this.isPaging && this.isVertical) {\n for (var i = 1; i < columnCount; i++) {\n columnWidth += (this.maxColumnWidth + padding);\n if (columnWidth > width) {\n this.pageHeights.push(((prevPage !== i - 1) ? Math.max.apply(null, this.columnHeights.slice(prevPage, i - 1)) :\n this.columnHeights[prevPage]));\n columnWidth = this.maxColumnWidth + padding;\n prevPage = i;\n }\n }\n this.pageHeights.push(((prevPage !== columnCount - 1) ?\n Math.max.apply(null, this.columnHeights.slice(prevPage, columnCount - 1)) : this.columnHeights[prevPage]));\n this.totalPages = this.pageHeights.length;\n }\n return maxPageColumn;\n };\n /**\n * To find available width from legend x position.\n *\n * @param {number} tx - The x-coordinate of the legend.\n * @param {number} width - The total width available.\n * @returns {number} - Get a available width.\n */\n AccumulationLegend.prototype.getAvailWidth = function (tx, width) {\n if (this.isVertical) {\n width = this.maxWidth;\n }\n else if (!this.isVertical && this.isPaging && !this.legend.enablePages) {\n return width - tx - this.fivePixel;\n }\n return width - ((this.legend.padding * 2) + this.legend.shapeWidth + this.legend.shapePadding);\n };\n /**\n * To find legend rendering locations from legend items.\n *\n * @param {LegendOptions} legendOption - The legend options.\n * @param {ChartLocation} start - The starting location for legend rendering.\n * @param {number} textPadding - The padding between legend text items.\n * @param {LegendOptions} prevLegend - The previous legend options.\n * @param {Rect} rect - The bounding of the legend.\n * @param {number} count - The count of legend items.\n * @param {number} firstLegend - The index of the first legend item.\n * @returns {void}\n * @private\n */\n AccumulationLegend.prototype.getRenderPoint = function (legendOption, start, textPadding, prevLegend, rect, count, firstLegend) {\n var padding = this.legend.padding;\n var previousLocation = prevLegend.location.y + this.maxItemHeight / 4 + (prevLegend.textCollection.length > 0 ?\n ((prevLegend.textCollection.length - 1) * this.maxItemHeight) : 0);\n if (this.isVertical) {\n if (count === firstLegend || (previousLocation + legendOption.textSize.height + padding > (rect.y + rect.height))) {\n legendOption.location.x = prevLegend.location.x + ((count === firstLegend) ? 0 : (!this.isRtlEnable) ?\n this.maxColumnWidth : -this.maxColumnWidth);\n legendOption.location.y = start.y;\n var textStartLoc = (this.legend.shapeWidth / 2) + padding;\n this.pageXCollections.push(legendOption.location.x + ((!this.isRtlEnable) ? -textStartLoc : textStartLoc));\n }\n else {\n legendOption.location.x = prevLegend.location.x;\n legendOption.location.y = prevLegend.location.y + prevLegend.textSize.height + this.itemPadding;\n }\n }\n else {\n var textWidth = textPadding + (this.legend.maximumLabelWidth ?\n this.legend.maximumLabelWidth : prevLegend.textSize.width);\n var previousBound = prevLegend.location.x + ((!this.isRtlEnable) ? textWidth : -textWidth);\n if (this.isWithinBounds(previousBound, (this.legend.maximumLabelWidth ? this.legend.maximumLabelWidth :\n legendOption.textSize.width) + textPadding - this.itemPadding, rect, this.legend.shapeWidth / 2)) {\n if (count !== firstLegend) {\n this.chartRowCount++;\n }\n legendOption.location.y = (count === firstLegend) ? prevLegend.location.y :\n prevLegend.location.y + this.rowHeights[(this.chartRowCount - 2)] + padding;\n legendOption.location.x = start.x;\n }\n else {\n legendOption.location.y = prevLegend.location.y;\n legendOption.location.x = (count === firstLegend) ? prevLegend.location.x : previousBound;\n }\n }\n var availablewidth = this.getAvailWidth(legendOption.location.x, this.legendBounds.width);\n availablewidth = this.legend.maximumLabelWidth ? Math.min(this.legend.maximumLabelWidth, availablewidth) : availablewidth;\n if (this.legend.textOverflow === 'Ellipsis' && this.legend.textWrap === 'Normal') {\n legendOption.text = textTrim(+availablewidth.toFixed(4), legendOption.text, this.legend.textStyle, this.chart.enableRtl, this.chart.themeStyle.legendLabelFont);\n }\n };\n /**\n * Check whether legend group within legend bounds or not.\n *\n * @param {number} previousBound - The previous bound value.\n * @param {number} textWidth - The width of the legend text.\n * @param {Rect} legendBounds - The bounding of the legend.\n * @param {number} shapeWidth - The width of the legend shape.\n * @returns {boolean} - A boolean indicating whether the legend group is within the legend bounds.\n */\n AccumulationLegend.prototype.isWithinBounds = function (previousBound, textWidth, legendBounds, shapeWidth) {\n if (!this.isRtlEnable) {\n return (previousBound + textWidth) > (legendBounds.x + legendBounds.width + shapeWidth);\n }\n else {\n return (previousBound - textWidth) < (legendBounds.x - shapeWidth);\n }\n };\n /**\n * Finding the smart legend place according to positions.\n *\n * @param {Rect} labelBound - The bounding of the label.\n * @param {Rect} legendBound - The bounding of the legend.\n * @param {MarginModel} margin - The margin of the legend.\n * @returns {void}\n * @private\n */\n AccumulationLegend.prototype.getSmartLegendLocation = function (labelBound, legendBound, margin) {\n var space;\n switch (this.position) {\n case 'Left':\n space = ((labelBound.x - legendBound.width) - margin.left) / 2;\n legendBound.x = (labelBound.x - legendBound.width) < margin.left ? legendBound.x :\n (labelBound.x - legendBound.width) - space;\n break;\n case 'Right':\n space = ((this.chart.availableSize.width - margin.right) - (labelBound.x + labelBound.width + legendBound.width)) / 2;\n legendBound.x = (labelBound.x + labelBound.width + legendBound.width) > (this.chart.availableSize.width - margin.right) ?\n legendBound.x : (labelBound.x + labelBound.width + space);\n break;\n case 'Top':\n this.getTitleRect(this.chart);\n space = ((labelBound.y - legendBound.height) - (this.titleRect.y + this.titleRect.height)) / 2;\n legendBound.y = (labelBound.y - legendBound.height) < margin.top ? legendBound.y :\n (labelBound.y - legendBound.height) - space;\n break;\n case 'Bottom':\n space = ((this.chart.availableSize.height - margin.bottom) - (labelBound.y + labelBound.height + legendBound.height)) / 2;\n legendBound.y = labelBound.y + labelBound.height + legendBound.height > (this.chart.availableSize.height - margin.bottom) ?\n legendBound.y : (labelBound.y + labelBound.height) + space;\n break;\n }\n };\n /**\n * To get title rect.\n *\n * @param {AccumulationChart} accumulation - The accumulation chart control.\n * @returns {void}\n */\n AccumulationLegend.prototype.getTitleRect = function (accumulation) {\n if (!accumulation.title) {\n return null;\n }\n var titleSize = measureText(accumulation.title, accumulation.titleStyle, this.chart.themeStyle.legendTitleFont);\n this.titleRect = new Rect(accumulation.availableSize.width / 2 - titleSize.width / 2, accumulation.margin.top, titleSize.width, titleSize.height);\n };\n /**\n * To get legend by index.\n *\n * @param {number} index - The index of the legend.\n * @param {LegendOptions[]} legendCollections - The array of legend options.\n * @returns {LegendOptions} - Return legend index.\n */\n AccumulationLegend.prototype.legendByIndex = function (index, legendCollections) {\n for (var _i = 0, legendCollections_1 = legendCollections; _i < legendCollections_1.length; _i++) {\n var legend = legendCollections_1[_i];\n if (legend.pointIndex === index) {\n return legend;\n }\n }\n return null;\n };\n /**\n * To show or hide the legend on clicking the legend.\n *\n * @param {Event} event - The click event.\n * @returns {void}\n * @private\n */\n AccumulationLegend.prototype.click = function (event) {\n var targetId = event.target.id.indexOf('_chart_legend_g_') > -1 ?\n event.target.firstChild['id'] : event.target.id;\n var chart = this.chart;\n var legendItemsId = [this.legendID + '_text_', this.legendID + '_shape_', this.legendID + '_shape_marker_'];\n // if ((this.chart).accumulationSelectionModule) {\n // // const selectedDataIndexes: Indexes[] = extend([], (this.chart)\n // // .accumulationSelectionModule.selectedDataIndexes, null, true);\n // }\n this.chart.animateSeries = false;\n for (var _i = 0, legendItemsId_2 = legendItemsId; _i < legendItemsId_2.length; _i++) {\n var id = legendItemsId_2[_i];\n if (targetId.indexOf(id) > -1) {\n var pointIndex = parseInt(targetId.split(id)[1], 10);\n if (this.chart.legendSettings.toggleVisibility && !isNaN(pointIndex)) {\n var currentSeries = this.chart.visibleSeries[0];\n var point = pointByIndex(pointIndex, currentSeries.points);\n var legendOption = this.legendByIndex(pointIndex, this.legendCollections);\n var legendClickArgs = {\n legendText: legendOption.text, legendShape: legendOption.shape,\n chart: chart.isBlazor ? {} : chart, series: currentSeries, point: point,\n name: legendClick, cancel: false\n };\n this.chart.trigger(legendClick, legendClickArgs);\n if (!legendClickArgs.cancel) {\n point.visible = !point.visible;\n legendOption.visible = point.visible;\n currentSeries.sumOfPoints += point.visible ? point.y : -point.y;\n chart.redraw = chart.enableAnimation;\n this.sliceVisibility(pointIndex, point.visible);\n chart.removeSvg();\n //To remove the blazor templates\n blazorTemplatesReset(chart);\n this.chart.refreshPoints(currentSeries.points);\n this.chart.calculateBounds();\n this.chart.renderElements();\n }\n }\n else if (this.chart.accumulationSelectionModule && !isNaN(pointIndex)) {\n this.chart.accumulationSelectionModule.legendSelection(this.chart, 0, pointIndex, event.target, event.type);\n }\n else if (this.chart.accumulationHighlightModule && !isNaN(pointIndex)) {\n this.chart.accumulationHighlightModule.legendSelection(this.chart, 0, pointIndex, event.target, event.type);\n }\n }\n }\n if (targetId.indexOf(this.legendID + '_pageup') > -1) {\n this.changePage(event, true);\n }\n else if (targetId.indexOf(this.legendID + '_pagedown') > -1) {\n this.changePage(event, false);\n }\n chart.redraw = false;\n };\n /**\n * To translate the point elements by index and position.\n *\n * @param {number} index - The index of the point element.\n * @param {boolean} isVisible - A boolean value indicating whether the point is visible.\n * @returns {void}\n */\n AccumulationLegend.prototype.sliceVisibility = function (index, isVisible) {\n var sliceId = this.chart.element.id + '_Series_0_Point_';\n if (this.chart.visibleSeries[0].dataLabel.visible) {\n sliceId = this.chart.element.id + '_datalabel_Series_0_';\n this.sliceAnimate(getElement(sliceId + 'g_' + index), isVisible);\n }\n };\n /**\n * Slice animation.\n *\n * @param {Element} element - slice element.\n * @param {boolean} isVisible - boolean value of slice.\n * @returns {void}\n */\n AccumulationLegend.prototype.sliceAnimate = function (element, isVisible) {\n if (!element) {\n return null;\n }\n new Animation({}).animate(element, {\n duration: 300,\n delay: 0,\n name: isVisible ? 'FadeIn' : 'FadeOut',\n end: function (args) {\n args.element.style.visibility = isVisible ? 'visible' : 'hidden';\n }\n });\n };\n /**\n * Get module name.\n *\n * @returns {string} - Return module name.\n * @private\n */\n AccumulationLegend.prototype.getModuleName = function () {\n return 'AccumulationLegend';\n };\n /**\n * To destroy the Legend.\n *\n * @returns {void}\n * @private\n */\n AccumulationLegend.prototype.destroy = function () {\n /**\n * Destroy method calling here.\n */\n this.removeEventListener();\n };\n return AccumulationLegend;\n}(BaseLegend));\nexport { AccumulationLegend };\n","import { withInBounds, PointData, getValueXByPoint, getValueYByPoint, sort } from '../../common/utils/helper';\nimport { Rect } from '@syncfusion/ej2-svg-base';\n/**\n * The `ChartData` class is used to retrieve data on mouse move events in a chart.\n *\n * @private\n */\nvar ChartData = /** @class */ (function () {\n /**\n * Constructor for the data.\n *\n * @private\n */\n function ChartData(chart) {\n /** @private */\n this.currentPoints = [];\n /** @private */\n this.previousPoints = [];\n this.insideRegion = false;\n this.commonXvalues = [];\n this.chart = chart;\n this.lierIndex = 0;\n }\n /**\n * Method to get the Data.\n *\n * @private\n */\n ChartData.prototype.getData = function () {\n var chart = this.chart;\n var point = null;\n var series = null;\n var width;\n var height;\n var mouseX;\n var mouseY;\n for (var len = chart.visibleSeries.length, i = len - 1; i >= 0; i--) {\n series = chart.visibleSeries[i];\n width = (series.type === 'Scatter' || series.drawType === 'Scatter' || (series.marker.visible))\n ? (series.marker.height + 5) / 2 : 0;\n height = (series.type === 'Scatter' || series.drawType === 'Scatter' || (series.marker.visible))\n ? (series.marker.width + 5) / 2 : 0;\n mouseX = chart.mouseX;\n mouseY = chart.mouseY;\n if (series.dragSettings.enable && series.isRectSeries) {\n if (!(series.type === 'Bar' && chart.isTransposed) && (chart.isTransposed || series.type === 'Bar')) {\n var markerWidth = series.marker.width / 2;\n mouseX = series.yAxis.isAxisInverse ? mouseX + markerWidth : mouseX - markerWidth;\n }\n else {\n var markerHeight = series.marker.height / 2;\n mouseY = series.yAxis.isAxisInverse ? mouseY - markerHeight : mouseY + markerHeight;\n }\n }\n if (series.visible && withInBounds(mouseX, mouseY, series.clipRect, width, height)) {\n point = this.getRectPoint(series, series.clipRect, mouseX, mouseY);\n }\n if (point) {\n return new PointData(point, series);\n }\n }\n return new PointData(point, series);\n };\n ChartData.prototype.isSelected = function (chart) {\n return ((chart.selectionMode.indexOf('Drag') > -1 || chart.selectionMode.indexOf('Lasso') > -1) && chart.selectionModule &&\n chart.selectionModule.rectPoints !== null);\n };\n ChartData.prototype.getRectPoint = function (series, rect, x, y) {\n var chart = this.chart;\n var fromCenterX;\n var fromCenterY;\n var clickAngle;\n var arcAngle = 0;\n var startAngle;\n var endAngle;\n var distanceFromCenter;\n if (chart.isScrolling) {\n return null;\n }\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var point = _a[_i];\n if (!point.regionData) {\n if (!point.regions || !point.regions.length) {\n continue;\n }\n }\n if (point.regionData && this.chart.chartAreaType === 'PolarRadar' && series.drawType.indexOf('Column') > -1) {\n fromCenterX = x - (series.clipRect.width / 2 + series.clipRect.x);\n fromCenterY = y - (series.clipRect.height / 2 + series.clipRect.y);\n arcAngle = 2 * Math.PI * (point.regionData.currentXPosition < 0 ? 1 + point.regionData.currentXPosition\n : point.regionData.currentXPosition);\n clickAngle = (Math.atan2(fromCenterY, fromCenterX) + 0.5 * Math.PI - arcAngle) % (2 * Math.PI);\n clickAngle = clickAngle < 0 ? 2 * Math.PI + clickAngle : clickAngle;\n clickAngle = clickAngle + 2 * Math.PI * series.chart.primaryXAxis.startAngle;\n startAngle = point.regionData.startAngle;\n startAngle -= arcAngle;\n startAngle = startAngle < 0 ? 2 * Math.PI + startAngle : startAngle;\n endAngle = point.regionData.endAngle;\n endAngle -= arcAngle;\n endAngle = endAngle < 0 ? 2 * Math.PI + endAngle : endAngle;\n distanceFromCenter = Math.sqrt(Math.pow(Math.abs(fromCenterX), 2) + Math.pow(Math.abs(fromCenterY), 2));\n if (clickAngle >= startAngle && clickAngle <= endAngle &&\n (((distanceFromCenter >= point.regionData.innerRadius && distanceFromCenter <= point.regionData.radius) ||\n (distanceFromCenter <= point.regionData.innerRadius && distanceFromCenter >= point.regionData.radius))\n && distanceFromCenter <= series.chart.radius)) {\n return point;\n }\n }\n if ((series.dragSettings.enable && series.isRectSeries) || (series.isRectSeries && series.marker.visible && this.chart.chartAreaType !== 'PolarRadar')) {\n if (this.isPointInThresholdRegion(x, y, point, rect, series)) {\n this.insideRegion = true;\n return point;\n }\n }\n if (!this.insideRegion && this.checkRegionContainsPoint(point.regions, rect, x, y)) {\n return point;\n }\n else if (this.insideRegion && this.checkRegionContainsPoint(point.regions, rect, x, y)) {\n return point;\n }\n }\n return null;\n };\n /**\n * Checks if the given point is contained within any of the regions defined by the array of rectangles.\n *\n * @param {Rect[]} regionRect - The array of rectangles defining the regions.\n * @param {Rect} rect - The rectangle to check against the regions.\n * @param {number} x - The x-coordinate of the point.\n * @param {number} y - The y-coordinate of the point.\n * @returns {boolean} - True if the point is contained within any of the regions, otherwise false.\n */\n ChartData.prototype.checkRegionContainsPoint = function (regionRect, rect, x, y) {\n var _this = this;\n return regionRect.some(function (region, index) {\n _this.lierIndex = index;\n return withInBounds(x, y, new Rect((_this.chart.chartAreaType === 'Cartesian' ? rect.x : 0) + region.x, (_this.chart.chartAreaType === 'Cartesian' ? rect.y : 0) + region.y, region.width, region.height));\n });\n };\n /**\n * Checks if the given point is within the threshold region of a data point.\n *\n * @param {number} x - The x-coordinate of the point to check.\n * @param {number} y - The y-coordinate of the point to check.\n * @param {Points} point - The data point.\n * @param {Rect} rect - The rectangle representing the threshold region.\n * @param {Series} series - The series to which the data point belongs.\n * @returns {boolean} - True if the point is within the threshold region, otherwise false.\n */\n ChartData.prototype.isPointInThresholdRegion = function (x, y, point, rect, series) {\n var _this = this;\n var isBar = series.type === 'Bar';\n var isInversed = series.yAxis.isAxisInverse;\n var isTransposed = series.chart.isTransposed;\n var heightValue = 10;\n var yValue = 0;\n var xValue = 0;\n var width;\n var height = width = 2 * heightValue;\n if (isInversed && isTransposed) {\n if (isBar) {\n yValue = point.regions[0].height - heightValue;\n width = point.regions[0].width;\n }\n else {\n xValue = -heightValue;\n height = point.regions[0].height;\n }\n }\n else if (isInversed || point.yValue < 0) {\n if (isBar) {\n xValue = -heightValue;\n height = point.regions[0].height;\n }\n else {\n yValue = point.regions[0].height - heightValue;\n width = point.regions[0].width;\n }\n }\n else if (isTransposed) {\n if (isBar) {\n yValue = -heightValue;\n width = point.regions[0].width;\n }\n else {\n xValue = point.regions[0].width - heightValue;\n height = point.regions[0].height;\n }\n }\n else {\n if (isBar) {\n xValue = point.regions[0].width - heightValue;\n height = point.regions[0].height;\n }\n else {\n yValue = -heightValue;\n width = point.regions[0].width;\n }\n }\n return point.regions.some(function (region) {\n return withInBounds(x, y, new Rect((_this.chart.chartAreaType === 'Cartesian' ? rect.x : 0) + region.x + xValue, (_this.chart.chartAreaType === 'Cartesian' ? rect.y : 0) + region.y + yValue, width, height));\n });\n };\n /**\n * Gets the index of the closest data point to the given value in the series.\n *\n * @param {Series} series - The series.\n * @param {number} value - The value to which the closest data point is sought.\n * @param {number[]} [xvalues] - The x-values of the data points.\n * @returns {number} - The index of the closest data point.\n * @private\n */\n ChartData.prototype.getClosest = function (series, value, xvalues) {\n var closest;\n var data;\n var xData = xvalues ? xvalues : series.xData;\n var xLength = xData.length;\n var leftSideNearest = 0.5;\n var rightSideNearest = 0.5;\n if (series.xAxis.valueType === 'DateTime' && series.points.length === 1) {\n leftSideNearest = series.xAxis.visibleRange.min;\n rightSideNearest = series.xAxis.visibleRange.max;\n for (var index = 0; index < series.chart.visibleSeries.length; index++) {\n var visibleSeries = series.chart.visibleSeries[index];\n if (visibleSeries.xMin >= leftSideNearest && visibleSeries.xMin < series.xMin) {\n leftSideNearest = visibleSeries.xMin + 0.1;\n }\n if (visibleSeries.xMax <= rightSideNearest && visibleSeries.xMax > series.xMax) {\n rightSideNearest = visibleSeries.xMax - 0.1;\n }\n if (visibleSeries.visible && visibleSeries.points.length > 1) {\n if (visibleSeries.xMax >= leftSideNearest && visibleSeries.xMax < series.xMin) {\n leftSideNearest = visibleSeries.xMax + 0.1;\n }\n if (visibleSeries.xMin <= rightSideNearest && visibleSeries.xMin > series.xMax) {\n rightSideNearest = visibleSeries.xMin - 0.1;\n }\n }\n }\n if (leftSideNearest !== series.xAxis.visibleRange.min) {\n leftSideNearest = Math.abs(series.xMin - leftSideNearest) / 2;\n }\n if (rightSideNearest !== series.xAxis.visibleRange.max) {\n rightSideNearest = Math.abs(series.xMax - rightSideNearest) / 2;\n }\n }\n if (value >= series.xMin - leftSideNearest && value <= series.xMax + rightSideNearest) {\n for (var i = 0; i < xLength; i++) {\n data = xData[i];\n if (closest == null || Math.abs(data - value) < Math.abs(closest - value)) {\n closest = data;\n }\n }\n }\n var isDataExist = series.xData.indexOf(closest) !== -1;\n if (isDataExist) {\n return closest;\n }\n else {\n return null;\n }\n };\n ChartData.prototype.binarySearch = function (target, list) {\n var first = 0;\n var last = list.length;\n var position = -1;\n var found = false;\n var middle;\n while (found === false && first <= last) {\n middle = Math.floor((first + last) / 2);\n if (list[middle].xValue === target) {\n found = true;\n position = middle;\n }\n else if (list[middle].xValue > target) {\n last = middle - 1;\n }\n else {\n first = middle + 1;\n }\n }\n return position !== -1 ? list[position] : null;\n };\n ChartData.prototype.getClosestX = function (chart, series, xvalues) {\n var value;\n var rect = series.clipRect;\n if (chart.mouseX <= rect.x + rect.width && chart.mouseX >= rect.x) {\n if (!chart.requireInvertedAxis) {\n value = getValueXByPoint(chart.mouseX - rect.x, rect.width, series.xAxis);\n }\n else {\n value = getValueYByPoint(chart.mouseY - rect.y, rect.height, series.xAxis);\n }\n }\n var closest = this.getClosest(series, value, xvalues);\n var point = ((closest || closest === 0) && series.points.length > 0) ? this.binarySearch(closest, sort(series.points, ['xValue'])) : null;\n if (point && point.visible) {\n if (!(this.chart.chartAreaType === 'Cartesian' && ((series.category === 'Indicator' && series.name === 'Histogram') ||\n (point.symbolLocations && point.symbolLocations.length > 0 && point.symbolLocations[0].x >= 0 &&\n point.symbolLocations[0].x <= rect.width)))) {\n return null;\n }\n return new PointData(point, series);\n }\n return null;\n };\n /**\n * Merges the x-values of the data points from multiple series into a single array.\n *\n * @param {Series[]} visibleSeries - The array of visible series.\n * @returns {number[]} - The merged array of x-values.\n * @private\n */\n ChartData.prototype.mergeXvalues = function (visibleSeries) {\n if (visibleSeries.length && (!this.commonXvalues.length || (this.commonXvalues.length !== visibleSeries[0].xData.length))) {\n this.commonXvalues = visibleSeries[0].xData;\n for (var index = 1; index < visibleSeries.length; index++) {\n this.commonXvalues = this.getDistinctValues(this.commonXvalues, visibleSeries[index].xData);\n }\n }\n return this.commonXvalues;\n };\n ChartData.prototype.commonXValue = function (visibleSeries) {\n var commonXValues = [];\n for (var j = 0; j < visibleSeries.length; j++) {\n for (var i = 0; (visibleSeries[j].points && i < visibleSeries[j].points.length); i++) {\n var point = visibleSeries[j].points[i];\n if (point && (point.index === 0 || point.index === visibleSeries[j].points.length - 1 ||\n (point.symbolLocations && point.symbolLocations.length > 0))) {\n commonXValues.push(point.xValue);\n }\n }\n }\n return commonXValues;\n };\n ChartData.prototype.getDistinctValues = function (first, second) {\n if (first === void 0) { first = []; }\n if (second === void 0) { second = []; }\n var intial = {};\n var result = [];\n var index;\n for (index = 0; index < first.length; index++) {\n var temp = first[index];\n if (!intial[temp]) {\n intial[temp] = true;\n result.push(temp);\n }\n }\n for (index = 0; index < second.length; index++) {\n var temp = second[index];\n if (!intial[temp]) {\n intial[temp] = true;\n result.push(temp);\n }\n }\n return result;\n };\n return ChartData;\n}());\nexport { ChartData };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { ChartLocation } from '../../common/utils/helper';\nimport { stopTimer, removeElement } from '../../common/utils/helper';\nimport { ChartData } from '../../chart/utils/get-data';\nimport { Tooltip as SVGTooltip } from '@syncfusion/ej2-svg-base';\n/**\n * `Tooltip` module is used to render the tooltip for series.\n */\nvar BaseTooltip = /** @class */ (function (_super) {\n __extends(BaseTooltip, _super);\n /**\n * Constructor for tooltip module.\n *\n * @private\n */\n function BaseTooltip(chart) {\n var _this = _super.call(this, chart) || this;\n _this.element = _this.chart.element;\n _this.textStyle = chart.tooltip.textStyle;\n _this.control = chart;\n _this.template = chart.tooltip.template;\n return _this;\n }\n BaseTooltip.prototype.getElement = function (id) {\n return document.getElementById(id);\n };\n /**\n * Renders the tooltip.\n *\n * @returns {void}\n * @private\n */\n BaseTooltip.prototype.getTooltipElement = function (isTooltip) {\n this.inverted = this.chart.requireInvertedAxis;\n this.header = (this.control.tooltip.header === null) ?\n ((this.control.tooltip.shared) ? '${point.x}' : '${series.name}')\n : (this.control.tooltip.header);\n this.formattedText = [];\n var tooltipDiv = document.getElementById(this.chart.element.id + '_tooltip');\n var isStockChart = this.chart.element.id.indexOf('stockChart') > -1;\n if (!isTooltip && !tooltipDiv || isStockChart) {\n return this.createElement();\n }\n return null;\n };\n BaseTooltip.prototype.createElement = function () {\n var tooltipDiv = document.createElement('div');\n tooltipDiv.id = this.element.id + '_tooltip';\n tooltipDiv.className = 'ejSVGTooltip';\n tooltipDiv.style.pointerEvents = 'none';\n tooltipDiv.style.position = 'absolute';\n tooltipDiv.style.zIndex = '1';\n return tooltipDiv;\n };\n BaseTooltip.prototype.pushData = function (data, isFirst, tooltipDiv, isChart, enable3D) {\n if (data.series.enableTooltip) {\n if (enable3D) {\n this.currentPoints.push(data);\n }\n else if (isChart) {\n this.currentPoints.push(data);\n }\n else {\n this.currentPoints.push(data);\n }\n this.stopAnimation();\n if (tooltipDiv && !document.getElementById(tooltipDiv.id)) {\n if (!this.chart.stockChart) {\n document.getElementById(this.element.id + '_Secondary_Element').appendChild(tooltipDiv);\n }\n else {\n document.getElementById(this.chart.stockChart.element.id + '_Secondary_Element').appendChild(tooltipDiv);\n }\n }\n return true;\n }\n return false;\n };\n BaseTooltip.prototype.removeHighlight = function () {\n var item;\n // let series: Series;\n for (var i = 0, len = this.previousPoints.length; i < len; i++) {\n item = this.previousPoints[i];\n if (item.series.isRectSeries) {\n if (item.series.visible) {\n this.highlightPoint(item.series, item.point.index, false);\n }\n continue;\n }\n // series = item.series as Series;\n }\n };\n BaseTooltip.prototype.highlightPoint = function (series, pointIndex, highlight) {\n var element = this.getElement(this.element.id + '_Series_' + series.index + '_Point_' + pointIndex);\n var selectionModule = this.control.accumulationSelectionModule;\n var isSelectedElement = selectionModule && selectionModule.selectedDataIndexes.length > 0 ? true : false;\n if (element) {\n if ((!isSelectedElement || isSelectedElement && element.getAttribute('class')\n && element.getAttribute('class').indexOf('_ej2_chart_selection_series_') === -1)) {\n if (this.chart.highlightColor !== '' && !isNullOrUndefined(this.chart.highlightColor)) {\n element.setAttribute('fill', (highlight && this.chart.highlightColor !== 'transparent' ? this.chart.highlightColor : series.pointColorMapping !== '' ? (series.points[0]).color : series.points[pointIndex].color || series.interior));\n }\n else {\n element.setAttribute('opacity', (highlight && this.chart.highlightColor !== 'transparent' ? series.opacity / 2 : series.opacity).toString());\n }\n }\n else {\n element.setAttribute('opacity', series.opacity.toString());\n }\n }\n };\n BaseTooltip.prototype.highlightPoints = function () {\n for (var _i = 0, _a = this.currentPoints; _i < _a.length; _i++) {\n var item = _a[_i];\n if (item.series.isRectSeries && item.series.category === 'Series') {\n this.highlightPoint(item.series, item.point.index, true);\n }\n }\n };\n BaseTooltip.prototype.createTooltip = function (chart, isFirst, location, clipLocation, point, shapes, offset, bounds, crosshairEnabled, extraPoints, templatePoint, customTemplate) {\n if (crosshairEnabled === void 0) { crosshairEnabled = false; }\n if (extraPoints === void 0) { extraPoints = null; }\n if (templatePoint === void 0) { templatePoint = null; }\n var series = this.currentPoints[0].series;\n var tooltipModule = chart.tooltipModule || chart.tooltip3DModule ||\n chart.accumulationTooltipModule;\n if (!tooltipModule || location === null) { // For the tooltip enable is false.\n removeElement(this.chart.element.id + '_tooltip');\n return;\n }\n if (isFirst) {\n this.svgTooltip = new SVGTooltip({\n opacity: chart.tooltip.opacity ? chart.tooltip.opacity : ((this.chart.theme === 'Material3' || this.chart.theme === 'Material3Dark' || this.chart.theme.indexOf('Bootstrap5') > -1) ? 1 : 0.75),\n header: this.headerText,\n content: this.text,\n fill: chart.tooltip.fill,\n border: chart.tooltip.border,\n enableAnimation: chart.tooltip.enableAnimation,\n location: location,\n shared: this.control.tooltip.shared,\n crosshair: crosshairEnabled,\n shapes: shapes,\n clipBounds: this.chart.chartAreaType === 'PolarRadar' ? new ChartLocation(0, 0) : clipLocation,\n areaBounds: bounds,\n palette: this.findPalette(),\n template: customTemplate || this.template,\n data: templatePoint,\n theme: chart.theme,\n offset: offset,\n textStyle: chart.tooltip.textStyle,\n isNegative: (series.isRectSeries && series.type !== 'Waterfall' && point && point.y < 0),\n inverted: this.chart.requireInvertedAxis && series.isRectSeries,\n arrowPadding: this.text.length > 1 || this.chart.stockChart || (this.chart.tooltip.location.x !== null\n || this.chart.tooltip.location.y !== null) ? 0 : 7,\n availableSize: chart.availableSize,\n duration: this.chart.tooltip.duration,\n isCanvas: this.chart.enableCanvas,\n isFixed: (this.chart.tooltip.location.x !== null || this.chart.tooltip.location.y !== null),\n isTextWrap: chart.tooltip.enableTextWrap && chart.getModuleName() === 'chart',\n blazorTemplate: { name: 'Template', parent: this.chart.tooltip },\n controlInstance: this.chart,\n enableRTL: chart.enableRtl,\n controlName: 'Chart',\n allowHighlight: chart.getModuleName() === 'chart' && !series.marker.allowHighlight,\n tooltipRender: function () {\n tooltipModule.removeHighlight();\n tooltipModule.highlightPoints();\n tooltipModule.updatePreviousPoint(extraPoints);\n },\n animationComplete: function (args) {\n if (args.tooltip.fadeOuted) {\n tooltipModule.fadeOut(tooltipModule.previousPoints);\n }\n }\n });\n this.svgTooltip.appendTo(this.getElement(this.element.id + '_tooltip'));\n }\n else {\n if (this.svgTooltip) {\n this.svgTooltip.location = location;\n this.svgTooltip.content = this.text;\n this.svgTooltip.header = this.headerText;\n this.svgTooltip.offset = offset;\n this.svgTooltip.palette = this.findPalette();\n this.svgTooltip.shapes = shapes;\n this.svgTooltip.data = templatePoint;\n this.svgTooltip.template = this.template;\n this.svgTooltip.controlName = 'Chart';\n this.svgTooltip.crosshair = crosshairEnabled;\n this.svgTooltip.textStyle = chart.tooltip.textStyle;\n this.svgTooltip.isNegative = (series.isRectSeries && series.type !== 'Waterfall' && point && point.y < 0);\n this.svgTooltip.clipBounds = this.chart.chartAreaType === 'PolarRadar' ? new ChartLocation(0, 0) : clipLocation;\n this.svgTooltip.arrowPadding = this.text.length > 1 || this.chart.stockChart || (this.chart.tooltip.location.x !== null\n || this.chart.tooltip.location.y !== null) ? 0 : 7;\n this.svgTooltip.allowHighlight = chart.getModuleName() === 'chart' && !series.marker.allowHighlight;\n this.svgTooltip.dataBind();\n }\n }\n if (this.chart.isReact) {\n this.chart.renderReactTemplates();\n }\n };\n BaseTooltip.prototype.findPalette = function () {\n var colors = [];\n for (var _i = 0, _a = this.currentPoints; _i < _a.length; _i++) {\n var data = _a[_i];\n colors.push(this.findColor(data, data.series));\n }\n return colors;\n };\n BaseTooltip.prototype.findColor = function (data, series) {\n if (series.isRectSeries && (series.type === 'Candle' || series.type === 'Hilo' || series.type === 'HiloOpenClose')) {\n return data.point.color;\n }\n else {\n return (data.point.color && data.point.color !== '#ffffff' ? data.point.color\n : data.point.interior) ||\n series.marker.fill || series.interior;\n }\n };\n BaseTooltip.prototype.updatePreviousPoint = function (extraPoints) {\n if (extraPoints) {\n this.currentPoints = this.currentPoints.concat(extraPoints);\n }\n this.previousPoints = extend([], this.currentPoints, null, true);\n };\n BaseTooltip.prototype.fadeOut = function (data) {\n var svgElement = this.chart.enableCanvas ? this.getElement(this.element.id + '_tooltip_group') :\n this.getElement(this.element.id + '_tooltip_svg');\n var isTooltip = (svgElement && parseInt(svgElement.getAttribute('opacity'), 10) > 0);\n if (!isTooltip) {\n this.valueX = null;\n this.valueY = null;\n this.currentPoints = [];\n this.removeHighlight();\n this.removeHighlightedMarker(data, true);\n this.svgTooltip = null;\n this.control.trigger('animationComplete', {});\n }\n };\n /*\n * @hidden\n */\n BaseTooltip.prototype.removeHighlightedMarker = function (data, fadeOut) {\n if (this.chart.markerRender) {\n for (var _i = 0, data_1 = data; _i < data_1.length; _i++) {\n var item = data_1[_i];\n removeElement(this.element.id + '_Series_' + item.series.index +\n '_Point_' + item.point.index + '_Trackball');\n this.chart.markerRender.removeHighlightedMarker(item.series, item.point, fadeOut);\n }\n }\n this.previousPoints = [];\n };\n // public triggerEvent(point: PointData | AccPointData, isFirst: boolean, textCollection: string, firstText: boolean = true): boolean {\n // let argsData: ITooltipRenderEventArgs = {\n // cancel: false, name: tooltipRender, text: textCollection,\n // point: point.point, series: point.series, textStyle: this.textStyle\n // };\n // this.chart.trigger(tooltipRender, argsData);\n // if (!argsData.cancel) {\n // if (point.series.type === 'BoxAndWhisker') {\n // this.removeText();\n // isFirst = true;\n // }\n // this.formattedText = this.formattedText.concat(argsData.text);\n // this.text = this.formattedText;\n // }\n // return !argsData.cancel;\n // }\n BaseTooltip.prototype.removeText = function () {\n this.textElements = [];\n var element = this.getElement(this.element.id + '_tooltip_group');\n if (element && element.childNodes.length > 0) {\n while (element.lastChild && element.childNodes.length !== 1) {\n element.removeChild(element.lastChild);\n }\n }\n };\n BaseTooltip.prototype.stopAnimation = function () {\n stopTimer(this.toolTipInterval);\n };\n /**\n * Removes the tooltip on mouse leave.\n *\n * @returns {void}\n * @private\n */\n BaseTooltip.prototype.removeTooltip = function (duration) {\n var _this = this;\n var tooltipElement = this.getElement(this.element.id + '_tooltip');\n // const tooltipTemplate: HTMLElement = tooltipElement ? this.getElement(tooltipElement.id + 'parent_template') : null;\n // const isTemplateRendered: boolean = tooltipTemplate && tooltipTemplate.innerText !== '
';\n this.stopAnimation();\n if (tooltipElement && this.previousPoints.length > 0) {\n this.toolTipInterval = +setTimeout(function () {\n if (_this.svgTooltip) {\n _this.svgTooltip.fadeOut();\n }\n }, duration);\n }\n };\n return BaseTooltip;\n}(ChartData));\nexport { BaseTooltip };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * AccumulationChart Tooltip file.\n */\nimport { Browser, remove } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { AccPointData, withInBounds, indexFinder } from '../../common/utils/helper';\n//import { Rect } from '@syncfusion/ej2-svg-base';\nimport { BaseTooltip } from '../../common/user-interaction/tooltip';\nimport { tooltipRender } from '../../common/model/constants';\n/**\n * The `AccumulationTooltip` module is used to render tooltips for the accumulation chart.\n */\nvar AccumulationTooltip = /** @class */ (function (_super) {\n __extends(AccumulationTooltip, _super);\n function AccumulationTooltip(accumulation) {\n var _this = _super.call(this, accumulation) || this;\n _this.accumulation = accumulation;\n _this.addEventListener();\n _this.template = _this.accumulation.tooltip.template;\n return _this;\n }\n /**\n * Adds an event listener.\n *\n * @hidden\n * @returns {void}\n */\n AccumulationTooltip.prototype.addEventListener = function () {\n if (this.accumulation.isDestroyed) {\n return;\n }\n this.accumulation.on(Browser.isPointer ? 'pointerleave' : 'mouseleave', this.mouseLeaveHandler, this);\n this.accumulation.on(Browser.touchMoveEvent, this.mouseMoveHandler, this);\n this.accumulation.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n };\n AccumulationTooltip.prototype.mouseLeaveHandler = function () {\n this.removeTooltip(this.accumulation.tooltip.fadeOutDuration);\n };\n AccumulationTooltip.prototype.mouseUpHandler = function (e) {\n var control = this.accumulation;\n if (control.tooltip.enable && control.isTouch && withInBounds(control.mouseX, control.mouseY, control.initialClipRect)) {\n this.tooltip(e);\n this.removeTooltip(2000);\n }\n };\n AccumulationTooltip.prototype.mouseMoveHandler = function (e) {\n var control = this.accumulation;\n // Tooltip for chart series.\n if (control.tooltip.enable && withInBounds(control.mouseX, control.mouseY, control.initialClipRect)) {\n this.tooltip(e);\n }\n };\n /**\n * Renders the tooltip.\n *\n * @param {PointerEvent | TouchEvent} event - The mouse move event or touch event.\n * @returns {void}\n * @private\n */\n AccumulationTooltip.prototype.tooltip = function (event) {\n this.renderSeriesTooltip(this.accumulation, this.getPieData(event, this.accumulation));\n };\n /**\n * @private\n */\n AccumulationTooltip.prototype.renderSeriesTooltip = function (chart, data) {\n var svgElement = this.getElement(this.element.id + '_tooltip_svg');\n var isTooltip = svgElement && parseInt(svgElement.getAttribute('opacity'), 10) > 0;\n var tooltipDiv = this.getTooltipElement(isTooltip);\n var isFirst = !isTooltip;\n this.currentPoints = [];\n if (data.point && (!this.previousPoints[0] || (this.previousPoints[0].point !== data.point))) {\n if (this.previousPoints[0] && data.point.index === this.previousPoints[0].point.index\n && data.series.index === this.previousPoints[0].series.index) {\n return null;\n }\n if (this.pushData(data, isFirst, tooltipDiv, false)) {\n this.triggerTooltipRender(data, isFirst, this.getTooltipText(data, chart.tooltip), this.findHeader(data));\n }\n }\n else {\n if (!data.point && this.isRemove) {\n this.removeTooltip(this.accumulation.tooltip.fadeOutDuration);\n this.isRemove = false;\n }\n }\n };\n AccumulationTooltip.prototype.triggerTooltipRender = function (point, isFirst, textCollection, headerText) {\n var _this = this;\n //let template: string;\n var tooltip = this.chart.tooltip;\n var argsData = {\n cancel: false, name: tooltipRender, text: textCollection, point: point.point, textStyle: this.textStyle,\n series: this.accumulation.isBlazor ? {} : point.series, headerText: headerText,\n data: {\n pointX: point.point.x, pointY: point.point.y, seriesIndex: point.series.index,\n pointIndex: point.point.index, pointText: point.point.text, seriesName: point.series.name\n }\n };\n var tooltipSuccess = function (argsData) {\n if (!argsData.cancel) {\n _this.formattedText = _this.formattedText.concat(argsData.text);\n _this.text = _this.formattedText;\n _this.headerText = argsData.headerText;\n _this.createTooltip(_this.chart, isFirst, { x: (tooltip.location.x !== null) ? tooltip.location.x :\n point.point.symbolLocation.x, y: (tooltip.location.y !== null) ? tooltip.location.y : point.point.symbolLocation.y }, point.series.clipRect, point.point, !tooltip.enableMarker ? [] : ['Circle'], 0, _this.chart.initialClipRect, false, null, point.point, _this.template ? argsData.template : '');\n }\n else {\n _this.removeHighlight();\n remove(_this.getElement(_this.element.id + '_tooltip'));\n }\n _this.isRemove = true;\n };\n tooltipSuccess.bind(this, point);\n this.chart.trigger(tooltipRender, argsData, tooltipSuccess);\n };\n AccumulationTooltip.prototype.getPieData = function (e, chart) {\n var target = e.target;\n var id = indexFinder(target.id, true);\n if (!isNaN(id.series)) {\n var seriesIndex = id.series;\n var pointIndex = id.point;\n if (!isNullOrUndefined(seriesIndex) && !isNaN(seriesIndex) && !isNullOrUndefined(pointIndex) && !isNaN(pointIndex)) {\n var series = this.getSeriesFromIndex(seriesIndex, chart.visibleSeries);\n if (series.enableTooltip) {\n return new AccPointData(series.points[pointIndex], series);\n }\n }\n }\n return new AccPointData(null, null);\n };\n /**\n * To get series from index.\n *\n * @param {number} index - The index of the series to retrieve.\n * @param {AccumulationSeries[]} visibleSeries - The array of visible series in the accumulation chart.\n * @returns {AccumulationSeries} - The series retrieved from the specified index.\n */\n AccumulationTooltip.prototype.getSeriesFromIndex = function (index, visibleSeries) {\n return visibleSeries[0];\n };\n AccumulationTooltip.prototype.getTooltipText = function (data, tooltip) {\n var series = data.series;\n var format = tooltip.format ? tooltip.format : '${point.x} : ${point.y}';\n format = this.accumulation.useGroupingSeparator ? format.replace('${point.y}', '${point.separatorY}') : format;\n return this.parseTemplate(data.point, series, format);\n };\n AccumulationTooltip.prototype.findHeader = function (data) {\n if (this.header === '') {\n return '';\n }\n this.header = this.parseTemplate(data.point, data.series, this.header);\n if (this.header.replace(//g, '').replace(/<\\/b>/g, '').trim() !== '') {\n return this.header;\n }\n return '';\n };\n AccumulationTooltip.prototype.parseTemplate = function (point, series, format) {\n var value;\n var textValue;\n var regExp = RegExp;\n for (var _i = 0, _a = Object.keys(point); _i < _a.length; _i++) {\n var dataValue = _a[_i];\n value = new regExp('${point' + '.' + dataValue + '}', 'gm');\n var pointValue = (dataValue === 'x' && this.accumulation.useGroupingSeparator && typeof point[dataValue] === 'number') ?\n this.accumulation.intl.formatNumber(point.x, { useGrouping: true }) : point[dataValue];\n format = format.replace(value.source, pointValue);\n }\n for (var _b = 0, _c = Object.keys(Object.getPrototypeOf(series)); _b < _c.length; _b++) {\n var dataValue = _c[_b];\n value = new regExp('${series' + '.' + dataValue + '}', 'gm');\n textValue = series[dataValue];\n format = format.replace(value.source, textValue);\n }\n return format;\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name.\n */\n AccumulationTooltip.prototype.getModuleName = function () {\n return 'AccumulationTooltip';\n };\n /**\n * To destroy the Tooltip.\n *\n * @returns {void}\n * @private\n */\n AccumulationTooltip.prototype.destroy = function () {\n /**\n * Destroy method calling here\n */\n };\n return AccumulationTooltip;\n}(BaseTooltip));\nexport { AccumulationTooltip };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * AccumulationChart DataLabel module file\n */\nimport { extend, createElement, getValue, isNullOrUndefined, animationMode } from '@syncfusion/ej2-base';\nimport { Rect, Size, PathOption, measureText, TextOption } from '@syncfusion/ej2-svg-base';\nimport { ChartLocation, degreeToLocation, isOverlap, stringToNumber, getAngle, appendChildElement } from '../../common/utils/helper';\nimport { textTrim, subtractThickness, Thickness, getElement } from '../../common/utils/helper';\nimport { removeElement, RectOption, textElement, showTooltip } from '../../common/utils/helper';\nimport { colorNameToHex, convertHexToColor, containsRect, textWrap, CircleOption } from '../../common/utils/helper';\nimport { getSeriesFromIndex } from '../model/acc-base';\nimport { textRender } from '../../common/model/constants';\nimport { getFontStyle, createTemplate, measureElementRect, templateAnimate } from '../../common/utils/helper';\nimport { AccumulationBase } from './accumulation-base';\n/**\n * The `AccumulationDataLabel` module is used to render data labels for the Accumulation chart.\n */\nvar AccumulationDataLabel = /** @class */ (function (_super) {\n __extends(AccumulationDataLabel, _super);\n function AccumulationDataLabel(accumulation) {\n var _this = _super.call(this, accumulation) || this;\n _this.rightSideRenderingPoints = [];\n _this.leftSideRenderingPoints = [];\n _this.id = accumulation.element.id + '_datalabel_Series_';\n return _this;\n }\n /**\n * Method to get datalabel text location.\n *\n * @private\n * @param {AccPoints} point - The data point for which to calculate the label text location.\n * @param {AccumulationDataLabelSettingsModel} dataLabel - The data label settings for the series.\n * @param {Size} textSize - The size of the text to be displayed.\n * @param {AccPoints[]} points - The array of data points in the series.\n * @returns {void}\n */\n AccumulationDataLabel.prototype.getDataLabelPosition = function (point, dataLabel, textSize, points) {\n var radius = this.isCircular() ? (!this.isVariousRadius() ? this.accumulation.pieSeriesModule.labelRadius :\n this.accumulation.pieSeriesModule.getLabelRadius(this.accumulation.visibleSeries[0], point)) :\n this.getLabelDistance(point, dataLabel);\n //let radius: number = this.isCircular() ? this.labelRadius : this.getLabelDistance(point, dataLabel);\n if (this.accumulation.title) {\n var titleSize = measureText(this.accumulation.title, this.accumulation.titleStyle, this.accumulation.themeStyle.datalabelFont);\n this.titleRect = new Rect(this.accumulation.availableSize.width / 2 - titleSize.width / 2, this.accumulation.margin.top, titleSize.width, titleSize.height);\n }\n this.getLabelRegion(point, dataLabel.position, textSize, radius, this.marginValue);\n point.labelAngle = point.midAngle;\n point.labelPosition = dataLabel.position;\n if (this.accumulation.enableSmartLabels) {\n this.getSmartLabel(point, dataLabel, textSize, points);\n }\n };\n /**\n * Method to get datalabel bound.\n */\n AccumulationDataLabel.prototype.getLabelRegion = function (point, position, textSize, labelRadius, margin, endAngle) {\n if (endAngle === void 0) { endAngle = 0; }\n var labelAngle = endAngle || point.midAngle;\n var space = 20;\n var location = degreeToLocation(labelAngle, labelRadius, this.isCircular() ? this.center :\n this.getLabelLocation(point, position));\n location.y = (position === 'Inside') ? (location.y - textSize.height / 2) : location.y;\n location.x = (position === 'Inside') ? (location.x - textSize.width / 2) : location.x;\n point.labelRegion = new Rect(location.x, location.y, textSize.width + (margin * 2), textSize.height + (margin * 2));\n if (position === 'Outside') {\n point.labelRegion.y -= point.labelRegion.height / 2;\n if (labelAngle >= 90 && labelAngle <= 270) {\n point.labelRegion.x -= (point.labelRegion.width + space);\n }\n else {\n point.labelRegion.x += space;\n }\n }\n };\n /**\n * Method to get data label collection.\n *\n * @param {AccPoints} point - The data point for which to calculate the label collection.\n * @param {AccumulationDataLabelSettingsModel} dataLabel - The data label settings for the series.\n * @returns {void}\n * @private\n */\n AccumulationDataLabel.prototype.calculateLabelCollection = function (point, dataLabel) {\n if (point.argsData.template !== null) {\n return null;\n }\n var position = point.labelPosition || dataLabel.position;\n var labelRadius = this.isCircular() ? (!this.isVariousRadius() ? this.accumulation.pieSeriesModule.labelRadius :\n this.accumulation.pieSeriesModule.getLabelRadius(this.accumulation.visibleSeries[0], point)) :\n this.getLabelDistance(point, dataLabel);\n var radius = (!this.isVariousRadius() ?\n (this.accumulation.pieSeriesModule.radius - this.accumulation.pieSeriesModule.innerRadius) :\n this.accumulation.pieSeriesModule.getLabelRadius(this.accumulation.visibleSeries[0], point));\n var location = degreeToLocation(point.midAngle, labelRadius, this.isCircular() ? this.center :\n this.getLabelLocation(point, position));\n var padding = 20;\n var maxWidth = dataLabel.maxWidth;\n if (!maxWidth) {\n if (position === 'Outside') {\n maxWidth = this.isCircular() ? (location.x >= this.center.x) ? (this.areaRect.x + this.areaRect.width - location.x) :\n (location.x - this.areaRect.x) : (location.x >= point.region.x) ?\n (this.areaRect.x + this.areaRect.width - location.x) : (location.x - this.areaRect.x);\n }\n else {\n maxWidth = this.isCircular() ? (radius - padding) : point.region.width;\n }\n }\n if ((point.label.indexOf('
') !== -1)) {\n point.labelCollection = point.label.split('
');\n }\n else if (dataLabel.textWrap === 'Normal' && dataLabel.textOverflow === 'Ellipsis') {\n point.labelCollection[0] = textTrim(maxWidth, point.label, point.argsData.font, this.accumulation.enableRtl, this.accumulation.themeStyle.datalabelFont);\n }\n else if (dataLabel.textWrap === 'Wrap' || dataLabel.textWrap === 'AnyWhere') {\n point.labelCollection = textWrap(point.label, maxWidth, point.argsData.font, this.accumulation.enableRtl, dataLabel.textWrap === 'AnyWhere', dataLabel.textOverflow === 'Clip', this.accumulation.themeStyle.datalabelFont);\n }\n else {\n point.labelCollection[0] = point.label;\n }\n };\n /**\n * To calculate label collection text size.\n *\n * @param {string[]} labelCollection - The collection of label texts.\n * @param {AccumulationDataLabelSettingsModel} dataLabel - The data label settings for the series.\n * @returns {Size} - The size of the label text collection.\n * @private\n */\n AccumulationDataLabel.prototype.getTextSize = function (labelCollection, dataLabel) {\n var height = 0;\n var font = dataLabel.font;\n var width = dataLabel.maxWidth ? dataLabel.maxWidth : 0;\n var textSize;\n for (var i = 0; i < labelCollection.length; i++) {\n textSize = measureText(labelCollection[i], font, this.accumulation.themeStyle.datalabelFont);\n width = Math.max(textSize.width, width);\n height += textSize.height;\n }\n if (dataLabel.textOverflow === 'Clip' && dataLabel.textWrap !== 'Normal' && dataLabel.maxWidth) {\n width = dataLabel.maxWidth;\n }\n return (new Size(width, height));\n };\n /**\n * Method to get datalabel smart position.\n *\n * @param {AccPoints} point - The data point for which to calculate the label smart position.\n * @param {AccumulationDataLabelSettingsModel} dataLabel - The data label settings for the series.\n * @param {Size} textSize - The size of the text.\n * @param {AccPoints[]} points - The collection of data points.\n * @returns {void}\n */\n AccumulationDataLabel.prototype.getSmartLabel = function (point, dataLabel, textSize, points) {\n var circular = this.isCircular();\n var labelRadius = circular ? this.radius : this.getLabelDistance(point, dataLabel);\n var connectorLength = circular ? (dataLabel.connectorStyle.length || '4%') :\n '0px';\n labelRadius += stringToNumber(connectorLength, labelRadius);\n var previousPoint = this.findPreviousPoint(points, point.index, point.labelPosition);\n if (dataLabel.position === 'Inside') {\n // `4` is padding adding to height and width of label region.\n point.labelRegion.height -= 4;\n point.labelRegion.width -= 4;\n if (previousPoint && previousPoint.labelRegion && !dataLabel.enableRotation &&\n (isOverlap(point.labelRegion, previousPoint.labelRegion)\n || this.isOverlapping(point, points)) || !circular && !containsRect(point.region, point.labelRegion)) {\n point.labelPosition = 'Outside';\n if (!circular) {\n labelRadius = this.getLabelDistance(point, dataLabel);\n }\n this.calculateLabelCollection(point, dataLabel);\n textSize = this.getTextSize(point.labelCollection, dataLabel);\n textSize.height += 4; // 4 for calculation with padding for smart label shape\n textSize.width += 4;\n this.getLabelRegion(point, point.labelPosition, textSize, labelRadius, this.marginValue);\n previousPoint = this.findPreviousPoint(points, point.index, point.labelPosition);\n if (previousPoint && (isOverlap(point.labelRegion, previousPoint.labelRegion) ||\n this.isConnectorLineOverlapping(point, previousPoint))) {\n this.setOuterSmartLabel(previousPoint, point, dataLabel.border.width, labelRadius, textSize, this.marginValue);\n }\n }\n }\n else {\n if (previousPoint && previousPoint.labelRegion && (isOverlap(point.labelRegion, previousPoint.labelRegion)\n || this.isOverlapping(point, points) || this.isConnectorLineOverlapping(point, previousPoint))) {\n this.setOuterSmartLabel(previousPoint, point, dataLabel.border.width, labelRadius, textSize, this.marginValue);\n }\n }\n if (this.isOverlapping(point, points) && (this.accumulation.type === 'Pyramid' || this.accumulation.type === 'Funnel')) {\n var position = 'OutsideLeft';\n var space = 20;\n var labelAngle = point.midAngle || 0;\n var labelRadius_1 = circular ? this.radius : this.getLabelDistance(point, dataLabel);\n var location_1 = degreeToLocation(labelAngle, -labelRadius_1, this.isCircular() ? this.center :\n this.getLabelLocation(point, position));\n point.labelRegion = new Rect(location_1.x, location_1.y, textSize.width + (this.marginValue * 2), textSize.height + (this.marginValue * 2));\n point.labelRegion.y -= point.labelRegion.height / 2;\n point.labelRegion.x = point.labelRegion.x - space - point.labelRegion.width;\n if (previousPoint && previousPoint.labelRegion && (isOverlap(point.labelRegion, previousPoint.labelRegion)\n || this.isOverlapping(point, points) || this.isConnectorLineOverlapping(point, previousPoint))) {\n this.setOuterSmartLabel(previousPoint, point, dataLabel.border.width, labelRadius_1, textSize, this.marginValue);\n }\n }\n };\n /**\n * To find trimmed datalabel tooltip needed.\n *\n * @param {Event} e - The move event.\n * @param {number} x - The x-coordinate.\n * @param {number} y - The y-coordinate.\n * @param {boolean} isTouch - Indicates if the interaction is touch-based.\n * @returns {void}\n * @private\n */\n AccumulationDataLabel.prototype.move = function (e, x, y, isTouch) {\n var _this = this;\n if (e.target.textContent.indexOf('...') > -1) {\n var targetId = e.target.id.split(this.id);\n if (targetId.length === 2) {\n var seriesIndex = parseInt(targetId[1].split('_text_')[0], 10);\n var pointIndex = parseInt(targetId[1].split('_text_')[1], 10);\n if (!isNaN(seriesIndex) && !isNaN(pointIndex)) {\n if (isTouch) {\n removeElement(this.accumulation.element.id + '_EJ2_Datalabel_Tooltip');\n }\n var point = getSeriesFromIndex(seriesIndex, (this.accumulation).visibleSeries).points[pointIndex];\n showTooltip(point.text || point.y.toString(), x, y, this.areaRect.width, this.accumulation.element.id + '_EJ2_Datalabel_Tooltip', getElement(this.accumulation.element.id + '_Secondary_Element'), null, null, this.accumulation.initialClipRect);\n }\n }\n }\n else {\n removeElement(this.accumulation.element.id + '_EJ2_Datalabel_Tooltip');\n }\n if (isTouch) {\n clearTimeout(this.clearTooltip);\n this.clearTooltip = +setTimeout(function () { removeElement(_this.accumulation.element.id + '_EJ2_Datalabel_Tooltip'); }, 1000);\n }\n };\n /**\n * To find previous valid label point.\n *\n * @param {AccPoints[]} points - The array of accumulation points.\n * @param {number} index - The index of the current point.\n * @param {AccumulationLabelPosition} position - The position of the label.\n * @returns {AccPoints} - Find the previous value of accumulation point.\n */\n AccumulationDataLabel.prototype.findPreviousPoint = function (points, index, position) {\n var point = points[0];\n for (var i = index - 1; i >= 0; i--) {\n point = points[i];\n if (point.visible && point.labelVisible && point.labelRegion && point.labelPosition === position) {\n return point;\n }\n }\n return null;\n };\n /**\n * To find current point datalabel is overlapping with other points.\n *\n * @param {AccPoints} currentPoint - The current point.\n * @param {AccPoints[]} points - The array of accumulation points.\n * @returns {boolean} - It returns boolean value of overlapping.\n */\n AccumulationDataLabel.prototype.isOverlapping = function (currentPoint, points) {\n for (var i = currentPoint.index - 1; i >= 0; i--) {\n if (points[i].visible && points[i].labelVisible &&\n points[i].labelRegion && currentPoint.labelRegion &&\n currentPoint.labelVisible && isOverlap(currentPoint.labelRegion, points[i].labelRegion)) {\n return true;\n }\n }\n return false;\n };\n /**\n * To get text trimmed while exceeds the accumulation chart area.\n *\n * @param {AccPoints} point - The accumulation point.\n * @param {Rect} rect - The area of the accumulation chart.\n * @param {FontModel} font - The font settings.\n * @param {string} position - The position of the data label.\n * @param {AccumulationDataLabelSettingsModel} dataLabel - The data label settings.\n * @returns {void}\n */\n AccumulationDataLabel.prototype.textTrimming = function (point, rect, font, position, dataLabel) {\n if (isOverlap(point.labelRegion, rect)) {\n var size = point.labelRegion.width;\n if (position === 'Right') {\n size = rect.x - point.labelRegion.x;\n }\n else if (position === 'Left') {\n size = point.labelRegion.x - (rect.x + rect.width);\n if (size < 0) {\n size += point.labelRegion.width;\n point.labelRegion.x = rect.x + rect.width;\n }\n }\n else if (position === 'InsideRight') {\n size = (rect.x + rect.width) - point.labelRegion.x;\n }\n else if (position === 'InsideLeft') {\n size = (point.labelRegion.x + point.labelRegion.width) - rect.x;\n if (size < point.labelRegion.width) {\n point.labelRegion.x = rect.x;\n }\n }\n else if (this.accumulation.enableSmartLabels) {\n this.setPointVisibileFalse(point);\n }\n if (point.labelVisible && point.labelRegion) {\n if ((point.label.indexOf('
') !== -1)) {\n point.labelCollection = point.label.split('
');\n }\n else if (size < point.labelRegion.width) {\n if (dataLabel.textWrap === 'Normal' && dataLabel.textOverflow === 'Ellipsis') {\n point.labelCollection[0] = textTrim(size - (this.marginValue * 2), point.label, font, this.accumulation.enableRtl, this.accumulation.themeStyle.datalabelFont);\n }\n else if (dataLabel.textWrap === 'Wrap' || dataLabel.textWrap === 'AnyWhere') {\n point.labelCollection = textWrap(point.label, size - (this.marginValue * 2), font, this.accumulation.enableRtl, dataLabel.textWrap === 'AnyWhere', dataLabel.textOverflow === 'Clip', this.accumulation.themeStyle.datalabelFont);\n }\n point.labelRegion.width = size;\n }\n for (var i = 0; i < point.labelCollection.length; i++) {\n if (point.labelCollection[i].length === 3 && point.labelCollection[i].indexOf('...') > -1) {\n this.setPointVisibileFalse(point);\n break;\n }\n }\n }\n }\n };\n /**\n * To set point label visible and region to disable.\n *\n * @param {AccPoints} point - The accumulation point.\n * @returns {void}\n */\n AccumulationDataLabel.prototype.setPointVisibileFalse = function (point) {\n point.labelVisible = false;\n point.labelRegion = null;\n };\n /**\n * To set point label visible to enable.\n *\n * @param {AccPoints} point - The accumulation point.\n * @returns {void}\n */\n AccumulationDataLabel.prototype.setPointVisibleTrue = function (point) {\n point.labelVisible = true;\n };\n /**\n * To set datalabel angle position for outside labels.\n *\n * @param {AccPoints} previousPoint - The previous accumulation point.\n * @param {AccPoints} point - The accumulation point.\n * @param {number} border - The border size.\n * @param {number} labelRadius - The radius for the labels.\n * @param {Size} textsize - The size of the labels.\n * @param {number} margin - The margin value.\n * @returns {void}\n */\n AccumulationDataLabel.prototype.setOuterSmartLabel = function (previousPoint, point, border, labelRadius, textsize, margin) {\n if (!this.isCircular()) {\n this.setSmartLabelForSegments(point, previousPoint);\n }\n else {\n var labelAngle = this.getOverlappedAngle(previousPoint.labelRegion, point.labelRegion, point.midAngle, border * 2);\n this.getLabelRegion(point, 'Outside', textsize, labelRadius, margin, labelAngle);\n if (labelAngle > point.endAngle) {\n labelAngle = point.midAngle;\n //this.setPointVisibileFalse(point);\n }\n point.labelAngle = labelAngle;\n while (point.labelVisible && (isOverlap(previousPoint.labelRegion, point.labelRegion) || labelAngle <= previousPoint.labelAngle\n || labelAngle <= point.midAngle * 0.9 || this.isConnectorLineOverlapping(point, previousPoint))) {\n if (labelAngle > point.endAngle) {\n //this.setPointVisibileFalse(point);\n break;\n }\n point.labelAngle = labelAngle;\n this.getLabelRegion(point, 'Outside', textsize, labelRadius, margin, labelAngle);\n labelAngle += 0.1;\n }\n }\n };\n /**\n * Sets smart label positions for funnel and pyramid series.\n *\n * @param {AccPoints} point - The accumulation point.\n * @param {AccPoints} prevPoint - The previous point.\n * @returns {void} setSmartLabelForSegments.\n */\n AccumulationDataLabel.prototype.setSmartLabelForSegments = function (point, prevPoint) {\n var textRegion = point.labelRegion;\n //let overlapWidth: number = prevPoint.labelRegion.x + prevPoint.labelRegion.width - textRegion.x;\n var overlapHeight = this.accumulation.type === 'Funnel' ?\n prevPoint.labelRegion.y - (textRegion.y + textRegion.height) :\n point.labelRegion.y - (prevPoint.labelRegion.y + prevPoint.labelRegion.height);\n if (overlapHeight < 0) {\n point.labelRegion.y += this.accumulation.type === 'Funnel' ? overlapHeight : -overlapHeight;\n }\n };\n /**\n * To find connector line overlapping.\n *\n * @param {AccPoints} point - The accumulation point.\n * @param {AccPoints} previous - The previous point.\n * @returns {boolean} - To find connector line overlapping or not.\n */\n AccumulationDataLabel.prototype.isConnectorLineOverlapping = function (point, previous) {\n var position;\n if (!this.isCircular() && point.labelRegion.x < point.region.x) {\n position = 'outsideLeft';\n }\n var start = this.getLabelLocation(point, position);\n var end = new ChartLocation(0, 0);\n this.getEdgeOfLabel(point.labelRegion, point.labelAngle, end, 0, point);\n var previousstart = this.getLabelLocation(previous);\n var previousend = new ChartLocation(0, 0);\n this.getEdgeOfLabel(previous.labelRegion, previous.labelAngle, previousend, 0, point);\n return this.isLineRectangleIntersect(start, end, point.labelRegion) ||\n this.isLineRectangleIntersect(start, end, previous.labelRegion) ||\n this.isLineRectangleIntersect(previousstart, previousend, point.labelRegion);\n };\n /**\n * To find two rectangle intersect.\n *\n * @param {ChartLocation} line1 - The first line.\n * @param {ChartLocation} line2 - The second line.\n * @param {Rect} rect - The rectangle to check against.\n * @returns {boolean} - To find line rectangle intersect value.\n */\n AccumulationDataLabel.prototype.isLineRectangleIntersect = function (line1, line2, rect) {\n var rectPoints = [\n new ChartLocation(Math.round(rect.x), Math.round(rect.y)),\n new ChartLocation(Math.round((rect.x + rect.width)), Math.round(rect.y)),\n new ChartLocation(Math.round((rect.x + rect.width)), Math.round((rect.y + rect.height))),\n new ChartLocation(Math.round(rect.x), Math.round((rect.y + rect.height)))\n ];\n line1.x = Math.round(line1.x);\n line1.y = Math.round(line1.y);\n line2.x = Math.round(line2.x);\n line2.y = Math.round(line2.y);\n for (var i = 0; i < rectPoints.length; i++) {\n if (this.isLinesIntersect(line1, line2, rectPoints[i], rectPoints[(i + 1) % rectPoints.length])) {\n return true;\n }\n }\n return false;\n };\n /**\n * To find two line intersect.\n *\n * @param {ChartLocation} point1 - The first point of the first line.\n * @param {ChartLocation} point2 - The second point of the first line.\n * @param {ChartLocation} point11 - The first point of the second line.\n * @param {ChartLocation} point12 - The second point of the second line.\n * @returns {boolean} - To find line intersect or not.\n */\n AccumulationDataLabel.prototype.isLinesIntersect = function (point1, point2, point11, point12) {\n var a1 = point2.y - point1.y;\n var b1 = point1.x - point2.x;\n var c1 = a1 * point1.x + b1 * point1.y;\n var a2 = point12.y - point11.y;\n var b2 = point11.x - point12.x;\n var c2 = a2 * point11.x + b2 * point11.y;\n var delta = a1 * b2 - a2 * b1;\n if (delta !== 0) {\n var x = (b2 * c1 - b1 * c2) / delta;\n var y = (a1 * c2 - a2 * c1) / delta;\n var lies = Math.min(point1.x, point2.x) <= x && x <= Math.max(point1.x, point2.x);\n lies = lies && Math.min(point1.y, point2.y) <= y && y <= Math.max(point1.y, point2.y);\n lies = lies && Math.min(point11.x, point12.x) <= x && x <= Math.max(point11.x, point12.x);\n lies = lies && Math.min(point11.y, point12.y) <= y && y <= Math.max(point11.y, point12.y);\n return lies;\n }\n return false;\n };\n /**\n * To get two rectangle overlapping angles.\n *\n * @param {Rect} first - The first rectangle.\n * @param {Rect} second - The second rectangle.\n * @param {number} angle - The angle.\n * @param {number} padding - The padding.\n * @returns {number} - Get overlapped angle.\n */\n AccumulationDataLabel.prototype.getOverlappedAngle = function (first, second, angle, padding) {\n var x = first.x;\n if (angle >= 90 && angle <= 270) {\n second.y = first.y - (padding + second.height / 2);\n x = first.x + first.width;\n }\n else {\n second.y = first.y + first.height + padding;\n }\n return getAngle(this.center, new ChartLocation(x, second.y));\n };\n /**\n * To get connector line path.\n *\n * @param {Rect} label - The label.\n * @param {AccPoints} point - The accumulation point.\n * @param {AccumulationDataLabelSettingsModel} dataLabel - The data label settings.\n * @param {number} end - The end.\n * @returns {string} - Get connector line path.\n */\n AccumulationDataLabel.prototype.getConnectorPath = function (label, point, dataLabel, end) {\n if (end === void 0) { end = 0; }\n var connector = dataLabel.connectorStyle;\n var labelRadius = this.isCircular() ? (!this.isVariousRadius() ? this.labelRadius :\n this.accumulation.pieSeriesModule.getLabelRadius(this.accumulation.visibleSeries[0], point)) :\n this.getLabelDistance(point, dataLabel);\n //let labelRadius: number = this.isCircular() ? this.labelRadius : this.getLabelDistance(point, dataLabel);\n var start = this.getConnectorStartPoint(point, connector);\n var labelAngle = this.accumulation.enableSmartLabels ? point.midAngle : end || point.midAngle;\n var middle = new ChartLocation(0, 0);\n var endPoint = this.getEdgeOfLabel(label, labelAngle, middle, connector.width, point);\n if (connector.type === 'Curve') {\n if (this.isCircular()) {\n var r = labelRadius - (this.isVariousRadius() ? stringToNumber(point.sliceRadius, this.accumulation.pieSeriesModule.size / 2) :\n this.radius);\n //let r: number = labelRadius - this.radius;\n if (point.isLabelUpdated) {\n middle = this.getPerpendicularDistance(start, point);\n }\n else {\n middle = degreeToLocation(labelAngle, labelRadius - (r / 2), this.center);\n if (point.labelPosition === 'Outside' && dataLabel.position === 'Inside') {\n middle = degreeToLocation(labelAngle, labelRadius - r * 1.25, this.center);\n }\n }\n return 'M ' + start.x + ' ' + start.y + ' Q ' + middle.x + ' ' + middle.y + ' ' + endPoint.x + ' ' + endPoint.y;\n }\n else {\n return this.getPolyLinePath(start, endPoint);\n }\n }\n else {\n return 'M ' + start.x + ' ' + start.y + ' L ' + middle.x + ' ' + middle.y + ' L ' + endPoint.x + ' ' + endPoint.y;\n }\n };\n /**\n * Finds the curved path for funnel/pyramid data label connectors.\n *\n * @param {ChartLocation} start - The start location.\n * @param {ChartLocation} end - The end location.\n * @returns {string} - Get poly line path.\n */\n AccumulationDataLabel.prototype.getPolyLinePath = function (start, end) {\n var controlPoints = [start, end];\n if (start.y === end.y) {\n return 'M ' + start.x + ' ' + start.y + ' L ' + end.x + ' ' + end.y;\n }\n var path = 'M';\n for (var i = 0; i <= 16; i++) {\n var t = i / 16;\n var points = this.getBezierPoint(t, controlPoints, 0, 2);\n path += points.x + ',' + points.y;\n if (i !== 16) {\n path += ' L';\n }\n }\n return path;\n };\n /**\n * Finds the bezier point for funnel/pyramid data label connectors.\n *\n * @param {number} t - The parameter value.\n * @param {ChartLocation[]} controlPoints - The control points for the bezier point.\n * @param {number} index - The index of the point.\n * @param {number} count - The total count of points.\n * @returns {ChartLocation} - Get bazier point.\n */\n AccumulationDataLabel.prototype.getBezierPoint = function (t, controlPoints, index, count) {\n if (count === 1) {\n return controlPoints[index];\n }\n var p0 = this.getBezierPoint(t, controlPoints, index, count - 1);\n var p1 = this.getBezierPoint(t, controlPoints, index + 1, count - 1);\n var x = (p0.x) ? p0.x : p0.x;\n var y = (p0.y) ? p0.y : p0.y;\n var x1 = (p1.x) ? p1.x : p1.x;\n var y1 = (p1.y) ? p1.y : p1.y;\n var x2 = (1 - t) * x + t * x1;\n var y2 = (1 - t) * y + t * y1;\n if (p0.x) {\n return { x: x2, y: y2 };\n }\n else {\n return { x: x2, y: y2 };\n }\n };\n /**\n * To get label edges based on the center and label rect position.\n *\n * @param {Rect} labelshape - The label shape.\n * @param {number} angle - The angle of the label.\n * @param {ChartLocation} middle - The middle point of the label.\n * @param {number} border - The border value.\n * @param {AccPoints} point - The accumulation point.\n * @returns {ChartLocation} - Get label edge value.\n */\n AccumulationDataLabel.prototype.getEdgeOfLabel = function (labelshape, angle, middle, border, point) {\n if (border === void 0) { border = 1; }\n var edge = new ChartLocation(labelshape.x, labelshape.y);\n var space = 10;\n if (angle >= 90 && angle <= 270) {\n edge.x += labelshape.width + border / 2 + space;\n edge.y += labelshape.height / 2;\n middle.x = edge.x + 10;\n middle.y = edge.y;\n }\n else if (point && point.region && point.region.x > point.labelRegion.x) {\n edge.x += border * 2 + labelshape.width + space;\n edge.y += labelshape.height / 2;\n middle.x = edge.x + 10;\n middle.y = edge.y;\n }\n else {\n edge.x -= space - border / 2;\n edge.y += labelshape.height / 2;\n middle.x = edge.x - 10;\n middle.y = edge.y;\n }\n return edge;\n };\n /**\n * Finds the distance between the label position and the edge/center of the funnel/pyramid.\n *\n * @param {AccPoints} point - The accumulation point.\n * @param {AccumulationDataLabelSettingsModel} dataLabel - The data label settings.\n * @returns {number} - Get label distance.\n */\n AccumulationDataLabel.prototype.getLabelDistance = function (point, dataLabel) {\n if (point.labelPosition && dataLabel.position !== point.labelPosition || (dataLabel.connectorStyle.length && dataLabel.position === 'Outside')) {\n var length_1 = stringToNumber(dataLabel.connectorStyle.length || '70px', this.accumulation.initialClipRect.width);\n if (length_1 < this.accumulation.initialClipRect.width) {\n return length_1;\n }\n }\n var position = point.labelPosition || dataLabel.position;\n var series = this.accumulation.visibleSeries[0];\n var extraSpace = (this.accumulation.initialClipRect.width - series.triangleSize.width) / 2;\n var labelLocation;\n switch (position) {\n case 'Inside':\n return 0;\n case 'Outside':\n labelLocation = point.symbolLocation.x + point.labelOffset.x;\n return this.accumulation.initialClipRect.width - labelLocation - extraSpace;\n }\n };\n /**\n * Finds the label position / beginning of the connector(ouside funnel labels).\n *\n * @param {AccPoints} point - The accumulation point.\n * @param {AccumulationLabelPosition | string} position - The data label position.\n * @returns {ChartLocation} - Get label location.\n */\n AccumulationDataLabel.prototype.getLabelLocation = function (point, position) {\n if (position === void 0) { position = 'Outside'; }\n if (this.accumulation.type !== 'Pie') {\n position = position === 'OutsideLeft' ? 'OutsideLeft' : point.labelPosition || position;\n var location_2 = {\n x: point.symbolLocation.x,\n y: point.symbolLocation.y - point.labelOffset.y\n };\n switch (position) {\n case 'Inside':\n location_2.y = point.region.y + point.region.height / 2;\n break;\n case 'Outside':\n location_2.x += point.labelOffset.x;\n break;\n case 'OutsideLeft':\n location_2.x -= point.labelOffset.x;\n }\n return location_2;\n }\n else {\n //return degreeToLocation(point.midAngle, this.radius, this.center);\n return degreeToLocation(point.midAngle, (this.isVariousRadius() ? stringToNumber(point.sliceRadius, this.accumulation.pieSeriesModule.seriesRadius) :\n this.radius), this.center);\n }\n };\n /**\n * Finds the beginning of connector line.\n *\n * @param {AccPoints} point - The accumulation point.\n * @param {ConnectorModel} connector - The connector line.\n * @returns {ChartLocation} - Staring point of connector line.\n */\n AccumulationDataLabel.prototype.getConnectorStartPoint = function (point, connector) {\n // return this.isCircular() ? degreeToLocation(point.midAngle, this.radius - connector.width, this.center) :\n // this.getLabelLocation(point);\n var position;\n if (!this.isCircular() && point.region.x > point.labelRegion.x) {\n position = 'OutsideLeft';\n }\n return this.isCircular() ? degreeToLocation(point.midAngle, (this.isVariousRadius() ? stringToNumber(point.sliceRadius, this.accumulation.pieSeriesModule.seriesRadius) :\n this.radius) - connector.width, this.center) : this.getLabelLocation(point, position);\n };\n /**\n * To find area rect based on margin, available size.\n *\n * @private\n * @returns {void}\n */\n AccumulationDataLabel.prototype.findAreaRect = function () {\n this.areaRect = new Rect(0, 0, this.accumulation.availableSize.width, this.accumulation.availableSize.height);\n var margin = this.accumulation.margin;\n subtractThickness(this.areaRect, new Thickness(margin.left, margin.right, margin.top, margin.bottom));\n };\n /**\n * To render the data labels from series points.\n *\n * @param {AccPoints} point - The point for which to render the data label.\n * @param {AccumulationDataLabelSettingsModel} dataLabel - The settings for the data labels.\n * @param {Element} parent - The parent element to which the data labels are appended.\n * @param {AccPoints[]} points - The collection of points in the series.\n * @param {number} series - The index of the series.\n * @param {HTMLElement} templateElement - The template element for the data label.\n * @param {boolean} redraw - Indicates whether the data labels are being redrawn.\n * @returns {void}\n * @private\n */\n AccumulationDataLabel.prototype.renderDataLabel = function (point, dataLabel, parent, points, series, templateElement, redraw) {\n var id = this.accumulation.element.id + '_datalabel_Series_' + series + '_';\n var datalabelGroup = this.accumulation.renderer.createGroup({ id: id + 'g_' + point.index });\n var border = { width: dataLabel.border.width, color: dataLabel.border.color };\n var argsFont = (extend({}, getValue('properties', dataLabel.font), null, true));\n point.label = this.getDatalabelText(dataLabel.format, this.accumulation, point.originalText || point.y.toString());\n var argsData = {\n cancel: false, name: textRender, series: this.accumulation.visibleSeries[0], point: point,\n text: point.label, border: border, color: dataLabel.fill, template: dataLabel.template, font: argsFont\n };\n this.accumulation.trigger(textRender, argsData);\n point.argsData = argsData;\n var isTemplate = argsData.template !== null;\n point.labelVisible = !argsData.cancel;\n point.text = point.label = argsData.text;\n point.labelCollection = [];\n this.marginValue = argsData.border.width ? (5 + argsData.border.width) : 1;\n var childElement = createElement('div', {\n id: this.accumulation.element.id + '_Series_' + 0 + '_DataLabel_' + point.index,\n styles: 'position: absolute;background-color:' + argsData.color + ';' +\n getFontStyle(dataLabel.font, this.accumulation.themeStyle.datalabelFont) + ';border:' + argsData.border.width + 'px solid ' + argsData.border.color + ';'\n });\n this.calculateLabelSize(isTemplate, childElement, point, points, argsData, datalabelGroup, id, dataLabel, redraw);\n };\n AccumulationDataLabel.prototype.getDatalabelText = function (labelFormat, chart, labelText) {\n if (Number(labelText)) {\n var customLabelFormat = labelFormat.match('{value}') !== null;\n var format = chart.intl.getNumberFormat({\n format: customLabelFormat ? '' : labelFormat,\n useGrouping: chart.useGroupingSeparator\n });\n labelText = customLabelFormat ? labelFormat.replace('{value}', format(parseFloat(labelText))) : format(parseFloat(labelText));\n }\n return labelText;\n };\n /**\n * To calculate label size.\n *\n * @param {boolean} isTemplate - Indicates whether the label is a template.\n * @param {HTMLElement} childElement - The child element of the label.\n * @param {AccPoints} point - The point associated with the label.\n * @param {AccPoints[]} points - The collection of points.\n * @param {IAccTextRenderEventArgs} argsData - The arguments data for text rendering.\n * @param {Element} datalabelGroup - The group element for data labels.\n * @param {string} id - The id of the label.\n * @param {AccumulationDataLabelSettingsModel} dataLabel - The settings for the data labels.\n * @param {boolean} redraw - Indicates whether the labels are being redrawn.\n * @param {ClientRect} clientRect - The client rectangle.\n * @param {boolean} isReactCallback - Indicates whether a React callback is being used.\n * @returns {void}\n * @private\n */\n AccumulationDataLabel.prototype.calculateLabelSize = function (isTemplate, childElement, point, points, argsData, datalabelGroup, id, dataLabel, redraw, clientRect, isReactCallback) {\n this.calculateLabelCollection(point, dataLabel);\n var textSize = isTemplate ? (isReactCallback ? { width: clientRect.width, height: clientRect.height } :\n this.getTemplateSize(childElement, point, argsData, redraw, isTemplate, points, datalabelGroup, id, dataLabel)) : this.getTextSize(point.labelCollection, dataLabel);\n textSize.height += 4; // 4 for calculation with padding for smart label shape\n textSize.width += 4;\n point.textSize = textSize;\n point.templateElement = childElement;\n this.getDataLabelPosition(point, dataLabel, textSize, points);\n if (point.labelRegion) {\n this.correctLabelRegion(point.labelRegion, point.textSize);\n }\n };\n /**\n * To draw a data label.\n *\n * @param {AccumulationSeries} series - The series associated with the data label.\n * @param {AccumulationDataLabelSettingsModel} dataLabel - The settings for the data labels.\n * @param {HTMLElement} parent - The parent element of the data labels.\n * @param {HTMLElement} templateElement - The template element for the data label.\n * @param {boolean} redraw - Indicates whether the data labels are being redrawn.\n * @returns {void}\n * @private\n */\n AccumulationDataLabel.prototype.drawDataLabels = function (series, dataLabel, parent, templateElement, redraw) {\n var angle;\n var degree;\n var modifiedPoints = series.leftSidePoints.concat(series.rightSidePoints);\n modifiedPoints.sort(function (a, b) { return a.index - b.index; });\n if (series.type === 'Pie' && this.accumulation.enableSmartLabels) {\n this.extendedLabelsCalculation();\n }\n for (var _i = 0, modifiedPoints_1 = modifiedPoints; _i < modifiedPoints_1.length; _i++) {\n var point = modifiedPoints_1[_i];\n if (!isNullOrUndefined(point.argsData) && !isNullOrUndefined(point.y)) {\n this.finalizeDatalabels(point, modifiedPoints, dataLabel);\n var id = this.accumulation.element.id + '_datalabel_Series_' + 0 + '_';\n var datalabelGroup = this.accumulation.renderer.createGroup({ id: id + 'g_' + point.index });\n datalabelGroup.setAttribute('aria-hidden', 'true');\n var dataLabelElement = void 0;\n var location_3 = void 0;\n var element = void 0;\n if (point.visible && point.labelVisible) {\n angle = degree = dataLabel.angle;\n if (point.argsData.template) {\n this.setTemplateStyle(point.templateElement, point, templateElement, dataLabel.font.color, point.color, redraw);\n }\n else {\n location_3 = new ChartLocation(point.labelRegion.x + this.marginValue, point.labelRegion.y\n + (point.textSize.height * 3 / (point.labelCollection.length * 4)) + this.marginValue);\n element = getElement(id + 'shape_' + point.index);\n var startLocation = element ? new ChartLocation(+element.getAttribute('x'), +element.getAttribute('y')) : null;\n var textWidth = point.textSize.width;\n if (dataLabel.enableRotation) {\n if (angle === 0) {\n if (point.labelPosition === 'Outside') {\n degree = 0;\n }\n else if (point.midAngle >= 90 && point.midAngle <= 260) {\n degree = point.midAngle + 180;\n }\n else {\n degree = point.midAngle;\n }\n }\n else {\n degree = (angle > 360) ? angle - 360 : (angle < -360) ? angle + 360 : angle;\n }\n }\n else {\n degree = 0;\n }\n var rotate = 'rotate(' + degree + ',' + (location_3.x + (textWidth / 2)) + ',' + (location_3.y) + ')';\n point.transform = rotate;\n dataLabelElement = this.accumulation.renderer.drawRectangle(new RectOption(id + 'shape_' + point.index, point.argsData.color, point.argsData.border, 1, point.labelRegion, dataLabel.rx, dataLabel.ry, rotate, series.dataLabel.border.dashArray));\n appendChildElement(false, datalabelGroup, dataLabelElement, redraw, true, 'x', 'y', startLocation, null, false, false, null, this.accumulation.duration);\n textElement(this.accumulation.renderer, new TextOption(id + 'text_' + point.index, location_3.x, location_3.y, this.accumulation.enableRtl ? 'end' : 'start', point.labelCollection, rotate, 'auto', degree), point.argsData.font, point.argsData.font.color || this.getSaturatedColor(point, point.argsData.color), datalabelGroup, false, redraw, true, false, this.accumulation.duration, null, null, null, null, true, this.accumulation.themeStyle.datalabelFont);\n element = null;\n }\n if (this.accumulation.accumulationLegendModule && this.accumulation.legendSettings.visible && !this.accumulation.redraw && (dataLabel.position === 'Outside'\n || this.accumulation.enableSmartLabels)) {\n this.accumulation.visibleSeries[0].findMaxBounds(this.accumulation.visibleSeries[0].labelBound, point.labelRegion);\n }\n if (point.labelPosition === 'Outside') {\n var element_1 = getElement(id + 'connector_' + point.index);\n var previousDirection = element_1 ? element_1.getAttribute('d') : '';\n var pathElement = this.accumulation.renderer.drawPath(new PathOption(id + 'connector_' + point.index, 'transparent', dataLabel.connectorStyle.width, dataLabel.connectorStyle.color || point.color, 1, dataLabel.connectorStyle.dashArray, this.getConnectorPath(extend({}, point.labelRegion, null, true), point, dataLabel, point.labelAngle)));\n appendChildElement(false, datalabelGroup, pathElement, redraw, true, null, null, null, previousDirection, false, false, null, this.accumulation.duration);\n }\n appendChildElement(false, parent, datalabelGroup, redraw);\n }\n else if (getElement(datalabelGroup.id)) {\n (getElement(datalabelGroup.id)).parentNode.removeChild(getElement(datalabelGroup.id));\n }\n }\n }\n if (this.accumulation.type === 'Pie' && dataLabel.textWrap === 'Normal' && dataLabel.textOverflow === 'Clip') {\n this.dataLabelClipPath(dataLabel, parent);\n }\n };\n /**\n * To calculate data label clip path.\n *\n * @param {AccumulationDataLabelSettingsModel} dataLabel - The settings for the data labels.\n * @param {HTMLElement} parent - The parent element of the data labels.\n * @returns {void}\n */\n AccumulationDataLabel.prototype.dataLabelClipPath = function (dataLabel, parent) {\n var id = this.accumulation.element.id + '_datalabel_Series_' + 0 + '_';\n var clippath = this.accumulation.renderer.createClipPath({ id: id + 'clipPath' });\n var clipRect;\n var radius = this.accumulation.pieSeriesModule.pieBaseRadius;\n if (dataLabel.position === 'Inside') {\n clipRect = this.accumulation.renderer.drawCircle(new CircleOption(id + 'clipPath_rect', 'transparent', { width: 0 }, 0, this.center.x, this.center.y, radius));\n }\n else if (dataLabel.maxWidth) {\n var x = this.center.x - radius - stringToNumber((dataLabel.connectorStyle.length || '4%'), radius) - dataLabel.maxWidth;\n var y = this.center.y - radius - stringToNumber((dataLabel.connectorStyle.length || '4%'), radius) - dataLabel.maxWidth;\n var height = (radius + stringToNumber((dataLabel.connectorStyle.length || '4%'), radius) + dataLabel.maxWidth) * 2;\n var width = height;\n if (this.accumulation.legendSettings.visible) {\n var legendModule = this.accumulation.accumulationLegendModule;\n if (legendModule.position === 'Left') {\n width = (legendModule.legendBounds.x + legendModule.legendBounds.width - x) > 0 ?\n (width - (legendModule.legendBounds.width - x)) : width;\n x = (legendModule.legendBounds.x + legendModule.legendBounds.width) < x ? x :\n (legendModule.legendBounds.x + legendModule.legendBounds.width);\n }\n else if (legendModule.position === 'Right') {\n width = (x + width - legendModule.legendBounds.x) > 0 ? (width - (x + width - legendModule.legendBounds.x)) : width;\n }\n }\n clipRect = this.accumulation.renderer.drawRectangle(new RectOption(id + 'clipPath_rect', 'transparent', { width: 0 }, 0, new Rect(x, y, height, width), 0, 0));\n }\n if (dataLabel.position === 'Inside' || dataLabel.maxWidth) {\n clippath.appendChild(clipRect);\n appendChildElement(false, this.accumulation.svgObject, clippath);\n parent.style.cssText = 'clip-path:url(#' + clippath.id + ')';\n }\n };\n /**\n * In this method datalabels region checked with legebdBounds and areaBounds.\n * Trimming of datalabel and point's visibility again changed here.\n *\n * @param {AccPoints} point - Current point in which trimming and visibility to be checked.\n * @param {AccPoints[]} points - Finalized points.\n * @param {AccumulationDataLabelSettingsModel} dataLabel - Datalabel model.\n * @returns {void}\n */\n AccumulationDataLabel.prototype.finalizeDatalabels = function (point, points, dataLabel) {\n if (this.isOverlapping(point, points) ||\n (this.titleRect && point.labelRegion && isOverlap(point.labelRegion, this.titleRect))) {\n if (this.isCircular() && point.labelPosition === 'Outside' && this.accumulation.enableSmartLabels) {\n this.setPointVisibileFalse(point);\n }\n }\n if (this.accumulation.accumulationLegendModule && this.accumulation.legendSettings.visible &&\n point.labelVisible && point.labelRegion && (!dataLabel.maxWidth ? dataLabel.textOverflow === 'Clip' ? dataLabel.textWrap !== 'Normal' : true : false)) {\n var rect = this.accumulation.accumulationLegendModule.legendBounds;\n if (this.accumulation.visibleSeries[0].type !== 'Pie' && this.accumulation.legendSettings.position === 'Left'\n && dataLabel.position === 'Outside') {\n point.labelRegion.x = point.labelRegion.x + rect.width;\n }\n var padding = this.accumulation.legendSettings.border.width / 2;\n this.textTrimming(point, new Rect(rect.x - padding, rect.y - padding, rect.width + (2 * padding), rect.height + (2 * padding)), dataLabel.font, this.accumulation.accumulationLegendModule.position, dataLabel);\n }\n if (point.labelVisible && point.labelRegion && (!dataLabel.maxWidth ? dataLabel.textOverflow === 'Clip' ? dataLabel.textWrap !== 'Normal' : true : false)) {\n var position = this.isCircular() ? (point.labelRegion.x >= this.center.x) ? 'InsideRight' : 'InsideLeft' :\n (point.labelRegion.x >= point.region.x) ? 'InsideRight' : 'InsideLeft';\n this.textTrimming(point, this.areaRect, dataLabel.font, position, dataLabel);\n }\n if (point.labelVisible && point.labelRegion && !dataLabel.maxWidth && dataLabel.textOverflow !== 'Clip' && this.accumulation.enableSmartLabels && ((point.labelRegion.y + point.labelRegion.height / 2 >\n this.areaRect.y + this.areaRect.height || point.labelRegion.y < this.areaRect.y) || (point.labelRegion.x < this.areaRect.x ||\n point.labelRegion.x + point.labelRegion.width > this.areaRect.x + this.areaRect.width))) {\n this.setPointVisibileFalse(point);\n }\n };\n /**\n * To find the template element size.\n *\n * @param {HTMLElement} element - To get a template element.\n * @param {AccPoints} point - The accumulation point for the template.\n * @param {IAccTextRenderEventArgs} argsData - The arguments for the accumulation points.\n * @param {boolean} redraw - Indicates whether to redraw the template.\n * @param {boolean} isTemplate - Indicates whether the element is a template.\n * @param {AccPoints[]} points - The accumulation points for the template.\n * @param {Element} datalabelGroup - The group element for the data labels.\n * @param {string} id - The identifier for the template.\n * @param {AccumulationDataLabelSettingsModel} dataLabel - The settings for the data labels.\n * @returns {Size} - The size of the template.\n */\n AccumulationDataLabel.prototype.getTemplateSize = function (element, point, argsData, redraw, isTemplate, points, datalabelGroup, id, dataLabel) {\n element = createTemplate(element, point.index, argsData.template, this.accumulation, point, this.accumulation.visibleSeries[0], this.accumulation.element.id + '_DataLabel', 0, argsData, isTemplate, points, datalabelGroup, id, dataLabel, redraw);\n var clientRect = measureElementRect(element, redraw);\n return { width: clientRect.width, height: clientRect.height };\n };\n /**\n * To set the template element style.\n *\n * @param {HTMLElement} childElement - The child element of the template.\n * @param {AccPoints} point - The point data for the template.\n * @param {Element} parent - The parent element of the template.\n * @param {string} labelColor - The color of the label in the template.\n * @param {string} fill - The fill color of the template.\n * @param {boolean} redraw - Indicates whether to redraw the template.\n * @returns {void}\n */\n AccumulationDataLabel.prototype.setTemplateStyle = function (childElement, point, parent, labelColor, fill, redraw) {\n childElement.style.left = (point.labelRegion.x) + 'px';\n childElement.style.top = (point.labelRegion.y) + 'px';\n childElement.style.color = labelColor || this.getSaturatedColor(point, point.labelPosition === 'Inside' ? fill : this.getLabelBackground(point));\n if (this.accumulation.isBlazor) {\n var position = this.isCircular() ? (point.labelRegion.x >= this.center.x) ? 'InsideRight' : 'InsideLeft' :\n (point.labelRegion.x >= point.region.x) ? 'InsideRight' : 'InsideLeft';\n if (position === 'InsideRight') {\n childElement.style.transform = 'translate(0%, -50%)';\n }\n else {\n childElement.style.transform = 'translate(-100%, -50%)';\n }\n }\n if (childElement.childElementCount) {\n appendChildElement(false, parent, childElement, redraw, true, 'left', 'top');\n this.doTemplateAnimation(this.accumulation, childElement);\n }\n };\n /**\n * To find saturated color for datalabel\n *\n * @param {AccPoints} point - The accumulation point.\n * @param {string} color - The original color.\n * @returns {string} - Get a saturated color.\n */\n AccumulationDataLabel.prototype.getSaturatedColor = function (point, color) {\n var saturatedColor;\n if (this.marginValue >= 1) {\n saturatedColor = color === 'transparent' ? this.getLabelBackground(point) : color;\n }\n else {\n saturatedColor = this.getLabelBackground(point);\n }\n saturatedColor = (saturatedColor === 'transparent') ? ((this.accumulation.theme.indexOf('Dark') > -1 || this.accumulation.theme.indexOf('HighContrast') > -1) ? 'black' : 'white') : saturatedColor;\n var rgbValue = convertHexToColor(colorNameToHex(saturatedColor));\n var contrast = Math.round((rgbValue.r * 299 + rgbValue.g * 587 + rgbValue.b * 114) / 1000);\n return this.accumulation.theme === 'Bootstrap5' ? '#212529' : this.accumulation.theme === 'Bootstrap5Dark' ? '#DEE2E6' : contrast >= 128 ? 'black' : 'white';\n };\n /**\n * Animates the data label template.\n *\n * @param {AccumulationChart} accumulation - The accumulation chart control.\n * @param {Element} element - The element to animate.\n * @returns {void}\n * @private\n */\n AccumulationDataLabel.prototype.doTemplateAnimation = function (accumulation, element) {\n var series = accumulation.visibleSeries[0];\n var delay = series.animation.delay + series.animation.duration;\n if (((series.animation.enable && animationMode !== 'Disable') || animationMode === 'Enable') && accumulation.animateSeries) {\n element.style.visibility = 'hidden';\n templateAnimate(element, delay, 200, 'ZoomIn');\n }\n };\n /**\n * To find background color for the datalabel.\n *\n * @param {AccPoints} point - The data point for which to determine the background color.\n * @returns {string} - The background color for the data label.\n */\n AccumulationDataLabel.prototype.getLabelBackground = function (point) {\n return point.labelPosition === 'Outside' ?\n this.accumulation.background || this.accumulation.themeStyle.background : !point.y ? this.accumulation.theme.indexOf('dark') ? 'white' : 'black' : point.color;\n };\n /**\n * To correct the padding between datalabel regions.\n *\n * @param {Rect} labelRegion - The region occupied by the data label.\n * @param {Size} textSize - The size of the text within the data label.\n * @param {number} padding - The padding value to adjust the spacing.\n * @returns {void}\n */\n AccumulationDataLabel.prototype.correctLabelRegion = function (labelRegion, textSize, padding) {\n if (padding === void 0) { padding = 4; }\n labelRegion.height -= padding;\n labelRegion.width -= padding;\n labelRegion.x += padding / 2;\n labelRegion.y += padding / 2;\n textSize.height -= padding;\n textSize.width -= padding;\n };\n /**\n * To get the dataLabel module name.\n *\n * @returns {string} - Returns the module name.\n */\n AccumulationDataLabel.prototype.getModuleName = function () {\n return 'AccumulationDataLabel';\n };\n /**\n * To destroy the data label.\n *\n * @returns {void}\n * @private\n */\n AccumulationDataLabel.prototype.destroy = function () {\n /**\n * Destroy method performed here.\n */\n };\n //calculation for placing labels smartly\n AccumulationDataLabel.prototype.extendedLabelsCalculation = function () {\n var _this = this;\n var series = this.accumulation.series[0];\n series.rightSidePoints.forEach(function (point, index, halfSidePoints) {\n point.initialLabelRegion = point.labelRegion;\n point.isLabelUpdated = 0;\n _this.skipPoints(point, halfSidePoints, index);\n });\n series.leftSidePoints.forEach(function (point, index, halfSidePoints) {\n point.initialLabelRegion = point.labelRegion;\n point.isLabelUpdated = 0;\n _this.skipPoints(point, halfSidePoints, index);\n });\n this.arrangeLeftSidePoints(series);\n this.isIncreaseAngle = false;\n this.arrangeRightSidePoints(series);\n };\n /**\n * Rightside points alignments calculation.\n *\n * @param {AccumulationSeries} series - To get a proper series.\n * @returns {void}\n */\n AccumulationDataLabel.prototype.arrangeRightSidePoints = function (series) {\n var startFresh;\n var angleChanged;\n var rightSideRenderPoints = series.rightSidePoints.filter(function (point) { return (point.labelVisible && point.labelPosition === 'Outside'); });\n this.rightSideRenderingPoints = rightSideRenderPoints;\n var checkAngle;\n var currentPoint;\n var lastPoint = rightSideRenderPoints[rightSideRenderPoints.length - 1];\n var nextPoint;\n if (lastPoint) {\n if (lastPoint.labelAngle > 90 && lastPoint.labelAngle < 270) {\n this.isIncreaseAngle = true;\n this.changeLabelAngle(lastPoint, 89);\n }\n }\n /**\n * Right side points arranged from last point.\n * A point checked with successive points for overlapping.\n * If that is overlapped, its label angle is decreased and placing in optimal position\n * If one point's angle is decreased, its previous points in the half side points also decreased until it reaced optimum position.\n * When decreasing angle falls beyond 270, label angle increased.\n * If one point's angle is increased, its successive points in that half point also increased until it reaced optimum position.\n */\n for (var i = rightSideRenderPoints.length - 1; i >= 0; i--) {\n currentPoint = rightSideRenderPoints[i];\n nextPoint = rightSideRenderPoints[i + 1];\n // A point checked for overlapping, label visibility\n if (this.isOverlapWithNext(currentPoint, rightSideRenderPoints, i) && currentPoint.labelVisible\n || !(currentPoint.labelAngle <= 90 || currentPoint.labelAngle >= 270)) {\n checkAngle = lastPoint.labelAngle + 10;\n angleChanged = true;\n //If last's point change angle in beyond the limit, stop the increasing angle and do decrease the angle.\n if (startFresh) {\n this.isIncreaseAngle = false;\n }\n else if (checkAngle > 90 && checkAngle < 270 && nextPoint.isLabelUpdated) {\n this.isIncreaseAngle = true;\n }\n if (!this.isIncreaseAngle) {\n for (var k = i + 1; k < rightSideRenderPoints.length; k++) {\n this.increaseAngle(rightSideRenderPoints[k - 1], rightSideRenderPoints[k], series, true);\n }\n }\n else {\n for (var k = i + 1; k > 0; k--) {\n this.decreaseAngle(rightSideRenderPoints[k], rightSideRenderPoints[k - 1], series, true);\n }\n }\n }\n else {\n //If a point did not overlapped with previous points, increase the angle always for right side points.\n if (angleChanged && nextPoint && !nextPoint.isLabelUpdated) {\n startFresh = true;\n }\n }\n }\n };\n /**\n * Leftside points alignments calculation.\n *\n * @param {AccumulationSeries} series - To get a proper series.\n * @returns {void}\n */\n AccumulationDataLabel.prototype.arrangeLeftSidePoints = function (series) {\n var _this = this;\n var leftSideRenderPoints = series.leftSidePoints.filter(function (point) { return (point.labelVisible && point.labelPosition === 'Outside'); });\n this.leftSideRenderingPoints = leftSideRenderPoints;\n var previousPoint;\n var currentPoint;\n var angleChanged;\n var startFresh;\n /**\n * Left side points arranged from first point.\n * A point checked with previous points for overlapping.\n * If that is overlapped, its label angle is decreased and placing in optimal position\n * If one point's angle is decreased, its previous points in the half side points also decreased until it reaced optimum position.\n * When decreasing angle falls beyond 90, label angle increased.\n * If one point's angle is increased, its successive points in that half point also increased until it reaced optimum position.\n */\n for (var i = 0; i < leftSideRenderPoints.length; i++) {\n currentPoint = leftSideRenderPoints[i];\n previousPoint = leftSideRenderPoints[i - 1];\n // A point checked\n if (this.isOverlapWithPrevious(currentPoint, leftSideRenderPoints, i) && currentPoint.labelVisible\n || !(currentPoint.labelAngle < 270)) {\n angleChanged = true;\n if (startFresh) {\n this.isIncreaseAngle = false;\n }\n if (!this.isIncreaseAngle) {\n for (var k = i; k > 0; k--) {\n this.decreaseAngle(leftSideRenderPoints[k], leftSideRenderPoints[k - 1], series, false);\n leftSideRenderPoints.filter(function (point, index) {\n if (point.isLabelUpdated && leftSideRenderPoints[index].labelAngle - 10 < 100) {\n _this.isIncreaseAngle = true;\n }\n });\n }\n }\n else {\n for (var k = i; k < leftSideRenderPoints.length; k++) {\n this.increaseAngle(leftSideRenderPoints[k - 1], leftSideRenderPoints[k], series, false);\n }\n }\n }\n else {\n if (angleChanged && previousPoint && previousPoint.isLabelUpdated) {\n startFresh = true;\n }\n }\n }\n };\n AccumulationDataLabel.prototype.decreaseAngle = function (currentPoint, previousPoint, series, isRightSide) {\n if (isNullOrUndefined(currentPoint) || isNullOrUndefined(previousPoint)) {\n return null;\n }\n var count = 1;\n if (isRightSide) {\n while (isOverlap(currentPoint.labelRegion, previousPoint.labelRegion) || (!this.isVariousRadius() &&\n !((previousPoint.labelRegion.height + previousPoint.labelRegion.y) < currentPoint.labelRegion.y))) {\n var newAngle = previousPoint.midAngle - count;\n if (newAngle < 0) {\n newAngle = 360 + newAngle;\n }\n if (newAngle <= 270 && newAngle >= 90) {\n newAngle = 270;\n this.isIncreaseAngle = true;\n break;\n }\n this.changeLabelAngle(previousPoint, newAngle);\n count++;\n }\n }\n else {\n if (currentPoint.labelAngle > 270) {\n this.changeLabelAngle(currentPoint, 270);\n previousPoint.labelAngle = 270;\n }\n while (isOverlap(currentPoint.labelRegion, previousPoint.labelRegion) || (!this.isVariousRadius() &&\n ((currentPoint.labelRegion.y + currentPoint.labelRegion.height) > previousPoint.labelRegion.y))) {\n var newAngle = previousPoint.midAngle - count;\n if (!(newAngle <= 270 && newAngle >= 90)) {\n newAngle = 90;\n this.isIncreaseAngle = true;\n break;\n }\n this.changeLabelAngle(previousPoint, newAngle);\n if (isOverlap(currentPoint.labelRegion, previousPoint.labelRegion) &&\n !series.leftSidePoints.indexOf(previousPoint) && (newAngle - 1 < 90 && newAngle - 1 > 270)) {\n this.changeLabelAngle(currentPoint, currentPoint.labelAngle + 1);\n this.arrangeLeftSidePoints(series);\n break;\n }\n count++;\n }\n }\n };\n AccumulationDataLabel.prototype.increaseAngle = function (currentPoint, nextPoint, series, isRightSide) {\n if (isNullOrUndefined(currentPoint) || isNullOrUndefined(nextPoint)) {\n return null;\n }\n var count = 1;\n if (isRightSide) {\n while (isOverlap(currentPoint.labelRegion, nextPoint.labelRegion) || (!this.isVariousRadius() &&\n !((currentPoint.labelRegion.y + currentPoint.labelRegion.height) < nextPoint.labelRegion.y))) {\n var newAngle = nextPoint.midAngle + count;\n if (newAngle < 270 && newAngle > 90) {\n newAngle = 90;\n this.isIncreaseAngle = true;\n break;\n }\n this.changeLabelAngle(nextPoint, newAngle);\n if (isOverlap(currentPoint.labelRegion, nextPoint.labelRegion) && (newAngle + 1 > 90 && newAngle + 1 < 270) &&\n this.rightSideRenderingPoints.indexOf(nextPoint) === this.rightSideRenderingPoints.length - 1) {\n this.changeLabelAngle(currentPoint, currentPoint.labelAngle - 1);\n nextPoint.labelRegion = nextPoint.initialLabelRegion;\n this.arrangeRightSidePoints(series);\n break;\n }\n if (count > 360) {\n break;\n }\n count++;\n }\n }\n else {\n while (isOverlap(currentPoint.labelRegion, nextPoint.labelRegion) || (!this.isVariousRadius() &&\n (currentPoint.labelRegion.y < (nextPoint.labelRegion.y + nextPoint.labelRegion.height)))) {\n var newAngle = nextPoint.midAngle + count;\n if (!(newAngle < 270 && newAngle > 90)) {\n newAngle = 270;\n this.isIncreaseAngle = false;\n break;\n }\n this.changeLabelAngle(nextPoint, newAngle);\n if (count > 360) {\n break;\n }\n count++;\n }\n }\n };\n AccumulationDataLabel.prototype.changeLabelAngle = function (currentPoint, newAngle) {\n var dataLabel = this.accumulation.series[0].dataLabel;\n var variableR;\n if (this.isVariousRadius()) {\n variableR = this.accumulation.pieSeriesModule.getLabelRadius(this.accumulation.visibleSeries[0], currentPoint);\n }\n //padding 10px is added to label radius for increasing the angle and avoid congestion.\n var labelRadius = (currentPoint.labelPosition === 'Outside' && this.accumulation.enableSmartLabels &&\n dataLabel.position === 'Inside') ?\n this.radius + stringToNumber(dataLabel.connectorStyle.length || '4%', this.accumulation.pieSeriesModule.size / 2) :\n (!this.isVariousRadius() ? this.accumulation.pieSeriesModule.labelRadius + 10 : variableR);\n var radius = (!this.isVariousRadius() ? labelRadius : variableR);\n this.getLabelRegion(currentPoint, 'Outside', currentPoint.textSize, radius, this.marginValue, newAngle);\n currentPoint.isLabelUpdated = 1;\n currentPoint.labelAngle = newAngle;\n };\n AccumulationDataLabel.prototype.isOverlapWithPrevious = function (currentPoint, points, currentPointIndex) {\n for (var i = 0; i < currentPointIndex; i++) {\n if (i !== points.indexOf(currentPoint) &&\n points[i].visible && points[i].labelVisible &&\n points[i].labelRegion && currentPoint.labelRegion &&\n currentPoint.labelVisible && isOverlap(currentPoint.labelRegion, points[i].labelRegion)) {\n return true;\n }\n }\n return false;\n };\n AccumulationDataLabel.prototype.isOverlapWithNext = function (point, points, pointIndex) {\n for (var i = pointIndex; i < points.length; i++) {\n if (i !== points.indexOf(point) && points[i].visible &&\n points[i].labelVisible && points[i].labelRegion &&\n point.labelRegion && point.labelVisible && isOverlap(point.labelRegion, points[i].labelRegion)) {\n return true;\n }\n }\n return false;\n };\n AccumulationDataLabel.prototype.skipPoints = function (currentPoint, halfsidePoints, pointIndex) {\n if (pointIndex > 0 && ((currentPoint.midAngle < 285 && currentPoint.midAngle > 255) ||\n (currentPoint.midAngle < 105 && currentPoint.midAngle > 75))) {\n var previousPoint = halfsidePoints[pointIndex - 1];\n var angleDiff = currentPoint.endAngle % 360 - currentPoint.startAngle % 360;\n var prevAngleDiff = previousPoint.endAngle % 360 - previousPoint.startAngle % 360;\n if (prevAngleDiff <= angleDiff && angleDiff < 5 && previousPoint.labelVisible) {\n this.setPointVisibleTrue(currentPoint);\n }\n }\n else if (pointIndex > 1 && ((currentPoint.midAngle < 300 && currentPoint.midAngle > 240) ||\n (currentPoint.midAngle < 120 && currentPoint.midAngle > 60))) {\n var prevPoint = halfsidePoints[pointIndex - 1];\n var secondPrevPoint = halfsidePoints[pointIndex - 2];\n var angleDiff = currentPoint.endAngle % 360 - currentPoint.startAngle % 360;\n var prevAngleDiff = prevPoint.endAngle % 360 - prevPoint.startAngle % 360;\n var thirdAngleDiff = secondPrevPoint.endAngle % 360 - secondPrevPoint.startAngle % 360;\n if (angleDiff < 3 && prevAngleDiff < 3 && thirdAngleDiff < 3 && prevPoint.labelVisible && currentPoint.labelVisible) {\n this.setPointVisibleTrue(currentPoint);\n }\n }\n };\n AccumulationDataLabel.prototype.getPerpendicularDistance = function (startPoint, point) {\n var increasedLocation;\n var add = 10;\n var height = add + 10 * Math.sin(point.midAngle * Math.PI / 360);\n if (point.midAngle > 270 && point.midAngle < 360) {\n increasedLocation = new ChartLocation(startPoint.x + height * (Math.cos((360 - point.midAngle) * Math.PI / 180)), startPoint.y - height * (Math.sin((360 - point.midAngle) * Math.PI / 180)));\n }\n else if (point.midAngle > 0 && point.midAngle < 90) {\n increasedLocation = new ChartLocation(startPoint.x + height * (Math.cos((point.midAngle) * Math.PI / 180)), startPoint.y + height * (Math.sin((point.midAngle) * Math.PI / 180)));\n // eslint-disable-next-line no-dupe-else-if\n }\n else if (point.midAngle > 0 && point.midAngle < 90) {\n increasedLocation = new ChartLocation(startPoint.x - height * (Math.cos((point.midAngle - 90) * Math.PI / 180)), startPoint.y + height * (Math.sin((point.midAngle - 90) * Math.PI / 180)));\n }\n else {\n increasedLocation = new ChartLocation(startPoint.x - height * (Math.cos((point.midAngle - 180) * Math.PI / 180)), startPoint.y - height * (Math.sin((point.midAngle - 180) * Math.PI / 180)));\n }\n return increasedLocation;\n };\n return AccumulationDataLabel;\n}(AccumulationBase));\nexport { AccumulationDataLabel };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { ComplexBase } from '@syncfusion/ej2-react-base';\n/**\n * `AccumulationSeriesDirective` directive represent a series of the react AccumulationChart.\n * It must be contained in a Pie component(`AccumulationChart`).\n * ```tsx\n * \n * \n * \n * \n * \n * ```\n */\nvar AccumulationSeriesDirective = /** @class */ (function (_super) {\n __extends(AccumulationSeriesDirective, _super);\n function AccumulationSeriesDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AccumulationSeriesDirective.moduleName = 'accumulationSeries';\n AccumulationSeriesDirective.complexTemplate = { 'dataLabel.template': 'dataLabel.template' };\n return AccumulationSeriesDirective;\n}(ComplexBase));\nexport { AccumulationSeriesDirective };\nvar AccumulationSeriesCollectionDirective = /** @class */ (function (_super) {\n __extends(AccumulationSeriesCollectionDirective, _super);\n function AccumulationSeriesCollectionDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AccumulationSeriesCollectionDirective.propertyName = 'series';\n AccumulationSeriesCollectionDirective.moduleName = 'accumulationSeriesCollection';\n return AccumulationSeriesCollectionDirective;\n}(ComplexBase));\nexport { AccumulationSeriesCollectionDirective };\n","import React, { useEffect, useState } from \"react\";\r\nimport {\r\n Inject,\r\n AccumulationChartComponent,\r\n PieSeries,\r\n AccumulationSeriesCollectionDirective,\r\n AccumulationSeriesDirective,\r\n AccumulationLegend,\r\n AccumulationTooltip,\r\n AccumulationDataLabel,\r\n} from \"@syncfusion/ej2-react-charts\";\r\nimport axiosClient from \"../Utils/axiosClient\";\r\nimport { useTranslation } from \"react-i18next\";\r\nconst PieChart = () => {\r\n const [data, setData] = useState([]);\r\n\r\n const { t } = useTranslation();\r\n useEffect(() => {\r\n const getChart = async () => {\r\n try {\r\n const response = await axiosClient.get(\"/dashboard/MessageStatistics\");\r\n\r\n if (response.status === 200) {\r\n const statusMapping = {\r\n delivered: t(\"MessageStatuses.delivered.label\"),\r\n sent: t(\"MessageStatuses.sent.label\"),\r\n read: t(\"MessageStatuses.read.label\"),\r\n error: t(\"MessageStatuses.error.label\"),\r\n };\r\n const colorMapping = {\r\n delivered: \"#003f5c\",\r\n sent: \"#58508d\",\r\n read: \"#bc5090\",\r\n error: \"#ff6361\",\r\n };\r\n\r\n const formattedData = response.data.map((item) => ({\r\n ...item,\r\n status: statusMapping[item.status] || item.status,\r\n color: colorMapping[item.status] || \"#ffa600\",\r\n }));\r\n\r\n setData(formattedData);\r\n }\r\n } catch (error) {}\r\n };\r\n getChart();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default PieChart;\r\n","import { createElement, isNullOrUndefined, Animation } from '@syncfusion/ej2-base';\nimport { DataUtil } from '@syncfusion/ej2-data';\nimport { subtractThickness, valueToCoefficient, sum, redrawElement, isBreakLabel, ChartLocation, withInBounds, rotateTextSize, removeElement } from '../../common/utils/helper';\nimport { subArray, inside, appendChildElement, stringToNumber } from '../../common/utils/helper';\nimport { Thickness, logBase, createZoomingLabels, getElement } from '../../common/utils/helper';\nimport { Size, Rect, measureText, TextOption, PathOption } from '@syncfusion/ej2-svg-base';\nimport { textElement, textTrim, getRotatedRectangleCoordinates, isRotatedRectIntersect, isZoomSet } from '../../common/utils/helper';\n/**\n * Specifies the Cartesian Axis Layout.\n */\nvar axisPadding = 10;\nvar CartesianAxisLayoutPanel = /** @class */ (function () {\n /** @private */\n /**\n * Constructor for creating the chart.\n *\n * @param {Chart} chartModule - Specifies the Chart model.\n * @private */\n function CartesianAxisLayoutPanel(chartModule) {\n this.chart = chartModule;\n this.padding = 5;\n }\n /**\n * Measure the axis size.\n *\n * @returns {void}\n * @private\n */\n CartesianAxisLayoutPanel.prototype.measureAxis = function (rect) {\n var chart = this.chart;\n var chartAreaWidth = chart.chartArea.width ? stringToNumber(chart.chartArea.width, chart.availableSize.width) : null;\n this.crossAt(chart);\n this.seriesClipRect = new Rect(rect.x, rect.y, rect.width, rect.height);\n this.initialClipRect = rect;\n this.leftSize = 0;\n this.rightSize = 0;\n this.topSize = 0;\n this.bottomSize = 0;\n //Measure Axis size with initial Rect\n this.measureRowAxis(chart, this.initialClipRect);\n this.initialClipRect = subtractThickness(this.initialClipRect, new Thickness(this.leftSize, this.rightSize, 0, 0));\n this.measureColumnAxis(chart, this.initialClipRect);\n this.initialClipRect = subtractThickness(this.initialClipRect, new Thickness(0, 0, this.topSize, this.bottomSize));\n if (!this.chart.delayRedraw) {\n this.calculateAxisSize(this.initialClipRect);\n }\n this.leftSize = 0;\n this.rightSize = 0;\n this.topSize = 0;\n this.bottomSize = 0;\n //Measure Axis size with series Rect\n this.measureRowAxis(chart, this.initialClipRect);\n this.seriesClipRect = subtractThickness(this.seriesClipRect, new Thickness(this.leftSize, this.rightSize, 0, 0));\n this.measureColumnAxis(chart, this.initialClipRect);\n this.seriesClipRect = subtractThickness(this.seriesClipRect, new Thickness(0, 0, this.topSize, this.bottomSize));\n if (chartAreaWidth) {\n this.calculateFixedChartArea(chart, chartAreaWidth);\n }\n if (!this.chart.delayRedraw) {\n chart.refreshAxis();\n this.calculateAxisSize(this.seriesClipRect);\n }\n };\n CartesianAxisLayoutPanel.prototype.calculateFixedChartArea = function (chart, chartAreaWidth) {\n this.seriesClipRect.width = chartAreaWidth;\n this.seriesClipRect.x = chart.availableSize.width - chart.margin.right - chartAreaWidth -\n (chart.legendSettings.position === 'Right' ? chart.legendModule.legendBounds.width : 0);\n for (var _i = 0, _a = chart.rows; _i < _a.length; _i++) {\n var item = _a[_i];\n this.seriesClipRect.x -= sum(item.farSizes);\n }\n };\n CartesianAxisLayoutPanel.prototype.measureRowAxis = function (chart, rect) {\n var row;\n this.calculateRowSize(rect);\n for (var _i = 0, _a = chart.rows; _i < _a.length; _i++) {\n var item = _a[_i];\n row = item;\n row.nearSizes = [];\n row.farSizes = [];\n row.insideNearSizes = [];\n row.insideFarSizes = [];\n this.arrangeAxis(row);\n this.measureDefinition(row, chart, new Size(chart.availableSize.width, row.computedHeight));\n if (this.leftSize < sum(row.nearSizes)) {\n this.leftSize = sum(row.nearSizes);\n }\n if (this.rightSize < sum(row.farSizes)) {\n this.rightSize = sum(row.farSizes);\n }\n }\n };\n CartesianAxisLayoutPanel.prototype.measureColumnAxis = function (chart, rect) {\n var column;\n this.calculateColumnSize(rect);\n for (var _i = 0, _a = chart.columns; _i < _a.length; _i++) {\n var item = _a[_i];\n column = item;\n column.farSizes = [];\n column.nearSizes = [];\n column.insideNearSizes = [];\n column.insideFarSizes = [];\n this.arrangeAxis(column);\n this.measureDefinition(column, chart, new Size(column.computedWidth, chart.availableSize.height));\n if (this.bottomSize < sum(column.nearSizes)) {\n this.bottomSize = sum(column.nearSizes);\n }\n if (this.topSize < sum(column.farSizes)) {\n this.topSize = sum(column.farSizes);\n }\n }\n };\n /**\n * Measure the column and row in chart.\n *\n * @returns {void}\n * @private\n */\n CartesianAxisLayoutPanel.prototype.measureDefinition = function (definition, chart, size) {\n var ele;\n for (var _i = 0, _a = definition.axes; _i < _a.length; _i++) {\n var axis = _a[_i];\n ele = axis.scrollbarSettings.height;\n axis.scrollBarHeight = chart.scrollBarModule && chart.zoomModule && chart.zoomSettings.enableScrollbar &&\n axis.enableScrollbarOnZooming && chart.zoomModule.isZoomed && (axis.zoomFactor < 1 || axis.zoomPosition > 0) ? ele : 0;\n axis.scrollBarHeight = chart.scrollBarModule && (chart.zoomModule && chart.zoomSettings.enableScrollbar &&\n axis.enableScrollbarOnZooming && chart.zoomModule.isZoomed && (axis.zoomFactor < 1 || axis.zoomPosition > 0)\n || axis.scrollbarSettings.enable) ? ele : 0;\n axis.getModule(chart);\n axis.baseModule.calculateRangeAndInterval(size, axis);\n definition.computeSize(axis, axis.scrollBarHeight, definition, chart);\n }\n if (definition.farSizes.length > 0) {\n definition.farSizes[definition.farSizes.length - 1] -= axisPadding;\n }\n if (definition.nearSizes.length > 0) {\n definition.nearSizes[definition.nearSizes.length - 1] -= axisPadding;\n }\n };\n /**\n * Measure the axis.\n *\n * @param {Rect} rect - The rect for measuring the axis.\n * @returns {void}\n * @private\n */\n CartesianAxisLayoutPanel.prototype.calculateAxisSize = function (rect) {\n var chart = this.chart;\n var row;\n var column;\n var definition;\n var axis;\n var nearCount = 0;\n var farCount = 0;\n var size = 0;\n var x;\n var y;\n var axisOffset;\n this.calculateRowSize(rect);\n for (var i = 0, len = chart.rows.length; i < len; i++) {\n row = chart.rows[i];\n nearCount = 0;\n farCount = 0;\n for (var j = 0, len_1 = row.axes.length; j < len_1; j++) {\n axis = row.axes[j];\n axisOffset = axis.plotOffset;\n if (axis.rect.height === 0) {\n axis.rect.height = row.computedHeight;\n size = 0;\n for (var k = i + 1, len_2 = i + axis.span; k < len_2; k++) {\n definition = chart.rows[k];\n size += definition.computedHeight;\n }\n axis.rect.y = (row.computedTop - size) + (axis.plotOffsetTop ? axis.plotOffsetTop : axisOffset);\n axis.rect.height = (axis.rect.height + size) -\n (this.getAxisOffsetValue(axis.plotOffsetTop, axis.plotOffsetBottom, axis.plotOffset));\n axis.rect.width = 0;\n }\n if (axis.isAxisOpposedPosition) {\n if (axis.labelPosition === 'Inside' && axis.orientation === 'Vertical') {\n x = rect.x + rect.width - sum(subArray(row.insideFarSizes, farCount));\n }\n else {\n x = rect.x + rect.width + sum(subArray(row.farSizes, farCount));\n }\n axis.rect.x = axis.rect.x >= x ? axis.rect.x : x;\n farCount++;\n }\n else {\n if (axis.labelPosition === 'Inside' && axis.orientation === 'Vertical') {\n x = rect.x + sum(subArray(row.insideNearSizes, nearCount));\n }\n else {\n x = rect.x - sum(subArray(row.nearSizes, nearCount));\n }\n axis.rect.x = axis.rect.x <= x ? axis.rect.x : x;\n nearCount++;\n }\n }\n }\n this.calculateColumnSize(rect);\n for (var i = 0, len = chart.columns.length; i < len; i++) {\n column = chart.columns[i];\n nearCount = 0;\n farCount = 0;\n for (var j = 0, len_3 = column.axes.length; j < len_3; j++) {\n axis = column.axes[j];\n axisOffset = axis.plotOffset;\n if (axis.rect.width === 0) {\n for (var k = i, len_4 = (i + axis.span); k < len_4; k++) {\n definition = chart.columns[k];\n axis.rect.width += definition.computedWidth;\n }\n axis.rect.x = column.computedLeft + (axis.plotOffsetLeft ? axis.plotOffsetLeft : axisOffset);\n axis.rect.width -= (this.getAxisOffsetValue(axis.plotOffsetLeft, axis.plotOffsetRight, axis.plotOffset));\n axis.rect.height = 0;\n }\n if (axis.isAxisOpposedPosition) {\n if (axis.labelPosition === 'Inside' && axis.orientation === 'Horizontal') {\n y = rect.y + sum(subArray(column.insideFarSizes, farCount));\n }\n else {\n y = rect.y - sum(subArray(column.farSizes, farCount));\n }\n axis.rect.y = axis.rect.y <= y ? axis.rect.y : y;\n farCount++;\n }\n else {\n if (axis.labelPosition === 'Inside' && axis.orientation === 'Horizontal') {\n y = rect.y + rect.height - sum(subArray(column.insideNearSizes, nearCount));\n }\n else {\n y = rect.y + rect.height + sum(subArray(column.nearSizes, nearCount));\n }\n axis.rect.y = axis.rect.y >= y ? axis.rect.y : y;\n nearCount++;\n }\n }\n }\n };\n /**\n * Measure the axis.\n *\n * @returns {void}\n * @private\n */\n CartesianAxisLayoutPanel.prototype.measure = function () {\n var chart = this.chart;\n var row;\n var column;\n var definition;\n var actualIndex;\n var span;\n for (var _i = 0, _a = chart.axisCollections; _i < _a.length; _i++) {\n var axis = _a[_i];\n //definition.Axes = axis;\n if (axis.orientation === 'Vertical') {\n chart.verticalAxes.push(axis);\n actualIndex = this.getActualRow(axis);\n row = chart.rows[actualIndex];\n this.pushAxis(row, axis);\n span = ((actualIndex + axis.span) > chart.rows.length ? chart.rows.length : (actualIndex + axis.span));\n for (var j = actualIndex + 1; j < span; j++) {\n definition = chart.rows[j];\n definition.axes[row.axes.length - 1] = axis;\n chart.rows[j] = definition;\n }\n chart.rows[actualIndex] = row;\n }\n else {\n chart.horizontalAxes.push(axis);\n actualIndex = this.getActualColumn(axis);\n column = chart.columns[actualIndex];\n this.pushAxis(column, axis);\n span = ((actualIndex + axis.span) > chart.columns.length ? chart.columns.length : (actualIndex + axis.span));\n for (var j = actualIndex + 1; j < span; j++) {\n definition = chart.columns[j];\n definition.axes[column.axes.length - 1] = axis;\n chart.columns[j] = definition;\n }\n chart.columns[actualIndex] = column;\n }\n axis.isRTLEnabled = chart.enableRtl;\n axis.setIsInversedAndOpposedPosition();\n }\n };\n CartesianAxisLayoutPanel.prototype.getAxisOffsetValue = function (position1, position2, plotOffset) {\n var rangeOffset = position1 ? (position1 + (position2 ? position2 :\n plotOffset)) : (position2 ? position2 + plotOffset : 2 * plotOffset);\n return rangeOffset;\n };\n CartesianAxisLayoutPanel.prototype.crossAt = function (chart) {\n for (var _i = 0, _a = chart.axisCollections; _i < _a.length; _i++) {\n var axis = _a[_i];\n if (axis.crossesAt === null) {\n continue;\n }\n if (!axis.crossesInAxis) {\n if (chart.requireInvertedAxis) {\n axis.crossInAxis = ((axis.orientation === 'Horizontal')) ? chart.primaryXAxis : chart.primaryYAxis;\n }\n else {\n axis.crossInAxis = ((axis.orientation === 'Horizontal')) ? chart.primaryYAxis : chart.primaryXAxis;\n }\n axis.crossAt = this.updateCrossAt(axis.crossInAxis, axis.crossesAt);\n continue;\n }\n else {\n for (var i = 2, len = chart.axisCollections.length; i < len; i++) {\n if (axis.crossesInAxis === chart.axisCollections[i].name) {\n axis.crossInAxis = chart.axisCollections[i];\n axis.crossAt = this.updateCrossAt(axis.crossInAxis, axis.crossesAt);\n continue;\n }\n }\n }\n }\n };\n CartesianAxisLayoutPanel.prototype.updateCrossAt = function (axis, crossAt) {\n switch (axis.valueType) {\n case 'DateTime': {\n var option = {\n skeleton: 'full',\n type: 'dateTime'\n };\n var dateParser = this.chart.intl.getDateParser(option);\n var dateFormatter = this.chart.intl.getDateFormat(option);\n return Date.parse(dateParser(dateFormatter(new Date(DataUtil.parse.parseJson({ val: crossAt }).val))));\n }\n case 'Category':\n return parseFloat(crossAt) ? parseFloat(crossAt) : axis.labels.indexOf(crossAt);\n case 'Logarithmic':\n return logBase(crossAt, axis.logBase);\n default:\n return crossAt;\n }\n };\n CartesianAxisLayoutPanel.prototype.pushAxis = function (definition, axis) {\n for (var i = 0, len = definition.axes.length; i <= len; i++) {\n if (!definition.axes[i]) {\n definition.axes[i] = axis;\n break;\n }\n }\n };\n CartesianAxisLayoutPanel.prototype.arrangeAxis = function (definition) {\n var axisCollection = [];\n for (var i = 0, len = definition.axes.length; i <= len; i++) {\n if (definition.axes[i]) {\n axisCollection.push(definition.axes[i]);\n }\n }\n definition.axes = axisCollection;\n };\n CartesianAxisLayoutPanel.prototype.getActualColumn = function (axis) {\n var actualLength = this.chart.columns.length;\n var pos = axis.columnIndex;\n var result = pos >= actualLength ? actualLength - 1 : (pos < 0 ? 0 : pos);\n return result;\n };\n CartesianAxisLayoutPanel.prototype.getActualRow = function (axis) {\n var actualLength = this.chart.rows.length;\n var pos = axis.rowIndex;\n var result = pos >= actualLength ? actualLength - 1 : (pos < 0 ? 0 : pos);\n return result;\n };\n /**\n * Measure the row size.\n *\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.calculateRowSize = function (rect) {\n /** Calculate row size */\n var chart = this.chart;\n var row;\n var rowTop = rect.y + rect.height;\n var height = 0;\n var remainingHeight = Math.max(0, rect.height);\n for (var i = 0, len = chart.rows.length; i < len; i++) {\n row = chart.rows[i];\n if (row.height.indexOf('%') !== -1) {\n height = Math.min(remainingHeight, (rect.height * parseInt(row.height, 10) / 100));\n }\n else {\n height = Math.min(remainingHeight, parseInt(row.height, 10));\n }\n height = (i !== (len - 1)) ? height : remainingHeight;\n row.computedHeight = height;\n rowTop -= height;\n row.computedTop = rowTop;\n remainingHeight -= height;\n }\n };\n /**\n * Measure the row size.\n *\n * @param {Rect} rect rect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.calculateColumnSize = function (rect) {\n /** Calculate column size */\n var chart = this.chart;\n var column;\n var columnLeft = rect.x;\n var width = 0;\n var remainingWidth = Math.max(0, rect.width);\n for (var i = 0, len = chart.columns.length; i < len; i++) {\n column = chart.columns[i];\n if (column.width.indexOf('%') !== -1) {\n width = Math.min(remainingWidth, (rect.width * parseInt(column.width, 10) / 100));\n }\n else {\n width = Math.min(remainingWidth, parseInt(column.width, 10));\n }\n width = (i !== (len - 1)) ? width : remainingWidth;\n column.computedWidth = width;\n column.computedLeft = columnLeft;\n columnLeft += width;\n remainingWidth -= width;\n }\n };\n /**\n * To render the axis element.\n *\n * @returns {void}\n * @private\n */\n CartesianAxisLayoutPanel.prototype.renderAxes = function () {\n var chart = this.chart;\n var axis;\n var axisElement = chart.renderer.createGroup({ id: chart.element.id + 'AxisInsideCollection' });\n var axisLineElement = chart.renderer.createGroup({ id: chart.element.id + 'AxisOutsideCollection' });\n if (axisLineElement) {\n axisLineElement.setAttribute('aria-hidden', 'true');\n }\n var outsideElement;\n var isInside;\n for (var i = 0, len = chart.axisCollections.length; i < len; i++) {\n var axisVisibility = true;\n axis = chart.axisCollections[i];\n this.element = chart.renderer.createGroup({ id: chart.element.id + 'AxisGroup' + i + 'Inside' });\n if (this.element) {\n this.element.setAttribute('aria-hidden', 'true');\n }\n outsideElement = chart.renderer.createGroup({ id: chart.element.id + 'AxisGroup' + i + 'Outside' });\n if (outsideElement) {\n outsideElement.setAttribute('aria-hidden', 'true');\n }\n for (var _i = 0, _a = axis.series; _i < _a.length; _i++) {\n var series = _a[_i];\n if (axis.name === series.yAxisName || axis.name === series.xAxisName) {\n axisVisibility = series.visible;\n if (series.category === 'Pareto' && !series.paretoOptions.showAxis && series.type === 'Line') {\n axisVisibility = false;\n }\n if (!axisVisibility) {\n continue;\n }\n else {\n break;\n }\n }\n }\n if (!axisVisibility) {\n continue;\n }\n isInside = this.findAxisPosition(axis);\n this.drawAxis(axis, i, isInside, outsideElement, axisElement, axisLineElement);\n }\n this.drawPaneLines(chart, axisElement);\n appendChildElement(chart.enableCanvas, chart.svgObject, axisElement, chart.redraw);\n return axisLineElement;\n };\n /**\n * To render the axis scrollbar\n *\n * @param {Chart} chart chart\n * @param {Axis} axis axis\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.renderScrollbar = function (chart, axis) {\n var isZoomed = isNullOrUndefined(chart.zoomModule) ? false : chart.zoomModule.isZoomed;\n if (((isZoomed && (axis.zoomFactor < 1 || axis.zoomPosition > 0)) || (axis.scrollbarSettings.enable &&\n (axis.zoomFactor <= 1 || axis.zoomPosition >= 0))) &&\n (!axis.zoomingScrollBar.isScrollUI)) {\n if (!chart.scrollElement) {\n chart.scrollElement = redrawElement(chart.redraw, chart.element.id + '_scrollElement') || createElement('div', { id: chart.element.id + '_scrollElement' });\n }\n appendChildElement(false, chart.scrollElement, axis.zoomingScrollBar.render(true), true);\n }\n else if (axis.zoomFactor === 1 && axis.zoomPosition === 0 && axis.zoomingScrollBar.svgObject && !axis.scrollbarSettings.enable) {\n axis.zoomingScrollBar.destroy();\n }\n else if (axis.zoomingScrollBar.svgObject) {\n axis.zoomingScrollBar.svgObject.style.top = (axis.isAxisOpposedPosition && axis.orientation === 'Horizontal' ? -16 : 0)\n + axis.rect.y + Math.max(0.5, axis.lineStyle.width / 2) + 'px';\n axis.zoomingScrollBar.svgObject.style.left = (axis.isAxisOpposedPosition && axis.orientation !== 'Horizontal' ? 16 : 0)\n + axis.rect.x - (axis.orientation === 'Vertical' ? axis.scrollbarSettings.height : 0) + 'px';\n }\n if (axis.zoomingScrollBar.isScrollUI) {\n axis.zoomingScrollBar.isScrollUI = false;\n }\n };\n /**\n * Draws pane lines for the specified chart.\n *\n * @param {Chart} chart -The chart for which pane lines are to be drawn.\n * @param {Element} [axisElement] -Optional. The axis element to which the pane lines are associated.\n * @returns {void}\n * @private\n */\n CartesianAxisLayoutPanel.prototype.drawPaneLines = function (chart, axisElement) {\n this.element = chart.renderer.createGroup({ id: chart.element.id + 'DefinitionLine' });\n for (var j = 0, len = chart.rows.length; j < len; j++) {\n var row = chart.rows[j];\n if (row.border.color) {\n this.drawBottomLine(row, j, true);\n }\n }\n for (var j = 0, len = chart.columns.length; j < len; j++) {\n var column = chart.columns[j];\n if (column.border.color) {\n this.drawBottomLine(column, j, false);\n }\n }\n axisElement = axisElement ? axisElement : getElement(chart.element.id + 'AxisInsideCollection');\n if (!this.chart.enableCanvas) {\n axisElement.appendChild(this.element);\n }\n };\n /**\n * Draws an axis for the specified axis configuration.\n *\n * @private\n * @param {Axis} axis -The axis configuration to be drawn.\n * @param {number} index -The index of the axis.\n * @param {boolean} isInside -Indicates whether the axis is inside or outside the plot area.\n * @param {Element} outsideElement -The element where the axis should be drawn if it's outside the plot area.\n * @param {Element} axisElement -The element representing the axis.\n * @param {Element} axisLineElement -The element representing the axis line.\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.drawAxis = function (axis, index, isInside, outsideElement, axisElement, axisLineElement) {\n axis.updateCrossValue();\n var axisName = '';\n if (axis.orientation === 'Horizontal') {\n if (axis.visible && axis.internalVisibility && axis.lineStyle.width > 0) {\n this.drawAxisLine(axis, index, axis.plotOffset, 0, 0, 0, axis.plotOffsetLeft, axis.plotOffsetRight, isInside ? outsideElement : this.element, axis.updatedRect);\n }\n axisName = 'X';\n }\n else {\n if (axis.visible && axis.internalVisibility && axis.lineStyle.width > 0) {\n this.drawAxisLine(axis, index, 0, axis.plotOffset, axis.plotOffsetBottom, axis.plotOffsetTop, 0, 0, isInside ? outsideElement : this.element, axis.updatedRect);\n }\n axisName = 'Y';\n }\n if (axis.majorGridLines.width > 0 || axis.majorTickLines.width > 0 || axis.minorTickLines.width > 0 ||\n axis.minorGridLines.width > 0) {\n this['draw' + axisName + 'AxisGridLine'](axis, index, (isInside || axis.tickPosition === 'Inside') ? outsideElement : this.element, axis.updatedRect);\n }\n if (axis.visible && axis.internalVisibility) {\n this['draw' + axisName + 'AxisLabels'](axis, index, (isInside || axis.labelPosition === 'Inside') ? outsideElement : this.element, (axis.placeNextToAxisLine ? axis.updatedRect : axis.rect));\n this['draw' + axisName + 'AxisBorder'](axis, index, (isInside || axis.labelPosition === 'Inside') ? outsideElement : this.element, (axis.placeNextToAxisLine ? axis.updatedRect : axis.rect));\n this['draw' + axisName + 'AxisTitle'](axis, index, isInside ? outsideElement : this.element, (axis.placeNextToAxisLine ? axis.updatedRect : axis.rect));\n }\n if (!this.chart.enableCanvas) {\n axisElement.appendChild(this.element);\n if (outsideElement && outsideElement.childNodes.length > 0) {\n axisLineElement.appendChild(outsideElement);\n }\n }\n if (this.chart.scrollBarModule && ((this.chart.zoomSettings.enableScrollbar && axis.enableScrollbarOnZooming) ||\n axis.scrollbarSettings.enable)) {\n this.renderScrollbar(this.chart, axis);\n }\n };\n /**\n * To find the axis position\n *\n * @param {Axis} axis axis\n * @returns {boolean} axis position\n * @private\n */\n CartesianAxisLayoutPanel.prototype.findAxisPosition = function (axis) {\n return axis.crossAt !== null && axis.isInside(axis.crossInAxis.visibleRange);\n };\n /**\n * To render the bootom line of the columns and rows\n *\n * @param {Row | Column} definition definition\n * @param {number} index index\n * @param {boolean} isRow isRow\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.drawBottomLine = function (definition, index, isRow) {\n var chart = this.chart;\n var optionsLine = {};\n var x1;\n var x2;\n var y1;\n var y2;\n var definitionName;\n if (isRow) {\n definition = definition;\n y1 = y2 = definition.computedTop + definition.computedHeight;\n x1 = this.seriesClipRect.x;\n x2 = x1 + this.seriesClipRect.width;\n definitionName = 'Row';\n }\n else {\n definition = definition;\n x1 = x2 = definition.computedLeft;\n y1 = this.seriesClipRect.y;\n y2 = y1 + this.seriesClipRect.height;\n definitionName = 'Column';\n }\n optionsLine = {\n 'id': chart.element.id + '_AxisBottom_' + definitionName + index,\n x1: x1,\n y1: y1,\n x2: x2,\n y2: y2,\n 'stroke-width': definition.border.width,\n 'stroke': definition.border.color\n };\n this.htmlObject = chart.renderer.drawLine(optionsLine);\n this.element.appendChild(this.htmlObject);\n };\n /**\n * To render the axis line\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {number} plotX plotX\n * @param {number} plotY plotY\n * @param {number} plotBottom plotBottom\n * @param {number} plotTop plotTop\n * @param {number} plotLeft plotLeft\n * @param {number} plotRight plotRight\n * @param {Element} parent parent\n * @param {Rect} rect rect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.drawAxisLine = function (axis, index, plotX, plotY, plotBottom, plotTop, plotLeft, plotRight, parent, rect) {\n var chart = this.chart;\n var optionsLine = {};\n var element = getElement(chart.element.id + 'AxisLine_' + index);\n var direction = element ? element.getAttribute('d') : '';\n element = null;\n optionsLine = {\n 'id': chart.element.id + 'AxisLine_' + index,\n 'd': 'M ' + (rect.x - plotX - plotLeft) + ' ' + (rect.y - plotY - plotTop) +\n ' L ' + (rect.x + rect.width + plotX + plotRight) + ' ' + (rect.y + rect.height + plotY + plotBottom),\n 'stroke-dasharray': axis.lineStyle.dashArray,\n 'stroke-width': axis.lineStyle.width,\n 'stroke': axis.lineStyle.color || chart.themeStyle.axisLine\n };\n this.htmlObject = chart.renderer.drawPath(optionsLine);\n appendChildElement(chart.enableCanvas, parent, this.htmlObject, chart.redraw, true, 'x', 'y', null, direction, null, null, null, chart.duration);\n };\n /**\n * To render the yAxis grid line\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Element} parent parent\n * @param {Rect} rect rect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.drawYAxisGridLine = function (axis, index, parent, rect) {\n var isLogAxis = axis.valueType === 'Logarithmic';\n var isCategoryAxis = axis.valueType.indexOf('Category') > -1;\n var tempInterval;\n var pointY = 0;\n var majorGrid = '';\n var majorTick = '';\n var minorGridDirection;\n var isOpposed = axis.isAxisOpposedPosition;\n var tickSize = isOpposed ? axis.majorTickLines.height : -axis.majorTickLines.height;\n var axisLineSize = (isOpposed) ? axis.lineStyle.width * 0.5 : -axis.lineStyle.width * 0.5;\n var ticksbwtLabel = (axis.valueType === 'Category' && axis.labelPlacement === 'BetweenTicks') ?\n 0.5 : 0;\n var scrollBarHeight = isNullOrUndefined(axis.crossesAt) ? isOpposed ? axis.scrollBarHeight :\n -axis.scrollBarHeight : 0;\n var isTickInside = axis.tickPosition === 'Inside';\n var ticks = isTickInside ? (rect.x - tickSize - axisLineSize) : (rect.x + tickSize + axisLineSize + scrollBarHeight);\n var length = axis.visibleLabels.length;\n var chartThemeStyle = this.chart.themeStyle;\n var count = 1;\n if (axis.valueType.indexOf('Category') > -1 && axis.labelPlacement === 'BetweenTicks' && length > 0 && !this.chart.stockChart) {\n length += 1;\n }\n var minorGridLines = axis.minorGridLines;\n var minorTickLines = axis.minorTickLines;\n //Gridlines\n for (var i = 0; i < length; i++) {\n tempInterval = !axis.visibleLabels[i] ? (axis.visibleLabels[i - 1].value + axis.visibleRange.interval) - ticksbwtLabel\n : axis.visibleLabels[i].value - ticksbwtLabel;\n pointY = valueToCoefficient(tempInterval, axis) * rect.height;\n pointY = (pointY * -1) + (rect.y + rect.height);\n if (pointY >= rect.y && (rect.y + rect.height) >= pointY) {\n if (this.chart.redraw && !this.chart.enableCanvas && this.chart.zoomRedraw && axis.visible && axis.majorGridLines.width && i !== 0 && !getElement(this.chart.element.id + '_MajorGridLine_' + index + '_' + i)) {\n majorGrid = 'M ' + this.seriesClipRect.x + ' ' + (this.seriesClipRect.y + (axis.isInversed ? this.seriesClipRect.height + ((this.seriesClipRect.height / (i ? i : 1)) * count) : -((this.seriesClipRect.height / (i ? i : 1)) * count))) +\n ' L ' + (this.seriesClipRect.x + this.seriesClipRect.width) + ' ' + (this.seriesClipRect.y + (axis.isInversed ? this.seriesClipRect.height + ((this.seriesClipRect.height / (i ? i : 1)) * count) : -((this.seriesClipRect.height / (i ? i : 1)) * count)));\n this.updateAxisElement(axis, index, majorGrid, i, '_MajorGridLine_', this.element, false);\n getElement(parent.id).appendChild(this.element.childNodes[this.element.childNodes.length - 1]);\n }\n if ((inside(tempInterval, axis.visibleRange)) || this.isBorder(axis, i, pointY)) {\n majorGrid = 'M ' + this.seriesClipRect.x + ' ' + (pointY) +\n ' L ' + (this.seriesClipRect.x + this.seriesClipRect.width) + ' ' + pointY;\n this.renderGridLine(axis, index, majorGrid, axis.majorGridLines, '_MajorGridLine_', i, this.element, chartThemeStyle.majorGridLine, axis.majorGridLines.dashArray);\n }\n if (this.chart.redraw && this.chart.zoomRedraw && axis.majorTickLines.width && i !== 0 && !getElement(this.chart.element.id + '_MajorTickLine_' + index + '_' + i) && !this.chart.enableCanvas && axis.visible) {\n majorTick = 'M ' + this.seriesClipRect.x + ' ' + (this.seriesClipRect.y + (axis.isInversed ? this.seriesClipRect.height + ((this.seriesClipRect.height / (i ? i : 1)) * count) : -((this.seriesClipRect.height / (i ? i : 1)) * count))) +\n ' L ' + ticks + ' ' + (this.seriesClipRect.y + (axis.isInversed ? this.seriesClipRect.height + ((this.seriesClipRect.height / (i ? i : 1)) * count) : -((this.seriesClipRect.height / (i ? i : 1)) * count)));\n this.updateAxisElement(axis, index, majorTick, i, '_MajorTickLine_', parent, false);\n getElement(parent.id).appendChild(this.element.childNodes[this.element.childNodes.length - 1]);\n count += 1;\n }\n majorTick = 'M ' + (rect.x + axisLineSize + (isTickInside ? scrollBarHeight : 0)) + ' ' + pointY +\n ' L ' + (ticks) + ' ' + pointY;\n this.renderGridLine(axis, index, majorTick, axis.majorTickLines, '_MajorTickLine_', i, parent, chartThemeStyle.majorTickLine);\n if ((minorGridLines.width > 0 || minorTickLines.width > 0) && axis.minorTicksPerInterval > 0) {\n if (i === 0 && isZoomSet(axis) && !isLogAxis && !isCategoryAxis) {\n this.renderMinorGridOnZooming(axis, tempInterval, rect, i, index, chartThemeStyle, parent);\n }\n minorGridDirection = this.drawAxisMinorLine(axis, tempInterval, rect, i);\n this.renderGridLine(axis, index, minorGridDirection[0], minorGridLines, '_MinorGridLine_', i, this.element, chartThemeStyle.minorGridLine, minorGridLines.dashArray);\n this.renderGridLine(axis, index, minorGridDirection[1], minorTickLines, '_MinorTickLine_', i, parent, chartThemeStyle.minorTickLine);\n if (i === length - 1 && isZoomSet(axis) && isLogAxis && !isCategoryAxis) {\n this.renderMinorGridOnZooming(axis, (tempInterval + axis.visibleRange.interval), rect, i, index, chartThemeStyle, parent);\n }\n }\n }\n }\n if (length && this.previousYLabel > length && !this.chart.enableCanvas && axis.visible &&\n this.chart.zoomRedraw && this.chart.redraw) {\n for (var i = length; i < this.previousYLabel; i++) {\n var pointYValue = this.seriesClipRect.y + (axis.isInversed ? ((this.seriesClipRect.height / length) *\n ((i - length) + 1)) + this.seriesClipRect.height : -((this.seriesClipRect.height / length) * ((i - length) + 1)));\n if (axis.majorGridLines.width) {\n majorGrid = 'M ' + this.seriesClipRect.x + ' ' + +pointYValue +\n ' L ' + (this.seriesClipRect.x + this.seriesClipRect.width) + ' ' + pointYValue;\n this.updateAxisElement(axis, index, majorGrid, i, '_MajorGridLine_', this.element, true);\n }\n if (axis.majorTickLines.width) {\n majorTick = 'M ' + this.seriesClipRect.x + ' ' + pointYValue +\n ' L ' + ticks + ' ' + pointYValue;\n this.updateAxisElement(axis, index, majorTick, i, '_MajorTickLine_', parent, true);\n }\n }\n }\n };\n /**\n * To check the border of the axis\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {number} value value\n * @returns {boolean} check the border of the axis\n */\n CartesianAxisLayoutPanel.prototype.isBorder = function (axis, index, value) {\n var border = this.chart.chartArea.border;\n var rect = this.seriesClipRect;\n var orientation = axis.orientation;\n var start = (orientation === 'Horizontal') ? rect.x : rect.y;\n var size = (orientation === 'Horizontal') ? rect.width : rect.height;\n var startIndex = (orientation === 'Horizontal') ? 0 : axis.visibleLabels.length - 1;\n var endIndex = (orientation === 'Horizontal') ? axis.visibleLabels.length - 1 : 0;\n if (axis.plotOffset > 0) {\n return true;\n }\n else if ((value === start || value === (start + size)) && (border.width <= 0 || border.color === 'transparent')) {\n return true;\n }\n else if ((value !== start && index === startIndex) || (value !== (start + size) && index === endIndex)) {\n return true;\n }\n return false;\n };\n /**\n * To render the yAxis label\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Element} parent parent\n * @param {Rect} rect rect\n * @returns {void}\n * @private\n */\n CartesianAxisLayoutPanel.prototype.drawYAxisLabels = function (axis, index, parent, rect) {\n var chart = this.chart;\n var label;\n var pointX = 0;\n var pointY = 0;\n var elementSize;\n var labelSpace = axis.labelPadding;\n var options;\n var isAxisBreakLabel;\n var isLabelInside = axis.labelPosition === 'Inside';\n var isOpposed = axis.isAxisOpposedPosition;\n var RotatedWidth;\n var tickSpace = axis.labelPosition === axis.tickPosition ? axis.majorTickLines.height : 0;\n var padding = tickSpace + labelSpace + axis.lineStyle.width * 0.5;\n var angle = axis.angle % 360;\n var isVerticalAngle = (angle === -90 || angle === 90 || angle === 270 || angle === -270);\n padding += (isVerticalAngle) ? (isLabelInside ? 5 : -5) : 0;\n padding = (isOpposed) ? padding : -padding;\n var labelElement = chart.renderer.createGroup({ id: chart.element.id + 'AxisLabels' + index });\n var scrollBarHeight = isNullOrUndefined(axis.crossesAt) ? axis.scrollBarHeight * (isOpposed ? 1 : -1) : 0;\n var textHeight;\n var textPadding;\n var maxLineWidth;\n var pixel = 10;\n var isInverse = axis.isAxisInverse;\n var count = 1;\n var previousEnd = isInverse ? rect.y : (rect.y + rect.height);\n var labelPadding;\n var intervalLength;\n var labelHeight;\n var yAxisLabelX;\n var isLabelOnAxisLineLeft = ((!isOpposed && !isLabelInside) || (isOpposed && isLabelInside));\n if (isLabelInside) {\n labelPadding = !isLabelOnAxisLineLeft ? -padding : padding;\n }\n else {\n labelPadding = !isLabelOnAxisLineLeft ? -padding + (chart.enableRtl ? -scrollBarHeight : scrollBarHeight) :\n padding + (chart.enableRtl ? -scrollBarHeight : scrollBarHeight);\n }\n var sizeWidth = [];\n var breakLabelSizeWidth = [];\n axis.visibleLabels.map(function (item) {\n sizeWidth.push(item.size['width']);\n breakLabelSizeWidth.push(item.breakLabelSize['width']);\n });\n var LabelMaxWidth = Math.max.apply(Math, sizeWidth);\n var breakLabelMaxWidth = Math.max.apply(Math, breakLabelSizeWidth);\n RotatedWidth = LabelMaxWidth;\n if (angle >= -45 && angle <= 45 && angle !== 0) {\n RotatedWidth = LabelMaxWidth * Math.cos(angle * Math.PI / 180);\n if (RotatedWidth < 0) {\n RotatedWidth = -RotatedWidth;\n }\n }\n for (var i = 0, len = axis.visibleLabels.length; i < len; i++) {\n label = axis.visibleLabels[i];\n isAxisBreakLabel = isBreakLabel(axis.visibleLabels[i].originalText);\n elementSize = isAxisBreakLabel ? axis.visibleLabels[i].breakLabelSize : axis.visibleLabels[i].size;\n pointY = (valueToCoefficient(axis.visibleLabels[i].value, axis) * rect.height) + (chart.stockChart ? 7 : 0);\n pointY = Math.floor((pointY * -1) + (rect.y + rect.height));\n textHeight = ((elementSize.height / 8) * axis.visibleLabels[i].text.length / 2);\n textPadding = (chart.requireInvertedAxis && axis.labelPosition === 'Inside') ? 0 : ((elementSize.height / 4) * 3) + 3;\n intervalLength = rect.height / axis.visibleLabels.length;\n labelHeight = ((axis.labelIntersectAction === 'Trim' || axis.labelIntersectAction === 'Wrap') && angle !== 0 &&\n elementSize.width > intervalLength) ? intervalLength : elementSize.width;\n pointY = (isAxisBreakLabel ? (axis.labelPosition === 'Inside' ? (pointY - (elementSize.height / 2) - textHeight + textPadding)\n : (pointY - textHeight)) : (axis.labelPosition === 'Inside' ? pointY + textPadding : pointY));\n if (axis.labelPosition === 'Inside' && ((i === 0 && !axis.isInversed) || (i === len - 1 && axis.isInversed))) {\n if (chart.stockChart) {\n pointY -= (textPadding);\n }\n else {\n pointY -= (textPadding - ((chart.requireInvertedAxis && axis.labelPosition === 'Inside') ? 0 : (axis.opposedPosition ? -padding : padding)));\n }\n }\n if (axis.majorGridLines.width > axis.majorTickLines.width) {\n maxLineWidth = axis.majorGridLines.width;\n }\n else {\n maxLineWidth = axis.majorTickLines.width;\n }\n if (axis.labelStyle.textAlignment === 'Far') {\n pointY = pointY - maxLineWidth - pixel;\n }\n else if (axis.labelStyle.textAlignment === 'Near') {\n pointY = pointY + maxLineWidth + pixel;\n }\n // label X value adjustment (Start)\n if (isLabelInside) {\n yAxisLabelX = labelPadding + ((angle === 0 ? elementSize.width :\n (isAxisBreakLabel ? breakLabelMaxWidth : LabelMaxWidth)) / 2);\n }\n else {\n yAxisLabelX = labelPadding - ((angle === 0 ? elementSize.width :\n (isAxisBreakLabel ? breakLabelMaxWidth : RotatedWidth)) / 2);\n }\n pointX = isOpposed ? axis.scrollBarHeight !== 0 ? ((rect.x + axis.scrollBarHeight + padding) - yAxisLabelX) :\n (rect.x - yAxisLabelX) : (rect.x + yAxisLabelX);\n if (isVerticalAngle) {\n pointX += (isOpposed) ? 5 : -5;\n }\n yAxisLabelX = labelPadding;\n options = new TextOption(chart.element.id + index + '_AxisLabel_' + i, pointX, pointY, 'middle', label.text, '', 'middle', angle);\n switch (axis.edgeLabelPlacement) {\n case 'None':\n break;\n case 'Hide':\n if (((i === 0 || (isInverse && i === len - 1)) && options.y > rect.y) ||\n (((i === len - 1) || (isInverse && i === 0)) && options.y - elementSize.height * 0.5 < rect.y)) {\n options.text = '';\n }\n break;\n case 'Shift':\n if ((i === 0 || (isInverse && i === len - 1)) && options.y > rect.y + rect.height) {\n options.y = pointY = rect.y + rect.height;\n }\n else if (((i === len - 1) || (isInverse && i === 0)) &&\n (options.y < rect.y || options.y - elementSize.height * 0.5 <= 0)) {\n options.y = pointY = rect.y + elementSize.height * 0.5;\n }\n break;\n }\n // ------- Hide Calculation (Start) -------------\n var previousYValue = options.y;\n var currentYValue = options.y - labelHeight;\n if (isAxisBreakLabel) {\n previousYValue = (options.y - (labelHeight / 2));\n currentYValue = options.y + (labelHeight / 2);\n }\n if ((angle === 90 || angle === 270) && axis.labelIntersectAction === 'Hide' && i !== 0 &&\n (!isInverse ? previousYValue >= previousEnd : currentYValue <= previousEnd)) {\n continue;\n }\n previousEnd = isInverse ? previousYValue : currentYValue;\n // ------- Hide Calculation (End) -------------\n options.transform = 'rotate(' + angle + ',' + pointX + ',' + pointY + ')';\n if (this.chart.redraw && this.chart.zoomRedraw && !getElement(options.id) && !this.chart.enableCanvas && axis.visible) {\n var optionsY = options.y;\n options.y = this.seriesClipRect.y + (axis.isInversed ? this.seriesClipRect.height + ((this.seriesClipRect.height /\n (i ? i : 1)) * count) : -((this.seriesClipRect.height / (i ? i : 1)) * count));\n this.updateAxisElement(axis, index, '', i, '_AxisLabel_', labelElement, false, options, label);\n options.y = optionsY;\n count += 1;\n }\n textElement(chart.renderer, options, label.labelStyle, label.labelStyle.color || chart.themeStyle.axisLabelFont.color, labelElement, false, chart.redraw, true, true, chart.duration, null, null, null, chart.enableCanvas, null, chart.themeStyle.axisLabelFont, new ChartLocation(pointX, pointY));\n }\n if (this.previousYLabel && axis.visibleLabels.length && this.previousYLabel > axis.visibleLabels.length\n && !this.chart.enableCanvas && axis.visible && this.chart.zoomRedraw && chart.redraw && options.text) {\n for (var i = axis.visibleLabels.length; i < this.previousYLabel; i++) {\n options.y = this.seriesClipRect.y + (axis.isInversed ? this.seriesClipRect.height +\n ((this.seriesClipRect.height / axis.visibleLabels.length) * ((i - axis.visibleLabels.length) + 1)) :\n -((this.seriesClipRect.height / axis.visibleLabels.length) * ((i - axis.visibleLabels.length) + 1)));\n options.id = chart.element.id + index + '_AxisLabel_' + i;\n this.updateAxisElement(axis, index, '', i, '_AxisLabel_', labelElement, true, options, label);\n }\n }\n else {\n this.previousYLabel = axis.visibleLabels.length;\n }\n if (!this.chart.enableCanvas) {\n if (!chart.delayRedraw) {\n appendChildElement(chart.enableCanvas, parent, labelElement, chart.redraw);\n }\n else if (axis.visible && axis.internalVisibility) {\n this.createZoomingLabel(this.chart, labelElement, axis, index, rect);\n }\n }\n };\n /**\n * Animates the template element.\n *\n * @param {Axis} axis axis\n * @param {Element} element - The element to animate.\n * @param {number} duration - The duration of the animation.\n * @param {boolean} label - Label.\n * @param {Rect} bounds - The bounding rectangle.\n * @param {boolean} isRemove isRemoved\n * @param {number} i index of the element\n * @returns {void}\n * @private\n */\n CartesianAxisLayoutPanel.prototype.rangeAnimate = function (axis, element, duration, label, bounds, isRemove, i) {\n var _this = this;\n if (element) {\n new Animation({}).animate(element, {\n duration: duration,\n progress: function () {\n var animateElement = getElement(element.id);\n animateElement.style.animation = '';\n if (label) {\n if (withInBounds(parseFloat(animateElement.getAttribute('x')), parseFloat(animateElement.getAttribute('y')), bounds)) {\n animateElement.style.visibility = 'visible';\n }\n else {\n animateElement.style.visibility = 'hidden';\n }\n }\n else {\n var direction = animateElement.getAttribute('d').split(' ');\n if (withInBounds(parseFloat(direction[1]), parseFloat(direction[2]), bounds)) {\n animateElement.style.visibility = 'visible';\n }\n else {\n animateElement.style.visibility = 'hidden';\n }\n }\n },\n end: function () {\n var animateElement = getElement(element.id);\n animateElement.style.visibility = '';\n if (isRemove && i >= axis.visibleLabels.length) {\n removeElement(animateElement);\n if (label) {\n if (axis.orientation === 'Vertical') {\n _this.previousYLabel = axis.visibleLabels.length;\n }\n else {\n _this.previousXLabel = axis.visibleLabels.length;\n }\n }\n }\n }\n });\n }\n };\n /**\n * To get X value based on lineBreakAlignment for Y axis line break labels only.\n *\n * @param {number} x text x position\n * @param {Axis} axis y axis values\n * @param {number} textWidth axis label width\n * @returns {number} returns suitable axis label x position\n */\n CartesianAxisLayoutPanel.prototype.getAxisLabelXvalue = function (x, axis, textWidth) {\n var anchor = axis.lineBreakAlignment;\n var isLabelInside = axis.labelPosition === 'Inside';\n var isOpposed = axis.isAxisOpposedPosition;\n if ((isOpposed && isLabelInside) || (!isOpposed && !isLabelInside)) {\n return (anchor === 'Right' ? x : (anchor === 'Center' ? (x - textWidth / 2) : (x - textWidth)));\n }\n else {\n return (anchor === 'Left' ? x : (anchor === 'Center' ? (x + textWidth / 2) : (x + textWidth)));\n }\n };\n /**\n * To render the yAxis label border.\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Element} parent parent\n * @param {Rect} rect rect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.drawYAxisBorder = function (axis, index, parent, rect) {\n if (axis.border.width > 0) {\n var startY = void 0;\n var pointY = void 0;\n var scrollBarHeight = axis.labelPosition === 'Outside' ? axis.scrollBarHeight : 0;\n var isOpposed = axis.isAxisOpposedPosition;\n scrollBarHeight = (isOpposed ? 1 : -1) * scrollBarHeight;\n var gap = (rect.height / axis.visibleRange.delta) * (axis.valueType === 'DateTime' ? axis.dateTimeInterval\n : axis.visibleRange.interval);\n var endY = void 0;\n var length_1 = axis.maxLabelSize.width + 10 + ((axis.tickPosition === axis.labelPosition) ?\n axis.majorTickLines.height : 0);\n var labelBorder = '';\n var ticksbwtLabel = (axis.valueType === 'Category' && axis.labelPlacement === 'BetweenTicks') ? -0.5 : 0;\n var endX = ((isOpposed && axis.labelPosition === 'Inside') || (!isOpposed\n && axis.labelPosition === 'Outside')) ? rect.x - length_1 + scrollBarHeight : rect.x + length_1 + scrollBarHeight;\n for (var i = 0, len = axis.visibleLabels.length; i < len; i++) {\n pointY = valueToCoefficient(axis.visibleLabels[i].value + ticksbwtLabel, axis);\n pointY = (axis.isAxisInverse ? (1 - pointY) : pointY) * rect.height;\n if (axis.valueType === 'Category' && axis.labelPlacement === 'BetweenTicks') {\n startY = (pointY * -1) + (rect.y + rect.height);\n endY = (pointY * -1) - (gap) + (rect.y + rect.height);\n }\n else {\n startY = (pointY * -1) + gap / 2 + (rect.y + rect.height);\n endY = (pointY * -1) - gap / 2 + (rect.y + rect.height);\n }\n switch (axis.border.type) {\n case 'Rectangle':\n case 'WithoutTopBorder':\n if (startY > (rect.y + rect.height)) {\n labelBorder += ('M' + ' ' + endX + ' ' + (rect.y + rect.height) + ' ' + 'L' + ' ' + endX + ' ' + endY + ' ');\n }\n else if (Math.floor(rect.y) > (endY)) {\n labelBorder += ('M' + ' ' + (rect.x + scrollBarHeight) + ' ' + startY + ' ' + 'L' + ' ' + endX\n + ' ' + startY + ' ' + 'L' + ' ' + endX + ' ' + (rect.y) + ' ');\n }\n else {\n labelBorder += ('M' + ' ' + (rect.x + scrollBarHeight) + ' ' + startY + ' ' + 'L' + ' ' + endX +\n ' ' + startY + ' ' + 'L' + ' ' + endX + ' ' + endY + ' ');\n if (i === axis.visibleLabels.length - 1) {\n labelBorder += ('M' + ' ' + (rect.x + scrollBarHeight) + ' ' + endY + ' ' + 'L' + ' ' +\n endX + ' ' + endY + ' ');\n }\n }\n break;\n case 'WithoutTopandBottomBorder':\n if (!(startY > rect.y + rect.height) && !((endY) < Math.floor(rect.y))) {\n labelBorder += ('M' + ' ' + (rect.x + scrollBarHeight) + ' ' + startY + ' ' + 'L' + ' ' + endX +\n ' ' + startY + ' ' + 'M' + ' ' + endX + ' ' + endY + ' ' +\n 'L' + ' ' + (rect.x + scrollBarHeight) + ' ' + endY);\n }\n break;\n }\n }\n labelBorder += (axis.border.type === 'Rectangle') ? ('M' + ' ' + (rect.x + scrollBarHeight) + ' ' + rect.y + ' ' + 'L' + ' ' +\n (rect.x + scrollBarHeight) + ' ' + (rect.y + rect.height) + ' ') : '';\n if (labelBorder !== '') {\n this.createAxisBorderElement(axis, index, labelBorder, parent);\n }\n }\n for (var i = 0; i < this.chart.visibleSeries.length; i++) {\n if (axis.multiLevelLabels.length > 0 && this.chart.multiLevelLabelModule && this.chart.visibleSeries[i].visible) {\n this.chart.multiLevelLabelModule.renderYAxisMultiLevelLabels(axis, index, parent, rect);\n break;\n }\n }\n };\n /**\n * To render the yAxis title\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Element} parent parent\n * @param {Rect} rect rect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.drawYAxisTitle = function (axis, index, parent, rect) {\n if (axis.title) {\n var chart = this.chart;\n var isRotated = false;\n var isOpposed = axis.isAxisOpposedPosition;\n var labelRotation = (axis.titleRotation == null ? (isOpposed ? 90 : -90) : axis.titleRotation) % 360;\n var padding = (axis.tickPosition === 'Inside' ? 0 : axis.majorTickLines.height + axis.titlePadding) +\n (axis.labelPosition === 'Inside' ? 0 :\n (axis.maxLabelSize.width + axis.multiLevelLabelHeight + this.padding));\n padding = isOpposed ? padding + axis.scrollBarHeight : -padding - axis.scrollBarHeight;\n if ((labelRotation !== -90 && !isOpposed) || (labelRotation !== 90 && isOpposed)) {\n padding += axis.isAxisOpposedPosition ? axis.titleSize.width / 2 + axis.labelPadding :\n -axis.titleSize.width / 2 - axis.labelPadding;\n isRotated = true;\n }\n var x = rect.x + padding;\n var y = void 0;\n var anchor = void 0;\n if (axis.titleStyle.textAlignment === 'Center') {\n anchor = 'middle';\n y = rect.y + rect.height * 0.5;\n }\n else if (axis.titleStyle.textAlignment === 'Near') {\n anchor = axis.opposedPosition ? 'end' : 'start';\n y = rect.height + rect.y;\n }\n else {\n anchor = axis.opposedPosition ? 'start' : 'end';\n y = rect.y;\n }\n var titleSize = (axis.titleSize.height * (axis.titleCollection.length - 1));\n var options = new TextOption(chart.element.id + '_AxisTitle_' + index, x, y + (isRotated ? -titleSize : -axis.labelPadding - titleSize), anchor, axis.titleCollection, 'rotate(' + labelRotation + ',' + (x) + ',' + (y) + ')', null, labelRotation);\n var element = textElement(chart.renderer, options, axis.titleStyle, axis.titleStyle.color || chart.themeStyle.axisTitleFont.color, parent, null, null, null, null, null, null, null, null, chart.enableCanvas, null, chart.themeStyle.axisTitleFont, new ChartLocation(x, y));\n element.setAttribute('aria-hidden', 'true');\n }\n };\n /**\n * xAxis grid line calculation performed here\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Element} parent parent\n * @param {Rect} rect rect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.drawXAxisGridLine = function (axis, index, parent, rect) {\n var isLogAxis = axis.valueType === 'Logarithmic';\n var isCategoryAxis = axis.valueType.indexOf('Category') > -1;\n var tempInterval;\n var pointX = 0;\n var majorGrid = '';\n var majorTick = '';\n var minorDirection;\n var count = 1;\n var isOpposed = axis.isAxisOpposedPosition;\n var tickSize = (isOpposed) ? -axis.majorTickLines.height : axis.majorTickLines.height;\n var axisLineSize = (isOpposed) ? -axis.lineStyle.width * 0.5 : axis.lineStyle.width * 0.5;\n var scrollBarHeight = isNullOrUndefined(axis.crossesAt) ? isOpposed ? -axis.scrollBarHeight :\n axis.scrollBarHeight : 0;\n var ticksbwtLabel = (axis.valueType.indexOf('Category') > -1 && axis.labelPlacement === 'BetweenTicks' && !this.chart.stockChart) ?\n 0.5 : 0;\n var length = axis.visibleLabels.length;\n var isTickInside = axis.tickPosition === 'Inside';\n var ticks = isTickInside ? (rect.y - tickSize - axisLineSize) : (rect.y + tickSize + axisLineSize + scrollBarHeight);\n var chartThemeStyle = this.chart.themeStyle;\n if (axis.valueType.indexOf('Category') > -1 && length > 0 && axis.labelPlacement === 'BetweenTicks' && !this.chart.stockChart) {\n length += 1;\n }\n var numericIDs = this.calculateGridLineId(parent, length);\n for (var i = 0; i < length; i++) {\n if (axis.valueType !== 'DateTimeCategory') {\n tempInterval = axis.visibleLabels[i] ? axis.visibleLabels[i].value - ticksbwtLabel\n : (axis.visibleLabels[i - 1].value + axis.visibleRange.interval) - ticksbwtLabel;\n }\n else {\n tempInterval = axis.visibleLabels[i] ?\n axis.visibleLabels[i].value - ticksbwtLabel : axis.visibleRange.max;\n }\n pointX = (valueToCoefficient(tempInterval, axis) * rect.width) + rect.x;\n if (pointX >= rect.x && (rect.x + rect.width) >= pointX) {\n if (inside(tempInterval, axis.visibleRange) || this.isBorder(axis, i, pointX)) {\n if (this.chart.redraw && ((this.chart.pointsAdded && !this.chart.pointsRemoved) || this.chart.zoomRedraw) &&\n axis.majorGridLines.width && i !== 0 && axis.visible &&\n !getElement(this.chart.element.id + '_MajorGridLine_' + index + '_' + i) && !this.chart.enableCanvas) {\n var pointXValue = this.seriesClipRect.x + ((this.chart.enableRtl !== axis.isInversed) ?\n -((this.seriesClipRect.width / length) * count) : this.seriesClipRect.width +\n ((this.seriesClipRect.width / (i ? i : 1)) * count));\n majorGrid = 'M ' + pointXValue + ' ' + (this.seriesClipRect.y + this.seriesClipRect.height) +\n ' L ' + pointXValue + ' ' + this.seriesClipRect.y;\n this.renderGridLine(axis, index, majorGrid, axis.majorGridLines, '_MajorGridLine_', i, this.element, chartThemeStyle.majorGridLine, axis.majorGridLines.dashArray, (numericIDs['MajorGridLine'] && numericIDs['MajorGridLine'].ids ? numericIDs['MajorGridLine'].ids[i] : null), numericIDs['MajorGridLine'] ? numericIDs['MajorGridLine'].isPointRemoved : false);\n this.rangeAnimate(axis, this.element.childNodes[this.element.childNodes.length - 1], this.chart.duration, false, new Rect(this.seriesClipRect.x, axis.rect.y, this.seriesClipRect.x +\n this.seriesClipRect.width, this.chart.availableSize.height), false, i);\n getElement(parent.id).appendChild(this.element.childNodes[this.element.childNodes.length - 1]);\n }\n majorGrid = 'M ' + pointX + ' ' + (this.seriesClipRect.y + this.seriesClipRect.height) +\n ' L ' + pointX + ' ' + this.seriesClipRect.y;\n this.renderGridLine(axis, index, majorGrid, axis.majorGridLines, '_MajorGridLine_', i, this.element, chartThemeStyle.majorGridLine, axis.majorGridLines.dashArray, (numericIDs['MajorGridLine'] && numericIDs['MajorGridLine'].ids ? numericIDs['MajorGridLine'].ids[i] : null), numericIDs['MajorGridLine'] ? numericIDs['MajorGridLine'].isPointRemoved : false);\n }\n if (this.chart.redraw && this.chart.zoomRedraw && axis.majorTickLines.width && !getElement(this.chart.element.id + '_MajorTickLine_' + index + '_' + i) && !this.chart.enableCanvas && axis.visible) {\n majorTick = 'M ' + (this.seriesClipRect.x + ((this.chart.enableRtl !== axis.isInversed) ? -((this.seriesClipRect.width / length) * count) : this.seriesClipRect.width + ((this.seriesClipRect.width / (i ? i : 1)) * count))) + ' ' + (rect.y + axisLineSize + (isTickInside ? scrollBarHeight : 0))\n + ' L ' + (this.seriesClipRect.x + ((this.chart.enableRtl !== axis.isInversed) ? -((this.seriesClipRect.width / length) * count) : this.seriesClipRect.width + ((this.seriesClipRect.width / (i ? i : 1)) * count))) + ' ' + ticks;\n this.updateAxisElement(axis, index, majorTick, i, '_MajorTickLine_', parent, false);\n getElement(parent.id).appendChild(this.element.childNodes[this.element.childNodes.length - 1]);\n count += 1;\n }\n majorTick = 'M ' + (pointX) + ' ' + (rect.y + axisLineSize + (isTickInside ? scrollBarHeight : 0))\n + ' L ' + (pointX) + ' ' + ticks;\n this.renderGridLine(axis, index, majorTick, axis.majorTickLines, '_MajorTickLine_', i, parent, chartThemeStyle.majorTickLine, null, (numericIDs['MajorTickLine'] && numericIDs['MajorTickLine'].ids ? numericIDs['MajorTickLine'].ids[i] : null), numericIDs['MajorTickLine'] ? numericIDs['MajorTickLine'].isPointRemoved : false);\n if (axis.minorTicksPerInterval > 0 && (axis.minorGridLines.width > 0 || axis.minorTickLines.width > 0)) {\n if (i === 0 && isZoomSet(axis) && !isLogAxis && !isCategoryAxis) {\n this.renderMinorGridOnZooming(axis, tempInterval, rect, i, index, chartThemeStyle, parent);\n }\n minorDirection = this.drawAxisMinorLine(axis, tempInterval, rect, i);\n this.renderGridLine(axis, index, minorDirection[0], axis.minorGridLines, '_MinorGridLine_', i, this.element, chartThemeStyle.minorGridLine, axis.minorGridLines.dashArray, (numericIDs['MinorGridLine'] && numericIDs['MinorGridLine'].ids ? numericIDs['MinorGridLine'].ids[i] : null), numericIDs['MinorGridLine'] ? numericIDs['MinorGridLine'].isPointRemoved : false);\n this.renderGridLine(axis, index, minorDirection[1], axis.minorTickLines, '_MinorTickLine_', i, parent, chartThemeStyle.minorTickLine, null, (numericIDs['MinorTickLine'] && numericIDs['MinorTickLine'].ids ? numericIDs['MinorTickLine'].ids[i] : null), numericIDs['MinorTickLine'] ? numericIDs['MinorTickLine'].isPointRemoved : false);\n if (i === length - 1 && isZoomSet(axis) && isLogAxis && !isCategoryAxis) {\n this.renderMinorGridOnZooming(axis, (tempInterval + axis.visibleRange.interval), rect, i, index, chartThemeStyle, parent);\n }\n }\n }\n }\n if (length && this.previousXLabel > length && !this.chart.enableCanvas && axis.visible &&\n this.chart.zoomRedraw && this.chart.redraw) {\n for (var i = length; i < this.previousXLabel; i++) {\n var pointXValue = this.seriesClipRect.x + ((this.chart.enableRtl !== axis.isInversed) ?\n -((this.seriesClipRect.width / length) * ((i - length) + 1)) :\n this.seriesClipRect.width + ((this.seriesClipRect.width / length) * ((i - length) + 1)));\n if (axis.majorGridLines.width) {\n majorGrid = 'M ' + pointXValue + ' ' + (this.seriesClipRect.y + this.seriesClipRect.height) +\n ' L ' + pointXValue + ' ' + this.seriesClipRect.y;\n this.updateAxisElement(axis, index, majorGrid, i, '_MajorGridLine_', this.element, true);\n }\n if (axis.majorTickLines.width) {\n majorTick = 'M ' + (pointXValue) + ' ' + (rect.y + axisLineSize + (isTickInside ? scrollBarHeight : 0))\n + ' L ' + (pointXValue) + ' ' + ticks;\n this.updateAxisElement(axis, index, majorTick, i, '_MajorTickLine_', parent, true);\n }\n }\n }\n };\n CartesianAxisLayoutPanel.prototype.calculateGridLineId = function (parent, length) {\n var _this = this;\n var numericIDs = {};\n if (this.chart.pointsRemoved) {\n var elementTypes = ['MajorGridLine', 'MajorTickLine', 'MinorGridLine', 'MinorTickLine'];\n elementTypes.forEach(function (type) {\n var parentElement = getElement(parent.id);\n var elements = parentElement.querySelectorAll('[id*=\"_' + type + '_\"]');\n var elementArray = [];\n for (var i = 0; i < elements.length; i++) {\n elementArray.push(elements[i]);\n }\n var len = type === 'MajorGridLine' && _this.chart.chartArea.border.width ? length - 2 : length;\n len = type === 'MinorGridLine' || type === 'MinorTickLine' ? length - 1 : len;\n if (elementArray.length > 0 && elementArray.length > len) {\n var elementsLength = elementArray.length;\n for (var k = 0; k < elementsLength - len; k++) {\n if (elementArray[k]) {\n parentElement.removeChild(elementArray[k]);\n }\n elementArray.shift();\n }\n var numericIds = elementArray.map(function (element) {\n var parts = element.id.split('_');\n return parseInt(parts[parts.length - 1], 10);\n });\n numericIDs[type] = {\n ids: numericIds,\n isPointRemoved: true\n };\n }\n });\n }\n return numericIDs;\n };\n /**\n * To render missing minor grid lines while zooming\n *\n * @param {Axis} axis axis\n * @param {number} tempInterval tempInterval\n * @param {Rect} rect rect\n * @param {number} i i\n * @param {number} index index\n * @param {IThemeStyle} chartThemeStyle chartThemeStyle\n * @param {Element} parent parent\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.renderMinorGridOnZooming = function (axis, tempInterval, rect, i, index, chartThemeStyle, parent) {\n var minorDirection = this.drawAxisMinorLine(axis, tempInterval, rect, i, true);\n this.renderGridLine(axis, index, minorDirection[0], axis.minorGridLines, '_MinorGridLine_', -1, this.element, chartThemeStyle.minorGridLine, axis.minorGridLines.dashArray);\n this.renderGridLine(axis, index, minorDirection[1], axis.minorTickLines, '_MinorTickLine_', -1, parent, chartThemeStyle.minorTickLine);\n };\n /**\n * To calcualte the axis minor line\n *\n * @param {Axis} axis axis\n * @param {number} tempInterval tempInterval\n * @param {Rect} rect rect\n * @param {number} labelIndex labelIndex\n * @param {boolean} isFirstLabel isFirstLabel\n * @returns {string[]} axis minor line path\n */\n CartesianAxisLayoutPanel.prototype.drawAxisMinorLine = function (axis, tempInterval, rect, labelIndex, isFirstLabel) {\n var value = tempInterval;\n var coor = 0;\n var position = 0;\n var range = axis.visibleRange;\n var isTickInside = axis.tickPosition === 'Inside';\n var direction = [];\n var tickSize = axis.isAxisOpposedPosition ? -axis.minorTickLines.height : axis.minorTickLines.height;\n var logStart;\n var logEnd;\n var logInterval = 1;\n var logPosition = 1;\n var ticksX = isTickInside ? (rect.y - tickSize) : (rect.y + tickSize);\n var ticksY = isTickInside ? (rect.x + tickSize) : (rect.x - tickSize);\n var minorGird = '';\n var minorTick = '';\n var isInverse = axis.isAxisInverse;\n if (axis.valueType === 'Logarithmic') {\n logStart = Math.pow(axis.logBase, value - range.interval);\n logEnd = Math.pow(axis.logBase, value);\n logInterval = (logEnd - logStart) / (axis.minorTicksPerInterval + 1);\n logPosition = logStart + logInterval;\n }\n if (axis.orientation === 'Horizontal') {\n for (var j = 0; j < axis.minorTicksPerInterval; j++) {\n value = this.findLogNumeric(axis, logPosition, value, labelIndex, isFirstLabel);\n logPosition += logInterval;\n if (inside(value, range)) {\n position = ((value - range.min) / (range.max - range.min));\n position = Math.ceil((isInverse ? (1 - position) : position) * rect.width);\n coor = (Math.floor(position + rect.x));\n minorGird = minorGird.concat('M' + ' ' + coor + ' ' + (this.seriesClipRect.y)\n + 'L ' + coor + ' ' + (this.seriesClipRect.y + this.seriesClipRect.height));\n coor = (Math.floor(position + rect.x));\n minorTick = minorTick.concat('M' + ' ' + coor + ' ' + (rect.y)\n + 'L ' + coor + ' ' + (ticksX + axis.scrollBarHeight));\n }\n }\n }\n else {\n for (var j = 0; j < axis.minorTicksPerInterval; j++) {\n value = this.findLogNumeric(axis, logPosition, value, labelIndex, isFirstLabel);\n if (inside(value, range)) {\n position = ((value - range.min) / (range.max - range.min));\n position = Math.ceil(((isInverse ? (1 - position) : position)) * rect.height) * -1; // For inversed axis\n coor = (Math.floor(position + rect.y + rect.height));\n minorGird = minorGird.concat('M' + ' ' + (this.seriesClipRect.x) + ' ' + coor\n + 'L ' + (this.seriesClipRect.x + this.seriesClipRect.width) + ' ' + coor + ' ');\n coor = (Math.floor(position + rect.y + rect.height));\n minorTick = minorTick.concat('M' + ' ' + rect.x + ' ' + coor + 'L ' + (ticksY - axis.scrollBarHeight) +\n ' ' + coor + ' ');\n }\n logPosition += logInterval;\n }\n }\n direction.push(minorGird);\n direction.push(minorTick);\n return direction;\n };\n /**\n * To find the numeric value of the log\n *\n * @param {Axis} axis axis\n * @param {number} logPosition logPosition\n * @param {number} value value\n * @param {number} labelIndex labelIndex\n * @param {boolean} isFirstLabel isFirstLabel\n * @returns {number} value\n */\n CartesianAxisLayoutPanel.prototype.findLogNumeric = function (axis, logPosition, value, labelIndex, isFirstLabel) {\n var range = axis.visibleRange;\n var tempValue;\n if (axis.valueType === 'Logarithmic') {\n value = logBase(logPosition, axis.logBase);\n }\n else if (axis.valueType === 'DateTime') {\n tempValue = axis.dateTimeInterval / (axis.minorTicksPerInterval + 1);\n value = isFirstLabel ? (value - tempValue) : (value + tempValue);\n }\n else if (axis.valueType === 'DateTimeCategory') {\n var padding = axis.labelPlacement === 'BetweenTicks' ? 0.5 : 0;\n value += ((axis.visibleLabels[labelIndex + 1] ?\n axis.visibleLabels[labelIndex + 1].value - padding : axis.visibleRange.max) -\n (axis.visibleLabels[labelIndex] ?\n axis.visibleLabels[labelIndex].value - padding : axis.visibleRange.min)) /\n (axis.minorTicksPerInterval + 1);\n }\n else {\n tempValue = range.interval / (axis.minorTicksPerInterval + 1);\n value = isFirstLabel ? (value - tempValue) : (value + tempValue);\n }\n return value;\n };\n /**\n * To render the xAxis Labels\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Element} parent parent\n * @param {Rect} rect rect\n * @returns {void}\n * @private\n */\n CartesianAxisLayoutPanel.prototype.drawXAxisLabels = function (axis, index, parent, rect) {\n var chart = this.chart;\n var pointX = 0;\n var pointY = 0;\n var labelSpace = axis.labelPadding;\n var labelHeight;\n var elementSize;\n var labelPadding;\n var anchor;\n var pixel = 10;\n var labelElement = chart.renderer.createGroup({ id: chart.element.id + 'AxisLabels' + index });\n var islabelInside = axis.labelPosition === 'Inside';\n var isOpposed = axis.isAxisOpposedPosition;\n var tickSpace = axis.labelPosition === axis.tickPosition ? axis.majorTickLines.height : 0;\n var padding = tickSpace + labelSpace + axis.lineStyle.width * 0.5;\n var angle = axis.angle % 360;\n var isHorizontalAngle = (angle === 0 || angle === -180 || angle === 180);\n var options;\n var labelWidth;\n var isInverse = axis.isAxisInverse;\n var isLeft;\n var count = 1;\n var previousEnd = isInverse ? (rect.x + rect.width) : rect.x;\n var width = 0;\n var length = axis.visibleLabels.length;\n var intervalLength;\n var label;\n var isAxisBreakLabel;\n var scrollBarHeight = axis.scrollbarSettings.enable || (!islabelInside && isNullOrUndefined(axis.crossesAt)\n && (axis.zoomFactor < 1 || axis.zoomPosition > 0)) ? axis.scrollBarHeight : 0;\n var newPoints = [];\n var isRotatedLabelIntersect = false;\n var textPoints = [];\n var rotatedLabelSize = new Size(0, 0);\n padding += (angle === 90 || angle === 270 || angle === -90 || angle === -270) ? (islabelInside ? 5 : -5) : 0;\n var isLabelUnderAxisLine = ((!isOpposed && !islabelInside) || (isOpposed && islabelInside));\n var axislabelElement = getElement(chart.element.id + 'AxisLabels' + index);\n var pointsRemoved = this.removeAxisLabelElements(axis, axislabelElement);\n var isEndAnchor = isLabelUnderAxisLine ?\n ((360 >= angle && angle >= 180) || (-1 >= angle && angle >= -180)) :\n ((1 <= angle && angle <= 180) || (-181 >= angle && angle >= -360));\n for (var i = 0, len = length; i < len; i++) {\n label = axis.visibleLabels[i];\n isAxisBreakLabel = isBreakLabel(label.originalText) || (axis.labelIntersectAction === 'Wrap' && label.text.length > 1);\n pointX = (valueToCoefficient(label.value, axis) * rect.width) + rect.x;\n elementSize = label.size;\n intervalLength = rect.width / length;\n labelWidth = isAxisBreakLabel ? label.breakLabelSize.width : elementSize.width;\n width = ((axis.labelIntersectAction === 'Trim' || axis.labelIntersectAction === 'Wrap') && angle === 0 &&\n labelWidth > intervalLength) ? intervalLength : labelWidth;\n labelHeight = elementSize.height / 4;\n pointX -= (isAxisBreakLabel || angle !== 0) ? 0 : (width / 2);\n // label X value adjustment for label rotation (Start)\n if (angle !== 0) {\n if (isAxisBreakLabel) {\n pointX -= axis.lineBreakAlignment === 'Left' ? (label.breakLabelSize.width / 2) : axis.lineBreakAlignment === 'Right' ?\n -(label.breakLabelSize.width / 2) : 0;\n }\n else {\n pointX -= (angle === -90 || angle === 270 ? -labelHeight : (angle === 90 || angle === -270) ? labelHeight : 0);\n }\n }\n // label X value adjustment for label rotation (End)\n if (axis.labelStyle.textAlignment === 'Far') {\n pointX = pointX + width - pixel;\n }\n else if (axis.labelStyle.textAlignment === 'Near') {\n pointX = pointX - width + pixel;\n }\n // For line break label alignment like left, right & center in angle 0\n if (isAxisBreakLabel && axis.lineBreakAlignment !== 'Center' && angle === 0) {\n pointX += axis.lineBreakAlignment === 'Left' ? -(width / 2) : (width / 2);\n }\n var paddingForBreakLabel = isAxisBreakLabel ?\n (isHorizontalAngle ? (axis.opposedPosition || islabelInside ? 0 : elementSize.height) :\n (label.breakLabelSize.width / 2)) : 0;\n padding = isAxisBreakLabel ? (tickSpace + labelSpace + axis.lineStyle.width * 0.5) : padding;\n // label Y value adjustment (Start)\n if (islabelInside && angle) {\n if (isAxisBreakLabel) {\n pointY = isOpposed ? (rect.y + padding + (paddingForBreakLabel)) : (rect.y - padding - (paddingForBreakLabel));\n }\n else {\n pointY = isOpposed ? (rect.y + padding + labelHeight) : (rect.y - padding - labelHeight);\n }\n }\n else {\n if (isAxisBreakLabel) {\n labelPadding = !isLabelUnderAxisLine ? -(padding + scrollBarHeight + (paddingForBreakLabel)) :\n padding + scrollBarHeight + (angle ? paddingForBreakLabel : (3 * labelHeight));\n }\n else {\n labelPadding = !isLabelUnderAxisLine ?\n -(padding + scrollBarHeight + (angle ? labelHeight : (label.index > 1 ? (2 * labelHeight) : 0))) :\n padding + scrollBarHeight + ((angle ? 1 : 3) * labelHeight);\n }\n pointY = (rect.y + (labelPadding * label.index));\n }\n // label Y value adjustment (End)\n if (isAxisBreakLabel) {\n anchor = this.getAnchor(axis); // for break label self alignment\n }\n else {\n anchor = (chart.enableRtl) ? ((isEndAnchor) ? '' : 'end') : (chart.isRtlEnabled || isEndAnchor) ? 'end' : '';\n }\n options = new TextOption(chart.element.id + index + '_AxisLabel_' + i, pointX, pointY, anchor);\n options.id = pointsRemoved && axislabelElement &&\n axislabelElement.children[i] ? axislabelElement.children[i].id : options.id;\n if (angle !== 0) {\n rotatedLabelSize = rotateTextSize(label.labelStyle, label.originalText, angle, chart, chart.themeStyle.axisLabelFont);\n isLeft = ((angle < 0 && angle > -90) || (angle < -180 && angle > -270) ||\n (angle > 90 && angle < 180) || (angle > 270 && angle < 360));\n }\n if (axis.edgeLabelPlacement) {\n switch (axis.edgeLabelPlacement) {\n case 'None':\n break;\n case 'Hide':\n if (((i === 0 || (isInverse && i === len - 1)) && options.x < rect.x) ||\n ((i === len - 1 || (isInverse && i === 0)) &&\n (options.x + (angle === 0 ? width : rotatedLabelSize.width) > rect.x + rect.width))) {\n continue;\n }\n break;\n case 'Shift':\n if ((i === 0 || (isInverse && i === len - 1)) && (options.x < rect.x || (angle !== 0 && isLeft && options.x - rotatedLabelSize.width <= rect.x) || (axis.lineBreakAlignment === 'Center' && options.x - (label.size.width / label.text.length) / 2 < rect.x && angle === 0))) {\n intervalLength -= (rect.x - options.x);\n if (anchor === '' && !isInverse && angle === 0) {\n if (options.x <= 0) {\n pointX = options.x = 0;\n }\n else {\n pointX = options.x;\n }\n intervalLength = rect.width / length;\n }\n else if (isLeft && angle !== 0) {\n intervalLength = rect.width / length;\n if (rect.x + intervalLength > options.x + rotatedLabelSize.width) {\n options.x = pointX = rect.x + padding;\n }\n else {\n options.x = pointX = rect.x + intervalLength - padding;\n }\n }\n else if (isAxisBreakLabel && axis.lineBreakAlignment === 'Center' && axis.labelPlacement === 'OnTicks' && angle === 0) {\n var maxWidth = 0;\n for (var i_1 = 0; i_1 < label.text.length; i_1++) {\n var breakLabelWidth = measureText(label.text[i_1], axis.labelStyle, chart.themeStyle.axisLabelFont).width;\n if (breakLabelWidth > maxWidth) {\n maxWidth = breakLabelWidth;\n }\n }\n options.x = pointX = rect.x + maxWidth / 2;\n }\n else if (!(anchor === 'start' && options.x > 0)) {\n options.x = pointX = !isHorizontalAngle ? rect.x + padding : rect.x;\n }\n }\n else if ((i === len - 1 || (isInverse && i === 0)) && (((options.x + width) > rect.x + rect.width && anchor !== 'end' && angle === 0) || (angle !== 0 && !isLeft && (options.x + rotatedLabelSize.width) > rect.x + rect.width) || (anchor === 'end' && options.x > rect.x + rect.width))) {\n if (elementSize.width > intervalLength && axis.labelIntersectAction === 'Trim' && angle === 0) {\n intervalLength -= (options.x + width - (rect.x + rect.width));\n }\n else if (angle !== 0) {\n if (rotatedLabelSize.width < intervalLength) {\n intervalLength = rotatedLabelSize.width;\n }\n }\n else {\n intervalLength = width;\n }\n if (angle !== 0) {\n options.x = pointX = rect.x + rect.width - intervalLength + padding;\n }\n else {\n options.x = pointX = !isHorizontalAngle ? rect.x + rect.width - intervalLength / 2 :\n rect.x + rect.width - intervalLength;\n }\n }\n break;\n }\n }\n options.text = this.getLabelText(label, axis, intervalLength);\n options.labelRotation = angle;\n // ------- Hide Calculation (Start) -------------\n // Currect label actual start value (Start)\n var xValue = void 0;\n var xValue2 = void 0;\n if (isAxisBreakLabel && angle === 0) {\n if (axis.lineBreakAlignment === 'Right') {\n xValue = (options.x - width);\n xValue2 = options.x;\n }\n else if (axis.lineBreakAlignment === 'Center') {\n xValue = (options.x - (width / 2));\n xValue2 = options.x + (width / 2);\n }\n else {\n xValue = options.x;\n xValue2 = options.x + width;\n }\n }\n else {\n xValue = options.x;\n xValue2 = options.x + width;\n }\n // Currect label actual start value (End)\n if (angle === 0 && axis.labelIntersectAction === 'Hide' && i !== 0 &&\n (!isInverse ? xValue <= previousEnd : xValue2 >= previousEnd)) {\n continue;\n }\n // Previous label actual end value (Start)\n if (isAxisBreakLabel) {\n if (axis.lineBreakAlignment === 'Right') {\n previousEnd = isInverse ? (options.x - width) : options.x;\n }\n else if (axis.lineBreakAlignment === 'Center') {\n previousEnd = isInverse ? (options.x - (width / 2)) : options.x + (width / 2);\n }\n else {\n previousEnd = isInverse ? options.x : options.x + width;\n }\n }\n else {\n previousEnd = isInverse ? options.x : options.x + width;\n }\n // Previous label actual end value (End)\n // ------- Hide Calculation (End) -------------\n // label Rotataion calculation (Start)\n if (angle !== 0) {\n var height = void 0;\n var rect_1 = void 0;\n if (isAxisBreakLabel) {\n var xAdjustment = 0;\n var yAdjustment = 0;\n height = (label.breakLabelSize.height);\n yAdjustment = (label.breakLabelSize.height) - 4; // 4 for label bound correction\n // xAdjustment (Start)\n if (axis.lineBreakAlignment === 'Center') {\n xAdjustment = -(label.breakLabelSize.width / 2);\n }\n else if (axis.lineBreakAlignment === 'Right') {\n xAdjustment = -label.breakLabelSize.width;\n }\n // xAdjustment (End)\n if (isLabelUnderAxisLine) {\n yAdjustment = (label.breakLabelSize.height) / (options.text.length + 1);\n }\n rect_1 = new Rect(options.x + xAdjustment, options.y - (yAdjustment), label.breakLabelSize.width, height);\n }\n else {\n height = (pointY) - (options.y - ((label.size.height / 2)));\n rect_1 = new Rect(options.x, options.y - ((label.size.height / 2) - 5), label.size.width, height);\n }\n var rectCoordinates = this.getRectanglePoints(rect_1);\n var rectCenterX = isAxisBreakLabel ? rect_1.x + (rect_1.width / 2) : pointX;\n var rectCenterY = isAxisBreakLabel ? rect_1.y + (rect_1.height / 2) : (pointY - (height / 2));\n if (isAxisBreakLabel) {\n options.transform = 'rotate(' + angle + ',' + rectCenterX + ',' + rectCenterY + ')';\n }\n else {\n options.transform = 'rotate(' + angle + ',' + pointX + ',' + pointY + ')';\n }\n newPoints.push(getRotatedRectangleCoordinates(rectCoordinates, rectCenterX, rectCenterY, angle));\n isRotatedLabelIntersect = false;\n if (axis.labelIntersectAction !== 'None') {\n for (var index_1 = i; index_1 > 0; index_1--) {\n if (newPoints[i] && newPoints[index_1 - 1] &&\n isRotatedRectIntersect(newPoints[i], newPoints[index_1 - 1])) {\n isRotatedLabelIntersect = true;\n newPoints[i] = null;\n break;\n }\n }\n }\n var rotateAngle = ((angle > 0 && angle < 90) || (angle > 180 && angle < 270) ||\n (angle < -90 && angle > -180) || (angle < -270 && angle > -360));\n var textRect = new Rect(options.x, options.y - (elementSize.height / 2 + padding / 2), label.size.width, height);\n var textRectCoordinates = this.getRectanglePoints(textRect);\n var rectPoints = [];\n rectPoints.push(new ChartLocation(rotateAngle ? this.chart.availableSize.width : this.padding, axis.rect.y));\n rectPoints.push(new ChartLocation(rotateAngle ? this.chart.availableSize.width :\n this.padding, axis.rect.y + axis.maxLabelSize.height));\n textPoints.push(getRotatedRectangleCoordinates(textRectCoordinates, rectCenterX, rectCenterY, angle));\n var newRect = new Rect(0, axis.rect.y, this.chart.availableSize.width, axis.maxLabelSize.height * 2);\n for (var k = 0; k < textPoints[i].length; k++) {\n if (!axis.opposedPosition && !withInBounds(textPoints[i][k].x, textPoints[i][k].y, newRect) && typeof options.text === 'string') {\n var interSectPoint = this.calculateIntersection(textPoints[i][0], textPoints[i][1], rectPoints[0], rectPoints[1]);\n var rectPoint1 = rotateAngle ? this.chart.availableSize.width - pointX : pointX;\n var rectPoint2 = interSectPoint.y - axis.rect.y;\n var trimValue = Math.sqrt((rectPoint1 * rectPoint1) + (rectPoint2 * rectPoint2));\n options.text = textTrim(trimValue, label.text, label.labelStyle, chart.enableRtl, chart.themeStyle.axisLabelFont);\n }\n }\n }\n if (this.chart.redraw && ((chart.pointsAdded && !chart.pointsRemoved) || this.chart.zoomRedraw) &&\n !getElement(options.id) && i !== 0 && !this.chart.enableCanvas && axis.visible) {\n var optionsX = options.x;\n options.x = this.seriesClipRect.x + ((chart.enableRtl !== axis.isInversed) ? -((this.seriesClipRect.width / (i ? i : 1))\n * count) : this.seriesClipRect.width + (this.seriesClipRect.width / (i ? i : 1)) * count);\n var transform = options.transform;\n options.transform = angle ? 'rotate(' + angle + ',' + options.x + ',' + parseFloat(options.transform.split(',')[2]) + ')' : '';\n var element_1 = textElement(chart.renderer, options, label.labelStyle, label.labelStyle.color || chart.themeStyle.axisLabelFont.color, labelElement, (axis.isAxisOpposedPosition !== (axis.labelPosition === 'Inside')), chart.redraw, true, null, chart.duration, null, label.size, isRotatedLabelIntersect, chart.enableCanvas, null, chart.themeStyle.axisLabelFont);\n this.rangeAnimate(axis, element_1, this.chart.duration, true, new Rect(this.seriesClipRect.x, axis.rect.y, this.seriesClipRect.x + this.seriesClipRect.width, this.chart.availableSize.height), false, i);\n options.x = optionsX;\n options.transform = transform;\n count += 1;\n }\n // label Rotataion calculation (End)\n var element = textElement(chart.renderer, options, label.labelStyle, label.labelStyle.color || chart.themeStyle.axisLabelFont.color, labelElement, (axis.isAxisOpposedPosition !== (axis.labelPosition === 'Inside')), chart.redraw, true, null, chart.duration, null, label.size, isRotatedLabelIntersect, chart.enableCanvas, null, chart.themeStyle.axisLabelFont, new ChartLocation(parseFloat(options.transform.split(',')[1]), parseFloat(options.transform.split(',')[2])));\n if (pointsRemoved) {\n element.id = chart.element.id + index + '_AxisLabel_' + i;\n }\n }\n if (this.previousXLabel && length && this.previousXLabel > length && !this.chart.enableCanvas &&\n axis.visible && this.chart.zoomRedraw && this.chart.redraw && options.text) {\n for (var i = length; i < this.previousXLabel; i++) {\n options.x = this.seriesClipRect.x + ((chart.enableRtl !== axis.isInversed) ? -((this.seriesClipRect.width / length) *\n (i - length + 1)) : this.seriesClipRect.width + ((this.seriesClipRect.width / length) * (i - length + 1)));\n options.id = chart.element.id + index + '_AxisLabel_' + i;\n options.transform = angle ? 'rotate(' + angle + ',' + options.x + ',' + parseFloat(options.transform.split(',')[2]) + ')' : '';\n this.updateAxisElement(axis, index, '', i, '_AxisLabel_', labelElement, true, options, label);\n }\n }\n else {\n this.previousXLabel = length;\n }\n if (!this.chart.enableCanvas) {\n if (!chart.delayRedraw) {\n parent.appendChild(labelElement);\n }\n else if (axis.visible && axis.internalVisibility) {\n this.createZoomingLabel(this.chart, labelElement, axis, index, rect);\n }\n }\n };\n /**\n * To render the axis grid, tick lines and label\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {string} gridDirection gridDirection\n * @param {number} i index of the element\n * @param {string} elementId elementId\n * @param {Element} parentElement parent\n * @param {boolean} isRemove isRemoved\n * @param {TextOption} option - The options for the text element.\n * @param {VisibleLabels} label - Label.\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.updateAxisElement = function (axis, index, gridDirection, i, elementId, parentElement, isRemove, option, label) {\n var element;\n var isGrid = elementId.indexOf('Grid') > -1;\n var isLabel = elementId.indexOf('Label') > -1;\n if (isLabel) {\n element = textElement(this.chart.renderer, option, label.labelStyle, label.labelStyle.color || this.chart.themeStyle.axisLabelFont.color, parentElement, (axis.isAxisOpposedPosition !== (axis.labelPosition === 'Inside')), this.chart.redraw, true, null, this.chart.duration, null, null, null, this.chart.enableCanvas, null, this.chart.themeStyle.axisLabelFont);\n }\n else {\n this.renderGridLine(axis, index, gridDirection, isGrid ? axis.majorGridLines : axis.majorTickLines, elementId, i, this.element, isGrid ? this.chart.themeStyle.majorGridLine : this.chart.themeStyle.majorTickLine, isGrid ? axis.majorGridLines.dashArray : null);\n if (this.element && parentElement.childNodes) {\n element = this.element.childNodes[parentElement.childNodes.length - 1];\n }\n }\n this.rangeAnimate(axis, element, this.chart.duration, isLabel, new Rect((axis.orientation === 'Vertical') ? 0 : this.seriesClipRect.x, (axis.orientation === 'Vertical') ? this.seriesClipRect.y : axis.rect.y, this.seriesClipRect.width, this.seriesClipRect.height), isRemove, i);\n };\n CartesianAxisLayoutPanel.prototype.removeAxisLabelElements = function (axis, axislabelElement) {\n if (this.chart.pointsRemoved && axislabelElement && axislabelElement.childNodes.length) {\n var pointsRemoved = false;\n if (axis.valueType.indexOf('Category') > -1) {\n var visibleLabelTexts_1 = [];\n axis.visibleLabels.map(function (label) {\n if (typeof label.text !== 'string') {\n visibleLabelTexts_1.push(label.text.join(''));\n }\n else {\n visibleLabelTexts_1.push(label.text);\n }\n });\n for (var i = axislabelElement.childNodes.length - 1; i >= 0; i--) {\n var childNode = axislabelElement.childNodes[i];\n if (visibleLabelTexts_1.indexOf(childNode.textContent.trim()) === -1) {\n axislabelElement.removeChild(childNode);\n pointsRemoved = true;\n }\n }\n }\n else if (axislabelElement.childNodes.length > axis.visibleLabels.length) {\n for (var j = 0; j < axislabelElement.childNodes.length - axis.visibleLabels.length; j++) {\n axislabelElement.removeChild(axislabelElement.childNodes[j]);\n pointsRemoved = true;\n }\n }\n return pointsRemoved;\n }\n return false;\n };\n CartesianAxisLayoutPanel.prototype.calculateIntersection = function (p1, p2, p3, p4) {\n var c2x = p3.x - p4.x;\n var c3x = p1.x - p2.x;\n var c2y = p3.y - p4.y;\n var c3y = p1.y - p2.y;\n var d = c3x * c2y - c3y * c2x;\n var u1 = p1.x * p2.y - p1.y * p2.x;\n var u4 = p3.x * p4.y - p3.y * p4.x;\n var px = (u1 * c2x - c3x * u4) / d;\n var py = (u1 * c2y - c3y * u4) / d;\n var p = { x: px, y: py };\n return p;\n };\n /**\n * To get text anchor value for line break labels.\n *\n * @param {Axis} axis axis model\n * @returns {string} returns text anchor\n */\n CartesianAxisLayoutPanel.prototype.getAnchor = function (axis) {\n return (axis.lineBreakAlignment === 'Center' ? 'middle' : (this.chart.enableRtl) ? (axis.lineBreakAlignment === 'Left' ? 'end' : 'start') : (axis.lineBreakAlignment === 'Left' ? 'start' : 'end'));\n };\n /**\n * Get rect coordinates\n *\n * @param {Rect} rect rect\n * @returns {ChartLocation[]} rectangle points\n */\n CartesianAxisLayoutPanel.prototype.getRectanglePoints = function (rect) {\n var point1 = new ChartLocation(rect.x, rect.y);\n var point2 = new ChartLocation(rect.x + rect.width, rect.y);\n var point3 = new ChartLocation(rect.x + rect.width, rect.y + rect.height);\n var point4 = new ChartLocation(rect.x, rect.y + rect.height);\n return [point1, point2, point3, point4];\n };\n /**\n * To get axis label text\n *\n * @param {VisibleLabels} label label\n * @param {Axis} axis axis\n * @param {number} intervalLength intervalLength\n * @returns {string | string[]} label or label collection\n */\n CartesianAxisLayoutPanel.prototype.getLabelText = function (label, axis, intervalLength) {\n if (isBreakLabel(label.originalText)) {\n var result = [];\n var str = void 0;\n for (var index = 0; index < label.text.length; index++) {\n str = this.findAxisLabel(axis, label.text[index], intervalLength);\n result.push(str);\n }\n return result;\n }\n else {\n return this.findAxisLabel(axis, label.text, intervalLength);\n }\n };\n /**\n * To render the x-axis label border.\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Element} parent parent\n * @param {Rect} axisRect axisRect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.drawXAxisBorder = function (axis, index, parent, axisRect) {\n if (axis.border.width > 0) {\n var scrollBarHeight = axis.labelPosition === 'Outside' ? axis.scrollBarHeight : 0;\n var isOpposed = axis.isAxisOpposedPosition;\n var startX = void 0;\n var startY = axisRect.y + ((isOpposed ? -1 : 1) * scrollBarHeight);\n var padding = 10;\n var pointX = void 0;\n var gap = (axisRect.width / axis.visibleRange.delta) * (axis.valueType === 'DateTime' ? axis.dateTimeInterval\n : axis.visibleRange.interval);\n var endX = void 0;\n var length_2 = axis.maxLabelSize.height +\n ((axis.tickPosition === axis.labelPosition) ? axis.majorTickLines.height : 0);\n var labelBorder = '';\n var ticksbwtLabel = (axis.valueType === 'Category' && axis.labelPlacement === 'BetweenTicks') ? -0.5 : 0;\n var endY = ((isOpposed && axis.labelPosition === 'Inside') ||\n (!isOpposed && axis.labelPosition === 'Outside')) ?\n (axisRect.y + length_2 + padding + scrollBarHeight) : (axisRect.y - length_2 - padding - scrollBarHeight);\n for (var i = 0, len = axis.visibleLabels.length; i < len; i++) {\n pointX = valueToCoefficient(axis.visibleLabels[i].value + ticksbwtLabel, axis);\n pointX = (axis.isAxisInverse ? (1 - pointX) : pointX) * axisRect.width;\n if (axis.valueType === 'Category' && axis.labelPlacement === 'BetweenTicks') {\n startX = pointX + axisRect.x;\n endX = pointX + (gap) + axisRect.x;\n }\n else {\n startX = pointX - gap * 0.5 + axisRect.x;\n endX = pointX + gap * 0.5 + axisRect.x;\n }\n switch (axis.border.type) {\n case 'Rectangle':\n case 'WithoutTopBorder':\n if (startX < axisRect.x && axis.labelPlacement !== 'OnTicks') {\n labelBorder += ('M' + ' ' + axisRect.x + ' ' + endY + ' ' + 'L' + ' ' + endX + ' ' + endY + ' ');\n }\n else if (Math.floor(endX) > axisRect.width + axisRect.x && !(axis.visibleLabels.length === 1) &&\n !(i === axis.visibleLabels.length - 1)) {\n labelBorder += ('M' + ' ' + startX + ' ' + startY + ' ' + 'L' + ' ' + startX + ' ' + endY + ' ' +\n 'L' + ' ' + (axisRect.width + axisRect.x) + ' ' + endY + ' ');\n }\n else {\n startX = (i === 0 && axis.labelPlacement === 'OnTicks') ? axisRect.x : startX;\n endX = ((i === axis.visibleLabels.length - 1) && axis.labelPlacement === 'OnTicks') ? endX - gap * 0.5 : endX;\n labelBorder += ('M' + ' ' + startX + ' ' + startY + ' ' + 'L' + ' ' + startX + ' ' +\n endY + ' ' + 'L' + ' ' + endX + ' ' + endY + ' ');\n if (i === 0) {\n labelBorder += ('M' + ' ' + startX + ' ' + startY + ' ' + 'L' + ' ' + startX + ' ' + endY + ' ' +\n 'M ' + startX + ' ' + endY + ' L ' + (axisRect.x) + ' ' + endY);\n }\n if (i === axis.visibleLabels.length - 1) {\n labelBorder += ('M' + ' ' + endX + ' ' + startY + ' ' + 'L' + ' ' + endX + ' ' + endY + ' ' +\n 'M ' + endX + ' ' + endY + ' L ' + (axisRect.width + axisRect.x) + ' ' + endY);\n }\n }\n break;\n case 'WithoutTopandBottomBorder':\n if (!(startX < axisRect.x) && !(Math.floor(endX) > axisRect.width + axisRect.x)) {\n labelBorder += ('M' + ' ' + startX + ' ' + startY + ' ' + 'L' + ' ' + startX + ' ' + endY + ' ' +\n 'M ' + endX + ' ' + startY + ' L ' + endX + ' ' + endY);\n }\n break;\n }\n }\n labelBorder += (axis.border.type === 'Rectangle' ? ('M ' + ' ' + axisRect.x + ' ' + startY + 'L' + ' ' +\n (axisRect.x + axisRect.width) + ' ' + startY) : '');\n if (labelBorder !== '') {\n this.createAxisBorderElement(axis, index, labelBorder, parent);\n }\n }\n for (var i = 0; i < this.chart.visibleSeries.length; i++) {\n if (this.chart.multiLevelLabelModule && axis.multiLevelLabels.length > 0 && this.chart.visibleSeries[i].visible) {\n this.chart.multiLevelLabelModule.renderXAxisMultiLevelLabels(axis, index, parent, axisRect);\n break;\n }\n }\n };\n /**\n * To create border element of the axis\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {string} labelBorder labelBorder\n * @param {Element} parent parent\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.createAxisBorderElement = function (axis, index, labelBorder, parent) {\n var element = getElement(this.chart.element.id + '_BorderLine_' + index);\n var direction = element ? element.getAttribute('d') : '';\n var borderElement = this.chart.renderer.drawPath(new PathOption(this.chart.element.id + '_BorderLine_' + index, 'transparent', axis.border.width, axis.border.color || this.chart.themeStyle.axisLine, 1, '', labelBorder));\n borderElement.style.pointerEvents = 'none';\n appendChildElement(this.chart.enableCanvas, parent, borderElement, this.chart.redraw, false, 'x', 'y', null, direction, true, null, null, this.chart.duration);\n };\n /**\n * To find the axis label of the intersect action\n *\n * @param {Axis} axis axis\n * @param {string} label label\n * @param {number} width width\n * @returns {string} label\n */\n CartesianAxisLayoutPanel.prototype.findAxisLabel = function (axis, label, width) {\n return (axis.labelIntersectAction === 'Trim' ?\n ((axis.angle % 360 === 0 && !axis.enableTrim) ? textTrim(width, label, axis.labelStyle, this.chart.enableRtl, this.chart.themeStyle.axisLabelFont) : label) : label);\n };\n /**\n * X-Axis Title function performed\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Element} parent parent\n * @param {Rect} rect rect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.drawXAxisTitle = function (axis, index, parent, rect) {\n if (axis.title) {\n var chart = this.chart;\n var elementSize = measureText(axis.title, axis.titleStyle, this.chart.themeStyle.axisTitleFont);\n var scrollBarHeight = isNullOrUndefined(axis.crossesAt) ? axis.scrollBarHeight : 0;\n var padding = (axis.tickPosition === 'Inside' ? 0 : axis.majorTickLines.height + axis.titlePadding) +\n (axis.labelPosition === 'Inside' ? 0 :\n axis.maxLabelSize.height + axis.multiLevelLabelHeight + axis.labelPadding);\n var titleSize = (axis.titleSize.height * (axis.titleCollection.length - 1));\n padding = axis.isAxisOpposedPosition ? -(padding + elementSize.height / 4 + scrollBarHeight + titleSize) : (padding + (3 *\n elementSize.height / 4) + scrollBarHeight);\n var labelRotation = axis.titleRotation ? axis.titleRotation : 0;\n var x = void 0;\n var y = rect.y + padding;\n var anchor = void 0;\n if (axis.titleStyle.textAlignment === 'Center') {\n anchor = 'middle';\n x = rect.x + rect.width * 0.5;\n }\n else if (axis.titleStyle.textAlignment === 'Near') {\n anchor = 'start';\n x = rect.x;\n }\n else {\n anchor = 'end';\n x = rect.x + rect.width;\n }\n if (labelRotation !== 0) {\n y += axis.opposedPosition ? -(axis.titleSize.height / 2 + elementSize.height / 4) :\n axis.titleSize.height / 2 - elementSize.height / 4;\n }\n var options = new TextOption(chart.element.id + '_AxisTitle_' + index, x, y, anchor, axis.titleCollection, 'rotate(' + labelRotation + ',' + (x) + ',' + (y) + ')', null, labelRotation);\n var element = textElement(chart.renderer, options, axis.titleStyle, axis.titleStyle.color || chart.themeStyle.axisTitleFont.color, parent, null, chart.redraw, chart.redraw, null, null, null, null, null, chart.enableCanvas, null, chart.themeStyle.axisTitleFont, new ChartLocation(x, y));\n element.setAttribute('aria-hidden', 'true');\n }\n };\n /**\n * To render the axis grid and tick lines(Both Major and Minor)\n *\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {string} gridDirection gridDirection\n * @param {MajorTickLinesModel | MinorTickLinesModel | MajorGridLinesModel | MinorGridLinesModel} gridModel gridModel\n * @param {string} gridId gridId\n * @param {number} gridIndex gridIndex\n * @param {Element} parent parent\n * @param {string} themeColor themeColor\n * @param {string} dashArray dashArray\n * @param {number} removeIndex removeIndex\n * @param {boolean} isRemoved isRemoved\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.renderGridLine = function (axis, index, gridDirection, gridModel, gridId, gridIndex, parent, themeColor, dashArray, removeIndex, isRemoved) {\n if (dashArray === void 0) { dashArray = null; }\n if (removeIndex === void 0) { removeIndex = null; }\n if (isRemoved === void 0) { isRemoved = false; }\n var chart = this.chart;\n var direction;\n var element;\n if (gridModel.width > 0 && axis.visible && axis.internalVisibility && gridDirection) {\n element = getElement(chart.element.id + gridId + index + '_' + (isRemoved ? removeIndex : gridIndex));\n direction = element ? element.getAttribute('d') : null;\n element = null;\n this.htmlObject = chart.renderer.drawPath(new PathOption(chart.element.id + gridId + index + '_' + (isRemoved ? removeIndex : gridIndex), 'transparent', gridModel.width, gridModel.color || themeColor, null, dashArray, gridDirection));\n appendChildElement(chart.enableCanvas, parent, this.htmlObject, chart.redraw, true, 'x', 'y', null, direction, true, null, null, chart.duration);\n if (isRemoved) {\n this.htmlObject.id = chart.element.id + gridId + index + '_' + gridIndex;\n }\n }\n };\n /**\n * To Find the parent node of the axis\n *\n * @param {string} elementId elementId\n * @param {Element} label label\n * @param {number} index index\n * @returns {Element} parent node of the axis\n */\n CartesianAxisLayoutPanel.prototype.findParentNode = function (elementId, label, index) {\n if (document.getElementById(elementId + 'AxisGroup' + index + 'Inside').contains(document.getElementById(label.id))) {\n return document.getElementById(elementId + 'AxisGroup' + index + 'Inside');\n }\n else {\n return document.getElementById(elementId + 'AxisGroup' + index + 'Outside');\n }\n };\n /**\n * Create Zooming Labels Function Called here\n *\n * @param {Chart} chart chart\n * @param {Element} labelElement labelElement\n * @param {Axis} axis axis\n * @param {number} index index\n * @param {Rect} rect rect\n * @returns {void}\n */\n CartesianAxisLayoutPanel.prototype.createZoomingLabel = function (chart, labelElement, axis, index, rect) {\n var parentNode = this.findParentNode(chart.element.id, labelElement, index);\n labelElement.setAttribute('opacity', '0.3');\n var zoomElement = chart.renderer.createGroup({\n id: chart.element.id + 'AxisLabels_Zoom' + index\n });\n zoomElement = createZoomingLabels(chart, axis, zoomElement, index, axis.orientation === 'Vertical', rect);\n parentNode.replaceChild(labelElement, document.getElementById(labelElement.id));\n if (getElement(chart.element.id + 'AxisLabels_Zoom' + index)) {\n parentNode.replaceChild(zoomElement, document.getElementById(zoomElement.id));\n }\n else {\n parentNode.appendChild(zoomElement);\n }\n };\n return CartesianAxisLayoutPanel;\n}());\nexport { CartesianAxisLayoutPanel };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty, Complex, Collection, getValue, animationMode } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { StackValues, RectOption, appendChildElement, appendClipElement, getElement } from '../../common/utils/helper';\nimport { firstToLowerCase, CircleOption, getColorByValue } from '../../common/utils/helper';\nimport { Rect, Size } from '@syncfusion/ej2-svg-base';\nimport { Border, Font, Margin, Animation, DragSettings, EmptyPointSettings, Connector, CornerRadius } from '../../common/model/base';\nimport { DataManager, DataUtil } from '@syncfusion/ej2-data';\nimport { Offset } from '../../common/model/base';\nimport { seriesRender } from '../../common/model/constants';\nimport { getVisiblePoints, setRange, findClipRect } from '../../common/utils/helper';\nimport { Browser } from '@syncfusion/ej2-base';\n/**\n * This class provides options to customize the appearance and behavior of data labels within a series.\n */\nvar DataLabelSettings = /** @class */ (function (_super) {\n __extends(DataLabelSettings, _super);\n function DataLabelSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], DataLabelSettings.prototype, \"visible\", void 0);\n __decorate([\n Property(true)\n ], DataLabelSettings.prototype, \"showZero\", void 0);\n __decorate([\n Property(null)\n ], DataLabelSettings.prototype, \"name\", void 0);\n __decorate([\n Property('transparent')\n ], DataLabelSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(null)\n ], DataLabelSettings.prototype, \"format\", void 0);\n __decorate([\n Property(1)\n ], DataLabelSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(0)\n ], DataLabelSettings.prototype, \"angle\", void 0);\n __decorate([\n Property(false)\n ], DataLabelSettings.prototype, \"enableRotation\", void 0);\n __decorate([\n Property('Auto')\n ], DataLabelSettings.prototype, \"position\", void 0);\n __decorate([\n Property(5)\n ], DataLabelSettings.prototype, \"rx\", void 0);\n __decorate([\n Property(5)\n ], DataLabelSettings.prototype, \"ry\", void 0);\n __decorate([\n Property('Center')\n ], DataLabelSettings.prototype, \"alignment\", void 0);\n __decorate([\n Complex({ width: null, color: null }, Border)\n ], DataLabelSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ left: 5, right: 5, top: 5, bottom: 5 }, Margin)\n ], DataLabelSettings.prototype, \"margin\", void 0);\n __decorate([\n Complex({ size: null, color: null, fontStyle: null, fontWeight: null, fontFamily: null }, Font)\n ], DataLabelSettings.prototype, \"font\", void 0);\n __decorate([\n Property(null)\n ], DataLabelSettings.prototype, \"template\", void 0);\n __decorate([\n Property('Hide')\n ], DataLabelSettings.prototype, \"labelIntersectAction\", void 0);\n return DataLabelSettings;\n}(ChildProperty));\nexport { DataLabelSettings };\n/**\n * This class is used to define the appearance and behavior of the series markers.\n */\nvar MarkerSettings = /** @class */ (function (_super) {\n __extends(MarkerSettings, _super);\n function MarkerSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], MarkerSettings.prototype, \"visible\", void 0);\n __decorate([\n Property(null)\n ], MarkerSettings.prototype, \"shape\", void 0);\n __decorate([\n Property('')\n ], MarkerSettings.prototype, \"imageUrl\", void 0);\n __decorate([\n Property(5)\n ], MarkerSettings.prototype, \"height\", void 0);\n __decorate([\n Property(false)\n ], MarkerSettings.prototype, \"isFilled\", void 0);\n __decorate([\n Property(5)\n ], MarkerSettings.prototype, \"width\", void 0);\n __decorate([\n Complex({ width: 2, color: null }, Border)\n ], MarkerSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ x: 0, y: 0 }, Offset)\n ], MarkerSettings.prototype, \"offset\", void 0);\n __decorate([\n Property(null)\n ], MarkerSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(true)\n ], MarkerSettings.prototype, \"allowHighlight\", void 0);\n __decorate([\n Property(1)\n ], MarkerSettings.prototype, \"opacity\", void 0);\n __decorate([\n Complex({}, DataLabelSettings)\n ], MarkerSettings.prototype, \"dataLabel\", void 0);\n return MarkerSettings;\n}(ChildProperty));\nexport { MarkerSettings };\n/**\n * The `ParetoOptions` class provides a set of properties for configuring the Pareto series.\n */\nvar ParetoOptions = /** @class */ (function (_super) {\n __extends(ParetoOptions, _super);\n function ParetoOptions() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], ParetoOptions.prototype, \"fill\", void 0);\n __decorate([\n Property(1)\n ], ParetoOptions.prototype, \"width\", void 0);\n __decorate([\n Property('0')\n ], ParetoOptions.prototype, \"dashArray\", void 0);\n __decorate([\n Complex(null, MarkerSettings)\n ], ParetoOptions.prototype, \"marker\", void 0);\n __decorate([\n Property(true)\n ], ParetoOptions.prototype, \"showAxis\", void 0);\n return ParetoOptions;\n}(ChildProperty));\nexport { ParetoOptions };\n/**\n * The model that represents how the points in a series are configured and displayed.\n *\n * @public\n */\nvar Points = /** @class */ (function () {\n function Points() {\n /** Specifies the locations of symbols associated with the point. */\n this.symbolLocations = null;\n /** Specifies the regions associated with the point. */\n this.regions = null;\n /** Specifies the percentage value of the point. */\n this.percentage = null;\n /** Specifies the region data of the point. */\n this.regionData = null;\n /** Indicates whether the point is selected. */\n this.isSelect = false;\n /** Specifies the marker settings for the point. */\n this.marker = {\n visible: false\n };\n /**\n * Indicates whether the point is within the specified range.\n *\n * @private\n */\n this.isPointInRange = true;\n /** Specifies the vertical error value for the point. */\n this.verticalError = null;\n /** Specifies the vertical negative error value for the point. */\n this.verticalNegativeError = null;\n /** Specifies the horizontal error value for the point. */\n this.horizontalError = null;\n /** Specifies the horizontal negative error value for the point. */\n this.horizontalNegativeError = null;\n /** Specifies the vertical positive error value for the point. */\n this.verticalPositiveError = null;\n /** Specifies the horizontal positive error value for the point. */\n this.horizontalPositiveError = null;\n }\n return Points;\n}());\nexport { Points };\n/**\n * Configures the behavior and appearance of trendlines in a chart series.\n * Trendlines indicate trends and the rate of price changes over a period.\n */\nvar Trendline = /** @class */ (function (_super) {\n __extends(Trendline, _super);\n function Trendline() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** @private */\n _this.clipRect = new Rect(0, 0, 0, 0);\n return _this;\n }\n /**\n * Sets the data source for the specified series in the provided chart.\n *\n * @private\n * @param {Series} series - The series for which the data source is set.\n * @param {Chart} chart - The chart in which the data source is set.\n * @returns {void}\n */\n Trendline.prototype.setDataSource = function (series, chart) {\n if (series) {\n this.points = series.points;\n }\n chart.trendLineModule.initDataSource(this);\n chart.visibleSeriesCount++;\n };\n __decorate([\n Property('')\n ], Trendline.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], Trendline.prototype, \"dashArray\", void 0);\n __decorate([\n Property(true)\n ], Trendline.prototype, \"visible\", void 0);\n __decorate([\n Property('Linear')\n ], Trendline.prototype, \"type\", void 0);\n __decorate([\n Property(2)\n ], Trendline.prototype, \"period\", void 0);\n __decorate([\n Property(2)\n ], Trendline.prototype, \"polynomialOrder\", void 0);\n __decorate([\n Property(0)\n ], Trendline.prototype, \"backwardForecast\", void 0);\n __decorate([\n Property(0)\n ], Trendline.prototype, \"forwardForecast\", void 0);\n __decorate([\n Complex({}, Animation)\n ], Trendline.prototype, \"animation\", void 0);\n __decorate([\n Complex({}, MarkerSettings)\n ], Trendline.prototype, \"marker\", void 0);\n __decorate([\n Property(true)\n ], Trendline.prototype, \"enableTooltip\", void 0);\n __decorate([\n Property(null)\n ], Trendline.prototype, \"intercept\", void 0);\n __decorate([\n Property('')\n ], Trendline.prototype, \"fill\", void 0);\n __decorate([\n Property(1)\n ], Trendline.prototype, \"width\", void 0);\n __decorate([\n Property('SeriesType')\n ], Trendline.prototype, \"legendShape\", void 0);\n return Trendline;\n}(ChildProperty));\nexport { Trendline };\n/**\n * The `ErrorBarCapSettings` class provides options to customize the appearance and behavior of error bars in a series.\n */\nvar ErrorBarCapSettings = /** @class */ (function (_super) {\n __extends(ErrorBarCapSettings, _super);\n function ErrorBarCapSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(1)\n ], ErrorBarCapSettings.prototype, \"width\", void 0);\n __decorate([\n Property(10)\n ], ErrorBarCapSettings.prototype, \"length\", void 0);\n __decorate([\n Property(null)\n ], ErrorBarCapSettings.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], ErrorBarCapSettings.prototype, \"opacity\", void 0);\n return ErrorBarCapSettings;\n}(ChildProperty));\nexport { ErrorBarCapSettings };\nvar ChartSegment = /** @class */ (function (_super) {\n __extends(ChartSegment, _super);\n function ChartSegment() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], ChartSegment.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], ChartSegment.prototype, \"color\", void 0);\n __decorate([\n Property('0')\n ], ChartSegment.prototype, \"dashArray\", void 0);\n return ChartSegment;\n}(ChildProperty));\nexport { ChartSegment };\n/**\n * The `ErrorBarSettings` class provides options to customize the appearance and behavior of error bars in a series.\n *\n * @public\n */\nvar ErrorBarSettings = /** @class */ (function (_super) {\n __extends(ErrorBarSettings, _super);\n function ErrorBarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], ErrorBarSettings.prototype, \"visible\", void 0);\n __decorate([\n Property('Fixed')\n ], ErrorBarSettings.prototype, \"type\", void 0);\n __decorate([\n Property('Both')\n ], ErrorBarSettings.prototype, \"direction\", void 0);\n __decorate([\n Property('Vertical')\n ], ErrorBarSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(null)\n ], ErrorBarSettings.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], ErrorBarSettings.prototype, \"verticalError\", void 0);\n __decorate([\n Property(1)\n ], ErrorBarSettings.prototype, \"width\", void 0);\n __decorate([\n Property(1)\n ], ErrorBarSettings.prototype, \"horizontalError\", void 0);\n __decorate([\n Property(3)\n ], ErrorBarSettings.prototype, \"verticalPositiveError\", void 0);\n __decorate([\n Property(3)\n ], ErrorBarSettings.prototype, \"verticalNegativeError\", void 0);\n __decorate([\n Property(1)\n ], ErrorBarSettings.prototype, \"horizontalPositiveError\", void 0);\n __decorate([\n Property(1)\n ], ErrorBarSettings.prototype, \"horizontalNegativeError\", void 0);\n __decorate([\n Complex(null, ErrorBarCapSettings)\n ], ErrorBarSettings.prototype, \"errorBarCap\", void 0);\n __decorate([\n Property('')\n ], ErrorBarSettings.prototype, \"errorBarColorMapping\", void 0);\n return ErrorBarSettings;\n}(ChildProperty));\nexport { ErrorBarSettings };\n/**\n * Defines the common behavior for series and technical indicators.\n */\nvar SeriesBase = /** @class */ (function (_super) {\n __extends(SeriesBase, _super);\n function SeriesBase() {\n /**\n * The data source field that contains the x value.\n * It is applicable to both series and technical indicators.\n *\n * @default ''\n */\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.rangeColorPoints = [];\n _this.isAdvancedColor = undefined;\n /** @private */\n _this.currentViewData = [];\n /** @private */\n _this.clipRect = new Rect(0, 0, 0, 0);\n /** @private */\n _this.seriesType = 'XY';\n _this.isRectTypeSeries = false;\n _this.removedPointIndex = null;\n /** @private */\n _this.isLegendClicked = false;\n return _this;\n }\n /**\n * Process data for the series.\n *\n * @hidden\n * @returns {void}\n */\n SeriesBase.prototype.processJsonData = function () {\n var i = 0;\n var point = new Points();\n var xName = (this instanceof Series && this.type === 'Histogram') ? 'x' : this.xName;\n var textMappingName = this instanceof Series && this.marker.dataLabel.name ?\n this.marker.dataLabel.name : '';\n if (this instanceof Series) {\n if ((this.type === 'Waterfall' || this.type === 'Histogram')) {\n this.currentViewData = this.chart[firstToLowerCase(this.type) + 'SeriesModule'].\n processInternalData(extend([], this.currentViewData, null, true), this);\n }\n if (this.category === 'Pareto') {\n this.currentViewData = extend([], this.currentViewData, null, true);\n if (this.type === 'Line') {\n this.currentViewData = this.chart.paretoSeriesModule.performCumulativeCalculation(this.currentViewData, this);\n }\n }\n this.isRectTypeSeries = this.type.indexOf('Column') > -1 || this.type.indexOf('Bar') > -1\n || this.type.indexOf('Histogram') > -1;\n }\n var len = (this.currentViewData || []).length;\n this.points = [];\n this.xMin = Infinity;\n this.xMax = -Infinity;\n this.yMin = Infinity;\n this.yMax = -Infinity;\n this.sizeMax = -Infinity;\n this.getSeriesType();\n if (this.xAxis.valueType === 'Category') {\n while (i < len) {\n this.pushCategoryPoint(point, i, textMappingName, xName);\n i++;\n }\n }\n else if (this.xAxis.valueType.indexOf('DateTime') > -1) {\n var option = {\n skeleton: 'full',\n type: 'dateTime'\n };\n var dateParser = this.chart.intl.getDateParser(option);\n var dateFormatter = this.chart.intl.getDateFormat(option);\n while (i < len) {\n this.pushDateTimePoint(point, i, textMappingName, xName, dateParser, dateFormatter);\n i++;\n }\n }\n else {\n while (i < len) {\n this.pushDoublePoint(point, i, textMappingName, xName);\n i++;\n }\n }\n this.updateSplineValue();\n };\n /**\n * Pushes a category point to the data collection.\n *\n * @param {Points} point -The point to be pushed.\n * @param {number} index -The index of the point.\n * @param {string} textMappingName -The name of the text mapping.\n * @param {string} xName -The name of the x-coordinate.\n * @returns {void}\n * @private\n */\n SeriesBase.prototype.pushCategoryPoint = function (point, index, textMappingName, xName) {\n point = this.dataPoint(index, textMappingName, xName);\n this.pushCategoryData(point, index, point.x);\n this.pushData(point, index);\n this.setEmptyPoint(point, index);\n this.rangeColorsInterior(point);\n };\n /**\n * Pushes a double point to the data collection.\n *\n * @param {Points} point -The point to be pushed.\n * @param {number} index -The index of the point.\n * @param {string} textMappingName -The name of the text mapping.\n * @param {string} xName -The name of the x-coordinate.\n * @returns {void}\n * @private\n */\n SeriesBase.prototype.pushDoublePoint = function (point, index, textMappingName, xName) {\n point = this.dataPoint(index, textMappingName, xName);\n point.xValue = point.x;\n this.pushData(point, index);\n this.setEmptyPoint(point, index);\n };\n /**\n * Pushes a DateTime point to the data collection.\n *\n * @param {Points} point -The point to be pushed.\n * @param {number} index -The index of the point.\n * @param {string} textMappingName -The name of the text mapping.\n * @param {string} xName -The name of the x-coordinate.\n * @param {Function} dateParser -The date parser function.\n * @param {Function} dateFormatter -The date formatter function.\n * @returns {void}\n * @private\n */\n SeriesBase.prototype.pushDateTimePoint = function (point, index, textMappingName, xName, dateParser, dateFormatter) {\n point = this.dataPoint(index, textMappingName, xName);\n if (!isNullOrUndefined(point.x) && point.x !== '') {\n point.x = new Date(DataUtil.parse.parseJson({ val: point.x }).val);\n if (this.xAxis.valueType === 'DateTime') {\n point.xValue = Date.parse(point.x.toString());\n }\n else {\n if (this.chart.isBlazor) {\n this.pushCategoryData(point, index, Date.parse(point.x.toString()).toString());\n }\n else {\n this.pushCategoryData(point, index, Date.parse(dateParser(dateFormatter(point.x))).toString());\n }\n }\n this.pushData(point, index);\n this.setEmptyPoint(point, index);\n }\n else {\n point.visible = false;\n }\n };\n SeriesBase.prototype.updateSplineValue = function () {\n if (this instanceof Series && !(this.chart.stockChart && this.xAxis.valueType === 'DateTimeCategory')) {\n if (this.type.indexOf('Spline') > -1 || (this.drawType.indexOf('Spline') > -1 && this.chart.chartAreaType === 'PolarRadar')) {\n var isArea = (this.type.indexOf('Area') > -1 || this.drawType.indexOf('Area') > -1);\n var isRange = this.type.indexOf('Range') > -1;\n this.chart['spline' + (isArea ? isRange ? 'RangeArea' : 'Area' : '') + 'SeriesModule'].findSplinePoint(this);\n }\n else if (this.type.indexOf('Histogram') > -1 && (this.xAxis.maximum || this.xAxis.minimum)) {\n this.chart['histogramSeriesModule'].calculateBinValues(this);\n }\n if (this.type.indexOf('Histogram') > -1 && this.points.length === 1) {\n this.xMin = this.xMin - this.histogramValues.binWidth;\n this.xMax = this.xMax + this.histogramValues.binWidth;\n }\n }\n };\n SeriesBase.prototype.rangeColorsInterior = function (point) {\n if (this.chart.rangeColorSettings && this.chart.rangeColorSettings.length > 0 && this.chart.visibleSeries.length === 1 &&\n (this.chart.series[0].type === 'Column' || this.chart.series[0].type === 'Bar' ||\n this.chart.series[0].type === 'Scatter' || this.chart.series[0].type === 'Bubble')) {\n if (!this.rangeColorPoints[point.interior]) {\n this.rangeColorPoints[point.interior] = [];\n }\n else if (this.rangeColorPoints[point.interior] !== undefined) {\n this.rangeColorPoints[point.interior].push(point);\n }\n }\n };\n /**\n * Sets the empty point values.\n *\n * @param {Points} point - The point to be set.\n * @param {number} i - The index of the point.\n * @private\n * @returns {void}\n */\n SeriesBase.prototype.pushData = function (point, i) {\n point.index = i;\n point.yValue = point.y;\n point.series = this;\n // To find the min, max for the axis range.\n this.xMin = Math.min(this.xMin, point.xValue);\n this.xMax = Math.max(this.xMax, point.xValue);\n this.xData.push(point.xValue);\n };\n /**\n * Retrieves the data point at the specified index with the given text mapping name and x-name.\n *\n * @param {number} i - The index of the data point to retrieve.\n * @param {string} textMappingName - The name used to map text data.\n * @param {string} xName - The name used for the x-axis.\n * @returns {Points} - The data point at the specified index.\n * @private\n */\n SeriesBase.prototype.dataPoint = function (i, textMappingName, xName) {\n this.points[i] = new Points();\n var point = this.points[i];\n var currentViewData = this.currentViewData[i];\n var getObjectValueByMappingString = this.enableComplexProperty ? getValue : this.getObjectValue;\n point.x = getObjectValueByMappingString(xName, currentViewData);\n point.high = getObjectValueByMappingString(this.high, currentViewData);\n point.low = getObjectValueByMappingString(this.low, currentViewData);\n point.open = getObjectValueByMappingString(this.open, currentViewData);\n point.close = getObjectValueByMappingString(this.close, currentViewData);\n point.volume = getObjectValueByMappingString(this.volume, currentViewData);\n point.interior = getObjectValueByMappingString(this.pointColorMapping, currentViewData);\n if (this instanceof Series) {\n if (this.errorBar.visible) {\n point.errorBarColor = getObjectValueByMappingString(this.errorBar.errorBarColorMapping, currentViewData);\n point.verticalError = typeof this.errorBar.verticalError == 'string' ? getObjectValueByMappingString(this.errorBar.verticalError, currentViewData) : this.errorBar.verticalError;\n point.horizontalError = typeof this.errorBar.horizontalError == 'string' ? getObjectValueByMappingString(this.errorBar.horizontalError, currentViewData) : this.errorBar.horizontalError;\n point.verticalNegativeError = typeof this.errorBar.verticalNegativeError == 'string' ? getObjectValueByMappingString(this.errorBar.verticalNegativeError, currentViewData) : this.errorBar.verticalNegativeError;\n point.verticalPositiveError = typeof this.errorBar.verticalPositiveError == 'string' ? getObjectValueByMappingString(this.errorBar.verticalPositiveError, currentViewData) : this.errorBar.verticalPositiveError;\n point.horizontalNegativeError = typeof this.errorBar.horizontalNegativeError == 'string' ? getObjectValueByMappingString(this.errorBar.horizontalNegativeError, currentViewData) : this.errorBar.horizontalNegativeError;\n point.horizontalPositiveError = typeof this.errorBar.horizontalPositiveError == 'string' ? getObjectValueByMappingString(this.errorBar.horizontalPositiveError, currentViewData) : this.errorBar.horizontalPositiveError;\n }\n point.y = getObjectValueByMappingString(this.yName, currentViewData);\n point.size = getObjectValueByMappingString(this.size, currentViewData);\n point.text = getObjectValueByMappingString(textMappingName, currentViewData);\n point.tooltip = getObjectValueByMappingString(this.tooltipMappingName, currentViewData);\n if (this.isAdvancedColorSupported()) {\n this.rangeColorName = this.colorName.length > 0 ? this.colorName : this.yName;\n point.colorValue = getObjectValueByMappingString(this.rangeColorName, currentViewData);\n point.interior = this.getPointFillColor(point.interior, point.colorValue);\n }\n }\n return point;\n };\n SeriesBase.prototype.isAdvancedColorSupported = function () {\n if (isNullOrUndefined(this.isAdvancedColor)) {\n if (this.chart.rangeColorSettings && this.chart.rangeColorSettings.length > 0 &&\n (this.chart.series[0].type === 'Column' || this.chart.series[0].type === 'Bar' ||\n this.chart.series[0].type === 'Scatter' || this.chart.series[0].type === 'Bubble')) {\n this.isAdvancedColor = true;\n }\n else {\n this.isAdvancedColor = false;\n }\n }\n return this.isAdvancedColor;\n };\n SeriesBase.prototype.getPointFillColor = function (pointFill, value) {\n var color = pointFill;\n if (value && this.chart.rangeColorSettings && this.chart.rangeColorSettings.length > 0) {\n for (var _i = 0, _a = this.chart.rangeColorSettings; _i < _a.length; _i++) {\n var rangeMap = _a[_i];\n if (value >= rangeMap.start && value <= rangeMap.end) {\n if (rangeMap.colors.length > 1) {\n color = getColorByValue(rangeMap, value);\n }\n else {\n color = rangeMap.colors[0];\n }\n }\n }\n }\n return color;\n };\n /**\n * Pushes a category point to the data collection.\n *\n * @param {string} mappingName - The name of the mapping.\n * @param {Object} data - The data to be pushed.\n * @returns {Object} - The data point at the specified index.\n * @private\n */\n SeriesBase.prototype.getObjectValue = function (mappingName, data) {\n return data[mappingName];\n };\n /**\n * Sets the specified data point as an empty point at the given index.\n *\n * @private\n * @param {Points} point - The data point to set as empty.\n * @param {number} i - The index of the data point.\n * @returns {void}\n */\n SeriesBase.prototype.setEmptyPoint = function (point, i) {\n if (!this.findVisibility(point)) {\n point.visible = true;\n return null;\n }\n point.isEmpty = true;\n var mode = this instanceof Series && point.isPointInRange ? this.emptyPointSettings.mode : 'Drop';\n switch (mode) {\n case 'Zero':\n point.visible = true;\n if (this instanceof Series && this.seriesType.indexOf('HighLow') > -1) {\n point.high = point.low = 0;\n if (this.seriesType.indexOf('HighLowOpenClose') > -1) {\n point.open = point.close = 0;\n }\n }\n else {\n point.y = point.yValue = this.yData[i] = 0;\n }\n break;\n case 'Average':\n if (this instanceof Series) {\n if (this.seriesType.indexOf('HighLow') > -1) {\n point.high = (isNullOrUndefined(point.high) || isNaN(+point.high)) ? this.getAverage(this.high, i) : point.high;\n point.low = (isNullOrUndefined(point.low) || isNaN(+point.low)) ? this.getAverage(this.low, i) : point.low;\n if (this.seriesType.indexOf('HighLowOpenClose') > -1) {\n point.open = (isNullOrUndefined(point.open) || isNaN(+point.open)) ? this.getAverage(this.open, i) : point.open;\n point.close = (isNullOrUndefined(point.close) || isNaN(+point.close)) ? this.getAverage(this.close, i) :\n point.close;\n }\n }\n else {\n point.y = point.yValue = this.yData[i] = this.getAverage(this.yName, i);\n }\n }\n point.visible = true;\n break;\n case 'Drop':\n case 'Gap':\n this.yData[i] = null;\n point.visible = false;\n break;\n }\n };\n SeriesBase.prototype.findVisibility = function (point) {\n var type = this instanceof Series ? this.seriesType : 'HighLowOpenClose';\n var yValues;\n var yAxisMin = this.yAxis.minimum;\n var yAxisMax = this.yAxis.maximum;\n switch (type) {\n case 'XY':\n if (this.chart.chartAreaType === 'PolarRadar' && ((!isNullOrUndefined(yAxisMin) && point.yValue < yAxisMin) ||\n (!isNullOrUndefined(yAxisMax) && point.yValue > yAxisMax))) {\n point.isPointInRange = false;\n return true;\n }\n this.setXYMinMax(point.yValue);\n this.yData.push(point.yValue);\n if (this instanceof Series && this.type === 'Bubble') {\n this.sizeMax = Math.max(this.sizeMax, (isNullOrUndefined(point.size) || isNaN(+point.size)) ? this.sizeMax\n : point.size);\n }\n return isNullOrUndefined(point.x) || (isNullOrUndefined(point.y) || isNaN(+point.y));\n case 'HighLow':\n this.setHiloMinMax(point.high, point.low);\n return isNullOrUndefined(point.x) || (isNullOrUndefined(point.low) || isNaN(+point.low)) ||\n (isNullOrUndefined(point.high) || isNaN(+point.high));\n case 'HighLowOpenClose':\n this.setHiloMinMax(point.high, point.low);\n return isNullOrUndefined(point.x) || (isNullOrUndefined(point.low) || isNaN(+point.low)) ||\n (isNullOrUndefined(point.open) || isNaN(+point.open)) || (isNullOrUndefined(point.close) || isNaN(+point.close))\n || (isNullOrUndefined(point.high) || isNaN(+point.high));\n case 'BoxPlot':\n yValues = (point.y || [null]).filter(function (value) {\n return !isNullOrUndefined(value) && !isNaN(value);\n }).sort(function (a, b) {\n return a - b;\n });\n point.y = yValues;\n this.yMin = Math.min(this.yMin, Math.min.apply(Math, yValues));\n this.yMax = Math.max(this.yMax, Math.max.apply(Math, yValues));\n return !yValues.length;\n }\n };\n /**\n * To get Y min max for the provided point seriesType XY.\n *\n * @param {number} yValue - The y value used to determine the minimum and maximum values for the x and y coordinates.\n * @returns {void}\n */\n SeriesBase.prototype.setXYMinMax = function (yValue) {\n var isLogAxis = (this.yAxis.valueType === 'Logarithmic' || this.xAxis.valueType === 'Logarithmic');\n var isNegativeValue = yValue < 0 || this.yAxis.rangePadding === 'None';\n var seriesMinY;\n if (this.isRectTypeSeries && !setRange(this.yAxis)) {\n seriesMinY = ((isLogAxis ? (yValue) : isNegativeValue ? yValue : 0));\n }\n else {\n seriesMinY = yValue;\n }\n this.yMin = isLogAxis ?\n Math.min(this.yMin, (isNullOrUndefined(seriesMinY) || isNaN(seriesMinY) || (seriesMinY === 0) ||\n (seriesMinY.toString() === '0') || (seriesMinY.toString() === '')) ? this.yMin : seriesMinY) :\n Math.min(this.yMin, (isNullOrUndefined(seriesMinY) || isNaN(seriesMinY)) ? this.yMin : seriesMinY);\n this.yMax = Math.max(this.yMax, (isNullOrUndefined(yValue) || isNaN(yValue)) ? this.yMax : yValue);\n };\n /**\n * Sets the minimum and maximum values for the high and low values.\n *\n * @private\n * @param {number} high - The high value used to determine the maximum value.\n * @param {number} low - The low value used to determine the minimum value.\n * @returns {void}\n */\n SeriesBase.prototype.setHiloMinMax = function (high, low) {\n this.yMin = Math.min(this.yMin, Math.min((isNullOrUndefined(low) || isNaN(low)) ? this.yMin : low, (isNullOrUndefined(high) || isNaN(high)) ? this.yMin : high));\n this.yMax = Math.max(this.yMax, Math.max((isNullOrUndefined(low) || isNaN(low)) ? this.yMax : low, (isNullOrUndefined(high) || isNaN(high)) ? this.yMax : high));\n };\n /**\n * Finds the type of the series.\n *\n * @private\n * @returns {void}\n */\n SeriesBase.prototype.getSeriesType = function () {\n var type;\n if (this instanceof Series) {\n var seriesType = this.chart.chartAreaType === 'PolarRadar' ? this.drawType : this.type;\n if (seriesType) {\n switch (seriesType) {\n case 'RangeColumn':\n case 'RangeArea':\n case 'RangeStepArea':\n case 'SplineRangeArea':\n case 'Hilo':\n type = 'HighLow';\n break;\n case 'HiloOpenClose':\n case 'Candle':\n type = 'HighLowOpenClose';\n break;\n case 'BoxAndWhisker':\n type = 'BoxPlot';\n break;\n default:\n type = 'XY';\n }\n }\n }\n this.seriesType = type;\n };\n /**\n * Pushes category data into the series points.\n *\n * @param {Points} point - The point to which category data will be pushed.\n * @param {number} index - The index of the data point.\n * @param {string} pointX - The x-value of the point.\n * @returns {void}\n * @private\n */\n SeriesBase.prototype.pushCategoryData = function (point, index, pointX) {\n if (!this.chart.tooltip.shared) {\n if (!this.visible) {\n return null;\n }\n }\n if (!this.xAxis.isIndexed) {\n if (this.xAxis.indexLabels[pointX] === undefined) {\n this.xAxis.indexLabels[pointX] = this.xAxis.labels.length;\n this.xAxis.labels.push(pointX);\n }\n point.xValue = this.xAxis.indexLabels[pointX];\n }\n else {\n if (this.xAxis.labels[index]) {\n this.xAxis.labels[index] += ', ' + pointX;\n }\n else {\n this.xAxis.labels.push(pointX);\n }\n // this.xAxis.labels[index as number] ? this.xAxis.labels[index as number] += ', ' + pointX :\n // this.xAxis.labels.push(pointX);\n point.xValue = index;\n }\n };\n /**\n * Gets the average value of a member in the specified data array or current view data.\n *\n * @param {string} member - The member whose average is to be calculated.\n * @param {number} i - The index of the data point.\n * @param {Object} data - The data array from which to calculate the average. Defaults to the current view data.\n * @returns {number} - The average value of the specified member.\n */\n SeriesBase.prototype.getAverage = function (member, i, data) {\n if (data === void 0) { data = this.currentViewData; }\n var previous = data[i - 1] ? (data[i - 1][member] || 0) : 0;\n var next = data[i + 1] ? (data[i + 1][member] || 0) : 0;\n return (previous + next) / 2;\n };\n /**\n * Refreshes the data manager for the provided chart.\n *\n * @param {Chart} chart - The chart whose data manager is to be refreshed.\n * @returns {void}\n * @private\n */\n SeriesBase.prototype.refreshDataManager = function (chart) {\n var _this = this;\n this.chart = chart;\n var dataSource;\n var isAngular = 'isAngular';\n if (chart[isAngular]) {\n dataSource = Object.keys(this.dataSource).length ? this.dataSource : chart.dataSource;\n }\n else {\n dataSource = this.dataSource || chart.dataSource;\n }\n if (!(dataSource instanceof DataManager) && isNullOrUndefined(this.query)) {\n this.dataManagerSuccess({ result: dataSource, count: dataSource.length }, false);\n return;\n }\n var dataManager = this.dataModule.getData(this.dataModule.generateQuery().requiresCount());\n dataManager.then(function (e) { return _this.dataManagerSuccess(e); });\n };\n SeriesBase.prototype.dataManagerSuccess = function (e, isRemoteData) {\n if (isRemoteData === void 0) { isRemoteData = true; }\n this.currentViewData = e.count ? e.result : [];\n this.chart.allowServerDataBinding = false;\n if (this instanceof Series) {\n if (this.chart.stockChart) {\n this.chart.stockChart.series[this.index].localData = this.currentViewData;\n }\n var argsData = {\n name: seriesRender, series: this, data: this.currentViewData, fill: this.interior\n };\n this.chart.trigger(seriesRender, argsData);\n this.interior = argsData.fill;\n this.currentViewData = argsData.data;\n }\n if (this.chart.stockChart && !(this instanceof Series)) {\n this.currentViewData = this.chart.stockChart.findCurrentData(this.chart.stockChart.series[0].localData, this.chart.stockChart.series[0].xName);\n }\n this.processJsonData();\n this.recordsCount = e.count;\n this.refreshChart(isRemoteData);\n this.currentViewData = null;\n };\n SeriesBase.prototype.refreshChart = function (isRemoteData) {\n var chart = this.chart;\n if (this instanceof Series) {\n chart.visibleSeriesCount += isRemoteData ? 1 : 0;\n }\n chart.refreshTechnicalIndicator(this);\n if (this instanceof Series && this.category !== 'TrendLine') {\n for (var _i = 0, _a = this.trendlines; _i < _a.length; _i++) {\n var trendline = _a[_i];\n trendline.setDataSource(this, chart);\n }\n }\n //if (chart.visibleSeries.length === (chart.visibleSeriesCount - chart.indicators.length)) {\n if (chart.visibleSeries.length === (chart.visibleSeriesCount)) {\n chart.refreshBound();\n chart.trigger('loaded', { chart: chart.isBlazor ? {} : chart });\n if (this.chart.stockChart && this.chart.stockChart.initialRender) {\n this.chart.stockChart.initialRender = false;\n this.chart.stockChart.stockChartDataManagerSuccess();\n }\n }\n if (this instanceof Series) {\n chart.visibleSeriesCount += isRemoteData ? 0 : 1;\n }\n };\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"xName\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"colorName\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"high\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"low\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"open\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"close\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"volume\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"pointColorMapping\", void 0);\n __decorate([\n Property(true)\n ], SeriesBase.prototype, \"visible\", void 0);\n __decorate([\n Property(null)\n ], SeriesBase.prototype, \"xAxisName\", void 0);\n __decorate([\n Property(null)\n ], SeriesBase.prototype, \"yAxisName\", void 0);\n __decorate([\n Complex(null, Animation)\n ], SeriesBase.prototype, \"animation\", void 0);\n __decorate([\n Property(null)\n ], SeriesBase.prototype, \"fill\", void 0);\n __decorate([\n Property(1)\n ], SeriesBase.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"dashArray\", void 0);\n __decorate([\n Property('')\n ], SeriesBase.prototype, \"dataSource\", void 0);\n __decorate([\n Property()\n ], SeriesBase.prototype, \"query\", void 0);\n __decorate([\n Collection([], ChartSegment)\n ], SeriesBase.prototype, \"segments\", void 0);\n __decorate([\n Property('X')\n ], SeriesBase.prototype, \"segmentAxis\", void 0);\n __decorate([\n Property(false)\n ], SeriesBase.prototype, \"enableComplexProperty\", void 0);\n return SeriesBase;\n}(ChildProperty));\nexport { SeriesBase };\n/**\n * The `Series` class is used to configure individual series in a chart.\n *\n * @public\n */\nvar Series = /** @class */ (function (_super) {\n __extends(Series, _super);\n function Series(parent, propName, defaultValue, isArray) {\n var _this = _super.call(this, parent, propName, defaultValue, isArray) || this;\n _this.visibleSeriesCount = 0;\n /** @private */\n _this.category = 'Series';\n /** @private */\n _this.isRectSeries = false;\n /** @private */\n _this.drawPoints = [];\n /** @private */\n _this.lowDrawPoints = [];\n /** @private */\n _this.delayedAnimation = false;\n /** @private */\n _this.rangeColorName = _this.colorName.length > 0 ? _this.colorName : _this.yName;\n /** @private */\n _this.currentData = [];\n return _this;\n }\n /**\n * Refresh the axis label.\n *\n * @returns {void}\n * @private\n */\n Series.prototype.refreshAxisLabel = function () {\n if (this.xAxis.valueType.indexOf('Category') === -1) {\n return null;\n }\n this.xAxis.labels = [];\n this.xAxis.indexLabels = {};\n var option = {\n skeleton: 'full',\n type: 'dateTime'\n };\n var dateParser = this.chart.intl.getDateParser(option);\n var dateFormatter = this.chart.intl.getDateFormat(option);\n for (var _i = 0, _a = this.xAxis.series; _i < _a.length; _i++) {\n var item = _a[_i];\n if (item.visible && item.category !== 'TrendLine') {\n item.xMin = Infinity;\n item.xMax = -Infinity;\n for (var _b = 0, _c = item.points; _b < _c.length; _b++) {\n var point = _c[_b];\n item.pushCategoryData(point, point.index, this.xAxis.valueType === 'DateTimeCategory' ? Date.parse(dateParser(dateFormatter(point.x))).toString() : point.x);\n item.xMin = Math.min(item.xMin, point.xValue);\n item.xMax = Math.max(item.xMax, point.xValue);\n }\n }\n }\n };\n /**\n * To get the series collection.\n *\n * @returns {void}\n * @private\n */\n Series.prototype.findSeriesCollection = function (column, row, isStack) {\n var seriesCollection = [];\n for (var _i = 0, _a = row.axes; _i < _a.length; _i++) {\n var rowAxis = _a[_i];\n for (var _b = 0, _c = rowAxis.series; _b < _c.length; _b++) {\n var rowSeries = _c[_b];\n for (var _d = 0, _e = column.axes; _d < _e.length; _d++) {\n var axis = _e[_d];\n for (var _f = 0, _g = axis.series; _f < _g.length; _f++) {\n var series = _g[_f];\n if (series === rowSeries && series.visible && this.rectSeriesInChart(series, isStack)) {\n seriesCollection.push(series);\n }\n }\n }\n }\n }\n return seriesCollection;\n };\n /**\n * Checks if the series in the chart are rectangular.\n *\n * @param {Series} series - The series to be checked.\n * @param {boolean} isStack - Specifies whether the series are stacked.\n * @returns {boolean} - Returns true if the series in the chart are rectangular, otherwise false.\n */\n Series.prototype.rectSeriesInChart = function (series, isStack) {\n var type = (series.type).toLowerCase();\n return (type.indexOf('column') !== -1 || type.indexOf('bar') !== -1 || type.indexOf('histogram') !== -1 ||\n type.indexOf('hiloopenclose') !== -1 || type.indexOf('candle') !== -1 || type.indexOf('pareto') !== -1 ||\n type.indexOf('hilo') !== -1 || series.drawType.indexOf('Column') !== -1 ||\n type.indexOf('waterfall') !== -1 || type.indexOf('boxandwhisker') !== -1 || isStack);\n };\n /**\n * Calculates the stacked value for the chart.\n *\n * @param {boolean} isStacking100 - Specifies whether the stacking is 100%.\n * @param {Chart} chart - The chart for which the stacked value is calculated.\n * @returns {void}\n * @private\n */\n Series.prototype.calculateStackedValue = function (isStacking100, chart) {\n for (var _i = 0, _a = chart.columns; _i < _a.length; _i++) {\n var columnItem = _a[_i];\n for (var _b = 0, _c = chart.rows; _b < _c.length; _b++) {\n var item = _c[_b];\n this.calculateStackingValues(this.findSeriesCollection(columnItem, item, true), isStacking100);\n }\n }\n };\n Series.prototype.calculateStackingValues = function (seriesCollection, isStacking100) {\n var startValues;\n var endValues;\n var yValues = [];\n var lastPositive = [];\n var lastNegative = [];\n var stackingGroup;\n var lastValue;\n var value;\n var frequencies = [];\n if (isStacking100) {\n frequencies = this.findFrequencies(seriesCollection);\n }\n var groupingValues = [];\n var visiblePoints = [];\n for (var i = 0; i < seriesCollection.length; i++) {\n var series = seriesCollection[i];\n if (!groupingValues[series.stackingGroup]) {\n groupingValues[series.stackingGroup] = [];\n groupingValues[series.stackingGroup].push(series);\n }\n else if (groupingValues[series.stackingGroup] !== undefined) {\n groupingValues[series.stackingGroup].push(series);\n }\n }\n var keys = Object.keys(groupingValues);\n for (var k = 0; k < keys.length; k++) {\n var stackingSeies = [];\n var stackedValues = [];\n var seriesCollection_2 = groupingValues[keys[k]];\n for (var _i = 0, seriesCollection_1 = seriesCollection_2; _i < seriesCollection_1.length; _i++) {\n var series = seriesCollection_1[_i];\n if (series.type.indexOf('Stacking') !== -1 || (series.drawType.indexOf('Stacking') !== -1 &&\n (series.chart.chartAreaType === 'PolarRadar'))) {\n stackingGroup = (series.type.indexOf('StackingArea') !== -1) ? 'StackingArea100' :\n (series.type.indexOf('StackingLine') !== -1) ? 'StackingLine100' : series.stackingGroup;\n if (!lastPositive[stackingGroup]) {\n lastPositive[stackingGroup] = [];\n lastNegative[stackingGroup] = [];\n }\n yValues = series.yData;\n startValues = [];\n endValues = [];\n stackingSeies.push(series);\n visiblePoints = getVisiblePoints(series);\n for (var j = 0, pointsLength = visiblePoints.length; j < pointsLength; j++) {\n lastValue = 0;\n value = +yValues[j]; // Fix for chart not rendering while y value is given as string issue\n if (lastPositive[stackingGroup][visiblePoints[j].xValue] === undefined) {\n lastPositive[stackingGroup][visiblePoints[j].xValue] = 0;\n }\n if (lastNegative[stackingGroup][visiblePoints[j].xValue] === undefined) {\n lastNegative[stackingGroup][visiblePoints[j].xValue] = 0;\n }\n if (isStacking100) {\n value = value / frequencies[stackingGroup][visiblePoints[j].xValue] * 100;\n value = !isNaN(value) ? value : 0;\n visiblePoints[j].percentage = +(value.toFixed(2));\n }\n else {\n stackedValues[j] = stackedValues[j] ?\n stackedValues[j] + Math.abs(value) : Math.abs(value);\n }\n if (value >= 0) {\n lastValue = lastPositive[stackingGroup][visiblePoints[j].xValue];\n lastPositive[stackingGroup][visiblePoints[j].xValue] += value;\n }\n else {\n lastValue = lastNegative[stackingGroup][visiblePoints[j].xValue];\n lastNegative[stackingGroup][visiblePoints[j].xValue] += value;\n }\n startValues.push(lastValue);\n endValues.push(value + lastValue);\n if (isStacking100 && (endValues[j] > 100)) {\n endValues[j] = 100;\n }\n }\n series.stackedValues = new StackValues(startValues, endValues);\n var isLogAxis = series.yAxis.valueType === 'Logarithmic';\n var isColumnBarType = (series.type.indexOf('Column') !== -1 || series.type.indexOf('Bar') !== -1);\n series.yMin = isLogAxis && isColumnBarType && series.yMin < 1 ? series.yMin : (series.yAxis.startFromZero && series.yAxis.rangePadding === 'Auto' && series.yMin >= 0) ? 0 : parseFloat((Math.min.apply(0, isStacking100 ? startValues : endValues)).toFixed(10));\n series.yMax = Math.max.apply(0, endValues);\n if (series.yMin > Math.min.apply(0, endValues)) {\n series.yMin = (isStacking100) ? -100 :\n isLogAxis && isColumnBarType && series.yMin < 1 ? series.yMin : Math.min.apply(0, endValues);\n }\n if (series.yMax < Math.max.apply(0, startValues)) {\n series.yMax = 0;\n }\n }\n }\n this.findPercentageOfStacking(stackingSeies, stackedValues, isStacking100);\n }\n };\n Series.prototype.findPercentageOfStacking = function (stackingSeies, values, isStacking100) {\n for (var _i = 0, stackingSeies_1 = stackingSeies; _i < stackingSeies_1.length; _i++) {\n var item = stackingSeies_1[_i];\n if (isStacking100) {\n return null;\n }\n for (var _a = 0, _b = getVisiblePoints(item); _a < _b.length; _a++) {\n var point = _b[_a];\n point.percentage = Math.abs(+(point.y / values[point.index] * 100).toFixed(2));\n }\n }\n };\n Series.prototype.findFrequencies = function (seriesCollection) {\n var frequencies = [];\n var stackingGroup;\n var visiblePoints = [];\n for (var _i = 0, seriesCollection_3 = seriesCollection; _i < seriesCollection_3.length; _i++) {\n var series = seriesCollection_3[_i];\n series.yAxis.isStack100 = series.type.indexOf('100') !== -1 ? true : false;\n visiblePoints = getVisiblePoints(series);\n if (series.type.indexOf('Stacking') !== -1) {\n stackingGroup = (series.type.indexOf('StackingArea') !== -1) ? 'StackingArea100' :\n (series.type.indexOf('StackingLine') !== -1) ? 'StackingLine100' : series.stackingGroup;\n if (!frequencies[stackingGroup]) {\n frequencies[stackingGroup] = [];\n }\n for (var j = 0, pointsLength = visiblePoints.length; j < pointsLength; j++) {\n if (frequencies[stackingGroup][visiblePoints[j].xValue] === undefined) {\n frequencies[stackingGroup][visiblePoints[j].xValue] = 0;\n }\n if (series.yData[j] > 0) {\n frequencies[stackingGroup][visiblePoints[j].xValue] += series.yData[j];\n }\n else {\n frequencies[stackingGroup][visiblePoints[j].xValue] -= series.yData[j];\n }\n }\n }\n }\n return frequencies;\n };\n /* private dataManagerFailure(e: { result: Object[] }): void {\n this.currentViewData = [];\n this.refreshChart();\n }*/\n /**\n * Renders the series on the chart.\n *\n * @param {Chart} chart - The chart on which the series is rendered.\n * @returns {void}\n * @private\n */\n Series.prototype.renderSeries = function (chart) {\n if (this.chart.stockChart && this.xAxis.valueType === 'DateTimeCategory') {\n for (var i = 0; i < this.points.length; i++) {\n var index = this.xAxis.labels.indexOf(Date.parse(this.points[i].x.toString()).toString());\n this.points[i].xValue = index;\n if (chart.series.length > 1) {\n this.xData[i] = index;\n this.xMin = (this.xMin > index) ? index : this.xMin;\n this.xMax = (this.xMax < index) ? index : this.xMax;\n }\n }\n if (this instanceof Series && this.type.indexOf('Spline') > -1) {\n var isArea = this.type.indexOf('Area') > -1;\n var isRange = this.type.indexOf('Range') > -1;\n this.chart['spline' + (isArea ? isRange ? 'RangeArea' : 'Area' : '') + 'SeriesModule'].findSplinePoint(this);\n }\n }\n var seriesType = firstToLowerCase(this.type);\n seriesType = seriesType.replace('100', '');\n if (chart[seriesType + 'SeriesModule']) {\n if (this.category !== 'Indicator' && this.category !== 'TrendLine') {\n this.createSeriesElements(chart);\n }\n this.visiblePoints = getVisiblePoints(this);\n chart[seriesType + 'SeriesModule'].render(this, this.xAxis, this.yAxis, chart.requireInvertedAxis);\n if (this.category !== 'Indicator') {\n if (this.errorBar.visible) {\n this.chart.errorBarModule.render(this);\n }\n if (this.marker.dataLabel.visible) {\n chart.dataLabelModule.render(this, this.chart, this.marker.dataLabel);\n }\n this.appendSeriesElement(chart.seriesElements, chart);\n }\n if (!this.chart.enableCanvas) {\n this.performAnimation(chart, seriesType, this.errorBar, this.marker, this.marker.dataLabel);\n }\n }\n };\n /**\n * Creates elements for the series on the chart.\n *\n * @param {Chart} chart - The chart for which series elements are created.\n * @returns {void}\n * @private\n */\n Series.prototype.createSeriesElements = function (chart) {\n if (this.category !== 'Indicator') {\n var elementId = chart.element.id;\n // 8 for extend border value 5 for extend size value\n var explodeValue = this.marker.border.width + 8 + 5;\n var render = (this.type === 'Bubble') || (!this.marker.visible && chart.tooltip.shared && chart.enableCanvas) ?\n chart.svgRenderer : chart.renderer;\n var index = this.index === undefined ? this.category : this.index;\n var markerHeight = void 0;\n var markerWidth = void 0;\n var options = void 0;\n if (this.type === 'Scatter' || this.drawType === 'Scatter') {\n markerHeight = (this.marker.height + explodeValue) / 2;\n markerWidth = (this.marker.width + explodeValue) / 2;\n }\n else {\n markerHeight = 0;\n markerWidth = 0;\n }\n if (chart.chartAreaType === 'PolarRadar') {\n var markerMaxValue = (this.drawType === 'Scatter') ? Math.max(this.marker.width, this.marker.height) : 0;\n options = new CircleOption(elementId + '_ChartSeriesClipRect_' + index, 'transparent', { width: 1, color: 'Gray' }, 1, this.clipRect.width / 2 + this.clipRect.x, this.clipRect.height / 2 + this.clipRect.y, chart.radius + markerMaxValue);\n this.clipRectElement = appendClipElement(chart.redraw, options, render, 'drawCircularClipPath');\n }\n else {\n options = new RectOption(elementId + '_ChartSeriesClipRect_' + index, 'transparent', { width: 1, color: 'Gray' }, 1, {\n x: (this.xAxis.columnIndex === 0) ? -markerWidth : 0, y: (this.yAxis.rowIndex === chart.rows.length - 1) ? -markerHeight : 0,\n width: this.clipRect.width + (this.xAxis.columnIndex === chart.columns.length - 1 ? markerWidth * 2 : markerWidth),\n height: this.clipRect.height + (this.yAxis.rowIndex === 0 ? markerHeight * 2 : markerHeight)\n });\n this.clipRectElement = appendClipElement(chart.redraw, options, render);\n }\n var transform = chart.chartAreaType === 'Cartesian' ? 'translate(' + this.clipRect.x + ',' + (this.clipRect.y) + ')' : '';\n this.symbolElement = null;\n this.seriesElement = render.createGroup({\n 'id': elementId + 'SeriesGroup' + index,\n 'transform': transform,\n 'clip-path': 'url(#' + elementId + '_ChartSeriesClipRect_' + index + ')'\n });\n if (this.seriesElement) {\n this.seriesElement.setAttribute('role', 'region');\n this.seriesElement.setAttribute('aria-label', (this.name + ',' + this.type + ' series with ' + this.points.length + ' data points'));\n this.seriesElement.setAttribute('aria-hidden', 'false');\n }\n if (!this.chart.enableCanvas || this.type === 'Bubble') {\n this.seriesElement.setAttribute('tabindex', index === 0 ? '0' : !this.checkTabindex(chart.visibleSeries, index) ? '0' : '');\n this.seriesElement.setAttribute('style', 'outline: none');\n this.seriesElement.appendChild(this.clipRectElement);\n }\n }\n };\n Series.prototype.checkTabindex = function (visibleSeries, index) {\n for (var i = 0; i < index; i++) {\n if (visibleSeries[i].visible) {\n return true;\n }\n }\n return false;\n };\n /**\n * Appends a series element to the chart.\n *\n * @param {Element} element - The series element to append.\n * @param {Chart} chart - The chart to which the series element will be appended.\n * @returns {void}\n * @private\n */\n Series.prototype.appendSeriesElement = function (element, chart) {\n var marker = this.marker;\n var dataLabel = marker.dataLabel;\n var redraw = chart.redraw;\n if (this.category !== 'TrendLine') {\n appendChildElement(chart.enableCanvas, chart.seriesElements, this.seriesElement, redraw);\n var errorBar = this.errorBar;\n if (errorBar.visible) {\n if (chart.chartAreaType === 'PolarRadar') {\n appendChildElement(chart.enableCanvas, chart.seriesElements, this.seriesElement, redraw);\n }\n else {\n appendChildElement(chart.enableCanvas, chart.seriesElements, this.errorBarElement, redraw);\n }\n }\n }\n if (marker.visible && (chart.chartAreaType === 'Cartesian' ||\n ((this.drawType !== 'Scatter') && chart.chartAreaType === 'PolarRadar')) && this.type !== 'Scatter' &&\n this.type !== 'Bubble' && this.type !== 'Candle' && this.type !== 'Hilo' && this.type !== 'HiloOpenClose' && this.symbolElement) {\n appendChildElement(chart.enableCanvas, chart.seriesElements, this.symbolElement, redraw);\n }\n if (dataLabel.visible && this.textElement) {\n appendChildElement(chart.enableCanvas, chart.dataLabelElements, this.shapeElement, redraw);\n appendChildElement(chart.enableCanvas, chart.dataLabelElements, this.textElement, redraw);\n }\n if (!chart.enableCanvas && chart.dataLabelElements.hasChildNodes()) {\n chart.seriesElements.appendChild(chart.dataLabelElements);\n }\n };\n /**\n * Performs animation for the specified chart elements.\n *\n * @param {Chart} chart - The chart for which animation is performed.\n * @param {string} type - The type of animation to be performed.\n * @param {ErrorBarSettingsModel} errorBar - The error bar settings for the animation.\n * @param {MarkerSettingsModel} marker - The marker settings for the animation.\n * @param {DataLabelSettingsModel} dataLabel - The data label settings for the animation.\n * @returns {void}\n * @private\n */\n Series.prototype.performAnimation = function (chart, type, errorBar, marker, dataLabel) {\n if (((this.animation.enable && animationMode !== 'Disable') || animationMode === 'Enable') && chart.animateSeries && (!chart.stockChart || !chart.stockChart.isStockChartRendered)) {\n chart[type + 'SeriesModule'].doAnimation(this);\n if (errorBar.visible) {\n chart.errorBarModule.doErrorBarAnimation(this);\n }\n if (marker.visible && (this.isRectSeries || this.type === 'Line' || this.type === 'Polar' || this.type === 'Radar')) {\n chart.markerRender.doMarkerAnimation(this);\n }\n //to datalabel animation disabled for edge and IE\n if (dataLabel.visible && Browser.info.name !== 'edge' && !Browser.isIE) {\n chart.dataLabelModule.doDataLabelAnimation(this);\n }\n }\n };\n /**\n * Sets the color of a data point.\n *\n * @param {Points} point - The data point.\n * @param {string} color - The color to set.\n * @returns {string} - The updated color.\n * @private\n */\n Series.prototype.setPointColor = function (point, color) {\n color = point.interior || color;\n return point.isEmpty ? (this.emptyPointSettings.fill || color) : color;\n };\n /**\n * Sets the border color of a data point.\n *\n * @param {Points} point - The data point.\n * @param {BorderModel} border - The border color to set.\n * @returns {BorderModel} - The updated border color.\n * @private\n */\n Series.prototype.setBorderColor = function (point, border) {\n border.width = point.isEmpty ? (this.emptyPointSettings.border.width || border.width) : border.width;\n border.color = point.isEmpty ? (this.emptyPointSettings.border.color || border.color) : border.color;\n return border;\n };\n /**\n * Adds a data point to the data source.\n *\n * @function addPoint\n * @param {Object} dataPoint - The data point to be added.\n * @param {number} duration - The duration for the animation.\n * @returns {void}\n */\n Series.prototype.addPoint = function (dataPoint, duration) {\n var yMin = this.yMin;\n var yMax = this.yMax;\n this.removeTrackballElements();\n this.dataSource.push(dataPoint);\n if (this.type === 'Radar' || this.type === 'Polar') {\n return this.chart.refresh();\n }\n if (this.type === 'Histogram') {\n this.currentViewData = this.chart[firstToLowerCase(this.type) + 'SeriesModule'].\n processInternalData(extend([], this.dataSource, null, true), this);\n for (var i = 0; i < this.currentViewData.length; i++) {\n this.updatePoint(i);\n }\n }\n else {\n this.currentViewData = this.dataSource;\n var pointIndex = this.points.length === 0 ? 0 : this.points[this.points.length - 1].index + 1;\n this.updatePoint(pointIndex);\n }\n if (this.category === 'Pareto') {\n var dataSource = extend([], this.dataSource, null, true);\n var series = this.chart.visibleSeries[this.index + this.chart.series.length];\n series.currentViewData = this.chart.paretoSeriesModule.performCumulativeCalculation(dataSource, this);\n for (var i = 0; i < series.currentViewData.length; i++) {\n if (!series.points[i]) {\n series.updatePoint(i);\n }\n series.points[i].y = series.points[i].yValue = series.currentViewData[i][series.yName];\n }\n }\n this.updateSplineValue();\n this.chart.calculateStackValues();\n this.chart.redraw = this.chart.enableAnimation;\n var chartDuration = this.chart.duration;\n this.chart.duration = isNullOrUndefined(duration) ? 500 : duration;\n this.chart.animateSeries = false;\n this.chart.pointsAdded = true;\n if (this.chart.enableAnimation && (!(this.isRectSeries || this.type === 'Bubble' || this.type === 'Scatter')) && (this.type.indexOf('step') === -1)) {\n if (this.marker && this.marker.visible && this.visible) {\n for (var i = this.points.length - 2; i >= 0; i--) {\n if (this.points[i] && this.points[i].symbolLocations[0] !== undefined) {\n this.chart.markerRender.renderMarker(this, this.points[this.points.length - 2], this.points[i].symbolLocations[0], null, true);\n break;\n }\n }\n }\n }\n if (this.yMin >= yMin && this.yMax <= yMax) {\n if (!setRange(this.xAxis)) {\n this.xAxis.baseModule.calculateRangeAndInterval(new Size(this.xAxis.rect.width, this.chart.availableSize.height), this.xAxis);\n this.xAxis.updateAxis();\n }\n this.chart.pointsAdded = false;\n this.updateSeries(true, false);\n }\n if (this.yMin < yMin || this.yMax > yMax) {\n this.updateChartAxis();\n this.chart.pointsAdded = false;\n this.updateSeries(true, true);\n }\n this.chart.redraw = false;\n this.chart.duration = chartDuration;\n };\n /**\n * Removes a data point from the series data source at the specified index.\n *\n * @function removePoint\n * @param {number} index - The index of the data point to be removed.\n * @param {number} duration - The duration for the animation.\n * @returns {void}\n */\n Series.prototype.removePoint = function (index, duration) {\n var dataSource = extend([], this.dataSource, null, true);\n var chartDuration = this.chart.duration;\n if (dataSource.length > 0 && index >= 0 && index < dataSource.length) {\n dataSource.splice(index, 1);\n this.dataSource.splice(index, 1);\n this.removeTrackballElements(index);\n if (this.type === 'Radar' || this.type === 'Polar') {\n return this.chart.refresh();\n }\n this.chart.redraw = this.chart.enableAnimation;\n this.chart.animateSeries = false;\n this.chart.pointsAdded = true;\n this.chart.duration = isNullOrUndefined(duration) ? 500 : duration;\n if (this.type === 'Histogram') {\n var length_1 = this.points.length;\n this.points = [];\n this.visiblePoints = [];\n this.currentViewData = this.chart[firstToLowerCase(this.type) + 'SeriesModule'].\n processInternalData(extend([], this.dataSource, null, true), this);\n for (var i = 0; i < this.currentViewData.length; i++) {\n this.updatePoint(i);\n }\n if (length_1 > this.points.length) {\n this.removedPointIndex = index;\n }\n }\n else {\n this.removedPointIndex = index;\n this.points.splice(index, 1);\n this.visiblePoints.splice(index, 1);\n }\n this.yData = [];\n this.xData = [];\n var yMin = this.yMin;\n var yMax = this.yMax;\n this.yMin = Infinity;\n this.xMin = Infinity;\n this.yMax = -Infinity;\n this.xMax = -Infinity;\n if (this.xAxis.valueType.indexOf('Category') > -1 && this.chart.series.length === 1) {\n this.xAxis.labels = [];\n this.xAxis.indexLabels = {};\n }\n if (index === 0) {\n this.chart.pointsRemoved = this.chart.enableAnimation;\n }\n for (var i = 0; i < this.points.length; i++) {\n this.updatePointsAfterRemoval(i);\n }\n if (this.category === 'Pareto') {\n var series = this.chart.visibleSeries[this.index + this.chart.series.length];\n series.yMin = Infinity;\n series.xMin = Infinity;\n series.yMax = -Infinity;\n series.xMax = -Infinity;\n series.points.splice(index, 1);\n series.visiblePoints.splice(index, 1);\n series.currentViewData = this.chart.paretoSeriesModule.performCumulativeCalculation(this.dataSource, this);\n for (var i = 0; i < series.currentViewData.length; i++) {\n series.points[i].y = series.points[i].yValue = series.currentViewData[i][series.yName];\n series.updatePointsAfterRemoval(i);\n }\n }\n this.updateSplineValue();\n this.chart.calculateStackValues();\n if (!setRange(this.xAxis) && yMax === this.yMax && yMin === this.yMin) {\n this.xAxis.baseModule.calculateRangeAndInterval(new Size(this.xAxis.rect.width, this.chart.availableSize.height), this.xAxis);\n this.xAxis.updateAxis();\n this.createSeriesElements(this.chart);\n this.chart.pointsAdded = false;\n this.updateSeries(true, false);\n }\n else if (yMax < this.yMax || yMin > this.yMin || yMax > this.yMax || yMin < this.yMin) {\n this.updateChartAxis();\n this.createSeriesElements(this.chart);\n this.chart.pointsAdded = false;\n this.updateSeries(true, true);\n }\n }\n appendChildElement(this.chart.enableCanvas, this.chart.seriesElements, this.seriesElement, true);\n this.chart.redraw = false;\n this.chart.duration = chartDuration;\n this.chart.pointsRemoved = false;\n this.removedPointIndex = null;\n };\n Series.prototype.updatePointsAfterRemoval = function (index) {\n var point = this.points[index];\n var option = {\n skeleton: 'full',\n type: 'dateTime'\n };\n var dateParser = this.chart.intl.getDateParser(option);\n var dateFormatter = this.chart.intl.getDateFormat(option);\n if (this.xAxis.valueType === 'Category' && this.chart.series.length === 1) {\n this.pushCategoryData(point, index, point.x);\n }\n else if (this.xAxis.valueType === 'DateTimeCategory' && this.chart.series.length === 1) {\n this.pushCategoryData(point, index, Date.parse(dateParser(dateFormatter(point.x))).toString());\n }\n this.pushData(point, index);\n this.setEmptyPoint(this.points[index], index);\n };\n /**\n * Removes trackball elements from the series.\n *\n * @param {number} index - The index of the data point.\n * @returns {void}\n */\n Series.prototype.removeTrackballElements = function (index) {\n if (this.marker.visible) {\n if (index !== undefined) {\n var baseId = this.chart.element.id + '_Series_' + this.index + '_Point_' + index + '_Trackball_';\n var trackball0 = getElement(baseId + '0');\n if (trackball0) {\n trackball0.remove();\n }\n var trackball1 = getElement(baseId + '1');\n if (trackball1) {\n trackball1.remove();\n }\n var symbolElement = getElement(this.chart.element.id + '_Series_' + this.index + '_Point_' + index + '_Symbol');\n if (symbolElement) {\n symbolElement.setAttribute('visibility', 'visible');\n }\n }\n else {\n var baseClassPattern = this.chart.element.id + '_EJ2-Trackball_Series_' + this.index + '_Point_';\n var elements = document.querySelectorAll(\"[class*=\\\"\" + baseClassPattern + \"\\\"]\");\n if (elements[0]) {\n var pointIndexMatch = elements[0].id.match(/_Point_(\\d+)_/);\n var pointIndex = pointIndexMatch ? parseInt(pointIndexMatch[1], 10) : null;\n elements[0].remove();\n var symbolElement = getElement(this.chart.element.id + '_Series_' + this.index + '_Point_' + pointIndex + '_Symbol');\n if (symbolElement) {\n symbolElement.setAttribute('visibility', 'visible');\n }\n }\n if (elements[1]) {\n elements[1].remove();\n }\n }\n }\n if (this.chart.tooltip.enable) {\n this.chart.tooltipModule.previousPoints = [];\n var tooltipElement = getElement(this.chart.element.id + '_tooltip');\n if (tooltipElement) {\n tooltipElement.remove();\n }\n }\n };\n /**\n * Sets the data source with the provided data.\n *\n * @function setData\n * @param {Object[]} data - An array of objects representing the data points.\n * @param {number} duration - The duration for the animation.\n * @returns {void}\n */\n Series.prototype.setData = function (data, duration) {\n var _this = this;\n if (!data) {\n return null;\n }\n var updatedData = [];\n if (this.dataSource.length === data.length) {\n for (var i = 0; i < data.length; i++) {\n if (data[i][this.xName] instanceof Date) {\n updatedData.push(data[i][this.xName].getTime());\n }\n else {\n updatedData.push(data[i][this.xName]);\n }\n if (this.currentData.length < this.dataSource.length) {\n var dataSource = extend([], this.dataSource, null, true);\n if (dataSource[i][this.xName] instanceof Date) {\n this.currentData.push(dataSource[i][this.xName].getTime());\n }\n else {\n this.currentData.push(dataSource[i][this.xName]);\n }\n }\n }\n }\n var isSameData = updatedData.every(function (element) { return _this.currentData.indexOf(element) !== -1; });\n if (this.currentViewData) {\n isSameData = true;\n }\n var isXAxisChanged = false;\n var yMin = this.yMin;\n var yMax = this.yMax;\n this.yMin = Infinity;\n this.yMax = -Infinity;\n var points = [];\n this.chart.dataLabelCollections = [];\n this.chart.rotatedDataLabelCollections = [];\n var samePoints = false;\n var index = null;\n if (this.dataSource.length === data.length && !(this.type === 'Radar' || this.type === 'Polar') && isSameData) {\n samePoints = true;\n this.yData = [];\n if (this.type === 'Histogram' && this.dataSource.length === data.length) {\n var newHistogramData = this.chart[firstToLowerCase(this.type) + 'SeriesModule'].\n processInternalData(extend([], data, null, true), this);\n this.currentViewData = newHistogramData;\n for (var j = 0; j < newHistogramData.length; j++) {\n this.updatePoint(j);\n }\n }\n else {\n for (var i = 0; i < data.length; i++) {\n var newData = data[i][this.xName];\n var existingData = this.dataSource[i][this.xName];\n if (data[i][this.xName] instanceof Date) {\n newData = data[i][this.xName].getTime();\n existingData = this.dataSource[i][this.xName].getTime();\n }\n if (this.currentData[i] !== newData) {\n isXAxisChanged = true;\n }\n var point = this.points[i];\n var getObjectValueByMappingString = this.enableComplexProperty ? getValue : this.getObjectValue;\n var existingPoint = this.dataSource[i];\n var newPoint = data[i];\n if ((this.seriesType === 'XY' || this.seriesType === 'BoxPlot')) {\n point.y = getObjectValueByMappingString(this.yName, newPoint);\n if (this.type === 'Bubble' && existingPoint[this.size] !== newPoint[this.size]) {\n point.size = getObjectValueByMappingString(this.size, newPoint);\n }\n points.push(i);\n }\n else if (existingPoint[this.high] !== newPoint[this.high] || existingPoint[this.low] !== newPoint[this.low] ||\n existingPoint[this.open] !== newPoint[this.open] || existingPoint[this.close] !== newPoint[this.close] ||\n existingPoint[this.volume] !== newPoint[this.volume]) {\n point.high = getObjectValueByMappingString(this.high, newPoint);\n point.low = getObjectValueByMappingString(this.low, newPoint);\n point.open = getObjectValueByMappingString(this.open, newPoint);\n point.close = getObjectValueByMappingString(this.close, newPoint);\n point.volume = getObjectValueByMappingString(this.volume, newPoint);\n points.push(i);\n }\n point.yValue = point.y;\n point.x = getObjectValueByMappingString(this.xName, newPoint);\n if (!this.currentViewData) {\n point.index = (this.xAxis.valueType === 'DateTime' && typeof (point.x) !== 'number') ? this.currentData.indexOf(point.x.getTime()) : this.currentData.indexOf(point.x);\n }\n if ((this.xAxis.valueType === 'Category' || this.xAxis.valueType === 'DateTimeCategory') && i < this.xAxis.visibleLabels.length) {\n this.xAxis.visibleLabels[i].value = updatedData.indexOf(this.currentData[i *\n this.xAxis.visibleRange.interval]);\n this.xAxis.labels[i] = String(updatedData[i]);\n }\n this.setEmptyPoint(point, i);\n this.dataSource[i] = data[i];\n }\n }\n }\n if (!samePoints) {\n this.dataSource = data;\n }\n else {\n this.chart.redraw = this.chart.enableAnimation;\n this.chart.animateSeries = false;\n this.chart.pointsAdded = true;\n var chartDuration = this.chart.duration;\n this.chart.duration = isNullOrUndefined(duration) ? 500 : duration;\n if (this.type.indexOf('Stacking') !== -1) {\n this.chart.calculateStackValues();\n }\n this.updateSplineValue();\n if (yMax === this.yMax && yMin === this.yMin && this.visible) {\n this.chart.pointsAdded = false;\n this.chart[firstToLowerCase((this.category === 'Pareto' ? 'Column' : this.type.replace('100', ''))) + 'SeriesModule'].updateDirection(this, points, this.chart.requireInvertedAxis);\n if (this.chart.annotationModule) {\n this.chart.annotationModule.renderAnnotations(getElement((this.chart.element.id) + '_Secondary_Element'));\n }\n if (!setRange(this.xAxis) && (isXAxisChanged)) {\n this.xAxis.updateAxis();\n }\n }\n else if ((yMax < this.yMax || yMin > this.yMin || yMax > this.yMax || yMin < this.yMin) && this.visible) {\n var maximumLabelWidth = this.yAxis.maxLabelSize.width;\n this.yAxis.baseModule.calculateRangeAndInterval(new Size(this.chart.availableSize.width, this.yAxis.rect.height), this.yAxis);\n if (maximumLabelWidth < this.yAxis.maxLabelSize.width) {\n this.chart.calculateBounds();\n this.chart.axisCollections.forEach(function (axis) {\n if (!setRange(axis)) {\n axis.updateAxis();\n }\n });\n this.chart.chartAxisLayoutPanel.drawPaneLines(this.chart);\n this.chart.renderAreaBorder();\n }\n else {\n if (!setRange(this.yAxis)) {\n this.yAxis.updateAxis();\n }\n if (!setRange(this.xAxis) && (isXAxisChanged)) {\n this.xAxis.updateAxis();\n }\n if (this.type === 'Histogram' && !setRange(this.xAxis)) {\n this.xAxis.baseModule.calculateRangeAndInterval(new Size(this.xAxis.rect.width, this.chart.availableSize.height), this.xAxis);\n this.xAxis.updateAxis();\n }\n }\n this.chart.pointsAdded = false;\n if (isXAxisChanged) {\n this.chart[firstToLowerCase((this.category === 'Pareto' ? 'Column' : this.type.replace('100', ''))) + 'SeriesModule'].updateDirection(this, points, this.chart.requireInvertedAxis);\n index = this.index;\n }\n this.updateSeries(false, true, index);\n if (this.chart.stripLineModule) {\n this.chart.stripLineModule.renderStripLine(this.chart, 'Behind', this.chart.axisCollections);\n }\n }\n this.chart.redraw = false;\n this.chart.pointsRemoved = false;\n this.chart.duration = chartDuration;\n }\n };\n /**\n * Updates the chart axes based on current data and axis bounds.\n *\n * @returns {void}\n */\n Series.prototype.updateChartAxis = function () {\n var maximumLabelWidth = this.yAxis.maxLabelSize.width;\n this.yAxis.baseModule.calculateRangeAndInterval(new Size(this.chart.availableSize.width, this.yAxis.rect.height), this.yAxis);\n if (maximumLabelWidth < this.yAxis.maxLabelSize.width) {\n this.chart.calculateBounds();\n this.chart.axisCollections.forEach(function (axis) {\n if (!setRange(axis)) {\n axis.updateAxis();\n }\n });\n this.chart.chartAxisLayoutPanel.drawPaneLines(this.chart);\n this.chart.renderAreaBorder();\n }\n else {\n if (!setRange(this.xAxis)) {\n this.xAxis.baseModule.calculateRangeAndInterval(new Size(this.xAxis.rect.width, this.chart.availableSize.height), this.xAxis);\n this.xAxis.updateAxis();\n }\n if (!setRange(this.yAxis)) {\n this.yAxis.updateAxis();\n }\n }\n if (this.chart.stripLineModule) {\n this.chart.stripLineModule.renderStripLine(this.chart, 'Behind', this.chart.axisCollections);\n }\n };\n Series.prototype.updateSeries = function (xAxis, yAxis, index) {\n var seriesCollection = [];\n if (xAxis && yAxis) {\n var set = new Set(this.xAxis.series.concat(this.yAxis.series));\n set.forEach(function (series) {\n seriesCollection.push(series);\n });\n }\n else {\n seriesCollection = xAxis ? this.xAxis.series.slice() : this.yAxis.series.slice();\n }\n for (var _i = 0, seriesCollection_4 = seriesCollection; _i < seriesCollection_4.length; _i++) {\n var series = seriesCollection_4[_i];\n if (series.visible && series.index !== index) {\n findClipRect(series, this.chart.enableCanvas);\n var transform = 'translate(' + this.clipRect.x + ',' + (this.clipRect.y) + ')';\n series.seriesElement.setAttribute('transform', transform);\n series.chart[firstToLowerCase(series.type.replace('100', '')) + 'SeriesModule'].render(series, series.xAxis, series.yAxis, series.chart.requireInvertedAxis, series.chart.enableAnimation);\n if (series.marker.visible && (series.chart.chartAreaType === 'Cartesian') && series.type !== 'Scatter' && series.type !== 'Bubble'\n && series.type !== 'Candle' && series.type !== 'Hilo' && series.type !== 'HiloOpenClose' && series.symbolElement) {\n series.symbolElement.setAttribute('transform', transform);\n appendChildElement(series.chart.enableCanvas, series.chart.seriesElements, series.symbolElement, true);\n }\n if (series.marker.dataLabel.visible && series.chart.dataLabelModule) {\n series.chart.dataLabelCollections = [];\n series.chart.dataLabelModule.render(series, series.chart, series.marker.dataLabel);\n if (series.textElement) {\n if (series.shapeElement) {\n series.shapeElement.setAttribute('transform', transform);\n }\n appendChildElement(series.chart.enableCanvas, series.chart.dataLabelElements, series.shapeElement, true);\n series.textElement.setAttribute('transform', transform);\n appendChildElement(series.chart.enableCanvas, series.chart.dataLabelElements, series.textElement, true);\n }\n }\n if (series.chart.annotationModule) {\n series.chart.annotationModule.renderAnnotations(getElement((series.chart.element.id) + '_Secondary_Element'));\n }\n }\n }\n };\n Series.prototype.updatePoint = function (index) {\n var point = new Points();\n var textMappingName = this instanceof Series && this.marker.dataLabel.name ?\n this.marker.dataLabel.name : '';\n var xName = (this instanceof Series && this.type === 'Histogram') ? 'x' : this.xName;\n if (this.xAxis.valueType === 'Category') {\n this.pushCategoryPoint(point, index, textMappingName, xName);\n }\n else if (this.xAxis.valueType.indexOf('DateTime') > -1) {\n var point_1 = this.points[index];\n var option = {\n skeleton: 'full',\n type: 'dateTime'\n };\n var dateParser = this.chart.intl.getDateParser(option);\n var dateFormatter = this.chart.intl.getDateFormat(option);\n this.pushDateTimePoint(point_1, index, textMappingName, xName, dateParser, dateFormatter);\n }\n else {\n this.pushDoublePoint(point, index, textMappingName, xName);\n }\n };\n __decorate([\n Property('')\n ], Series.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], Series.prototype, \"yName\", void 0);\n __decorate([\n Property('Line')\n ], Series.prototype, \"drawType\", void 0);\n __decorate([\n Property(true)\n ], Series.prototype, \"isClosed\", void 0);\n __decorate([\n Property(null)\n ], Series.prototype, \"bearFillColor\", void 0);\n __decorate([\n Property(null)\n ], Series.prototype, \"bullFillColor\", void 0);\n __decorate([\n Property(false)\n ], Series.prototype, \"enableSolidCandles\", void 0);\n __decorate([\n Property('')\n ], Series.prototype, \"size\", void 0);\n __decorate([\n Property(null)\n ], Series.prototype, \"binInterval\", void 0);\n __decorate([\n Property(false)\n ], Series.prototype, \"showNormalDistribution\", void 0);\n __decorate([\n Property('')\n ], Series.prototype, \"stackingGroup\", void 0);\n __decorate([\n Complex({ color: null, width: 0 }, Border)\n ], Series.prototype, \"border\", void 0);\n __decorate([\n Property(1)\n ], Series.prototype, \"opacity\", void 0);\n __decorate([\n Property(0)\n ], Series.prototype, \"zOrder\", void 0);\n __decorate([\n Property('')\n ], Series.prototype, \"groupName\", void 0);\n __decorate([\n Property('Line')\n ], Series.prototype, \"type\", void 0);\n __decorate([\n Complex(null, ErrorBarSettings)\n ], Series.prototype, \"errorBar\", void 0);\n __decorate([\n Complex(null, MarkerSettings)\n ], Series.prototype, \"marker\", void 0);\n __decorate([\n Complex(null, ParetoOptions)\n ], Series.prototype, \"paretoOptions\", void 0);\n __decorate([\n Complex({}, DragSettings)\n ], Series.prototype, \"dragSettings\", void 0);\n __decorate([\n Collection([], Trendline)\n ], Series.prototype, \"trendlines\", void 0);\n __decorate([\n Property(true)\n ], Series.prototype, \"enableTooltip\", void 0);\n __decorate([\n Property('')\n ], Series.prototype, \"tooltipFormat\", void 0);\n __decorate([\n Property('')\n ], Series.prototype, \"tooltipMappingName\", void 0);\n __decorate([\n Property('SeriesType')\n ], Series.prototype, \"legendShape\", void 0);\n __decorate([\n Property('')\n ], Series.prototype, \"legendImageUrl\", void 0);\n __decorate([\n Property(null)\n ], Series.prototype, \"selectionStyle\", void 0);\n __decorate([\n Property(null)\n ], Series.prototype, \"unSelectedStyle\", void 0);\n __decorate([\n Property(null)\n ], Series.prototype, \"nonHighlightStyle\", void 0);\n __decorate([\n Property(1)\n ], Series.prototype, \"minRadius\", void 0);\n __decorate([\n Property(3)\n ], Series.prototype, \"maxRadius\", void 0);\n __decorate([\n Property('Natural')\n ], Series.prototype, \"splineType\", void 0);\n __decorate([\n Property(0.5)\n ], Series.prototype, \"cardinalSplineTension\", void 0);\n __decorate([\n Complex(null, EmptyPointSettings)\n ], Series.prototype, \"emptyPointSettings\", void 0);\n __decorate([\n Property(true)\n ], Series.prototype, \"showMean\", void 0);\n __decorate([\n Property('Normal')\n ], Series.prototype, \"boxPlotMode\", void 0);\n __decorate([\n Property(null)\n ], Series.prototype, \"columnWidth\", void 0);\n __decorate([\n Property(null)\n ], Series.prototype, \"columnWidthInPixel\", void 0);\n __decorate([\n Property('Rectangle')\n ], Series.prototype, \"columnFacet\", void 0);\n __decorate([\n Property(0)\n ], Series.prototype, \"columnSpacing\", void 0);\n __decorate([\n Property('#C64E4A')\n ], Series.prototype, \"negativeFillColor\", void 0);\n __decorate([\n Property('#4E81BC')\n ], Series.prototype, \"summaryFillColor\", void 0);\n __decorate([\n Property()\n ], Series.prototype, \"intermediateSumIndexes\", void 0);\n __decorate([\n Property()\n ], Series.prototype, \"sumIndexes\", void 0);\n __decorate([\n Property('Left')\n ], Series.prototype, \"step\", void 0);\n __decorate([\n Property(false)\n ], Series.prototype, \"noRisers\", void 0);\n __decorate([\n Complex({ color: 'black', width: 2 }, Connector)\n ], Series.prototype, \"connector\", void 0);\n __decorate([\n Complex(null, CornerRadius)\n ], Series.prototype, \"cornerRadius\", void 0);\n return Series;\n}(SeriesBase));\nexport { Series };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { drawSymbol } from '../../common/utils/helper';\nimport { PathOption, Size } from '@syncfusion/ej2-svg-base';\nimport { Browser, extend, remove, isNullOrUndefined, Animation } from '@syncfusion/ej2-base';\nimport { ChartData } from '../../chart/utils/get-data';\nimport { withInBounds, PointData, stopTimer, getElement } from '../../common/utils/helper';\nimport { colorNameToHex, convertHexToColor } from '../../common/utils/helper';\n/**\n * The `Marker` module is used to render markers for line-type series.\n *\n * @private\n */\nvar MarkerExplode = /** @class */ (function (_super) {\n __extends(MarkerExplode, _super);\n /**\n * Constructor for the marker module.\n *\n * @private\n */\n function MarkerExplode(chart) {\n var _this = _super.call(this, chart) || this;\n _this.elementId = chart.element.id;\n _this.commonXvalues = [];\n return _this;\n }\n /**\n * Adds event listeners for the series.\n *\n * @returns {void}\n * @private\n */\n MarkerExplode.prototype.addEventListener = function () {\n if (this.chart.isDestroyed) {\n return;\n }\n this.chart.on(Browser.touchMoveEvent, this.mouseMoveHandler, this);\n this.chart.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n };\n /**\n * Removes event listeners for the series.\n *\n * @private\n *\n * @returns {void}\n */\n MarkerExplode.prototype.removeEventListener = function () {\n if (this.chart.isDestroyed) {\n return;\n }\n this.chart.off(Browser.touchMoveEvent, this.mouseMoveHandler);\n this.chart.off(Browser.touchEndEvent, this.mouseUpHandler);\n };\n /**\n * Handles the mouse up event.\n *\n * @returns {void}\n */\n MarkerExplode.prototype.mouseUpHandler = function () {\n var chart = this.chart;\n if (chart.isTouch && !chart.crosshair.enable && !this.isSelected(chart) && !(this.chart.zoomModule && getElement(this.elementId + '_ZoomArea'))) {\n this.markerMove(true);\n }\n };\n /**\n * Handles the mouse move event.\n *\n * @returns {void}\n * @private\n */\n MarkerExplode.prototype.mouseMoveHandler = function () {\n var chart = this.chart;\n if ((chart.highlightMode !== 'None' || (chart.tooltip.enable)) && (!chart.isTouch || chart.startMove) && !this.isSelected(chart)\n && !(this.chart.zoomModule && getElement(this.elementId + '_ZoomArea'))) {\n this.markerMove(false);\n }\n };\n MarkerExplode.prototype.markerMove = function (remove) {\n var _this = this;\n var chart = this.chart;\n this.currentPoints = [];\n var data;\n var previous;\n var explodeSeries;\n var series;\n if (!chart.tooltip.shared || !chart.tooltip.enable) {\n data = this.getData();\n series = data.series;\n previous = this.previousPoints[0];\n explodeSeries = series && ((series.type === 'Bubble' || series.drawType === 'Scatter' || series.type === 'Scatter') ||\n (((series.type !== 'Candle') && (series.type !== 'Hilo') && (series.type !== 'HiloOpenClose')) &&\n (series.marker.visible && series.marker.width !== 0 && series.marker.height !== 0)));\n data.lierIndex = this.lierIndex;\n if (data.point && explodeSeries && ((!previous || (previous.point !== data.point)) ||\n (previous && previous.lierIndex > 3 && previous.lierIndex !== this.lierIndex))) {\n this.currentPoints.push(data);\n }\n if (data.point && explodeSeries && chart.isPointMouseDown) {\n this.currentPoints.push(data);\n }\n }\n else {\n if (!withInBounds(chart.mouseX, chart.mouseY, chart.chartAxisLayoutPanel.seriesClipRect)) {\n return null;\n }\n if (chart.tooltip.enable) {\n var pointData = chart.chartAreaType === 'PolarRadar' ? this.getData() : null;\n if (!this.chart.tooltip.showNearestPoint) {\n this.currentPoints = this.chart.tooltipModule.currentPoints;\n }\n else {\n for (var _i = 0, _a = chart.visibleSeries; _i < _a.length; _i++) {\n var chartSeries = _a[_i];\n if (!chartSeries.enableTooltip || chartSeries.category === 'Indicator') {\n continue;\n }\n if (chart.chartAreaType === 'Cartesian' && chartSeries.visible) {\n data = this.getClosestX(chart, chartSeries, this.commonXValue(this.chart.visibleSeries));\n }\n else if (chart.chartAreaType === 'PolarRadar' && chartSeries.visible && pointData.point !== null) {\n data = new PointData(chartSeries.points[pointData.point.index], chartSeries);\n }\n if (data) {\n this.currentPoints.push(data);\n data = null;\n }\n }\n }\n }\n }\n var length = this.previousPoints.length;\n if (this.currentPoints.length > 0 || (length > 0 && chart.tooltip.shared)) {\n if (length === 0 || chart.isPointMouseDown || (length > 0 && (this.currentPoints.length === 0 ||\n (this.previousPoints[0].point !== this.currentPoints[0].point)))) {\n if (length > 0) {\n for (var _b = 0, _c = this.previousPoints; _b < _c.length; _b++) {\n var previousPoint = _c[_b];\n if (!isNullOrUndefined(previousPoint)) {\n this.removeHighlightedMarker(previousPoint.series, previousPoint.point);\n }\n }\n }\n var _loop_1 = function (data_1) {\n if ((data_1 && data_1.point) || ((series.type !== 'Candle') &&\n (series.type !== 'Hilo') && (series.type !== 'HiloOpenClose'))) {\n stopTimer(this_1.markerExplode);\n this_1.isRemove = true;\n data_1.point.symbolLocations.map(function (location, index) {\n if (data_1.series.marker.allowHighlight && (!data_1.series.isRectSeries || data_1.point.marker.visible)) {\n _this.drawTrackBall(data_1.series, data_1.point, location, index);\n }\n });\n }\n };\n var this_1 = this;\n for (var _d = 0, _e = this.currentPoints; _d < _e.length; _d++) {\n var data_1 = _e[_d];\n _loop_1(data_1);\n }\n this.previousPoints = extend([], this.currentPoints, null, true);\n }\n }\n if (!chart.tooltip.enable && ((this.currentPoints.length === 0 && this.isRemove) || (remove && this.isRemove) ||\n !withInBounds(chart.mouseX, chart.mouseY, chart.chartAxisLayoutPanel.seriesClipRect))) {\n this.isRemove = false;\n if (!isNullOrUndefined(this.previousPoints[0])) {\n this.markerExplode = +setTimeout(function () {\n if (_this.previousPoints[0]) {\n _this.removeHighlightedMarker(_this.previousPoints[0].series, _this.previousPoints[0].point);\n }\n }, 2000);\n }\n }\n this.currentPoints = [];\n };\n MarkerExplode.prototype.animationDuration = function () {\n var duration = 200;\n if (this.chart.maxPointCount > 100) {\n duration = 10;\n }\n else if (this.chart.maxPointCount > 50) {\n duration = 100;\n }\n return duration;\n };\n MarkerExplode.prototype.drawTrackBall = function (series, point, location, index) {\n var marker = point.marker;\n var seriesMarker = series.marker;\n var shape = marker.shape || seriesMarker.shape || 'Circle';\n var svg;\n if (shape === 'None' || shape === 'Image') {\n return null;\n }\n var element = series.symbolElement || series.seriesElement;\n var className;\n if (this.chart.highlightModule && this.chart.highlightMode !== 'None') {\n className = this.chart.highlightModule.generateStyle(series);\n }\n if (this.chart.selectionModule && this.chart.selectionMode !== 'None') {\n className = this.chart.selectionModule.generateStyle(series);\n }\n var symbolId = this.elementId + '_Series_' + series.index + '_Point_' + point.index + '_Trackball' +\n (index ? index : '');\n var size = new Size((marker.width || seriesMarker.width) + 3, (marker.height || seriesMarker.height) + 3);\n var border = (marker.border || series.border);\n var explodeSeries = (series.type === 'BoxAndWhisker' || series.type === 'Bubble' || series.type === 'Scatter');\n var borderColor = (border.color && border.color !== 'transparent') ? border.color :\n marker.fill || point.interior || (explodeSeries ? point.color : series.interior);\n var colorValue = convertHexToColor(colorNameToHex(borderColor));\n var borderWidth = marker.border ? marker.border.width : seriesMarker.border.width;\n var markerShadow = series.chart.themeStyle.markerShadow ||\n 'rgba(' + colorValue.r + ',' + colorValue.g + ',' + colorValue.b + ',0.2)';\n var markerElement = document.getElementById(this.elementId + '_Series_' + series.index + '_Point_' +\n point.index + '_Symbol');\n if (!isNullOrUndefined(markerElement)) {\n markerElement.setAttribute('visibility', 'hidden');\n }\n if (this.chart.enableCanvas) {\n var trackElement = document.getElementById(this.chart.element.id + '_Secondary_Element');\n svg = this.chart.svgRenderer.createSvg({\n id: this.chart.element.id + '_trackball_svg',\n width: this.chart.availableSize.width,\n height: this.chart.availableSize.height\n });\n svg.style.cssText = 'position: absolute; display:block; pointer-events: none';\n trackElement.appendChild(svg);\n }\n for (var i = 0; i < 2; i++) {\n var options = new PathOption(symbolId + '_' + i, i ? (marker.fill || point.color || (explodeSeries ? series.interior : '#ffffff')) : 'transparent', borderWidth + (i ? 0 : 8), i ? borderColor : markerShadow, (marker.opacity || seriesMarker.opacity), series.marker.border.dashArray, '');\n var symbol = drawSymbol(location, shape, size, marker.imageUrl, options, '', this.chart.svgRenderer, series.clipRect);\n // incident: 252450 point click selection not working while maker explode\n //symbol.setAttribute('style', 'pointer-events:none');\n symbol.setAttribute('class', this.elementId + '_EJ2-Trackball_Series_' + series.index + '_Point_' + point.index);\n var selectionId = element.id.indexOf('Symbol') !== -1 ? '_Symbol' : '';\n var seletionElem = document.getElementById(this.elementId + '_Series_' + series.index + '_Point_' +\n point.index + selectionId);\n if (className !== '' && !isNullOrUndefined(className) && !isNullOrUndefined(seletionElem) &&\n seletionElem.hasAttribute('class') && (className === seletionElem.getAttribute('class'))) {\n symbol.classList.add(className);\n }\n symbol.setAttribute('clip-path', element.getAttribute('clip-path'));\n symbol.setAttribute('transform', element.getAttribute('transform'));\n if (this.chart.enableCanvas) {\n svg.appendChild(symbol);\n }\n else {\n this.chart.svgObject.appendChild(symbol);\n }\n }\n this.doAnimation(series, point, false);\n };\n /**\n * Perform animation for the series.\n *\n * @param {Series} series - The series to animate.\n * @param {Points} point - The point to animate.\n * @param {boolean} [endAnimate=false] - Flag to indicate if the animation is ending.\n * @returns {void}\n * @private\n */\n MarkerExplode.prototype.doAnimation = function (series, point, endAnimate) {\n if (endAnimate === void 0) { endAnimate = false; }\n var duration = this.animationDuration();\n var delay = 0;\n var rectElements = document.getElementsByClassName(this.elementId + '_EJ2-Trackball_Series_' + series.index + '_Point_' + point.index);\n for (var i = 0, len = rectElements.length; i < len; i++) {\n this.trackballAnimate(rectElements[i], delay, duration, series, point.index, point.symbolLocations[0], false, endAnimate);\n }\n };\n /**\n * Perform animation for the trackball.\n *\n * @param {Element} elements - The elements to animate.\n * @param {number} delays - The delay duration for the animation.\n * @param {number} durations - The duration of the animation.\n * @param {Series} series - The series associated with the trackball.\n * @param {number} pointIndex - The index of the point to animate.\n * @param {ChartLocation} point - The location of the point to animate.\n * @param {boolean} isLabel - Flag to indicate if the animated element is a label.\n * @param {boolean} [endAnimate=false] - Flag to indicate if the animation is ending.\n * @returns {void}\n * @private\n */\n MarkerExplode.prototype.trackballAnimate = function (elements, delays, durations, series, pointIndex, point, isLabel, endAnimate) {\n var centerX = point.x;\n var centerY = point.y;\n var clipX = (series.type !== 'Polar' && series.type !== 'Radar') ? series.clipRect.x : 0;\n var clipY = (series.type !== 'Polar' && series.type !== 'Radar') ? series.clipRect.y : 0;\n // let height: number = 0;\n //(elements).style.visibility = 'hidden';\n var transform = elements.getAttribute('transform');\n new Animation({}).animate(elements, {\n duration: durations,\n delay: delays,\n progress: function (args) {\n if (args.timeStamp > args.delay) {\n args.element.style.visibility = 'visible';\n // height = ((args.timeStamp - args.delay) / args.duration);\n elements.setAttribute('transform', 'translate(' + (centerX + clipX)\n + ' ' + (centerY + clipY) + ') scale(1) translate(' + (-centerX) + ' ' + (-centerY) + ')');\n }\n },\n end: function () {\n elements.style.visibility = '';\n elements.setAttribute('transform', transform);\n if (!isLabel && (pointIndex === series.points.length - 1)) {\n series.chart.trigger('animationComplete', { series: series.chart.isBlazor ? {} : series });\n }\n if (endAnimate) {\n remove(elements);\n }\n }\n });\n };\n /**\n * Remove the highlighted marker.\n *\n * @param {Series} [series=null] - The series associated with the marker to remove. Defaults to null.\n * @param {Points} [point=null] - The point associated with the marker to remove. Defaults to null.\n * @param {boolean} [fadeOut=false] - Flag to indicate if the removal should be faded out. Defaults to false.\n * @returns {void}\n * @private\n */\n MarkerExplode.prototype.removeHighlightedMarker = function (series, point, fadeOut) {\n if (series === void 0) { series = null; }\n if (point === void 0) { point = null; }\n if (fadeOut === void 0) { fadeOut = false; }\n if (!isNullOrUndefined(series) && !isNullOrUndefined(point)) {\n var markerElement = document.getElementById(this.elementId + '_Series_' + series.index + '_Point_' +\n point.index + '_Symbol');\n var trackballElements = document.getElementsByClassName(this.elementId + '_EJ2-Trackball_Series_' + series.index + '_Point_' + point.index);\n if (trackballElements.length === 0) {\n var elements = document.querySelectorAll(\"[class*=\\\"\" + (this.elementId + '_EJ2-Trackball_Series_' + series.index + '_Point_' + point.index) + \"\\\"]\");\n if (elements[1]) {\n elements[1].remove();\n }\n if (elements[0]) {\n elements[0].remove();\n }\n }\n for (var i = 0, len = trackballElements.length; i < len; i++) {\n remove(trackballElements[0]);\n }\n if (!isNullOrUndefined(markerElement)) {\n markerElement.setAttribute('visibility', 'visible');\n }\n }\n else {\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var point_1 = _a[_i];\n var elements = document.getElementsByClassName(this.elementId + '_EJ2-Trackball_Series_' + series.index + '_Point_' + point_1.index);\n var markerElement = document.getElementById(this.elementId + '_Series_' + series.index + '_Point_' +\n point_1.index + '_Symbol');\n for (var i = 0, len = elements.length; i < len; i++) {\n if (!isNullOrUndefined(markerElement)) {\n markerElement.setAttribute('visibility', 'visible');\n }\n remove(elements[0]);\n }\n }\n }\n if (fadeOut) {\n this.previousPoints = [];\n }\n };\n return MarkerExplode;\n}(ChartData));\nexport { MarkerExplode };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { RectOption, appendChildElement, getElement, appendClipElement } from '../../common/utils/helper';\nimport { findlElement, drawSymbol, markerAnimate, CircleOption } from '../../common/utils/helper';\nimport { PathOption, Size } from '@syncfusion/ej2-svg-base';\nimport { animationMode, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { pointRender } from '../../common/model/constants';\nimport { MarkerExplode } from './marker-explode';\nimport { getSaturationColor } from '../../common/utils/helper';\nexport var markerShapes = ['Circle', 'Triangle', 'Diamond', 'Rectangle', 'Pentagon', 'InvertedTriangle', 'VerticalLine', 'Cross', 'Plus', 'HorizontalLine', 'Star'];\n/**\n * The `Marker` module is used to render markers for line-type series.\n */\nvar Marker = /** @class */ (function (_super) {\n __extends(Marker, _super);\n /**\n * Constructor for the marker module.\n *\n * @private\n */\n function Marker(chart) {\n var _this = _super.call(this, chart) || this;\n _this.addEventListener();\n return _this;\n }\n /**\n * Render the marker for series.\n *\n * @returns {void}\n * @private\n */\n Marker.prototype.render = function (series) {\n var _this = this;\n var redraw = series.chart.redraw;\n this.createElement(series, redraw);\n var _loop_1 = function (point) {\n if (point.visible && point.symbolLocations && point.symbolLocations.length) {\n point.symbolLocations.map(function (location, index) {\n if (series.marker.shape !== 'None') {\n _this.renderMarker(series, point, location, index, redraw);\n }\n });\n }\n };\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var point = _a[_i];\n _loop_1(point);\n }\n };\n Marker.prototype.renderMarker = function (series, point, location, index, redraw) {\n var seriesIndex = series.index === undefined ? series.category : series.index;\n var marker = series.marker;\n series.marker.shape = series.marker.shape ? series.marker.shape : markerShapes[seriesIndex % 10];\n var border = {\n color: marker.border.color,\n width: marker.border.width\n };\n var borderColor = marker.border.color;\n var previousLocation;\n var previousPath;\n var circlePath;\n var shapeOption;\n location.x = location.x + marker.offset.x;\n location.y = location.y - marker.offset.y;\n var isBoxPlot = series.type === 'BoxAndWhisker';\n var fill = marker.fill || ((isBoxPlot || series.marker.isFilled) ? point.interior || series.interior : '#ffffff');\n var markerElement;\n var parentElement = isBoxPlot && !this.chart.enableCanvas ?\n findlElement(series.seriesElement.childNodes, 'Series_' + series.index + '_Point_' + point.index)\n : series.symbolElement;\n border.color = borderColor || series.setPointColor(point, series.interior);\n var symbolId = this.elementId + '_Series_' + seriesIndex + '_Point_' + ((series.removedPointIndex !== null && series.removedPointIndex <= point.index) || this.chart.pointsAdded ?\n (point.index + 1) : point.index) + '_Symbol' + (index ? index : '');\n var argsData = {\n cancel: false, name: pointRender, series: series, point: point,\n fill: point.isEmpty ? (series.emptyPointSettings.fill || fill) : fill,\n border: {\n color: series.type === 'BoxAndWhisker' ?\n (!isNullOrUndefined(borderColor) && borderColor !== 'transparent') ? borderColor :\n getSaturationColor(fill, -0.6)\n : border.color,\n width: border.width\n },\n height: marker.height, width: marker.width, shape: marker.shape\n };\n argsData.border = series.setBorderColor(point, { width: argsData.border.width, color: argsData.border.color });\n if (!series.isRectSeries || series.type === 'BoxAndWhisker') {\n this.chart.trigger(pointRender, argsData);\n point.color = argsData.fill;\n }\n point.color = argsData.fill;\n if (!argsData.cancel) {\n var y = void 0;\n if (series.type === 'RangeArea' || series.type === 'RangeColumn' || series.drawType === 'RangeColumn'\n || series.type === 'SplineRangeArea' || series.type === 'RangeStepArea') {\n y = index ? point.low : point.high;\n }\n else if (isBoxPlot) {\n y = point.outliers[index];\n }\n else {\n y = point.y;\n }\n var markerFill = argsData.point.marker.fill || argsData.fill;\n var markerBorder = void 0;\n if (!isNullOrUndefined(argsData.point.marker.border)) {\n markerBorder = {\n color: argsData.point.marker.border.color || argsData.border.color,\n width: argsData.point.marker.border.width || argsData.border.width\n };\n }\n else {\n markerBorder = { color: argsData.border.color, width: argsData.border.width };\n }\n var markerWidth = argsData.point.marker.width || argsData.width;\n var markerHeight = argsData.point.marker.height || argsData.height;\n var markerOpacity = argsData.point.marker.opacity || marker.opacity;\n var markerShape = argsData.point.marker.shape || argsData.shape;\n var imageURL = argsData.point.marker.imageUrl || marker.imageUrl;\n shapeOption = new PathOption(symbolId, markerFill, markerBorder.width, markerBorder.color, markerOpacity, series.marker.border.dashArray);\n if ((parentElement !== undefined && parentElement !== null) || this.chart.enableCanvas) {\n if (redraw && getElement(shapeOption.id)) {\n markerElement = getElement(shapeOption.id);\n circlePath = markerShape === 'Circle' ? 'c' : '';\n previousLocation = {\n x: +markerElement.getAttribute(circlePath + 'x'), y: +markerElement.getAttribute(circlePath + 'y')\n };\n previousPath = markerElement.getAttribute('d');\n }\n markerElement = drawSymbol(location, markerShape, new Size(markerWidth, markerHeight), imageURL, shapeOption, point.x.toString() + ':' + y.toString(), this.chart.renderer, series.clipRect);\n if (markerElement) {\n markerElement.setAttribute('role', 'img');\n markerElement.setAttribute('aria-label', (point.x + ': ' + point.y + ', ' + series.name));\n }\n appendChildElement(this.chart.enableCanvas, parentElement, markerElement, redraw, true, circlePath + 'x', circlePath + 'y', previousLocation, previousPath, false, false, null, series.chart.duration);\n if ((series.removedPointIndex !== null && series.removedPointIndex <= point.index)) {\n parentElement.lastChild.id = this.elementId + '_Series_' + seriesIndex + '_Point_' + point.index + '_Symbol' + (index ? index : '');\n }\n }\n point.marker = {\n border: markerBorder, fill: markerFill, height: markerHeight,\n visible: true, shape: markerShape, width: markerWidth, imageUrl: imageURL\n };\n }\n else {\n location = null;\n point.marker = {\n visible: false\n };\n }\n };\n Marker.prototype.createElement = function (series, redraw) {\n var markerClipRect;\n var marker = series.marker;\n // 8 for extend border value 5 for extend size value\n var explodeValue = marker.border.width + 8 + 5;\n var render = series.chart.svgRenderer;\n var index = series.index === undefined ? series.category : series.index;\n var options;\n var transform = series.chart.chartAreaType === 'Cartesian' ? 'translate(' + series.clipRect.x + ',' + (series.clipRect.y) + ')' : '';\n if (marker.visible) {\n var markerHeight = (marker.height + explodeValue) / 2;\n var markerWidth = (marker.width + explodeValue) / 2;\n if (series.chart.chartAreaType === 'Cartesian') {\n options = new RectOption(this.elementId + '_ChartMarkerClipRect_' + index, 'transparent', { width: 1, color: 'Gray' }, 1, {\n x: -markerWidth, y: -markerHeight,\n width: series.clipRect.width + (markerWidth * 2),\n height: series.clipRect.height + markerHeight * 2\n }, 0, 0, '', series.marker.border.dashArray);\n markerClipRect = appendClipElement(redraw, options, render);\n }\n else {\n options = new CircleOption(this.elementId + '_ChartMarkerClipRect_' + index, 'transparent', { width: 1, color: 'Gray' }, 1, series.clipRect.width / 2 + series.clipRect.x, series.clipRect.height / 2 + series.clipRect.y, series.chart.radius + Math.max(markerHeight, markerWidth));\n markerClipRect = appendClipElement(redraw, options, render, 'drawCircularClipPath');\n }\n options = {\n 'id': this.elementId + 'SymbolGroup' + index,\n 'transform': transform,\n 'clip-path': 'url(#' + this.elementId + '_ChartMarkerClipRect_' + index + ')'\n };\n series.symbolElement = render.createGroup(options);\n series.symbolElement.appendChild(markerClipRect);\n if (this.chart.enableCanvas) {\n var element = document.getElementById(this.chart.element.id + '_tooltip_svg');\n element.appendChild(series.symbolElement);\n }\n }\n };\n Marker.prototype.getRangeLowPoint = function (region, series) {\n var x = region.x;\n var y = region.y;\n if (series.chart.requireInvertedAxis) {\n y += region.height / 2;\n x += series.yAxis.isAxisInverse ? region.width : 0;\n }\n else {\n y += series.yAxis.isAxisInverse ? 0 : region.height;\n x += region.width / 2;\n }\n return { x: x, y: y };\n };\n /**\n * Calculates the distance between two points in a chart.\n *\n * @param {ChartLocation} startPoint - The starting point with x and y coordinates.\n * @param {ChartLocation} endPoint - The ending point with x and y coordinates.\n * @returns {number} - The distance between the startPoint and endPoint.\n */\n Marker.prototype.calculateDistance = function (startPoint, endPoint) {\n var dx = endPoint.x - startPoint.x;\n var dy = endPoint.y - startPoint.y;\n return Math.sqrt(dx * dx + dy * dy);\n };\n /**\n * Perform marker animation for the given series.\n *\n * @param {Series} series - The series for which marker animation needs to be performed.\n * @returns {void}\n * @private\n */\n Marker.prototype.doMarkerAnimation = function (series) {\n if (!(series.type === 'Scatter' || series.type === 'Bubble' || series.type === 'Candle' || series.type === 'Hilo' ||\n series.type === 'HiloOpenClose' || (series.chart.chartAreaType === 'PolarRadar' && (series.drawType === 'Scatter')))) {\n var markerElements = series.symbolElement.childNodes;\n var delay = series.animation.delay + (series.animation.duration === 0 && animationMode === 'Enable' ? 1000 : series.animation.duration);\n var duration = series.chart.animated ? series.chart.duration : 200;\n var markerDelay = delay;\n var pathLength = series.pathElement ? series.pathElement.getTotalLength() : 0;\n var distances = [];\n for (var i = 1; (series.type === 'Line' && i < series.points.length); i++) {\n if (series.points[i - 1].symbolLocations[0] && series.points[i].symbolLocations[0]) {\n var distance = this.calculateDistance(series.points[i - 1].symbolLocations[0], series.points[i].symbolLocations[0]);\n distances.push(distance);\n }\n }\n var j = 1;\n var incFactor = (series.type === 'RangeArea' || series.type === 'RangeColumn' || series.type === 'SplineRangeArea' || series.type === 'RangeStepArea') ? 2 : 1;\n for (var i = 0; i < series.points.length; i++) {\n if (series.points[i].symbolLocations) {\n if (!series.points[i].symbolLocations.length || !markerElements[j]) {\n continue;\n }\n if (series.type === 'Line') {\n if (i === 0) {\n markerDelay = 0;\n }\n if (i > 0) {\n markerDelay += (distances[i - 1] / pathLength) * delay;\n duration = 0;\n }\n }\n markerAnimate(markerElements[j], markerDelay, duration, series, i, series.points[i].symbolLocations[0], false);\n if (incFactor === 2) {\n var lowPoint = this.getRangeLowPoint(series.points[i].regions[0], series);\n markerAnimate(markerElements[j + 1], markerDelay, duration, series, i, lowPoint, false);\n }\n j += incFactor;\n }\n }\n }\n };\n return Marker;\n}(MarkerExplode));\nexport { Marker };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { Property, Complex } from '@syncfusion/ej2-base';\nimport { SeriesBase } from '../series/chart-series';\nimport { firstToLowerCase } from '../../common/utils/helper';\nimport { Rect } from '@syncfusion/ej2-svg-base';\nimport { Connector } from '../../common/model/base';\n/**\n * Defines how to represent the market trend using technical indicators.\n */\nvar TechnicalIndicator = /** @class */ (function (_super) {\n __extends(TechnicalIndicator, _super);\n function TechnicalIndicator() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** @private */\n _this.clipRect = new Rect(0, 0, 0, 0);\n return _this;\n }\n /**\n * Sets the data source for the series in the chart.\n *\n * @private\n * @param {Series} series - The series for which the data source is being set.\n * @param {Chart} chart - The chart instance.\n * @returns {void}\n */\n TechnicalIndicator.prototype.setDataSource = function (series, chart) {\n if (series) {\n this.xData = series.xData;\n this.yData = series.yData;\n this.points = series.points;\n }\n var type = firstToLowerCase(this.type);\n if (this.visible) {\n chart[type + 'IndicatorModule'].initDataSource(this, chart);\n }\n chart.visibleSeriesCount += this.targetSeries.length;\n };\n __decorate([\n Property('Sma')\n ], TechnicalIndicator.prototype, \"type\", void 0);\n __decorate([\n Property(14)\n ], TechnicalIndicator.prototype, \"period\", void 0);\n __decorate([\n Property(14)\n ], TechnicalIndicator.prototype, \"kPeriod\", void 0);\n __decorate([\n Property(3)\n ], TechnicalIndicator.prototype, \"dPeriod\", void 0);\n __decorate([\n Property(80)\n ], TechnicalIndicator.prototype, \"overBought\", void 0);\n __decorate([\n Property(20)\n ], TechnicalIndicator.prototype, \"overSold\", void 0);\n __decorate([\n Property(2)\n ], TechnicalIndicator.prototype, \"standardDeviation\", void 0);\n __decorate([\n Property('Close')\n ], TechnicalIndicator.prototype, \"field\", void 0);\n __decorate([\n Property(12)\n ], TechnicalIndicator.prototype, \"slowPeriod\", void 0);\n __decorate([\n Property(26)\n ], TechnicalIndicator.prototype, \"fastPeriod\", void 0);\n __decorate([\n Property(true)\n ], TechnicalIndicator.prototype, \"showZones\", void 0);\n __decorate([\n Complex({ color: '#ff9933', width: 2 }, Connector)\n ], TechnicalIndicator.prototype, \"macdLine\", void 0);\n __decorate([\n Property('Both')\n ], TechnicalIndicator.prototype, \"macdType\", void 0);\n __decorate([\n Property('#2ecd71')\n ], TechnicalIndicator.prototype, \"macdPositiveColor\", void 0);\n __decorate([\n Property('#e74c3d')\n ], TechnicalIndicator.prototype, \"macdNegativeColor\", void 0);\n __decorate([\n Property('rgba(211,211,211,0.25)')\n ], TechnicalIndicator.prototype, \"bandColor\", void 0);\n __decorate([\n Complex({ color: '#ffb735', width: 1 }, Connector)\n ], TechnicalIndicator.prototype, \"upperLine\", void 0);\n __decorate([\n Complex({ color: '#f2ec2f', width: 1 }, Connector)\n ], TechnicalIndicator.prototype, \"lowerLine\", void 0);\n __decorate([\n Complex({ color: '#f2ec2f', width: 1 }, Connector)\n ], TechnicalIndicator.prototype, \"periodLine\", void 0);\n __decorate([\n Property('')\n ], TechnicalIndicator.prototype, \"seriesName\", void 0);\n return TechnicalIndicator;\n}(SeriesBase));\nexport { TechnicalIndicator };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, NotifyPropertyChanges, Internationalization } from '@syncfusion/ej2-base';\nimport { L10n, setValue, isNullOrUndefined, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { ChildProperty } from '@syncfusion/ej2-base';\nimport { remove, extend } from '@syncfusion/ej2-base';\nimport { Browser, Touch } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, Complex, Collection } from '@syncfusion/ej2-base';\nimport { findClipRect, showTooltip, ImageOption, removeElement, appendChildElement, blazorTemplatesReset, withInBounds, getValueXByPoint, getValueYByPoint } from '../common/utils/helper';\nimport { textElement, RectOption, createSvg, firstToLowerCase, titlePositionX, redrawElement, getTextAnchor } from '../common/utils/helper';\nimport { appendClipElement, ChartLocation } from '../common/utils/helper';\nimport { getSeriesColor, getThemeColor } from '../common/model/theme';\nimport { Margin, Border, TooltipSettings, Indexes, ChartArea, titleSettings } from '../common/model/base';\nimport { Row, Column, Axis } from './axis/axis';\nimport { CartesianAxisLayoutPanel } from './axis/cartesian-panel';\nimport { Rect, measureText, TextOption, Size, SvgRenderer } from '@syncfusion/ej2-svg-base';\nimport { ChartData } from './utils/get-data';\nimport { Series } from './series/chart-series';\nimport { Data } from '../common/model/data';\nimport { Marker, markerShapes } from './series/marker';\nimport { LegendSettings } from '../common/legend/legend';\nimport { TechnicalIndicator } from './technical-indicators/technical-indicator';\nimport { chartMouseClick, chartDoubleClick, pointClick, pointDoubleClick, axisLabelClick, beforeResize } from '../common/model/constants';\nimport { chartMouseDown, chartMouseMove, chartMouseUp, load, pointMove, chartMouseLeave, resized } from '../common/model/constants';\nimport { ChartAnnotationSettings } from './model/chart-base';\nimport { getElement, getTitle } from '../common/utils/helper';\nimport { PrintUtils } from '../common/utils/print';\n/**\n * Configures the range color settings in the chart.\n */\nvar RangeColorSetting = /** @class */ (function (_super) {\n __extends(RangeColorSetting, _super);\n function RangeColorSetting() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], RangeColorSetting.prototype, \"start\", void 0);\n __decorate([\n Property()\n ], RangeColorSetting.prototype, \"end\", void 0);\n __decorate([\n Property([])\n ], RangeColorSetting.prototype, \"colors\", void 0);\n __decorate([\n Property('')\n ], RangeColorSetting.prototype, \"label\", void 0);\n return RangeColorSetting;\n}(ChildProperty));\nexport { RangeColorSetting };\n/**\n * Options to configure the crosshair on the chart, which displays lines that follow the mouse cursor and show the axis values of the data points.\n */\nvar CrosshairSettings = /** @class */ (function (_super) {\n __extends(CrosshairSettings, _super);\n function CrosshairSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], CrosshairSettings.prototype, \"enable\", void 0);\n __decorate([\n Property('')\n ], CrosshairSettings.prototype, \"dashArray\", void 0);\n __decorate([\n Complex({ color: null, width: 1 }, Border)\n ], CrosshairSettings.prototype, \"line\", void 0);\n __decorate([\n Property('Both')\n ], CrosshairSettings.prototype, \"lineType\", void 0);\n __decorate([\n Property('')\n ], CrosshairSettings.prototype, \"verticalLineColor\", void 0);\n __decorate([\n Property('')\n ], CrosshairSettings.prototype, \"horizontalLineColor\", void 0);\n __decorate([\n Property(1)\n ], CrosshairSettings.prototype, \"opacity\", void 0);\n return CrosshairSettings;\n}(ChildProperty));\nexport { CrosshairSettings };\n/**\n * Configures the zooming behavior for the chart.\n */\nvar ZoomSettings = /** @class */ (function (_super) {\n __extends(ZoomSettings, _super);\n function ZoomSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], ZoomSettings.prototype, \"enableSelectionZooming\", void 0);\n __decorate([\n Property(false)\n ], ZoomSettings.prototype, \"enablePinchZooming\", void 0);\n __decorate([\n Property(false)\n ], ZoomSettings.prototype, \"showToolbar\", void 0);\n __decorate([\n Property(false)\n ], ZoomSettings.prototype, \"enableMouseWheelZooming\", void 0);\n __decorate([\n Property(true)\n ], ZoomSettings.prototype, \"enableDeferredZooming\", void 0);\n __decorate([\n Property('XY')\n ], ZoomSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(['Zoom', 'ZoomIn', 'ZoomOut', 'Pan', 'Reset'])\n ], ZoomSettings.prototype, \"toolbarItems\", void 0);\n __decorate([\n Property(false)\n ], ZoomSettings.prototype, \"enablePan\", void 0);\n __decorate([\n Property(false)\n ], ZoomSettings.prototype, \"enableScrollbar\", void 0);\n __decorate([\n Property(false)\n ], ZoomSettings.prototype, \"enableAnimation\", void 0);\n return ZoomSettings;\n}(ChildProperty));\nexport { ZoomSettings };\n/**\n * Represents the chart control.\n * ```html\n *
\n * \n * ```\n *\n * @public\n */\nvar Chart = /** @class */ (function (_super) {\n __extends(Chart, _super);\n /**\n * Constructor for the chart component.\n *\n * @param {ChartModel} [options] - The chart model options.\n * @param {string | HTMLElement} [element] - The element ID or instance where the chart needs to be rendered.\n * @private\n */\n function Chart(options, element) {\n var _this = _super.call(this, options, element) || this;\n /** @private */\n _this.rotatedDataLabelCollections = [];\n /** @public */\n _this.animated = false;\n /** @private */\n _this.isPointMouseDown = false;\n /** @private */\n _this.isScrolling = false;\n /** @private */\n _this.checkResize = 0;\n /** @private */\n _this.visible = 0;\n /** @private */\n _this.clickCount = 0;\n /** @private */\n _this.maxPointCount = 0;\n /** @private */\n _this.singleClickTimer = 0;\n /** @private */\n _this.chartAreaType = 'Cartesian';\n /** @private */\n _this.isRtlEnabled = false;\n _this.isCrosshair = true;\n _this.chartid = 57723;\n /** @private */\n _this.isLegendClicked = false;\n _this.isZoomed = false;\n _this.previousTargetId = '';\n _this.currentPointIndex = 0;\n _this.currentSeriesIndex = 0;\n _this.currentLegendIndex = 0;\n _this.previousPageX = null;\n _this.previousPageY = null;\n _this.allowPan = false;\n /** @private */\n _this.pointsRemoved = false;\n /** @private */\n _this.pointsAdded = false;\n /** @private */\n _this.zoomRedraw = false;\n setValue('mergePersistData', _this.mergePersistChartData, _this);\n return _this;\n }\n /**\n * To manage persist chart data.\n *\n * @returns {void}\n */\n Chart.prototype.mergePersistChartData = function () {\n var data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n if (!(isNullOrUndefined(data) || (data === ''))) {\n var dataObj = JSON.parse(data);\n var keys = Object.keys(dataObj);\n this.isProtectedOnChange = true;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if ((typeof this[key] === 'object') && !isNullOrUndefined(this[key])) {\n extend(this[key], dataObj[key]);\n }\n else {\n this[key] = dataObj[key];\n }\n }\n this.isProtectedOnChange = false;\n }\n };\n /**\n * Checks if the element ID contains special characters.\n *\n * @param {string} elementId - The ID of the element.\n * @returns {string} - The modified ID without special characters.\n */\n Chart.prototype.isIdHasSpecialCharacter = function (elementId) {\n var regex = /^[A-Za-z ]+$/;\n var numberRegex = /^[0-9 ]+$/;\n var childElementId = '';\n if (!regex.test(elementId)) {\n var start = 0;\n if (numberRegex.test(elementId[0])) {\n childElementId += ('\\\\3' + elementId[0]);\n start = 1;\n }\n for (var i = start; i < elementId.length; i++) {\n if (!regex.test(elementId[i]) && elementId.indexOf('-') === -1 &&\n elementId.indexOf('_') === -1 && elementId.indexOf('\\\\') === -1 && !numberRegex.test(elementId[i])) {\n childElementId += ('\\\\' + elementId[i]);\n }\n else {\n childElementId += elementId[i];\n }\n }\n return childElementId;\n }\n else {\n return elementId;\n }\n };\n /**\n * Initialize the event handler.\n */\n Chart.prototype.preRender = function () {\n this.element.id = this.isIdHasSpecialCharacter(this.element.id);\n // It is used for checking blazor framework or not.\n var blazor = 'Blazor';\n this.isBlazor = window[blazor];\n this.allowServerDataBinding = false;\n this.markerIndex = 0;\n this.unWireEvents();\n this.initPrivateVariable();\n this.setCulture();\n this.wireEvents();\n if (this.stockChart) {\n if (this.stockChart.tooltip.header === null) {\n this.tooltip.header = '${point.x}';\n }\n if (this.stockChart.tooltip.format === null) {\n this.tooltip.format = 'High : ${point.high}
Low :' +\n ' ${point.low}
Open : ${point.open}
Close : ${point.close}';\n }\n }\n this.element.setAttribute('dir', this.enableRtl ? 'rtl' : 'ltr');\n };\n Chart.prototype.initPrivateVariable = function () {\n this.animateSeries = true;\n this.delayRedraw = false;\n this.dragY = null;\n this.horizontalAxes = [];\n this.verticalAxes = [];\n this.refreshAxis();\n this.refreshDefinition(this.rows);\n this.refreshDefinition(this.columns);\n if (this.tooltipModule) {\n this.tooltipModule.previousPoints = [];\n }\n this.element.setAttribute('role', 'region');\n this.element.setAttribute('tabindex', '0');\n this.element.setAttribute('aria-label', this.description || this.title + '. Syncfusion interactive chart.');\n if (!(this.element.classList.contains('e-chart-focused'))) {\n this.element.setAttribute('class', this.element.getAttribute('class') + ' e-chart-focused');\n }\n if (this.element.id === '') {\n var collection = document.getElementsByClassName('e-chart').length;\n var elementid = 'chart_' + this.chartid + '_' + collection;\n while (document.getElementById(elementid)) {\n collection++;\n elementid = 'chart_' + this.chartid + '_' + collection;\n }\n this.element.id = 'chart_' + this.chartid + '_' + collection;\n }\n //seperate ID to differentiate chart and stock chart\n this.svgId = this.stockChart ? this.stockChart.element.id + '_stockChart_chart' :\n this.element.id + (this.enableCanvas ? '_canvas' : '_svg');\n };\n /**\n * To Initialize the control rendering.\n */\n Chart.prototype.render = function () {\n var _this = this;\n this.svgRenderer = new SvgRenderer(this.element.id);\n var loadEventData = {\n chart: this.isBlazor ? {} : this, theme: this.theme, name: load, cancel: false\n };\n if (!this.stockChart) {\n /**\n * Load event for the chart will be triggered only chart componet, if this is stock chart, load event did not triggered.\n */\n this.trigger(load, loadEventData, function () {\n if (!loadEventData.cancel) {\n _this.cartesianChartRendering(loadEventData);\n }\n });\n }\n else {\n // The fix is specific for nextjs app, as window is set as not defined for server side application like nextjs.\n this.isRtlEnabled = (window.getComputedStyle(document.querySelector('body')).direction === 'rtl');\n this.cartesianChartRendering(loadEventData);\n }\n this.applyZoomkit();\n };\n Chart.prototype.cartesianChartRendering = function (beforeRenderData) {\n this.theme = this.isBlazor ? beforeRenderData.theme : this.theme;\n this.setTheme();\n this.createChartSvg();\n this.markerRender = new Marker(this);\n this.calculateAreaType();\n this.calculateVisibleSeries();\n this.initTechnicalIndicators();\n this.initTrendLines();\n this.calculateVisibleAxis();\n this.processData();\n this.renderComplete();\n this.mouseMoveEvent();\n this.allowServerDataBinding = true;\n };\n /**\n * Gets the localized label by locale keyword.\n *\n * @param {string} key key\n * @returns {string} localized label\n */\n Chart.prototype.getLocalizedLabel = function (key) {\n return this.localeObject.getConstant(key);\n };\n /**\n * Initiates animation for the chart.\n *\n * @param {number} [duration] - The duration of the animation in milliseconds.\n * @returns {void}\n * @private\n */\n Chart.prototype.animate = function (duration) {\n this.redraw = true;\n this.animated = true; //used to set duration as 1000 for animation at default 300\n this.duration = duration ? duration : 1000;\n if (this.tooltipModule) {\n this.tooltipModule.removeHighlightedMarker(this.tooltipModule.previousPoints, true);\n }\n else if (this.markerRender.previousPoints) {\n for (var previousPoint = 0; previousPoint < this.markerRender.previousPoints.length; previousPoint++) {\n this.markerRender.removeHighlightedMarker(this.markerRender.previousPoints[previousPoint].series, this.markerRender.previousPoints[previousPoint].point);\n }\n }\n };\n /**\n * Refresh the chart bounds.\n *\n * @private\n */\n Chart.prototype.refreshBound = function () {\n this.rotatedDataLabelCollections = [];\n if (this.legendModule && this.legendSettings.visible) {\n this.legendModule.getLegendOptions(this.visibleSeries, this);\n }\n /**\n * I264230, EJ2-36761\n * Issue: Tooltip doesnot appears after zooming and hovering on same point\n * Root cause: While performing zoom, previous points in tooltip restore.\n * Fix: previous points set to empty array\n */\n if (this.tooltip.enable && this.tooltipModule) {\n this.tooltipModule.previousPoints = [];\n }\n this.calculateStackValues();\n this.calculateBounds();\n //this prevents the initial rendering of stock chart\n if (this.stockChart && !this.stockChart.rangeFound) {\n if (this.stockChart.enablePeriodSelector || this.stockChart.enableSelector) {\n return null;\n }\n }\n this.renderElements();\n removeElement('chartmeasuretext');\n this.removeSelection();\n if (this.markerRender) {\n this.markerRender.mergeXvalues(this.visibleSeries);\n }\n };\n /**\n * To calcualte the stack values.\n *\n * @returns {void}\n * @private\n */\n Chart.prototype.calculateStackValues = function () {\n var series;\n var isCalculateStacking = false;\n for (var i = 0, len = this.visibleSeries.length; i < len; i++) {\n series = this.visibleSeries[i];\n if (series.visible) {\n series.position = series.rectCount = undefined;\n }\n if (((series.type.indexOf('Stacking') !== -1) || (series.drawType.indexOf('Stacking') !== -1\n && this.chartAreaType === 'PolarRadar')) && !isCalculateStacking) {\n series.calculateStackedValue(series.type.indexOf('100') > -1, this);\n isCalculateStacking = true;\n }\n }\n };\n Chart.prototype.removeSelection = function () {\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n if (series.visible) {\n for (var _b = 0, _c = series.points; _b < _c.length; _b++) {\n var point = _c[_b];\n point.isSelect = false;\n }\n }\n }\n if (getElement(this.element.id + '_ej2_drag_multi_group')) {\n if (this.selectionMode.indexOf('Drag') > -1) {\n this.selectionModule.filterArray = [];\n }\n removeElement(this.element.id + '_ej2_drag_multi_group');\n this.selectionModule.calculateDragSelectedElements(this, new Rect(0, 0, 0, 0), true);\n }\n else if (getElement(this.element.id + '_ej2_drag_group')) {\n if (this.selectionMode !== 'Lasso') {\n this.selectionModule.filterArray = [];\n }\n removeElement(this.element.id + '_ej2_drag_group');\n this.selectionModule.calculateDragSelectedElements(this, new Rect(0, 0, 0, 0), true);\n }\n };\n Chart.prototype.renderElements = function () {\n this.renderBorder();\n this.renderTitle();\n this.renderAreaBorder();\n this.renderSeriesElements(this.renderAxes());\n this.renderLegend();\n this.applyZoomkit();\n this.performSelection();\n this.setSecondaryElementPosition();\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var value = _a[_i];\n updateBlazorTemplate(this.element.id + '_DataLabel', 'Template', value.marker.dataLabel);\n }\n this.renderAnnotation();\n };\n /**\n * To render the legend\n *\n * @private\n */\n Chart.prototype.renderAxes = function () {\n this.yAxisElements = this.renderer.createGroup({ id: this.element.id + 'yAxisCollection' });\n var axisElement;\n if (this.rows.length > 0 && this.columns.length > 0) {\n axisElement = this.chartAxisLayoutPanel.renderAxes();\n }\n if (this.stripLineModule) {\n this.stripLineModule.renderStripLine(this, 'Behind', this.axisCollections);\n }\n return axisElement;\n };\n /**\n * To render the legend\n */\n Chart.prototype.renderLegend = function () {\n if (this.legendModule && this.legendModule.legendCollections.length && this.legendSettings.visible) {\n this.legendModule.calTotalPage = true;\n var borderWidth = this.legendSettings.border.width;\n var bounds = this.legendModule.legendBounds;\n var rect = new Rect(bounds.x, bounds.y, bounds.width, bounds.height);\n if (this.enableCanvas) {\n rect = new Rect(rect.x - borderWidth / 2, rect.y - borderWidth / 2, rect.width + borderWidth, rect.height + borderWidth);\n this.renderer.canvasClip(rect);\n }\n this.legendModule.renderLegend(this, this.legendSettings, bounds);\n if (this.enableCanvas) {\n this.renderer.canvasRestore();\n }\n }\n if (!this.redraw) {\n if (!this.stockChart) {\n this.element.appendChild(this.svgObject);\n }\n else {\n if (!getElement(this.stockChart.chartObject.id)) {\n this.stockChart.mainObject.appendChild(this.svgObject);\n }\n }\n }\n };\n /**\n * To set the left and top position for data label template for center aligned chart.\n *\n * @returns {void}\n */\n Chart.prototype.setSecondaryElementPosition = function () {\n var element = getElement(this.element.id + '_Secondary_Element');\n if (!element) {\n return;\n }\n var rect = this.element.getBoundingClientRect();\n var svgRect = getElement(this.svgId).getBoundingClientRect();\n element.style.left = Math.max(((svgRect.left - rect.left) / this.scaleX), 0) + 'px';\n element.style.top = Math.max(((svgRect.top - rect.top) / this.scaleY), 0) + 'px';\n };\n Chart.prototype.initializeModuleElements = function () {\n this.dataLabelCollections = [];\n var elementId = this.element.id;\n if (this.series.length) {\n this.seriesElements = this.svgRenderer.createGroup({ id: elementId + 'SeriesCollection' });\n }\n if (this.indicators.length) {\n this.indicatorElements = this.renderer.createGroup({ id: elementId + 'IndicatorCollection' });\n }\n if (this.hasTrendlines()) {\n this.trendLineElements = this.renderer.createGroup({ id: elementId + 'TrendLineCollection' });\n }\n this.dataLabelElements = this.renderer.createGroup({ id: elementId + 'DataLabelCollection' });\n };\n Chart.prototype.hasTrendlines = function () {\n var isTrendline;\n for (var _i = 0, _a = this.series; _i < _a.length; _i++) {\n var series = _a[_i];\n isTrendline = series.trendlines.length ? true : false;\n if (isTrendline) {\n break;\n }\n }\n return isTrendline;\n };\n Chart.prototype.renderSeriesElements = function (axisElement) {\n // Initialize the series elements values\n this.initializeModuleElements();\n var elementId = this.element.id;\n if (this.element.tagName !== 'g') {\n var tooltipDiv = redrawElement(this.redraw, elementId + '_Secondary_Element') ||\n this.createElement('div');\n tooltipDiv.id = elementId + '_Secondary_Element';\n tooltipDiv.style.cssText = 'position: relative';\n appendChildElement(false, this.element, tooltipDiv, this.redraw);\n }\n // For canvas\n if (this.enableCanvas) {\n var tooltipdiv = document.getElementById(elementId + '_Secondary_Element');\n tooltipdiv = !tooltipdiv ? this.createElement('div', { id: elementId + '_Secondary_Element',\n attrs: { 'style': 'position: relative; left:0px; top:0px' } }) : tooltipdiv;\n var svg = this.svgRenderer.createSvg({\n id: elementId + '_tooltip_svg',\n width: this.availableSize.width,\n height: this.availableSize.height\n });\n svg.style.cssText = 'position: absolute; pointer-events: none';\n tooltipdiv.appendChild(svg);\n }\n // For userInteraction\n if (this.tooltip.enable && !this.stockChart) {\n appendChildElement(this.enableCanvas, this.svgObject, this.renderer.createGroup({ id: elementId + '_UserInteraction', style: 'pointer-events:none;' }), this.redraw);\n }\n if (this.rows.length > 0 && this.columns.length > 0) {\n this.initializeIndicator();\n this.initializeTrendLine();\n this.renderSeries();\n // Trendline is append to DOM after the series\n if (this.trendLineElements) {\n appendChildElement(this.enableCanvas, this.svgObject, this.trendLineElements, this.redraw);\n }\n this.appendElementsAfterSeries(axisElement);\n }\n };\n /**\n * Renders the series on the chart.\n *\n * @private\n * @returns {void}\n */\n Chart.prototype.renderSeries = function () {\n var visibility;\n if (this.enableCanvas) {\n // To clip the series rect for canvas\n this.renderer.canvasClip(this.chartAxisLayoutPanel.seriesClipRect);\n }\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var item = _a[_i];\n if (item.category === 'TrendLine') {\n visibility = this.series[item.sourceIndex].trendlines[item.index].visible;\n }\n else {\n visibility = item.visible;\n }\n if (visibility) {\n this.visible++;\n findClipRect(item, this.enableCanvas);\n if (this.enableCanvas) {\n // To render scatter and bubble series in canvas\n this.renderCanvasSeries();\n }\n item.renderSeries(this);\n }\n else if (item.isLegendClicked && (item.type.indexOf('StackingArea') > -1 || item.type.indexOf('StackingBar') > -1 || item.type.indexOf('StackingColumn') > -1)) {\n findClipRect(item, this.enableCanvas);\n item.renderSeries(this);\n }\n }\n if (this.enableCanvas) {\n this.renderer.canvasRestore();\n }\n this.visible = 0;\n var options = {\n 'id': this.element.id + '_ChartAreaClipRect_',\n 'x': this.chartAxisLayoutPanel.seriesClipRect.x,\n 'y': this.chartAxisLayoutPanel.seriesClipRect.y,\n 'width': this.chartAxisLayoutPanel.seriesClipRect.width,\n 'height': this.chartAxisLayoutPanel.seriesClipRect.height,\n 'fill': 'transparent',\n 'stroke-width': 1,\n 'stroke': 'Gray'\n };\n if (!this.seriesElements || (options.height < 0 || options.width < 0)) {\n return;\n }\n var clipRectElement;\n if (this.chartAreaType === 'PolarRadar') {\n clipRectElement = appendClipElement(this.redraw, options, this.renderer, 'drawCircularClipPath');\n }\n else {\n clipRectElement = appendClipElement(this.redraw, options, this.renderer);\n }\n if (!this.enableCanvas) {\n this.seriesElements.appendChild(clipRectElement);\n }\n var seriesSvg = document.getElementById(this.element.id + '_series_svg');\n if (seriesSvg) {\n appendChildElement(false, seriesSvg, this.seriesElements, this.redraw);\n }\n else {\n appendChildElement(this.enableCanvas, this.svgObject, this.seriesElements, this.redraw);\n }\n };\n Chart.prototype.renderCanvasSeries = function () {\n // const svgElement: Element;\n // svgElement = (this.enableCanvas) ?\n // svgElement : this.svgObject;\n // const canvas: boolean = (this.enableCanvas) ?\n // false : this.enableCanvas;\n var svgElement;\n // let canvas: boolean;\n if (this.enableCanvas) {\n var tempSvgElement = svgElement;\n svgElement = tempSvgElement;\n // canvas = false;\n }\n else {\n svgElement = this.svgObject;\n // canvas = this.enableCanvas;\n }\n };\n Chart.prototype.initializeIndicator = function () {\n for (var _i = 0, _a = this.indicators; _i < _a.length; _i++) {\n var indicator = _a[_i];\n if (this[firstToLowerCase(indicator.type) + 'IndicatorModule']) {\n this[firstToLowerCase(indicator.type) + 'IndicatorModule'].createIndicatorElements(this, indicator, indicator.index);\n }\n }\n if (this.indicatorElements) {\n appendChildElement(this.enableCanvas, this.svgObject, this.indicatorElements, this.redraw);\n }\n };\n Chart.prototype.initializeTrendLine = function () {\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n if (series.trendlines.length) {\n this.trendLineModule.getTrendLineElements(series, this);\n }\n }\n };\n Chart.prototype.appendElementsAfterSeries = function (axisElement) {\n if (this.chartAreaType === 'PolarRadar') {\n appendChildElement(this.enableCanvas, this.svgObject, this.yAxisElements, this.redraw);\n }\n appendChildElement(this.enableCanvas, this.svgObject, axisElement, this.redraw);\n if ((this.zoomModule && this.zoomSettings.enableScrollbar && this.scrollElement.childElementCount) ||\n (this.scrollElement && this.scrollElement.childElementCount)) {\n appendChildElement(false, getElement(this.element.id + '_Secondary_Element'), this.scrollElement, this.redraw);\n }\n if (this.stripLineModule) {\n this.stripLineModule.renderStripLine(this, 'Over', this.axisCollections);\n }\n if (!this.tooltip.enable || this.stockChart) {\n appendChildElement(this.enableCanvas, this.svgObject, this.renderer.createGroup({ id: this.element.id + '_UserInteraction', style: 'pointer-events:none;' }), this.redraw);\n }\n if (this.stockChart) {\n this.stockChart.calculateStockEvents();\n }\n };\n Chart.prototype.applyZoomkit = function () {\n /**\n * Issue: Zoomkit not visible after performing refresh()\n * Fix: this method called without checking `zoomModule.isZoomed`\n */\n if (this.chartAreaType === 'PolarRadar') {\n return;\n }\n if ((!this.redraw || this.zoomRedraw) && this.zoomModule && (!this.zoomSettings.enablePan || this.zoomModule.performedUI ||\n this.zoomSettings.showToolbar)) {\n this.zoomModule.applyZoomToolkit(this, this.axisCollections);\n }\n };\n /**\n * Render annotation perform here.\n *\n * @private\n * @returns {void}\n */\n Chart.prototype.renderAnnotation = function () {\n if (this.annotationModule) {\n //for stock chart, stock chart's id is added to render the annotations\n this.annotationModule.renderAnnotations(getElement((this.stockChart ? this.stockChart.element.id : this.element.id) + '_Secondary_Element'));\n }\n };\n Chart.prototype.performSelection = function () {\n var selectedDataIndexes = [];\n if (this.selectionModule) {\n selectedDataIndexes = extend([], this.selectionModule.selectedDataIndexes, null, true);\n this.selectionModule.invokeSelection(this);\n }\n if (this.highlightModule) {\n this.highlightModule.invokeHighlight(this);\n }\n if (selectedDataIndexes.length > 0) {\n this.selectionModule.selectedDataIndexes = selectedDataIndexes;\n this.selectionModule.redrawSelection(this, this.selectionMode);\n }\n };\n Chart.prototype.processData = function (render) {\n if (render === void 0) { render = true; }\n this.visibleSeriesCount = 0;\n var check = true;\n var prevPointCount = 0;\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n if (!series.visible && !this.legendSettings.visible) {\n this.visibleSeriesCount++;\n continue;\n }\n if (series.category !== 'Indicator' && series.category !== 'TrendLine') {\n this.initializeDataModule(series);\n }\n }\n for (var _b = 0, _c = this.indicators; _b < _c.length; _b++) {\n var indicator = _c[_b];\n if (indicator.dataSource) {\n var techIndicator = indicator;\n this.initializeDataModule(techIndicator);\n check = false;\n }\n }\n if (render && (!this.visibleSeries.length || this.visibleSeriesCount === this.visibleSeries.length && check)) {\n this.refreshBound();\n this.trigger('loaded', { chart: this.isBlazor ? {} : this });\n }\n if (!this.stockChart && this.visibleSeries.length > 0) {\n for (var _d = 0, _e = this.visibleSeries; _d < _e.length; _d++) {\n var series = _e[_d];\n if (!isNullOrUndefined(series.points)) {\n this.maxPointCount = Math.max(prevPointCount, series.points.length);\n prevPointCount = series.points.length;\n }\n }\n }\n };\n Chart.prototype.initializeDataModule = function (series) {\n series.xData = [];\n series.yData = [];\n var dataSource;\n var isAngular = 'isAngular';\n if (this[isAngular]) {\n dataSource = Object.keys(series.dataSource).length ? series.dataSource : this.dataSource;\n }\n else {\n dataSource = series.dataSource || this.dataSource;\n }\n series.dataModule = new Data(dataSource, series.query);\n series.points = [];\n series.refreshDataManager(this);\n };\n /**\n * To provide the array of modules needed for control rendering.\n *\n * @returns {void} - To provide the array of modules needed for control rendering.\n * @private\n */\n Chart.prototype.calculateBounds = function () {\n var margin = this.margin;\n // Title Height;\n var titleHeight = 0;\n var subTitleHeight = 0;\n var padding = this.titleStyle.position === 'Top' || (this.titleStyle.position === 'Bottom' && !this.legendSettings.visible) ? 15 : 5;\n var left = margin.left + this.border.width;\n var width = this.availableSize.width - left - margin.right - this.border.width;\n var elementSpacing = 0;\n this.titleCollection = [];\n this.subTitleCollection = [];\n if (this.title) {\n this.titleCollection = getTitle(this.title, this.titleStyle, width, this.enableRtl, this.themeStyle.chartTitleFont);\n titleHeight = (measureText(this.title, this.titleStyle, this.themeStyle.chartTitleFont).height *\n this.titleCollection.length) + padding;\n if (this.subTitle) {\n this.subTitleCollection = getTitle(this.subTitle, this.subTitleStyle, width, this.enableRtl, this.themeStyle.chartSubTitleFont);\n subTitleHeight = (measureText(this.subTitle, this.subTitleStyle, this.themeStyle.chartSubTitleFont).height *\n this.subTitleCollection.length) + padding;\n }\n }\n else if (this.legendSettings.position !== 'Top' && this.border.width) {\n elementSpacing = 10;\n }\n var top = margin.top + elementSpacing + this.border.width + this.chartArea.border.width * 0.5;\n var height = this.availableSize.height - top - this.border.width - margin.bottom;\n var marginTotal = subTitleHeight + titleHeight + this.titleStyle.border.width + this.subTitleStyle.border.width;\n switch (this.titleStyle.position) {\n case 'Top':\n top += marginTotal;\n height -= marginTotal;\n break;\n case 'Bottom':\n height -= marginTotal;\n break;\n case 'Left':\n left += marginTotal;\n width -= marginTotal;\n break;\n case 'Right':\n left -= (this.titleStyle.border.width + this.subTitleStyle.border.width);\n width -= marginTotal;\n break;\n }\n if (this.stockChart && this.stockChart.legendSettings.visible && this.stockChart.stockLegendModule) {\n if (this.stockChart.legendSettings.position === 'Top') {\n top += this.stockChart.stockLegendModule.legendBounds.height;\n }\n else if (this.stockChart.legendSettings.position === 'Left') {\n left += this.stockChart.stockLegendModule.legendBounds.width;\n }\n }\n this.initialClipRect = new Rect(left, top, width, height);\n if (this.legendModule && this.legendSettings.visible) {\n this.legendModule.calculateLegendBounds(this.initialClipRect, this.availableSize, null);\n }\n this.chartAxisLayoutPanel.measureAxis(this.initialClipRect);\n };\n /**\n * Prints the chart or specified element.\n *\n * @param {string[] | string | Element} id - The ID or array of IDs of the elements to print.\n * @returns {void}\n */\n Chart.prototype.print = function (id) {\n var exportChart = new PrintUtils(this);\n var width = this.width;\n if (this.getModuleName() === 'chart' && parseInt(this.width, 10) >= 80 && this.width.indexOf('%') > -1) {\n this.width = '80%';\n this.dataBind();\n }\n exportChart.print(id);\n if (this.getModuleName() === 'chart' && parseInt(this.width, 10) >= 80 && this.width.indexOf('%') > -1) {\n this.width = width;\n this.dataBind();\n }\n };\n /**\n * Defines the trendline initialization.\n *\n * @returns {void}\n */\n Chart.prototype.initTrendLines = function () {\n this.isProtectedOnChange = true;\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n var trendIndex = 0;\n for (var _b = 0, _c = series.trendlines; _b < _c.length; _b++) {\n var trendline = _c[_b];\n var trendLine = trendline;\n if (this.trendLineModule) {\n trendLine.index = trendIndex;\n trendLine.sourceIndex = series.index;\n this.trendLineModule.initSeriesCollection(trendLine, this);\n if (trendLine.targetSeries) {\n trendLine.targetSeries.xAxisName = series.xAxisName;\n trendLine.targetSeries.yAxisName = series.yAxisName;\n this.visibleSeries.push(trendLine.targetSeries);\n }\n }\n trendIndex++;\n }\n }\n this.isProtectedOnChange = false;\n };\n Chart.prototype.calculateAreaType = function () {\n var series = this.series[0];\n this.chartArea.border.width = this.stockChart ? 0 : this.chartArea.border.width;\n if (series) {\n this.requireInvertedAxis = ((series.type.indexOf('Bar') !== -1) && !this.isTransposed) ||\n ((series.type.indexOf('Bar') === -1) && this.isTransposed && this.chartAreaType !== 'PolarRadar');\n }\n this.chartAxisLayoutPanel = this.chartAreaType === 'PolarRadar' ? (this.polarSeriesModule || this.radarSeriesModule)\n : new CartesianAxisLayoutPanel(this);\n };\n /**\n * Calculate the visible axis.\n *\n * @private\n * @returns {void}\n */\n Chart.prototype.calculateVisibleAxis = function () {\n var axis;\n var axes = [this.primaryXAxis, this.primaryYAxis];\n axes = this.chartAreaType === 'Cartesian' ? axes.concat(this.axes) : axes;\n if (this.paretoSeriesModule && this.series[0].type === 'Pareto') {\n axes = axes.concat(this.paretoSeriesModule.paretoAxes);\n }\n this.axisCollections = [];\n if (this.zoomModule) {\n this.zoomModule.isPanning = this.zoomModule.isAxisZoomed(axes) && this.zoomSettings.enablePan;\n this.svgObject.setAttribute('cursor', this.zoomModule.isPanning ? 'pointer' : 'auto');\n if (this.scrollBarModule) {\n this.scrollBarModule.axes = axes;\n }\n }\n if (this.scrollSettingEnabled) {\n if (this.scrollBarModule) {\n this.scrollBarModule.axes = axes;\n }\n }\n for (var i = 0, len = axes.length; i < len; i++) {\n axis = axes[i];\n axis.series = [];\n axis.labels = [];\n axis.indexLabels = {};\n axis.orientation = (i === 0) ? (this.requireInvertedAxis ? 'Vertical' : 'Horizontal') :\n (i === 1) ? (this.requireInvertedAxis ? 'Horizontal' : 'Vertical') : axis.orientation;\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n this.initAxis(series, axis, true);\n if (series.category === 'Pareto' && series.type === 'Line' && series.yAxis) {\n series.yAxis.internalVisibility = series.paretoOptions.showAxis;\n }\n }\n for (var _b = 0, _c = this.indicators; _b < _c.length; _b++) {\n var indicator = _c[_b];\n this.initAxis(indicator, axis, false);\n }\n if (this.scrollBarModule && !axis.zoomingScrollBar) {\n this.scrollBarModule.injectTo(axis, this);\n }\n if (axis.orientation != null) {\n this.axisCollections.push(axis);\n }\n }\n if (this.rows.length > 0 && this.columns.length > 0) {\n this.chartAxisLayoutPanel.measure();\n }\n };\n Chart.prototype.initAxis = function (series, axis, isSeries) {\n if (series.xAxisName === axis.name || (series.xAxisName == null && axis.name === 'primaryXAxis')) {\n axis.orientation = this.requireInvertedAxis ? 'Vertical' : 'Horizontal';\n series.xAxis = axis;\n if (isSeries) {\n axis.series.push(series);\n }\n }\n else if (series.yAxisName === axis.name || (series.yAxisName == null && axis.name === 'primaryYAxis')) {\n axis.orientation = this.requireInvertedAxis ? 'Horizontal' : 'Vertical';\n series.yAxis = axis;\n if (isSeries) {\n axis.series.push(series);\n }\n }\n };\n Chart.prototype.initTechnicalIndicators = function () {\n var i = 0;\n for (var _i = 0, _a = this.indicators; _i < _a.length; _i++) {\n var indicator = _a[_i];\n var techIndicator = indicator;\n var type = firstToLowerCase(techIndicator.type);\n if (this[type + 'IndicatorModule']) {\n techIndicator.index = i;\n this[type + 'IndicatorModule'].initSeriesCollection(techIndicator, this);\n for (var _b = 0, _c = techIndicator.targetSeries; _b < _c.length; _b++) {\n var targetSeries = _c[_b];\n if (indicator.seriesName || indicator.dataSource) {\n this.visibleSeries.push(targetSeries);\n }\n }\n }\n i++;\n }\n };\n /**\n * Refreshes the technical indicator for the specified series.\n *\n * @param {SeriesBase} series - The series for which to refresh the technical indicator.\n * @returns {void}\n * @private\n */\n Chart.prototype.refreshTechnicalIndicator = function (series) {\n if (this.indicators.length) {\n var targetIndicator = null;\n if (series instanceof Series && series.category !== 'Indicator') {\n for (var _i = 0, _a = this.indicators; _i < _a.length; _i++) {\n var indicator = _a[_i];\n if (indicator.seriesName === series.name && !indicator.dataSource) {\n targetIndicator = indicator;\n targetIndicator.setDataSource(series, this);\n }\n }\n }\n else if (series instanceof TechnicalIndicator) {\n targetIndicator = series;\n targetIndicator.setDataSource(series instanceof Series ? series : null, this);\n }\n }\n };\n Chart.prototype.calculateVisibleSeries = function () {\n var series;\n this.visibleSeries = [];\n var colors = this.palettes.length ? this.palettes : getSeriesColor(this.theme);\n var count = colors.length;\n var seriesCollection = this.series.sort(function (a, b) { return a.zOrder - b.zOrder; });\n for (var i = 0, len = seriesCollection.length; i < len; i++) {\n series = seriesCollection[i];\n // for y axis label issue during chart navigation\n series.category = seriesCollection[0].type === 'Pareto' ? 'Pareto' : 'Series';\n series.index = i;\n series.interior = series.fill || colors[i % count];\n if (!series.marker.shape && (series.marker.visible || series.type === 'Scatter' || series.drawType === 'Scatter')) {\n series.marker.shape = markerShapes[this.markerIndex % 10];\n this.markerIndex++;\n }\n if (this.isSecondaryAxis(series.xAxis)) {\n series.xAxis.internalVisibility = series.xAxis.series.some(function (value) { return (value.visible); });\n }\n if (this.isSecondaryAxis(series.yAxis)) {\n series.yAxis.internalVisibility = series.yAxis.series.some(function (value) { return (value.visible); });\n }\n switch (series.type) {\n case 'Bar':\n case 'StackingBar':\n case 'StackingBar100':\n if (seriesCollection[0].type.indexOf('Bar') === -1) {\n continue;\n }\n break;\n case 'Polar':\n case 'Radar':\n if (this.chartAreaType !== 'PolarRadar') {\n continue;\n }\n if (this.chartAreaType === 'PolarRadar' && ((series.xAxisName !== null && (this.primaryXAxis.name !== series.xAxisName)) ||\n (series.yAxisName !== null && (this.primaryYAxis.name !== series.yAxisName)))) {\n continue;\n }\n break;\n case 'Pareto':\n this.visibleSeries.push(series);\n this.paretoSeriesModule.initSeries(series, this);\n continue;\n default:\n if (this.chartAreaType === 'PolarRadar' || seriesCollection[0].type.indexOf('Bar') > -1) {\n continue;\n }\n break;\n }\n this.visibleSeries.push(series);\n seriesCollection[i] = series;\n }\n };\n Chart.prototype.isSecondaryAxis = function (axis) {\n return (this.axes.indexOf(axis) > -1);\n };\n Chart.prototype.renderTitle = function () {\n var rect;\n var margin = this.margin;\n var elementSpacing = 5;\n if (this.title) {\n var getAnchor = getTextAnchor(this.titleStyle.textAlignment, this.enableRtl);\n var elementSize = measureText(this.title, this.titleStyle, this.themeStyle.chartTitleFont);\n rect = new Rect(margin.left, 0, this.availableSize.width - margin.left - margin.right, 0);\n var borderWidth = this.titleStyle.border.width;\n var positionY = this.margin.top + ((elementSize.height) * 3 / 4);\n var positionX = titlePositionX(rect, this.titleStyle || this.themeStyle.chartTitleFont) + borderWidth;\n var rotation = void 0;\n var alignment = this.titleStyle.textAlignment;\n var subtitleSize = measureText(this.subTitle, this.subTitleStyle, this.themeStyle.chartSubTitleFont);\n switch (this.titleStyle.position) {\n case 'Top':\n positionY += borderWidth * 0.5;\n positionX += getAnchor === 'start' ? borderWidth * 0.5 + this.border.width :\n getAnchor === 'end' ? ((-borderWidth * 2) - this.border.width) : 0;\n break;\n case 'Bottom':\n positionX += getAnchor === 'start' ? (borderWidth * 0.5) + this.border.width :\n getAnchor === 'end' ? (-borderWidth * 2) - this.border.width : 0;\n positionY = this.availableSize.height - this.margin.bottom - subtitleSize.height - (elementSize.height / 2) -\n (borderWidth * 0.5) - (this.subTitleStyle.border.width * 0.5);\n break;\n case 'Left':\n positionX = this.margin.left + ((elementSize.height) * 3 / 4) + (borderWidth * 0.5);\n positionY = alignment === 'Near' ? margin.bottom + (borderWidth * 0.5) + this.border.width :\n alignment === 'Far' ? this.availableSize.height - margin.bottom - (borderWidth * 0.5) - this.border.width : this.availableSize.height / 2;\n getAnchor = alignment === 'Near' ? 'end' : alignment === 'Far' ? 'start' : 'middle';\n getAnchor = this.enableRtl ? (getAnchor === 'end' ? 'start' : getAnchor === 'start' ? 'end' : getAnchor) : getAnchor;\n rotation = 'rotate(' + -90 + ',' + positionX + ',' + positionY + ')';\n break;\n case 'Right':\n positionX = this.availableSize.width - this.margin.right - ((elementSize.height) * 3 / 4) - (borderWidth * 0.5);\n positionY = alignment === 'Near' ? margin.bottom + (borderWidth * 0.5) + this.border.width :\n alignment === 'Far' ? this.availableSize.height - margin.bottom - (borderWidth * 0.5) - this.border.width : this.availableSize.height / 2;\n getAnchor = alignment === 'Near' ? 'start' : alignment === 'Far' ? 'end' : 'middle';\n getAnchor = this.enableRtl ? (getAnchor === 'end' ? 'start' : getAnchor === 'start' ? 'end' : getAnchor) : getAnchor;\n rotation = 'rotate(' + 90 + ',' + positionX + ',' + positionY + ')';\n break;\n case 'Custom':\n positionX = this.titleStyle.x;\n positionY = this.titleStyle.y;\n getAnchor = 'middle';\n break;\n }\n var borderOptions = {\n 'id': this.element.id + '_ChartTitleBorder',\n 'x': positionX - (getAnchor === 'middle' ? (elementSize.width / 2) + elementSpacing : getAnchor === 'end' ? elementSize.width + elementSpacing : elementSpacing),\n 'y': positionY - elementSize.height + (elementSize.height / 4),\n 'rx': this.titleStyle.border.cornerRadius,\n 'ry': this.titleStyle.border.cornerRadius,\n 'width': elementSize.width + (elementSpacing * 2),\n 'height': elementSize.height * this.titleCollection.length,\n 'fill': this.titleStyle.background,\n 'stroke-width': borderWidth,\n 'stroke': this.titleStyle.border.color,\n 'transform': rotation ? rotation : '',\n 'd': ''\n };\n var htmlObject = redrawElement(this.redraw, this.element.id + '_ChartTitleBorder', borderOptions, this.renderer)\n || this.renderer.drawRectangle(borderOptions);\n appendChildElement(this.enableCanvas, this.svgObject, htmlObject, this.redraw);\n var options = new TextOption(this.element.id + '_ChartTitle', positionX, positionY, getAnchor, this.titleCollection, rotation, 'auto');\n var element = redrawElement(this.redraw, this.element.id + '_ChartTitle', options, this.renderer) ||\n textElement(this.renderer, options, this.titleStyle, this.titleStyle.color || this.themeStyle.chartTitleFont.color, this.svgObject, null, null, null, null, null, null, null, null, this.enableCanvas, null, this.themeStyle.chartTitleFont);\n if (element) {\n element.setAttribute('tabindex', '0');\n element.setAttribute('class', 'e-chart-focused');\n }\n if (this.subTitle) {\n this.renderSubTitle(options);\n }\n }\n };\n Chart.prototype.renderSubTitle = function (options) {\n var maxWidth = 0;\n var titleWidth = 0;\n var padding = 10;\n var alignment = this.titleStyle.textAlignment;\n for (var _i = 0, _a = this.titleCollection; _i < _a.length; _i++) {\n var titleText = _a[_i];\n titleWidth = measureText(titleText, this.titleStyle, this.themeStyle.chartTitleFont).width;\n maxWidth = titleWidth > maxWidth ? titleWidth : maxWidth;\n }\n var subTitleElementSize = measureText(this.subTitleCollection.reduce(function (a, b) {\n return (a.length > b.length ? a : b);\n }), this.subTitleStyle, this.themeStyle.chartSubTitleFont);\n var getAnchor = getTextAnchor(this.subTitleStyle.textAlignment, this.enableRtl);\n var rect = new Rect(alignment === 'Center' ? (options.x - maxWidth * 0.5) : alignment === 'Far' ? options.x - maxWidth : options.x, 0, maxWidth, 0);\n if (this.titleStyle.position === 'Left') {\n rect.x = alignment === 'Center' ? (options.x - maxWidth * 0.5) : alignment === 'Far' ? this.margin.left + ((subTitleElementSize.height) * 3 / 4) : (options.x - maxWidth);\n }\n var elementSize = measureText(this.title, this.titleStyle, this.themeStyle.chartTitleFont);\n var positionY = options.y * options.text.length + subTitleElementSize.height + (padding / 2) +\n this.titleStyle.border.width + (this.subTitleStyle.border.width * 0.5);\n if (this.titleStyle.position === 'Bottom') {\n positionY = options.y * options.text.length + (padding / 2) + (elementSize.height / 2) + (subTitleElementSize.height / 2);\n }\n var borderOptions = {\n 'id': this.element.id + '_ChartSubTitleBorder',\n 'x': titlePositionX(rect, this.subTitleStyle) - (getAnchor === 'middle' ? (subTitleElementSize.width / 2) + padding / 2 : getAnchor === 'end' ? subTitleElementSize.width + padding / 2 : padding / 2),\n 'y': positionY - subTitleElementSize.height + (subTitleElementSize.height / 4),\n 'rx': this.subTitleStyle.border.cornerRadius,\n 'ry': this.subTitleStyle.border.cornerRadius,\n 'width': subTitleElementSize.width + padding,\n 'height': subTitleElementSize.height * this.subTitleCollection.length,\n 'fill': this.subTitleStyle.background,\n 'stroke-width': this.subTitleStyle.border.width,\n 'stroke': this.subTitleStyle.border.color,\n 'transform': options.transform,\n 'd': ''\n };\n var htmlObject = redrawElement(this.redraw, this.element.id + '_ChartSubTitleBorder', borderOptions, this.renderer)\n || this.renderer.drawRectangle(borderOptions);\n appendChildElement(this.enableCanvas, this.svgObject, htmlObject, this.redraw);\n var subTitleOptions = new TextOption(this.element.id + '_ChartSubTitle', titlePositionX(rect, this.subTitleStyle), positionY, getTextAnchor(this.subTitleStyle.textAlignment, this.enableRtl), this.subTitleCollection, options.transform, 'auto');\n var element = redrawElement(this.redraw, this.element.id + '_ChartSubTitle', subTitleOptions, this.renderer) ||\n textElement(this.renderer, subTitleOptions, this.subTitleStyle, this.subTitleStyle.color ||\n this.themeStyle.chartSubTitleFont.color, this.svgObject, null, null, null, null, null, null, null, null, this.enableCanvas, null, this.themeStyle.chartSubTitleFont);\n };\n Chart.prototype.renderBorder = function () {\n var x = 0;\n var y = 0;\n var width = this.border.width;\n var backGroundImage = this.backgroundImage;\n var fillColor = backGroundImage ? 'transparent' : (this.background || this.themeStyle.background);\n if (this.stockChart && this.stockChart.legendSettings.visible && this.stockChart.stockLegendModule) {\n if (this.stockChart.legendSettings.position === 'Top') {\n y += this.stockChart.stockLegendModule.legendBounds.height;\n }\n else if (this.stockChart.legendSettings.position === 'Left') {\n x += this.stockChart.stockLegendModule.legendBounds.width;\n }\n }\n var rect = new RectOption(this.element.id + '_ChartBorder', fillColor, this.border, 1, new Rect(width * 0.5 + x, width * 0.5 + y, this.availableSize.width - width, this.availableSize.height - width), 0, 0, '', this.border.dashArray);\n this.htmlObject = redrawElement(this.redraw, this.element.id + '_ChartBorder', rect, this.renderer)\n || this.renderer.drawRectangle(rect);\n this.htmlObject.setAttribute('aria-hidden', 'true');\n appendChildElement(this.enableCanvas, this.svgObject, this.htmlObject, this.redraw);\n // to draw back ground image for chart\n if (backGroundImage) {\n var image = new ImageOption(this.availableSize.height - width, this.availableSize.width - width, backGroundImage, 0, 0, this.element.id + '_ChartBackground', 'visible', 'none');\n this.htmlObject = redrawElement(this.redraw, this.element.id + '_ChartBackground', image, this.renderer)\n || this.renderer.drawImage(image);\n appendChildElement(this.enableCanvas, this.svgObject, this.htmlObject, this.redraw);\n }\n };\n /**\n * Renders the border for the area.\n *\n * @returns {void}\n * @private\n */\n Chart.prototype.renderAreaBorder = function () {\n if (this.chartAreaType === 'PolarRadar') {\n return null;\n }\n else {\n var element = getElement(this.element.id + '_ChartAreaBorder');\n var previousRect = element ?\n new Rect(+element.getAttribute('x'), +element.getAttribute('y'), +element.getAttribute('width'), +element.getAttribute('height')) : null;\n var rect = new RectOption(this.element.id + '_ChartAreaBorder', this.chartArea.background, { width: this.chartArea.border.width, color: this.chartArea.border.color || this.themeStyle.areaBorder }, this.chartArea.opacity, this.chartAxisLayoutPanel.seriesClipRect, 0, 0, '', this.chartArea.border.dashArray);\n if (rect.height < 0 || rect.width < 0) {\n return null;\n }\n this.htmlObject = this.renderer.drawRectangle(rect);\n this.htmlObject.setAttribute('aria-hidden', 'true');\n appendChildElement(this.enableCanvas, this.svgObject, this.htmlObject, this.redraw, true, 'x', 'y', null, null, true, true, previousRect);\n this.htmlObject = null;\n }\n // to draw back ground image for chart area\n var backGroundImage = this.chartArea.backgroundImage;\n if (backGroundImage) {\n var width = this.chartArea.border.width;\n var image = new ImageOption(this.initialClipRect.height - width, this.initialClipRect.width - width, backGroundImage, this.initialClipRect.x, this.initialClipRect.y, this.element.id + '_ChartAreaBackground', 'visible', 'none');\n this.htmlObject = this.renderer.drawImage(image);\n appendChildElement(this.enableCanvas, this.svgObject, this.htmlObject, this.redraw, true, 'x', 'y', null, null, true, true);\n }\n };\n /**\n * To add series for the chart\n *\n * @param {SeriesModel[]} seriesCollection - Defines the series collection to be added in chart.\n * @returns {void}.\n */\n Chart.prototype.addSeries = function (seriesCollection) {\n var scrollTop = window.pageYOffset || document.documentElement.scrollTop;\n for (var _i = 0, seriesCollection_1 = seriesCollection; _i < seriesCollection_1.length; _i++) {\n var series = seriesCollection_1[_i];\n series = new Series(this, 'series', series);\n this.series.push(series);\n }\n this.refresh();\n window.scrollTo(0, scrollTop);\n };\n /**\n * To Remove series for the chart\n *\n * @param {number} index - Defines the series index to be remove in chart series\n * @returns {void}\n */\n Chart.prototype.removeSeries = function (index) {\n this.redraw = false; //fix for remove svg not working when use animatemethod.\n var scrollTop = window.pageYOffset || document.documentElement.scrollTop;\n if (this.visibleSeries[index]) {\n this.visibleSeries[index].xAxis.orientation = null;\n this.visibleSeries[index].yAxis.orientation = null;\n }\n for (var i = 0; i < this.axes.length; i++) {\n if (this.axes[i].orientation === null) {\n this.axes.splice(i, 1);\n }\n }\n this.series.splice(index, 1);\n this.refresh();\n window.scrollTo(0, scrollTop);\n };\n /**\n * Clear all series from the chart.\n *\n * @returns {void}.\n */\n Chart.prototype.clearSeries = function () {\n this.series = [];\n this.refresh();\n };\n /**\n * To add secondary axis for the chart\n *\n * @param {AxisModel[]} axisCollection - Defines the axis collection to be added in chart.\n * @returns {void}.\n */\n Chart.prototype.addAxes = function (axisCollection) {\n for (var _i = 0, axisCollection_1 = axisCollection; _i < axisCollection_1.length; _i++) {\n var axis = axisCollection_1[_i];\n axis = new Axis(this, 'axes', axis);\n if (this.isBlazor) {\n axis.interval = isNaN(axis.interval) ? null : axis.interval;\n axis.desiredIntervals = isNaN(axis.desiredIntervals) ? null : axis.desiredIntervals;\n }\n this.axes.push(axis);\n }\n this.refresh();\n };\n /**\n * To remove secondary axis for the chart.\n *\n * @param {number} index - Defines the axis collection to be removed in chart.\n * @returns {void}\n * @private\n */\n Chart.prototype.removeAxis = function (index) {\n this.redraw = false;\n this.axes.splice(index, 1);\n this.refresh();\n };\n /**\n * To destroy the widget\n *\n * @function destroy\n * @returns {void}.\n * @member of Chart\n */\n Chart.prototype.destroy = function () {\n if (this.scrollBarModule) {\n this.scrollBarModule.destroy();\n }\n if (this.markerRender) {\n this.markerRender.removeEventListener();\n this.markerRender = null;\n }\n this.horizontalAxes = [];\n this.verticalAxes = [];\n this.visibleSeries = [];\n this.axisCollections = [];\n this.rotatedDataLabelCollections = [];\n this.seriesElements = null;\n this.chartAxisLayoutPanel = null;\n this.dataLabelCollections = null;\n this.dataLabelElements = null;\n this.yAxisElements = null;\n var element = document.getElementById(this.element.id + 'Keyboard_chart_focus');\n if (element) {\n element.remove();\n }\n var highlightElement = document.getElementById(this.element.id + '_ej2_chart_highlight');\n if (highlightElement) {\n highlightElement.remove();\n }\n removeElement('chartmeasuretext');\n /**\n * To fix react timeout destroy issue.\n */\n if (this.element) {\n this.unWireEvents();\n if (this.isReact) {\n this.clearTemplate();\n }\n _super.prototype.destroy.call(this);\n if (!this.enableCanvas) {\n this.removeSvg();\n this.svgObject = null;\n }\n }\n };\n /**\n * Get component name\n */\n Chart.prototype.getModuleName = function () {\n return 'chart';\n };\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n * @private\n * @returns {string} - The persisted data.\n */\n Chart.prototype.getPersistData = function () {\n var keyEntity = ['loaded', 'animationComplete', 'primaryXAxis', 'primaryYAxis'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Method to create SVG element.\n *\n * @private\n */\n Chart.prototype.createChartSvg = function () {\n this.removeSvg();\n createSvg(this);\n };\n /**\n * Method to bind events for chart\n */\n Chart.prototype.unWireEvents = function () {\n var startEvent = Browser.touchStartEvent;\n var moveEvent = Browser.touchMoveEvent;\n var stopEvent = Browser.touchEndEvent;\n var cancelEvent = Browser.isPointer ? 'pointerleave' : 'mouseleave';\n /** UnBind the Event handler */\n EventHandler.remove(this.element, startEvent, this.chartOnMouseDown);\n EventHandler.remove(this.element, moveEvent, this.mouseMove);\n EventHandler.remove(this.element, stopEvent, this.mouseEnd);\n EventHandler.remove(this.element, 'click', this.chartOnMouseClick);\n EventHandler.remove(this.element, 'dblclick', this.chartOnDoubleClick);\n EventHandler.remove(this.element, 'contextmenu', this.chartRightClick);\n EventHandler.remove(this.element, cancelEvent, this.mouseLeave);\n EventHandler.remove(this.element, 'keydown', this.chartKeyDown);\n EventHandler.remove(document.body, 'keydown', this.documentKeyHandler);\n EventHandler.remove(this.element, 'keyup', this.chartKeyUp);\n window.removeEventListener((Browser.isTouch && ('orientation' in window && 'onorientationchange' in window)) ? 'orientationchange' : 'resize', this.resizeBound);\n /**\n * To fix memory issue\n */\n if (this.touchObject) {\n this.touchObject.destroy();\n this.touchObject = null;\n }\n };\n Chart.prototype.wireEvents = function () {\n /**\n * To fix react timeout destroy issue.\n */\n if (!this.element) {\n return;\n }\n /** Find the Events type */\n var cancelEvent = Browser.isPointer ? 'pointerleave' : 'mouseleave';\n /** Bind the Event handler */\n EventHandler.add(this.element, Browser.touchStartEvent, this.chartOnMouseDown, this);\n EventHandler.add(this.element, Browser.touchMoveEvent, this.mouseMove, this);\n EventHandler.add(this.element, Browser.touchEndEvent, this.mouseEnd, this);\n EventHandler.add(this.element, 'click', this.chartOnMouseClick, this);\n EventHandler.add(this.element, 'dblclick', this.chartOnDoubleClick, this);\n EventHandler.add(this.element, 'contextmenu', this.chartRightClick, this);\n EventHandler.add(this.element, cancelEvent, this.mouseLeave, this);\n EventHandler.add(this.element, 'keydown', this.chartKeyDown, this);\n EventHandler.add(document.body, 'keydown', this.documentKeyHandler, this);\n EventHandler.add(this.element, 'keyup', this.chartKeyUp, this);\n this.resizeBound = this.chartResize.bind(this);\n window.addEventListener((Browser.isTouch && ('orientation' in window && 'onorientationchange' in window)) ? 'orientationchange' : 'resize', this.resizeBound);\n this.longPressBound = this.longPress.bind(this);\n this.touchObject = new Touch(this.element, { tapHold: this.longPressBound, tapHoldThreshold: 500 });\n /** Apply the style for chart */\n this.setStyle(this.element);\n };\n Chart.prototype.chartRightClick = function (event) {\n if (this.crosshair.enable && this.crosshairModule &&\n (event.buttons === 2 || event.which === 0 || event.pointerType === 'touch')) {\n event.preventDefault();\n event.stopPropagation();\n return false;\n }\n return true;\n };\n Chart.prototype.setStyle = function (element) {\n var zooming = this.zoomSettings;\n var disableScroll = zooming.enableSelectionZooming || zooming.enablePinchZooming ||\n this.selectionMode !== 'None' || this.highlightMode !== 'None';\n element.style.touchAction = disableScroll ? 'none' : 'element';\n element.style.msTouchAction = disableScroll ? 'none' : 'element';\n element.style.msContentZooming = 'none';\n element.style.msUserSelect = 'none';\n element.style.webkitUserSelect = 'none';\n element.style.position = 'relative';\n element.style.display = 'block';\n // To fix angular and react tooltip div scrollbar issue\n element.style.overflow = 'hidden';\n element.style.height = (element.style.height || (this.height && this.height.indexOf('%') === -1)) ? element.style.height : 'inherit';\n };\n /**\n * Determines the orientation.\n *\n * @private\n * @returns {boolean} - True if the orientation is found, otherwise false.\n */\n Chart.prototype.isOrientation = function () {\n return ('orientation' in window && 'onorientationchange' in window);\n };\n /**\n * Handles the long press on the chart.\n *\n * @param {TapEventArgs} [e] - The event arguments for the long press.\n * @returns {boolean} - Returns false.\n * @private\n */\n Chart.prototype.longPress = function (e) {\n this.mouseX = (e && e.originalEvent.changedTouches) ? (e.originalEvent.changedTouches[0].clientX) : 0;\n this.mouseY = (e && e.originalEvent.changedTouches) ? (e.originalEvent.changedTouches[0].clientY) : 0;\n this.startMove = true;\n this.allowPan = this.stockChart ? false : this.allowPan;\n this.setMouseXY(this.mouseX, this.mouseY);\n this.notify('tapHold', e);\n return false;\n };\n /**\n * Sets the mouse x and y coordinates for the aligned chart element SVG position.\n *\n * @param {number} pageX - The x-coordinate of the mouse pointer.\n * @param {number} pageY - The y-coordinate of the mouse pointer.\n * @returns {void}\n * @private\n */\n Chart.prototype.setMouseXY = function (pageX, pageY) {\n if (getElement(this.svgId)) {\n var svgRect = getElement(this.svgId).getBoundingClientRect();\n var rect = this.element.getBoundingClientRect();\n this.scaleX = svgRect.width / this.availableSize.width;\n this.scaleY = svgRect.height / this.availableSize.height;\n this.mouseY = ((pageY - rect.top) - Math.max(svgRect.top - rect.top, 0)) / this.scaleY;\n this.mouseX = ((pageX - rect.left) - Math.max(svgRect.left - rect.left, 0)) / this.scaleX;\n if (this.stockChart) {\n this.mouseX += this.stockChart.legendSettings.position === 'Left' ? this.stockChart.stockLegendModule.legendBounds.width : 0;\n this.mouseY += this.stockChart.legendSettings.position === 'Top' ? this.stockChart.stockLegendModule.legendBounds.height : 0;\n }\n }\n };\n /**\n * Exports the chart in the specified format.\n *\n * @param {ExportType} type - The file format for the export. Available options are PNG, JPEG, PDF, and SVG.\n * @param {string} fileName - The name of the file to be saved.\n * @returns {void}\n */\n Chart.prototype.export = function (type, fileName) {\n if (this.exportModule) {\n this.exportModule.export(type, fileName);\n if (this.afterExport) {\n this.exportModule.getDataUrl(this);\n }\n }\n };\n /**\n * Handles the chart resize.\n *\n * @returns {boolean} false\n * @private\n */\n Chart.prototype.chartResize = function () {\n var _this = this;\n this.animateSeries = false;\n var arg = {\n chart: this,\n name: resized,\n currentSize: new Size(0, 0),\n previousSize: new Size(this.availableSize.width, this.availableSize.height)\n };\n var beforeResizeArgs = { name: 'beforeResize', cancelResizedEvent: false };\n if (this.resizeTo) {\n clearTimeout(this.resizeTo);\n }\n this.trigger(beforeResize, beforeResizeArgs);\n if (!beforeResizeArgs.cancelResizedEvent) {\n this.resizeTo = +setTimeout(function () {\n if (_this.isDestroyed || _this.stockChart) {\n clearTimeout(_this.resizeTo);\n return;\n }\n _this.createChartSvg();\n arg.currentSize = _this.availableSize;\n _this.trigger(resized, arg);\n _this.refreshAxis();\n _this.refreshBound();\n _this.trigger('loaded', { chart: _this.isBlazor ? {} : _this });\n }, 500);\n }\n return false;\n };\n /**\n * Handles the mouse movement event on the chart.\n *\n * @param {PointerEvent} e - The mouse event.\n * @returns {boolean} - Returns false.\n * @private\n */\n Chart.prototype.mouseMove = function (e) {\n var pageX;\n var pageY;\n var touchArg;\n if (this.allowPan) {\n return false;\n }\n if (e.type === 'touchmove') {\n this.isTouch = true;\n touchArg = e;\n pageX = touchArg.changedTouches[0].clientX;\n pageY = touchArg.changedTouches[0].clientY;\n }\n else {\n this.isTouch = e.pointerType === 'touch' || e.pointerType === '2' || this.isTouch;\n pageX = e.clientX;\n pageY = e.clientY;\n }\n this.previousPageX = pageX;\n this.previousPageY = pageY;\n if (getElement(this.svgId)) {\n this.setMouseXY(pageX, pageY);\n this.chartOnMouseMove(e);\n }\n return false;\n };\n /**\n * Handles the mouse leave event on the chart.\n *\n * @param {PointerEvent} e - The mouse event.\n * @returns {boolean} - Returns false.\n * @private\n */\n Chart.prototype.mouseLeave = function (e) {\n var pageX;\n var pageY;\n var touchArg;\n if (this.stockChart && this.stockChart.onPanning) {\n return false;\n }\n if (e.type === 'touchleave') {\n this.isTouch = true;\n touchArg = e;\n pageX = touchArg.changedTouches[0].clientX;\n pageY = touchArg.changedTouches[0].clientY;\n }\n else {\n this.isTouch = e.pointerType === 'touch' || e.pointerType === '2';\n pageX = e.clientX;\n pageY = e.clientY;\n }\n this.previousPageX = null;\n this.previousPageY = null;\n this.setMouseXY(pageX, pageY);\n this.chartOnMouseLeave(e);\n return false;\n };\n /**\n * Handles the mouse leave event on the chart.\n *\n * @param {PointerEvent | TouchEvent} e - The mouse or touch event.\n * @returns {boolean} - Returns false.\n * @private\n */\n Chart.prototype.chartOnMouseLeave = function (e) {\n var element = e.target;\n var cancelEvent = Browser.isPointer ? 'pointerleave' : 'mouseleave';\n this.trigger(chartMouseLeave, { target: element.id, x: this.mouseX, y: this.mouseY });\n removeElement(this.element.id + '_EJ2_AxisLabel_Tooltip');\n this.isChartDrag = this.isPointMouseDown = false;\n this.notify(cancelEvent, e);\n return false;\n };\n /**\n * Handles the double click event on the chart.\n *\n * @param {PointerEvent | TouchEvent} e - The mouse or touch event.\n * @returns {boolean} - Returns false.\n * @private\n */\n Chart.prototype.chartOnDoubleClick = function (e) {\n var element = e.target;\n this.trigger(chartDoubleClick, { target: element.id, x: this.mouseX, y: this.mouseY });\n return false;\n };\n /**\n * Handles the key down event on the chart.\n *\n * @param {KeyboardEvent} e - The keyboard event.\n * @returns {boolean} - Returns false.\n * @private\n */\n Chart.prototype.chartKeyDown = function (e) {\n var actionKey = '';\n if ((this.isZoomed && e.code === 'Tab') || e.code === 'Space') {\n e.preventDefault();\n }\n if (this.tooltip.enable && ((e.code === 'Tab' && this.previousTargetId.indexOf('Series') > -1) || e.code === 'Escape')) {\n actionKey = 'ESC';\n }\n if (this.highlightMode !== 'None' && e.code === 'Tab' && this.previousTargetId.indexOf('_chart_legend_') > -1) {\n if (this.highlightModule) {\n this.highlightModule.removeLegendHighlightStyles();\n }\n }\n if (e.ctrlKey && (e.key === '+' || e.code === 'Equal' || e.key === '-' || e.code === 'Minus')) {\n e.preventDefault();\n this.isZoomed = this.zoomModule && (this.zoomSettings.enableDeferredZooming || this.zoomSettings.enableSelectionZooming ||\n this.zoomSettings.enablePinchZooming || this.zoomSettings.enableMouseWheelZooming);\n //this.tooltipModule.fadeOut(this.element);\n actionKey = this.isZoomed ? e.code : '';\n }\n else if (e['keyCode'] === 82 && this.isZoomed) { // KeyCode 82 (R) for reseting\n e.preventDefault();\n this.isZoomed = false;\n actionKey = 'R';\n }\n else if (e.code.indexOf('Arrow') > -1) {\n e.preventDefault();\n actionKey = this.isZoomed ? e.code : '';\n }\n if (e.ctrlKey && (e.key === 'p')) {\n e.preventDefault();\n actionKey = 'CtrlP';\n }\n if (actionKey !== '') {\n this.chartKeyboardNavigations(e, e.target.id, actionKey);\n }\n return false;\n };\n /**\n * Handles the key up event on the chart.\n *\n * @param {KeyboardEvent} e - The keyboard event.\n * @returns {boolean} - Returns false.\n * @private\n */\n Chart.prototype.chartKeyUp = function (e) {\n var actionKey = '';\n var targetId = e.target['id'];\n var groupElement;\n var markerGroup;\n var targetElement = e.target;\n var titleElement = getElement(this.element.id + '_ChartTitle');\n var seriesElement = getElement(this.element.id + 'SeriesCollection');\n var legendElement = getElement(this.element.id + '_chart_legend_translate_g');\n var pagingElement = getElement(this.element.id + '_chart_legend_pageup');\n if (titleElement) {\n titleElement.setAttribute('class', 'e-chart-focused');\n }\n if (seriesElement && seriesElement.firstElementChild && seriesElement.firstElementChild.children[1]) {\n var firstChild = seriesElement.firstElementChild.children[1];\n var className = firstChild.getAttribute('class');\n if (className && className.indexOf('e-chart-focused') === -1) {\n className = className + ' e-chart-focused';\n }\n else if (!className) {\n className = 'e-chart-focused';\n }\n firstChild.setAttribute('class', className);\n }\n if (legendElement) {\n var firstChild = legendElement.firstElementChild;\n var className = firstChild.getAttribute('class');\n if (className && className.indexOf('e-chart-focused') === -1) {\n className = className + ' e-chart-focused';\n }\n else if (!className) {\n className = 'e-chart-focused';\n }\n firstChild.setAttribute('class', className);\n }\n if (pagingElement) {\n pagingElement.setAttribute('class', 'e-chart-focused');\n }\n if (e.code === 'Tab') {\n if (this.previousTargetId !== '') {\n if ((this.previousTargetId.indexOf('_Series_') > -1 && targetId.indexOf('_Series_') === -1)) {\n groupElement = getElement(this.element.id + 'SeriesCollection');\n var previousElement = this.previousTargetId.indexOf('_Symbol') > -1 ?\n getElement(this.element.id + 'SymbolGroup' + this.currentSeriesIndex).children[this.currentPointIndex + 1] :\n (this.previousTargetId.indexOf('_Point_') > -1 ?\n groupElement.children[this.currentSeriesIndex].children[this.currentPointIndex + 1] :\n groupElement.children[this.currentSeriesIndex]);\n this.setTabIndex(previousElement, groupElement.firstElementChild);\n this.currentPointIndex = 0;\n this.currentSeriesIndex = 0;\n }\n else if (this.previousTargetId.indexOf('_chart_legend_page') > -1 && targetId.indexOf('_chart_legend_page') === -1\n && targetId.indexOf('_chart_legend_g_') === -1) {\n this.setTabIndex(e.target, getElement(this.element.id + '_chart_legend_pageup'));\n }\n else if (this.previousTargetId.indexOf('_chart_legend_g_') > -1 && targetId.indexOf('_chart_legend_g_') === -1) {\n groupElement = getElement(this.element.id + '_chart_legend_translate_g');\n this.setTabIndex(groupElement.children[this.currentLegendIndex], groupElement.firstElementChild);\n }\n }\n this.previousTargetId = targetId;\n if (targetId.indexOf('SeriesGroup') > -1) {\n this.currentSeriesIndex = +targetId.split('SeriesGroup')[1];\n targetElement.removeAttribute('tabindex');\n targetElement.blur();\n if (targetElement.children[1].id.indexOf('_Point_') === -1) {\n markerGroup = getElement(this.element.id + 'SymbolGroup' + targetId.split('SeriesGroup')[1]);\n }\n targetId = this.focusChild((markerGroup != null ? markerGroup.children[1] : targetElement.children[1]));\n }\n actionKey = this.highlightMode !== 'None' || this.tooltip.enable ? 'Tab' : '';\n }\n else if (e.code.indexOf('Arrow') > -1) {\n e.preventDefault();\n this.previousTargetId = targetId;\n if (targetId.indexOf('_chart_legend_page') > -1) {\n if (e.code === 'ArrowLeft') {\n getElement(this.element.id + '_chart_legend_pagedown').removeAttribute('tabindex');\n this.focusChild(getElement(this.element.id + '_chart_legend_pageup'));\n }\n else if (e.code === 'ArrowRight') {\n getElement(this.element.id + '_chart_legend_pageup').removeAttribute('tabindex');\n this.focusChild(getElement(this.element.id + '_chart_legend_pagedown'));\n }\n }\n else if ((targetId.indexOf('_chart_legend_') > -1)) {\n var legendElement_1 = targetElement.parentElement.children;\n legendElement_1[this.currentLegendIndex].removeAttribute('tabindex');\n this.currentLegendIndex += (e.code === 'ArrowUp' || e.code === 'ArrowRight') ? +1 : -1;\n this.currentLegendIndex = this.getActualIndex(this.currentLegendIndex, legendElement_1.length);\n var currentLegend = legendElement_1[this.currentLegendIndex];\n this.focusChild(currentLegend);\n targetId = currentLegend.children[1].id;\n actionKey = this.highlightMode !== 'None' ? 'ArrowMove' : '';\n }\n else if (targetId.indexOf('_Series_') > -1) {\n groupElement = targetElement.parentElement.parentElement;\n var currentPoint = e.target;\n targetElement.removeAttribute('tabindex');\n targetElement.blur();\n if (e.code === 'ArrowRight' || e.code === 'ArrowLeft') {\n var seriesIndexes = [];\n for (var i = 0; i < groupElement.children.length; i++) {\n if (groupElement.children[i].id.indexOf('SeriesGroup') > -1) {\n seriesIndexes.push(+groupElement.children[i].id.split('SeriesGroup')[1]);\n }\n }\n this.currentSeriesIndex = seriesIndexes.indexOf(this.currentSeriesIndex) + (e.code === 'ArrowRight' ? 1 : -1);\n this.currentSeriesIndex = seriesIndexes[this.getActualIndex(this.currentSeriesIndex, seriesIndexes.length)];\n }\n else {\n this.currentPointIndex += e.code === 'ArrowUp' ? 1 : -1;\n }\n if (targetId.indexOf('_Symbol') > -1) {\n this.currentPointIndex = this.getActualIndex(this.currentPointIndex, getElement(this.element.id + 'SymbolGroup' + this.currentSeriesIndex).childElementCount - 1);\n currentPoint = getElement(this.element.id + '_Series_' + this.currentSeriesIndex + '_Point_' +\n this.currentPointIndex + '_Symbol');\n }\n else if (targetId.indexOf('_Point_') > -1) {\n this.currentPointIndex = this.getActualIndex(this.currentPointIndex, getElement(this.element.id + 'SeriesGroup' + this.currentSeriesIndex).childElementCount - 1);\n currentPoint = getElement(this.element.id + '_Series_' + this.currentSeriesIndex + '_Point_' +\n this.currentPointIndex);\n }\n targetId = this.focusChild(currentPoint);\n actionKey = this.tooltip.enable || this.highlightMode !== 'None' ? 'ArrowMove' : '';\n }\n }\n else if ((e.code === 'Enter' || e.code === 'Space') && ((targetId.indexOf('_chart_legend_') > -1) ||\n (targetId.indexOf('_Point_') > -1))) {\n targetId = (targetId.indexOf('_chart_legend_page') > -1) ? targetId : ((targetId.indexOf('_chart_legend_') > -1) ?\n targetElement.children[1].id : targetId);\n actionKey = 'Enter';\n }\n if (actionKey !== '') {\n this.chartKeyboardNavigations(e, targetId, actionKey);\n }\n return false;\n };\n /**\n * Sets the tab index for the specified elements.\n *\n * @param {HTMLElement} previousElement - The previous element whose tab index needs to be removed.\n * @param {HTMLElement} currentElement - The current element to which the tab index needs to be set.\n * @returns {void}\n * @private\n */\n Chart.prototype.setTabIndex = function (previousElement, currentElement) {\n if (previousElement) {\n previousElement.removeAttribute('tabindex');\n }\n if (currentElement) {\n currentElement.setAttribute('tabindex', '0');\n }\n };\n Chart.prototype.getActualIndex = function (index, totalLength) {\n return index > totalLength - 1 ? 0 : (index < 0 ? totalLength - 1 : index);\n };\n Chart.prototype.focusChild = function (element) {\n element.setAttribute('tabindex', '0');\n var className = element.getAttribute('class');\n element.setAttribute('tabindex', '0');\n if (className && className.indexOf('e-chart-focused') === -1) {\n className = 'e-chart-focused ' + className;\n }\n else if (!className) {\n className = 'e-chart-focused';\n }\n element.setAttribute('class', className);\n element.focus();\n return element.id;\n };\n /**\n * Handles the key event on the document.\n *\n * @param {KeyboardEvent} e - The keyboard event.\n * @returns {void}\n * @private\n */\n Chart.prototype.documentKeyHandler = function (e) {\n // 74 - J\n if (e.altKey && e.keyCode === 74 && !isNullOrUndefined(this.element)) {\n this.element.focus();\n }\n };\n /**\n * Handles keyboard navigation on the chart.\n *\n * @param {KeyboardEvent} e - The keyboard event.\n * @param {string} targetId - The ID of the target element.\n * @param {string} actionKey - The key that determines the action to be taken.\n * @returns {void}\n * @private\n */\n Chart.prototype.chartKeyboardNavigations = function (e, targetId, actionKey) {\n this.isLegendClicked = false;\n switch (actionKey) {\n case 'Tab':\n case 'ArrowMove':\n if (this.highlightModule) {\n this.highlightModule.removeLegendHighlightStyles();\n }\n if (targetId.indexOf('_Point_') > -1) {\n var seriesIndex = +(targetId.split('_Series_')[1].split('_Point_')[0]);\n var pointIndex = +(targetId.split('_Series_')[1].replace('_Symbol', '').split('_Point_')[1]);\n var pointRegion = this.visibleSeries[seriesIndex].points[pointIndex].\n symbolLocations[0];\n this.mouseX = pointRegion.x + this.initialClipRect.x;\n this.mouseY = pointRegion.y + this.initialClipRect.y;\n if (this.highlightModule) {\n this.highlightModule.highlightChart(document.getElementById(targetId), 'mousemove');\n this.highlightModule.completeSelection(document.getElementById(targetId), 'mousemove');\n }\n if (this.tooltipModule) {\n this.tooltipModule.tooltip();\n }\n }\n if (this.highlightModule && this.highlightMode !== 'None') {\n targetId = targetId.indexOf('_chart_legend_g_') > -1 ? document.getElementById(targetId).firstChild['id'] : targetId;\n var legendID = this.element.id + '_chart_legend';\n var legendItemsId = [legendID + '_text_', legendID + '_shape_marker_',\n legendID + '_shape_'];\n for (var i = 0; i < legendItemsId.length; i++) {\n var id = legendItemsId[i];\n if (targetId.indexOf(id) > -1) {\n document.getElementById(targetId).setAttribute('class', '');\n this.highlightModule.legendSelection(this, parseInt(targetId.split(id)[1], 10), document.getElementById(targetId), 'mousemove');\n break;\n }\n }\n }\n break;\n case 'Enter':\n case 'Space':\n if (targetId.indexOf('_chart_legend_') > -1) {\n this.isLegendClicked = true;\n this.legendModule.click(e);\n this.focusChild(document.getElementById(targetId).parentElement);\n }\n else {\n this.selectionModule.calculateSelectedElements(document.getElementById(targetId), 'click');\n }\n break;\n case 'CtrlP':\n this.print();\n break;\n case 'ESC':\n this.tooltipModule.removeTooltip(1);\n break;\n case 'Equal':\n case 'Minus':\n this.zoomModule.isZoomed = this.zoomModule.performedUI = true;\n this.zoomModule.isPanning = this.isChartDrag = false;\n if (actionKey === 'Equal') {\n this.zoomModule.toolkit.zoomInOutCalculation(1, this, this.axisCollections, this.zoomSettings.mode);\n }\n else {\n this.zoomModule.toolkit.zoomInOutCalculation(-1, this, this.axisCollections, this.zoomSettings.mode);\n }\n this.zoomModule.performZoomRedraw(this);\n this.element.focus();\n break;\n case 'ArrowUp':\n case 'ArrowDown':\n case 'ArrowLeft':\n case 'ArrowRight': {\n var yArrowPadding = actionKey === 'ArrowUp' ? 10 : (actionKey === 'ArrowDown' ? -10 : 0);\n var xArrowPadding = actionKey === 'ArrowLeft' ? -10 : (actionKey === 'ArrowRight' ? 10 : 0);\n this.zoomModule.isPanning = this.isChartDrag = true;\n this.zoomModule.doPan(this, this.axisCollections, xArrowPadding, yArrowPadding);\n this.zoomModule.performZoomRedraw(this);\n this.element.focus();\n break;\n }\n case 'R':\n this.zoomModule.toolkit.reset(e);\n break;\n }\n };\n /**\n * Handles the mouse click on the chart.\n *\n * @param {PointerEvent | TouchEvent} e - The mouse or touch event.\n * @returns {boolean} - Return false.\n * @private\n */\n Chart.prototype.chartOnMouseClick = function (e) {\n var _this = this;\n var element = e.target;\n var chart = this;\n this.clickCount++;\n var XYvalues = this.FindXYPointValue(chart.mouseX, chart.mouseY);\n var timeInterval = 400;\n if (this.clickCount === 1) {\n this.singleClickTimer = +setTimeout(function () {\n chart.clickCount = 0;\n chart.trigger(chartMouseClick, { target: element.id, x: chart.mouseX, y: chart.mouseY, axisData: XYvalues });\n }, timeInterval);\n }\n else if (this.clickCount === 2 && !this.pointDoubleClick) {\n clearTimeout(this.singleClickTimer);\n this.clickCount = 0;\n }\n var isAngular = 'isAngular';\n if (this[isAngular]) {\n var observers = 'observers';\n timeInterval = this.pointDoubleClick[observers].length > 0 ? 400 : 0;\n }\n else {\n timeInterval = this.pointDoubleClick ? 400 : 0;\n }\n if (this.clickCount === 1 && this.pointClick) {\n this.singleClickTimer = +setTimeout(function () {\n _this.clickCount = 0;\n _this.triggerPointEvent(pointClick, e);\n }, timeInterval);\n }\n else if (this.clickCount === 2 && this.pointDoubleClick) {\n clearTimeout(this.singleClickTimer);\n this.clickCount = 0;\n this.triggerPointEvent(pointDoubleClick, e);\n }\n if (this.axisLabelClick) {\n this.triggerAxisLabelClickEvent(axisLabelClick, e);\n }\n this.notify('click', e);\n return false;\n };\n Chart.prototype.FindXYPointValue = function (mouseX, mouseY) {\n if (withInBounds(mouseX, mouseY, this.chartAxisLayoutPanel.seriesClipRect)\n && this.series.some(function (series) { return series.visible; })) {\n var axis = void 0;\n var Xvalue = void 0;\n var Yvalue = void 0;\n var axisData = {};\n for (var k = 0, length_1 = this.axisCollections.length; k < length_1; k++) {\n axis = this.axisCollections[k];\n if (axis.orientation === 'Horizontal') {\n Xvalue = getValueXByPoint(Math.abs(mouseX - axis.rect.x), axis.rect.width, axis);\n axisData[this.axisCollections[k].name] = Xvalue;\n }\n else {\n Yvalue = getValueYByPoint(Math.abs(mouseY - axis.rect.y), axis.rect.height, axis);\n axisData[this.axisCollections[k].name] = Yvalue;\n }\n }\n return axisData;\n }\n return null;\n };\n Chart.prototype.triggerPointEvent = function (event, e) {\n var evt = e;\n var data = new ChartData(this);\n var pointData = data.getData();\n if (pointData.series && pointData.point) {\n this.trigger(event, {\n series: this.isBlazor ? {} : pointData.series,\n point: pointData.point,\n seriesIndex: pointData.series.index, pointIndex: pointData.point.index,\n x: this.mouseX, y: this.mouseY, pageX: evt.pageX, pageY: evt.pageY\n });\n }\n };\n Chart.prototype.triggerAxisLabelClickEvent = function (event, e) {\n var targetElement = e.target;\n var clickEvt = e;\n if (targetElement.id.indexOf('_AxisLabel_') !== -1) {\n var index = targetElement.id.split('_AxisLabel_');\n var axisIndex = +index[0].slice(-1);\n var labelIndex = +index[1];\n var currentAxis = this.axisCollections[axisIndex];\n if (currentAxis.visible && (axisIndex === 0 || axisIndex === 1)) {\n this.trigger(event, {\n chart: this,\n axis: currentAxis,\n text: currentAxis.visibleLabels[labelIndex].text,\n labelID: targetElement.id,\n index: labelIndex,\n location: new ChartLocation(clickEvt.pageX, clickEvt.pageY),\n value: currentAxis.visibleLabels[labelIndex].value\n });\n }\n }\n };\n /**\n * Handles the mouse move on the chart.\n *\n * @param {PointerEvent | TouchEvent} e - The mouse or touch event.\n * @returns {boolean} - False.\n * @private\n */\n Chart.prototype.chartOnMouseMove = function (e) {\n var element = e.target;\n var XYvalues = this.FindXYPointValue(this.mouseX, this.mouseY);\n this.trigger(chartMouseMove, { target: element.id, x: this.mouseX, y: this.mouseY, axisData: XYvalues });\n if (this.pointMove) {\n this.triggerPointEvent(pointMove, e);\n }\n // Tooltip for chart series.\n if (!this.isTouch) {\n this.titleTooltip(e, this.mouseX, this.mouseY);\n this.axisTooltip(e, this.mouseX, this.mouseY);\n }\n if (this.dataEditingModule) {\n this.dataEditingModule.pointMouseMove(e);\n }\n if (this.crosshair.enable && this.startMove) {\n e.preventDefault();\n }\n this.notify(Browser.touchMoveEvent, e);\n this.isTouch = false;\n return false;\n };\n Chart.prototype.titleTooltip = function (event, x, y, isTouch) {\n var targetId = event.target.id;\n var id = (targetId === (this.element.id + '_ChartTitle') || targetId === (this.element.id + '_ChartSubTitle') ||\n targetId.indexOf('_AxisTitle') > -1 || targetId.indexOf('_legend_title') > -1);\n var index = 0;\n if (targetId.indexOf('_AxisTitle') > -1) {\n index = parseInt(((targetId.replace(this.element.id, '')).replace('AxisLabel_', '')).split('_')[2], 10);\n }\n if (id && (event.target.textContent.indexOf('...') > -1)) {\n var title = (targetId === (this.element.id + '_ChartTitle')) ? this.title :\n targetId.indexOf('_AxisTitle') > -1 ? this.axisCollections[index].title :\n targetId.indexOf('_ChartSubTitle') > -1 ? this.subTitle : this.legendSettings.title;\n showTooltip(title, x, y, this.element.offsetWidth, this.element.id + '_EJ2_Title_Tooltip', getElement(this.element.id + '_Secondary_Element'), isTouch);\n }\n else {\n removeElement(this.element.id + '_EJ2_Title_Tooltip');\n }\n };\n Chart.prototype.axisTooltip = function (event, x, y, isTouch) {\n var targetId = event.target.id;\n if (((targetId.indexOf('AxisLabel') > -1) || targetId.indexOf('Axis_MultiLevelLabel') > -1) &&\n (event.target.textContent.indexOf('...') > -1)) {\n var isTitleOrLegendEnabled = (this.legendSettings.visible || this.primaryXAxis.title === '');\n showTooltip(this.findAxisLabel(targetId), x, y, this.element.offsetWidth, this.element.id + '_EJ2_AxisLabel_Tooltip', getElement(this.element.id + '_Secondary_Element'), isTouch, isTitleOrLegendEnabled);\n }\n else {\n removeElement(this.element.id + '_EJ2_AxisLabel_Tooltip');\n }\n };\n Chart.prototype.findAxisLabel = function (text) {\n var texts;\n if (text.indexOf('AxisLabel') > -1) {\n texts = ((text.replace(this.element.id, '')).replace('AxisLabel_', '')).split('_');\n return this.axisCollections[parseInt(texts[0], 10)].visibleLabels[parseInt(texts[1], 10)].originalText;\n }\n else {\n texts = ((text.replace(this.element.id, '')).replace('Axis_MultiLevelLabel_Level_', '').replace('Text_', '')).split('_');\n return (this.axisCollections[parseInt(texts[0], 10)].multiLevelLabels[parseInt(texts[1], 10)]\n .categories[parseInt(texts[2], 10)].text);\n }\n };\n /**\n * Handles the mouse down on the chart.\n *\n * @param {PointerEvent} e - The mouse event.\n * @returns {boolean} - False.\n * @private\n */\n Chart.prototype.chartOnMouseDown = function (e) {\n var pageX;\n var pageY;\n var target;\n var touchArg;\n var XYvalues = this.FindXYPointValue(this.mouseX, this.mouseY);\n var offset = Browser.isDevice ? 20 : 30;\n var rect = this.element.getBoundingClientRect();\n var element = e.target;\n if (this.stockChart && this.stockChart.zoomSettings.enablePan) {\n this.allowPan = true;\n }\n this.trigger(chartMouseDown, { target: element.id, x: this.mouseX, y: this.mouseY, axisData: XYvalues });\n if (e.type === 'touchstart') {\n this.isTouch = true;\n touchArg = e;\n pageX = touchArg.changedTouches[0].clientX;\n pageY = touchArg.changedTouches[0].clientY;\n target = touchArg.target;\n }\n else {\n this.isTouch = e.pointerType === 'touch';\n pageX = e.clientX;\n pageY = e.clientY;\n target = e.target;\n }\n var svgRect = getElement(this.svgId).getBoundingClientRect();\n this.mouseDownX = this.previousMouseMoveX = (pageX - rect.left) - Math.max(svgRect.left - rect.left, 0);\n this.mouseDownY = this.previousMouseMoveY = (pageY - rect.top) - Math.max(svgRect.top - rect.top, 0);\n if (this.isTouch) {\n this.isDoubleTap = (new Date().getTime() < this.threshold && target.id.indexOf(this.element.id + '_Zooming_') === -1 &&\n (this.mouseDownX - offset >= this.mouseX || this.mouseDownX + offset >= this.mouseX) &&\n (this.mouseDownY - offset >= this.mouseY || this.mouseDownY + offset >= this.mouseY) &&\n (this.mouseX - offset >= this.mouseDownX || this.mouseX + offset >= this.mouseDownX) &&\n (this.mouseY - offset >= this.mouseDownY || this.mouseY + offset >= this.mouseDownY));\n }\n if (this.dataEditingModule) {\n this.dataEditingModule.pointMouseDown();\n }\n this.notify(Browser.touchStartEvent, e);\n return false;\n };\n /**\n * Handles the mouse up on the chart.\n *\n * @param {PointerEvent} e - The mouse event.\n * @returns {boolean} - False.\n * @private\n */\n Chart.prototype.mouseEnd = function (e) {\n var pageY;\n var pageX;\n var touchArg;\n if (e.type === 'touchend') {\n touchArg = e;\n pageX = touchArg.changedTouches[0].clientX;\n this.isTouch = true;\n pageY = touchArg.changedTouches[0].clientY;\n }\n else {\n pageY = e.clientY;\n pageX = e.clientX;\n this.isTouch = e.pointerType === 'touch' || e.pointerType === '2';\n }\n this.setMouseXY(pageX, pageY);\n this.chartOnMouseUp(e);\n return false;\n };\n /**\n * Handles the mouse up on the chart.\n *\n * @param {PointerEvent | TouchEvent} e - The mouse or touch event.\n * @returns {boolean} - False.\n * @private\n */\n Chart.prototype.chartOnMouseUp = function (e) {\n var element = e.target;\n var XYvalues = this.FindXYPointValue(this.mouseX, this.mouseY);\n this.trigger(chartMouseUp, { target: element.id, x: this.mouseX, y: this.mouseY, axisData: XYvalues });\n this.isChartDrag = false;\n this.allowPan = false;\n if (this.isTouch) {\n this.titleTooltip(e, this.mouseX, this.mouseY, this.isTouch);\n this.axisTooltip(e, this.mouseX, this.mouseY, this.isTouch);\n this.threshold = new Date().getTime() + 300;\n }\n if (this.dataEditingModule) {\n this.dataEditingModule.pointMouseUp();\n }\n if (!this.enableCanvas && this.seriesElements) {\n this.seriesElements.removeAttribute('clip-path');\n }\n this.notify(Browser.touchEndEvent, e);\n return false;\n };\n /**\n * Method to set culture for chart.\n *\n * @returns {void}\n */\n Chart.prototype.setCulture = function () {\n this.intl = new Internationalization();\n this.setLocaleConstants();\n this.localeObject = new L10n(this.getModuleName(), this.defaultLocalConstants, this.locale);\n };\n /**\n * Sets the content of the annotation dynamically for the chart.\n *\n * @param {number} annotationIndex - The index of the annotation.\n * @param {string} content - The content to set for the annotation.\n * @returns {void}\n */\n Chart.prototype.setAnnotationValue = function (annotationIndex, content) {\n var parentNode = getElement(this.element.id + '_Annotation_Collections');\n var annotation = this.annotations[annotationIndex];\n var element;\n if (content !== null) {\n annotation.content = content;\n if (parentNode) {\n removeElement(this.element.id + '_Annotation_' + annotationIndex);\n element = this.createElement('div');\n this.annotationModule.processAnnotation(annotation, annotationIndex, element);\n parentNode.appendChild(element.children[0]);\n }\n else {\n this.annotationModule.renderAnnotations(getElement(this.element.id + '_Secondary_Element'));\n }\n }\n };\n /**\n * Method to set locale constants.\n *\n * @returns {void}\n */\n Chart.prototype.setLocaleConstants = function () {\n this.defaultLocalConstants = {\n ZoomIn: 'Zoom in',\n Zoom: 'Zoom',\n ZoomOut: 'Zoom out',\n Pan: 'Pan',\n Reset: 'Reset',\n ResetZoom: 'Reset Zoom'\n };\n };\n /**\n * Theming for chart.\n *\n * @returns {void}\n */\n Chart.prototype.setTheme = function () {\n /** Set theme */\n this.themeStyle = getThemeColor(this.theme, this.enableCanvas, this);\n if (!(document.getElementById(this.element.id + 'Keyboard_chart_focus'))) {\n var style = document.createElement('style');\n style.setAttribute('id', this.element.id + 'Keyboard_chart_focus');\n style.innerText = '.e-chart-focused:focus, path[class*=_ej2_chart_selection_series]:focus,' +\n 'path[id*=_Point_]:focus, text[id*=_ChartTitle]:focus {outline: none } .e-chart-focused:focus-visible, path[class*=_ej2_chart_selection_series]:focus-visible,' +\n 'path[id*=_Point_]:focus-visible, text[id*=_ChartTitle]:focus-visible {outline: 1.5px ' + this.themeStyle.tabColor + ' solid}';\n document.body.appendChild(style);\n }\n };\n /**\n * Provides the array of modules needed for control rendering.\n *\n * @returns {ModuleDeclaration[]} - The array of module declarations.\n * @private\n */\n Chart.prototype.requiredModules = function () {\n var _this = this;\n var modules = [];\n var series = this.series;\n var enableAnnotation = false;\n var moduleName;\n var errorBarVisible = false;\n var isPointDrag = false;\n var dataLabelEnable = false;\n var zooming = this.zoomSettings;\n this.chartAreaType = (series.length > 0 && (series[0].type === 'Polar' || series[0].type === 'Radar')) ? 'PolarRadar' : 'Cartesian';\n if (this.tooltip.enable) {\n modules.push({\n member: 'Tooltip',\n args: [this]\n });\n }\n series.map(function (value) {\n _this.isLegend = (_this.legendSettings.visible && ((value.name !== '') || !!_this.isLegend));\n moduleName = value.type.indexOf('100') !== -1 ? value.type.replace('100', '') + 'Series' : value.type + 'Series';\n errorBarVisible = value.errorBar.visible || errorBarVisible;\n dataLabelEnable = value.marker.dataLabel.visible || dataLabelEnable || (value.type === 'Pareto' && value.paretoOptions.marker.dataLabel.visible);\n isPointDrag = value.dragSettings.enable || isPointDrag;\n if (!modules.some(function (currentModule) {\n return currentModule.member === moduleName;\n })) {\n modules.push({\n member: moduleName,\n args: [_this, series]\n });\n }\n if (_this.chartAreaType === 'PolarRadar') {\n modules.push({\n member: value.drawType + 'Series',\n args: [_this, series]\n });\n }\n if (value.type === 'Pareto') {\n modules.push({\n member: 'ColumnSeries',\n args: [_this, series]\n });\n modules.push({\n member: 'LineSeries',\n args: [_this, series]\n });\n }\n });\n this.findIndicatorModules(modules);\n this.findTrendLineModules(modules);\n modules = this.findAxisModule(modules);\n enableAnnotation = this.annotations.some(function (value) {\n return (value.content !== null);\n });\n if (errorBarVisible) {\n modules.push({\n member: 'ErrorBar',\n args: [this, series]\n });\n }\n if (this.isLegend) {\n modules.push({\n member: 'Legend',\n args: [this]\n });\n }\n if (this.enableExport || this.allowExport) {\n modules.push({\n member: 'Export',\n args: [this]\n });\n }\n if (this.chartAreaType !== 'PolarRadar' && this.crosshair.enable) {\n modules.push({\n member: 'Crosshair',\n args: [this]\n });\n }\n if (this.chartAreaType !== 'PolarRadar' && !this.scrollSettingEnabled && (zooming.enableSelectionZooming\n || zooming.enableMouseWheelZooming || zooming.enablePinchZooming || zooming.enablePan ||\n zooming.enableScrollbar || zooming.showToolbar)) {\n modules.push({\n member: 'Zoom',\n args: [this, this.zoomSettings]\n });\n if (zooming.enableScrollbar) {\n modules.push({\n member: 'ScrollBar',\n args: [this]\n });\n }\n }\n if (this.selectionMode !== 'None' && !(this.chartAreaType === 'PolarRadar' &&\n this.selectionMode.indexOf('Drag') > -1)) {\n modules.push({\n member: 'Selection',\n args: [this]\n });\n }\n if (this.highlightMode !== 'None' || this.legendSettings.enableHighlight) {\n modules.push({\n member: 'Highlight',\n args: [this]\n });\n }\n if (dataLabelEnable) {\n modules.push({\n member: 'DataLabel',\n args: [this, series]\n });\n }\n if (isPointDrag) {\n modules.push({\n member: 'DataEditing',\n args: [this]\n });\n }\n if (enableAnnotation) {\n modules.push({\n member: 'Annotation',\n args: [this]\n });\n }\n return modules;\n };\n Chart.prototype.findAxisModule = function (modules) {\n var axisCollections = [];\n axisCollections.push(this.primaryXAxis);\n axisCollections.push(this.primaryYAxis);\n axisCollections = axisCollections.concat(this.axes);\n var datetimeEnabled = false;\n var categoryEnabled = false;\n var logarithmicEnabled = false;\n var striplineEnabled = false;\n var dateTimeCategoryEnabled = false;\n var multiLevelEnabled = false;\n for (var _i = 0, axisCollections_1 = axisCollections; _i < axisCollections_1.length; _i++) {\n var axis = axisCollections_1[_i];\n datetimeEnabled = axis.valueType === 'DateTime' || datetimeEnabled;\n categoryEnabled = axis.valueType === 'Category' || categoryEnabled;\n logarithmicEnabled = axis.valueType === 'Logarithmic' || logarithmicEnabled;\n dateTimeCategoryEnabled = axis.valueType === 'DateTimeCategory' || dateTimeCategoryEnabled;\n striplineEnabled = this.findStriplineVisibility(axis.stripLines) || striplineEnabled;\n multiLevelEnabled = axis.multiLevelLabels.length > 0 || multiLevelEnabled;\n this.scrollSettingEnabled = axis.scrollbarSettings.enable ? true : this.scrollSettingEnabled;\n }\n if (datetimeEnabled) {\n modules.push({\n member: 'DateTime',\n args: [this]\n });\n }\n if (categoryEnabled) {\n modules.push({\n member: 'Category',\n args: [this]\n });\n }\n if (logarithmicEnabled) {\n modules.push({\n member: 'Logarithmic',\n args: [this]\n });\n }\n if (striplineEnabled) {\n modules.push({\n member: 'StripLine',\n args: [this]\n });\n }\n if (multiLevelEnabled) {\n modules.push({\n member: 'MultiLevelLabel',\n args: [this]\n });\n }\n if (dateTimeCategoryEnabled) {\n modules.push({\n member: 'DateTimeCategory',\n args: [this]\n });\n }\n if (this.scrollSettingEnabled) {\n modules.push({\n member: 'ScrollBar',\n args: [this]\n });\n }\n return modules;\n };\n Chart.prototype.findIndicatorModules = function (modules) {\n var macdEnable;\n var bandEnable;\n var indicators = this.indicators;\n if (this.indicators.length) {\n modules.push({\n member: 'LineSeries',\n args: [this]\n });\n indicators.map(function (indicator) {\n macdEnable = macdEnable || indicator.type === 'Macd';\n bandEnable = bandEnable || indicator.type === 'BollingerBands';\n });\n if (macdEnable) {\n modules.push({\n member: 'ColumnSeries',\n args: [this]\n });\n }\n if (bandEnable) {\n modules.push({\n member: 'RangeAreaSeries',\n args: [this]\n });\n }\n if (bandEnable) {\n modules.push({\n member: 'SplineRangeAreaSeries',\n args: [this]\n });\n }\n for (var _i = 0, _a = this.indicators; _i < _a.length; _i++) {\n var indicator = _a[_i];\n modules.push({\n member: indicator.type + 'Indicator',\n args: [this]\n });\n }\n }\n };\n Chart.prototype.findTrendLineModules = function (modules) {\n var isLine;\n var isSpline;\n var _loop_1 = function (series) {\n var markerEnable;\n series.trendlines.map(function (trendline) {\n markerEnable = markerEnable || trendline.marker.visible;\n isLine = isLine || (trendline.type === 'Linear' || trendline.type === 'MovingAverage') ? true : false;\n isSpline = isSpline || (!isLine || (trendline.type === 'Exponential' || trendline.type === 'Logarithmic' || trendline.type === 'Power' || trendline.type === 'Polynomial')) ? true : false;\n });\n if (markerEnable) {\n modules.push({\n member: 'Marker',\n args: [this_1, series]\n });\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = this.series; _i < _a.length; _i++) {\n var series = _a[_i];\n _loop_1(series);\n }\n if (isLine || isSpline) {\n modules.push({\n member: 'TrendLine',\n args: [this]\n });\n }\n if (isLine) {\n modules.push({\n member: 'LineSeries',\n args: [this]\n });\n }\n if (isSpline) {\n modules.push({\n member: 'SplineSeries',\n args: [this]\n });\n }\n };\n Chart.prototype.findStriplineVisibility = function (striplines) {\n var visible = false;\n for (var _i = 0, striplines_1 = striplines; _i < striplines_1.length; _i++) {\n var stripline = striplines_1[_i];\n if (stripline.visible) {\n visible = true;\n break;\n }\n }\n return visible;\n };\n /**\n * To Remove the SVG.\n *\n * @returns {void}\n * @private\n */\n Chart.prototype.removeSvg = function () {\n if (this.redraw) {\n return null;\n }\n blazorTemplatesReset(this);\n if (this.enableCanvas && this.svgObject && this.svgObject.tagName === 'CANVAS') {\n this.renderer.clearRect(new Rect(0, 0, this.availableSize.width, this.availableSize.height));\n if (this.svgObject.parentNode) {\n remove(this.svgObject);\n }\n return null;\n }\n removeElement(this.element.id + '_Secondary_Element');\n if (this.isReact) {\n this.clearTemplate();\n }\n var removeLength = 0;\n if (this.zoomModule && this.zoomModule.pinchTarget) {\n this.zoomModule.pinchTarget.id = '';\n this.zoomModule.pinchTarget.setAttribute('opacity', '0');\n this.svgObject.appendChild(this.zoomModule.pinchTarget);\n removeLength = 1;\n }\n // Fix for blazor resize issue\n if (!isNullOrUndefined(this.resizeTo)) {\n if (this.resizeTo !== this.checkResize && this.isBlazor && this.element.childElementCount) {\n var containerCollection = document.querySelectorAll('.e-chart');\n for (var index = 0; index < containerCollection.length; index++) {\n var container = containerCollection[index];\n while (container.firstChild) {\n remove(container.firstChild);\n }\n }\n }\n this.checkResize = this.resizeTo;\n }\n if (this.svgObject) {\n while (this.svgObject.childNodes.length > removeLength) {\n this.svgObject.removeChild(this.svgObject.firstChild);\n }\n if (!this.svgObject.hasChildNodes() && this.svgObject.parentNode && !(this.stockChart)) {\n remove(this.svgObject);\n }\n }\n };\n Chart.prototype.refreshDefinition = function (definitions) {\n for (var _i = 0, definitions_1 = definitions; _i < definitions_1.length; _i++) {\n var item = definitions_1[_i];\n item.axes = [];\n }\n };\n /**\n * Refresh the axis default value.\n *\n * @returns {void}\n * @private\n */\n Chart.prototype.refreshAxis = function () {\n var axis = this.primaryXAxis;\n axis.rect = new Rect(undefined, undefined, 0, 0);\n axis = this.primaryYAxis;\n axis.isStack100 = false;\n axis.rect = new Rect(undefined, undefined, 0, 0);\n for (var _i = 0, _a = this.axes; _i < _a.length; _i++) {\n var item = _a[_i];\n axis = item;\n axis.rect = new Rect(undefined, undefined, 0, 0);\n axis.isStack100 = false;\n }\n if (this.paretoSeriesModule && this.series[0].type === 'Pareto') {\n for (var _b = 0, _c = this.paretoSeriesModule.paretoAxes; _b < _c.length; _b++) {\n var item = _c[_b];\n axis = item;\n axis.rect = new Rect(undefined, undefined, 0, 0);\n axis.isStack100 = false;\n }\n }\n };\n Chart.prototype.axisChange = function (axis) {\n if (!axis.name && !axis.valueType) {\n return false;\n }\n this.refreshDefinition(this.columns);\n this.refreshDefinition(this.rows);\n this.calculateVisibleAxis();\n this.processData();\n return true;\n };\n /**\n * Gets the visible series by index.\n *\n * @param {Series[]} visibleSeries - The array of visible series.\n * @param {number} index - The index of the series to retrieve.\n * @returns {Series} - The visible series at the specified index.\n * @private\n */\n Chart.prototype.getVisibleSeries = function (visibleSeries, index) {\n for (var _i = 0, visibleSeries_1 = visibleSeries; _i < visibleSeries_1.length; _i++) {\n var series = visibleSeries_1[_i];\n if (index === series.index) {\n return series;\n }\n }\n return null;\n };\n /**\n * Refresh the chart for live data updates.\n *\n * @returns {void}\n */\n Chart.prototype.refreshLiveData = function () {\n this.calculateVisibleSeries();\n this.initTechnicalIndicators();\n this.initTrendLines();\n this.refreshDefinition(this.columns);\n this.refreshDefinition(this.rows);\n this.calculateVisibleAxis();\n this.processData(false);\n if (!this.isBlazor) {\n if (this.enableCanvas) {\n this.createChartSvg();\n }\n else {\n this.removeSvg();\n }\n // this.enableCanvas ? this.createChartSvg() : this.removeSvg();\n this.refreshAxis();\n this.refreshBound();\n this.trigger('loaded', { chart: this.isBlazor ? {} : this });\n }\n };\n /**\n * To remove style element.\n *\n * @returns {void}\n */\n Chart.prototype.removeStyles = function () {\n removeElement(this.element.id + '_ej2_chart_selection');\n removeElement(this.element.id + '_ej2_chart_highlight');\n };\n /**\n * To trigger the manual mouse move event for live chart tooltip.\n *\n * @returns {void}\n */\n Chart.prototype.mouseMoveEvent = function () {\n if (this.tooltip.enable && this.previousPageX !== null && this.previousPageY !== null) {\n var mousemove = document.createEvent('MouseEvent');\n mousemove.initMouseEvent('mousemove', true, false, window, 1, 100, 100, this.previousPageX, this.previousPageY, false, false, false, false, 0, null);\n this.element.dispatchEvent(mousemove);\n }\n };\n /**\n * Displays a tooltip for the data points.\n *\n * @param {number | string | Date} x - Specifies the x value of the point or x coordinate.\n * @param {number} y - Specifies the x value of the point or y coordinate.\n * @param {boolean} isPoint - Specifies whether x and y are data point or chart coordinates.\n * @returns {void}\n */\n Chart.prototype.showTooltip = function (x, y, isPoint) {\n if (isPoint === void 0) { isPoint = false; }\n if (isPoint) {\n for (var _i = 0, _a = this.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n for (var _b = 0, _c = series.points; _b < _c.length; _b++) {\n var point = _c[_b];\n var pointX = series.xAxis.valueType === 'DateTime' ? point.xValue : point.x;\n var xValue = x;\n if (series.xAxis.valueType === 'DateTime') {\n xValue = new Date(xValue).getTime();\n }\n if (x === pointX && y === point.yValue) {\n this.mouseX = point.regions[0].x + this.chartAxisLayoutPanel.seriesClipRect.x;\n this.mouseY = point.regions[0].y + this.chartAxisLayoutPanel.seriesClipRect.y;\n this.tooltipModule.tooltip();\n this.markerRender.mouseMoveHandler();\n break;\n }\n }\n }\n }\n else {\n if (this.isTouch) {\n this.startMove = true;\n }\n this.mouseX = x;\n this.mouseY = y;\n this.tooltipModule.mouseMoveHandler();\n this.markerRender.mouseMoveHandler();\n }\n };\n /**\n * Hides a tooltip in the chart.\n *\n * @returns {void}\n */\n Chart.prototype.hideTooltip = function () {\n this.tooltipModule.removeTooltip(Browser.isDevice ? 2000 : 1000);\n };\n /**\n * Displays a crosshair for the chart.\n *\n * @param {number} x - Specifies the x value of the point or x coordinate.\n * @param {number} y - Specifies the x value of the point or y coordinate.\n * @returns {void}\n */\n Chart.prototype.showCrosshair = function (x, y) {\n this.mouseX = x;\n this.mouseY = y;\n this.isCrosshair = false;\n if (withInBounds(this.mouseX, this.mouseY, this.chartAxisLayoutPanel.seriesClipRect)) {\n this.crosshairModule.crosshair();\n }\n else {\n this.hideCrosshair();\n }\n this.isCrosshair = true;\n };\n /**\n * Hides a tooltip in the chart.\n *\n * @returns {void}\n */\n Chart.prototype.hideCrosshair = function () {\n this.crosshairModule.removeCrosshair(Browser.isDevice ? 2000 : 1000);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @private\n * @param {ChartModel} newProp - The new ChartModel.\n * @param {ChartModel} oldProp - The new ChartModel.\n * @returns {void}\n */\n Chart.prototype.onPropertyChanged = function (newProp, oldProp) {\n var renderer = false;\n var refreshBounds = false;\n this.animateSeries = false;\n var axis;\n if (!this.delayRedraw && !this.zoomRedraw) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'primaryXAxis':\n axis = newProp.primaryXAxis;\n refreshBounds = this.axisChange(axis);\n if (newProp.primaryXAxis.edgeLabelPlacement) {\n renderer = true;\n }\n if (!newProp.primaryXAxis.crosshairTooltip) {\n refreshBounds = true;\n }\n if (!isNullOrUndefined(axis.isInversed) || !isNullOrUndefined(axis.opposedPosition)) {\n this.primaryXAxis.setIsInversedAndOpposedPosition();\n }\n break;\n case 'primaryYAxis':\n axis = newProp.primaryYAxis;\n refreshBounds = this.axisChange(axis);\n if (newProp.primaryYAxis.edgeLabelPlacement) {\n renderer = true;\n }\n if (!newProp.primaryYAxis.crosshairTooltip) {\n refreshBounds = true;\n }\n if (!isNullOrUndefined(axis.isInversed) || !isNullOrUndefined(axis.opposedPosition)) {\n this.primaryYAxis.setIsInversedAndOpposedPosition();\n }\n break;\n case 'axes':\n for (var _b = 0, _c = Object.keys(newProp.axes); _b < _c.length; _b++) {\n var index = _c[_b];\n axis = newProp.axes[index];\n refreshBounds = refreshBounds || this.axisChange(axis);\n if (!axis.crosshairTooltip) {\n refreshBounds = true;\n }\n if (!isNullOrUndefined(axis.isInversed) || !isNullOrUndefined(axis.opposedPosition)) {\n this.axes[index].setIsInversedAndOpposedPosition();\n }\n }\n break;\n case 'height':\n case 'width':\n this.createChartSvg();\n refreshBounds = true;\n break;\n case 'subTitle':\n case 'title':\n refreshBounds = true;\n break;\n case 'titleStyle':\n if (newProp.titleStyle && (newProp.titleStyle.size || newProp.titleStyle.textOverflow)) {\n refreshBounds = true;\n }\n else {\n renderer = true;\n }\n break;\n case 'subTitleStyle':\n if (newProp.subTitleStyle && (newProp.subTitleStyle.size || newProp.subTitleStyle.textOverflow)) {\n refreshBounds = true;\n }\n else {\n renderer = true;\n }\n break;\n case 'border':\n renderer = true;\n break;\n case 'dataSource':\n this.processData(false);\n refreshBounds = true;\n break;\n case 'enableCanvas':\n this.refresh();\n break;\n case 'series': {\n var len = this.series.length;\n var seriesRefresh = false;\n var series = void 0;\n var blazorProp = void 0;\n for (var i = 0; i < len; i++) {\n series = newProp.series[i];\n // I264774 blazor series visible property binding not working issue fixed.\n if (this.isBlazor && series && ((series.visible !== oldProp.series[i].visible) || series.isClosed ||\n series.marker || series.emptyPointSettings || series.type || series.boxPlotMode || series.showMean)) {\n blazorProp = true;\n }\n if (!isNullOrUndefined(series) && (series.dataSource || series.query || series.errorBar || series.xName ||\n series.yName || series.size || series.high || series.low || series.open || series.close || series.trendlines ||\n series.fill || series.name || series.marker || series.width || series.binInterval || series.type ||\n (series.visible !== oldProp.series[i].visible) || blazorProp)) {\n extend(this.getVisibleSeries(this.visibleSeries, i), series, null, true);\n seriesRefresh = true;\n }\n }\n if (seriesRefresh) {\n this.calculateVisibleSeries();\n this.initTechnicalIndicators();\n this.initTrendLines();\n this.refreshDefinition(this.columns);\n this.refreshDefinition(this.rows);\n this.calculateVisibleAxis();\n this.processData(false);\n refreshBounds = true;\n }\n break;\n }\n case 'indicators':\n refreshBounds = true;\n break;\n case 'zoomSettings':\n if (newProp.zoomSettings.enableScrollbar || oldProp.zoomSettings.enableScrollbar) {\n refreshBounds = true;\n }\n renderer = true;\n break;\n case 'background':\n renderer = true;\n break;\n case 'chartArea':\n if (newProp.chartArea.border && newProp.chartArea.border.width) {\n refreshBounds = true;\n }\n renderer = true;\n break;\n case 'legendSettings':\n if (!newProp.legendSettings.background || !newProp.legendSettings.opacity) {\n refreshBounds = true;\n }\n renderer = true;\n break;\n case 'palettes':\n this.calculateVisibleSeries();\n renderer = true;\n break;\n case 'selectedDataIndexes':\n if (this.selectionModule) {\n this.selectionModule.currentMode = this.selectionMode;\n this.selectionModule.selectedDataIndexes = this.selectedDataIndexes;\n this.selectionModule.styleId = this.element.id + '_ej2_chart_selection';\n this.selectionModule.redrawSelection(this, oldProp.selectionMode, true);\n }\n else if (this.highlightModule) {\n this.highlightModule.currentMode = this.highlightMode;\n this.highlightModule.highlightDataIndexes = this.selectedDataIndexes;\n this.highlightModule.styleId = this.element.id + '_ej2_chart_highlight';\n this.highlightModule.redrawSelection(this, oldProp.selectionMode, true);\n }\n break;\n case 'selectionMode':\n if (this.selectionModule && newProp.selectionMode && newProp.selectionMode.indexOf('Drag') === -1) {\n this.selectionModule.currentMode = this.selectionMode;\n this.selectionModule.styleId = this.element.id + '_ej2_chart_selection';\n this.selectionModule.redrawSelection(this, oldProp.selectionMode, true);\n }\n break;\n case 'isMultiSelect':\n if (this.selectionModule && !newProp.isMultiSelect && this.selectionModule.selectedDataIndexes.length > 1) {\n this.selectionModule.currentMode = this.selectionMode;\n this.selectionModule.styleId = this.element.id + '_ej2_chart_selection';\n this.selectionModule.redrawSelection(this, oldProp.selectionMode);\n }\n break;\n case 'highlightMode':\n case 'selectionPattern':\n case 'highlightPattern':\n this.removeStyles();\n renderer = true;\n break;\n case 'theme':\n this.animateSeries = true;\n break;\n case 'enableRtl':\n case 'locale':\n case 'currencyCode':\n if (this.isBlazor) {\n this.setCulture();\n renderer = true;\n }\n else {\n this.refresh();\n }\n break;\n case 'tooltip':\n if (this.tooltipModule) { // To check the tooltip enable is true.\n this.tooltipModule.previousPoints = [];\n if (this.tooltip.template) {\n this.tooltipModule.template = this.tooltip.template;\n }\n }\n break;\n }\n }\n if (!refreshBounds && renderer) {\n this.rotatedDataLabelCollections = [];\n this.removeSvg();\n this.renderElements();\n this.trigger('loaded', { chart: this.isBlazor ? {} : this });\n }\n if (refreshBounds) {\n if (this.enableCanvas) {\n this.createChartSvg();\n }\n else {\n this.removeSvg();\n }\n // this.enableCanvas ? this.createChartSvg() : this.removeSvg();\n if (this.isReact) {\n this.clearTemplate();\n }\n this.dragY = null;\n this.refreshAxis();\n this.refreshBound();\n this.trigger('loaded', { chart: this.isBlazor ? {} : this });\n this.redraw = false;\n this.animated = false;\n }\n }\n this.zoomRedraw = false;\n };\n __decorate([\n Property(null)\n ], Chart.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], Chart.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Chart.prototype, \"title\", void 0);\n __decorate([\n Property('')\n ], Chart.prototype, \"dataSource\", void 0);\n __decorate([\n Complex({ fontFamily: null, size: null, fontStyle: null, fontWeight: null, color: null }, titleSettings)\n ], Chart.prototype, \"titleStyle\", void 0);\n __decorate([\n Property('')\n ], Chart.prototype, \"subTitle\", void 0);\n __decorate([\n Complex({ fontFamily: null, size: null, fontStyle: null, fontWeight: null, color: null }, titleSettings)\n ], Chart.prototype, \"subTitleStyle\", void 0);\n __decorate([\n Complex({}, Margin)\n ], Chart.prototype, \"margin\", void 0);\n __decorate([\n Complex({ color: '#DDDDDD', width: 0 }, Border)\n ], Chart.prototype, \"border\", void 0);\n __decorate([\n Property(null)\n ], Chart.prototype, \"background\", void 0);\n __decorate([\n Complex({ border: { color: null, width: 0.5 }, background: 'transparent' }, ChartArea)\n ], Chart.prototype, \"chartArea\", void 0);\n __decorate([\n Complex({ name: 'primaryXAxis' }, Axis)\n ], Chart.prototype, \"primaryXAxis\", void 0);\n __decorate([\n Complex({ name: 'primaryYAxis' }, Axis)\n ], Chart.prototype, \"primaryYAxis\", void 0);\n __decorate([\n Collection([{}], Row)\n ], Chart.prototype, \"rows\", void 0);\n __decorate([\n Collection([{}], Column)\n ], Chart.prototype, \"columns\", void 0);\n __decorate([\n Collection([{}], Axis)\n ], Chart.prototype, \"axes\", void 0);\n __decorate([\n Collection([{}], Series)\n ], Chart.prototype, \"series\", void 0);\n __decorate([\n Collection([{}], ChartAnnotationSettings)\n ], Chart.prototype, \"annotations\", void 0);\n __decorate([\n Property([])\n ], Chart.prototype, \"palettes\", void 0);\n __decorate([\n Property('Material')\n ], Chart.prototype, \"theme\", void 0);\n __decorate([\n Complex({}, TooltipSettings)\n ], Chart.prototype, \"tooltip\", void 0);\n __decorate([\n Complex({}, CrosshairSettings)\n ], Chart.prototype, \"crosshair\", void 0);\n __decorate([\n Complex({}, LegendSettings)\n ], Chart.prototype, \"legendSettings\", void 0);\n __decorate([\n Collection([{}], RangeColorSetting)\n ], Chart.prototype, \"rangeColorSettings\", void 0);\n __decorate([\n Complex({}, ZoomSettings)\n ], Chart.prototype, \"zoomSettings\", void 0);\n __decorate([\n Property('')\n ], Chart.prototype, \"highlightColor\", void 0);\n __decorate([\n Property('None')\n ], Chart.prototype, \"selectionMode\", void 0);\n __decorate([\n Property('None')\n ], Chart.prototype, \"highlightMode\", void 0);\n __decorate([\n Property('None')\n ], Chart.prototype, \"selectionPattern\", void 0);\n __decorate([\n Property('None')\n ], Chart.prototype, \"highlightPattern\", void 0);\n __decorate([\n Property(false)\n ], Chart.prototype, \"isMultiSelect\", void 0);\n __decorate([\n Property(false)\n ], Chart.prototype, \"allowMultiSelection\", void 0);\n __decorate([\n Property(true)\n ], Chart.prototype, \"enableExport\", void 0);\n __decorate([\n Property(false)\n ], Chart.prototype, \"allowExport\", void 0);\n __decorate([\n Collection([], Indexes)\n ], Chart.prototype, \"selectedDataIndexes\", void 0);\n __decorate([\n Property(false)\n ], Chart.prototype, \"useGroupingSeparator\", void 0);\n __decorate([\n Property(false)\n ], Chart.prototype, \"enableAutoIntervalOnBothAxis\", void 0);\n __decorate([\n Property(false)\n ], Chart.prototype, \"isTransposed\", void 0);\n __decorate([\n Property(false)\n ], Chart.prototype, \"enableCanvas\", void 0);\n __decorate([\n Property(null)\n ], Chart.prototype, \"backgroundImage\", void 0);\n __decorate([\n Collection([], TechnicalIndicator)\n ], Chart.prototype, \"indicators\", void 0);\n __decorate([\n Property(true)\n ], Chart.prototype, \"enableAnimation\", void 0);\n __decorate([\n Property(null)\n ], Chart.prototype, \"description\", void 0);\n __decorate([\n Property(1)\n ], Chart.prototype, \"tabIndex\", void 0);\n __decorate([\n Property(true)\n ], Chart.prototype, \"enableSideBySidePlacement\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"resized\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"beforeResize\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"annotationRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"loaded\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"beforeExport\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"afterExport\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"animationComplete\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"legendRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"textRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"pointRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"seriesRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"axisLabelRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"axisLabelClick\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"axisRangeCalculated\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"axisMultiLabelRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"legendClick\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"multiLevelLabelClick\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"tooltipRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"sharedTooltipRender\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"chartMouseMove\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"chartMouseClick\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"chartDoubleClick\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"pointClick\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"pointDoubleClick\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"pointMove\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"chartMouseLeave\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"chartMouseDown\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"chartMouseUp\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"dragComplete\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"selectionComplete\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"zoomComplete\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"onZooming\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"scrollStart\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"scrollEnd\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"scrollChanged\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Chart.prototype, \"dragEnd\", void 0);\n __decorate([\n Property('USD')\n ], Chart.prototype, \"currencyCode\", void 0);\n Chart = __decorate([\n NotifyPropertyChanges\n ], Chart);\n return Chart;\n}(Component));\nexport { Chart };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { Chart } from '@syncfusion/ej2-charts';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents react Chart Component\n * ```tsx\n * \n * ```\n */\nvar ChartComponent = /** @class */ (function (_super) {\n __extends(ChartComponent, _super);\n function ChartComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = true;\n _this.directivekeys = { 'seriesCollection': { 'series': { 'trendlines': 'trendline', 'segments': 'segment' } }, 'axes': { 'axis': { 'stripLines': 'stripLine', 'multiLevelLabels': { 'multiLevelLabel': { 'categories': 'category' } } } }, 'rows': 'row', 'columns': 'column', 'rangeColorSettings': 'rangeColorSetting', 'annotations': 'annotation', 'selectedDataIndexes': 'selectedDataIndex', 'indicators': 'indicator' };\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n ChartComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement('div', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return ChartComponent;\n}(Chart));\nexport { ChartComponent };\napplyMixins(ChartComponent, [ComponentBase, React.Component]);\n","import { getAnimationFunction, pathAnimation, getElement, animateAddPoints } from '../../common/utils/helper';\nimport { Rect } from '@syncfusion/ej2-svg-base';\nimport { Animation, animationMode, isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Base class for line-type series.\n * This class provides common properties and methods for line-type series in the chart.\n *\n * @private\n */\nvar LineBase = /** @class */ (function () {\n /**\n * Initializes the tooltip module for the chart.\n *\n * @param {Chart} [chartModule] - The chart instance to which the tooltip module is initialized.\n */\n function LineBase(chartModule) {\n this.chart = chartModule;\n }\n /**\n * Enhances the performance of the chart by enabling complex properties.\n *\n * @param {Series} series - The series for which complex properties are enabled.\n * @returns {Points[]} An array of points.\n * @private\n */\n LineBase.prototype.enableComplexProperty = function (series) {\n var tempPoints = [];\n var tempPoints2 = [];\n var xVisibleRange = series.xAxis.visibleRange;\n var yVisibleRange = series.yAxis.visibleRange;\n var seriesPoints = series.points;\n var areaBounds = series.clipRect;\n var xTolerance = this.chart && this.chart.zoomRedraw && this.chart.redraw ? this.previousX :\n Math.abs(xVisibleRange.delta / areaBounds.width);\n var yTolerance = this.chart && this.chart.zoomRedraw && this.chart.redraw ? this.previousY :\n Math.abs(yVisibleRange.delta / areaBounds.height);\n var prevXValue = (seriesPoints[0] && seriesPoints[0].xValue > xTolerance) ? 0 : xTolerance;\n var prevYValue = (seriesPoints[0] && seriesPoints[0].y > yTolerance) ? 0 : yTolerance;\n this.previousX = xTolerance;\n this.previousY = yTolerance;\n var xVal = 0;\n var yVal = 0;\n for (var _i = 0, seriesPoints_1 = seriesPoints; _i < seriesPoints_1.length; _i++) {\n var currentPoint = seriesPoints_1[_i];\n currentPoint.symbolLocations = [];\n xVal = currentPoint.xValue ? currentPoint.xValue : xVisibleRange.min;\n yVal = currentPoint.yValue ? currentPoint.yValue : yVisibleRange.min;\n if (Math.abs(prevXValue - xVal) >= xTolerance || Math.abs(prevYValue - yVal) >= yTolerance) {\n tempPoints.push(currentPoint);\n prevXValue = xVal;\n prevYValue = yVal;\n }\n }\n var tempPoint;\n for (var i = 0; i < tempPoints.length; i++) {\n tempPoint = tempPoints[i];\n if (isNullOrUndefined(tempPoint.x) || (series.category === 'Indicator' && (isNaN(tempPoint.xValue) || isNaN(tempPoint.yValue)))) {\n continue;\n }\n else {\n tempPoints2.push(tempPoint);\n }\n }\n return tempPoints2;\n };\n /**\n * To generate the line path direction.\n *\n * @param {Points} firstPoint firstPoint\n * @param {Points} secondPoint secondPoint\n * @param {Series} series series\n * @param {boolean} isInverted isInverted\n * @param {Function} getPointLocation getPointLocation\n * @param {string} startPoint startPoint\n * @returns {string} get line path direction\n * @private\n */\n LineBase.prototype.getLineDirection = function (firstPoint, secondPoint, series, isInverted, getPointLocation, startPoint) {\n var direction = '';\n if (firstPoint != null) {\n var point1 = getPointLocation(firstPoint.xValue, firstPoint.yValue, series.xAxis, series.yAxis, isInverted, series);\n var point2 = getPointLocation(secondPoint.xValue, secondPoint.yValue, series.xAxis, series.yAxis, isInverted, series);\n direction = startPoint + ' ' + (point1.x) + ' ' + (point1.y) + ' ' +\n 'L' + ' ' + (point2.x) + ' ' + (point2.y) + ' ';\n }\n return direction;\n };\n /**\n * Appends a line path to the chart.\n *\n * @param {PathOption} options - The options for the path.\n * @param {Series} series - The series to which the path belongs.\n * @param {string} clipRect - The clipping rectangle for the path.\n * @returns {void}\n * @private\n */\n LineBase.prototype.appendLinePath = function (options, series, clipRect) {\n var points = this.appendPathElement(options, series, clipRect);\n pathAnimation(points.element, options.d, series.chart.redraw, points.previousDirection, points.chart.duration);\n };\n LineBase.prototype.appendPathElement = function (options, series, clipRect) {\n var element = getElement(options.id);\n var chart = series.chart;\n var previousDirection = element ? element.getAttribute('d') : null;\n var htmlObject = series.chart.renderer.drawPath(options, new Int32Array([series.clipRect.x, series.clipRect.y]));\n if (htmlObject) {\n htmlObject.setAttribute('clip-path', clipRect);\n }\n series.pathElement = htmlObject;\n if (!series.chart.enableCanvas) {\n series.seriesElement.appendChild(htmlObject);\n }\n series.isRectSeries = false;\n return { element: element, previousDirection: previousDirection, chart: chart };\n };\n /**\n * Adds a line path to equate the start and end paths.\n *\n * @param {PathOption} options - The options for the path.\n * @param {Series} series - The series to which the path belongs.\n * @param {string} clipRect - The clip rectangle for the path.\n * @returns {void}\n * @private\n */\n LineBase.prototype.addPath = function (options, series, clipRect) {\n var points = this.appendPathElement(options, series, clipRect);\n if (points.previousDirection !== '' && options.d !== '') {\n var startPathCommands = points.previousDirection.match(/[MLHVCSQTAZ][^MLHVCSQTAZ]*/g);\n var endPathCommands = (options.d).match(/[MLHVCSQTAZ][^MLHVCSQTAZ]*/g);\n var maxLength = Math.max(startPathCommands.length, endPathCommands.length);\n var minLength = Math.min(startPathCommands.length, endPathCommands.length);\n if (startPathCommands.length < endPathCommands.length) {\n for (var i = minLength; i < maxLength; i++) {\n if (endPathCommands.length !== startPathCommands.length) {\n startPathCommands.push((startPathCommands[startPathCommands.length - 1]).replace('M', 'L'));\n }\n }\n animateAddPoints(points.element, options.d, series.chart.redraw, startPathCommands.join(' '), this.chart.duration);\n }\n else if (startPathCommands.length > endPathCommands.length) {\n for (var i = minLength; i < maxLength; i++) {\n if (endPathCommands.length !== startPathCommands.length) {\n if (series.removedPointIndex === series.points.length) {\n endPathCommands.push((endPathCommands[endPathCommands.length - 1]).replace('M', 'L'));\n }\n else {\n endPathCommands.splice(1, 0, endPathCommands[0].replace('M', 'L'));\n }\n }\n }\n animateAddPoints(points.element, endPathCommands.join(''), series.chart.redraw, points.previousDirection, this.chart.duration, options.d);\n }\n else {\n animateAddPoints(points.element, options.d, series.chart.redraw, points.previousDirection, this.chart.duration);\n }\n }\n };\n /**\n * Adds a area path to equate the start and end paths.\n *\n * @param {PathOption} options - The options for the path.\n * @param {Series} series - The series to which the path belongs.\n * @param {string} clipRect - The clip rectangle for the path.\n * @returns {void}\n * @private\n */\n LineBase.prototype.addAreaPath = function (options, series, clipRect) {\n var points = this.appendPathElement(options, series, clipRect);\n if (points.previousDirection !== '' && options.d !== '') {\n var startPathCommands = points.previousDirection.match(/[MLHVCSQTAZ][^MLHVCSQTAZ]*/g);\n var endPathCommands = (options.d).match(/[MLHVCSQTAZ][^MLHVCSQTAZ]*/g);\n var maxLength = Math.max(startPathCommands.length, endPathCommands.length);\n var minLength = Math.min(startPathCommands.length, endPathCommands.length);\n if (minLength < endPathCommands.length) {\n for (var i = minLength; i < maxLength; i++) {\n if (endPathCommands.length !== startPathCommands.length) {\n if (endPathCommands.length !== startPathCommands.length) {\n if (startPathCommands.length === 1) {\n startPathCommands.push(startPathCommands[startPathCommands.length - (options.id.indexOf('border') !== -1 ? 1 : 2)].replace('M', 'L'));\n }\n else {\n startPathCommands.splice(startPathCommands.length - 1, 0, startPathCommands[startPathCommands.length - (options.id.indexOf('border') !== -1 ? 1 : 2)]);\n }\n }\n }\n }\n animateAddPoints(points.element, options.d, series.chart.redraw, startPathCommands.join(' '), this.chart.duration);\n }\n else if (startPathCommands.length > endPathCommands.length) {\n for (var i = minLength; i < maxLength; i++) {\n if (endPathCommands.length !== startPathCommands.length) {\n if (series.removedPointIndex === series.points.length) {\n if (endPathCommands.length === 1) {\n endPathCommands.push(endPathCommands[endPathCommands.length - (options.id.indexOf('border') !== -1 ? 1 : 2)].replace('M', 'L'));\n }\n else {\n endPathCommands.splice(endPathCommands.length - 1, 0, endPathCommands[endPathCommands.length - (options.id.indexOf('border') !== -1 ? 1 : 2)]);\n }\n }\n else {\n endPathCommands.splice(1, 0, endPathCommands[1] ? endPathCommands[1] : endPathCommands[0]);\n }\n }\n }\n animateAddPoints(points.element, endPathCommands.join(''), series.chart.redraw, points.previousDirection, this.chart.duration, options.d);\n }\n else {\n animateAddPoints(points.element, options.d, series.chart.redraw, points.previousDirection, this.chart.duration);\n }\n }\n };\n /**\n * To render the marker for the series.\n *\n * @param {Series} series - The series for which markers are rendered.\n * @returns {void}\n * @private\n */\n LineBase.prototype.renderMarker = function (series) {\n if (series.marker && series.marker.visible) {\n series.chart.markerRender.render(series);\n }\n };\n /**\n * Executes progressive animation for the series.\n *\n * @param {Series} series - The series for which progressive animation is executed.\n * @param {AnimationModel} option - The animation option.\n * @returns {void}\n * @private\n */\n LineBase.prototype.doProgressiveAnimation = function (series, option) {\n var animation = new Animation({});\n var path = series.pathElement;\n var strokeDashArray = path.getAttribute('stroke-dasharray');\n var pathLength = series.pathElement.getTotalLength();\n var currentTime;\n path.style.visibility = 'hidden';\n animation.animate(path, {\n duration: (option.duration === 0 && animationMode === 'Enable') ? 1000 : option.duration,\n delay: option.delay,\n progress: function (args) {\n path.style.visibility = 'visible';\n currentTime = Math.abs(Math.round(((args.timeStamp) * pathLength) / args.duration));\n path.setAttribute('stroke-dasharray', currentTime + ',' + pathLength);\n },\n end: function () {\n var annotations = getElement(series.chart.element.id + '_Annotation_Collections');\n if (annotations) {\n annotations.style.visibility = 'visible';\n }\n path.setAttribute('stroke-dasharray', strokeDashArray);\n path.style.visibility = '';\n series.chart.trigger('animationComplete', { series: series.chart.isBlazor ? {} : series });\n }\n });\n };\n /**\n * To store the symbol location and region.\n *\n * @param {Points} point point\n * @param {Series} series series\n * @param {boolean} isInverted isInverted\n * @param {Function} getLocation getLocation\n * @returns {void}\n * @private\n */\n LineBase.prototype.storePointLocation = function (point, series, isInverted, getLocation) {\n var markerWidth = (series.marker && series.marker.width) ? series.marker.width : 0;\n var markerHeight = (series.marker && series.marker.height) ? series.marker.height : 0;\n point.symbolLocations.push(getLocation(point.xValue, point.yValue, series.xAxis, series.yAxis, isInverted, series));\n point.regions.push(new Rect(point.symbolLocations[0].x - markerWidth, point.symbolLocations[0].y - markerHeight, 2 * markerWidth, 2 * markerHeight));\n };\n /**\n * Checks if the y-value of a point falls within the y-axis range.\n *\n * @param {Points} point - The point to be checked.\n * @param {Axis} yAxis - The y-axis.\n * @returns {boolean} - Returns true if the y-value falls within the y-axis range, otherwise false.\n * @private\n */\n LineBase.prototype.withinYRange = function (point, yAxis) {\n return point.yValue >= yAxis.visibleRange.min && point.yValue <= yAxis.visibleRange.max;\n };\n LineBase.prototype.GetStepLineDirection = function (currentPoint, previousPoint, stepLineType, command, series, isBorder) {\n if (command === void 0) { command = 'L'; }\n var X = (series.noRisers && isBorder) ? ' M ' : ' L ';\n if (stepLineType === 'Right') {\n command = (series.noRisers && isBorder) ? 'M' : 'L';\n return (command + ' ' +\n (previousPoint.x) + ' ' + (currentPoint.y) + ' L ' + (currentPoint.x) + ' ' + (currentPoint.y) + ' ');\n }\n else if (stepLineType === 'Center') {\n var centerX = previousPoint.x + (currentPoint.x - previousPoint.x) / 2;\n return (command + ' ' +\n (centerX) + ' ' + (previousPoint.y) + X + (centerX) + ' ' + (currentPoint.y) + ' L ' + (currentPoint.x) + ' ' + (currentPoint.y) + ' ');\n }\n else {\n return (command + ' ' +\n (currentPoint.x) + ' ' + (previousPoint.y) + X + (currentPoint.x) + ' ' + (currentPoint.y) + ' ');\n }\n };\n /**\n * Gets the first and last visible points from a collection of points.\n *\n * @param {Points[]} points - Collection of points.\n * @returns {{ first: Points, last: Points }} - Returns an object containing the first and last visible points.\n * @private\n */\n LineBase.prototype.getFirstLastVisiblePoint = function (points) {\n var first = null;\n var last = null;\n for (var _i = 0, points_1 = points; _i < points_1.length; _i++) {\n var point = points_1[_i];\n if (first === null && point.visible) {\n first = last = point;\n }\n last = point.visible ? point : last;\n }\n return { first: first ? first : points[0], last: last ? last : points[points.length - 1] };\n };\n /**\n * Gets the border direction based on the provided direction.\n *\n * @param {string} direction - The direction string.\n * @returns {string} - Returns the border direction.\n * @private\n */\n LineBase.prototype.getBorderDirection = function (direction) {\n var coordinates = direction.split(' ');\n if (coordinates.length > 3 && !(this.chart.stackingAreaSeriesModule) && !(this.chart.stackingStepAreaSeriesModule)) {\n coordinates.splice(coordinates.length - 4, 3);\n }\n else if (this.chart.stackingAreaSeriesModule || this.chart.stackingStepAreaSeriesModule) {\n coordinates.splice(coordinates.length / 2 + 1, coordinates.length / 2 + 1);\n if (coordinates[coordinates.length - 1] === 'L' || coordinates[coordinates.length - 1] === 'M') {\n coordinates.splice(coordinates.length - 1, 1);\n }\n }\n return coordinates.join(' ');\n };\n /**\n * Removes the border from the empty points based on the provided border direction.\n *\n * @param {string} borderDirection - The border direction.\n * @returns {string} - Returns the updated border direction.\n * @private\n */\n LineBase.prototype.removeEmptyPointsBorder = function (borderDirection) {\n var startIndex = 0;\n var coordinates = borderDirection.split(' ');\n var point;\n if (coordinates.length === 4) {\n return coordinates.join(' ');\n }\n do {\n point = coordinates.indexOf('M', startIndex);\n if (point > -1) {\n coordinates.splice(point + 1, 3);\n startIndex = point + 1;\n if (point - 6 > 0) {\n coordinates.splice(point - 6, 6);\n startIndex -= 6;\n }\n }\n } while (point !== -1);\n return coordinates.join(' ');\n };\n /**\n * Performs linear animation for the series based on the provided animation model.\n *\n * @param {Series} series - The series to animate.\n * @param {AnimationModel} animation - The animation model containing animation details.\n * @returns {void}\n * @private\n */\n LineBase.prototype.doLinearAnimation = function (series, animation) {\n var clipRect = series.clipRectElement.childNodes[0].childNodes[0];\n var duration = series.chart.animated ? series.chart.duration : animation.duration;\n var effect = getAnimationFunction('Linear');\n var elementHeight = +clipRect.getAttribute('height');\n var elementWidth = +clipRect.getAttribute('width');\n var xCenter = +clipRect.getAttribute('x');\n var yCenter = series.chart.requireInvertedAxis ? +clipRect.getAttribute('height') + +clipRect.getAttribute('y') :\n +clipRect.getAttribute('y');\n var value;\n clipRect.style.visibility = 'hidden';\n this.animateRect(series, animation, clipRect, duration, effect, elementHeight, elementWidth, xCenter, yCenter, value);\n if (series.marker && series.marker.visible) {\n var markerClipRect = series.symbolElement.childNodes[0].childNodes[0];\n markerClipRect.style.visibility = 'hidden';\n this.animateRect(series, animation, markerClipRect, duration, effect, elementHeight, elementWidth, xCenter, yCenter, value);\n }\n };\n /**\n * Animates the given clip rectangle with the specified animation parameters.\n *\n * @param {Series} series - The series to which the clip rectangle belongs.\n * @param {AnimationModel} animation - The animation model containing animation details.\n * @param {HTMLElement} clipRect - The clip rectangle to animate.\n * @param {number} duration - The duration of the animation.\n * @param {Function} effect - The animation function to use.\n * @param {number} elementHeight - The height of the clip rectangle element.\n * @param {number} elementWidth - The width of the clip rectangle element.\n * @param {number} xCenter - The x-coordinate of the clip rectangle's center.\n * @param {number} yCenter - The y-coordinate of the clip rectangle's center.\n * @param {number} value - The animation value.\n * @returns {void}\n */\n LineBase.prototype.animateRect = function (series, animation, clipRect, duration, effect, elementHeight, elementWidth, xCenter, yCenter, value) {\n new Animation({}).animate(clipRect, {\n duration: (duration === 0 && animationMode === 'Enable') ? 1000 : duration,\n delay: animation.delay,\n progress: function (args) {\n clipRect.style.visibility = 'visible';\n if (series.chart.requireInvertedAxis) {\n value = effect(args.timeStamp, 0, elementHeight, args.duration);\n clipRect.setAttribute('transform', 'translate(' + xCenter + ' ' + yCenter +\n ') scale(1,' + (value / elementHeight) + ') translate(' + (-xCenter) + ' ' + (-yCenter) + ')');\n }\n else {\n value = effect(args.timeStamp, 0, elementWidth, args.duration);\n clipRect.setAttribute('transform', 'translate(' + xCenter + ' ' + yCenter +\n ') scale(' + (value / elementWidth) + ', 1) translate(' + (-xCenter) + ' ' + (-yCenter) + ')');\n }\n },\n end: function () {\n var annotations = getElement(series.chart.element.id + '_Annotation_Collections');\n if (annotations) {\n annotations.style.visibility = 'visible';\n }\n clipRect.setAttribute('transform', 'translate(0,0)');\n series.chart.trigger('animationComplete', { series: series.chart.isBlazor ? {} : series });\n }\n });\n };\n return LineBase;\n}());\nexport { LineBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { withInRange, getPoint, TransformToVisible } from '../../common/utils/helper';\nimport { PathOption } from '@syncfusion/ej2-svg-base';\nimport { LineBase } from './line-base';\n/**\n * The `LineSeries` module is used to render the line series.\n */\nvar LineSeries = /** @class */ (function (_super) {\n __extends(LineSeries, _super);\n function LineSeries() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Renders the line series based on the provided axis and inversion status.\n *\n * @param {Series} series - The series to render.\n * @param {Axis} xAxis - The X-axis associated with the series.\n * @param {Axis} yAxis - The Y-axis associated with the series.\n * @param {boolean} isInverted - Specifies whether the chart is inverted.\n * @param {boolean} pointAnimate - Specifies whether the point has to be animated or not.\n * @param {boolean} pointUpdate - Specifies whether the point has to be updated or not.\n * @returns {void}\n * @private\n */\n LineSeries.prototype.render = function (series, xAxis, yAxis, isInverted, pointAnimate, pointUpdate) {\n var point1;\n var point2;\n var direction = '';\n var prevPoint = null;\n var startPoint = 'M';\n var isPolar = (series.chart && series.chart.chartAreaType === 'PolarRadar');\n var isDrop = (series.emptyPointSettings && series.emptyPointSettings.mode === 'Drop');\n var getCoordinate = isPolar ? TransformToVisible : getPoint;\n var visiblePoints = series.category === 'TrendLine' ? series.points : this.enableComplexProperty(series);\n for (var _i = 0, visiblePoints_1 = visiblePoints; _i < visiblePoints_1.length; _i++) {\n var point = visiblePoints_1[_i];\n point.regions = [];\n point.symbolLocations = [];\n if (point.visible && withInRange(visiblePoints[point.index - 1], point, visiblePoints[point.index + 1], series)) {\n direction += this.getLineDirection(prevPoint, point, series, isInverted, getCoordinate, startPoint);\n startPoint = prevPoint ? 'L' : startPoint;\n prevPoint = point;\n this.storePointLocation(point, series, isInverted, getCoordinate);\n if (direction === '' && visiblePoints.length === 1) {\n direction = 'M ' + point.symbolLocations[0].x + ' ' + point.symbolLocations[0].y;\n }\n }\n else {\n prevPoint = isDrop ? prevPoint : null;\n startPoint = isDrop ? startPoint : 'M';\n }\n }\n if (isPolar) {\n if (series.isClosed) {\n var points = this.getFirstLastVisiblePoint(visiblePoints);\n point2 = getCoordinate(points.last.xValue, points.last.yValue, xAxis, yAxis, isInverted, series);\n point1 = getCoordinate(points.first.xValue, points.first.yValue, xAxis, yAxis, isInverted, series);\n direction = direction.concat(startPoint + ' ' + point2.x + ' ' + point2.y + ' ' + 'L' + ' ' + point1.x + ' ' + point1.y);\n }\n }\n var name = series.category === 'Indicator' ? series.chart.element.id + '_Indicator_' + series.index + '_' + series.name :\n series.category === 'TrendLine' ? series.chart.element.id + '_Series_' + series.sourceIndex + '_TrendLine_' + series.index :\n series.chart.element.id + '_Series_' + (series.index === undefined ? series.category : series.index);\n var options = new PathOption(name, 'none', series.width, series.interior, series.opacity, series.dashArray, direction);\n this[pointAnimate ? 'addPath' : 'appendLinePath'](options, series, '');\n if (!pointUpdate) {\n this.renderMarker(series);\n }\n };\n /**\n * To animate point for line series.\n *\n * @returns {void}\n * @private\n */\n LineSeries.prototype.updateDirection = function (series, point) {\n this.render(series, series.xAxis, series.yAxis, series.chart.requireInvertedAxis, false, true);\n for (var i = 0; i < point.length; i++) {\n if (series.marker && series.marker.visible) {\n series.chart.markerRender.renderMarker(series, series.points[point[i]], series.points[point[i]].symbolLocations[0], null, true);\n }\n if (series.marker.dataLabel.visible && series.chart.dataLabelModule) {\n series.chart.dataLabelModule.commonId = series.chart.element.id + '_Series_' + series.index + '_Point_';\n series.chart.dataLabelModule.renderDataLabel(series, series.points[point[i]], null, series.marker.dataLabel);\n }\n }\n };\n /**\n * Animates the series.\n *\n * @param {Series} series - Defines the series to animate.\n * @returns {void}\n * @private\n */\n LineSeries.prototype.doAnimation = function (series) {\n var option = series.animation;\n this.doProgressiveAnimation(series, option);\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name.\n */\n LineSeries.prototype.getModuleName = function () {\n /**\n * Returns the module name of the series\n */\n return 'LineSeries';\n };\n /**\n * To destroy the line series.\n *\n * @returns {void}\n * @private\n */\n LineSeries.prototype.destroy = function () {\n /**\n * Destroy method performed here.\n */\n };\n return LineSeries;\n}(LineBase));\nexport { LineSeries };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * Chart legend\n */\nimport { remove, Browser, extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { LegendOptions, BaseLegend } from '../../common/legend/legend';\nimport { textTrim, removeElement, RectOption, withInBounds, blazorTemplatesReset } from '../../common/utils/helper';\nimport { getUnicodeText } from '../../common/utils/helper';\nimport { measureText, Rect, getElement } from '@syncfusion/ej2-svg-base';\nimport { legendRender, legendClick, regSub, regSup } from '../../common/model/constants';\nimport { textWrap } from '../../common/utils/helper';\n/**\n * The `Legend` module is used to render the legend for the chart.\n */\nvar Legend = /** @class */ (function (_super) {\n __extends(Legend, _super);\n function Legend(chart) {\n var _this = _super.call(this, chart) || this;\n _this.library = _this;\n _this.addEventListener();\n return _this;\n }\n /**\n * Binding events for legend module.\n *\n * @returns {void}\n */\n Legend.prototype.addEventListener = function () {\n if (this.chart.isDestroyed) {\n return;\n }\n this.chart.on(Browser.touchMoveEvent, this.mouseMove, this);\n this.chart.on('click', this.click, this);\n this.chart.on(Browser.touchEndEvent, this.mouseEnd, this);\n };\n /**\n * UnBinding events for legend module.\n *\n * @returns {void}\n */\n Legend.prototype.removeEventListener = function () {\n if (this.chart.isDestroyed) {\n return;\n }\n this.chart.off(Browser.touchMoveEvent, this.mouseMove);\n this.chart.off('click', this.click);\n this.chart.off(Browser.touchEndEvent, this.mouseEnd);\n };\n /**\n * To handle mosue move for legend module.\n *\n * @param {MouseEvent} e - The mouse event.\n * @returns {void}\n */\n Legend.prototype.mouseMove = function (e) {\n if (this.chart.legendSettings.visible && !this.chart.isTouch) {\n this.move(e);\n if (this.chart.highlightModule && (this.chart.highlightMode !== 'None' || this.chart.legendSettings.enableHighlight)) {\n var legendItemsId = [this.legendID + '_text_', this.legendID + '_shape_marker_',\n this.legendID + '_shape_', this.legendID + '_g_'];\n var targetId = e.target.id;\n var index = void 0;\n for (var _i = 0, legendItemsId_1 = legendItemsId; _i < legendItemsId_1.length; _i++) {\n var id = legendItemsId_1[_i];\n if (targetId.indexOf(id) > -1) {\n index = parseInt(targetId.split(id)[1], 10);\n this.chart.highlightModule.legendSelection(this.chart, index, e.target, e.type);\n break;\n }\n }\n // this.click(e);\n }\n }\n };\n /**\n * To handle mosue end for legend module.\n *\n * @param {MouseEvent} e - The mouse event.\n * @returns {void}\n */\n Legend.prototype.mouseEnd = function (e) {\n if (this.chart.legendSettings.visible && this.chart.isTouch) {\n this.move(e);\n }\n };\n /**\n * Retrieves the legend options based on the visible series collection and chart.\n *\n * @param {Series[]} visibleSeriesCollection - The collection of visible series.\n * @param {Chart} chart - The chart instance.\n * @returns {void}\n * @private\n */\n Legend.prototype.getLegendOptions = function (visibleSeriesCollection, chart) {\n this.legendCollections = [];\n var seriesType;\n var fill;\n var dashArray;\n var colors = [];\n this.isRtlEnable = chart.enableRtl;\n this.isReverse = !this.isRtlEnable && chart.legendSettings.reverse;\n if (visibleSeriesCollection.length > 1) {\n this.legend.mode = 'Series';\n }\n for (var _i = 0, visibleSeriesCollection_1 = visibleSeriesCollection; _i < visibleSeriesCollection_1.length; _i++) {\n var series = visibleSeriesCollection_1[_i];\n if (this.legend.mode === 'Series') {\n if (series.category !== 'Indicator') {\n seriesType = (chart.chartAreaType === 'PolarRadar') ? series.drawType :\n series.type;\n dashArray = !series.marker.visible && (seriesType.indexOf('Line') > -1 && seriesType.indexOf('Area') === -1) ? series.dashArray : '';\n // To set legend color when use pointColorMapping\n fill = (series.pointColorMapping && series.points.length > 0) ?\n (series.points[0].interior ? series.points[0].interior : series.interior) : series.interior;\n this.legendCollections.push(new LegendOptions(series.name, fill, series.legendShape, (series.category === 'TrendLine' ?\n this.chart.series[series.sourceIndex].trendlines[series.index].visible : series.visible), seriesType, series.legendImageUrl ? series.legendImageUrl : (series.type === 'Scatter' && series.marker.shape === 'Image' ?\n series.marker.imageUrl : ''), series.marker.shape, series.marker.visible, null, null, dashArray));\n }\n }\n else if (this.legend.mode === 'Point') {\n for (var _a = 0, _b = series.points; _a < _b.length; _a++) {\n var points = _b[_a];\n seriesType = (chart.chartAreaType === 'PolarRadar') ? series.drawType :\n series.type;\n fill = points.interior ? points.interior : series.interior;\n this.legendCollections.push(new LegendOptions(points.x.toString(), fill, series.legendShape, (series.category === 'TrendLine' ?\n this.chart.series[series.sourceIndex].trendlines[series.index].visible : points.visible), seriesType, (series.type === 'Scatter' && series.marker.shape === 'Image') ? series.marker.imageUrl : '', series.marker.shape, series.marker.visible));\n }\n }\n else if (this.legend.mode === 'Range') {\n for (var _c = 0, _d = series.points; _c < _d.length; _c++) {\n var points = _d[_c];\n seriesType = (chart.chartAreaType === 'PolarRadar') ? series.drawType :\n series.type;\n fill = points.interior ? points.interior : series.interior;\n var legendLabel = 'Others';\n if (colors.indexOf(fill) < 0) {\n colors.push(fill);\n if (chart.rangeColorSettings.length >= 1 && chart.rangeColorSettings[0].colors.length === 1) {\n for (var _e = 0, _f = chart.rangeColorSettings; _e < _f.length; _e++) {\n var rangeMap = _f[_e];\n if (rangeMap.colors[0] === fill) {\n legendLabel = rangeMap.label;\n }\n }\n this.legendCollections.push(new LegendOptions(legendLabel, fill, series.legendShape, (series.category === 'TrendLine' ?\n this.chart.series[series.sourceIndex].trendlines[series.index].visible : points.visible), seriesType, (series.type === 'Scatter' && series.marker.shape === 'Image') ? series.marker.imageUrl : '', series.marker.shape, series.marker.visible));\n }\n }\n }\n }\n else {\n if (this.legendCollections.length === 0 && chart.rangeColorSettings.length > 0) {\n var startLabel = chart.rangeColorSettings[0].start.toString();\n var endLabel = chart.rangeColorSettings[chart.rangeColorSettings.length - 1].end.toString();\n this.legendCollections.push(new LegendOptions(startLabel, series.interior, 'Rectangle', true, seriesType, '', series.marker.shape, series.marker.visible));\n this.legendCollections.push(new LegendOptions(endLabel, series.interior, 'Rectangle', true, seriesType, '', series.marker.shape, series.marker.visible));\n }\n }\n }\n if (this.isReverse && chart.legendSettings.mode !== 'Gradient') {\n this.legendCollections.reverse();\n }\n };\n /**\n * Calculates the legend bounds based on the available size and legend settings.\n *\n * @param {Size} availableSize - The available size for the legend.\n * @param {Rect} legendBounds - The current bounds of the legend.\n * @param {LegendSettingsModel} legend - The legend settings.\n * @returns {void}\n * @private\n */\n Legend.prototype.getLegendBounds = function (availableSize, legendBounds, legend) {\n this.calculateLegendTitle(legend, legendBounds);\n this.isTitle = legend.title ? true : false;\n this.chartRowCount = 1;\n this.rowHeights = [];\n this.columnHeights = [];\n this.pageHeights = [];\n var padding = legend.padding;\n var titlePosition = legend.titlePosition;\n var extraHeight = 0;\n var legendOption;\n var extraWidth = 0;\n var arrowWidth = this.arrowWidth;\n var arrowHeight = this.arrowHeight;\n var verticalArrowSpace = this.isVertical && !legend.enablePages ? arrowHeight : 0;\n var titleSpace = this.isTitle && titlePosition === 'Top' ? this.legendTitleSize.height + this.fivePixel : 0;\n titleSpace = this.isTitle && this.isVertical && titlePosition !== 'Top' ? this.legendTitleSize.height + this.fivePixel : titleSpace;\n if (!this.isVertical) {\n extraHeight = !legend.height ? ((availableSize.height / 100) * 5) : 0;\n }\n else {\n extraWidth = !legend.width ? ((availableSize.width / 100) * 5) : 0;\n }\n legendBounds.height += (extraHeight);\n legendBounds.width += extraWidth;\n var shapeWidth = legend.shapeWidth;\n var shapePadding = legend.shapePadding;\n var maximumWidth = 0;\n var rowWidth = 0;\n var legendWidth = 0;\n var columnHeight = 0;\n var columnCount = 0;\n var rowCount = 0;\n var titlePlusArrowSpace = 0;\n var legendEventArgs;\n var render = false;\n this.maxItemHeight = Math.max(measureText('MeasureText', legend.textStyle, this.chart.themeStyle.legendLabelFont).height, legend.shapeHeight);\n for (var i = 0; i < this.legendCollections.length; i++) {\n legendOption = this.legendCollections[i];\n if (regSub.test(legendOption.text)) {\n legendOption.text = getUnicodeText(legendOption.text, regSub);\n }\n if (regSup.test(legendOption.text)) {\n legendOption.text = getUnicodeText(legendOption.text, regSup);\n }\n legendEventArgs = {\n fill: legendOption.fill, text: legendOption.text, shape: legendOption.shape,\n markerShape: legendOption.markerShape, name: legendRender, cancel: false\n };\n this.chart.trigger(legendRender, legendEventArgs);\n legendOption.render = !legendEventArgs.cancel;\n legendOption.text = legendEventArgs.text;\n legendOption.fill = legendEventArgs.fill;\n legendOption.shape = legendEventArgs.shape;\n legendOption.markerShape = legendEventArgs.markerShape;\n legendOption.textSize = measureText(legendOption.text, legend.textStyle, this.chart.themeStyle.legendLabelFont);\n shapeWidth = legendOption.text ? legend.shapeWidth : 0;\n shapePadding = legendOption.text ? legend.shapePadding : 0;\n if (legendOption.render && legendOption.text) {\n render = true;\n legendWidth = shapeWidth + shapePadding + (legend.maximumLabelWidth ? legend.maximumLabelWidth :\n legendOption.textSize.width) + (!this.isVertical ? (i === 0) ? padding : this.itemPadding : padding);\n rowWidth = rowWidth + legendWidth;\n if (!legend.enablePages && !this.isVertical) {\n titlePlusArrowSpace = this.isTitle && titlePosition !== 'Top' ? this.legendTitleSize.width + this.fivePixel : 0;\n titlePlusArrowSpace += arrowWidth;\n }\n this.getLegendHeight(legendOption, legend, legendBounds, rowWidth, this.maxItemHeight, padding);\n if (legendBounds.width < (padding + rowWidth + titlePlusArrowSpace) || this.isVertical) {\n maximumWidth = Math.max(maximumWidth, (rowWidth + padding + titlePlusArrowSpace - (this.isVertical ? 0 : legendWidth)));\n if (rowCount === 0 && (legendWidth !== rowWidth)) {\n rowCount = 1;\n }\n rowWidth = this.isVertical ? 0 : legendWidth;\n rowCount++;\n columnCount = 0;\n columnHeight = verticalArrowSpace;\n //columnHeight = (rowCount * (this.maxItemHeight + padding)) + padding + titleSpace + verticalArrowSpace;\n }\n var len = (rowCount > 0 ? (rowCount - 1) : 0);\n this.rowHeights[len] = Math.max((this.rowHeights[len] ?\n this.rowHeights[len] : 0), legendOption.textSize.height);\n // this.maxItemHeight = Math.max(this.maxItemHeight, legendOption.textSize.height);\n this.columnHeights[columnCount] = (this.columnHeights[columnCount] ?\n this.columnHeights[columnCount] : 0) + legendOption.textSize.height +\n (this.isVertical ? (i === 0) ? padding : this.itemPadding : padding);\n columnCount++;\n }\n }\n columnHeight = Math.max.apply(null, this.columnHeights) + padding + titleSpace;\n columnHeight = Math.max(columnHeight, (this.maxItemHeight + padding) + padding + titleSpace);\n this.isPaging = legendBounds.height < columnHeight;\n if (this.isPaging && !legend.enablePages) {\n if (!this.isVertical) {\n columnHeight = (this.maxItemHeight + padding) + padding + (titlePosition === 'Top' ? titleSpace : 0);\n }\n }\n this.totalPages = rowCount;\n if (!this.isPaging && !this.isVertical) {\n rowWidth += this.isTitle && titlePosition !== 'Top' ? (this.fivePixel + this.legendTitleSize.width + this.fivePixel) : 0;\n }\n if (render) {\n this.setBounds(Math.max((rowWidth + padding), maximumWidth), columnHeight, legend, legendBounds);\n }\n else {\n this.setBounds(0, 0, legend, legendBounds);\n }\n };\n /**\n * Calculates the height of the legend based on the legend options, settings, and available space.\n *\n * @param {LegendOptions} legendOption - The legend options.\n * @param {LegendSettingsModel} legend - The legend settings.\n * @param {Rect} legendBounds - The current bounds of the legend.\n * @param {number} rowWidth - The width of the legend rows.\n * @param {number} legendHeight - The current height of the legend.\n * @param {number} padding - The padding around the legend items.\n * @returns {void}\n * @private\n */\n Legend.prototype.getLegendHeight = function (legendOption, legend, legendBounds, rowWidth, legendHeight, padding) {\n var legendWidth = legendOption.textSize.width;\n var textPadding = legend.shapePadding + (padding * 2) + legend.shapeWidth;\n switch (legend.textWrap) {\n case 'Wrap':\n case 'AnyWhere':\n if (legendWidth > legend.maximumLabelWidth || legendWidth + rowWidth > legendBounds.width) {\n legendOption.textCollection = textWrap(legendOption.text, (legend.maximumLabelWidth ? Math.min(legend.maximumLabelWidth, (legendBounds.width - textPadding)) :\n (legendBounds.width - textPadding)), legend.textStyle, this.chart.enableRtl, null, null, this.chart.themeStyle.legendLabelFont);\n }\n else {\n legendOption.textCollection.push(legendOption.text);\n }\n legendOption.textSize.height = (legendHeight * legendOption.textCollection.length);\n break;\n }\n };\n /**\n * Calculates the rendering point for the legend item based on various parameters.\n *\n * @param {LegendOptions} legendOption - The legend options.\n * @param {ChartLocation} start - The starting location for the legend.\n * @param {number} textPadding - The padding around the legend text.\n * @param {LegendOptions} previousLegend - The options of the previous legend item.\n * @param {Rect} rect - The bounding rectangle for the legend.\n * @param {number} count - The count of legend items.\n * @param {number} firstLegend - The index of the first legend item.\n * @returns {void}\n * @private\n */\n Legend.prototype.getRenderPoint = function (legendOption, start, textPadding, previousLegend, rect, count, firstLegend) {\n var padding = this.legend.padding;\n var textWidth = textPadding + (this.legend.maximumLabelWidth ?\n this.legend.maximumLabelWidth : previousLegend.textSize.width);\n var previousBound = previousLegend.location.x + ((!this.isRtlEnable) ? textWidth : -textWidth);\n if (this.isWithinBounds(previousBound, (this.legend.maximumLabelWidth ?\n this.legend.maximumLabelWidth : legendOption.textSize.width) + textPadding - this.itemPadding, rect) || this.isVertical) {\n legendOption.location.x = start.x;\n if (count !== firstLegend) {\n this.chartRowCount++;\n }\n legendOption.location.y = (count === firstLegend) ? previousLegend.location.y :\n previousLegend.location.y + (this.isVertical ? previousLegend.textSize.height :\n this.rowHeights[(this.chartRowCount - 2)]) + (this.isVertical ? this.itemPadding : padding);\n }\n else {\n legendOption.location.x = (count === firstLegend) ? previousLegend.location.x : previousBound;\n legendOption.location.y = previousLegend.location.y;\n }\n var availwidth = (!this.isRtlEnable) ? (this.legendBounds.x + this.legendBounds.width) - (legendOption.location.x +\n textPadding - this.itemPadding - this.legend.shapeWidth / 2) : (legendOption.location.x - textPadding + this.itemPadding +\n (this.legend.shapeWidth / 2)) - this.legendBounds.x;\n if (!this.isVertical && this.isPaging && !this.legend.enablePages) {\n availwidth = this.legendBounds.width - legendOption.location.x - this.fivePixel;\n }\n availwidth = this.legend.maximumLabelWidth ? Math.min(this.legend.maximumLabelWidth, availwidth) : availwidth;\n if (this.legend.textOverflow === 'Ellipsis' && this.legend.textWrap === 'Normal') {\n legendOption.text = textTrim(+availwidth.toFixed(4), legendOption.text, this.legend.textStyle, this.chart.enableRtl, this.chart.themeStyle.legendLabelFont);\n }\n };\n Legend.prototype.isWithinBounds = function (previousBound, textWidth, rect) {\n if (!this.isRtlEnable) {\n return (previousBound + textWidth) > (rect.x + rect.width + (this.legend.shapeWidth / 2));\n }\n else {\n return (previousBound - textWidth) < (rect.x - (this.legend.shapeWidth / 2));\n }\n };\n /**\n * Handles the click event for a legend item.\n *\n * @param {number} index - The index of the clicked legend item.\n * @param {Event | PointerEvent} event - The click event.\n * @returns {void}\n * @private\n */\n Legend.prototype.LegendClick = function (index, event) {\n var chart = this.chart;\n var seriesIndex = chart.legendSettings.mode === 'Series' ? index : 0;\n var legendIndex = !this.isReverse ? index : (this.legendCollections.length - 1) - index;\n var series = chart.visibleSeries[seriesIndex];\n var legend = this.legendCollections[legendIndex];\n var changeDetection = 'isProtectedOnChange';\n if (chart.legendSettings.mode === 'Series') {\n var legendClickArgs = {\n legendText: legend.text, legendShape: legend.shape,\n chart: chart.isBlazor ? {} : chart, series: series, points: series.points, name: legendClick, cancel: false\n };\n this.chart.trigger(legendClick, legendClickArgs);\n series.legendShape = legendClickArgs.legendShape;\n if (!legendClickArgs.cancel) {\n if (series.fill !== null) {\n chart.visibleSeries[index].interior = series.fill;\n }\n if (chart.legendSettings.toggleVisibility) {\n series.chart[changeDetection] = true;\n if (series.category === 'TrendLine') {\n if (!chart.series[series.sourceIndex].trendlines[series.index].visible &&\n chart.series[series.sourceIndex].visible) {\n chart.series[series.sourceIndex].trendlines[series.index].visible = true;\n }\n else {\n chart.series[series.sourceIndex].trendlines[series.index].visible = false;\n }\n }\n else {\n this.changeSeriesVisiblity(series, series.visible);\n }\n legend.visible = series.category === 'TrendLine' ? chart.series[series.sourceIndex].trendlines[series.index].visible :\n (series.visible);\n this.refreshLegendToggle(chart, series);\n if (chart.highlightModule && chart.legendSettings.enableHighlight) {\n chart.highlightModule.legendSelection(chart, index, event.target, 'mousemove');\n }\n }\n else if (chart.highlightModule) {\n chart.highlightModule.legendSelection(chart, index, event.target, event.type);\n }\n else if (chart.selectionModule) {\n chart.selectionModule.legendSelection(chart, index, event.target, event.type);\n }\n series.chart[changeDetection] = false;\n }\n }\n else if (chart.legendSettings.mode === 'Point') {\n var point = series.points[index];\n var legendClickArgs = {\n legendText: legend.text, legendShape: legend.shape,\n chart: chart.isBlazor ? {} : chart, series: series, points: [point], name: legendClick, cancel: false\n };\n this.chart.trigger(legendClick, legendClickArgs);\n if (chart.legendSettings.toggleVisibility && !legendClickArgs.cancel) {\n point.visible = !point.visible;\n var legendOption = this.legendCollections[index];\n legendOption.visible = point.visible;\n this.refreshLegendToggle(chart, series);\n }\n }\n else if (chart.legendSettings.mode === 'Range') {\n var points = [];\n var legendOption = this.legendCollections[index];\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var point = _a[_i];\n if (legendOption.fill === (point.interior || series.interior)) {\n points.push(point);\n }\n }\n var legendClickArgs = {\n legendText: legend.text, legendShape: legend.shape,\n chart: chart.isBlazor ? {} : chart, series: series, points: points, name: legendClick, cancel: false\n };\n this.chart.trigger(legendClick, legendClickArgs);\n if (chart.legendSettings.toggleVisibility && !legendClickArgs.cancel) {\n legendOption.visible = !legendOption.visible;\n for (var _b = 0, points_1 = points; _b < points_1.length; _b++) {\n var point = points_1[_b];\n point.visible = !point.visible;\n }\n this.refreshLegendToggle(chart, series);\n }\n }\n };\n Legend.prototype.refreshLegendToggle = function (chart, series) {\n var selectedDataIndexes = [];\n if (chart.selectionModule) {\n selectedDataIndexes = extend([], chart.selectionModule.selectedDataIndexes, null, true);\n }\n if ((chart.svgObject.childNodes.length > 0) && !chart.enableAnimation && !chart.enableCanvas) {\n while (chart.svgObject.lastChild) {\n chart.svgObject.removeChild(chart.svgObject.lastChild);\n }\n remove(chart.svgObject);\n }\n chart.animateSeries = false;\n chart.redraw = chart.enableAnimation;\n series.isLegendClicked = true;\n chart.rotatedDataLabelCollections = [];\n removeElement(getElement(chart.element.id + '_Secondary_Element').querySelectorAll('.ejSVGTooltip')[0]);\n blazorTemplatesReset(chart);\n this.redrawSeriesElements(series, chart);\n chart.removeSvg();\n chart.refreshAxis();\n series.refreshAxisLabel();\n this.refreshSeries(chart.visibleSeries);\n for (var _i = 0, _a = chart.visibleSeries; _i < _a.length; _i++) {\n var series_1 = _a[_i];\n if (!isNullOrUndefined(series_1)) {\n chart.markerRender.removeHighlightedMarker(series_1, null, true);\n }\n }\n chart.refreshBound();\n chart.trigger('loaded', { chart: chart });\n if (selectedDataIndexes.length > 0) {\n chart.selectionModule.selectedDataIndexes = selectedDataIndexes;\n chart.selectionModule.redrawSelection(chart, chart.selectionMode);\n }\n if (!chart.enableCanvas && chart.highlightModule && (chart.highlightMode !== 'None' || chart.legendSettings.enableHighlight)) {\n chart.highlightModule.redrawSelection(chart, chart.highlightMode);\n }\n chart.redraw = false;\n series.isLegendClicked = false;\n };\n Legend.prototype.changeSeriesVisiblity = function (series, visibility) {\n series.visible = !visibility;\n if (this.isSecondaryAxis(series.xAxis)) {\n series.xAxis.internalVisibility = series.xAxis.series.some(function (value) { return (value.visible); });\n }\n if (this.isSecondaryAxis(series.yAxis) || (series.category === 'Pareto' && series.type === 'Line')) {\n series.yAxis.internalVisibility = series.yAxis.series.some(function (value) { return (value.visible); });\n }\n if (series.trendlines.length && series.visible) {\n series.trendlines.forEach(function (trendline) {\n trendline.visible = true;\n });\n }\n };\n Legend.prototype.isSecondaryAxis = function (axis) {\n return (this.chart.axes.indexOf(axis) > -1);\n };\n Legend.prototype.redrawSeriesElements = function (series, chart) {\n if (!chart.redraw) {\n return null;\n }\n removeElement(chart.element.id + '_Series_' + (series.index === undefined ? series.category : series.index) +\n '_DataLabelCollections');\n };\n Legend.prototype.refreshSeries = function (seriesCollection) {\n for (var _i = 0, seriesCollection_1 = seriesCollection; _i < seriesCollection_1.length; _i++) {\n var series = seriesCollection_1[_i];\n if (series.type.indexOf('Spline') > -1) {\n var isArea = (series.type.indexOf('Area') > -1 || series.drawType.indexOf('Area') > -1);\n var isRange = series.type.indexOf('Range') > -1;\n this.chart['spline' + (isArea ? isRange ? 'RangeArea' : 'Area' : '') + 'SeriesModule'].findSplinePoint(series);\n }\n if (series.visible) {\n series.position = undefined;\n }\n }\n };\n /**\n * Handles the click event for showing tooltip on trimmed text in legend.\n *\n * @param {Event | PointerEvent} event - The click event.\n * @returns {void}\n * @private\n */\n Legend.prototype.click = function (event) {\n var _this = this;\n if (!this.chart.legendSettings.visible) {\n return;\n }\n var pageX = this.chart.mouseX;\n var pageY = this.chart.mouseY;\n var legendRegion = [];\n var targetId = event.target.id.indexOf('_chart_legend_g_') > -1 ?\n event.target.firstChild['id'] : event.target.id;\n var legendItemsId = [this.legendID + '_text_', this.legendID + '_shape_marker_',\n this.legendID + '_shape_'];\n var seriesIndex;\n for (var _i = 0, legendItemsId_2 = legendItemsId; _i < legendItemsId_2.length; _i++) {\n var id = legendItemsId_2[_i];\n if (targetId.indexOf(id) > -1) {\n seriesIndex = parseInt(targetId.split(id)[1], 10);\n this.LegendClick(seriesIndex, event);\n break;\n }\n }\n if (targetId.indexOf(this.legendID + '_pageup') > -1) {\n this.changePage(event, true);\n }\n else if (targetId.indexOf(this.legendID + '_pagedown') > -1) {\n this.changePage(event, false);\n }\n if (this.chart.enableCanvas && this.pagingRegions.length) {\n this.checkWithinBounds(pageX, pageY);\n }\n legendRegion = this.legendRegions.filter(function (region) {\n return (withInBounds(pageX, (pageY + (_this.isPaging ? (_this.currentPageNumber - 1) *\n _this.translatePage(_this.chart.enableCanvas, null, 1, 2) : 0)), region.rect));\n });\n if (legendRegion.length && this.chart.enableCanvas) {\n this.LegendClick(legendRegion[0].index, event);\n }\n };\n /**\n * Checks whether the provided coordinates are within the bounds.\n *\n * @param {number} pageX - The x-coordinate of the mouse pointer.\n * @param {number} pageY - The y-coordinate of the mouse pointer.\n * @returns {void}\n * @protected\n */\n Legend.prototype.checkWithinBounds = function (pageX, pageY) {\n var cRender = this.chart.renderer;\n var bounds = this.legendBounds;\n var borderWidth = this.chart.legendSettings.border.width;\n var canvasRect = new Rect(bounds.x, bounds.y, bounds.width, bounds.height);\n canvasRect.x = canvasRect.x - borderWidth / 2;\n canvasRect.y = canvasRect.y - borderWidth / 2;\n canvasRect.width = canvasRect.width + borderWidth;\n canvasRect.height = canvasRect.height + borderWidth;\n if (withInBounds(pageX, pageY, this.pagingRegions[0])) {\n // pageDown calculations are performing here\n if (!this.isRtlEnable) {\n this.canvasPageDown(cRender, canvasRect, bounds);\n }\n else {\n this.canvasPageUp(cRender, canvasRect, bounds);\n }\n return null;\n }\n if (withInBounds(pageX, pageY, this.pagingRegions[1])) {\n // pageUp calculations are performing here\n if (!this.isRtlEnable) {\n this.canvasPageUp(cRender, canvasRect, bounds);\n }\n else {\n this.canvasPageDown(cRender, canvasRect, bounds);\n }\n return null;\n }\n };\n Legend.prototype.canvasPageDown = function (cRender, canvasRect, bounds) {\n if (--this.currentPageNumber > 0) {\n this.legendRegions = [];\n cRender.clearRect(canvasRect);\n cRender.canvasClip(new RectOption('legendClipPath', 'transparent', { width: 0, color: '' }, null, canvasRect));\n this.renderLegend(this.chart, this.legend, bounds);\n cRender.canvasRestore();\n }\n else {\n ++this.currentPageNumber;\n }\n };\n Legend.prototype.canvasPageUp = function (cRender, canvasRect, bounds) {\n if (++this.currentPageNumber > 0 && this.currentPageNumber <= this.totalNoOfPages) {\n this.legendRegions = [];\n cRender.clearRect(canvasRect);\n cRender.canvasClip(new RectOption('legendClipPath', 'transpaent', { width: 0, color: '' }, null, canvasRect));\n this.renderLegend(this.chart, this.legend, bounds);\n cRender.canvasRestore();\n }\n else {\n --this.currentPageNumber;\n }\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name.\n */\n Legend.prototype.getModuleName = function () {\n return 'Legend';\n };\n /**\n * To destroy the Legend.\n *\n * @returns {void}\n * @private\n */\n Legend.prototype.destroy = function () {\n this.removeEventListener();\n };\n return Legend;\n}(BaseLegend));\nexport { Legend };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { extend, Browser, remove } from '@syncfusion/ej2-base';\nimport { PointData, ChartLocation } from '../../common/utils/helper';\nimport { getElement, measureText, Rect } from '@syncfusion/ej2-svg-base';\nimport { valueToCoefficient, removeElement, valueToPolarCoefficient, withInBounds } from '../../common/utils/helper';\nimport { BaseTooltip } from '../../common/user-interaction/tooltip';\nimport { tooltipRender, sharedTooltipRender } from '../../common/model/constants';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * The `Tooltip` module is used to render tooltips for chart series.\n */\nvar Tooltip = /** @class */ (function (_super) {\n __extends(Tooltip, _super);\n /**\n * Constructor for the Touch module.\n *\n * @param {Chart} chart - The chart instance.\n */\n function Tooltip(chart) {\n var _this = _super.call(this, chart) || this;\n _this.commonXvalues = [];\n _this.addEventListener();\n return _this;\n }\n /**\n * Adds event listeners for the chart.\n *\n * @returns {void}\n */\n Tooltip.prototype.addEventListener = function () {\n if (this.chart.isDestroyed) {\n return;\n }\n var cancelEvent = Browser.isPointer ? 'pointerleave' : 'mouseleave';\n this.chart.on(cancelEvent, this.mouseLeaveHandler, this);\n this.chart.on('tapHold', this.longPress, this);\n this.chart.on(Browser.touchMoveEvent, this.mouseMoveHandler, this);\n this.chart.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n };\n Tooltip.prototype.mouseUpHandler = function () {\n var chart = this.control;\n var data = this.getData();\n data.lierIndex = this.lierIndex;\n if (chart.isTouch && !this.isSelected(chart) &&\n ((withInBounds(chart.mouseX, chart.mouseY, chart.chartAxisLayoutPanel.seriesClipRect) && chart.tooltip.shared)\n || !chart.tooltip.shared)) {\n if (!chart.crosshair.enable) {\n this.tooltip();\n if (chart.tooltip.fadeOutMode === 'Move') {\n this.removeTooltip(chart.tooltip.fadeOutDuration);\n }\n }\n else if (chart.startMove && chart.tooltip.fadeOutMode === 'Move') {\n this.removeTooltip(2000);\n }\n }\n else if (!this.findData(data, this.previousPoints[0]) && chart.tooltip.fadeOutMode === 'Click') {\n this.removeTooltip(0);\n }\n };\n Tooltip.prototype.mouseLeaveHandler = function () {\n this.removeTooltip(this.chart.tooltip.fadeOutDuration);\n };\n Tooltip.prototype.mouseMoveHandler = function () {\n var chart = this.chart;\n if (chart.stockChart && chart.stockChart.onPanning) {\n if (chart.mouseY < chart.chartAxisLayoutPanel.seriesClipRect.y) {\n chart.mouseY = chart.chartAxisLayoutPanel.seriesClipRect.y;\n }\n else if (chart.mouseY > chart.chartAxisLayoutPanel.seriesClipRect.y + chart.chartAxisLayoutPanel.seriesClipRect.height) {\n chart.mouseY = chart.chartAxisLayoutPanel.seriesClipRect.y + chart.chartAxisLayoutPanel.seriesClipRect.height;\n }\n }\n // Tooltip for chart series.\n if (!chart.disableTrackTooltip && !this.isSelected(chart)) {\n if (!chart.tooltip.shared && (!chart.isTouch || (chart.startMove))) {\n this.tooltip();\n }\n if (withInBounds(chart.mouseX, chart.mouseY, chart.chartAxisLayoutPanel.seriesClipRect)) {\n if (chart.tooltip.shared && (!chart.isTouch || (chart.startMove))) {\n this.tooltip();\n }\n }\n else {\n if (chart.tooltip.shared && chart.tooltip.fadeOutMode === 'Move') {\n this.removeTooltip(this.chart.tooltip.fadeOutDuration);\n }\n }\n }\n };\n /**\n * Handles the long press on chart.\n *\n * @returns {boolean} false\n * @private\n */\n Tooltip.prototype.longPress = function () {\n var chart = this.chart;\n if (chart.crosshair.enable && withInBounds(chart.mouseX, chart.mouseY, chart.chartAxisLayoutPanel.seriesClipRect)) {\n this.tooltip();\n chart.markerRender.markerMove(false);\n }\n return false;\n };\n /**\n * Renders the tooltip.\n *\n * @returns {void}\n * @private\n */\n Tooltip.prototype.tooltip = function () {\n var elementId = this.chart.enableCanvas ? this.element.id + '_tooltip_group' : this.element.id + '_tooltip_svg';\n var svgElement = this.getElement(elementId);\n // To prevent the disappearance of the tooltip, while resize the stock chart.\n var isStockSvg = this.chart.stockChart && svgElement && (svgElement.firstChild.childNodes.length > 1);\n var isTooltip = (svgElement && parseInt(svgElement.getAttribute('opacity'), 10) > 0 && !isStockSvg);\n var tooltipDiv = this.getTooltipElement(isTooltip);\n if (this.chart.enableCanvas && tooltipDiv) {\n document.getElementById(this.chart.element.id + '_Secondary_Element').appendChild(tooltipDiv);\n tooltipDiv.appendChild(document.getElementById(this.chart.element.id + '_tooltip_svg'));\n }\n if (!this.chart.tooltip.shared) {\n this.renderSeriesTooltip(this.chart, !isTooltip, tooltipDiv);\n }\n else {\n this.renderGroupedTooltip(this.chart, !isTooltip, tooltipDiv);\n }\n };\n Tooltip.prototype.findHeader = function (data) {\n if (this.header === '') {\n return '';\n }\n this.header = this.parseTemplate(data.point, data.series, this.header, data.series.xAxis, data.series.yAxis);\n if (this.header.replace(//g, '').replace(/<\\/b>/g, '').trim() !== '') {\n return this.header;\n }\n return '';\n };\n Tooltip.prototype.findShapes = function () {\n if (!this.chart.tooltip.enableMarker) {\n return [];\n }\n var marker = [];\n for (var _i = 0, _a = this.currentPoints; _i < _a.length; _i++) {\n var data = _a[_i];\n marker.push(data.point.marker.shape || data.series.marker.shape || 'Circle');\n }\n return marker;\n };\n Tooltip.prototype.renderSeriesTooltip = function (chart, isFirst, tooltipDiv) {\n var data = this.getData();\n data.lierIndex = this.lierIndex;\n this.currentPoints = [];\n if (this.findData(data, this.previousPoints[0])) {\n if (!(chart.dataEditingModule && chart.dataEditingModule.isPointDragging) && (this.previousPoints[0] &&\n data.point.index === this.previousPoints[0].point.index && data.series.index === this.previousPoints[0].series.index)) {\n return null;\n }\n if (this.pushData(data, isFirst, tooltipDiv, true)) {\n this.triggerTooltipRender(data, isFirst, this.getTooltipText(data), this.findHeader(data));\n }\n }\n else {\n if (!data.point && this.isRemove && chart.tooltip.fadeOutMode === 'Move') {\n this.removeTooltip(this.chart.tooltip.fadeOutDuration);\n this.isRemove = false;\n }\n else {\n var commonXvalues = this.mergeXvalues(this.chart.visibleSeries);\n for (var _i = 0, _a = chart.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n if (series.visible && !(series.category === 'TrendLine')) {\n data = this.getClosestX(chart, series, commonXvalues) || data;\n }\n }\n }\n }\n if (data && data.point) {\n this.findMouseValue(data, chart);\n }\n };\n Tooltip.prototype.triggerTooltipRender = function (point, isFirst, textCollection, headerText) {\n var _this = this;\n var tooltipTemplate;\n var argsData = {\n cancel: false, name: tooltipRender, text: textCollection, headerText: headerText, template: tooltipTemplate,\n series: this.chart.isBlazor ? {} : point.series, textStyle: this.textStyle, point: point.point,\n data: { pointX: point.point.x, pointY: point.point.y, seriesIndex: point.series.index, seriesName: point.series.name,\n pointIndex: point.point.index, pointText: point.point.text }\n };\n var borderWidth = this.chart.border.width;\n var padding = 3;\n var tooltip = this.chart.tooltip;\n var chartTooltipSuccess = function (argsData) {\n if (!argsData.cancel) {\n if (point.series.type === 'BoxAndWhisker') {\n _this.removeText();\n isFirst = true;\n }\n _this.headerText = argsData.headerText;\n _this.formattedText = _this.formattedText.concat(argsData.text);\n _this.text = _this.formattedText;\n var location_1 = _this.getSymbolLocation(point);\n location_1 = location_1 ? location_1 : new ChartLocation(null, null);\n location_1.x = tooltip.location.x !== null ? tooltip.location.x : location_1.x;\n location_1.y = tooltip.location.y !== null ? tooltip.location.y : location_1.y;\n location_1 = (location_1.x === null && location_1.y === null) ? null : location_1;\n _this.createTooltip(_this.chart, isFirst, location_1, point.series.clipRect, point.point, _this.findShapes(), _this.findMarkerHeight(_this.currentPoints[0]), new Rect(borderWidth, borderWidth, _this.chart.availableSize.width - padding - borderWidth * 2, _this.chart.availableSize.height - padding - borderWidth * 2), _this.chart.crosshair.enable, null, _this.getTemplateText(point), _this.template ? argsData.template : '');\n }\n else {\n _this.removeHighlight();\n remove(_this.getElement(_this.element.id + '_tooltip'));\n }\n _this.isRemove = true;\n };\n chartTooltipSuccess.bind(this, point);\n this.chart.trigger(tooltipRender, argsData, chartTooltipSuccess);\n };\n Tooltip.prototype.findMarkerHeight = function (pointData) {\n var markerHeight = 0;\n var series = pointData.series;\n markerHeight = ((series.marker.visible || (this.chart.tooltip.shared &&\n (!series.isRectSeries || series.marker.visible)) || series.type === 'Scatter' || series.drawType === 'Scatter')\n && !(series.type === 'Candle' || series.type === 'Hilo' || series.type === 'HiloOpenClose')) ?\n ((series.marker.height + 2) / 2 + (2 * series.marker.border.width)) : 0;\n return markerHeight;\n };\n Tooltip.prototype.findData = function (data, previous) {\n return data.point && ((!previous || (previous.point !== data.point)) ||\n (previous && previous.lierIndex > 3 && previous.lierIndex !== this.lierIndex) || (previous.point === data.point));\n };\n Tooltip.prototype.getSymbolLocation = function (data) {\n var location;\n if (data.series.type !== 'BoxAndWhisker') {\n if (!data.point.symbolLocations[0]) {\n return null;\n }\n location = new ChartLocation(data.point.symbolLocations[0].x, data.point.symbolLocations[0].y);\n }\n switch (data.series.type) {\n case 'BoxAndWhisker':\n return this.getBoxLocation(data);\n case 'Waterfall':\n return this.getWaterfallRegion(data, location);\n case 'RangeArea':\n case 'RangeStepArea':\n case 'SplineRangeArea':\n case 'RangeColumn':\n return this.getRangeArea(data, location);\n default:\n return location;\n }\n };\n Tooltip.prototype.getRangeArea = function (data, location) {\n if (data.point.regions[0]) {\n if (!this.inverted) {\n location.y = data.point.regions[0].y + data.point.regions[0].height / 2;\n }\n else {\n location.x = data.point.regions[0].x + data.point.regions[0].width / 2;\n }\n if (data.series.type === 'RangeStepArea') {\n location.y = data.point.regions[0].y + data.point.regions[0].height / 2 + data.point.regions[0].width;\n }\n }\n return location;\n };\n Tooltip.prototype.getWaterfallRegion = function (data, location) {\n if (!this.inverted) {\n location.y = (data.point.y < 0) ?\n location.y - data.point.regions[0].height : location.y;\n }\n else {\n location.x = (data.point.y < 0) ?\n location.x + (this.chart.enableRtl ? -data.point.regions[0].width : data.point.regions[0].width) : location.x;\n }\n return location;\n };\n Tooltip.prototype.getTooltipText = function (pointData) {\n var series = pointData.series;\n return this.parseTemplate(pointData.point, series, this.getFormat(this.chart, series), series.xAxis, series.yAxis);\n };\n Tooltip.prototype.getTemplateText = function (data) {\n if (this.template && this.chart.tooltip.shared) {\n var point = [];\n for (var i = 0; i < data.length; i++) {\n point[i] = extend({}, data[i].point);\n point[i].x = this.formatPointValue(data[i].point, data[i].series.xAxis, 'x', true, false);\n if ((data[i].series.seriesType === 'XY')) {\n point[i].y = this.formatPointValue(data[i].point, data[i].series.yAxis, 'y', false, true);\n }\n else {\n point[i].low = this.formatPointValue(data[i].point, data[i].series.yAxis, 'low', false, true);\n point[i].high = this.formatPointValue(data[i].point, data[i].series.yAxis, 'high', false, true);\n }\n }\n return point;\n }\n else if (this.template) {\n var point = extend({}, data.point);\n point.x = this.formatPointValue(data.point, data.series.xAxis, 'x', true, false);\n if ((data.series.seriesType === 'XY')) {\n point.y = this.formatPointValue(data.point, data.series.yAxis, 'y', false, true);\n }\n else {\n point.low = this.formatPointValue(data.point, data.series.yAxis, 'low', false, true);\n point.high = this.formatPointValue(data.point, data.series.yAxis, 'high', false, true);\n }\n return point;\n }\n else {\n return data.point;\n }\n };\n Tooltip.prototype.findMouseValue = function (data, chart) {\n if (!chart.requireInvertedAxis) {\n if (chart.chartAreaType === 'PolarRadar') {\n this.valueX = valueToPolarCoefficient(data.point.xValue, data.series.xAxis) * data.series.xAxis.rect.width\n + data.series.xAxis.rect.x;\n }\n else {\n this.valueX = (data.series.category === 'TrendLine' && chart.tooltip.shared) ? this.valueX :\n valueToCoefficient(data.point.xValue, data.series.xAxis) * data.series.xAxis.rect.width\n + data.series.xAxis.rect.x;\n }\n this.valueY = chart.mouseY;\n }\n else {\n this.valueY = (1 - valueToCoefficient(data.point.xValue, data.series.xAxis)) * data.series.xAxis.rect.height\n + data.series.xAxis.rect.y;\n this.valueX = chart.mouseX;\n }\n };\n Tooltip.prototype.renderGroupedTooltip = function (chart, isFirst, tooltipDiv) {\n var data;\n var dataCollection = [];\n var lastData;\n var pointData = chart.chartAreaType === 'PolarRadar' ? this.getData() : null;\n this.stopAnimation();\n this.removeHighlight();\n this.currentPoints = [];\n var extraPoints = [];\n var closestXValue = Number.MAX_VALUE;\n var closetYValue = Number.MAX_VALUE;\n var pointXValue;\n var pointYValue;\n var tempData;\n //let headerContent : string = '';\n if (isFirst) {\n if (!chart.stockChart) {\n if (tooltipDiv) {\n document.getElementById(this.element.id + '_Secondary_Element').appendChild(tooltipDiv);\n }\n }\n else {\n if (tooltipDiv && !getElement(tooltipDiv.id)) {\n document.getElementById(chart.stockChart.element.id + '_Secondary_Element').appendChild(tooltipDiv);\n }\n }\n }\n this.removeText();\n var argument = {\n text: [], cancel: false, name: sharedTooltipRender, data: [], point: [], series: [], headerText: '', textStyle: this.textStyle, template: []\n };\n var i = 0;\n for (var _i = 0, _a = chart.visibleSeries; _i < _a.length; _i++) {\n var series = _a[_i];\n if (!series.enableTooltip || !series.visible) {\n continue;\n }\n if (chart.chartAreaType === 'Cartesian' && series.visible) {\n data = this.getClosestX(chart, series, this.commonXValue(this.chart.visibleSeries));\n }\n else if (chart.chartAreaType === 'PolarRadar' && series.visible && pointData.point !== null) {\n data = new PointData(series.points[pointData.point.index], series);\n }\n // if (data && this.header !== '' && this.currentPoints.length === 0) {\n // headerContent = this.findHeader(data);\n // }\n if (chart.tooltip.showNearestPoint && !data) {\n data = this.getClosestX(chart, series, this.commonXValue([series]));\n }\n if (data) {\n argument.data.push({ pointX: data.point.x, pointY: data.point.y, seriesIndex: data.series.index,\n seriesName: data.series.name, pointIndex: data.point.index, pointText: data.point.text });\n argument.series[i] = data.series;\n argument.point[i] = data.point;\n argument.headerText = this.findHeader(data);\n this.currentPoints.push(data);\n if (this.template != null) {\n argument.template.push(this.template.toString());\n }\n argument.text.push(this.getTooltipText(data));\n pointXValue = (!chart.requireInvertedAxis) ? chart.mouseX - data.series.clipRect.x : chart.mouseY - data.series.clipRect.y;\n pointYValue = chart.mouseY - data.series.clipRect.y;\n if (data.point.symbolLocations && data.point.symbolLocations.length &&\n Math.abs(pointXValue - data.point.symbolLocations[0].x) <= closestXValue &&\n Math.abs(data.point.symbolLocations[0].y - pointYValue) < Math.abs(closetYValue - pointYValue)) {\n closestXValue = Math.abs(pointXValue - data.point.symbolLocations[0].x);\n closetYValue = data.point.symbolLocations[0].y;\n tempData = data;\n }\n lastData = (data.series.category === 'TrendLine' && chart.tooltip.shared) ? lastData : tempData || data;\n dataCollection.push(data);\n }\n // if (data && this.triggerEvent(data, isFirst, this.getTooltipText(data)), this.findHeader(data)) {\n // this.findMouseValue(data, chart);\n // (this.currentPoints).push(data);\n // data = null;\n // } else if (data) {\n // extraPoints.push(data);\n // }\n i++;\n }\n if (!chart.tooltip.showNearestPoint) {\n var collection = [];\n this.currentPoints = [];\n argument.point = [];\n argument.series = [];\n argument.data = [];\n argument.text = [];\n for (var _b = 0, dataCollection_1 = dataCollection; _b < dataCollection_1.length; _b++) {\n var data_1 = dataCollection_1[_b];\n if (data_1.point.symbolLocations[0].x === lastData.point.symbolLocations[0].x || ((data_1.series.type.indexOf('Column') !== -1 || lastData.series.type.indexOf('Column') !== -1) && (data_1.point.xValue === lastData.point.xValue))) {\n argument.point.push(data_1.point);\n argument.series.push(data_1.series);\n argument.text.push(this.getTooltipText(data_1));\n argument.headerText = this.findHeader(data_1);\n collection.push(data_1);\n argument.data.push({\n pointX: data_1.point.x, pointY: data_1.point.y, seriesIndex: data_1.series.index,\n seriesName: data_1.series.name, pointIndex: data_1.point.index, pointText: data_1.point.text\n });\n }\n }\n dataCollection = collection;\n this.currentPoints = collection;\n }\n if (dataCollection.length > 0 && this.currentPoints.length > 0) { // To avoid console error when we have empty chart with shared tooltip.\n this.triggerSharedTooltip(argument, lastData, extraPoints, chart, isFirst, dataCollection);\n }\n else if (this.getElement(this.element.id + '_tooltip_path')) {\n this.getElement(this.element.id + '_tooltip_path').setAttribute('d', '');\n }\n };\n Tooltip.prototype.triggerSharedTooltip = function (argument, point, extraPoints, chart, isFirst, dataCollection) {\n var _this = this;\n var tooltipTemplate = argument.template;\n var argsData = {\n cancel: false, name: sharedTooltipRender, text: argument.text, headerText: argument.headerText,\n textStyle: argument.textStyle, template: tooltipTemplate,\n point: argument.point, series: argument.series,\n data: argument.data\n };\n var borderWidth = this.chart.border.width;\n var padding = 3;\n var toolbarHeight;\n var titleHeight;\n var currentPoints = [];\n if (chart.stockChart) {\n toolbarHeight = chart.stockChart.enablePeriodSelector ? chart.stockChart.toolbarHeight : 0;\n titleHeight = measureText(this.chart.stockChart.title, this.chart.stockChart.titleStyle, this.chart.themeStyle.tooltipLabelFont).height + 10;\n }\n var sharedTooltip = function (argsData) {\n if (!argsData.cancel) {\n if (point.series.type === 'BoxAndWhisker') {\n _this.removeText();\n isFirst = true;\n }\n for (var i = 0; i < argsData.text.length; i++) {\n if (argsData.text[i]) {\n currentPoints.push(_this.currentPoints[i]);\n }\n }\n _this.currentPoints = currentPoints;\n _this.formattedText = _this.formattedText.concat(argsData.text);\n _this.text = argsData.text;\n _this.headerText = argsData.headerText;\n if (typeof (argsData.template) != 'object') {\n argsData.template = argsData.template.split(',');\n if (argsData.template.length > currentPoints.length) {\n argsData.template = argsData.template.splice(argsData.template.length - 1);\n }\n }\n else {\n if (argsData.template.length > currentPoints.length) {\n argsData.template.splice(argsData.template.length - 1);\n }\n }\n var tooltip = _this.chart.tooltip;\n _this.findMouseValue(point, _this.chart);\n var location_2 = _this.findSharedLocation();\n location_2 = location_2 ? location_2 : new ChartLocation(null, null);\n location_2.x = tooltip.location.x !== null ? tooltip.location.x : location_2.x;\n location_2.y = tooltip.location.y !== null ? tooltip.location.y : location_2.y;\n location_2 = (location_2.x === null && location_2.y === null) ? null : location_2;\n _this.createTooltip(chart, isFirst, location_2, _this.currentPoints.length === 1 ? _this.currentPoints[0].series.clipRect : null, dataCollection.length === 1 ? dataCollection[0].point : null, _this.findShapes(), _this.findMarkerHeight(_this.currentPoints[0]), new Rect(borderWidth, (chart.stockChart ? (toolbarHeight + titleHeight + borderWidth) : borderWidth), _this.chart.availableSize.width - padding - borderWidth * 2, _this.chart.availableSize.height - padding - borderWidth * 2), _this.chart.crosshair.enable, extraPoints, _this.template ? _this.getTemplateText(dataCollection) : null, _this.template ? argsData.template.join('') : '');\n point = null;\n }\n else {\n removeElement(_this.element.id + '_tooltip');\n extraPoints.push(point);\n }\n };\n sharedTooltip.bind(this, point, extraPoints);\n this.chart.trigger(sharedTooltipRender, argsData, sharedTooltip);\n };\n Tooltip.prototype.findSharedLocation = function () {\n var stockChart = this.chart.stockChart;\n if (stockChart) {\n if (this.text.length === 1) {\n this.text.push('');\n }\n var toolbarHeight = stockChart.enablePeriodSelector ? stockChart.toolbarHeight : 0;\n var element = document.getElementById(stockChart.element.id + '_ChartTitle');\n var titleHeight = stockChart.title !== '' ? element.getBoundingClientRect().height + 10 : 0;\n if (stockChart.tooltip.position === 'Nearest') {\n return new ChartLocation(this.valueX, this.valueY + toolbarHeight + titleHeight);\n }\n return new ChartLocation(this.chart.chartAxisLayoutPanel.seriesClipRect.x + 5, this.chart.chartAxisLayoutPanel.seriesClipRect.y + toolbarHeight + 5 + titleHeight);\n }\n else {\n if (this.currentPoints.length > 1) {\n return new ChartLocation(this.valueX, this.valueY);\n }\n else {\n return this.getSymbolLocation(this.currentPoints[0]);\n }\n }\n };\n Tooltip.prototype.getBoxLocation = function (data) {\n var location = this.lierIndex > 3 ? (data.point.outliers.length > 0 ?\n data.point.symbolLocations[this.lierIndex - 4] : null) :\n {\n x: data.point.regions[0].x + (data.point.regions[0].width / 2),\n y: data.point.regions[0].y + (data.point.regions[0].height / 2)\n };\n return location;\n };\n Tooltip.prototype.parseTemplate = function (point, series, format, xAxis, yAxis) {\n var val;\n var textValue;\n var regExp = RegExp;\n for (var _i = 0, _a = Object.keys(point); _i < _a.length; _i++) {\n var dataValue = _a[_i];\n val = new regExp('${point' + '.' + dataValue + '}', 'gm');\n format = format.replace(val.source, this.formatPointValue(point, val.source === '${point.x}' ? xAxis : yAxis, dataValue, val.source === '${point.x}', (val.source === '${point.high}' ||\n val.source === '${point.open}' ||\n val.source === '${point.close}' ||\n val.source === '${point.low}' ||\n val.source === '${point.y}' ||\n val.source === '${point.minimum}' ||\n val.source === '${point.maximum}' ||\n val.source === '${point.outliers}' ||\n val.source === '${point.upperQuartile}' ||\n val.source === '${point.lowerQuartile}' ||\n val.source === '${point.median}')));\n }\n for (var _b = 0, _c = Object.keys(Object.getPrototypeOf(series)); _b < _c.length; _b++) {\n var dataValue = _c[_b];\n val = new regExp('${series' + '.' + dataValue + '}', 'gm');\n textValue = series[dataValue];\n format = format.replace(val.source, textValue);\n }\n return format;\n };\n Tooltip.prototype.formatPointValue = function (point, axis, dataValue, isXPoint, isYPoint) {\n var textValue;\n var customLabelFormat;\n var value;\n if (axis.valueType !== 'Category' && isXPoint) {\n customLabelFormat = axis.labelFormat && axis.labelFormat.match('{value}') !== null;\n textValue = customLabelFormat ? axis.labelFormat.replace('{value}', axis.format(point[dataValue])) :\n axis.format(point[dataValue]);\n }\n else if (isYPoint && !isNullOrUndefined(point[dataValue])) {\n customLabelFormat = axis.labelFormat && axis.labelFormat.match('{value}') !== null;\n value = dataValue === 'outliers' ? axis.format(point[dataValue][this.lierIndex - 4]) :\n axis.format(+point[dataValue]);\n textValue = customLabelFormat ? axis.labelFormat.replace('{value}', value) : value;\n }\n else if (dataValue === 'size') {\n var format = this.chart.intl.getNumberFormat({ format: '', useGrouping: this.chart.useGroupingSeparator });\n textValue = typeof point[dataValue] === 'number' ? format(point[dataValue]) : point[dataValue];\n }\n else {\n textValue = point[dataValue];\n }\n return textValue;\n };\n Tooltip.prototype.getFormat = function (chart, series) {\n if (series.tooltipFormat) {\n if (series.seriesType === 'XY' && series.category === 'Indicator') {\n return this.getIndicatorTooltipFormat(series, chart, chart.tooltip.format);\n }\n return series.tooltipFormat;\n }\n if (!series.tooltipFormat && chart.tooltip.format) {\n if (series.seriesType === 'XY' && series.category === 'Indicator') {\n return this.getIndicatorTooltipFormat(series, chart, chart.tooltip.format);\n }\n return chart.tooltip.format;\n }\n var textX = (series.type === 'Histogram') ? '${point.minimum}' + '-' + '${point.maximum}' : '${point.x}';\n var format = !chart.tooltip.shared ? textX : '${series.name}';\n switch (series.seriesType) {\n case 'XY':\n if (series.category === 'Indicator') {\n this.getIndicatorTooltipFormat(series, chart, chart.tooltip.format);\n }\n return format + ' : ' + ((series.type === 'Bubble') ? '${point.y} Size : ${point.size}' :\n '${point.y}');\n case 'HighLow':\n return format + ('
High : ${point.high}
Low : ${point.low}');\n case 'HighLowOpenClose':\n return format + ('
High : ${point.high}
Low : ${point.low}
' +\n 'Open : ${point.open}
Close : ${point.close}');\n case 'BoxPlot': {\n return format + '
' + (this.lierIndex > 3 ? 'Outliers : ${point.outliers}' :\n 'Maximum : ${point.maximum}
Q3 : ${point.upperQuartile}
' +\n 'Median : ${point.median}
Q1 : ${point.lowerQuartile}
Minimum : ${point.minimum}');\n }\n //default: return '';\n }\n };\n Tooltip.prototype.getIndicatorTooltipFormat = function (series, chart, format) {\n var toolTip;\n if (series.seriesType === 'XY') {\n toolTip = series.name + ' : ${point.y}';\n }\n else {\n toolTip = format;\n }\n return toolTip;\n };\n /*\n * @hidden\n */\n Tooltip.prototype.removeHighlightedMarker = function (data, fadeOut) {\n for (var _i = 0, data_2 = data; _i < data_2.length; _i++) {\n var item = data_2[_i];\n removeElement(this.element.id + '_Series_' + item.series.index +\n '_Point_' + item.point.index + '_Trackball');\n if (this.chart.markerRender) {\n this.chart.markerRender.removeHighlightedMarker(item.series, item.point, fadeOut);\n }\n }\n this.previousPoints = [];\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name.\n */\n Tooltip.prototype.getModuleName = function () {\n /**\n * Returns the module name\n */\n return 'Tooltip';\n };\n /**\n * To destroy the tooltip.\n *\n * @returns {void}\n * @private\n */\n Tooltip.prototype.destroy = function () {\n /**\n * Destroy method performed here\n */\n };\n return Tooltip;\n}(BaseTooltip));\nexport { Tooltip };\n","import { ChartLocation, RectOption, isCollide, isOverlap, rotateTextSize } from '../../common/utils/helper';\nimport { markerAnimate, appendChildElement, getVisiblePoints } from '../../common/utils/helper';\nimport { getLabelText, convertHexToColor, calculateRect, textElement, colorNameToHex, animateTextElement } from '../../common/utils/helper';\nimport { measureText, TextOption, Rect } from '@syncfusion/ej2-svg-base';\nimport { textRender } from '../../common/model/constants';\nimport { createTemplate, getFontStyle, getElement, measureElementRect, templateAnimate, withIn, withInBounds } from '../../common/utils/helper';\nimport { createElement, getValue, extend } from '@syncfusion/ej2-base';\nimport { getPoint, isRotatedRectIntersect } from '../../common/utils/helper';\n/**\n * The `DataLabel` module is used to render data labels for data points.\n */\nvar DataLabel = /** @class */ (function () {\n /**\n * Constructor for the data label module.\n *\n * @private\n */\n function DataLabel(chart) {\n this.errorHeight = 0;\n this.chart = chart;\n }\n DataLabel.prototype.initPrivateVariables = function (series, marker) {\n var transform = '';\n var clipPath = '';\n var render = series.chart.renderer;\n var index = (series.index === undefined) ? series.category : series.index;\n if (series.chart.chartAreaType === 'Cartesian') {\n transform = 'translate(' + series.clipRect.x + ',' + (series.clipRect.y) + ')';\n clipPath = 'url(#' + this.chart.element.id + '_ChartSeriesClipRect_' + index + ')';\n }\n if (marker.dataLabel.visible && !this.chart.enableCanvas) {\n series.shapeElement = render.createGroup({\n 'id': this.chart.element.id + 'ShapeGroup' + index,\n 'transform': transform,\n 'clip-path': 'url(#' + this.chart.element.id + '_ChartSeriesClipRect_' + index + ')'\n });\n series.textElement = render.createGroup({\n 'id': this.chart.element.id + 'TextGroup' + index,\n 'transform': transform,\n 'clip-path': clipPath\n });\n series.textElement.setAttribute('aria-hidden', 'true');\n }\n this.markerHeight = ((series.type === 'Scatter' || marker.visible)) ? (marker.height / 2) : 0;\n this.commonId = this.chart.element.id + '_Series_' + index + '_Point_';\n this.calculateErrorHeight(series, series.marker.dataLabel.position);\n this.chartBackground = this.chart.chartArea.background === 'transparent' ?\n this.chart.background || this.chart.themeStyle.background : this.chart.chartArea.background;\n };\n DataLabel.prototype.calculateErrorHeight = function (series, position) {\n if (!series.errorBar.visible) {\n return null;\n }\n else if (series.errorBar.visible && this.chart.chartAreaType !== 'PolarRadar') {\n var direction = series.errorBar.direction;\n var positiveHeight = this.chart.errorBarModule.positiveHeight;\n var negativeHeight = this.chart.errorBarModule.negativeHeight;\n if (this.isRectSeries(series)) {\n if (position === 'Top' || position === 'Auto') {\n if (direction === 'Both' || direction === 'Minus') {\n this.errorHeight = negativeHeight;\n }\n else {\n this.errorHeight = 0;\n }\n }\n if (position === 'Outer' || position === 'Auto') {\n if (direction === 'Both' || direction === 'Plus') {\n this.errorHeight = positiveHeight;\n }\n else {\n this.errorHeight = 0;\n }\n }\n }\n else {\n if (position === 'Top' || position === 'Outer' || position === 'Auto') {\n if ((direction === 'Both' || direction === 'Plus') && (!series.chart.isTransposed)) {\n this.errorHeight = positiveHeight;\n }\n else {\n this.errorHeight = 0;\n }\n }\n if (position === 'Bottom' || position === 'Auto') {\n if (direction === 'Both' || direction === 'Minus') {\n this.errorHeight = negativeHeight;\n }\n else {\n this.errorHeight = 0;\n }\n }\n }\n }\n else {\n this.errorHeight = 0;\n }\n };\n DataLabel.prototype.isRectSeries = function (series) {\n return series.isRectSeries || series.type === 'RangeArea' || series.type === 'SplineRangeArea' || series.type === 'RangeStepArea';\n };\n /**\n * Render the data label for series.\n *\n * @param {Series} series - The series to render.\n * @param {Chart} chart - The parent chart.\n * @param {DataLabelSettingsModel} dataLabel - The settings for data labels.\n * @returns {void}\n * @private\n */\n DataLabel.prototype.render = function (series, chart, dataLabel) {\n // initialize the private variable\n this.initPrivateVariables(series, series.marker);\n this.inverted = chart.requireInvertedAxis;\n this.yAxisInversed = series.yAxis.isAxisInverse;\n var templateId = chart.element.id + '_Series_' +\n (series.index === undefined ? series.category : series.index) + '_DataLabelCollections';\n var element = createElement('div', {\n id: templateId\n });\n var visiblePoints = getVisiblePoints(series);\n // Data label point iteration started\n if (series.visible) {\n for (var i = 0; i < visiblePoints.length; i++) {\n this.renderDataLabel(series, visiblePoints[i], element, dataLabel);\n }\n }\n if (element.childElementCount) {\n if (!chart.enableCanvas) {\n appendChildElement(chart.enableCanvas, getElement(chart.element.id + '_Secondary_Element'), element, chart.redraw, false, 'x', 'y', null, '', false, false, null, chart.duration);\n }\n else {\n getElement(chart.element.id + '_Secondary_Element').appendChild(element);\n }\n }\n };\n DataLabel.prototype.renderDataLabel = function (series, point, element, dataLabel) {\n if (!dataLabel.showZero && ((point.y === 0) || (point.y === 0 && series.emptyPointSettings.mode === 'Zero'))) {\n return null;\n }\n this.margin = dataLabel.margin;\n var labelText = [];\n var labelLength;\n var xPos;\n var yPos;\n var xValue;\n var yValue;\n var degree;\n var isRender = true;\n var rectCenterX;\n var rectCenterY;\n var labelLocation = { x: 0, y: 0 };\n var textSize;\n var clip = series.clipRect;\n var shapeRect;\n var isDataLabelOverlap = false;\n var dataLabelElement = [];\n dataLabel.angle = dataLabel.labelIntersectAction === 'Rotate90' ? 90 : dataLabel.angle;\n dataLabel.enableRotation = dataLabel.labelIntersectAction === 'Rotate90' ? true : dataLabel.enableRotation;\n var angle = degree = dataLabel.angle;\n var border = { width: dataLabel.border.width, color: dataLabel.border.color };\n var argsFont = (extend({}, getValue('properties', dataLabel.font), null, true));\n if ((point.symbolLocations.length && point.symbolLocations[0]) ||\n (series.type === 'BoxAndWhisker' && point.regions.length)) {\n labelText = point.text !== null ? getLabelText(point, series, this.chart) : [];\n labelLength = labelText.length;\n for (var i = 0; i < labelLength; i++) {\n var argsData = {\n cancel: false, name: textRender, series: series,\n point: point, text: labelText[i], border: border,\n color: dataLabel.fill, template: dataLabel.template, font: argsFont, location: labelLocation,\n textSize: measureText(labelText[i], dataLabel.font, this.chart.themeStyle.datalabelFont)\n };\n this.chart.trigger(textRender, argsData);\n if (!argsData.cancel) {\n this.fontBackground = argsData.color;\n this.isDataLabelShape(argsData);\n this.markerHeight = series.type === 'Bubble' ? (point.regions[0].height / 2) : this.markerHeight;\n if (argsData.template !== null) {\n this.createDataLabelTemplate(element, series, dataLabel, point, argsData, i, this.chart.redraw);\n }\n else {\n if (dataLabel.enableRotation) {\n textSize = rotateTextSize(dataLabel.font, argsData.text, dataLabel.angle, this.chart, this.chart.themeStyle.datalabelFont);\n }\n else {\n textSize = measureText(argsData.text, dataLabel.font, this.chart.themeStyle.datalabelFont);\n }\n var rect = this.calculateTextPosition(point, series, textSize, dataLabel, i);\n // To check whether the polar radar chart datalabel intersects the axis label or not\n if (this.chart.chartAreaType === 'PolarRadar') {\n for (var _i = 0, _a = this.chart.chartAxisLayoutPanel.visibleAxisLabelRect; _i < _a.length; _i++) {\n var rectRegion = _a[_i];\n if (isOverlap(new Rect(rect.x, rect.y, rect.width, rect.height), rectRegion)) {\n isRender = false;\n break;\n }\n }\n }\n var actualRect = new Rect(rect.x + clip.x, rect.y + clip.y, rect.width, rect.height);\n //let notOverlapping: boolean;\n if (dataLabel.enableRotation) {\n var rectCoordinates = this.getRectanglePoints(rect);\n rectCenterX = rect.x + (rect.width / 2);\n rectCenterY = (rect.y + (rect.height / 2));\n isDataLabelOverlap = (dataLabel.labelIntersectAction === 'Rotate90' || angle === -90) ? false : this.isDataLabelOverlapWithChartBound(rectCoordinates, this.chart, clip);\n if (!isDataLabelOverlap) {\n this.chart.rotatedDataLabelCollections.push(rectCoordinates);\n var currentPointIndex = this.chart.rotatedDataLabelCollections.length - 1;\n for (var index = currentPointIndex; index >= 0; index--) {\n if (this.chart.rotatedDataLabelCollections[currentPointIndex] &&\n this.chart.rotatedDataLabelCollections[index - 1] &&\n isRotatedRectIntersect(this.chart.rotatedDataLabelCollections[currentPointIndex], this.chart.rotatedDataLabelCollections[index - 1])) {\n isDataLabelOverlap = true;\n this.chart.rotatedDataLabelCollections[currentPointIndex] = null;\n break;\n }\n }\n }\n }\n else {\n isDataLabelOverlap = isCollide(rect, this.chart.dataLabelCollections, clip);\n }\n if ((!isDataLabelOverlap || dataLabel.labelIntersectAction === 'None') && isRender) {\n this.chart.dataLabelCollections.push(actualRect);\n if (this.isShape) {\n shapeRect = this.chart.renderer.drawRectangle(new RectOption(this.commonId + point.index + '_TextShape_' + i, argsData.color, argsData.border, dataLabel.opacity, rect, dataLabel.rx, dataLabel.ry, '', dataLabel.border.dashArray), new Int32Array([clip.x, clip.y]));\n if (series.shapeElement) {\n series.shapeElement.appendChild(shapeRect);\n }\n }\n // Checking the font color\n var backgroundColor = this.fontBackground === 'transparent' ? ((this.chart.theme.indexOf('Dark') > -1 || this.chart.theme.indexOf('HighContrast') > -1) ? 'black' : 'white') : this.fontBackground;\n var rgbValue = convertHexToColor(colorNameToHex(backgroundColor));\n var contrast = Math.round((rgbValue.r * 299 + rgbValue.g * 587 + rgbValue.b * 114) / 1000);\n xPos = (rect.x + this.margin.left + textSize.width / 2) + labelLocation.x;\n yPos = dataLabel.enableRotation && this.chart.chartAreaType !== 'PolarRadar' ? (rect.y + this.margin.top + textSize.height / 2 + textSize.width / 4 + (dataLabel.position === 'Auto' ? point.regions[0].width / 10 : 0)) + labelLocation.y : (rect.y + this.margin.top + textSize.height * 3 / 4) + labelLocation.y;\n labelLocation = { x: 0, y: 0 };\n if (angle !== 0 && dataLabel.enableRotation) {\n // xValue = xPos - (dataLabel.margin.left) / 2 + (dataLabel.margin.right / 2);\n xValue = rectCenterX;\n //yValue = yPos - (dataLabel.margin.top) / 2 - (textSize.height / dataLabel.margin.top) +\n // (dataLabel.margin.bottom) / 2;\n yValue = rectCenterY;\n degree = (angle > 360) ? angle - 360 : (angle < -360) ? angle + 360 : angle;\n }\n else {\n degree = 0;\n xValue = rect.x;\n yValue = rect.y;\n xPos -= this.chart.chartAreaType === 'Cartesian' && xPos + (textSize.width / 2) > clip.width ? (!this.chart.requireInvertedAxis && xPos > clip.width) ? 0 : (xPos + textSize.width / 2) - clip.width : 0;\n yPos -= (yPos + textSize.height > clip.y + clip.height && !(series.type.indexOf('Bar') > -1)) ? (yPos + textSize.height) - (clip.y + clip.height) : 0;\n }\n var textAnchor = dataLabel.labelIntersectAction === 'Rotate90' ? (dataLabel.position === 'Top' ? 'start' : (dataLabel.position === 'Middle' ? 'middle' : 'end')) :\n ((angle === -90 && dataLabel.enableRotation) ? (dataLabel.position === 'Top' ? 'end' : (dataLabel.position === 'Middle' ? 'middle' : 'start')) : 'middle');\n var oldText = void 0;\n if (this.chart.redraw && document.getElementById(this.commonId + point.index + '_Text_' + i)) {\n oldText = document.getElementById(this.commonId + point.index + '_Text_' + i).textContent;\n }\n dataLabelElement.push(textElement(this.chart.renderer, new TextOption(this.commonId + ((series.removedPointIndex !== null && series.removedPointIndex <= point.index) ? (point.index + 1) : point.index) + '_Text_' + i, xPos, yPos, textAnchor, argsData.text, 'rotate(' + degree + ',' + (xValue) + ',' + (yValue) + ')', 'auto', degree), argsData.font, argsData.font.color || (this.chart.theme === 'Bootstrap5' ? '#212529' : this.chart.theme === 'Bootstrap5Dark' ? '#DEE2E6' :\n ((contrast >= 128 || series.type === 'Hilo' || series.type === 'HiloOpenClose') ? 'black' : 'white')), series.textElement, false, this.chart.redraw, true, false, series.chart.duration, series.clipRect, null, null, this.chart.enableCanvas, null, this.chart.themeStyle.datalabelFont, new ChartLocation(xValue, yValue)));\n if (series.removedPointIndex !== null && series.removedPointIndex <= point.index) {\n series.textElement.lastChild.id = this.commonId + point.index + '_Text_' + i;\n }\n if (this.chart.redraw && oldText !== argsData.text) {\n animateTextElement(series.textElement.querySelector('#' + this.commonId + point.index + '_Text_' + i), this.chart.duration, parseFloat(oldText), parseFloat(argsData.text), series.marker.dataLabel.format || series.yAxis.labelFormat);\n }\n }\n else if (getElement(this.commonId + point.index + '_Text_0') && series.chart.redraw && series.currentData) {\n getElement(this.commonId + point.index + '_Text_0').remove();\n }\n }\n }\n }\n }\n return dataLabelElement;\n };\n /**\n * Retrieves the points of a rectangle.\n *\n * @param {Rect} rect - The rectangle whose points are to be retrieved.\n * @returns {ChartLocation[]} - The points of the rectangle.\n */\n DataLabel.prototype.getRectanglePoints = function (rect) {\n var loc1 = new ChartLocation(rect.x, rect.y);\n var loc2 = new ChartLocation(rect.x + rect.width, rect.y);\n var loc3 = new ChartLocation(rect.x + rect.width, rect.y + rect.height);\n var loc4 = new ChartLocation(rect.x, rect.y + rect.height);\n return [loc1, loc2, loc3, loc4];\n };\n DataLabel.prototype.isDataLabelOverlapWithChartBound = function (rectCoordinates, chart, clip) {\n for (var index = 0; index < rectCoordinates.length; index++) {\n if (!withInBounds(rectCoordinates[index].x + clip.x, rectCoordinates[index].y + clip.y, chart.initialClipRect)) {\n return true;\n }\n }\n return false;\n };\n /**\n * Creates a template for data labels.\n *\n * @param {HTMLElement} parentElement - The parent element to which the template will be appended.\n * @param {Series} series - The series associated with the data label.\n * @param {DataLabelSettingsModel} dataLabel - The settings for the data label.\n * @param {Points} point - The data point to which the data label is associated.\n * @param {ITextRenderEventArgs} data - The event data associated with rendering the data label.\n * @param {number} labelIndex - The index of the data label.\n * @param {boolean} redraw - Specifies whether to redraw the template.\n * @returns {void}\n */\n DataLabel.prototype.createDataLabelTemplate = function (parentElement, series, dataLabel, point, data, labelIndex, redraw) {\n this.margin = { left: 0, right: 0, bottom: 0, top: 0 };\n var clip = series.clipRect;\n var childElement = createTemplate(createElement('div', {\n id: this.chart.element.id + '_Series_' + (series.index === undefined ? series.category : series.index) + '_DataLabel_'\n + point.index + (labelIndex ? ('_' + labelIndex) : ''),\n styles: 'position: absolute;background-color:' + data.color + ';' +\n getFontStyle(dataLabel.font, this.chart.themeStyle.datalabelFont) + ';border:' + data.border.width + 'px solid ' + data.border.color + ';'\n }), point.index, data.template, this.chart, point, series, this.chart.element.id + '_DataLabel', labelIndex);\n this.calculateTemplateLabelSize(parentElement, childElement, point, series, dataLabel, labelIndex, clip, redraw);\n };\n DataLabel.prototype.calculateTemplateLabelSize = function (parentElement, childElement, point, series, dataLabel, labelIndex, clip, redraw, isReactCallback) {\n var elementRect = measureElementRect(childElement, redraw, isReactCallback);\n var rect = this.calculateTextPosition(point, series, { width: elementRect.width, height: elementRect.height }, dataLabel, labelIndex);\n var clipWidth = 0;\n var clipHeight = 0;\n var isOverlap = false;\n if (isReactCallback) {\n isOverlap = (elementRect.width === 0 || elementRect.height === 0); // To check the data label already overlap before react callback call\n // clipWidth = ((series.clipRect.x + rect.x) + elementRect.width) > parentElement.clientWidth ?\n // (parentElement.clientWidth - (series.clipRect.x + rect.x)) : 0;\n // clipHeight = (series.points.length - 1 === point.index) ? elementRect.height / 2 : 0;\n }\n childElement.style.left = ((this.chart.chartAreaType === 'PolarRadar' ? 0 : series.clipRect.x) + rect.x - clipWidth) + 'px';\n childElement.style.top = ((this.chart.chartAreaType === 'PolarRadar' ? 0 : series.clipRect.y) + rect.y + clipHeight) + 'px';\n var backgroundColor = this.fontBackground === 'transparent' ? (this.chart.theme.indexOf('Dark') > -1 ? 'black' : 'white') : this.fontBackground;\n var rgbValue = convertHexToColor(colorNameToHex(backgroundColor));\n var vAxis = series.chart.requireInvertedAxis ? series.xAxis : series.yAxis;\n var hAxis = series.chart.requireInvertedAxis ? series.yAxis : series.xAxis;\n childElement.style.color = dataLabel.font.color || (this.chart.theme === 'Bootstrap5' ? '#212529' : this.chart.theme === 'Bootstrap5Dark' ? '#DEE2E6' :\n ((Math.round((rgbValue.r * 299 + rgbValue.g * 587 + rgbValue.b * 114) / 1000)) >= 128 ? 'black' : 'white'));\n if (childElement.childElementCount && !isOverlap && (!isCollide(rect, this.chart.dataLabelCollections, clip) ||\n dataLabel.labelIntersectAction === 'None') && (series.seriesType !== 'XY' || point.yValue === undefined ||\n withIn(point.yValue, series.yAxis.visibleRange) || (series.type.indexOf('Stacking') > -1) ||\n (series.type.indexOf('100') > -1 && withIn(series.stackedValues.endValues[point.index], series.yAxis.visibleRange))) &&\n withIn(point.xValue, series.xAxis.visibleRange) && parseFloat(childElement.style.top) >= vAxis.rect.y &&\n parseFloat(childElement.style.left) >= hAxis.rect.x &&\n parseFloat(childElement.style.top) <= vAxis.rect.y + vAxis.rect.height &&\n parseFloat(childElement.style.left) <= hAxis.rect.x + hAxis.rect.width) {\n this.chart.dataLabelCollections.push(new Rect(rect.x + clip.x, rect.y + clip.y, rect.width, rect.height));\n appendChildElement(this.chart.enableCanvas, parentElement, childElement, redraw, true, 'left', 'top');\n if (series.animation.enable && this.chart.animateSeries && !this.chart.enableCanvas) {\n this.doDataLabelAnimation(series, childElement);\n }\n else if (this.chart.enableCanvas) {\n parentElement.appendChild(childElement);\n }\n }\n };\n DataLabel.prototype.calculateTextPosition = function (point, series, textSize, dataLabel, labelIndex) {\n var labelRegion = labelIndex > 1 ? (series.type === 'Candle') ? point.regions[1] : point.regions[0] : point.regions[0];\n if (labelIndex > 1 && series.type === 'HiloOpenClose') {\n labelRegion = (labelIndex === 2) ? point.regions[1] : point.regions[2];\n }\n var location;\n location = this.getLabelLocation(point, series, textSize, labelIndex);\n var padding = 5;\n var clipRect = series.clipRect;\n // calculating alignment\n if (!this.chart.requireInvertedAxis || !this.isRectSeries(series) || series.type === 'BoxAndWhisker') {\n this.locationX = location.x;\n var alignmentValue = textSize.height + (this.borderWidth * 2) + this.markerHeight +\n this.margin.bottom + this.margin.top + padding;\n location.x = (dataLabel.position === 'Auto') ? location.x :\n this.calculateAlignment(alignmentValue, location.x, dataLabel.alignment, this.isRectSeries(series) ? point.yValue < 0 : false);\n // calculating position\n location.y = (!this.isRectSeries(series) || series.type === 'BoxAndWhisker') ?\n this.calculatePathPosition(location.y, dataLabel.position, series, point, textSize, labelIndex) :\n this.calculateRectPosition(location.y, labelRegion, point.yValue < 0 !== this.yAxisInversed, dataLabel.position, series, textSize, labelIndex, point);\n if (this.isRectSeries(series) && this.chart.chartAreaType === 'PolarRadar') {\n location = this.calculatePolarRectPosition(location, dataLabel.position, series, point, textSize, labelIndex, dataLabel.alignment, alignmentValue);\n }\n }\n else {\n this.locationY = location.y;\n var alignmentValue = textSize.width + this.borderWidth + this.margin.left + this.margin.right - padding;\n location.x = dataLabel.position === 'Auto' ? location.x :\n this.calculateAlignment(alignmentValue, location.x, dataLabel.alignment, point.yValue < 0);\n location.x = this.calculateRectPosition(location.x, labelRegion, point.yValue < 0 !== this.yAxisInversed, dataLabel.position, series, textSize, labelIndex, point);\n }\n var rect = calculateRect(location, textSize, this.margin);\n // Checking the condition whether data Label has been exist the clip rect\n if (!(dataLabel.enableRotation === true && dataLabel.angle !== 0) &&\n !((rect.y > (clipRect.y + clipRect.height)) || (rect.x > (clipRect.x + clipRect.width)) ||\n (rect.x + rect.width < 0) || (rect.y + rect.height < 0))) {\n rect.x = rect.x < 0 ? padding : rect.x;\n rect.y = (rect.y < 0) && !(dataLabel.labelIntersectAction === 'None') ? padding : rect.y;\n rect.x -= (rect.x + rect.width) > (clipRect.x + clipRect.width) ? (rect.x + rect.width)\n - (clipRect.x + clipRect.width) + padding : 0;\n rect.y -= (rect.y + rect.height) > (clipRect.y + clipRect.height) ? (rect.y + rect.height)\n - (clipRect.y + clipRect.height) + padding : 0;\n this.fontBackground = this.fontBackground === 'transparent' ? this.chartBackground : this.fontBackground;\n }\n var dataLabelOutRegion;\n if (this.inverted && series.isRectSeries && (rect.x + rect.width > labelRegion.x + labelRegion.width)) {\n dataLabelOutRegion = true;\n }\n this.fontBackground = dataLabelOutRegion ? this.chartBackground : this.fontBackground;\n return rect;\n };\n // Calculation label location for polar column draw types\n DataLabel.prototype.calculatePolarRectPosition = function (location, position, series, point, size, labelIndex, alignment, alignmentValue) {\n var padding = 5;\n var columnRadius;\n var chartWidth = this.chart.availableSize.width;\n var alignmentSign = (alignment === 'Center') ? 0 : (alignment === 'Far' ? 1 : -1);\n var angle = (point.regionData.startAngle - 0.5 * Math.PI) + (point.regionData.endAngle - point.regionData.startAngle) / 2;\n if (labelIndex === 0) {\n columnRadius = point.regionData.radius < point.regionData.innerRadius ? point.regionData.innerRadius\n : point.regionData.radius;\n }\n else {\n columnRadius = point.regionData.radius > point.regionData.innerRadius ? point.regionData.innerRadius\n : point.regionData.radius;\n }\n this.fontBackground = this.fontBackground === 'transparent' ? this.chartBackground : this.fontBackground;\n if (series.drawType.indexOf('Stacking') > -1) {\n position = position === 'Outer' ? 'Top' : position;\n }\n else if (series.drawType.indexOf('Range') > -1) {\n position = (position === 'Outer' || position === 'Top') ? position : 'Auto';\n }\n if (position === 'Outer') {\n columnRadius = labelIndex === 0 ? columnRadius + 2 * padding + this.markerHeight :\n columnRadius - 2 * padding - this.markerHeight;\n }\n else if (position === 'Middle') {\n columnRadius = columnRadius / 2 + padding;\n if (series.drawType === 'StackingColumn') {\n columnRadius = point.regionData.innerRadius + ((point.regionData.radius - point.regionData.innerRadius) / 2)\n + padding - (size.height / 2);\n }\n }\n else if (position === 'Top') {\n columnRadius = labelIndex === 0 ? columnRadius - 2 * padding - this.markerHeight :\n columnRadius + 2 * padding + this.markerHeight;\n }\n else if (position === 'Bottom') {\n columnRadius = 2 * padding;\n columnRadius += (series.drawType === 'StackingColumn') ? (point.regionData.innerRadius + this.markerHeight) : 0;\n }\n else {\n if (labelIndex === 0) {\n columnRadius = columnRadius >= series.chart.radius ? columnRadius - padding :\n series.drawType === 'StackingColumn' ? columnRadius - 2 * padding : columnRadius + 2 * padding;\n }\n else {\n columnRadius = columnRadius >= series.chart.radius ? columnRadius + padding : columnRadius - 2 * padding;\n }\n }\n columnRadius += (alignmentValue * alignmentSign);\n location.x = series.clipRect.width / 2 + series.clipRect.x + columnRadius * Math.cos(angle);\n // To change x location based on text anchor for column and stackingcolumn chart\n if (series.drawType === 'StackingColumn') {\n location.x = location.x < chartWidth / 2 ? location.x + size.width / 2 :\n (location.x > chartWidth / 2 ? location.x - size.width / 2 : location.x);\n }\n else if (series.drawType === 'Column') {\n location.x = location.x < chartWidth / 2 ? location.x - size.width / 2 :\n (location.x > chartWidth / 2 ? location.x + size.width / 2 : location.x);\n }\n location.y = series.clipRect.height / 2 + series.clipRect.y + columnRadius * Math.sin(angle);\n return location;\n };\n /**\n * Gets the location for the data label.\n *\n * @param {Points} point - The data point associated with the label.\n * @param {Series} series - The series associated with the data label.\n * @param {Size} textSize - The size of the text to be displayed in the data label.\n * @param {number} labelIndex - The index of the data label.\n * @returns {ChartLocation} - The location for the data label.\n */\n DataLabel.prototype.getLabelLocation = function (point, series, textSize, labelIndex) {\n var location = new ChartLocation(0, 0);\n var labelRegion = (series.type === 'Candle' && labelIndex > 1) ? point.regions[1] : point.regions[0];\n if (series.type === 'HiloOpenClose') {\n labelRegion = (labelIndex === 2) ? point.regions[1] : point.regions[2];\n }\n var xAxis = series.xAxis;\n var yAxis = series.yAxis;\n var isInverted = series.chart.requireInvertedAxis;\n if (series.type === 'BoxAndWhisker') {\n this.markerHeight = 0;\n switch (labelIndex) {\n case 0:\n location = getPoint(point.xValue, point.median, xAxis, yAxis, isInverted);\n break;\n case 1:\n location = getPoint(point.xValue, point.maximum, xAxis, yAxis, isInverted);\n break;\n case 2:\n location = getPoint(point.xValue, point.minimum, xAxis, yAxis, isInverted);\n break;\n case 3:\n location = getPoint(point.xValue, point.upperQuartile, xAxis, yAxis, isInverted);\n break;\n case 4:\n location = getPoint(point.xValue, point.lowerQuartile, xAxis, yAxis, isInverted);\n break;\n default: {\n location = getPoint(point.xValue, point.outliers[labelIndex - 5], xAxis, yAxis, isInverted);\n this.markerHeight = series.marker.height / 2;\n break;\n }\n }\n if (isInverted) {\n location.y = point.regions[0].y + (point.regions[0].height / 2);\n }\n else {\n location.x = point.regions[0].x + (point.regions[0].width / 2);\n }\n }\n else if (labelIndex === 0 || labelIndex === 1) {\n location = new ChartLocation(point.symbolLocations[0].x, point.symbolLocations[0].y);\n }\n else if ((labelIndex === 2 || labelIndex === 3) && series.type === 'Candle') {\n location = new ChartLocation(point.symbolLocations[1].x, point.symbolLocations[1].y);\n }\n else if (isInverted) {\n location = { x: labelRegion.x + (labelRegion.width) / 2, y: labelRegion.y };\n }\n else {\n location = { x: labelRegion.x + labelRegion.width, y: labelRegion.y + (labelRegion.height) / 2 };\n }\n //Aligning the label at the beginning of the tick, when tick size is less than text size\n if (labelIndex > 1 && series.type === 'HiloOpenClose') {\n if (series.chart.requireInvertedAxis) {\n var height = labelRegion.height;\n location.y = labelRegion.y + height / 2 + 2 * (labelIndex === 2 ? 1 : -1);\n }\n else {\n var width = labelRegion.width;\n location.x = labelRegion.x + width / 2 + 2 * (labelIndex === 2 ? 1 : -1);\n }\n }\n return location;\n };\n DataLabel.prototype.calculateRectPosition = function (labelLocation, rect, isMinus, position, series, textSize, labelIndex, point) {\n if (series.chart.chartAreaType === 'PolarRadar') {\n return null;\n }\n var padding = 5;\n var margin = this.margin;\n var textLength = (series.marker.dataLabel.enableRotation ? textSize.width :\n (!this.inverted ? textSize.height : textSize.width));\n this.extraSpace = this.borderWidth + textLength / 2 + (position !== 'Outer' && series.type.indexOf('Column') > -1 &&\n (Math.abs(rect.height - textSize.height) < padding) ? 0 : padding);\n if (series.type === 'StackingColumn100' || series.type === 'StackingBar100') {\n position = (position === 'Outer') ? 'Top' : position;\n }\n else if (series.type.indexOf('Range') > -1) {\n position = (position === 'Outer' || position === 'Top') ? position : 'Auto';\n }\n else if (series.type === 'Waterfall') {\n position = position === 'Auto' ? 'Middle' : position;\n }\n switch (position) {\n case 'Bottom':\n labelLocation = !this.inverted ?\n isMinus ? (labelLocation + (series.type === 'Waterfall' ? (-this.extraSpace - margin.top - this.markerHeight) : (-rect.height + this.extraSpace + margin.top))) :\n (labelLocation + rect.height - this.extraSpace - margin.bottom) :\n isMinus ? (labelLocation + (series.type === 'Waterfall' ? (+this.extraSpace + margin.left + this.markerHeight) : (+rect.width - this.extraSpace - margin.left))) :\n (labelLocation - rect.width + this.extraSpace + margin.right);\n break;\n case 'Middle':\n labelLocation = labelLocation = !this.inverted ?\n (isMinus ? labelLocation - (rect.height / 2) : labelLocation + (rect.height / 2)) :\n (isMinus ? labelLocation + (rect.width / 2) : labelLocation - (rect.width / 2));\n break;\n case 'Auto':\n labelLocation = this.calculateRectActualPosition(labelLocation, rect, isMinus, series, textSize, labelIndex, point);\n break;\n default:\n this.extraSpace += this.errorHeight;\n labelLocation = this.calculateTopAndOuterPosition(labelLocation, rect, position, series, labelIndex, this.extraSpace, isMinus, point);\n break;\n }\n var check = !this.inverted ? (labelLocation < rect.y || labelLocation > rect.y + rect.height) :\n (labelLocation < rect.x || labelLocation > rect.x + rect.width);\n this.fontBackground = check ?\n (this.fontBackground === 'transparent' ? this.chartBackground : this.fontBackground)\n : this.fontBackground === 'transparent' ? (point.color || series.interior) : this.fontBackground;\n var seriesLength = series.chart.series.length;\n if (position === 'Outer' && (series.type.indexOf('Stacking') > -1) && ((seriesLength - 1) > series.index)) {\n var nextSeries = void 0;\n var nextSeriesPoint = void 0;\n for (var i = series.index + 1; i < seriesLength; i++) {\n nextSeries = series.chart.series[i];\n nextSeriesPoint = nextSeries.points[point.index];\n if ((nextSeries.type.indexOf('Stacking') > -1) && (nextSeries.type.indexOf('100') === -1)) {\n this.fontBackground = (nextSeriesPoint && ((nextSeriesPoint.yValue < 0 && point.yValue < 0) ||\n (nextSeriesPoint.yValue > 0 && point.yValue > 0))) ? (nextSeriesPoint ? nextSeriesPoint.color :\n nextSeries.interior) : this.fontBackground;\n break;\n }\n }\n }\n return labelLocation;\n };\n DataLabel.prototype.calculatePathPosition = function (labelLocation, position, series, point, size, labelIndex) {\n var padding = 5;\n if ((series.type.indexOf('Area') > -1 && series.type !== 'RangeArea' && series.type !== 'SplineRangeArea' && series.type !== 'RangeStepArea')\n && this.yAxisInversed && series.marker.dataLabel.position !== 'Auto') {\n position = position === 'Top' ? 'Bottom' : position === 'Bottom' ? 'Top' : position;\n }\n this.fontBackground = this.fontBackground === 'transparent' ? this.chartBackground : this.fontBackground;\n switch (position) {\n case 'Top':\n case 'Outer':\n labelLocation = labelLocation - this.markerHeight - this.borderWidth - size.height / 2 - this.margin.bottom - padding -\n this.errorHeight;\n break;\n case 'Bottom':\n labelLocation = labelLocation + this.markerHeight + this.borderWidth + size.height / 2 + this.margin.top + padding +\n this.errorHeight;\n break;\n case 'Auto':\n labelLocation = this.calculatePathActualPosition(labelLocation, this.markerHeight, series, point, size, labelIndex);\n break;\n }\n return labelLocation;\n };\n DataLabel.prototype.isDataLabelShape = function (style) {\n this.isShape = (style.color !== 'transparent' || style.border.width > 0);\n this.borderWidth = style.border.width;\n if (!this.isShape) {\n this.margin = { left: 0, right: 0, bottom: 0, top: 0 };\n }\n };\n DataLabel.prototype.calculateRectActualPosition = function (labelLocation, rect, isMinus, series, size, labelIndex, point) {\n var location;\n var labelRect;\n var isOverLap = true;\n var position = 0;\n var collection = this.chart.dataLabelCollections;\n var finalPosition = series.type.indexOf('Range') !== -1 || series.type === 'Hilo' ? 2 : 4;\n while (isOverLap && position < finalPosition) {\n var actualPosition = this.getPosition(position);\n this.fontBackground = series.marker.dataLabel.fill;\n if (series.type.indexOf('Stacking') > -1 && actualPosition === 'Outer') {\n actualPosition = 'Top';\n position++;\n }\n location = this.calculateRectPosition(labelLocation, rect, isMinus, actualPosition, series, size, labelIndex, point);\n if (!this.inverted) {\n if (series.marker.dataLabel.enableRotation) {\n size.width = size.width - point.regions[0].width / 10;\n }\n labelRect = calculateRect(new ChartLocation(this.locationX, location), size, this.margin);\n isOverLap = labelRect.y < 0 || isCollide(labelRect, collection, series.clipRect) || labelRect.y > series.clipRect.height;\n if (series.marker.dataLabel.template === null && isOverLap !== true) {\n isOverLap = labelRect.y / 2 + size.height + (actualPosition === 'Outer' ? point.regions[0].height + this.extraSpace : point.regions[0].height - 2 * this.extraSpace) > series.clipRect.height;\n }\n }\n else {\n labelRect = calculateRect(new ChartLocation(location, this.locationY), size, this.margin);\n isOverLap = labelRect.x < 0 || isCollide(labelRect, collection, series.clipRect) ||\n labelRect.x + labelRect.width > series.clipRect.width;\n }\n position++;\n }\n return location;\n };\n // alignment calculation assigned here\n DataLabel.prototype.calculateAlignment = function (value, labelLocation, alignment, isMinus) {\n switch (alignment) {\n case 'Far':\n labelLocation = !this.inverted ? (isMinus ? labelLocation + value : labelLocation - value) :\n (isMinus ? labelLocation - value : labelLocation + value);\n break;\n case 'Near':\n labelLocation = !this.inverted ? (isMinus ? labelLocation - value : labelLocation + value) :\n (isMinus ? labelLocation + value : labelLocation - value);\n break;\n }\n return labelLocation;\n };\n //calculation for top and outer position of datalabel for rect series\n DataLabel.prototype.calculateTopAndOuterPosition = function (location, rect, position, series, index, extraSpace, isMinus, point) {\n var margin = this.margin;\n var top;\n switch (series.type) {\n case 'RangeColumn':\n case 'RangeArea':\n case 'RangeStepArea':\n case 'SplineRangeArea':\n case 'Hilo':\n top = (index === 0 && !this.yAxisInversed) || (index === 1 && this.yAxisInversed);\n location = this.updateLabelLocation(position, location, extraSpace, margin, rect, top);\n break;\n case 'Candle':\n top = (index === 0 || index === 2) && !this.yAxisInversed\n || (index === 1 || index === 3) && this.yAxisInversed;\n location = this.updateLabelLocation(position, location, extraSpace, margin, rect, top, index > 1);\n break;\n case 'HiloOpenClose':\n if (index <= 1) {\n top = (index === 0 && !this.yAxisInversed) || (index === 1 && this.yAxisInversed);\n location = this.updateLabelLocation(position, location, extraSpace, margin, rect, top);\n }\n else {\n if (this.yAxisInversed) {\n location = !this.inverted ? location + extraSpace + margin.top : location - extraSpace - margin.right;\n }\n else {\n location = !this.inverted ? location - extraSpace - margin.bottom : location + extraSpace + margin.left;\n }\n }\n break;\n default:\n if (((isMinus && position === 'Top') || (!isMinus && position === 'Outer')) || (position === 'Top' && series.visiblePoints[point.index].yValue === 0)) {\n location = !this.inverted ? location + (isMinus && series.type === 'Waterfall' ? (-rect.height + extraSpace + margin.bottom) : (-extraSpace - margin.bottom - this.markerHeight)) :\n location + (isMinus && series.type === 'Waterfall' ? (+rect.width - extraSpace - margin.left) : (+extraSpace + margin.left + this.markerHeight));\n }\n else {\n location = !this.inverted ? location + (isMinus && series.type === 'Waterfall' ? (-rect.height - extraSpace - margin.top) : (+extraSpace + margin.top + this.markerHeight)) :\n location + (isMinus && series.type === 'Waterfall' ? (+rect.width + extraSpace + margin.top) : (-extraSpace - margin.right - this.markerHeight));\n }\n break;\n }\n return location;\n };\n /**\n * Updates the location of the data label.\n *\n * @param {LabelPosition} position - The position of the data label.\n * @param {number} location - The initial location of the data label.\n * @param {number} extraSpace - Extra space to adjust the label position.\n * @param {MarginModel} margin - The margin for the chart.\n * @param {Rect} rect - The rectangle associated with the data label.\n * @param {boolean} top - Indicates whether the label is positioned at the top.\n * @param {boolean} inside - Indicates whether the label is inside the chart area.\n * @returns {number} The updated location of the data label.\n */\n DataLabel.prototype.updateLabelLocation = function (position, location, extraSpace, margin, rect, top, inside) {\n if (inside === void 0) { inside = false; }\n if (!this.inverted) {\n if (top) {\n location = (position === 'Outer' && !inside) ? location - extraSpace - margin.bottom - this.markerHeight :\n location + extraSpace + margin.top + this.markerHeight;\n }\n else {\n location = (position === 'Outer' && !inside) ? location + rect.height + extraSpace + margin.top + this.markerHeight :\n location + rect.height - extraSpace - margin.bottom - this.markerHeight;\n }\n }\n else {\n if (top) {\n location = (position === 'Outer' && !inside) ? location + extraSpace + margin.left + this.markerHeight :\n location - extraSpace - margin.right - this.markerHeight;\n }\n else {\n location = (position === 'Outer' && !inside) ? location - rect.width - extraSpace - margin.right - this.markerHeight :\n location - rect.width + extraSpace + margin.left + this.markerHeight;\n }\n }\n return location;\n };\n DataLabel.prototype.calculatePathActualPosition = function (y, markerSize, series, point, size, labelIndex) {\n var points = series.points;\n var index = point.index;\n var yValue = points[index].yValue;\n var position;\n var nextPoint = points.length - 1 > index ? points[index + 1] : null;\n var previousPoint = index > 0 ? points[index - 1] : null;\n var yLocation;\n var isOverLap = true;\n var labelRect;\n var isBottom;\n var positionIndex;\n var collection = this.chart.dataLabelCollections;\n if (series.type === 'Bubble') {\n position = 'Top';\n }\n else if (series.type.indexOf('Step') > -1) {\n position = 'Top';\n if (index) {\n position = (!previousPoint || !previousPoint.visible || (yValue > previousPoint.yValue !== this.yAxisInversed)\n || yValue === previousPoint.yValue) ? 'Top' : 'Bottom';\n }\n }\n else if (series.type === 'BoxAndWhisker') {\n if (labelIndex === 1 || labelIndex === 3 || labelIndex > 4) {\n position = series.yAxis.isAxisInverse ? 'Bottom' : 'Top';\n }\n else if (labelIndex === 2 || labelIndex === 4) {\n position = series.yAxis.isAxisInverse ? 'Top' : 'Bottom';\n }\n else {\n isOverLap = false;\n position = 'Middle';\n yLocation = this.calculatePathPosition(y, position, series, point, size, labelIndex);\n }\n }\n else {\n if (index === 0) {\n position = (!nextPoint || !nextPoint.visible || yValue > nextPoint.yValue ||\n (yValue < nextPoint.yValue && this.yAxisInversed)) ? 'Top' : 'Bottom';\n }\n else if (index === points.length - 1) {\n position = (!previousPoint || !previousPoint.visible || yValue > previousPoint.yValue ||\n (yValue < previousPoint.yValue && this.yAxisInversed)) ? 'Top' : 'Bottom';\n }\n else {\n if (!nextPoint.visible && !(previousPoint && previousPoint.visible)) {\n position = 'Top';\n }\n else if (!nextPoint.visible || !previousPoint) {\n position = (nextPoint.yValue > yValue || (previousPoint && previousPoint.yValue > yValue)) ?\n 'Bottom' : 'Top';\n }\n else {\n var slope = (nextPoint.yValue - previousPoint.yValue) / 2;\n var intersectY = (slope * index) + (nextPoint.yValue - (slope * (index + 1)));\n position = !this.yAxisInversed ? intersectY < yValue ? 'Top' : 'Bottom' :\n intersectY < yValue ? 'Bottom' : 'Top';\n }\n }\n }\n isBottom = position === 'Bottom';\n positionIndex = ['Outer', 'Top', 'Bottom', 'Middle', 'Auto'].indexOf(position);\n while (isOverLap && positionIndex < 4) {\n yLocation = this.calculatePathPosition(y, this.getPosition(positionIndex), series, point, size, labelIndex);\n labelRect = calculateRect(new ChartLocation(this.locationX, yLocation), size, this.margin);\n isOverLap = labelRect.y < 0 || isCollide(labelRect, collection, series.clipRect)\n || (labelRect.y + labelRect.height) > series.clipRect.height;\n positionIndex = isBottom ? positionIndex - 1 : positionIndex + 1;\n isBottom = false;\n }\n return yLocation;\n };\n /**\n * Initiates the animation for data labels.\n *\n * @param {Series} series - The series associated with the data labels.\n * @param {Element} [element] - The element to animate.\n * @returns {void}\n * @private\n */\n DataLabel.prototype.doDataLabelAnimation = function (series, element) {\n var shapeElements = series.shapeElement.childNodes;\n var textNode = series.textElement.childNodes;\n var delay = series.animation.delay + series.animation.duration;\n var duration = series.chart.animated ? series.chart.duration : 200;\n var location;\n var length = element ? 1 : textNode.length;\n var tempElement;\n for (var i = 0; i < length; i++) {\n tempElement = textNode[i];\n if (element) {\n element.style.visibility = 'hidden';\n templateAnimate(element, delay, duration, 'ZoomIn');\n }\n else {\n location = new ChartLocation((+tempElement.getAttribute('x')) + ((+tempElement.getAttribute('width')) / 2), (+tempElement.getAttribute('y')) + ((+tempElement.getAttribute('height')) / 2));\n markerAnimate(tempElement, delay, duration, series, null, location, true);\n if (shapeElements[i]) {\n tempElement = shapeElements[i];\n location = new ChartLocation((+tempElement.getAttribute('x')) + ((+tempElement.getAttribute('width')) / 2), (+tempElement.getAttribute('y')) + ((+tempElement.getAttribute('height')) / 2));\n markerAnimate(tempElement, delay, duration, series, null, location, true);\n }\n }\n }\n };\n DataLabel.prototype.getPosition = function (index) {\n return (['Outer', 'Top', 'Bottom', 'Middle', 'Auto'][index]);\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name.\n */\n DataLabel.prototype.getModuleName = function () {\n // Returns the module name\n return 'DataLabel';\n };\n /**\n * To destroy the dataLabel for series.\n *\n * @returns {void}\n * @private\n */\n DataLabel.prototype.destroy = function () {\n // Destroy method performed here\n };\n return DataLabel;\n}());\nexport { DataLabel };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Double } from '../axis/double-axis';\n/**\n * Common axis classes\n *\n * @private\n */\nvar NiceInterval = /** @class */ (function (_super) {\n __extends(NiceInterval, _super);\n function NiceInterval() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Method to calculate numeric datetime interval.\n *\n * @param {Axis} axis - The axis for which to calculate the interval.\n * @param {Size} size - The size of the axis.\n * @param {number} start - The start value of the axis.\n * @param {number} end - The end value of the axis.\n * @param {boolean} [isChart=true] - Indicating whether it's a chart. Defaults to true.\n * @returns {number} - The calculated numeric datetime interval.\n */\n NiceInterval.prototype.calculateDateTimeNiceInterval = function (axis, size, start, end, isChart) {\n if (isChart === void 0) { isChart = true; }\n var oneDay = 24 * 60 * 60 * 1000;\n var startDate = new Date(start);\n var endDate = new Date(end);\n //var axisInterval ;\n var totalDays = (Math.abs((startDate.getTime() - endDate.getTime()) / (oneDay)));\n var interval;\n axis.actualIntervalType = axis.intervalType;\n var type = axis.intervalType;\n switch (type) {\n case 'Years':\n interval = this.calculateNumericNiceInterval(axis, totalDays / 365, size);\n break;\n case 'Quarter':\n interval = this.calculateNumericNiceInterval(axis, (totalDays / 365) * 4, size);\n break;\n case 'Months':\n interval = this.calculateNumericNiceInterval(axis, totalDays / 30, size);\n break;\n case 'Weeks':\n interval = this.calculateNumericNiceInterval(axis, totalDays / 7, size);\n break;\n case 'Days':\n interval = this.calculateNumericNiceInterval(axis, totalDays, size);\n break;\n case 'Hours':\n interval = this.calculateNumericNiceInterval(axis, totalDays * 24, size);\n break;\n case 'Minutes':\n interval = this.calculateNumericNiceInterval(axis, totalDays * 24 * 60, size);\n break;\n case 'Seconds':\n interval = this.calculateNumericNiceInterval(axis, totalDays * 24 * 60 * 60, size);\n break;\n case 'Auto':\n interval = this.calculateNumericNiceInterval(axis, totalDays / 365, size);\n if (interval >= 1) {\n axis.actualIntervalType = 'Years';\n return interval;\n }\n interval = this.calculateNumericNiceInterval(axis, totalDays / 30, size);\n if (interval >= 1) {\n axis.actualIntervalType = 'Months';\n return interval;\n }\n interval = this.calculateNumericNiceInterval(axis, totalDays / 7, size);\n if (interval >= 1 && !isChart) {\n axis.actualIntervalType = 'Weeks';\n return interval;\n }\n interval = this.calculateNumericNiceInterval(axis, totalDays, size);\n if (interval >= 1) {\n axis.actualIntervalType = 'Days';\n return interval;\n }\n interval = this.calculateNumericNiceInterval(axis, totalDays * 24, size);\n if (interval >= 1) {\n axis.actualIntervalType = 'Hours';\n return interval;\n }\n interval = this.calculateNumericNiceInterval(axis, totalDays * 24 * 60, size);\n if (interval >= 1) {\n axis.actualIntervalType = 'Minutes';\n return interval;\n }\n interval = this.calculateNumericNiceInterval(axis, totalDays * 24 * 60 * 60, size);\n axis.actualIntervalType = 'Seconds';\n return interval;\n }\n return interval;\n };\n /**\n * To get the skeleton for the DateTime axis.\n *\n * @param {Axis} axis - The DateTime axis for which to get the skeleton.\n * @param {number} currentValue - The current value.\n * @param {number} previousValue - The previous value.\n * @param {boolean} isBlazor - Indicates whether it's for Blazor.\n * @returns {string} - The skeleton for the DateTime axis.\n * @private\n */\n NiceInterval.prototype.getSkeleton = function (axis, currentValue, previousValue, isBlazor) {\n var skeleton;\n var intervalType = axis.actualIntervalType;\n if (axis.skeleton) {\n return axis.skeleton;\n }\n if (intervalType === 'Years') {\n if (isBlazor) {\n skeleton = axis.isChart ? (axis.valueType === 'DateTime' ? 'y' : 'y') : 'y';\n }\n else {\n skeleton = axis.isChart ? ((axis.valueType === 'DateTime' && axis.isIntervalInDecimal) ? 'y' : 'yMMM') : 'y';\n }\n }\n else if (intervalType === 'Quarter') {\n skeleton = isBlazor ? 'y' : 'yMMM';\n }\n else if (intervalType === 'Months') {\n if (isBlazor) {\n skeleton = axis.isChart ? 'm' : 'm';\n }\n else {\n skeleton = axis.isChart ? 'MMMd' : 'MMM';\n }\n }\n else if (intervalType === 'Weeks') {\n skeleton = isBlazor ? 'm' : 'MEd';\n }\n else if (intervalType === 'Days') {\n if (isBlazor) {\n skeleton = 'd';\n }\n else {\n skeleton = axis.isChart ? (axis.valueType === 'DateTime' ? 'MMMd' : 'yMd') : 'MMMd';\n }\n }\n else if (intervalType === 'Hours') {\n if (isBlazor) {\n skeleton = 't';\n }\n else {\n skeleton = axis.isChart ? (axis.valueType === 'DateTime' ? 'Hm' : 'EHm') : 'h';\n }\n }\n else if (intervalType === 'Minutes') {\n if (isBlazor) {\n skeleton = 'T';\n }\n else {\n skeleton = axis.isChart ? 'Hms' : 'hm';\n }\n }\n else {\n if (isBlazor) {\n skeleton = 'T';\n }\n else {\n skeleton = axis.isChart ? 'Hms' : 'hms';\n }\n }\n return skeleton;\n };\n /**\n * Find label format for axis\n *\n * @param {Axis} axis - axis\n * @returns {string} - Returns the label format.\n * @private\n */\n NiceInterval.prototype.findCustomFormats = function (axis) {\n var labelFormat = axis.labelFormat ? axis.labelFormat : '';\n if (axis.isChart && !axis.skeleton && axis.actualIntervalType === 'Months' && !labelFormat) {\n labelFormat = axis.valueType === 'DateTime' ? 'MMM yyyy' : 'yMMM';\n }\n return labelFormat;\n };\n return NiceInterval;\n}(Double));\nexport { NiceInterval };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { getActualDesiredIntervalsCount, triggerLabelRender } from '../../common/utils/helper';\nimport { DoubleRange } from '../utils/double-range';\nimport { withIn } from '../../common/utils/helper';\nimport { extend, getValue, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { NiceInterval } from '../axis/axis-helper';\n/**\n * The `Category` module is used to render the category axis in charts.\n *\n * @private\n */\nvar Category = /** @class */ (function (_super) {\n __extends(Category, _super);\n /**\n * Constructor for the category module.\n *\n * @private\n * @param {Chart} chart - Specifies the chart.\n */\n function Category(chart) {\n return _super.call(this, chart) || this;\n }\n /**\n * The function to calculate the range and labels for the axis.\n *\n * @private\n * @returns {void}\n */\n Category.prototype.calculateRangeAndInterval = function (size, axis) {\n this.calculateRange(axis);\n this.getActualRange(axis, size);\n this.applyRangePadding(axis, size);\n this.calculateVisibleLabels(axis);\n };\n /**\n * Actual Range for the axis.\n *\n * @private\n */\n Category.prototype.getActualRange = function (axis, size) {\n this.initializeDoubleRange(axis);\n // axis.doubleRange = new DoubleRange(this.min, this.max);\n axis.actualRange = {};\n if (!axis.interval) {\n axis.actualRange.interval = Math.max(1, Math.floor(axis.doubleRange.delta / getActualDesiredIntervalsCount(size, axis)));\n }\n else {\n axis.actualRange.interval = Math.ceil(axis.interval);\n }\n axis.actualRange.min = axis.doubleRange.start;\n axis.actualRange.max = axis.doubleRange.end;\n axis.actualRange.delta = axis.doubleRange.delta;\n };\n /**\n * Padding for the axis.\n *\n * @private\n * @param {Axis} axis - The axis for which padding is applied.\n * @param {Size} size - The size for padding.\n * @returns {void}\n */\n Category.prototype.applyRangePadding = function (axis, size) {\n var isColumn;\n axis.series.forEach(function (element) {\n if (!isColumn) {\n isColumn = (element.type.indexOf('Column') > -1 || element.type.indexOf('Bar') > -1) && !(axis.zoomFactor < 1 || axis.zoomPosition > 0) && isNullOrUndefined(axis.minimum) && isNullOrUndefined(axis.maximum);\n }\n });\n var ticks = ((axis.labelPlacement === 'BetweenTicks' || isColumn) && !this.chart.stockChart && this.chart.chartAreaType !== 'PolarRadar') ? 0.5 : 0;\n if (ticks > 0) {\n axis.actualRange.min -= ticks;\n axis.actualRange.max += ticks;\n }\n else {\n axis.actualRange.max += axis.actualRange.max ? 0 : 0.5;\n }\n axis.doubleRange = new DoubleRange(axis.actualRange.min, axis.actualRange.max);\n axis.actualRange.delta = axis.doubleRange.delta;\n this.calculateVisibleRange(size, axis);\n };\n /**\n * Calculate label for the axis.\n *\n * @private\n */\n Category.prototype.calculateVisibleLabels = function (axis) {\n /** Generate axis labels */\n axis.visibleLabels = [];\n axis.visibleRange.interval = axis.visibleRange.interval < 1 ? 1 : axis.visibleRange.interval;\n var tempInterval = Math.ceil(axis.visibleRange.min);\n var labelStyle;\n if (axis.zoomFactor < 1 || axis.zoomPosition > 0) {\n tempInterval = axis.visibleRange.min - (axis.visibleRange.min % axis.visibleRange.interval);\n }\n var position;\n axis.startLabel = axis.labels[Math.round(axis.visibleRange.min)];\n axis.endLabel = axis.labels[Math.floor(axis.visibleRange.max)];\n for (; tempInterval <= axis.visibleRange.max; tempInterval += axis.visibleRange.interval) {\n labelStyle = (extend({}, getValue('properties', axis.labelStyle), null, true));\n if (withIn(tempInterval, axis.visibleRange) && axis.labels.length > 0) {\n position = Math.round(tempInterval);\n triggerLabelRender(this.chart, position, axis.labels[position] ? axis.labels[position].toString() : '', labelStyle, axis);\n }\n }\n if (axis.getMaxLabelWidth) {\n axis.getMaxLabelWidth(this.chart);\n }\n };\n /**\n * Get module name\n */\n Category.prototype.getModuleName = function () {\n /**\n * Returns the module name\n */\n return 'Category';\n };\n /**\n * To destroy the category axis.\n *\n * @returns {void}\n * @private\n */\n Category.prototype.destroy = function () {\n /**\n * Destroy method performed here\n */\n };\n return Category;\n}(NiceInterval));\nexport { Category };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { ComplexBase } from '@syncfusion/ej2-react-base';\n/**\n * `SeriesDirective` directive represent a series of the react chart.\n * It must be contained in a Chart component(`ChartComponent`).\n * ```tsx\n * \n * \n * \n * \n * \n * ```\n */\nvar SeriesDirective = /** @class */ (function (_super) {\n __extends(SeriesDirective, _super);\n function SeriesDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SeriesDirective.moduleName = 'series';\n SeriesDirective.complexTemplate = { 'dataLabel.template': 'dataLabel.template' };\n return SeriesDirective;\n}(ComplexBase));\nexport { SeriesDirective };\nvar SeriesCollectionDirective = /** @class */ (function (_super) {\n __extends(SeriesCollectionDirective, _super);\n function SeriesCollectionDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n SeriesCollectionDirective.propertyName = 'series';\n SeriesCollectionDirective.moduleName = 'seriesCollection';\n return SeriesCollectionDirective;\n}(ComplexBase));\nexport { SeriesCollectionDirective };\n","const colors = [\r\n \"#FF6384\",\r\n \"#36A2EB\",\r\n \"#FFCE56\",\r\n \"#4BC0C0\",\r\n \"#9966FF\",\r\n \"#FF9F40\",\r\n \"#024CAA\",\r\n \"#37AFE1\",\r\n \"#3C552D\",\r\n \"#CB9DF0\",\r\n \"#F0C1E1\",\r\n \"#FFE31A\",\r\n \"#C5D3E8\",\r\n \"#F95454\",\r\n \"#740938\",\r\n \"#AF1740\",\r\n \"#CC2B52\",\r\n \"#EC8305\",\r\n \"#00FF9C\",\r\n];\r\nconst whiteColors = [\r\n \"#FF6384\", // Açık kırmızı\r\n \"#36A2EB\", // Açık mavi\r\n \"#FFCE56\", // Açık sarı\r\n \"#4BC0C0\", // Açık yeşil\r\n \"#FF9F40\", // Açık turuncu\r\n \"#F0C1E1\", // Açık pembe\r\n \"#FFE31A\", // Sarı\r\n \"#C5D3E8\", // Soluk mavi\r\n \"#F95454\", // Açık kırmızı\r\n \"#AF1740\", // Koyu renk, çıkarttım\r\n \"#CC2B52\", // Koyu renk, çıkarttım\r\n \"#EC8305\", // Koyu renk, çıkarttım\r\n \"#00FF9C\", // Açık yeşil\r\n \"#A0D1D6\", // Ekstra açık mavi\r\n \"#FFC3A0\", // Ekstra açık pembe\r\n \"#E5E5E5\", // Açık gri\r\n];\r\n// const a = [\"#003f5c\", \"#58508d\", \"#bc5090\", \"#ff6361\", \"#ffa600\"];\r\n\r\nexport function getRandomColor() {\r\n const randomIndex = Math.floor(Math.random() * colors.length);\r\n return colors[randomIndex];\r\n}\r\nexport function getRandomWhiteColor() {\r\n const randomIndex = Math.floor(Math.random() * whiteColors.length);\r\n return whiteColors[randomIndex];\r\n}\r\n","import * as React from \"react\";\r\nimport {\r\n ChartComponent,\r\n SeriesCollectionDirective,\r\n SeriesDirective,\r\n Inject,\r\n Legend,\r\n Category,\r\n Tooltip,\r\n DataLabel,\r\n LineSeries,\r\n} from \"@syncfusion/ej2-react-charts\";\r\nimport axiosClient from \"../Utils/axiosClient\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { getRandomColor } from \"../Utils/colorUtil\";\r\n\r\nconst LineChart = () => {\r\n const [data, setData] = React.useState([]);\r\n\r\n const { t } = useTranslation();\r\n\r\n React.useEffect(() => {\r\n const getChart = async () => {\r\n try {\r\n const response = await axiosClient.get(\"/dashboard/Monthly\");\r\n\r\n if (response.status === 200) {\r\n const formattedData = response.data.map((item) => ({\r\n ...item,\r\n month: t(`Months.${item.month}`),\r\n }));\r\n setData(formattedData);\r\n }\r\n } catch (error) {}\r\n };\r\n getChart();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default LineChart;\r\n","var instances = 'ej2_instances';\nvar uid = 0;\nvar isBlazorPlatform = false;\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {void} result\n * @private\n */\nexport function disableBlazorMode() {\n isBlazorPlatform = false;\n}\n/**\n * Create Instance from constructor function with desired parameters.\n *\n * @param {Function} classFunction - Class function to which need to create instance\n * @param {any[]} params - Parameters need to passed while creating instance\n * @returns {any} ?\n * @private\n */\nexport function createInstance(classFunction, params) {\n var arrayParam = params;\n arrayParam.unshift(undefined);\n return new (Function.prototype.bind.apply(classFunction, arrayParam));\n}\n/**\n * To run a callback function immediately after the browser has completed other operations.\n *\n * @param {Function} handler - callback function to be triggered.\n * @returns {Function} ?\n * @private\n */\nexport function setImmediate(handler) {\n var unbind;\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n intCrypto.getRandomValues(num);\n var secret = 'ej2' + combineArray(num);\n var messageHandler = function (event) {\n if (event.source === window && typeof event.data === 'string' && event.data.length <= 32 && event.data === secret) {\n handler();\n unbind();\n }\n };\n window.addEventListener('message', messageHandler, false);\n window.postMessage(secret, '*');\n return unbind = function () {\n window.removeEventListener('message', messageHandler);\n handler = messageHandler = secret = undefined;\n };\n}\n/**\n * To get nameSpace value from the desired object.\n *\n * @param {string} nameSpace - String value to the get the inner object\n * @param {any} obj - Object to get the inner object value.\n * @returns {any} ?\n * @private\n */\nexport function getValue(nameSpace, obj) {\n var value = obj;\n var splits = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n for (var i = 0; i < splits.length && !isUndefined(value); i++) {\n value = value[splits[parseInt(i.toString(), 10)]];\n }\n return value;\n}\n/**\n * To set value for the nameSpace in desired object.\n *\n * @param {string} nameSpace - String value to the get the inner object\n * @param {any} value - Value that you need to set.\n * @param {any} obj - Object to get the inner object value.\n * @returns {any} ?\n * @private\n */\nexport function setValue(nameSpace, value, obj) {\n var keys = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n var start = obj || {};\n var fromObj = start;\n var i;\n var length = keys.length;\n var key;\n for (i = 0; i < length; i++) {\n key = keys[parseInt(i.toString(), 10)];\n if (i + 1 === length) {\n fromObj[\"\" + key] = value === undefined ? {} : value;\n }\n else if (isNullOrUndefined(fromObj[\"\" + key])) {\n fromObj[\"\" + key] = {};\n }\n fromObj = fromObj[\"\" + key];\n }\n return start;\n}\n/**\n * Delete an item from Object\n *\n * @param {any} obj - Object in which we need to delete an item.\n * @param {string} key - String value to the get the inner object\n * @returns {void} ?\n * @private\n */\nexport function deleteObject(obj, key) {\n delete obj[\"\" + key];\n}\n/**\n *@private\n */\nexport var containerObject = typeof window !== 'undefined' ? window : {};\n/**\n * Check weather the given argument is only object.\n *\n * @param {any} obj - Object which is need to check.\n * @returns {boolean} ?\n * @private\n */\nexport function isObject(obj) {\n var objCon = {};\n return (!isNullOrUndefined(obj) && obj.constructor === objCon.constructor);\n}\n/**\n * To get enum value by giving the string.\n *\n * @param {any} enumObject - Enum object.\n * @param {string} enumValue - Enum value to be searched\n * @returns {any} ?\n * @private\n */\nexport function getEnumValue(enumObject, enumValue) {\n return enumObject[\"\" + enumValue];\n}\n/**\n * Merge the source object into destination object.\n *\n * @param {any} source - source object which is going to merge with destination object\n * @param {any} destination - object need to be merged\n * @returns {void} ?\n * @private\n */\nexport function merge(source, destination) {\n if (!isNullOrUndefined(destination)) {\n var temrObj = source;\n var tempProp = destination;\n var keys = Object.keys(destination);\n var deepmerge = 'deepMerge';\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (!isNullOrUndefined(temrObj[\"\" + deepmerge]) && (temrObj[\"\" + deepmerge].indexOf(key) !== -1) &&\n (isObject(tempProp[\"\" + key]) || Array.isArray(tempProp[\"\" + key]))) {\n extend(temrObj[\"\" + key], temrObj[\"\" + key], tempProp[\"\" + key], true);\n }\n else {\n temrObj[\"\" + key] = tempProp[\"\" + key];\n }\n }\n }\n}\n/**\n * Extend the two object with newer one.\n *\n * @param {any} copied - Resultant object after merged\n * @param {Object} first - First object need to merge\n * @param {Object} second - Second object need to merge\n * @param {boolean} deep ?\n * @returns {Object} ?\n * @private\n */\nexport function extend(copied, first, second, deep) {\n var result = copied && typeof copied === 'object' ? copied : {};\n var length = arguments.length;\n var args = [copied, first, second, deep];\n if (deep) {\n length = length - 1;\n }\n var _loop_1 = function (i) {\n if (!args[parseInt(i.toString(), 10)]) {\n return \"continue\";\n }\n var obj1 = args[parseInt(i.toString(), 10)];\n Object.keys(obj1).forEach(function (key) {\n var src = result[\"\" + key];\n var copy = obj1[\"\" + key];\n var clone;\n var isArrayChanged = Array.isArray(copy) && Array.isArray(src) && (copy.length !== src.length);\n var blazorEventExtend = isBlazor() ? (!(src instanceof Event) && !isArrayChanged) : true;\n if (deep && blazorEventExtend && (isObject(copy) || Array.isArray(copy))) {\n if (isObject(copy)) {\n clone = src ? src : {};\n if (Array.isArray(clone) && Object.prototype.hasOwnProperty.call(clone, 'isComplexArray')) {\n extend(clone, {}, copy, deep);\n }\n else {\n result[\"\" + key] = extend(clone, {}, copy, deep);\n }\n }\n else {\n /* istanbul ignore next */\n clone = isBlazor() ? src && Object.keys(copy).length : src ? src : [];\n result[\"\" + key] = extend([], clone, copy, (clone && clone.length) || (copy && copy.length));\n }\n }\n else {\n result[\"\" + key] = copy;\n }\n });\n };\n for (var i = 1; i < length; i++) {\n _loop_1(i);\n }\n return result;\n}\n/**\n * To check whether the object is null or undefined.\n *\n * @param {any} value - To check the object is null or undefined\n * @returns {boolean} ?\n * @private\n */\nexport function isNullOrUndefined(value) {\n return value === undefined || value === null;\n}\n/**\n * To check whether the object is undefined.\n *\n * @param {any} value - To check the object is undefined\n * @returns {boolean} ?\n * @private\n */\nexport function isUndefined(value) {\n return ('undefined' === typeof value);\n}\n/**\n * To return the generated unique name\n *\n * @param {string} definedName - To concatenate the unique id to provided name\n * @returns {string} ?\n * @private\n */\nexport function getUniqueID(definedName) {\n return definedName + '_' + uid++;\n}\n/**\n * It limits the rate at which a function can fire. The function will fire only once every provided second instead of as quickly.\n *\n * @param {Function} eventFunction - Specifies the function to run when the event occurs\n * @param {number} delay - A number that specifies the milliseconds for function delay call option\n * @returns {Function} ?\n * @private\n */\nexport function debounce(eventFunction, delay) {\n var out;\n return function () {\n var _this = this;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var later = function () {\n out = null;\n return eventFunction.apply(_this, args);\n };\n clearTimeout(out);\n out = setTimeout(later, delay);\n };\n}\n/**\n * To convert the object to string for query url\n *\n * @param {Object} data ?\n * @returns {string} ?\n * @private\n */\nexport function queryParams(data) {\n var array = [];\n var keys = Object.keys(data);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n array.push(encodeURIComponent(key) + '=' + encodeURIComponent('' + data[\"\" + key]));\n }\n return array.join('&');\n}\n/**\n * To check whether the given array contains object.\n *\n * @param {any} value - Specifies the T type array to be checked.\n * @returns {boolean} ?\n * @private\n */\nexport function isObjectArray(value) {\n var parser = Object.prototype.toString;\n if (parser.call(value) === '[object Array]') {\n if (parser.call(value[0]) === '[object Object]') {\n return true;\n }\n }\n return false;\n}\n/**\n * To check whether the child element is descendant to parent element or parent and child are same element.\n *\n * @param {Element} child - Specifies the child element to compare with parent.\n * @param {Element} parent - Specifies the parent element.\n * @returns {boolean} ?\n * @private\n */\nexport function compareElementParent(child, parent) {\n var node = child;\n if (node === parent) {\n return true;\n }\n else if (node === document || !node) {\n return false;\n }\n else {\n return compareElementParent(node.parentNode, parent);\n }\n}\n/**\n * To throw custom error message.\n *\n * @param {string} message - Specifies the error message to be thrown.\n * @returns {void} ?\n * @private\n */\nexport function throwError(message) {\n try {\n throw new Error(message);\n }\n catch (e) {\n throw new Error(e.message + '\\n' + e.stack);\n }\n}\n/**\n * This function is used to print given element\n *\n * @param {Element} element - Specifies the print content element.\n * @param {Window} printWindow - Specifies the print window.\n * @returns {Window} ?\n * @private\n */\nexport function print(element, printWindow) {\n var div = document.createElement('div');\n var links = [].slice.call(document.getElementsByTagName('head')[0].querySelectorAll('base, link, style'));\n var blinks = [].slice.call(document.getElementsByTagName('body')[0].querySelectorAll('link, style'));\n if (blinks.length) {\n for (var l = 0, len = blinks.length; l < len; l++) {\n links.push(blinks[parseInt(l.toString(), 10)]);\n }\n }\n var reference = '';\n if (isNullOrUndefined(printWindow)) {\n printWindow = window.open('', 'print', 'height=452,width=1024,tabbar=no');\n }\n div.appendChild(element.cloneNode(true));\n for (var i = 0, len = links.length; i < len; i++) {\n reference += links[parseInt(i.toString(), 10)].outerHTML;\n }\n printWindow.document.write(' ' + reference + '' + div.innerHTML +\n '' + '');\n printWindow.document.close();\n printWindow.focus();\n var interval = setInterval(function () {\n if (printWindow.ready) {\n printWindow.print();\n printWindow.close();\n clearInterval(interval);\n }\n }, 500);\n return printWindow;\n}\n/**\n * Function to normalize the units applied to the element.\n *\n * @param {number|string} value ?\n * @returns {string} result\n * @private\n */\nexport function formatUnit(value) {\n var result = value + '';\n if (result.match(/auto|cm|mm|in|px|pt|pc|%|em|ex|ch|rem|vw|vh|vmin|vmax/)) {\n return result;\n }\n return result + 'px';\n}\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {void} result\n * @private\n */\nexport function enableBlazorMode() {\n isBlazorPlatform = true;\n}\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {boolean} result\n * @private\n */\nexport function isBlazor() {\n return isBlazorPlatform;\n}\n/**\n * Function to convert xPath to DOM element in blazor platform\n *\n * @returns {HTMLElement} result\n * @param {HTMLElement | object} element ?\n * @private\n */\nexport function getElement(element) {\n var xPath = 'xPath';\n if (!(element instanceof Node) && isBlazor() && !isNullOrUndefined(element[\"\" + xPath])) {\n return document.evaluate(element[\"\" + xPath], document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;\n }\n return element;\n}\n/**\n * Function to fetch the Instances of a HTML element for the given component.\n *\n * @param {string | HTMLElement} element ?\n * @param {any} component ?\n * @returns {Object} ?\n * @private\n */\nexport function getInstance(element, component) {\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[\"\" + instances]) {\n for (var _i = 0, _a = elem[\"\" + instances]; _i < _a.length; _i++) {\n var inst = _a[_i];\n if (inst instanceof component) {\n return inst;\n }\n }\n }\n return null;\n}\n/**\n * Function to add instances for the given element.\n *\n * @param {string | HTMLElement} element ?\n * @param {Object} instance ?\n * @returns {void} ?\n * @private\n */\nexport function addInstance(element, instance) {\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[\"\" + instances]) {\n elem[\"\" + instances].push(instance);\n }\n else {\n elem[\"\" + instances] = [instance];\n }\n}\n/**\n * Function to generate the unique id.\n *\n * @returns {any} ?\n * @private\n */\nexport function uniqueID() {\n if ((typeof window) === 'undefined') {\n return;\n }\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n return intCrypto.getRandomValues(num);\n}\n/**\n *\n * @param {Int16Array} num ?\n * @returns {string} ?\n */\nfunction combineArray(num) {\n var ret = '';\n for (var i = 0; i < 5; i++) {\n ret += (i ? ',' : '') + num[parseInt(i.toString(), 10)];\n }\n return ret;\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Parser\n */\nvar defaultNumberingSystem = {\n 'latn': {\n '_digits': '0123456789',\n '_type': 'numeric'\n }\n};\nimport { isUndefined, getValue, isBlazor } from '../util';\nvar defaultNumberSymbols = {\n 'decimal': '.',\n 'group': ',',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'exponential': 'E'\n};\nvar latnNumberSystem = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];\n/**\n * Interface for parser base\n *\n * @private\n */\nvar ParserBase = /** @class */ (function () {\n function ParserBase() {\n }\n /**\n * Returns the cldr object for the culture specifies\n *\n * @param {Object} obj - Specifies the object from which culture object to be acquired.\n * @param {string} cName - Specifies the culture name.\n * @returns {Object} ?\n */\n ParserBase.getMainObject = function (obj, cName) {\n var value = isBlazor() ? cName : 'main.' + cName;\n return getValue(value, obj);\n };\n /**\n * Returns the numbering system object from given cldr data.\n *\n * @param {Object} obj - Specifies the object from which number system is acquired.\n * @returns {Object} ?\n */\n ParserBase.getNumberingSystem = function (obj) {\n return getValue('supplemental.numberingSystems', obj) || this.numberingSystems;\n };\n /**\n * Returns the reverse of given object keys or keys specified.\n *\n * @param {Object} prop - Specifies the object to be reversed.\n * @param {number[]} keys - Optional parameter specifies the custom keyList for reversal.\n * @returns {Object} ?\n */\n ParserBase.reverseObject = function (prop, keys) {\n var propKeys = keys || Object.keys(prop);\n var res = {};\n for (var _i = 0, propKeys_1 = propKeys; _i < propKeys_1.length; _i++) {\n var key = propKeys_1[_i];\n if (!Object.prototype.hasOwnProperty.call(res, prop[\"\" + key])) {\n res[prop[\"\" + key]] = key;\n }\n }\n return res;\n };\n /**\n * Returns the symbol regex by skipping the escape sequence.\n *\n * @param {string[]} props - Specifies the array values to be skipped.\n * @returns {RegExp} ?\n */\n ParserBase.getSymbolRegex = function (props) {\n var regexStr = props.map(function (str) {\n return str.replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1');\n }).join('|');\n var regExp = RegExp;\n return new regExp(regexStr, 'g');\n };\n /**\n *\n * @param {Object} prop ?\n * @returns {Object} ?\n */\n ParserBase.getSymbolMatch = function (prop) {\n var matchKeys = Object.keys(defaultNumberSymbols);\n var ret = {};\n for (var _i = 0, matchKeys_1 = matchKeys; _i < matchKeys_1.length; _i++) {\n var key = matchKeys_1[_i];\n ret[prop[\"\" + key]] = defaultNumberSymbols[\"\" + key];\n }\n return ret;\n };\n /**\n * Returns regex string for provided value\n *\n * @param {string} val ?\n * @returns {string} ?\n */\n ParserBase.constructRegex = function (val) {\n var len = val.length;\n var ret = '';\n for (var i = 0; i < len; i++) {\n if (i !== len - 1) {\n ret += val[parseInt(i.toString(), 10)] + '|';\n }\n else {\n ret += val[parseInt(i.toString(), 10)];\n }\n }\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n *\n * @param {string} value - Specifies the values to be replaced.\n * @param {RegExp} regex - Specifies the regex to search.\n * @param {Object} obj - Specifies the object matcher to be replace value parts.\n * @returns {string} ?\n */\n ParserBase.convertValueParts = function (value, regex, obj) {\n return value.replace(regex, function (str) {\n return obj[\"\" + str];\n });\n };\n /**\n * Returns default numbering system object for formatting from cldr data\n *\n * @param {Object} obj ?\n * @returns {NumericObject} ?\n */\n ParserBase.getDefaultNumberingSystem = function (obj) {\n var ret = {};\n ret.obj = getValue('numbers', obj);\n ret.nSystem = getValue('defaultNumberingSystem', ret.obj);\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n *\n * @param {Object} curObj ?\n * @param {Object} numberSystem ?\n * @param {boolean} needSymbols ?\n * @param {boolean} blazorMode ?\n * @returns {Object} ?\n */\n ParserBase.getCurrentNumericOptions = function (curObj, numberSystem, needSymbols, blazorMode) {\n var ret = {};\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem) || blazorMode) {\n var digits = blazorMode ? getValue('obj.mapperDigits', cur) : getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n ret.numericPair = this.reverseObject(digits, latnNumberSystem);\n var regExp = RegExp;\n ret.numberParseRegex = new regExp(this.constructRegex(digits), 'g');\n ret.numericRegex = '[' + digits[0] + '-' + digits[9] + ']';\n if (needSymbols) {\n ret.numericRegex = digits[0] + '-' + digits[9];\n ret.symbolNumberSystem = getValue(blazorMode ? 'numberSymbols' : 'symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.symbolMatch = this.getSymbolMatch(ret.symbolNumberSystem);\n ret.numberSystem = cur.nSystem;\n }\n }\n }\n return ret;\n };\n /**\n * Returns number mapper object for the provided cldr data\n *\n * @param {Object} curObj ?\n * @param {Object} numberSystem ?\n * @param {boolean} isNumber ?\n * @returns {NumberMapper} ?\n */\n ParserBase.getNumberMapper = function (curObj, numberSystem, isNumber) {\n var ret = { mapper: {} };\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem)) {\n ret.numberSystem = cur.nSystem;\n ret.numberSymbols = getValue('symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.timeSeparator = getValue('timeSeparator', ret.numberSymbols);\n var digits = getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n for (var _i = 0, latnNumberSystem_1 = latnNumberSystem; _i < latnNumberSystem_1.length; _i++) {\n var i = latnNumberSystem_1[_i];\n ret.mapper[parseInt(i.toString(), 10)] = digits[parseInt(i.toString(), 10)];\n }\n }\n }\n return ret;\n };\n ParserBase.nPair = 'numericPair';\n ParserBase.nRegex = 'numericRegex';\n ParserBase.numberingSystems = defaultNumberingSystem;\n return ParserBase;\n}());\nexport { ParserBase };\n/**\n * @private\n */\nvar blazorCurrencyData = {\n 'DJF': 'Fdj',\n 'ERN': 'Nfk',\n 'ETB': 'Br',\n 'NAD': '$',\n 'ZAR': 'R',\n 'XAF': 'FCFA',\n 'GHS': 'GH₵',\n 'XDR': 'XDR',\n 'AED': 'د.إ.',\n 'BHD': 'د.ب.',\n 'DZD': 'د.ج.',\n 'EGP': 'ج.م.',\n 'ILS': '₪',\n 'IQD': 'د.ع.',\n 'JOD': 'د.ا.',\n 'KMF': 'CF',\n 'KWD': 'د.ك.',\n 'LBP': 'ل.ل.',\n 'LYD': 'د.ل.',\n 'MAD': 'د.م.',\n 'MRU': 'أ.م.',\n 'OMR': 'ر.ع.',\n 'QAR': 'ر.ق.',\n 'SAR': 'ر.س.',\n 'SDG': 'ج.س.',\n 'SOS': 'S',\n 'SSP': '£',\n 'SYP': 'ل.س.',\n 'TND': 'د.ت.',\n 'YER': 'ر.ي.',\n 'CLP': '$',\n 'INR': '₹',\n 'TZS': 'TSh',\n 'EUR': '€',\n 'AZN': '₼',\n 'RUB': '₽',\n 'BYN': 'Br',\n 'ZMW': 'K',\n 'BGN': 'лв.',\n 'NGN': '₦',\n 'XOF': 'CFA',\n 'BDT': '৳',\n 'CNY': '¥',\n 'BAM': 'КМ',\n 'UGX': 'USh',\n 'USD': '$',\n 'CZK': 'Kč',\n 'GBP': '£',\n 'DKK': 'kr.',\n 'KES': 'Ksh',\n 'CHF': 'CHF',\n 'MVR': 'ރ.',\n 'BTN': 'Nu.',\n 'XCD': 'EC$',\n 'AUD': '$',\n 'BBD': '$',\n 'BIF': 'FBu',\n 'BMD': '$',\n 'BSD': '$',\n 'BWP': 'P',\n 'BZD': '$',\n 'CAD': '$',\n 'NZD': '$',\n 'FJD': '$',\n 'FKP': '£',\n 'GIP': '£',\n 'GMD': 'D',\n 'GYD': '$',\n 'HKD': '$',\n 'IDR': 'Rp',\n 'JMD': '$',\n 'KYD': '$',\n 'LRD': '$',\n 'MGA': 'Ar',\n 'MOP': 'MOP$',\n 'MUR': 'Rs',\n 'MWK': 'MK',\n 'MYR': 'RM',\n 'PGK': 'K',\n 'PHP': '₱',\n 'PKR': 'Rs',\n 'RWF': 'RF',\n 'SBD': '$',\n 'SCR': 'SR',\n 'SEK': 'kr',\n 'SGD': '$',\n 'SHP': '£',\n 'SLL': 'Le',\n 'ANG': 'NAf.',\n 'SZL': 'E',\n 'TOP': 'T$',\n 'TTD': '$',\n 'VUV': 'VT',\n 'WST': 'WS$',\n 'ARS': '$',\n 'BOB': 'Bs',\n 'BRL': 'R$',\n 'COP': '$',\n 'CRC': '₡',\n 'CUP': '$',\n 'DOP': '$',\n 'GTQ': 'Q',\n 'HNL': 'L',\n 'MXN': '$',\n 'NIO': 'C$',\n 'PAB': 'B/.',\n 'PEN': 'S/',\n 'PYG': '₲',\n 'UYU': '$',\n 'VES': 'Bs.S',\n 'IRR': 'ريال',\n 'GNF': 'FG',\n 'CDF': 'FC',\n 'HTG': 'G',\n 'XPF': 'FCFP',\n 'HRK': 'kn',\n 'HUF': 'Ft',\n 'AMD': '֏',\n 'ISK': 'kr',\n 'JPY': '¥',\n 'GEL': '₾',\n 'CVE': '​',\n 'KZT': '₸',\n 'KHR': '៛',\n 'KPW': '₩',\n 'KRW': '₩',\n 'KGS': 'сом',\n 'AOA': 'Kz',\n 'LAK': '₭',\n 'MZN': 'MTn',\n 'MKD': 'ден',\n 'MNT': '₮',\n 'BND': '$',\n 'MMK': 'K',\n 'NOK': 'kr',\n 'NPR': 'रु',\n 'AWG': 'Afl.',\n 'SRD': '$',\n 'PLN': 'zł',\n 'AFN': '؋',\n 'STN': 'Db',\n 'MDL': 'L',\n 'RON': 'lei',\n 'UAH': '₴',\n 'LKR': 'රු.',\n 'ALL': 'Lekë',\n 'RSD': 'дин.',\n 'TJS': 'смн',\n 'THB': '฿',\n 'TMT': 'm.',\n 'TRY': '₺',\n 'UZS': 'сўм',\n 'VND': '₫',\n 'TWD': 'NT$'\n};\n/**\n *\n * @param {string} currencyCode ?\n * @returns {string} ?\n */\nexport function getBlazorCurrencySymbol(currencyCode) {\n return getValue(currencyCode || '', blazorCurrencyData);\n}\n","/***\n * Hijri parser\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var HijriParser;\n(function (HijriParser) {\n var dateCorrection = [28607, 28636, 28665, 28695, 28724, 28754, 28783, 28813, 28843, 28872, 28901, 28931, 28960, 28990,\n 29019, 29049, 29078, 29108, 29137, 29167, 29196, 29226, 29255, 29285, 29315, 29345, 29375, 29404, 29434, 29463, 29492, 29522,\n 29551, 29580, 29610, 29640, 29669, 29699, 29729, 29759, 29788, 29818, 29847, 29876, 29906, 29935, 29964, 29994, 30023, 30053,\n 30082, 30112, 30141, 30171, 30200, 30230, 30259, 30289, 30318, 30348, 30378, 30408, 30437, 30467, 30496, 30526, 30555, 30585,\n 30614, 30644, 30673, 30703, 30732, 30762, 30791, 30821, 30850, 30880, 30909, 30939, 30968, 30998, 31027, 31057, 31086, 31116,\n 31145, 31175, 31204, 31234, 31263, 31293, 31322, 31352, 31381, 31411, 31441, 31471, 31500, 31530, 31559, 31589, 31618, 31648,\n 31676, 31706, 31736, 31766, 31795, 31825, 31854, 31884, 31913, 31943, 31972, 32002, 32031, 32061, 32090, 32120, 32150, 32180,\n 32209, 32239, 32268, 32298, 32327, 32357, 32386, 32416, 32445, 32475, 32504, 32534, 32563, 32593, 32622, 32652, 32681, 32711,\n 32740, 32770, 32799, 32829, 32858, 32888, 32917, 32947, 32976, 33006, 33035, 33065, 33094, 33124, 33153, 33183, 33213, 33243,\n 33272, 33302, 33331, 33361, 33390, 33420, 33450, 33479, 33509, 33539, 33568, 33598, 33627, 33657, 33686, 33716, 33745, 33775,\n 33804, 33834, 33863, 33893, 33922, 33952, 33981, 34011, 34040, 34069, 34099, 34128, 34158, 34187, 34217, 34247, 34277, 34306,\n 34336, 34365, 34395, 34424, 34454, 34483, 34512, 34542, 34571, 34601, 34631, 34660, 34690, 34719, 34749, 34778, 34808, 34837,\n 34867, 34896, 34926, 34955, 34985, 35015, 35044, 35074, 35103, 35133, 35162, 35192, 35222, 35251, 35280, 35310, 35340, 35370,\n 35399, 35429, 35458, 35488, 35517, 35547, 35576, 35605, 35635, 35665, 35694, 35723, 35753, 35782, 35811, 35841, 35871, 35901,\n 35930, 35960, 35989, 36019, 36048, 36078, 36107, 36136, 36166, 36195, 36225, 36254, 36284, 36314, 36343, 36373, 36403, 36433,\n 36462, 36492, 36521, 36551, 36580, 36610, 36639, 36669, 36698, 36728, 36757, 36786, 36816, 36845, 36875, 36904, 36934, 36963,\n 36993, 37022, 37052, 37081, 37111, 37141, 37170, 37200, 37229, 37259, 37288, 37318, 37347, 37377, 37406, 37436, 37465, 37495,\n 37524, 37554, 37584, 37613, 37643, 37672, 37701, 37731, 37760, 37790, 37819, 37849, 37878, 37908, 37938, 37967, 37997, 38027,\n 38056, 38085, 38115, 38144, 38174, 38203, 38233, 38262, 38292, 38322, 38351, 38381, 38410, 38440, 38469, 38499, 38528, 38558,\n 38587, 38617, 38646, 38676, 38705, 38735, 38764, 38794, 38823, 38853, 38882, 38912, 38941, 38971, 39001, 39030, 39059, 39089,\n 39118, 39148, 39178, 39208, 39237, 39267, 39297, 39326, 39355, 39385, 39414, 39444, 39473, 39503, 39532, 39562, 39592, 39621,\n 39650, 39680, 39709, 39739, 39768, 39798, 39827, 39857, 39886, 39916, 39946, 39975, 40005, 40035, 40064, 40094, 40123, 40153,\n 40182, 40212, 40241, 40271, 40300, 40330, 40359, 40389, 40418, 40448, 40477, 40507, 40536, 40566, 40595, 40625, 40655, 40685,\n 40714, 40744, 40773, 40803, 40832, 40862, 40892, 40921, 40951, 40980, 41009, 41039, 41068, 41098, 41127, 41157, 41186, 41216,\n 41245, 41275, 41304, 41334, 41364, 41393, 41422, 41452, 41481, 41511, 41540, 41570, 41599, 41629, 41658, 41688, 41718, 41748,\n 41777, 41807, 41836, 41865, 41894, 41924, 41953, 41983, 42012, 42042, 42072, 42102, 42131, 42161, 42190, 42220, 42249, 42279,\n 42308, 42337, 42367, 42397, 42426, 42456, 42485, 42515, 42545, 42574, 42604, 42633, 42662, 42692, 42721, 42751, 42780, 42810,\n 42839, 42869, 42899, 42929, 42958, 42988, 43017, 43046, 43076, 43105, 43135, 43164, 43194, 43223, 43253, 43283, 43312, 43342,\n 43371, 43401, 43430, 43460, 43489, 43519, 43548, 43578, 43607, 43637, 43666, 43696, 43726, 43755, 43785, 43814, 43844, 43873,\n 43903, 43932, 43962, 43991, 44021, 44050, 44080, 44109, 44139, 44169, 44198, 44228, 44258, 44287, 44317, 44346, 44375, 44405,\n 44434, 44464, 44493, 44523, 44553, 44582, 44612, 44641, 44671, 44700, 44730, 44759, 44788, 44818, 44847, 44877, 44906, 44936,\n 44966, 44996, 45025, 45055, 45084, 45114, 45143, 45172, 45202, 45231, 45261, 45290, 45320, 45350, 45380, 45409, 45439, 45468,\n 45498, 45527, 45556, 45586, 45615, 45644, 45674, 45704, 45733, 45763, 45793, 45823, 45852, 45882, 45911, 45940, 45970, 45999,\n 46028, 46058, 46088, 46117, 46147, 46177, 46206, 46236, 46265, 46295, 46324, 46354, 46383, 46413, 46442, 46472, 46501, 46531,\n 46560, 46590, 46620, 46649, 46679, 46708, 46738, 46767, 46797, 46826, 46856, 46885, 46915, 46944, 46974, 47003, 47033, 47063,\n 47092, 47122, 47151, 47181, 47210, 47240, 47269, 47298, 47328, 47357, 47387, 47417, 47446, 47476, 47506, 47535, 47565, 47594,\n 47624, 47653, 47682, 47712, 47741, 47771, 47800, 47830, 47860, 47890, 47919, 47949, 47978, 48008, 48037, 48066, 48096, 48125,\n 48155, 48184, 48214, 48244, 48273, 48303, 48333, 48362, 48392, 48421, 48450, 48480, 48509, 48538, 48568, 48598, 48627, 48657,\n 48687, 48717, 48746, 48776, 48805, 48834, 48864, 48893, 48922, 48952, 48982, 49011, 49041, 49071, 49100, 49130, 49160, 49189,\n 49218, 49248, 49277, 49306, 49336, 49365, 49395, 49425, 49455, 49484, 49514, 49543, 49573, 49602, 49632, 49661, 49690, 49720,\n 49749, 49779, 49809, 49838, 49868, 49898, 49927, 49957, 49986, 50016, 50045, 50075, 50104, 50133, 50163, 50192, 50222, 50252,\n 50281, 50311, 50340, 50370, 50400, 50429, 50459, 50488, 50518, 50547, 50576, 50606, 50635, 50665, 50694, 50724, 50754, 50784,\n 50813, 50843, 50872, 50902, 50931, 50960, 50990, 51019, 51049, 51078, 51108, 51138, 51167, 51197, 51227, 51256, 51286, 51315,\n 51345, 51374, 51403, 51433, 51462, 51492, 51522, 51552, 51582, 51611, 51641, 51670, 51699, 51729, 51758, 51787, 51816, 51846,\n 51876, 51906, 51936, 51965, 51995, 52025, 52054, 52083, 52113, 52142, 52171, 52200, 52230, 52260, 52290, 52319, 52349, 52379,\n 52408, 52438, 52467, 52497, 52526, 52555, 52585, 52614, 52644, 52673, 52703, 52733, 52762, 52792, 52822, 52851, 52881, 52910,\n 52939, 52969, 52998, 53028, 53057, 53087, 53116, 53146, 53176, 53205, 53235, 53264, 53294, 53324, 53353, 53383, 53412, 53441,\n 53471, 53500, 53530, 53559, 53589, 53619, 53648, 53678, 53708, 53737, 53767, 53796, 53825, 53855, 53884, 53913, 53943, 53973,\n 54003, 54032, 54062, 54092, 54121, 54151, 54180, 54209, 54239, 54268, 54297, 54327, 54357, 54387, 54416, 54446, 54476, 54505,\n 54535, 54564, 54593, 54623, 54652, 54681, 54711, 54741, 54770, 54800, 54830, 54859, 54889, 54919, 54948, 54977, 55007, 55036,\n 55066, 55095, 55125, 55154, 55184, 55213, 55243, 55273, 55302, 55332, 55361, 55391, 55420, 55450, 55479, 55508, 55538, 55567,\n 55597, 55627, 55657, 55686, 55716, 55745, 55775, 55804, 55834, 55863, 55892, 55922, 55951, 55981, 56011, 56040, 56070, 56100,\n 56129, 56159, 56188, 56218, 56247, 56276, 56306, 56335, 56365, 56394, 56424, 56454, 56483, 56513, 56543, 56572, 56601, 56631,\n 56660, 56690, 56719, 56749, 56778, 56808, 56837, 56867, 56897, 56926, 56956, 56985, 57015, 57044, 57074, 57103, 57133, 57162,\n 57192, 57221, 57251, 57280, 57310, 57340, 57369, 57399, 57429, 57458, 57487, 57517, 57546, 57576, 57605, 57634, 57664, 57694,\n 57723, 57753, 57783, 57813, 57842, 57871, 57901, 57930, 57959, 57989, 58018, 58048, 58077, 58107, 58137, 58167, 58196, 58226,\n 58255, 58285, 58314, 58343, 58373, 58402, 58432, 58461, 58491, 58521, 58551, 58580, 58610, 58639, 58669, 58698, 58727, 58757,\n 58786, 58816, 58845, 58875, 58905, 58934, 58964, 58994, 59023, 59053, 59082, 59111, 59141, 59170, 59200, 59229, 59259, 59288,\n 59318, 59348, 59377, 59407, 59436, 59466, 59495, 59525, 59554, 59584, 59613, 59643, 59672, 59702, 59731, 59761, 59791, 59820,\n 59850, 59879, 59909, 59939, 59968, 59997, 60027, 60056, 60086, 60115, 60145, 60174, 60204, 60234, 60264, 60293, 60323, 60352,\n 60381, 60411, 60440, 60469, 60499, 60528, 60558, 60588, 60618, 60648, 60677, 60707, 60736, 60765, 60795, 60824, 60853, 60883,\n 60912, 60942, 60972, 61002, 61031, 61061, 61090, 61120, 61149, 61179, 61208, 61237, 61267, 61296, 61326, 61356, 61385, 61415,\n 61445, 61474, 61504, 61533, 61563, 61592, 61621, 61651, 61680, 61710, 61739, 61769, 61799, 61828, 61858, 61888, 61917, 61947,\n 61976, 62006, 62035, 62064, 62094, 62123, 62153, 62182, 62212, 62242, 62271, 62301, 62331, 62360, 62390, 62419, 62448, 62478,\n 62507, 62537, 62566, 62596, 62625, 62655, 62685, 62715, 62744, 62774, 62803, 62832, 62862, 62891, 62921, 62950, 62980, 63009,\n 63039, 63069, 63099, 63128, 63157, 63187, 63216, 63246, 63275, 63305, 63334, 63363, 63393, 63423, 63453, 63482, 63512, 63541,\n 63571, 63600, 63630, 63659, 63689, 63718, 63747, 63777, 63807, 63836, 63866, 63895, 63925, 63955, 63984, 64014, 64043, 64073,\n 64102, 64131, 64161, 64190, 64220, 64249, 64279, 64309, 64339, 64368, 64398, 64427, 64457, 64486, 64515, 64545, 64574, 64603,\n 64633, 64663, 64692, 64722, 64752, 64782, 64811, 64841, 64870, 64899, 64929, 64958, 64987, 65017, 65047, 65076, 65106, 65136,\n 65166, 65195, 65225, 65254, 65283, 65313, 65342, 65371, 65401, 65431, 65460, 65490, 65520, 65549, 65579, 65608, 65638, 65667,\n 65697, 65726, 65755, 65785, 65815, 65844, 65874, 65903, 65933, 65963, 65992, 66022, 66051, 66081, 66110, 66140, 66169, 66199,\n 66228, 66258, 66287, 66317, 66346, 66376, 66405, 66435, 66465, 66494, 66524, 66553, 66583, 66612, 66641, 66671, 66700, 66730,\n 66760, 66789, 66819, 66849, 66878, 66908, 66937, 66967, 66996, 67025, 67055, 67084, 67114, 67143, 67173, 67203, 67233, 67262,\n 67292, 67321, 67351, 67380, 67409, 67439, 67468, 67497, 67527, 67557, 67587, 67617, 67646, 67676, 67705, 67735, 67764, 67793,\n 67823, 67852, 67882, 67911, 67941, 67971, 68000, 68030, 68060, 68089, 68119, 68148, 68177, 68207, 68236, 68266, 68295, 68325,\n 68354, 68384, 68414, 68443, 68473, 68502, 68532, 68561, 68591, 68620, 68650, 68679, 68708, 68738, 68768, 68797, 68827, 68857,\n 68886, 68916, 68946, 68975, 69004, 69034, 69063, 69092, 69122, 69152, 69181, 69211, 69240, 69270, 69300, 69330, 69359, 69388,\n 69418, 69447, 69476, 69506, 69535, 69565, 69595, 69624, 69654, 69684, 69713, 69743, 69772, 69802, 69831, 69861, 69890, 69919,\n 69949, 69978, 70008, 70038, 70067, 70097, 70126, 70156, 70186, 70215, 70245, 70274, 70303, 70333, 70362, 70392, 70421, 70451,\n 70481, 70510, 70540, 70570, 70599, 70629, 70658, 70687, 70717, 70746, 70776, 70805, 70835, 70864, 70894, 70924, 70954, 70983,\n 71013, 71042, 71071, 71101, 71130, 71159, 71189, 71218, 71248, 71278, 71308, 71337, 71367, 71397, 71426, 71455, 71485, 71514,\n 71543, 71573, 71602, 71632, 71662, 71691, 71721, 71751, 71781, 71810, 71839, 71869, 71898, 71927, 71957, 71986, 72016, 72046,\n 72075, 72105, 72135, 72164, 72194, 72223, 72253, 72282, 72311, 72341, 72370, 72400, 72429, 72459, 72489, 72518, 72548, 72577,\n 72607, 72637, 72666, 72695, 72725, 72754, 72784, 72813, 72843, 72872, 72902, 72931, 72961, 72991, 73020, 73050, 73080, 73109,\n 73139, 73168, 73197, 73227, 73256, 73286, 73315, 73345, 73375, 73404, 73434, 73464, 73493, 73523, 73552, 73581, 73611, 73640,\n 73669, 73699, 73729, 73758, 73788, 73818, 73848, 73877, 73907, 73936, 73965, 73995, 74024, 74053, 74083, 74113, 74142, 74172,\n 74202, 74231, 74261, 74291, 74320, 74349, 74379, 74408, 74437, 74467, 74497, 74526, 74556, 74586, 74615, 74645, 74675, 74704,\n 74733, 74763, 74792, 74822, 74851, 74881, 74910, 74940, 74969, 74999, 75029, 75058, 75088, 75117, 75147, 75176, 75206, 75235,\n 75264, 75294, 75323, 75353, 75383, 75412, 75442, 75472, 75501, 75531, 75560, 75590, 75619, 75648, 75678, 75707, 75737, 75766,\n 75796, 75826, 75856, 75885, 75915, 75944, 75974, 76003, 76032, 76062, 76091, 76121, 76150, 76180, 76210, 76239, 76269, 76299,\n 76328, 76358, 76387, 76416, 76446, 76475, 76505, 76534, 76564, 76593, 76623, 76653, 76682, 76712, 76741, 76771, 76801, 76830,\n 76859, 76889, 76918, 76948, 76977, 77007, 77036, 77066, 77096, 77125, 77155, 77185, 77214, 77243, 77273, 77302, 77332, 77361,\n 77390, 77420, 77450, 77479, 77509, 77539, 77569, 77598, 77627, 77657, 77686, 77715, 77745, 77774, 77804, 77833, 77863, 77893,\n 77923, 77952, 77982, 78011, 78041, 78070, 78099, 78129, 78158, 78188, 78217, 78247, 78277, 78307, 78336, 78366, 78395, 78425,\n 78454, 78483, 78513, 78542, 78572, 78601, 78631, 78661, 78690, 78720, 78750, 78779, 78808, 78838, 78867, 78897, 78926, 78956,\n 78985, 79015, 79044, 79074, 79104, 79133, 79163, 79192, 79222, 79251, 79281, 79310, 79340, 79369, 79399, 79428, 79458, 79487,\n 79517, 79546, 79576, 79606, 79635, 79665, 79695, 79724, 79753, 79783, 79812, 79841, 79871, 79900, 79930, 79960, 79990\n ];\n /**\n *\n * @param {Date} gDate ?\n * @returns {Object} ?\n */\n function getHijriDate(gDate) {\n var day = gDate.getDate();\n var month = gDate.getMonth();\n var year = gDate.getFullYear();\n var tMonth = month + 1;\n var tYear = year;\n if (tMonth < 3) {\n tYear -= 1;\n tMonth += 12;\n }\n var yPrefix = Math.floor(tYear / 100);\n var julilanOffset = yPrefix - Math.floor(yPrefix / 4.) - 2;\n var julianNumber = Math.floor(365.25 * (tYear + 4716)) + Math.floor(30.6001 * (tMonth + 1)) + day - julilanOffset - 1524;\n yPrefix = Math.floor((julianNumber - 1867216.25) / 36524.25);\n julilanOffset = yPrefix - Math.floor(yPrefix / 4.) + 1;\n var b = julianNumber + julilanOffset + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var tempMonth = Math.floor((b - d) / 30.6001);\n day = (b - d) - Math.floor(30.6001 * tempMonth);\n month = Math.floor((b - d) / 20.6001);\n if (month > 13) {\n c += 1;\n month -= 12;\n }\n month -= 1;\n year = c - 4716;\n var modifiedJulianDate = julianNumber - 2400000;\n // date calculation for year after 2077\n var iyear = 10631 / 30;\n var z = julianNumber - 1948084;\n var cyc = Math.floor(z / 10631.);\n z = z - 10631 * cyc;\n var j = Math.floor((z - 0.1335) / iyear);\n var iy = 30 * cyc + j;\n z = z - Math.floor(j * iyear + 0.1335);\n var im = Math.floor((z + 28.5001) / 29.5);\n /* istanbul ignore next */\n if (im === 13) {\n im = 12;\n }\n var tempDay = z - Math.floor(29.5001 * im - 29);\n var i = 0;\n for (; i < dateCorrection.length; i++) {\n if (dateCorrection[parseInt(i.toString(), 10)] > modifiedJulianDate) {\n break;\n }\n }\n var iln = i + 16260;\n var ii = Math.floor((iln - 1) / 12);\n var hYear = ii + 1;\n var hmonth = iln - 12 * ii;\n var hDate = modifiedJulianDate - dateCorrection[i - 1] + 1;\n if ((hDate + '').length > 2) {\n hDate = tempDay;\n hmonth = im;\n hYear = iy;\n }\n return { year: hYear, month: hmonth, date: hDate };\n }\n HijriParser.getHijriDate = getHijriDate;\n /**\n *\n * @param {number} year ?\n * @param {number} month ?\n * @param {number} day ?\n * @returns {Date} ?\n */\n function toGregorian(year, month, day) {\n var iy = year;\n var im = month;\n var id = day;\n var ii = iy - 1;\n var iln = (ii * 12) + 1 + (im - 1);\n var i = iln - 16260;\n var mcjdn = id + dateCorrection[i - 1] - 1;\n var julianDate = mcjdn + 2400000;\n var z = Math.floor(julianDate + 0.5);\n var a = Math.floor((z - 1867216.25) / 36524.25);\n a = z + 1 + a - Math.floor(a / 4);\n var b = a + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var e = Math.floor((b - d) / 30.6001);\n var gDay = b - d - Math.floor(e * 30.6001);\n var gMonth = e - (e > 13.5 ? 13 : 1);\n var gYear = c - (gMonth > 2.5 ? 4716 : 4715);\n /* istanbul ignore next */\n if (gYear <= 0) {\n gMonth--;\n } // No year zero\n return new Date(gYear + '/' + (gMonth) + '/' + gDay);\n }\n HijriParser.toGregorian = toGregorian;\n})(HijriParser || (HijriParser = {}));\n","import { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nimport { isUndefined, throwError, getValue, isBlazor } from '../util';\nimport { HijriParser } from '../hijri-parser';\nimport { isNullOrUndefined, extend } from '../util';\nvar abbreviateRegexGlobal = /\\/MMMMM|MMMM|MMM|a|LLLL|LLL|EEEEE|EEEE|E|K|cccc|ccc|WW|W|G+|z+/gi;\nvar standalone = 'stand-alone';\nvar weekdayKey = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\nexport var basicPatterns = ['short', 'medium', 'long', 'full'];\nvar timeSetter = {\n m: 'getMinutes',\n h: 'getHours',\n H: 'getHours',\n s: 'getSeconds',\n d: 'getDate',\n f: 'getMilliseconds'\n};\nexport var datePartMatcher = {\n 'M': 'month',\n 'd': 'day',\n 'E': 'weekday',\n 'c': 'weekday',\n 'y': 'year',\n 'm': 'minute',\n 'h': 'hour',\n 'H': 'hour',\n 's': 'second',\n 'L': 'month',\n 'a': 'designator',\n 'z': 'timeZone',\n 'Z': 'timeZone',\n 'G': 'era',\n 'f': 'milliseconds'\n};\nvar timeSeparator = 'timeSeparator';\n/**\n * Date Format is a framework provides support for date formatting.\n *\n * @private\n */\nvar DateFormat = /** @class */ (function () {\n function DateFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} option - Specific the format in which date will format.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n DateFormat.dateFormat = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n var numObject = getValue('parserObject.numbers', dependable);\n var dateObject = dependable.dateObject;\n var formatOptions = { isIslamic: base.islamicRegex.test(option.calendar) };\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n formatOptions.dateSeperator = isBlazor() ? getValue('dateSeperator', dateObject) : base.getDateSeparator(dependable.dateObject);\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n if (isBlazor()) {\n resPattern = resPattern.replace(/tt/, 'a');\n }\n formatOptions.pattern = resPattern;\n formatOptions.numMapper = isBlazor() ?\n extend({}, numObject) : parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n var patternMatch = resPattern.match(abbreviateRegexGlobal) || [];\n for (var _i = 0, patternMatch_1 = patternMatch; _i < patternMatch_1.length; _i++) {\n var str = patternMatch_1[_i];\n var len = str.length;\n var char = str[0];\n if (char === 'K') {\n char = 'h';\n }\n switch (char) {\n case 'E':\n case 'c':\n if (isBlazor()) {\n formatOptions.weekday = getValue('days.' + base.monthIndex[\"\" + len], dateObject);\n }\n else {\n formatOptions.weekday = dependable.dateObject[\"\" + base.days][\"\" + standalone][base.monthIndex[\"\" + len]];\n }\n break;\n case 'M':\n case 'L':\n if (isBlazor()) {\n formatOptions.month = getValue('months.' + base.monthIndex[\"\" + len], dateObject);\n }\n else {\n formatOptions.month = dependable.dateObject[\"\" + base.month][\"\" + standalone][base.monthIndex[\"\" + len]];\n }\n break;\n case 'a':\n formatOptions.designator = isBlazor() ?\n getValue('dayPeriods', dateObject) : getValue('dayPeriods.format.wide', dateObject);\n break;\n case 'G': {\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n formatOptions.era = isBlazor() ? getValue('eras', dateObject) : getValue('eras.' + eText, dependable.dateObject);\n break;\n }\n case 'z':\n formatOptions.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n break;\n }\n }\n }\n return function (value) {\n if (isNaN(value.getDate())) {\n return null;\n }\n return _this.intDateFormatter(value, formatOptions);\n };\n };\n /**\n * Returns formatted date string based on options passed.\n *\n * @param {Date} value ?\n * @param {FormatOptions} options ?\n * @returns {string} ?\n */\n DateFormat.intDateFormatter = function (value, options) {\n var pattern = options.pattern;\n var ret = '';\n var matches = pattern.match(base.dateParseRegex);\n var dObject = this.getCurrentDateValue(value, options.isIslamic);\n for (var _i = 0, matches_1 = matches; _i < matches_1.length; _i++) {\n var match = matches_1[_i];\n var length_1 = match.length;\n var char = match[0];\n if (char === 'K') {\n char = 'h';\n }\n var curval = void 0;\n var curvalstr = '';\n var isNumber = void 0;\n var processNumber = void 0;\n var curstr = '';\n switch (char) {\n case 'M':\n case 'L':\n curval = dObject.month;\n if (length_1 > 2) {\n ret += options.month[\"\" + curval];\n }\n else {\n isNumber = true;\n }\n break;\n case 'E':\n case 'c':\n ret += options.weekday[\"\" + weekdayKey[value.getDay()]];\n break;\n case 'H':\n case 'h':\n case 'm':\n case 's':\n case 'd':\n case 'f':\n isNumber = true;\n if (char === 'd') {\n curval = dObject.date;\n }\n else if (char === 'f') {\n isNumber = false;\n processNumber = true;\n curvalstr = value[\"\" + timeSetter[\"\" + char]]().toString();\n curvalstr = curvalstr.substring(0, length_1);\n var curlength = curvalstr.length;\n if (length_1 !== curlength) {\n if (length_1 > 3) {\n continue;\n }\n for (var i = 0; i < length_1 - curlength; i++) {\n curvalstr = '0' + curvalstr.toString();\n }\n }\n curstr += curvalstr;\n }\n else {\n curval = value[\"\" + timeSetter[\"\" + char]]();\n }\n if (char === 'h') {\n curval = curval % 12 || 12;\n }\n break;\n case 'y':\n processNumber = true;\n curstr += dObject.year;\n if (length_1 === 2) {\n curstr = curstr.substr(curstr.length - 2);\n }\n break;\n case 'a': {\n var desig = value.getHours() < 12 ? 'am' : 'pm';\n ret += options.designator[\"\" + desig];\n break;\n }\n case 'G': {\n var dec = value.getFullYear() < 0 ? 0 : 1;\n var retu = options.era[\"\" + dec];\n if (isNullOrUndefined(retu)) {\n retu = options.era[dec ? 0 : 1];\n }\n ret += retu || '';\n break;\n }\n case '\\'':\n ret += (match === '\\'\\'') ? '\\'' : match.replace(/'/g, '');\n break;\n case 'z': {\n var timezone = value.getTimezoneOffset();\n var pattern_1 = (length_1 < 4) ? '+H;-H' : options.timeZone.hourFormat;\n pattern_1 = pattern_1.replace(/:/g, options.numMapper.timeSeparator);\n if (timezone === 0) {\n ret += options.timeZone.gmtZeroFormat;\n }\n else {\n processNumber = true;\n curstr = this.getTimeZoneValue(timezone, pattern_1);\n }\n curstr = options.timeZone.gmtFormat.replace(/\\{0\\}/, curstr);\n break;\n }\n case ':':\n ret += options.numMapper.numberSymbols[\"\" + timeSeparator];\n break;\n case '/':\n ret += options.dateSeperator;\n break;\n case 'W':\n isNumber = true;\n curval = base.getWeekOfYear(value);\n break;\n default:\n ret += match;\n }\n if (isNumber) {\n processNumber = true;\n curstr = this.checkTwodigitNumber(curval, length_1);\n }\n if (processNumber) {\n ret += parser.convertValueParts(curstr, base.latnParseRegex, options.numMapper.mapper);\n }\n }\n return ret;\n };\n DateFormat.getCurrentDateValue = function (value, isIslamic) {\n if (isIslamic) {\n return HijriParser.getHijriDate(value);\n }\n return { year: value.getFullYear(), month: value.getMonth() + 1, date: value.getDate() };\n };\n /**\n * Returns two digit numbers for given value and length\n *\n * @param {number} val ?\n * @param {number} len ?\n * @returns {string} ?\n */\n DateFormat.checkTwodigitNumber = function (val, len) {\n var ret = val + '';\n if (len === 2 && ret.length !== 2) {\n return '0' + ret;\n }\n return ret;\n };\n /**\n * Returns the value of the Time Zone.\n *\n * @param {number} tVal ?\n * @param {string} pattern ?\n * @returns {string} ?\n * @private\n */\n DateFormat.getTimeZoneValue = function (tVal, pattern) {\n var _this = this;\n var splt = pattern.split(';');\n var curPattern = splt[tVal > 0 ? 1 : 0];\n var no = Math.abs(tVal);\n return curPattern = curPattern.replace(/HH?|mm/g, function (str) {\n var len = str.length;\n var ishour = str.indexOf('H') !== -1;\n return _this.checkTwodigitNumber(Math.floor(ishour ? (no / 60) : (no % 60)), len);\n });\n };\n return DateFormat;\n}());\nexport { DateFormat };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isUndefined, throwError, isNullOrUndefined, extend, isBlazor, getValue } from '../util';\nimport { defaultCurrencyCode } from '../internationalization';\nimport { IntlBase as base } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nvar errorText = {\n 'ms': 'minimumSignificantDigits',\n 'ls': 'maximumSignificantDigits',\n 'mf': 'minimumFractionDigits',\n 'lf': 'maximumFractionDigits'\n};\nvar percentSign = 'percentSign';\nvar minusSign = 'minusSign';\nvar mapper = ['infinity', 'nan', 'group', 'decimal', 'exponential'];\n/**\n * Module for number formatting.\n *\n * @private\n */\nvar NumberFormat = /** @class */ (function () {\n function NumberFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} option - Specific the format in which number will format.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n NumberFormat.numberFormatter = function (culture, option, cldr) {\n var _this = this;\n var fOptions = extend({}, option);\n var cOptions = {};\n var dOptions = {};\n var symbolPattern;\n var dependable = base.getDependables(cldr, culture, '', true);\n var numObject = dependable.numericObject;\n dOptions.numberMapper = isBlazor() ? extend({}, numObject) :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n dOptions.currencySymbol = isBlazor() ? getValue('currencySymbol', numObject) : base.getCurrencySymbol(dependable.numericObject, fOptions.currency || defaultCurrencyCode, option.altSymbol, option.ignoreCurrency);\n dOptions.percentSymbol = isBlazor() ? getValue('numberSymbols.percentSign', numObject) :\n dOptions.numberMapper.numberSymbols[\"\" + percentSign];\n dOptions.minusSymbol = isBlazor() ? getValue('numberSymbols.minusSign', numObject) :\n dOptions.numberMapper.numberSymbols[\"\" + minusSign];\n var symbols = dOptions.numberMapper.numberSymbols;\n if ((option.format) && !(base.formatRegex.test(option.format))) {\n cOptions = base.customFormat(option.format, dOptions, dependable.numericObject);\n if (!isUndefined(fOptions.useGrouping) && fOptions.useGrouping) {\n fOptions.useGrouping = cOptions.pData.useGrouping;\n }\n }\n else {\n extend(fOptions, base.getProperNumericSkeleton(option.format || 'N'));\n fOptions.isCurrency = fOptions.type === 'currency';\n fOptions.isPercent = fOptions.type === 'percent';\n if (!isBlazor()) {\n symbolPattern = base.getSymbolPattern(fOptions.type, dOptions.numberMapper.numberSystem, dependable.numericObject, fOptions.isAccount);\n }\n fOptions.groupOne = this.checkValueRange(fOptions.maximumSignificantDigits, fOptions.minimumSignificantDigits, true);\n this.checkValueRange(fOptions.maximumFractionDigits, fOptions.minimumFractionDigits, false, true);\n if (!isUndefined(fOptions.fractionDigits)) {\n fOptions.minimumFractionDigits = fOptions.maximumFractionDigits = fOptions.fractionDigits;\n }\n if (isUndefined(fOptions.useGrouping)) {\n fOptions.useGrouping = true;\n }\n if (fOptions.isCurrency && !isBlazor()) {\n symbolPattern = symbolPattern.replace(/\\u00A4/g, base.defaultCurrency);\n }\n if (!isBlazor()) {\n var split = symbolPattern.split(';');\n cOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, dOptions.currencySymbol);\n cOptions.pData = base.getFormatData(split[0], false, dOptions.currencySymbol);\n if (fOptions.useGrouping) {\n fOptions.groupSeparator = symbols[mapper[2]];\n fOptions.groupData = this.getGroupingDetails(split[0]);\n }\n }\n else {\n cOptions.nData = extend({}, {}, getValue(fOptions.type + 'nData', numObject));\n cOptions.pData = extend({}, {}, getValue(fOptions.type + 'pData', numObject));\n if (fOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([cOptions.pData, cOptions.nData], dOptions.currencySymbol, option.currency);\n }\n }\n var minFrac = isUndefined(fOptions.minimumFractionDigits);\n if (minFrac) {\n fOptions.minimumFractionDigits = cOptions.nData.minimumFraction;\n }\n if (isUndefined(fOptions.maximumFractionDigits)) {\n var mval = cOptions.nData.maximumFraction;\n fOptions.maximumFractionDigits = isUndefined(mval) && fOptions.isPercent ? 0 : mval;\n }\n var mfrac = fOptions.minimumFractionDigits;\n var lfrac = fOptions.maximumFractionDigits;\n if (!isUndefined(mfrac) && !isUndefined(lfrac)) {\n if (mfrac > lfrac) {\n fOptions.maximumFractionDigits = mfrac;\n }\n }\n }\n extend(cOptions.nData, fOptions);\n extend(cOptions.pData, fOptions);\n return function (value) {\n if (isNaN(value)) {\n return symbols[mapper[1]];\n }\n else if (!isFinite(value)) {\n return symbols[mapper[0]];\n }\n return _this.intNumberFormatter(value, cOptions, dOptions, option);\n };\n };\n /**\n * Returns grouping details for the pattern provided\n *\n * @param {string} pattern ?\n * @returns {GroupDetails} ?\n */\n NumberFormat.getGroupingDetails = function (pattern) {\n var ret = {};\n var match = pattern.match(base.negativeDataRegex);\n if (match && match[4]) {\n var pattern_1 = match[4];\n var p = pattern_1.lastIndexOf(',');\n if (p !== -1) {\n var temp = pattern_1.split('.')[0];\n ret.primary = (temp.length - p) - 1;\n var s = pattern_1.lastIndexOf(',', p - 1);\n if (s !== -1) {\n ret.secondary = p - 1 - s;\n }\n }\n }\n return ret;\n };\n /**\n * Returns if the provided integer range is valid.\n *\n * @param {number} val1 ?\n * @param {number} val2 ?\n * @param {boolean} checkbothExist ?\n * @param {boolean} isFraction ?\n * @returns {boolean} ?\n */\n NumberFormat.checkValueRange = function (val1, val2, checkbothExist, isFraction) {\n var decide = isFraction ? 'f' : 's';\n var dint = 0;\n var str1 = errorText['l' + decide];\n var str2 = errorText['m' + decide];\n if (!isUndefined(val1)) {\n this.checkRange(val1, str1, isFraction);\n dint++;\n }\n if (!isUndefined(val2)) {\n this.checkRange(val2, str2, isFraction);\n dint++;\n }\n if (dint === 2) {\n if (val1 < val2) {\n throwError(str2 + 'specified must be less than the' + str1);\n }\n else {\n return true;\n }\n }\n else if (checkbothExist && dint === 1) {\n throwError('Both' + str2 + 'and' + str2 + 'must be present');\n }\n return false;\n };\n /**\n * Check if the provided fraction range is valid\n *\n * @param {number} val ?\n * @param {string} text ?\n * @param {boolean} isFraction ?\n * @returns {void} ?\n */\n NumberFormat.checkRange = function (val, text, isFraction) {\n var range = isFraction ? [0, 20] : [1, 21];\n if (val < range[0] || val > range[1]) {\n throwError(text + 'value must be within the range' + range[0] + 'to' + range[1]);\n }\n };\n /**\n * Returns formatted numeric string for provided formatting options\n *\n * @param {number} value ?\n * @param {base.GenericFormatOptions} fOptions ?\n * @param {CommonOptions} dOptions ?\n * @param {NumberFormatOptions} [option] ?\n * @returns {string} ?\n */\n NumberFormat.intNumberFormatter = function (value, fOptions, dOptions, option) {\n var curData;\n if (isUndefined(fOptions.nData.type)) {\n return undefined;\n }\n else {\n if (value < 0) {\n value = value * -1;\n curData = fOptions.nData;\n }\n else if (value === 0) {\n curData = fOptions.zeroData || fOptions.pData;\n }\n else {\n curData = fOptions.pData;\n }\n var fValue = '';\n if (curData.isPercent) {\n value = value * 100;\n }\n if (curData.groupOne) {\n fValue = this.processSignificantDigits(value, curData.minimumSignificantDigits, curData.maximumSignificantDigits);\n }\n else {\n fValue = this.processFraction(value, curData.minimumFractionDigits, curData.maximumFractionDigits, option);\n if (curData.minimumIntegerDigits) {\n fValue = this.processMinimumIntegers(fValue, curData.minimumIntegerDigits);\n }\n if (dOptions.isCustomFormat && curData.minimumFractionDigits < curData.maximumFractionDigits\n && /\\d+\\.\\d+/.test(fValue)) {\n var temp = fValue.split('.');\n var decimalPart = temp[1];\n var len = decimalPart.length;\n for (var i = len - 1; i >= 0; i--) {\n if (decimalPart[parseInt(i.toString(), 10)] === '0' && i >= curData.minimumFractionDigits) {\n decimalPart = decimalPart.slice(0, i);\n }\n else {\n break;\n }\n }\n fValue = temp[0] + '.' + decimalPart;\n }\n }\n if (curData.type === 'scientific') {\n fValue = value.toExponential(curData.maximumFractionDigits);\n fValue = fValue.replace('e', dOptions.numberMapper.numberSymbols[mapper[4]]);\n }\n fValue = fValue.replace('.', dOptions.numberMapper.numberSymbols[mapper[3]]);\n fValue = curData.format === '#,###,,;(#,###,,)' ? this.customPivotFormat(parseInt(fValue, 10)) : fValue;\n if (curData.useGrouping) {\n fValue = this.groupNumbers(fValue, curData.groupData.primary, curData.groupSeparator || ',', dOptions.numberMapper.numberSymbols[mapper[3]] || '.', curData.groupData.secondary);\n }\n fValue = parser.convertValueParts(fValue, base.latnParseRegex, dOptions.numberMapper.mapper);\n if (curData.nlead === 'N/A') {\n return curData.nlead;\n }\n else {\n if (fValue === '0' && option && option.format === '0') {\n return fValue + curData.nend;\n }\n return curData.nlead + fValue + curData.nend;\n }\n }\n };\n /**\n * Returns significant digits processed numeric string\n *\n * @param {number} value ?\n * @param {number} min ?\n * @param {number} max ?\n * @returns {string} ?\n */\n NumberFormat.processSignificantDigits = function (value, min, max) {\n var temp = value + '';\n var tn;\n var length = temp.length;\n if (length < min) {\n return value.toPrecision(min);\n }\n else {\n temp = value.toPrecision(max);\n tn = +temp;\n return tn + '';\n }\n };\n /**\n * Returns grouped numeric string\n *\n * @param {string} val ?\n * @param {number} level1 ?\n * @param {string} sep ?\n * @param {string} decimalSymbol ?\n * @param {number} level2 ?\n * @returns {string} ?\n */\n NumberFormat.groupNumbers = function (val, level1, sep, decimalSymbol, level2) {\n var flag = !isNullOrUndefined(level2) && level2 !== 0;\n var split = val.split(decimalSymbol);\n var prefix = split[0];\n var length = prefix.length;\n var str = '';\n while (length > level1) {\n str = prefix.slice(length - level1, length) + (str.length ?\n (sep + str) : '');\n length -= level1;\n if (flag) {\n level1 = level2;\n flag = false;\n }\n }\n split[0] = prefix.slice(0, length) + (str.length ? sep : '') + str;\n return split.join(decimalSymbol);\n };\n /**\n * Returns fraction processed numeric string\n *\n * @param {number} value ?\n * @param {number} min ?\n * @param {number} max ?\n * @param {NumberFormatOptions} [option] ?\n * @returns {string} ?\n */\n NumberFormat.processFraction = function (value, min, max, option) {\n var temp = (value + '').split('.')[1];\n var length = temp ? temp.length : 0;\n if (min && length < min) {\n var ret = '';\n if (length === 0) {\n ret = value.toFixed(min);\n }\n else {\n ret += value;\n for (var j = 0; j < min - length; j++) {\n ret += '0';\n }\n return ret;\n }\n return value.toFixed(min);\n }\n else if (!isNullOrUndefined(max) && (length > max || max === 0)) {\n return value.toFixed(max);\n }\n var str = value + '';\n if (str[0] === '0' && option && option.format === '###.00') {\n str = str.slice(1);\n }\n return str;\n };\n /**\n * Returns integer processed numeric string\n *\n * @param {string} value ?\n * @param {number} min ?\n * @returns {string} ?\n */\n NumberFormat.processMinimumIntegers = function (value, min) {\n var temp = value.split('.');\n var lead = temp[0];\n var len = lead.length;\n if (len < min) {\n for (var i = 0; i < min - len; i++) {\n lead = '0' + lead;\n }\n temp[0] = lead;\n }\n return temp.join('.');\n };\n /**\n * Returns custom format for pivot table\n *\n * @param {number} value ?\n * @returns {string} ?\n */\n NumberFormat.customPivotFormat = function (value) {\n if (value >= 500000) {\n value /= 1000000;\n var _a = value.toString().split('.'), integer = _a[0], decimal = _a[1];\n return decimal && +decimal.substring(0, 1) >= 5\n ? Math.ceil(value).toString()\n : Math.floor(value).toString();\n }\n return '';\n };\n return NumberFormat;\n}());\nexport { NumberFormat };\n","import { IntlBase as base } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nimport { isUndefined, throwError, getValue, isNullOrUndefined, isBlazor } from '../util';\nimport { datePartMatcher } from './date-formatter';\nimport { HijriParser } from '../hijri-parser';\nvar standalone = 'stand-alone';\nvar latnRegex = /^[0-9]*$/;\nvar timeSetter = {\n minute: 'setMinutes',\n hour: 'setHours',\n second: 'setSeconds',\n day: 'setDate',\n month: 'setMonth',\n milliseconds: 'setMilliseconds'\n};\nvar month = 'months';\n/**\n * Date Parser.\n *\n * @private\n */\nvar DateParser = /** @class */ (function () {\n function DateParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} option - Specific the format in which string date will be parsed.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n DateParser.dateParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n var numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), false, isBlazor());\n var parseOptions = {};\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n var regexString = '';\n var hourOnly;\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n parseOptions = { isIslamic: base.islamicRegex.test(option.calendar), pattern: resPattern, evalposition: {}, culture: culture };\n var patternMatch = resPattern.match(base.dateParseRegex) || [];\n var length_1 = patternMatch.length;\n var gmtCorrection = 0;\n var zCorrectTemp = 0;\n var isgmtTraversed = false;\n var nRegx = numOptions.numericRegex;\n var numMapper = isBlazor() ? dependable.parserObject.numbers\n : parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n for (var i = 0; i < length_1; i++) {\n var str = patternMatch[parseInt(i.toString(), 10)];\n var len = str.length;\n var char = (str[0] === 'K') ? 'h' : str[0];\n var isNumber = void 0;\n var canUpdate = void 0;\n var charKey = datePartMatcher[\"\" + char];\n var optional = (len === 2) ? '' : '?';\n if (isgmtTraversed) {\n gmtCorrection = zCorrectTemp;\n isgmtTraversed = false;\n }\n switch (char) {\n case 'E':\n case 'c': {\n var weekData = void 0;\n if (isBlazor()) {\n weekData = getValue('days.' + base.monthIndex[\"\" + len], dependable.dateObject);\n }\n else {\n weekData = dependable.dateObject[\"\" + base.days][\"\" + standalone][base.monthIndex[\"\" + len]];\n }\n var weekObject = parser.reverseObject(weekData);\n regexString += '(' + Object.keys(weekObject).join('|') + ')';\n break;\n }\n case 'M':\n case 'L':\n case 'd':\n case 'm':\n case 's':\n case 'h':\n case 'H':\n case 'f':\n canUpdate = true;\n if ((char === 'M' || char === 'L') && len > 2) {\n var monthData = void 0;\n if (isBlazor()) {\n monthData = getValue('months.' + base.monthIndex[\"\" + len], dependable.dateObject);\n }\n else {\n monthData = dependable.dateObject[\"\" + month][\"\" + standalone][base.monthIndex[\"\" + len]];\n }\n parseOptions[\"\" + charKey] = parser.reverseObject(monthData);\n regexString += '(' + Object.keys(parseOptions[\"\" + charKey]).join('|') + ')';\n }\n else if (char === 'f') {\n if (len > 3) {\n continue;\n }\n isNumber = true;\n regexString += '(' + nRegx + nRegx + '?' + nRegx + '?' + ')';\n }\n else {\n isNumber = true;\n regexString += '(' + nRegx + nRegx + optional + ')';\n }\n if (char === 'h') {\n parseOptions.hour12 = true;\n }\n break;\n case 'W': {\n var opt = len === 1 ? '?' : '';\n regexString += '(' + nRegx + opt + nRegx + ')';\n break;\n }\n case 'y':\n canUpdate = isNumber = true;\n if (len === 2) {\n regexString += '(' + nRegx + nRegx + ')';\n }\n else {\n regexString += '(' + nRegx + '{' + len + ',})';\n }\n break;\n case 'a': {\n canUpdate = true;\n var periodValur = isBlazor() ?\n getValue('dayPeriods', dependable.dateObject) :\n getValue('dayPeriods.format.wide', dependable.dateObject);\n parseOptions[\"\" + charKey] = parser.reverseObject(periodValur);\n regexString += '(' + Object.keys(parseOptions[\"\" + charKey]).join('|') + ')';\n break;\n }\n case 'G': {\n canUpdate = true;\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n parseOptions[\"\" + charKey] = parser.reverseObject(isBlazor() ?\n getValue('eras', dependable.dateObject) : getValue('eras.' + eText, dependable.dateObject));\n regexString += '(' + Object.keys(parseOptions[\"\" + charKey]).join('|') + '?)';\n break;\n }\n case 'z': {\n var tval = new Date().getTimezoneOffset();\n canUpdate = (tval !== 0);\n parseOptions[\"\" + charKey] = getValue('dates.timeZoneNames', dependable.parserObject);\n var tzone = parseOptions[\"\" + charKey];\n hourOnly = (len < 4);\n var hpattern = hourOnly ? '+H;-H' : tzone.hourFormat;\n hpattern = hpattern.replace(/:/g, numMapper.timeSeparator);\n regexString += '(' + this.parseTimeZoneRegx(hpattern, tzone, nRegx) + ')?';\n isgmtTraversed = true;\n zCorrectTemp = hourOnly ? 6 : 12;\n break;\n }\n case '\\'': {\n var iString = str.replace(/'/g, '');\n regexString += '(' + iString + ')?';\n break;\n }\n default:\n regexString += '([\\\\D])';\n break;\n }\n if (canUpdate) {\n parseOptions.evalposition[\"\" + charKey] = { isNumber: isNumber, pos: i + 1 + gmtCorrection, hourOnly: hourOnly };\n }\n if (i === length_1 - 1 && !isNullOrUndefined(regexString)) {\n var regExp = RegExp;\n parseOptions.parserRegex = new regExp('^' + regexString + '$', 'i');\n }\n }\n }\n return function (value) {\n var parsedDateParts = _this.internalDateParse(value, parseOptions, numOptions);\n if (isNullOrUndefined(parsedDateParts) || !Object.keys(parsedDateParts).length) {\n return null;\n }\n if (parseOptions.isIslamic) {\n var dobj = {};\n var tYear = parsedDateParts.year;\n var tDate = parsedDateParts.day;\n var tMonth = parsedDateParts.month;\n var ystrig = tYear ? (tYear + '') : '';\n var is2DigitYear = (ystrig.length === 2);\n if (!tYear || !tMonth || !tDate || is2DigitYear) {\n dobj = HijriParser.getHijriDate(new Date());\n }\n if (is2DigitYear) {\n tYear = parseInt((dobj.year + '').slice(0, 2) + ystrig, 10);\n }\n var dateObject = HijriParser.toGregorian(tYear || dobj.year, tMonth || dobj.month, tDate || dobj.date);\n parsedDateParts.year = dateObject.getFullYear();\n parsedDateParts.month = dateObject.getMonth() + 1;\n parsedDateParts.day = dateObject.getDate();\n }\n return _this.getDateObject(parsedDateParts);\n };\n };\n /**\n * Returns date object for provided date options\n *\n * @param {DateParts} options ?\n * @param {Date} value ?\n * @returns {Date} ?\n */\n DateParser.getDateObject = function (options, value) {\n var res = value || new Date();\n res.setMilliseconds(0);\n var tKeys = ['hour', 'minute', 'second', 'milliseconds', 'month', 'day'];\n var y = options.year;\n var desig = options.designator;\n var tzone = options.timeZone;\n if (!isUndefined(y)) {\n var len = (y + '').length;\n if (len <= 2) {\n var century = Math.floor(res.getFullYear() / 100) * 100;\n y += century;\n }\n res.setFullYear(y);\n }\n for (var _i = 0, tKeys_1 = tKeys; _i < tKeys_1.length; _i++) {\n var key = tKeys_1[_i];\n var tValue = options[\"\" + key];\n if (isUndefined(tValue) && key === 'day') {\n res.setDate(1);\n }\n if (!isUndefined(tValue)) {\n if (key === 'month') {\n tValue -= 1;\n if (tValue < 0 || tValue > 11) {\n return new Date('invalid');\n }\n var pDate = res.getDate();\n res.setDate(1);\n res[timeSetter[\"\" + key]](tValue);\n var lDate = new Date(res.getFullYear(), tValue + 1, 0).getDate();\n res.setDate(pDate < lDate ? pDate : lDate);\n }\n else {\n if (key === 'day') {\n var lastDay = new Date(res.getFullYear(), res.getMonth() + 1, 0).getDate();\n if ((tValue < 1 || tValue > lastDay)) {\n return null;\n }\n }\n res[\"\" + timeSetter[\"\" + key]](tValue);\n }\n }\n }\n if (!isUndefined(desig)) {\n var hour = res.getHours();\n if (desig === 'pm') {\n res.setHours(hour + (hour === 12 ? 0 : 12));\n }\n else if (hour === 12) {\n res.setHours(0);\n }\n }\n if (!isUndefined(tzone)) {\n var tzValue = tzone - res.getTimezoneOffset();\n if (tzValue !== 0) {\n res.setMinutes(res.getMinutes() + tzValue);\n }\n }\n return res;\n };\n /**\n * Returns date parsing options for provided value along with parse and numeric options\n *\n * @param {string} value ?\n * @param {ParseOptions} parseOptions ?\n * @param {NumericOptions} num ?\n * @returns {DateParts} ?\n */\n DateParser.internalDateParse = function (value, parseOptions, num) {\n var matches = value.match(parseOptions.parserRegex);\n var retOptions = { 'hour': 0, 'minute': 0, 'second': 0 };\n if (isNullOrUndefined(matches)) {\n return null;\n }\n else {\n var props = Object.keys(parseOptions.evalposition);\n for (var _i = 0, props_1 = props; _i < props_1.length; _i++) {\n var prop = props_1[_i];\n var curObject = parseOptions.evalposition[\"\" + prop];\n var matchString = matches[curObject.pos];\n if (curObject.isNumber) {\n retOptions[\"\" + prop] = this.internalNumberParser(matchString, num);\n }\n else {\n if (prop === 'timeZone' && !isUndefined(matchString)) {\n var pos = curObject.pos;\n var val = void 0;\n var tmatch = matches[pos + 1];\n var flag = !isUndefined(tmatch);\n if (curObject.hourOnly) {\n val = this.getZoneValue(flag, tmatch, matches[pos + 4], num) * 60;\n }\n else {\n val = this.getZoneValue(flag, tmatch, matches[pos + 7], num) * 60;\n val += this.getZoneValue(flag, matches[pos + 4], matches[pos + 10], num);\n }\n if (!isNullOrUndefined(val)) {\n retOptions[\"\" + prop] = val;\n }\n }\n else {\n var cultureOptions = ['en-US', 'en-MH', 'en-MP'];\n matchString = ((prop === 'month') && (!parseOptions.isIslamic) && (parseOptions.culture === 'en' || parseOptions.culture === 'en-GB' || parseOptions.culture === 'en-US'))\n ? matchString[0].toUpperCase() + matchString.substring(1).toLowerCase() : matchString;\n matchString = ((prop !== 'month') && (prop === 'designator') && parseOptions.culture && parseOptions.culture.indexOf('en-') !== -1 && cultureOptions.indexOf(parseOptions.culture) === -1)\n ? matchString.toLowerCase() : matchString;\n retOptions[\"\" + prop] = parseOptions[\"\" + prop][\"\" + matchString];\n }\n }\n }\n if (parseOptions.hour12) {\n retOptions.hour12 = true;\n }\n }\n return retOptions;\n };\n /**\n * Returns parsed number for provided Numeric string and Numeric Options\n *\n * @param {string} value ?\n * @param {NumericOptions} option ?\n * @returns {number} ?\n */\n DateParser.internalNumberParser = function (value, option) {\n value = parser.convertValueParts(value, option.numberParseRegex, option.numericPair);\n if (latnRegex.test(value)) {\n return +value;\n }\n return null;\n };\n /**\n * Returns parsed time zone RegExp for provided hour format and time zone\n *\n * @param {string} hourFormat ?\n * @param {base.TimeZoneOptions} tZone ?\n * @param {string} nRegex ?\n * @returns {string} ?\n */\n DateParser.parseTimeZoneRegx = function (hourFormat, tZone, nRegex) {\n var pattern = tZone.gmtFormat;\n var ret;\n var cRegex = '(' + nRegex + ')' + '(' + nRegex + ')';\n ret = hourFormat.replace('+', '\\\\+');\n if (hourFormat.indexOf('HH') !== -1) {\n ret = ret.replace(/HH|mm/g, '(' + cRegex + ')');\n }\n else {\n ret = ret.replace(/H|m/g, '(' + cRegex + '?)');\n }\n var splitStr = (ret.split(';').map(function (str) {\n return pattern.replace('{0}', str);\n }));\n ret = splitStr.join('|') + '|' + tZone.gmtZeroFormat;\n return ret;\n };\n /**\n * Returns zone based value.\n *\n * @param {boolean} flag ?\n * @param {string} val1 ?\n * @param {string} val2 ?\n * @param {NumericOptions} num ?\n * @returns {number} ?\n */\n DateParser.getZoneValue = function (flag, val1, val2, num) {\n var ival = flag ? val1 : val2;\n if (!ival) {\n return 0;\n }\n var value = this.internalNumberParser(ival, num);\n if (flag) {\n return -value;\n }\n return value;\n };\n return DateParser;\n}());\nexport { DateParser };\n","import { extend, isNullOrUndefined, isBlazor, getValue } from '../util';\nimport { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nvar regExp = RegExp;\nvar parseRegex = new regExp('^([^0-9]*)' + '(([0-9,]*[0-9]+)(.[0-9]+)?)' + '([Ee][+-]?[0-9]+)?([^0-9]*)$');\nvar groupRegex = /,/g;\nvar keys = ['minusSign', 'infinity'];\n/**\n * Module for Number Parser.\n *\n * @private\n */\nvar NumberParser = /** @class */ (function () {\n function NumberParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} option - Specific the format in which number will parsed.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n NumberParser.numberParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n if ((base.formatRegex.test(option.format)) || !(option.format)) {\n extend(parseOptions, base.getProperNumericSkeleton(option.format || 'N'));\n parseOptions.custom = false;\n if (!parseOptions.fractionDigits) {\n if (option.maximumFractionDigits) {\n parseOptions.maximumFractionDigits = option.maximumFractionDigits;\n }\n }\n }\n else {\n extend(parseOptions, base.customFormat(option.format, null, null));\n }\n var numbers = getValue('numbers', dependable.parserObject);\n var numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), true, isBlazor());\n parseOptions.symbolRegex = parser.getSymbolRegex(Object.keys(numOptions.symbolMatch));\n parseOptions.infinity = numOptions.symbolNumberSystem[keys[1]];\n var symbolpattern;\n if (!isBlazor()) {\n symbolpattern = base.getSymbolPattern(parseOptions.type, numOptions.numberSystem, dependable.numericObject, parseOptions.isAccount);\n if (symbolpattern) {\n symbolpattern = symbolpattern.replace(/\\u00A4/g, base.defaultCurrency);\n var split = symbolpattern.split(';');\n parseOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, '');\n parseOptions.pData = base.getFormatData(split[0], true, '');\n }\n }\n else {\n parseOptions.nData = extend({}, {}, getValue(parseOptions.type + 'nData', numbers));\n parseOptions.pData = extend({}, {}, getValue(parseOptions.type + 'pData', numbers));\n if (parseOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([parseOptions.pData, parseOptions.nData], getValue('currencySymbol', numbers), option.currency);\n }\n }\n return function (value) {\n return _this.getParsedNumber(value, parseOptions, numOptions);\n };\n };\n /**\n * Returns parsed number for the provided formatting options\n *\n * @param {string} value ?\n * @param {NumericParts} options ?\n * @param {NumericOptions} numOptions ?\n * @returns {number} ?\n */\n NumberParser.getParsedNumber = function (value, options, numOptions) {\n var isNegative;\n var isPercent;\n var tempValue;\n var lead;\n var end;\n var ret;\n if (value.indexOf(options.infinity) !== -1) {\n return Infinity;\n }\n else {\n value = parser.convertValueParts(value, options.symbolRegex, numOptions.symbolMatch);\n value = parser.convertValueParts(value, numOptions.numberParseRegex, numOptions.numericPair);\n value = value.indexOf('-') !== -1 ? value.replace('-.', '-0.') : value;\n if (value.indexOf('.') === 0) {\n value = '0' + value;\n }\n var matches = value.match(parseRegex);\n if (isNullOrUndefined(matches)) {\n return NaN;\n }\n lead = matches[1];\n tempValue = matches[2];\n var exponent = matches[5];\n end = matches[6];\n isNegative = options.custom ? ((lead === options.nData.nlead) && (end === options.nData.nend)) :\n ((lead.indexOf(options.nData.nlead) !== -1) && (end.indexOf(options.nData.nend) !== -1));\n isPercent = isNegative ?\n options.nData.isPercent :\n options.pData.isPercent;\n tempValue = tempValue.replace(groupRegex, '');\n if (exponent) {\n tempValue += exponent;\n }\n ret = +tempValue;\n if (options.type === 'percent' || isPercent) {\n ret = ret / 100;\n }\n if (options.custom || options.fractionDigits) {\n ret = parseFloat(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.fractionDigits));\n }\n if (options.maximumFractionDigits) {\n ret = this.convertMaxFracDigits(tempValue, options, ret, isNegative);\n }\n if (isNegative) {\n ret *= -1;\n }\n return ret;\n }\n };\n NumberParser.convertMaxFracDigits = function (value, options, ret, isNegative) {\n var decimalSplitValue = value.split('.');\n if (decimalSplitValue[1] && decimalSplitValue[1].length > options.maximumFractionDigits) {\n ret = +(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.maximumFractionDigits));\n }\n return ret;\n };\n return NumberParser;\n}());\nexport { NumberParser };\n","/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types */\nimport { isNullOrUndefined, getValue, extend, isBlazor } from './util';\nvar Observer = /** @class */ (function () {\n function Observer(context) {\n this.ranArray = [];\n this.boundedEvents = {};\n if (isNullOrUndefined(context)) {\n return;\n }\n this.context = context;\n }\n /**\n * To attach handler for given property in current context.\n *\n * @param {string} property - specifies the name of the event.\n * @param {Function} handler - Specifies the handler function to be called while event notified.\n * @param {Object} context - Specifies the context binded to the handler.\n * @param {string} id - specifies the random generated id.\n * @returns {void}\n */\n Observer.prototype.on = function (property, handler, context, id) {\n if (isNullOrUndefined(handler)) {\n return;\n }\n var cntxt = context || this.context;\n if (this.notExist(property)) {\n this.boundedEvents[\"\" + property] = [{ handler: handler, context: cntxt, id: id }];\n return;\n }\n if (!isNullOrUndefined(id)) {\n if (this.ranArray.indexOf(id) === -1) {\n this.ranArray.push(id);\n this.boundedEvents[\"\" + property].push({ handler: handler, context: cntxt, id: id });\n }\n }\n else if (!this.isHandlerPresent(this.boundedEvents[\"\" + property], handler)) {\n this.boundedEvents[\"\" + property].push({ handler: handler, context: cntxt });\n }\n };\n /**\n * To remove handlers from a event attached using on() function.\n *\n * @param {string} property - specifies the name of the event.\n * @param {Function} handler - Optional argument specifies the handler function to be called while event notified.\n * @param {string} id - specifies the random generated id.\n * @returns {void} ?\n */\n Observer.prototype.off = function (property, handler, id) {\n if (this.notExist(property)) {\n return;\n }\n var curObject = getValue(property, this.boundedEvents);\n if (handler) {\n for (var i = 0; i < curObject.length; i++) {\n if (id) {\n if (curObject[parseInt(i.toString(), 10)].id === id) {\n curObject.splice(i, 1);\n var indexLocation = this.ranArray.indexOf(id);\n if (indexLocation !== -1) {\n this.ranArray.splice(indexLocation, 1);\n }\n break;\n }\n }\n else if (handler === curObject[parseInt(i.toString(), 10)].handler) {\n curObject.splice(i, 1);\n break;\n }\n }\n }\n else {\n delete this.boundedEvents[\"\" + property];\n }\n };\n /**\n * To notify the handlers in the specified event.\n *\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it was failure to call.\n * @returns {void} ?\n */\n Observer.prototype.notify = function (property, argument, successHandler, errorHandler) {\n if (this.notExist(property)) {\n if (successHandler) {\n successHandler.call(this, argument);\n }\n return;\n }\n if (argument) {\n argument.name = property;\n }\n var blazor = 'Blazor';\n var curObject = getValue(property, this.boundedEvents).slice(0);\n if (window[\"\" + blazor]) {\n return this.blazorCallback(curObject, argument, successHandler, errorHandler, 0);\n }\n else {\n for (var _i = 0, curObject_1 = curObject; _i < curObject_1.length; _i++) {\n var cur = curObject_1[_i];\n cur.handler.call(cur.context, argument);\n }\n if (successHandler) {\n successHandler.call(this, argument);\n }\n }\n };\n Observer.prototype.blazorCallback = function (objs, argument, successHandler, errorHandler, index) {\n var _this = this;\n var isTrigger = index === objs.length - 1;\n if (index < objs.length) {\n var obj_1 = objs[parseInt(index.toString(), 10)];\n var promise = obj_1.handler.call(obj_1.context, argument);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n return promise;\n }\n promise.then(function (data) {\n data = typeof data === 'string' && _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data;\n extend(argument, argument, data, true);\n if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return _this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }).catch(function (data) {\n if (errorHandler) {\n errorHandler.call(obj_1.context, typeof data === 'string' &&\n _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data);\n }\n });\n }\n else if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }\n };\n Observer.prototype.dateReviver = function (key, value) {\n var dPattern = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}/;\n if (isBlazor && typeof value === 'string' && value.match(dPattern) !== null) {\n return (new Date(value));\n }\n return (value);\n };\n Observer.prototype.isJson = function (value) {\n try {\n JSON.parse(value);\n }\n catch (e) {\n return false;\n }\n return true;\n };\n /**\n * To destroy handlers in the event\n *\n * @returns {void} ?\n */\n Observer.prototype.destroy = function () {\n this.boundedEvents = this.context = undefined;\n };\n /**\n * To remove internationalization events\n *\n * @returns {void} ?\n */\n Observer.prototype.offIntlEvents = function () {\n var eventsArr = this.boundedEvents['notifyExternalChange'];\n if (eventsArr) {\n for (var i = 0; i < eventsArr.length; i++) {\n var curContext = eventsArr[parseInt(i.toString(), 10)].context;\n if (curContext && curContext.detectFunction && curContext.randomId && !curContext.isRendered) {\n this.off('notifyExternalChange', curContext.detectFunction, curContext.randomId);\n i--;\n }\n }\n if (!this.boundedEvents['notifyExternalChange'].length) {\n delete this.boundedEvents['notifyExternalChange'];\n }\n }\n };\n /**\n * Returns if the property exists.\n *\n * @param {string} prop ?\n * @returns {boolean} ?\n */\n Observer.prototype.notExist = function (prop) {\n return Object.prototype.hasOwnProperty.call(this.boundedEvents, prop) === false || this.boundedEvents[\"\" + prop].length <= 0;\n };\n /**\n * Returns if the handler is present.\n *\n * @param {BoundOptions[]} boundedEvents ?\n * @param {Function} handler ?\n * @returns {boolean} ?\n */\n Observer.prototype.isHandlerPresent = function (boundedEvents, handler) {\n for (var _i = 0, boundedEvents_1 = boundedEvents; _i < boundedEvents_1.length; _i++) {\n var cur = boundedEvents_1[_i];\n if (cur.handler === handler) {\n return true;\n }\n }\n return false;\n };\n return Observer;\n}());\nexport { Observer };\n","import { DateFormat } from './intl/date-formatter';\nimport { NumberFormat } from './intl/number-formatter';\nimport { DateParser } from './intl/date-parser';\nimport { NumberParser } from './intl/number-parser';\nimport { IntlBase } from './intl/intl-base';\nimport { extend, getValue, isBlazor } from './util';\nimport { Observer } from './observer';\n/**\n * Specifies the observer used for external change detection.\n */\nexport var onIntlChange = new Observer();\n/**\n * Specifies the default rtl status for EJ2 components.\n */\nexport var rightToLeft = false;\n/**\n * Specifies the CLDR data loaded for internationalization functionalities.\n *\n * @private\n */\nexport var cldrData = {};\n/**\n * Specifies the default culture value to be considered.\n *\n * @private\n */\nexport var defaultCulture = 'en-US';\n/**\n * Specifies default currency code to be considered\n *\n * @private\n */\nexport var defaultCurrencyCode = 'USD';\nvar mapper = ['numericObject', 'dateObject'];\n/**\n * Internationalization class provides support to parse and format the number and date object to the desired format.\n * ```typescript\n * // To set the culture globally\n * setCulture('en-GB');\n *\n * // To set currency code globally\n * setCurrencyCode('EUR');\n *\n * //Load cldr data\n * loadCldr(gregorainData);\n * loadCldr(timeZoneData);\n * loadCldr(numbersData);\n * loadCldr(numberSystemData);\n *\n * // To use formatter in component side\n * let Intl:Internationalization = new Internationalization();\n *\n * // Date formatting\n * let dateFormatter: Function = Intl.getDateFormat({skeleton:'long',type:'dateTime'});\n * dateFormatter(new Date('11/2/2016'));\n * dateFormatter(new Date('25/2/2030'));\n * Intl.formatDate(new Date(),{skeleton:'E'});\n *\n * //Number formatting\n * let numberFormatter: Function = Intl.getNumberFormat({skeleton:'C5'})\n * numberFormatter(24563334);\n * Intl.formatNumber(123123,{skeleton:'p2'});\n *\n * // Date parser\n * let dateParser: Function = Intl.getDateParser({skeleton:'short',type:'time'});\n * dateParser('10:30 PM');\n * Intl.parseDate('10',{skeleton:'H'});\n * ```\n */\nvar Internationalization = /** @class */ (function () {\n function Internationalization(cultureName) {\n if (cultureName) {\n this.culture = cultureName;\n }\n }\n /**\n * Returns the format function for given options.\n *\n * @param {DateFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getDateFormat = function (options) {\n return DateFormat.dateFormat(this.getCulture(), options || { type: 'date', skeleton: 'short' }, cldrData);\n };\n /**\n * Returns the format function for given options.\n *\n * @param {NumberFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getNumberFormat = function (options) {\n if (options && !options.currency) {\n options.currency = defaultCurrencyCode;\n }\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberFormat.numberFormatter(this.getCulture(), options || {}, cldrData);\n };\n /**\n * Returns the parser function for given options.\n *\n * @param {DateFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getDateParser = function (options) {\n return DateParser.dateParser(this.getCulture(), options || { skeleton: 'short', type: 'date' }, cldrData);\n };\n /**\n * Returns the parser function for given options.\n *\n * @param {NumberFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getNumberParser = function (options) {\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberParser.numberParser(this.getCulture(), options || { format: 'N' }, cldrData);\n };\n /**\n * Returns the formatted string based on format options.\n *\n * @param {number} value - Specifies the number to format.\n * @param {NumberFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string} ?\n */\n Internationalization.prototype.formatNumber = function (value, option) {\n return this.getNumberFormat(option)(value);\n };\n /**\n * Returns the formatted date string based on format options.\n *\n * @param {Date} value - Specifies the number to format.\n * @param {DateFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string} ?\n */\n Internationalization.prototype.formatDate = function (value, option) {\n return this.getDateFormat(option)(value);\n };\n /**\n * Returns the date object for given date string and options.\n *\n * @param {string} value - Specifies the string to parse.\n * @param {DateFormatOptions} option - Specifies the parse options in which the date string will be parsed.\n * @returns {Date} ?\n */\n Internationalization.prototype.parseDate = function (value, option) {\n return this.getDateParser(option)(value);\n };\n /**\n * Returns the number object from the given string value and options.\n *\n * @param {string} value - Specifies the string to parse.\n * @param {NumberFormatOptions} option - Specifies the parse options in which the string number will be parsed.\n * @returns {number} ?\n */\n Internationalization.prototype.parseNumber = function (value, option) {\n return this.getNumberParser(option)(value);\n };\n /**\n * Returns Native Date Time Pattern\n *\n * @param {DateFormatOptions} option - Specifies the parse options for resultant date time pattern.\n * @param {boolean} isExcelFormat - Specifies format value to be converted to excel pattern.\n * @returns {string} ?\n * @private\n */\n Internationalization.prototype.getDatePattern = function (option, isExcelFormat) {\n return IntlBase.getActualDateTimeFormat(this.getCulture(), option, cldrData, isExcelFormat);\n };\n /**\n * Returns Native Number Pattern\n *\n * @param {NumberFormatOptions} option - Specifies the parse options for resultant number pattern.\n * @param {boolean} isExcel ?\n * @returns {string} ?\n * @private\n */\n Internationalization.prototype.getNumberPattern = function (option, isExcel) {\n return IntlBase.getActualNumberFormat(this.getCulture(), option, cldrData, isExcel);\n };\n /**\n * Returns the First Day of the Week\n *\n * @returns {number} ?\n */\n Internationalization.prototype.getFirstDayOfWeek = function () {\n return IntlBase.getWeekData(this.getCulture(), cldrData);\n };\n /**\n * Returns the culture\n *\n * @returns {string} ?\n */\n Internationalization.prototype.getCulture = function () {\n return this.culture || defaultCulture;\n };\n return Internationalization;\n}());\nexport { Internationalization };\n/**\n * Set the default culture to all EJ2 components\n *\n * @param {string} cultureName - Specifies the culture name to be set as default culture.\n * @returns {void} ?\n */\nexport function setCulture(cultureName) {\n defaultCulture = cultureName;\n onIntlChange.notify('notifyExternalChange', { 'locale': defaultCulture });\n}\n/**\n * Set the default currency code to all EJ2 components\n *\n * @param {string} currencyCode Specifies the culture name to be set as default culture.\n * @returns {void} ?\n */\nexport function setCurrencyCode(currencyCode) {\n defaultCurrencyCode = currencyCode;\n onIntlChange.notify('notifyExternalChange', { 'currencyCode': defaultCurrencyCode });\n}\n/**\n * Load the CLDR data into context\n *\n * @param {Object[]} data Specifies the CLDR data's to be used for formatting and parser.\n * @returns {void} ?\n */\nexport function loadCldr() {\n var data = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n data[_i] = arguments[_i];\n }\n for (var _a = 0, data_1 = data; _a < data_1.length; _a++) {\n var obj = data_1[_a];\n extend(cldrData, obj, {}, true);\n }\n}\n/**\n * To enable or disable RTL functionality for all components globally.\n *\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable rtl option.\n * @returns {void} ?\n */\nexport function enableRtl(status) {\n if (status === void 0) { status = true; }\n rightToLeft = status;\n onIntlChange.notify('notifyExternalChange', { enableRtl: rightToLeft });\n}\n/**\n * To get the numeric CLDR object for given culture\n *\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} type ?\n * @returns {Object} ?\n * @ignore\n * @private\n */\nexport function getNumericObject(locale, type) {\n var numObject = IntlBase.getDependables(cldrData, locale, '', true)[mapper[0]];\n var dateObject = IntlBase.getDependables(cldrData, locale, '')[mapper[1]];\n var numSystem = getValue('defaultNumberingSystem', numObject);\n var symbPattern = isBlazor() ? getValue('numberSymbols', numObject) : getValue('symbols-numberSystem-' + numSystem, numObject);\n var pattern = IntlBase.getSymbolPattern(type || 'decimal', numSystem, numObject, false);\n return extend(symbPattern, IntlBase.getFormatData(pattern, true, '', true), { 'dateSeparator': IntlBase.getDateSeparator(dateObject) });\n}\n/**\n * To get the numeric CLDR number base object for given culture\n *\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} currency - Specifies the currency for which numericObject to be returned.\n * @returns {string} ?\n * @ignore\n * @private\n */\nexport function getNumberDependable(locale, currency) {\n var numObject = IntlBase.getDependables(cldrData, locale, '', true);\n return IntlBase.getCurrencySymbol(numObject.numericObject, currency);\n}\n/**\n * To get the default date CLDR object.\n *\n * @param {string} mode ?\n * @returns {Object} ?\n * @ignore\n * @private\n */\nexport function getDefaultDateObject(mode) {\n return IntlBase.getDependables(cldrData, '', mode, false)[mapper[1]];\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types */\nimport { defaultCurrencyCode } from '../internationalization';\nimport { getValue, isNullOrUndefined, extend, isBlazor } from '../util';\nimport { ParserBase as parser, getBlazorCurrencySymbol } from './parser-base';\nimport { DateFormat } from './date-formatter';\nimport { NumberFormat } from './number-formatter';\nimport { isUndefined } from '../util';\nvar regExp = RegExp;\nexport var blazorCultureFormats = {\n 'en-US': {\n 'd': 'M/d/y',\n 'D': 'EEEE, MMMM d, y',\n 'f': 'EEEE, MMMM d, y h:mm a',\n 'F': 'EEEE, MMMM d, y h:mm:s a',\n 'g': 'M/d/y h:mm a',\n 'G': 'M/d/yyyy h:mm:ss tt',\n 'm': 'MMMM d',\n 'M': 'MMMM d',\n 'r': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 'R': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 's': 'yyyy\\'-\\'MM\\'-\\'dd\\'T\\'HH\\':\\'mm\\':\\'ss',\n 't': 'h:mm tt',\n 'T': 'h:m:s tt',\n 'u': 'yyyy\\'-\\'MM\\'-\\'dd HH\\':\\'mm\\':\\'ss\\'Z\\'',\n 'U': 'dddd, MMMM d, yyyy h:mm:ss tt',\n 'y': 'MMMM yyyy',\n 'Y': 'MMMM yyyy'\n }\n};\n/**\n * Date base common constants and function for date parser and formatter.\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var IntlBase;\n(function (IntlBase) {\n // eslint-disable-next-line security/detect-unsafe-regex\n IntlBase.negativeDataRegex = /^(('[^']+'|''|[^*#@0,.E])*)(\\*.)?((([#,]*[0,]*0+)(\\.0*[0-9]*#*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n // eslint-disable-next-line security/detect-unsafe-regex\n IntlBase.customRegex = /^(('[^']+'|''|[^*#@0,.])*)(\\*.)?((([0#,]*[0,]*[0#]*[0# ]*)(\\.[0#]*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.latnParseRegex = /0|1|2|3|4|5|6|7|8|9/g;\n var fractionRegex = /[0-9]/g;\n IntlBase.defaultCurrency = '$';\n var mapper = ['infinity', 'nan', 'group', 'decimal'];\n var patternRegex = /G|M|L|H|c|'| a|yy|y|EEEE|E/g;\n var patternMatch = {\n 'G': '',\n 'M': 'm',\n 'L': 'm',\n 'H': 'h',\n 'c': 'd',\n '\\'': '\"',\n ' a': ' AM/PM',\n 'yy': 'yy',\n 'y': 'yyyy',\n 'EEEE': 'dddd',\n 'E': 'ddd'\n };\n IntlBase.dateConverterMapper = /dddd|ddd/ig;\n var defaultFirstDay = 'sun';\n IntlBase.islamicRegex = /^islamic/;\n var firstDayMapper = {\n 'sun': 0,\n 'mon': 1,\n 'tue': 2,\n 'wed': 3,\n 'thu': 4,\n 'fri': 5,\n 'sat': 6\n };\n IntlBase.formatRegex = new regExp('(^[ncpae]{1})([0-1]?[0-9]|20)?$', 'i');\n IntlBase.currencyFormatRegex = new regExp('(^[ca]{1})([0-1]?[0-9]|20)?$', 'i');\n IntlBase.curWithoutNumberRegex = /(c|a)$/ig;\n var typeMapper = {\n '$': 'isCurrency',\n '%': 'isPercent',\n '-': 'isNegative',\n 0: 'nlead',\n 1: 'nend'\n };\n IntlBase.dateParseRegex = /([a-z])\\1*|'([^']|'')+'|''|./gi;\n IntlBase.basicPatterns = ['short', 'medium', 'long', 'full'];\n IntlBase.defaultObject = {\n 'dates': {\n 'calendars': {\n 'gregorian': {\n 'months': {\n 'stand-alone': {\n 'abbreviated': {\n '1': 'Jan',\n '2': 'Feb',\n '3': 'Mar',\n '4': 'Apr',\n '5': 'May',\n '6': 'Jun',\n '7': 'Jul',\n '8': 'Aug',\n '9': 'Sep',\n '10': 'Oct',\n '11': 'Nov',\n '12': 'Dec'\n },\n 'narrow': {\n '1': 'J',\n '2': 'F',\n '3': 'M',\n '4': 'A',\n '5': 'M',\n '6': 'J',\n '7': 'J',\n '8': 'A',\n '9': 'S',\n '10': 'O',\n '11': 'N',\n '12': 'D'\n },\n 'wide': {\n '1': 'January',\n '2': 'February',\n '3': 'March',\n '4': 'April',\n '5': 'May',\n '6': 'June',\n '7': 'July',\n '8': 'August',\n '9': 'September',\n '10': 'October',\n '11': 'November',\n '12': 'December'\n }\n }\n },\n 'days': {\n 'stand-alone': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'narrow': {\n 'sun': 'S',\n 'mon': 'M',\n 'tue': 'T',\n 'wed': 'W',\n 'thu': 'T',\n 'fri': 'F',\n 'sat': 'S'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n }\n },\n 'dayPeriods': {\n 'format': {\n 'wide': {\n 'am': 'AM',\n 'pm': 'PM'\n }\n }\n },\n 'eras': {\n 'eraNames': {\n '0': 'Before Christ',\n '0-alt-variant': 'Before Common Era',\n '1': 'Anno Domini',\n '1-alt-variant': 'Common Era'\n },\n 'eraAbbr': {\n '0': 'BC',\n '0-alt-variant': 'BCE',\n '1': 'AD',\n '1-alt-variant': 'CE'\n },\n 'eraNarrow': {\n '0': 'B',\n '0-alt-variant': 'BCE',\n '1': 'A',\n '1-alt-variant': 'CE'\n }\n },\n 'dateFormats': {\n 'full': 'EEEE, MMMM d, y',\n 'long': 'MMMM d, y',\n 'medium': 'MMM d, y',\n 'short': 'M/d/yy'\n },\n 'timeFormats': {\n 'full': 'h:mm:ss a zzzz',\n 'long': 'h:mm:ss a z',\n 'medium': 'h:mm:ss a',\n 'short': 'h:mm a'\n },\n 'dateTimeFormats': {\n 'full': '{1} \\'at\\' {0}',\n 'long': '{1} \\'at\\' {0}',\n 'medium': '{1}, {0}',\n 'short': '{1}, {0}',\n 'availableFormats': {\n 'd': 'd',\n 'E': 'ccc',\n 'Ed': 'd E',\n 'Ehm': 'E h:mm a',\n 'EHm': 'E HH:mm',\n 'Ehms': 'E h:mm:ss a',\n 'EHms': 'E HH:mm:ss',\n 'Gy': 'y G',\n 'GyMMM': 'MMM y G',\n 'GyMMMd': 'MMM d, y G',\n 'GyMMMEd': 'E, MMM d, y G',\n 'h': 'h a',\n 'H': 'HH',\n 'hm': 'h:mm a',\n 'Hm': 'HH:mm',\n 'hms': 'h:mm:ss a',\n 'Hms': 'HH:mm:ss',\n 'hmsv': 'h:mm:ss a v',\n 'Hmsv': 'HH:mm:ss v',\n 'hmv': 'h:mm a v',\n 'Hmv': 'HH:mm v',\n 'M': 'L',\n 'Md': 'M/d',\n 'MEd': 'E, M/d',\n 'MMM': 'LLL',\n 'MMMd': 'MMM d',\n 'MMMEd': 'E, MMM d',\n 'MMMMd': 'MMMM d',\n 'ms': 'mm:ss',\n 'y': 'y',\n 'yM': 'M/y',\n 'yMd': 'M/d/y',\n 'yMEd': 'E, M/d/y',\n 'yMMM': 'MMM y',\n 'yMMMd': 'MMM d, y',\n 'yMMMEd': 'E, MMM d, y',\n 'yMMMM': 'MMMM y'\n }\n }\n },\n 'islamic': {\n 'months': {\n 'stand-alone': {\n 'abbreviated': {\n '1': 'Muh.',\n '2': 'Saf.',\n '3': 'Rab. I',\n '4': 'Rab. II',\n '5': 'Jum. I',\n '6': 'Jum. II',\n '7': 'Raj.',\n '8': 'Sha.',\n '9': 'Ram.',\n '10': 'Shaw.',\n '11': 'Dhuʻl-Q.',\n '12': 'Dhuʻl-H.'\n },\n 'narrow': {\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9',\n '10': '10',\n '11': '11',\n '12': '12'\n },\n 'wide': {\n '1': 'Muharram',\n '2': 'Safar',\n '3': 'Rabiʻ I',\n '4': 'Rabiʻ II',\n '5': 'Jumada I',\n '6': 'Jumada II',\n '7': 'Rajab',\n '8': 'Shaʻban',\n '9': 'Ramadan',\n '10': 'Shawwal',\n '11': 'Dhuʻl-Qiʻdah',\n '12': 'Dhuʻl-Hijjah'\n }\n }\n },\n 'days': {\n 'stand-alone': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'narrow': {\n 'sun': 'S',\n 'mon': 'M',\n 'tue': 'T',\n 'wed': 'W',\n 'thu': 'T',\n 'fri': 'F',\n 'sat': 'S'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n }\n },\n 'dayPeriods': {\n 'format': {\n 'wide': {\n 'am': 'AM',\n 'pm': 'PM'\n }\n }\n },\n 'eras': {\n 'eraNames': {\n '0': 'AH'\n },\n 'eraAbbr': {\n '0': 'AH'\n },\n 'eraNarrow': {\n '0': 'AH'\n }\n },\n 'dateFormats': {\n 'full': 'EEEE, MMMM d, y G',\n 'long': 'MMMM d, y G',\n 'medium': 'MMM d, y G',\n 'short': 'M/d/y GGGGG'\n },\n 'timeFormats': {\n 'full': 'h:mm:ss a zzzz',\n 'long': 'h:mm:ss a z',\n 'medium': 'h:mm:ss a',\n 'short': 'h:mm a'\n },\n 'dateTimeFormats': {\n 'full': '{1} \\'at\\' {0}',\n 'long': '{1} \\'at\\' {0}',\n 'medium': '{1}, {0}',\n 'short': '{1}, {0}',\n 'availableFormats': {\n 'd': 'd',\n 'E': 'ccc',\n 'Ed': 'd E',\n 'Ehm': 'E h:mm a',\n 'EHm': 'E HH:mm',\n 'Ehms': 'E h:mm:ss a',\n 'EHms': 'E HH:mm:ss',\n 'Gy': 'y G',\n 'GyMMM': 'MMM y G',\n 'GyMMMd': 'MMM d, y G',\n 'GyMMMEd': 'E, MMM d, y G',\n 'h': 'h a',\n 'H': 'HH',\n 'hm': 'h:mm a',\n 'Hm': 'HH:mm',\n 'hms': 'h:mm:ss a',\n 'Hms': 'HH:mm:ss',\n 'M': 'L',\n 'Md': 'M/d',\n 'MEd': 'E, M/d',\n 'MMM': 'LLL',\n 'MMMd': 'MMM d',\n 'MMMEd': 'E, MMM d',\n 'MMMMd': 'MMMM d',\n 'ms': 'mm:ss',\n 'y': 'y G',\n 'yyyy': 'y G',\n 'yyyyM': 'M/y GGGGG',\n 'yyyyMd': 'M/d/y GGGGG',\n 'yyyyMEd': 'E, M/d/y GGGGG',\n 'yyyyMMM': 'MMM y G',\n 'yyyyMMMd': 'MMM d, y G',\n 'yyyyMMMEd': 'E, MMM d, y G',\n 'yyyyMMMM': 'MMMM y G',\n 'yyyyQQQ': 'QQQ y G',\n 'yyyyQQQQ': 'QQQQ y G'\n }\n }\n }\n },\n 'timeZoneNames': {\n 'hourFormat': '+HH:mm;-HH:mm',\n 'gmtFormat': 'GMT{0}',\n 'gmtZeroFormat': 'GMT'\n }\n },\n 'numbers': {\n 'currencies': {\n 'USD': {\n 'displayName': 'US Dollar',\n 'symbol': '$',\n 'symbol-alt-narrow': '$'\n },\n 'EUR': {\n 'displayName': 'Euro',\n 'symbol': '€',\n 'symbol-alt-narrow': '€'\n },\n 'GBP': {\n 'displayName': 'British Pound',\n 'symbol-alt-narrow': '£'\n }\n },\n 'defaultNumberingSystem': 'latn',\n 'minimumGroupingDigits': '1',\n 'symbols-numberSystem-latn': {\n 'decimal': '.',\n 'group': ',',\n 'list': ';',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'exponential': 'E',\n 'superscriptingExponent': '×',\n 'perMille': '‰',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'timeSeparator': ':'\n },\n 'decimalFormats-numberSystem-latn': {\n 'standard': '#,##0.###'\n },\n 'percentFormats-numberSystem-latn': {\n 'standard': '#,##0%'\n },\n 'currencyFormats-numberSystem-latn': {\n 'standard': '¤#,##0.00',\n 'accounting': '¤#,##0.00;(¤#,##0.00)'\n },\n 'scientificFormats-numberSystem-latn': {\n 'standard': '#E0'\n }\n }\n };\n IntlBase.blazorDefaultObject = {\n 'numbers': {\n 'mapper': {\n '0': '0',\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9'\n },\n 'mapperDigits': '0123456789',\n 'numberSymbols': {\n 'decimal': '.',\n 'group': ',',\n 'plusSign': '+',\n 'minusSign': '-',\n 'percentSign': '%',\n 'nan': 'NaN',\n 'timeSeparator': ':',\n 'infinity': '∞'\n },\n 'timeSeparator': ':',\n 'currencySymbol': '$',\n 'currencypData': {\n 'nlead': '$',\n 'nend': '',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'percentpData': {\n 'nlead': '',\n 'nend': '%',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'percentnData': {\n 'nlead': '-',\n 'nend': '%',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'currencynData': {\n 'nlead': '($',\n 'nend': ')',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'decimalnData': {\n 'nlead': '-',\n 'nend': '',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'decimalpData': {\n 'nlead': '',\n 'nend': '',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n }\n },\n 'dates': {\n 'dayPeriods': {\n 'am': 'AM',\n 'pm': 'PM'\n },\n 'dateSeperator': '/',\n 'days': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n },\n 'months': {\n 'abbreviated': {\n '1': 'Jan',\n '2': 'Feb',\n '3': 'Mar',\n '4': 'Apr',\n '5': 'May',\n '6': 'Jun',\n '7': 'Jul',\n '8': 'Aug',\n '9': 'Sep',\n '10': 'Oct',\n '11': 'Nov',\n '12': 'Dec'\n },\n 'wide': {\n '1': 'January',\n '2': 'February',\n '3': 'March',\n '4': 'April',\n '5': 'May',\n '6': 'June',\n '7': 'July',\n '8': 'August',\n '9': 'September',\n '10': 'October',\n '11': 'November',\n '12': 'December'\n }\n },\n 'eras': {\n '1': 'AD'\n }\n }\n };\n IntlBase.monthIndex = {\n 3: 'abbreviated',\n 4: 'wide',\n 5: 'narrow',\n 1: 'abbreviated'\n };\n /**\n *\n */\n IntlBase.month = 'months';\n IntlBase.days = 'days';\n /**\n * Default numerber Object\n */\n IntlBase.patternMatcher = {\n C: 'currency',\n P: 'percent',\n N: 'decimal',\n A: 'currency',\n E: 'scientific'\n };\n /**\n * Returns the resultant pattern based on the skeleton, dateObject and the type provided\n *\n * @private\n * @param {string} skeleton ?\n * @param {Object} dateObject ?\n * @param {string} type ?\n * @param {boolean} isIslamic ?\n * @param {string} blazorCulture ?\n * @returns {string} ?\n */\n function getResultantPattern(skeleton, dateObject, type, isIslamic, blazorCulture) {\n var resPattern;\n var iType = type || 'date';\n if (blazorCulture) {\n resPattern = compareBlazorDateFormats({ skeleton: skeleton }, blazorCulture).format ||\n compareBlazorDateFormats({ skeleton: 'd' }, 'en-US').format;\n }\n else {\n if (IntlBase.basicPatterns.indexOf(skeleton) !== -1) {\n resPattern = getValue(iType + 'Formats.' + skeleton, dateObject);\n if (iType === 'dateTime') {\n var dPattern = getValue('dateFormats.' + skeleton, dateObject);\n var tPattern = getValue('timeFormats.' + skeleton, dateObject);\n resPattern = resPattern.replace('{1}', dPattern).replace('{0}', tPattern);\n }\n }\n else {\n resPattern = getValue('dateTimeFormats.availableFormats.' + skeleton, dateObject);\n }\n if (isUndefined(resPattern) && skeleton === 'yMd') {\n resPattern = 'M/d/y';\n }\n }\n return resPattern;\n }\n IntlBase.getResultantPattern = getResultantPattern;\n /**\n * Returns the dependable object for provided cldr data and culture\n *\n * @private\n * @param {Object} cldr ?\n * @param {string} culture ?\n * @param {string} mode ?\n * @param {boolean} isNumber ?\n * @returns {any} ?\n */\n function getDependables(cldr, culture, mode, isNumber) {\n var ret = {};\n var calendartype = mode || 'gregorian';\n ret.parserObject = parser.getMainObject(cldr, culture) || (isBlazor() ? IntlBase.blazorDefaultObject : IntlBase.defaultObject);\n if (isNumber) {\n ret.numericObject = getValue('numbers', ret.parserObject);\n }\n else {\n var dateString = isBlazor() ? 'dates' : ('dates.calendars.' + calendartype);\n ret.dateObject = getValue(dateString, ret.parserObject);\n }\n return ret;\n }\n IntlBase.getDependables = getDependables;\n /**\n * Returns the symbol pattern for provided parameters\n *\n * @private\n * @param {string} type ?\n * @param {string} numSystem ?\n * @param {Object} obj ?\n * @param {boolean} isAccount ?\n * @returns {string} ?\n */\n function getSymbolPattern(type, numSystem, obj, isAccount) {\n return getValue(type + 'Formats-numberSystem-' +\n numSystem + (isAccount ? '.accounting' : '.standard'), obj) || (isAccount ? getValue(type + 'Formats-numberSystem-' +\n numSystem + '.standard', obj) : '');\n }\n IntlBase.getSymbolPattern = getSymbolPattern;\n /**\n *\n * @param {string} format ?\n * @returns {string} ?\n */\n function ConvertDateToWeekFormat(format) {\n var convertMapper = format.match(IntlBase.dateConverterMapper);\n if (convertMapper && isBlazor()) {\n var tempString = convertMapper[0].length === 3 ? 'EEE' : 'EEEE';\n return format.replace(IntlBase.dateConverterMapper, tempString);\n }\n return format;\n }\n IntlBase.ConvertDateToWeekFormat = ConvertDateToWeekFormat;\n /**\n *\n * @param {DateFormatOptions} formatOptions ?\n * @param {string} culture ?\n * @returns {DateFormatOptions} ?\n */\n function compareBlazorDateFormats(formatOptions, culture) {\n var format = formatOptions.format || formatOptions.skeleton;\n var curFormatMapper = getValue((culture || 'en-US') + '.' + format, blazorCultureFormats);\n if (!curFormatMapper) {\n curFormatMapper = getValue('en-US.' + format, blazorCultureFormats);\n }\n if (curFormatMapper) {\n curFormatMapper = ConvertDateToWeekFormat(curFormatMapper);\n formatOptions.format = curFormatMapper.replace(/tt/, 'a');\n }\n return formatOptions;\n }\n IntlBase.compareBlazorDateFormats = compareBlazorDateFormats;\n /**\n * Returns proper numeric skeleton\n *\n * @private\n * @param {string} skeleton ?\n * @returns {any} ?\n */\n function getProperNumericSkeleton(skeleton) {\n var matches = skeleton.match(IntlBase.formatRegex);\n var ret = {};\n var pattern = matches[1].toUpperCase();\n ret.isAccount = (pattern === 'A');\n ret.type = IntlBase.patternMatcher[\"\" + pattern];\n if (skeleton.length > 1) {\n ret.fractionDigits = parseInt(matches[2], 10);\n }\n return ret;\n }\n IntlBase.getProperNumericSkeleton = getProperNumericSkeleton;\n /**\n * Returns format data for number formatting like minimum fraction, maximum fraction, etc..,\n *\n * @private\n * @param {string} pattern ?\n * @param {boolean} needFraction ?\n * @param {string} cSymbol ?\n * @param {boolean} fractionOnly ?\n * @returns {any} ?\n */\n function getFormatData(pattern, needFraction, cSymbol, fractionOnly) {\n var nData = fractionOnly ? {} : { nlead: '', nend: '' };\n var match = pattern.match(IntlBase.customRegex);\n if (match) {\n if (!fractionOnly) {\n nData.nlead = changeCurrencySymbol(match[1], cSymbol);\n nData.nend = changeCurrencySymbol(match[10], cSymbol);\n nData.groupPattern = match[4];\n }\n var fraction = match[7];\n if (fraction && needFraction) {\n var fmatch = fraction.match(fractionRegex);\n if (!isNullOrUndefined(fmatch)) {\n nData.minimumFraction = fmatch.length;\n }\n else {\n nData.minimumFraction = 0;\n }\n nData.maximumFraction = fraction.length - 1;\n }\n }\n return nData;\n }\n IntlBase.getFormatData = getFormatData;\n /**\n * Changes currency symbol\n *\n * @private\n * @param {string} val ?\n * @param {string} sym ?\n * @returns {string} ?\n */\n function changeCurrencySymbol(val, sym) {\n if (val) {\n val = val.replace(IntlBase.defaultCurrency, sym);\n return (sym === '') ? val.trim() : val;\n }\n return '';\n }\n IntlBase.changeCurrencySymbol = changeCurrencySymbol;\n /**\n * Returns currency symbol based on currency code ?\n *\n * @private\n * @param {Object} numericObject ?\n * @param {string} currencyCode ?\n * @param {string} altSymbol ?\n * @param {string} ignoreCurrency ?\n * @returns {string} ?\n */\n function getCurrencySymbol(numericObject, currencyCode, altSymbol, ignoreCurrency) {\n var symbol = altSymbol ? ('.' + altSymbol) : '.symbol';\n var getCurrency = ignoreCurrency ? '$' : getValue('currencies.' + currencyCode + symbol, numericObject) ||\n getValue('currencies.' + currencyCode + '.symbol-alt-narrow', numericObject) || '$';\n return getCurrency;\n }\n IntlBase.getCurrencySymbol = getCurrencySymbol;\n /**\n * Returns formatting options for custom number format\n *\n * @private\n * @param {string} format ?\n * @param {CommonOptions} dOptions ?\n * @param {any} obj ?\n * @returns {any} ?\n */\n function customFormat(format, dOptions, obj) {\n var options = {};\n var formatSplit = format.split(';');\n var data = ['pData', 'nData', 'zeroData'];\n for (var i = 0; i < formatSplit.length; i++) {\n options[\"\" + data[parseInt(i.toString(), 10)]] = customNumberFormat(formatSplit[parseInt(i.toString(), 10)], dOptions, obj);\n }\n if (isNullOrUndefined(options.nData)) {\n options.nData = extend({}, options.pData);\n options.nData.nlead = isNullOrUndefined(dOptions) ? '-' + options.nData.nlead : dOptions.minusSymbol + options.nData.nlead;\n }\n return options;\n }\n IntlBase.customFormat = customFormat;\n /**\n * Returns custom formatting options\n *\n * @private\n * @param {string} format ?\n * @param {CommonOptions} dOptions ?\n * @param {Object} numObject ?\n * @returns {any} ?\n */\n function customNumberFormat(format, dOptions, numObject) {\n var cOptions = { type: 'decimal', minimumFractionDigits: 0, maximumFractionDigits: 0 };\n var pattern = format.match(IntlBase.customRegex);\n if (isNullOrUndefined(pattern) || (pattern[5] === '' && format !== 'N/A')) {\n cOptions.type = undefined;\n return cOptions;\n }\n cOptions.nlead = pattern[1];\n cOptions.nend = pattern[10];\n var integerPart = pattern[6];\n var spaceCapture = integerPart.match(/ $/g) ? true : false;\n var spaceGrouping = integerPart.replace(/ $/g, '').indexOf(' ') !== -1;\n cOptions.useGrouping = integerPart.indexOf(',') !== -1 || spaceGrouping;\n integerPart = integerPart.replace(/,/g, '');\n var fractionPart = pattern[7];\n if (integerPart.indexOf('0') !== -1) {\n cOptions.minimumIntegerDigits = integerPart.length - integerPart.indexOf('0');\n }\n if (!isNullOrUndefined(fractionPart)) {\n cOptions.minimumFractionDigits = fractionPart.lastIndexOf('0');\n cOptions.maximumFractionDigits = fractionPart.lastIndexOf('#');\n if (cOptions.minimumFractionDigits === -1) {\n cOptions.minimumFractionDigits = 0;\n }\n if (cOptions.maximumFractionDigits === -1 || cOptions.maximumFractionDigits < cOptions.minimumFractionDigits) {\n cOptions.maximumFractionDigits = cOptions.minimumFractionDigits;\n }\n }\n if (!isNullOrUndefined(dOptions)) {\n dOptions.isCustomFormat = true;\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '$', dOptions.currencySymbol));\n if (!cOptions.isCurrency) {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', dOptions.percentSymbol));\n }\n }\n else {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', '%'));\n }\n if (!isNullOrUndefined(numObject)) {\n var symbolPattern = getSymbolPattern(cOptions.type, dOptions.numberMapper.numberSystem, numObject, false);\n if (cOptions.useGrouping) {\n cOptions.groupSeparator = spaceGrouping ? ' ' : dOptions.numberMapper.numberSymbols[mapper[2]];\n cOptions.groupData = NumberFormat.getGroupingDetails(symbolPattern.split(';')[0]);\n }\n cOptions.nlead = cOptions.nlead.replace(/'/g, '');\n cOptions.nend = spaceCapture ? ' ' + cOptions.nend.replace(/'/g, '') : cOptions.nend.replace(/'/g, '');\n }\n return cOptions;\n }\n IntlBase.customNumberFormat = customNumberFormat;\n /**\n * Returns formatting options for currency or percent type\n *\n * @private\n * @param {string[]} parts ?\n * @param {string} actual ?\n * @param {string} symbol ?\n * @returns {any} ?\n */\n function isCurrencyPercent(parts, actual, symbol) {\n var options = { nlead: parts[0], nend: parts[1] };\n for (var i = 0; i < 2; i++) {\n var part = parts[parseInt(i.toString(), 10)];\n var loc = part.indexOf(actual);\n if ((loc !== -1) && ((loc < part.indexOf('\\'')) || (loc > part.lastIndexOf('\\'')))) {\n options[\"\" + typeMapper[parseInt(i.toString(), 10)]] = part.substr(0, loc) + symbol + part.substr(loc + 1);\n options[\"\" + typeMapper[\"\" + actual]] = true;\n options.type = options.isCurrency ? 'currency' : 'percent';\n break;\n }\n }\n return options;\n }\n IntlBase.isCurrencyPercent = isCurrencyPercent;\n /**\n * Returns culture based date separator\n *\n * @private\n * @param {Object} dateObj ?\n * @returns {string} ?\n */\n function getDateSeparator(dateObj) {\n var value = (getValue('dateFormats.short', dateObj) || '').match(/[dM]([^dM])[dM]/i);\n return value ? value[1] : '/';\n }\n IntlBase.getDateSeparator = getDateSeparator;\n /**\n * Returns Native Date Time pattern\n *\n * @private\n * @param {string} culture ?\n * @param {DateFormatOptions} options ?\n * @param {Object} cldr ?\n * @param {boolean} isExcelFormat ?\n * @returns {string} ?\n */\n function getActualDateTimeFormat(culture, options, cldr, isExcelFormat) {\n var dependable = getDependables(cldr, culture, options.calendar);\n if (isBlazor()) {\n options = compareBlazorDateFormats(options, culture);\n }\n var actualPattern = options.format || getResultantPattern(options.skeleton, dependable.dateObject, options.type);\n if (isExcelFormat) {\n actualPattern = actualPattern.replace(patternRegex, function (pattern) {\n return patternMatch[\"\" + pattern];\n });\n if (actualPattern.indexOf('z') !== -1) {\n var tLength = actualPattern.match(/z/g).length;\n var timeZonePattern = void 0;\n var options_1 = { 'timeZone': {} };\n options_1.numMapper = parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n options_1.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n var value = new Date();\n var timezone = value.getTimezoneOffset();\n var pattern = (tLength < 4) ? '+H;-H' : options_1.timeZone.hourFormat;\n pattern = pattern.replace(/:/g, options_1.numMapper.timeSeparator);\n if (timezone === 0) {\n timeZonePattern = options_1.timeZone.gmtZeroFormat;\n }\n else {\n timeZonePattern = DateFormat.getTimeZoneValue(timezone, pattern);\n timeZonePattern = options_1.timeZone.gmtFormat.replace(/\\{0\\}/, timeZonePattern);\n }\n actualPattern = actualPattern.replace(/[z]+/, '\"' + timeZonePattern + '\"');\n }\n actualPattern = actualPattern.replace(/ $/, '');\n }\n return actualPattern;\n }\n IntlBase.getActualDateTimeFormat = getActualDateTimeFormat;\n /**\n *\n * @param {string} actual ?\n * @param {any} option ?\n * @returns {any} ?\n */\n function processSymbol(actual, option) {\n if (actual.indexOf(',') !== -1) {\n var split = actual.split(',');\n actual = (split[0] + getValue('numberMapper.numberSymbols.group', option) +\n split[1].replace('.', getValue('numberMapper.numberSymbols.decimal', option)));\n }\n else {\n actual = actual.replace('.', getValue('numberMapper.numberSymbols.decimal', option));\n }\n return actual;\n }\n IntlBase.processSymbol = processSymbol;\n /**\n * Returns Native Number pattern\n *\n * @private\n * @param {string} culture ?\n * @param {NumberFormatOptions} options ?\n * @param {Object} cldr ?\n * @param {boolean} isExcel ?\n * @returns {string} ?\n */\n function getActualNumberFormat(culture, options, cldr, isExcel) {\n var dependable = getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n var numrericObject = dependable.numericObject;\n var minFrac;\n var curObj = {};\n var curMatch = (options.format || '').match(IntlBase.currencyFormatRegex);\n var type = IntlBase.formatRegex.test(options.format) ? getProperNumericSkeleton(options.format || 'N') : {};\n var dOptions = {};\n if (curMatch) {\n dOptions.numberMapper = isBlazor() ?\n extend({}, dependable.numericObject) :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n var curCode = isBlazor() ? getValue('currencySymbol', dependable.numericObject) :\n getCurrencySymbol(dependable.numericObject, options.currency || defaultCurrencyCode, options.altSymbol);\n var symbolPattern = getSymbolPattern('currency', dOptions.numberMapper.numberSystem, dependable.numericObject, (/a/i).test(options.format));\n symbolPattern = symbolPattern.replace(/\\u00A4/g, curCode);\n var split = symbolPattern.split(';');\n curObj.hasNegativePattern = isBlazor() ? true : (split.length > 1);\n curObj.nData = isBlazor() ? getValue(type.type + 'nData', numrericObject) :\n getFormatData(split[1] || '-' + split[0], true, curCode);\n curObj.pData = isBlazor() ? getValue(type.type + 'pData', numrericObject) :\n getFormatData(split[0], false, curCode);\n if (!curMatch[2] && !options.minimumFractionDigits && !options.maximumFractionDigits) {\n minFrac = getFormatData(symbolPattern.split(';')[0], true, '', true).minimumFraction;\n }\n }\n var actualPattern;\n if ((IntlBase.formatRegex.test(options.format)) || !(options.format)) {\n extend(parseOptions, getProperNumericSkeleton(options.format || 'N'));\n parseOptions.custom = false;\n actualPattern = '###0';\n if (parseOptions.fractionDigits || options.minimumFractionDigits || options.maximumFractionDigits || minFrac) {\n var defaultMinimum = 0;\n if (parseOptions.fractionDigits) {\n options.minimumFractionDigits = options.maximumFractionDigits = parseOptions.fractionDigits;\n }\n actualPattern = fractionDigitsPattern(actualPattern, minFrac || parseOptions.fractionDigits ||\n options.minimumFractionDigits || defaultMinimum, options.maximumFractionDigits || defaultMinimum);\n }\n if (options.minimumIntegerDigits) {\n actualPattern = minimumIntegerPattern(actualPattern, options.minimumIntegerDigits);\n }\n if (options.useGrouping) {\n actualPattern = groupingPattern(actualPattern);\n }\n if (parseOptions.type === 'currency' || (parseOptions.type && isBlazor())) {\n if (isBlazor() && parseOptions.type !== 'currency') {\n curObj.pData = getValue(parseOptions.type + 'pData', numrericObject);\n curObj.nData = getValue(parseOptions.type + 'nData', numrericObject);\n }\n var cPattern = actualPattern;\n actualPattern = curObj.pData.nlead + cPattern + curObj.pData.nend;\n if (curObj.hasNegativePattern || isBlazor()) {\n actualPattern += ';' + curObj.nData.nlead + cPattern + curObj.nData.nend;\n }\n }\n if (parseOptions.type === 'percent' && !isBlazor()) {\n actualPattern += ' %';\n }\n }\n else {\n actualPattern = options.format.replace(/'/g, '\"');\n }\n if (Object.keys(dOptions).length > 0) {\n actualPattern = !isExcel ? processSymbol(actualPattern, dOptions) : actualPattern;\n }\n return actualPattern;\n }\n IntlBase.getActualNumberFormat = getActualNumberFormat;\n /**\n *\n * @param {string} pattern ?\n * @param {number} minDigits ?\n * @param {number} maxDigits ?\n * @returns {string} ?\n */\n function fractionDigitsPattern(pattern, minDigits, maxDigits) {\n pattern += '.';\n for (var a = 0; a < minDigits; a++) {\n pattern += '0';\n }\n if (minDigits < maxDigits) {\n var diff = maxDigits - minDigits;\n for (var b = 0; b < diff; b++) {\n pattern += '#';\n }\n }\n return pattern;\n }\n IntlBase.fractionDigitsPattern = fractionDigitsPattern;\n /**\n *\n * @param {string} pattern ?\n * @param {number} digits ?\n * @returns {string} ?\n */\n function minimumIntegerPattern(pattern, digits) {\n var temp = pattern.split('.');\n var integer = '';\n for (var x = 0; x < digits; x++) {\n integer += '0';\n }\n return temp[1] ? (integer + '.' + temp[1]) : integer;\n }\n IntlBase.minimumIntegerPattern = minimumIntegerPattern;\n /**\n *\n * @param {string} pattern ?\n * @returns {string} ?\n */\n function groupingPattern(pattern) {\n var temp = pattern.split('.');\n var integer = temp[0];\n var no = 3 - integer.length % 3;\n var hash = (no && no === 1) ? '#' : (no === 2 ? '##' : '');\n integer = hash + integer;\n pattern = '';\n for (var x = integer.length - 1; x > 0; x = x - 3) {\n pattern = ',' + integer[x - 2] + integer[x - 1] + integer[parseInt(x.toString(), 10)] + pattern;\n }\n pattern = pattern.slice(1);\n return temp[1] ? (pattern + '.' + temp[1]) : pattern;\n }\n IntlBase.groupingPattern = groupingPattern;\n /**\n *\n * @param {string} culture ?\n * @param {Object} cldr ?\n * @returns {number} ?\n */\n function getWeekData(culture, cldr) {\n var firstDay = defaultFirstDay;\n var mapper = getValue('supplemental.weekData.firstDay', cldr);\n var iCulture = culture;\n if ((/en-/).test(iCulture)) {\n iCulture = iCulture.slice(3);\n }\n iCulture = iCulture.slice(0, 2).toUpperCase() + iCulture.substr(2);\n if (mapper) {\n firstDay = mapper[\"\" + iCulture] || mapper[iCulture.slice(0, 2)] || defaultFirstDay;\n }\n return firstDayMapper[\"\" + firstDay];\n }\n IntlBase.getWeekData = getWeekData;\n /**\n * @private\n * @param {any} pData ?\n * @param {string} aCurrency ?\n * @param {string} rCurrency ?\n * @returns {void} ?\n */\n function replaceBlazorCurrency(pData, aCurrency, rCurrency) {\n var iCurrency = getBlazorCurrencySymbol(rCurrency);\n if (aCurrency !== iCurrency) {\n for (var _i = 0, pData_1 = pData; _i < pData_1.length; _i++) {\n var data = pData_1[_i];\n data.nend = data.nend.replace(aCurrency, iCurrency);\n data.nlead = data.nlead.replace(aCurrency, iCurrency);\n }\n }\n }\n IntlBase.replaceBlazorCurrency = replaceBlazorCurrency;\n /**\n * @private\n * @param {Date} date ?\n * @returns {number} ?\n */\n function getWeekOfYear(date) {\n var newYear = new Date(date.getFullYear(), 0, 1);\n var day = newYear.getDay();\n var weeknum;\n day = (day >= 0 ? day : day + 7);\n var daynum = Math.floor((date.getTime() - newYear.getTime() -\n (date.getTimezoneOffset() - newYear.getTimezoneOffset()) * 60000) / 86400000) + 1;\n if (day < 4) {\n weeknum = Math.floor((daynum + day - 1) / 7) + 1;\n if (weeknum > 52) {\n var nYear = new Date(date.getFullYear() + 1, 0, 1);\n var nday = nYear.getDay();\n nday = nday >= 0 ? nday : nday + 7;\n weeknum = nday < 4 ? 1 : 53;\n }\n }\n else {\n weeknum = Math.floor((daynum + day - 1) / 7);\n }\n return weeknum;\n }\n IntlBase.getWeekOfYear = getWeekOfYear;\n})(IntlBase || (IntlBase = {}));\n","import { isNullOrUndefined, merge } from './util';\nvar headerRegex = /^(.*?):[ \\t]*([^\\r\\n]*)$/gm;\nvar defaultType = 'GET';\n/**\n * Ajax class provides ability to make asynchronous HTTP request to the server\n * ```typescript\n * var ajax = new Ajax(\"index.html\", \"GET\", true);\n * ajax.send().then(\n * function (value) {\n * console.log(value);\n * },\n * function (reason) {\n * console.log(reason);\n * });\n * ```\n */\nvar Ajax = /** @class */ (function () {\n /**\n * Constructor for Ajax class\n *\n * @param {string|Object} options ?\n * @param {string} type ?\n * @param {boolean} async ?\n * @returns defaultType any\n */\n function Ajax(options, type, async, contentType) {\n /**\n * A boolean value indicating whether the request should be sent asynchronous or not.\n *\n * @default true\n */\n this.mode = true;\n /**\n * A boolean value indicating whether to ignore the promise reject.\n *\n * @private\n * @default true\n */\n this.emitError = true;\n this.options = {};\n if (typeof options === 'string') {\n this.url = options;\n this.type = type ? type.toUpperCase() : defaultType;\n this.mode = !isNullOrUndefined(async) ? async : true;\n }\n else if (typeof options === 'object') {\n this.options = options;\n merge(this, this.options);\n }\n this.type = this.type ? this.type.toUpperCase() : defaultType;\n this.contentType = (this.contentType !== undefined) ? this.contentType : contentType;\n }\n /**\n *\n * Send the request to server.\n *\n * @param {any} data - To send the user data\n * @returns {Promise} ?\n */\n Ajax.prototype.send = function (data) {\n var _this = this;\n this.data = isNullOrUndefined(data) ? this.data : data;\n var eventArgs = {\n cancel: false,\n httpRequest: null\n };\n var promise = new Promise(function (resolve, reject) {\n _this.httpRequest = new XMLHttpRequest();\n _this.httpRequest.onreadystatechange = function () { _this.stateChange(resolve, reject); };\n if (!isNullOrUndefined(_this.onLoad)) {\n _this.httpRequest.onload = _this.onLoad;\n }\n if (!isNullOrUndefined(_this.onProgress)) {\n _this.httpRequest.onprogress = _this.onProgress;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onAbort)) {\n _this.httpRequest.onabort = _this.onAbort;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onError)) {\n _this.httpRequest.onerror = _this.onError;\n }\n //** Upload Events **/\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onUploadProgress)) {\n _this.httpRequest.upload.onprogress = _this.onUploadProgress;\n }\n _this.httpRequest.open(_this.type, _this.url, _this.mode);\n // Set default headers\n if (!isNullOrUndefined(_this.data) && _this.contentType !== null) {\n _this.httpRequest.setRequestHeader('Content-Type', _this.contentType || 'application/json; charset=utf-8');\n }\n if (_this.beforeSend) {\n eventArgs.httpRequest = _this.httpRequest;\n _this.beforeSend(eventArgs);\n }\n if (!eventArgs.cancel) {\n _this.httpRequest.send(!isNullOrUndefined(_this.data) ? _this.data : null);\n }\n });\n return promise;\n };\n Ajax.prototype.successHandler = function (data) {\n if (this.onSuccess) {\n this.onSuccess(data, this);\n }\n return data;\n };\n Ajax.prototype.failureHandler = function (reason) {\n if (this.onFailure) {\n this.onFailure(this.httpRequest);\n }\n return reason;\n };\n Ajax.prototype.stateChange = function (resolve, reject) {\n var data = this.httpRequest.responseText;\n if (this.dataType && this.dataType.toLowerCase() === 'json') {\n if (data === '') {\n data = undefined;\n }\n else {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n // no exception handle\n }\n }\n }\n if (this.httpRequest.readyState === 4) {\n //success range should be 200 to 299\n if ((this.httpRequest.status >= 200 && this.httpRequest.status <= 299) || this.httpRequest.status === 304) {\n resolve(this.successHandler(data));\n }\n else {\n if (this.emitError) {\n reject(new Error(this.failureHandler(this.httpRequest.statusText)));\n }\n else {\n resolve();\n }\n }\n }\n };\n /**\n * To get the response header from XMLHttpRequest\n *\n * @param {string} key Key to search in the response header\n * @returns {string} ?\n */\n Ajax.prototype.getResponseHeader = function (key) {\n var responseHeaders = {};\n var headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n while (headers) {\n responseHeaders[headers[1].toLowerCase()] = headers[2];\n headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n }\n var header = responseHeaders[key.toLowerCase()];\n return isNullOrUndefined(header) ? null : header;\n };\n return Ajax;\n}());\nexport { Ajax };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isNullOrUndefined as isNOU, isObject, merge } from './util';\n/**\n * The Fetch class provides a way to make asynchronous network requests, typically to retrieve resources from a server.\n * ```typescript\n * var fetchApi = new Fetch('index.html', 'GET');\n * fetchApi.send()\n * .then((value) => {\n * console.log(value);\n * }).catch((error) => {\n * console.log(error);\n * });\n * ```\n */\nvar Fetch = /** @class */ (function () {\n /**\n * Constructor for Fetch class.\n *\n * @param {string|Object} options - Specifies the URL or Request object with URL to which the request is to be sent.\n * @param {string} type - Specifies which request method is to be used, such as GET, POST, etc.\n * @param {string} contentType - Specifies the content type of the request, which is used to indicate the original media type of the resource.\n */\n function Fetch(options, type, contentType) {\n /**\n * Specifies which request method is to be used, such as GET, POST, etc.\n *\n * @default GET\n */\n this.type = 'GET';\n /**\n * A boolean value indicating whether to reject the promise or not.\n *\n * @private\n * @default true\n */\n this.emitError = true;\n if (typeof options === 'string') {\n this.url = options;\n this.type = !isNOU(type) ? type.toUpperCase() : this.type;\n this.contentType = contentType;\n }\n else if (isObject(options) && Object.keys(options).length > 0) {\n merge(this, options);\n }\n this.contentType = !isNOU(this.contentType) ? this.contentType : 'application/json; charset=utf-8';\n }\n /**\n * Send the request to server.\n *\n * @param {string|Object} data - Specifies the data that needs to be added to the request.\n * @returns {Promise} - Returns the response to a request.\n */\n Fetch.prototype.send = function (data) {\n var _this = this;\n var contentTypes = {\n 'application/json': 'json',\n 'multipart/form-data': 'formData',\n 'application/octet-stream': 'blob',\n 'application/x-www-form-urlencoded': 'formData'\n };\n try {\n if (isNOU(this.fetchRequest) && this.type === 'GET') {\n this.fetchRequest = new Request(this.url, { method: this.type });\n }\n else if (isNOU(this.fetchRequest)) {\n this.data = !isNOU(data) ? data : this.data;\n this.fetchRequest = new Request(this.url, {\n method: this.type,\n headers: { 'Content-Type': this.contentType },\n body: this.data\n });\n }\n var eventArgs = { cancel: false, fetchRequest: this.fetchRequest };\n this.triggerEvent(this['beforeSend'], eventArgs);\n if (eventArgs.cancel) {\n return null;\n }\n this.fetchResponse = fetch(this.fetchRequest);\n return this.fetchResponse.then(function (response) {\n _this.triggerEvent(_this['onLoad'], response);\n if (!response.ok) {\n throw response;\n }\n var responseType = 'text';\n for (var _i = 0, _a = Object.keys(contentTypes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (response.headers.get('Content-Type') && response.headers.get('Content-Type').indexOf(key) !== -1) {\n responseType = contentTypes[key];\n }\n }\n return response[responseType]();\n }).then(function (data) {\n _this.triggerEvent(_this['onSuccess'], data, _this);\n return data;\n }).catch(function (error) {\n var returnVal = {};\n if (_this.emitError) {\n _this.triggerEvent(_this['onFailure'], error);\n returnVal = Promise.reject(error);\n }\n return returnVal;\n });\n }\n catch (error) {\n return error;\n }\n };\n Fetch.prototype.triggerEvent = function (callback, data, instance) {\n if (!isNOU(callback) && typeof callback === 'function') {\n callback(data, instance);\n }\n };\n return Fetch;\n}());\nexport { Fetch };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isUndefined } from './util';\nvar REGX_MOBILE = /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini|mobile/i;\nvar REGX_IE = /msie|trident/i;\nvar REGX_IE11 = /Trident\\/7\\./;\nvar REGX_IOS = /(ipad|iphone|ipod touch)/i;\nvar REGX_IOS7 = /(ipad|iphone|ipod touch);.*os 7_\\d|(ipad|iphone|ipod touch);.*os 8_\\d/i;\nvar REGX_ANDROID = /android/i;\nvar REGX_WINDOWS = /trident|windows phone|edge/i;\nvar REGX_VERSION = /(version)[ /]([\\w.]+)/i;\nvar REGX_BROWSER = {\n OPERA: /(opera|opr)(?:.*version|)[ /]([\\w.]+)/i,\n EDGE: /(edge)(?:.*version|)[ /]([\\w.]+)/i,\n CHROME: /(chrome|crios)[ /]([\\w.]+)/i,\n PANTHOMEJS: /(phantomjs)[ /]([\\w.]+)/i,\n SAFARI: /(safari)[ /]([\\w.]+)/i,\n WEBKIT: /(webkit)[ /]([\\w.]+)/i,\n MSIE: /(msie|trident) ([\\w.]+)/i,\n MOZILLA: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n};\n/* istanbul ignore else */\nif (typeof window !== 'undefined') {\n window.browserDetails = window.browserDetails || {};\n}\n/**\n * Get configuration details for Browser\n *\n * @private\n */\nvar Browser = /** @class */ (function () {\n function Browser() {\n }\n Browser.extractBrowserDetail = function () {\n var browserInfo = { culture: {} };\n var keys = Object.keys(REGX_BROWSER);\n var clientInfo = [];\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n clientInfo = Browser.userAgent.match(REGX_BROWSER[\"\" + key]);\n if (clientInfo) {\n browserInfo.name = (clientInfo[1].toLowerCase() === 'opr' ? 'opera' : clientInfo[1].toLowerCase());\n browserInfo.name = (clientInfo[1].toLowerCase() === 'crios' ? 'chrome' : browserInfo.name);\n browserInfo.version = clientInfo[2];\n browserInfo.culture.name = browserInfo.culture.language = navigator.language;\n if (Browser.userAgent.match(REGX_IE11)) {\n browserInfo.name = 'msie';\n break;\n }\n var version = Browser.userAgent.match(REGX_VERSION);\n if (browserInfo.name === 'safari' && version) {\n browserInfo.version = version[2];\n }\n break;\n }\n }\n return browserInfo;\n };\n /**\n * To get events from the browser\n *\n * @param {string} event - type of event triggered.\n * @returns {string} ?\n */\n Browser.getEvent = function (event) {\n var events = {\n start: {\n isPointer: 'pointerdown', isTouch: 'touchstart', isDevice: 'mousedown'\n },\n move: {\n isPointer: 'pointermove', isTouch: 'touchmove', isDevice: 'mousemove'\n },\n end: {\n isPointer: 'pointerup', isTouch: 'touchend', isDevice: 'mouseup'\n },\n cancel: {\n isPointer: 'pointercancel', isTouch: 'touchcancel', isDevice: 'mouseleave'\n }\n };\n return (Browser.isPointer ? events[\"\" + event].isPointer :\n (Browser.isTouch ? events[\"\" + event].isTouch + (!Browser.isDevice ? ' ' + events[\"\" + event].isDevice : '')\n : events[\"\" + event].isDevice));\n };\n /**\n * To get the Touch start event from browser\n *\n * @returns {string}\n */\n Browser.getTouchStartEvent = function () {\n return Browser.getEvent('start');\n };\n /**\n * To get the Touch end event from browser\n *\n * @returns {string}\n */\n Browser.getTouchEndEvent = function () {\n return Browser.getEvent('end');\n };\n /**\n * To get the Touch move event from browser\n *\n * @returns {string}\n */\n Browser.getTouchMoveEvent = function () {\n return Browser.getEvent('move');\n };\n /**\n * To cancel the touch event from browser\n *\n * @returns {string}\n */\n Browser.getTouchCancelEvent = function () {\n return Browser.getEvent('cancel');\n };\n /**\n * Check whether the browser on the iPad device is Safari or not\n *\n * @returns {boolean}\n */\n Browser.isSafari = function () {\n return (Browser.isDevice && Browser.isIos && Browser.isTouch && typeof window !== 'undefined'\n && window.navigator.userAgent.toLowerCase().indexOf('iphone') === -1\n && window.navigator.userAgent.toLowerCase().indexOf('safari') > -1);\n };\n /**\n * To get the value based on provided key and regX\n *\n * @param {string} key ?\n * @param {RegExp} regX ?\n * @returns {Object} ?\n */\n Browser.getValue = function (key, regX) {\n var browserDetails = typeof window !== 'undefined' ? window.browserDetails : {};\n if (typeof navigator !== 'undefined' && navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 && Browser.isTouch === true && !REGX_BROWSER.CHROME.test(navigator.userAgent)) {\n browserDetails['isIos'] = true;\n browserDetails['isDevice'] = true;\n browserDetails['isTouch'] = true;\n browserDetails['isPointer'] = true;\n }\n if ('undefined' === typeof browserDetails[\"\" + key]) {\n return browserDetails[\"\" + key] = regX.test(Browser.userAgent);\n }\n return browserDetails[\"\" + key];\n };\n Object.defineProperty(Browser, \"userAgent\", {\n get: function () {\n return Browser.uA;\n },\n //Properties\n /**\n * Property specifies the userAgent of the browser. Default userAgent value is based on the browser.\n * Also we can set our own userAgent.\n *\n * @param {string} uA ?\n */\n set: function (uA) {\n Browser.uA = uA;\n window.browserDetails = {};\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"info\", {\n //Read Only Properties\n /**\n * Property is to get the browser information like Name, Version and Language\n *\n * @returns {BrowserInfo} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.info)) {\n return window.browserDetails.info = Browser.extractBrowserDetail();\n }\n return window.browserDetails.info;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIE\", {\n /**\n * Property is to get whether the userAgent is based IE.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIE', REGX_IE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isTouch\", {\n /**\n * Property is to get whether the browser has touch support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isTouch)) {\n return (window.browserDetails.isTouch =\n ('ontouchstart' in window.navigator) ||\n (window &&\n window.navigator &&\n (window.navigator.maxTouchPoints > 0)) || ('ontouchstart' in window));\n }\n return window.browserDetails.isTouch;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isPointer\", {\n /**\n * Property is to get whether the browser has Pointer support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isPointer)) {\n return window.browserDetails.isPointer = ('pointerEnabled' in window.navigator);\n }\n return window.browserDetails.isPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isMSPointer\", {\n /**\n * Property is to get whether the browser has MSPointer support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isMSPointer)) {\n return window.browserDetails.isMSPointer = ('msPointerEnabled' in window.navigator);\n }\n return window.browserDetails.isMSPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isDevice\", {\n /**\n * Property is to get whether the userAgent is device based.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isDevice', REGX_MOBILE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos\", {\n /**\n * Property is to get whether the userAgent is IOS.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIos', REGX_IOS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos7\", {\n /**\n * Property is to get whether the userAgent is Ios7.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIos7', REGX_IOS7);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isAndroid\", {\n /**\n * Property is to get whether the userAgent is Android.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isAndroid', REGX_ANDROID);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWebView\", {\n /**\n * Property is to identify whether application ran in web view.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isWebView)) {\n window.browserDetails.isWebView = !(isUndefined(window.cordova) && isUndefined(window.PhoneGap)\n && isUndefined(window.phonegap) && window.forge !== 'object');\n return window.browserDetails.isWebView;\n }\n return window.browserDetails.isWebView;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWindows\", {\n /**\n * Property is to get whether the userAgent is Windows.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isWindows', REGX_WINDOWS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchStartEvent\", {\n /**\n * Property is to get the touch start event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchStartEvent)) {\n return window.browserDetails.touchStartEvent = Browser.getTouchStartEvent();\n }\n return window.browserDetails.touchStartEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchMoveEvent\", {\n /**\n * Property is to get the touch move event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchMoveEvent)) {\n return window.browserDetails.touchMoveEvent = Browser.getTouchMoveEvent();\n }\n return window.browserDetails.touchMoveEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchEndEvent\", {\n /**\n * Property is to get the touch end event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchEndEvent)) {\n return window.browserDetails.touchEndEvent = Browser.getTouchEndEvent();\n }\n return window.browserDetails.touchEndEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchCancelEvent\", {\n /**\n * Property is to cancel the touch end event.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchCancelEvent)) {\n return window.browserDetails.touchCancelEvent = Browser.getTouchCancelEvent();\n }\n return window.browserDetails.touchCancelEvent;\n },\n enumerable: true,\n configurable: true\n });\n /* istanbul ignore next */\n Browser.uA = typeof navigator !== 'undefined' ? navigator.userAgent : '';\n return Browser;\n}());\nexport { Browser };\n","import { debounce, extend } from './util';\nimport { Browser } from './browser';\n/**\n * EventHandler class provides option to add, remove, clear and trigger events to a HTML DOM element\n * ```html\n *
\n * \n * ```\n */\nvar EventHandler = /** @class */ (function () {\n function EventHandler() {\n }\n // to get the event data based on element\n EventHandler.addOrGetEventData = function (element) {\n if ('__eventList' in element) {\n return element.__eventList.events;\n }\n else {\n element.__eventList = {};\n return element.__eventList.events = [];\n }\n };\n /**\n * Add an event to the specified DOM element.\n *\n * @param {any} element - Target HTML DOM element\n * @param {string} eventName - A string that specifies the name of the event\n * @param {Function} listener - Specifies the function to run when the event occurs\n * @param {Object} bindTo - A object that binds 'this' variable in the event handler\n * @param {number} intDebounce - Specifies at what interval given event listener should be triggered.\n * @returns {Function} ?\n */\n EventHandler.add = function (element, eventName, listener, bindTo, intDebounce) {\n var eventData = EventHandler.addOrGetEventData(element);\n var debounceListener;\n if (intDebounce) {\n debounceListener = debounce(listener, intDebounce);\n }\n else {\n debounceListener = listener;\n }\n if (bindTo) {\n debounceListener = debounceListener.bind(bindTo);\n }\n var event = eventName.split(' ');\n for (var i = 0; i < event.length; i++) {\n eventData.push({\n name: event[parseInt(i.toString(), 10)],\n listener: listener,\n debounce: debounceListener\n });\n if (Browser.isIE) {\n element.addEventListener(event[parseInt(i.toString(), 10)], debounceListener);\n }\n else {\n element.addEventListener(event[parseInt(i.toString(), 10)], debounceListener, { passive: false });\n }\n }\n return debounceListener;\n };\n /**\n * Remove an event listener that has been attached before.\n *\n * @param {any} element - Specifies the target html element to remove the event\n * @param {string} eventName - A string that specifies the name of the event to remove\n * @param {Function} listener - Specifies the function to remove\n * @returns {void} ?\n */\n EventHandler.remove = function (element, eventName, listener) {\n var eventData = EventHandler.addOrGetEventData(element);\n var event = eventName.split(' ');\n var _loop_1 = function (j) {\n var index = -1;\n var debounceListener;\n if (eventData && eventData.length !== 0) {\n eventData.some(function (x, i) {\n return x.name === event[parseInt(j.toString(), 10)] && x.listener === listener ?\n (index = i, debounceListener = x.debounce, true) : false;\n });\n }\n if (index !== -1) {\n eventData.splice(index, 1);\n }\n if (debounceListener) {\n element.removeEventListener(event[parseInt(j.toString(), 10)], debounceListener);\n }\n };\n for (var j = 0; j < event.length; j++) {\n _loop_1(j);\n }\n };\n /**\n * Clear all the event listeners that has been previously attached to the element.\n *\n * @param {any} element - Specifies the target html element to clear the events\n * @returns {void} ?\n */\n EventHandler.clearEvents = function (element) {\n var eventData = EventHandler.addOrGetEventData(element);\n var copyData = extend([], undefined, eventData);\n for (var i = 0; i < copyData.length; i++) {\n var parseValue = copyData[parseInt(i.toString(), 10)];\n element.removeEventListener(parseValue.name, parseValue.debounce);\n eventData.shift();\n }\n };\n /**\n * Trigger particular event of the element.\n *\n * @param {any} element - Specifies the target html element to trigger the events\n * @param {string} eventName - Specifies the event to trigger for the specified element.\n * Can be a custom event, or any of the standard events.\n * @param {any} eventProp - Additional parameters to pass on to the event properties\n * @returns {void} ?\n */\n EventHandler.trigger = function (element, eventName, eventProp) {\n var eventData = EventHandler.addOrGetEventData(element);\n for (var _i = 0, eventData_1 = eventData; _i < eventData_1.length; _i++) {\n var event_1 = eventData_1[_i];\n if (event_1.name === eventName) {\n event_1.debounce.call(this, eventProp);\n }\n }\n };\n return EventHandler;\n}());\nexport { EventHandler };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Functions related to dom operations.\n */\nimport { EventHandler } from './event-handler';\nimport { isNullOrUndefined, getValue, setValue, isObject, extend } from './util';\nvar SVG_REG = /^svg|^path|^g/;\n/**\n * Function to create Html element.\n *\n * @param {string} tagName - Name of the tag, id and class names.\n * @param {ElementProperties} properties - Object to set properties in the element.\n * @param {ElementProperties} properties.id - To set the id to the created element.\n * @param {ElementProperties} properties.className - To add classes to the element.\n * @param {ElementProperties} properties.innerHTML - To set the innerHTML to element.\n * @param {ElementProperties} properties.styles - To set the some custom styles to element.\n * @param {ElementProperties} properties.attrs - To set the attributes to element.\n * @returns {any} ?\n * @private\n */\nexport function createElement(tagName, properties) {\n var element = (SVG_REG.test(tagName) ? document.createElementNS('http://www.w3.org/2000/svg', tagName) : document.createElement(tagName));\n if (typeof (properties) === 'undefined') {\n return element;\n }\n element.innerHTML = (properties.innerHTML ? properties.innerHTML : '');\n if (properties.className !== undefined) {\n element.className = properties.className;\n }\n if (properties.id !== undefined) {\n element.id = properties.id;\n }\n if (properties.styles !== undefined) {\n element.setAttribute('style', properties.styles);\n }\n if (properties.attrs !== undefined) {\n attributes(element, properties.attrs);\n }\n return element;\n}\n/**\n * The function used to add the classes to array of elements\n *\n * @param {Element[]|NodeList} elements - An array of elements that need to add a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @returns {any} .\n * @private\n */\nexport function addClass(elements, classes) {\n var classList = getClassList(classes);\n var regExp = RegExp;\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n for (var _b = 0, classList_1 = classList; _b < classList_1.length; _b++) {\n var className = classList_1[_b];\n if (isObject(ele)) {\n var curClass = getValue('attributes.className', ele);\n if (isNullOrUndefined(curClass)) {\n setValue('attributes.className', className, ele);\n }\n else if (!new regExp('\\\\b' + className + '\\\\b', 'i').test(curClass)) {\n setValue('attributes.className', curClass + ' ' + className, ele);\n }\n }\n else {\n if (!ele.classList.contains(className)) {\n ele.classList.add(className);\n }\n }\n }\n }\n return elements;\n}\n/**\n * The function used to add the classes to array of elements\n *\n * @param {Element[]|NodeList} elements - An array of elements that need to remove a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @returns {any} .\n * @private\n */\nexport function removeClass(elements, classes) {\n var classList = getClassList(classes);\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n var flag = isObject(ele);\n var canRemove = flag ? getValue('attributes.className', ele) : ele.className !== '';\n if (canRemove) {\n for (var _b = 0, classList_2 = classList; _b < classList_2.length; _b++) {\n var className = classList_2[_b];\n if (flag) {\n var classes_1 = getValue('attributes.className', ele);\n var classArr = classes_1.split(' ');\n var index = classArr.indexOf(className);\n if (index !== -1) {\n classArr.splice(index, 1);\n }\n setValue('attributes.className', classArr.join(' '), ele);\n }\n else {\n ele.classList.remove(className);\n }\n }\n }\n }\n return elements;\n}\n/**\n * The function used to get classlist.\n *\n * @param {string | string[]} classes - An element the need to check visibility\n * @returns {string[]} ?\n * @private\n */\nfunction getClassList(classes) {\n var classList = [];\n if (typeof classes === 'string') {\n classList.push(classes);\n }\n else {\n classList = classes;\n }\n return classList;\n}\n/**\n * The function used to check element is visible or not.\n *\n * @param {Element|Node} element - An element the need to check visibility\n * @returns {boolean} ?\n * @private\n */\nexport function isVisible(element) {\n var ele = element;\n return (ele.style.visibility === '' && ele.offsetWidth > 0);\n}\n/**\n * The function used to insert an array of elements into a first of the element.\n *\n * @param {Element[]|NodeList} fromElements - An array of elements that need to prepend.\n * @param {Element} toElement - An element that is going to prepend.\n * @param {boolean} isEval - ?\n * @returns {Element[] | NodeList} ?\n * @private\n */\nexport function prepend(fromElements, toElement, isEval) {\n var docFrag = document.createDocumentFragment();\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n toElement.insertBefore(docFrag, toElement.firstElementChild);\n if (isEval) {\n executeScript(toElement);\n }\n return fromElements;\n}\n/**\n * The function used to insert an array of elements into last of the element.\n *\n * @param {Element[]|NodeList} fromElements - An array of elements that need to append.\n * @param {Element} toElement - An element that is going to prepend.\n * @param {boolean} isEval - ?\n * @returns {Element[] | NodeList} ?\n * @private\n */\nexport function append(fromElements, toElement, isEval) {\n var docFrag = document.createDocumentFragment();\n if (fromElements instanceof NodeList) {\n while (fromElements.length > 0) {\n docFrag.appendChild(fromElements[0]);\n }\n }\n else {\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n }\n toElement.appendChild(docFrag);\n if (isEval) {\n executeScript(toElement);\n }\n return fromElements;\n}\n/**\n * The function is used to evaluate script from Ajax request\n *\n * @param {Element} ele - An element is going to evaluate the script\n * @returns {void} ?\n */\nfunction executeScript(ele) {\n var eleArray = ele.querySelectorAll('script');\n eleArray.forEach(function (element) {\n var script = document.createElement('script');\n script.text = element.innerHTML;\n document.head.appendChild(script);\n detach(script);\n });\n}\n/**\n * The function used to remove the element from parentnode\n *\n * @param {Element|Node|HTMLElement} element - An element that is going to detach from the Dom\n * @returns {any} ?\n * @private\n */\nexport function detach(element) {\n var parentNode = element.parentNode;\n if (parentNode) {\n return parentNode.removeChild(element);\n }\n}\n/**\n * The function used to remove the element from Dom also clear the bounded events\n *\n * @param {Element|Node|HTMLElement} element - An element remove from the Dom\n * @returns {void} ?\n * @private\n */\nexport function remove(element) {\n var parentNode = element.parentNode;\n EventHandler.clearEvents(element);\n parentNode.removeChild(element);\n}\n/**\n * The function helps to set multiple attributes to an element\n *\n * @param {Element|Node} element - An element that need to set attributes.\n * @param {string} attributes - JSON Object that is going to as attributes.\n * @returns {Element} ?\n * @private\n */\nexport function attributes(element, attributes) {\n var keys = Object.keys(attributes);\n var ele = element;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (isObject(ele)) {\n var iKey = key;\n if (key === 'tabindex') {\n iKey = 'tabIndex';\n }\n ele.attributes[\"\" + iKey] = attributes[\"\" + key];\n }\n else {\n ele.setAttribute(key, attributes[\"\" + key]);\n }\n }\n return ele;\n}\n/**\n * The function selects the element from giving context.\n *\n * @param {string} selector - Selector string need fetch element\n * @param {Document|Element} context - It is an optional type, That specifies a Dom context.\n * @param {boolean} needsVDOM ?\n * @returns {any} ?\n * @private\n */\nexport function select(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n selector = querySelectId(selector);\n return context.querySelector(selector);\n}\n/**\n * The function selects an array of element from the given context.\n *\n * @param {string} selector - Selector string need fetch element\n * @param {Document|Element} context - It is an optional type, That specifies a Dom context.\n * @param {boolean} needsVDOM ?\n * @returns {HTMLElement[]} ?\n * @private\n */\nexport function selectAll(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n selector = querySelectId(selector);\n var nodeList = context.querySelectorAll(selector);\n return nodeList;\n}\n/**\n * The function selects an id of element from the given context.\n *\n * @param {string} selector - Selector string need fetch element\n * @returns {string} ?\n * @private\n */\nfunction querySelectId(selector) {\n var charRegex = /(!|\"|\\$|%|&|'|\\(|\\)|\\*|\\/|:|;|<|=|\\?|@|\\]|\\^|`|{|}|\\||\\+|~)/g;\n if (selector.match(/#[0-9]/g) || selector.match(charRegex)) {\n var idList = selector.split(',');\n for (var i = 0; i < idList.length; i++) {\n var list = idList[parseInt(i.toString(), 10)].split(' ');\n for (var j = 0; j < list.length; j++) {\n if (list[parseInt(j.toString(), 10)].indexOf('#') > -1) {\n if (!list[parseInt(j.toString(), 10)].match(/\\[.*\\]/)) {\n var splitId = list[parseInt(j.toString(), 10)].split('#');\n if (splitId[1].match(/^\\d/) || splitId[1].match(charRegex)) {\n var setId = list[parseInt(j.toString(), 10)].split('.');\n setId[0] = setId[0].replace(/#/, '[id=\\'') + '\\']';\n list[parseInt(j.toString(), 10)] = setId.join('.');\n }\n }\n }\n }\n idList[parseInt(i.toString(), 10)] = list.join(' ');\n }\n return idList.join(',');\n }\n return selector;\n}\n/**\n * Returns single closest parent element based on class selector.\n *\n * @param {Element} element - An element that need to find the closest element.\n * @param {string} selector - A classSelector of closest element.\n * @returns {Element} ?\n * @private\n */\nexport function closest(element, selector) {\n var el = element;\n if (typeof el.closest === 'function') {\n return el.closest(selector);\n }\n while (el && el.nodeType === 1) {\n if (matches(el, selector)) {\n return el;\n }\n el = el.parentNode;\n }\n return null;\n}\n/**\n * Returns all sibling elements of the given element.\n *\n * @param {Element|Node} element - An element that need to get siblings.\n * @returns {Element[]} ?\n * @private\n */\nexport function siblings(element) {\n var siblings = [];\n var childNodes = Array.prototype.slice.call(element.parentNode.childNodes);\n for (var _i = 0, childNodes_1 = childNodes; _i < childNodes_1.length; _i++) {\n var curNode = childNodes_1[_i];\n if (curNode.nodeType === Node.ELEMENT_NODE && element !== curNode) {\n siblings.push(curNode);\n }\n }\n return siblings;\n}\n/**\n * set the value if not exist. Otherwise set the existing value\n *\n * @param {HTMLElement} element - An element to which we need to set value.\n * @param {string} property - Property need to get or set.\n * @param {string} value - value need to set.\n * @returns {string} ?\n * @private\n */\nexport function getAttributeOrDefault(element, property, value) {\n var attrVal;\n var isObj = isObject(element);\n if (isObj) {\n attrVal = getValue('attributes.' + property, element);\n }\n else {\n attrVal = element.getAttribute(property);\n }\n if (isNullOrUndefined(attrVal) && value) {\n if (!isObj) {\n element.setAttribute(property, value.toString());\n }\n else {\n element.attributes[\"\" + property] = value;\n }\n attrVal = value;\n }\n return attrVal;\n}\n/**\n * Set the style attributes to Html element.\n *\n * @param {HTMLElement} element - Element which we want to set attributes\n * @param {any} attrs - Set the given attributes to element\n * @returns {void} ?\n * @private\n */\nexport function setStyleAttribute(element, attrs) {\n if (attrs !== undefined) {\n Object.keys(attrs).forEach(function (key) {\n element.style[\"\" + key] = attrs[\"\" + key];\n });\n }\n}\n/**\n * Method for add and remove classes to a dom element.\n *\n * @param {Element} element - Element for add and remove classes\n * @param {string[]} addClasses - List of classes need to be add to the element\n * @param {string[]} removeClasses - List of classes need to be remove from the element\n * @returns {void} ?\n * @private\n */\nexport function classList(element, addClasses, removeClasses) {\n addClass([element], addClasses);\n removeClass([element], removeClasses);\n}\n/**\n * Method to check whether the element matches the given selector.\n *\n * @param {Element} element - Element to compare with the selector.\n * @param {string} selector - String selector which element will satisfy.\n * @returns {void} ?\n * @private\n */\nexport function matches(element, selector) {\n var matches = element.matches || element.msMatchesSelector || element.webkitMatchesSelector;\n if (matches) {\n return matches.call(element, selector);\n }\n else {\n return [].indexOf.call(document.querySelectorAll(selector), element) !== -1;\n }\n}\n/**\n * Method to get the html text from DOM.\n *\n * @param {HTMLElement} ele - Element to compare with the selector.\n * @param {string} innerHTML - String selector which element will satisfy.\n * @returns {void} ?\n * @private\n */\nexport function includeInnerHTML(ele, innerHTML) {\n ele.innerHTML = innerHTML;\n}\n/**\n * Method to get the containsclass.\n *\n * @param {HTMLElement} ele - Element to compare with the selector.\n * @param {string} className - String selector which element will satisfy.\n * @returns {any} ?\n * @private\n */\nexport function containsClass(ele, className) {\n if (isObject(ele)) {\n var regExp = RegExp;\n return new regExp('\\\\b' + className + '\\\\b', 'i').test(ele.attributes.className);\n }\n else {\n return ele.classList.contains(className);\n }\n}\n/**\n * Method to check whether the element matches the given selector.\n *\n * @param {Object} element - Element to compare with the selector.\n * @param {boolean} deep ?\n * @returns {any} ?\n * @private\n */\nexport function cloneNode(element, deep) {\n if (isObject(element)) {\n if (deep) {\n return extend({}, {}, element, true);\n }\n }\n else {\n return element.cloneNode(deep);\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isUndefined, isNullOrUndefined, merge, setImmediate, setValue, isBlazor, getValue, extend } from './util';\nimport { addClass, removeClass } from './dom';\nimport { Observer } from './observer';\nvar isColEName = new RegExp(']');\n/**\n * Base library module is common module for Framework modules like touch,keyboard and etc.,\n *\n * @private\n * @returns {void} ?\n */\nvar Base = /** @class */ (function () {\n /**\n * Base constructor accept options and element\n *\n * @param {Object} options ?\n * @param {string} element ?\n */\n function Base(options, element) {\n this.isRendered = false;\n this.isComplexArraySetter = false;\n this.isServerRendered = false;\n this.allowServerDataBinding = true;\n this.isProtectedOnChange = true;\n this.properties = {};\n this.changedProperties = {};\n this.oldProperties = {};\n this.bulkChanges = {};\n this.refreshing = false;\n this.ignoreCollectionWatch = false;\n this.finalUpdate = function () { };\n this.childChangedProperties = {};\n this.modelObserver = new Observer(this);\n if (!isUndefined(element)) {\n if ('string' === typeof (element)) {\n this.element = document.querySelector(element);\n }\n else {\n this.element = element;\n }\n if (!isNullOrUndefined(this.element)) {\n this.isProtectedOnChange = false;\n this.addInstance();\n }\n }\n if (!isUndefined(options)) {\n this.setProperties(options, true);\n }\n this.isDestroyed = false;\n }\n /** Property base section */\n /**\n * Function used to set bunch of property at a time.\n *\n * @private\n * @param {Object} prop - JSON object which holds components properties.\n * @param {boolean} muteOnChange ? - Specifies to true when we set properties.\n * @returns {void} ?\n */\n Base.prototype.setProperties = function (prop, muteOnChange) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = !!muteOnChange;\n merge(this, prop);\n if (muteOnChange !== true) {\n merge(this.changedProperties, prop);\n this.dataBind();\n }\n else if (isBlazor() && this.isRendered) {\n this.serverDataBind(prop);\n }\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.isProtectedOnChange = prevDetection;\n };\n /**\n * Calls for child element data bind\n *\n * @param {Object} obj ?\n * @param {Object} parent ?\n * @returns {void} ?\n */\n Base.callChildDataBind = function (obj, parent) {\n var keys = Object.keys(obj);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (parent[\"\" + key] instanceof Array) {\n for (var _a = 0, _b = parent[\"\" + key]; _a < _b.length; _a++) {\n var obj_1 = _b[_a];\n if (obj_1.dataBind !== undefined) {\n obj_1.dataBind();\n }\n }\n }\n else {\n parent[\"\" + key].dataBind();\n }\n }\n };\n Base.prototype.clearChanges = function () {\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.childChangedProperties = {};\n };\n /**\n * Bind property changes immediately to components\n *\n * @returns {void} ?\n */\n Base.prototype.dataBind = function () {\n Base.callChildDataBind(this.childChangedProperties, this);\n if (Object.getOwnPropertyNames(this.changedProperties).length) {\n var prevDetection = this.isProtectedOnChange;\n var newChanges = this.changedProperties;\n var oldChanges = this.oldProperties;\n this.clearChanges();\n this.isProtectedOnChange = true;\n this.onPropertyChanged(newChanges, oldChanges);\n this.isProtectedOnChange = prevDetection;\n }\n };\n Base.prototype.serverDataBind = function (newChanges) {\n if (!isBlazor()) {\n return;\n }\n newChanges = newChanges ? newChanges : {};\n extend(this.bulkChanges, {}, newChanges, true);\n var sfBlazor = 'sfBlazor';\n if (this.allowServerDataBinding && window[\"\" + sfBlazor].updateModel) {\n window[\"\" + sfBlazor].updateModel(this);\n this.bulkChanges = {};\n }\n };\n Base.prototype.saveChanges = function (key, newValue, oldValue) {\n if (isBlazor()) {\n var newChanges = {};\n newChanges[\"\" + key] = newValue;\n this.serverDataBind(newChanges);\n }\n if (this.isProtectedOnChange) {\n return;\n }\n this.oldProperties[\"\" + key] = oldValue;\n this.changedProperties[\"\" + key] = newValue;\n this.finalUpdate();\n this.finalUpdate = setImmediate(this.dataBind.bind(this));\n };\n /** Event Base Section */\n /**\n * Adds the handler to the given event listener.\n *\n * @param {string} eventName - A String that specifies the name of the event\n * @param {Function} handler - Specifies the call to run when the event occurs.\n * @returns {void} ?\n */\n Base.prototype.addEventListener = function (eventName, handler) {\n this.modelObserver.on(eventName, handler);\n };\n /**\n * Removes the handler from the given event listener.\n *\n * @param {string} eventName - A String that specifies the name of the event to remove\n * @param {Function} handler - Specifies the function to remove\n * @returns {void} ?\n */\n Base.prototype.removeEventListener = function (eventName, handler) {\n this.modelObserver.off(eventName, handler);\n };\n /**\n * Triggers the handlers in the specified event.\n *\n * @private\n * @param {string} eventName - Specifies the event to trigger for the specified component properties.\n * Can be a custom event, or any of the standard events.\n * @param {Event} eventProp - Additional parameters to pass on to the event properties\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it failured to call.\n * @returns {void} ?\n */\n Base.prototype.trigger = function (eventName, eventProp, successHandler, errorHandler) {\n var _this = this;\n if (this.isDestroyed !== true) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = false;\n var data = this.modelObserver.notify(eventName, eventProp, successHandler, errorHandler);\n if (isColEName.test(eventName)) {\n var handler = getValue(eventName, this);\n if (handler) {\n var blazor = 'Blazor';\n if (window[\"\" + blazor]) {\n var promise = handler.call(this, eventProp);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n data = promise;\n }\n else {\n promise.then(function (data) {\n if (successHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ?\n JSON.parse(data) : data;\n successHandler.call(_this, data);\n }\n }).catch(function (data) {\n if (errorHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ? JSON.parse(data) : data;\n errorHandler.call(_this, data);\n }\n });\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n else {\n handler.call(this, eventProp);\n if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n this.isProtectedOnChange = prevDetection;\n return data;\n }\n };\n /**\n * To maintain instance in base class\n *\n * @returns {void} ?\n */\n Base.prototype.addInstance = function () {\n // Add module class to the root element\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-lib', moduleClass]);\n if (!isNullOrUndefined(this.element.ej2_instances)) {\n this.element.ej2_instances.push(this);\n }\n else {\n setValue('ej2_instances', [this], this.element);\n }\n };\n /**\n * To remove the instance from the element\n *\n * @returns {void} ?\n */\n Base.prototype.destroy = function () {\n var _this = this;\n // eslint-disable-next-line camelcase\n this.element.ej2_instances =\n this.element.ej2_instances ?\n this.element.ej2_instances.filter(function (i) {\n if (proxyToRaw) {\n return proxyToRaw(i) !== proxyToRaw(_this);\n }\n return i !== _this;\n })\n : [];\n removeClass([this.element], ['e-' + this.getModuleName()]);\n if (this.element.ej2_instances.length === 0) {\n // Remove module class from the root element\n removeClass([this.element], ['e-lib']);\n }\n this.clearChanges();\n this.modelObserver.destroy();\n this.isDestroyed = true;\n };\n return Base;\n}());\nexport { Base };\n/**\n * Global function to get the component instance from the rendered element.\n *\n * @param {HTMLElement} elem Specifies the HTMLElement or element id string.\n * @param {string} comp Specifies the component module name or Component.\n * @returns {any} ?\n */\nexport function getComponent(elem, comp) {\n var instance;\n var i;\n var ele = typeof elem === 'string' ? document.getElementById(elem) : elem;\n for (i = 0; i < ele.ej2_instances.length; i++) {\n instance = ele.ej2_instances[parseInt(i.toString(), 10)];\n if (typeof comp === 'string') {\n var compName = instance.getModuleName();\n if (comp === compName) {\n return instance;\n }\n }\n else {\n if (instance instanceof comp) {\n return instance;\n }\n }\n }\n return undefined;\n}\n/**\n * Function to remove the child instances.\n *\n * @param {HTMLElement} element ?\n * @returns {void} ?\n * @private\n */\nexport function removeChildInstance(element) {\n var childEle = [].slice.call(element.getElementsByClassName('e-control'));\n for (var i = 0; i < childEle.length; i++) {\n var compName = childEle[parseInt(i.toString(), 10)].classList[1].split('e-')[1];\n var compInstance = getComponent(childEle[parseInt(i.toString(), 10)], compName);\n if (!isUndefined(compInstance)) {\n compInstance.destroy();\n }\n }\n}\nexport var proxyToRaw;\nexport var setProxyToRaw = function (toRaw) { proxyToRaw = toRaw; };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { createInstance, isUndefined, merge, extend, getValue } from './util';\n/**\n * Returns the Class Object\n *\n * @param {ClassObject} instance - instance of ClassObject\n * @param {string} curKey - key of the current instance\n * @param {Object} defaultValue - default Value\n * @param {Object[]} type ?\n * @returns {ClassObject} ?\n */\nfunction getObject(instance, curKey, defaultValue, type) {\n if (!Object.prototype.hasOwnProperty.call(instance.properties, curKey) || !(instance.properties[\"\" + curKey] instanceof type)) {\n instance.properties[\"\" + curKey] = createInstance(type, [instance, curKey, defaultValue]);\n }\n return instance.properties[\"\" + curKey];\n}\n/**\n * Returns object array\n *\n * @param {ClassObject} instance ?\n * @param {string} curKey ?\n * @param {Object[]} defaultValue ?\n * @param {Object} type ?\n * @param {boolean} isSetter ?\n * @param {boolean} isFactory ?\n * @returns {Object[]} ?\n */\nfunction getObjectArray(instance, curKey, defaultValue, type, isSetter, isFactory) {\n var result = [];\n var len = defaultValue ? defaultValue.length : 0;\n for (var i = 0; i < len; i++) {\n var curType = type;\n if (isFactory) {\n curType = type(defaultValue[parseInt(i.toString(), 10)], instance);\n }\n if (isSetter) {\n var inst = createInstance(curType, [instance, curKey, {}, true]);\n inst.setProperties(defaultValue[parseInt(i.toString(), 10)], true);\n result.push(inst);\n }\n else {\n result.push(createInstance(curType, [instance, curKey, defaultValue[parseInt(i.toString(), 10)], false]));\n }\n }\n return result;\n}\n/**\n * Returns the properties of the object\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @returns {void} ?\n */\nfunction propertyGetter(defaultValue, curKey) {\n return function () {\n if (!Object.prototype.hasOwnProperty.call(this.properties, curKey)) {\n this.properties[\"\" + curKey] = defaultValue;\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n * Set the properties for the object\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @returns {void} ?\n */\nfunction propertySetter(defaultValue, curKey) {\n return function (newValue) {\n if (this.properties[\"\" + curKey] !== newValue) {\n var oldVal = Object.prototype.hasOwnProperty.call(this.properties, curKey) ? this.properties[\"\" + curKey] : defaultValue;\n this.saveChanges(curKey, newValue, oldVal);\n this.properties[\"\" + curKey] = newValue;\n }\n };\n}\n/**\n * Returns complex objects\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexGetter(defaultValue, curKey, type) {\n return function () {\n return getObject(this, curKey, defaultValue, type);\n };\n}\n/**\n * Sets complex objects\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexSetter(defaultValue, curKey, type) {\n return function (newValue) {\n getObject(this, curKey, defaultValue, type).setProperties(newValue);\n };\n}\n/**\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {FunctionConstructor} type ?\n * @returns {void} ?\n */\nfunction complexFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n if (Object.prototype.hasOwnProperty.call(this.properties, curKey)) {\n return this.properties[\"\" + curKey];\n }\n else {\n return getObject(this, curKey, defaultValue, curType);\n }\n };\n}\n/**\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n var curType = type(newValue, this);\n getObject(this, curKey, defaultValue, curType).setProperties(newValue);\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArrayGetter(defaultValue, curKey, type) {\n return function () {\n var _this = this;\n if (!Object.prototype.hasOwnProperty.call(this.properties, curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, type, false);\n this.properties[\"\" + curKey] = defCollection;\n }\n var ignore = ((this.controlParent !== undefined && this.controlParent.ignoreCollectionWatch)\n || this.ignoreCollectionWatch);\n if (!Object.prototype.hasOwnProperty.call(this.properties[\"\" + curKey], 'push') && !ignore) {\n ['push', 'pop'].forEach(function (extendFunc) {\n var descriptor = {\n value: complexArrayDefinedCallback(extendFunc, curKey, type, _this.properties[\"\" + curKey]).bind(_this),\n configurable: true\n };\n Object.defineProperty(_this.properties[\"\" + curKey], extendFunc, descriptor);\n });\n }\n if (!Object.prototype.hasOwnProperty.call(this.properties[\"\" + curKey], 'isComplexArray')) {\n Object.defineProperty(this.properties[\"\" + curKey], 'isComplexArray', { value: true });\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArraySetter(defaultValue, curKey, type) {\n return function (newValue) {\n this.isComplexArraySetter = true;\n var oldValueCollection = getObjectArray(this, curKey, defaultValue, type, false);\n var newValCollection = getObjectArray(this, curKey, newValue, type, true);\n this.isComplexArraySetter = false;\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[\"\" + curKey] = newValCollection;\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArrayFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n var oldValueCollection = Object.prototype.hasOwnProperty.call(this.properties, curKey) ? this.properties[\"\" + curKey] : defaultValue;\n var newValCollection = getObjectArray(this, curKey, newValue, type, true, true);\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[\"\" + curKey] = newValCollection;\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {FunctionConstructor} type ?\n * @returns {void} ?\n */\nfunction complexArrayFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n if (!Object.prototype.hasOwnProperty.call(this.properties, curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, curType, false);\n this.properties[\"\" + curKey] = defCollection;\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n *\n * @param {string} dFunc ?\n * @param {string} curKey ?\n * @param {Object} type ?\n * @param {Object} prop ?\n * @returns {Object} ?\n */\nfunction complexArrayDefinedCallback(dFunc, curKey, type, prop) {\n return function () {\n var newValue = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newValue[_i] = arguments[_i];\n }\n var keyString = this.propName ? this.getParentKey() + '.' + curKey + '-' : curKey + '-';\n switch (dFunc) {\n case 'push':\n for (var i = 0; i < newValue.length; i++) {\n var newValueParse = newValue[parseInt(i.toString(), 10)];\n Array.prototype[\"\" + dFunc].apply(prop, [newValueParse]);\n var model = getArrayModel(keyString + (prop.length - 1), newValueParse, !this.controlParent, dFunc);\n this.serverDataBind(model, newValue[parseInt(i.toString(), 10)], false, dFunc);\n }\n break;\n case 'pop': {\n Array.prototype[\"\" + dFunc].apply(prop);\n var model = getArrayModel(keyString + prop.length, null, !this.controlParent, dFunc);\n this.serverDataBind(model, { ejsAction: 'pop' }, false, dFunc);\n break;\n }\n }\n return prop;\n };\n}\n/**\n *\n * @param {string} keyString ?\n * @param {Object} value ?\n * @param {boolean} isControlParent ?\n * @param {string} arrayFunction ?\n * @returns {Object} ?\n */\nfunction getArrayModel(keyString, value, isControlParent, arrayFunction) {\n var modelObject = keyString;\n if (isControlParent) {\n modelObject = {};\n modelObject[\"\" + keyString] = value;\n if (value && typeof value === 'object') {\n var action = 'ejsAction';\n modelObject[\"\" + keyString][\"\" + action] = arrayFunction;\n }\n }\n return modelObject;\n}\n/**\n * Method used to create property. General syntax below.\n *\n * @param {Object} defaultValue - Specifies the default value of property.\n * @returns {PropertyDecorator} ?\n * @private\n */\nexport function Property(defaultValue) {\n return function (target, key) {\n var propertyDescriptor = {\n set: propertySetter(defaultValue, key),\n get: propertyGetter(defaultValue, key),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'prop', defaultValue);\n };\n}\n/**\n * Method used to create complex property. General syntax below.\n *\n * @param {any} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @Complex({},Type)\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Complex(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexSetter(defaultValue, key, type),\n get: complexGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex Factory property. General syntax below.\n *\n * @param {Function} type - Specifies the class factory type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @ComplexFactory(defaultType, factoryFunction)\n * propertyName: Type1 | Type2;\n * ```\n * @private\n */\nexport function ComplexFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexFactorySetter({}, key, type),\n get: complexFactoryGetter({}, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', {}, type);\n };\n}\n/**\n * Method used to create complex array property. General syntax below.\n *\n * @param {any} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Collection(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArraySetter(defaultValue, key, type),\n get: complexArrayGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex factory array property. General syntax below.\n *\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyCollectionInfo} ?\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function CollectionFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArrayFactorySetter([], key, type),\n get: complexArrayFactoryGetter([], key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', {}, type);\n };\n}\n/**\n * Method used to create event property. General syntax below.\n *\n * @returns {PropertyDecorator} ?\n * ```\n * @Event(()=>{return true;})\n * ```\n * @private\n */\nexport function Event() {\n return function (target, key) {\n var eventDescriptor = {\n set: function (newValue) {\n var oldValue = this.properties[\"\" + key];\n if (oldValue !== newValue) {\n var finalContext = getParentContext(this, key);\n if (isUndefined(oldValue) === false) {\n finalContext.context.removeEventListener(finalContext.prefix, oldValue);\n }\n finalContext.context.addEventListener(finalContext.prefix, newValue);\n this.properties[\"\" + key] = newValue;\n }\n },\n get: propertyGetter(undefined, key),\n enumerable: true,\n configurable: true\n };\n Object.defineProperty(target, key, eventDescriptor);\n addPropertyCollection(target, key, 'event');\n };\n}\n/**\n * NotifyPropertyChanges is triggers the call back when the property has been changed.\n *\n * @param {Function} classConstructor ?\n * @returns {void} ?\n * @private\n */\nexport function NotifyPropertyChanges(classConstructor) {\n /** Need to code */\n}\n/**\n * Method used to create the builderObject for the target component.\n *\n * @param {BuildInfo} target ?\n * @param {string} key ?\n * @param {string} propertyType ?\n * @param {Object} defaultValue ?\n * @param {Function} type ?\n * @returns {void} ?\n * @private\n */\nfunction addPropertyCollection(target, key, propertyType, defaultValue, type) {\n if (isUndefined(target.propList)) {\n target.propList = {\n props: [],\n complexProps: [],\n colProps: [],\n events: [],\n propNames: [],\n complexPropNames: [],\n colPropNames: [],\n eventNames: []\n };\n }\n target.propList[propertyType + 's'].push({\n propertyName: key,\n defaultValue: defaultValue,\n type: type\n });\n target.propList[propertyType + 'Names'].push(key);\n}\n/**\n * Returns an object containing the builder properties\n *\n * @param {Function} component ?\n * @returns {Object} ?\n * @private\n */\nfunction getBuilderProperties(component) {\n if (isUndefined(component.prototype.builderObject)) {\n component.prototype.builderObject = {\n properties: {}, propCollections: [], add: function () {\n this.isPropertyArray = true;\n this.propCollections.push(extend({}, this.properties, {}));\n }\n };\n var rex = /complex/;\n for (var _i = 0, _a = Object.keys(component.prototype.propList); _i < _a.length; _i++) {\n var key = _a[_i];\n var _loop_1 = function (prop) {\n if (rex.test(key)) {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n var childType = {};\n merge(childType, getBuilderProperties(prop.type));\n value(childType);\n var tempValue;\n if (!childType.isPropertyArray) {\n tempValue = extend({}, childType.properties, {});\n }\n else {\n tempValue = childType.propCollections;\n }\n this.properties[prop.propertyName] = tempValue;\n childType.properties = {};\n childType.propCollections = [];\n childType.isPropertyArray = false;\n return this;\n };\n }\n else {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n this.properties[prop.propertyName] = value;\n return this;\n };\n }\n };\n for (var _b = 0, _c = component.prototype.propList[\"\" + key]; _b < _c.length; _b++) {\n var prop = _c[_b];\n _loop_1(prop);\n }\n }\n }\n return component.prototype.builderObject;\n}\n/**\n * Method used to create builder for the components\n *\n * @param {any} component -specifies the target component for which builder to be created.\n * @returns {Object} ?\n * @private\n */\nexport function CreateBuilder(component) {\n var builderFunction = function (element) {\n this.element = element;\n return this;\n };\n var instanceFunction = function (element) {\n if (!Object.prototype.hasOwnProperty.call(builderFunction, 'create')) {\n builderFunction.prototype = getBuilderProperties(component);\n builderFunction.prototype.create = function () {\n var temp = extend({}, {}, this.properties);\n this.properties = {};\n return new component(temp, this.element);\n };\n }\n return new builderFunction(element);\n };\n return instanceFunction;\n}\n/**\n * Returns parent options for the object\n *\n * @param {Object} context ?\n * @param {string} prefix ?\n * @returns {ParentOption} ?\n * @private\n */\nfunction getParentContext(context, prefix) {\n if (Object.prototype.hasOwnProperty.call(context, 'parentObj') === false) {\n return { context: context, prefix: prefix };\n }\n else {\n var curText = getValue('propName', context);\n if (curText) {\n prefix = curText + '-' + prefix;\n }\n return getParentContext(getValue('parentObj', context), prefix);\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { createElement, selectAll, closest } from './dom';\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { EventHandler } from './event-handler';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\n/**\n * The Animation framework provide options to animate the html DOM elements\n * ```typescript\n * let animeObject = new Animation({\n * name: 'SlideLeftIn',\n * duration: 1000\n * });\n * animeObject.animate('#anime1');\n * animeObject.animate('#anime2', { duration: 500 });\n * ```\n */\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation(options) {\n var _this = _super.call(this, options, undefined) || this;\n /**\n * @private\n */\n _this.easing = {\n ease: 'cubic-bezier(0.250, 0.100, 0.250, 1.000)',\n linear: 'cubic-bezier(0.250, 0.250, 0.750, 0.750)',\n easeIn: 'cubic-bezier(0.420, 0.000, 1.000, 1.000)',\n easeOut: 'cubic-bezier(0.000, 0.000, 0.580, 1.000)',\n easeInOut: 'cubic-bezier(0.420, 0.000, 0.580, 1.000)',\n elasticInOut: 'cubic-bezier(0.5,-0.58,0.38,1.81)',\n elasticIn: 'cubic-bezier(0.17,0.67,0.59,1.81)',\n elasticOut: 'cubic-bezier(0.7,-0.75,0.99,1.01)'\n };\n return _this;\n }\n Animation_1 = Animation;\n /**\n * Applies animation to the current element.\n *\n * @param {string | HTMLElement} element - Element which needs to be animated.\n * @param {AnimationModel} options - Overriding default animation settings.\n * @returns {void} ?\n */\n Animation.prototype.animate = function (element, options) {\n options = !options ? {} : options;\n var model = this.getModel(options);\n if (typeof element === 'string') {\n var elements = Array.prototype.slice.call(selectAll(element, document));\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var element_1 = elements_1[_i];\n model.element = element_1;\n Animation_1.delayAnimation(model);\n }\n }\n else {\n model.element = element;\n Animation_1.delayAnimation(model);\n }\n };\n /**\n * Stop the animation effect on animated element.\n *\n * @param {HTMLElement} element - Element which needs to be stop the animation.\n * @param {AnimationOptions} model - Handling the animation model at stop function.\n * @returns {void}\n */\n Animation.stop = function (element, model) {\n element.style.animation = '';\n element.removeAttribute('e-animate');\n var animationId = element.getAttribute('e-animation-id');\n if (animationId) {\n var frameId = parseInt(animationId, 10);\n cancelAnimationFrame(frameId);\n element.removeAttribute('e-animation-id');\n }\n if (model && model.end) {\n model.end.call(this, model);\n }\n };\n /**\n * Set delay to animation element\n *\n * @param {AnimationModel} model ?\n * @returns {void}\n */\n Animation.delayAnimation = function (model) {\n if (animationMode === 'Disable' || animationMode === GlobalAnimationMode.Disable) {\n if (model.begin) {\n model.begin.call(this, model);\n }\n if (model.end) {\n model.end.call(this, model);\n }\n }\n else {\n if (model.delay) {\n setTimeout(function () { Animation_1.applyAnimation(model); }, model.delay);\n }\n else {\n Animation_1.applyAnimation(model);\n }\n }\n };\n /**\n * Triggers animation\n *\n * @param {AnimationModel} model ?\n * @returns {void}\n */\n Animation.applyAnimation = function (model) {\n var _this = this;\n model.timeStamp = 0;\n var step = 0;\n var timerId = 0;\n var prevTimeStamp = 0;\n var duration = model.duration;\n model.element.setAttribute('e-animate', 'true');\n var startAnimation = function (timeStamp) {\n try {\n if (timeStamp) {\n // let step: number = model.timeStamp = timeStamp - startTime;\n /** phantomjs workaround for timestamp fix */\n prevTimeStamp = prevTimeStamp === 0 ? timeStamp : prevTimeStamp;\n model.timeStamp = (timeStamp + model.timeStamp) - prevTimeStamp;\n prevTimeStamp = timeStamp;\n /** phantomjs workaround end */\n // trigger animation begin event\n if (!step && model.begin) {\n model.begin.call(_this, model);\n }\n step = step + 1;\n var avg = model.timeStamp / step;\n if (model.timeStamp < duration && model.timeStamp + avg < duration && model.element.getAttribute('e-animate')) {\n // apply animation effect to the current element\n model.element.style.animation = model.name + ' ' + model.duration + 'ms ' + model.timingFunction;\n if (model.progress) {\n model.progress.call(_this, model);\n }\n // repeat requestAnimationFrame\n requestAnimationFrame(startAnimation);\n }\n else {\n // clear requestAnimationFrame\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n model.element.removeAttribute('e-animate');\n model.element.style.animation = '';\n if (model.end) {\n model.end.call(_this, model);\n }\n }\n }\n else {\n //startTime = performance.now();\n // set initial requestAnimationFrame\n timerId = requestAnimationFrame(startAnimation);\n model.element.setAttribute('e-animation-id', timerId.toString());\n }\n }\n catch (e) {\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n if (model.fail) {\n model.fail.call(_this, e);\n }\n }\n };\n startAnimation();\n };\n /**\n * Returns Animation Model\n *\n * @param {AnimationModel} options ?\n * @returns {AnimationModel} ?\n */\n Animation.prototype.getModel = function (options) {\n return {\n name: options.name || this.name,\n delay: options.delay || this.delay,\n duration: (options.duration !== undefined ? options.duration : this.duration),\n begin: options.begin || this.begin,\n end: options.end || this.end,\n fail: options.fail || this.fail,\n progress: options.progress || this.progress,\n timingFunction: this.easing[options.timingFunction] ? this.easing[options.timingFunction] :\n (options.timingFunction || this.easing[this.timingFunction])\n };\n };\n /**\n * @private\n * @param {AnimationModel} newProp ?\n * @param {AnimationModel} oldProp ?\n * @returns {void} ?\n */\n Animation.prototype.onPropertyChanged = function (newProp, oldProp) {\n // no code needed\n };\n /**\n * Returns module name as animation\n *\n * @private\n * @returns {void} ?\n */\n Animation.prototype.getModuleName = function () {\n return 'animation';\n };\n /**\n *\n * @private\n * @returns {void} ?\n */\n Animation.prototype.destroy = function () {\n //Override base destroy;\n };\n var Animation_1;\n __decorate([\n Property('FadeIn')\n ], Animation.prototype, \"name\", void 0);\n __decorate([\n Property(400)\n ], Animation.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], Animation.prototype, \"timingFunction\", void 0);\n __decorate([\n Property(0)\n ], Animation.prototype, \"delay\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"progress\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"begin\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"end\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"fail\", void 0);\n Animation = Animation_1 = __decorate([\n NotifyPropertyChanges\n ], Animation);\n return Animation;\n}(Base));\nexport { Animation };\n/**\n * Ripple provides material theme's wave effect when an element is clicked\n * ```html\n *
\n * \n * ```\n *\n * @private\n * @param {HTMLElement} element - Target element\n * @param {RippleOptions} rippleOptions - Ripple options .\n * @param {Function} done .\n * @returns {void} .\n */\nexport function rippleEffect(element, rippleOptions, done) {\n var rippleModel = getRippleModel(rippleOptions);\n if (rippleModel.rippleFlag === false || (rippleModel.rippleFlag === undefined && !isRippleEnabled)) {\n return (function () {\n // do nothing.\n });\n }\n element.setAttribute('data-ripple', 'true');\n EventHandler.add(element, 'mousedown', rippleHandler, { parent: element, rippleOptions: rippleModel });\n EventHandler.add(element, 'mouseup', rippleUpHandler, { parent: element, rippleOptions: rippleModel, done: done });\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n if (Browser.isPointer) {\n EventHandler.add(element, 'transitionend', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n }\n return (function () {\n element.removeAttribute('data-ripple');\n EventHandler.remove(element, 'mousedown', rippleHandler);\n EventHandler.remove(element, 'mouseup', rippleUpHandler);\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n EventHandler.remove(element, 'transitionend', rippleLeaveHandler);\n });\n}\n/**\n * Handler for ripple model\n *\n * @param {RippleOptions} rippleOptions ?\n * @returns {RippleOptions} ?\n */\nfunction getRippleModel(rippleOptions) {\n var rippleModel = {\n selector: rippleOptions && rippleOptions.selector ? rippleOptions.selector : null,\n ignore: rippleOptions && rippleOptions.ignore ? rippleOptions.ignore : null,\n rippleFlag: rippleOptions && rippleOptions.rippleFlag,\n isCenterRipple: rippleOptions && rippleOptions.isCenterRipple,\n duration: rippleOptions && rippleOptions.duration ? rippleOptions.duration : 350\n };\n return rippleModel;\n}\n/**\n * Handler for ripple event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleHandler(e) {\n var target = (e.target);\n var selector = this.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (this.rippleOptions && closest(target, this.rippleOptions.ignore))) {\n return;\n }\n var offset = element.getBoundingClientRect();\n var offsetX = e.pageX - document.body.scrollLeft;\n var offsetY = e.pageY - ((!document.body.scrollTop && document.documentElement) ?\n document.documentElement.scrollTop : document.body.scrollTop);\n var pageX = Math.max(Math.abs(offsetX - offset.left), Math.abs(offsetX - offset.right));\n var pageY = Math.max(Math.abs(offsetY - offset.top), Math.abs(offsetY - offset.bottom));\n var radius = Math.sqrt(pageX * pageX + pageY * pageY);\n var diameter = radius * 2 + 'px';\n var x = offsetX - offset.left - radius;\n var y = offsetY - offset.top - radius;\n if (this.rippleOptions && this.rippleOptions.isCenterRipple) {\n x = 0;\n y = 0;\n diameter = '100%';\n }\n element.classList.add('e-ripple');\n var duration = this.rippleOptions.duration.toString();\n var styles = 'width: ' + diameter + ';height: ' + diameter + ';left: ' + x + 'px;top: ' + y + 'px;' +\n 'transition-duration: ' + duration + 'ms;';\n var rippleElement = createElement('div', { className: 'e-ripple-element', styles: styles });\n element.appendChild(rippleElement);\n window.getComputedStyle(rippleElement).getPropertyValue('opacity');\n rippleElement.style.transform = 'scale(1)';\n if (element !== this.parent) {\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: this.parent, rippleOptions: this.rippleOptions });\n }\n}\n/**\n * Handler for ripple element mouse up event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleUpHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for ripple element mouse move event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleLeaveHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for removing ripple element\n *\n * @param {MouseEvent} e ?\n * @param {RippleArgs} eventArgs ?\n * @returns {void} ?\n * @private\n */\nfunction removeRipple(e, eventArgs) {\n var duration = eventArgs.rippleOptions.duration;\n var target = (e.target);\n var selector = eventArgs.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (element && element.className.indexOf('e-ripple') === -1)) {\n return;\n }\n var rippleElements = selectAll('.e-ripple-element', element);\n var rippleElement = rippleElements[rippleElements.length - 1];\n if (rippleElement) {\n rippleElement.style.opacity = '0.5';\n }\n if (eventArgs.parent !== element) {\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n }\n setTimeout(function () {\n if (rippleElement && rippleElement.parentNode) {\n rippleElement.parentNode.removeChild(rippleElement);\n }\n if (!element.getElementsByClassName('e-ripple-element').length) {\n element.classList.remove('e-ripple');\n }\n if (eventArgs.done) {\n eventArgs.done(e);\n }\n }, duration);\n}\nexport var isRippleEnabled = false;\n/**\n * Animation Module provides support to enable ripple effect functionality to Essential JS 2 components.\n *\n * @param {boolean} isRipple Specifies the boolean value to enable or disable ripple effect.\n * @returns {boolean} ?\n */\nexport function enableRipple(isRipple) {\n isRippleEnabled = isRipple;\n return isRippleEnabled;\n}\n/**\n * Defines the Modes of Global animation.\n *\n * @private\n */\nexport var animationMode;\n/**\n * This method is used to enable or disable the animation for all components.\n *\n * @param {string|GlobalAnimationMode} value - Specifies the value to enable or disable the animation for all components. When set to 'enable', it enables the animation for all components, regardless of the individual component's animation settings. When set to 'disable', it disables the animation for all components, regardless of the individual component's animation settings.\n * @returns {void}\n */\nexport function setGlobalAnimation(value) {\n animationMode = value;\n}\n/**\n * Defines the global animation modes for all components.\n */\nexport var GlobalAnimationMode;\n(function (GlobalAnimationMode) {\n /**\n * Defines the global animation mode as Default. Animation is enabled or disabled based on the component's animation settings.\n */\n GlobalAnimationMode[\"Default\"] = \"Default\";\n /**\n * Defines the global animation mode as Enable. Enables the animation for all components, regardless of the individual component's animation settings.\n */\n GlobalAnimationMode[\"Enable\"] = \"Enable\";\n /**\n * Defines the global animation mode as Disable. Disables the animation for all components, regardless of the individual component's animation settings.\n */\n GlobalAnimationMode[\"Disable\"] = \"Disable\";\n})(GlobalAnimationMode || (GlobalAnimationMode = {}));\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Module loading operations\n */\nimport { createInstance, setValue, getValue, deleteObject } from './util';\nvar MODULE_SUFFIX = 'Module';\nvar ModuleLoader = /** @class */ (function () {\n function ModuleLoader(parent) {\n this.loadedModules = [];\n this.parent = parent;\n }\n /**\n * Inject required modules in component library\n *\n * @returns {void} ?\n * @param {ModuleDeclaration[]} requiredModules - Array of modules to be required\n * @param {Function[]} moduleList - Array of modules to be injected from sample side\n */\n ModuleLoader.prototype.inject = function (requiredModules, moduleList) {\n var reqLength = requiredModules.length;\n if (reqLength === 0) {\n this.clean();\n return;\n }\n if (this.loadedModules.length) {\n this.clearUnusedModule(requiredModules);\n }\n for (var i = 0; i < reqLength; i++) {\n var modl = requiredModules[parseInt(i.toString(), 10)];\n for (var _i = 0, moduleList_1 = moduleList; _i < moduleList_1.length; _i++) {\n var module = moduleList_1[_i];\n var modName = modl.member;\n if (module && module.prototype.getModuleName() === modl.member && !this.isModuleLoaded(modName)) {\n var moduleObject = createInstance(module, modl.args);\n var memberName = this.getMemberName(modName);\n if (modl.isProperty) {\n setValue(memberName, module, this.parent);\n }\n else {\n setValue(memberName, moduleObject, this.parent);\n }\n var loadedModule = modl;\n loadedModule.member = memberName;\n this.loadedModules.push(loadedModule);\n }\n }\n }\n };\n /**\n * To remove the created object while destroying the control\n *\n * @returns {void}\n */\n ModuleLoader.prototype.clean = function () {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var modules = _a[_i];\n if (!modules.isProperty) {\n getValue(modules.member, this.parent).destroy();\n }\n }\n this.loadedModules = [];\n };\n /**\n * Returns the array of modules that are not loaded in the component library.\n *\n * @param {ModuleDeclaration[]} requiredModules - Array of modules to be required\n * @returns {ModuleDeclaration[]} ?\n * @private\n */\n ModuleLoader.prototype.getNonInjectedModules = function (requiredModules) {\n var _this = this;\n return requiredModules.filter(function (module) { return !_this.isModuleLoaded(module.member); });\n };\n /**\n * Removes all unused modules\n *\n * @param {ModuleDeclaration[]} moduleList ?\n * @returns {void} ?\n */\n ModuleLoader.prototype.clearUnusedModule = function (moduleList) {\n var _this = this;\n var usedModules = moduleList.map(function (arg) { return _this.getMemberName(arg.member); });\n var removableModule = this.loadedModules.filter(function (module) {\n return usedModules.indexOf(module.member) === -1;\n });\n for (var _i = 0, removableModule_1 = removableModule; _i < removableModule_1.length; _i++) {\n var mod = removableModule_1[_i];\n if (!mod.isProperty) {\n getValue(mod.member, this.parent).destroy();\n }\n this.loadedModules.splice(this.loadedModules.indexOf(mod), 1);\n deleteObject(this.parent, mod.member);\n }\n };\n /**\n * To get the name of the member.\n *\n * @param {string} name ?\n * @returns {string} ?\n */\n ModuleLoader.prototype.getMemberName = function (name) {\n return name[0].toLowerCase() + name.substring(1) + MODULE_SUFFIX;\n };\n /**\n * Returns boolean based on whether the module specified is loaded or not\n *\n * @param {string} modName ?\n * @returns {boolean} ?\n */\n ModuleLoader.prototype.isModuleLoaded = function (modName) {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var mod = _a[_i];\n if (mod.member === this.getMemberName(modName)) {\n return true;\n }\n }\n return false;\n };\n return ModuleLoader;\n}());\nexport { ModuleLoader };\n","import { createElement } from './dom';\nimport { getValue, containerObject, setValue, isNullOrUndefined } from './util';\nexport var componentList = ['grid', 'pivotview', 'treegrid', 'spreadsheet', 'rangeNavigator', 'DocumentEditor', 'listbox', 'inplaceeditor', 'PdfViewer', 'richtexteditor', 'DashboardLayout', 'chart', 'stockChart', 'circulargauge', 'diagram', 'heatmap', 'lineargauge', 'maps', 'slider', 'smithchart', 'barcode', 'sparkline', 'treemap', 'bulletChart', 'kanban', 'daterangepicker', 'schedule', 'gantt', 'signature', 'query-builder', 'drop-down-tree', 'carousel', 'filemanager', 'uploader', 'accordion', 'tab', 'treeview'];\nvar bypassKey = [115, 121, 110, 99, 102, 117, 115, 105,\n 111, 110, 46, 105, 115, 76, 105, 99, 86, 97, 108,\n 105, 100, 97, 116, 101, 100];\nvar accountURL;\n/**\n * License validation module\n *\n * @private\n */\nvar LicenseValidator = /** @class */ (function () {\n function LicenseValidator(key) {\n this.isValidated = false;\n this.isLicensed = true;\n this.version = '26';\n this.platform = /JavaScript|ASPNET|ASPNETCORE|ASPNETMVC|FileFormats|essentialstudio/i;\n this.errors = {\n noLicense: 'This application was built using a trial version of Syncfusion Essential Studio.' +\n ' To remove the license validation message permanently, a valid license key must be included.',\n trailExpired: 'This application was built using a trial version of Syncfusion Essential Studio.' +\n ' To remove the license validation message permanently, a valid license key must be included.',\n versionMismatched: 'The included Syncfusion license key is invalid.',\n platformMismatched: 'The included Syncfusion license key is invalid.',\n invalidKey: 'The included Syncfusion license key is invalid.'\n };\n /**\n * To manage licensing operation.\n */\n this.manager = (function () {\n var licKey = null;\n /**\n * Sets the license key.\n *\n * @param {string} key - Specifies the license key.\n * @returns {void}\n */\n function set(key) { licKey = key; }\n /**\n * Gets the license key.\n *\n * @returns {string} -Gets the license key.\n */\n function get() { return licKey; }\n return {\n setKey: set,\n getKey: get\n };\n })();\n /**\n * To manage npx licensing operation.\n */\n this.npxManager = (function () {\n var npxLicKey = 'npxKeyReplace';\n /**\n * Gets the license key.\n *\n * @returns {string} - Gets the license key.\n */\n function get() { return npxLicKey; }\n return {\n getKey: get\n };\n })();\n this.manager.setKey(key);\n }\n /**\n * To validate the provided license key.\n *\n * @returns {boolean} ?\n */\n LicenseValidator.prototype.validate = function () {\n var contentKey = [115, 121, 110, 99, 102, 117, 115, 105, 111, 110, 46,\n 108, 105, 99, 101, 110, 115, 101, 67, 111, 110, 116, 101, 110, 116];\n var URLKey = [115, 121, 110, 99, 102, 117, 115, 105, 111, 110, 46,\n 99, 108, 97, 105, 109, 65, 99, 99, 111, 117, 110, 116, 85, 82, 76];\n if (!this.isValidated && (containerObject && !getValue(convertToChar(bypassKey), containerObject) && !getValue('Blazor', containerObject))) {\n var validateMsg = void 0;\n var validateURL = void 0;\n if ((this.manager && this.manager.getKey()) || (this.npxManager && this.npxManager.getKey() !== 'npxKeyReplace')) {\n var result = this.getInfoFromKey();\n if (result && result.length) {\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var res = result_1[_i];\n if (!this.platform.test(res.platform) || res.invalidPlatform) {\n validateMsg = this.errors.platformMismatched;\n }\n else if (res.version.indexOf(this.version) === -1) {\n validateMsg = this.errors.versionMismatched;\n validateMsg = validateMsg.replace('##LicenseVersion', res.version);\n validateMsg = validateMsg.replace('##Requireversion', this.version + '.x');\n }\n else if (res.expiryDate) {\n var expDate = new Date(res.expiryDate);\n var currDate = new Date();\n if (expDate !== currDate && expDate < currDate) {\n validateMsg = this.errors.trailExpired;\n }\n else {\n break;\n }\n }\n }\n }\n else {\n validateMsg = this.errors.invalidKey;\n }\n }\n else {\n var licenseContent = getValue(convertToChar(contentKey), containerObject);\n validateURL = getValue(convertToChar(URLKey), containerObject);\n if (licenseContent && licenseContent !== '') {\n validateMsg = licenseContent;\n }\n else {\n validateMsg = this.errors.noLicense;\n }\n }\n if (validateMsg && typeof document !== 'undefined' && !isNullOrUndefined(document)) {\n accountURL = (validateURL && validateURL !== '') ? validateURL : 'https://www.syncfusion.com/account/claim-license-key?pl=SmF2YVNjcmlwdA==&vs=MjY=&utm_source=es_license_validation_banner&utm_medium=listing&utm_campaign=license-information';\n var errorDiv = createElement('div', {\n innerHTML: \"\" + validateMsg + ' ' + 'Claim your free account'\n });\n errorDiv.setAttribute('style', \"position: fixed;\\n top: 10px;\\n left: 10px;\\n right: 10px;\\n font-size: 14px;\\n background: #EEF2FF;\\n color: #222222;\\n z-index: 999999999;\\n text-align: left;\\n border: 1px solid #EEEEEE;\\n padding: 10px 11px 10px 50px;\\n border-radius: 8px;\\n font-family: Helvetica Neue, Helvetica, Arial;\");\n document.body.appendChild(errorDiv);\n this.isLicensed = false;\n }\n this.isValidated = true;\n setValue(convertToChar(bypassKey), this.isValidated, containerObject);\n }\n return this.isLicensed;\n };\n LicenseValidator.prototype.getDecryptedData = function (key) {\n try {\n return atob(key);\n }\n catch (error) {\n return '';\n }\n };\n /**\n * Get license information from key.\n *\n * @returns {IValidator} - Get license information from key.\n */\n LicenseValidator.prototype.getInfoFromKey = function () {\n try {\n var licKey = '';\n var pkey = [5439488, 7929856, 5111808, 6488064, 4587520, 7667712, 5439488,\n 6881280, 5177344, 7208960, 4194304, 4456448, 6619136, 7733248, 5242880, 7077888,\n 6356992, 7602176, 4587520, 7274496, 7471104, 7143424];\n var decryptedStr = [];\n var resultArray = [];\n var invalidPlatform = false;\n var isNpxKey = false;\n if (this.manager.getKey()) {\n licKey = this.manager.getKey();\n }\n else {\n isNpxKey = true;\n licKey = this.npxManager.getKey().split('npxKeyReplace')[1];\n }\n var licKeySplit = licKey.split(';');\n for (var _i = 0, licKeySplit_1 = licKeySplit; _i < licKeySplit_1.length; _i++) {\n var lKey = licKeySplit_1[_i];\n var decodeStr = this.getDecryptedData(lKey);\n if (!decodeStr) {\n continue;\n }\n var k = 0;\n var buffr = '';\n if (!isNpxKey) {\n for (var i = 0; i < decodeStr.length; i++, k++) {\n if (k === pkey.length) {\n k = 0;\n }\n var c = decodeStr.charCodeAt(i);\n buffr += String.fromCharCode(c ^ (pkey[parseInt(k.toString(), 10)] >> 16));\n }\n }\n else {\n var charKey = decodeStr[decodeStr.length - 1];\n var decryptedKey = [];\n for (var i = 0; i < decodeStr.length; i++) {\n decryptedKey[parseInt(i.toString(), 10)] = decodeStr[parseInt(i.toString(), 10)].charCodeAt(0)\n - charKey.charCodeAt(0);\n }\n for (var i = 0; i < decryptedKey.length; i++) {\n buffr += String.fromCharCode(decryptedKey[parseInt(i.toString(), 10)]);\n }\n }\n if (this.platform.test(buffr)) {\n decryptedStr = buffr.split(';');\n invalidPlatform = false;\n // checked the length to verify the key in proper strucutre\n if (decryptedStr.length > 3) {\n resultArray.push({ platform: decryptedStr[0],\n version: decryptedStr[1],\n expiryDate: decryptedStr[2] });\n }\n }\n else if (buffr && buffr.split(';').length > 3) {\n invalidPlatform = true;\n }\n }\n if (invalidPlatform && !resultArray.length) {\n return [{ invalidPlatform: invalidPlatform }];\n }\n else {\n return resultArray.length ? resultArray : null;\n }\n }\n catch (error) {\n return null;\n }\n };\n return LicenseValidator;\n}());\nvar licenseValidator = new LicenseValidator();\n/**\n * Converts the given number to characters.\n *\n * @param {number} cArr - Specifies the license key as number.\n * @returns {string} ?\n */\nfunction convertToChar(cArr) {\n var ret = '';\n for (var _i = 0, cArr_1 = cArr; _i < cArr_1.length; _i++) {\n var arr = cArr_1[_i];\n ret += String.fromCharCode(arr);\n }\n return ret;\n}\n/**\n * To set license key.\n *\n * @param {string} key - license key\n * @returns {void}\n */\nexport function registerLicense(key) {\n licenseValidator = new LicenseValidator(key);\n}\nexport var validateLicense = function (key) {\n if (key) {\n registerLicense(key);\n }\n return licenseValidator.validate();\n};\nexport var getVersion = function () {\n return licenseValidator.version;\n};\n// Method for create overlay over the sample\nexport var createLicenseOverlay = function () {\n var bannerTemplate = \"\\n
\\n
\\n
\\n \\n
\\n
Claim your FREE account and get a key in less than a minute
\\n
    \\n
  • Access to a 30-day free trial of any of our products.
  • \\n
  • Access to 24x5 support by developers via the support tickets, forum, feature & feedback page and chat.
  • \\n
  • 200+ ebooks on the latest technologies, industry trends, and research topics.\\n
  • \\n
  • Largest collection of over 7,000 flat and wireframe icons for free with Syncfusion Metro Studio.
  • \\n
  • Free and unlimited access to Syncfusion technical blogs and whitepapers.
  • \\n
\\n
Syncfusion is trusted by 29,000+ businesses worldwide
\\n \\n Claim your FREE account\\n
have a Syncfusion account? Sign In
\\n
\\n
\";\n if (typeof document !== 'undefined' && !isNullOrUndefined(document)) {\n var errorBackground = createElement('div', {\n innerHTML: bannerTemplate\n });\n document.body.appendChild(errorBackground);\n }\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { getValue, setValue, merge, isBlazor } from './util';\nimport { Base } from './base';\n/**\n * To detect the changes for inner properties.\n *\n * @private\n * @returns {void} ?\n */\nvar ChildProperty = /** @class */ (function () {\n function ChildProperty(parent, propName, defaultValue, isArray) {\n this.isComplexArraySetter = false;\n this.properties = {};\n this.changedProperties = {};\n this.childChangedProperties = {};\n this.oldProperties = {};\n this.finalUpdate = function () { };\n this.callChildDataBind = getValue('callChildDataBind', Base);\n this.parentObj = parent;\n this.controlParent = this.parentObj.controlParent || this.parentObj;\n this.propName = propName;\n this.isParentArray = isArray;\n this.setProperties(defaultValue, true);\n }\n /**\n * Updates the property changes\n *\n * @param {boolean} val ?\n * @param {string} propName ?\n * @returns {void} ?\n */\n ChildProperty.prototype.updateChange = function (val, propName) {\n if (val === true) {\n this.parentObj.childChangedProperties[\"\" + propName] = val;\n }\n else {\n delete this.parentObj.childChangedProperties[\"\" + propName];\n }\n if (this.parentObj.updateChange) {\n this.parentObj.updateChange(val, this.parentObj.propName);\n }\n };\n /**\n * Updates time out duration\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.updateTimeOut = function () {\n if (this.parentObj.updateTimeOut) {\n this.parentObj.finalUpdate();\n this.parentObj.updateTimeOut();\n }\n else {\n var changeTime_1 = setTimeout(this.parentObj.dataBind.bind(this.parentObj));\n var clearUpdate = function () {\n clearTimeout(changeTime_1);\n };\n this.finalUpdate = clearUpdate;\n }\n };\n /**\n * Clears changed properties\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.clearChanges = function () {\n this.finalUpdate();\n this.updateChange(false, this.propName);\n this.oldProperties = {};\n this.changedProperties = {};\n };\n /**\n * Set property changes\n *\n * @param {Object} prop ?\n * @param {boolean} muteOnChange ?\n * @returns {void} ?\n */\n ChildProperty.prototype.setProperties = function (prop, muteOnChange) {\n if (muteOnChange === true) {\n merge(this, prop);\n this.updateChange(false, this.propName);\n this.clearChanges();\n }\n else {\n merge(this, prop);\n }\n };\n /**\n * Binds data\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.dataBind = function () {\n this.callChildDataBind(this.childChangedProperties, this);\n if (this.isParentArray) {\n var curIndex = this.parentObj[this.propName].indexOf(this);\n if (Object.keys(this.changedProperties).length) {\n setValue(this.propName + '.' + curIndex, this.changedProperties, this.parentObj.changedProperties);\n setValue(this.propName + '.' + curIndex, this.oldProperties, this.parentObj.oldProperties);\n }\n }\n else {\n this.parentObj.changedProperties[this.propName] = this.changedProperties;\n this.parentObj.oldProperties[this.propName] = this.oldProperties;\n }\n this.clearChanges();\n };\n /**\n * Saves changes to newer values\n *\n * @param {string} key ?\n * @param {Object} newValue ?\n * @param {Object} oldValue ?\n * @param {boolean} restrictServerDataBind ?\n * @returns {void} ?\n */\n ChildProperty.prototype.saveChanges = function (key, newValue, oldValue, restrictServerDataBind) {\n if (this.controlParent.isProtectedOnChange) {\n return;\n }\n if (!restrictServerDataBind) {\n this.serverDataBind(key, newValue, true);\n }\n this.oldProperties[\"\" + key] = oldValue;\n this.changedProperties[\"\" + key] = newValue;\n this.updateChange(true, this.propName);\n this.finalUpdate();\n this.updateTimeOut();\n };\n ChildProperty.prototype.serverDataBind = function (key, value, isSaveChanges, action) {\n if (isBlazor() && !this.parentObj.isComplexArraySetter) {\n var parent_1;\n var newChanges = {};\n var parentKey = isSaveChanges ? this.getParentKey(true) + '.' + key : key;\n /* istanbul ignore else */\n if (parentKey.indexOf('.') !== -1) {\n var complexKeys = parentKey.split('.');\n parent_1 = newChanges;\n for (var i = 0; i < complexKeys.length; i++) {\n var isFinal = i === complexKeys.length - 1;\n parent_1[complexKeys[parseInt(i.toString(), 10)]] = isFinal ? value : {};\n parent_1 = isFinal ? parent_1 : parent_1[complexKeys[parseInt(i.toString(), 10)]];\n }\n }\n else {\n newChanges[\"\" + parentKey] = {};\n parent_1 = newChanges[\"\" + parentKey];\n newChanges[\"\" + parentKey][\"\" + key] = value;\n }\n /* istanbul ignore next */\n if (this.isParentArray) {\n var actionProperty = 'ejsAction';\n parent_1[\"\" + actionProperty] = action ? action : 'none';\n }\n this.controlParent.serverDataBind(newChanges);\n }\n };\n ChildProperty.prototype.getParentKey = function (isSaveChanges) {\n var index = '';\n var propName = this.propName;\n /* istanbul ignore next */\n if (this.isParentArray) {\n index = this.parentObj[this.propName].indexOf(this);\n var valueLength = this.parentObj[this.propName].length;\n valueLength = isSaveChanges ? valueLength : (valueLength > 0 ? valueLength - 1 : 0);\n index = index !== -1 ? '-' + index : '-' + valueLength;\n propName = propName + index;\n }\n if (this.controlParent !== this.parentObj) {\n propName = this.parentObj.getParentKey() + '.' + this.propName + index;\n }\n return propName;\n };\n return ChildProperty;\n}());\nexport { ChildProperty };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types */\nimport { isUndefined, getValue, isNullOrUndefined, setValue, uniqueID, isBlazor } from './util';\nimport { ModuleLoader } from './module-loader';\nimport { Base } from './base';\nimport { Observer } from './observer';\nimport { ChildProperty } from './child-property';\nimport { Property, NotifyPropertyChanges } from './notify-property-change';\nimport { onIntlChange, rightToLeft, defaultCulture } from './internationalization';\nimport { createElement, addClass, removeClass, select } from './dom';\nimport { validateLicense, createLicenseOverlay, componentList } from './validate-lic';\nvar componentCount = 0;\nvar lastPageID;\nvar lastHistoryLen = 0;\n// Decalre the static variable to count the instance\nvar instancecount = 0;\n// Decalre the static variable to find if control limit exceed or not\nvar isvalid = true;\n// We have added styles to inline type so here declare the static variable to detect if banner is added or not\nvar isBannerAdded = false;\nexport var versionBasedStatePersistence = false;\n/**\n * To enable or disable version based statePersistence functionality for all components globally.\n *\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable versionBasedStatePersistence option.\n * @returns {void}\n */\nexport function enableVersionBasedPersistence(status) {\n versionBasedStatePersistence = status;\n}\n/**\n * Base class for all Essential JavaScript components\n */\nvar Component = /** @class */ (function (_super) {\n __extends(Component, _super);\n /**\n * Initialize the constructor for component base\n *\n * @param {Object} options ?\n * @param {string} selector ?\n */\n function Component(options, selector) {\n var _this = _super.call(this, options, selector) || this;\n _this.randomId = uniqueID();\n /**\n * string template option for Blazor template rendering\n *\n * @private\n */\n _this.isStringTemplate = false;\n _this.needsID = false;\n _this.isReactHybrid = false;\n _this.isAngular = false;\n _this.isReact = false;\n _this.isVue = false;\n if (isNullOrUndefined(_this.enableRtl)) {\n _this.setProperties({ 'enableRtl': rightToLeft }, true);\n }\n if (isNullOrUndefined(_this.locale)) {\n _this.setProperties({ 'locale': defaultCulture }, true);\n }\n _this.moduleLoader = new ModuleLoader(_this);\n _this.localObserver = new Observer(_this);\n onIntlChange.on('notifyExternalChange', _this.detectFunction, _this, _this.randomId);\n // Based on the considered control list we have count the instance\n if (typeof window !== 'undefined' && typeof document !== 'undefined' && !validateLicense()) {\n if (componentList.indexOf(_this.getModuleName()) !== -1) {\n instancecount = instancecount + 1;\n if (instancecount > 5) {\n isvalid = false;\n }\n }\n }\n if (!isUndefined(selector)) {\n _this.appendTo();\n }\n return _this;\n }\n Component.prototype.requiredModules = function () {\n return [];\n };\n /**\n * Destroys the sub modules while destroying the widget\n *\n * @returns {void} ?\n */\n Component.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (this.enablePersistence) {\n this.setPersistData();\n this.detachUnloadEvent();\n }\n this.localObserver.destroy();\n if (this.refreshing) {\n return;\n }\n removeClass([this.element], ['e-control']);\n this.trigger('destroyed', { cancel: false });\n _super.prototype.destroy.call(this);\n this.moduleLoader.clean();\n onIntlChange.off('notifyExternalChange', this.detectFunction, this.randomId);\n };\n /**\n * Applies all the pending property changes and render the component again.\n *\n * @returns {void} ?\n */\n Component.prototype.refresh = function () {\n this.refreshing = true;\n this.moduleLoader.clean();\n this.destroy();\n this.clearChanges();\n this.localObserver = new Observer(this);\n this.preRender();\n this.injectModules();\n this.render();\n this.refreshing = false;\n };\n Component.prototype.accessMount = function () {\n if (this.mount && !this.isReactHybrid) {\n this.mount();\n }\n };\n /**\n * Returns the route element of the component\n *\n * @returns {HTMLElement} ?\n */\n Component.prototype.getRootElement = function () {\n if (this.isReactHybrid) {\n return this.actualElement;\n }\n else {\n return this.element;\n }\n };\n /**\n * Returns the persistence data for component\n *\n * @returns {any} ?\n */\n Component.prototype.getLocalData = function () {\n var eleId = this.getModuleName() + this.element.id;\n if (versionBasedStatePersistence) {\n return window.localStorage.getItem(eleId + this.ej2StatePersistenceVersion);\n }\n else {\n return window.localStorage.getItem(eleId);\n }\n };\n /**\n * Adding unload event to persist data when enable persistence true\n *\n * @returns {void}\n */\n Component.prototype.attachUnloadEvent = function () {\n this.handleUnload = this.handleUnload.bind(this);\n window.addEventListener('pagehide', this.handleUnload);\n };\n /**\n * Handling unload event to persist data when enable persistence true\n *\n * @returns {void}\n */\n Component.prototype.handleUnload = function () {\n this.setPersistData();\n };\n /**\n * Removing unload event to persist data when enable persistence true\n *\n * @returns {void}\n */\n Component.prototype.detachUnloadEvent = function () {\n window.removeEventListener('pagehide', this.handleUnload);\n };\n /**\n * Appends the control within the given HTML element\n *\n * @param {string | HTMLElement} selector - Target element where control needs to be appended\n * @returns {void} ?\n */\n Component.prototype.appendTo = function (selector) {\n if (!isNullOrUndefined(selector) && typeof (selector) === 'string') {\n this.element = select(selector, document);\n }\n else if (!isNullOrUndefined(selector)) {\n this.element = selector;\n }\n if (!isNullOrUndefined(this.element)) {\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-control', moduleClass]);\n this.isProtectedOnChange = false;\n if (this.needsID && !this.element.id) {\n this.element.id = this.getUniqueID(this.getModuleName());\n }\n if (this.enablePersistence) {\n this.mergePersistData();\n this.attachUnloadEvent();\n }\n var inst = getValue('ej2_instances', this.element);\n if (!inst || inst.indexOf(this) === -1) {\n _super.prototype.addInstance.call(this);\n }\n this.preRender();\n this.injectModules();\n // Throw a warning for the required modules to be injected.\n var ignoredComponents = {\n schedule: 'all',\n diagram: 'all',\n PdfViewer: 'all',\n grid: ['logger'],\n richtexteditor: ['link', 'table', 'image', 'audio', 'video', 'formatPainter', 'emojiPicker', 'pasteCleanup', 'htmlEditor', 'toolbar'],\n treegrid: ['filter'],\n gantt: ['tooltip'],\n chart: ['Export', 'Zoom'],\n accumulationchart: ['Export'],\n 'query-builder': 'all'\n };\n var component = this.getModuleName();\n if (this.requiredModules && (!ignoredComponents[\"\" + component] || ignoredComponents[\"\" + component] !== 'all')) {\n var modulesRequired = this.requiredModules();\n for (var _i = 0, _a = this.moduleLoader.getNonInjectedModules(modulesRequired); _i < _a.length; _i++) {\n var module = _a[_i];\n var moduleName = module.name ? module.name : module.member;\n if (ignoredComponents[\"\" + component] && ignoredComponents[\"\" + component].indexOf(module.member) !== -1) {\n continue;\n }\n var componentName = component.charAt(0).toUpperCase() + component.slice(1); // To capitalize the component name\n console.warn(\"[WARNING] :: Module \\\"\" + moduleName + \"\\\" is not available in \" + componentName + \" component! You either misspelled the module name or forgot to load it.\");\n }\n }\n // Checked weather cases are valid or not. If control leads to more than five counts\n if (!isvalid && !isBannerAdded) {\n createLicenseOverlay();\n isBannerAdded = true;\n }\n this.render();\n if (!this.mount) {\n this.trigger('created');\n }\n else {\n this.accessMount();\n }\n }\n };\n /**\n * It is used to process the post rendering functionalities to a component.\n *\n * @param {Node} wrapperElement ?\n * @returns {void} ?\n */\n Component.prototype.renderComplete = function (wrapperElement) {\n if (isBlazor()) {\n var sfBlazor = 'sfBlazor';\n window[\"\" + sfBlazor].renderComplete(this.element, wrapperElement);\n }\n this.isRendered = true;\n };\n /**\n * When invoked, applies the pending property changes immediately to the component.\n *\n * @returns {void} ?\n */\n Component.prototype.dataBind = function () {\n this.injectModules();\n _super.prototype.dataBind.call(this);\n };\n /**\n * Attach one or more event handler to the current component context.\n * It is used for internal handling event internally within the component only.\n *\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the handler to run when the event occurs\n * @param {Object} context - optional parameter Specifies the context to be bind in the handler.\n * @returns {void} ?\n * @private\n */\n Component.prototype.on = function (event, handler, context) {\n if (typeof event === 'string') {\n this.localObserver.on(event, handler, context);\n }\n else {\n for (var _i = 0, event_1 = event; _i < event_1.length; _i++) {\n var arg = event_1[_i];\n this.localObserver.on(arg.event, arg.handler, arg.context);\n }\n }\n };\n /**\n * To remove one or more event handler that has been attached with the on() method.\n *\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the function to run when the event occurs\n * @returns {void} ?\n * @private\n */\n Component.prototype.off = function (event, handler) {\n if (typeof event === 'string') {\n this.localObserver.off(event, handler);\n }\n else {\n for (var _i = 0, event_2 = event; _i < event_2.length; _i++) {\n var arg = event_2[_i];\n this.localObserver.off(arg.event, arg.handler);\n }\n }\n };\n /**\n * To notify the handlers in the specified event.\n *\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @returns {void} ?\n * @private\n */\n Component.prototype.notify = function (property, argument) {\n if (this.isDestroyed !== true) {\n this.localObserver.notify(property, argument);\n }\n };\n /**\n * Get injected modules\n *\n * @returns {Function} ?\n * @private\n */\n Component.prototype.getInjectedModules = function () {\n return this.injectedModules;\n };\n /**\n * Dynamically injects the required modules to the component.\n *\n * @param {Function} moduleList ?\n * @returns {void} ?\n */\n Component.Inject = function () {\n var moduleList = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n moduleList[_i] = arguments[_i];\n }\n if (!this.prototype.injectedModules) {\n this.prototype.injectedModules = [];\n }\n for (var i = 0; i < moduleList.length; i++) {\n if (this.prototype.injectedModules.indexOf(moduleList[parseInt(i.toString(), 10)]) === -1) {\n this.prototype.injectedModules.push(moduleList[parseInt(i.toString(), 10)]);\n }\n }\n };\n /**\n * This is a instance method to create an element.\n *\n * @param {string} tagName ?\n * @param {ElementProperties} prop ?\n * @param {boolean} isVDOM ?\n * @returns {any} ?\n * @private\n */\n Component.prototype.createElement = function (tagName, prop, isVDOM) {\n return createElement(tagName, prop);\n };\n /**\n *\n * @param {Function} handler - handler to be triggered after state Updated.\n * @param {any} argument - Arguments to be passed to caller.\n * @returns {void} .\n * @private\n */\n Component.prototype.triggerStateChange = function (handler, argument) {\n if (this.isReactHybrid) {\n this.setState();\n this.currentContext = { calls: handler, args: argument };\n }\n };\n Component.prototype.injectModules = function () {\n if (this.injectedModules && this.injectedModules.length) {\n this.moduleLoader.inject(this.requiredModules(), this.injectedModules);\n }\n };\n Component.prototype.detectFunction = function (args) {\n var prop = Object.keys(args);\n if (prop.length) {\n this[prop[0]] = args[prop[0]];\n }\n };\n Component.prototype.mergePersistData = function () {\n var data;\n if (versionBasedStatePersistence) {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id + this.ej2StatePersistenceVersion);\n }\n else {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n }\n if (!(isNullOrUndefined(data) || (data === ''))) {\n this.setProperties(JSON.parse(data), true);\n }\n };\n Component.prototype.setPersistData = function () {\n if (!this.isDestroyed) {\n if (versionBasedStatePersistence) {\n window.localStorage.setItem(this.getModuleName() +\n this.element.id + this.ej2StatePersistenceVersion, this.getPersistData());\n }\n else {\n window.localStorage.setItem(this.getModuleName() + this.element.id, this.getPersistData());\n }\n }\n };\n Component.prototype.renderReactTemplates = function (callback) {\n if (!isNullOrUndefined(callback)) {\n callback();\n }\n };\n Component.prototype.clearTemplate = function (templateName, index) {\n //No Code\n };\n Component.prototype.getUniqueID = function (definedName) {\n if (this.isHistoryChanged()) {\n componentCount = 0;\n }\n lastPageID = this.pageID(location.href);\n lastHistoryLen = history.length;\n return definedName + '_' + lastPageID + '_' + componentCount++;\n };\n Component.prototype.pageID = function (url) {\n var hash = 0;\n if (url.length === 0) {\n return hash;\n }\n for (var i = 0; i < url.length; i++) {\n var char = url.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash = hash & hash; // Convert to 32bit integer\n }\n return Math.abs(hash);\n };\n Component.prototype.isHistoryChanged = function () {\n return lastPageID !== this.pageID(location.href) || lastHistoryLen !== history.length;\n };\n Component.prototype.addOnPersist = function (options) {\n var _this = this;\n var persistObj = {};\n for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {\n var key = options_1[_i];\n var objValue = getValue(key, this);\n if (!isUndefined(objValue)) {\n setValue(key, this.getActualProperties(objValue), persistObj);\n }\n }\n return JSON.stringify(persistObj, function (key, value) {\n return _this.getActualProperties(value);\n });\n };\n Component.prototype.getActualProperties = function (obj) {\n if (obj instanceof ChildProperty) {\n return getValue('properties', obj);\n }\n else {\n return obj;\n }\n };\n Component.prototype.ignoreOnPersist = function (options) {\n return JSON.stringify(this.iterateJsonProperties(this.properties, options));\n };\n Component.prototype.iterateJsonProperties = function (obj, ignoreList) {\n var newObj = {};\n var _loop_1 = function (key) {\n if (ignoreList.indexOf(key) === -1) {\n var value = obj[\"\" + key];\n if (typeof value === 'object' && !(value instanceof Array)) {\n var newList = ignoreList.filter(function (str) {\n var regExp = RegExp;\n return new regExp(key + '.').test(str);\n }).map(function (str) {\n return str.replace(key + '.', '');\n });\n newObj[\"\" + key] = this_1.iterateJsonProperties(this_1.getActualProperties(value), newList);\n }\n else {\n newObj[\"\" + key] = value;\n }\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\n var key = _a[_i];\n _loop_1(key);\n }\n return newObj;\n };\n __decorate([\n Property(false)\n ], Component.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"enableRtl\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"locale\", void 0);\n Component = __decorate([\n NotifyPropertyChanges\n ], Component);\n return Component;\n}(Base));\nexport { Component };\n//Function handling for page navigation detection\n/* istanbul ignore next */\n(function () {\n if (typeof window !== 'undefined') {\n window.addEventListener('popstate', \n /* istanbul ignore next */\n function () {\n componentCount = 0;\n });\n }\n})();\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible } from './dom';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { ChildProperty } from './child-property';\nimport { select, closest, setStyleAttribute, addClass, createElement } from './dom';\nimport { extend, isUndefined, isNullOrUndefined, compareElementParent, isBlazor } from './util';\nvar defaultPosition = { left: 0, top: 0, bottom: 0, right: 0 };\nvar isDraggedObject = { isDragged: false };\n/**\n * Specifies the position coordinates\n */\nvar Position = /** @class */ (function (_super) {\n __extends(Position, _super);\n function Position() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Position.prototype, \"left\", void 0);\n __decorate([\n Property(0)\n ], Position.prototype, \"top\", void 0);\n return Position;\n}(ChildProperty));\nexport { Position };\n/**\n * Draggable Module provides support to enable draggable functionality in Dom Elements.\n * ```html\n *
Draggable
\n * \n * ```\n */\nvar Draggable = /** @class */ (function (_super) {\n __extends(Draggable, _super);\n function Draggable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.dragLimit = Draggable_1.getDefaultPosition();\n _this.borderWidth = Draggable_1.getDefaultPosition();\n _this.padding = Draggable_1.getDefaultPosition();\n _this.diffX = 0;\n _this.prevLeft = 0;\n _this.prevTop = 0;\n _this.dragProcessStarted = false;\n _this.eleTop = 0;\n _this.tapHoldTimer = 0;\n _this.externalInitialize = false;\n _this.diffY = 0;\n _this.parentScrollX = 0;\n _this.parentScrollY = 0;\n _this.droppables = {};\n _this.bind();\n return _this;\n }\n Draggable_1 = Draggable;\n Draggable.prototype.bind = function () {\n this.toggleEvents();\n if (Browser.isIE) {\n addClass([this.element], 'e-block-touch');\n }\n this.droppables[this.scope] = {};\n };\n Draggable.getDefaultPosition = function () {\n return extend({}, defaultPosition);\n };\n Draggable.prototype.toggleEvents = function (isUnWire) {\n var ele;\n if (!isUndefined(this.handle)) {\n ele = select(this.handle, this.element);\n }\n var handler = (this.enableTapHold && Browser.isDevice && Browser.isTouch) ? this.mobileInitialize : this.initialize;\n if (isUnWire) {\n EventHandler.remove(ele || this.element, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, handler);\n }\n else {\n EventHandler.add(ele || this.element, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, handler, this);\n }\n };\n /* istanbul ignore next */\n Draggable.prototype.mobileInitialize = function (evt) {\n var _this = this;\n var target = evt.currentTarget;\n this.tapHoldTimer = setTimeout(function () {\n _this.externalInitialize = true;\n _this.removeTapholdTimer();\n _this.initialize(evt, target);\n }, this.tapHoldThreshold);\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.removeTapholdTimer, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.removeTapholdTimer, this);\n };\n /* istanbul ignore next */\n Draggable.prototype.removeTapholdTimer = function () {\n clearTimeout(this.tapHoldTimer);\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.removeTapholdTimer);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.removeTapholdTimer);\n };\n /* istanbul ignore next */\n Draggable.prototype.getScrollableParent = function (element, axis) {\n var scroll = { 'vertical': 'scrollHeight', 'horizontal': 'scrollWidth' };\n var client = { 'vertical': 'clientHeight', 'horizontal': 'clientWidth' };\n if (isNullOrUndefined(element)) {\n return null;\n }\n if (element[scroll[\"\" + axis]] > element[client[\"\" + axis]]) {\n if (axis === 'vertical' ? element.scrollTop > 0 : element.scrollLeft > 0) {\n if (axis === 'vertical') {\n this.parentScrollY = this.parentScrollY +\n (this.parentScrollY === 0 ? element.scrollTop : element.scrollTop - this.parentScrollY);\n this.tempScrollHeight = element.scrollHeight;\n }\n else {\n this.parentScrollX = this.parentScrollX +\n (this.parentScrollX === 0 ? element.scrollLeft : element.scrollLeft - this.parentScrollX);\n this.tempScrollWidth = element.scrollWidth;\n }\n if (!isNullOrUndefined(element)) {\n return this.getScrollableParent(element.parentNode, axis);\n }\n else {\n return element;\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n };\n Draggable.prototype.getScrollableValues = function () {\n this.parentScrollX = 0;\n this.parentScrollY = 0;\n var isModalDialog = this.element.classList.contains('e-dialog') && this.element.classList.contains('e-dlg-modal');\n var verticalScrollParent = this.getScrollableParent(this.element.parentNode, 'vertical');\n var horizontalScrollParent = this.getScrollableParent(this.element.parentNode, 'horizontal');\n };\n Draggable.prototype.initialize = function (evt, curTarget) {\n this.currentStateTarget = evt.target;\n if (this.isDragStarted()) {\n return;\n }\n else {\n this.isDragStarted(true);\n this.externalInitialize = false;\n }\n this.target = (evt.currentTarget || curTarget);\n this.dragProcessStarted = false;\n if (this.abort) {\n var abortSelectors = this.abort;\n if (typeof abortSelectors === 'string') {\n abortSelectors = [abortSelectors];\n }\n for (var i = 0; i < abortSelectors.length; i++) {\n if (!isNullOrUndefined(closest(evt.target, abortSelectors[parseInt(i.toString(), 10)]))) {\n /* istanbul ignore next */\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n return;\n }\n }\n }\n if (this.preventDefault && !isUndefined(evt.changedTouches) && evt.type !== 'touchstart') {\n evt.preventDefault();\n }\n this.element.setAttribute('aria-grabbed', 'true');\n var intCoord = this.getCoordinates(evt);\n this.initialPosition = { x: intCoord.pageX, y: intCoord.pageY };\n if (!this.clone) {\n var pos = this.element.getBoundingClientRect();\n this.getScrollableValues();\n if (evt.clientX === evt.pageX) {\n this.parentScrollX = 0;\n }\n if (evt.clientY === evt.pageY) {\n this.parentScrollY = 0;\n }\n this.relativeXPosition = intCoord.pageX - (pos.left + this.parentScrollX);\n this.relativeYPosition = intCoord.pageY - (pos.top + this.parentScrollY);\n }\n if (this.externalInitialize) {\n this.intDragStart(evt);\n }\n else {\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy, this);\n }\n this.toggleEvents(true);\n if (evt.type !== 'touchstart' && this.isPreventSelect) {\n document.body.classList.add('e-prevent-select');\n }\n this.externalInitialize = false;\n EventHandler.trigger(document.documentElement, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, evt);\n };\n Draggable.prototype.intDragStart = function (evt) {\n this.removeTapholdTimer();\n var isChangeTouch = !isUndefined(evt.changedTouches);\n if (isChangeTouch && (evt.changedTouches.length !== 1)) {\n return;\n }\n var intCordinate = this.getCoordinates(evt);\n var pos;\n var styleProp = getComputedStyle(this.element);\n this.margin = {\n left: parseInt(styleProp.marginLeft, 10),\n top: parseInt(styleProp.marginTop, 10),\n right: parseInt(styleProp.marginRight, 10),\n bottom: parseInt(styleProp.marginBottom, 10)\n };\n var element = this.element;\n if (this.clone && this.dragTarget) {\n var intClosest = closest(evt.target, this.dragTarget);\n if (!isNullOrUndefined(intClosest)) {\n element = intClosest;\n }\n }\n /* istanbul ignore next */\n if (this.isReplaceDragEle) {\n element = this.currentStateCheck(evt.target, element);\n }\n this.offset = this.calculateParentPosition(element);\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var x = this.initialPosition.x - intCordinate.pageX;\n var y = this.initialPosition.y - intCordinate.pageY;\n var distance = Math.sqrt((x * x) + (y * y));\n if ((distance >= this.distance || this.externalInitialize)) {\n var ele = this.getHelperElement(evt);\n if (!ele || isNullOrUndefined(ele)) {\n return;\n }\n if (isChangeTouch) {\n evt.preventDefault();\n }\n var dragTargetElement = this.helperElement = ele;\n this.parentClientRect = this.calculateParentPosition(dragTargetElement.offsetParent);\n if (this.dragStart) {\n var curTarget = this.getProperTargetElement(evt);\n var args = {\n event: evt,\n element: element,\n target: curTarget,\n bindEvents: isBlazor() ? this.bindDragEvents.bind(this) : null,\n dragElement: dragTargetElement\n };\n this.trigger('dragStart', args);\n }\n if (this.dragArea) {\n this.setDragArea();\n }\n else {\n this.dragLimit = { left: 0, right: 0, bottom: 0, top: 0 };\n this.borderWidth = { top: 0, left: 0 };\n }\n pos = { left: this.position.left - this.parentClientRect.left, top: this.position.top - this.parentClientRect.top };\n if (this.clone && !this.enableTailMode) {\n this.diffX = this.position.left - this.offset.left;\n this.diffY = this.position.top - this.offset.top;\n }\n this.getScrollableValues();\n // when drag element has margin-top\n var styles = getComputedStyle(element);\n var marginTop = parseFloat(styles.marginTop);\n /* istanbul ignore next */\n if (this.clone && marginTop !== 0) {\n pos.top += marginTop;\n }\n this.eleTop = !isNaN(parseFloat(styles.top)) ? parseFloat(styles.top) - this.offset.top : 0;\n /* istanbul ignore next */\n // if (this.eleTop > 0) {\n // pos.top += this.eleTop;\n // }\n if (this.enableScrollHandler && !this.clone) {\n pos.top -= this.parentScrollY;\n pos.left -= this.parentScrollX;\n }\n var posValue = this.getProcessedPositionValue({\n top: (pos.top - this.diffY) + 'px',\n left: (pos.left - this.diffX) + 'px'\n });\n if (this.dragArea && typeof this.dragArea !== 'string' && this.dragArea.classList.contains('e-kanban-content') && this.dragArea.style.position === 'relative') {\n pos.top += this.dragArea.scrollTop;\n }\n this.dragElePosition = { top: pos.top, left: pos.left };\n setStyleAttribute(dragTargetElement, this.getDragPosition({ position: 'absolute', left: posValue.left, top: posValue.top }));\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy);\n if (!isBlazor()) {\n this.bindDragEvents(dragTargetElement);\n }\n }\n };\n Draggable.prototype.bindDragEvents = function (dragTargetElement) {\n if (isVisible(dragTargetElement)) {\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDrag, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDragStop, this);\n this.setGlobalDroppables(false, this.element, dragTargetElement);\n }\n else {\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n }\n };\n Draggable.prototype.elementInViewport = function (el) {\n this.top = el.offsetTop;\n this.left = el.offsetLeft;\n this.width = el.offsetWidth;\n this.height = el.offsetHeight;\n while (el.offsetParent) {\n el = el.offsetParent;\n this.top += el.offsetTop;\n this.left += el.offsetLeft;\n }\n return (this.top >= window.pageYOffset &&\n this.left >= window.pageXOffset &&\n (this.top + this.height) <= (window.pageYOffset + window.innerHeight) &&\n (this.left + this.width) <= (window.pageXOffset + window.innerWidth));\n };\n Draggable.prototype.getProcessedPositionValue = function (value) {\n if (this.queryPositionInfo) {\n return this.queryPositionInfo(value);\n }\n return value;\n };\n Draggable.prototype.calculateParentPosition = function (ele) {\n if (isNullOrUndefined(ele)) {\n return { left: 0, top: 0 };\n }\n var rect = ele.getBoundingClientRect();\n var style = getComputedStyle(ele);\n return {\n left: (rect.left + window.pageXOffset) - parseInt(style.marginLeft, 10),\n top: (rect.top + window.pageYOffset) - parseInt(style.marginTop, 10)\n };\n };\n Draggable.prototype.intDrag = function (evt) {\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n if (this.clone && evt.changedTouches && Browser.isDevice && Browser.isTouch) {\n evt.preventDefault();\n }\n var left;\n var top;\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var docHeight = this.getDocumentWidthHeight('Height');\n if (docHeight < this.position.top) {\n this.position.top = docHeight;\n }\n var docWidth = this.getDocumentWidthHeight('Width');\n if (docWidth < this.position.left) {\n this.position.left = docWidth;\n }\n if (this.drag) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('drag', { event: evt, element: this.element, target: curTarget });\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n var flag = true;\n if (this.hoverObject) {\n if (this.hoverObject.instance !== eleObj.instance) {\n this.triggerOutFunction(evt, eleObj);\n }\n else {\n flag = false;\n }\n }\n if (flag) {\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intOver(evt, eleObj.target);\n this.hoverObject = eleObj;\n }\n }\n else if (this.hoverObject) {\n this.triggerOutFunction(evt, eleObj);\n }\n var helperElement = this.droppables[this.scope].helper;\n this.parentClientRect = this.calculateParentPosition(this.helperElement.offsetParent);\n var tLeft = this.parentClientRect.left;\n var tTop = this.parentClientRect.top;\n var intCoord = this.getCoordinates(evt);\n var pagex = intCoord.pageX;\n var pagey = intCoord.pageY;\n var dLeft = this.position.left - this.diffX;\n var dTop = this.position.top - this.diffY;\n var styles = getComputedStyle(helperElement);\n if (this.dragArea) {\n if (this.enableAutoScroll) {\n this.setDragArea();\n }\n if (this.pageX !== pagex || this.skipDistanceCheck) {\n var helperWidth = helperElement.offsetWidth + (parseFloat(styles.marginLeft)\n + parseFloat(styles.marginRight));\n if (this.dragLimit.left > dLeft && dLeft > 0) {\n left = this.dragLimit.left;\n }\n else if (this.dragLimit.right + window.pageXOffset < dLeft + helperWidth && dLeft > 0) {\n left = dLeft - (dLeft - this.dragLimit.right) + window.pageXOffset - helperWidth;\n }\n else {\n left = dLeft < 0 ? this.dragLimit.left : dLeft;\n }\n }\n if (this.pageY !== pagey || this.skipDistanceCheck) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)\n + parseFloat(styles.marginBottom));\n if (this.dragLimit.top > dTop && dTop > 0) {\n top = this.dragLimit.top;\n }\n else if (this.dragLimit.bottom + window.pageYOffset < dTop + helperHeight && dTop > 0) {\n top = dTop - (dTop - this.dragLimit.bottom) + window.pageYOffset - helperHeight;\n }\n else {\n top = dTop < 0 ? this.dragLimit.top : dTop;\n }\n }\n }\n else {\n left = dLeft;\n top = dTop;\n }\n var iTop = tTop + this.borderWidth.top;\n var iLeft = tLeft + this.borderWidth.left;\n if (this.dragProcessStarted) {\n if (isNullOrUndefined(top)) {\n top = this.prevTop;\n }\n if (isNullOrUndefined(left)) {\n left = this.prevLeft;\n }\n }\n var draEleTop;\n var draEleLeft;\n if (this.helperElement.classList.contains('e-treeview')) {\n if (this.dragArea) {\n this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - this.borderWidth.top);\n draEleLeft = (left - iLeft) < 0 ? this.dragLimit.left : (left - this.borderWidth.left);\n }\n else {\n draEleTop = top - this.borderWidth.top;\n draEleLeft = left - this.borderWidth.left;\n }\n }\n else {\n if (this.dragArea) {\n var isDialogEle = this.helperElement.classList.contains('e-dialog');\n this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - iTop);\n draEleLeft = (left - iLeft) < 0 ? isDialogEle ? (left - (iLeft - this.borderWidth.left)) :\n this.dragElePosition.left : (left - iLeft);\n }\n else {\n draEleTop = top - iTop;\n draEleLeft = left - iLeft;\n }\n }\n var marginTop = parseFloat(getComputedStyle(this.element).marginTop);\n // when drag-element has margin-top\n /* istanbul ignore next */\n if (marginTop > 0) {\n if (this.clone) {\n draEleTop += marginTop;\n if (dTop < 0) {\n if ((marginTop + dTop) >= 0) {\n draEleTop = marginTop + dTop;\n }\n else {\n draEleTop -= marginTop;\n }\n }\n if (this.dragArea) {\n draEleTop = (this.dragLimit.bottom < draEleTop) ? this.dragLimit.bottom : draEleTop;\n }\n }\n if ((top - iTop) < 0) {\n if (dTop + marginTop + (helperElement.offsetHeight - iTop) >= 0) {\n var tempDraEleTop = this.dragLimit.top + dTop - iTop;\n if ((tempDraEleTop + marginTop + iTop) < 0) {\n draEleTop -= marginTop + iTop;\n }\n else {\n draEleTop = tempDraEleTop;\n }\n }\n else {\n draEleTop -= marginTop + iTop;\n }\n }\n }\n if (this.dragArea && this.helperElement.classList.contains('e-treeview')) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)\n + parseFloat(styles.marginBottom));\n draEleTop = (draEleTop + helperHeight) > this.dragLimit.bottom ? (this.dragLimit.bottom - helperHeight) : draEleTop;\n }\n /* istanbul ignore next */\n // if(this.eleTop > 0) {\n // draEleTop += this.eleTop;\n // }\n if (this.enableScrollHandler && !this.clone) {\n draEleTop -= this.parentScrollY;\n draEleLeft -= this.parentScrollX;\n }\n if (this.dragArea && typeof this.dragArea !== 'string' && this.dragArea.classList.contains('e-kanban-content') && this.dragArea.style.position === 'relative') {\n draEleTop += this.dragArea.scrollTop;\n }\n var dragValue = this.getProcessedPositionValue({ top: draEleTop + 'px', left: draEleLeft + 'px' });\n setStyleAttribute(helperElement, this.getDragPosition(dragValue));\n if (!this.elementInViewport(helperElement) && this.enableAutoScroll && !this.helperElement.classList.contains('e-treeview')) {\n this.helperElement.scrollIntoView();\n }\n var elements = document.querySelectorAll(':hover');\n if (this.enableAutoScroll && this.helperElement.classList.contains('e-treeview')) {\n if (elements.length === 0) {\n elements = this.getPathElements(evt);\n }\n var scrollParent = this.getScrollParent(elements, false);\n if (this.elementInViewport(this.helperElement)) {\n this.getScrollPosition(scrollParent, draEleTop);\n }\n else if (!this.elementInViewport(this.helperElement)) {\n elements = [].slice.call(document.querySelectorAll(':hover'));\n if (elements.length === 0) {\n elements = this.getPathElements(evt);\n }\n scrollParent = this.getScrollParent(elements, true);\n this.getScrollPosition(scrollParent, draEleTop);\n }\n }\n this.dragProcessStarted = true;\n this.prevLeft = left;\n this.prevTop = top;\n this.position.left = left;\n this.position.top = top;\n this.pageX = pagex;\n this.pageY = pagey;\n };\n Draggable.prototype.getScrollParent = function (node, reverse) {\n var nodeEl = reverse ? node.reverse() : node;\n var hasScroll;\n for (var i = nodeEl.length - 1; i >= 0; i--) {\n hasScroll = window.getComputedStyle(nodeEl[parseInt(i.toString(), 10)])['overflow-y'];\n if ((hasScroll === 'auto' || hasScroll === 'scroll')\n && nodeEl[parseInt(i.toString(), 10)].scrollHeight > nodeEl[parseInt(i.toString(), 10)].clientHeight) {\n return nodeEl[parseInt(i.toString(), 10)];\n }\n }\n hasScroll = window.getComputedStyle(document.scrollingElement)['overflow-y'];\n if (hasScroll === 'visible') {\n document.scrollingElement.style.overflow = 'auto';\n return document.scrollingElement;\n }\n };\n Draggable.prototype.getScrollPosition = function (nodeEle, draEleTop) {\n if (nodeEle && nodeEle === document.scrollingElement) {\n if ((nodeEle.clientHeight + document.scrollingElement.scrollTop - this.helperElement.clientHeight) < draEleTop\n && nodeEle.getBoundingClientRect().height + this.parentClientRect.top > draEleTop) {\n nodeEle.scrollTop += this.helperElement.clientHeight;\n }\n else if (nodeEle.scrollTop > draEleTop - this.helperElement.clientHeight) {\n nodeEle.scrollTop -= this.helperElement.clientHeight;\n }\n }\n else if (nodeEle && nodeEle !== document.scrollingElement) {\n var docScrollTop = document.scrollingElement.scrollTop;\n var helperClientHeight = this.helperElement.clientHeight;\n if ((nodeEle.clientHeight + nodeEle.getBoundingClientRect().top - helperClientHeight + docScrollTop) < draEleTop) {\n nodeEle.scrollTop += this.helperElement.clientHeight;\n }\n else if (nodeEle.getBoundingClientRect().top > (draEleTop - helperClientHeight - docScrollTop)) {\n nodeEle.scrollTop -= this.helperElement.clientHeight;\n }\n }\n };\n Draggable.prototype.getPathElements = function (evt) {\n var elementTop = evt.clientX > 0 ? evt.clientX : 0;\n var elementLeft = evt.clientY > 0 ? evt.clientY : 0;\n return document.elementsFromPoint(elementTop, elementLeft);\n };\n Draggable.prototype.triggerOutFunction = function (evt, eleObj) {\n this.hoverObject.instance.intOut(evt, eleObj.target);\n this.hoverObject.instance.dragData[this.scope] = null;\n this.hoverObject = null;\n };\n Draggable.prototype.getDragPosition = function (dragValue) {\n var temp = extend({}, dragValue);\n if (this.axis) {\n if (this.axis === 'x') {\n delete temp.top;\n }\n else if (this.axis === 'y') {\n delete temp.left;\n }\n }\n return temp;\n };\n Draggable.prototype.getDocumentWidthHeight = function (str) {\n var docBody = document.body;\n var docEle = document.documentElement;\n var returnValue = Math.max(docBody['scroll' + str], docEle['scroll' + str], docBody['offset' + str], docEle['offset' + str], docEle['client' + str]);\n return returnValue;\n };\n Draggable.prototype.intDragStop = function (evt) {\n this.dragProcessStarted = false;\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n var type = ['touchend', 'pointerup', 'mouseup'];\n if (type.indexOf(evt.type) !== -1) {\n if (this.dragStop) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('dragStop', { event: evt, element: this.element, target: curTarget, helper: this.helperElement });\n }\n this.intDestroy(evt);\n }\n else {\n this.element.setAttribute('aria-grabbed', 'false');\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n eleObj.instance.dragStopCalled = true;\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intDrop(evt, eleObj.target);\n }\n this.setGlobalDroppables(true);\n document.body.classList.remove('e-prevent-select');\n };\n /**\n * @param {MouseEvent | TouchEvent} evt ?\n * @returns {void}\n * @private\n */\n Draggable.prototype.intDestroy = function (evt) {\n this.dragProcessStarted = false;\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n this.element.setAttribute('aria-grabbed', 'false');\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDragStop);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy);\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDrag);\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n };\n // triggers when property changed\n Draggable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Draggable.prototype.getModuleName = function () {\n return 'draggable';\n };\n Draggable.prototype.isDragStarted = function (change) {\n if (change) {\n isDraggedObject.isDragged = !isDraggedObject.isDragged;\n }\n return isDraggedObject.isDragged;\n };\n Draggable.prototype.setDragArea = function () {\n var eleWidthBound;\n var eleHeightBound;\n var top = 0;\n var left = 0;\n var ele;\n var type = typeof this.dragArea;\n if (type === 'string') {\n ele = select(this.dragArea);\n }\n else {\n ele = this.dragArea;\n }\n if (ele) {\n var elementArea = ele.getBoundingClientRect();\n eleWidthBound = ele.scrollWidth ? ele.scrollWidth : elementArea.right - elementArea.left;\n eleHeightBound = ele.scrollHeight ? (this.dragArea && !isNullOrUndefined(this.helperElement) && this.helperElement.classList.contains('e-treeview')) ? ele.clientHeight : ele.scrollHeight : elementArea.bottom - elementArea.top;\n var keys = ['Top', 'Left', 'Bottom', 'Right'];\n var styles = getComputedStyle(ele);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[parseInt(i.toString(), 10)];\n var tborder = styles['border' + key + 'Width'];\n var tpadding = styles['padding' + key];\n var lowerKey = key.toLowerCase();\n this.borderWidth[\"\" + lowerKey] = isNaN(parseFloat(tborder)) ? 0 : parseFloat(tborder);\n this.padding[\"\" + lowerKey] = isNaN(parseFloat(tpadding)) ? 0 : parseFloat(tpadding);\n }\n if (this.dragArea && !isNullOrUndefined(this.helperElement) && this.helperElement.classList.contains('e-treeview')) {\n top = elementArea.top + document.scrollingElement.scrollTop;\n }\n else {\n top = elementArea.top;\n }\n left = elementArea.left;\n this.dragLimit.left = left + this.borderWidth.left + this.padding.left;\n this.dragLimit.top = ele.offsetTop + this.borderWidth.top + this.padding.top;\n this.dragLimit.right = left + eleWidthBound - (this.borderWidth.right + this.padding.right);\n this.dragLimit.bottom = top + eleHeightBound - (this.borderWidth.bottom + this.padding.bottom);\n }\n };\n Draggable.prototype.getProperTargetElement = function (evt) {\n var intCoord = this.getCoordinates(evt);\n var ele;\n var prevStyle = this.helperElement.style.pointerEvents || '';\n var isPointer = evt.type.indexOf('pointer') !== -1 && Browser.info.name === 'safari' && parseInt(Browser.info.version, 10) > 12;\n if (compareElementParent(evt.target, this.helperElement) || evt.type.indexOf('touch') !== -1 || isPointer) {\n this.helperElement.style.pointerEvents = 'none';\n ele = document.elementFromPoint(intCoord.clientX, intCoord.clientY);\n this.helperElement.style.pointerEvents = prevStyle;\n }\n else {\n ele = evt.target;\n }\n return ele;\n };\n /* istanbul ignore next */\n Draggable.prototype.currentStateCheck = function (ele, oldEle) {\n var elem;\n if (!isNullOrUndefined(this.currentStateTarget) && this.currentStateTarget !== ele) {\n elem = this.currentStateTarget;\n }\n else {\n elem = !isNullOrUndefined(oldEle) ? oldEle : ele;\n }\n return elem;\n };\n Draggable.prototype.getMousePosition = function (evt, isdragscroll) {\n var dragEle = evt.srcElement !== undefined ? evt.srcElement : evt.target;\n var intCoord = this.getCoordinates(evt);\n var pageX;\n var pageY;\n var isOffsetParent = isNullOrUndefined(dragEle.offsetParent);\n /* istanbul ignore next */\n if (isdragscroll) {\n pageX = this.clone ? intCoord.pageX :\n (intCoord.pageX + (isOffsetParent ? 0 : dragEle.offsetParent.scrollLeft)) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY :\n (intCoord.pageY + (isOffsetParent ? 0 : dragEle.offsetParent.scrollTop)) - this.relativeYPosition;\n }\n else {\n pageX = this.clone ? intCoord.pageX : (intCoord.pageX + window.pageXOffset) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY : (intCoord.pageY + window.pageYOffset) - this.relativeYPosition;\n }\n if (document.scrollingElement && (!isdragscroll && !this.clone)) {\n var ele = document.scrollingElement;\n var isVerticalScroll = ele.scrollHeight > 0 && ele.scrollHeight > ele.clientHeight && ele.scrollTop > 0;\n var isHorrizontalScroll = ele.scrollWidth > 0 && ele.scrollWidth > ele.clientWidth && ele.scrollLeft > 0;\n pageX = isHorrizontalScroll ? pageX - ele.scrollLeft : pageX;\n pageY = isVerticalScroll ? pageY - ele.scrollTop : pageY;\n }\n return {\n left: pageX - (this.margin.left + this.cursorAt.left),\n top: pageY - (this.margin.top + this.cursorAt.top)\n };\n };\n Draggable.prototype.getCoordinates = function (evt) {\n if (evt.type.indexOf('touch') > -1) {\n return evt.changedTouches[0];\n }\n return evt;\n };\n Draggable.prototype.getHelperElement = function (evt) {\n var element;\n if (this.clone) {\n if (this.helper) {\n element = this.helper({ sender: evt, element: this.target });\n }\n else {\n element = createElement('div', { className: 'e-drag-helper e-block-touch', innerHTML: 'Draggable' });\n document.body.appendChild(element);\n }\n }\n else {\n element = this.element;\n }\n return element;\n };\n Draggable.prototype.setGlobalDroppables = function (reset, drag, helper) {\n this.droppables[this.scope] = reset ? null : {\n draggable: drag,\n helper: helper,\n draggedElement: this.element\n };\n };\n Draggable.prototype.checkTargetElement = function (evt) {\n var target = this.getProperTargetElement(evt);\n var dropIns = this.getDropInstance(target);\n if (!dropIns && target && !isNullOrUndefined(target.parentNode)) {\n var parent_1 = closest(target.parentNode, '.e-droppable') || target.parentElement;\n if (parent_1) {\n dropIns = this.getDropInstance(parent_1);\n }\n }\n return { target: target, instance: dropIns };\n };\n Draggable.prototype.getDropInstance = function (ele) {\n var name = 'getModuleName';\n var drop;\n var eleInst = ele && ele.ej2_instances;\n if (eleInst) {\n for (var _i = 0, eleInst_1 = eleInst; _i < eleInst_1.length; _i++) {\n var inst = eleInst_1[_i];\n if (inst[\"\" + name]() === 'droppable') {\n drop = inst;\n break;\n }\n }\n }\n return drop;\n };\n Draggable.prototype.destroy = function () {\n this.toggleEvents(true);\n _super.prototype.destroy.call(this);\n };\n var Draggable_1;\n __decorate([\n Complex({}, Position)\n ], Draggable.prototype, \"cursorAt\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"clone\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"dragArea\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"isDragScroll\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"isReplaceDragEle\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"isPreventSelect\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"dragStop\", void 0);\n __decorate([\n Property(1)\n ], Draggable.prototype, \"distance\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"handle\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"abort\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"helper\", void 0);\n __decorate([\n Property('default')\n ], Draggable.prototype, \"scope\", void 0);\n __decorate([\n Property('')\n ], Draggable.prototype, \"dragTarget\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"axis\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"queryPositionInfo\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableTailMode\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"skipDistanceCheck\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"preventDefault\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableAutoScroll\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableTapHold\", void 0);\n __decorate([\n Property(750)\n ], Draggable.prototype, \"tapHoldThreshold\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableScrollHandler\", void 0);\n Draggable = Draggable_1 = __decorate([\n NotifyPropertyChanges\n ], Draggable);\n return Draggable;\n}(Base));\nexport { Draggable };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible, matches } from './dom';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { compareElementParent } from './util';\n/**\n * Droppable Module provides support to enable droppable functionality in Dom Elements.\n * ```html\n *
Droppable
\n * \n * ```\n */\nvar Droppable = /** @class */ (function (_super) {\n __extends(Droppable, _super);\n function Droppable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.mouseOver = false;\n _this.dragData = {};\n _this.dragStopCalled = false;\n _this.bind();\n return _this;\n }\n Droppable.prototype.bind = function () {\n this.wireEvents();\n };\n Droppable.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDrop, this);\n };\n // triggers when property changed\n Droppable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Droppable.prototype.getModuleName = function () {\n return 'droppable';\n };\n Droppable.prototype.intOver = function (event, element) {\n if (!this.mouseOver) {\n var drag = this.dragData[this.scope];\n this.trigger('over', { event: event, target: element, dragData: drag });\n this.mouseOver = true;\n }\n };\n Droppable.prototype.intOut = function (event, element) {\n if (this.mouseOver) {\n this.trigger('out', { evt: event, target: element });\n this.mouseOver = false;\n }\n };\n Droppable.prototype.intDrop = function (evt, element) {\n if (!this.dragStopCalled) {\n return;\n }\n else {\n this.dragStopCalled = false;\n }\n var accept = true;\n var drag = this.dragData[this.scope];\n var isDrag = drag ? (drag.helper && isVisible(drag.helper)) : false;\n var area;\n if (isDrag) {\n area = this.isDropArea(evt, drag.helper, element);\n if (this.accept) {\n accept = matches(drag.helper, this.accept);\n }\n }\n if (isDrag && this.drop && area.canDrop && accept) {\n this.trigger('drop', { event: evt, target: area.target, droppedElement: drag.helper, dragData: drag });\n }\n this.mouseOver = false;\n };\n Droppable.prototype.isDropArea = function (evt, helper, element) {\n var area = { canDrop: true, target: element || evt.target };\n var isTouch = evt.type === 'touchend';\n if (isTouch || area.target === helper) {\n helper.style.display = 'none';\n var coord = isTouch ? (evt.changedTouches[0]) : evt;\n var ele = document.elementFromPoint(coord.clientX, coord.clientY);\n area.canDrop = false;\n area.canDrop = compareElementParent(ele, this.element);\n if (area.canDrop) {\n area.target = ele;\n }\n helper.style.display = '';\n }\n return area;\n };\n Droppable.prototype.destroy = function () {\n EventHandler.remove(this.element, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDrop);\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Property()\n ], Droppable.prototype, \"accept\", void 0);\n __decorate([\n Property('default')\n ], Droppable.prototype, \"scope\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"drop\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"over\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"out\", void 0);\n Droppable = __decorate([\n NotifyPropertyChanges\n ], Droppable);\n return Droppable;\n}(Base));\nexport { Droppable };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Base } from './base';\nvar keyCode = {\n 'backspace': 8,\n 'tab': 9,\n 'enter': 13,\n 'shift': 16,\n 'control': 17,\n 'alt': 18,\n 'pause': 19,\n 'capslock': 20,\n 'space': 32,\n 'escape': 27,\n 'pageup': 33,\n 'pagedown': 34,\n 'end': 35,\n 'home': 36,\n 'leftarrow': 37,\n 'uparrow': 38,\n 'rightarrow': 39,\n 'downarrow': 40,\n 'insert': 45,\n 'delete': 46,\n 'f1': 112,\n 'f2': 113,\n 'f3': 114,\n 'f4': 115,\n 'f5': 116,\n 'f6': 117,\n 'f7': 118,\n 'f8': 119,\n 'f9': 120,\n 'f10': 121,\n 'f11': 122,\n 'f12': 123,\n 'semicolon': 186,\n 'plus': 187,\n 'comma': 188,\n 'minus': 189,\n 'dot': 190,\n 'forwardslash': 191,\n 'graveaccent': 192,\n 'openbracket': 219,\n 'backslash': 220,\n 'closebracket': 221,\n 'singlequote': 222\n};\n/**\n * KeyboardEvents class enables you to bind key action desired key combinations for ex., Ctrl+A, Delete, Alt+Space etc.\n * ```html\n *
;\n * \n * ```\n */\nvar KeyboardEvents = /** @class */ (function (_super) {\n __extends(KeyboardEvents, _super);\n /**\n * Initializes the KeyboardEvents\n *\n * @param {HTMLElement} element ?\n * @param {KeyboardEventsModel} options ?\n */\n function KeyboardEvents(element, options) {\n var _this = _super.call(this, options, element) || this;\n /**\n * To handle a key press event returns null\n *\n * @param {KeyboardEventArgs} e ?\n * @returns {void} ?\n */\n _this.keyPressHandler = function (e) {\n var isAltKey = e.altKey;\n var isCtrlKey = e.ctrlKey;\n var isShiftKey = e.shiftKey;\n var curkeyCode = e.which;\n var keys = Object.keys(_this.keyConfigs);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n var configCollection = _this.keyConfigs[\"\" + key].split(',');\n for (var _a = 0, configCollection_1 = configCollection; _a < configCollection_1.length; _a++) {\n var rconfig = configCollection_1[_a];\n var rKeyObj = KeyboardEvents_1.getKeyConfigData(rconfig.trim());\n if (isAltKey === rKeyObj.altKey && isCtrlKey === rKeyObj.ctrlKey &&\n isShiftKey === rKeyObj.shiftKey && curkeyCode === rKeyObj.keyCode) {\n e.action = key;\n if (_this.keyAction) {\n _this.keyAction(e);\n }\n }\n }\n }\n };\n _this.bind();\n return _this;\n }\n KeyboardEvents_1 = KeyboardEvents;\n /**\n * Unwire bound events and destroy the instance.\n *\n * @returns {void} ?\n */\n KeyboardEvents.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n /**\n * Function can be used to specify certain action if a property is changed\n *\n * @param {KeyboardEventsModel} newProp ?\n * @param {KeyboardEventsModel} oldProp ?\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.onPropertyChanged = function (newProp, oldProp) {\n // No code are needed\n };\n KeyboardEvents.prototype.bind = function () {\n this.wireEvents();\n };\n /**\n * To get the module name, returns 'keyboard'.\n *\n * @returns {string} ?\n * @private\n */\n KeyboardEvents.prototype.getModuleName = function () {\n return 'keyboard';\n };\n /**\n * Wiring event handlers to events\n *\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.wireEvents = function () {\n this.element.addEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * Unwiring event handlers to events\n *\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.unwireEvents = function () {\n this.element.removeEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * To get the key configuration data\n *\n * @param {string} config - configuration data\n * @returns {KeyData} ?\n */\n KeyboardEvents.getKeyConfigData = function (config) {\n if (config in this.configCache) {\n return this.configCache[\"\" + config];\n }\n var keys = config.toLowerCase().split('+');\n var keyData = {\n altKey: (keys.indexOf('alt') !== -1 ? true : false),\n ctrlKey: (keys.indexOf('ctrl') !== -1 ? true : false),\n shiftKey: (keys.indexOf('shift') !== -1 ? true : false),\n keyCode: null\n };\n if (keys[keys.length - 1].length > 1 && !!Number(keys[keys.length - 1])) {\n keyData.keyCode = Number(keys[keys.length - 1]);\n }\n else {\n keyData.keyCode = KeyboardEvents_1.getKeyCode(keys[keys.length - 1]);\n }\n KeyboardEvents_1.configCache[\"\" + config] = keyData;\n return keyData;\n };\n // Return the keycode value as string\n KeyboardEvents.getKeyCode = function (keyVal) {\n return keyCode[\"\" + keyVal] || keyVal.toUpperCase().charCodeAt(0);\n };\n var KeyboardEvents_1;\n KeyboardEvents.configCache = {};\n __decorate([\n Property({})\n ], KeyboardEvents.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property('keyup')\n ], KeyboardEvents.prototype, \"eventName\", void 0);\n __decorate([\n Event()\n ], KeyboardEvents.prototype, \"keyAction\", void 0);\n KeyboardEvents = KeyboardEvents_1 = __decorate([\n NotifyPropertyChanges\n ], KeyboardEvents);\n return KeyboardEvents;\n}(Base));\nexport { KeyboardEvents };\n","import { extend, isNullOrUndefined } from './util';\nimport { defaultCulture } from './internationalization';\n/**\n * L10n modules provides localized text for different culture.\n * ```typescript\n * import {setCulture} from '@syncfusion/ts-base-library';\n * //load global locale object common for all components.\n * L10n.load({\n * 'fr-BE': {\n * 'button': {\n * 'check': 'vérifié'\n * }\n * }\n * });\n * //set globale default locale culture.\n * setCulture('fr-BE');\n * let instance: L10n = new L10n('button', {\n * check: 'checked'\n * });\n * //Get locale text for current property.\n * instance.getConstant('check');\n * //Change locale culture in a component.\n * instance.setLocale('en-US');\n * ```\n */\nvar L10n = /** @class */ (function () {\n /**\n * Constructor\n *\n * @param {string} controlName ?\n * @param {Object} localeStrings ?\n * @param {string} locale ?\n */\n function L10n(controlName, localeStrings, locale) {\n this.controlName = controlName;\n this.localeStrings = localeStrings;\n this.setLocale(locale || defaultCulture);\n }\n /**\n * Sets the locale text\n *\n * @param {string} locale ?\n * @returns {void} ?\n */\n L10n.prototype.setLocale = function (locale) {\n var intLocale = this.intGetControlConstant(L10n.locale, locale);\n this.currentLocale = intLocale || this.localeStrings;\n };\n /**\n * Sets the global locale for all components.\n *\n * @param {Object} localeObject - specifies the localeObject to be set as global locale.\n * @returns {void} ?\n */\n L10n.load = function (localeObject) {\n this.locale = extend(this.locale, localeObject, {}, true);\n };\n /**\n * Returns current locale text for the property based on the culture name and control name.\n *\n * @param {string} prop - specifies the property for which localize text to be returned.\n * @returns {string} ?\n */\n L10n.prototype.getConstant = function (prop) {\n // Removed conditional operator because this method does not return correct value when passing 0 as value in localization\n if (!isNullOrUndefined(this.currentLocale[\"\" + prop])) {\n return this.currentLocale[\"\" + prop];\n }\n else {\n return this.localeStrings[\"\" + prop] || '';\n }\n };\n /**\n * Returns the control constant object for current object and the locale specified.\n *\n * @param {Object} curObject ?\n * @param {string} locale ?\n * @returns {Object} ?\n */\n L10n.prototype.intGetControlConstant = function (curObject, locale) {\n if ((curObject)[\"\" + locale]) {\n return (curObject)[\"\" + locale][this.controlName];\n }\n return null;\n };\n L10n.locale = {};\n return L10n;\n}());\nexport { L10n };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { extend } from './util';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Browser } from './browser';\nimport { Base } from './base';\nimport { ChildProperty } from './child-property';\nimport { EventHandler } from './event-handler';\n/**\n * SwipeSettings is a framework module that provides support to handle swipe event like swipe up, swipe right, etc..,\n */\nvar SwipeSettings = /** @class */ (function (_super) {\n __extends(SwipeSettings, _super);\n function SwipeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(50)\n ], SwipeSettings.prototype, \"swipeThresholdDistance\", void 0);\n return SwipeSettings;\n}(ChildProperty));\nexport { SwipeSettings };\nvar swipeRegex = /(Up|Down)/;\n/**\n * Touch class provides support to handle the touch event like tap, double tap, tap hold, etc..,\n * ```typescript\n * let node: HTMLElement;\n * let touchObj: Touch = new Touch({\n * element: node,\n * tap: function (e) {\n * // tap handler function code\n * }\n * tapHold: function (e) {\n * // tap hold handler function code\n * }\n * scroll: function (e) {\n * // scroll handler function code\n * }\n * swipe: function (e) {\n * // swipe handler function code\n * }\n * });\n * ```\n */\nvar Touch = /** @class */ (function (_super) {\n __extends(Touch, _super);\n /* End-Properties */\n function Touch(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.touchAction = true;\n _this.tapCount = 0;\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.startEvent = function (evt) {\n if (_this.touchAction === true) {\n var point = _this.updateChangeTouches(evt);\n if (evt.changedTouches !== undefined) {\n _this.touchAction = false;\n }\n _this.isTouchMoved = false;\n _this.movedDirection = '';\n _this.startPoint = _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n _this.startEventData = point;\n _this.hScrollLocked = _this.vScrollLocked = false;\n _this.tStampStart = Date.now();\n _this.timeOutTapHold = setTimeout(function () { _this.tapHoldEvent(evt); }, _this.tapHoldThreshold);\n EventHandler.add(_this.element, Browser.touchMoveEvent, _this.moveEvent, _this);\n EventHandler.add(_this.element, Browser.touchEndEvent, _this.endEvent, _this);\n EventHandler.add(_this.element, Browser.touchCancelEvent, _this.cancelEvent, _this);\n }\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.moveEvent = function (evt) {\n var point = _this.updateChangeTouches(evt);\n _this.movedPoint = point;\n _this.isTouchMoved = !(point.clientX === _this.startPoint.clientX && point.clientY === _this.startPoint.clientY);\n var eScrollArgs = {};\n if (_this.isTouchMoved) {\n clearTimeout(_this.timeOutTapHold);\n _this.calcScrollPoints(evt);\n var scrollArg = {\n startEvents: _this.startEventData,\n originalEvent: evt, startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY, distanceX: _this.distanceX,\n distanceY: _this.distanceY, scrollDirection: _this.scrollDirection,\n velocity: _this.getVelocity(point)\n };\n eScrollArgs = extend(eScrollArgs, {}, scrollArg);\n _this.trigger('scroll', eScrollArgs);\n _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n }\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.cancelEvent = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n _this.tapCount = 0;\n _this.swipeFn(evt);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.endEvent = function (evt) {\n _this.swipeFn(evt);\n if (!_this.isTouchMoved) {\n if (typeof _this.tap === 'function') {\n _this.trigger('tap', { originalEvent: evt, tapCount: ++_this.tapCount });\n _this.timeOutTap = setTimeout(function () {\n _this.tapCount = 0;\n }, _this.tapThreshold);\n }\n }\n _this.modeclear();\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.swipeFn = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n var point = _this.updateChangeTouches(evt);\n var diffX = point.clientX - _this.startPoint.clientX;\n var diffY = point.clientY - _this.startPoint.clientY;\n diffX = Math.floor(diffX < 0 ? -1 * diffX : diffX);\n diffY = Math.floor(diffY < 0 ? -1 * diffY : diffX);\n _this.isTouchMoved = diffX > 1 || diffY > 1;\n var isFirefox = (/Firefox/).test(Browser.userAgent);\n if (isFirefox && point.clientX === 0 && point.clientY === 0 && evt.type === 'mouseup') {\n _this.isTouchMoved = false;\n }\n _this.endPoint = point;\n _this.calcPoints(evt);\n var swipeArgs = {\n originalEvent: evt,\n startEvents: _this.startEventData,\n startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY,\n distanceX: _this.distanceX, distanceY: _this.distanceY, swipeDirection: _this.movedDirection,\n velocity: _this.getVelocity(point)\n };\n if (_this.isTouchMoved) {\n var tDistance = _this.swipeSettings.swipeThresholdDistance;\n var eSwipeArgs = extend(undefined, _this.defaultArgs, swipeArgs);\n var canTrigger = false;\n var ele = _this.element;\n var scrollBool = _this.isScrollable(ele);\n var moved = swipeRegex.test(_this.movedDirection);\n if ((tDistance < _this.distanceX && !moved) || (tDistance < _this.distanceY && moved)) {\n if (!scrollBool) {\n canTrigger = true;\n }\n else {\n canTrigger = _this.checkSwipe(ele, moved);\n }\n }\n if (canTrigger) {\n _this.trigger('swipe', eSwipeArgs);\n }\n }\n _this.modeclear();\n };\n _this.modeclear = function () {\n _this.modeClear = setTimeout(function () {\n _this.touchAction = true;\n }, (typeof _this.tap !== 'function' ? 0 : 20));\n _this.lastTapTime = new Date().getTime();\n EventHandler.remove(_this.element, Browser.touchMoveEvent, _this.moveEvent);\n EventHandler.remove(_this.element, Browser.touchEndEvent, _this.endEvent);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n _this.bind();\n return _this;\n }\n // triggers when property changed\n /**\n *\n * @private\n * @param {TouchModel} newProp ?\n * @param {TouchModel} oldProp ?\n * @returns {void} ?\n */\n Touch.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Touch.prototype.bind = function () {\n this.wireEvents();\n if (Browser.isIE) {\n this.element.classList.add('e-block-touch');\n }\n };\n /**\n * To destroy the touch instance.\n *\n * @returns {void}\n */\n Touch.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n // Need to changes the event binding once we updated the event handler.\n Touch.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.touchStartEvent, this.startEvent, this);\n };\n Touch.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.startEvent);\n };\n /**\n * Returns module name as touch\n *\n * @returns {string} ?\n * @private\n */\n Touch.prototype.getModuleName = function () {\n return 'touch';\n };\n /**\n * Returns if the HTML element is Scrollable.\n *\n * @param {HTMLElement} element - HTML Element to check if Scrollable.\n * @returns {boolean} ?\n */\n Touch.prototype.isScrollable = function (element) {\n var eleStyle = getComputedStyle(element);\n var style = eleStyle.overflow + eleStyle.overflowX + eleStyle.overflowY;\n if ((/(auto|scroll)/).test(style)) {\n return true;\n }\n return false;\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n Touch.prototype.tapHoldEvent = function (evt) {\n this.tapCount = 0;\n this.touchAction = true;\n EventHandler.remove(this.element, Browser.touchMoveEvent, this.moveEvent);\n EventHandler.remove(this.element, Browser.touchEndEvent, this.endEvent);\n var eTapArgs = { originalEvent: evt };\n this.trigger('tapHold', eTapArgs);\n EventHandler.remove(this.element, Browser.touchCancelEvent, this.cancelEvent);\n };\n Touch.prototype.calcPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.startPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.startPoint.clientY)));\n if (this.distanceX > this.distanceY) {\n this.movedDirection = (point.clientX > this.startPoint.clientX) ? 'Right' : 'Left';\n }\n else {\n this.movedDirection = (point.clientY < this.startPoint.clientY) ? 'Up' : 'Down';\n }\n };\n Touch.prototype.calcScrollPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.lastMovedPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.lastMovedPoint.clientY)));\n if ((this.distanceX > this.distanceY || this.hScrollLocked === true) && this.vScrollLocked === false) {\n this.scrollDirection = (point.clientX > this.lastMovedPoint.clientX) ? 'Right' : 'Left';\n this.hScrollLocked = true;\n }\n else {\n this.scrollDirection = (point.clientY < this.lastMovedPoint.clientY) ? 'Up' : 'Down';\n this.vScrollLocked = true;\n }\n };\n Touch.prototype.getVelocity = function (pnt) {\n var newX = pnt.clientX;\n var newY = pnt.clientY;\n var newT = Date.now();\n var xDist = newX - this.startPoint.clientX;\n var yDist = newY - this.startPoint.clientX;\n var interval = newT - this.tStampStart;\n return Math.sqrt(xDist * xDist + yDist * yDist) / interval;\n };\n Touch.prototype.checkSwipe = function (ele, flag) {\n var keys = ['scroll', 'offset'];\n var temp = flag ? ['Height', 'Top'] : ['Width', 'Left'];\n if ((ele[keys[0] + temp[0]] <= ele[keys[1] + temp[0]])) {\n return true;\n }\n return (ele[keys[0] + temp[1]] === 0) ||\n (ele[keys[1] + temp[0]] + ele[keys[0] + temp[1]] >= ele[keys[0] + temp[0]]);\n };\n Touch.prototype.updateChangeTouches = function (evt) {\n var point = evt.changedTouches && evt.changedTouches.length !== 0 ? evt.changedTouches[0] : evt;\n return point;\n };\n __decorate([\n Event()\n ], Touch.prototype, \"tap\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"tapHold\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"swipe\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"scroll\", void 0);\n __decorate([\n Property(350)\n ], Touch.prototype, \"tapThreshold\", void 0);\n __decorate([\n Property(750)\n ], Touch.prototype, \"tapHoldThreshold\", void 0);\n __decorate([\n Complex({}, SwipeSettings)\n ], Touch.prototype, \"swipeSettings\", void 0);\n Touch = __decorate([\n NotifyPropertyChanges\n ], Touch);\n return Touch;\n}(Base));\nexport { Touch };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Template Engine\n */\nvar LINES = new RegExp('\\\\n|\\\\r|\\\\s\\\\s+', 'g');\nvar QUOTES = new RegExp(/'|\"/g);\nvar IF_STMT = new RegExp('if ?\\\\(');\nvar ELSEIF_STMT = new RegExp('else if ?\\\\(');\nvar ELSE_STMT = new RegExp('else');\nvar FOR_STMT = new RegExp('for ?\\\\(');\nvar IF_OR_FOR = new RegExp('(/if|/for)');\nvar CALL_FUNCTION = new RegExp('\\\\((.*)\\\\)', '');\nvar NOT_NUMBER = new RegExp('^[0-9]+$', 'g');\nvar WORD = new RegExp('[\\\\w\"\\'.\\\\s+]+', 'g');\nvar DBL_QUOTED_STR = new RegExp('\"(.*?)\"', 'g');\nvar WORDIF = new RegExp('[\\\\w\"\\'@#$.\\\\s-+]+', 'g');\nvar exp = new RegExp('\\\\${([^}]*)}', 'g');\n// let cachedTemplate: Object = {};\nvar ARR_OBJ = /^\\..*/gm;\nvar SINGLE_SLASH = /\\\\/gi;\nvar DOUBLE_SLASH = /\\\\\\\\/gi;\nvar WORDFUNC = new RegExp('[\\\\w\"\\'@#$.\\\\s+]+', 'g');\nvar WINDOWFUNC = /\\window\\./gm;\n/**\n * The function to set regular expression for template expression string.\n *\n * @param {RegExp} value - Value expression.\n * @returns {RegExp} ?\n * @private\n */\nexport function expression(value) {\n if (value) {\n exp = value;\n }\n return exp;\n}\n// /**\n// * To render the template string from the given data.\n// * @param {string} template - String Template.\n// * @param {Object[]|JSON} data - DataSource for the template.\n// * @param {Object} helper? - custom helper object.\n// */\n// export function template(template: string, data: JSON, helper?: Object): string {\n// let hash: string = hashCode(template);\n// let tmpl: Function;\n// if (!cachedTemplate[hash]) {\n// tmpl = cachedTemplate[hash] = compile(template, helper);\n// } else {\n// tmpl = cachedTemplate[hash];\n// }\n// return tmpl(data);\n// }\n/**\n * Compile the template string into template function.\n *\n * @param {string | Function} template - The template string which is going to convert.\n * @param {Object} helper - Helper functions as an object.\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n * @private\n */\nexport function compile(template, helper, ignorePrefix) {\n if (typeof template === 'function') {\n return template;\n }\n else {\n var argName = 'data';\n var evalExpResult = evalExp(template, argName, helper, ignorePrefix);\n var condtion = \"var valueRegEx = (/value=\\\\'([A-Za-z0-9 _]*)((.)([\\\\w)(!-;?-\\u25A0\\\\s]+)['])/g);\\n var hrefRegex = (/(?:href)([\\\\s='\\\"./]+)([\\\\w-./?=&\\\\\\\\#\\\"]+)((.)([\\\\w)(!-;/?-\\u25A0\\\\s]+)['])/g);\\n if(str.match(valueRegEx)){\\n var check = str.match(valueRegEx);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(valueRegEx)[i].split('value=')[1];\\n var change = check1.match(/^'/) !== null ? check1.replace(/^'/, '\\\"') : check1;\\n change =change.match(/.$/)[0] === '\\\\'' ? change.replace(/.$/,'\\\"') : change;\\n str1 = str1.replace(check1, change);\\n }\\n str = str.replace(str, str1);\\n }\\n else if (str.match(/(?:href='')/) === null) {\\n if(str.match(hrefRegex)) {\\n var check = str.match(hrefRegex);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(hrefRegex)[i].split('href=')[1];\\n if (check1) {\\n var change = check1.match(/^'/) !== null ? check1.replace(/^'/, '\\\"') : check1;\\n change =change.match(/.$/)[0] === '\\\\'' ? change.replace(/.$/,'\\\"') : change;\\n str1 = str1.replace(check1, change);\\n }\\n }\\n str = str.replace(str, str1);\\n }\\n }\\n \";\n var fnCode = 'var str=\"' + evalExpResult + '\";' + condtion + ' return str;';\n var fn = new Function(argName, fnCode);\n return fn.bind(helper);\n }\n}\n/** function used to evaluate the function expression\n *\n * @param {string} str ?\n * @param {string} nameSpace ?\n * @param {Object} helper ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction evalExp(str, nameSpace, helper, ignorePrefix) {\n var varCOunt = 0;\n /**\n * Variable containing Local Keys\n */\n var localKeys = [];\n var isClass = str.match(/class=\"([^\"]+|)\\s{2}/g);\n var singleSpace = '';\n if (isClass) {\n isClass.forEach(function (value) {\n singleSpace = value.replace(/\\s\\s+/g, ' ');\n str = str.replace(value, singleSpace);\n });\n }\n if (exp.test(str)) {\n var insideBraces = false;\n var outputString = '';\n for (var i = 0; i < str.length; i++) {\n if (str[i + ''] === '$' && str[i + 1] === '{') {\n insideBraces = true;\n }\n else if (str[i + ''] === '}') {\n insideBraces = false;\n }\n outputString += (str[i + ''] === '\"' && !insideBraces) ? '\\\\\"' : str[i + ''];\n }\n str = outputString;\n }\n else {\n str = str.replace(/\\\\?\"/g, '\\\\\"');\n }\n return str.replace(LINES, '').replace(DBL_QUOTED_STR, '\\'$1\\'').replace(exp, function (match, cnt, offset, matchStr) {\n var SPECIAL_CHAR = /@|#|\\$/gm;\n var matches = cnt.match(CALL_FUNCTION);\n // matches to detect any function calls\n if (matches) {\n var rlStr = matches[1];\n if (ELSEIF_STMT.test(cnt)) {\n //handling else-if condition\n cnt = '\";} ' + cnt.replace(matches[1], rlStr.replace(WORD, function (str) {\n str = str.trim();\n return addNameSpace(str, !(QUOTES.test(str)) && (localKeys.indexOf(str) === -1), nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n }\n else if (IF_STMT.test(cnt)) {\n //handling if condition\n cnt = '\"; ' + cnt.replace(matches[1], rlStr.replace(WORDIF, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n }\n else if (FOR_STMT.test(cnt)) {\n //handling for condition\n var rlStr_1 = matches[1].split(' of ');\n // replace for each into actual JavaScript\n cnt = '\"; ' + cnt.replace(matches[1], function (mtc) {\n localKeys.push(rlStr_1[0]);\n localKeys.push(rlStr_1[0] + 'Index');\n varCOunt = varCOunt + 1;\n return 'var i' + varCOunt + '=0; i' + varCOunt + ' < ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix) + '.length; i' + varCOunt + '++';\n }) + '{ \\n ' + rlStr_1[0] + '= ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix)\n + '[i' + varCOunt + ']; \\n var ' + rlStr_1[0] + 'Index=i' + varCOunt + '; \\n str = str + \"';\n }\n else {\n //helper function handling\n var fnStr = cnt.split('(');\n var fNameSpace = (helper && Object.prototype.hasOwnProperty.call(helper, fnStr[0]) ? 'this.' : 'global');\n fNameSpace = (/\\./.test(fnStr[0]) ? '' : fNameSpace);\n var ftArray = matches[1].split(',');\n if (matches[1].length !== 0 && !(/data/).test(ftArray[0]) && !(/window./).test(ftArray[0])) {\n matches[1] = (fNameSpace === 'global' ? nameSpace + '.' + matches[1] : matches[1]);\n }\n var splRegexp = /@|\\$|#/gm;\n var arrObj = /\\]\\./gm;\n if (WINDOWFUNC.test(cnt) && arrObj.test(cnt) || splRegexp.test(cnt)) {\n var splArrRegexp = /@|\\$|#|\\]\\./gm;\n if (splArrRegexp.test(cnt)) {\n cnt = '\"+ ' + (fNameSpace === 'global' ? '' : fNameSpace) + cnt.replace(matches[1], rlStr.replace(WORDFUNC, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '+ \"';\n }\n }\n else {\n cnt = '\" + ' + (fNameSpace === 'global' ? '' : fNameSpace) +\n cnt.replace(rlStr, addNameSpace(matches[1].replace(/,( |)data.|,/gi, ',' + nameSpace + '.').replace(/,( |)data.window/gi, ',window'), (fNameSpace === 'global' ? false : true), nameSpace, localKeys, ignorePrefix)) +\n '+\"';\n }\n }\n }\n else if (ELSE_STMT.test(cnt)) {\n // handling else condition\n cnt = '\"; ' + cnt.replace(ELSE_STMT, '} else { \\n str = str + \"');\n }\n else if (cnt.match(IF_OR_FOR)) {\n // close condition\n cnt = cnt.replace(IF_OR_FOR, '\"; \\n } \\n str = str + \"');\n }\n else if (SPECIAL_CHAR.test(cnt)) {\n // template string with double slash with special character\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n }\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // template string with double slash\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // evaluate normal expression\n cnt = cnt !== '' ? '\"+' + addNameSpace(cnt.replace(/,/gi, '+' + nameSpace + '.'), (localKeys.indexOf(cnt) === -1), nameSpace, localKeys, ignorePrefix) + '+\"' : '${}';\n }\n }\n return cnt;\n });\n}\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction addNameSpace(str, addNS, nameSpace, ignoreList, ignorePrefix) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1 && !ignorePrefix && str !== 'true' && str !== 'false') ? nameSpace + '.' + str : str);\n}\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @returns {string} ?\n */\nfunction NameSpaceArrObj(str, addNS, nameSpace, ignoreList) {\n var arrObjReg = /^\\..*/gm;\n return ((addNS && !(NOT_NUMBER.test(str)) &&\n ignoreList.indexOf(str.split('.')[0]) === -1 && !(arrObjReg.test(str))) ? nameSpace + '.' + str : str);\n}\n// // Create hashCode for template string to storeCached function\n// function hashCode(str: string): string {\n// return str.split('').reduce((a: number, b: string) => { a = ((a << 5) - a) + b.charCodeAt(0); return a & a; }, 0).toString();\n// }\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @returns {string} ?\n */\nfunction NameSpaceForspecialChar(str, addNS, nameSpace, ignoreList) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1) ? nameSpace + '[\"' + str : str);\n}\n/**\n * Replace double slashes to single slash.\n *\n * @param {string} tempStr ?\n * @returns {any} ?\n */\nfunction SlashReplace(tempStr) {\n var double = '\\\\\\\\';\n if (tempStr.match(DOUBLE_SLASH)) {\n return tempStr;\n }\n else {\n return tempStr.replace(SINGLE_SLASH, double);\n }\n}\n/**\n *\n * @param {string} str ?\n * @param {string} nameSpaceNew ?\n * @param {string[]} keys ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction HandleSpecialCharArrObj(str, nameSpaceNew, keys, ignorePrefix) {\n str = str.trim();\n var windowFunc = /\\window\\./gm;\n if (!windowFunc.test(str)) {\n var quotes = /'|\"/gm;\n var splRegexp = /@|\\$|#/gm;\n if (splRegexp.test(str)) {\n str = NameSpaceForspecialChar(str, (keys.indexOf(str) === -1), nameSpaceNew, keys) + '\"]';\n }\n if (ARR_OBJ.test(str)) {\n return NameSpaceArrObj(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys);\n }\n else {\n return addNameSpace(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys, ignorePrefix);\n }\n }\n else {\n return str;\n }\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types */\n/**\n * Template Engine Bridge\n */\nimport { compile as render } from './template';\nimport { createElement } from './dom';\nimport { isNullOrUndefined, isBlazor } from './util';\nvar HAS_ROW = /^[\\n\\r.]+ 0) {\n elements.forEach(function (element) {\n detach(element);\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeJsEvents = function () {\n var elements = this.wrapElement.querySelectorAll('[' + jsEvents.join('],[') + ']');\n if (elements.length > 0) {\n elements.forEach(function (element) {\n jsEvents.forEach(function (attr) {\n if (element.hasAttribute(attr)) {\n element.removeAttribute(attr);\n }\n });\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeXssAttrs = function () {\n var _this = this;\n this.removeAttrs.forEach(function (item, index) {\n var elements = _this.wrapElement.querySelectorAll(item.selector);\n if (elements.length > 0) {\n elements.forEach(function (element) {\n element.removeAttribute(item.attribute);\n });\n }\n });\n };\n return SanitizeHtmlHelper;\n}());\nexport { SanitizeHtmlHelper };\n","/* eslint-disable jsdoc/require-returns */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * To import utils\n */\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nvar SvgRenderer = /** @class */ (function () {\n /* End-Properties */\n function SvgRenderer(rootID) {\n //Internal Variables\n this.svgLink = 'http://www.w3.org/2000/svg';\n this.rootId = rootID;\n }\n // method to get the attributes value\n // tslint:disable-next-line:no-any\n SvgRenderer.prototype.getOptionValue = function (options, key) {\n return options[key];\n }; /* tslint:enable */\n /**\n * To create a Html5 SVG element\n *\n * @param {SVGAttributes} options - Options to create SVG\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createSvg = function (options) {\n if (isNullOrUndefined(options.id)) {\n options.id = this.rootId + '_svg';\n }\n this.svgObj = document.getElementById(options.id);\n if (isNullOrUndefined(document.getElementById(options.id))) {\n this.svgObj = document.createElementNS(this.svgLink, 'svg');\n }\n this.svgObj = this.setElementAttributes(options, this.svgObj);\n this.setSVGSize(options.width, options.height);\n return this.svgObj;\n };\n // method to set the height and width for the SVG element\n SvgRenderer.prototype.setSVGSize = function (width, height) {\n var element = document.getElementById(this.rootId);\n var size = !isNullOrUndefined(element) ? element.getBoundingClientRect() : null;\n if (isNullOrUndefined(this.width) || this.width <= 0) {\n this.svgObj.setAttribute('width', width ? width.toString() : size.width.toString());\n }\n else {\n this.svgObj.setAttribute('width', this.width.toString());\n }\n if (isNullOrUndefined(this.height) || this.height <= 0) {\n this.svgObj.setAttribute('height', height ? height.toString() : '450');\n }\n else {\n this.svgObj.setAttribute('height', this.height.toString());\n }\n };\n /**\n * To draw a path\n *\n * @param {PathAttributes} options - Options to draw a path in SVG\n * @returns {Element} It returns a appropriate path\n */\n SvgRenderer.prototype.drawPath = function (options) {\n var path = document.getElementById(options.id);\n if (path === null) {\n path = document.createElementNS(this.svgLink, 'path');\n }\n path = this.setElementAttributes(options, path);\n return path;\n };\n /**\n * To draw a line\n *\n * @param {LineAttributes} options - Options to draw a line in SVG\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawLine = function (options) {\n var line = document.getElementById(options.id);\n if (line === null) {\n line = document.createElementNS(this.svgLink, 'line');\n }\n line = this.setElementAttributes(options, line);\n return line;\n };\n /**\n * To draw a rectangle\n *\n * @param {BaseAttibutes} options - Required options to draw a rectangle in SVG\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawRectangle = function (options) {\n var rectangle = document.getElementById(options.id);\n if (rectangle === null) {\n rectangle = document.createElementNS(this.svgLink, 'rect');\n }\n rectangle = this.setElementAttributes(options, rectangle);\n return rectangle;\n };\n /**\n * To draw a circle\n *\n * @param {CircleAttributes} options - Required options to draw a circle in SVG\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawCircle = function (options) {\n var circle = document.getElementById(options.id);\n if (circle === null) {\n circle = document.createElementNS(this.svgLink, 'circle');\n }\n circle = this.setElementAttributes(options, circle);\n return circle;\n };\n /**\n * To draw a polyline\n *\n * @param {PolylineAttributes} options - Options required to draw a polyline\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawPolyline = function (options) {\n var polyline = document.getElementById(options.id);\n if (polyline === null) {\n polyline = document.createElementNS(this.svgLink, 'polyline');\n }\n polyline = this.setElementAttributes(options, polyline);\n return polyline;\n };\n /**\n * To draw an ellipse\n *\n * @param {EllipseAttributes} options - Options required to draw an ellipse\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawEllipse = function (options) {\n var ellipse = document.getElementById(options.id);\n if (ellipse === null) {\n ellipse = document.createElementNS(this.svgLink, 'ellipse');\n }\n ellipse = this.setElementAttributes(options, ellipse);\n return ellipse;\n };\n /**\n * To draw a polygon\n *\n * @param {PolylineAttributes} options - Options needed to draw a polygon in SVG\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawPolygon = function (options) {\n var polygon = document.getElementById(options.id);\n if (polygon === null) {\n polygon = document.createElementNS(this.svgLink, 'polygon');\n }\n polygon = this.setElementAttributes(options, polygon);\n return polygon;\n };\n /**\n * To draw an image\n *\n * @param {ImageAttributes} options - Required options to draw an image in SVG\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawImage = function (options) {\n var img = document.createElementNS(this.svgLink, 'image');\n img.setAttributeNS(null, 'height', options.height.toString());\n img.setAttributeNS(null, 'width', options.width.toString());\n img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', options.href);\n img.setAttributeNS(null, 'x', options.x.toString());\n img.setAttributeNS(null, 'y', options.y.toString());\n img.setAttributeNS(null, 'id', options.id);\n img.setAttributeNS(null, 'visibility', options.visibility);\n if (!isNullOrUndefined(this.getOptionValue(options, 'clip-path'))) {\n img.setAttributeNS(null, 'clip-path', this.getOptionValue(options, 'clip-path'));\n }\n if (!isNullOrUndefined(options.preserveAspectRatio)) {\n img.setAttributeNS(null, 'preserveAspectRatio', options.preserveAspectRatio);\n }\n return img;\n };\n /**\n * To draw a text\n *\n * @param {TextAttributes} options - Options needed to draw a text in SVG\n * @param {string} label - Label of the text\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createText = function (options, label) {\n var text = document.createElementNS(this.svgLink, 'text');\n text = this.setElementAttributes(options, text);\n if (!isNullOrUndefined(label)) {\n text.textContent = label;\n }\n return text;\n };\n /**\n * To create a tSpan\n *\n * @param {TextAttributes} options - Options to create tSpan\n * @param {string} label - The text content which is to be rendered in the tSpan\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createTSpan = function (options, label) {\n var tSpan = document.createElementNS(this.svgLink, 'tspan');\n tSpan = this.setElementAttributes(options, tSpan);\n if (!isNullOrUndefined(label)) {\n tSpan.textContent = label;\n }\n return tSpan;\n };\n /**\n * To create a title\n *\n * @param {string} text - The text content which is to be rendered in the title\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createTitle = function (text) {\n var title = document.createElementNS(this.svgLink, 'title');\n title.textContent = text;\n return title;\n };\n /**\n * To create defs element in SVG\n *\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createDefs = function () {\n var defs = document.createElementNS(this.svgLink, 'defs');\n return defs;\n };\n /**\n * To create clip path in SVG\n *\n * @param {BaseAttibutes} options - Options needed to create clip path\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createClipPath = function (options) {\n var clipPath = document.createElementNS(this.svgLink, 'clipPath');\n clipPath = this.setElementAttributes(options, clipPath);\n return clipPath;\n };\n /**\n * To create foreign object in SVG\n *\n * @param {BaseAttibutes} options - Options needed to create foreign object\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createForeignObject = function (options) {\n var foreignObject = document.createElementNS(this.svgLink, 'foreignObject');\n foreignObject = this.setElementAttributes(options, foreignObject);\n return foreignObject;\n };\n /**\n * To create group element in SVG\n *\n * @param {BaseAttibutes} options - Options needed to create group\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createGroup = function (options) {\n var group = document.createElementNS(this.svgLink, 'g');\n group = this.setElementAttributes(options, group);\n return group;\n };\n /**\n * To create pattern in SVG\n *\n * @param {PatternAttributes} options - Required options to create pattern in SVG\n * @param {string} element - Specifies the name of the pattern\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.createPattern = function (options, element) {\n var pattern = document.createElementNS(this.svgLink, element);\n pattern = this.setElementAttributes(options, pattern);\n return pattern;\n };\n /**\n * To create radial gradient in SVG\n *\n * @param {string[]} colors - Specifies the colors required to create radial gradient\n * @param {string} name - Specifies the name of the gradient\n * @param {RadialGradient} options - value for radial gradient\n * @returns {string} It returns color name\n */\n SvgRenderer.prototype.createRadialGradient = function (colors, name, options) {\n var colorName;\n if (!isNullOrUndefined(colors[0].colorStop)) {\n var newOptions = {\n 'id': this.rootId + '_' + name + 'radialGradient',\n 'cx': options.cx + '%',\n 'cy': options.cy + '%',\n 'r': options.r + '%',\n 'fx': options.fx + '%',\n 'fy': options.fy + '%'\n };\n this.drawGradient('radialGradient', newOptions, colors);\n colorName = 'url(#' + this.rootId + '_' + name + 'radialGradient)';\n }\n else {\n colorName = colors[0].color.toString();\n }\n return colorName;\n };\n /**\n * To create linear gradient in SVG\n *\n * @param {GradientColor[]} colors - Array of string specifies the values for color\n * @param {string} name - Specifies the name of the gradient\n * @param {LinearGradient} options - Specifies the options for gradient\n * @returns {string} It returns color name\n */\n SvgRenderer.prototype.createLinearGradient = function (colors, name, options) {\n var colorName;\n if (!isNullOrUndefined(colors[0].colorStop)) {\n var newOptions = {\n 'id': this.rootId + '_' + name + 'linearGradient',\n 'x1': options.x1 + '%',\n 'y1': options.y1 + '%',\n 'x2': options.x2 + '%',\n 'y2': options.y2 + '%'\n };\n this.drawGradient('linearGradient', newOptions, colors);\n colorName = 'url(#' + this.rootId + '_' + name + 'linearGradient)';\n }\n else {\n colorName = colors[0].color.toString();\n }\n return colorName;\n };\n /**\n * To render the gradient element in SVG\n *\n * @param {string} gradientType - Specifies the type of the gradient\n * @param {RadialGradient | LinearGradient} options - Options required to render a gradient\n * @param {string[]} colors - Array of string specifies the values for color\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawGradient = function (gradientType, options, colors) {\n var defs = this.createDefs();\n var gradient = document.createElementNS(this.svgLink, gradientType);\n gradient = this.setElementAttributes(options, gradient);\n for (var i = 0; i < colors.length; i++) {\n var stop_1 = document.createElementNS(this.svgLink, 'stop');\n stop_1.setAttribute('offset', colors[i].colorStop);\n stop_1.setAttribute('stop-color', colors[i].color);\n stop_1.setAttribute('stop-opacity', colors[i].opacity ? (colors[i].opacity) : '1');\n if (!isNullOrUndefined(colors[i].style)) {\n stop_1.style.cssText = colors[i].style;\n }\n gradient.appendChild(stop_1);\n }\n defs.appendChild(gradient);\n return defs;\n };\n /**\n * To render a clip path\n *\n * @param {BaseAttibutes} options - Options required to render a clip path\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawClipPath = function (options) {\n var defs = this.createDefs();\n var clipPath = this.createClipPath({ 'id': options.id });\n options.id = options.id + '_Rect';\n var rect = this.drawRectangle(options);\n clipPath.appendChild(rect);\n defs.appendChild(clipPath);\n return defs;\n };\n /**\n * To create circular clip path in SVG\n *\n * @param {CircleAttributes} options - Options required to create circular clip path\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.drawCircularClipPath = function (options) {\n var defs = this.createDefs();\n var clipPath = this.createClipPath({ 'id': options.id });\n options.id = options.id + '_Circle';\n var circle = this.drawCircle(options);\n clipPath.appendChild(circle);\n defs.appendChild(clipPath);\n return defs;\n };\n /**\n * To set the attributes to the element\n *\n * @param {SVGCanvasAttributes} options - Attributes to set for the element\n * @param {Element} element - The element to which the attributes need to be set\n * @returns {Element} It returns a appropriate element\n */\n SvgRenderer.prototype.setElementAttributes = function (options, element) {\n var keys = Object.keys(options);\n for (var i = 0; i < keys.length; i++) {\n if (keys[i] === 'style') {\n element.style.cssText = options[keys[i]];\n }\n else {\n element.setAttribute(keys[i], options[keys[i]]);\n }\n }\n return element;\n };\n /**\n * To create a Html5 canvas element\n * Dummy method for using canvas/svg render in the same variable name in chart control\n */\n SvgRenderer.prototype.createCanvas = function () {\n return null;\n };\n return SvgRenderer;\n}());\nexport { SvgRenderer };\n","/* eslint-disable no-case-declarations */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable valid-jsdoc */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * To import utils.\n */\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * @private\n */\nvar CanvasRenderer = /** @class */ (function () {\n /* End-Properties */\n function CanvasRenderer(rootID) {\n this.rootId = rootID;\n }\n // method to get the attributes value\n // tslint:disable-next-line:no-any\n CanvasRenderer.prototype.getOptionValue = function (options, key) {\n return options[key];\n };\n /* tslint:enable */\n /**\n * To create a Html5 canvas element\n *\n * @param {BaseAttibutes} options - Options to create canvas\n * @returns {HTMLCanvasElement} Creating a canvas\n */\n CanvasRenderer.prototype.createCanvas = function (options) {\n var canvasObj = document.createElement('canvas');\n canvasObj.setAttribute('id', this.rootId + '_canvas');\n this.ctx = canvasObj.getContext('2d');\n this.canvasObj = canvasObj;\n this.setCanvasSize(options.width, options.height);\n return this.canvasObj;\n };\n /**\n * To set the width and height for the Html5 canvas element\n *\n * @param {number} width - width of the canvas\n * @param {number} height - height of the canvas\n * @returns {void} Setting canvas size\n */\n CanvasRenderer.prototype.setCanvasSize = function (width, height) {\n var element = document.getElementById(this.rootId);\n var size = !isNullOrUndefined(element) ? element.getBoundingClientRect() : null;\n if (isNullOrUndefined(this.width)) {\n this.canvasObj.setAttribute('width', width ? width.toString() : size.width.toString());\n }\n else {\n this.canvasObj.setAttribute('width', this.width.toString());\n }\n if (isNullOrUndefined(this.height)) {\n this.canvasObj.setAttribute('height', height ? height.toString() : '450');\n }\n else {\n this.canvasObj.setAttribute('height', this.height.toString());\n }\n };\n // To set the values to the attributes\n CanvasRenderer.prototype.setAttributes = function (options) {\n this.ctx.lineWidth = this.getOptionValue(options, 'stroke-width');\n var dashArray = this.getOptionValue(options, 'stroke-dasharray');\n if (!isNullOrUndefined(dashArray)) {\n var dashArrayString = dashArray.split(',');\n this.ctx.setLineDash([parseInt(dashArrayString[0], 10), parseInt(dashArrayString[1], 10)]);\n }\n this.ctx.strokeStyle = this.getOptionValue(options, 'stroke');\n };\n /**\n * To draw a line\n *\n * @param {LineAttributes} options - required options to draw a line on the canvas\n * @returns {void} To draw a line\n */\n CanvasRenderer.prototype.drawLine = function (options) {\n this.ctx.save();\n this.ctx.beginPath();\n this.ctx.lineWidth = this.getOptionValue(options, 'stroke-width');\n this.ctx.strokeStyle = options.stroke;\n this.ctx.moveTo(options.x1, options.y1);\n this.ctx.lineTo(options.x2, options.y2);\n this.ctx.stroke();\n this.ctx.restore();\n };\n /**\n * To draw a rectangle\n *\n * @param {RectAttributes} options - required options to draw a rectangle on the canvas.\n * @param {Int32Array} canvasTranslate TO get a translate value of canvas.\n * @returns {void} To draw rectangle.\n */\n CanvasRenderer.prototype.drawRectangle = function (options, canvasTranslate) {\n var canvasCtx = this.ctx;\n var cornerRadius = options.rx;\n this.ctx.save();\n this.ctx.beginPath();\n if (canvasTranslate) {\n this.ctx.translate(canvasTranslate[0], canvasTranslate[1]);\n }\n this.ctx.globalAlpha = this.getOptionValue(options, 'opacity');\n this.setAttributes(options);\n this.ctx.rect(options.x, options.y, options.width, options.height);\n if (cornerRadius !== null && cornerRadius >= 0) {\n this.drawCornerRadius(options);\n }\n else {\n if (options.fill === 'none') {\n options.fill = 'transparent';\n }\n this.ctx.fillStyle = options.fill;\n this.ctx.fillRect(options.x, options.y, options.width, options.height);\n this.ctx.stroke();\n }\n this.ctx.restore();\n this.ctx = canvasCtx;\n return (this.canvasObj);\n };\n // To draw the corner of a rectangle\n CanvasRenderer.prototype.drawCornerRadius = function (options) {\n var cornerRadius = options.rx;\n var x = options.x;\n var y = options.y;\n var width = options.width;\n var height = options.height;\n if (options.fill === 'none') {\n options.fill = 'transparent';\n }\n this.ctx.fillStyle = options.fill;\n if (width < 2 * cornerRadius) {\n cornerRadius = width / 2;\n }\n if (height < 2 * cornerRadius) {\n cornerRadius = height / 2;\n }\n this.ctx.beginPath();\n this.ctx.moveTo(x + width - cornerRadius, y);\n this.ctx.arcTo(x + width, y, x + width, y + height, cornerRadius);\n this.ctx.arcTo(x + width, y + height, x, y + height, cornerRadius);\n this.ctx.arcTo(x, y + height, x, y, cornerRadius);\n this.ctx.arcTo(x, y, x + width, y, cornerRadius);\n this.ctx.closePath();\n this.ctx.fill();\n this.ctx.stroke();\n };\n /**\n * To draw a path on the canvas\n *\n * @param {PathAttributes} options - options needed to draw path.\n * @param {Int32Array} canvasTranslate - Array of numbers to translate the canvas.\n * @returns {Element} To draw a path.\n */\n CanvasRenderer.prototype.drawPath = function (options, canvasTranslate) {\n var path = options.d;\n var dataSplit = path.split(' ');\n var borderWidth = this.getOptionValue(options, 'stroke-width');\n var canvasCtx = this.ctx;\n var flag = true;\n this.ctx.save();\n this.ctx.beginPath();\n if (canvasTranslate) {\n this.ctx.translate(canvasTranslate[0], canvasTranslate[1]);\n }\n this.ctx.globalAlpha = options.opacity ? options.opacity : this.getOptionValue(options, 'fill-opacity');\n this.setAttributes(options);\n for (var i = 0; i < dataSplit.length; i = i + 3) {\n var x1 = parseFloat(dataSplit[i + 1]);\n var y1 = parseFloat(dataSplit[i + 2]);\n switch (dataSplit[i]) {\n case 'M':\n if (!options.innerR && !options.cx) {\n this.ctx.moveTo(x1, y1);\n }\n break;\n case 'L':\n if (!options.innerR) {\n this.ctx.lineTo(x1, y1);\n }\n break;\n case 'Q':\n var q1 = parseFloat(dataSplit[i + 3]);\n var q2 = parseFloat(dataSplit[i + 4]);\n this.ctx.quadraticCurveTo(x1, y1, q1, q2);\n i = i + 2;\n break;\n case 'C':\n var c1 = parseFloat(dataSplit[i + 3]);\n var c2 = parseFloat(dataSplit[i + 4]);\n var c3 = parseFloat(dataSplit[i + 5]);\n var c4 = parseFloat(dataSplit[i + 6]);\n this.ctx.bezierCurveTo(x1, y1, c1, c2, c3, c4);\n i = i + 4;\n break;\n case 'A':\n if (!options.innerR) {\n if (options.cx) {\n this.ctx.arc(options.cx, options.cy, options.radius, 0, 2 * Math.PI, options.counterClockWise);\n }\n else {\n this.ctx.moveTo(options.x, options.y);\n this.ctx.arc(options.x, options.y, options.radius, options.start, options.end, options.counterClockWise);\n this.ctx.lineTo(options.x, options.y);\n }\n }\n else if (flag) {\n this.ctx.arc(options.x, options.y, options.radius, options.start, options.end, options.counterClockWise);\n this.ctx.arc(options.x, options.y, options.innerR, options.end, options.start, !options.counterClockWise);\n flag = false;\n }\n i = i + 5;\n break;\n case 'z':\n case 'Z':\n this.ctx.closePath();\n //since for loop is incremented by 3, to get next value after 'z' i is decremented for 2.\n i = i - 2;\n break;\n }\n }\n if (options.fill !== 'none' && options.fill !== undefined) {\n this.ctx.fillStyle = options.fill;\n this.ctx.fill();\n }\n if (borderWidth > 0) {\n this.ctx.stroke();\n }\n this.ctx.restore();\n this.ctx = canvasCtx;\n return this.canvasObj;\n };\n /**\n * To draw a text\n *\n * @param {TextAttributes} options - options required to draw text\n * @param {string} label - Specifies the text which has to be drawn on the canvas\n * @param {number} transX - Specifies the text of translate X\n * @param {number} transY - Specifies the text of translate Y\n * @param {number} dy - Specifies the text of translate dy\n * @param {boolean} isTSpan - Specifies the boolean value of span value\n * @returns {void}\n */\n CanvasRenderer.prototype.createText = function (options, label, transX, transY, dy, isTSpan) {\n var fontWeight = this.getOptionValue(options, 'font-weight');\n if (!isNullOrUndefined(fontWeight) && fontWeight.toLowerCase() === 'regular') {\n fontWeight = 'normal';\n }\n var fontSize = this.getOptionValue(options, 'font-size');\n var fontFamily = this.getOptionValue(options, 'font-family');\n var fontStyle = this.getOptionValue(options, 'font-style').toLowerCase();\n var font = (fontStyle + ' ' + fontWeight + ' ' + fontSize + ' ' + fontFamily);\n var anchor = this.getOptionValue(options, 'text-anchor');\n var opacity = options.opacity !== undefined ? options.opacity : 1;\n if (anchor === 'middle') {\n anchor = 'center';\n }\n this.ctx.save();\n this.ctx.fillStyle = options.fill;\n this.ctx.font = font;\n this.ctx.textAlign = anchor;\n this.ctx.globalAlpha = opacity;\n if (options.baseline) {\n this.ctx.textBaseline = options.baseline;\n }\n if (!isTSpan) {\n var txtlngth = 0;\n this.ctx.translate(options.x + (txtlngth / 2) + (transX ? transX : 0), options.y + (transY ? transY : 0));\n this.ctx.rotate(options.labelRotation * Math.PI / 180);\n }\n this.ctx.fillText(label, isTSpan ? options.x : 0, isTSpan ? dy : 0);\n this.ctx.restore();\n return this.canvasObj;\n };\n /**\n * To draw circle on the canvas\n *\n * @param {CircleAttributes} options - required options to draw the circle\n * @param {Int32Array} canvasTranslate Translate value of canvas\n * @returns {void}\n */\n CanvasRenderer.prototype.drawCircle = function (options, canvasTranslate) {\n var canvasCtx = this.ctx;\n this.ctx.save();\n this.ctx.beginPath();\n this.ctx.arc(options.cx, options.cy, options.r, 0, 2 * Math.PI);\n this.ctx.fillStyle = options.fill;\n this.ctx.globalAlpha = options.opacity;\n this.ctx.fill();\n if (canvasTranslate) {\n this.ctx.translate(canvasTranslate[0], canvasTranslate[1]);\n }\n this.setAttributes(options);\n this.ctx.stroke();\n this.ctx.restore();\n this.ctx = canvasCtx;\n return this.canvasObj;\n };\n /**\n * To draw polyline\n *\n * @param {PolylineAttributes} options - options needed to draw polyline\n * @returns {void}\n */\n CanvasRenderer.prototype.drawPolyline = function (options) {\n this.ctx.save();\n this.ctx.beginPath();\n var points = options.points.split(' ');\n for (var i = 0; i < points.length - 1; i++) {\n var point = points[i].split(',');\n var x = parseFloat(point[0]);\n var y = parseFloat(point[1]);\n if (i === 0) {\n this.ctx.moveTo(x, y);\n }\n else {\n this.ctx.lineTo(x, y);\n }\n }\n this.ctx.lineWidth = this.getOptionValue(options, 'stroke-width');\n this.ctx.strokeStyle = options.stroke;\n this.ctx.stroke();\n this.ctx.restore();\n };\n /**\n * To draw an ellipse on the canvas\n *\n * @param {EllipseAttributes} options - options needed to draw ellipse\n * @param {Int32Array} canvasTranslate Translate value of canvas\n * @returns {void}\n */\n CanvasRenderer.prototype.drawEllipse = function (options, canvasTranslate) {\n var canvasCtx = this.ctx;\n var circumference = Math.max(options.rx, options.ry);\n var scaleX = options.rx / circumference;\n var scaleY = options.ry / circumference;\n this.ctx.save();\n this.ctx.beginPath();\n this.ctx.translate(options.cx, options.cy);\n if (canvasTranslate) {\n this.ctx.translate(canvasTranslate[0], canvasTranslate[1]);\n }\n this.ctx.save();\n this.ctx.scale(scaleX, scaleY);\n this.ctx.arc(0, 0, circumference, 0, 2 * Math.PI, false);\n this.ctx.fillStyle = options.fill;\n this.ctx.fill();\n this.ctx.restore();\n this.ctx.lineWidth = this.getOptionValue(options, 'stroke-width');\n this.ctx.strokeStyle = options.stroke;\n this.ctx.stroke();\n this.ctx.restore();\n this.ctx = canvasCtx;\n };\n /**\n * To draw an image\n *\n * @param {ImageAttributes} options - options required to draw an image on the canvas\n * @returns {void}\n */\n CanvasRenderer.prototype.drawImage = function (options) {\n this.ctx.save();\n var imageObj = new Image();\n if (!isNullOrUndefined(options.href)) {\n imageObj.src = options.href;\n this.ctx.drawImage(imageObj, options.x, options.y, options.width, options.height);\n }\n this.ctx.restore();\n };\n /**\n * To create a linear gradient\n *\n * @param {string[]} colors - Specifies the colors required to create linear gradient\n * @returns {string} It returns color\n */\n CanvasRenderer.prototype.createLinearGradient = function (colors) {\n var myGradient;\n if (!isNullOrUndefined(colors[0].colorStop)) {\n myGradient = this.ctx.createLinearGradient(0, 0, 0, this.canvasObj.height);\n }\n var color = this.setGradientValues(colors, myGradient);\n return color;\n };\n /**\n * To create a radial gradient\n *\n * @param {string[]} colors - Specifies the colors required to create linear gradient\n * @returns {string} It returns gradient color\n */\n CanvasRenderer.prototype.createRadialGradient = function (colors) {\n var myGradient;\n if (!isNullOrUndefined(colors[0].colorStop)) {\n myGradient = this.ctx.createRadialGradient(0, 0, 0, 0, 0, this.canvasObj.height);\n }\n var colorName = this.setGradientValues(colors, myGradient);\n return colorName;\n };\n // To set the gradient values\n CanvasRenderer.prototype.setGradientValues = function (colors, myGradient) {\n var colorName;\n if (!isNullOrUndefined(colors[0].colorStop)) {\n for (var i = 0; i <= colors.length - 1; i++) {\n var color = colors[i].color;\n var newColorStop = (colors[i].colorStop).slice(0, -1);\n var stopColor = parseInt(newColorStop, 10) / 100;\n myGradient.addColorStop(stopColor, color);\n }\n colorName = myGradient.toString();\n }\n else {\n colorName = colors[0].color.toString();\n }\n return colorName;\n };\n /**\n * To set the attributes to the element\n *\n * @param {SVGCanvasAttributes} options - Attributes to set for the element\n * @param {HTMLElement} element - The element to which the attributes need to be set\n * @returns {HTMLElement} It returns null value\n */\n CanvasRenderer.prototype.setElementAttributes = function (options, element) {\n var keys = Object.keys(options);\n var values = Object.keys(options).map(function (key) { return options[key]; });\n for (var i = 0; i < keys.length; i++) {\n element.setAttribute(keys[i], values[i]);\n }\n return null;\n };\n /**\n * To update the values of the canvas element attributes\n *\n * @param {SVGCanvasAttributes} options - Specifies the colors required to create gradient\n * @returns {void}\n */\n CanvasRenderer.prototype.updateCanvasAttributes = function (options) {\n this.setElementAttributes(options, this.canvasObj);\n var ctx = this.ctx;\n if (!isNullOrUndefined(this.dataUrl)) {\n var img_1 = new Image;\n img_1.onload = function () {\n ctx.drawImage(img_1, 0, 0);\n };\n img_1.src = this.dataUrl;\n }\n };\n /**\n * This method clears the given rectangle region\n *\n * @param {Rect} rect The rect parameter as passed\n */\n CanvasRenderer.prototype.clearRect = function (rect) {\n this.ctx.restore();\n this.ctx.clearRect(rect.x, rect.y, rect.width, rect.height);\n };\n /**\n * For canvas rendering in chart\n * Dummy method for using canvas/svg render in the same variable name in chart control\n */\n CanvasRenderer.prototype.createGroup = function () {\n return null;\n };\n /**\n * To render a clip path\n *\n * Dummy method for using canvas/svg render in the same variable name in chart control\n */\n CanvasRenderer.prototype.drawClipPath = function () {\n return null;\n };\n /**\n * To render a Circular clip path\n *\n * Dummy method for using canvas/svg render in the same variable name in chart control\n */\n CanvasRenderer.prototype.drawCircularClipPath = function () {\n return null;\n };\n /**\n * Clip method to perform clip in canvas mode\n *\n * @param {BaseAttibutes} options The canvas clip of options\n */\n CanvasRenderer.prototype.canvasClip = function (options) {\n this.ctx.save();\n this.ctx.fillStyle = 'transparent';\n this.ctx.rect(options.x, options.y, options.width, options.height);\n this.ctx.fill();\n this.ctx.clip();\n };\n /**\n * Tp restore the canvas\n */\n CanvasRenderer.prototype.canvasRestore = function () {\n this.ctx.restore();\n };\n /**\n * To draw a polygon\n * Dummy method for using canvas/svg render in the same variable name in chart control\n */\n CanvasRenderer.prototype.drawPolygon = function () {\n return null;\n };\n /**\n * To create defs element in SVG\n * Dummy method for using canvas/svg render in the same variable name in chart control\n *\n * @returns {Element} It returns null\n */\n CanvasRenderer.prototype.createDefs = function () {\n return null;\n };\n /**\n * To create clip path in SVG\n * Dummy method for using canvas/svg render in the same variable name in chart control\n */\n CanvasRenderer.prototype.createClipPath = function () {\n return null;\n };\n /**\n * To create a Html5 SVG element\n * Dummy method for using canvas/svg render in the same variable name in chart control\n *\n * @returns {Element} It returns null\n */\n CanvasRenderer.prototype.createSvg = function () {\n return null;\n };\n return CanvasRenderer;\n}());\nexport { CanvasRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { SvgRenderer } from '../svg-render/index';\nimport { createElement, remove, merge } from '@syncfusion/ej2-base';\n/**\n * Function to measure the height and width of the text.\n *\n * @private\n * @param {string} text To get a text\n * @param {FontModel} font To get a font of the text\n * @returns {Size} measureText\n */\nexport function measureText(text, font, themeFontStyle) {\n var breakText = text || ''; // For avoid NuLL value\n var htmlObject = document.getElementById('chartmeasuretext');\n if (htmlObject === null) {\n htmlObject = createElement('text', { id: 'chartmeasuretext' });\n document.body.appendChild(htmlObject);\n }\n if (typeof (text) === 'string' && (text.indexOf('<') > -1 || text.indexOf('>') > -1)) {\n var textArray = text.split(' ');\n for (var i = 0; i < textArray.length; i++) {\n if (textArray[i].indexOf('
') === -1) {\n textArray[i] = textArray[i].replace(/[<>]/g, '&');\n }\n }\n text = textArray.join(' ');\n }\n htmlObject.innerHTML = (breakText.indexOf('
') > -1 || breakText.indexOf('
') > -1) ? breakText : text;\n htmlObject.style.position = 'fixed';\n htmlObject.style.fontSize = font.size || themeFontStyle.size;\n htmlObject.style.fontStyle = font.fontStyle || themeFontStyle.fontStyle;\n htmlObject.style.fontFamily = font.fontFamily || themeFontStyle.fontFamily;\n htmlObject.style.visibility = 'hidden';\n htmlObject.style.top = '-100';\n htmlObject.style.left = '0';\n htmlObject.style.whiteSpace = 'nowrap';\n // For bootstrap line height issue\n htmlObject.style.lineHeight = 'normal';\n var fontWidth = htmlObject.clientWidth;\n var fontHeight = htmlObject.clientHeight;\n var fontWeight = htmlObject.style.fontWeight;\n htmlObject.style.fontWeight = font.fontWeight || themeFontStyle.fontWeight;\n return new Size(htmlObject.style.fontWeight === 'bold' && fontWeight === 'normal' ? Math.max(fontWidth, htmlObject.clientWidth) : htmlObject.clientWidth, htmlObject.style.fontWeight === 'bold' && fontWeight === 'normal' ? Math.max(fontHeight, htmlObject.clientHeight) : htmlObject.clientHeight);\n}\n/** @private */\nexport function withInAreaBounds(x, y, areaBounds, width, height) {\n if (width === void 0) { width = 0; }\n if (height === void 0) { height = 0; }\n return (x >= areaBounds.x - width && x <= areaBounds.x + areaBounds.width + width && y >= areaBounds.y - height\n && y <= areaBounds.y + areaBounds.height + height);\n}\n/** @private */\nexport function findDirection(rX, rY, rect, arrowLocation, arrowPadding, top, bottom, left, tipX, tipY, controlName) {\n if (controlName === void 0) { controlName = ''; }\n var direction = '';\n var startX = rect.x;\n var startY = rect.y;\n var width = rect.x + rect.width;\n var height = rect.y + rect.height;\n if (top) {\n direction = direction.concat('M' + ' ' + (startX) + ' ' + (startY + rY) + ' Q ' + startX + ' '\n + startY + ' ' + (startX + rX) + ' ' + startY + ' ' +\n ' L' + ' ' + (width - rX) + ' ' + (startY) + ' Q ' + width + ' '\n + startY + ' ' + (width) + ' ' + (startY + rY));\n direction = direction.concat(' L' + ' ' + (width) + ' ' + (height - rY) + ' Q ' + width + ' '\n + (height) + ' ' + (width - rX) + ' ' + (height));\n if (arrowPadding !== 0) {\n if (controlName === 'RangeNavigator') {\n if ((arrowLocation.x - arrowPadding) > width / 2) {\n direction = direction.concat(' L' + ' ' + (arrowLocation.x + arrowPadding) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (tipX + arrowPadding) + ' ' + (height + arrowPadding)\n + ' L' + ' ' + (arrowLocation.x) + ' ' + height);\n }\n else {\n direction = direction.concat(' L' + ' ' + (arrowLocation.x) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (tipX - arrowPadding) + ' ' + (height + arrowPadding)\n + ' L' + ' ' + (arrowLocation.x - arrowPadding) + ' ' + height);\n }\n }\n else {\n direction = direction.concat(' L' + ' ' + (arrowLocation.x + arrowPadding) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (tipX) + ' ' + (height + arrowPadding)\n + ' L' + ' ' + (arrowLocation.x - arrowPadding) + ' ' + height);\n }\n }\n if ((arrowLocation.x - arrowPadding) > startX) {\n direction = direction.concat(' L' + ' ' + (startX + rX) + ' ' + height + ' Q ' + startX + ' '\n + height + ' ' + (startX) + ' ' + (height - rY) + ' z');\n }\n else {\n if (arrowPadding === 0) {\n direction = direction.concat(' L' + ' ' + (startX + rX) + ' ' + height + ' Q ' + startX + ' '\n + height + ' ' + (startX) + ' ' + (height - rY) + ' z');\n }\n else {\n direction = direction.concat(' L' + ' ' + (startX) + ' ' + (height + rY) + ' z');\n }\n }\n }\n else if (bottom) {\n direction = direction.concat('M' + ' ' + (startX) + ' ' + (startY + rY) + ' Q ' + startX + ' '\n + (startY) + ' ' + (startX + rX) + ' ' + (startY) + ' L' + ' ' + (arrowLocation.x - arrowPadding) + ' ' + (startY));\n direction = direction.concat(' L' + ' ' + (tipX) + ' ' + (arrowLocation.y));\n direction = direction.concat(' L' + ' ' + (arrowLocation.x + arrowPadding) + ' ' + (startY));\n direction = direction.concat(' L' + ' ' + (width - rX) + ' ' + (startY)\n + ' Q ' + (width) + ' ' + (startY) + ' ' + (width) + ' ' + (startY + rY));\n direction = direction.concat(' L' + ' ' + (width) + ' ' + (height - rY) + ' Q ' + (width) + ' '\n + (height) + ' ' + (width - rX) + ' ' + (height) +\n ' L' + ' ' + (startX + rX) + ' ' + (height) + ' Q ' + (startX) + ' '\n + (height) + ' ' + (startX) + ' ' + (height - rY) + ' z');\n }\n else if (left) {\n direction = direction.concat('M' + ' ' + (startX) + ' ' + (startY + rY) + ' Q ' + startX + ' '\n + (startY) + ' ' + (startX + rX) + ' ' + (startY));\n direction = direction.concat(' L' + ' ' + (width - rX) + ' ' + (startY) + ' Q ' + (width) + ' '\n + (startY) + ' ' + (width) + ' ' + ((controlName === 'RangeNavigator' ? 0 : (startY + rY)) + ' L' + ' ' + (width) + ' ' + (controlName === 'RangeNavigator' ? 0 : (arrowLocation.y - arrowPadding))));\n direction = (controlName === 'RangeNavigator') ? direction.concat(' L' + ' ' + (width + arrowPadding) + ' ' + 0) :\n direction.concat(' L' + ' ' + (width + arrowPadding) + ' ' + (tipY));\n direction = (controlName === 'RangeNavigator') ? direction.concat(' L' + ' ' + (width) + ' ' + (arrowLocation.y - rY)) :\n direction.concat(' L' + ' ' + (width) + ' ' + (arrowLocation.y + arrowPadding));\n direction = direction.concat(' L' + ' ' + (width) + ' ' + (height - rY) + ' Q ' + width + ' ' + (height) + ' ' + (width - rX) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (startX + rX) + ' ' + (height) + ' Q ' + startX + ' '\n + (height) + ' ' + (startX) + ' ' + (height - rY) + ' z');\n }\n else {\n direction = direction.concat('M' + ' ' + (startX + rX) + ' ' + (startY) + ' Q ' + (startX) + ' '\n + (startY) + ' ' + (startX) + ' ' + ((controlName === 'RangeNavigator' ? 0 : (startY + rY)) + ' L' + ' ' + (startX) + ' ' + (controlName === 'RangeNavigator' ? 0 : (arrowLocation.y - arrowPadding))));\n direction = (controlName === 'RangeNavigator') ? direction.concat(' L' + ' ' + (startX - arrowPadding) + ' ' + 0) :\n direction.concat(' L' + ' ' + (startX - arrowPadding) + ' ' + (tipY));\n direction = (controlName === 'RangeNavigator') ? direction.concat(' L' + ' ' + (startX) + ' ' + (arrowLocation.y - rY)) :\n direction.concat(' L' + ' ' + (startX) + ' ' + (arrowLocation.y + arrowPadding));\n direction = direction.concat(' L' + ' ' + (startX) + ' ' + (height - rY) + ' Q ' + startX + ' '\n + (height) + ' ' + (startX + rX) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (width - rX) + ' ' + (height) + ' Q ' + width + ' '\n + (height) + ' ' + (width) + ' ' + (height - rY) +\n ' L' + ' ' + (width) + ' ' + (startY + rY) + ' Q ' + width + ' '\n + (startY) + ' ' + (width - rX) + ' ' + (startY) + ' z');\n }\n return direction;\n}\n/** @private */\nvar Size = /** @class */ (function () {\n function Size(width, height) {\n this.width = width;\n this.height = height;\n }\n return Size;\n}());\nexport { Size };\n/** @private */\nvar Rect = /** @class */ (function () {\n function Rect(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n return Rect;\n}());\nexport { Rect };\nvar Side = /** @class */ (function () {\n function Side(bottom, right) {\n this.isRight = right;\n this.isBottom = bottom;\n }\n return Side;\n}());\nexport { Side };\n/** @private */\nvar CustomizeOption = /** @class */ (function () {\n function CustomizeOption(id) {\n this.id = id;\n }\n return CustomizeOption;\n}());\nexport { CustomizeOption };\n/** @private */\nvar TextOption = /** @class */ (function (_super) {\n __extends(TextOption, _super);\n function TextOption(id, x, y, anchor, text, transform, baseLine, labelRotation) {\n if (transform === void 0) { transform = ''; }\n var _this = _super.call(this, id) || this;\n _this.transform = '';\n _this.baseLine = 'auto';\n _this.labelRotation = 0;\n _this.x = x;\n _this.y = y;\n _this.anchor = anchor;\n _this.text = text;\n _this.transform = transform;\n _this.baseLine = baseLine;\n _this.labelRotation = labelRotation;\n return _this;\n }\n return TextOption;\n}(CustomizeOption));\nexport { TextOption };\n/** @private */\nexport function getElement(id) {\n return document.getElementById(id);\n}\n/** @private */\nexport function removeElement(id) {\n var element = getElement(id);\n if (element) {\n remove(element);\n }\n}\n/** @private */\nexport function drawSymbol(location, shape, size, url, options, role, label) {\n var renderer = new SvgRenderer('');\n var temp = calculateShapes(location, size, shape, options, url);\n var htmlObject = renderer['draw' + temp.functionName](temp.renderOption);\n htmlObject.setAttribute('role', role);\n htmlObject.setAttribute('aria-label', label);\n return htmlObject;\n}\n/** @private */\nexport function calculateShapes(location, size, shape, options, url) {\n var path;\n var functionName = 'Path';\n var width = size.width;\n var height = size.height;\n var locX = location.x;\n var locY = location.y;\n var x = location.x + (-width / 2);\n var y = location.y + (-height / 2);\n switch (shape) {\n case 'Circle':\n case 'Bubble':\n functionName = 'Ellipse';\n merge(options, { 'rx': width / 2, 'ry': height / 2, 'cx': locX, 'cy': locY });\n break;\n case 'Plus':\n path = 'M' + ' ' + x + ' ' + locY + ' ' + 'L' + ' ' + (locX + (width / 2)) + ' ' + locY + ' ' +\n 'M' + ' ' + locX + ' ' + (locY + (height / 2)) + ' ' + 'L' + ' ' + locX + ' ' +\n (locY + (-height / 2));\n merge(options, { 'd': path, stroke: options.fill });\n break;\n case 'Cross':\n path = 'M' + ' ' + x + ' ' + (locY + (-height / 2)) + ' ' + 'L' + ' ' + (locX + (width / 2)) + ' ' + (locY + (height / 2)) + ' ' +\n 'M' + ' ' + x + ' ' + (locY + (height / 2)) + ' ' + 'L' + ' ' + (locX + (width / 2)) + ' ' +\n (locY + (-height / 2));\n merge(options, { 'd': path, stroke: options.fill });\n break;\n case 'HorizontalLine':\n path = 'M' + ' ' + x + ' ' + locY + ' ' + 'L' + ' ' + (locX + (width / 2)) + ' ' + locY;\n merge(options, { 'd': path, stroke: options.fill });\n break;\n case 'VerticalLine':\n path = 'M' + ' ' + locX + ' ' + (locY + (height / 2)) + ' ' + 'L' + ' ' + locX + ' ' + (locY + (-height / 2));\n merge(options, { 'd': path, stroke: options.fill });\n break;\n case 'Diamond':\n path = 'M' + ' ' + x + ' ' + locY + ' ' +\n 'L' + ' ' + locX + ' ' + (locY + (-height / 2)) + ' ' +\n 'L' + ' ' + (locX + (width / 2)) + ' ' + locY + ' ' +\n 'L' + ' ' + locX + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + locY + ' z';\n merge(options, { 'd': path });\n break;\n case 'Rectangle':\n path = 'M' + ' ' + x + ' ' + (locY + (-height / 2)) + ' ' +\n 'L' + ' ' + (locX + (width / 2)) + ' ' + (locY + (-height / 2)) + ' ' +\n 'L' + ' ' + (locX + (width / 2)) + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (locY + (-height / 2)) + ' z';\n merge(options, { 'd': path });\n break;\n case 'Triangle':\n path = 'M' + ' ' + x + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + locX + ' ' + (locY + (-height / 2)) + ' ' +\n 'L' + ' ' + (locX + (width / 2)) + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (locY + (height / 2)) + ' z';\n merge(options, { 'd': path });\n break;\n case 'InvertedTriangle':\n path = 'M' + ' ' + (locX + (width / 2)) + ' ' + (locY - (height / 2)) + ' ' +\n 'L' + ' ' + locX + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + (locX - (width / 2)) + ' ' + (locY - (height / 2)) + ' ' +\n 'L' + ' ' + (locX + (width / 2)) + ' ' + (locY - (height / 2)) + ' z';\n merge(options, { 'd': path });\n break;\n case 'Pentagon':\n var eq = 72;\n var xValue = void 0;\n var yValue = void 0;\n for (var i = 0; i <= 5; i++) {\n xValue = (width / 2) * Math.cos((Math.PI / 180) * (i * eq));\n yValue = (height / 2) * Math.sin((Math.PI / 180) * (i * eq));\n if (i === 0) {\n path = 'M' + ' ' + (locX + xValue) + ' ' + (locY + yValue) + ' ';\n }\n else {\n path = path.concat('L' + ' ' + (locX + xValue) + ' ' + (locY + yValue) + ' ');\n }\n }\n path = path.concat('Z');\n merge(options, { 'd': path });\n break;\n case 'Image':\n functionName = 'Image';\n merge(options, { 'href': url, 'height': height, 'width': width, x: x, y: y });\n break;\n case 'Star': {\n var cornerPoints = 5;\n var outerRadius = Math.min(width, height) / 2;\n var innerRadius = outerRadius / 2;\n var angle = Math.PI / cornerPoints;\n var starPath = '';\n for (var i = 0; i < 2 * cornerPoints; i++) {\n var radius = (i % 2 === 0) ? outerRadius : innerRadius;\n var currentX = locX + radius * Math.cos(i * angle - Math.PI / 2);\n var currentY = locY + radius * Math.sin(i * angle - Math.PI / 2);\n starPath += (i === 0 ? 'M' : 'L') + currentX + ',' + currentY;\n }\n starPath += 'Z';\n merge(options, { 'd': starPath });\n break;\n }\n }\n return { renderOption: options, functionName: functionName };\n}\n/** @private */\nvar PathOption = /** @class */ (function (_super) {\n __extends(PathOption, _super);\n function PathOption(id, fill, width, color, opacity, dashArray, d) {\n var _this = _super.call(this, id) || this;\n _this.opacity = opacity;\n _this.fill = fill;\n _this.stroke = color;\n _this['stroke-width'] = width;\n _this['stroke-dasharray'] = dashArray;\n _this.d = d;\n return _this;\n }\n return PathOption;\n}(CustomizeOption));\nexport { PathOption };\n/** @private */\nexport function textElement(options, font, color, parent, themeStyle) {\n var renderOptions = {};\n var renderer = new SvgRenderer('');\n renderOptions = {\n 'id': options.id,\n 'x': options.x,\n 'y': options.y,\n 'fill': color,\n 'font-size': font.size || themeStyle.size,\n 'font-style': font.fontStyle || themeStyle.fontStyle,\n 'font-family': font.fontFamily || themeStyle.fontFamily,\n 'font-weight': font.fontWeight || themeStyle.fontWeight,\n 'text-anchor': options.anchor,\n 'transform': options.transform,\n 'opacity': font.opacity,\n 'dominant-baseline': options.baseLine\n };\n var text = typeof options.text === 'string' ? options.text : options.text[0];\n var htmlObject = renderer.createText(renderOptions, text);\n if (parent) {\n parent.appendChild(htmlObject);\n }\n return htmlObject;\n}\nvar TooltipLocation = /** @class */ (function () {\n function TooltipLocation(x, y) {\n this.x = x;\n this.y = y;\n }\n return TooltipLocation;\n}());\nexport { TooltipLocation };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable security/detect-object-injection */\n/* eslint-disable no-useless-escape */\n/* eslint-disable security/detect-non-literal-regexp */\n/* eslint-disable @typescript-eslint/ban-types */\n/* eslint-disable jsdoc/require-param */\n/* eslint-disable jsdoc/require-returns */\n/* eslint-disable valid-jsdoc */\nimport { NotifyPropertyChanges, Property, Event, Complex, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { extend, compile as templateComplier, Component, resetBlazorTemplate, isBlazor, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '../svg-render/index';\nimport { ChildProperty, createElement, remove, Browser, Animation, animationMode } from '@syncfusion/ej2-base';\nimport { getTooltipThemeColor } from './interface';\nimport { Size, Rect, Side, measureText, getElement, findDirection, drawSymbol, textElement } from './helper';\nimport { removeElement, TextOption, TooltipLocation, PathOption, withInAreaBounds } from './helper';\n/**\n * Configures the fonts in charts.\n *\n * @private\n */\nvar TextStyle = /** @class */ (function (_super) {\n __extends(TextStyle, _super);\n function TextStyle() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], TextStyle.prototype, \"size\", void 0);\n __decorate([\n Property('')\n ], TextStyle.prototype, \"color\", void 0);\n __decorate([\n Property('Segoe UI')\n ], TextStyle.prototype, \"fontFamily\", void 0);\n __decorate([\n Property('Normal')\n ], TextStyle.prototype, \"fontWeight\", void 0);\n __decorate([\n Property('Normal')\n ], TextStyle.prototype, \"fontStyle\", void 0);\n __decorate([\n Property(1)\n ], TextStyle.prototype, \"opacity\", void 0);\n return TextStyle;\n}(ChildProperty));\nexport { TextStyle };\n/**\n * Configures the borders in the chart.\n *\n * @private\n */\nvar TooltipBorder = /** @class */ (function (_super) {\n __extends(TooltipBorder, _super);\n function TooltipBorder() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], TooltipBorder.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], TooltipBorder.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], TooltipBorder.prototype, \"dashArray\", void 0);\n return TooltipBorder;\n}(ChildProperty));\nexport { TooltipBorder };\n/**\n * Configures the borders in the chart.\n *\n * @private\n */\nvar AreaBounds = /** @class */ (function (_super) {\n __extends(AreaBounds, _super);\n function AreaBounds() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], AreaBounds.prototype, \"x\", void 0);\n __decorate([\n Property(0)\n ], AreaBounds.prototype, \"y\", void 0);\n __decorate([\n Property(0)\n ], AreaBounds.prototype, \"width\", void 0);\n __decorate([\n Property(0)\n ], AreaBounds.prototype, \"height\", void 0);\n return AreaBounds;\n}(ChildProperty));\nexport { AreaBounds };\n/**\n * Configures the borders in the chart.\n *\n * @private\n */\nvar ToolLocation = /** @class */ (function (_super) {\n __extends(ToolLocation, _super);\n function ToolLocation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], ToolLocation.prototype, \"x\", void 0);\n __decorate([\n Property(0)\n ], ToolLocation.prototype, \"y\", void 0);\n return ToolLocation;\n}(ChildProperty));\nexport { ToolLocation };\n/**\n * Represents the Tooltip control.\n * ```html\n *
\n * \n * ```\n *\n * @private\n */\nvar Tooltip = /** @class */ (function (_super) {\n __extends(Tooltip, _super);\n /**\n * Constructor for creating the widget\n *\n * @hidden\n */\n function Tooltip(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler.\n *\n * @private\n */\n Tooltip.prototype.preRender = function () {\n this.allowServerDataBinding = false;\n this.initPrivateVariable();\n if (!this.isCanvas) {\n this.removeSVG();\n }\n this.createTooltipElement();\n };\n Tooltip.prototype.initPrivateVariable = function () {\n this.renderer = new SvgRenderer(this.element.id);\n this.themeStyle = getTooltipThemeColor(this.theme);\n this.formattedText = [];\n this.padding = 5;\n this.highlightPadding = 3;\n this.areaMargin = 10;\n this.isFirst = true;\n this.markerPoint = [];\n };\n Tooltip.prototype.removeSVG = function () {\n var svgObject = document.getElementById(this.element.id + '_svg');\n var templateObject = document.getElementById(this.element.id + 'parent_template');\n if (this.blazorTemplate) {\n resetBlazorTemplate(this.element.id + 'parent_template' + '_blazorTemplate');\n }\n if (svgObject && svgObject.parentNode) {\n remove(svgObject);\n }\n if (templateObject && templateObject.parentNode) {\n remove(templateObject);\n }\n };\n /**\n * To Initialize the control rendering.\n */\n Tooltip.prototype.render = function () {\n this.fadeOuted = false;\n if (!this.template) {\n this.renderText(this.isFirst);\n var argsData = {\n cancel: false, name: 'tooltipRender', tooltip: this\n };\n this.trigger('tooltipRender', argsData);\n var markerSide = this.renderTooltipElement(this.areaBounds, this.location);\n this.drawMarker(markerSide.isBottom, markerSide.isRight, this.markerSize);\n }\n else {\n this.updateTemplateFn();\n this.createTemplate(this.areaBounds, this.location);\n }\n this.trigger('loaded', { tooltip: this });\n var element = document.getElementById('chartmeasuretext');\n if (element) {\n remove(element);\n }\n this.allowServerDataBinding = true;\n };\n Tooltip.prototype.createTooltipElement = function () {\n this.textElements = [];\n if (!this.template || this.shared) {\n // SVG element for tooltip\n if (this.enableRTL) {\n this.element.setAttribute('dir', 'ltr');\n }\n var svgObject = this.renderer.createSvg({ id: this.element.id + '_svg' });\n this.element.appendChild(svgObject);\n // Group to hold text and path.\n var groupElement = document.getElementById(this.element.id + '_group');\n if (!groupElement) {\n groupElement = this.renderer.createGroup({ id: this.element.id + '_group' });\n groupElement.setAttribute('transform', 'translate(0,0)');\n }\n svgObject.appendChild(groupElement);\n var pathElement = this.renderer.drawPath({\n 'id': this.element.id + '_path', 'stroke-width': ((this.theme === 'Fabric' || this.theme === 'Fluent' || this.theme === 'Fluent2') && !this.border.width) ? 1 : this.border.width,\n 'fill': this.fill || this.themeStyle.tooltipFill, 'opacity': ((this.theme === 'TailwindDark' || this.theme === 'Tailwind' || this.theme === 'Bootstrap5' || this.theme === 'Bootstrap5Dark' || this.theme.indexOf('Fluent2') > -1) && this.opacity === 0.75) ?\n 1 : this.opacity,\n 'stroke': this.border.color || (this.theme === 'Fabric' || this.theme === 'Fluent' || this.theme === 'Fluent2' ? '#D2D0CE' : this.border.color)\n });\n groupElement.appendChild(pathElement);\n }\n };\n Tooltip.prototype.drawMarker = function (isBottom, isRight, size) {\n if (this.shapes.length <= 0) {\n return null;\n }\n var shapeOption;\n var count = 0;\n var markerGroup = this.renderer.createGroup({ id: this.element.id + '_trackball_group' });\n var groupElement = getElement(this.element.id + '_group');\n if (!groupElement) {\n return null;\n }\n var x = ((this.enableRTL) ? this.elementSize.width - (size / 2) :\n (this.marginX * 2) + (size / 2)) + (isRight ? this.arrowPadding : 0);\n for (var _i = 0, _a = this.shapes; _i < _a.length; _i++) {\n var shape = _a[_i];\n if (shape !== 'None') {\n shapeOption = new PathOption(this.element.id + '_Trackball_' + count, this.palette[count], 1, '#cccccc', 1, null);\n if (this.markerPoint[count]) {\n var padding = 0;\n if (this.header.indexOf(' -1) {\n padding = this.header.split(//g).length + count;\n }\n var tooltipContent = (this.formattedText && this.formattedText.length >= 2)\n ? this.getTooltipTextContent(this.formattedText[1]) + \", \" + this.getTooltipTextContent(this.formattedText[0])\n : '';\n markerGroup.appendChild(drawSymbol(new TooltipLocation(x, this.markerPoint[count] - this.padding + (isBottom ? this.arrowPadding : padding)), shape, new Size(size, size), '', shapeOption, \"img\", tooltipContent));\n }\n count++;\n }\n }\n groupElement.appendChild(markerGroup);\n };\n Tooltip.prototype.renderTooltipElement = function (areaBounds, location) {\n var tooltipDiv = getElement(this.element.id);\n var arrowLocation = new TooltipLocation(0, 0);\n var tipLocation = new TooltipLocation(0, 0);\n var svgObject = getElement(this.element.id + '_svg');\n var groupElement = getElement(this.element.id + '_group');\n var pathElement = getElement(this.element.id + '_path');\n var rect;\n var isTop = false;\n var isLeft = false;\n var isBottom = false;\n var x = 0;\n var y = 0;\n if (!isNullOrUndefined(groupElement)) {\n if (this.header !== '') {\n this.elementSize.height += this.marginY;\n }\n if (this.isFixed) {\n var width = this.elementSize.width + (2 * this.marginX);\n var height = this.elementSize.height + (2 * this.marginY);\n rect = new Rect(location.x, location.y, width, height);\n }\n else if (this.content.length > 1) {\n rect = this.sharedTooltipLocation(areaBounds, this.location.x, this.location.y);\n isTop = true;\n }\n else {\n rect = this.tooltipLocation(areaBounds, location, arrowLocation, tipLocation);\n if (!this.inverted) {\n isTop = (rect.y < (location.y + this.clipBounds.y));\n isBottom = !isTop;\n y = (isTop ? 0 : this.arrowPadding);\n }\n else {\n isLeft = (rect.x < (location.x + this.clipBounds.x));\n x = (isLeft ? 0 : this.arrowPadding);\n if (this.allowHighlight) {\n rect.x += isLeft ? this.highlightPadding : -(2 * this.highlightPadding);\n }\n }\n }\n if (this.header !== '') {\n var wrapPadding = 2;\n var padding = 0;\n var wrapHeader = this.isWrap ? this.wrappedText : this.header;\n if (this.isWrap && typeof (wrapHeader) === 'string' && (wrapHeader.indexOf('<') > -1 || wrapHeader.indexOf('>') > -1)) {\n var textArray = wrapHeader.split('
');\n wrapPadding = textArray.length;\n }\n if (this.header.indexOf(' -1) {\n padding = 5 * (this.header.split(//g).length - 1);\n }\n var key = 'properties';\n var font = extend({}, this.textStyle, null, true)[key];\n var headerSize = measureText(this.isWrap ? this.wrappedText : this.header, font, this.themeStyle.textStyle).height +\n (this.marginY * wrapPadding) + (isBottom ? this.arrowPadding : 0) + (this.isWrap ? 5 : padding); //header padding;\n var xLength = (this.marginX * 3) + (!isLeft && !isTop && !isBottom ? this.arrowPadding : 0);\n var direction = 'M ' + xLength + ' ' + headerSize +\n 'L ' + (rect.width + (!isLeft && !isTop && !isBottom ? this.arrowPadding : 0) - (this.marginX * 2)) +\n ' ' + headerSize;\n var pathElement_1 = this.renderer.drawPath({\n 'id': this.element.id + '_header_path', 'stroke-width': 1,\n 'fill': null, 'opacity': this.theme === ('Material3' || 'Material3Dark') ? 0.2 : 0.8, 'stroke': this.themeStyle.tooltipHeaderLine, 'd': direction\n });\n groupElement.appendChild(pathElement_1);\n }\n var start = this.border.width / 2;\n var pointRect = new Rect(start + x, start + y, rect.width - start, rect.height - start);\n groupElement.setAttribute('opacity', '1');\n if (this.enableAnimation && !this.isFirst && !this.crosshair) {\n this.animateTooltipDiv(tooltipDiv, rect);\n }\n else {\n this.updateDiv(tooltipDiv, rect.x, rect.y);\n }\n // eslint-disable-next-line no-extra-boolean-cast\n svgObject.setAttribute('height', (rect.height + this.border.width + (!((!this.inverted)) ? 0 : this.arrowPadding) + 5).toString());\n svgObject.setAttribute('width', (rect.width + this.border.width + (((!this.inverted)) ? 0 : this.arrowPadding) + 5).toString());\n svgObject.setAttribute('opacity', '1');\n if (!isNullOrUndefined(this.tooltipPlacement)) {\n isTop = this.tooltipPlacement.indexOf('Top') > -1;\n isBottom = this.tooltipPlacement.indexOf('Bottom') > -1;\n isLeft = this.tooltipPlacement.indexOf('Left') > -1;\n }\n pathElement.setAttribute('d', findDirection(this.rx, this.ry, pointRect, arrowLocation, this.arrowPadding, isTop, isBottom, isLeft, tipLocation.x, tipLocation.y, this.controlName));\n if ((this.enableShadow && this.theme !== 'Bootstrap4') || this.theme.indexOf('Fluent2') > -1) {\n // To fix next chart initial tooltip opacity issue in tab control\n var shadowId = this.element.id + '_shadow';\n if (this.theme === 'Tailwind' || this.theme === 'TailwindDark'\n || this.theme === 'Bootstrap5' || this.theme === 'Bootstrap5Dark') {\n pathElement.setAttribute('box-shadow', '0px 1px 2px rgba(0, 0, 0, 0.06), 0px 1px 3px rgba(0, 0, 0, 0.1)');\n }\n else {\n pathElement.setAttribute('filter', Browser.isIE ? '' : 'url(#' + shadowId + ')');\n }\n var shadow = '';\n if (this.theme.indexOf('Fluent2') > -1) {\n shadow += '';\n }\n else {\n shadow += '';\n }\n shadow += '';\n var defElement = this.renderer.createDefs();\n defElement.setAttribute('id', this.element.id + 'SVG_tooltip_definition');\n groupElement.appendChild(defElement);\n defElement.innerHTML = shadow;\n }\n var borderColor = ((this.theme === 'Fabric' || this.theme === 'Fluent' || this.theme === 'Fluent2') && !this.border.color) ? '#D2D0CE' : this.border.color;\n pathElement.setAttribute('stroke', borderColor);\n if (!isNullOrUndefined(this.border.dashArray)) {\n pathElement.setAttribute('stroke-dasharray', this.border.dashArray);\n }\n this.changeText(new TooltipLocation(x, y), isBottom, !isLeft && !isTop && !isBottom);\n if (this.revert) {\n this.inverted = !this.inverted;\n this.revert = false;\n }\n }\n return new Side(isBottom, !isLeft && !isTop && !isBottom);\n };\n Tooltip.prototype.changeText = function (point, isBottom, isRight) {\n var element = document.getElementById(this.element.id + '_text');\n if (isBottom) {\n element.setAttribute('transform', 'translate(0,' + this.arrowPadding + ')');\n }\n if (isRight) {\n element.setAttribute('transform', 'translate(' + this.arrowPadding + ' 0)');\n }\n };\n Tooltip.prototype.findFormattedText = function () {\n this.formattedText = [];\n if (this.header.replace(//g, '').replace(/<\\/b>/g, '').trim() !== '') {\n this.formattedText = this.formattedText.concat(this.header);\n }\n this.formattedText = this.formattedText.concat(this.content);\n };\n // tslint:disable-next-line:max-func-body-length\n Tooltip.prototype.renderText = function (isRender) {\n var height = 0;\n var width = 0; // Padding for text;\n var subWidth = 0;\n var lines;\n var key = 'properties';\n var font = extend({}, this.textStyle, null, true)[key];\n var groupElement = getElement(this.element.id + '_group');\n var tspanElement;\n var textCollection;\n var tspanStyle = '';\n var line;\n var tspanOption;\n this.findFormattedText();\n this.isWrap = false;\n var isRtlEnabled = document.body.getAttribute('dir') === 'rtl';\n var anchor = isRtlEnabled && !this.enableRTL ? 'end' : 'start';\n this.leftSpace = this.areaBounds.x + this.location.x;\n this.rightSpace = (this.areaBounds.x + this.areaBounds.width) - this.leftSpace;\n var headerContent = this.header.replace(//g, '').replace(/<\\/b>/g, '').trim();\n var isBoldTag = this.header.indexOf('') > -1 && this.header.indexOf('') > -1;\n var headerWidth = measureText(this.formattedText[0], font, this.themeStyle.textStyle).width\n + (2 * this.marginX) + this.arrowPadding;\n var isLeftSpace = (this.location.x - headerWidth) < this.location.x;\n var isRightSpace = (this.areaBounds.x + this.areaBounds.width) < (this.location.x + headerWidth);\n var header;\n var headerSpace = (headerContent !== '') ? this.marginY : 0;\n var isRow = true;\n var isColumn = true;\n this.markerPoint = [];\n var markerSize = (this.shapes.length > 0) ? 10 : 0;\n var markerPadding = (this.shapes.length > 0) ? 5 : 0;\n var spaceWidth = 4;\n var subStringLength;\n var fontSize = '12px';\n var fontWeight = '400';\n var labelColor = this.themeStyle.tooltipLightLabel;\n var dy = (22 / parseFloat(fontSize)) * (parseFloat(font.size));\n var contentWidth = [];\n var textHeight = 0;\n if (!isRender || this.isCanvas) {\n removeElement(this.element.id + '_text');\n removeElement(this.element.id + '_header_path');\n removeElement(this.element.id + '_trackball_group');\n removeElement(this.element.id + 'SVG_tooltip_definition');\n }\n // Condition to resolve the text size issue only in chart.\n if (this.controlName === 'Chart' && parseFloat(fontSize) < parseFloat(font.size)) {\n textHeight = (parseFloat(font.size) - parseFloat(fontSize));\n }\n var options = new TextOption(this.element.id + '_text', this.marginX * 2, (textHeight + this.marginY * 2 + this.padding * 2 + (this.marginY === 2 ? this.controlName === 'RangeNavigator' ? 5 : 3 : 0)), anchor, '');\n var parentElement = textElement(options, font, font.color || this.themeStyle.tooltipBoldLabel, groupElement, this.themeStyle.textStyle);\n var withoutHeader = this.formattedText.length === 1 && this.formattedText[0].indexOf(' : ') > -1;\n var isHeader = this.header !== '';\n var size = isHeader && isBoldTag ? 16 : 13;\n for (var k = 0, pointsLength = this.formattedText.length; k < pointsLength; k++) {\n textCollection = this.formattedText[k].replace(/<(b|strong)>/g, '')\n .replace(/<\\/(b|strong)>/g, '')\n .split(//g);\n if (this.isTextWrap && this.header !== this.formattedText[k] && this.formattedText[k].indexOf(' this.rightSpace ? (this.leftSpace / size) : (this.rightSpace / size));\n textCollection = this.formattedText[k].match(new RegExp('.{1,' + subStringLength + '}', 'g'));\n }\n if (k === 0 && !withoutHeader && this.isTextWrap &&\n (this.leftSpace < headerWidth || isLeftSpace) &&\n (this.rightSpace < headerWidth || isRightSpace)) {\n subStringLength = Math.round(this.leftSpace > this.rightSpace ? (this.leftSpace / size) : (this.rightSpace / size));\n header = headerContent !== '' ? headerContent : this.formattedText[k];\n textCollection = header.match(new RegExp('.{1,' + subStringLength + '}', 'g'));\n this.wrappedText = isBoldTag ? '' + textCollection.join('
') + '
' : textCollection.join('
');\n this.isWrap = textCollection.length > 1;\n }\n if (textCollection[0] === '') {\n continue;\n }\n if ((k !== 0) || (headerContent === '')) {\n this.markerPoint.push((headerContent !== '' ? (this.marginY) : 0) + options.y + height - (textHeight !== 0 ? ((textHeight / this.markerSize) * (parseFloat(font.size) / this.markerSize)) : 0));\n }\n for (var i = 0, len = textCollection.length; i < len; i++) { // string value of unicode for LTR is \\u200E\n lines = textCollection[i].replace(//g, '
').replace(/<\\/b>/g, '
').replace(/:/g, (this.enableRTL) ? '
\\u200E:
' : '
\\u200E:
')\n .split('
');\n if (this.enableRTL && lines.length > 0 && textCollection[i].match(/:/g)) {\n lines[0] = lines[0].trim();\n lines.reverse();\n }\n subWidth = 0;\n isColumn = true;\n height += dy;\n for (var j = 0, len_1 = lines.length; j < len_1; j++) {\n line = lines[j];\n if (this.enableRTL && line !== '' && this.isRTLText(line)) {\n line = line.concat('\\u200E');\n }\n if (!/\\S/.test(line) && line !== '') {\n line = ' '; //to trim multiple white spaces to single white space\n }\n if ((!isColumn && line === ' ') || (line.replace(//g, '').replace(/<\\/b>/g, '').trim() !== '')) {\n subWidth += line !== ' ' ? spaceWidth : 0;\n if (isColumn && !isRow) {\n if (this.header.indexOf(' -1 && k !== 0) {\n headerSpace += this.header.split(//g).length;\n }\n tspanOption = {\n x: (this.marginX * 2) + (markerSize + markerPadding),\n dy: dy + ((isColumn) ? headerSpace : 0), fill: ''\n };\n headerSpace = null;\n }\n else {\n if (isRow && isColumn) {\n tspanOption = {\n x: (headerContent === '') ? ((this.marginX * 2) + (markerSize + markerPadding))\n : (this.marginX * 2) + (this.isWrap ? (markerSize + markerPadding) : 0)\n };\n }\n else {\n tspanOption = {};\n }\n }\n isColumn = false;\n tspanElement = this.renderer.createTSpan(tspanOption, '');\n parentElement.appendChild(tspanElement);\n if (line.indexOf('') > -1 || ((isBoldTag && j === 0 && k === 0) && (isHeader || this.isWrap))) {\n fontWeight = '600';\n labelColor = this.themeStyle.tooltipBoldLabel;\n tspanStyle = 'font-weight:' + fontWeight;\n font.fontWeight = fontWeight;\n (tspanElement).setAttribute('fill', this.textStyle.color || labelColor);\n }\n else {\n tspanStyle = fontWeight === '600' ? 'font-weight:' + fontWeight : '';\n font.fontWeight = fontWeight;\n (tspanElement).setAttribute('fill', this.textStyle.color || labelColor);\n }\n if (line.indexOf('') > -1 || ((isBoldTag && j === len_1 - 1 && k === 0) && (isHeader || this.isWrap))) {\n fontWeight = 'Normal';\n labelColor = this.themeStyle.tooltipLightLabel;\n }\n // eslint-disable-next-line no-useless-escape\n if (tspanStyle !== '') {\n tspanElement.style.fontWeight = tspanStyle.split('font-weight:')[1];\n tspanElement.style.color = tspanElement.getAttribute('fill');\n }\n // 'inherit' will apply css style from parent element.\n tspanElement.style.fontFamily = 'inherit';\n tspanElement.style.fontStyle = 'inherit';\n tspanElement.style.fontSize = (this.header === this.formattedText[k]) ? font.size : this.textStyle.size;\n tspanElement.style.fontWeight = (this.header === this.formattedText[k] && (this.header.indexOf('') || this.header.indexOf('')) === -1) ? (this.textStyle.fontWeight || '600') : line.indexOf('') > -1 || line.indexOf('') > -1 ? 'bold' : (this.textStyle.fontWeight || font.fontWeight);\n var textFont = extend({}, this.textStyle, null, true)[key];\n textFont.fontWeight = tspanElement.style.fontWeight;\n isRow = false;\n (tspanElement).textContent = line = this.getTooltipTextContent(line);\n subWidth += measureText(line, textFont, this.themeStyle.textStyle).width;\n }\n }\n subWidth -= spaceWidth;\n width = Math.max(width, subWidth);\n contentWidth.push(subWidth);\n }\n }\n this.elementSize = new Size(width + (width > 0 ? (2 * this.marginX) : 0), height);\n this.elementSize.width += (markerSize + markerPadding); // marker size + marker Spacing\n var element = (parentElement.childNodes[0]);\n if (headerContent !== '' && element && !this.isWrap) {\n font.fontWeight = '600';\n var width_1 = (this.elementSize.width + (2 * this.padding)) / 2 - measureText(headerContent, font, this.themeStyle.textStyle).width / 2;\n element.setAttribute('x', width_1.toString());\n }\n this.renderContentRTL(parentElement, isHeader, markerSize + markerPadding, contentWidth);\n };\n Tooltip.prototype.renderContentRTL = function (textElement, isHeader, markerSize, contentWidth) {\n if (this.enableRTL) {\n var tspanElement = void 0;\n var contentWidthIndex = isHeader ? 1 : 0;\n for (var i = 0; i < textElement.childNodes.length; i++) {\n tspanElement = (textElement.childNodes[i]);\n if ((!isHeader || i > 0) && !isNullOrUndefined(tspanElement.getAttribute('x'))) {\n tspanElement.setAttribute('x', (this.elementSize.width - (markerSize + contentWidth[contentWidthIndex])).toString());\n contentWidthIndex++;\n }\n }\n }\n };\n Tooltip.prototype.getTooltipTextContent = function (tooltipText) {\n var characterCollection = tooltipText.match(/<[a-zA-Z\\/](.|\\n)*?>/g);\n if (isNullOrUndefined(characterCollection)) {\n return tooltipText;\n }\n var isRtlText = this.isRTLText(tooltipText);\n for (var i = 0; i < characterCollection.length; i++) {\n if (this.isValidHTMLElement(characterCollection[i].replace('<', '').replace('/', '').replace('>', '').trim())) {\n tooltipText = tooltipText.replace(characterCollection[i], isRtlText ? '\\u200E' : '');\n }\n }\n return tooltipText;\n };\n Tooltip.prototype.isValidHTMLElement = function (element) {\n return document.createElement(element).toString() !== '[object HTMLUnknownElement]';\n };\n Tooltip.prototype.isRTLText = function (tooltipContent) {\n return /[\\u0590-\\u07FF\\u200F\\u202B\\u202E\\uFB1D-\\uFDFD\\uFE70-\\uFEFC]/.test(tooltipContent);\n };\n Tooltip.prototype.createTemplate = function (areaBounds, location) {\n var argsData = { cancel: false, name: 'tooltipRender', tooltip: this };\n this.trigger('tooltipRender', argsData);\n var parent = document.getElementById(this.element.id);\n if (this.isCanvas) {\n this.removeSVG();\n }\n var firstElement = parent.firstElementChild;\n if (firstElement) {\n remove(firstElement);\n }\n if (!argsData.cancel) {\n var elem = createElement('div', { id: this.element.id + 'parent_template' });\n var templateElement = void 0;\n if (this.controlName === 'Chart' && this.shared) {\n for (var i = 0; i < this.data.length; i++) {\n var sharedTemplateElement = this.templateFn(this.data[i], this.controlInstance, elem.id, elem.id + '_blazorTemplate', '');\n if (i === 0) {\n templateElement = sharedTemplateElement;\n }\n else {\n if (sharedTemplateElement.length > 1) {\n templateElement[i].outerHTML = sharedTemplateElement[i].outerHTML || sharedTemplateElement[i].textContent;\n }\n else {\n templateElement[templateElement.length - 1].outerHTML += sharedTemplateElement[0].outerHTML;\n }\n }\n }\n }\n else {\n templateElement = this.templateFn(this.data, this.controlInstance, elem.id, elem.id + '_blazorTemplate', '');\n }\n while (templateElement && templateElement.length > 0) {\n if (isBlazor() || templateElement.length === 1) {\n elem.appendChild(templateElement[0]);\n templateElement = null;\n }\n else {\n elem.appendChild(templateElement[0]);\n }\n }\n parent.appendChild(elem);\n var element = this.isCanvas ? elem : this.element;\n var rect = element.getBoundingClientRect();\n this.padding = 0;\n this.elementSize = new Size(rect.width, rect.height);\n var tooltipRect = this.shared ? this.sharedTooltipLocation(areaBounds, this.location.x, this.location.y)\n : this.tooltipLocation(areaBounds, location, new TooltipLocation(0, 0), new TooltipLocation(0, 0));\n if (this.enableAnimation && !this.isFirst && !this.crosshair) {\n this.animateTooltipDiv(this.element, tooltipRect);\n }\n else {\n this.updateDiv(element, tooltipRect.x, tooltipRect.y);\n }\n if (this.blazorTemplate) {\n //Customer issue - F149037 Call back function to handle the blazor tooltip alignment issues\n var tooltipRendered = function () {\n var rect1 = getElement(thisObject_1.element.id).getBoundingClientRect();\n thisObject_1.elementSize = new Size(rect1.width, rect1.height);\n var tooltipRect1 = thisObject_1.tooltipLocation(areaBounds, location, new TooltipLocation(0, 0), new TooltipLocation(0, 0));\n thisObject_1.updateDiv(getElement(thisObject_1.element.id), tooltipRect1.x, tooltipRect1.y);\n };\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisObject_1 = this;\n tooltipRendered.bind(thisObject_1, areaBounds, location);\n updateBlazorTemplate(this.element.id + 'parent_template' + '_blazorTemplate', this.blazorTemplate.name, this.blazorTemplate.parent, undefined, tooltipRendered);\n }\n }\n else {\n remove(getElement(this.element.id + '_tooltip'));\n }\n };\n Tooltip.prototype.sharedTooltipLocation = function (bounds, x, y) {\n var width = this.elementSize.width + (2 * this.marginX);\n var height = this.elementSize.height + (2 * this.marginY);\n var tooltipRect = new Rect(x + 2 * this.padding, y - height - this.padding, width, height);\n if (tooltipRect.y < bounds.y) {\n tooltipRect.y += (tooltipRect.height + 2 * this.padding);\n }\n if (tooltipRect.y + tooltipRect.height > bounds.y + bounds.height) {\n tooltipRect.y = Math.max((bounds.y + bounds.height) - (tooltipRect.height + 2 * this.padding), bounds.y);\n }\n if (tooltipRect.x + tooltipRect.width > bounds.x + bounds.width) {\n tooltipRect.x = (bounds.x + this.location.x) - (tooltipRect.width + 4 * this.padding);\n }\n if (tooltipRect.x < bounds.x) {\n tooltipRect.x = bounds.x;\n }\n return tooltipRect;\n };\n Tooltip.prototype.getCurrentPosition = function (bounds, symbolLocation, arrowLocation, tipLocation) {\n var position = this.tooltipPlacement;\n var clipX = this.clipBounds.x;\n var clipY = this.clipBounds.y;\n var markerHeight = this.offset;\n var width = this.elementSize.width + (2 * this.marginX);\n var height = this.elementSize.height + (2 * this.marginY);\n var location = new TooltipLocation(symbolLocation.x, symbolLocation.y);\n if (position === 'Top' || position === 'Bottom') {\n location = new TooltipLocation(location.x + clipX - this.elementSize.width / 2 - this.padding, location.y + clipY - this.elementSize.height - (2 * this.padding) - this.arrowPadding - markerHeight);\n arrowLocation.x = tipLocation.x = width / 2;\n if (position === 'Bottom') {\n location.y = symbolLocation.y + clipY + markerHeight;\n }\n if (bounds.x + bounds.width < location.x + width) {\n location.x = (bounds.width > width) ? ((bounds.x + bounds.width) - width + 6) : bounds.x;\n arrowLocation.x = tipLocation.x = (bounds.width > width) ? (bounds.x + symbolLocation.x - location.x) : symbolLocation.x;\n }\n else if (bounds.x > location.x) {\n location.x = bounds.x;\n arrowLocation.x = tipLocation.x = symbolLocation.x;\n }\n }\n else {\n location = new TooltipLocation(location.x + clipX + markerHeight, location.y + clipY - this.elementSize.height / 2 - (this.padding));\n arrowLocation.y = tipLocation.y = height / 2;\n if (position === 'Left') {\n location.x = symbolLocation.x + clipX - markerHeight - (width + this.arrowPadding);\n }\n if (bounds.y + bounds.height < location.y + height) {\n location.y = (bounds.height > height) ? ((bounds.y + bounds.height) - height + 6) : bounds.y;\n arrowLocation.y = tipLocation.y = (bounds.height > height) ? (bounds.y + symbolLocation.y - location.y) : symbolLocation.y;\n }\n else if (bounds.y > location.y) {\n location.y = bounds.y;\n arrowLocation.y = tipLocation.y = symbolLocation.y;\n }\n }\n return new Rect(location.x, location.y, width, height);\n };\n // tslint:disable-next-line:max-func-body-length\n Tooltip.prototype.tooltipLocation = function (bounds, symbolLocation, arrowLocation, tipLocation) {\n if (!isNullOrUndefined(this.tooltipPlacement)) {\n var tooltipRect = this.getCurrentPosition(bounds, symbolLocation, arrowLocation, tipLocation);\n return tooltipRect;\n }\n var location = new TooltipLocation(symbolLocation.x, symbolLocation.y);\n var width = this.elementSize.width + (2 * this.marginX);\n var height = this.elementSize.height + (2 * this.marginY);\n var markerHeight = this.offset;\n var clipX = this.clipBounds.x;\n var clipY = this.clipBounds.y;\n var boundsX = bounds.x;\n var boundsY = bounds.y;\n this.outOfBounds = false;\n if (!this.inverted) {\n location = new TooltipLocation(location.x + clipX - this.elementSize.width / 2 - this.padding, location.y + clipY - this.elementSize.height - (2 * (this.allowHighlight ? this.highlightPadding : this.padding)) -\n this.arrowPadding - markerHeight);\n arrowLocation.x = tipLocation.x = width / 2;\n if ((location.y < boundsY || (this.isNegative)) && !(this.controlName === 'Progressbar')) {\n location.y = (symbolLocation.y < 0 ? 0 : symbolLocation.y) + clipY + markerHeight;\n }\n if (location.y + height + this.arrowPadding > boundsY + bounds.height) {\n location.y = Math.min(symbolLocation.y, boundsY + bounds.height) + clipY\n - this.elementSize.height - (2 * this.padding) - this.arrowPadding - markerHeight;\n }\n if (((location.x + width > boundsX + bounds.width) && location.y < boundsY || (this.isNegative)) && !(this.controlName === 'Progressbar')) {\n location.y = (symbolLocation.y < 0 ? 0 : symbolLocation.y) + clipY + markerHeight;\n }\n tipLocation.x = width / 2;\n if (location.x < boundsX && !(this.controlName === 'Progressbar')) {\n arrowLocation.x -= (boundsX - location.x);\n tipLocation.x -= (boundsX - location.x);\n location.x = boundsX;\n }\n if (location.x + width > boundsX + bounds.width && !(this.controlName === 'Progressbar')) {\n arrowLocation.x += ((location.x + width) - (boundsX + bounds.width));\n tipLocation.x += ((location.x + width) - (boundsX + bounds.width));\n location.x -= ((location.x + width) - (boundsX + bounds.width));\n }\n if (location.x < boundsX && !(this.controlName === 'Progressbar')) {\n arrowLocation.x -= (boundsX - location.x);\n tipLocation.x -= (boundsX - location.x);\n location.x = boundsX;\n }\n if (arrowLocation.x + this.arrowPadding > width - this.rx) {\n arrowLocation.x = width - this.rx - this.arrowPadding;\n tipLocation.x = width - this.rx - this.arrowPadding;\n }\n if (arrowLocation.x - this.arrowPadding < this.rx) {\n arrowLocation.x = tipLocation.x = this.rx + this.arrowPadding;\n }\n if (this.controlName === 'Chart') {\n if (((bounds.x + bounds.width) - (location.x + arrowLocation.x)) < this.areaMargin + this.arrowPadding ||\n (location.x + arrowLocation.x) < this.areaMargin + this.arrowPadding) {\n this.outOfBounds = true;\n }\n if (this.template && (location.y < 0)) {\n location.y = symbolLocation.y + clipY + markerHeight;\n }\n if (!withInAreaBounds(location.x, location.y, bounds) || this.outOfBounds) {\n this.inverted = !this.inverted;\n this.revert = true;\n location = new TooltipLocation(symbolLocation.x + markerHeight + clipX, symbolLocation.y + clipY - this.elementSize.height / 2 - (this.padding));\n tipLocation.x = arrowLocation.x = 0;\n tipLocation.y = arrowLocation.y = height / 2;\n if ((location.x + this.arrowPadding + width > boundsX + bounds.width) || (this.isNegative)) {\n location.x = (symbolLocation.x > boundsX + bounds.width ? bounds.width : symbolLocation.x)\n + clipX - markerHeight - (this.arrowPadding + width);\n }\n if (location.x < boundsX) {\n location.x = (symbolLocation.x < 0 ? 0 : symbolLocation.x) + markerHeight + clipX;\n }\n if (location.y <= boundsY) {\n tipLocation.y -= (boundsY - location.y);\n arrowLocation.y -= (boundsY - location.y);\n location.y = boundsY;\n }\n if (location.y + height >= bounds.height + boundsY) {\n arrowLocation.y += ((location.y + height) - (bounds.height + boundsY));\n tipLocation.y += ((location.y + height) - (bounds.height + boundsY));\n location.y -= ((location.y + height) - (bounds.height + boundsY));\n }\n if ((this.arrowPadding) + arrowLocation.y > height - this.ry) {\n arrowLocation.y = height - this.arrowPadding - this.ry;\n tipLocation.y = height;\n }\n if (arrowLocation.y - this.arrowPadding < this.ry) {\n arrowLocation.y = (this.arrowPadding) + this.ry;\n tipLocation.y = 0;\n }\n }\n }\n }\n else {\n location = new TooltipLocation(location.x + clipX + markerHeight, location.y + clipY - this.elementSize.height / 2 - (this.padding));\n arrowLocation.y = tipLocation.y = height / 2;\n if ((location.x + width + this.arrowPadding > boundsX + bounds.width) || (this.isNegative)) {\n location.x = (symbolLocation.x > bounds.width + bounds.x ? bounds.width : symbolLocation.x)\n + clipX - markerHeight - (width + this.arrowPadding);\n }\n if (location.x < boundsX) {\n location.x = (symbolLocation.x < 0 ? 0 : symbolLocation.x) + clipX + markerHeight;\n }\n if ((location.x + width + this.arrowPadding > boundsX + bounds.width)) {\n location.x = (symbolLocation.x > bounds.width + bounds.x ? bounds.width : symbolLocation.x)\n + clipX - markerHeight - (width + this.arrowPadding);\n }\n if (location.y <= boundsY) {\n arrowLocation.y -= (boundsY - location.y);\n tipLocation.y -= (boundsY - location.y);\n location.y = boundsY;\n }\n if (location.y + height >= boundsY + bounds.height) {\n arrowLocation.y += ((location.y + height) - (boundsY + bounds.height));\n tipLocation.y += ((location.y + height) - (boundsY + bounds.height));\n location.y -= ((location.y + height) - (boundsY + bounds.height));\n }\n if (arrowLocation.y + this.arrowPadding > height - this.ry) {\n arrowLocation.y = height - this.ry - this.arrowPadding;\n tipLocation.y = height;\n }\n if (arrowLocation.y - this.arrowPadding < this.ry) {\n arrowLocation.y = tipLocation.y = this.ry + this.arrowPadding;\n }\n if (this.controlName === 'Chart') {\n if ((location.y + arrowLocation.y) < this.areaMargin + this.arrowPadding ||\n ((bounds.y + bounds.height) - (location.y + arrowLocation.y)) < this.areaMargin + this.arrowPadding) {\n this.outOfBounds = true;\n }\n if (!withInAreaBounds(location.x, location.y, bounds) || this.outOfBounds) {\n this.inverted = !this.inverted;\n location = new TooltipLocation(symbolLocation.x + clipX - this.padding - this.elementSize.width / 2, symbolLocation.y + clipY - this.elementSize.height - (2 * this.padding) - markerHeight - this.arrowPadding);\n this.revert = true;\n tipLocation.x = arrowLocation.x = width / 2;\n tipLocation.y = arrowLocation.y = 0;\n if (location.y < boundsY || (this.isNegative)) {\n location.y = (symbolLocation.y < 0 ? 0 : symbolLocation.y) + markerHeight + clipY;\n }\n if (location.y + this.arrowPadding + height > boundsY + bounds.height) {\n location.y = Math.min(symbolLocation.y, boundsY + bounds.height) + clipY\n - this.elementSize.height - (2 * this.padding) - markerHeight - this.arrowPadding;\n }\n tipLocation.x = width / 2;\n if (location.x < boundsX) {\n tipLocation.x -= (boundsX - location.x);\n arrowLocation.x -= (boundsX - location.x);\n location.x = boundsX;\n }\n if (location.x + width > bounds.width + boundsX) {\n arrowLocation.x += ((location.x + width) - (bounds.width + boundsX));\n tipLocation.x += ((location.x + width) - (bounds.width + boundsX));\n location.x -= ((location.x + width) - (bounds.width + boundsX));\n }\n if ((this.arrowPadding) + arrowLocation.x > width - this.rx) {\n tipLocation.x = width - this.rx - (this.arrowPadding);\n arrowLocation.x = width - this.rx - (this.arrowPadding);\n }\n if (arrowLocation.x - (this.arrowPadding) < this.rx) {\n arrowLocation.x = tipLocation.x = this.rx + (this.arrowPadding);\n }\n }\n }\n }\n return new Rect(location.x, location.y, width, height);\n };\n Tooltip.prototype.animateTooltipDiv = function (tooltipDiv, rect) {\n var _this = this;\n var x = parseFloat(tooltipDiv.style.left);\n var y = parseFloat(tooltipDiv.style.top);\n var currenDiff;\n new Animation({}).animate(tooltipDiv, {\n duration: (this.duration === 0 && animationMode === 'Enable') ? 300 : this.duration,\n progress: function (args) {\n currenDiff = (args.timeStamp / args.duration);\n tooltipDiv.style.animation = null;\n if ((_this.controlName === 'Chart' && _this.shared) && !_this.enableRTL) {\n tooltipDiv.style.transition = isBlazor() ? 'transform 0.3s' : 'transform 0.1s';\n tooltipDiv.style.transform = 'translate(' + (x + currenDiff * (rect.x - x)) + 'px,' + (y + currenDiff * (rect.y - y)) + 'px)';\n tooltipDiv.style.left = '';\n tooltipDiv.style.top = '';\n }\n else {\n tooltipDiv.style.left = (x + currenDiff * (rect.x - x)) + 'px';\n tooltipDiv.style.top = (y + currenDiff * (rect.y - y)) + 'px';\n tooltipDiv.style.transform = _this.controlName === 'RangeNavigator' ? tooltipDiv.style.transform : '';\n }\n },\n end: function (model) {\n _this.updateDiv(tooltipDiv, rect.x, rect.y);\n _this.trigger('animationComplete', { tooltip: _this });\n }\n });\n };\n Tooltip.prototype.updateDiv = function (tooltipDiv, x, y) {\n if ((this.controlName === 'Chart' && this.shared && !this.crosshair) && !this.enableRTL) {\n tooltipDiv.style.transform = 'translate(' + x + 'px,' + y + 'px)';\n tooltipDiv.style.left = '';\n tooltipDiv.style.top = '';\n }\n else {\n tooltipDiv.style.left = x + 'px';\n tooltipDiv.style.top = y + 'px';\n tooltipDiv.style.transform = this.controlName === 'RangeNavigator' ? tooltipDiv.style.transform : '';\n }\n };\n Tooltip.prototype.updateTemplateFn = function () {\n if (this.template) {\n try {\n if (typeof this.template !== 'function' && document.querySelectorAll(this.template).length) {\n this.templateFn = templateComplier(document.querySelector(this.template).innerHTML.trim());\n }\n else {\n this.templateFn = templateComplier(this.template);\n }\n }\n catch (e) {\n this.templateFn = templateComplier(this.template);\n }\n }\n };\n /** @private */\n Tooltip.prototype.fadeOut = function () {\n var _this = this;\n var tooltipElement = (this.isCanvas && !this.template) ? getElement(this.element.id + '_svg') :\n getElement(this.element.id);\n var tooltipDiv = getElement(this.element.id);\n if (tooltipElement) {\n var tooltipGroup_1 = tooltipElement.firstChild;\n if (tooltipGroup_1.nodeType !== Node.ELEMENT_NODE) {\n tooltipGroup_1 = tooltipElement.firstElementChild;\n }\n if (this.isCanvas && !this.template) {\n tooltipGroup_1 = document.getElementById(this.element.id + '_group') ? document.getElementById(this.element.id + '_group') :\n tooltipGroup_1;\n }\n if (!tooltipGroup_1) {\n return null;\n }\n var opacity_1 = parseFloat(tooltipGroup_1.getAttribute('opacity'));\n opacity_1 = !isNullOrUndefined(opacity_1) ? opacity_1 : 1;\n new Animation({}).animate(tooltipGroup_1, {\n duration: 200,\n progress: function (args) {\n // tooltipGroup.removeAttribute('e-animate');\n _this.progressAnimation(tooltipGroup_1, opacity_1, (args.timeStamp / args.duration));\n },\n end: function () {\n _this.fadeOuted = true;\n _this.endAnimation(tooltipGroup_1);\n tooltipDiv.style.transition = '';\n }\n });\n }\n };\n Tooltip.prototype.progressAnimation = function (tooltipGroup, opacity, timeStamp) {\n tooltipGroup.style.animation = '';\n tooltipGroup.setAttribute('opacity', (opacity - timeStamp).toString());\n };\n /*\n * @hidden\n */\n Tooltip.prototype.endAnimation = function (tooltipGroup) {\n tooltipGroup.setAttribute('opacity', '0');\n if (this.template) {\n tooltipGroup.style.display = 'none';\n }\n this.trigger('animationComplete', { tooltip: this });\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @private\n */\n Tooltip.prototype.getPersistData = function () {\n var keyEntity = [];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Get component name\n *\n * @private\n */\n Tooltip.prototype.getModuleName = function () {\n return 'tooltip';\n };\n /**\n * To destroy the accumulationcharts\n *\n * @private\n */\n Tooltip.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.element.classList.remove('e-tooltip');\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @returns {void}\n * @private\n */\n Tooltip.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.blazorTemplate) {\n resetBlazorTemplate(this.element.id + 'parent_template' + '_blazorTemplate');\n }\n this.isFirst = false;\n this.render();\n };\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"enable\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"shared\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"crosshair\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"enableShadow\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"fill\", void 0);\n __decorate([\n Property('')\n ], Tooltip.prototype, \"header\", void 0);\n __decorate([\n Property(0.75)\n ], Tooltip.prototype, \"opacity\", void 0);\n __decorate([\n Complex({ size: '12px', fontWeight: null, color: null, fontStyle: 'Normal', fontFamily: null }, TextStyle)\n ], Tooltip.prototype, \"textStyle\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"template\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"enableAnimation\", void 0);\n __decorate([\n Property(300)\n ], Tooltip.prototype, \"duration\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"inverted\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isNegative\", void 0);\n __decorate([\n Complex({ color: null, width: null }, TooltipBorder)\n ], Tooltip.prototype, \"border\", void 0);\n __decorate([\n Property([])\n ], Tooltip.prototype, \"content\", void 0);\n __decorate([\n Property(10)\n ], Tooltip.prototype, \"markerSize\", void 0);\n __decorate([\n Complex({ x: 0, y: 0 }, ToolLocation)\n ], Tooltip.prototype, \"clipBounds\", void 0);\n __decorate([\n Property([])\n ], Tooltip.prototype, \"palette\", void 0);\n __decorate([\n Property([])\n ], Tooltip.prototype, \"shapes\", void 0);\n __decorate([\n Complex({ x: 0, y: 0 }, ToolLocation)\n ], Tooltip.prototype, \"location\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"offset\", void 0);\n __decorate([\n Property(4)\n ], Tooltip.prototype, \"rx\", void 0);\n __decorate([\n Property(4)\n ], Tooltip.prototype, \"ry\", void 0);\n __decorate([\n Property(5)\n ], Tooltip.prototype, \"marginX\", void 0);\n __decorate([\n Property(5)\n ], Tooltip.prototype, \"marginY\", void 0);\n __decorate([\n Property(7)\n ], Tooltip.prototype, \"arrowPadding\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"data\", void 0);\n __decorate([\n Property('Material')\n ], Tooltip.prototype, \"theme\", void 0);\n __decorate([\n Complex({ x: 0, y: 0, width: 0, height: 0 }, AreaBounds)\n ], Tooltip.prototype, \"areaBounds\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"availableSize\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"blazorTemplate\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isCanvas\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isTextWrap\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isFixed\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"tooltipPlacement\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"controlInstance\", void 0);\n __decorate([\n Property('')\n ], Tooltip.prototype, \"controlName\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"tooltipRender\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"loaded\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"animationComplete\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"enableRTL\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"allowHighlight\", void 0);\n Tooltip = __decorate([\n NotifyPropertyChanges\n ], Tooltip);\n return Tooltip;\n}(Component));\nexport { Tooltip };\n","/** @private */\nexport function getTooltipThemeColor(theme) {\n var style;\n switch (theme) {\n case 'Highcontrast':\n case 'HighContrast':\n style = {\n tooltipFill: '#ffffff',\n tooltipBoldLabel: '#000000',\n tooltipLightLabel: '#000000',\n tooltipHeaderLine: '#969696',\n textStyle: { fontFamily: 'Segoe UI', color: '#000000', fontWeight: null }\n };\n break;\n case 'MaterialDark':\n case 'FabricDark':\n case 'BootstrapDark':\n style = {\n tooltipFill: theme === 'MaterialDark' ? '#F4F4F4' : theme === 'FabricDark' ? '#A19F9D' : '#F0F0F0',\n tooltipBoldLabel: theme === 'MaterialDark' ? 'rgba(18, 18, 18, 1)' : theme === 'FabricDark' ? '#DADADA' : '#1A1A1A',\n tooltipLightLabel: theme === 'MaterialDark' ? 'rgba(18, 18, 18, 1)' : theme === 'FabricDark' ? '#DADADA' : '#1A1A1A',\n tooltipHeaderLine: '#9A9A9A',\n textStyle: theme === 'MaterialDark' ? { fontFamily: 'Roboto', color: 'rgba(18, 18, 18, 1)', fontWeight: null } : theme === 'FabricDark' ? { fontFamily: 'Segoe UI', color: '#DADADA', fontWeight: null } : { fontFamily: 'Helvetica', color: '#1A1A1A', fontWeight: null }\n };\n break;\n case 'Bootstrap4':\n style = {\n tooltipFill: '#212529',\n tooltipBoldLabel: '#F9FAFB',\n tooltipLightLabel: '#F9FAFB',\n tooltipHeaderLine: 'rgba(255, 255, 255, 0.2)',\n textStyle: { fontFamily: 'Helvetica', color: '#F9FAFB', fontWeight: null }\n };\n break;\n case 'Tailwind':\n style = {\n tooltipFill: '#111827',\n tooltipBoldLabel: '#F9FAFB',\n tooltipLightLabel: '#F9FAFB',\n tooltipHeaderLine: '#6B7280',\n textStyle: { fontFamily: 'Inter', color: '#F9FAFB', fontWeight: null }\n };\n break;\n case 'TailwindDark':\n style = {\n tooltipFill: '#E9ECEF',\n tooltipBoldLabel: '#1F2937',\n tooltipLightLabel: '#1F2937',\n tooltipHeaderLine: '#9CA3AF',\n textStyle: { fontFamily: 'Inter', color: '#1F2937', fontWeight: null }\n };\n break;\n case 'Bootstrap5':\n style = {\n tooltipFill: '#212529',\n tooltipBoldLabel: '#F9FAFB',\n tooltipLightLabel: '#F9FAFB',\n tooltipHeaderLine: '#9CA3AF',\n textStyle: { fontFamily: 'Helvetica', color: '#F9FAFB', fontWeight: null }\n };\n break;\n case 'Bootstrap5Dark':\n style = {\n tooltipFill: '#E9ECEF',\n tooltipBoldLabel: '#212529',\n tooltipLightLabel: '#212529',\n tooltipHeaderLine: '#ADB5BD',\n textStyle: { fontFamily: 'Helvetica', color: '#212529', fontWeight: null }\n };\n break;\n case 'Fluent':\n style = {\n tooltipFill: '#FFFFFF',\n tooltipBoldLabel: '#323130',\n tooltipLightLabel: '#323130',\n tooltipHeaderLine: '#D2D0CE',\n textStyle: { fontFamily: 'Segoe UI', color: '#323130', fontWeight: null }\n };\n break;\n case 'FluentDark':\n style = {\n tooltipFill: '#323130',\n tooltipBoldLabel: '#F3F2F2',\n tooltipLightLabel: '#F3F2F1',\n tooltipHeaderLine: '#3B3A39',\n textStyle: { fontFamily: 'Segoe UI', color: '#F3F2F1', fontWeight: null }\n };\n break;\n case 'Fluent2':\n style = {\n tooltipFill: '#FFFFFF',\n tooltipBoldLabel: '#242424',\n tooltipLightLabel: '#242424',\n tooltipHeaderLine: '#D2D0CE',\n textStyle: { fontFamily: 'Segoe UI', color: '#242424', fontWeight: null }\n };\n break;\n case 'Fluent2Dark':\n style = {\n tooltipFill: '#292929',\n tooltipBoldLabel: '#FFFFFF',\n tooltipLightLabel: '#FFFFFF',\n tooltipHeaderLine: '#3B3A39',\n textStyle: { fontFamily: 'Segoe UI', color: '#FFFFFF', fontWeight: null }\n };\n break;\n case 'Material3':\n style = {\n tooltipFill: '#313033',\n tooltipBoldLabel: '#F4EFF4',\n tooltipLightLabel: '#F4EFF4',\n tooltipHeaderLine: '#F4EFF4',\n textStyle: { fontFamily: 'Roboto', color: '#F4EFF4', fontWeight: null }\n };\n break;\n case 'Material3Dark':\n style = {\n tooltipFill: '#E6E1E5',\n tooltipBoldLabel: '#313033',\n tooltipLightLabel: '#313033',\n tooltipHeaderLine: '#313033',\n textStyle: { fontFamily: 'Roboto', color: '#313033', fontWeight: null }\n };\n break;\n default:\n style = {\n tooltipFill: theme === 'Material' ? '#000816' : theme === 'Fabric' ? '#FFFFFF' : '#212529',\n tooltipBoldLabel: theme === 'Material' ? 'rgba(249, 250, 251, 1)' : theme === 'Fabric' ? '#333333' : '#F9FAFB',\n tooltipLightLabel: theme === 'Material' ? 'rgba(249, 250, 251, 1)' : theme === 'Fabric' ? '#333333' : '#F9FAFB',\n tooltipHeaderLine: theme === 'Fabric' ? '#D2D0CE' : '#ffffff',\n textStyle: theme === 'Material' ? { fontFamily: 'Roboto', color: 'rgba(249, 250, 251, 1)', fontWeight: null } : theme === 'Fabric' ? { fontFamily: 'Segoe UI', color: '#333333', fontWeight: null } : { fontFamily: 'Helvetica', color: '#F9FAFB', fontWeight: null }\n };\n break;\n }\n return style;\n}\n","/* eslint-disable max-len */\n/**\n * Specifies Circular-Gauge Common Helper methods\n */\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { compile as templateComplier, isNullOrUndefined, remove, createElement, merge } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '@syncfusion/ej2-svg-base';\n/**\n * Function to measure the height and width of the text.\n *\n * @param {string} text - Specifies the text.\n * @param {FontModel} font - Specifies the font.\n * @returns {Size} - Returns the size of the text.\n * @private\n */\nexport function measureText(text, font) {\n var htmlObject = document.getElementById('gauge-measuretext');\n if (htmlObject === null) {\n htmlObject = createElement('text', { id: 'gauge-measuretext' });\n document.body.appendChild(htmlObject);\n }\n var style = 'position: absolute; visibility: hidden;' +\n ';left: 0px; top: -100px; white-space: nowrap;' + getFontStyle(font);\n htmlObject.innerText = text;\n htmlObject.style.cssText = style;\n return new Size(htmlObject.clientWidth, htmlObject.clientHeight);\n}\n/**\n * Function to find number from string\n *\n * @param {string} value - Specifies the value.\n * @param {number} maxDimension - Specifies the maximum dimension.\n * @returns {number} - Returns the number.\n * @private\n */\nexport function toPixel(value, maxDimension) {\n if (value !== null && value !== undefined) {\n return value.indexOf('%') !== -1 ? (maxDimension / 100) * parseInt(value, 10) : parseInt(value, 10);\n }\n return null;\n}\n/**\n * Function to get the style from FontModel.\n *\n * @param {FontModel} font - Specifies the font.\n * @returns {string} - Returns the string.\n * @private\n */\nexport function getFontStyle(font) {\n var style = '';\n style = 'font-size:' + font.size +\n '; font-style:' + font.fontStyle + '; font-weight:' + font.fontWeight +\n '; font-family:' + font.fontFamily + ';opacity:' + font.opacity +\n '; color:' + font.color + ';';\n return style;\n}\n/**\n * Function to create the text element.\n *\n * @param {TextOption} options - Specifies the options.\n * @param {FontModel} font - Specifies the font.\n * @param {string} color - Specifies the color.\n * @param {HTMLElement | Element} parent - Specifies the html element.\n * @param {string} styles - Specifies the style.\n * @returns {Element} - Returns the element.\n * @private\n */\nexport function textElement(options, font, color, parent, styles) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var renderOptions = {};\n var renderer = new SvgRenderer('');\n var style = styles + ' font-size:' + font.size + '; font-style:' + font.fontStyle +\n ' ; font-weight:' + font.fontWeight + '; font-family:' + font.fontFamily + ';';\n renderOptions = {\n 'id': options.id,\n 'x': options.x,\n 'y': options.y,\n 'fill': color,\n 'text-anchor': options.anchor,\n 'transform': options.transform,\n 'opacity': font.opacity,\n 'dominant-baseline': options.baseLine,\n 'style': style\n };\n var htmlObject = renderer.createText(renderOptions, options.text);\n parent.appendChild(htmlObject);\n return htmlObject;\n}\n/**\n * Function to append the path to the element.\n *\n * @param {PathOption} options - Specifies the options.\n * @param {Element} element - Specifies the element.\n * @param {CircularGauge} gauge - Specifies the gauge.\n * @param {string} functionName - Specifies the function name.\n * @returns {Element} - Returns the element.\n * @private\n */\nexport function appendPath(options, element, gauge, functionName) {\n functionName = functionName ? functionName : 'Path';\n var htmlObject = gauge.renderer['draw' + functionName](options);\n htmlObject.setAttribute('transform', options.transform);\n htmlObject.style.cssText = options.style;\n element.appendChild(htmlObject);\n return htmlObject;\n}\n/**\n * Function to check whether it's a complete circle for circular gauge.\n *\n * @param {number} startAngle - Specifies the startAngle.\n * @param {number} endAngle - Specifies the endAngle.\n * @returns {boolean} Returns the boolean value.\n * @private\n */\nexport function isCompleteAngle(startAngle, endAngle) {\n var totalAngle = endAngle - startAngle;\n totalAngle = totalAngle <= 0 ? (totalAngle + 360) : totalAngle;\n return Math.floor(totalAngle / 360) !== 0;\n}\n/**\n * Function to get the degree for circular gauge.\n *\n * @param {number} startAngle - Specifies the startAngle.\n * @param {number} endAngle - Specifies the endAngle.\n * @returns {number} - Returns the number.\n * @private\n */\nexport function getDegree(startAngle, endAngle) {\n var degree = endAngle - startAngle;\n return degree < 0 ? (degree + 360) : degree;\n}\n/**\n * Function to get the angle from value for circular gauge.\n *\n * @param {number} value - Specifies the value.\n * @param {number} maximumValue - Specifies the maximumValue.\n * @param {number} minimumValue - Specifies the minimumValue.\n * @param {number} startAngle - Specifies the startAngle.\n * @param {number} endAngle - Specifies the endAngle.\n * @param {boolean} isClockWise - Specifies the isClockWise.\n * @returns {number} - Returns the number.\n * @private\n */\nexport function getAngleFromValue(value, maximumValue, minimumValue, startAngle, endAngle, isClockWise) {\n var angle;\n endAngle -= isCompleteAngle(startAngle, endAngle) ? 0.0001 : 0;\n startAngle -= 90;\n endAngle -= 90;\n if (isClockWise) {\n angle = ((value - minimumValue) * (getDegree(startAngle, endAngle) / (maximumValue - minimumValue))) + startAngle;\n }\n else {\n angle = endAngle - ((value - minimumValue) * (getDegree(startAngle, endAngle) / (maximumValue - minimumValue)));\n angle = angle < 0 ? 360 + angle : angle;\n }\n angle = Math.round(angle) >= 360 ? (angle - 360) : Math.round(angle) < 0 ? (360 + angle) : angle;\n return angle;\n}\n/**\n * Function to get angle from location for circular gauge.\n *\n * @param {GaugeLocation} center - Specifies the center.\n * @param {GaugeLocation} point - Specifies the point.\n * @returns {number} - Returns the number.\n * @private\n */\nexport function getAngleFromLocation(center, point) {\n var angle = Math.atan2((point.y - center.y), (point.x - center.x));\n angle = Math.round((angle < 0 ? (6.283 + angle) : angle) * (180 / Math.PI)) - 270;\n angle += angle < 0 ? 360 : 0;\n return angle;\n}\n/**\n * Function to get the location from angle for circular gauge.\n *\n * @param {number} degree - Specifies the degree.\n * @param {number} radius - Specifies the radius.\n * @param {GaugeLocation} center - Specifies the center.\n * @returns {GaugeLocation} - Returns the gauge location.\n * @private\n */\nexport function getLocationFromAngle(degree, radius, center) {\n var radian = (degree * Math.PI) / 180;\n return new GaugeLocation(Math.cos(radian) * radius + center.x, Math.sin(radian) * radius + center.y);\n}\n/**\n * Function to get the path direction of the circular gauge.\n *\n * @param {GaugeLocation} center - Specifies the center.\n * @param {number} start - Specifies the start.\n * @param {number} end - Specifies the end.\n * @param {number} radius - Specifies the radius.\n * @param {number} startWidth - Specifies the startWidth.\n * @param {number} endWidth - Specifies the endWidth.\n * @param {Range} range - Specifies the range.\n * @param {Axis} axis - Specifies the axis.\n * @returns {string} - Returns the string.\n * @private\n */\nexport function getPathArc(center, start, end, radius, startWidth, endWidth, range, axis) {\n if (isNullOrUndefined(range) || (range.start !== range.end)) {\n end -= isCompleteAngle(start, end) ? 0.0001 : 0;\n }\n var degree = getDegree(start, end);\n var startRadius = !isNullOrUndefined(range) ? (range.position === 'Outside' && !range.isLinearCircularGradient\n ? radius + startWidth : range.position === 'Cross'\n && axis.direction === 'AntiClockWise' ? radius - (endWidth + startWidth) / 2 : radius - startWidth) : radius - startWidth;\n var endRadius = !isNullOrUndefined(range) ? (range.position === 'Outside'\n && !range.isLinearCircularGradient ? radius + endWidth : range.position === 'Cross' &&\n axis.direction === 'ClockWise' ? radius - (endWidth + startWidth) / 2 : radius - endWidth) : radius - endWidth;\n var arcRadius = !isNullOrUndefined(range) ? (range.position === 'Outside' && !range.isLinearCircularGradient\n ? radius + ((startWidth + endWidth) / 2) :\n range.position === 'Cross' ? (radius - ((startWidth + endWidth) / 4) - (axis.direction === 'ClockWise' ? startWidth : endWidth)\n / 2) : radius - ((startWidth + endWidth) / 2)) : radius - ((startWidth + endWidth) / 2);\n var insideArcRadius = !isNullOrUndefined(range) && range.position === 'Cross' ?\n radius + ((startWidth + endWidth) / 4)\n - (axis.direction === 'ClockWise' ? startWidth : endWidth) / 2 : radius;\n var insideEndRadius = !isNullOrUndefined(range) && range.position === 'Cross' && axis.direction === 'ClockWise' ?\n radius - ((startWidth - endWidth) / 2) : radius;\n var insideStartRadius = !isNullOrUndefined(range) && range.position === 'Cross' && axis.direction === 'AntiClockWise' ?\n radius + ((startWidth - endWidth) / 2) : radius;\n if (startWidth !== undefined && endWidth !== undefined) {\n insideEndRadius = range.position === 'Cross' ? (degree > 325 ? insideStartRadius : insideEndRadius) : insideEndRadius;\n return getRangePath(getLocationFromAngle(start, insideStartRadius, center), getLocationFromAngle(end, insideEndRadius, center), getLocationFromAngle(start, startRadius, center), getLocationFromAngle(end, endRadius, center), insideArcRadius, startRadius, endRadius, arcRadius, (degree < 180) ? 0 : 1, center, degree, range, axis);\n }\n else {\n return getCirclePath(getLocationFromAngle(start, radius, center), getLocationFromAngle(end, radius, center), radius, (degree < 180) ? 0 : 1);\n }\n}\n/**\n * Function to get the range path arc direction of the circular gauge.\n *\n * @param {GaugeLocation} start - Specifies the start.\n * @param {GaugeLocation} end - Specifies the end.\n * @param {number} radius - Specifies the radius.\n * @param {number} arcStartOne - Specifies the arcStartOne.\n * @param {number} arcEndOne - Specifies the arcEndOne.\n * @param {number} arcStartTwo - Specifies the arcStartTwo.\n * @param {number} arcEndTwo - Specifies the arcEndTwo.\n * @param {number} clockWise - Specifies the clockWise.\n * @param {GaugeLocation} innerStart - Specifies the innerStart.\n * @param {GaugeLocation} innerEnd - Specifies the innerEnd.\n * @param {GaugeLocation} pointPosition - Specifies the pointPosition.\n * @returns {string} - Returns the string.\n * @private\n */\nexport function arcPath(start, end, radius, arcStartOne, arcEndOne, arcStartTwo, arcEndTwo, clockWise, innerStart, innerEnd, pointPosition) {\n return 'M ' + start.x + ' ' + start.y + ' A ' + radius + ' ' + radius + ' 0 ' +\n clockWise + ' 1 ' + end.x + ' ' + end.y + ' L ' + innerEnd.x + ' ' + innerEnd.y +\n ' A ' + arcStartOne + ' ' + arcEndOne + ' 0 ' + clockWise + ' 0 ' + pointPosition.x\n + ' ' + pointPosition.y + ' ' + ' A ' + arcStartTwo + ' ' + arcEndTwo\n + ' 0 ' + clockWise + ' 0 ' + innerStart.x + ' ' + innerStart.y + ' Z ';\n}\n/**\n * Function to get the range path arc direction of the circular gauge.\n *\n * @param {GaugeLocation} start - Specifies the start.\n * @param {GaugeLocation} end - Specifies the end.\n * @param {number} radius - Specifies the radius.\n * @param {GaugeLocation} outerOldEnd - Specifies the outerOldEnd.\n * @param {GaugeLocation} innerOldEnd - Specifies the innerOldEnd.\n * @param {number} arcStartOne - Specifies the arcStartOne.\n * @param {number} arcEndOne - Specifies the arcEndOne.\n * @param {number} arcStartTwo - Specifies the arcStartTwo.\n * @param {number} arcEndTwo - Specifies the arcEndTwo.\n * @param {number} clockWise - Specifies the clockWise.\n * @param {GaugeLocation} innerStart - Specifies the innerStart.\n * @param {GaugeLocation} innerEnd - Specifies the innerEnd.\n * @param {GaugeLocation} innerOldStart - Specifies the innerOldStart.\n * @param {GaugeLocation} outerOldStart - Specifies the outerOldStart.\n * @param {GaugeLocation} pointPosition - Specifies the pointPosition.\n * @returns {string} - Returns the string.\n * @private\n */\nexport function arcRoundedPath(start, end, radius, outerOldEnd, innerOldEnd, arcStartOne, arcEndOne, arcStartTwo, arcEndTwo, clockWise, innerStart, innerEnd, innerOldStart, outerOldStart, pointPosition) {\n var roundedPath = 'M ' + start.x + ' ' + start.y + ' A ' + radius + ' ' + radius + ' 0 ' +\n clockWise + ' 1 ' + end.x + ' ' + end.y + ' C ' + outerOldEnd.x + ' ' + outerOldEnd.y + ' ' + innerOldEnd.x + ' ' +\n innerOldEnd.y + ' ' + innerEnd.x + ' ' + innerEnd.y;\n if (isNullOrUndefined(arcStartTwo) && isNullOrUndefined(arcEndTwo)) {\n return roundedPath + ' A ' + arcStartOne + ' ' + arcEndOne + ' 0 ' + clockWise + ' 0 ' + innerStart.x + ' '\n + innerStart.y + ' C ' + innerOldStart.x + ' ' + innerOldStart.y + ' ' + outerOldStart.x + ' ' +\n outerOldStart.y + ' ' + start.x + ' ' + start.y + ' Z';\n }\n else {\n return roundedPath + ' A ' + arcStartOne + ' ' + arcEndOne + ' 0 ' + clockWise + ' 0 '\n + pointPosition.x + ' ' + pointPosition.y + ' ' + ' A ' + arcStartTwo + ' ' + arcEndTwo + ' 0 ' + clockWise + ' 0 '\n + innerStart.x + ' ' + innerStart.y + ' C ' + innerOldStart.x + ' ' + innerOldStart.y + ' ' + outerOldStart.x + ' ' +\n outerOldStart.y + ' ' + start.x + ' ' + start.y + ' Z';\n }\n}\n/**\n * Function to get the range path direction for different start and end width of the circular gauge.\n *\n * @param {GaugeLocation} start - Specifies the options.\n * @param {GaugeLocation} end - Specifies the end.\n * @param {GaugeLocation} innerStart - Specifies the innerStart.\n * @param {GaugeLocation} innerEnd - Specifies the innerEnd.\n * @param {number} radius - Specifies the radius.\n * @param {number} startRadius - Specifies the startRadius.\n * @param {number} endRadius - Specifies the endRadius.\n * @param {number} clockWise - Specifies the clockWise.\n * @returns {string} - Returns the string.\n * @private\n */\nexport function arcWidthPath(start, end, innerStart, innerEnd, radius, startRadius, endRadius, clockWise) {\n return 'M ' + start.x + ' ' + start.y +\n ' A ' + radius + ' ' + radius + ' 0 ' +\n clockWise + ' 1 ' + end.x + ' ' + end.y +\n ' L ' + innerEnd.x + ' ' + innerEnd.y +\n ' A ' + endRadius + ' ' + startRadius + ' 0 ' +\n clockWise + ' 0 ' + innerStart.x + ' ' + innerStart.y + ' Z';\n}\n/**\n * Function to get the range path direction of the circular gauge.\n *\n * @param {GaugeLocation} start - Specifies the start values.\n * @param {GaugeLocation} end - Specifies the end values.\n * @param {GaugeLocation} innerStart - Specifies the innerStart values.\n * @param {GaugeLocation} innerEnd - Specifies the innerEnd values.\n * @param {number} radius - Specifies the radius value.\n * @param {number} startRadius - Specifies the startRadius value.\n * @param {number} endRadius - Specifies the endRadius value.\n * @param {number} arcRadius - Specifies the arcRadius value.\n * @param {number} clockWise - Specifies the clockWise value.\n * @param {GaugeLocation} center - Specifies the center value.\n * @param {number} degree - Specifies the degree value.\n * @param {Range} range - Specifies the range value.\n * @param {Axis} axis - Specifies the axis value.\n * @returns {string} - Returns the string value.\n * @private\n */\nexport function getRangePath(start, end, innerStart, innerEnd, radius, startRadius, endRadius, arcRadius, clockWise, center, degree, range, axis) {\n var startWidth = range.startWidth;\n var endWidth = range.endWidth;\n var widthDifference = Math.abs(startWidth - endWidth);\n var endArc;\n var startArc;\n if (startWidth > endWidth && degree <= 260 && range.position !== 'Cross' && range.position !== 'Outside') {\n endArc = (endRadius + (axis.direction === 'ClockWise' ? -(widthDifference / 2) : (widthDifference / 2)));\n startArc = (startRadius + (axis.direction === 'ClockWise' ? (widthDifference / 2) : -(widthDifference / 2)));\n return arcWidthPath(start, end, innerStart, innerEnd, radius, startArc, endArc, clockWise);\n }\n else if (endWidth > startWidth && degree <= 260 && range.position !== 'Cross' && range.position !== 'Outside') {\n endArc = (startRadius + (axis.direction === 'ClockWise' ? -(widthDifference / 2) : (widthDifference / 2)));\n startArc = (endRadius + (axis.direction === 'ClockWise' ? (widthDifference / 2) : -(widthDifference / 2)));\n return arcWidthPath(start, end, innerStart, innerEnd, radius, startArc, endArc, clockWise);\n }\n else if ((endWidth === startWidth) && (axis.startAngle !== 0 || axis.endAngle !== 0)) {\n return arcWidthPath(start, end, innerStart, innerEnd, radius, startRadius, endRadius, clockWise);\n }\n else if ((degree > 260) || (!range.isLinearCircularGradient && axis.startAngle === 0 && axis.endAngle === 0)) {\n if (range.roundedCornerRadius <= 0 && range.startWidth === range.endWidth) {\n return arcWidthPath(start, end, innerStart, innerEnd, radius, startRadius, endRadius, clockWise);\n }\n else {\n return arcWidthPathCalculation(start, end, innerStart, innerEnd, radius, startRadius, endRadius, arcRadius, clockWise, center, null, null, null, null, startWidth, endWidth, degree, range, axis);\n }\n }\n else {\n if (range.position === 'Cross' || range.position === 'Outside') {\n return arcWidthPath(start, end, innerStart, innerEnd, radius, arcRadius, arcRadius, clockWise);\n }\n else {\n return arcWidthPath(start, end, innerStart, innerEnd, radius, startRadius, endRadius, clockWise);\n }\n }\n}\n/**\n * Function to get start and end width range path calculation to the circular gauge.\n *\n * @param {GaugeLocation} start - Specifies the start value.\n * @param {GaugeLocation} end - Specifies the end value.\n * @param {GaugeLocation} innerStart - Specifies the innerStart value.\n * @param {GaugeLocation} innerEnd - Specifies the innerEnd value.\n * @param {number} radius - Specifies the radius value.\n * @param {number} startRadius - Specifies the startRadius value.\n * @param {number} endRadius - Specifies the endRadius value.\n * @param {number} arcRadius - Specifies the arcRadius value.\n * @param {number} clockWise - Specifies the clockWise value.\n * @param {GaugeLocation} center - Specifies the center value.\n * @param {GaugeLocation} outerOldEnd - Specifies the outerOldEnd value.\n * @param {GaugeLocation} innerOldEnd - Specifies the innerOldEnd value.\n * @param {GaugeLocation} outerOldStart - Specifies the outerOldStart value.\n * @param {GaugeLocation} innerOldStart - Specifies the innerOldStart value.\n * @param {number} startWidth - Specifies the startWidth value.\n * @param {number} endWidth - Specifies the endWidth value.\n * @param {number} degree - Specifies the degree value.\n * @param {Range} range - Specifies the range value.\n * @param {Axis} axis - Specifies the axis value.\n * @returns {string} - Returns the svg path.\n * @private\n */\nexport function arcWidthPathCalculation(start, end, innerStart, innerEnd, radius, startRadius, endRadius, arcRadius, clockWise, center, outerOldEnd, innerOldEnd, outerOldStart, innerOldStart, startWidth, endWidth, degree, range, axis) {\n if (!isNullOrUndefined(range)) {\n var arcStartOne = void 0;\n var arcEndOne = void 0;\n var widthDifference = Math.abs(startWidth - endWidth);\n var arcStartTwo = void 0;\n var arcEndTwo = void 0;\n var startValueToAngle = getAngleFromValue(((range.start + range.end) / 2), axis.maximum, axis.minimum, axis.startAngle, axis.endAngle, axis.direction === 'ClockWise');\n var pointPosition = (startWidth < ((endWidth))) ?\n getLocationFromAngle(startValueToAngle, endRadius, center) : getLocationFromAngle(startValueToAngle, startRadius, center);\n var endDistance = Math.sqrt((Math.pow((innerEnd.x - pointPosition.x), 2)) + (Math.pow((innerEnd.y - pointPosition.y), 2)));\n var endRadii = endDistance / 2;\n var centerStartDistance = Math.sqrt((Math.pow((center.x - innerStart.x), 2)) + (Math.pow((center.y - innerStart.y), 2)));\n var centerDistance = Math.sqrt((Math.pow((center.x - pointPosition.x), 2)) + (Math.pow((center.y - pointPosition.y), 2)));\n if (range.roundedCornerRadius <= 0) {\n widthDifference = widthDifference === 0 ? 1 : widthDifference;\n innerEnd.y = (range.position === 'Cross' && axis.direction === 'ClockWise') ? degree > 325 ?\n innerEnd.y - (widthDifference / 2) : innerEnd.y : innerEnd.y;\n var degreeValue = range.position === 'Cross' ? 330 : 325;\n if (((degreeValue <= degree && degree <= 360))) {\n arcStartTwo = (axis.direction === 'ClockWise' ? (centerDistance / 2)\n : (degree >= 345 ? (startRadius - (widthDifference / 2) - (endWidth / 2))\n : range.position === 'Cross' ? (startRadius + (widthDifference / 4) - (startWidth / 2))\n : (startRadius - (widthDifference / 2) - (startWidth / 2))));\n arcEndTwo = (axis.direction === 'ClockWise' ? (centerStartDistance / 2)\n : range.position === 'Cross' ?\n (endRadius + (widthDifference / 4)) - (endWidth / 4) :\n (range.position === 'Outside' && axis.direction === 'AntiClockWise') ? degree < 345 ?\n (startRadius - (widthDifference) - (endWidth / 4))\n : (startRadius - (widthDifference / 2))\n : (endRadius + (widthDifference / 2)) - (endWidth / 2));\n return arcPath(start, end, radius, endRadii, endRadii, arcStartTwo, arcEndTwo, clockWise, innerStart, innerEnd, pointPosition);\n }\n else if ((degree > 260 && degree < 325) && range.position !== 'Cross' && range.position !== 'Outside') {\n var arcStart = (arcRadius - (widthDifference / 2));\n var arcEnd = (arcRadius - (widthDifference / 2));\n var angleValueDirection = axis.direction === 'ClockWise' ? degree >= 310 : degree < 345;\n if (degree < 310) {\n return arcWidthPath(start, end, innerStart, innerEnd, radius, arcStart, arcEnd, clockWise);\n }\n else if (degree >= 310 || angleValueDirection) {\n arcStart = (arcRadius - (widthDifference));\n return arcWidthPath(start, end, innerStart, innerEnd, radius, arcEnd, arcStart, clockWise);\n }\n else {\n return arcWidthPath(start, end, innerStart, innerEnd, radius, startRadius, endRadius, clockWise);\n }\n }\n else {\n if (range.position === 'Cross') {\n var endRadiusValue = axis.direction === 'ClockWise' ? degree <= 300 && degree >= 260 ?\n endRadius - (widthDifference / 2) - (startWidth / 4) : endRadius\n - (widthDifference) - (startWidth / 2) : degree <= 300 && degree >= 260 ?\n endRadius + (widthDifference / 4) - (startWidth / 4) :\n endRadius + (widthDifference / 4) - (startWidth / 2);\n var startRadiusValue = axis.direction === 'ClockWise' ? degree > 325 ? degree > 340 ? (startRadius - startWidth)\n - (widthDifference / 4) : startRadius - (widthDifference / 4)\n : startRadius : startRadius - (widthDifference / 4);\n return arcWidthPath(start, end, innerStart, innerEnd, radius, startRadiusValue, endRadiusValue, clockWise);\n }\n else if (range.position === 'Outside') {\n if (degree < 325 && degree > 285) {\n var arcTwo = void 0;\n var startGreater = startWidth / 2;\n var endGreater = endWidth / 2;\n var arcOne = arcTwo = arcRadius + (widthDifference / 2) + startGreater + endGreater;\n innerEnd.y = axis.direction === 'ClockWise' && startWidth !== endWidth && startWidth > widthDifference ?\n innerEnd.y - (widthDifference / 2) : innerEnd.y + startGreater;\n return arcWidthPath(start, end, innerStart, innerEnd, radius, arcOne, arcTwo, clockWise);\n }\n else {\n return arcWidthPath(start, end, innerStart, innerEnd, radius, arcRadius, arcRadius, clockWise);\n }\n }\n else {\n return arcWidthPath(start, end, innerStart, innerEnd, radius, startRadius, endRadius, clockWise);\n }\n }\n }\n else {\n var degreeAngle = axis.endAngle < 4 ? 356 : 360;\n clockWise = degree > degreeAngle ? 0 : clockWise;\n var degreeValueOne = axis.direction === 'ClockWise' ? 327 : 322;\n var degreeValueTwo = axis.direction === 'ClockWise' ? 328 : 325;\n if ((endWidth === startWidth) && (axis.startAngle !== 0 || axis.endAngle !== 0)) {\n return roundedArcWidthPathCalculation(start, end, innerStart, innerEnd, radius, startRadius, endRadius, clockWise, outerOldEnd, innerOldEnd, outerOldStart, innerOldStart);\n }\n else if ((degree <= degreeAngle && degree > degreeValueOne) && range.roundedCornerRadius > 0) {\n arcStartOne = axis.direction === 'ClockWise' ? degree < 334 && degree > 324 ? endRadii - (widthDifference / 2) :\n endRadii - (widthDifference / 4) : endRadii;\n arcStartTwo = (centerDistance / 2);\n arcEndTwo = axis.direction === 'ClockWise' ? ((centerStartDistance / 2) + (widthDifference / 2)) :\n (centerStartDistance / 2);\n return arcRoundedPath(start, end, radius, outerOldEnd, innerOldEnd, arcStartOne, endRadii, arcStartTwo, arcEndTwo, clockWise, innerStart, innerEnd, innerOldStart, outerOldStart, pointPosition);\n }\n else if (degree > 270 && degree < degreeValueTwo) {\n var startAddArc = endRadius + (widthDifference / 2) - (endWidth / 2);\n var startSubArc = endRadius - (widthDifference / 2) - (endWidth / 2);\n arcStartOne = (startRadius - (widthDifference / 2) - (startWidth / 2));\n arcEndOne = (axis.direction === 'ClockWise' ? startSubArc : startAddArc);\n return arcRoundedPath(start, end, radius, outerOldEnd, innerOldEnd, arcStartOne, arcEndOne, null, null, clockWise, innerStart, innerEnd, innerOldStart, outerOldStart, null);\n }\n else {\n return roundedArcWidthPathCalculation(start, end, innerStart, innerEnd, radius, startRadius, endRadius, clockWise, outerOldEnd, innerOldEnd, outerOldStart, innerOldStart);\n }\n }\n }\n else {\n return roundedArcWidthPathCalculation(start, end, innerStart, innerEnd, radius, startRadius, endRadius, clockWise, outerOldEnd, innerOldEnd, outerOldStart, innerOldStart);\n }\n}\n/**\n * Function to get start and end width range rounded path calculation to the circular gauge.\n *\n * @param {GaugeLocation} start - Specifies the start value.\n * @param {GaugeLocation} end - Specifies the end value.\n * @param {GaugeLocation} innerStart - Specifies the innerStart value.\n * @param {GaugeLocation} innerEnd - Specifies the innerEnd value.\n * @param {number} radius - Specifies the radius value.\n * @param {number} startRadius - Specifies the startRadius value.\n * @param {number} endRadius - Specifies the endRadius value.\n * @param {number} clockWise - Specifies the clockWise value.\n * @param {GaugeLocation} outerOldEnd - Specifies the outerOldEnd value.\n * @param {GaugeLocation} innerOldEnd - Specifies the innerOldEnd value.\n * @param {GaugeLocation} outerOldStart - Specifies the outerOldStart value.\n * @param {GaugeLocation} innerOldStart - Specifies the innerOldStart value.\n * @returns {string} - Returns the path value.\n * @private\n */\nexport function roundedArcWidthPathCalculation(start, end, innerStart, innerEnd, radius, startRadius, endRadius, clockWise, outerOldEnd, innerOldEnd, outerOldStart, innerOldStart) {\n return 'M ' + start.x + ' ' + start.y + ' A ' + radius + ' ' + radius + ' 0 ' +\n clockWise + ' 1 ' + end.x + ' ' + end.y + ' C ' + outerOldEnd.x + ' ' + outerOldEnd.y + ' ' + innerOldEnd.x + ' ' +\n innerOldEnd.y + ' ' + innerEnd.x + ' ' + innerEnd.y +\n ' A ' + endRadius + ' ' + startRadius + ' 0 ' +\n clockWise + ' 0 ' + innerStart.x + ' ' + innerStart.y +\n ' C ' + innerOldStart.x + ' ' + innerOldStart.y + ' ' + outerOldStart.x + ' ' +\n outerOldStart.y + ' ' + start.x + ' ' + start.y + ' Z';\n}\n/**\n * Function to get the rounded path direction of the circular gauge.\n *\n * @param {GaugeLocation} center - Specifies the center value.\n * @param {number} actualStart - Specifies the actualStart value.\n * @param {number} actualEnd - Specifies the actualEnd value.\n * @param {number} oldStart - Specifies the oldStart value.\n * @param {number} oldEnd - Specifies the oldEnd value.\n * @param {number} radius - Specifies the radius value.\n * @param {number} startWidth - Specifies the startWidth value.\n * @param {number} endWidth - Specifies the endWidth value.\n * @param {Range} range - Specifies the range value.\n * @param {Axis} axis - Specifies the axis value.\n * @returns {string} - Returns the path value.\n * @private\n */\nexport function getRoundedPathArc(center, actualStart, actualEnd, oldStart, oldEnd, radius, startWidth, endWidth, range, axis) {\n actualEnd -= isCompleteAngle(actualStart, actualEnd) ? 0.0001 : 0;\n var degree = getDegree(actualStart, actualEnd);\n var startRadius = radius - startWidth;\n var endRadius = radius - endWidth;\n var arcRadius = radius - ((startWidth + endWidth) / 2);\n return arcWidthPathCalculation(getLocationFromAngle(actualStart, radius, center), getLocationFromAngle(actualEnd, radius, center), getLocationFromAngle(actualStart, startRadius, center), getLocationFromAngle(actualEnd, endRadius, center), radius, arcRadius, arcRadius, arcRadius, (degree < 180) ? 0 : 1, center, getLocationFromAngle(oldEnd, radius, center), getLocationFromAngle(oldEnd, endRadius, center), getLocationFromAngle(oldStart, radius, center), getLocationFromAngle(oldStart, startRadius, center), startWidth, endWidth, degree, range, axis);\n}\n/**\n * Function to get the circular path direction of the circular gauge.\n *\n * @param {GaugeLocation} start - Specifies the start value.\n * @param {GaugeLocation} end - Specifies the end value.\n * @param {number} radius - Specifies the radius value.\n * @param {number} clockWise - Specifies the clockWise.\n * @returns {string} - Returns the path.\n * @private\n */\nexport function getCirclePath(start, end, radius, clockWise) {\n return 'M ' + start.x + ' ' + start.y + ' A ' + radius + ' ' +\n radius + ' 0 ' + clockWise + ' 1 ' + end.x + ' ' + end.y;\n}\n/**\n * Function to compile the template function for circular gauge.\n *\n * @param {string} template - Specifies the template.\n * @param {CircularGauge} gauge - Specifies the gauge instance.\n * @returns {Function} - Returns the template function.\n * @private\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getTemplateFunction(template, gauge) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var templateFn = null;\n try {\n if (typeof template === 'function') {\n templateFn = templateComplier(template);\n }\n else if (isNaN(parseFloat(template)) && document.querySelectorAll(template).length) {\n if ((template.charAt(0) !== 'a' || template.charAt(0) !== 'A') && template.length !== 1) {\n templateFn = templateComplier(document.querySelector(template).innerHTML.trim());\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }\n else if (gauge.isVue || gauge.isVue3) {\n templateFn = templateComplier(template);\n }\n }\n catch (e) {\n templateFn = templateComplier(template);\n }\n return templateFn;\n}\n/**\n * Function to remove the element from id.\n *\n * @param {string} id Specifies the id\n * @returns {void}\n * @private\n */\nexport function removeElement(id) {\n var element = getElement(id);\n if (element) {\n remove(element);\n }\n}\n/**\n * Function to get element from id.\n *\n * @param {string} id - Specifies the id.\n * @returns {Element} - Returns the element.\n * @private\n */\nexport function getElement(id) {\n return document.getElementById(id);\n}\n/**\n * Function to convert the number from string.\n *\n * @param {string} value - Specifies the value.\n * @param {number} containerSize - Specifies the container size.\n * @returns {number} - Returns the number.\n * @private\n */\nexport function stringToNumber(value, containerSize) {\n if (value !== null && value !== undefined) {\n return value.indexOf('%') !== -1 ? (containerSize / 100) * parseInt(value, 10) : parseInt(value, 10);\n }\n return null;\n}\n/**\n * Function to get current point for circular gauge using element id.\n *\n * @param {string} targetId - Specifies the target id.\n * @param {CircularGauge} gauge - Specifies the gauge instance.\n * @returns {IVisiblePointer} - Returns the pointer and axis index.\n * @private\n */\nexport function getPointer(targetId, gauge) {\n var tempString = targetId.replace(gauge.element.id, '').split('_Axis_')[1];\n var tempStringArray = tempString.indexOf('_Range_') > -1 ? tempString.split('_Range_') : tempString.indexOf('_Pointer_NeedleCap_') > -1 ? tempString.split('_Pointer_NeedleCap_') :\n tempString.indexOf('_Pointer_NeedleTail_') > -1 ? tempString.split('_Pointer_NeedleTail_') : tempString.indexOf('_Pointer_NeedleRect_') > -1 ? tempString.split('_Pointer_NeedleRect_') :\n tempString.indexOf('_Pointer_Needle_') > -1 ? tempString.split('_Pointer_Needle_') : tempString.indexOf('_Pointer_RangeBar_') > -1 ? tempString.split('_Pointer_RangeBar_') : tempString.indexOf('_Pointer_Marker_') > -1 ?\n tempString.split('_Pointer_Marker_') : tempString.indexOf('_Pointer_') > -1 ? tempString.split('_Pointer_') : tempString.split('_Annotation_');\n return {\n axisIndex: +tempStringArray[0],\n pointerIndex: +tempStringArray[tempStringArray.length - 1]\n };\n}\n/**\n * Function to convert the label using format for cirular gauge.\n *\n * @param {string} format - Specifies the format.\n * @returns {string} - Returns th string.\n * @private\n */\nexport function getLabelFormat(format) {\n var customLabelFormat = format && format.match('{value}') !== null;\n var skeleton = customLabelFormat ? '' : format;\n return skeleton;\n}\n/**\n * Function to calculate the marker shape for circular gauge.\n *\n * @param {GaugeLocation} location - Specifies the location.\n * @param {string} shape - Specifies the shape.\n * @param {Size} size - Specifies the size.\n * @param {string} url - Specifies the url.\n * @param {PathOption} options - Specifies the path option.\n * @returns {PathOption} - Returns the path.\n * @private\n */\nexport function calculateShapes(location, shape, size, url, options) {\n var path;\n var width = typeof size.width === 'string' ? parseFloat(size.width) : size.width;\n var height = typeof size.height === 'string' ? parseFloat(size.height) : size.height;\n var locX = location.x;\n var locY = location.y;\n var x = location.x + (-width / 2);\n var y = location.y + (-height / 2);\n var isLegend = options.id.indexOf('Shape') > -1;\n var space;\n switch (shape) {\n case 'Circle':\n merge(options, { 'rx': width / 2, 'ry': height / 2, 'cx': locX, 'cy': locY });\n break;\n case 'Diamond':\n path = 'M' + ' ' + x + ' ' + locY + ' ' +\n 'L' + ' ' + locX + ' ' + (locY + (-height / 2)) + ' ' +\n 'L' + ' ' + (locX + (width / 2)) + ' ' + locY + ' ' +\n 'L' + ' ' + locX + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + locY + ' Z';\n merge(options, { 'd': path });\n break;\n case 'Rectangle':\n path = 'M' + ' ' + x + ' ' + (locY + (-height / 2)) + ' ' +\n 'L' + ' ' + (locX + (width / 2)) + ' ' + (locY + (-height / 2)) + ' ' +\n 'L' + ' ' + (locX + (width / 2)) + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (locY + (-height / 2)) + ' Z';\n merge(options, { 'd': path });\n break;\n case 'Triangle':\n if (isLegend) {\n path = 'M' + ' ' + (x + (width / 2)) + ' ' + y + ' ' + 'L' + ' ' + (x + width) + ' ' +\n (y + height) + 'L' + ' ' + x + ' ' + (y + height) + ' Z';\n }\n else {\n path = 'M' + ' ' + locX + ' ' + locY + ' ' +\n 'L' + ' ' + (locX - height) + ' ' + (locY - (width / 2)) +\n 'L' + ' ' + (locX - height) + ' ' + (locY + (width / 2)) + ' Z';\n }\n merge(options, { 'd': path });\n break;\n case 'InvertedTriangle':\n if (isLegend) {\n path = 'M' + ' ' + (x + width) + ' ' + y + ' ' + 'L' + ' ' + (x + (width / 2)) + ' ' + (y + height) +\n 'L' + ' ' + x + ' ' + (y) + ' Z';\n }\n else {\n path = 'M' + ' ' + locX + ' ' + locY + ' ' +\n 'L' + ' ' + (locX + height) + ' ' + (locY - (width / 2)) +\n 'L' + ' ' + (locX + height) + ' ' + (locY + (width / 2)) + ' Z';\n }\n merge(options, { 'd': path });\n break;\n case 'Image':\n merge(options, { 'href': url, 'height': height, 'width': width, x: x, y: y });\n break;\n case 'RightArrow':\n space = 2;\n path = 'M' + ' ' + (locX + (-width / 2)) + ' ' + (locY - (height / 2)) + ' ' +\n 'L' + ' ' + (locX + (width / 2)) + ' ' + (locY) + ' ' + 'L' + ' ' +\n (locX + (-width / 2)) + ' ' + (locY + (height / 2)) + ' L' + ' ' + (locX + (-width / 2)) + ' ' +\n (locY + (height / 2) - space) + ' ' + 'L' + ' ' + (locX + (width / 2) - (2 * space)) + ' ' + (locY) +\n ' L' + (locX + (-width / 2)) + ' ' + (locY - (height / 2) + space) + ' Z';\n merge(options, { 'd': path });\n break;\n case 'LeftArrow':\n options.fill = options.stroke;\n options.stroke = 'transparent';\n space = 2;\n path = 'M' + ' ' + (locX + (width / 2)) + ' ' + (locY - (height / 2)) + ' ' +\n 'L' + ' ' + (locX + (-width / 2)) + ' ' + (locY) + ' ' + 'L' + ' ' +\n (locX + (width / 2)) + ' ' + (locY + (height / 2)) + ' ' + 'L' + ' ' +\n (locX + (width / 2)) + ' ' + (locY + (height / 2) - space) + ' L' + ' ' + (locX + (-width / 2) + (2 * space))\n + ' ' + (locY) + ' L' + (locX + (width / 2)) + ' ' + (locY - (height / 2) + space) + ' Z';\n merge(options, { 'd': path });\n break;\n }\n return options;\n}\n/** @private */\nvar CustomizeOption = /** @class */ (function () {\n function CustomizeOption(id) {\n this.id = id;\n }\n return CustomizeOption;\n}());\nexport { CustomizeOption };\n/** @private */\nvar PathOption = /** @class */ (function (_super) {\n __extends(PathOption, _super);\n function PathOption(id, fill, width, color, opacity, dashArray, d, transform, style) {\n if (transform === void 0) { transform = ''; }\n if (style === void 0) { style = ''; }\n var _this = _super.call(this, id) || this;\n _this.opacity = opacity;\n _this.fill = fill;\n _this.stroke = color;\n _this['stroke-width'] = width;\n _this['stroke-dasharray'] = dashArray;\n _this.d = d;\n _this.transform = transform;\n _this.style = style;\n return _this;\n }\n return PathOption;\n}(CustomizeOption));\nexport { PathOption };\n/** @private */\nvar RectOption = /** @class */ (function (_super) {\n __extends(RectOption, _super);\n function RectOption(id, fill, border, opacity, rect) {\n var _this = _super.call(this, id) || this;\n _this.y = rect.y;\n _this.x = rect.x;\n _this.height = rect.height;\n _this.width = rect.width;\n _this.opacity = opacity;\n _this.fill = fill;\n _this.stroke = border.color;\n _this['stroke-width'] = border.width;\n _this['stroke-dasharray'] = border.dashArray;\n return _this;\n }\n return RectOption;\n}(CustomizeOption));\nexport { RectOption };\n/**\n * Specifies the size information of an element.\n */\nvar Size = /** @class */ (function () {\n function Size(width, height) {\n this.width = width;\n this.height = height;\n }\n return Size;\n}());\nexport { Size };\n/**\n * Specifies the location of the element in the circular gauge.\n */\nvar GaugeLocation = /** @class */ (function () {\n function GaugeLocation(x, y) {\n this.x = x;\n this.y = y;\n }\n return GaugeLocation;\n}());\nexport { GaugeLocation };\n/** @private */\nvar Rect = /** @class */ (function () {\n function Rect(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n return Rect;\n}());\nexport { Rect };\n/** @private */\nvar TextOption = /** @class */ (function (_super) {\n __extends(TextOption, _super);\n function TextOption(id, x, y, anchor, text, transform, baseLine) {\n if (transform === void 0) { transform = ''; }\n var _this = _super.call(this, id) || this;\n _this.transform = '';\n _this.baseLine = 'auto';\n _this.x = x;\n _this.y = y;\n _this.anchor = anchor;\n _this.text = text;\n _this.transform = transform;\n _this.baseLine = baseLine;\n return _this;\n }\n return TextOption;\n}(CustomizeOption));\nexport { TextOption };\n/** @private */\nvar VisibleLabels = /** @class */ (function () {\n function VisibleLabels(text, value, size) {\n this.text = text;\n this.value = value;\n this.size = size;\n }\n return VisibleLabels;\n}());\nexport { VisibleLabels };\n","/**\n * Specifies gauge Themes\n */\nexport var Theme;\n(function (Theme) {\n /** @private */\n Theme.axisLabelFont = {\n size: '12px',\n fontWeight: null,\n color: null,\n fontStyle: 'Normal',\n fontFamily: null\n };\n Theme.legendLabelFont = {\n size: '12px',\n fontWeight: null,\n color: null,\n fontStyle: 'Normal',\n fontFamily: null\n };\n})(Theme || (Theme = {}));\n/**\n * @param {string} theme theme\n * @returns {string[]} palette\n * @private */\nexport function getRangePalette(theme) {\n var palette = ['#50c917', '#27d5ff', '#fcde0b', '#ffb133', '#ff5985'];\n switch (theme.toLowerCase()) {\n case 'tailwind':\n palette = ['#0369A1', '#14B8A6', '#15803D', '#334155', '#5A61F6',\n '#65A30D', '#8B5CF6', '#9333EA', '#F59E0B', '#F97316'];\n break;\n case 'tailwinddark':\n palette = ['#10B981', '#22D3EE', '#2DD4BF', '#4ADE80', '#8B5CF6',\n '#E879F9', '#F472B6', '#F87171', '#F97316', '#FCD34D'];\n break;\n case 'bootstrap5':\n palette = ['#262E0B', '#668E1F', '#AF6E10', '#862C0B', '#1F2D50',\n '#64680B', '#311508', '#4C4C81', '#0C7DA0', '#862C0B'];\n break;\n case 'bootstrap5dark':\n palette = ['#5ECB9B', '#A860F1', '#EBA844', '#557EF7', '#E9599B',\n '#BFC529', '#3BC6CF', '#7A68EC', '#74B706', '#EA6266'];\n break;\n case 'fluent':\n palette = ['#614570', '#4C6FB1', '#CC6952', '#3F579A', '#4EA09B',\n '#6E7A89', '#D4515C', '#E6AF5D', '#639751', '#9D4D69'];\n break;\n case 'fluentdark':\n palette = ['#8AB113', '#2A72D5', '#43B786', '#584EC6', '#E85F9C',\n '#6E7A89', '#EA6266', '#EBA844', '#26BC7A', '#BC4870'];\n break;\n case 'material3':\n palette = ['#6200EE', '#E77A16', '#82C100', '#7107DC', '#05BB3D',\n '#D21020', '#FAD200', '#0085FF', '#9204EA', '#08EE9B'];\n break;\n case 'material3dark':\n palette = ['#4EAAFF', '#FA4EAB', '#FFF500', '#17EA58', '#38FFE7',\n '#FF9E45', '#B3F32F', '#B93CE4', '#FC5664', '#9B55FF'];\n break;\n case 'fluent2':\n palette = ['#6200EE', '#09AF74', '#0076E5', '#CB3587', '#E7910F',\n '#0364DE', '#66CD15', '#F3A93C', '#107C10', '#C19C00'];\n break;\n case 'fluent2dark':\n case 'fluent2highcontrast':\n palette = ['#9BB449', '#2A72D5', '#43B786', '#3F579A', '#584EC6',\n '#E85F9C', '#6E7A89', '#EA6266', '#0B6A0B', '#C19C00'];\n break;\n }\n return palette;\n}\n/**\n * Function to get ThemeStyle\n *\n * @param {GaugeTheme} theme theme\n * @returns {IThemeStyle} style\n * @private */\nexport function getThemeStyle(theme) {\n var style;\n switch (theme.toLowerCase()) {\n case 'materialdark':\n case 'fabricdark':\n case 'bootstrapdark':\n style = {\n backgroundColor: '#333232',\n titleFontColor: '#ffffff',\n tooltipFillColor: '#FFFFFF',\n tooltipFontColor: '#000000',\n tooltipFontSize: '13px',\n tooltipTextOpacity: 1,\n labelColor: '#DADADA',\n lineColor: '#C8C8C8',\n majorTickColor: '#C8C8C8',\n minorTickColor: '#9A9A9A',\n pointerColor: '#9A9A9A',\n capColor: '#9A9A9A',\n needleColor: '#9A9A9A',\n needleTailColor: '#9A9A9A',\n fontSize: '15px',\n labelFontFamily: 'Segoe UI',\n fontFamily: 'Segoe UI',\n fontWeight: 'Normal',\n titleFontWeight: 'Normal'\n };\n break;\n case 'highcontrast':\n style = {\n backgroundColor: '#000000',\n titleFontColor: '#FFFFFF',\n tooltipFillColor: '#ffffff',\n tooltipFontColor: '#000000',\n tooltipFontSize: '13px',\n tooltipTextOpacity: 1,\n labelColor: '#FFFFFF',\n lineColor: '#FFFFFF',\n majorTickColor: '#FFFFFF',\n minorTickColor: '#FFFFFF',\n pointerColor: '#FFFFFF',\n capColor: '#FFFFFF',\n needleColor: '#FFFFFF',\n needleTailColor: '#FFFFFF',\n fontSize: '15px',\n labelFontFamily: 'Segoe UI',\n fontFamily: 'Segoe UI',\n fontWeight: 'Normal',\n titleFontWeight: 'Normal'\n };\n break;\n case 'bootstrap4':\n style = {\n backgroundColor: '#FFFFFF',\n titleFontColor: '#212529',\n tooltipFillColor: '#000000',\n tooltipFontColor: '#FFFFFF',\n tooltipFontSize: '13px',\n labelColor: '#212529',\n lineColor: '#DEE2E6',\n majorTickColor: '#ADB5BD',\n minorTickColor: '#CED4DA',\n pointerColor: '#6C757D',\n capColor: '#6C757D',\n needleColor: '#6C757D',\n needleTailColor: '#6C757D',\n fontFamily: 'HelveticaNeue-Medium',\n fontSize: '16px',\n labelFontFamily: 'HelveticaNeue',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 0.9,\n fontWeight: 'Normal',\n titleFontWeight: 'Normal'\n };\n break;\n case 'tailwind':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#374151',\n tooltipFillColor: '#111827',\n tooltipFontColor: '#F9FAFB',\n tooltipFontSize: '13px',\n labelColor: '#6B7280',\n lineColor: '#E5E7EB',\n majorTickColor: '#9CA3AF',\n minorTickColor: '#9CA3AF',\n pointerColor: '#1F2937',\n capColor: '#1F2937',\n needleColor: '#1F2937',\n needleTailColor: '#1F2937',\n fontFamily: 'Inter',\n fontSize: '14px',\n labelFontFamily: 'Inter',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 0.9,\n fontWeight: 'Normal',\n titleFontWeight: '500'\n };\n break;\n case 'tailwinddark':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#D1D5DB',\n tooltipFillColor: '#F9FAFB',\n tooltipFontColor: '#1F2937',\n tooltipFontSize: '13px',\n labelColor: '#9CA3AF',\n lineColor: '#374151',\n majorTickColor: '#6B7280',\n minorTickColor: '#6B7280',\n pointerColor: '#9CA3AF',\n capColor: '#9CA3AF',\n needleColor: '#9CA3AF',\n needleTailColor: '#9CA3AF',\n fontFamily: 'Inter',\n fontSize: '14px',\n labelFontFamily: 'Inter',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 0.9,\n fontWeight: 'Normal',\n titleFontWeight: '500'\n };\n break;\n case 'bootstrap5':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#343A40',\n tooltipFillColor: '#212529',\n tooltipFontColor: '#F9FAFB',\n tooltipFontSize: '13px',\n labelColor: '#495057',\n lineColor: '#E5E7EB',\n majorTickColor: '#9CA3AF',\n minorTickColor: '#9CA3AF',\n pointerColor: '#1F2937',\n capColor: '#1F2937',\n needleColor: '#1F2937',\n needleTailColor: '#1F2937',\n fontFamily: 'Helvetica Neue',\n fontSize: '14px',\n labelFontFamily: 'Helvetica Neue',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n fontWeight: 'Normal',\n titleFontWeight: '500'\n };\n break;\n case 'bootstrap5dark':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#E9ECEF',\n tooltipFillColor: '#E9ECEF',\n tooltipFontColor: '#212529',\n tooltipFontSize: '13px',\n labelColor: '#CED4DA',\n lineColor: '#343A40',\n majorTickColor: '#6C757D',\n minorTickColor: '#6C757D',\n pointerColor: '#ADB5BD',\n capColor: '#ADB5BD',\n needleColor: '#ADB5BD',\n needleTailColor: '#ADB5BD',\n fontFamily: 'Helvetica Neue',\n fontSize: '14px',\n labelFontFamily: 'Helvetica Neue',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n fontWeight: 'Normal',\n titleFontWeight: '500'\n };\n break;\n case 'fluent':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#201F1E',\n tooltipFillColor: '#FFFFFF',\n tooltipFontColor: '#323130',\n tooltipFontSize: '13px',\n labelColor: '#3B3A39',\n lineColor: '#EDEBE9',\n majorTickColor: '#C8C6C4',\n minorTickColor: '#C8C6C4',\n pointerColor: '#A19F9D',\n capColor: '#A19F9D',\n needleColor: '#A19F9D',\n needleTailColor: '#A19F9D',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n labelFontFamily: 'Segoe UI',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n fontWeight: 'Normal',\n titleFontWeight: '600'\n };\n break;\n case 'fluentdark':\n style = {\n backgroundColor: 'rgba(255,255,255, 0.0)',\n titleFontColor: '#F3F2F1',\n tooltipFillColor: '#252423',\n tooltipFontColor: '#F3F2F1',\n tooltipFontSize: '13px',\n labelColor: '#C8C6C4',\n lineColor: '#292827',\n majorTickColor: '#484644',\n minorTickColor: '#484644',\n pointerColor: '#797775',\n capColor: '#797775',\n needleColor: '#797775',\n needleTailColor: '#797775',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n labelFontFamily: 'Segoe UI',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n fontWeight: 'Normal',\n titleFontWeight: '600'\n };\n break;\n case 'material3':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#1C1B1F',\n tooltipFillColor: '#313033',\n tooltipFontColor: '#F4EFF4',\n tooltipFontSize: '14px',\n labelColor: ' #1E192B',\n lineColor: '#E7E0EC',\n majorTickColor: '#C4C7C5',\n minorTickColor: '#C4C7C5',\n pointerColor: '#49454E',\n capColor: '#49454E',\n needleColor: '#49454E',\n needleTailColor: '#49454E',\n fontFamily: 'Roboto',\n fontSize: '16px',\n labelFontFamily: 'Roboto',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n fontWeight: '400',\n titleFontWeight: '500'\n };\n break;\n case 'material3dark':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#E6E1E5',\n tooltipFillColor: '#E6E1E5',\n tooltipFontColor: '#313033',\n tooltipFontSize: '14px',\n labelColor: '#E6E1E5',\n lineColor: '#49454F',\n majorTickColor: '#444746',\n minorTickColor: '#444746',\n pointerColor: '#CAC4D0',\n capColor: '#CAC4D0',\n needleColor: '#CAC4D0',\n needleTailColor: '#CAC4D0',\n fontFamily: 'Roboto',\n fontSize: '16px',\n labelFontFamily: 'Roboto',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n fontWeight: '400',\n titleFontWeight: '500'\n };\n break;\n case 'fluent2':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#242424',\n tooltipFillColor: '#FFFFFF',\n tooltipFontColor: '#242424',\n tooltipFontSize: '12px',\n labelColor: '#242424',\n lineColor: '#EDEBE9',\n majorTickColor: '#C8C6C4',\n minorTickColor: '#C8C6C4',\n pointerColor: '#A19F9D',\n capColor: '#A19F9D',\n needleColor: '#A19F9D',\n needleTailColor: '#A19F9D',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n labelFontFamily: 'Segoe UI',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n fontWeight: '400',\n titleFontWeight: '600'\n };\n break;\n case 'fluent2dark':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#FFFFFF',\n tooltipFillColor: '#292929',\n tooltipFontColor: '#FFFFFF',\n tooltipFontSize: '12px',\n labelColor: '#FFFFFF',\n lineColor: '#292827',\n majorTickColor: '#484644',\n minorTickColor: '#484644',\n pointerColor: '#8A8886',\n capColor: '#8A8886',\n needleColor: '#8A8886',\n needleTailColor: '#8A8886',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n labelFontFamily: 'Segoe UI',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n fontWeight: '400',\n titleFontWeight: '600'\n };\n break;\n case 'fluent2highcontrast':\n style = {\n backgroundColor: 'transparent',\n titleFontColor: '#FFFFFF',\n tooltipFillColor: '#000000',\n tooltipFontColor: '#FFFFFF',\n tooltipFontSize: '12px',\n labelColor: '#FFFFFF',\n lineColor: '#292827',\n majorTickColor: '#484644',\n minorTickColor: '#484644',\n pointerColor: '#8A8886',\n capColor: '#8A8886',\n needleColor: '#8A8886',\n needleTailColor: '#8A8886',\n fontFamily: 'Segoe UI',\n fontSize: '14px',\n labelFontFamily: 'Segoe UI',\n tooltipFillOpacity: 1,\n tooltipTextOpacity: 1,\n fontWeight: '400',\n titleFontWeight: '600',\n tooltipBorderColor: '#FFF',\n legendBorderColor: '#FFF',\n legendBorderWidth: 1\n };\n break;\n default:\n style = {\n backgroundColor: '#FFFFFF',\n titleFontColor: '#424242',\n tooltipFillColor: '#363F4C',\n tooltipFontColor: '#ffffff',\n tooltipFontSize: '13px',\n tooltipTextOpacity: 1,\n labelColor: '#212121',\n lineColor: '#E0E0E0',\n majorTickColor: '#9E9E9E',\n minorTickColor: '#9E9E9E',\n pointerColor: '#757575',\n capColor: '#757575',\n needleColor: '#757575',\n needleTailColor: '#757575',\n fontSize: '15px',\n labelFontFamily: 'Segoe UI',\n fontFamily: 'Segoe UI',\n fontWeight: 'Normal',\n titleFontWeight: 'Normal'\n };\n break;\n }\n return style;\n}\n","/**\n * Specifies Circular-Gauge Helper methods\n */\nimport { setStyleAttribute } from '@syncfusion/ej2-base';\nimport { isCompleteAngle, getDegree } from './helper-common';\n/**\n * Function to set style to the element.\n *\n * @param {HTMLElement} element - Specifies the element.\n * @param {string} fill - Specifies the fill of the element.\n * @param {BorderModel} border - Specifies the border of the element.\n * @returns {void}\n * @private\n */\nexport function setStyles(element, fill, border) {\n setStyleAttribute(element, {\n 'stroke': border.color, 'stroke-width': border.width,\n 'fill': fill\n });\n}\n/**\n * Function to get the value from angle for circular gauge.\n *\n * @param {number} angle - Specifies the angle.\n * @param {number} maximumValue - Specifies the maximumValue.\n * @param {number} minimumValue - Specifies the minimumValue.\n * @param {number} startAngle - Specifies the startAngle.\n * @param {number} endAngle - Specifies the endAngle.\n * @param {boolean} isClockWise - Specifies the isClockWise.\n * @returns {number} - Returs the number.\n * @private\n */\nexport function getValueFromAngle(angle, maximumValue, minimumValue, startAngle, endAngle, isClockWise) {\n endAngle -= isCompleteAngle(startAngle, endAngle) ? 0.0001 : 0;\n angle = angle < startAngle ? (angle + 360) : angle;\n if (isClockWise) {\n return (((angle - startAngle) / getDegree(startAngle, endAngle)) * (maximumValue - minimumValue)) + minimumValue;\n }\n else {\n return maximumValue - ((((angle - startAngle) / getDegree(startAngle, endAngle)) * (maximumValue - minimumValue)));\n }\n}\n/**\n * Function to get current point for circular gauge using element id.\n *\n * @param {string} targetId - Specifies the target id.\n * @param {CircularGauge} gauge - Specifies the gauge instance.\n * @returns {IVisibleRange} - Returns the current point.\n * @private\n */\nexport function getRange(targetId, gauge) {\n var tempString = targetId.replace(gauge.element.id, '').split('_Axis_')[1];\n return {\n axisIndex: +tempString[0],\n rangeIndex: +tempString.split('Range_')[1]\n };\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { Theme } from '../model/theme';\n/**\n * Sets and gets the options to customize the styles of the borders in circular gauge.\n */\nvar Border = /** @class */ (function (_super) {\n __extends(Border, _super);\n function Border() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Border.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], Border.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Border.prototype, \"dashArray\", void 0);\n return Border;\n}(ChildProperty));\nexport { Border };\n/**\n * Sets and gets the font style for the circular gauge.\n */\nvar Font = /** @class */ (function (_super) {\n __extends(Font, _super);\n function Font() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('16px')\n ], Font.prototype, \"size\", void 0);\n __decorate([\n Property('')\n ], Font.prototype, \"color\", void 0);\n __decorate([\n Property('segoe UI')\n ], Font.prototype, \"fontFamily\", void 0);\n __decorate([\n Property('Normal')\n ], Font.prototype, \"fontWeight\", void 0);\n __decorate([\n Property('Normal')\n ], Font.prototype, \"fontStyle\", void 0);\n __decorate([\n Property(1)\n ], Font.prototype, \"opacity\", void 0);\n return Font;\n}(ChildProperty));\nexport { Font };\n/**\n * Sets and gets the options to customize the tooltip properties for range tooltip.\n */\nvar RangeTooltip = /** @class */ (function (_super) {\n __extends(RangeTooltip, _super);\n function RangeTooltip() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], RangeTooltip.prototype, \"fill\", void 0);\n __decorate([\n Complex({ size: null, fontFamily: null, opacity: null, fontWeight: null }, Font)\n ], RangeTooltip.prototype, \"textStyle\", void 0);\n __decorate([\n Property(null)\n ], RangeTooltip.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], RangeTooltip.prototype, \"template\", void 0);\n __decorate([\n Property(true)\n ], RangeTooltip.prototype, \"enableAnimation\", void 0);\n __decorate([\n Complex({ color: null }, Border)\n ], RangeTooltip.prototype, \"border\", void 0);\n __decorate([\n Property(false)\n ], RangeTooltip.prototype, \"showAtMousePosition\", void 0);\n return RangeTooltip;\n}(ChildProperty));\nexport { RangeTooltip };\n/**\n * Sets and gets the options to customize the tooltip for annotation in circular gauge.\n */\nvar AnnotationTooltip = /** @class */ (function (_super) {\n __extends(AnnotationTooltip, _super);\n function AnnotationTooltip() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], AnnotationTooltip.prototype, \"fill\", void 0);\n __decorate([\n Complex({ size: '13px', fontFamily: null, opacity: null }, Font)\n ], AnnotationTooltip.prototype, \"textStyle\", void 0);\n __decorate([\n Property(null)\n ], AnnotationTooltip.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], AnnotationTooltip.prototype, \"template\", void 0);\n __decorate([\n Property(true)\n ], AnnotationTooltip.prototype, \"enableAnimation\", void 0);\n __decorate([\n Complex({ color: null }, Border)\n ], AnnotationTooltip.prototype, \"border\", void 0);\n return AnnotationTooltip;\n}(ChildProperty));\nexport { AnnotationTooltip };\n/**\n * Sets and gets the margin of circular gauge.\n */\nvar Margin = /** @class */ (function (_super) {\n __extends(Margin, _super);\n function Margin() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(10)\n ], Margin.prototype, \"left\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"right\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"top\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"bottom\", void 0);\n return Margin;\n}(ChildProperty));\nexport { Margin };\n/**\n * Sets and gets the options to customize the tooltip of the circular gauge.\n */\nvar TooltipSettings = /** @class */ (function (_super) {\n __extends(TooltipSettings, _super);\n function TooltipSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], TooltipSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"fill\", void 0);\n __decorate([\n Complex({ size: null, fontFamily: null, opacity: null, fontWeight: null }, Font)\n ], TooltipSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Complex({}, RangeTooltip)\n ], TooltipSettings.prototype, \"rangeSettings\", void 0);\n __decorate([\n Complex({}, AnnotationTooltip)\n ], TooltipSettings.prototype, \"annotationSettings\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"template\", void 0);\n __decorate([\n Property(true)\n ], TooltipSettings.prototype, \"enableAnimation\", void 0);\n __decorate([\n Complex({ color: null }, Border)\n ], TooltipSettings.prototype, \"border\", void 0);\n __decorate([\n Property(false)\n ], TooltipSettings.prototype, \"showAtMousePosition\", void 0);\n __decorate([\n Property('Pointer')\n ], TooltipSettings.prototype, \"type\", void 0);\n return TooltipSettings;\n}(ChildProperty));\nexport { TooltipSettings };\n/**\n * Sets and gets the location of the legend in circular gauge.\n */\nvar Location = /** @class */ (function (_super) {\n __extends(Location, _super);\n function Location() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Location.prototype, \"x\", void 0);\n __decorate([\n Property(0)\n ], Location.prototype, \"y\", void 0);\n return Location;\n}(ChildProperty));\nexport { Location };\n/**\n * Sets and gets the options to customize the legend for the ranges in the circular gauge.\n */\nvar LegendSettings = /** @class */ (function (_super) {\n __extends(LegendSettings, _super);\n function LegendSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], LegendSettings.prototype, \"visible\", void 0);\n __decorate([\n Property(true)\n ], LegendSettings.prototype, \"toggleVisibility\", void 0);\n __decorate([\n Property('Center')\n ], LegendSettings.prototype, \"alignment\", void 0);\n __decorate([\n Complex({}, Border)\n ], LegendSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({}, Border)\n ], LegendSettings.prototype, \"shapeBorder\", void 0);\n __decorate([\n Property(8)\n ], LegendSettings.prototype, \"padding\", void 0);\n __decorate([\n Property(1)\n ], LegendSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property('Auto')\n ], LegendSettings.prototype, \"position\", void 0);\n __decorate([\n Property('Circle')\n ], LegendSettings.prototype, \"shape\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"height\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"width\", void 0);\n __decorate([\n Complex(Theme.legendLabelFont, Font)\n ], LegendSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property(10)\n ], LegendSettings.prototype, \"shapeHeight\", void 0);\n __decorate([\n Property(10)\n ], LegendSettings.prototype, \"shapeWidth\", void 0);\n __decorate([\n Property(5)\n ], LegendSettings.prototype, \"shapePadding\", void 0);\n __decorate([\n Complex({ x: 0, y: 0 }, Location)\n ], LegendSettings.prototype, \"location\", void 0);\n __decorate([\n Property('transparent')\n ], LegendSettings.prototype, \"background\", void 0);\n __decorate([\n Complex({ left: 0, right: 0, top: 0, bottom: 0 }, Margin)\n ], LegendSettings.prototype, \"margin\", void 0);\n return LegendSettings;\n}(ChildProperty));\nexport { LegendSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, Complex, ChildProperty, Collection } from '@syncfusion/ej2-base';\nimport { Font, Border } from '../model/base';\nimport { Theme } from '../model/theme';\n/**\n * Sets and gets the options to customize the axis line in circular gauge.\n */\nvar Line = /** @class */ (function (_super) {\n __extends(Line, _super);\n function Line() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(2)\n ], Line.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Line.prototype, \"dashArray\", void 0);\n __decorate([\n Property(null)\n ], Line.prototype, \"color\", void 0);\n return Line;\n}(ChildProperty));\nexport { Line };\n/**\n * Sets and gets the options to customize the axis label in circular gauge.\n */\nvar Label = /** @class */ (function (_super) {\n __extends(Label, _super);\n function Label() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex(Theme.axisLabelFont, Font)\n ], Label.prototype, \"font\", void 0);\n __decorate([\n Property('')\n ], Label.prototype, \"format\", void 0);\n __decorate([\n Property('Inside')\n ], Label.prototype, \"position\", void 0);\n __decorate([\n Property('None')\n ], Label.prototype, \"hiddenLabel\", void 0);\n __decorate([\n Property(false)\n ], Label.prototype, \"autoAngle\", void 0);\n __decorate([\n Property(false)\n ], Label.prototype, \"useRangeColor\", void 0);\n __decorate([\n Property(0)\n ], Label.prototype, \"offset\", void 0);\n __decorate([\n Property(true)\n ], Label.prototype, \"shouldMaintainPadding\", void 0);\n return Label;\n}(ChildProperty));\nexport { Label };\n/**\n * Sets and gets the option to customize the ranges of an axis in circular gauge.\n */\nvar Range = /** @class */ (function (_super) {\n __extends(Range, _super);\n function Range() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** @private */\n _this.isLinearCircularGradient = false;\n return _this;\n }\n __decorate([\n Property(0)\n ], Range.prototype, \"start\", void 0);\n __decorate([\n Property(0)\n ], Range.prototype, \"end\", void 0);\n __decorate([\n Property(null)\n ], Range.prototype, \"radius\", void 0);\n __decorate([\n Property(10)\n ], Range.prototype, \"startWidth\", void 0);\n __decorate([\n Property(10)\n ], Range.prototype, \"endWidth\", void 0);\n __decorate([\n Property(null)\n ], Range.prototype, \"color\", void 0);\n __decorate([\n Property(0)\n ], Range.prototype, \"roundedCornerRadius\", void 0);\n __decorate([\n Property(1)\n ], Range.prototype, \"opacity\", void 0);\n __decorate([\n Property('')\n ], Range.prototype, \"legendText\", void 0);\n __decorate([\n Property('Auto')\n ], Range.prototype, \"position\", void 0);\n __decorate([\n Property(0)\n ], Range.prototype, \"offset\", void 0);\n __decorate([\n Property(null)\n ], Range.prototype, \"linearGradient\", void 0);\n __decorate([\n Property(null)\n ], Range.prototype, \"radialGradient\", void 0);\n return Range;\n}(ChildProperty));\nexport { Range };\n/**\n * Sets and gets the options to customize the major and minor tick lines of an axis in circular gauge.\n */\nvar Tick = /** @class */ (function (_super) {\n __extends(Tick, _super);\n function Tick() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(2)\n ], Tick.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], Tick.prototype, \"height\", void 0);\n __decorate([\n Property(null)\n ], Tick.prototype, \"interval\", void 0);\n __decorate([\n Property(0)\n ], Tick.prototype, \"offset\", void 0);\n __decorate([\n Property(null)\n ], Tick.prototype, \"color\", void 0);\n __decorate([\n Property('Inside')\n ], Tick.prototype, \"position\", void 0);\n __decorate([\n Property(false)\n ], Tick.prototype, \"useRangeColor\", void 0);\n __decorate([\n Property('0')\n ], Tick.prototype, \"dashArray\", void 0);\n return Tick;\n}(ChildProperty));\nexport { Tick };\n/**\n * Sets and gets the needle cap of pointer in circular gauge.\n */\nvar Cap = /** @class */ (function (_super) {\n __extends(Cap, _super);\n function Cap() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], Cap.prototype, \"color\", void 0);\n __decorate([\n Property(null)\n ], Cap.prototype, \"linearGradient\", void 0);\n __decorate([\n Property(null)\n ], Cap.prototype, \"radialGradient\", void 0);\n __decorate([\n Complex({ color: null, width: 8 }, Border)\n ], Cap.prototype, \"border\", void 0);\n __decorate([\n Property(8)\n ], Cap.prototype, \"radius\", void 0);\n return Cap;\n}(ChildProperty));\nexport { Cap };\n/**\n * Sets and gets the options to customize the pointer needle in the circular gauge.\n */\nvar NeedleTail = /** @class */ (function (_super) {\n __extends(NeedleTail, _super);\n function NeedleTail() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], NeedleTail.prototype, \"color\", void 0);\n __decorate([\n Complex({ color: null, width: 0 }, Border)\n ], NeedleTail.prototype, \"border\", void 0);\n __decorate([\n Property('0%')\n ], NeedleTail.prototype, \"length\", void 0);\n __decorate([\n Property(null)\n ], NeedleTail.prototype, \"linearGradient\", void 0);\n __decorate([\n Property(null)\n ], NeedleTail.prototype, \"radialGradient\", void 0);\n return NeedleTail;\n}(ChildProperty));\nexport { NeedleTail };\n/**\n * Sets and gets the animation of pointers in circular gauge.\n */\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], Animation.prototype, \"enable\", void 0);\n __decorate([\n Property(1000)\n ], Animation.prototype, \"duration\", void 0);\n return Animation;\n}(ChildProperty));\nexport { Animation };\n/**\n * Sets and gets the annotation elements for an axis in circular gauge.\n */\nvar Annotation = /** @class */ (function (_super) {\n __extends(Annotation, _super);\n function Annotation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], Annotation.prototype, \"content\", void 0);\n __decorate([\n Property(90)\n ], Annotation.prototype, \"angle\", void 0);\n __decorate([\n Property('50%')\n ], Annotation.prototype, \"radius\", void 0);\n __decorate([\n Property('-1')\n ], Annotation.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], Annotation.prototype, \"autoAngle\", void 0);\n __decorate([\n Complex({ size: '12px', color: '#686868' }, Font)\n ], Annotation.prototype, \"textStyle\", void 0);\n __decorate([\n Property(null)\n ], Annotation.prototype, \"description\", void 0);\n return Annotation;\n}(ChildProperty));\nexport { Annotation };\n/**\n * Sets and gets the options to customize the pointers of an axis in circular gauge.\n */\nvar Pointer = /** @class */ (function (_super) {\n __extends(Pointer, _super);\n function Pointer() {\n /**\n * Sets and gets the value of the pointer in circular gauge.\n *\n * @aspDefaultValueIgnore\n * @default null\n */\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** @private */\n _this.isPointerAnimation = true;\n return _this;\n }\n __decorate([\n Property(null)\n ], Pointer.prototype, \"value\", void 0);\n __decorate([\n Property('Needle')\n ], Pointer.prototype, \"type\", void 0);\n __decorate([\n Property('Auto')\n ], Pointer.prototype, \"position\", void 0);\n __decorate([\n Property(0)\n ], Pointer.prototype, \"roundedCornerRadius\", void 0);\n __decorate([\n Property(null)\n ], Pointer.prototype, \"imageUrl\", void 0);\n __decorate([\n Property(null)\n ], Pointer.prototype, \"radius\", void 0);\n __decorate([\n Property(20)\n ], Pointer.prototype, \"pointerWidth\", void 0);\n __decorate([\n Complex({}, Cap)\n ], Pointer.prototype, \"cap\", void 0);\n __decorate([\n Complex({}, Font)\n ], Pointer.prototype, \"textStyle\", void 0);\n __decorate([\n Complex({}, NeedleTail)\n ], Pointer.prototype, \"needleTail\", void 0);\n __decorate([\n Property(null)\n ], Pointer.prototype, \"color\", void 0);\n __decorate([\n Complex({ color: '#DDDDDD', width: 0 }, Border)\n ], Pointer.prototype, \"border\", void 0);\n __decorate([\n Complex(null, Animation)\n ], Pointer.prototype, \"animation\", void 0);\n __decorate([\n Property('Circle')\n ], Pointer.prototype, \"markerShape\", void 0);\n __decorate([\n Property(5)\n ], Pointer.prototype, \"markerHeight\", void 0);\n __decorate([\n Property('')\n ], Pointer.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], Pointer.prototype, \"description\", void 0);\n __decorate([\n Property(5)\n ], Pointer.prototype, \"markerWidth\", void 0);\n __decorate([\n Property(0)\n ], Pointer.prototype, \"offset\", void 0);\n __decorate([\n Property(null)\n ], Pointer.prototype, \"needleStartWidth\", void 0);\n __decorate([\n Property(null)\n ], Pointer.prototype, \"needleEndWidth\", void 0);\n __decorate([\n Property(null)\n ], Pointer.prototype, \"linearGradient\", void 0);\n __decorate([\n Property(null)\n ], Pointer.prototype, \"radialGradient\", void 0);\n return Pointer;\n}(ChildProperty));\nexport { Pointer };\n/**\n * Sets and gets the options to customize the axis for the circular gauge.\n */\nvar Axis = /** @class */ (function (_super) {\n __extends(Axis, _super);\n function Axis() {\n /**\n * Sets and gets the minimum value of an axis in the circular gauge.\n *\n * @aspDefaultValueIgnore\n * @default null\n */\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** @private */\n _this.visibleLabels = [];\n return _this;\n }\n __decorate([\n Property(null)\n ], Axis.prototype, \"minimum\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"maximum\", void 0);\n __decorate([\n Property(false)\n ], Axis.prototype, \"showLastLabel\", void 0);\n __decorate([\n Property(false)\n ], Axis.prototype, \"hideIntersectingLabel\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"roundingPlaces\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"radius\", void 0);\n __decorate([\n Complex({}, Line)\n ], Axis.prototype, \"lineStyle\", void 0);\n __decorate([\n Collection([{}], Range)\n ], Axis.prototype, \"ranges\", void 0);\n __decorate([\n Collection([{}], Pointer)\n ], Axis.prototype, \"pointers\", void 0);\n __decorate([\n Collection([{}], Annotation)\n ], Axis.prototype, \"annotations\", void 0);\n __decorate([\n Complex({ width: 2, height: 10 }, Tick)\n ], Axis.prototype, \"majorTicks\", void 0);\n __decorate([\n Complex({ width: 2, height: 5 }, Tick)\n ], Axis.prototype, \"minorTicks\", void 0);\n __decorate([\n Property(200)\n ], Axis.prototype, \"startAngle\", void 0);\n __decorate([\n Property(160)\n ], Axis.prototype, \"endAngle\", void 0);\n __decorate([\n Property('ClockWise')\n ], Axis.prototype, \"direction\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"background\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"rangeGap\", void 0);\n __decorate([\n Property(false)\n ], Axis.prototype, \"startAndEndRangeGap\", void 0);\n __decorate([\n Complex({}, Label)\n ], Axis.prototype, \"labelStyle\", void 0);\n return Axis;\n}(ChildProperty));\nexport { Axis };\n","/**\n * Specifies the gauge constant value\n */\n/**\n * Sets and gets loaded event name in the circular gauge.\n *\n * @private\n */\nexport var loaded = 'loaded';\n/**\n * Sets and gets load event name in the circular gauge.\n *\n * @private\n */\nexport var load = 'load';\n/**\n * Sets and gets animation complete event name in the circular gauge.\n *\n * @private\n */\nexport var animationComplete = 'animationComplete';\n/**\n * Sets and gets axis label render event name in the circular gauge.\n *\n * @private\n */\nexport var axisLabelRender = 'axisLabelRender';\n/**\n * Sets and gets radius calculate event name in the circular gauge.\n *\n * @private\n */\nexport var radiusCalculate = 'radiusCalculate';\n/**\n * Sets and gets tooltip render event name in the circular gauge.\n *\n * @private\n */\nexport var tooltipRender = 'tooltipRender';\n/**\n * Sets and gets annotation render event name in the circular gauge.\n *\n * @private\n */\nexport var annotationRender = 'annotationRender';\n/**\n * Sets and gets gauge mouse move event name in the circular gauge.\n *\n * @private\n */\nexport var gaugeMouseMove = 'gaugeMouseMove';\n/**\n * Sets and gets gauge mouse leave event name in the circular gauge.\n *\n * @private\n */\nexport var gaugeMouseLeave = 'gaugeMouseLeave';\n/**\n * Sets and gets gauge mouse down event name in the circular gauge.\n *\n * @private\n */\nexport var gaugeMouseDown = 'gaugeMouseDown';\n/**\n * Sets and gets gauge mouse up event name in circular gauge.\n *\n * @private\n */\nexport var gaugeMouseUp = 'gaugeMouseUp';\n/**\n * Sets and gets drag start event name in the circular gauge.\n *\n * @private\n */\nexport var dragStart = 'dragStart';\n/**\n * Sets and gets drag move event name in the circular gauge.\n *\n * @private\n */\nexport var dragMove = 'dragMove';\n/**\n * Sets and gets drag end event name in the circular gauge.\n *\n * @private\n */\nexport var dragEnd = 'dragEnd';\n/**\n * Sets and gets resize event name in the circular gauge.\n *\n * @private\n */\nexport var resized = 'resized';\n/**\n * Sets and gets before print event name in the circular gauge.\n *\n * @private\n */\nexport var beforePrint = 'beforePrint';\n/**\n * Sets and gets pointer start event name in the circular gauge.\n *\n * @private\n */\nexport var pointerStart = 'pointerStart';\n/**\n * Sets and gets pointer move event name in the circular gauge.\n *\n * @private\n */\nexport var pointerMove = 'pointerMove';\n/**\n * Sets and gets pointer end event name in the circular gauge.\n *\n * @private\n */\nexport var pointerEnd = 'pointerEnd';\n/**\n * Sets and gets range start event name in the circular gauge.\n *\n * @private\n */\nexport var rangeStart = 'rangeStart';\n/**\n * Sets and gets range move event name in the circular gauge.\n *\n * @private\n */\nexport var rangeMove = 'rangeMove';\n/**\n * Sets and gets range end event name in the circular gauge.\n *\n * @private\n */\nexport var rangeEnd = 'rangeEnd';\n","import { getTemplateFunction, getElement, stringToNumber, getFontStyle, getLocationFromAngle, removeElement } from '../utils/helper-common';\nimport { annotationRender } from '../model/constants';\nimport { createElement, isNullOrUndefined, Animation } from '@syncfusion/ej2-base';\n/**\n * Annotation Module handles the Annotation of the axis.\n *\n * @hidden\n */\nvar Annotations = /** @class */ (function () {\n /**\n * Constructor for Annotation module.\n *\n * @param {CircularGauge} gauge - Specifies the instance of the gauge.\n * @private.\n */\n // eslint-disable-next-line\n function Annotations(gauge) {\n }\n /**\n * Method to render the annotation for circular gauge.\n *\n * @private\n */\n Annotations.prototype.renderAnnotation = function (axis, index, gauge) {\n var _this = this;\n var width = gauge.availableSize.width;\n var element = createElement('div', {\n id: gauge.element.id + '_Annotations_' + index, styles: gauge.allowLoadingAnimation ? 'opacity: 0' : 'opacity: 1'\n });\n var parentElement = getElement(gauge.element.id + '_Secondary_Element');\n if (!isNullOrUndefined(document.getElementById(gauge.element.id + '_Secondary_Element'))) {\n document.getElementById(gauge.element.id + '_Secondary_Element').style.width = width + 'px';\n }\n axis.annotations.map(function (annotation, annotationIndex) {\n if (annotation.content !== null) {\n _this.createTemplate(element, annotationIndex, index, gauge);\n }\n });\n if (parentElement && element.childElementCount) {\n parentElement.appendChild(element);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n gauge.renderReactTemplates();\n };\n /**\n * Method to annotation animation for circular gauge.\n *\n * @param {CircularGauge} gauge - Specifies the instance of gauge.\n * @returns {void}\n * @private\n */\n Annotations.prototype.annotationAnimation = function (gauge) {\n for (var i = 0; i < gauge.axes.length; i++) {\n var element = document.getElementById(gauge.element.id + '_Annotations_' + i);\n if (!isNullOrUndefined(element)) {\n if (element['style']['opacity'] === '0') {\n this.annotationAnimate(element, gauge, i);\n }\n }\n }\n };\n /**\n * Method to annotation animation for circular gauge.\n *\n * @param {Element} element - Specifies the element.\n * @param {CircularGauge} gauge - Specifies the instance of gauge.\n * @param {number} axisIndex - Specifies the axis index.\n * @returns {void}\n */\n Annotations.prototype.annotationAnimate = function (element, gauge, axisIndex) {\n var tempOpacity = 0;\n var opacity = 1;\n new Animation({}).animate(element, {\n duration: gauge.loadingAnimationDuration[axisIndex],\n progress: function (args) {\n if (args.timeStamp > args.delay) {\n tempOpacity = ((args.timeStamp - args.delay) / args.duration);\n element['style']['opacity'] = (opacity * tempOpacity);\n }\n },\n end: function () {\n element['style']['opacity'] = opacity;\n gauge.isOverAllAnimationComplete = true;\n }\n });\n };\n /**\n * Method to create annotation template for circular gauge.\n *\n * @private\n */\n Annotations.prototype.createTemplate = function (element, annotationIndex, axisIndex, gauge) {\n var _this = this;\n var axis = gauge.axes[axisIndex];\n var annotation = axis.annotations[annotationIndex];\n var childElement = createElement('div', {\n id: gauge.element.id + '_Axis_' + axisIndex + '_Annotation_' + annotationIndex\n });\n childElement.style.cssText = 'position: absolute; z-index:' + annotation.zIndex + ';transform:' +\n (annotation.autoAngle ? 'rotate(' + (annotation.angle - 90) + 'deg)' : 'rotate(0deg)') + ';';\n var argsData = {\n cancel: false, name: annotationRender, content: annotation.content,\n axis: axis, annotation: annotation, textStyle: annotation.textStyle\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n gauge.trigger('annotationRender', argsData, function (observedArgs) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var templateFn;\n var templateElement;\n if (!argsData.cancel) {\n templateFn = getTemplateFunction(argsData.content, gauge);\n if (templateFn && templateFn(axis, gauge, argsData.content, gauge.element.id + '_Axis' + axisIndex + '_ContentTemplate' + annotationIndex).length) {\n templateElement = Array.prototype.slice.call(templateFn(axis, gauge, argsData.content, gauge.element.id + '_Axis' + axisIndex + '_ContentTemplate' + annotationIndex));\n var length_1 = templateElement.length;\n for (var i = 0; i < length_1; i++) {\n childElement.appendChild(templateElement[i]);\n }\n }\n else {\n var annotationElement = createElement('div', {\n innerHTML: !isNullOrUndefined(argsData.content) ? argsData.content.toString() : null,\n id: 'StringTemplate'\n });\n annotationElement.style.cssText = getFontStyle(argsData.textStyle);\n childElement.appendChild(annotationElement);\n }\n _this.updateLocation(childElement, axis, annotation, gauge);\n element.appendChild(childElement);\n }\n });\n };\n /**\n * Method to update the annotation location for circular gauge.\n *\n * @param {HTMLElement} element - Specifies the element.\n * @param {Axis} axis - Specifies the axis.\n * @param {Annotation} annotation - Specifies the annotation.\n * @returns {void}\n */\n Annotations.prototype.updateLocation = function (element, axis, annotation, gauge) {\n var location = getLocationFromAngle(annotation.angle - 90, stringToNumber(annotation.radius, axis.currentRadius), gauge.midPoint);\n var elementRect = this.measureElementRect(element);\n element.style.left = (location.x - (elementRect.width / 2)) + 'px';\n element.style.top = (location.y - (elementRect.height / 2)) + 'px';\n element.setAttribute('aria-label', annotation.description || 'Annotation');\n element.setAttribute('role', 'region');\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name\n */\n Annotations.prototype.getModuleName = function () {\n // Returns te module name\n return 'Annotations';\n };\n /**\n * To destroy the annotation.\n *\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n Annotations.prototype.destroy = function () { };\n /**\n * Function to measure the element rect.\n *\n * @param {HTMLElement} element - Specifies the html element.\n * @returns {ClientRect} - Returns the client rect.\n * @private\n */\n Annotations.prototype.measureElementRect = function (element) {\n document.body.appendChild(element);\n var bounds = element.getBoundingClientRect();\n removeElement(element.id);\n return bounds;\n };\n return Annotations;\n}());\nexport { Annotations };\n","/**\n * Specifies Circular-Gauge Tooltip Helper methods\n */\nimport { GaugeLocation, getTemplateFunction, Size } from './helper-common';\nimport { remove } from '@syncfusion/ej2-base';\n/**\n * Function to get the mouse position\n *\n * @param {number} pageX - Specifies the pageX value.\n * @param {number} pageY - Specifies the pageY value.\n * @param {Element} element - Specifies the element.\n * @returns {GaugeLocation} - Returns the location.\n *\n * @private\n */\nexport function getMousePosition(pageX, pageY, element) {\n var elementRect = element.getBoundingClientRect();\n var pageXOffset = element.ownerDocument.defaultView.pageXOffset;\n var pageYOffset = element.ownerDocument.defaultView.pageYOffset;\n var clientTop = element.ownerDocument.documentElement.clientTop;\n var clientLeft = element.ownerDocument.documentElement.clientLeft;\n var positionX = elementRect.left + pageXOffset - clientLeft;\n var positionY = elementRect.top + pageYOffset - clientTop;\n return new GaugeLocation((pageX - positionX), (pageY - positionY));\n}\n/**\n * function to get the size of the element.\n *\n * @param {string} template - Specifies the template element.\n * @param {CircularGauge} gauge - Specifies the gauge instance.\n * @param {HTMLElement} parent - specifies the element.\n * @returns {Size} - Return the size of the element\n *\n * @private\n */\nexport function getElementSize(template, gauge, parent) {\n var elementSize;\n var element;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var templateFn = getTemplateFunction(template, gauge);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var tooltipData = templateFn ? (gauge.isVue || gauge.isVue3) ? templateFn({}, gauge, null, gauge.element.id + 'Template')\n : templateFn({}, null, null, gauge.element.id + 'Template') : [];\n if (templateFn && tooltipData.length) {\n element = gauge.createElement('div', { id: gauge.element.id + '_Measure_Element' });\n gauge.element.appendChild(element);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var templateElement = (gauge.isVue || gauge.isVue3) ? templateFn({}, gauge, null, gauge.element.id + 'Template')\n : templateFn({}, null, null, gauge.element.id + 'Template');\n var templateLength = templateElement.length;\n while (templateLength > 0) {\n element.appendChild(templateElement[0]);\n templateLength--;\n }\n parent.appendChild(element);\n elementSize = new Size(parent.getBoundingClientRect().width, parent.getBoundingClientRect().height);\n remove(element);\n }\n return elementSize;\n}\n","/**\n * Specifies Circular-Gauge Common Helper methods\n */\nimport { measureText, getElement, Rect } from '../utils/helper-common';\nimport { createElement } from '@syncfusion/ej2-base';\n/**\n * @param {number} maxWidth - Specifies the maximum width.\n * @param {string} text - Specifies the text.\n * @param {FontModel} font - Specifies the font.\n * @returns {string} - Returns the label.\n * @private */\nexport function textTrim(maxWidth, text, font) {\n var label = text;\n var size = measureText(text, font).width;\n if (size > maxWidth) {\n var textLength = text.length;\n for (var i = textLength - 1; i >= 0; --i) {\n label = text.substring(0, i) + '...';\n size = measureText(label, font).width;\n if (size <= maxWidth) {\n return label;\n }\n }\n }\n return label;\n}\n/**\n * @param {string} text - Specifies the text.\n * @param {number} x - Specifies the x value.\n * @param {number} y - Specifies the y value.\n * @param {CircularGauge} gauge - Specifies the circular gauge.\n * @param {string} type - Specifies the type\n * @returns {void}\n * @private */\nexport function showTooltip(text, x, y, gauge, type) {\n var tooltipRect = new Rect(gauge.margin.left, gauge.margin.top + 10, gauge.availableSize.width - (gauge.margin.left + gauge.margin.right), gauge.availableSize.height - (gauge.margin.top - gauge.margin.bottom));\n var id;\n var tooltip;\n if (type === 'Title') {\n id = gauge.element.id + '_EJ2_Title_Tooltip';\n tooltip = document.getElementById(id);\n var width = measureText(text, {\n fontFamily: 'Segoe UI', size: '12px',\n fontStyle: 'Normal', fontWeight: 'Regular'\n }).width + 5;\n tooltipRect.width = width < tooltipRect.width ? width : tooltipRect.width - 10;\n if (!tooltip) {\n removeTooltip();\n }\n }\n else if (type === 'LegendText') {\n id = gauge.element.id + '_EJ2_Legend_Tooltip';\n tooltip = document.getElementById(id);\n if (!tooltip) {\n removeTooltip();\n }\n var width = measureText(text, {\n fontFamily: 'Segoe UI', size: '12px',\n fontStyle: 'Normal', fontWeight: 'Regular'\n }).width + 5;\n x = (x + width > tooltipRect.width) ? x - width : x;\n tooltipRect.x = x < 0 ? 5 : x;\n tooltipRect.y = y;\n tooltipRect.width = width;\n }\n if (!tooltip) {\n tooltip = createElement('div', { id: id, className: 'EJ2-CircularGauge-Tooltip' });\n tooltip.innerText = text;\n tooltip.style.cssText = 'top:' + (tooltipRect.y + 15).toString() + 'px;left:' + (tooltipRect.x).toString() +\n 'px; background-color: rgb(255, 255, 255) !important; color:black !important; ' +\n 'position:absolute; border:1px solid rgb(112, 112, 112); padding-left : 3px; padding-right : 2px;' +\n 'padding-bottom: 2px; padding-top : 2px; font-size:12px; text-align: center; font-family: \"Segoe UI\"; width:' + (tooltipRect.width) + 'px;';\n getElement(gauge.element.id + '_Secondary_Element').appendChild(tooltip);\n }\n else {\n tooltip.innerText = text;\n tooltip.style.top = (tooltipRect.y + 15).toString() + 'px';\n tooltip.style.left = (tooltipRect.x).toString() + 'px';\n }\n}\n/**\n * @param {Event} event - Specifies the event.\n * @param {number} x - Specifies the x value.\n * @param {number} y - Specifies the y value.\n * @param {CircularGauge} gauge - Specifies the gauge.\n * @param {boolean} isTitleTouch - Specifies the title touch with boolean.\n * @returns {void}\n * @private */\nexport function titleTooltip(event, x, y, gauge, isTitleTouch) {\n var targetId = event.target.id;\n var elementArray = document.getElementsByClassName('EJ2-CircularGauge-Tooltip');\n if ((targetId === (gauge.element.id + '_CircularGaugeTitle')) && (event.target.textContent.indexOf('...') > -1)) {\n showTooltip(gauge.title, x, y, gauge, 'Title');\n }\n else if (event.target.textContent.indexOf('...') > -1 && targetId.indexOf('_gauge_legend_') > -1 &&\n gauge.legendSettings.visible) {\n var axisIndex = parseInt(targetId.split(gauge.element.id + '_gauge_legend_Axis_')[1].split('_text_')[0], 10);\n var rangeIndex = parseInt(targetId.split(gauge.element.id + '_gauge_legend_Axis_')[1].split('_text_')[1], 10);\n var text = '';\n for (var _i = 0, _a = gauge.legendModule.legendCollection; _i < _a.length; _i++) {\n var legends = _a[_i];\n if (legends.rangeIndex === rangeIndex && legends.axisIndex === axisIndex) {\n text = legends.originalText;\n }\n }\n showTooltip(text, x, y, gauge, 'LegendText');\n }\n else if (elementArray.length > 0 && (elementArray[0].id.indexOf('Title_Tooltip') > -1 ||\n elementArray[0].id.indexOf('Legend_Tooltip') > -1)) {\n removeTooltip();\n }\n if (isTitleTouch) {\n clearTimeout(this.clearTimeout);\n this.clearTimeout = setTimeout(removeTooltip.bind(this), 2000);\n }\n}\n/**\n * @returns {void}\n * @private */\nexport function removeTooltip() {\n if (document.getElementsByClassName('EJ2-CircularGauge-Tooltip').length > 0) {\n document.getElementsByClassName('EJ2-CircularGauge-Tooltip')[0].remove();\n }\n}\n","import { Tooltip } from '@syncfusion/ej2-svg-base';\nimport { stringToNumber, getAngleFromValue, getLocationFromAngle, getPointer, getLabelFormat, Rect } from '../utils/helper-common';\nimport { getMousePosition, getElementSize } from '../utils/helper-tooltip';\nimport { Browser, createElement, isNullOrUndefined, remove, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { tooltipRender } from '../model/constants';\nimport { titleTooltip } from '../utils/helper-legend';\n/**\n * Sets and gets the module that handles the tooltip of the circular gauge\n *\n * @hidden\n */\nvar GaugeTooltip = /** @class */ (function () {\n /**\n * Constructor for Tooltip module.\n *\n * @param {CircularGauge} gauge - Specifies the instance of the gauge.\n * @private.\n */\n function GaugeTooltip(gauge) {\n this.gauge = gauge;\n this.tooltipId = this.gauge.element.id + '_CircularGauge_Tooltip';\n this.tooltip = gauge.tooltip;\n this.addEventListener();\n }\n /**\n * Method to render the tooltip for circular gauge.\n *\n * @param {PointerEvent} e - specifies the event argument.\n * @returns {void}\n *\n * @private\n */\n GaugeTooltip.prototype.renderTooltip = function (e) {\n var _this = this;\n this.gaugeId = this.gauge.element.getAttribute('id');\n var pageX;\n var pageY;\n var target;\n var touchArg;\n var location;\n var samePointerEle = false;\n var isTooltipRender = false;\n if (e.type.indexOf('touch') !== -1) {\n touchArg = e;\n target = touchArg.target;\n pageX = touchArg.changedTouches[0].pageX;\n pageY = touchArg.changedTouches[0].pageY;\n }\n else {\n target = e.target;\n pageX = e.pageX;\n pageY = e.pageY;\n }\n if ((this.tooltip.type.indexOf('Pointer') > -1) && (target.id.indexOf('_Pointer_') >= 0) &&\n (target.id.indexOf(this.gaugeId) >= 0)) {\n if (this.pointerEle !== null) {\n samePointerEle = (this.pointerEle === target);\n }\n isTooltipRender = true;\n var svgRect_1 = this.gauge.svgObject.getBoundingClientRect();\n var elementRect = this.gauge.element.getBoundingClientRect();\n var axisRect_1 = document.getElementById(this.gauge.element.id + '_AxesCollection').getBoundingClientRect();\n var rect_1 = new Rect(Math.abs(elementRect.left - svgRect_1.left), Math.abs(elementRect.top - svgRect_1.top), svgRect_1.width, svgRect_1.height);\n var currentPointer = getPointer(target.id, this.gauge);\n this.currentAxis = this.gauge.axes[currentPointer.axisIndex];\n this.currentPointer = (this.currentAxis.pointers)[currentPointer.pointerIndex];\n var angle_1 = getAngleFromValue(this.currentPointer.currentValue, this.currentAxis.visibleRange.max, this.currentAxis.visibleRange.min, this.currentAxis.startAngle, this.currentAxis.endAngle, this.currentAxis.direction === 'ClockWise') % 360;\n var tooltipFormat = this.gauge.tooltip.format || this.currentAxis.labelStyle.format;\n var customLabelFormat = tooltipFormat && tooltipFormat.match('{value}') !== null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var format = this.gauge.intl.getNumberFormat({\n format: getLabelFormat(tooltipFormat), useGrouping: this.gauge.useGroupingSeparator\n });\n this.tooltipElement();\n if (this.tooltipEle.childElementCount !== 0 && !this.gauge.enablePointerDrag && !this.gauge.tooltip.showAtMousePosition) {\n return null;\n }\n var roundValue = this.roundedValue(this.currentPointer.currentValue);\n var pointerContent = customLabelFormat ?\n tooltipFormat.replace(new RegExp('{value}', 'g'), format(roundValue)) :\n format(roundValue);\n location = getLocationFromAngle(angle_1, this.currentAxis.currentRadius, this.gauge.midPoint);\n location.x = (this.tooltip.template && ((angle_1 >= 150 && angle_1 <= 250) || (angle_1 >= 330 && angle_1 <= 360) ||\n (angle_1 >= 0 && angle_1 <= 45))) ? (location.x + 10) : location.x;\n // eslint-disable-next-line prefer-const\n var tooltipArgs = {\n name: tooltipRender, cancel: false, content: pointerContent, location: location, axis: this.currentAxis,\n tooltip: this.tooltip, pointer: this.currentPointer, event: e, gauge: this.gauge, appendInBodyTag: false, type: 'Pointer'\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var pointerTooltip = function (tooltipArgs) {\n var template = tooltipArgs.tooltip.template;\n if (template !== null && template.length === 1 && typeof template !== 'function') {\n template = template[template[0]];\n }\n if (!tooltipArgs.tooltip.showAtMousePosition) {\n if (template) {\n var elementSize = getElementSize(template, _this.gauge, _this.tooltipEle);\n _this.tooltipRect = Math.abs(axisRect_1.left - svgRect_1.left) > elementSize.width ?\n _this.findPosition(rect_1, angle_1, tooltipArgs.location, true) : rect_1;\n }\n else {\n _this.findPosition(rect_1, angle_1, tooltipArgs.location, false);\n }\n }\n else {\n tooltipArgs.location = getMousePosition(pageX, pageY, _this.gauge.svgObject);\n _this.tooltipRect = rect_1;\n }\n if (!tooltipArgs.cancel && !samePointerEle) {\n var pointerTextStyle = {\n color: tooltipArgs.tooltip.textStyle.color || _this.gauge.themeStyle.tooltipFontColor,\n opacity: tooltipArgs.tooltip.textStyle.opacity || _this.gauge.themeStyle.tooltipTextOpacity,\n fontFamily: tooltipArgs.tooltip.textStyle.fontFamily || _this.gauge.themeStyle.fontFamily,\n fontWeight: tooltipArgs.tooltip.textStyle.fontWeight || _this.gauge.themeStyle.fontWeight,\n fontStyle: tooltipArgs.tooltip.textStyle.fontStyle,\n size: tooltipArgs.tooltip.textStyle.size || _this.gauge.themeStyle.tooltipFontSize\n };\n _this.svgTooltip = _this.svgTooltipCreate(_this.svgTooltip, tooltipArgs, template, _this.arrowInverted, _this.tooltipRect, _this.gauge, tooltipArgs.tooltip.fill, pointerTextStyle, tooltipArgs.tooltip.border);\n _this.svgTooltip.opacity = _this.gauge.themeStyle.tooltipFillOpacity || _this.svgTooltip.opacity;\n _this.svgTooltip.appendTo(_this.tooltipEle);\n if (template && (_this.tooltipPosition === 'LeftTop' || _this.tooltipPosition === 'LeftBottom')) {\n _this.tooltipEle.style.left = (parseFloat(_this.tooltipEle.style.left) - _this.tooltipEle.getBoundingClientRect().width - 20) + 'px';\n }\n if (template && Math.abs(pageY - _this.tooltipEle.getBoundingClientRect().top) <= 0) {\n _this.tooltipEle.style.top = (parseFloat(_this.tooltipEle.style.top) + 20) + 'px';\n }\n }\n };\n this.gauge.trigger(tooltipRender, tooltipArgs, pointerTooltip);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.gauge.renderReactTemplates();\n }\n else if ((this.tooltip.type.indexOf('Range') > -1) && (target.id.indexOf('_Range_') >= 0) && (!this.gauge.isDrag) &&\n (target.id.indexOf(this.gaugeId) >= 0)) {\n isTooltipRender = true;\n var rangeSvgRect_1 = this.gauge.svgObject.getBoundingClientRect();\n var rangeElementRect = this.gauge.element.getBoundingClientRect();\n var rangeAxisRect_1 = document.getElementById(this.gauge.element.id + '_AxesCollection').getBoundingClientRect();\n var rect_2 = new Rect(Math.abs(rangeElementRect.left - rangeSvgRect_1.left), Math.abs(rangeElementRect.top - rangeSvgRect_1.top), rangeSvgRect_1.width, rangeSvgRect_1.height);\n var currentRange = getPointer(target.id, this.gauge);\n this.currentAxis = this.gauge.axes[currentRange.axisIndex];\n this.currentRange = (this.currentAxis.ranges)[currentRange.pointerIndex];\n var rangeAngle_1 = getAngleFromValue((this.currentRange.end - Math.abs((this.currentRange.end - this.currentRange.start) / 2)), this.currentAxis.visibleRange.max, this.currentAxis.visibleRange.min, this.currentAxis.startAngle, this.currentAxis.endAngle, this.currentAxis.direction === 'ClockWise') % 360;\n var rangeTooltipFormat = this.gauge.tooltip.rangeSettings.format || this.currentAxis.labelStyle.format;\n var customLabelFormat = rangeTooltipFormat && (rangeTooltipFormat.match('{end}') !== null ||\n rangeTooltipFormat.match('{start}') !== null);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var rangeFormat = this.gauge.intl.getNumberFormat({\n format: getLabelFormat(rangeTooltipFormat), useGrouping: this.gauge.useGroupingSeparator\n });\n this.tooltipElement();\n var roundStartValue = this.roundedValue(this.currentRange.start);\n var roundEndValue = this.roundedValue(this.currentRange.end);\n var startData_1 = (this.currentRange.start).toString();\n var endData_1 = (this.currentRange.end).toString();\n var rangeContent = customLabelFormat ?\n rangeTooltipFormat.replace(/{start}/g, startData_1).replace(/{end}/g, endData_1) : this.gauge.enableRtl ? 'Start:' + rangeFormat(roundStartValue) + '
End:' + rangeFormat(roundEndValue) + ' ' :\n 'Start : ' + rangeFormat(roundStartValue) + '
' + 'End : ' + rangeFormat(roundEndValue);\n location = getLocationFromAngle(rangeAngle_1, this.currentRange.currentRadius, this.gauge.midPoint);\n location.x = (this.tooltip.rangeSettings.template && ((rangeAngle_1 >= 150 && rangeAngle_1 <= 250) ||\n (rangeAngle_1 >= 330 && rangeAngle_1 <= 360) ||\n (rangeAngle_1 >= 0 && rangeAngle_1 <= 45))) ? (location.x + 10) : location.x;\n // eslint-disable-next-line prefer-const\n var rangeTooltipArgs = {\n name: tooltipRender, cancel: false, content: rangeContent, location: location, axis: this.currentAxis,\n tooltip: this.tooltip, range: this.currentRange, event: e, gauge: this.gauge, appendInBodyTag: false, type: 'Range'\n };\n var rangeTooltipTextStyle_1 = { color: this.gauge.tooltip.rangeSettings.textStyle.color, opacity: this.gauge.tooltip.rangeSettings.textStyle.opacity,\n fontFamily: this.gauge.tooltip.rangeSettings.textStyle.fontFamily, fontStyle: this.gauge.tooltip.rangeSettings.textStyle.fontStyle,\n fontWeight: this.gauge.tooltip.rangeSettings.textStyle.fontWeight, size: this.gauge.tooltip.rangeSettings.textStyle.size\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var rangeTooltip = function (rangeTooltipArgs) {\n var rangeTemplate = rangeTooltipArgs.tooltip.rangeSettings.template;\n if (rangeTemplate !== null && rangeTemplate.length === 1 && typeof rangeTemplate !== 'function') {\n rangeTemplate = rangeTemplate[rangeTemplate[0]];\n }\n if (typeof rangeTemplate !== 'function' && rangeTemplate) {\n rangeTemplate = rangeTemplate.replace(/[$]{start}/g, startData_1);\n rangeTemplate = rangeTemplate.replace(/[$]{end}/g, endData_1);\n }\n if (!_this.tooltip.rangeSettings.showAtMousePosition) {\n if (rangeTemplate) {\n var elementSize = getElementSize(rangeTemplate, _this.gauge, _this.tooltipEle);\n _this.tooltipRect = Math.abs(rangeAxisRect_1.left - rangeSvgRect_1.left) > elementSize.width ?\n _this.findPosition(rect_2, rangeAngle_1, rangeTooltipArgs.location, true) : rect_2;\n }\n else {\n _this.findPosition(rect_2, rangeAngle_1, rangeTooltipArgs.location, false);\n }\n }\n else {\n rangeTooltipArgs.location = getMousePosition(pageX, pageY, _this.gauge.svgObject);\n _this.tooltipRect = rect_2;\n }\n if (!rangeTooltipArgs.cancel) {\n rangeTooltipTextStyle_1.color = rangeTooltipArgs.tooltip.rangeSettings.textStyle.color ||\n _this.gauge.themeStyle.tooltipFontColor;\n rangeTooltipTextStyle_1.fontFamily = rangeTooltipArgs.tooltip.rangeSettings.textStyle.fontFamily\n || _this.gauge.themeStyle.fontFamily;\n rangeTooltipTextStyle_1.fontWeight = rangeTooltipArgs.tooltip.rangeSettings.textStyle.fontWeight\n || _this.gauge.themeStyle.fontWeight;\n rangeTooltipTextStyle_1.opacity = rangeTooltipArgs.tooltip.rangeSettings.textStyle.opacity ||\n _this.gauge.themeStyle.tooltipTextOpacity;\n rangeTooltipTextStyle_1.size = rangeTooltipArgs.tooltip.rangeSettings.textStyle.size\n || _this.gauge.themeStyle.tooltipFontSize;\n _this.svgTooltip = _this.svgTooltipCreate(_this.svgTooltip, rangeTooltipArgs, rangeTemplate, _this.arrowInverted, _this.tooltipRect, _this.gauge, rangeTooltipArgs.tooltip.rangeSettings.fill, rangeTooltipTextStyle_1, rangeTooltipArgs.tooltip.rangeSettings.border);\n _this.svgTooltip.opacity = _this.gauge.themeStyle.tooltipFillOpacity || _this.svgTooltip.opacity;\n _this.svgTooltip.appendTo(_this.tooltipEle);\n if (rangeTemplate && (_this.tooltipPosition === 'LeftTop' || _this.tooltipPosition === 'LeftBottom')) {\n _this.tooltipEle.style.left = (parseFloat(_this.tooltipEle.style.left) - _this.tooltipEle.getBoundingClientRect().width - 20) + 'px';\n }\n if (rangeTemplate && Math.abs(pageY - _this.tooltipEle.getBoundingClientRect().top) <= 0) {\n _this.tooltipEle.style.top = (parseFloat(_this.tooltipEle.style.top) + 20) + 'px';\n }\n }\n };\n this.gauge.trigger(tooltipRender, rangeTooltipArgs, rangeTooltip);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.gauge.renderReactTemplates();\n }\n else if ((this.tooltip.type.indexOf('Annotation') > -1) && this.checkParentAnnotationId(target) && ((!this.gauge.isDrag)) &&\n (this.annotationTargetElement.id.indexOf(this.gaugeId) >= 0)) {\n isTooltipRender = true;\n var annotationSvgRect = this.gauge.svgObject.getBoundingClientRect();\n var annotationElementRect = this.gauge.element.getBoundingClientRect();\n var rect_3 = new Rect(Math.abs(annotationElementRect.left - annotationSvgRect.left), Math.abs(annotationElementRect.top - annotationSvgRect.top), annotationSvgRect.width, annotationSvgRect.height);\n var currentAnnotation = getPointer(this.annotationTargetElement.id, this.gauge);\n this.currentAxis = this.gauge.axes[currentAnnotation.axisIndex];\n this.currentAnnotation = (this.currentAxis.annotations)[currentAnnotation.pointerIndex];\n var annotationAngle = (this.currentAnnotation.angle - 90);\n this.tooltipElement();\n document.getElementById(this.gauge.element.id + '_Secondary_Element').appendChild(this.tooltipEle);\n var annotationContent = (this.gauge.tooltip.annotationSettings.format !== null) ?\n this.gauge.tooltip.annotationSettings.format : '';\n location = getLocationFromAngle(annotationAngle, stringToNumber(this.currentAnnotation.radius, this.currentAxis.currentRadius), this.gauge.midPoint);\n location.x = (this.tooltip.annotationSettings.template && ((annotationAngle >= 150 && annotationAngle <= 250) ||\n (annotationAngle >= 330 && annotationAngle <= 360) || (annotationAngle >= 0 && annotationAngle <= 45))) ?\n (location.x + 10) : location.x;\n // eslint-disable-next-line prefer-const\n var annotationTooltipArgs = {\n name: tooltipRender, cancel: false, content: annotationContent, location: location, axis: this.currentAxis,\n tooltip: this.tooltip, annotation: this.currentAnnotation, event: e, gauge: this.gauge, appendInBodyTag: false,\n type: 'Annotation'\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var annotationTooltip = function (annotationTooltipArgs) {\n var annotationTemplate = annotationTooltipArgs.tooltip.annotationSettings.template;\n if (annotationTemplate !== null && annotationTemplate.length === 1 && typeof annotationTemplate !== 'function') {\n annotationTemplate = annotationTemplate[annotationTemplate[0]];\n }\n var elementSizeAn = _this.annotationTargetElement.getBoundingClientRect();\n _this.tooltipPosition = 'RightTop';\n _this.arrowInverted = true;\n annotationTooltipArgs.location.x = annotationTooltipArgs.location.x + (elementSizeAn.width / 2);\n _this.tooltipRect = new Rect(rect_3.x, rect_3.y, rect_3.width, rect_3.height);\n if (!annotationTooltipArgs.cancel && (_this.gauge.tooltip.annotationSettings.format !== null ||\n _this.gauge.tooltip.annotationSettings.template !== null)) {\n var annotationTextStyle = {\n color: annotationTooltipArgs.tooltip.textStyle.color || _this.gauge.themeStyle.tooltipFontColor,\n fontFamily: annotationTooltipArgs.tooltip.textStyle.fontFamily || _this.gauge.themeStyle.fontFamily,\n fontWeight: annotationTooltipArgs.tooltip.textStyle.fontWeight || _this.gauge.themeStyle.fontWeight,\n opacity: annotationTooltipArgs.tooltip.textStyle.opacity || _this.gauge.themeStyle.tooltipTextOpacity,\n fontStyle: annotationTooltipArgs.tooltip.textStyle.fontStyle,\n size: annotationTooltipArgs.tooltip.textStyle.size || _this.gauge.themeStyle.tooltipFontSize\n };\n _this.svgTooltip = _this.svgTooltipCreate(_this.svgTooltip, annotationTooltipArgs, annotationTemplate, _this.arrowInverted, _this.tooltipRect, _this.gauge, annotationTooltipArgs.tooltip.annotationSettings.fill, annotationTextStyle, annotationTooltipArgs.tooltip.annotationSettings.border);\n _this.svgTooltip.opacity = _this.gauge.themeStyle.tooltipFillOpacity || _this.svgTooltip.opacity;\n _this.svgTooltip.appendTo(_this.tooltipEle);\n if (annotationTemplate && Math.abs(pageY - _this.tooltipEle.getBoundingClientRect().top) <= 0) {\n _this.tooltipEle.style.top = (parseFloat(_this.tooltipEle.style.top) + 20) + 'px';\n }\n }\n };\n this.gauge.trigger(tooltipRender, annotationTooltipArgs, annotationTooltip);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.gauge.renderReactTemplates();\n }\n else if ((target.id === (this.gauge.element.id + '_CircularGaugeTitle') || target.id.indexOf('_gauge_legend_') > -1) &&\n (e.target.textContent.indexOf('...') > -1)) {\n titleTooltip(e, pageX, pageY, this.gauge, false);\n }\n else {\n var isTooltipRemoved = this.removeTooltip();\n if (isTooltipRemoved) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((this.gauge.isVue || this.gauge.isVue3)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.gauge.clearTemplate([this.tooltipEle.children[0].id], [0]);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n }\n else if (!this.gauge.isAngular) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.gauge.clearTemplate();\n }\n }\n }\n var gaugeElement = document.getElementById(this.gaugeId);\n var gaugeRect = gaugeElement.getBoundingClientRect();\n var tooltipRect = isTooltipRender ? this.tooltipEle.getBoundingClientRect() : null;\n if (isTooltipRender && this.tooltipEle.offsetLeft < 0 && (tooltipRect.left - gaugeRect.left) < 0) {\n var tooltipLeft = this.tooltipEle.style.left.split('px')[0];\n this.tooltipEle.style.left = parseInt(tooltipLeft, 10) + (gaugeRect.left - tooltipRect.left) + 'px';\n }\n if (isTooltipRender && tooltipRect.top < 0) {\n this.tooltipEle.style.top = 0 + 'px';\n }\n };\n /**\n * Method to create tooltip svg element.\n *\n * @param {Tooltip} svgTooltip - Specifies the tooltip element.\n * @param {ITooltipRenderEventArgs} tooltipArg - Specifies the tooltip arguments.\n * @param {string} template - Specifies the tooltip template.\n * @param {boolean} arrowInverted - Specifies the boolean value.\n * @param {Rect} tooltipRect - Specifies the rect element.\n * @param {CircularGauge} gauge - Specifies the gauge instance.\n * @param {string} fill - Spcifies the fill color of the tooltip.\n * @param {FontModel} textStyle - Spcifies the text style of the tooltip.\n * @param {BorderModel} border - Specifies the border of the tooltip.\n * @returns {Tooltip} - Returns the tooltip.\n */\n GaugeTooltip.prototype.svgTooltipCreate = function (svgTooltip, tooltipArg, template, arrowInverted, tooltipRect, gauge, fill, textStyle, border) {\n var borderObject = {\n color: border.color || this.gauge.themeStyle.tooltipBorderColor || '', width: border.width, dashArray: border.dashArray\n };\n svgTooltip = new Tooltip({\n theme: gauge.theme,\n enable: true,\n data: { value: tooltipArg.content },\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n template: template,\n enableRTL: gauge.enableRtl,\n enableAnimation: tooltipArg.tooltip.enableAnimation,\n content: [SanitizeHtmlHelper.sanitize(tooltipArg.content)],\n location: tooltipArg.location,\n inverted: arrowInverted,\n areaBounds: tooltipRect,\n fill: fill || gauge.themeStyle.tooltipFillColor,\n textStyle: textStyle,\n availableSize: gauge.availableSize,\n border: borderObject,\n enableShadow: true\n });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((gauge.isVue || gauge.isVue3)) {\n svgTooltip.controlInstance = gauge;\n }\n return svgTooltip;\n };\n /**\n * Method to create or modify tolltip element.\n *\n * @returns {void}\n */\n GaugeTooltip.prototype.tooltipElement = function () {\n if (document.getElementById(this.tooltipId)) {\n this.tooltipEle = document.getElementById(this.tooltipId);\n }\n else {\n this.tooltipEle = createElement('div', {\n id: this.tooltipId,\n className: 'EJ2-CircularGauge-Tooltip'\n });\n this.tooltipEle.style.cssText = 'position: absolute;pointer-events:none;';\n document.getElementById(this.gauge.element.id + '_Secondary_Element').appendChild(this.tooltipEle);\n }\n };\n /**\n * Method to get parent annotation element.\n *\n * @param {Element} child - Specifies the annotation element.\n * @returns {boolean} - Returns the boolean value.\n */\n GaugeTooltip.prototype.checkParentAnnotationId = function (child) {\n this.annotationTargetElement = child.parentElement;\n while (this.annotationTargetElement != null) {\n if ((this.annotationTargetElement.id.indexOf('_Annotation_') >= 0)) {\n child = this.annotationTargetElement;\n return true;\n }\n this.annotationTargetElement = this.annotationTargetElement.parentElement;\n }\n return false;\n };\n /**\n * Method to apply label rounding places.\n *\n * @param {number} currentValue - Specifies the current value.\n * @returns {number} - Returns the round number.\n */\n GaugeTooltip.prototype.roundedValue = function (currentValue) {\n var roundNumber = this.currentAxis.roundingPlaces ?\n parseFloat(currentValue.toFixed(this.currentAxis.roundingPlaces)) :\n currentValue;\n return roundNumber;\n };\n /**\n * Method to find the position of the tooltip anchor for circular gauge.\n *\n * @param {Rect} rect - Specifies the rect element.\n * @param {number} angle - Specifies the angle.\n * @param {GaugeLocation} location - Specifies the location.\n * @param {boolean} isTemplate - whether it is template or not .\n * @returns {Rect} - Returns the rect element.\n */\n GaugeTooltip.prototype.findPosition = function (rect, angle, location, isTemplate) {\n var addLeft;\n var addTop;\n var addHeight;\n var addWidth;\n var padding = 10;\n switch (true) {\n case (angle >= 0 && angle < 45):\n this.arrowInverted = true;\n addLeft = (angle >= 15 && angle <= 30) ? location.y : 0;\n this.tooltipRect = new Rect(rect.x, rect.y + addTop, rect.width, rect.height);\n this.tooltipPosition = 'RightBottom';\n break;\n case (angle >= 45 && angle < 90):\n this.arrowInverted = false;\n this.tooltipRect = new Rect(rect.x, rect.y + location.y, rect.width, rect.height);\n this.tooltipPosition = 'BottomRight';\n break;\n case (angle >= 90 && angle < 135):\n this.arrowInverted = false;\n this.tooltipRect = new Rect(rect.x, rect.y + location.y, rect.width, rect.height);\n this.tooltipPosition = 'BottomLeft';\n break;\n case (angle >= 135 && angle < 180):\n this.arrowInverted = isTemplate ? true : isTemplate;\n addTop = (angle >= 150 && angle <= 160 && isTemplate) ? location.y : 0;\n this.tooltipRect = new Rect(rect.x, rect.y + addTop, rect.width, rect.height);\n this.tooltipPosition = 'LeftBottom';\n break;\n case (angle >= 180 && angle < 225):\n this.arrowInverted = true;\n addHeight = (angle >= 200 && angle <= 225) ? Math.abs(rect.y - location.y) : rect.height;\n this.tooltipRect = new Rect(rect.x - location.x, rect.y, rect.width, addHeight);\n this.tooltipPosition = 'LeftTop';\n break;\n case (angle >= 225 && angle < 270):\n this.arrowInverted = false;\n addWidth = (angle >= 250 && angle <= 290) ? rect.width : Math.abs(rect.x - location.x);\n this.tooltipRect = new Rect(rect.x + padding, rect.y, addWidth, rect.height);\n this.tooltipPosition = 'TopLeft';\n break;\n case (angle >= 270 && angle < 315):\n this.arrowInverted = false;\n addLeft = (angle >= 270 && angle > 290) ? location.x - padding : 0;\n this.tooltipRect = new Rect(rect.x + addLeft, rect.y, rect.width, rect.height);\n this.tooltipPosition = 'TopRight';\n break;\n case (angle >= 315 && angle <= 360):\n this.arrowInverted = true;\n addHeight = (angle >= 315 && angle <= 340) ? Math.abs(rect.y - location.y) : rect.height;\n this.tooltipRect = new Rect(rect.x, rect.y, rect.width, addHeight);\n this.tooltipPosition = 'RightTop';\n break;\n }\n return this.tooltipRect;\n };\n GaugeTooltip.prototype.removeTooltip = function () {\n var isTooltipRemoved = false;\n if (document.getElementsByClassName('EJ2-CircularGauge-Tooltip').length > 0) {\n var tooltip = document.getElementsByClassName('EJ2-CircularGauge-Tooltip')[0];\n if (tooltip) {\n remove(tooltip);\n isTooltipRemoved = true;\n }\n this.pointerEle = null;\n }\n return isTooltipRemoved;\n };\n GaugeTooltip.prototype.mouseUpHandler = function (e) {\n this.removeTooltip();\n this.renderTooltip(e);\n clearTimeout(this.clearTimeout);\n this.clearTimeout = setTimeout(this.removeTooltip.bind(this), 2000);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To bind events for tooltip module\n *\n * @private\n */\n GaugeTooltip.prototype.addEventListener = function () {\n if (this.gauge.isDestroyed) {\n return;\n }\n this.gauge.on(Browser.touchMoveEvent, this.renderTooltip, this);\n this.gauge.on(Browser.touchEndEvent, this.mouseUpHandler, this);\n this.gauge.element.addEventListener('contextmenu', this.removeTooltip);\n };\n // eslint-disable-next-line valid-jsdoc\n /**\n * To unbind events for tooltip module\n *\n * @private\n */\n GaugeTooltip.prototype.removeEventListener = function () {\n if (this.gauge) {\n if (this.gauge.isDestroyed) {\n return;\n }\n this.gauge.off(Browser.touchMoveEvent, this.renderTooltip);\n this.gauge.off(Browser.touchEndEvent, this.mouseUpHandler);\n this.gauge.element.removeEventListener('contextmenu', this.removeTooltip);\n }\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name\n */\n GaugeTooltip.prototype.getModuleName = function () {\n // Returns te module name\n return 'Tooltip';\n };\n /**\n * To destroy the tooltip.\n *\n * @returns {void}\n * @private\n */\n GaugeTooltip.prototype.destroy = function () {\n this.tooltipEle = null;\n this.currentAxis = null;\n this.tooltip = null;\n this.currentPointer = null;\n this.currentRange = null;\n this.currentAnnotation = null;\n if (!isNullOrUndefined(this.svgTooltip)) {\n this.svgTooltip.destroy();\n }\n this.svgTooltip = null;\n this.tooltipRect = null;\n this.pointerEle = null;\n this.annotationTargetElement = null;\n this.gauge = null;\n };\n return GaugeTooltip;\n}());\nexport { GaugeTooltip };\n","/**\n * Specifies Circular-Gauge axis-render Helper methods\n */\n/**\n * Function to get range color from value for circular gauge.\n *\n * @param {number} value - Specifies the value.\n * @param {Range[]} ranges - Specifies the ranges.\n * @param {string} color - Specifies the color.\n * @returns {string} - Returns the color.\n * @private\n */\nexport function getRangeColor(value, ranges, color) {\n var min = 0;\n var max = 0;\n var currentRange = ranges.filter(function (range) {\n min = Math.min(range.start, range.end);\n max = Math.max(range.start, range.end);\n return (value >= min && max >= value);\n });\n return currentRange.length ? currentRange[0].rangeColor : color;\n}\n","import { stringToNumber, toPixel, textElement, appendPath, getAngleFromValue, getLocationFromAngle, getPathArc, getRoundedPathArc, getDegree, isCompleteAngle, PathOption, TextOption } from '../utils/helper-common';\nimport { getRangeColor } from '../utils/helper-axis-renderer';\nimport { getRangePalette } from '../model/theme';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Specifies the Axis rendering for circular gauge\n */\nvar AxisRenderer = /** @class */ (function () {\n /**\n * Constructor for axis renderer.\n *\n * @param {CircularGauge} gauge - Specifies the instance of the gauge\n * @private.\n */\n function AxisRenderer(gauge) {\n this.gauge = gauge;\n }\n /**\n * Method to render the axis element of the circular gauge.\n *\n * @param {Axis} axis - Specifies the axis.\n * @param {number} index - Specifies the index.\n * @param {Element} element - Specifies the element.\n * @param {CircularGauge} gauge - Specifies the gauge.\n * @returns {void}\n * @private\n */\n AxisRenderer.prototype.drawAxisOuterLine = function (axis, index, element, gauge) {\n var background = axis.background;\n this.setRangeColor(axis);\n if (background !== null) {\n appendPath(new PathOption(gauge.element.id + '_AxisOuterLine_' + index, background, 0, 'transparent', null, '0', getPathArc(gauge.midPoint, 0, 360, (Math.min(axis.rect.width, axis.rect.height) / 2)), '', 'pointer-events:none;'), element, gauge);\n }\n };\n /**\n * Method to check the angles.\n *\n * @param {Axis} axis - Specifies the axis.\n * @returns {void}\n * @private\n */\n AxisRenderer.prototype.checkAngles = function (axis) {\n axis.startAngle = axis.startAngle >= 360 ? 360 : axis.startAngle <= -360 ? -360 : axis.startAngle;\n axis.endAngle = axis.endAngle >= 360 ? 360 : axis.endAngle <= -360 ? -360 : axis.endAngle;\n };\n /**\n * Method to render the axis line of the circular gauge.\n *\n * @param {Axis} axis - Specifies the axis.\n * @param {number} index - Specifies the index.\n * @param {Element} element - Specifies the element.\n * @param {CircularGauge} gauge - Specifies the gauge.\n * @returns {void}\n * @private\n */\n AxisRenderer.prototype.drawAxisLine = function (axis, index, element, gauge) {\n var startAngle = axis.startAngle;\n var endAngle = axis.endAngle;\n var color = axis.lineStyle.color || this.gauge.themeStyle.lineColor;\n if (axis.lineStyle.width > 0 && this.gauge.allowComponentRender) {\n startAngle = !isCompleteAngle(startAngle, endAngle) ? startAngle : [0, endAngle = 360][0];\n appendPath(new PathOption(gauge.element.id + '_AxisLine_' + index, 'transparent', axis.lineStyle.width, color, null, axis.lineStyle.dashArray, getPathArc(gauge.midPoint, startAngle - 90, endAngle - 90, axis.currentRadius), '', gauge.allowLoadingAnimation ? 'visibility: hidden; pointer-events:none;' : 'pointer-events:none;'), element, gauge);\n }\n };\n /**\n * Method to render the axis labels of the circular gauge.\n *\n * @param {Axis} axis - Specifies the axis.\n * @param {number} index - Specifies the index.\n * @param {Element} element - Specifies the element.\n * @param {CircularGauge} gauge - Specifies the gauge.\n * @returns {void}\n * @private\n */\n AxisRenderer.prototype.drawAxisLabels = function (axis, index, element, gauge) {\n var labelElement = gauge.renderer.createGroup({\n id: gauge.element.id + '_Axis_Labels_' + index, style: gauge.allowLoadingAnimation ? 'visibility: hidden;' : 'pointer-events:none;'\n });\n var min = axis.visibleRange.min;\n var max = axis.visibleRange.max;\n var labelCollection = axis.visibleLabels;\n var location;\n var textWidth;\n var textHeight;\n var labelsVisible = true;\n var currentTextWidth;\n var currentTextHeight;\n var previousLocation;\n var currentLocation;\n var lastLabelLocation;\n var lastLabelAngle;\n var lastLabelAnchor;\n var lastTextWidth;\n var lastTextHeight;\n var style = axis.labelStyle;\n var anchor;\n var angle;\n var label;\n var radius = axis.currentRadius;\n var checkLabelOpposed = 0;\n checkLabelOpposed = (style.position === 'Inside' && axis.majorTicks.position === 'Outside' &&\n axis.minorTicks.position === 'Outside') || (style.position === 'Outside' &&\n axis.minorTicks.position === 'Inside' && axis.majorTicks.position === 'Inside') ?\n axis.lineStyle.width + axis.currentRadius / 20 :\n (style.position === axis.majorTicks.position ? axis.currentRadius / 20 : axis.currentRadius / 40);\n var labelPadding = axis.labelStyle.shouldMaintainPadding ? 10 : checkLabelOpposed;\n var color = style.font.color || this.gauge.themeStyle.labelColor;\n if (style.position === 'Outside') {\n radius += (axis.nearSize - (axis.maxLabelSize.height + axis.lineStyle.width / 2)) + (labelPadding / 2);\n }\n else if (style.position === 'Cross') {\n radius = radius - (axis.maxLabelSize.height / 4) - axis.labelStyle.offset;\n }\n else {\n radius -= (axis.farSize - (axis.maxLabelSize.height + axis.lineStyle.width / 2) + (style.autoAngle ? labelPadding : 0));\n }\n //To get and store lastlabelposition\n if (axis.hideIntersectingLabel) {\n lastLabelAngle = Math.round(getAngleFromValue(labelCollection[labelCollection.length - 1].value, max, min, axis.startAngle, axis.endAngle, axis.direction === 'ClockWise'));\n lastLabelLocation = getLocationFromAngle(lastLabelAngle, radius, gauge.midPoint);\n lastLabelAnchor = this.findAnchor(lastLabelLocation, style, lastLabelAngle, labelCollection[labelCollection.length - 1]);\n lastTextWidth = (!axis.showLastLabel && (isCompleteAngle(axis.startAngle, axis.endAngle)) && (style.hiddenLabel !== 'First')) ?\n labelCollection[0].size.width : labelCollection[labelCollection.length - 1].size.width;\n lastTextHeight = (!axis.showLastLabel && (isCompleteAngle(axis.startAngle, axis.endAngle)) && (style.hiddenLabel !== 'First')) ?\n (!style.autoAngle ? labelCollection[0].size.height : labelCollection[0].size.width) :\n (!style.autoAngle ? labelCollection[labelCollection.length - 1].size.height :\n labelCollection[labelCollection.length - 1].size.width);\n lastTextHeight = lastTextHeight - this.offsetAxisLabelsize(lastLabelAngle, lastTextHeight);\n lastLabelLocation = this.getAxisLabelStartPosition(lastLabelLocation, lastTextWidth, lastLabelAnchor);\n }\n for (var i = 0, length_1 = labelCollection.length; i < length_1; i++) {\n label = labelCollection[i];\n angle = Math.round(getAngleFromValue(label.value, max, min, axis.startAngle, axis.endAngle, axis.direction === 'ClockWise'));\n location = getLocationFromAngle(angle, radius, gauge.midPoint);\n anchor = this.findAnchor(location, style, angle, label);\n //To get the current label and previous label position for initial stage\n if (axis.hideIntersectingLabel) {\n currentLocation = getLocationFromAngle(angle, radius, gauge.midPoint);\n currentTextWidth = label.size.width;\n currentTextHeight = !style.autoAngle ? label.size.height : currentTextWidth;\n currentTextHeight = currentTextHeight - this.offsetAxisLabelsize(angle, currentTextHeight);\n currentLocation = this.getAxisLabelStartPosition(currentLocation, currentTextWidth, anchor);\n if (i === 0) {\n previousLocation = getLocationFromAngle(angle, radius, gauge.midPoint);\n textWidth = label.size.width;\n textHeight = !style.autoAngle ? label.size.height : textWidth;\n textHeight = textHeight - this.offsetAxisLabelsize(angle, textHeight);\n previousLocation = this.getAxisLabelStartPosition(previousLocation, textWidth, anchor);\n }\n }\n if ((i === 0 && style.hiddenLabel === 'First') || (i === (length_1 - 1) && style.hiddenLabel === 'Last')) {\n continue;\n }\n var textFont = {\n size: style.font.size,\n color: style.font.color,\n fontFamily: style.font.fontFamily || this.gauge.themeStyle.labelFontFamily,\n fontWeight: style.font.fontWeight || this.gauge.themeStyle.fontWeight,\n fontStyle: style.font.fontStyle,\n opacity: style.font.opacity\n };\n if (axis.hideIntersectingLabel && (i !== 0)) {\n //To remove the labels which is intersecting with last label.\n var lastlabel = ((i !== (labelCollection.length - 1)) && ((isCompleteAngle(axis.startAngle, axis.endAngle) ||\n axis.showLastLabel))) ? this.FindAxisLabelCollision(lastLabelLocation, lastTextWidth, lastTextHeight, currentLocation, currentTextWidth, currentTextHeight) : true;\n //Checking wether the axis label is intersecting with previous label or not.\n labelsVisible = (this.FindAxisLabelCollision(previousLocation, textWidth, textHeight, currentLocation, currentTextWidth, currentTextHeight) && lastlabel);\n }\n else {\n labelsVisible = true;\n }\n if (labelsVisible || (i === labelCollection.length - 1)) {\n //To hide first and last label based on requirement\n label.text = (!axis.showLastLabel && ((isCompleteAngle(axis.startAngle, axis.endAngle) && style.hiddenLabel !== 'First') ||\n !labelsVisible)\n && axis.hideIntersectingLabel && (i === (length_1 - 1))) ? '' : label.text;\n label.text = (axis.showLastLabel && axis.hideIntersectingLabel && isCompleteAngle(axis.startAngle, axis.endAngle)\n && (i === 0)) ? '' : label.text;\n var labelTextElement = textElement(new TextOption(gauge.element.id + '_Axis_' + index + '_Label_' + i, location.x, location.y, anchor, label.text, style.autoAngle ? 'rotate(' + (angle + 90) + ',' + (location.x) + ',' + location.y + ')' : '', 'auto'), textFont, style.useRangeColor ? getRangeColor(label.value, axis.ranges, color) : color, labelElement, 'pointer-events:none;');\n labelTextElement.setAttribute('aria-label', label.text);\n labelTextElement.setAttribute('role', 'region');\n if (axis.hideIntersectingLabel) {\n textWidth = label.size.width;\n textHeight = !style.autoAngle ? label.size.height : textWidth;\n textHeight = textHeight - this.offsetAxisLabelsize(angle, textHeight);\n previousLocation.x = currentLocation.x;\n previousLocation.y = currentLocation.y;\n }\n }\n }\n element.appendChild(labelElement);\n };\n /**\n * Method to find the anchor of the axis label.\n *\n * @param {GaugeLocation} location - Specifies the location.\n * @param {Label} style - Specifies the label style.\n * @param {number} angle - Specifies the angle.\n * @param {VisibleLabels} label - Specifies the labels.\n * @returns {string} - Returns the anchor.\n * @private\n */\n AxisRenderer.prototype.findAnchor = function (location, style, angle, label) {\n if (style.autoAngle) {\n return 'middle';\n }\n var anchor = style.position === 'Inside' ?\n ((angle > 120 && angle < 240) ? 'start' : ((300 < angle || angle < 60) ? 'end' : 'middle')) :\n ((angle > 120 && angle < 240) ? 'end' : ((300 < angle || angle < 60) ? 'start' : 'middle'));\n location.y += style.position === 'Inside' ?\n ((angle >= 240 && angle <= 300) ? (label.size.height / 2) :\n (angle >= 60 && angle <= 120) ? 0 : label.size.height / 4) :\n ((angle >= 240 && angle <= 300) ? 0 :\n (angle >= 60 && angle <= 120) ? label.size.height / 2 : label.size.height / 4);\n return anchor;\n };\n /**\n * Methode to check whether the labels are intersecting or not.\n *\n * @param {GaugeLocation} previousLocation - Specifies the previous location.\n * @param {number} previousWidth - Specifies the previous width.\n * @param {number} previousHeight - Specifies the previous height.\n * @param {GaugeLocation} currentLocation - Specifies the current location.\n * @param {number} currentWidth - Specifies the current width.\n * @param {number} currentHeight - Specifies the current height.\n * @returns {boolean} - Returns the boolean value.\n * @private\n */\n AxisRenderer.prototype.FindAxisLabelCollision = function (previousLocation, previousWidth, previousHeight, currentLocation, currentWidth, currentHeight) {\n var labelVisisble = ((previousLocation.x > (currentLocation.x + (currentWidth))) ||\n ((previousLocation.x + (previousWidth)) < (currentLocation.x)) ||\n ((previousLocation.y + (previousHeight)) < (currentLocation.y)) ||\n ((previousLocation.y) > (currentLocation.y + (currentHeight))));\n return labelVisisble;\n };\n /**\n * Methode to get anchor position of label as start.\n *\n * @param {GaugeLocation} actualLocation - Specifies the actual location.\n * @param {number} textWidth - Specifies the text width.\n * @param {string} anchorPosition - Specifies the anchor position.\n * @returns {GaugeLocation} - Returns the gauge location.\n * @private\n */\n AxisRenderer.prototype.getAxisLabelStartPosition = function (actualLocation, textWidth, anchorPosition) {\n if (anchorPosition === 'end') {\n actualLocation.x = actualLocation.x - textWidth;\n }\n else if (anchorPosition === 'middle') {\n actualLocation.x = actualLocation.x - (textWidth / 2);\n }\n return actualLocation;\n };\n /**\n * Methode to offset label height and width based on angle.\n *\n * @param {number} angle - Specifies the angle.\n * @param {number} size - Specifies the size.\n * @returns {number} - Returns the fineal size.\n * @private\n */\n AxisRenderer.prototype.offsetAxisLabelsize = function (angle, size) {\n var finalSize = ((angle >= 20 && angle <= 60) || (angle >= 120 && angle <= 160) || (angle >= 200 && angle <= 240) ||\n (angle >= 300 && angle <= 340)) ? size / 5 : 0;\n return finalSize;\n };\n /**\n * Method to render the axis minor tick lines of the circular gauge.\n *\n * @param {Axis} axis - Specifies the axis.\n * @param {number} index - Specifies the index.\n * @param {Element} element - Specifies the element.\n * @param {CircularGauge} gauge - Specifies the gauge.\n * @returns {void}\n * @private\n */\n AxisRenderer.prototype.drawMinorTickLines = function (axis, index, element, gauge) {\n var minorTickElements = gauge.renderer.createGroup({\n id: gauge.element.id + '_Axis_MinorTickLines_' + index\n });\n var minorLineStyle = axis.minorTicks;\n var minorInterval = minorLineStyle.interval !== null ?\n minorLineStyle.interval : (axis.visibleRange.interval / 2);\n var isRangeColor = minorLineStyle.useRangeColor;\n var color = minorLineStyle.color || this.gauge.themeStyle.minorTickColor;\n if (minorLineStyle.width && minorLineStyle.height && minorInterval) {\n var j = 0;\n for (var i = axis.visibleRange.min, max = axis.visibleRange.max; i <= max; i += minorInterval) {\n if (this.majorValues.indexOf(+i.toFixed(3)) < 0) {\n var tickElement = appendPath(new PathOption(gauge.element.id + '_Axis_Minor_TickLine_' + index + '_' + j++, 'transparent', minorLineStyle.width, isRangeColor ? getRangeColor(i, axis.ranges, color) : color, null, minorLineStyle.dashArray, this.calculateTicks(i, minorLineStyle, axis), '', gauge.allowLoadingAnimation ? 'visibility: hidden;pointer-events: none;' : 'pointer-events:none;'), minorTickElements, gauge);\n tickElement.setAttribute('data-interval', i.toString());\n }\n }\n element.appendChild(minorTickElements);\n }\n };\n /**\n * Method to render the axis major tick lines of the circular gauge.\n *\n * @param {Axis} axis - Specifies the axis.\n * @param {number} index - Specifies the index.\n * @param {Element} element - Specifies the element.\n * @param {CircularGauge} gauge - Specifies the gauge.\n * @returns {void}\n * @private\n */\n AxisRenderer.prototype.drawMajorTickLines = function (axis, index, element, gauge) {\n var majorTickElements = gauge.renderer.createGroup({\n id: gauge.element.id + '_Axis_MajorTickLines_' + index\n });\n var majorLineStyle = axis.majorTicks;\n var isRangeColor = majorLineStyle.useRangeColor;\n this.majorValues = [];\n var color = majorLineStyle.color || this.gauge.themeStyle.majorTickColor;\n if (majorLineStyle.width && majorLineStyle.height && axis.visibleRange.interval) {\n var j = 0;\n for (var i = axis.visibleRange.min, max = axis.visibleRange.max, interval = axis.visibleRange.interval; i <= max; i += interval) {\n this.majorValues.push(+i.toFixed(3));\n var tickElement = appendPath(new PathOption(gauge.element.id + '_Axis_Major_TickLine_' + index + '_' + j, 'transparent', majorLineStyle.width, isRangeColor ? getRangeColor(i, axis.ranges, color) : color, null, majorLineStyle.dashArray, this.calculateTicks(i, majorLineStyle, axis), '', gauge.allowLoadingAnimation ? 'visibility: hidden;pointer-events:none;' : 'pointer-events:none;'), majorTickElements, gauge);\n tickElement.setAttribute('data-interval', i.toString());\n j++;\n }\n element.appendChild(majorTickElements);\n }\n };\n /**\n * Method to calcualte the tick elements for the circular gauge.\n *\n * @param {number} value - Specifies the value.\n * @param {Tick} options - Specifies the options.\n * @param {Axis} axis - Specifies the axis.\n * @returns {string} - Returns the string.\n * @private\n */\n AxisRenderer.prototype.calculateTicks = function (value, options, axis) {\n var axisLineWidth = (axis.lineStyle.width / 2) + options.offset;\n var angle = getAngleFromValue(value, axis.visibleRange.max, axis.visibleRange.min, axis.startAngle, axis.endAngle, axis.direction === 'ClockWise');\n var start = getLocationFromAngle(angle, axis.currentRadius +\n (options.position === 'Outside' ? axisLineWidth : options.position === 'Cross' ?\n options.height / 2 - options.offset : -axisLineWidth), this.gauge.midPoint);\n var end = getLocationFromAngle(angle, axis.currentRadius +\n (options.position === 'Outside' ? axisLineWidth : options.position === 'Cross' ?\n options.height / 2 - options.offset : -axisLineWidth) +\n (options.position === 'Outside' ? options.height : -options.height), this.gauge.midPoint);\n return 'M ' + start.x + ' ' + start.y + ' L ' + end.x + ' ' + end.y + ' ';\n };\n /**\n * Method to render the range path of the circular gauge.\n *\n * @param {Axis} axis - Specifies the axis.\n * @param {Range} range - Specifies the range.\n * @param {number} startWidth - Specifies the startwidth for the range.\n * @param {number} endWidth - Specifies the endwidth for the range.\n * @param {number} rangeIndex - Specifies the index of the range.\n * @param {number} index - Specifies the index of the axis.\n * @param {Element} rangeElement - Specifies the element.\n * @param {number} colorIndex - Specifies the index of the lineargradient colorstop.\n * @returns {void}\n * @private\n */\n AxisRenderer.prototype.drawRangePath = function (axis, range, startWidth, endWidth, rangeIndex, index, rangeElement, colorIndex) {\n var startValue;\n var direction;\n var endValue;\n var location = this.gauge.midPoint;\n var startAngle;\n var endAngle;\n var isClockWise = axis.direction === 'ClockWise';\n var min = axis.visibleRange.min;\n var max = axis.visibleRange.max;\n var roundedStartAngle;\n var roundedEndAngle;\n var oldStart;\n var oldEnd;\n var gradientRangeColor;\n if (range.isLinearCircularGradient) {\n var rangeSplitValue = ((range.end - range.start) / range.linearGradient.colorStop.length);\n var rangeStart = range.linearGradient.colorStop.length > 1 ?\n (range.start + (rangeSplitValue * (colorIndex))) : range.start;\n var rangeEnd = range.linearGradient.colorStop.length > 1 ? (rangeStart + rangeSplitValue) : range.end;\n startValue = Math.min(Math.max(rangeStart, min), rangeEnd);\n endValue = Math.min(Math.max(rangeStart, rangeEnd), max);\n }\n else {\n startValue = Math.min(Math.max(range.start, min), range.end);\n endValue = Math.min(Math.max(range.start, range.end), max);\n }\n startAngle = getAngleFromValue(startValue, max, min, axis.startAngle, axis.endAngle, isClockWise);\n endAngle = getAngleFromValue(endValue, max, min, axis.startAngle, axis.endAngle, isClockWise);\n var isAngleCross360 = (startAngle > endAngle);\n if (axis.rangeGap != null && axis.rangeGap > 0 && range.start !== range.end\n || (!isNullOrUndefined(range.linearGradient) && !range.isLinearCircularGradient\n && (colorIndex === (!isNullOrUndefined(range.linearGradient.colorStop) && range.linearGradient.colorStop.length - 1)))) {\n startAngle = (rangeIndex === 0 && !axis.startAndEndRangeGap) ? startAngle :\n colorIndex === 0 && range.isLinearCircularGradient ? axis.direction === 'AntiClockWise' ?\n startAngle - (axis.rangeGap / Math.PI) :\n startAngle + (axis.rangeGap / Math.PI) : !range.isLinearCircularGradient\n ? (axis.direction === 'AntiClockWise' ? startAngle - (axis.rangeGap / Math.PI) : startAngle + (axis.rangeGap / Math.PI)) : startAngle;\n endAngle = (rangeIndex === axis.ranges.length - 1 && !axis.startAndEndRangeGap) ? endAngle :\n !isNullOrUndefined(range.linearGradient) && colorIndex === range.linearGradient.colorStop.length - 1\n && range.isLinearCircularGradient ?\n axis.direction === 'AntiClockWise' ? endAngle + (axis.rangeGap / Math.PI) :\n endAngle - (axis.rangeGap / Math.PI) : !range.isLinearCircularGradient ?\n (axis.direction === 'AntiClockWise' ? endAngle + (axis.rangeGap / Math.PI) : endAngle - (axis.rangeGap / Math.PI)) : endAngle;\n }\n if (this.gauge.allowComponentRender) {\n if ((startValue !== endValue) && (isAngleCross360 ? startAngle < (endAngle + 360) : (startAngle < endAngle)) && ((range.start >= min && range.end <= max) || (range.end >= min && range.start <= max))) {\n endAngle = isClockWise ? endAngle : [startAngle, startAngle = endAngle][0];\n endWidth = isClockWise ? endWidth : [startWidth, startWidth = endWidth][0];\n var radius = typeof range.roundedCornerRadius === 'string' ? parseFloat(range.roundedCornerRadius) : range.roundedCornerRadius;\n var process = (radius * 0.25);\n var degreeValue = getDegree(startAngle, endAngle);\n oldStart = ((((range.currentRadius - (startWidth / 2)) * ((startAngle * Math.PI) / 180) -\n (radius / process)) / (range.currentRadius - (startWidth / 2))) * 180) / Math.PI;\n oldEnd = ((((range.currentRadius - (endWidth / 2)) * ((endAngle * Math.PI) / 180) +\n (radius / process)) / (range.currentRadius - (endWidth / 2))) * 180) / Math.PI;\n roundedStartAngle = ((((range.currentRadius) * ((startAngle * Math.PI) / 180) +\n (degreeValue < (range.roundedCornerRadius / 2) && range.isLinearCircularGradient\n ? degreeValue <= 1 ? 0 : (radius / 4) : radius)) / (range.currentRadius)) * 180) / Math.PI;\n roundedEndAngle = ((((range.currentRadius) * ((endAngle * Math.PI) / 180) -\n (degreeValue < (range.roundedCornerRadius / 2) && range.isLinearCircularGradient\n ? degreeValue <= 1 ? 0 : (radius / 4) : radius)) / (range.currentRadius)) * 180) / Math.PI;\n if (roundedStartAngle > roundedEndAngle && (roundedStartAngle - roundedEndAngle) <= radius) {\n roundedStartAngle = startAngle;\n roundedEndAngle = endAngle;\n }\n if (this.gauge.gradientModule && ((!isNullOrUndefined(range.linearGradient)\n && !isNullOrUndefined(range.linearGradient.colorStop)) || (!isNullOrUndefined(range.radialGradient)\n && !isNullOrUndefined(range.radialGradient.colorStop)))) {\n if (range.isLinearCircularGradient) {\n endAngle -= isCompleteAngle(startAngle, endAngle) ? 0.0001 : 0;\n var degree = getDegree(startAngle, endAngle);\n var rangeColorLength = range.linearGradient.colorStop.length;\n var degreeRange = ((axis.startAngle === axis.endAngle ?\n (axis.startAngle === 0 && axis.endAngle === 0 ? 360 : axis.startAngle) :\n (axis.endAngle - axis.startAngle)) - degree * (rangeColorLength - 1));\n var degreeRangeValue = void 0;\n if (degreeRange <= 360 && degreeRange >= 270) {\n degreeRangeValue = 270;\n }\n else if (degreeRange <= 270 && degreeRange >= 180) {\n degreeRangeValue = 180;\n }\n else if (degreeRange <= 180 && degreeRange >= 90) {\n degreeRangeValue = 90;\n }\n else if (degreeRange <= 90 && degreeRange >= 0) {\n degreeRangeValue = 0;\n }\n var gradientDegree = axis.direction === 'AntiClockWise' ?\n (axis.startAngle === axis.endAngle ? 0 : axis.startAngle) + degree * ((rangeColorLength - 1) - colorIndex)\n : axis.startAngle + degree * (colorIndex);\n var gradientAngle = axis.startAngle < axis.endAngle ? axis.direction === 'AntiClockWise'\n ? axis.ranges.length > 1 ? rangeIndex === 0 ? (360 - (axis.startAngle\n + (degree * (colorIndex)))) : (axis.startAngle + (degree * (colorIndex + 1))) :\n axis.startAngle + (degreeRangeValue + degree * ((rangeColorLength - 1) - colorIndex)) : axis.startAngle\n + (degree * (colorIndex)) : axis.endAngle === 360 || axis.startAngle === axis.endAngle\n ? axis.direction === 'AntiClockWise' ? axis.startAngle === axis.endAngle ?\n (axis.startAngle === 0 && axis.endAngle === 0 ? 0 : 360) - axis.startAngle +\n degreeRangeValue + (degree * ((rangeColorLength - 1) - colorIndex))\n : degree * ((rangeColorLength - 1) - colorIndex) : degree * (colorIndex) :\n gradientDegree < 360 ? gradientDegree : gradientDegree - 360;\n range.gradientAngle = rangeIndex === 0 ? axis.rangeGap ? gradientAngle + axis.rangeGap\n : gradientAngle : axis.rangeGap > 0 ? axis.ranges[rangeIndex - 1]['gradientAngle'] + axis.rangeGap\n : axis.ranges[rangeIndex - 1]['gradientAngle'];\n if (axis.direction === 'AntiClockWise' && (axis.ranges.length > 1\n ? colorIndex === rangeColorLength - 1 : colorIndex === 0)) {\n range.gradientAntiAngle = gradientAngle;\n }\n if (rangeIndex !== 0) {\n gradientAngle = axis.direction === 'AntiClockWise' ? axis.ranges.length > 1 ?\n axis.ranges[rangeIndex - 1]['gradientAntiAngle'] - gradientAngle + axis.startAngle :\n axis.ranges[rangeIndex - 1]['gradientAntiAngle'] + gradientAngle :\n range.gradientAngle + gradientAngle - axis.startAngle;\n range.gradientAngle = axis.rangeGap != null && axis.rangeGap > 0 ? colorIndex === rangeColorLength - 1 ?\n gradientAngle + axis.ranges[rangeIndex - 1]['gradientAngle'] : gradientAngle : gradientAngle;\n if (axis.direction === 'AntiClockWise' && (axis.ranges.length > 1\n ? colorIndex === rangeColorLength - 1 : colorIndex === 0)) {\n range.gradientAntiAngle = gradientAngle;\n }\n }\n if (gradientAngle > 45 && gradientAngle <= 115\n || (gradientAngle >= 0 && gradientAngle <= 45 && (rangeColorLength - 1) <= 2)) {\n direction = axis.direction === 'AntiClockWise' ? 'bottom' : 'top';\n }\n else if (gradientAngle > 115 && gradientAngle < 170) {\n direction = axis.direction === 'AntiClockWise' ? 'left' : 'right';\n }\n else if (gradientAngle >= 170 && gradientAngle <= 280) {\n direction = axis.direction === 'AntiClockWise' ? 'top' : 'bottom';\n }\n else if (gradientAngle > 280 && gradientAngle <= 360\n || (gradientAngle >= 0 && gradientAngle <= 45 && (rangeColorLength - 1) >= 2)) {\n direction = axis.direction === 'AntiClockWise' ? 'right' : 'left';\n }\n }\n gradientRangeColor = this.gauge.gradientModule.getGradientColorString(range, colorIndex, direction, rangeIndex);\n }\n range.rangeColor = gradientRangeColor ? gradientRangeColor : range.rangeColor;\n if (range.roundedCornerRadius) {\n if (range.isLinearCircularGradient && range.linearGradient.colorStop.length > 1) {\n if (colorIndex === 0 || colorIndex === range.linearGradient.colorStop.length - 1) {\n if (axis.direction === 'ClockWise') {\n this.roundedRangeAppendPathCalculation(range, rangeIndex, index, startWidth, endWidth, rangeElement, (colorIndex === range.linearGradient.colorStop.length - 1\n ? Math.floor(startAngle) : Math.floor(roundedStartAngle)), (colorIndex !== 0 ? Math.ceil(roundedEndAngle) : Math.ceil(endAngle)), ((colorIndex === range.linearGradient.colorStop.length - 1) ? startAngle : oldStart), (colorIndex !== 0 ? oldEnd : endAngle), location, colorIndex);\n }\n else {\n this.roundedRangeAppendPathCalculation(range, rangeIndex, index, startWidth, endWidth, rangeElement, (colorIndex === 0 ? Math.floor(startAngle) : Math.floor(roundedStartAngle)), (colorIndex === range.linearGradient.colorStop.length - 1\n ? Math.ceil(endAngle) : Math.ceil(roundedEndAngle)), ((colorIndex === 0) ? startAngle : oldStart), (colorIndex === range.linearGradient.colorStop.length - 1 ? endAngle : oldEnd), location, colorIndex);\n }\n }\n else {\n this.rangeAppendPathCalculation(range, rangeIndex, index, startWidth, endWidth, rangeElement, Math.floor(startAngle), Math.ceil(endAngle), colorIndex);\n }\n }\n else {\n this.roundedRangeAppendPathCalculation(range, rangeIndex, index, startWidth, endWidth, rangeElement, Math.floor(roundedStartAngle), Math.ceil(roundedEndAngle), oldStart, oldEnd, location, colorIndex);\n }\n }\n else {\n this.rangeAppendPathCalculation(range, rangeIndex, index, startWidth, endWidth, rangeElement, Math.floor(startAngle), Math.ceil(endAngle), colorIndex);\n }\n }\n else if ((range.start === range.end) && ((range.start >= min && range.end <= max) || (range.end >= min && range.start <= max))) {\n this.rangeAppendPathCalculation(range, rangeIndex, index, startWidth, endWidth, rangeElement, Math.floor(startAngle), Math.ceil(endAngle), colorIndex);\n }\n }\n };\n /**\n * Method to render the rounded range path of the circular gauge.\n *\n * @param {Range} range - Specifies the range.\n * @param {number} rangeIndex - Specifies the index of the range.\n * @param {number} index - Specifies the index of the axis.\n * @param {number} startWidth - Specifies the startwidth for the range.\n * @param {number} endWidth - Specifies the endwidth for the range.\n * @param {Element} rangeElement - Specifies the element.\n * @param {number} roundedStartAngle - Specifies the rounded path of the start angle.\n * @param {number} roundedEndAngle - Specifies the rounded path of the end angle.\n * @param {number} oldStart - Specifies the rounded path of the old start value.\n * @param {number} oldEnd - Specifies the rounded path of the old end value..\n * @param {GaugeLocation} location - Specifies the location.\n * @param {number} colorIndex - Specifies the index of the lineargradient colorstop.\n * @returns {void}\n * @private\n */\n AxisRenderer.prototype.roundedRangeAppendPathCalculation = function (range, rangeIndex, index, startWidth, endWidth, rangeElement, roundedStartAngle, roundedEndAngle, oldStart, oldEnd, location, colorIndex) {\n range.pathElement.push(appendPath(new PathOption((!range.isLinearCircularGradient ? this.gauge.element.id + '_Axis_' + index + '_Range_' + rangeIndex\n : this.gauge.element.id + '_Axis_' + index + '_Range_' + rangeIndex + '_Circular_' + colorIndex), range.rangeColor, 0, range.rangeColor, range.opacity, '0', getRoundedPathArc(location, Math.floor(roundedStartAngle), Math.ceil(roundedEndAngle), oldStart, oldEnd, range.currentRadius, startWidth, endWidth, range, this.gauge.axes[index]), '', ''), rangeElement, this.gauge));\n };\n /**\n * Method to render the rounded range path of the circular gauge.\n *\n * @param {Range} range - Specifies the range.\n * @param {number} rangeIndex - Specifies the index of the range.\n * @param {number} index - Specifies the index of the axis.\n * @param {number} startWidth - Specifies the startwidth for the range.\n * @param {number} endWidth - Specifies the endwidth for the range.\n * @param {Element} rangeElement - Specifies the element.\n * @param {number} startAngle - Specifies the rounded path of the start angle.\n * @param {number} endAngle - Specifies the rounded path of the end angle.\n * @param {number} colorIndex - Specifies the index of the lineargradient colorstop.\n * @returns {void}\n * @private\n */\n AxisRenderer.prototype.rangeAppendPathCalculation = function (range, rangeIndex, index, startWidth, endWidth, rangeElement, startAngle, endAngle, colorIndex) {\n range.pathElement.push(appendPath(new PathOption(!range.isLinearCircularGradient ? this.gauge.element.id + '_Axis_' + index + '_Range_' +\n rangeIndex : this.gauge.element.id + '_Axis_' + index + '_Range_' +\n rangeIndex + '_Circular_' + colorIndex, range.rangeColor, 0, range.rangeColor, range.opacity, '0', getPathArc(this.gauge.midPoint, Math.floor(startAngle), Math.ceil(endAngle), range.currentRadius, startWidth, endWidth, range, this.gauge.axes[index]), '', ''), rangeElement, this.gauge));\n };\n /**\n * Method to render the axis range of the circular gauge.\n *\n * @param {Axis} axis - Specifies the axis.\n * @param {number} index - Specifies the index.\n * @param {Element} element - Specifies the element.\n * @returns {void}\n * @private\n */\n AxisRenderer.prototype.drawAxisRange = function (axis, index, element) {\n var _this = this;\n var ele = (document.getElementById(this.gauge.element.id + '_Axis_Ranges_ ' + index));\n var rangeElement = (ele) ? document.getElementById(this.gauge.element.id + '_Axis_Ranges_ ' + index) :\n this.gauge.renderer.createGroup({ id: this.gauge.element.id + '_Axis_Ranges_' + index,\n style: this.gauge.allowLoadingAnimation ? 'opacity: 0;' : '' });\n var startWidth;\n var startEndDifference;\n var endWidth;\n var previousEndWidth;\n var previousStartWidth;\n axis.ranges.map(function (range, rangeIndex) {\n range.isLinearCircularGradient = !isNullOrUndefined(_this.gauge.gradientModule)\n && !isNullOrUndefined(range.linearGradient) && isNullOrUndefined(range.linearGradient.startValue)\n && isNullOrUndefined(range.linearGradient.endValue) && !isNullOrUndefined(range.linearGradient.colorStop);\n range.pathElement = [];\n if (!isNullOrUndefined(range.offset) && range.offset.length > 0) {\n range.currentDistanceFromScale = stringToNumber(range.offset, axis.currentRadius);\n }\n else {\n range.currentDistanceFromScale = range.offset;\n }\n _this.calculateRangeRadius(axis, range);\n if (range.startWidth.length > 0) {\n startWidth = toPixel(range.startWidth, range.currentRadius);\n }\n else {\n startWidth = range.startWidth;\n }\n if (range.endWidth.length > 0) {\n endWidth = toPixel(range.endWidth, range.currentRadius);\n }\n else {\n endWidth = range.endWidth;\n }\n range.currentRadius = _this.calculateRangeRadiusWithPosition(axis, range, startWidth);\n if (range.isLinearCircularGradient) {\n for (var i = 0; i < range.linearGradient.colorStop.length; i++) {\n if (i <= (range.linearGradient.colorStop.length - 1)) {\n previousEndWidth = i === 0 ? endWidth : previousEndWidth;\n previousStartWidth = i === 0 ? startWidth : previousStartWidth;\n startEndDifference = (Math.abs(previousStartWidth - previousEndWidth) / (range.linearGradient.colorStop.length));\n if (i > 0) {\n startWidth = endWidth;\n endWidth = previousStartWidth > previousEndWidth ? startWidth - startEndDifference\n : startWidth + startEndDifference;\n }\n else {\n endWidth = previousStartWidth > previousEndWidth ? startWidth - startEndDifference\n : startWidth + startEndDifference;\n }\n }\n else {\n startWidth = previousStartWidth > previousEndWidth ? startWidth - startEndDifference\n : startWidth + startEndDifference;\n endWidth = (previousEndWidth);\n }\n _this.drawRangePath(axis, range, startWidth, endWidth, rangeIndex, index, rangeElement, i);\n }\n }\n else {\n if (!(range.start === range.end && axis.direction === 'AntiClockWise' && axis.startAngle === axis.endAngle)) {\n _this.drawRangePath(axis, range, startWidth, endWidth, rangeIndex, index, rangeElement, null);\n }\n }\n });\n element.appendChild(rangeElement);\n };\n /**\n * Method to calculate the radius of the axis range.\n *\n * @return {void}\n */\n AxisRenderer.prototype.calculateRangeRadius = function (axis, range) {\n var radius = range.radius !== null ? range.radius : '100%';\n range.currentRadius = stringToNumber(radius, axis.currentRadius);\n };\n AxisRenderer.prototype.calculateRangeRadiusWithPosition = function (axis, range, startWidth) {\n var actualRadius = !isNullOrUndefined(range.position) && range.position !== 'Auto' && isNullOrUndefined(range.radius) ?\n (range.position === 'Outside' ? (range.currentRadius + axis.lineStyle.width / 2 + range.currentDistanceFromScale) :\n range.position === 'Inside' ? (range.currentRadius - axis.lineStyle.width / 2 - range.currentDistanceFromScale) :\n (range.currentRadius + startWidth / 2 - range.currentDistanceFromScale)) : range.currentRadius;\n return actualRadius;\n };\n /**\n * Method to get the range color of the circular gauge.\n *\n * @param {Axis} axis - Specifies the axis\n * @returns {void}\n * @private\n */\n AxisRenderer.prototype.setRangeColor = function (axis) {\n var rangeColors = getRangePalette(this.gauge.theme);\n axis.ranges.map(function (range, index) {\n range.rangeColor = range.color ? range.color : rangeColors[index % rangeColors.length];\n });\n };\n /**\n *\n * @returns {void}\n * @private\n */\n AxisRenderer.prototype.destroy = function () {\n this.gauge = null;\n this.majorValues = [];\n };\n return AxisRenderer;\n}());\nexport { AxisRenderer };\n","/**\n * Specifies Circular-Gauge pointer-render Helper methods\n */\nimport { getLocationFromAngle, isCompleteAngle, getDegree } from './helper-common';\n/**\n * Function to calculate the value for linear animation effect\n *\n * @param {number} currentTime - Specifies the currentTime.\n * @param {number} startValue - Specifies the startValue.\n * @param {number} endValue - Specifies the endValue.\n * @param {number} duration - Specifies the duration.\n * @returns {number} - Returns the number.\n * @private\n */\nexport function linear(currentTime, startValue, endValue, duration) {\n return -endValue * Math.cos(currentTime / duration * (Math.PI / 2)) + endValue + startValue;\n}\n/**\n * Function to calculate the complete path arc of the circular gauge.\n *\n * @param {GaugeLocation} center - Specifies the center value.\n * @param {number} start - Specifies the start value.\n * @param {number} end - Specifies the end value.\n * @param {number} radius - Specifies the radius value.\n * @param {number} innerRadius - Specifies the innerRadius value.\n * @param {boolean} checkMinValue - Specifies the checkMinValue value.\n * @returns {string} - Returns the path value.\n * @private\n */\nexport function getCompleteArc(center, start, end, radius, innerRadius, checkMinValue) {\n end -= isCompleteAngle(start, end) && !checkMinValue ? 0.0001 : 0;\n var degree = getDegree(start, end);\n return getCompletePath(center, getLocationFromAngle(start, radius, center), getLocationFromAngle(end, radius, center), radius, getLocationFromAngle(start, innerRadius, center), getLocationFromAngle(end, innerRadius, center), innerRadius, (degree < 180) ? 0 : 1);\n}\n/**\n * Function to get the complete path direction of the circular gauge.\n *\n * @param {GaugeLocation} center - Specifies the center value.\n * @param {GaugeLocation} start - Specifies the start value.\n * @param {GaugeLocation} end - Specifies the end value.\n * @param {number} radius - Specifies the radius value.\n * @param {GaugeLocation} innerStart - Specifies the innerStart value.\n * @param {GaugeLocation} innerEnd - Specifies the innerEnd value.\n * @param {number} innerRadius - Specifies the innerRadius value.\n * @param {number} clockWise - Specifies the clockWise.\n * @returns {string} - Returns the path.\n * @private\n */\nexport function getCompletePath(center, start, end, radius, innerStart, innerEnd, innerRadius, clockWise) {\n return 'M ' + start.x + ' ' + start.y + ' A ' + radius + ' ' + radius + ' 0 ' + clockWise +\n ' 1 ' + end.x + ' ' + end.y + ' L ' + innerEnd.x + ' ' + innerEnd.y + ' A ' + innerRadius +\n ' ' + innerRadius + ' 0 ' + clockWise + ',0 ' + innerStart.x + ' ' + innerStart.y + ' Z';\n}\n","import { stringToNumber, textElement, appendPath, getAngleFromValue, getLocationFromAngle, getRoundedPathArc, calculateShapes, PathOption, Size, TextOption } from '../utils/helper-common';\nimport { linear, getCompleteArc } from '../utils/helper-pointer-renderer';\nimport { Animation, isNullOrUndefined, animationMode } from '@syncfusion/ej2-base';\nimport { animationComplete } from '../model/constants';\n/**\n * Specifies the Axis rendering for circular gauge\n */\nvar PointerRenderer = /** @class */ (function () {\n /**\n * Constructor for pointer renderer.\n *\n * @param {CircularGauge} gauge - Specifies the instance of the gauge.\n * @private.\n */\n function PointerRenderer(gauge) {\n this.gauge = gauge;\n }\n /**\n * Method to render the axis pointers of the circular gauge.\n *\n * @param {Axis} axis - Specifies the axis.\n * @param {number} axisIndex - Specifies the axis index.\n * @param {Element} element - Specifies the element.\n * @param {CircularGauge} gauge - Specifies the instance of the gauge.\n * @param {boolean} animate - Specifies the boolean value.\n * @returns {void}\n * @private\n */\n PointerRenderer.prototype.drawPointers = function (axis, axisIndex, element, gauge, animate) {\n var _this = this;\n if (animate === void 0) { animate = true; }\n var pointerElement = gauge.renderer.createGroup({\n id: gauge.element.id + '_Axis_Pointers_' + axisIndex\n });\n var childElement;\n if (this.gauge.allowComponentRender) {\n axis.pointers.map(function (pointer, pointerIndex) {\n if (!isNullOrUndefined(pointer.offset) && pointer.offset.length > 0) {\n pointer.currentDistanceFromScale = stringToNumber(pointer.offset, axis.currentRadius);\n }\n else {\n pointer.currentDistanceFromScale = pointer.offset;\n }\n pointer.pathElement = [];\n _this.calculatePointerRadius(axis, pointer);\n childElement = gauge.renderer.createGroup({\n id: gauge.element.id + '_Axis_' + axisIndex + '_Pointer_' + pointerIndex\n });\n if (pointer.value != null) {\n childElement.setAttribute('aria-label', pointer.description || 'Pointer:' + pointer.value.toString());\n childElement.setAttribute('role', 'region');\n }\n _this['draw' + pointer.type + 'Pointer'](axis, axisIndex, pointerIndex, childElement, gauge);\n if (_this.gauge.allowLoadingAnimation) {\n childElement.style.visibility = 'hidden';\n }\n else {\n _this.setPointerValue(axis, pointer, pointer.currentValue);\n }\n pointerElement.appendChild(childElement);\n if (!_this.gauge.allowLoadingAnimation && ((animate || pointer.animation.enable) || animationMode === 'Enable') && (!_this.gauge.isPropertyChange || pointer.isPointerAnimation)) {\n pointer.previousValue = !_this.gauge.isPropertyChange ? axis.minimum : pointer.previousValue;\n _this.doPointerAnimation(childElement, pointer, axis, axisIndex);\n }\n });\n element.appendChild(pointerElement);\n }\n };\n /**\n * Measure the pointer length of the circular gauge.\n *\n * @returns {void}\n */\n PointerRenderer.prototype.calculatePointerRadius = function (axis, pointer) {\n var padding = 5;\n pointer.currentRadius = !isNullOrUndefined(pointer.radius) ?\n stringToNumber(pointer.radius, axis.currentRadius) : pointer.position !== 'Auto' ?\n this.pointerRadiusForPosition(axis, pointer) : (axis.currentRadius - (axis.farSize + padding));\n };\n /**\n * Measure the pointer length of the circular gauge based on pointer position.\n *\n * @returns {number}\n */\n PointerRenderer.prototype.pointerRadiusForPosition = function (axis, pointer) {\n if (pointer.markerShape === 'Text') {\n var pointerRadius = void 0;\n var pointerSize = parseInt(pointer.textStyle.size, 10);\n var markerOffset = pointer.position === 'Cross' ? pointerSize / 5 : 0;\n // eslint-disable-next-line prefer-const\n pointerRadius = pointer.position === 'Inside' ?\n (axis.currentRadius - pointerSize / 1.2 - axis.lineStyle.width / 2 - markerOffset - pointer.currentDistanceFromScale) :\n pointer.position === 'Outside' ?\n (axis.currentRadius + axis.lineStyle.width / 2 + pointerSize / 4 + markerOffset +\n pointer.currentDistanceFromScale) :\n (axis.currentRadius - pointerSize / 6 - markerOffset - pointer.currentDistanceFromScale);\n return pointerRadius;\n }\n else {\n var pointerRadius = void 0;\n var rangeBarOffset = pointer.type === 'RangeBar' ? pointer.pointerWidth : 0;\n var markerOffset = pointer.type === 'Marker' ? ((pointer.markerShape === 'InvertedTriangle' ||\n pointer.markerShape === 'Triangle') ? (pointer.position === 'Cross' ? pointer.markerWidth / 2 : 0) :\n pointer.markerWidth / 2) : 0;\n // eslint-disable-next-line prefer-const\n pointerRadius = pointer.position === 'Inside' ?\n (axis.currentRadius - axis.lineStyle.width / 2 - markerOffset - pointer.currentDistanceFromScale) :\n pointer.position === 'Outside' ?\n (axis.currentRadius + rangeBarOffset + axis.lineStyle.width / 2 + markerOffset + pointer.currentDistanceFromScale) :\n (axis.currentRadius + rangeBarOffset / 2 - pointer.currentDistanceFromScale -\n ((pointer.markerShape === 'InvertedTriangle' || pointer.markerShape === 'Triangle') ? markerOffset : 0));\n return pointerRadius;\n }\n };\n /**\n * Method to render the needle pointer of the ciruclar gauge.\n *\n * @param {Axis} axis - Specifies the axis\n * @param {number} axisIndex - Specifies the axis index.\n * @param {number} index - Specifies the index.\n * @param {Element} parentElement - Specifies the parent element.\n * @param {CircularGauge} gauge - Specifies the instance of the gauge.\n * @returns {void}\n */\n PointerRenderer.prototype.drawNeedlePointer = function (axis, axisIndex, index, parentElement, gauge) {\n var pointer = axis.pointers[index];\n var needle = pointer.needleTail;\n var cap = pointer.cap;\n var pointerRadius;\n var location;\n var direction;\n var needleStartWidth = pointer.needleStartWidth;\n var needleEndWidth = pointer.needleEndWidth;\n var mid = gauge.midPoint;\n var width = pointer.pointerWidth / 2;\n var rectDirection;\n var gradientColor;\n var gradientTailColor;\n var gradientCapColor;\n // To render the needle\n location = getLocationFromAngle(0, pointer.currentRadius, mid);\n if ((needleStartWidth === 0) && (needleEndWidth === 0) && width) {\n direction = 'M ' + mid.x + ' ' + (mid.y) + ' L ' + (location.x) + ' ' + mid.y +\n ' L ' + (mid.x) + ' ' + (mid.y) + ' Z';\n }\n else {\n direction = 'M ' + mid.x + ' ' + (mid.y - width - needleEndWidth) + ' L ' + (location.x) + ' ' + mid.y +\n ' L ' + location.x + ' ' + (mid.y + needleStartWidth) + ' L ' + mid.x + ' ' + (mid.y + width + needleEndWidth) + ' Z';\n }\n if (gauge.gradientModule) {\n gradientColor = gauge.gradientModule.getGradientColorString(pointer);\n }\n pointer.pathElement.push(appendPath(new PathOption(gauge.element.id + '_Axis_' + axisIndex + '_Pointer_Needle_' + index, gradientColor ? gradientColor :\n pointer.color || this.gauge.themeStyle.needleColor, pointer.border.width, pointer.border.color, null, pointer.border.dashArray, direction), parentElement, gauge));\n // eslint-disable-next-line prefer-const\n pointerRadius = stringToNumber(pointer.needleTail.length, pointer.currentRadius);\n // To render the rect element for touch\n rectDirection = 'M ' + mid.x + ' ' + (mid.y - width) + ' L ' + (location.x) + ' ' + (mid.y - width) +\n ' L ' + location.x + ' ' + (mid.y + width) + ' L ' + mid.x + ' ' + (mid.y + width);\n // To render the needle tail\n if (gauge.gradientModule) {\n gradientTailColor = gauge.gradientModule.getGradientColorString(needle);\n }\n if (pointerRadius) {\n location = getLocationFromAngle(180, pointerRadius, gauge.midPoint);\n direction = 'M ' + mid.x + ' ' + (mid.y - width) +\n ' L ' + (location.x) + ' ' + (mid.y - width) +\n ' L ' + (location.x) + ' ' + (mid.y + width) +\n ' L ' + (mid.x) + ' ' + (mid.y + width) + ' Z';\n pointer.pathElement.push(appendPath(new PathOption(gauge.element.id + '_Axis_' + axisIndex + '_Pointer_NeedleTail_' + index, gradientTailColor ? gradientTailColor : pointer.needleTail.color || this.gauge.themeStyle.needleTailColor, pointer.needleTail.border.width, pointer.needleTail.border.color, null, pointer.needleTail.border.dashArray, direction), parentElement, gauge));\n rectDirection += ' L ' + location.x + ' ' + (mid.y + width) + ' L ' + location.x + ' ' + (mid.y - width);\n }\n // To render the cap\n if (gauge.gradientModule) {\n gradientCapColor = gauge.gradientModule.getGradientColorString(cap);\n }\n if (pointer.cap.radius) {\n pointer.pathElement.push(appendPath(calculateShapes(mid, 'Circle', new Size(pointer.cap.radius * 2, pointer.cap.radius * 2), '', new PathOption(gauge.element.id + '_Axis_' + axisIndex + '_Pointer_NeedleCap_' + index, gradientCapColor ? gradientCapColor : pointer.cap.color || this.gauge.themeStyle.capColor, pointer.cap.border.width, pointer.cap.border.color, null, pointer.cap.border.dashArray, '', '')), parentElement, gauge, 'Ellipse'));\n }\n pointer.pathElement.push(appendPath(new PathOption(gauge.element.id + '_Axis_' + axisIndex + '_Pointer_NeedleRect_' + index, 'transparent', 0, 'transpanret', null, '0', rectDirection + ' Z'), parentElement, gauge));\n };\n /**\n * Method to set the pointer value of the circular gauge.\n *\n * @param {Axis} axis - Specifies the axis.\n * @param {Pointer} pointer - Specifies the pointer.\n * @param {number} value - Specifies the value.\n * @returns {void}\n * @private\n */\n PointerRenderer.prototype.setPointerValue = function (axis, pointer, value) {\n var _this = this;\n var checkMinValue = value === axis.visibleRange.min && pointer.type === 'RangeBar';\n var location = this.gauge.midPoint;\n var isClockWise = axis.direction === 'ClockWise';\n var radius = pointer.roundedCornerRadius;\n var minRadius = (radius * 0.25);\n if (radius > 0 && radius <= 5) {\n radius = 6;\n minRadius = (radius * 0.25);\n }\n var startAngle = getAngleFromValue(axis.visibleRange.min, axis.visibleRange.max, axis.visibleRange.min, axis.startAngle, axis.endAngle, isClockWise);\n var endAngle = getAngleFromValue(value, axis.visibleRange.max, axis.visibleRange.min, axis.startAngle, axis.endAngle, isClockWise);\n if (isClockWise) {\n if (startAngle > endAngle) {\n endAngle = Math.round(startAngle) === Math.round(endAngle) && !checkMinValue ?\n Math.round(endAngle) - (pointer.roundedCornerRadius > 0 ? 1.5 : 0.5) : Math.round(endAngle);\n }\n else {\n endAngle = startAngle === endAngle && !checkMinValue ? endAngle + 1 : endAngle;\n }\n }\n else {\n endAngle = Math.round(startAngle) === Math.round(endAngle) && !checkMinValue ?\n [startAngle, startAngle = (endAngle > startAngle ? endAngle + (pointer.roundedCornerRadius > 0 ? 1.5 : 0.5) : endAngle - 1)][0]\n : [startAngle, startAngle = endAngle][0];\n }\n if (value <= (axis.visibleRange.min + axis.visibleRange.interval) && pointer.roundedCornerRadius) {\n radius = value === axis.visibleRange.min || (axis.visibleRange.min + 1) ? 8 : radius;\n radius /= 2;\n minRadius = radius * 0.25;\n }\n var oldStartValue = ((((pointer.currentRadius - (pointer.pointerWidth / 2)) * ((startAngle * Math.PI) / 180) -\n (radius / minRadius)) / (pointer.currentRadius - (pointer.pointerWidth / 2))) * 180) / Math.PI;\n var oldEndValue = ((((pointer.currentRadius - (pointer.pointerWidth / 2)) * ((endAngle * Math.PI) / 180) +\n (radius / minRadius)) / (pointer.currentRadius - (pointer.pointerWidth / 2))) * 180) / Math.PI;\n var angleValue = value === axis.maximum && (axis.startAngle === axis.endAngle ||\n Math.abs(axis.startAngle - axis.endAngle) === 360) && pointer.type === 'RangeBar' ? 45 : 180;\n var roundStartAngle = ((((pointer.currentRadius) * ((startAngle * Math.PI) / angleValue) +\n radius) / (pointer.currentRadius)) * angleValue) / Math.PI;\n var roundEndAngle = ((((pointer.currentRadius) * ((endAngle * Math.PI) / angleValue) -\n radius) / (pointer.currentRadius)) * angleValue) / Math.PI;\n if (roundStartAngle > roundEndAngle && (roundStartAngle - roundEndAngle) <= 36 && pointer.type === 'RangeBar') {\n roundStartAngle = startAngle;\n roundEndAngle = endAngle;\n }\n if (isNullOrUndefined(pointer.currentRadius)) {\n this.calculatePointerRadius(axis, pointer);\n }\n pointer.pathElement.map(function (element) {\n if (pointer.type === 'RangeBar') {\n if (radius && !checkMinValue) {\n element.setAttribute('d', getRoundedPathArc(location, Math.floor(roundStartAngle), Math.ceil(roundEndAngle), oldStartValue, oldEndValue, pointer.currentRadius, pointer.pointerWidth, pointer.pointerWidth));\n radius = 0;\n }\n else {\n element.setAttribute('d', getCompleteArc(location, startAngle, endAngle, pointer.currentRadius, (pointer.currentRadius - pointer.pointerWidth), checkMinValue));\n }\n }\n else {\n if (pointer.type === 'Marker' && pointer.markerShape === 'Text') {\n _this.calculateTextElement(axis, pointer, value, element);\n }\n else {\n element.setAttribute('transform', 'rotate(' + getAngleFromValue(value, axis.visibleRange.max, axis.visibleRange.min, axis.startAngle, axis.endAngle, isClockWise) + ',' + location.x + ',' + location.y + ')');\n }\n }\n });\n };\n /**\n * Method to set the text value of the circular gauge.\n *\n * @param {Axis} axis - Specifies the axis.\n * @param {Pointer} pointer - Specifies the pointer.\n * @param {number} value - Specifies the value.\n * @param {Element} element - Specifies the text element.\n * @returns {void}\n * @private\n */\n PointerRenderer.prototype.calculateTextElement = function (axis, pointer, value, element) {\n var textangle = getAngleFromValue(value, axis.visibleRange.max, axis.visibleRange.min, axis.startAngle, axis.endAngle, axis.direction === 'ClockWise');\n var textlocation = getLocationFromAngle(textangle, pointer.currentRadius, this.gauge.midPoint);\n element.setAttribute('transform', 'rotate(' + (textangle + 90) + ',' + textlocation.x + ',' + textlocation.y + ')');\n element.setAttribute('x', String(textlocation.x));\n element.setAttribute('y', String(textlocation.y));\n };\n /**\n * Method to render the marker pointer of the ciruclar gauge.\n *\n * @param {Axis} axis - Specifies the axis\n * @param {number} axisIndex - Specifies the axis index.\n * @param {number} index - Specifies the index.\n * @param {Element} parentElement - Specifies the parent element.\n * @param {CircularGauge} gauge - Specifies the instance of the gauge.\n * @returns {void}\n */\n PointerRenderer.prototype.drawMarkerPointer = function (axis, axisIndex, index, parentElement, gauge) {\n var pointer = axis.pointers[index];\n var min = axis.visibleRange.min;\n var max = axis.visibleRange.max;\n var gradientMarkerColor;\n var angle = Math.round(getAngleFromValue(pointer.value, max, min, axis.startAngle, axis.endAngle, axis.direction === 'ClockWise'));\n var shapeBasedOnPosition = pointer.markerShape;\n if (gauge.gradientModule) {\n gradientMarkerColor = gauge.gradientModule.getGradientColorString(pointer);\n }\n if (isNullOrUndefined(pointer.radius) && !isNullOrUndefined(pointer.position) && (pointer.markerShape === 'InvertedTriangle' ||\n pointer.markerShape === 'Triangle')) {\n shapeBasedOnPosition = ((pointer.position === 'Outside' || pointer.position === 'Cross') && pointer.markerShape === 'Triangle' ?\n 'InvertedTriangle' : (pointer.position === 'Inside' &&\n pointer.markerShape === 'InvertedTriangle' ? 'Triangle' : pointer.markerShape));\n }\n var location = getLocationFromAngle((pointer.markerShape === 'Text') ? angle : 0, pointer.currentRadius, gauge.midPoint);\n if (pointer.markerShape === 'Text') {\n var style = {\n size: pointer.textStyle.size,\n color: pointer.textStyle.color || this.gauge.themeStyle.pointerColor,\n fontFamily: pointer.textStyle.fontFamily,\n fontStyle: pointer.textStyle.fontStyle,\n fontWeight: pointer.textStyle.fontWeight || this.gauge.themeStyle.fontWeight,\n opacity: pointer.textStyle.opacity\n };\n var textOption = new TextOption(gauge.element.id + '_Axis_' + axisIndex + '_Pointer_Marker_' + index, location.x, location.y, 'middle', pointer.text, 'rotate(' + (angle + 90) + ',' +\n (location.x) + ',' + location.y + ')', 'auto');\n var textObject = textElement(textOption, style, style.color, parentElement, 'pointer-events : auto; ');\n textObject.style.visibility = ((pointer.animation.enable || animationMode === 'Enable') && (!this.gauge.isPropertyChange || pointer.isPointerAnimation) && this.gauge.animatePointer) ? 'hidden' : 'visible';\n pointer.pathElement.push(textObject);\n }\n else {\n pointer.pathElement.push(appendPath(calculateShapes(location, shapeBasedOnPosition, new Size(pointer.markerWidth, pointer.markerHeight), pointer.imageUrl, new PathOption(gauge.element.id + '_Axis_' + axisIndex + '_Pointer_Marker_' + index, gradientMarkerColor ? gradientMarkerColor : pointer.color || this.gauge.themeStyle.pointerColor, pointer.border.width, pointer.border.color, null, pointer.border.dashArray, '', '')), parentElement, gauge, pointer.markerShape === 'Circle' ? 'Ellipse' : (pointer.markerShape === 'Image' ? 'Image' : 'Path')));\n }\n };\n /**\n * Method to render the range bar pointer of the ciruclar gauge.\n *\n * @param {Axis} axis - Specifies the axis\n * @param {number} axisIndex - Specifies the axis index.\n * @param {number} index - Specifies the index.\n * @param {Element} parentElement - Specifies the parent element.\n * @param {CircularGauge} gauge - Specifies the instance of the gauge.\n * @returns {void}\n */\n PointerRenderer.prototype.drawRangeBarPointer = function (axis, axisIndex, index, parentElement, gauge) {\n var pointer = axis.pointers[index];\n var gradientBarColor;\n if (gauge.gradientModule) {\n gradientBarColor = gauge.gradientModule.getGradientColorString(pointer);\n }\n pointer.pathElement.push(appendPath(new PathOption(gauge.element.id + '_Axis_' + axisIndex + '_Pointer_RangeBar_' + index, gradientBarColor ? gradientBarColor :\n pointer.color || this.gauge.themeStyle.pointerColor, pointer.border.width, pointer.border.color, 1, pointer.border.dashArray, ''), parentElement, gauge));\n };\n /**\n * Method to perform the animation of the pointer in circular gauge.\n *\n * @param {Element} pointerElement - specifies the pointer element.\n * @param {Pointer} pointer - Specifies the pointer.\n * @param {Axis} axis - Specifies the axis.\n * @param {number} axisIndex - Specifies the axis index.\n * @returns {void}\n * @private\n */\n PointerRenderer.prototype.doPointerAnimation = function (pointerElement, pointer, axis, axisIndex) {\n var _this = this;\n var startValue = !isNullOrUndefined(pointer.previousValue) ? pointer.previousValue : axis.visibleRange.min;\n var endValue = pointer.currentValue;\n if (((pointer.animation.enable || animationMode === 'Enable') && startValue !== endValue && this.gauge.animatePointer) ||\n (!isNullOrUndefined(this.gauge.loadingAnimationDuration) && this.gauge.loadingAnimationDuration[axisIndex] > 0)) {\n pointer.pathElement.map(function (element) {\n if (pointer.type === 'RangeBar') {\n _this.performRangeBarAnimation(element, startValue, endValue, axis, pointer, axisIndex);\n }\n else {\n if (pointer.type === 'Marker' && pointer.markerShape === 'Text') {\n _this.performTextAnimation(pointerElement, startValue, endValue, axis, pointer, axisIndex);\n }\n else {\n _this.performNeedleAnimation(element, startValue, endValue, axis, pointer, axisIndex);\n }\n }\n });\n }\n };\n /**\n * @param {HTMLElement} element - specifies the element.\n * @param {number} start - specifies the start.\n * @param {number} end - specifies the end.\n * @param {Axis} axis - specifies the axis.\n * @param {Pointer} pointer - specfies the pointer.\n * @param {number} axisIndex - Specifies the axis index.\n * @returns {void}\n * @private\n */\n PointerRenderer.prototype.performTextAnimation = function (element, start, end, axis, pointer, axisIndex) {\n var _this = this;\n var isClockWise = axis.direction === 'ClockWise';\n var textangle;\n var textlocation;\n var pointerValue = 0;\n var timeStamp;\n start = typeof (start) === 'string' ? parseInt(start, 10) : start;\n end = typeof (end) === 'string' ? parseInt(end, 10) : end;\n element = !isNullOrUndefined(element.children[0]) ? element.children[0] : element;\n var val = Math.abs(start - end);\n new Animation({}).animate(element, {\n duration: this.gauge.isAnimationProgress ? (isNullOrUndefined(pointer.value) || pointer.value === axis.minimum ? 0 :\n (animationMode === 'Enable' && (((!pointer.animation.enable || pointer.animation.duration === 0)\n && !this.gauge.allowLoadingAnimation) || (this.gauge.allowLoadingAnimation && (this.gauge.animationDuration === 0\n && pointer.animation.enable && pointer.animation.duration === 0)))) ? 1000 :\n (this.gauge.allowLoadingAnimation ? (pointer.animation.enable && pointer.animation.duration > 0 ? pointer.animation.duration\n : this.gauge.loadingAnimationDuration[axisIndex]) : pointer.animation.duration)) : 0,\n progress: function (args) {\n if (_this.gauge.isAnimationProgress) {\n if (args.timeStamp > args.delay) {\n timeStamp = (args.timeStamp / pointer.animation.duration);\n pointerValue = end > start ? start + (timeStamp * val) : start - (timeStamp * val);\n textangle = getAngleFromValue(pointerValue, axis.visibleRange.max, axis.visibleRange.min, axis.startAngle, axis.endAngle, isClockWise);\n textlocation = getLocationFromAngle(textangle, pointer.currentRadius, _this.gauge.midPoint);\n element.setAttribute('transform', 'rotate(' + (textangle + 90) + ',' + textlocation.x + ',' + textlocation.y + ')');\n element.setAttribute('x', String(textlocation.x));\n element.setAttribute('y', String(textlocation.y));\n element.style.visibility = 'visible';\n }\n }\n },\n end: function () {\n if (_this.gauge.isAnimationProgress) {\n _this.setPointerValue(axis, pointer, end);\n pointer.isPointerAnimation = false;\n }\n _this.gauge.trigger(animationComplete, { axis: axis, pointer: pointer });\n if (!isNullOrUndefined(_this.gauge.loadingAnimationDuration) && (_this.gauge.loadingAnimationDuration[axisIndex] > 0 && !isNullOrUndefined(_this.gauge.annotationsModule))) {\n _this.gauge.annotationsModule.annotationAnimation(_this.gauge);\n }\n else {\n _this.gauge.isOverAllAnimationComplete = true;\n }\n }\n });\n };\n /**\n * Perform the needle and marker pointer animation for circular gauge.\n *\n * @param {HTMLElement} element - Specifies the element\n * @param {number} start - Specifies the start\n * @param {number} end - Specifies the end\n * @param {Axis} axis - Specifies the axis\n * @param {Pointer} pointer - Specifies the pointer.\n * @param {number} axisIndex - Specifies the axis index.\n * @returns {void}\n * @private\n */\n PointerRenderer.prototype.performNeedleAnimation = function (element, start, end, axis, pointer, axisIndex) {\n var _this = this;\n var isClockWise = axis.direction === 'ClockWise';\n start = typeof (start) === 'string' ? parseInt(start, 10) : start;\n end = typeof (end) === 'string' ? parseInt(end, 10) : end;\n var startAngle = getAngleFromValue(start, axis.visibleRange.max, axis.visibleRange.min, axis.startAngle, axis.endAngle, isClockWise);\n var pointAngle = getAngleFromValue(end, axis.visibleRange.max, axis.visibleRange.min, axis.startAngle, axis.endAngle, isClockWise);\n var endAngle = startAngle > pointAngle ? (pointAngle + 360) : pointAngle;\n var sweepAngle;\n new Animation({}).animate(element, {\n duration: this.gauge.isAnimationProgress ? (isNullOrUndefined(pointer.value) || pointer.value === axis.minimum ? 0 :\n (animationMode === 'Enable' && (((!pointer.animation.enable || pointer.animation.duration === 0)\n && !this.gauge.allowLoadingAnimation) || (this.gauge.allowLoadingAnimation && (this.gauge.animationDuration === 0\n && pointer.animation.enable && pointer.animation.duration === 0)))) ? 1000 :\n (this.gauge.allowLoadingAnimation ? (pointer.animation.enable && pointer.animation.duration > 0 ? pointer.animation.duration\n : this.gauge.loadingAnimationDuration[axisIndex]) : pointer.animation.duration)) : 0,\n progress: function (args) {\n if (_this.gauge.isAnimationProgress) {\n sweepAngle = (start < end || Math.round(startAngle) === Math.round(endAngle)) ?\n isClockWise ? (endAngle - startAngle) : (endAngle - startAngle - 360) :\n isClockWise ? (endAngle - startAngle - 360) : (endAngle - startAngle);\n element.style.animation = 'None';\n if (start !== end) {\n element.setAttribute('transform', 'rotate(' + linear(args.timeStamp, startAngle, sweepAngle, args.duration) + ',' +\n _this.gauge.midPoint.x.toString() + ',' + _this.gauge.midPoint.y.toString() + ')');\n element.style.visibility = 'visible';\n }\n }\n },\n end: function () {\n if (_this.gauge.isAnimationProgress) {\n _this.setPointerValue(axis, pointer, end);\n if (_this.gauge.animationDuration > 0) {\n element.style.visibility = 'visible';\n }\n pointer.isPointerAnimation = false;\n }\n if (pointer.type === 'Marker' || (element.id.indexOf('_Pointer_NeedleCap') >= 0)) {\n _this.gauge.trigger(animationComplete, { axis: axis, pointer: pointer });\n }\n if (!isNullOrUndefined(_this.gauge.loadingAnimationDuration) && _this.gauge.loadingAnimationDuration[axisIndex] > 0 && !isNullOrUndefined(_this.gauge.annotationsModule)) {\n _this.gauge.annotationsModule.annotationAnimation(_this.gauge);\n }\n else {\n _this.gauge.isOverAllAnimationComplete = true;\n }\n }\n });\n };\n /**\n * Perform the range bar pointer animation for circular gauge.\n *\n * @param {HTMLElement} element - Specifies the element.\n * @param {number} start - Specifies the start.\n * @param {number} end - Specifies the end.\n * @param {Axis} axis - Specifies the axis.\n * @param {Pointer} pointer - Specifies the pointer.\n * @param {number} axisIndex - Specifies the axis index.\n * @returns {void}\n * @private\n */\n PointerRenderer.prototype.performRangeBarAnimation = function (element, start, end, axis, pointer, axisIndex) {\n var _this = this;\n start = typeof (start) === 'string' ? parseInt(start, 10) : start;\n end = typeof (end) === 'string' ? parseInt(end, 10) : end;\n var pointerValue;\n var timeStamp;\n element.style.visibility = 'visible';\n var val = Math.abs(start - end);\n new Animation({}).animate(element, {\n duration: this.gauge.isAnimationProgress ? (isNullOrUndefined(pointer.value) || pointer.value === axis.minimum ? 0 :\n (animationMode === 'Enable' && (((!pointer.animation.enable || pointer.animation.duration === 0)\n && !this.gauge.allowLoadingAnimation) || (this.gauge.allowLoadingAnimation && (this.gauge.animationDuration === 0\n && pointer.animation.enable && pointer.animation.duration === 0)))) ? 1000 :\n (this.gauge.allowLoadingAnimation ? (pointer.animation.enable && pointer.animation.duration > 0 ? pointer.animation.duration\n : this.gauge.loadingAnimationDuration[axisIndex]) : pointer.animation.duration)) : 0,\n progress: function (arg) {\n if (_this.gauge.isAnimationProgress) {\n arg.duration = !_this.gauge.isAnimationProgress ? 0 : arg.duration;\n timeStamp = (arg.timeStamp / arg.duration);\n pointerValue = end > start ? start + (timeStamp * val) : start - (timeStamp * val);\n _this.setPointerValue(axis, pointer, pointerValue);\n }\n },\n end: function () {\n if (_this.gauge.isAnimationProgress) {\n _this.setPointerValue(axis, pointer, end);\n pointer.isPointerAnimation = false;\n }\n _this.gauge.trigger(animationComplete, { axis: axis, pointer: pointer });\n if (!isNullOrUndefined(_this.gauge.loadingAnimationDuration) && _this.gauge.loadingAnimationDuration[axisIndex] > 0 && !isNullOrUndefined(_this.gauge.annotationsModule)) {\n _this.gauge.annotationsModule.annotationAnimation(_this.gauge);\n }\n else {\n _this.gauge.isOverAllAnimationComplete = true;\n }\n }\n });\n };\n /**\n *\n * @returns {void}\n * @private\n */\n PointerRenderer.prototype.destroy = function () {\n this.gauge = null;\n };\n return PointerRenderer;\n}());\nexport { PointerRenderer };\n","/**\n * public Enum for `PdfPageOrientation`.\n * @private\n */\nexport var PdfPageOrientation;\n(function (PdfPageOrientation) {\n /**\n * Specifies the type of `Portrait`.\n * @private\n */\n PdfPageOrientation[PdfPageOrientation[\"Portrait\"] = 0] = \"Portrait\";\n /**\n * Specifies the type of `Landscape`.\n * @private\n */\n PdfPageOrientation[PdfPageOrientation[\"Landscape\"] = 1] = \"Landscape\";\n})(PdfPageOrientation || (PdfPageOrientation = {}));\n/**\n * public Enum for `PdfPageRotateAngle`.\n * @private\n */\nexport var PdfPageRotateAngle;\n(function (PdfPageRotateAngle) {\n /**\n * Specifies the type of `RotateAngle0`.\n * @private\n */\n PdfPageRotateAngle[PdfPageRotateAngle[\"RotateAngle0\"] = 0] = \"RotateAngle0\";\n /**\n * Specifies the type of `RotateAngle90`.\n * @private\n */\n PdfPageRotateAngle[PdfPageRotateAngle[\"RotateAngle90\"] = 1] = \"RotateAngle90\";\n /**\n * Specifies the type of `RotateAngle180`.\n * @private\n */\n PdfPageRotateAngle[PdfPageRotateAngle[\"RotateAngle180\"] = 2] = \"RotateAngle180\";\n /**\n * Specifies the type of `RotateAngle270`.\n * @private\n */\n PdfPageRotateAngle[PdfPageRotateAngle[\"RotateAngle270\"] = 3] = \"RotateAngle270\";\n})(PdfPageRotateAngle || (PdfPageRotateAngle = {}));\n/**\n * public Enum for `PdfNumberStyle`.\n * @private\n */\nexport var PdfNumberStyle;\n(function (PdfNumberStyle) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Numeric`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"Numeric\"] = 1] = \"Numeric\";\n /**\n * Specifies the type of `LowerLatin`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"LowerLatin\"] = 2] = \"LowerLatin\";\n /**\n * Specifies the type of `LowerRoman`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"LowerRoman\"] = 3] = \"LowerRoman\";\n /**\n * Specifies the type of `UpperLatin`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"UpperLatin\"] = 4] = \"UpperLatin\";\n /**\n * Specifies the type of `UpperRoman`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"UpperRoman\"] = 5] = \"UpperRoman\";\n})(PdfNumberStyle || (PdfNumberStyle = {}));\n/**\n * public Enum for `PdfDockStyle`.\n * @private\n */\nexport var PdfDockStyle;\n(function (PdfDockStyle) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Bottom`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Bottom\"] = 1] = \"Bottom\";\n /**\n * Specifies the type of `Top`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Top\"] = 2] = \"Top\";\n /**\n * Specifies the type of `Left`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Left\"] = 3] = \"Left\";\n /**\n * Specifies the type of `Right`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Right\"] = 4] = \"Right\";\n /**\n * Specifies the type of `Fill`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Fill\"] = 5] = \"Fill\";\n})(PdfDockStyle || (PdfDockStyle = {}));\n/**\n * public Enum for `PdfAlignmentStyle`.\n * @private\n */\nexport var PdfAlignmentStyle;\n(function (PdfAlignmentStyle) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `TopLeft`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"TopLeft\"] = 1] = \"TopLeft\";\n /**\n * Specifies the type of `TopCenter`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"TopCenter\"] = 2] = \"TopCenter\";\n /**\n * Specifies the type of `TopRight`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"TopRight\"] = 3] = \"TopRight\";\n /**\n * Specifies the type of `MiddleLeft`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"MiddleLeft\"] = 4] = \"MiddleLeft\";\n /**\n * Specifies the type of `MiddleCenter`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"MiddleCenter\"] = 5] = \"MiddleCenter\";\n /**\n * Specifies the type of `MiddleRight`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"MiddleRight\"] = 6] = \"MiddleRight\";\n /**\n * Specifies the type of `BottomLeft`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"BottomLeft\"] = 7] = \"BottomLeft\";\n /**\n * Specifies the type of `BottomCenter`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"BottomCenter\"] = 8] = \"BottomCenter\";\n /**\n * Specifies the type of `BottomRight`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"BottomRight\"] = 9] = \"BottomRight\";\n})(PdfAlignmentStyle || (PdfAlignmentStyle = {}));\n/**\n * public Enum for `TemplateType`.\n * @private\n */\nexport var TemplateType;\n(function (TemplateType) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n TemplateType[TemplateType[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Top`.\n * @private\n */\n TemplateType[TemplateType[\"Top\"] = 1] = \"Top\";\n /**\n * Specifies the type of `Bottom`.\n * @private\n */\n TemplateType[TemplateType[\"Bottom\"] = 2] = \"Bottom\";\n /**\n * Specifies the type of `Left`.\n * @private\n */\n TemplateType[TemplateType[\"Left\"] = 3] = \"Left\";\n /**\n * Specifies the type of `Right`.\n * @private\n */\n TemplateType[TemplateType[\"Right\"] = 4] = \"Right\";\n})(TemplateType || (TemplateType = {}));\n","import { createElement, isNullOrUndefined, Animation, animationMode } from '@syncfusion/ej2-base';\nimport { stringToNumber, measureText, getLocationFromAngle, getLabelFormat, VisibleLabels, isCompleteAngle, Size, Rect, getPathArc, getAngleFromValue } from '../utils/helper-common';\nimport { calculateSum } from '../utils/helper-axis-panel';\nimport { axisLabelRender, radiusCalculate } from '../model/constants';\nimport { AxisRenderer } from './axis-renderer';\nimport { PointerRenderer } from './pointer-renderer';\nimport { getCompleteArc } from '../utils/helper-pointer-renderer';\n/**\n * Specifies the CircularGauge Axis Layout.\n */\nvar AxisLayoutPanel = /** @class */ (function () {\n function AxisLayoutPanel(gauge) {\n this.axisOption = [];\n this.prevAnimatedMajorTickValue = [];\n this.prevAnimatedMajorTickIndex = [];\n this.prevAnimatedMinorTickValue = [];\n this.prevAnimatedMinorTickIndex = [];\n this.allowAxisCount = [];\n this.rangeAnimationCount = 0;\n this.gauge = gauge;\n this.axisRenderer = new AxisRenderer(gauge);\n this.pointerRenderer = new PointerRenderer(gauge);\n }\n /**\n * Measure the calculate the axis size and radius.\n *\n * @return {void}\n * @private\n */\n AxisLayoutPanel.prototype.measureAxis = function (rect) {\n this.measureAxisSize(this.gauge, rect);\n this.calculateAxesRadius();\n };\n /**\n * Measure to calculate the axis radius of the circular gauge.\n *\n * @returns {void}\n * @private\n */\n AxisLayoutPanel.prototype.calculateAxesRadius = function () {\n var _this = this;\n var totalRadius;\n var currentRadius;\n var rangeMaximumRadius = 0;\n var xMarginDiff = this.gauge.margin.left + this.gauge.margin.right;\n var yMarginDiff = this.gauge.margin.top + this.gauge.margin.bottom;\n var _loop_1 = function (axis) {\n totalRadius = (Math.min(axis.rect.width, axis.rect.height) / 2);\n currentRadius = axis.radius != null ? stringToNumber(axis.radius, totalRadius) : totalRadius;\n // eslint-disable-next-line prefer-spread\n rangeMaximumRadius = Math.max.apply(Math, axis.ranges.map(function (value) {\n return value.radius ?\n (value.radius.indexOf('%') < 0 ? 100 : parseInt(value.radius, 10)) : 0;\n }));\n currentRadius = (rangeMaximumRadius > 100 && axis.radius == null) ?\n (currentRadius * 100) / rangeMaximumRadius : currentRadius;\n axis.currentRadius = currentRadius - axis.nearSize;\n if (this_1.gauge.moveToCenter && this_1.gauge.axes.length === 1 &&\n isNullOrUndefined(this_1.gauge.centerXpoint) && isNullOrUndefined(this_1.gauge.centerYpoint)) {\n var endAngle = void 0;\n var startAngle = axis.startAngle;\n var startPoint = getLocationFromAngle(startAngle - 90, currentRadius, this_1.gauge.midPoint);\n endAngle = axis.endAngle;\n endAngle -= isCompleteAngle(startAngle, endAngle) ? 0.0001 : 0;\n var endPoint = getLocationFromAngle(endAngle - 90, currentRadius, this_1.gauge.midPoint);\n var xDiff = void 0;\n var yDiff = void 0;\n var startXDiff = void 0;\n var endXDiff = void 0;\n var startYDiff = void 0;\n var endYDiff = void 0;\n var newPoint = void 0;\n if (startAngle > endAngle ? Math.abs(startAngle - endAngle) > 90 ? true : false : true) {\n if ((startAngle >= 270 && startAngle <= 360) && ((endAngle > 270 && endAngle <= 360) ||\n (endAngle >= 0 && endAngle <= 180))) {\n startXDiff = Math.abs(this_1.gauge.gaugeRect.x - Math.abs(startPoint.x - this_1.gauge.gaugeRect.x));\n newPoint = (endAngle <= 360 && endAngle >= 270) ? this_1.gauge.midPoint : (endAngle <= 90) ? endPoint :\n getLocationFromAngle(90 - 90, currentRadius, this_1.gauge.midPoint);\n endXDiff = Math.abs(newPoint.x - this_1.gauge.gaugeRect.width);\n startPoint = (endAngle <= 360 && endAngle >= 270) ? endPoint :\n getLocationFromAngle(360 - 90, currentRadius, this_1.gauge.midPoint);\n startYDiff = Math.abs(startPoint.y - this_1.gauge.gaugeRect.y);\n endPoint = (endAngle <= 360 && endAngle >= 270 || (endAngle >= 0 && endAngle < 90)) ?\n this_1.gauge.midPoint : (endAngle >= 90 && endAngle <= 180) ? endPoint :\n getLocationFromAngle(180 - 90, currentRadius, this_1.gauge.midPoint);\n endYDiff = Math.abs(endPoint.y - (this_1.gauge.gaugeRect.y + this_1.gauge.gaugeRect.height));\n }\n else if ((startAngle >= 0 && startAngle < 90) && (endAngle >= 0 && endAngle <= 270)) {\n startYDiff = Math.abs(startPoint.y - this_1.gauge.gaugeRect.y);\n newPoint = (endAngle >= 180) ? getLocationFromAngle(180 - 90, currentRadius, this_1.gauge.midPoint) :\n endPoint;\n endYDiff = Math.abs(newPoint.y - (this_1.gauge.gaugeRect.y + this_1.gauge.gaugeRect.height));\n startPoint = (endAngle >= 180) ? endPoint : this_1.gauge.midPoint;\n startXDiff = Math.abs(this_1.gauge.gaugeRect.x - Math.abs(startPoint.x - this_1.gauge.gaugeRect.x));\n endPoint = (endAngle >= 90) ? getLocationFromAngle(90 - 90, currentRadius, this_1.gauge.midPoint) : endPoint;\n endXDiff = Math.abs(endPoint.x - this_1.gauge.gaugeRect.width);\n }\n else if ((startAngle >= 90 && startAngle < 180) && (endAngle > 90 && endAngle <= 360)) {\n newPoint = (endAngle <= 180) ? this_1.gauge.midPoint : (endAngle >= 270) ?\n getLocationFromAngle(270 - 90, currentRadius, this_1.gauge.midPoint) : endPoint;\n startXDiff = Math.abs(newPoint.x - this_1.gauge.gaugeRect.x);\n endXDiff = Math.abs(startPoint.x - this_1.gauge.gaugeRect.width);\n startPoint = (endAngle > 270) ? getLocationFromAngle(endAngle - 90, currentRadius, this_1.gauge.midPoint) :\n this_1.gauge.midPoint;\n startYDiff = Math.abs(this_1.gauge.gaugeRect.y - startPoint.y);\n endPoint = (endAngle >= 180) ? getLocationFromAngle(180 - 90, currentRadius, this_1.gauge.midPoint) : endPoint;\n endYDiff = Math.abs(endPoint.y - (this_1.gauge.gaugeRect.y + this_1.gauge.gaugeRect.height));\n }\n else if ((startAngle >= 180 && startAngle <= 270) && ((endAngle <= 360 && endAngle >= 270) ||\n (endAngle <= 180 && endAngle >= 0))) {\n newPoint = (endAngle > 180 && endAngle < 270) ? endPoint :\n getLocationFromAngle(270 - 90, currentRadius, this_1.gauge.midPoint);\n startXDiff = Math.abs(this_1.gauge.gaugeRect.x - Math.abs(newPoint.x - this_1.gauge.gaugeRect.x));\n newPoint = (endAngle >= 180 && endAngle <= 360) ? this_1.gauge.midPoint : (endAngle <= 90) ? endPoint :\n getLocationFromAngle(0, currentRadius, this_1.gauge.midPoint);\n endXDiff = Math.abs(newPoint.x - this_1.gauge.gaugeRect.width);\n newPoint = (endAngle > 180 && endAngle < 270) ? this_1.gauge.midPoint : (endAngle >= 270 && endAngle <= 360) ?\n endPoint : getLocationFromAngle(360 - 90, currentRadius, this_1.gauge.midPoint);\n startYDiff = Math.abs(newPoint.y - this_1.gauge.gaugeRect.y);\n endPoint = (endAngle <= 360 && endAngle >= 270 || (endAngle >= 0 && endAngle < 90)) ?\n startPoint : ((270 - startAngle) < (endAngle - 90)) ? endPoint : startPoint;\n endYDiff = Math.abs(endPoint.y - (this_1.gauge.gaugeRect.y + this_1.gauge.gaugeRect.height));\n }\n if ((!isNullOrUndefined(startXDiff) && !isNullOrUndefined(endXDiff) && !isNullOrUndefined(startYDiff) &&\n !isNullOrUndefined(endYDiff)) && ((startXDiff > 0 || endXDiff > 0) && (startYDiff > 0 || endYDiff > 0))) {\n xDiff = Math.abs((startXDiff + endXDiff) - xMarginDiff);\n yDiff = Math.abs((startYDiff + endYDiff) - yMarginDiff);\n this_1.gauge.midPoint.x = this_1.gauge.midPoint.x - (startXDiff / 2) + (endXDiff / 2);\n this_1.gauge.midPoint.y = this_1.gauge.midPoint.y - (startYDiff / 2) + (endYDiff / 2);\n totalRadius = (Math.min(this_1.gauge.gaugeRect.width, this_1.gauge.gaugeRect.height) / 2) +\n (Math.min(xDiff, yDiff) / 2);\n axis.currentRadius = (axis.radius != null ? stringToNumber(axis.radius, totalRadius) : totalRadius) - axis.nearSize;\n }\n }\n }\n axis.visibleRange.interval = this_1.calculateNumericInterval(axis, axis.rect);\n var args = {\n cancel: false, name: radiusCalculate, currentRadius: axis.currentRadius, gauge: this_1.gauge,\n midPoint: this_1.gauge.midPoint, axis: axis\n };\n this_1.gauge.trigger('radiusCalculate', args, function () {\n axis.currentRadius = args.currentRadius;\n _this.gauge.midPoint = args.midPoint;\n _this.calculateVisibleLabels(axis);\n });\n };\n var this_1 = this;\n for (var _i = 0, _a = this.gauge.axes; _i < _a.length; _i++) {\n var axis = _a[_i];\n _loop_1(axis);\n }\n };\n /**\n * Measure to calculate the axis size.\n *\n * @return {void}\n * @private\n */\n AxisLayoutPanel.prototype.measureAxisSize = function (gauge, rect) {\n var _this = this;\n var sum;\n this.computeSize(gauge.axes, rect);\n gauge.axes.map(function (axis, index) {\n sum = calculateSum(index, _this.farSizes.length - 1, _this.farSizes);\n axis.rect = new Rect(rect.x + sum, rect.y + sum, rect.width - (sum * 2), rect.height - (sum * 2));\n });\n };\n /**\n * Calculate the axis values of the circular gauge.\n *\n * @return {void}\n * @private\n */\n AxisLayoutPanel.prototype.calculateAxisValues = function (rect) {\n for (var _i = 0, _a = this.gauge.axes; _i < _a.length; _i++) {\n var axis = _a[_i];\n this.calculateVisibleRange(axis, rect);\n this.calculateVisibleLabels(axis);\n }\n };\n /**\n * Calculate the visible range of an axis.\n *\n * @param {Axis} axis - Specifies the axis.\n * @param {Rect} rect - Specifies the rect.\n * @returns {void}\n * @private\n */\n AxisLayoutPanel.prototype.calculateVisibleRange = function (axis, rect) {\n var interval = axis.majorTicks.interval;\n var minimumValue = Math.min(axis.minimum === null ? 0 : axis.minimum, axis.maximum !== null ? axis.maximum : 100);\n var maximumValue = Math.max(axis.minimum, axis.maximum === null ? 100 : axis.maximum);\n axis.pointers.map(function (pointer) {\n pointer.currentValue = pointer.value !== null ?\n pointer.value < minimumValue ? minimumValue : pointer.value > maximumValue ? maximumValue : pointer.value\n : minimumValue;\n minimumValue = axis.minimum === null ? Math.min(pointer.currentValue, minimumValue) : minimumValue;\n maximumValue = axis.maximum === null ? Math.max(pointer.currentValue, maximumValue) : maximumValue;\n });\n minimumValue = (minimumValue === maximumValue) ?\n (interval !== null ? minimumValue - interval : minimumValue - 1) : minimumValue;\n axis.visibleRange = { min: minimumValue, max: maximumValue, interval: interval };\n axis.visibleRange.interval = this.calculateNumericInterval(axis, rect);\n };\n /**\n * Calculate the numeric intervals of an axis range.\n *\n * @return {void}\n * @private\n */\n AxisLayoutPanel.prototype.calculateNumericInterval = function (axis, rect) {\n var allowComponentRender = ((!isNullOrUndefined(axis.minimum) && !isNullOrUndefined(axis.maximum)\n && axis.minimum !== axis.maximum) || (isNullOrUndefined(axis.minimum) || isNullOrUndefined(axis.maximum)));\n if (!allowComponentRender) {\n return 0;\n }\n else if (axis.majorTicks.interval !== null) {\n return axis.majorTicks.interval;\n }\n var totalAngle = axis.endAngle - axis.startAngle;\n totalAngle = totalAngle <= 0 ? (totalAngle + 360) : totalAngle;\n return this.calculateNiceInterval(axis.visibleRange.max, axis.visibleRange.min, axis.currentRadius ? axis.currentRadius : (rect.width / 2), totalAngle);\n };\n /**\n * Calculate the nice interval of an axis range.\n *\n * @return {void}\n * @private\n */\n AxisLayoutPanel.prototype.calculateNiceInterval = function (maxValue, minValue, radius, degree) {\n var delta = maxValue - minValue;\n var circumference = 2 * Math.PI * radius * (degree / 360);\n var desiredIntervalsCount = Math.max((circumference * ((0.533 * 3) / 100)), 1);\n var niceInterval = delta / desiredIntervalsCount;\n var minInterval = Math.pow(10, Math.floor(Math.log(niceInterval) / Math.log(10)));\n for (var _i = 0, _a = [10, 5, 2, 1]; _i < _a.length; _i++) {\n var interval = _a[_i];\n var currentInterval = minInterval * interval;\n if (desiredIntervalsCount < (delta / currentInterval)) {\n break;\n }\n niceInterval = currentInterval;\n }\n return niceInterval;\n };\n /**\n * Calculate the visible labels of an axis.\n *\n * @return {void}\n * @private\n */\n AxisLayoutPanel.prototype.calculateVisibleLabels = function (axis) {\n var style = axis.labelStyle;\n var customLabelFormat = style.format && style.format.match('{value}') !== null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var format = this.gauge.intl.getNumberFormat({\n format: getLabelFormat(style.format), useGrouping: this.gauge.useGroupingSeparator\n });\n var argsData;\n axis.visibleLabels = [];\n var roundValue;\n var interval = axis.visibleRange.interval;\n var max = axis.visibleRange.max;\n if ((isNullOrUndefined(axis.minimum) && isNullOrUndefined(axis.maximum)) || axis.minimum !== axis.maximum) {\n var _loop_2 = function (i) {\n roundValue = axis.roundingPlaces ? parseFloat(i.toFixed(axis.roundingPlaces)) : i;\n argsData = {\n cancel: false, name: axisLabelRender, axis: axis,\n text: customLabelFormat ? style.format.replace(new RegExp('{value}', 'g'), format(roundValue)) :\n format(roundValue),\n value: roundValue\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var axisLabelRenderSuccess = function (argsData) {\n if (!argsData.cancel) {\n axis.visibleLabels.push(new VisibleLabels(argsData.text, i));\n }\n };\n axisLabelRenderSuccess.bind(this_2);\n this_2.gauge.trigger(axisLabelRender, argsData, axisLabelRenderSuccess);\n };\n var this_2 = this;\n for (var i = axis.visibleRange.min; (i <= max && interval); i += interval) {\n _loop_2(i);\n }\n }\n var lastLabel = axis.visibleLabels.length ? axis.visibleLabels[axis.visibleLabels.length - 1].value : null;\n var maxVal = axis.visibleRange.max;\n if (!isNullOrUndefined(lastLabel) && lastLabel !== maxVal && axis.showLastLabel === true) {\n argsData = {\n cancel: false, name: axisLabelRender, axis: axis,\n text: customLabelFormat ? style.format.replace(new RegExp('{value}', 'g'), format(maxVal)) :\n format(maxVal),\n value: maxVal\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var axisLabelRenderSuccess = function (argsData) {\n if (!argsData.cancel) {\n axis.visibleLabels.push(new VisibleLabels(argsData.text, maxVal));\n }\n };\n axisLabelRenderSuccess.bind(this);\n this.gauge.trigger(axisLabelRender, argsData, axisLabelRenderSuccess);\n }\n this.getMaxLabelWidth(this.gauge, axis);\n };\n /**\n * Measure the axes available size.\n *\n * @return {void}\n * @private\n */\n AxisLayoutPanel.prototype.computeSize = function (axes, rect) {\n var lineSize;\n var outerHeight;\n var innerHeight;\n var heightForCross;\n var axisPadding = 5;\n var majorTickOffset = 0;\n var minorTickOffset = 0;\n var labelOffset = 0;\n var labelPadding = 10;\n this.farSizes = [];\n this.calculateAxisValues(rect);\n for (var _i = 0, axes_1 = axes; _i < axes_1.length; _i++) {\n var axis = axes_1[_i];\n lineSize = (axis.lineStyle.width / 2);\n outerHeight = 0;\n innerHeight = 0;\n heightForCross = axis.majorTicks.position === 'Cross' ? axis.majorTicks.height / 2 : heightForCross;\n heightForCross = (axis.minorTicks.position === 'Cross' && heightForCross < axis.minorTicks.height / 2) ?\n axis.minorTicks.height / 2 : heightForCross;\n heightForCross = (axis.labelStyle.position === 'Cross' && heightForCross < axis.maxLabelSize.height / 2) ?\n axis.maxLabelSize.height / 2 : heightForCross;\n lineSize = lineSize < heightForCross ? heightForCross : lineSize;\n majorTickOffset = axis.majorTicks.offset;\n minorTickOffset = axis.minorTicks.offset;\n labelOffset = axis.labelStyle.offset;\n labelPadding = axis.labelStyle.shouldMaintainPadding ? 10 : 0;\n // Calculating the outer space of the axis\n outerHeight += !(axis.majorTicks.position === 'Outside' && axis.minorTicks.position === 'Outside' &&\n axis.labelStyle.position === 'Outside') ? axisPadding : 0;\n outerHeight += (axis.majorTicks.position === 'Outside' ? (axis.majorTicks.height + lineSize) : 0) +\n (axis.labelStyle.position === 'Outside' ? (axis.maxLabelSize.height + labelOffset + labelPadding) : 0) +\n ((axis.minorTicks.position === 'Outside' && !(axis.majorTicks.position === 'Outside')) ?\n (axis.minorTicks.height + lineSize) : 0) + lineSize;\n outerHeight += (axis.majorTicks.position === 'Outside' && axis.minorTicks.position === 'Outside') ?\n Math.max(majorTickOffset, minorTickOffset) : (axis.majorTicks.position === 'Outside' ?\n majorTickOffset : axis.minorTicks.position === 'Outside' ? minorTickOffset : 0);\n // Calculating the inner space of the axis\n innerHeight += ((axis.majorTicks.position === 'Inside') ? (axis.majorTicks.height + lineSize) : 0) +\n ((axis.labelStyle.position === 'Inside') ? (axis.maxLabelSize.height + labelOffset + labelPadding) : 0) +\n ((axis.minorTicks.position === 'Inside' && axis.majorTicks.position === 'Outside') ?\n (axis.minorTicks.height + lineSize) : 0) + lineSize;\n innerHeight += ((axis.majorTicks.position === 'Inside') && (axis.minorTicks.position === 'Inside')) ?\n Math.max(majorTickOffset, minorTickOffset) : ((axis.majorTicks.position === 'Inside') ?\n majorTickOffset : (axis.minorTicks.position === 'Inside') ? minorTickOffset : 0);\n if (this.farSizes[this.farSizes.length - 1]) {\n this.farSizes[this.farSizes.length - 1] += (innerHeight + outerHeight);\n }\n axis.nearSize = outerHeight - axisPadding;\n axis.farSize = innerHeight;\n outerHeight = (this.gauge.axes.length === (this.farSizes.length + 1)) ? 0 : outerHeight;\n this.farSizes.push(outerHeight);\n }\n };\n /**\n * To render the Axis element of the circular gauge.\n *\n * @return {void}\n * @private\n */\n AxisLayoutPanel.prototype.renderAxes = function (animate) {\n var _this = this;\n if (animate === void 0) { animate = true; }\n var gauge = this.gauge;\n var renderer = this.axisRenderer;\n var element;\n var axesElements = gauge.renderer.createGroup({\n 'id': gauge.element.id + '_AxesCollection',\n 'clip-path': 'url(#' + gauge.element.id + '_GaugeAreaClipRect_' + ')'\n });\n // To append the secondary element for annotation and tooltip\n var annotationElement = createElement('div', {\n id: gauge.element.id + '_Secondary_Element'\n });\n annotationElement.style.position = 'relative';\n gauge.element.appendChild(annotationElement);\n gauge.axes.map(function (axis, index) {\n element = gauge.renderer.createGroup({\n id: gauge.element.id + '_Axis_Group_' + index\n });\n _this.gauge.allowComponentRender = ((!isNullOrUndefined(axis.minimum) && !isNullOrUndefined(axis.maximum)\n && axis.minimum !== axis.maximum) || (isNullOrUndefined(axis.minimum) || isNullOrUndefined(axis.maximum)));\n renderer.checkAngles(axis);\n renderer.drawAxisOuterLine(axis, index, element, gauge);\n if (gauge.allowRangePreRender) {\n renderer.drawAxisRange(axis, index, element);\n }\n renderer.drawAxisLine(axis, index, element, gauge);\n if (!gauge.allowRangePreRender) {\n renderer.drawAxisRange(axis, index, element);\n }\n renderer.drawMajorTickLines(axis, index, element, gauge);\n renderer.drawMinorTickLines(axis, index, element, gauge);\n renderer.drawAxisLabels(axis, index, element, gauge);\n _this.pointerRenderer.drawPointers(axis, index, element, gauge, animate);\n if (gauge.annotationsModule) {\n gauge.annotationsModule.renderAnnotation(axis, index, gauge);\n }\n axesElements.appendChild(element);\n });\n // For append clip rect for axes\n gauge.svgObject.appendChild(gauge.renderer.drawClipPath({\n 'id': gauge.element.id + '_GaugeAreaClipRect_',\n 'x': 0, 'y': 0,\n 'width': gauge.availableSize.width,\n 'height': gauge.availableSize.height,\n 'fill': 'transparent', 'stroke': 'transparent'\n }));\n gauge.svgObject.appendChild(axesElements);\n if (gauge.allowLoadingAnimation) {\n this.durationSplitUp((gauge.animationDuration === 0 && animationMode === 'Enable') ? 3000 : gauge.animationDuration, axesElements);\n }\n };\n AxisLayoutPanel.prototype.labelElementAnimation = function (element, axisIndex) {\n var _this = this;\n if (element) {\n new Animation({}).animate(element, {\n duration: this.gauge.loadingAnimationDuration[axisIndex],\n progress: function () {\n element.style.visibility = 'visible';\n },\n end: function () {\n element.style.visibility = 'visible';\n var axisElement = document.getElementById(_this.gauge.element.id + '_Axis_Labels_' + axisIndex);\n if (_this.gauge.axes[axisIndex].showLastLabel && parseInt(element.id.split('Label_')[1], 10) === (axisElement.childElementCount - 2)) {\n axisElement.style.visibility = 'visible';\n element = document.getElementById(_this.gauge.element.id + '_Axis_' + axisIndex + '_Label_' + (axisElement.childElementCount - 1));\n if (element) {\n element.style.visibility = 'visible';\n }\n }\n }\n });\n }\n };\n AxisLayoutPanel.prototype.elementLabelAnimation = function (element, axisIndex, tickIndex, gauge) {\n var _this = this;\n if (element) {\n new Animation({}).animate(element, {\n duration: gauge.axes[axisIndex].labelStyle.font.size != null &&\n (gauge.axes[axisIndex].labelStyle.font.size === '0px' || gauge.axes[axisIndex].labelStyle.font.size === '0') ? 0 :\n ((gauge.loadingAnimationDuration[axisIndex] / this.axisOption[axisIndex].axisLabelCount)),\n progress: function () {\n element.style.visibility = 'visible';\n },\n end: function () {\n tickIndex += 1;\n _this.elementLabelAnimation(document.getElementById(gauge.element.id + '_Axis_' + axisIndex + '_Label_' + tickIndex), axisIndex, tickIndex, gauge);\n var axisElement = document.getElementById(_this.gauge.element.id + '_Axis_Labels_' + axisIndex);\n if (_this.gauge.axes[axisIndex].showLastLabel && parseInt(element.id.split('Label_')[1], 10) === (axisElement.childElementCount - 2)) {\n element = document.getElementById(_this.gauge.element.id + '_Axis_' + axisIndex + '_Label_' + (axisElement.childElementCount - 1));\n if (element) {\n element.style.visibility = 'visible';\n }\n axisElement.style.visibility = 'visible';\n }\n if (_this.rangeAnimationCount === 0 && (_this.axisOption[axisIndex].axisLabelCount - 1) === tickIndex) {\n axisElement.style.visibility = 'visible';\n _this.rangeAnimationCount++;\n _this.rangeAnimation(gauge);\n }\n }\n });\n }\n };\n AxisLayoutPanel.prototype.axisLineCalculation = function (axisElement, axis, value, gauge) {\n var checkMinValue = value === axis.visibleRange.min;\n var location = gauge.midPoint;\n var isClockWise = axis.direction === 'ClockWise';\n var axisWidth = axis.lineStyle.width / 2;\n var startAngle = getAngleFromValue(axis.visibleRange.min, axis.visibleRange.max, axis.visibleRange.min, axis.startAngle, axis.endAngle, isClockWise);\n var endAngle = getAngleFromValue(value, axis.visibleRange.max, axis.visibleRange.min, axis.startAngle, axis.endAngle, isClockWise);\n if (isClockWise) {\n if (startAngle > endAngle) {\n endAngle = Math.round(startAngle) === Math.round(endAngle) && !checkMinValue ?\n Math.round(endAngle) - 0.5 : Math.round(endAngle);\n }\n else {\n endAngle = startAngle === endAngle && !checkMinValue ? endAngle + 1 : endAngle;\n }\n }\n else {\n endAngle = Math.round(startAngle) === Math.round(endAngle) && !checkMinValue ?\n [startAngle, startAngle = (endAngle > startAngle ? endAngle + 0.5 : endAngle - 1)][0]\n : [startAngle, startAngle = endAngle][0];\n }\n axisElement.setAttribute('d', getCompleteArc(location, startAngle, endAngle, (axis.currentRadius + axisWidth), (axis.currentRadius - axisWidth), checkMinValue));\n };\n AxisLayoutPanel.prototype.axisLineAnimation = function (axisIndex, duration, gauge) {\n var _this = this;\n // eslint-disable-next-line\n var axis = gauge.axes[axisIndex];\n this.prevAnimatedMajorTickValue.push(axis.minimum);\n this.prevAnimatedMinorTickValue.push(axis.minimum);\n this.prevAnimatedMinorTickIndex.push(0);\n this.prevAnimatedMajorTickIndex.push(0);\n this.prevAnimatedTickType = 'major';\n if (this.axisOption[axisIndex].isAxisLine) {\n var axisElement_1 = document.getElementById(gauge.element.id + '_AxisLine_' + axisIndex);\n var start_1 = axis.visibleRange.min;\n var end_1 = axis.visibleRange.max;\n var pointerValue_1;\n var timeStamp_1;\n var val_1 = Math.abs(start_1 - end_1);\n new Animation({}).animate(axisElement_1, {\n duration: duration,\n progress: function (arg) {\n axisElement_1.style.visibility = 'visible';\n axisElement_1.setAttribute('fill', axis.lineStyle.color);\n axisElement_1.setAttribute('stroke-width', '0');\n timeStamp_1 = (arg.timeStamp / arg.duration);\n pointerValue_1 = end_1 > start_1 ? start_1 + (timeStamp_1 * val_1) : start_1 - (timeStamp_1 * val_1);\n _this.axisLineCalculation(axisElement_1, axis, pointerValue_1, gauge);\n },\n end: function () {\n axisElement_1.setAttribute('fill', 'transparent');\n axisElement_1.setAttribute('stroke-width', axis.lineStyle.width.toString());\n axisElement_1.setAttribute('d', getPathArc(gauge.midPoint, axis.startAngle - 90, axis.endAngle - 90, axis.currentRadius));\n axisElement_1.style.visibility = 'visible';\n _this.axisAnimation(axisIndex, duration, gauge);\n }\n });\n }\n else if (this.axisOption[axisIndex].isMajorTick || this.axisOption[axisIndex].isMinorTick) {\n if (this.axisOption[axisIndex].isMajorTick || (this.axisOption[axisIndex].isMajorTick &&\n this.axisOption[axisIndex].isMinorTick)) {\n this.tickElementAnimation(document.getElementById(gauge.element.id + '_Axis_Major_TickLine_' + axisIndex + '_' + 0), document.getElementById(gauge.element.id + '_Axis_' + axisIndex + '_Label_' + 0), duration, axisIndex, this.axisOption[axisIndex].isMajorTick &&\n this.axisOption[axisIndex].isMinorTick\n ? 0 : -1, 'major', this.axisOption[axisIndex], gauge);\n }\n else if (this.axisOption[axisIndex].isMinorTick) {\n this.tickElementAnimation(document.getElementById(gauge.element.id + '_Axis_Minor_TickLine_' + axisIndex + '_' + 0), document.getElementById(gauge.element.id + '_Axis_' + axisIndex + '_Label_' + 0), duration, axisIndex, -1, 'minor', this.axisOption[axisIndex], gauge);\n }\n }\n else if (!this.axisOption[axisIndex].isAxisLine) {\n this.labelRangeAnimation(gauge, axisIndex);\n }\n };\n AxisLayoutPanel.prototype.axisAnimation = function (axisIndex, duration, gauge) {\n var _this = this;\n var axisElement = document.getElementById(gauge.element.id + '_AxisLine_' + axisIndex);\n var axisOption = this.axisOption[axisIndex];\n new Animation({}).animate(axisElement, {\n duration: (this.axisOption[axisIndex].majorTickCount === 0 ? 0\n : duration / this.axisOption[axisIndex].majorTickCount),\n progress: function () {\n axisElement.style.visibility = 'visible';\n },\n end: function () {\n if (axisOption.isMajorTick) {\n _this.tickElementAnimation(document.getElementById(gauge.element.id + '_Axis_Major_TickLine_' + axisIndex + '_' + 0), document.getElementById(gauge.element.id + '_Axis_' + axisIndex + '_Label_' + 0), duration, axisIndex, axisOption.isMajorTick && axisOption.isMinorTick ? 0 : -1, 'major', axisOption, gauge);\n }\n else if (axisOption.isMinorTick) {\n _this.tickElementAnimation(document.getElementById(gauge.element.id + '_Axis_Minor_TickLine_' + axisIndex + '_' + 0), document.getElementById(gauge.element.id + '_Axis_' + axisIndex + '_Label_' + 0), duration, axisIndex, -1, 'minor', axisOption, gauge);\n }\n _this.labelRangeAnimation(gauge, axisIndex);\n }\n });\n };\n AxisLayoutPanel.prototype.tickElementAnimation = function (tickElement, labelElement, duration, axisIndex, \n // eslint-disable-next-line\n tickIndex, type, axis, gauge) {\n var _this = this;\n if (tickElement && this.gauge.isAnimationProgress) {\n new Animation({}).animate(tickElement, {\n duration: (axis.isMinorTick ? axis.minorTickCount === 0 ? 0\n : (duration / axis.minorTickCount) / this.allowAxisCount[axisIndex] :\n axis.majorTickCount === 0 ? 0 : (duration / axis.majorTickCount) / this.allowAxisCount[axisIndex]),\n progress: function () {\n tickElement.style.visibility = 'visible';\n },\n end: function () {\n if (axis.isMajorTick && axis.isMinorTick && gauge.allowLoadingAnimation && _this.gauge.isAnimationProgress) {\n tickElement.style.visibility = 'visible';\n var currentTickValue = parseFloat(tickElement.getAttribute('data-interval'));\n _this.prevAnimatedTickType = type;\n if (type === 'major') {\n _this.prevAnimatedMajorTickValue[axisIndex] = currentTickValue;\n _this.prevAnimatedMajorTickIndex[axisIndex] = tickIndex;\n }\n else {\n _this.prevAnimatedMinorTickValue[axisIndex] = currentTickValue;\n _this.prevAnimatedMinorTickIndex[axisIndex] = tickIndex;\n }\n var minorTickInterval = (gauge.axes[axisIndex].minorTicks.interval != null\n ? gauge.axes[axisIndex].minorTicks.interval :\n (gauge.axes[axisIndex].visibleRange.interval / 2));\n var minorTickValue = minorTickInterval < gauge.axes[axisIndex].visibleRange.interval ? currentTickValue +\n minorTickInterval : _this.prevAnimatedMinorTickValue[axisIndex] + minorTickInterval;\n var majorTickValue = _this.prevAnimatedMajorTickValue[axisIndex]\n + gauge.axes[axisIndex].visibleRange.interval;\n type = minorTickValue < majorTickValue ? 'minor' : 'major';\n if (type === 'major' && axis.majorTickCount !== axis.minorTickCount && tickIndex !== 0 && _this.prevAnimatedTickType === 'minor') {\n tickIndex = _this.prevAnimatedMajorTickIndex[axisIndex];\n }\n if (type === 'minor' && axis.majorTickCount !== axis.minorTickCount && tickIndex !== 0 && _this.prevAnimatedTickType === 'major') {\n tickIndex = _this.prevAnimatedMinorTickIndex[axisIndex];\n }\n tickIndex = type === 'minor' ? axis.majorTickCount === axis.minorTickCount ? tickIndex : (currentTickValue ===\n _this.prevAnimatedMajorTickValue[axisIndex] ? tickIndex : tickIndex + 1) : tickIndex + 1;\n tickElement = type === 'minor' ? document.getElementById(gauge.element.id + '_Axis_Minor_TickLine_' + axisIndex + '_' + tickIndex) :\n document.getElementById(gauge.element.id + '_Axis_Major_TickLine_' + axisIndex + '_' + tickIndex);\n labelElement = type === 'minor' ? null : document.getElementById(gauge.element.id + '_Axis_' + axisIndex + '_Label_' + tickIndex);\n if (type === 'major' || tickIndex === 0) {\n _this.labelElementAnimation(document.getElementById(gauge.element.id + '_Axis_' + axisIndex + '_Label_' + tickIndex), axisIndex);\n }\n _this.tickElementAnimation(tickElement, labelElement, duration, axisIndex, tickIndex, type, axis, gauge);\n if (_this.rangeAnimationCount === 0 && type === 'minor' && (tickIndex === axis.minorTickCount - 1 || tickIndex === axis.minorTickCount) && (gauge.axes.length - 1) === axisIndex) {\n _this.rangeAnimationCount++;\n _this.rangeAnimation(gauge);\n }\n }\n else if (gauge.allowLoadingAnimation && axis.isMajorTick && _this.gauge.isAnimationProgress) {\n tickElement.style.visibility = 'visible';\n type = 'major';\n tickIndex = tickIndex + 1;\n tickElement = document.getElementById(gauge.element.id + '_Axis_Major_TickLine_' + axisIndex + '_' + tickIndex);\n labelElement = document.getElementById(gauge.element.id + '_Axis_' + axisIndex + '_Label_' + tickIndex);\n _this.tickElementAnimation(tickElement, labelElement, duration, axisIndex, tickIndex, type, axis, gauge);\n if (type === 'major' || tickIndex === 0) {\n _this.labelElementAnimation(document.getElementById(gauge.element.id + '_Axis_' + axisIndex + '_Label_' + tickIndex), axisIndex);\n }\n if (_this.rangeAnimationCount === 0 && type === 'major' && tickIndex === axis.majorTickCount - 1 && (gauge.axes.length - 1) === axisIndex) {\n _this.rangeAnimationCount++;\n _this.rangeAnimation(gauge);\n }\n }\n else if (gauge.allowLoadingAnimation && _this.gauge.isAnimationProgress && axis.isMinorTick) {\n tickElement.style.visibility = 'visible';\n type = 'minor';\n tickIndex = tickIndex + 1;\n tickElement = document.getElementById(gauge.element.id + '_Axis_Minor_TickLine_' + axisIndex + '_' + tickIndex);\n labelElement = document.getElementById(gauge.element.id + '_Axis_' + axisIndex + '_Label_' + tickIndex);\n _this.tickElementAnimation(tickElement, labelElement, duration, axisIndex, tickIndex, type, axis, gauge);\n if (type === 'minor') {\n _this.labelElementAnimation(document.getElementById(gauge.element.id + '_Axis_' + axisIndex + '_Label_' + tickIndex), axisIndex);\n }\n if (_this.rangeAnimationCount === 0 && type === 'minor' && tickIndex === axis.minorTickCount - 1 && (gauge.axes.length - 1) === axisIndex) {\n _this.rangeAnimationCount++;\n _this.rangeAnimation(gauge);\n }\n }\n }\n });\n }\n this.labelRangeAnimation(gauge, axisIndex);\n };\n AxisLayoutPanel.prototype.labelRangeAnimation = function (gauge, axisIndex) {\n var options = this.axisOption[axisIndex];\n if (!isNullOrUndefined(options)) {\n if (!options.isMajorTick && !options.isMinorTick && options.isAxisLabel) {\n if (options.axisLabelCount > 0) {\n if (gauge.axes[axisIndex].labelStyle.hiddenLabel === 'First') {\n this.elementLabelAnimation(document.getElementById(gauge.element.id + '_Axis_' + axisIndex + '_Label_' + 1), axisIndex, 0, gauge);\n }\n else {\n this.elementLabelAnimation(document.getElementById(gauge.element.id + '_Axis_' + axisIndex + '_Label_' + 0), axisIndex, 0, gauge);\n }\n }\n }\n else if ((this.rangeAnimationCount === 0 && !options.isMajorTick &&\n !options.isMinorTick && !options.isAxisLabel && options.isRange)\n || this.rangeAnimationCount === 0 && this.gauge.isAnimationProgress\n && !options.isMajorTick && !options.isMinorTick && !options.isAxisLabel && options.isRange) {\n this.rangeAnimationCount++;\n this.rangeAnimation(gauge);\n }\n }\n };\n AxisLayoutPanel.prototype.rangeAnimation = function (gauge) {\n for (var j = 0; j < gauge.axes.length; j++) {\n var rangesElement = document.getElementById(gauge.element.id + '_Axis_Ranges_' + j);\n if (!isNullOrUndefined(rangesElement) && gauge.allowLoadingAnimation) {\n this.rangeElementAnimation(rangesElement, j, gauge);\n }\n }\n };\n AxisLayoutPanel.prototype.rangeElementAnimation = function (rangeElement, axisIndex, gauge) {\n var _this = this;\n var height = 0;\n var opacity = 1;\n var isRangeAbsent = rangeElement.childElementCount > 0 &&\n gauge.axes[axisIndex].ranges[0].start !== gauge.axes[axisIndex].ranges[0].end;\n new Animation({}).animate(rangeElement, {\n duration: isRangeAbsent ? gauge.loadingAnimationDuration[axisIndex] : 0,\n progress: function (args) {\n if (args.timeStamp > args.delay) {\n height = ((args.timeStamp - args.delay) / args.duration);\n rangeElement['style']['opacity'] = (opacity * height);\n }\n },\n end: function () {\n rangeElement['style']['opacity'] = opacity;\n var axisElement = document.getElementById(_this.gauge.element.id + '_Axis_Labels_' + axisIndex);\n if (!isNullOrUndefined(axisElement)) {\n axisElement.style.visibility = 'visible';\n }\n if (gauge.allowLoadingAnimation && axisIndex === 0) {\n _this.axisOption = [];\n gauge.axes.map(function (axis, axisindex) {\n axis.pointers.map(function (pointer, pointerIndex) {\n var pointerElement = document.getElementById(gauge.element.id + '_Axis_' + axisindex + '_Pointer_' + pointerIndex);\n if (!isNullOrUndefined(pointerElement) && _this.gauge.isAnimationProgress) {\n pointer.previousValue = !_this.gauge.isPropertyChange ? axis.minimum : pointer.previousValue;\n gauge.gaugeAxisLayoutPanel.pointerRenderer.doPointerAnimation(pointerElement, pointer, axis, axisIndex);\n }\n });\n if (axis.pointers.length === 0 && _this.gauge.isAnimationProgress) {\n if (_this.gauge.loadingAnimationDuration[axisIndex] > 0 &&\n !isNullOrUndefined(_this.gauge.annotationsModule)) {\n _this.gauge.annotationsModule.annotationAnimation(_this.gauge);\n }\n }\n else {\n _this.gauge.isOverAllAnimationComplete = true;\n }\n });\n }\n }\n });\n };\n AxisLayoutPanel.prototype.durationSplitUp = function (duration, axesElements) {\n var splitUpCount = 0;\n this.gauge.loadingAnimationDuration = [];\n for (var i = 0; i < axesElements.childElementCount; i++) {\n splitUpCount = 0;\n var axisCount = 0;\n var element = axesElements.children[i];\n var isAxisLine = false;\n var isMajorTick = false;\n var majorTickCount = 0;\n var labelCount = 0;\n var isMinorTick = false;\n var minorTickCount = 0;\n var isLabel = false;\n var isrange = false;\n var isPointer = false;\n for (var j = 0; j < element.childElementCount; j++) {\n var elementId = element.children[j]['id'];\n if (elementId.indexOf('_AxisLine_') > 0) {\n isAxisLine = true;\n splitUpCount++;\n }\n else if (elementId.indexOf('MajorTickLines') > 0) {\n isMajorTick = true;\n axisCount++;\n majorTickCount = element.children[j].childElementCount;\n splitUpCount++;\n }\n else if (elementId.indexOf('MinorTickLines') > 0) {\n isMinorTick = true;\n axisCount++;\n minorTickCount = element.children[j].childElementCount;\n if (!isMajorTick) {\n splitUpCount++;\n }\n }\n else if (elementId.indexOf('_Axis_Labels_') > 0) {\n isLabel = true;\n axisCount++;\n labelCount = element.children[j].childElementCount;\n if (!isMajorTick && !isMinorTick && this.gauge.axes[i].labelStyle.font.size != null &&\n (this.gauge.axes[i].labelStyle.font.size !== '0px' && this.gauge.axes[i].labelStyle.font.size !== '0')) {\n splitUpCount++;\n }\n }\n else if (elementId.indexOf('_Axis_Ranges_') > 0) {\n isrange = true;\n if (this.gauge.axes[i].ranges.length === 1\n && (!isNullOrUndefined(this.gauge.axes[i].ranges)\n && this.gauge.axes[i].ranges[0].start === 0\n && this.gauge.axes[i].ranges[0].end === 0)) {\n splitUpCount++;\n }\n }\n else if (elementId.indexOf('_Axis_Pointers_') > 0) {\n isPointer = true;\n if (this.gauge.axes[i].pointers.length > 0 && this.gauge.axes[i].pointers.length !== 1 &&\n this.gauge.axes[i].pointers[0].value !== this.gauge.axes[i].minimum) {\n splitUpCount++;\n }\n }\n }\n this.allowAxisCount.push(axisCount === 0 ? 1 : axisCount);\n this.axisOption.push({\n isAxisLine: isAxisLine, isMajorTick: isMajorTick, isMinorTick: isMinorTick,\n isAxisLabel: isLabel, isPointer: isPointer, isRange: isrange,\n axisLabelCount: labelCount, majorTickCount: majorTickCount, minorTickCount: minorTickCount\n });\n isAxisLine = false;\n isMajorTick = false;\n majorTickCount = 0;\n isMinorTick = false;\n labelCount = 0;\n minorTickCount = 0;\n isLabel = false;\n isrange = false;\n isPointer = false;\n if (this.gauge.axes[i].annotations != null\n && this.gauge.axes[i].annotations.length > 0\n && !isNullOrUndefined(this.gauge.annotationsModule)) {\n splitUpCount++;\n }\n this.gauge.loadingAnimationDuration.push(splitUpCount === 0 ? duration : duration / splitUpCount);\n }\n };\n /**\n * Calculate maximum label width for the axis.\n *\n * @param {CircularGauge} gauge - Specifies the instance of the gauge.\n * @param {Axis} axis - Specifies the axis.\n * @returns {void}\n */\n AxisLayoutPanel.prototype.getMaxLabelWidth = function (gauge, axis) {\n axis.maxLabelSize = new Size(0, 0);\n for (var _i = 0, _a = axis.visibleLabels; _i < _a.length; _i++) {\n var label = _a[_i];\n label.size = measureText(label.text, axis.labelStyle.font);\n axis.maxLabelSize.width = label.size.width > axis.maxLabelSize.width ?\n label.size.width : axis.maxLabelSize.width;\n axis.maxLabelSize.height = label.size.height > axis.maxLabelSize.height ?\n label.size.height : axis.maxLabelSize.height;\n }\n };\n AxisLayoutPanel.prototype.destroy = function () {\n this.gauge = null;\n this.farSizes = [];\n if (!isNullOrUndefined(this.axisRenderer)) {\n this.axisRenderer.destroy();\n }\n this.axisRenderer = null;\n if (!isNullOrUndefined(this.pointerRenderer)) {\n this.pointerRenderer.destroy();\n }\n this.pointerRenderer = null;\n this.axisOption = null;\n this.prevAnimatedMajorTickValue = null;\n this.prevAnimatedMajorTickIndex = null;\n this.prevAnimatedMinorTickIndex = null;\n this.prevAnimatedMinorTickValue = null;\n this.allowAxisCount = null;\n };\n return AxisLayoutPanel;\n}());\nexport { AxisLayoutPanel };\n","/**\n * Specifies Circular-Gauge axis-panel Helper methods\n */\n/**\n * Function to calculate the sum of array values.\n *\n * @param {number} from - Specifies the from value.\n * @param {number} to - Specifies the to value.\n * @param {number[]} values - Specifies the number.\n * @returns {number} - Returns the number.\n * @private\n */\nexport function calculateSum(from, to, values) {\n var sum = 0;\n var length = values.length;\n for (; from < length; from++) {\n sum += values[from];\n }\n return sum;\n}\n","import { getElement, stringToNumber, measureText, textElement, appendPath, calculateShapes, PathOption, RectOption, Size, GaugeLocation, Rect, TextOption } from '../utils/helper-common';\nimport { textTrim } from '../utils/helper-legend';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/*\n * Sets and gets the module to add the legend in the circular gauge.\n */\nvar Legend = /** @class */ (function () {\n function Legend(gauge) {\n this.legendRegions = [];\n this.rowCount = 0; // legend row counts per page\n this.pageButtonSize = 8;\n this.pageXCollections = []; // pages of x locations\n this.maxColumns = 0;\n this.maxWidth = 0;\n this.currentPage = 1;\n this.pagingRegions = [];\n /**\n * @private\n */\n this.position = 'Auto';\n this.gauge = gauge;\n this.toggledIndexes = [];\n this.legend = this.gauge.legendSettings;\n this.legendID = this.gauge.element.id + '_gauge_legend';\n this.addEventListener();\n }\n /**\n * Binding events for legend module.\n *\n * @returns {void}\n */\n Legend.prototype.addEventListener = function () {\n if (this.gauge.isDestroyed) {\n return;\n }\n // this.gauge.on(Browser.touchMoveEvent, this.mouseMove, this);\n this.gauge.on('click', this.click, this);\n // this.gauge.on(Browser.touchEndEvent, this.mouseEnd, this);\n };\n /**\n * UnBinding events for legend module.\n *\n * @returns {void}\n */\n Legend.prototype.removeEventListener = function () {\n if (this.gauge.isDestroyed) {\n return;\n }\n // this.gauge.off(Browser.touchMoveEvent, this.mouseMove);\n this.gauge.off('click', this.click);\n // this.gauge.off(Browser.touchEndEvent, this.mouseEnd);\n };\n /**\n * Get the legend options.\n *\n * @param {Axis[]} axes - Specifies the axes.\n * @returns {void}\n * @private\n */\n Legend.prototype.getLegendOptions = function (axes) {\n this.legendCollection = [];\n var range;\n var text = '';\n for (var i = 0; i < axes.length; i++) {\n for (var j = 0; j < axes[i].ranges.length; j++) {\n range = axes[i].ranges[j];\n if (!isNullOrUndefined(range.start) && !isNullOrUndefined(range.end) && (range.start !== range.end)) {\n text = range.legendText ? range.legendText : range.start + ' - ' + range.end;\n this.legendCollection.push(new LegendOptions(text, text, range.color, this.legend.shape, this.legend.visible, this.legend.border, this.legend.shapeBorder, this.legend.shapeWidth, this.legend.shapeHeight, j, i));\n }\n }\n }\n };\n Legend.prototype.calculateLegendBounds = function (rect, availableSize) {\n var legend = this.legend;\n this.position = (legend.position !== 'Auto') ? legend.position :\n (availableSize.width > availableSize.height ? 'Right' : 'Bottom');\n this.legendBounds = new Rect(rect.x, rect.y, 0, 0);\n this.isVertical = (this.position === 'Left' || this.position === 'Right');\n if (this.isVertical) {\n this.legendBounds.height = stringToNumber(legend.height, availableSize.height - (rect.y - this.gauge.margin.top)) || rect.height;\n this.legendBounds.width = stringToNumber(legend.width || '20%', availableSize.width);\n }\n else {\n this.legendBounds.width = stringToNumber(legend.width, availableSize.width) || rect.width;\n this.legendBounds.height = stringToNumber(legend.height || '20%', availableSize.height);\n }\n this.getLegendBounds(availableSize, this.legendBounds, legend);\n this.getLocation(this.position, legend.alignment, this.legendBounds, rect, availableSize);\n };\n /**\n * To find legend alignment for chart and accumulation chart\n *\n * @param {number} start - Specifies the start.\n * @param {number} size - Specifies the size.\n * @param {number} legendSize - Specifies the legendSize.\n * @param {Alignment} alignment - Specifies the alignment.\n * @returns {number} - Returns the start value.\n */\n Legend.prototype.alignLegend = function (start, size, legendSize, alignment) {\n switch (alignment) {\n case 'Far':\n start = (size - legendSize) - start;\n break;\n case 'Center':\n start = ((size - legendSize) / 2);\n break;\n }\n return start;\n };\n /**\n * To find legend location based on position, alignment for chart and accumulation chart\n *\n * @param {LegendPosition} position - Specifies the position.\n * @param {Alignment} alignment - Specifies the alignment.\n * @param {Rect} legendBounds - Specifies the legendBounds.\n * @param {Rect} rect - Specifies the rect.\n * @param {Size} availableSize - Specifies the availableSize.\n * @returns {void}\n */\n Legend.prototype.getLocation = function (position, alignment, legendBounds, rect, availableSize) {\n var padding = this.legend.border.width;\n var legendHeight = legendBounds.height + padding + this.legend.margin.top + this.legend.margin.bottom;\n var legendWidth = legendBounds.width + padding + this.legend.margin.left + this.legend.margin.right;\n var marginBottom = this.gauge.margin.bottom;\n if (position === 'Bottom') {\n legendBounds.x = this.alignLegend(legendBounds.x, availableSize.width, legendBounds.width, alignment);\n legendBounds.y = rect.y + (rect.height - legendHeight) + padding + this.legend.margin.top;\n this.subtractThickness(rect, 0, 0, 0, legendHeight);\n }\n else if (position === 'Top') {\n legendBounds.x = this.alignLegend(legendBounds.x, availableSize.width, legendBounds.width, alignment);\n legendBounds.y = rect.y + padding + this.legend.margin.top;\n this.subtractThickness(rect, 0, 0, legendHeight, 0);\n }\n else if (position === 'Right') {\n legendBounds.x = rect.x + (rect.width - legendBounds.width) + this.legend.margin.right;\n legendBounds.y = rect.y + this.alignLegend(0, availableSize.height - (rect.y + marginBottom), legendBounds.height, alignment);\n this.subtractThickness(rect, 0, legendWidth, 0, 0);\n }\n else {\n legendBounds.x = legendBounds.x + this.legend.margin.left;\n legendBounds.y = rect.y + this.alignLegend(0, availableSize.height - (rect.y + marginBottom), legendBounds.height, alignment);\n this.subtractThickness(rect, legendWidth, 0, 0, 0);\n }\n };\n /**\n * Renders the legend.\n *\n * @param {LegendSettingsModel} legend - Specifies the legend.\n * @param {Rect} legendBounds - Specifies the legendBounds.\n * @returns {void}\n * @private\n */\n Legend.prototype.renderLegend = function (legend, legendBounds) {\n var firstLegend = this.findFirstLegendPosition(this.legendCollection);\n var padding = legend.padding;\n this.legendRegions = [];\n this.maxItemHeight = Math.max(this.legendCollection[0].textSize.height, legend.shapeHeight);\n var legendGroup = this.gauge.renderer.createGroup({ id: this.legendID + '_g' });\n var legendTranslateGroup = this.createLegendElements(legendBounds, legendGroup, legend, this.legendID);\n if (firstLegend !== this.legendCollection.length) {\n this.totalPages = 0;\n var legendAxisGroup = void 0; // legendItem group for each series group element\n // starting shape center x,y position && to resolve lint error used new line for declaration\n var start = new GaugeLocation(\n // eslint-disable-next-line max-len\n (!this.gauge.enableRtl) ? legendBounds.x + padding + (legend.shapeWidth / 2) : (!this.isVertical) ? legendBounds.width + legendBounds.x - (padding) - (legend.shapeWidth) : legendBounds.x + this.maxWidth - padding - legend.shapeWidth / 2, legendBounds.y + padding + this.maxItemHeight / 2);\n var textOptions = new TextOption('', start.x, start.y, 'start');\n var textPadding = (2 * legend.shapePadding) + (2 * padding) + legend.shapeWidth;\n var count = 0;\n this.pageXCollections = [];\n this.legendCollection[firstLegend].location = start;\n var previousLegend = this.legendCollection[firstLegend];\n for (var _i = 0, _a = this.legendCollection; _i < _a.length; _i++) {\n var legendOption = _a[_i];\n if (legendOption.render && legendOption.text !== '') {\n legendAxisGroup = this.gauge.renderer.createGroup({\n id: this.legendID + '_g_' + count\n });\n this.getRenderPoint(legendOption, start, textPadding, previousLegend, legendBounds, count, firstLegend);\n this.renderSymbol(legendOption, legendAxisGroup, legendOption.axisIndex, legendOption.rangeIndex);\n this.renderText(legendOption, legendAxisGroup, textOptions, legendOption.axisIndex, legendOption.rangeIndex);\n if (legendAxisGroup) {\n legendAxisGroup.style.cursor = (!legend.toggleVisibility) ? 'auto' : 'pointer';\n }\n if (legendTranslateGroup) {\n legendTranslateGroup.appendChild(legendAxisGroup);\n }\n previousLegend = legendOption;\n }\n count++;\n }\n if (this.isPaging) {\n this.renderPagingElements(legendBounds, textOptions, legendGroup);\n }\n else {\n this.totalPages = 1;\n }\n }\n this.appendChildElement(this.gauge.svgObject, legendGroup);\n this.setStyles(this.toggledIndexes);\n };\n /**\n * To render legend paging elements for chart and accumulation chart\n *\n * @param {Rect} bounds - Specifies the bounds.\n * @param {TextOption} textOption - Specifies the textOption.\n * @param {Element} legendGroup - Specifies the legendGroup.\n * @returns {void}\n */\n Legend.prototype.renderPagingElements = function (bounds, textOption, legendGroup) {\n var paginggroup = this.gauge.renderer.createGroup({ id: this.legendID + '_navigation' });\n this.pagingRegions = [];\n legendGroup.appendChild(paginggroup);\n var grayColor = this.gauge.themeStyle.labelColor;\n var legend = this.gauge.legendSettings; // to solve parameter lint error, legend declaration is here\n var padding = 8; // const padding for paging elements\n if (!this.isVertical) {\n this.totalPages = Math.ceil(this.totalPages / Math.max(1, this.rowCount - 1));\n }\n else {\n this.totalPages = Math.ceil(this.totalPages / this.maxColumns);\n }\n var symbolOption = new PathOption(this.legendID + '_pageup', 'transparent', 5, grayColor, 1, '', '');\n var iconSize = this.pageButtonSize;\n if (paginggroup) {\n paginggroup.style.cursor = 'pointer';\n }\n // Page left arrow drawing calculation started here\n this.clipPathHeight = (this.rowCount - 1) * (this.maxItemHeight + legend.padding);\n this.clipRect.setAttribute('height', this.clipPathHeight.toString());\n var x = bounds.x + iconSize / 2;\n var y = bounds.y + this.clipPathHeight + ((bounds.height - this.clipPathHeight) / 2);\n var size = measureText(this.totalPages + '/' + this.totalPages, legend.textStyle);\n appendPath(calculateShapes({ x: x, y: y }, 'LeftArrow', new Size(iconSize, iconSize), '', symbolOption), paginggroup, this.gauge, 'Path');\n this.pagingRegions.push(new Rect(!this.gauge.enableRtl ?\n // eslint-disable-next-line max-len\n x + bounds.width - (2 * (iconSize + padding) + padding + size.width) - iconSize * 0.5 : x, y - iconSize * 0.5, iconSize, iconSize));\n // Page numbering rendering calculation started here\n textOption.x = x + (iconSize / 2) + padding;\n textOption.y = y + (size.height / 4);\n textOption.id = this.legendID + '_pagenumber';\n textOption.text = !this.gauge.enableRtl ? '1/' + this.totalPages : this.totalPages + '/1';\n var pageTextElement = textElement(textOption, legend.textStyle, grayColor, paginggroup);\n x = (textOption.x + padding + (iconSize / 2) + size.width);\n symbolOption.id = this.legendID + '_pagedown';\n appendPath(calculateShapes({ x: x, y: y }, 'RightArrow', new Size(iconSize, iconSize), '', symbolOption), paginggroup, this.gauge, 'Path');\n this.pagingRegions.push(new Rect(!this.gauge.enableRtl ?\n // eslint-disable-next-line max-len\n x + (bounds.width - (2 * (iconSize + padding) + padding + size.width) - iconSize * 0.5) : x, y - iconSize * 0.5, iconSize, iconSize));\n //placing the navigation buttons and page numbering in legend right corner\n // eslint-disable-next-line max-len\n var translateX = (this.gauge.enableRtl) ? legend.border.width + (iconSize / 2) : bounds.width - (2 * (iconSize + padding) + padding + size.width);\n paginggroup.setAttribute('transform', 'translate(' + translateX + ', ' + 0 + ')');\n this.translatePage(pageTextElement, this.currentPage - 1, this.currentPage);\n };\n /**\n * To translate legend pages for chart and accumulation chart\n *\n * @param {Element} pagingText - Specifies the pagingText.\n * @param {number} page - Specifies the page.\n * @param {number} pageNumber - Specifies the pageNumber.\n * @returns {number} - Returns the size.\n */\n Legend.prototype.translatePage = function (pagingText, page, pageNumber) {\n var size = (this.clipPathHeight) * page;\n var translate = 'translate(0,-' + size + ')';\n if (this.isVertical) {\n var pageX = this.pageXCollections[page * this.maxColumns];\n size = (!this.gauge.enableRtl) ? pageX - this.legendBounds.x : (this.legendBounds.x + this.maxWidth) - pageX;\n size = size < 0 ? 0 : size; // to avoid small pixel variation\n translate = ((!this.gauge.enableRtl) ? 'translate(-' : 'translate(') + size + ',0)';\n }\n this.legendTranslateGroup.setAttribute('transform', translate);\n pagingText.textContent = !this.gauge.enableRtl ? (pageNumber) + '/' + this.totalPages : this.totalPages + '/' + pageNumber;\n this.currentPage = pageNumber;\n return size;\n };\n /**\n * To render legend text for chart and accumulation chart\n *\n * @param {LegendOptions} legendOption - Specifies the legendOption.\n * @param {Element} group - Specifies the group.\n * @param {TextOption} textOptions - Specifies the textOptions.\n * @param {number} axisIndex - Specifies the axisIndex.\n * @param {number} rangeIndex - Specifies the rangeIndex.\n * @returns {void}\n */\n Legend.prototype.renderText = function (legendOption, group, textOptions, axisIndex, rangeIndex) {\n var legend = this.gauge.legendSettings;\n var hiddenColor = '#D3D3D3';\n textOptions.id = this.legendID + '_Axis_' + axisIndex + '_text_' + rangeIndex;\n var fontcolor = legendOption.visible ? legend.textStyle.color || this.gauge.themeStyle.labelColor : hiddenColor;\n legend.textStyle.fontFamily = legend.textStyle.fontFamily || this.gauge.themeStyle.labelFontFamily;\n legend.textStyle.fontWeight = legend.textStyle.fontWeight || this.gauge.themeStyle.fontWeight;\n textOptions.text = legendOption.text;\n textOptions.x = this.gauge.enableRtl ? (legendOption.location.x - (measureText(legendOption.text, legend.textStyle).width +\n legend.shapeWidth / 2 + legend.shapePadding)) : (legendOption.location.x + (legend.shapeWidth / 2) + legend.shapePadding);\n textOptions.y = legendOption.location.y + this.maxItemHeight / 4;\n var legendTextElement = textElement(textOptions, legend.textStyle, fontcolor, group, '');\n legendTextElement.setAttribute('aria-label', textOptions.text);\n legendTextElement.setAttribute('role', 'region');\n };\n /**\n * To render legend symbols for chart and accumulation chart\n *\n * @param {LegendOptions} legendOption - Specifies the legendOption.\n * @param {Element} group - Specifies the group.\n * @param {number} axisIndex - Specifies the axisIndex.\n * @param {number} rangeIndex - Specifies the rangeIndex.\n * @returns {void}\n */\n Legend.prototype.renderSymbol = function (legendOption, group, axisIndex, rangeIndex) {\n legendOption.fill = legendOption.fill ? legendOption.fill :\n this.gauge.axes[axisIndex].ranges[rangeIndex].rangeColor;\n appendPath(calculateShapes(legendOption.location, legendOption.shape, new Size(legendOption.shapeWidth, legendOption.shapeHeight), '', new PathOption(this.legendID + '_Axis_' + axisIndex + '_Shape_' + rangeIndex, legendOption.fill, legendOption.shapeBorder.width, legendOption.shapeBorder.color, null, legendOption.shapeBorder.dashArray, '', '')), group, this.gauge, legendOption.shape === 'Circle' ? 'Ellipse' : 'Path');\n };\n /**\n * To find legend rendering locations from legend options.\n *\n * @param {LegendOptions} legendOption - Specifies the legendOption.\n * @param {GaugeLocation} start - Specifies the start.\n * @param {number} textPadding - Specifies the textPadding.\n * @param {LegendOptions} prevLegend - Specifies the prevLegend.\n * @param {Rect} rect - Specifies the rect.\n * @param {number} count - Specifies the count.\n * @param {number} firstLegend - Specifies the firstLegend.\n * @returns {void}\n * @private\n */\n Legend.prototype.getRenderPoint = function (legendOption, start, textPadding, prevLegend, rect, count, firstLegend) {\n var padding = this.legend.padding;\n if (this.isVertical) {\n if (count === firstLegend || (prevLegend.location.y + (this.maxItemHeight * 1.5) + (padding * 2) > rect.y + rect.height)) {\n legendOption.location.x = prevLegend.location.x + ((count === firstLegend) ? 0 : (!this.gauge.enableRtl) ?\n this.maxColumnWidth : -this.maxColumnWidth - (4 * this.legend.shapePadding) / 3);\n legendOption.location.y = start.y;\n var textStartLoc = (this.legend.shapeWidth / 2) + padding;\n this.pageXCollections.push(legendOption.location.x + ((!this.gauge.enableRtl) ? -textStartLoc : textStartLoc));\n this.totalPages++;\n }\n else {\n legendOption.location.x = prevLegend.location.x;\n legendOption.location.y = prevLegend.location.y + this.maxItemHeight + padding;\n }\n }\n else {\n // eslint-disable-next-line max-len\n var previousBound = (prevLegend.location.x + ((!this.gauge.enableRtl) ? prevLegend.textSize.width + textPadding : -prevLegend.textSize.width - textPadding));\n // eslint-disable-next-line max-len\n if (this.isWithinBounds(previousBound, (legendOption.textSize.width + textPadding) - padding, rect, this.legend.shapeWidth / 2)) {\n legendOption.location.y = (count === firstLegend) ? prevLegend.location.y :\n prevLegend.location.y + this.maxItemHeight + padding;\n legendOption.location.x = start.x;\n }\n else {\n legendOption.location.y = prevLegend.location.y;\n legendOption.location.x = (count === firstLegend) ? prevLegend.location.x : previousBound;\n }\n this.totalPages = this.totalRowCount;\n }\n var availablewidth = this.getAvailWidth(legendOption.location.x, this.legendBounds.width);\n legendOption.text = textTrim(+availablewidth.toFixed(4), legendOption.text, this.legend.textStyle);\n };\n Legend.prototype.isWithinBounds = function (previousBound, textWidth, legendBounds, shapeWidth) {\n if (!this.gauge.enableRtl) {\n return (previousBound + textWidth) > (legendBounds.x + legendBounds.width + shapeWidth);\n }\n else {\n return (previousBound - textWidth) < (legendBounds.x - shapeWidth);\n }\n };\n /**\n * To show or hide the legend on clicking the legend.\n *\n * @param {Event} event - Specifies the event argument.\n * @returns {void}\n *\n * @private\n */\n Legend.prototype.click = function (event) {\n var targetId = event.target.id;\n var legendItemsId = ['_text_', '_Shape_'];\n var index;\n var toggledIndex = -1;\n if (targetId.indexOf(this.legendID) > -1) {\n for (var _i = 0, legendItemsId_1 = legendItemsId; _i < legendItemsId_1.length; _i++) {\n var id = legendItemsId_1[_i];\n if (targetId.indexOf(id) > -1) {\n var axisIndex = parseInt(targetId.split(this.legendID + '_Axis_')[1].split(id)[0], 10);\n var rangeIndex = parseInt(targetId.split(this.legendID + '_Axis_')[1].split(id)[1], 10);\n if (this.gauge.legendSettings.toggleVisibility && !isNaN(rangeIndex)) {\n var legendOption = this.legendByIndex(axisIndex, rangeIndex, this.legendCollection);\n index = new Index(axisIndex, rangeIndex, !legendOption.render);\n if (this.toggledIndexes.length === 0) {\n this.toggledIndexes.push(index);\n }\n else {\n for (var i = 0; i < this.toggledIndexes.length; i++) {\n if (this.toggledIndexes[i].axisIndex === index.axisIndex &&\n this.toggledIndexes[i].rangeIndex === index.rangeIndex) {\n toggledIndex = i;\n break;\n }\n else {\n toggledIndex = -1;\n }\n }\n if (toggledIndex === -1) {\n this.toggledIndexes.push(index);\n }\n else {\n this.toggledIndexes[toggledIndex].isToggled =\n !this.toggledIndexes[toggledIndex].isToggled;\n }\n }\n this.setStyles(this.toggledIndexes);\n }\n }\n }\n }\n if (targetId.indexOf(this.legendID + '_pageup') > -1) {\n this.changePage(event, !this.gauge.enableRtl ? true : false);\n }\n else if (targetId.indexOf(this.legendID + '_pagedown') > -1) {\n this.changePage(event, !this.gauge.enableRtl ? false : true);\n }\n };\n /**\n * Set toggled legend styles.\n *\n * @param {Index[]} toggledIndexes - Specifies the toggledIndexes.\n * @returns {void}\n */\n Legend.prototype.setStyles = function (toggledIndexes) {\n for (var i = 0; i < toggledIndexes.length; i++) {\n var count = 0;\n for (var j = 0; j < toggledIndexes[i].rangeIndex; j++) {\n var rangeStart = this.gauge.axes[toggledIndexes[i].axisIndex].ranges[j].start;\n var rangeEnd = this.gauge.axes[toggledIndexes[i].axisIndex].ranges[j].end;\n if (rangeStart === rangeEnd) {\n count++;\n }\n }\n var rangeID = this.gauge.element.id + '_Axis_' + toggledIndexes[i].axisIndex + '_Range_' + toggledIndexes[i].rangeIndex;\n var shapeID = this.legendID + '_Axis_' + toggledIndexes[i].axisIndex + '_Shape_' + toggledIndexes[i].rangeIndex;\n var textID = this.legendID + '_Axis_' + toggledIndexes[i].axisIndex + '_text_' + toggledIndexes[i].rangeIndex;\n var rangeElement = this.gauge.svgObject.querySelector('#' + rangeID);\n var shapeElement = this.gauge.svgObject.querySelector('#' + shapeID);\n var textElement_1 = this.gauge.svgObject.querySelector('#' + textID);\n if (toggledIndexes[i].isToggled) {\n if (!isNullOrUndefined(rangeElement)) {\n rangeElement.style.visibility = 'visible';\n shapeElement.setAttribute('fill', this.legendCollection[toggledIndexes[i].rangeIndex - count].fill);\n textElement_1.setAttribute('fill', this.legend.textStyle.color || this.gauge.themeStyle.labelColor);\n }\n }\n else {\n var hiddenColor = '#D3D3D3';\n if (!isNullOrUndefined(rangeElement)) {\n rangeElement.style.visibility = 'hidden';\n shapeElement.setAttribute('fill', hiddenColor);\n textElement_1.setAttribute('fill', hiddenColor);\n }\n }\n }\n };\n /**\n * To get legend by index\n *\n * @param {number} axisIndex - Specifies the axisIndex.\n * @param {number} rangeIndex - Specifies the rangeIndex.\n * @param {LegendOptions[]} legendCollections - Specifies the legendCollections.\n * @returns {LegendOptions} - Specifies the LegendOptions.\n */\n Legend.prototype.legendByIndex = function (axisIndex, rangeIndex, legendCollections) {\n for (var _i = 0, legendCollections_1 = legendCollections; _i < legendCollections_1.length; _i++) {\n var legend = legendCollections_1[_i];\n if (legend.axisIndex === axisIndex && legend.rangeIndex === rangeIndex) {\n return legend;\n }\n }\n return null;\n };\n /**\n * To change legend pages for chart and accumulation chart\n *\n * @param {Event} event - Specifies the event.\n * @param {boolean} pageUp - Specifies the pageUp.\n * @returns {void}\n */\n Legend.prototype.changePage = function (event, pageUp) {\n var pageText = document.getElementById(this.legendID + '_pagenumber');\n var page = parseInt(pageText.textContent.split('/')[!this.gauge.enableRtl ? 0 : 1], 10);\n if (pageUp && page > 1) {\n this.translatePage(pageText, (page - 2), (page - 1));\n }\n else if (!pageUp && page < this.totalPages) {\n this.translatePage(pageText, page, (page + 1));\n }\n };\n /**\n * To find available width from legend x position.\n *\n * @param {number} tx - Specifies the tx value.\n * @param {number} width - Specifies the width.\n * @returns {number} - Returns the number.\n */\n Legend.prototype.getAvailWidth = function (tx, width) {\n if (this.isVertical) {\n width = this.maxWidth;\n }\n return width - ((this.legend.padding * 2) + this.legend.shapeWidth + this.legend.shapePadding);\n };\n /**\n * To create legend rendering elements for chart and accumulation chart\n *\n * @param {Rect} legendBounds - Specifies the legendBounds.\n * @param {Element} legendGroup - Specifies the legendGroup.\n * @param {LegendSettingsModel} legend - Specifies the legend.\n * @param {string} id - Specifies the id.\n * @returns {Element} - Returns the element.\n */\n Legend.prototype.createLegendElements = function (legendBounds, legendGroup, legend, id) {\n var padding = legend.padding;\n var borderStyle = {\n color: legend.border.color || this.gauge.themeStyle.legendBorderColor || '',\n width: legend.border.width || this.gauge.themeStyle.legendBorderWidth || 1, dashArray: legend.border.dashArray\n };\n var options = new RectOption(id + '_element', legend.background, borderStyle, legend.opacity, legendBounds);\n options.width = this.isVertical ? this.maxWidth : legendBounds.width;\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n legendGroup ? legendGroup.appendChild(this.gauge.renderer.drawRectangle(options)) : this.gauge.renderer.drawRectangle(options);\n var legendItemsGroup = this.gauge.renderer.createGroup({ id: id + '_collections' });\n legendGroup.appendChild(legendItemsGroup);\n this.legendTranslateGroup = this.gauge.renderer.createGroup({ id: id + '_translate_g' });\n legendItemsGroup.appendChild(this.legendTranslateGroup);\n var clippath = this.gauge.renderer.createClipPath({ id: id + '_clipPath' });\n options.id += '_clipPath_rect';\n options.width = this.isVertical ? options.width - padding : options.width;\n this.clipRect = this.gauge.renderer.drawRectangle(options);\n clippath.appendChild(this.clipRect);\n this.appendChildElement(this.gauge.svgObject, clippath);\n legendItemsGroup.style.cssText = 'clip-path:url(#' + clippath.id + ')';\n return this.legendTranslateGroup;\n };\n /**\n * Method to append child element\n *\n * @param {Element} parent - Specifies the element.\n * @param {Element} childElement - Specifies the child element.\n * @returns {void}\n */\n Legend.prototype.appendChildElement = function (parent, childElement) {\n var existChild = parent.querySelector('#' + childElement.id);\n var element = (existChild || getElement(childElement.id));\n var child = childElement;\n if (existChild) {\n parent.replaceChild(child, element);\n }\n else {\n parent.appendChild(child);\n }\n };\n /**\n * To find first valid legend text index for chart and accumulation chart\n *\n * @param {LegendOptions[]} legendCollection - Specifies the legend collection.\n * @returns {number} - Returns the count.\n */\n Legend.prototype.findFirstLegendPosition = function (legendCollection) {\n var count = 0;\n for (var _i = 0, legendCollection_1 = legendCollection; _i < legendCollection_1.length; _i++) {\n var legend = legendCollection_1[_i];\n if (legend.render && legend.text !== '') {\n break;\n }\n count++;\n }\n return count;\n };\n /**\n * To find legend bounds for accumulation chart.\n *\n * @param {Size} availableSize - Specifies the availableSize.\n * @param {Rect} legendBounds - Specifies the legendBounds.\n * @param {LegendSettingsModel} legend - Specifies the legend.\n * @returns {void}\n * @private\n */\n Legend.prototype.getLegendBounds = function (availableSize, legendBounds, legend) {\n var extraWidth = 0;\n var extraHeight = 0;\n var padding = legend.padding;\n if (!this.isVertical) {\n extraHeight = !legend.height ? ((availableSize.height / 100) * 5) : 0;\n }\n else {\n extraWidth = !legend.width ? ((availableSize.width / 100) * 5) : 0;\n }\n legendBounds.width += extraWidth;\n legendBounds.height += extraHeight;\n var maximumWidth = 0;\n var rowWidth = 0;\n var rowCount = 0;\n var columnWidth = [];\n var columnHeight = 0;\n var legendWidth = 0;\n this.maxItemHeight = Math.max(measureText('MeasureText', legend.textStyle).height, legend.shapeHeight);\n var legendEventArgs;\n var render = false;\n for (var _i = 0, _a = this.legendCollection; _i < _a.length; _i++) {\n var legendOption = _a[_i];\n legendEventArgs = {\n fill: legendOption.fill, text: legendOption.text, shape: legendOption.shape,\n name: 'legendRender', cancel: false\n };\n this.gauge.trigger('legendRender', legendEventArgs);\n legendOption.render = !legendEventArgs.cancel;\n legendOption.text = legendEventArgs.text;\n legendOption.fill = legendEventArgs.fill;\n legendOption.shape = legendEventArgs.shape;\n legendOption.textSize = measureText(legendOption.text, legend.textStyle);\n if (legendOption.render && legendOption.text !== '') {\n render = true;\n legendWidth = legend.shapeWidth + (2 * legend.shapePadding) + legendOption.textSize.width + (2 * padding);\n if (this.isVertical) {\n ++rowCount;\n columnHeight = (rowCount * (this.maxItemHeight + padding)) + padding;\n if ((rowCount * (this.maxItemHeight + padding)) + padding > legendBounds.height) {\n columnHeight = Math.max(columnHeight, (rowCount * (this.maxItemHeight + padding)) + padding);\n rowWidth = rowWidth + maximumWidth;\n columnWidth.push(maximumWidth);\n this.totalPages = Math.max(rowCount, this.totalPages || 1);\n maximumWidth = 0;\n rowCount = 1;\n }\n maximumWidth = Math.max(legendWidth, maximumWidth);\n }\n else {\n rowWidth = rowWidth + legendWidth;\n if (legendBounds.width < (padding + rowWidth)) {\n maximumWidth = Math.max(maximumWidth, (rowWidth + padding - legendWidth));\n if (rowCount === 0 && (legendWidth !== rowWidth)) {\n rowCount = 1;\n }\n rowWidth = legendWidth;\n rowCount++;\n columnHeight = (rowCount * (this.maxItemHeight + padding)) + padding;\n }\n }\n }\n }\n if (this.isVertical) {\n rowWidth = rowWidth + maximumWidth;\n this.isPaging = legendBounds.width < (rowWidth + padding);\n columnHeight = Math.max(columnHeight, ((this.totalPages || 1) * (this.maxItemHeight + padding)) + padding);\n this.isPaging = this.isPaging && (this.totalPages > 1);\n if (columnWidth[columnWidth.length - 1] !== maximumWidth) {\n columnWidth.push(maximumWidth);\n }\n }\n else {\n this.isPaging = legendBounds.height < columnHeight;\n this.totalPages = this.totalRowCount = rowCount;\n columnHeight = Math.max(columnHeight, (this.maxItemHeight + padding) + padding);\n }\n this.maxColumns = 0; // initialization for max columns\n var width = this.isVertical ? this.getMaxColumn(columnWidth, legendBounds.width, padding, rowWidth + padding) :\n Math.max(rowWidth + padding, maximumWidth);\n if (render) { // if any legends not skipped in event check\n this.setBounds(width, columnHeight, legend, legendBounds);\n }\n else {\n this.setBounds(0, 0, legend, legendBounds);\n }\n };\n /**\n * @param {Rect} rect - Specifies the rect.\n * @param {number} left - Specifies the left.\n * @param {number} right - Specifies the right.\n * @param {number} top - Specifies the top.\n * @param {number} bottom - Specifies the bottom.\n * @returns {Rect} - Returns the rect.\n * @private\n */\n Legend.prototype.subtractThickness = function (rect, left, right, top, bottom) {\n rect.x += left;\n rect.y += top;\n rect.width -= left + right;\n rect.height -= top + bottom;\n return rect;\n };\n /**\n * To set bounds for chart and accumulation chart\n *\n * @param {number} computedWidth - Specifies compute width.\n * @param {number} computedHeight - Specifies compute height.\n * @param {LegendSettingsModel} legend - Specifies the legend.\n * @param {Rect} legendBounds - Specifies the legend bounds.\n * @returns {void}\n */\n Legend.prototype.setBounds = function (computedWidth, computedHeight, legend, legendBounds) {\n computedWidth = computedWidth < legendBounds.width ? computedWidth : legendBounds.width;\n computedHeight = computedHeight < legendBounds.height ? computedHeight : legendBounds.height;\n legendBounds.width = !legend.width ? computedWidth : legendBounds.width;\n legendBounds.height = !legend.height ? computedHeight : legendBounds.height;\n this.rowCount = Math.max(1, Math.ceil((legendBounds.height - legend.padding) / (this.maxItemHeight + legend.padding)));\n if (this.rowCount === 1 && (legend.position === 'Bottom' || legend.position === 'Top') && (!isNullOrUndefined(legend.width) && legend.width.indexOf('%') > -1)) {\n legendBounds.width = computedWidth;\n }\n };\n /**\n * To find maximum column size for legend\n *\n * @param {number[]} columns - Specifies the columns\n * @param {number} width - Specifies the width\n * @param {number} padding - Specifies the padding\n * @param {number} rowWidth - Specifies the row width\n * @returns {number} - Returns the number\n */\n Legend.prototype.getMaxColumn = function (columns, width, padding, rowWidth) {\n var maxPageColumn = padding;\n this.maxColumnWidth = Math.max.apply(null, columns);\n for (var i = 0; i < columns.length; i++) {\n maxPageColumn += this.maxColumnWidth;\n this.maxColumns++;\n if (maxPageColumn + padding > width) {\n maxPageColumn -= this.maxColumnWidth;\n this.maxColumns--;\n break;\n }\n }\n this.isPaging = (maxPageColumn < rowWidth) && (this.totalPages > 1);\n if (maxPageColumn === padding) {\n maxPageColumn = width;\n }\n this.maxColumns = Math.max(1, this.maxColumns);\n this.maxWidth = maxPageColumn;\n return maxPageColumn;\n };\n /**\n * Get module name.\n *\n * @returns {string} - Returns the module name.\n */\n Legend.prototype.getModuleName = function () {\n return 'Legend';\n };\n /**\n * To destroy the legend.\n *\n * @returns {void}\n * @private\n */\n Legend.prototype.destroy = function () {\n this.legendCollection = [];\n this.legendRenderingCollections = [];\n this.legendRegions = [];\n this.titleRect = null;\n this.pageXCollections = [];\n this.clipRect = null;\n this.legendTranslateGroup = null;\n this.legend = null;\n this.pagingRegions = [];\n this.toggledIndexes = [];\n this.legendBounds = null;\n this.removeEventListener();\n this.gauge = null;\n };\n return Legend;\n}());\nexport { Legend };\n/**\n * @private\n */\nvar Index = /** @class */ (function () {\n function Index(axisIndex, rangeIndex, isToggled) {\n this.axisIndex = axisIndex;\n this.rangeIndex = rangeIndex;\n this.isToggled = isToggled;\n }\n return Index;\n}());\nexport { Index };\n/**\n * Class for legend options\n *\n * @private\n */\nvar LegendOptions = /** @class */ (function () {\n function LegendOptions(text, originalText, fill, shape, visible, border, shapeBorder, shapeWidth, shapeHeight, rangeIndex, axisIndex) {\n this.location = { x: 0, y: 0 };\n this.text = text;\n this.originalText = originalText;\n this.fill = fill;\n this.shape = shape;\n this.visible = visible;\n this.border = border;\n this.shapeBorder = shapeBorder;\n this.shapeWidth = shapeWidth;\n this.shapeHeight = shapeHeight;\n this.rangeIndex = rangeIndex;\n this.axisIndex = axisIndex;\n }\n return LegendOptions;\n}());\nexport { LegendOptions };\n","/**\n * Used to `write a string` into output file.\n * @private\n */\nvar PdfWriter = /** @class */ (function () {\n /**\n * Initialize an instance of `PdfWriter` class.\n * @private\n */\n function PdfWriter(stream) {\n this.streamWriter = stream;\n }\n Object.defineProperty(PdfWriter.prototype, \"document\", {\n //properties\n /**\n * Gets and Sets the `document`.\n * @private\n */\n get: function () {\n return this.pdfDocument;\n },\n set: function (value) {\n this.pdfDocument = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfWriter.prototype, \"position\", {\n /**\n * Gets the `position`.\n * @private\n */\n get: function () {\n return this.streamWriter.buffer.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfWriter.prototype, \"length\", {\n /**\n * Gets the `length` of the stream'.\n * @private\n */\n get: function () {\n return this.streamWriter.buffer.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfWriter.prototype, \"stream\", {\n /**\n * Gets the `stream`.\n * @private\n */\n get: function () {\n var result = this.streamWriter;\n return result;\n },\n enumerable: true,\n configurable: true\n });\n //public Methods\n /**\n * `Writes the specified data`.\n * @private\n */\n PdfWriter.prototype.write = function (overload) {\n var data = [];\n var tempOverload = overload;\n this.streamWriter.write(tempOverload);\n };\n return PdfWriter;\n}());\nexport { PdfWriter };\n","/**\n * @private\n * @hidden\n */\nexport function defaultToString(item) {\n // if (item === null) {\n // return 'COLLECTION_NULL';\n // } else if (typeof item === 'undefined') {\n // return 'COLLECTION_UNDEFINED';\n // } else if (Object.prototype.toString.call(item) === '[object String]') {\n if (Object.prototype.toString.call(item) === '[object String]') {\n return '$s' + item;\n }\n else {\n return '$o' + item.toString();\n }\n}\n","/**\n * Dictionary.ts class for EJ2-PDF\n * @private\n * @hidden\n */\nimport { defaultToString } from './utils';\n/**\n * @private\n * @hidden\n */\nvar Dictionary = /** @class */ (function () {\n /**\n * @private\n * @hidden\n */\n function Dictionary(toStringFunction) {\n this.table = {};\n this.nElements = 0;\n this.toStr = toStringFunction || defaultToString;\n }\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.getValue = function (key) {\n var pair = this.table['$' + this.toStr(key)];\n if (typeof pair === 'undefined') {\n return undefined;\n }\n return pair.value;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.setValue = function (key, value) {\n // if (typeof key === 'undefined' || typeof value === 'undefined') {\n // return undefined;\n // }\n var ret;\n var k = '$' + this.toStr(key);\n var previousElement = this.table[k];\n // if (typeof previousElement === 'undefined') {\n this.nElements++;\n ret = undefined;\n // }\n this.table[k] = {\n key: key,\n value: value\n };\n return ret;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.remove = function (key) {\n var k = '$' + this.toStr(key);\n var previousElement = this.table[k];\n // if (typeof previousElement !== 'undefined') {\n delete this.table[k];\n this.nElements--;\n return previousElement.value;\n // }\n // return undefined;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.keys = function () {\n var keysArray = [];\n var namesOfKeys = Object.keys(this.table);\n for (var index1 = 0; index1 < namesOfKeys.length; index1++) {\n // if (Object.prototype.hasOwnProperty.call(this.table, namesOfKeys[index1])) {\n var pair1 = this.table[namesOfKeys[index1]];\n keysArray.push(pair1.key);\n // }\n }\n return keysArray;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.values = function () {\n var valuesArray = [];\n var namesOfValues = Object.keys(this.table);\n for (var index2 = 0; index2 < namesOfValues.length; index2++) {\n // if (Object.prototype.hasOwnProperty.call(this.table, namesOfValues[index2])) {\n var pair2 = this.table[namesOfValues[index2]];\n valuesArray.push(pair2.value);\n // }\n }\n return valuesArray;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.containsKey = function (key) {\n var retutnValue = true;\n if (typeof this.getValue(key) === 'undefined') {\n retutnValue = true;\n }\n else {\n retutnValue = false;\n }\n return !retutnValue;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.clear = function () {\n this.table = {};\n this.nElements = 0;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.size = function () {\n return this.nElements;\n };\n return Dictionary;\n}()); // End of dictionary\nexport { Dictionary };\n","/**\n * public Enum for `CompositeFontType`.\n * @private\n */\nexport var ObjectStatus;\n(function (ObjectStatus) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n ObjectStatus[ObjectStatus[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Registered`.\n * @private\n */\n ObjectStatus[ObjectStatus[\"Registered\"] = 1] = \"Registered\";\n})(ObjectStatus || (ObjectStatus = {}));\n","/**\n * PdfMainObjectCollection.ts class for EJ2-PDF\n */\nimport { Dictionary } from './../collections/dictionary';\nimport { ObjectStatus } from './enum';\n/**\n * The collection of all `objects` within a PDF document.\n * @private\n */\nvar PdfMainObjectCollection = /** @class */ (function () {\n function PdfMainObjectCollection() {\n //Fields\n /**\n * The collection of the `indirect objects`.\n * @default []\n * @private\n */\n this.objectCollections = [];\n /**\n * The collection of the `Indirect objects`.\n * @default new Dictionary()\n * @private\n */\n this.mainObjectCollection = new Dictionary();\n /**\n * The collection of `primitive objects`.\n * @private\n */\n this.primitiveObjectCollection = new Dictionary();\n }\n Object.defineProperty(PdfMainObjectCollection.prototype, \"count\", {\n //Properties\n /**\n * Gets the `count`.\n * @private\n */\n get: function () {\n return this.objectCollections.length;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the value of `ObjectInfo` from object collection.\n * @private\n */\n PdfMainObjectCollection.prototype.items = function (index) {\n return this.objectCollections[index];\n };\n Object.defineProperty(PdfMainObjectCollection.prototype, \"outIsNew\", {\n //Methods\n /**\n * Specifies the value of `IsNew`.\n * @private\n */\n get: function () {\n return this.isNew;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Adds` the specified element.\n * @private\n */\n PdfMainObjectCollection.prototype.add = function (element) {\n var objInfo = new ObjectInfo(element);\n this.objectCollections.push(objInfo);\n if (!this.primitiveObjectCollection.containsKey(element)) {\n this.primitiveObjectCollection.setValue(element, this.objectCollections.length - 1);\n }\n element.position = this.index = this.objectCollections.length - 1;\n element.status = ObjectStatus.Registered;\n };\n /**\n * `Looks` through the collection for the object specified.\n * @private\n */\n PdfMainObjectCollection.prototype.lookFor = function (obj) {\n var index = -1;\n if (obj.position !== -1) {\n return obj.position;\n }\n if (this.primitiveObjectCollection.containsKey(obj) && this.count === this.primitiveObjectCollection.size()) {\n index = this.primitiveObjectCollection.getValue(obj);\n }\n else {\n for (var i = this.count - 1; i >= 0; i--) {\n var oi = this.objectCollections[i];\n if (oi.object === obj) {\n index = i;\n break;\n }\n }\n }\n return index;\n };\n /**\n * Gets the `reference of the object`.\n * @private\n */\n PdfMainObjectCollection.prototype.getReference = function (index, isNew) {\n this.index = this.lookFor(index);\n var reference;\n this.isNew = false;\n var oi = this.objectCollections[this.index];\n reference = oi.reference;\n var obj = { reference: reference, wasNew: isNew };\n return obj;\n };\n /**\n * Tries to set the `reference to the object`.\n * @private\n */\n PdfMainObjectCollection.prototype.trySetReference = function (obj, reference, found) {\n var result = true;\n found = true;\n this.index = this.lookFor(obj);\n var oi = this.objectCollections[this.index];\n oi.setReference(reference);\n return result;\n };\n PdfMainObjectCollection.prototype.destroy = function () {\n for (var _i = 0, _a = this.objectCollections; _i < _a.length; _i++) {\n var obj = _a[_i];\n if (obj !== undefined) {\n obj.pdfObject.position = -1;\n obj.pdfObject.isSaving = undefined;\n obj.pdfObject.objectCollectionIndex = undefined;\n obj.pdfObject.position = undefined;\n }\n }\n this.objectCollections = [];\n this.mainObjectCollection = new Dictionary();\n this.primitiveObjectCollection = new Dictionary();\n };\n return PdfMainObjectCollection;\n}());\nexport { PdfMainObjectCollection };\nvar ObjectInfo = /** @class */ (function () {\n function ObjectInfo(obj, reference) {\n this.pdfObject = obj;\n this.pdfReference = reference;\n }\n Object.defineProperty(ObjectInfo.prototype, \"object\", {\n //Properties\n /**\n * Gets the `object`.\n * @private\n */\n get: function () {\n return this.pdfObject;\n },\n set: function (value) {\n this.pdfObject = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ObjectInfo.prototype, \"reference\", {\n /**\n * Gets the `reference`.\n * @private\n */\n get: function () {\n return this.pdfReference;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Sets the `reference`.\n * @private\n */\n ObjectInfo.prototype.setReference = function (reference) {\n this.pdfReference = reference;\n };\n return ObjectInfo;\n}());\nexport { ObjectInfo };\n","/**\n * Encoding class: Contains the details about encoding type, whether to write a Unicode byte order mark (BOM).\n * ```typescript\n * let encoding : Encoding = new Encoding();\n * encoding.type = 'Utf8';\n * encoding.getBytes('Encoding', 0, 5);\n * ```\n */\nvar Encoding = /** @class */ (function () {\n /**\n * Initializes a new instance of the Encoding class. A parameter specifies whether to write a Unicode byte order mark\n * @param {boolean} includeBom?-true to specify that a Unicode byte order mark is written; otherwise, false.\n */\n function Encoding(includeBom) {\n this.emitBOM = true;\n this.encodingType = 'Ansi';\n this.initBOM(includeBom);\n }\n Object.defineProperty(Encoding.prototype, \"includeBom\", {\n /**\n * Gets a value indicating whether to write a Unicode byte order mark\n * @returns boolean- true to specify that a Unicode byte order mark is written; otherwise, false\n */\n get: function () {\n return this.emitBOM;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Encoding.prototype, \"type\", {\n /**\n * Gets the encoding type.\n * @returns EncodingType\n */\n get: function () {\n return this.encodingType;\n },\n /**\n * Sets the encoding type.\n * @param {EncodingType} value\n */\n set: function (value) {\n this.encodingType = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Initialize the includeBom to emit BOM or Not\n * @param {boolean} includeBom\n */\n Encoding.prototype.initBOM = function (includeBom) {\n if (includeBom === undefined || includeBom === null) {\n this.emitBOM = true;\n }\n else {\n this.emitBOM = includeBom;\n }\n };\n /**\n * Calculates the number of bytes produced by encoding the characters in the specified string\n * @param {string} chars - The string containing the set of characters to encode\n * @returns {number} - The number of bytes produced by encoding the specified characters\n */\n Encoding.prototype.getByteCount = function (chars) {\n var byteCount = 0;\n validateNullOrUndefined(chars, 'string');\n if (chars === '') {\n var byte = this.utf8Len(chars.charCodeAt(0));\n return byte;\n }\n if (this.type === null || this.type === undefined) {\n this.type = 'Ansi';\n }\n return this.getByteCountInternal(chars, 0, chars.length);\n };\n /**\n * Return the Byte of character\n * @param {number} codePoint\n * @returns {number}\n */\n Encoding.prototype.utf8Len = function (codePoint) {\n var bytes = codePoint <= 0x7F ? 1 :\n codePoint <= 0x7FF ? 2 :\n codePoint <= 0xFFFF ? 3 :\n codePoint <= 0x1FFFFF ? 4 : 0;\n return bytes;\n };\n /**\n * for 4 byte character return surrogate pair true, otherwise false\n * @param {number} codeUnit\n * @returns {boolean}\n */\n Encoding.prototype.isHighSurrogate = function (codeUnit) {\n return codeUnit >= 0xD800 && codeUnit <= 0xDBFF;\n };\n /**\n * for 4byte character generate the surrogate pair\n * @param {number} highCodeUnit\n * @param {number} lowCodeUnit\n */\n Encoding.prototype.toCodepoint = function (highCodeUnit, lowCodeUnit) {\n highCodeUnit = (0x3FF & highCodeUnit) << 10;\n var u = highCodeUnit | (0x3FF & lowCodeUnit);\n return u + 0x10000;\n };\n /**\n * private method to get the byte count for specific charindex and count\n * @param {string} chars\n * @param {number} charIndex\n * @param {number} charCount\n */\n Encoding.prototype.getByteCountInternal = function (chars, charIndex, charCount) {\n var byteCount = 0;\n if (this.encodingType === 'Utf8' || this.encodingType === 'Unicode') {\n var isUtf8 = this.encodingType === 'Utf8';\n for (var i = 0; i < charCount; i++) {\n var charCode = chars.charCodeAt(isUtf8 ? charIndex : charIndex++);\n if (this.isHighSurrogate(charCode)) {\n if (isUtf8) {\n var high = charCode;\n var low = chars.charCodeAt(++charIndex);\n byteCount += this.utf8Len(this.toCodepoint(high, low));\n }\n else {\n byteCount += 4;\n ++i;\n }\n }\n else {\n if (isUtf8) {\n byteCount += this.utf8Len(charCode);\n }\n else {\n byteCount += 2;\n }\n }\n if (isUtf8) {\n charIndex++;\n }\n }\n return byteCount;\n }\n else {\n byteCount = charCount;\n return byteCount;\n }\n };\n /**\n * Encodes a set of characters from the specified string into the ArrayBuffer.\n * @param {string} s- The string containing the set of characters to encode\n * @param {number} charIndex-The index of the first character to encode.\n * @param {number} charCount- The number of characters to encode.\n * @returns {ArrayBuffer} - The ArrayBuffer that contains the resulting sequence of bytes.\n */\n Encoding.prototype.getBytes = function (s, charIndex, charCount) {\n validateNullOrUndefined(s, 'string');\n validateNullOrUndefined(charIndex, 'charIndex');\n validateNullOrUndefined(charCount, 'charCount');\n if (charIndex < 0 || charCount < 0) {\n throw new RangeError('Argument Out Of Range Exception: charIndex or charCount is less than zero');\n }\n if (s.length - charIndex < charCount) {\n throw new RangeError('Argument Out Of Range Exception: charIndex and charCount do not denote a valid range in string');\n }\n var bytes;\n if (s === '') {\n bytes = new ArrayBuffer(0);\n return bytes;\n }\n if (this.type === null || this.type === undefined) {\n this.type = 'Ansi';\n }\n var byteCount = this.getByteCountInternal(s, charIndex, charCount);\n switch (this.type) {\n case 'Utf8':\n bytes = this.getBytesOfUtf8Encoding(byteCount, s, charIndex, charCount);\n return bytes;\n case 'Unicode':\n bytes = this.getBytesOfUnicodeEncoding(byteCount, s, charIndex, charCount);\n return bytes;\n default:\n bytes = this.getBytesOfAnsiEncoding(byteCount, s, charIndex, charCount);\n return bytes;\n }\n };\n /**\n * Decodes a sequence of bytes from the specified ArrayBuffer into the string.\n * @param {ArrayBuffer} bytes- The ArrayBuffer containing the sequence of bytes to decode.\n * @param {number} index- The index of the first byte to decode.\n * @param {number} count- The number of bytes to decode.\n * @returns {string} - The string that contains the resulting set of characters.\n */\n Encoding.prototype.getString = function (bytes, index, count) {\n validateNullOrUndefined(bytes, 'bytes');\n validateNullOrUndefined(index, 'index');\n validateNullOrUndefined(count, 'count');\n if (index < 0 || count < 0) {\n throw new RangeError('Argument Out Of Range Exception: index or count is less than zero');\n }\n if (bytes.byteLength - index < count) {\n throw new RangeError('Argument Out Of Range Exception: index and count do not denote a valid range in bytes');\n }\n if (bytes.byteLength === 0 || count === 0) {\n return '';\n }\n if (this.type === null || this.type === undefined) {\n this.type = 'Ansi';\n }\n var out = '';\n var byteCal = new Uint8Array(bytes);\n switch (this.type) {\n case 'Utf8':\n var s = this.getStringOfUtf8Encoding(byteCal, index, count);\n return s;\n case 'Unicode':\n var byteUnicode = new Uint16Array(bytes);\n out = this.getStringofUnicodeEncoding(byteUnicode, index, count);\n return out;\n default:\n var j = index;\n for (var i = 0; i < count; i++) {\n var c = byteCal[j];\n out += String.fromCharCode(c); // 1 byte(ASCII) character \n j++;\n }\n return out;\n }\n };\n Encoding.prototype.getBytesOfAnsiEncoding = function (byteCount, s, charIndex, charCount) {\n var bytes = new ArrayBuffer(byteCount);\n var bufview = new Uint8Array(bytes);\n var k = 0;\n for (var i = 0; i < charCount; i++) {\n var charcode = s.charCodeAt(charIndex++);\n if (charcode < 0x800) {\n bufview[k] = charcode;\n }\n else {\n bufview[k] = 63; //replacement character '?'\n }\n k++;\n }\n return bytes;\n };\n Encoding.prototype.getBytesOfUtf8Encoding = function (byteCount, s, charIndex, charCount) {\n var bytes = new ArrayBuffer(byteCount);\n var uint = new Uint8Array(bytes);\n var index = charIndex;\n var j = 0;\n for (var i = 0; i < charCount; i++) {\n var charcode = s.charCodeAt(index);\n if (charcode <= 0x7F) { // 1 byte character 2^7\n uint[j] = charcode;\n }\n else if (charcode < 0x800) { // 2 byte character 2^11\n uint[j] = 0xc0 | (charcode >> 6);\n uint[++j] = 0x80 | (charcode & 0x3f);\n }\n else if ((charcode < 0xd800 || charcode >= 0xe000)) { // 3 byte character 2^16 \n uint[j] = 0xe0 | (charcode >> 12);\n uint[++j] = 0x80 | ((charcode >> 6) & 0x3f);\n uint[++j] = 0x80 | (charcode & 0x3f);\n }\n else {\n uint[j] = 0xef;\n uint[++j] = 0xbf;\n uint[++j] = 0xbd; // U+FFFE \"replacement character\"\n }\n ++j;\n ++index;\n }\n return bytes;\n };\n Encoding.prototype.getBytesOfUnicodeEncoding = function (byteCount, s, charIndex, charCount) {\n var bytes = new ArrayBuffer(byteCount);\n var uint16 = new Uint16Array(bytes);\n for (var i = 0; i < charCount; i++) {\n var charcode = s.charCodeAt(i);\n uint16[i] = charcode;\n }\n return bytes;\n };\n Encoding.prototype.getStringOfUtf8Encoding = function (byteCal, index, count) {\n var j = 0;\n var i = index;\n var s = '';\n for (j; j < count; j++) {\n var c = byteCal[i++];\n while (i > byteCal.length) {\n return s;\n }\n if (c > 127) {\n if (c > 191 && c < 224 && i < count) {\n c = (c & 31) << 6 | byteCal[i] & 63;\n }\n else if (c > 223 && c < 240 && i < byteCal.byteLength) {\n c = (c & 15) << 12 | (byteCal[i] & 63) << 6 | byteCal[++i] & 63;\n }\n else if (c > 239 && c < 248 && i < byteCal.byteLength) {\n c = (c & 7) << 18 | (byteCal[i] & 63) << 12 | (byteCal[++i] & 63) << 6 | byteCal[++i] & 63;\n }\n ++i;\n }\n s += String.fromCharCode(c); // 1 byte(ASCII) character \n }\n return s;\n };\n Encoding.prototype.getStringofUnicodeEncoding = function (byteUni, index, count) {\n if (count > byteUni.length) {\n throw new RangeError('ArgumentOutOfRange_Count');\n }\n var byte16 = new Uint16Array(count);\n var out = '';\n for (var i = 0; i < count && i < byteUni.length; i++) {\n byte16[i] = byteUni[index++];\n }\n out = String.fromCharCode.apply(null, byte16);\n return out;\n };\n /**\n * To clear the encoding instance\n * @return {void}\n */\n Encoding.prototype.destroy = function () {\n this.emitBOM = undefined;\n this.encodingType = undefined;\n };\n return Encoding;\n}());\nexport { Encoding };\n/**\n * To check the object is null or undefined and throw error if it is null or undefined\n * @param {Object} value - object to check is null or undefined\n * @return {boolean}\n * @throws {ArgumentException} - if the value is null or undefined\n * @private\n */\nexport function validateNullOrUndefined(value, message) {\n if (value === null || value === undefined) {\n throw new Error('ArgumentException: ' + message + ' cannot be null or undefined');\n }\n}\n","/**\n * Save class provide method to save file\n * ```typescript\n * let blob : Blob = new Blob([''], { type: 'text/plain' });\n * Save.save('fileName.txt',blob);\n */\nvar Save = /** @class */ (function () {\n /**\n * Initialize new instance of {save}\n */\n function Save() {\n // tslint:disable\n }\n /**\n * Saves the file with specified name and sends the file to client browser\n * @param {string} fileName- file name to save.\n * @param {Blob} buffer- the content to write in file\n * @param {boolean} isMicrosoftBrowser- specify whether microsoft browser or not\n * @returns {void}\n */\n Save.save = function (fileName, buffer) {\n if (fileName === null || fileName === undefined || fileName === '') {\n throw new Error('ArgumentException: fileName cannot be undefined, null or empty');\n }\n var extension = fileName.substring(fileName.lastIndexOf('.') + 1, fileName.length);\n var mimeType = this.getMimeType(extension);\n if (mimeType !== '') {\n buffer = new Blob([buffer], { type: mimeType });\n }\n if (this.isMicrosoftBrowser) {\n navigator.msSaveBlob(buffer, fileName);\n }\n else {\n var downloadLink = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');\n this.saveInternal(fileName, extension, buffer, downloadLink, 'download' in downloadLink);\n }\n };\n Save.saveInternal = function (fileName, extension, buffer, downloadLink, hasDownloadAttribute) {\n if (hasDownloadAttribute) {\n downloadLink.download = fileName;\n var dataUrl_1 = window.URL.createObjectURL(buffer);\n downloadLink.href = dataUrl_1;\n var event_1 = document.createEvent('MouseEvent');\n event_1.initEvent('click', true, true);\n downloadLink.dispatchEvent(event_1);\n setTimeout(function () {\n window.URL.revokeObjectURL(dataUrl_1);\n dataUrl_1 = undefined;\n });\n }\n else {\n if (extension !== 'docx' && extension !== 'xlsx') {\n var url = window.URL.createObjectURL(buffer);\n var isPopupBlocked = window.open(url, '_blank');\n if (!isPopupBlocked) {\n window.location.href = url;\n }\n }\n else {\n var reader_1 = new FileReader();\n reader_1.onloadend = function () {\n var isPopupBlocked = window.open(reader_1.result, '_blank');\n if (!isPopupBlocked) {\n window.location.href = reader_1.result;\n }\n };\n reader_1.readAsDataURL(buffer);\n }\n }\n };\n /**\n *\n * @param {string} extension - get mime type of the specified extension\n * @private\n */\n Save.getMimeType = function (extension) {\n var mimeType = '';\n switch (extension) {\n case 'html':\n mimeType = 'text/html';\n break;\n case 'pdf':\n mimeType = 'application/pdf';\n break;\n case 'docx':\n mimeType = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';\n break;\n case 'xlsx':\n mimeType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';\n break;\n case 'txt':\n mimeType = 'text/plain';\n break;\n }\n return mimeType;\n };\n return Save;\n}());\nexport { Save };\n","/**\n * `PdfString` class is used to perform string related primitive operations.\n * @private\n */\nexport var InternalEnum;\n(function (InternalEnum) {\n //Internals\n /**\n * public Enum for `ForceEncoding`.\n * @private\n */\n var ForceEncoding;\n (function (ForceEncoding) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n ForceEncoding[ForceEncoding[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Ascii`.\n * @private\n */\n ForceEncoding[ForceEncoding[\"Ascii\"] = 1] = \"Ascii\";\n /**\n * Specifies the type of `Unicode`.\n * @private\n */\n ForceEncoding[ForceEncoding[\"Unicode\"] = 2] = \"Unicode\";\n })(ForceEncoding = InternalEnum.ForceEncoding || (InternalEnum.ForceEncoding = {}));\n /**\n * public Enum for `SourceType`.\n * @private\n */\n var SourceType;\n (function (SourceType) {\n /**\n * Specifies the type of `StringValue`.\n * @private\n */\n SourceType[SourceType[\"StringValue\"] = 0] = \"StringValue\";\n /**\n * Specifies the type of `ByteBuffer`.\n * @private\n */\n SourceType[SourceType[\"ByteBuffer\"] = 1] = \"ByteBuffer\";\n })(SourceType || (SourceType = {}));\n})(InternalEnum || (InternalEnum = {}));\nvar PdfString = /** @class */ (function () {\n function PdfString(value) {\n /**\n * Value indicating whether the string was converted to hex.\n * @default false\n * @private\n */\n this.bHex = false;\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position1 = -1;\n /**\n * Internal variable to hold `cloned object`.\n * @default null\n * @private\n */\n this.clonedObject1 = null;\n /**\n * `Shows` if the data of the stream was decrypted.\n * @default false\n * @private\n */\n this.bDecrypted = false;\n /**\n * Shows if the data of the stream `was decrypted`.\n * @default false\n * @private\n */\n this.isParentDecrypted = false;\n /**\n * Gets a value indicating whether the object is `packed or not`.\n * @default false\n * @private\n */\n this.isPacked = false;\n /**\n * @hidden\n * @private\n */\n this.isFormField = false;\n /**\n * @hidden\n * @private\n */\n this.isColorSpace = false;\n /**\n * @hidden\n * @private\n */\n this.isHexString = true;\n if (typeof value === 'undefined') {\n this.bHex = false;\n }\n else {\n if (!(value.length > 0 && value[0] === '0xfeff')) {\n this.stringValue = value;\n this.data = [];\n for (var i = 0; i < value.length; ++i) {\n this.data.push(value.charCodeAt(i));\n }\n }\n }\n }\n Object.defineProperty(PdfString.prototype, \"hex\", {\n //Property\n /**\n * Gets a value indicating whether string is in `hex`.\n * @private\n */\n get: function () {\n return this.bHex;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"value\", {\n /**\n * Gets or sets string `value` of the object.\n * @private\n */\n get: function () {\n return this.stringValue;\n },\n set: function (value) {\n this.stringValue = value;\n this.data = null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"status\", {\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status1;\n },\n set: function (value) {\n this.status1 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving1;\n },\n set: function (value) {\n this.isSaving1 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index1;\n },\n set: function (value) {\n this.index1 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n return this.clonedObject1;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position1;\n },\n set: function (value) {\n this.position1 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"CrossTable\", {\n /**\n * Returns `PdfCrossTable` associated with the object.\n * @private\n */\n get: function () {\n return this.crossTable;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"converted\", {\n /**\n * Gets a value indicating whether to check if the value has unicode characters.\n * @private\n */\n get: function () {\n return this.bConverted;\n },\n /**\n * sets a value indicating whether to check if the value has unicode characters.\n * @private\n */\n set: function (value) {\n this.bConverted = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"encode\", {\n /**\n * Gets value indicating whether we should convert data to Unicode.\n */\n get: function () {\n return this.bForceEncoding;\n },\n set: function (value) {\n this.bForceEncoding = value;\n },\n enumerable: true,\n configurable: true\n });\n //Methods\n /**\n * Converts `bytes to string using hex format` for representing string.\n * @private\n */\n PdfString.bytesToHex = function (bytes) {\n if (bytes == null) {\n return '';\n }\n var builder = '';\n return builder;\n };\n /**\n * `Saves` the object using the specified writer.\n * @private\n */\n PdfString.prototype.save = function (writer) {\n if (writer === null) {\n throw new Error('ArgumentNullException : writer');\n }\n if (this.encode !== undefined && this.encode === InternalEnum.ForceEncoding.Ascii) {\n writer.write(this.pdfEncode());\n }\n else {\n writer.write(PdfString.stringMark[0] + this.value + PdfString.stringMark[1]);\n }\n };\n PdfString.prototype.pdfEncode = function () {\n var result = '';\n if (this.encode !== undefined && this.encode === InternalEnum.ForceEncoding.Ascii) {\n var data = this.escapeSymbols(this.value);\n for (var i = 0; i < data.length; i++) {\n result += String.fromCharCode(data[i]);\n }\n result = PdfString.stringMark[0] + result + PdfString.stringMark[1];\n }\n else {\n result = this.value;\n }\n return result;\n };\n PdfString.prototype.escapeSymbols = function (value) {\n var data = [];\n for (var i = 0; i < value.length; i++) {\n var currentData = value.charCodeAt(i);\n switch (currentData) {\n case 40:\n case 41:\n data.push(92);\n data.push(currentData);\n break;\n case 13:\n data.push(92);\n data.push(114);\n break;\n case 92:\n data.push(92);\n data.push(currentData);\n break;\n default:\n data.push(currentData);\n break;\n }\n }\n return data;\n };\n /**\n * Creates a `copy of PdfString`.\n * @private\n */\n PdfString.prototype.clone = function (crossTable) {\n if (this.clonedObject1 !== null && this.clonedObject1.CrossTable === crossTable) {\n return this.clonedObject1;\n }\n else {\n this.clonedObject1 = null;\n }\n var newString = new PdfString(this.stringValue);\n newString.bHex = this.bHex;\n newString.crossTable = crossTable;\n newString.isColorSpace = this.isColorSpace;\n this.clonedObject1 = newString;\n return newString;\n };\n /**\n * Converts string to array of unicode symbols.\n */\n PdfString.toUnicodeArray = function (value, bAddPrefix) {\n if (value == null) {\n throw new Error('Argument Null Exception : value');\n }\n var startIndex = 0;\n var output = [];\n for (var i = 0; i < value.length; i++) {\n var code = value.charCodeAt(i);\n output.push(code / 256 >>> 0);\n output.push(code & 0xff);\n }\n return output;\n };\n /**\n * Converts byte data to string.\n */\n PdfString.byteToString = function (data) {\n if (data == null) {\n throw new Error('Argument Null Exception : stream');\n }\n var result = '';\n for (var i = 0; i < data.length; ++i) {\n result += String.fromCharCode(data[i]);\n }\n return result;\n };\n //constants = ;\n /**\n * `General markers` for string.\n * @private\n */\n PdfString.stringMark = '()';\n /**\n * `Hex markers` for string.\n * @private\n */\n PdfString.hexStringMark = '<>';\n /**\n * Format of password data.\n * @private\n */\n PdfString.hexFormatPattern = '{0:X2}';\n return PdfString;\n}());\nexport { PdfString };\n","import { Encoding, validateNullOrUndefined } from './encoding';\nimport { Save } from './save';\n/**\n * StreamWriter class contains the implementation for writing characters to a file in a particular encoding\n * ```typescript\n * let writer = new StreamWriter();\n * writer.write('Hello World');\n * writer.save('Sample.txt');\n * writer.dispose();\n * ```\n */\nvar StreamWriter = /** @class */ (function () {\n /**\n * Initializes a new instance of the StreamWriter class by using the specified encoding.\n * @param {Encoding} encoding?- The character encoding to use.\n */\n function StreamWriter(encoding) {\n this.bufferBlob = new Blob(['']);\n this.bufferText = '';\n this.init(encoding);\n Save.isMicrosoftBrowser = !(!navigator.msSaveBlob);\n }\n Object.defineProperty(StreamWriter.prototype, \"buffer\", {\n /**\n * Gets the content written to the StreamWriter as Blob.\n * @returns Blob\n */\n get: function () {\n this.flush();\n return this.bufferBlob;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(StreamWriter.prototype, \"encoding\", {\n /**\n * Gets the encoding.\n * @returns Encoding\n */\n get: function () {\n return this.enc;\n },\n enumerable: true,\n configurable: true\n });\n StreamWriter.prototype.init = function (encoding) {\n if (encoding === null || encoding === undefined) {\n this.enc = new Encoding(false);\n this.enc.type = 'Utf8';\n }\n else {\n this.enc = encoding;\n this.setBomByte();\n }\n };\n /**\n * Private method to set Byte Order Mark(BOM) value based on EncodingType\n */\n StreamWriter.prototype.setBomByte = function () {\n if (this.encoding.includeBom) {\n switch (this.encoding.type) {\n case 'Unicode':\n var arrayUnicode = new ArrayBuffer(2);\n var uint8 = new Uint8Array(arrayUnicode);\n uint8[0] = 255;\n uint8[1] = 254;\n this.bufferBlob = new Blob([arrayUnicode]);\n break;\n case 'Utf8':\n var arrayUtf8 = new ArrayBuffer(3);\n var utf8 = new Uint8Array(arrayUtf8);\n utf8[0] = 239;\n utf8[1] = 187;\n utf8[2] = 191;\n this.bufferBlob = new Blob([arrayUtf8]);\n break;\n default:\n this.bufferBlob = new Blob(['']);\n break;\n }\n }\n };\n /**\n * Saves the file with specified name and sends the file to client browser\n * @param {string} fileName - The file name to save\n * @returns {void}\n */\n StreamWriter.prototype.save = function (fileName) {\n if (this.bufferText !== '') {\n this.flush();\n }\n Save.save(fileName, this.buffer);\n };\n /**\n * Writes the specified string.\n * @param {string} value - The string to write. If value is null or undefined, nothing is written.\n * @returns {void}\n */\n StreamWriter.prototype.write = function (value) {\n if (this.encoding === undefined) {\n throw new Error('Object Disposed Exception: current writer is disposed');\n }\n validateNullOrUndefined(value, 'string');\n this.bufferText += value;\n if (this.bufferText.length >= 10240) {\n this.flush();\n }\n };\n StreamWriter.prototype.flush = function () {\n if (this.bufferText === undefined || this.bufferText === null || this.bufferText.length === 0) {\n return;\n }\n var bufferArray = this.encoding.getBytes(this.bufferText, 0, this.bufferText.length);\n this.bufferText = '';\n this.bufferBlob = new Blob([this.bufferBlob, bufferArray]);\n };\n /**\n * Writes the specified string followed by a line terminator\n * @param {string} value - The string to write. If value is null or undefined, nothing is written\n * @returns {void}\n */\n StreamWriter.prototype.writeLine = function (value) {\n if (this.encoding === undefined) {\n throw new Error('Object Disposed Exception: current writer is disposed');\n }\n validateNullOrUndefined(value, 'string');\n this.bufferText = this.bufferText + value + '\\r\\n';\n if (this.bufferText.length >= 10240) {\n this.flush();\n }\n };\n /**\n * Releases the resources used by the StreamWriter\n * @returns {void}\n */\n StreamWriter.prototype.destroy = function () {\n this.bufferBlob = undefined;\n this.bufferText = undefined;\n if (this.enc instanceof Encoding) {\n this.enc.destroy();\n }\n this.enc = undefined;\n };\n return StreamWriter;\n}());\nexport { StreamWriter };\n","import { Encoding, StreamWriter } from '@syncfusion/ej2-file-utils';\nimport { PdfDocument } from './pdf-document';\n/**\n * `PdfDocumentBase` class represent common properties of PdfDocument classes.\n * @private\n */\nvar PdfDocumentBase = /** @class */ (function () {\n function PdfDocumentBase(document) {\n /**\n * If the stream is copied, then it specifies true.\n * @private\n */\n this.isStreamCopied = false;\n if (document instanceof PdfDocument) {\n this.document = document;\n }\n }\n Object.defineProperty(PdfDocumentBase.prototype, \"pdfObjects\", {\n //Prpperties\n /**\n * Gets the `PDF objects` collection, which stores all objects and references to it..\n * @private\n */\n get: function () {\n return this.objects;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentBase.prototype, \"crossTable\", {\n /**\n * Gets the `cross-reference` table.\n * @private\n */\n get: function () {\n return this.pdfCrossTable;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentBase.prototype, \"currentSavingObj\", {\n /**\n * Gets or sets the current saving `object number`.\n * @private\n */\n get: function () {\n return this.currentSavingObject;\n },\n set: function (value) {\n this.currentSavingObject = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentBase.prototype, \"catalog\", {\n /**\n * Gets the PDF document `catalog`.\n * @private\n */\n get: function () {\n return this.pdfCatalog;\n },\n set: function (value) {\n this.pdfCatalog = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentBase.prototype, \"viewerPreferences\", {\n /**\n * Gets viewer preferences for presenting the PDF document in a viewer.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets viewer preferences\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.pdfCatalog.viewerPreferences;\n },\n enumerable: true,\n configurable: true\n });\n //Public methods\n /**\n * Sets the `main object collection`.\n * @private\n */\n PdfDocumentBase.prototype.setMainObjectCollection = function (mainObjectCollection) {\n this.objects = mainObjectCollection;\n };\n /**\n * Sets the `cross table`.\n * @private\n */\n PdfDocumentBase.prototype.setCrossTable = function (cTable) {\n this.pdfCrossTable = cTable;\n };\n /**\n * Sets the `catalog`.\n * @private\n */\n PdfDocumentBase.prototype.setCatalog = function (catalog) {\n this.pdfCatalog = catalog;\n };\n PdfDocumentBase.prototype.save = function (filename) {\n var _this = this;\n var encoding = new Encoding(true);\n var SW = new StreamWriter(encoding);\n if (typeof filename === 'undefined') {\n var encoding_1 = new Encoding(true);\n var SW_1 = new StreamWriter(encoding_1);\n return new Promise(function (resolve, reject) {\n /* tslint:disable-next-line:no-any */\n var obj = {};\n obj.blobData = new Blob([_this.document.docSave(SW_1, true)], { type: 'application/pdf' });\n resolve(obj);\n });\n }\n else {\n this.document.docSave(SW, filename, true);\n }\n };\n /**\n * `Clone` of parent object - PdfDocument.\n * @private\n */\n PdfDocumentBase.prototype.clone = function () {\n return this.document;\n };\n return PdfDocumentBase;\n}());\nexport { PdfDocumentBase };\n","/**\n * `PdfName` class is used to perform name (element names) related primitive operations.\n * @private\n */\nvar PdfName = /** @class */ (function () {\n function PdfName(value) {\n /**\n * `Start symbol` of the name object.\n * @default /\n * @private\n */\n this.stringStartMark = '/';\n /**\n * `Value` of the element.\n * @private\n */\n this.internalValue = '';\n /**\n * Indicates if the object is currently in `saving state or not`.\n * @default false\n * @private\n */\n this.isSaving6 = false;\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position6 = -1;\n this.internalValue = this.normalizeValue(value);\n }\n Object.defineProperty(PdfName.prototype, \"status\", {\n //property\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status6;\n },\n set: function (value) {\n this.status6 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfName.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving6;\n },\n set: function (value) {\n this.isSaving6 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfName.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index6;\n },\n set: function (value) {\n this.index6 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfName.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position6;\n },\n set: function (value) {\n this.position6 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfName.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n return null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfName.prototype, \"value\", {\n /**\n * Gets or sets the `value` of the object.\n * @private\n */\n get: function () {\n return this.internalValue;\n },\n set: function (value) {\n // if (value !== this.value) {\n var val = value;\n if (value !== null && value.length > 0) {\n // val = (value.substring(0, 1) === this.stringStartMark) ? value.substring(1) : value;\n val = value;\n this.internalValue = this.normalizeValue(val);\n }\n else {\n this.internalValue = val;\n }\n // }\n },\n enumerable: true,\n configurable: true\n });\n //public methods\n /**\n * `Saves` the name using the specified writer.\n * @private\n */\n PdfName.prototype.save = function (writer) {\n // if (writer === null) {\n // throw new Error('ArgumentNullException : writer');\n // }\n writer.write(this.toString());\n };\n /**\n * Gets `string` representation of the primitive.\n * @private\n */\n PdfName.prototype.toString = function () {\n return (this.stringStartMark + this.escapeString(this.value));\n };\n /**\n * Creates a `copy of PdfName`.\n * @private\n */\n PdfName.prototype.clone = function (crossTable) {\n var newName = new PdfName();\n newName.value = this.internalValue;\n return newName;\n };\n /**\n * Replace some characters with its `escape sequences`.\n * @private\n */\n PdfName.prototype.escapeString = function (stringValue) {\n // if (str === null) {\n // throw new Error('ArgumentNullException : str');\n // }\n // if (str === '') {\n // return str;\n // }\n var result = '';\n var len = 0;\n for (var i = 0, len_1 = stringValue.length; i < len_1; i++) {\n var ch = stringValue[i];\n var index = PdfName.delimiters.indexOf(ch);\n // switch (ch) {\n // case '\\r' :\n // result = result + '\\\\r';\n // break;\n // case '\\n' :\n // result = result + '\\n';\n // break;\n // case '(' :\n // case ')' :\n // case '\\\\' :\n // //result.Append( '\\\\' ).Append( ch );\n // result = result + ch;\n // break;\n // default :\n // result = result + ch;\n // break;\n // }\n result = result + ch;\n }\n return result;\n };\n //methiods\n /**\n * Replace a symbol with its code with the precedence of the `sharp sign`.\n * @private\n */\n PdfName.prototype.normalizeValue = function (value, c) {\n // if (typeof c === undefined) {\n // let str : string = value;\n // for (let i : number = 0; i < PdfName.replacements.length; i++) {\n // str = this.normalizeValue(str, c);\n // }\n // return str;\n // } else {\n var strFormat = '#{0:X}';\n //return value.replace(c.toString(),String.format(strFormat,c));\n return value;\n // }\n };\n /**\n * PDF `special characters`.\n * @private\n */\n PdfName.delimiters = '()<>[]{}/%}';\n /**\n * The symbols that are not allowed in PDF names and `should be replaced`.\n * @private\n */\n PdfName.replacements = [' ', '\\t', '\\n', '\\r'];\n return PdfName;\n}());\nexport { PdfName };\n","/**\n * PdfOperators.ts class for EJ2-PDF\n * Class of string PDF common operators.\n * @private\n */\nvar Operators = /** @class */ (function () {\n /**\n * Create an instance of `PdfOperator` class.\n * @private\n */\n function Operators() {\n /**\n * Specifies the value of `test`.\n * @private\n */\n this.forTest = 'test';\n this.forTest = Operators.obj;\n }\n /**\n * Specifies the value of `obj`.\n * @private\n */\n Operators.obj = 'obj';\n /**\n * Specifies the value of `endObj`.\n * @private\n */\n Operators.endObj = 'endobj';\n /**\n * Specifies the value of `R`.\n * @private\n */\n Operators.r = 'R';\n /**\n * Specifies the value of ` `.\n * @private\n */\n Operators.whiteSpace = ' ';\n /**\n * Specifies the value of `/`.\n * @private\n */\n Operators.slash = '/';\n /**\n * Specifies the value of `\\r\\n`.\n * @private\n */\n Operators.newLine = '\\r\\n';\n /**\n * Specifies the value of `stream`.\n * @private\n */\n Operators.stream = 'stream';\n /**\n * Specifies the value of `endStream`.\n * @private\n */\n Operators.endStream = 'endstream';\n /**\n * Specifies the value of `xref`.\n * @private\n */\n Operators.xref = 'xref';\n /**\n * Specifies the value of `f`.\n * @private\n */\n Operators.f = 'f';\n /**\n * Specifies the value of `n`.\n * @private\n */\n Operators.n = 'n';\n /**\n * Specifies the value of `trailer`.\n * @private\n */\n Operators.trailer = 'trailer';\n /**\n * Specifies the value of `startxref`.\n * @private\n */\n Operators.startxref = 'startxref';\n /**\n * Specifies the value of `eof`.\n * @private\n */\n Operators.eof = '%%EOF';\n /**\n * Specifies the value of `header`.\n * @private\n */\n Operators.header = '%PDF-1.5';\n /**\n * Specifies the value of `beginText`.\n * @private\n */\n Operators.beginText = 'BT';\n /**\n * Specifies the value of `endText`.\n * @private\n */\n Operators.endText = 'ET';\n /**\n * Specifies the value of `m`.\n * @private\n */\n Operators.beginPath = 'm';\n /**\n * Specifies the value of `l`.\n * @private\n */\n Operators.appendLineSegment = 'l';\n /**\n * Specifies the value of `S`.\n * @private\n */\n Operators.stroke = 'S';\n /**\n * Specifies the value of `f`.\n * @private\n */\n Operators.fill = 'f';\n /**\n * Specifies the value of `f*`.\n * @private\n */\n Operators.fillEvenOdd = 'f*';\n /**\n * Specifies the value of `B`.\n * @private\n */\n Operators.fillStroke = 'B';\n /**\n * Specifies the value of `B*`.\n * @private\n */\n Operators.fillStrokeEvenOdd = 'B*';\n /**\n * Specifies the value of `c`.\n * @private\n */\n Operators.appendbeziercurve = 'c';\n /**\n * Specifies the value of `re`.\n * @private\n */\n Operators.appendRectangle = 're';\n /**\n * Specifies the value of `q`.\n * @private\n */\n Operators.saveState = 'q';\n /**\n * Specifies the value of `Q`.\n * @private\n */\n Operators.restoreState = 'Q';\n /**\n * Specifies the value of `Do`.\n * @private\n */\n Operators.paintXObject = 'Do';\n /**\n * Specifies the value of `cm`.\n * @private\n */\n Operators.modifyCtm = 'cm';\n /**\n * Specifies the value of `Tm`.\n * @private\n */\n Operators.modifyTM = 'Tm';\n /**\n * Specifies the value of `w`.\n * @private\n */\n Operators.setLineWidth = 'w';\n /**\n * Specifies the value of `J`.\n * @private\n */\n Operators.setLineCapStyle = 'J';\n /**\n * Specifies the value of `j`.\n * @private\n */\n Operators.setLineJoinStyle = 'j';\n /**\n * Specifies the value of `d`.\n * @private\n */\n Operators.setDashPattern = 'd';\n /**\n * Specifies the value of `i`.\n * @private\n */\n Operators.setFlatnessTolerance = 'i';\n /**\n * Specifies the value of `h`.\n * @private\n */\n Operators.closePath = 'h';\n /**\n * Specifies the value of `s`.\n * @private\n */\n Operators.closeStrokePath = 's';\n /**\n * Specifies the value of `b`.\n * @private\n */\n Operators.closeFillStrokePath = 'b';\n /**\n * Specifies the value of `setCharacterSpace`.\n * @private\n */\n Operators.setCharacterSpace = 'Tc';\n /**\n * Specifies the value of `setWordSpace`.\n * @private\n */\n Operators.setWordSpace = 'Tw';\n /**\n * Specifies the value of `setHorizontalScaling`.\n * @private\n */\n Operators.setHorizontalScaling = 'Tz';\n /**\n * Specifies the value of `setTextLeading`.\n * @private\n */\n Operators.setTextLeading = 'TL';\n /**\n * Specifies the value of `setFont`.\n * @private\n */\n Operators.setFont = 'Tf';\n /**\n * Specifies the value of `setRenderingMode`.\n * @private\n */\n Operators.setRenderingMode = 'Tr';\n /**\n * Specifies the value of `setTextRise`.\n * @private\n */\n Operators.setTextRise = 'Ts';\n /**\n * Specifies the value of `setTextScaling`.\n * @private\n */\n Operators.setTextScaling = 'Tz';\n /**\n * Specifies the value of `setCoords`.\n * @private\n */\n Operators.setCoords = 'Td';\n /**\n * Specifies the value of `goToNextLine`.\n * @private\n */\n Operators.goToNextLine = 'T*';\n /**\n * Specifies the value of `setText`.\n * @private\n */\n Operators.setText = 'Tj';\n /**\n * Specifies the value of `setTextWithFormatting`.\n * @private\n */\n Operators.setTextWithFormatting = 'TJ';\n /**\n * Specifies the value of `setTextOnNewLine`.\n * @private\n */\n Operators.setTextOnNewLine = '\\'';\n /**\n * Specifies the value of `selectcolorspaceforstroking`.\n * @private\n */\n Operators.selectcolorspaceforstroking = 'CS';\n /**\n * Specifies the value of `selectcolorspacefornonstroking`.\n * @private\n */\n Operators.selectcolorspacefornonstroking = 'cs';\n /**\n * Specifies the value of `setrbgcolorforstroking`.\n * @private\n */\n Operators.setrbgcolorforstroking = 'RG';\n /**\n * Specifies the value of `setrbgcolorfornonstroking`.\n * @private\n */\n Operators.setrbgcolorfornonstroking = 'rg';\n /**\n * Specifies the value of `K`.\n * @private\n */\n Operators.setcmykcolorforstroking = 'K';\n /**\n * Specifies the value of `k`.\n * @private\n */\n Operators.setcmykcolorfornonstroking = 'k';\n /**\n * Specifies the value of `G`.\n * @private\n */\n Operators.setgraycolorforstroking = 'G';\n /**\n * Specifies the value of `g`.\n * @private\n */\n Operators.setgraycolorfornonstroking = 'g';\n /**\n * Specifies the value of `W`.\n * @private\n */\n Operators.clipPath = 'W';\n /**\n * Specifies the value of `clipPathEvenOdd`.\n * @private\n */\n Operators.clipPathEvenOdd = 'W*';\n /**\n * Specifies the value of `n`.\n * @private\n */\n Operators.endPath = 'n';\n /**\n * Specifies the value of `setGraphicsState`.\n * @private\n */\n Operators.setGraphicsState = 'gs';\n /**\n * Specifies the value of `%`.\n * @private\n */\n Operators.comment = '%';\n /**\n * Specifies the value of `*`.\n * @private\n */\n Operators.evenOdd = '*';\n /**\n * Specifies the value of `M`.\n * @private\n */\n Operators.setMiterLimit = 'M';\n /**\n * Same as SC, but also supports Pattern, Separation, DeviceN, and ICCBased color spaces. For non-stroking operations.\n * @public\n */\n Operators.setColorAndPattern = 'scn';\n /**\n * Same as SC, but also supports Pattern, Separation, DeviceN, and ICCBased color spaces. For stroking.\n */\n Operators.setColorAndPatternStroking = 'SCN';\n return Operators;\n}());\nexport { Operators };\n","/**\n * dictionaryProperties.ts class for EJ2-PDF\n * PDF dictionary properties.\n * @private\n */\nvar DictionaryProperties = /** @class */ (function () {\n /**\n * Initialize an instance for `PdfDictionaryProperties` class.\n * @private\n */\n function DictionaryProperties() {\n /**\n * Specifies the value of `Pages`.\n * @private\n */\n this.pages = 'Pages';\n /**\n * Specifies the value of `Kids`.\n * @private\n */\n this.kids = 'Kids';\n /**\n * Specifies the value of `Count`.\n * @private\n */\n this.count = 'Count';\n /**\n * Specifies the value of `Resources`.\n * @private\n */\n this.resources = 'Resources';\n /**\n * Specifies the value of `Type`.\n * @private\n */\n this.type = 'Type';\n /**\n * Specifies the value of `Size`.\n * @private\n */\n this.size = 'Size';\n /**\n * Specifies the value of `MediaBox`.\n * @private\n */\n this.mediaBox = 'MediaBox';\n /**\n * Specifies the value of `Parent`.\n * @private\n */\n this.parent = 'Parent';\n /**\n * Specifies the value of `Root`.\n * @private\n */\n this.root = 'Root';\n /**\n * Specifies the value of `DecodeParms`.\n * @private\n */\n this.decodeParms = 'DecodeParms';\n /**\n * Specifies the value of `Filter`.\n * @private\n */\n this.filter = 'Filter';\n /**\n * Specifies the value of `Font`.\n * @private\n */\n this.font = 'Font';\n /**\n * Specifies the value of `Type1`.\n * @private\n */\n this.type1 = 'Type1';\n /**\n * Specifies the value of `BaseFont`.\n * @private\n */\n this.baseFont = 'BaseFont';\n /**\n * Specifies the value of `Encoding`.\n * @private\n */\n this.encoding = 'Encoding';\n /**\n * Specifies the value of `Subtype`.\n * @private\n */\n this.subtype = 'Subtype';\n /**\n * Specifies the value of `Contents`.\n * @private\n */\n this.contents = 'Contents';\n /**\n * Specifies the value of `ProcSet`.\n * @private\n */\n this.procset = 'ProcSet';\n /**\n * Specifies the value of `ColorSpace`.\n * @private\n */\n this.colorSpace = 'ColorSpace';\n /**\n * Specifies the value of `ExtGState`.\n * @private\n */\n this.extGState = 'ExtGState';\n /**\n * Specifies the value of `Pattern`.\n * @private\n */\n this.pattern = 'Pattern';\n /**\n * Specifies the value of `XObject`.\n * @private\n */\n this.xObject = 'XObject';\n /**\n * Specifies the value of `Length`.\n * @private\n */\n this.length = 'Length';\n /**\n * Specifies the value of `Width`.\n * @private\n */\n this.width = 'Width';\n /**\n * Specifies the value of `Height`.\n * @private\n */\n this.height = 'Height';\n /**\n * Specifies the value of `BitsPerComponent`.\n * @private\n */\n this.bitsPerComponent = 'BitsPerComponent';\n /**\n * Specifies the value of `Image`.\n * @private\n */\n this.image = 'Image';\n /**\n * Specifies the value of `dctdecode`.\n * @private\n */\n this.dctdecode = 'DCTDecode';\n /**\n * Specifies the value of `Columns`.\n * @private\n */\n this.columns = 'Columns';\n /**\n * Specifies the value of `BlackIs1`.\n * @private\n */\n this.blackIs1 = 'BlackIs1';\n /**\n * Specifies the value of `K`.\n * @private\n */\n this.k = 'K';\n /**\n * Specifies the value of `S`.\n * @private\n */\n this.s = 'S';\n /**\n * Specifies the value of `Predictor`.\n * @private\n */\n this.predictor = 'Predictor';\n /**\n * Specifies the value of `DeviceRGB`.\n * @private\n */\n this.deviceRgb = 'DeviceRGB';\n /**\n * Specifies the value of `Next`.\n * @private\n */\n this.next = 'Next';\n /**\n * Specifies the value of `Action`.\n * @private\n */\n this.action = 'Action';\n /**\n * Specifies the value of `Link`.\n * @private\n */\n this.link = 'Link';\n /**\n *\n * Specifies the value of `A`.\n * @private\n */\n this.a = 'A';\n /**\n * Specifies the value of `Annot`.\n * @private\n */\n this.annot = 'Annot';\n /**\n * Specifies the value of `P`.\n * @private\n */\n this.p = 'P';\n /**\n * Specifies the value of `C`.\n * @private\n */\n this.c = 'C';\n /**\n * Specifies the value of `Rect`.\n * @private\n */\n this.rect = 'Rect';\n /**\n * Specifies the value of `URI`.\n * @private\n */\n this.uri = 'URI';\n /**\n * Specifies the value of `Annots`.\n * @private\n */\n this.annots = 'Annots';\n /**\n * Specifies the value of `ca`.\n * @private\n */\n this.ca = 'ca';\n /**\n * Specifies the value of `CA`.\n * @private\n */\n this.CA = 'CA';\n /**\n * Specifies the value of `XYZ`.\n * @private\n */\n this.xyz = 'XYZ';\n /**\n * Specifies the value of `Fit`.\n * @private\n */\n this.fit = 'Fit';\n /**\n * Specifies the value of `Dest`.\n * @private\n */\n this.dest = 'Dest';\n /**\n * Specifies the value of `BM`.\n * @private\n */\n this.BM = 'BM';\n /**\n * Specifies the value of `flatedecode`.\n * @private\n */\n this.flatedecode = 'FlateDecode';\n /**\n * Specifies the value of `Rotate`.\n * @private\n */\n this.rotate = 'Rotate';\n /**\n * Specifies the value of 'bBox'.\n * @private\n */\n this.bBox = 'BBox';\n /**\n * Specifies the value of 'form'.\n * @private\n */\n this.form = 'Form';\n /**\n * Specifies the value of 'w'.\n * @private\n */\n this.w = 'W';\n /**\n * Specifies the value of 'cIDFontType2'.\n * @private\n */\n this.cIDFontType2 = 'CIDFontType2';\n /**\n * Specifies the value of 'cIDToGIDMap'.\n * @private\n */\n this.cIDToGIDMap = 'CIDToGIDMap';\n /**\n * Specifies the value of 'identity'.\n * @private\n */\n this.identity = 'Identity';\n /**\n * Specifies the value of 'dw'.\n * @private\n */\n this.dw = 'DW';\n /**\n * Specifies the value of 'fontDescriptor'.\n * @private\n */\n this.fontDescriptor = 'FontDescriptor';\n /**\n * Specifies the value of 'cIDSystemInfo'.\n * @private\n */\n this.cIDSystemInfo = 'CIDSystemInfo';\n /**\n * Specifies the value of 'fontName'.\n * @private\n */\n this.fontName = 'FontName';\n /**\n * Specifies the value of 'flags'.\n * @private\n */\n this.flags = 'Flags';\n /**\n * Specifies the value of 'fontBBox'.\n * @private\n */\n this.fontBBox = 'FontBBox';\n /**\n * Specifies the value of 'missingWidth'.\n * @private\n */\n this.missingWidth = 'MissingWidth';\n /**\n * Specifies the value of 'stemV'.\n * @private\n */\n this.stemV = 'StemV';\n /**\n * Specifies the value of 'italicAngle'.\n * @private\n */\n this.italicAngle = 'ItalicAngle';\n /**\n * Specifies the value of 'capHeight'.\n * @private\n */\n this.capHeight = 'CapHeight';\n /**\n * Specifies the value of 'ascent'.\n * @private\n */\n this.ascent = 'Ascent';\n /**\n * Specifies the value of 'descent'.\n * @private\n */\n this.descent = 'Descent';\n /**\n * Specifies the value of 'leading'.\n * @private\n */\n this.leading = 'Leading';\n /**\n * Specifies the value of 'avgWidth'.\n * @private\n */\n this.avgWidth = 'AvgWidth';\n /**\n * Specifies the value of 'fontFile2'.\n * @private\n */\n this.fontFile2 = 'FontFile2';\n /**\n * Specifies the value of 'maxWidth'.\n * @private\n */\n this.maxWidth = 'MaxWidth';\n /**\n * Specifies the value of 'xHeight'.\n * @private\n */\n this.xHeight = 'XHeight';\n /**\n * Specifies the value of 'stemH'.\n * @private\n */\n this.stemH = 'StemH';\n /**\n * Specifies the value of 'registry'.\n * @private\n */\n this.registry = 'Registry';\n /**\n * Specifies the value of 'ordering'.\n * @private\n */\n this.ordering = 'Ordering';\n /**\n * Specifies the value of 'supplement'.\n * @private\n */\n this.supplement = 'Supplement';\n /**\n * Specifies the value of 'type0'.\n * @private\n */\n this.type0 = 'Type0';\n /**\n * Specifies the value of 'identityH'.\n * @private\n */\n this.identityH = 'Identity-H';\n /**\n * Specifies the value of 'toUnicode'.\n * @private\n */\n this.toUnicode = 'ToUnicode';\n /**\n * Specifies the value of 'descendantFonts'.\n * @private\n */\n this.descendantFonts = 'DescendantFonts';\n /**\n * Specifies the value of 'background'.\n * @private\n */\n this.background = 'Background';\n /**\n * Specifies the value of 'shading'.\n * @private\n */\n this.shading = 'Shading';\n /**\n * Specifies the value of 'matrix'.\n * @private\n */\n this.matrix = 'Matrix';\n /**\n * Specifies the value of 'antiAlias'.\n * @private\n */\n this.antiAlias = 'AntiAlias';\n /**\n * Specifies the value of 'function'.\n * @private\n */\n this.function = 'Function';\n /**\n * Specifies the value of 'extend'.\n * @private\n */\n this.extend = 'Extend';\n /**\n * Specifies the value of 'shadingType'.\n * @private\n */\n this.shadingType = 'ShadingType';\n /**\n * Specifies the value of 'coords'.\n * @private\n */\n this.coords = 'Coords';\n /**\n * Specifies the value of 'domain'.\n * @private\n */\n this.domain = 'Domain';\n /**\n * Specifies the value of 'range'.\n * @private\n */\n this.range = 'Range';\n /**\n * Specifies the value of 'functionType'.\n * @private\n */\n this.functionType = 'FunctionType';\n /**\n * Specifies the value of 'bitsPerSample'.\n * @private\n */\n this.bitsPerSample = 'BitsPerSample';\n /**\n * Specifies the value of 'patternType'.\n * @private\n */\n this.patternType = 'PatternType';\n /**\n * Specifies the value of 'paintType'.\n * @private\n */\n this.paintType = 'PaintType';\n /**\n * Specifies the value of 'tilingType'.\n * @private\n */\n this.tilingType = 'TilingType';\n /**\n * Specifies the value of 'xStep'.\n * @private\n */\n this.xStep = 'XStep';\n /**\n * Specifies the value of 'yStep'.\n * @private\n */\n this.yStep = 'YStep';\n /**\n * Specifies the value of viewer preferences.\n * @private\n */\n this.viewerPreferences = 'ViewerPreferences';\n /**\n * Specifies the value of center window.\n * @private\n */\n this.centerWindow = 'CenterWindow';\n /**\n * Specifies the value of display title.\n * @private\n */\n this.displayTitle = 'DisplayTitle';\n /**\n * Specifies the value of fit window.\n * @private\n */\n this.fitWindow = 'FitWindow';\n /**\n * Specifies the value of hide menu bar.\n * @private\n */\n this.hideMenuBar = 'HideMenubar';\n /**\n * Specifies the value of hide tool bar.\n * @private\n */\n this.hideToolBar = 'HideToolbar';\n /**\n * Specifies the value of hide window UI.\n * @private\n */\n this.hideWindowUI = 'HideWindowUI';\n /**\n * Specifies the value of page mode.\n * @private\n */\n this.pageMode = 'PageMode';\n /**\n * Specifies the value of page layout.\n * @private\n */\n this.pageLayout = 'PageLayout';\n /**\n * Specifies the value of duplex.\n * @private\n */\n this.duplex = 'Duplex';\n /**\n * Specifies the value of print scaling.\n * @private\n */\n this.printScaling = 'PrintScaling';\n //\n }\n return DictionaryProperties;\n}());\nexport { DictionaryProperties };\n","import { Dictionary } from './../collections/dictionary';\nimport { PdfName } from './pdf-name';\nimport { Operators } from './../input-output/pdf-operators';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\n/**\n * `PdfDictionary` class is used to perform primitive operations.\n * @private\n */\nvar PdfDictionary = /** @class */ (function () {\n function PdfDictionary(dictionary) {\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position7 = -1;\n /**\n * The `IPdfSavable` with the specified key.\n * @private\n */\n this.primitiveItems = new Dictionary();\n /**\n * `Start marker` for dictionary.\n * @private\n */\n this.prefix = '<<';\n /**\n * `End marker` for dictionary.\n * @private\n */\n this.suffix = '>>';\n /**\n * @hidden\n * @private\n */\n this.resources = [];\n /**\n * Internal variable to hold `cloned object`.\n * @default null\n * @private\n */\n this.object = null;\n /**\n * Flag for PDF file formar 1.5 is dictionary `archiving` needed.\n * @default true\n * @private\n */\n this.archive = true;\n /**\n * Represents the Font dictionary.\n * @hidden\n * @private\n */\n this.isResource = false;\n if (typeof dictionary === 'undefined') {\n this.primitiveItems = new Dictionary();\n this.encrypt = true;\n this.dictionaryProperties = new DictionaryProperties();\n }\n else {\n this.primitiveItems = new Dictionary();\n var keys = dictionary.items.keys();\n var values = dictionary.items.values();\n for (var index = 0; index < dictionary.items.size(); index++) {\n this.primitiveItems.setValue(keys[index], values[index]);\n }\n this.status = dictionary.status;\n this.freezeChanges(this);\n this.encrypt = true;\n this.dictionaryProperties = new DictionaryProperties();\n }\n }\n Object.defineProperty(PdfDictionary.prototype, \"items\", {\n //Properties\n /**\n * Gets or sets the `IPdfSavable` with the specified key.\n * @private\n */\n get: function () {\n return this.primitiveItems;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"status\", {\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status7;\n },\n set: function (value) {\n this.status7 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving7;\n },\n set: function (value) {\n this.isSaving7 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index7;\n },\n set: function (value) {\n this.index7 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n return this.object;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position7;\n },\n set: function (value) {\n this.position7 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"Count\", {\n /**\n * Gets the `count`.\n * @private\n */\n get: function () {\n return this.primitiveItems.size();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"Dictionary\", {\n /**\n * Collection of `items` in the object.\n * @private\n */\n get: function () {\n return this;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Get flag if need to `archive` dictionary.\n * @private\n */\n PdfDictionary.prototype.getArchive = function () {\n return this.archive;\n };\n /**\n * Set flag if need to `archive` dictionary.\n * @private\n */\n PdfDictionary.prototype.setArchive = function (value) {\n this.archive = value;\n };\n /**\n * Sets flag if `encryption` is needed.\n * @private\n */\n PdfDictionary.prototype.setEncrypt = function (value) {\n this.encrypt = value;\n this.modify();\n };\n /**\n * Gets flag if `encryption` is needed.\n * @private\n */\n PdfDictionary.prototype.getEncrypt = function () {\n return this.encrypt;\n };\n /**\n * `Freezes` the changes.\n * @private\n */\n PdfDictionary.prototype.freezeChanges = function (freezer) {\n this.bChanged = false;\n };\n /**\n * Creates a `copy of PdfDictionary`.\n * @private\n */\n PdfDictionary.prototype.clone = function (crossTable) {\n //Need to add more codings\n var newDict = new PdfDictionary();\n return newDict;\n };\n /**\n * `Mark` this instance modified.\n * @private\n */\n PdfDictionary.prototype.modify = function () {\n this.bChanged = true;\n };\n /**\n * `Removes` the specified key.\n * @private\n */\n PdfDictionary.prototype.remove = function (key) {\n if (typeof key !== 'string') {\n this.primitiveItems.remove(key.value);\n this.modify();\n }\n else {\n this.remove(new PdfName(key));\n }\n };\n /**\n * `Determines` whether the dictionary contains the key.\n * @private\n */\n PdfDictionary.prototype.containsKey = function (key) {\n var returnValue = false;\n returnValue = this.primitiveItems.containsKey(key.toString());\n return returnValue;\n };\n /**\n * Raises event `BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onBeginSave = function () {\n this.beginSave.sender.beginSave();\n };\n /**\n * Raises event `Font Dictionary BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onFontDictionaryBeginSave = function () {\n this.fontDictionaryBeginSave.sender.fontDictionaryBeginSave();\n };\n /**\n * Raises event `Descendant Font BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onDescendantFontBeginSave = function () {\n this.descendantFontBeginSave.sender.descendantFontBeginSave();\n };\n /**\n * Raises event 'BeginSave'.\n * @private\n */\n PdfDictionary.prototype.onTemplateBeginSave = function () {\n this.pageBeginDrawTemplate.sender.pageBeginSave();\n };\n /**\n * Raises event `BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onBeginAnnotationSave = function () {\n this.annotationBeginSave.sender.beginSave();\n };\n /**\n * Raises event `BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onSectionBeginSave = function (writer) {\n var saveEvent = this.sectionBeginSave;\n saveEvent.sender.beginSave(saveEvent.state, writer);\n };\n PdfDictionary.prototype.save = function (writer, bRaiseEvent) {\n if (typeof bRaiseEvent === 'undefined') {\n this.save(writer, true);\n }\n else {\n writer.write(this.prefix);\n if (typeof this.beginSave !== 'undefined') {\n this.onBeginSave();\n }\n if (typeof this.descendantFontBeginSave !== 'undefined') {\n this.onDescendantFontBeginSave();\n }\n if (typeof this.fontDictionaryBeginSave !== 'undefined') {\n this.onFontDictionaryBeginSave();\n }\n if (typeof this.annotationBeginSave !== 'undefined') {\n this.onBeginAnnotationSave();\n }\n if (typeof this.sectionBeginSave !== 'undefined') {\n this.onSectionBeginSave(writer);\n }\n if (typeof this.pageBeginDrawTemplate !== 'undefined') {\n this.onTemplateBeginSave();\n }\n // }\n if (this.Count > 0) {\n this.saveItems(writer);\n }\n writer.write(this.suffix);\n writer.write(Operators.newLine);\n }\n };\n /**\n * `Save dictionary items`.\n * @private\n */\n PdfDictionary.prototype.saveItems = function (writer) {\n writer.write(Operators.newLine);\n var keys = this.primitiveItems.keys();\n var values = this.primitiveItems.values();\n for (var index = 0; index < keys.length; index++) {\n var key = keys[index];\n var name_1 = new PdfName(key);\n name_1.save(writer);\n writer.write(Operators.whiteSpace);\n var resources = values[index];\n resources.save(writer);\n writer.write(Operators.newLine);\n }\n };\n return PdfDictionary;\n}());\nexport { PdfDictionary };\nvar SaveSectionCollectionEventHandler = /** @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveSectionCollectionEventHandler(sender) {\n this.sender = sender;\n }\n return SaveSectionCollectionEventHandler;\n}());\nexport { SaveSectionCollectionEventHandler };\nvar SaveDescendantFontEventHandler = /** @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveDescendantFontEventHandler(sender) {\n this.sender = sender;\n }\n return SaveDescendantFontEventHandler;\n}());\nexport { SaveDescendantFontEventHandler };\nvar SaveFontDictionaryEventHandler = /** @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveFontDictionaryEventHandler(sender) {\n this.sender = sender;\n }\n return SaveFontDictionaryEventHandler;\n}());\nexport { SaveFontDictionaryEventHandler };\nvar SaveAnnotationEventHandler = /** @class */ (function () {\n /**\n * New instance for `save annotation event handler` class.\n * @private\n */\n function SaveAnnotationEventHandler(sender) {\n this.sender = sender;\n }\n return SaveAnnotationEventHandler;\n}());\nexport { SaveAnnotationEventHandler };\nvar SaveSectionEventHandler = /** @class */ (function () {\n // constructors\n /**\n * New instance for `save section event handler` class.\n * @private\n */\n function SaveSectionEventHandler(sender, state) {\n this.sender = sender;\n this.state = state;\n }\n return SaveSectionEventHandler;\n}());\nexport { SaveSectionEventHandler };\n/**\n * SaveTemplateEventHandler class used to store information about template elements.\n * @private\n * @hidden\n */\nvar SaveTemplateEventHandler = /** @class */ (function () {\n /**\n * New instance for save section collection event handler class.\n * @public\n */\n function SaveTemplateEventHandler(sender) {\n this.sender = sender;\n }\n return SaveTemplateEventHandler;\n}());\nexport { SaveTemplateEventHandler };\n","/**\n * `PdfNumber` class is used to perform number related primitive operations.\n * @private\n */\nvar PdfNumber = /** @class */ (function () {\n /**\n * Initializes a new instance of the `PdfNumber` class.\n * @private\n */\n function PdfNumber(value) {\n /**\n * Sotres the `position`.\n * @default -1\n * @private\n */\n this.position5 = -1;\n this.value = value;\n }\n Object.defineProperty(PdfNumber.prototype, \"intValue\", {\n /**\n * Gets or sets the `integer` value.\n * @private\n */\n get: function () {\n return this.value;\n },\n set: function (value) {\n this.value = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"isInteger\", {\n /**\n * Gets or sets a value indicating whether this instance `is integer`.\n * @private\n */\n get: function () {\n return this.integer;\n },\n set: function (value) {\n this.integer = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"status\", {\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status5;\n },\n set: function (value) {\n this.status5 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving5;\n },\n set: function (value) {\n this.isSaving5 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index5;\n },\n set: function (value) {\n this.index5 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position5;\n },\n set: function (value) {\n this.position5 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n var rValue = null;\n return rValue;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Saves the object`.\n * @private\n */\n PdfNumber.prototype.save = function (writer) {\n writer.write(this.intValue.toString()); //tostring(CultureInfo.InletiantCulture)\n };\n /**\n * Creates a `copy of PdfNumber`.\n * @private\n */\n PdfNumber.prototype.clone = function (crossTable) {\n var newNumber = new PdfNumber(this.value);\n return newNumber;\n };\n /**\n * Converts a `float value to a string` using Adobe PDF rules.\n * @private\n */\n PdfNumber.floatToString = function (number) {\n // let tempString1 : string = number.toString();\n // let tempString2 : string = tempString1.indexOf('.') != -1 ? tempString1.substring(0, tempString1.indexOf('.')) : tempString1;\n var returnString = number.toFixed(2);\n if (returnString === '0.00') {\n returnString = '.00';\n }\n // let prefixLength : number = (22 - tempString2.length) >= 0 ? (22 - tempString2.length) : 0;\n // for (let index : number = 0; index < prefixLength; index++) {\n // returnString += '0';\n // }\n // returnString += tempString2 + '.00';\n // returnString += (tempString3.length > 6) ? tempString3.substring(0,6) : tempString3;\n // let suffixLength : number = (6 - tempString3.length) >= 0 ? (6 - tempString3.length) : 0;\n // for (let index : number = 0; index < suffixLength; index++) {\n // returnString += '0';\n // }\n return returnString;\n };\n /**\n * Determines the `minimum of the three values`.\n * @private\n */\n PdfNumber.min = function (x, y, z) {\n var r = Math.min(x, y);\n return Math.min(z, r);\n };\n return PdfNumber;\n}());\nexport { PdfNumber };\n","import { PdfNumber } from './pdf-number';\nimport { Operators } from './../input-output/pdf-operators';\n/**\n * `PdfArray` class is used to perform array related primitive operations.\n * @private\n */\nvar PdfArray = /** @class */ (function () {\n function PdfArray(array) {\n //Fields\n /**\n * `startMark` - '['\n * @private\n */\n this.startMark = '[';\n /**\n * `endMark` - ']'.\n * @private\n */\n this.endMark = ']';\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position9 = -1;\n /**\n * Internal variable to hold `cloned object`.\n * @default null\n * @private\n */\n this.clonedObject9 = null;\n /**\n * Represents the Font dictionary.\n * @hidden\n * @private\n */\n this.isFont = false;\n if (typeof array === 'undefined') {\n this.internalElements = [];\n }\n else {\n if (typeof array !== 'undefined' && !(array instanceof PdfArray)) {\n var tempNumberArray = array;\n for (var index = 0; index < tempNumberArray.length; index++) {\n var pdfNumber = new PdfNumber(tempNumberArray[index]);\n this.add(pdfNumber);\n }\n // } else if (typeof array !== 'undefined' && (array instanceof PdfArray)) {\n }\n else {\n var tempArray = array;\n // if (tempArray.Elements.length > 0) {\n this.internalElements = [];\n for (var index = 0; index < tempArray.elements.length; index++) {\n this.internalElements.push(tempArray.elements[index]);\n }\n // }\n }\n }\n }\n //property\n /**\n * Gets the `IPdfSavable` at the specified index.\n * @private\n */\n PdfArray.prototype.items = function (index) {\n // if (index < 0 || index >= this.Count) {\n // throw new Error('ArgumentOutOfRangeException : index, The index can\"t be less then zero or greater then Count.');\n // }\n return this.internalElements[index];\n };\n Object.defineProperty(PdfArray.prototype, \"count\", {\n /**\n * Gets the `count`.\n * @private\n */\n get: function () {\n return this.internalElements.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"status\", {\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status9;\n },\n set: function (value) {\n this.status9 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving9;\n },\n set: function (value) {\n this.isSaving9 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n return this.clonedObject9;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position9;\n },\n set: function (value) {\n this.position9 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index9;\n },\n set: function (value) {\n this.index9 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"CrossTable\", {\n /**\n * Returns `PdfCrossTable` associated with the object.\n * @private\n */\n get: function () {\n return this.pdfCrossTable;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"elements\", {\n /**\n * Gets the `elements` of the Pdf Array.\n * @private\n */\n get: function () {\n return this.internalElements;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Adds` the specified element to the PDF array.\n * @private\n */\n PdfArray.prototype.add = function (element) {\n // if (element === null) {\n // throw new Error('ArgumentNullException : obj');\n // }\n if (typeof this.internalElements === 'undefined') {\n this.internalElements = [];\n }\n this.internalElements.push(element);\n this.markedChange();\n };\n /**\n * `Marks` the object changed.\n * @private\n */\n PdfArray.prototype.markedChange = function () {\n this.bChanged = true;\n };\n /**\n * `Determines` whether the specified element is within the array.\n * @private\n */\n PdfArray.prototype.contains = function (element) {\n var returnValue = false;\n for (var index = 0; index < this.internalElements.length; index++) {\n var tempElement = this.internalElements[index];\n var inputElement = element;\n if (tempElement != null && typeof tempElement !== 'undefined' && inputElement != null && typeof inputElement !== 'undefined') {\n if (tempElement.value === inputElement.value) {\n return true;\n }\n }\n // if (this.internalElements[index] === element) {\n // returnValue = true;\n // }\n }\n return returnValue;\n };\n /**\n * Returns the `primitive object` of input index.\n * @private\n */\n PdfArray.prototype.getItems = function (index) {\n // if (index < 0 || index >= this.Count) {\n // throw new Error('ArgumentOutOfRangeException : index , The index can\"t be less then zero or greater then Count.');\n // }\n return this.internalElements[index];\n };\n /**\n * `Saves` the object using the specified writer.\n * @private\n */\n PdfArray.prototype.save = function (writer) {\n // if (writer === null) {\n // throw new Error('ArgumentNullException : writer');\n // }\n writer.write(this.startMark);\n for (var i = 0, len = this.count; i < len; i++) {\n this.getItems(i).save(writer);\n if (i + 1 !== len) {\n writer.write(Operators.whiteSpace);\n }\n }\n writer.write(this.endMark);\n };\n /**\n * Creates a `copy of PdfArray`.\n * @private\n */\n PdfArray.prototype.clone = function (crossTable) {\n // if (this.clonedObject9 !== null && this.clonedObject9.CrossTable === crossTable) {\n // return this.clonedObject9;\n // } else {\n this.clonedObject9 = null;\n // Else clone the object.\n var newArray = new PdfArray();\n for (var index = 0; index < this.internalElements.length; index++) {\n var obj = this.internalElements[index];\n newArray.add(obj.clone(crossTable));\n }\n newArray.pdfCrossTable = crossTable;\n this.clonedObject9 = newArray;\n return newArray;\n };\n /**\n * Creates filled PDF array `from the rectangle`.\n * @private\n */\n PdfArray.fromRectangle = function (bounds) {\n var values = [bounds.x, bounds.y, bounds.width, bounds.height];\n var array = new PdfArray(values);\n return array;\n };\n // /**\n // * Creates the rectangle from filled PDF array.\n // * @private\n // */\n // public ToRectangle() : RectangleF {\n // if (this.Count < 4) {\n // throw Error('InvalidOperationException-Can not convert to rectangle.');\n // }\n // let x1 : number;\n // let x2 : number;\n // let y1 : number;\n // let y2 : number;\n // let num : PdfNumber = this.getItems(0) as PdfNumber;\n // x1 = num.IntValue;\n // num = this.getItems(1) as PdfNumber;\n // y1 = num.IntValue;\n // num = this.getItems(2) as PdfNumber;\n // x2 = num.IntValue;\n // num = this.getItems(3) as PdfNumber;\n // y2 = num.IntValue;\n // let x : number = Math.min(x1, x2);\n // let y : number = Math.min(y1, y2);\n // let width : number = Math.abs(x1 - x2);\n // let height : number = Math.abs(y1 - y2);\n // let rect : RectangleF = new RectangleF(new PointF(x, y), new SizeF(width, height));\n // return rect;\n // }\n /**\n * `Inserts` the element into the array.\n * @private\n */\n PdfArray.prototype.insert = function (index, element) {\n if (index < this.internalElements.length && index > 0) {\n var tempElements = [];\n for (var i = 0; i < index; i++) {\n tempElements.push(this.internalElements[i]);\n }\n tempElements.push(element);\n for (var i = index; i < this.internalElements.length; i++) {\n tempElements.push(this.internalElements[i]);\n }\n this.internalElements = tempElements;\n }\n else {\n this.internalElements.push(element);\n }\n this.markChanged();\n };\n /**\n * `Checks whether array contains the element`.\n * @private\n */\n PdfArray.prototype.indexOf = function (element) {\n return this.internalElements.indexOf(element);\n };\n /**\n * `Removes` element from the array.\n * @private\n */\n PdfArray.prototype.remove = function (element) {\n // if (element === null) {\n // throw new Error('ArgumentNullException : element');\n // }\n var index = this.internalElements.indexOf(element);\n // if (index >= 0 && index < this.internalElements.length) {\n this.internalElements[index] = null;\n // }\n this.markChanged();\n };\n /**\n * `Remove` the element from the array by its index.\n * @private\n */\n PdfArray.prototype.removeAt = function (index) {\n // this.internalElements.RemoveAt(index);\n if (this.internalElements.length > index) {\n var tempArray = [];\n for (var i = 0; i < index; i++) {\n tempArray.push(this.internalElements[i]);\n }\n for (var i = index + 1; i < this.internalElements.length; i++) {\n tempArray.push(this.internalElements[i]);\n }\n this.internalElements = tempArray;\n }\n this.markChanged();\n };\n /**\n * `Clear` the array.\n * @private\n */\n PdfArray.prototype.clear = function () {\n this.internalElements = [];\n this.markChanged();\n };\n /**\n * `Marks` the object changed.\n * @private\n */\n PdfArray.prototype.markChanged = function () {\n this.bChanged = true;\n };\n return PdfArray;\n}());\nexport { PdfArray };\n","/* eslint-disable */\nimport { Encoding } from '@syncfusion/ej2-file-utils';\n/**\n * array literal codes\n */\nvar ARR_LITERAL_CODES = new Int16Array(286);\nvar ARR_LITERAL_LENGTHS = new Uint8Array(286);\nvar ARR_DISTANCE_CODES = new Int16Array(30);\nvar ARR_DISTANCE_LENGTHS = new Uint8Array(30);\n/**\n * represent compression stream writer\n * ```typescript\n * let compressedWriter = new CompressedStreamWriter();\n * let text: string = 'Hello world!!!';\n * compressedWriter.write(text, 0, text.length);\n * compressedWriter.close();\n * ```\n */\nvar CompressedStreamWriter = /** @class */ (function () {\n /**\n * Initializes compressor and writes ZLib header if needed.\n * @param {boolean} noWrap - optional if true, ZLib header and checksum will not be written.\n */\n function CompressedStreamWriter(noWrap) {\n this.pendingBuffer = new Uint8Array(1 << 16);\n this.pendingBufLength = 0;\n this.pendingBufCache = 0;\n this.pendingBufBitsInCache = 0;\n this.bufferPosition = 0;\n this.extraBits = 0;\n this.currentHash = 0;\n this.matchStart = 0;\n this.matchLength = 0;\n this.matchPrevAvail = false;\n this.blockStart = 0;\n this.stringStart = 0;\n this.lookAhead = 0;\n this.totalBytesIn = 0;\n this.inputOffset = 0;\n this.inputEnd = 0;\n this.windowSize = 1 << 15;\n this.windowMask = this.windowSize - 1;\n this.hashSize = 1 << 15;\n this.hashMask = this.hashSize - 1;\n this.hashShift = Math.floor((15 + 3 - 1) / 3);\n this.maxDist = this.windowSize - 262;\n this.checkSum = 1;\n this.noWrap = false;\n if (!CompressedStreamWriter.isHuffmanTreeInitiated) {\n CompressedStreamWriter.initHuffmanTree();\n CompressedStreamWriter.isHuffmanTreeInitiated = true;\n }\n this.treeLiteral = new CompressorHuffmanTree(this, 286, 257, 15);\n this.treeDistances = new CompressorHuffmanTree(this, 30, 1, 15);\n this.treeCodeLengths = new CompressorHuffmanTree(this, 19, 4, 7);\n this.arrDistances = new Uint16Array((1 << 14));\n this.arrLiterals = new Uint8Array((1 << 14));\n this.stream = [];\n this.dataWindow = new Uint8Array(2 * this.windowSize);\n this.hashHead = new Int16Array(this.hashSize);\n this.hashPrevious = new Int16Array(this.windowSize);\n this.blockStart = this.stringStart = 1;\n this.noWrap = noWrap;\n if (!noWrap) {\n this.writeZLibHeader();\n }\n }\n Object.defineProperty(CompressedStreamWriter.prototype, \"compressedData\", {\n /**\n * get compressed data\n */\n get: function () {\n return this.stream;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CompressedStreamWriter.prototype, \"getCompressedString\", {\n get: function () {\n var compressedString = '';\n if (this.stream !== undefined) {\n for (var i = 0; i < this.stream.length; i++) {\n compressedString += String.fromCharCode.apply(null, this.stream[i]);\n }\n }\n return compressedString;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Compresses data and writes it to the stream.\n * @param {Uint8Array} data - data to compress\n * @param {number} offset - offset in data\n * @param {number} length - length of the data\n * @returns {void}\n */\n CompressedStreamWriter.prototype.write = function (data, offset, length) {\n if (data === undefined || data === null) {\n throw new Error('ArgumentException: data cannot null or undefined');\n }\n var end = offset + length;\n if (0 > offset || offset > end || end > data.length) {\n throw new Error('ArgumentOutOfRangeException: Offset or length is incorrect');\n }\n if (typeof data === 'string') {\n var encode = new Encoding(false);\n encode.type = 'Utf8';\n data = new Uint8Array(encode.getBytes(data, 0, data.length));\n end = offset + data.length;\n }\n this.inputBuffer = data;\n this.inputOffset = offset;\n this.inputEnd = end;\n if (!this.noWrap) {\n this.checkSum = ChecksumCalculator.checksumUpdate(this.checkSum, this.inputBuffer, this.inputOffset, end);\n }\n while (!(this.inputEnd === this.inputOffset) || !(this.pendingBufLength === 0)) {\n this.pendingBufferFlush();\n this.compressData(false);\n }\n };\n /**\n * write ZLib header to the compressed data\n * @return {void}\n */\n CompressedStreamWriter.prototype.writeZLibHeader = function () {\n /* Initialize header.*/\n var headerDate = (8 + (7 << 4)) << 8;\n /* Save compression level.*/\n headerDate |= ((5 >> 2) & 3) << 6;\n /* Align header.*/\n headerDate += 31 - (headerDate % 31);\n /* Write header to stream.*/\n this.pendingBufferWriteShortBytes(headerDate);\n };\n /**\n * Write Most Significant Bytes in to stream\n * @param {number} s - check sum value\n */\n CompressedStreamWriter.prototype.pendingBufferWriteShortBytes = function (s) {\n this.pendingBuffer[this.pendingBufLength++] = s >> 8;\n this.pendingBuffer[this.pendingBufLength++] = s;\n };\n CompressedStreamWriter.prototype.compressData = function (finish) {\n var success;\n do {\n this.fillWindow();\n var canFlush = (finish && this.inputEnd === this.inputOffset);\n success = this.compressSlow(canFlush, finish);\n } while (this.pendingBufLength === 0 && success);\n return success;\n };\n CompressedStreamWriter.prototype.compressSlow = function (flush, finish) {\n if (this.lookAhead < 262 && !flush) {\n return false;\n }\n while (this.lookAhead >= 262 || flush) {\n if (this.lookAhead === 0) {\n return this.lookAheadCompleted(finish);\n }\n if (this.stringStart >= 2 * this.windowSize - 262) {\n this.slideWindow();\n }\n var prevMatch = this.matchStart;\n var prevLen = this.matchLength;\n if (this.lookAhead >= 3) {\n this.discardMatch();\n }\n if (prevLen >= 3 && this.matchLength <= prevLen) {\n prevLen = this.matchPreviousBest(prevMatch, prevLen);\n }\n else {\n this.matchPreviousAvailable();\n }\n if (this.bufferPosition >= (1 << 14)) {\n return this.huffmanIsFull(finish);\n }\n }\n return true;\n };\n CompressedStreamWriter.prototype.discardMatch = function () {\n var hashHead = this.insertString();\n if (hashHead !== 0 && this.stringStart - hashHead <= this.maxDist && this.findLongestMatch(hashHead)) {\n if (this.matchLength <= 5 && (this.matchLength === 3 && this.stringStart - this.matchStart > 4096)) {\n this.matchLength = 3 - 1;\n }\n }\n };\n CompressedStreamWriter.prototype.matchPreviousAvailable = function () {\n if (this.matchPrevAvail) {\n this.huffmanTallyLit(this.dataWindow[this.stringStart - 1] & 0xff);\n }\n this.matchPrevAvail = true;\n this.stringStart++;\n this.lookAhead--;\n };\n CompressedStreamWriter.prototype.matchPreviousBest = function (prevMatch, prevLen) {\n this.huffmanTallyDist(this.stringStart - 1 - prevMatch, prevLen);\n prevLen -= 2;\n do {\n this.stringStart++;\n this.lookAhead--;\n if (this.lookAhead >= 3) {\n this.insertString();\n }\n } while (--prevLen > 0);\n this.stringStart++;\n this.lookAhead--;\n this.matchPrevAvail = false;\n this.matchLength = 3 - 1;\n return prevLen;\n };\n CompressedStreamWriter.prototype.lookAheadCompleted = function (finish) {\n if (this.matchPrevAvail) {\n this.huffmanTallyLit(this.dataWindow[this.stringStart - 1] & 0xff);\n }\n this.matchPrevAvail = false;\n this.huffmanFlushBlock(this.dataWindow, this.blockStart, this.stringStart - this.blockStart, finish);\n this.blockStart = this.stringStart;\n return false;\n };\n CompressedStreamWriter.prototype.huffmanIsFull = function (finish) {\n var len = this.stringStart - this.blockStart;\n if (this.matchPrevAvail) {\n len--;\n }\n var lastBlock = (finish && this.lookAhead === 0 && !this.matchPrevAvail);\n this.huffmanFlushBlock(this.dataWindow, this.blockStart, len, lastBlock);\n this.blockStart += len;\n return !lastBlock;\n };\n CompressedStreamWriter.prototype.fillWindow = function () {\n if (this.stringStart >= this.windowSize + this.maxDist) {\n this.slideWindow();\n }\n while (this.lookAhead < 262 && this.inputOffset < this.inputEnd) {\n var more = 2 * this.windowSize - this.lookAhead - this.stringStart;\n if (more > this.inputEnd - this.inputOffset) {\n more = this.inputEnd - this.inputOffset;\n }\n this.dataWindow.set(this.inputBuffer.subarray(this.inputOffset, this.inputOffset + more), this.stringStart + this.lookAhead);\n this.inputOffset += more;\n this.totalBytesIn += more;\n this.lookAhead += more;\n }\n if (this.lookAhead >= 3) {\n this.updateHash();\n }\n };\n CompressedStreamWriter.prototype.slideWindow = function () {\n this.dataWindow.set(this.dataWindow.subarray(this.windowSize, this.windowSize + this.windowSize), 0);\n this.matchStart -= this.windowSize;\n this.stringStart -= this.windowSize;\n this.blockStart -= this.windowSize;\n for (var i = 0; i < this.hashSize; ++i) {\n var m = this.hashHead[i] & 0xffff;\n this.hashHead[i] = (((m >= this.windowSize) ? (m - this.windowSize) : 0));\n }\n for (var i = 0; i < this.windowSize; i++) {\n var m = this.hashPrevious[i] & 0xffff;\n this.hashPrevious[i] = ((m >= this.windowSize) ? (m - this.windowSize) : 0);\n }\n };\n CompressedStreamWriter.prototype.insertString = function () {\n var match;\n var hash = ((this.currentHash << this.hashShift) ^ this.dataWindow[this.stringStart + (3 - 1)]) & this.hashMask;\n this.hashPrevious[this.stringStart & this.windowMask] = match = this.hashHead[hash];\n this.hashHead[hash] = this.stringStart;\n this.currentHash = hash;\n return match & 0xffff;\n };\n CompressedStreamWriter.prototype.findLongestMatch = function (curMatch) {\n var chainLen = 4096;\n var niceLen = 258;\n var scan = this.stringStart;\n var match;\n var bestEnd = this.stringStart + this.matchLength;\n var bestLength = Math.max(this.matchLength, 3 - 1);\n var limit = Math.max(this.stringStart - this.maxDist, 0);\n var stringEnd = this.stringStart + 258 - 1;\n var scanEnd1 = this.dataWindow[bestEnd - 1];\n var scanEnd = this.dataWindow[bestEnd];\n var data = this.dataWindow;\n if (bestLength >= 32) {\n chainLen >>= 2;\n }\n if (niceLen > this.lookAhead) {\n niceLen = this.lookAhead;\n }\n do {\n if (data[curMatch + bestLength] !== scanEnd ||\n data[curMatch + bestLength - 1] !== scanEnd1 ||\n data[curMatch] !== data[scan] ||\n data[curMatch + 1] !== data[scan + 1]) {\n continue;\n }\n match = curMatch + 2;\n scan += 2;\n /* tslint:disable */\n while (data[++scan] === data[++match] && data[++scan] === data[++match] &&\n data[++scan] === data[++match] && data[++scan] === data[++match] &&\n data[++scan] === data[++match] && data[++scan] === data[++match] &&\n data[++scan] === data[++match] && data[++scan] === data[++match] && scan < stringEnd) {\n /* tslint:disable */\n }\n if (scan > bestEnd) {\n this.matchStart = curMatch;\n bestEnd = scan;\n bestLength = scan - this.stringStart;\n if (bestLength >= niceLen) {\n break;\n }\n scanEnd1 = data[bestEnd - 1];\n scanEnd = data[bestEnd];\n }\n scan = this.stringStart;\n } while ((curMatch = (this.hashPrevious[curMatch & this.windowMask] & 0xffff)) > limit && --chainLen !== 0);\n this.matchLength = Math.min(bestLength, this.lookAhead);\n return this.matchLength >= 3;\n };\n CompressedStreamWriter.prototype.updateHash = function () {\n this.currentHash = (this.dataWindow[this.stringStart] << this.hashShift) ^ this.dataWindow[this.stringStart + 1];\n };\n CompressedStreamWriter.prototype.huffmanTallyLit = function (literal) {\n this.arrDistances[this.bufferPosition] = 0;\n this.arrLiterals[this.bufferPosition++] = literal;\n this.treeLiteral.codeFrequencies[literal]++;\n return this.bufferPosition >= (1 << 14);\n };\n CompressedStreamWriter.prototype.huffmanTallyDist = function (dist, len) {\n this.arrDistances[this.bufferPosition] = dist;\n this.arrLiterals[this.bufferPosition++] = (len - 3);\n var lc = this.huffmanLengthCode(len - 3);\n this.treeLiteral.codeFrequencies[lc]++;\n if (lc >= 265 && lc < 285) {\n this.extraBits += Math.floor((lc - 261) / 4);\n }\n var dc = this.huffmanDistanceCode(dist - 1);\n this.treeDistances.codeFrequencies[dc]++;\n if (dc >= 4) {\n this.extraBits += Math.floor((dc / 2 - 1));\n }\n return this.bufferPosition >= (1 << 14);\n };\n CompressedStreamWriter.prototype.huffmanFlushBlock = function (stored, storedOffset, storedLength, lastBlock) {\n this.treeLiteral.codeFrequencies[256]++;\n this.treeLiteral.buildTree();\n this.treeDistances.buildTree();\n this.treeLiteral.calculateBLFreq(this.treeCodeLengths);\n this.treeDistances.calculateBLFreq(this.treeCodeLengths);\n this.treeCodeLengths.buildTree();\n var blTreeCodes = 4;\n for (var i = 18; i > blTreeCodes; i--) {\n if (this.treeCodeLengths.codeLengths[CompressorHuffmanTree.huffCodeLengthOrders[i]] > 0) {\n blTreeCodes = i + 1;\n }\n }\n var opt_len = 14 + blTreeCodes * 3 + this.treeCodeLengths.getEncodedLength() +\n this.treeLiteral.getEncodedLength() + this.treeDistances.getEncodedLength() + this.extraBits;\n var static_len = this.extraBits;\n for (var i = 0; i < 286; i++) {\n static_len += this.treeLiteral.codeFrequencies[i] * ARR_LITERAL_LENGTHS[i];\n }\n for (var i = 0; i < 30; i++) {\n static_len += this.treeDistances.codeFrequencies[i] * ARR_DISTANCE_LENGTHS[i];\n }\n if (opt_len >= static_len) {\n // Force static trees.\n opt_len = static_len;\n }\n if (storedOffset >= 0 && storedLength + 4 < opt_len >> 3) {\n this.huffmanFlushStoredBlock(stored, storedOffset, storedLength, lastBlock);\n }\n else if (opt_len == static_len) {\n // Encode with static tree.\n this.pendingBufferWriteBits((1 << 1) + (lastBlock ? 1 : 0), 3);\n this.treeLiteral.setStaticCodes(ARR_LITERAL_CODES, ARR_LITERAL_LENGTHS);\n this.treeDistances.setStaticCodes(ARR_DISTANCE_CODES, ARR_DISTANCE_LENGTHS);\n this.huffmanCompressBlock();\n this.huffmanReset();\n }\n else {\n this.pendingBufferWriteBits((2 << 1) + (lastBlock ? 1 : 0), 3);\n this.huffmanSendAllTrees(blTreeCodes);\n this.huffmanCompressBlock();\n this.huffmanReset();\n }\n };\n CompressedStreamWriter.prototype.huffmanFlushStoredBlock = function (stored, storedOffset, storedLength, lastBlock) {\n this.pendingBufferWriteBits((0 << 1) + (lastBlock ? 1 : 0), 3);\n this.pendingBufferAlignToByte();\n this.pendingBufferWriteShort(storedLength);\n this.pendingBufferWriteShort(~storedLength);\n this.pendingBufferWriteByteBlock(stored, storedOffset, storedLength);\n this.huffmanReset();\n };\n CompressedStreamWriter.prototype.huffmanLengthCode = function (len) {\n if (len === 255) {\n return 285;\n }\n var code = 257;\n while (len >= 8) {\n code += 4;\n len >>= 1;\n }\n return code + len;\n };\n CompressedStreamWriter.prototype.huffmanDistanceCode = function (distance) {\n var code = 0;\n while (distance >= 4) {\n code += 2;\n distance >>= 1;\n }\n return code + distance;\n };\n CompressedStreamWriter.prototype.huffmanSendAllTrees = function (blTreeCodes) {\n this.treeCodeLengths.buildCodes();\n this.treeLiteral.buildCodes();\n this.treeDistances.buildCodes();\n this.pendingBufferWriteBits(this.treeLiteral.treeLength - 257, 5);\n this.pendingBufferWriteBits(this.treeDistances.treeLength - 1, 5);\n this.pendingBufferWriteBits(blTreeCodes - 4, 4);\n for (var rank = 0; rank < blTreeCodes; rank++) {\n this.pendingBufferWriteBits(this.treeCodeLengths.codeLengths[CompressorHuffmanTree.huffCodeLengthOrders[rank]], 3);\n }\n this.treeLiteral.writeTree(this.treeCodeLengths);\n this.treeDistances.writeTree(this.treeCodeLengths);\n };\n CompressedStreamWriter.prototype.huffmanReset = function () {\n this.bufferPosition = 0;\n this.extraBits = 0;\n this.treeLiteral.reset();\n this.treeDistances.reset();\n this.treeCodeLengths.reset();\n };\n CompressedStreamWriter.prototype.huffmanCompressBlock = function () {\n for (var i = 0; i < this.bufferPosition; i++) {\n var literalLen = this.arrLiterals[i] & 255;\n var dist = this.arrDistances[i];\n if (dist-- !== 0) {\n var lc = this.huffmanLengthCode(literalLen);\n this.treeLiteral.writeCodeToStream(lc);\n var bits = Math.floor((lc - 261) / 4);\n if (bits > 0 && bits <= 5) {\n this.pendingBufferWriteBits(literalLen & ((1 << bits) - 1), bits);\n }\n var dc = this.huffmanDistanceCode(dist);\n this.treeDistances.writeCodeToStream(dc);\n bits = Math.floor(dc / 2 - 1);\n if (bits > 0) {\n this.pendingBufferWriteBits(dist & ((1 << bits) - 1), bits);\n }\n }\n else {\n this.treeLiteral.writeCodeToStream(literalLen);\n }\n }\n this.treeLiteral.writeCodeToStream(256);\n };\n /**\n * write bits in to internal buffer\n * @param {number} b - source of bits\n * @param {number} count - count of bits to write\n */\n CompressedStreamWriter.prototype.pendingBufferWriteBits = function (b, count) {\n var uint = new Uint32Array(1);\n uint[0] = this.pendingBufCache | (b << this.pendingBufBitsInCache);\n this.pendingBufCache = uint[0];\n this.pendingBufBitsInCache += count;\n this.pendingBufferFlushBits();\n };\n CompressedStreamWriter.prototype.pendingBufferFlush = function (isClose) {\n this.pendingBufferFlushBits();\n if (this.pendingBufLength > 0) {\n var array = new Uint8Array(this.pendingBufLength);\n array.set(this.pendingBuffer.subarray(0, this.pendingBufLength), 0);\n this.stream.push(array);\n }\n this.pendingBufLength = 0;\n };\n CompressedStreamWriter.prototype.pendingBufferFlushBits = function () {\n var result = 0;\n while (this.pendingBufBitsInCache >= 8 && this.pendingBufLength < (1 << 16)) {\n this.pendingBuffer[this.pendingBufLength++] = this.pendingBufCache;\n this.pendingBufCache >>= 8;\n this.pendingBufBitsInCache -= 8;\n result++;\n }\n return result;\n };\n CompressedStreamWriter.prototype.pendingBufferWriteByteBlock = function (data, offset, length) {\n var array = data.subarray(offset, offset + length);\n this.pendingBuffer.set(array, this.pendingBufLength);\n this.pendingBufLength += length;\n };\n CompressedStreamWriter.prototype.pendingBufferWriteShort = function (s) {\n this.pendingBuffer[this.pendingBufLength++] = s;\n this.pendingBuffer[this.pendingBufLength++] = (s >> 8);\n };\n CompressedStreamWriter.prototype.pendingBufferAlignToByte = function () {\n if (this.pendingBufBitsInCache > 0) {\n this.pendingBuffer[this.pendingBufLength++] = this.pendingBufCache;\n }\n this.pendingBufCache = 0;\n this.pendingBufBitsInCache = 0;\n };\n /**\n * Huffman Tree literal calculation\n * @private\n */\n CompressedStreamWriter.initHuffmanTree = function () {\n var i = 0;\n while (i < 144) {\n ARR_LITERAL_CODES[i] = CompressorHuffmanTree.bitReverse((0x030 + i) << 8);\n ARR_LITERAL_LENGTHS[i++] = 8;\n }\n while (i < 256) {\n ARR_LITERAL_CODES[i] = CompressorHuffmanTree.bitReverse((0x190 - 144 + i) << 7);\n ARR_LITERAL_LENGTHS[i++] = 9;\n }\n while (i < 280) {\n ARR_LITERAL_CODES[i] = CompressorHuffmanTree.bitReverse((0x000 - 256 + i) << 9);\n ARR_LITERAL_LENGTHS[i++] = 7;\n }\n while (i < 286) {\n ARR_LITERAL_CODES[i] = CompressorHuffmanTree.bitReverse((0x0c0 - 280 + i) << 8);\n ARR_LITERAL_LENGTHS[i++] = 8;\n }\n for (i = 0; i < 30; i++) {\n ARR_DISTANCE_CODES[i] = CompressorHuffmanTree.bitReverse(i << 11);\n ARR_DISTANCE_LENGTHS[i] = 5;\n }\n };\n /**\n * close the stream and write all pending buffer in to stream\n * @returns {void}\n */\n CompressedStreamWriter.prototype.close = function () {\n do {\n this.pendingBufferFlush(true);\n if (!this.compressData(true)) {\n this.pendingBufferFlush(true);\n this.pendingBufferAlignToByte();\n if (!this.noWrap) {\n this.pendingBufferWriteShortBytes(this.checkSum >> 16);\n this.pendingBufferWriteShortBytes(this.checkSum & 0xffff);\n }\n this.pendingBufferFlush(true);\n }\n } while (!(this.inputEnd === this.inputOffset) ||\n !(this.pendingBufLength === 0));\n };\n /**\n * release allocated un-managed resource\n * @returns {void}\n */\n CompressedStreamWriter.prototype.destroy = function () {\n this.stream = [];\n this.stream = undefined;\n this.pendingBuffer = undefined;\n this.treeLiteral = undefined;\n this.treeDistances = undefined;\n this.treeCodeLengths = undefined;\n this.arrLiterals = undefined;\n this.arrDistances = undefined;\n this.hashHead = undefined;\n this.hashPrevious = undefined;\n this.dataWindow = undefined;\n this.inputBuffer = undefined;\n this.pendingBufLength = undefined;\n this.pendingBufCache = undefined;\n this.pendingBufBitsInCache = undefined;\n this.bufferPosition = undefined;\n this.extraBits = undefined;\n this.currentHash = undefined;\n this.matchStart = undefined;\n this.matchLength = undefined;\n this.matchPrevAvail = undefined;\n this.blockStart = undefined;\n this.stringStart = undefined;\n this.lookAhead = undefined;\n this.totalBytesIn = undefined;\n this.inputOffset = undefined;\n this.inputEnd = undefined;\n this.windowSize = undefined;\n this.windowMask = undefined;\n this.hashSize = undefined;\n this.hashMask = undefined;\n this.hashShift = undefined;\n this.maxDist = undefined;\n this.checkSum = undefined;\n this.noWrap = undefined;\n };\n CompressedStreamWriter.isHuffmanTreeInitiated = false;\n return CompressedStreamWriter;\n}());\nexport { CompressedStreamWriter };\n/**\n * represent the Huffman Tree\n */\nvar CompressorHuffmanTree = /** @class */ (function () {\n /**\n * Create new Huffman Tree\n * @param {CompressedStreamWriter} writer instance\n * @param {number} elementCount - element count\n * @param {number} minCodes - minimum count\n * @param {number} maxLength - maximum count\n */\n function CompressorHuffmanTree(writer, elementCount, minCodes, maxLength) {\n this.writer = writer;\n this.codeMinCount = minCodes;\n this.maxLength = maxLength;\n this.codeFrequency = new Uint16Array(elementCount);\n this.lengthCount = new Int32Array(maxLength);\n }\n Object.defineProperty(CompressorHuffmanTree.prototype, \"treeLength\", {\n get: function () {\n return this.codeCount;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CompressorHuffmanTree.prototype, \"codeLengths\", {\n get: function () {\n return this.codeLength;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CompressorHuffmanTree.prototype, \"codeFrequencies\", {\n get: function () {\n return this.codeFrequency;\n },\n enumerable: true,\n configurable: true\n });\n CompressorHuffmanTree.prototype.setStaticCodes = function (codes, lengths) {\n var temp = new Int16Array(codes.length);\n temp.set(codes, 0);\n this.codes = temp;\n var lengthTemp = new Uint8Array(lengths.length);\n lengthTemp.set(lengths, 0);\n this.codeLength = lengthTemp;\n };\n /**\n * reset all code data in tree\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.reset = function () {\n for (var i = 0; i < this.codeFrequency.length; i++) {\n this.codeFrequency[i] = 0;\n }\n this.codes = undefined;\n this.codeLength = undefined;\n };\n /**\n * write code to the compressor output stream\n * @param {number} code - code to be written\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.writeCodeToStream = function (code) {\n this.writer.pendingBufferWriteBits(this.codes[code] & 0xffff, this.codeLength[code]);\n };\n /**\n * calculate code from their frequencies\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.buildCodes = function () {\n var nextCode = new Int32Array(this.maxLength);\n this.codes = new Int16Array(this.codeCount);\n var code = 0;\n for (var bitsCount = 0; bitsCount < this.maxLength; bitsCount++) {\n nextCode[bitsCount] = code;\n code += this.lengthCount[bitsCount] << (15 - bitsCount);\n }\n for (var i = 0; i < this.codeCount; i++) {\n var bits = this.codeLength[i];\n if (bits > 0) {\n this.codes[i] = CompressorHuffmanTree.bitReverse(nextCode[bits - 1]);\n nextCode[bits - 1] += 1 << (16 - bits);\n }\n }\n };\n CompressorHuffmanTree.bitReverse = function (value) {\n return (CompressorHuffmanTree.reverseBits[value & 15] << 12\n | CompressorHuffmanTree.reverseBits[(value >> 4) & 15] << 8\n | CompressorHuffmanTree.reverseBits[(value >> 8) & 15] << 4\n | CompressorHuffmanTree.reverseBits[value >> 12]);\n };\n /**\n * calculate length of compressed data\n * @returns {number}\n */\n CompressorHuffmanTree.prototype.getEncodedLength = function () {\n var len = 0;\n for (var i = 0; i < this.codeFrequency.length; i++) {\n len += this.codeFrequency[i] * this.codeLength[i];\n }\n return len;\n };\n /**\n * calculate code frequencies\n * @param {CompressorHuffmanTree} blTree\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.calculateBLFreq = function (blTree) {\n var maxCount;\n var minCount;\n var count;\n var curLen = -1;\n var i = 0;\n while (i < this.codeCount) {\n count = 1;\n var nextLen = this.codeLength[i];\n if (nextLen === 0) {\n maxCount = 138;\n minCount = 3;\n }\n else {\n maxCount = 6;\n minCount = 3;\n if (curLen !== nextLen) {\n blTree.codeFrequency[nextLen]++;\n count = 0;\n }\n }\n curLen = nextLen;\n i++;\n while (i < this.codeCount && curLen === this.codeLength[i]) {\n i++;\n if (++count >= maxCount) {\n break;\n }\n }\n if (count < minCount) {\n blTree.codeFrequency[curLen] += count;\n }\n else if (curLen !== 0) {\n blTree.codeFrequency[16]++;\n }\n else if (count <= 10) {\n blTree.codeFrequency[17]++;\n }\n else {\n blTree.codeFrequency[18]++;\n }\n }\n };\n /**\n * @param {CompressorHuffmanTree} blTree - write tree to output stream\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.writeTree = function (blTree) {\n var maxRepeatCount;\n var minRepeatCount;\n var currentRepeatCount;\n var currentCodeLength = -1;\n var i = 0;\n while (i < this.codeCount) {\n currentRepeatCount = 1;\n var nextLen = this.codeLength[i];\n if (nextLen === 0) {\n maxRepeatCount = 138;\n minRepeatCount = 3;\n }\n else {\n maxRepeatCount = 6;\n minRepeatCount = 3;\n if (currentCodeLength !== nextLen) {\n blTree.writeCodeToStream(nextLen);\n currentRepeatCount = 0;\n }\n }\n currentCodeLength = nextLen;\n i++;\n while (i < this.codeCount && currentCodeLength === this.codeLength[i]) {\n i++;\n if (++currentRepeatCount >= maxRepeatCount) {\n break;\n }\n }\n if (currentRepeatCount < minRepeatCount) {\n while (currentRepeatCount-- > 0) {\n blTree.writeCodeToStream(currentCodeLength);\n }\n }\n else if (currentCodeLength !== 0) {\n blTree.writeCodeToStream(16);\n this.writer.pendingBufferWriteBits(currentRepeatCount - 3, 2);\n }\n else if (currentRepeatCount <= 10) {\n blTree.writeCodeToStream(17);\n this.writer.pendingBufferWriteBits(currentRepeatCount - 3, 3);\n }\n else {\n blTree.writeCodeToStream(18);\n this.writer.pendingBufferWriteBits(currentRepeatCount - 11, 7);\n }\n }\n };\n /**\n * Build huffman tree\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.buildTree = function () {\n var codesCount = this.codeFrequency.length;\n var arrTree = new Int32Array(codesCount);\n var treeLength = 0;\n var maxCount = 0;\n for (var n = 0; n < codesCount; n++) {\n var freq = this.codeFrequency[n];\n if (freq !== 0) {\n var pos = treeLength++;\n var pPos = 0;\n while (pos > 0 && this.codeFrequency[arrTree[pPos = Math.floor((pos - 1) / 2)]] > freq) {\n arrTree[pos] = arrTree[pPos];\n pos = pPos;\n }\n arrTree[pos] = n;\n maxCount = n;\n }\n }\n while (treeLength < 2) {\n arrTree[treeLength++] =\n (maxCount < 2) ? ++maxCount : 0;\n }\n this.codeCount = Math.max(maxCount + 1, this.codeMinCount);\n var leafsCount = treeLength;\n var nodesCount = leafsCount;\n var child = new Int32Array(4 * treeLength - 2);\n var values = new Int32Array(2 * treeLength - 1);\n for (var i = 0; i < treeLength; i++) {\n var node = arrTree[i];\n var iIndex = 2 * i;\n child[iIndex] = node;\n child[iIndex + 1] = -1;\n values[i] = (this.codeFrequency[node] << 8);\n arrTree[i] = i;\n }\n this.constructHuffmanTree(arrTree, treeLength, values, nodesCount, child);\n this.buildLength(child);\n };\n CompressorHuffmanTree.prototype.constructHuffmanTree = function (arrTree, treeLength, values, nodesCount, child) {\n do {\n var first = arrTree[0];\n var last = arrTree[--treeLength];\n var lastVal = values[last];\n var pPos = 0;\n var path = 1;\n while (path < treeLength) {\n if (path + 1 < treeLength && values[arrTree[path]] > values[arrTree[path + 1]]) {\n path++;\n }\n arrTree[pPos] = arrTree[path];\n pPos = path;\n path = pPos * 2 + 1;\n }\n while ((path = pPos) > 0 && values[arrTree[pPos = Math.floor((path - 1) / 2)]] > lastVal) {\n arrTree[path] = arrTree[pPos];\n }\n arrTree[path] = last;\n var second = arrTree[0];\n last = nodesCount++;\n child[2 * last] = first;\n child[2 * last + 1] = second;\n var minDepth = Math.min(values[first] & 0xff, values[second] & 0xff);\n values[last] = lastVal = values[first] + values[second] - minDepth + 1;\n pPos = 0;\n path = 1;\n /* tslint:disable */\n while (path < treeLength) {\n if (path + 1 < treeLength && values[arrTree[path]] > values[arrTree[path + 1]]) {\n path++;\n }\n arrTree[pPos] = arrTree[path];\n pPos = path;\n path = pPos * 2 + 1;\n } /* tslint:disable */\n while ((path = pPos) > 0 && values[arrTree[pPos = Math.floor((path - 1) / 2)]] > lastVal) {\n arrTree[path] = arrTree[pPos];\n }\n arrTree[path] = last;\n } while (treeLength > 1);\n };\n CompressorHuffmanTree.prototype.buildLength = function (child) {\n this.codeLength = new Uint8Array(this.codeFrequency.length);\n var numNodes = Math.floor(child.length / 2);\n var numLeafs = Math.floor((numNodes + 1) / 2);\n var overflow = 0;\n for (var i = 0; i < this.maxLength; i++) {\n this.lengthCount[i] = 0;\n }\n overflow = this.calculateOptimalCodeLength(child, overflow, numNodes);\n if (overflow === 0) {\n return;\n }\n var iIncreasableLength = this.maxLength - 1;\n do {\n while (this.lengthCount[--iIncreasableLength] === 0) {\n /* tslint:disable */\n }\n do {\n this.lengthCount[iIncreasableLength]--;\n this.lengthCount[++iIncreasableLength]++;\n overflow -= (1 << (this.maxLength - 1 - iIncreasableLength));\n } while (overflow > 0 && iIncreasableLength < this.maxLength - 1);\n } while (overflow > 0);\n this.recreateTree(child, overflow, numLeafs);\n };\n CompressorHuffmanTree.prototype.recreateTree = function (child, overflow, numLeafs) {\n this.lengthCount[this.maxLength - 1] += overflow;\n this.lengthCount[this.maxLength - 2] -= overflow;\n var nodePtr = 2 * numLeafs;\n for (var bits = this.maxLength; bits !== 0; bits--) {\n var n = this.lengthCount[bits - 1];\n while (n > 0) {\n var childPtr = 2 * child[nodePtr++];\n if (child[childPtr + 1] === -1) {\n this.codeLength[child[childPtr]] = bits;\n n--;\n }\n }\n }\n };\n CompressorHuffmanTree.prototype.calculateOptimalCodeLength = function (child, overflow, numNodes) {\n var lengths = new Int32Array(numNodes);\n lengths[numNodes - 1] = 0;\n for (var i = numNodes - 1; i >= 0; i--) {\n var childIndex = 2 * i + 1;\n if (child[childIndex] !== -1) {\n var bitLength = lengths[i] + 1;\n if (bitLength > this.maxLength) {\n bitLength = this.maxLength;\n overflow++;\n }\n lengths[child[childIndex - 1]] = lengths[child[childIndex]] = bitLength;\n }\n else {\n var bitLength = lengths[i];\n this.lengthCount[bitLength - 1]++;\n this.codeLength[child[childIndex - 1]] = lengths[i];\n }\n }\n return overflow;\n };\n CompressorHuffmanTree.reverseBits = [0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15];\n CompressorHuffmanTree.huffCodeLengthOrders = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];\n return CompressorHuffmanTree;\n}());\nexport { CompressorHuffmanTree };\n/**\n * Checksum calculator, based on Adler32 algorithm.\n */\nvar ChecksumCalculator = /** @class */ (function () {\n function ChecksumCalculator() {\n }\n /**\n * Updates checksum by calculating checksum of the\n * given buffer and adding it to current value.\n * @param {number} checksum - current checksum.\n * @param {Uint8Array} buffer - data byte array.\n * @param {number} offset - offset in the buffer.\n * @param {number} length - length of data to be used from the stream.\n * @returns {number}\n */\n ChecksumCalculator.checksumUpdate = function (checksum, buffer, offset, length) {\n var uint = new Uint32Array(1);\n uint[0] = checksum;\n var checksum_uint = uint[0];\n var s1 = uint[0] = checksum_uint & 65535;\n var s2 = uint[0] = checksum_uint >> ChecksumCalculator.checkSumBitOffset;\n while (length > 0) {\n var steps = Math.min(length, ChecksumCalculator.checksumIterationCount);\n length -= steps;\n while (--steps >= 0) {\n s1 = s1 + (uint[0] = (buffer[offset++] & 255));\n s2 = s2 + s1;\n }\n s1 %= ChecksumCalculator.checksumBase;\n s2 %= ChecksumCalculator.checksumBase;\n }\n checksum_uint = (s2 << ChecksumCalculator.checkSumBitOffset) | s1;\n return checksum_uint;\n };\n ChecksumCalculator.checkSumBitOffset = 16;\n ChecksumCalculator.checksumBase = 65521;\n ChecksumCalculator.checksumIterationCount = 3800;\n return ChecksumCalculator;\n}());\nexport { ChecksumCalculator };\n/* eslint-enable */ \n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfDictionary } from './pdf-dictionary';\nimport { PdfNumber } from './pdf-number';\nimport { Operators } from './../input-output/pdf-operators';\nimport { PdfName } from './pdf-name';\nimport { PdfArray } from './pdf-array';\nimport { PdfReferenceHolder } from './pdf-reference';\nimport { CompressedStreamWriter } from '@syncfusion/ej2-compression';\n/**\n * `PdfStream` class is used to perform stream related primitive operations.\n * @private\n */\nvar PdfStream = /** @class */ (function (_super) {\n __extends(PdfStream, _super);\n function PdfStream(dictionary, data) {\n var _this = _super.call(this, dictionary) || this;\n //Constants\n /**\n * @hidden\n * @private\n */\n _this.dicPrefix = 'stream';\n /**\n * @hidden\n * @private\n */\n _this.dicSuffix = 'endstream';\n /**\n * Internal variable to hold `cloned object`.\n * @private\n */\n _this.clonedObject2 = null;\n /**\n * @hidden\n * @private\n */\n _this.bCompress = true;\n if (typeof dictionary !== 'undefined' || typeof data !== 'undefined') {\n _this.dataStream2 = [];\n _this.dataStream2 = data;\n _this.bCompress2 = false;\n }\n else {\n _this.dataStream2 = [];\n _this.bCompress2 = true;\n //Pending\n }\n return _this;\n }\n Object.defineProperty(PdfStream.prototype, \"internalStream\", {\n /**\n * Gets the `internal` stream.\n * @private\n */\n get: function () {\n return this.dataStream2;\n },\n set: function (value) {\n this.dataStream2 = [];\n this.dataStream2 = value;\n this.modify();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStream.prototype, \"compress\", {\n /**\n * Gets or sets `compression` flag.\n * @private\n */\n get: function () {\n return this.bCompress;\n },\n set: function (value) {\n this.bCompress = value;\n this.modify();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStream.prototype, \"data\", {\n /**\n * Gets or sets the `data`.\n * @private\n */\n get: function () {\n return this.dataStream2;\n },\n set: function (value) {\n this.dataStream2 = [];\n this.dataStream2 = value;\n this.modify();\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Clear` the internal stream.\n * @private\n */\n PdfStream.prototype.clearStream = function () {\n this.internalStream = [];\n if (this.items.containsKey(this.dictionaryProperties.filter)) {\n this.remove(this.dictionaryProperties.filter);\n }\n this.bCompress = true;\n this.modify();\n };\n /**\n * `Writes` the specified string.\n * @private\n */\n PdfStream.prototype.write = function (text) {\n if (text == null) {\n throw new Error('ArgumentNullException:text');\n }\n if (text.length <= 0) {\n throw new Error('ArgumentException: Can not write an empty string, text');\n }\n this.dataStream2.push(text);\n this.modify();\n };\n /**\n * `Writes` the specified bytes.\n * @private\n */\n PdfStream.prototype.writeBytes = function (data) {\n if (data === null) {\n throw new Error('ArgumentNullException:data');\n }\n if (data.length <= 0) {\n throw new Error('ArgumentException: Can not write an empty bytes, data');\n }\n var text = '';\n for (var i = 0; i < data.length; i++) {\n text += String.fromCharCode(data[i]);\n }\n this.dataStream2.push(text);\n this.modify();\n };\n /**\n * Raises event `Cmap BeginSave`.\n * @private\n */\n PdfStream.prototype.onCmapBeginSave = function () {\n this.cmapBeginSave.sender.cmapBeginSave();\n };\n /**\n * Raises event `Font Program BeginSave`.\n * @private\n */\n PdfStream.prototype.onFontProgramBeginSave = function () {\n this.fontProgramBeginSave.sender.fontProgramBeginSave();\n };\n /**\n * `Compresses the content` if it's required.\n * @private\n */\n PdfStream.prototype.compressContent = function (data, writer) {\n if (this.bCompress) {\n var byteArray = [];\n for (var i = 0; i < data.length; i++) {\n byteArray.push(data.charCodeAt(i));\n }\n var dataArray = new Uint8Array(byteArray);\n var sw = new CompressedStreamWriter();\n // data = 'Hello World!!!';\n sw.write(dataArray, 0, dataArray.length);\n sw.close();\n data = sw.getCompressedString;\n this.addFilter(this.dictionaryProperties.flatedecode);\n }\n return data;\n };\n /**\n * `Adds a filter` to the filter array.\n * @private\n */\n PdfStream.prototype.addFilter = function (filterName) {\n var obj = this.items.getValue(this.dictionaryProperties.filter);\n if (obj instanceof PdfReferenceHolder) {\n var rh = obj;\n obj = rh.object;\n }\n var array = obj;\n var name = obj;\n if (name != null) {\n array = new PdfArray();\n array.insert(0, name);\n this.items.setValue(this.dictionaryProperties.filter, array);\n }\n name = new PdfName(filterName);\n if (array == null) {\n this.items.setValue(this.dictionaryProperties.filter, name);\n }\n else {\n array.insert(0, name);\n }\n };\n /**\n * `Saves` the object using the specified writer.\n * @private\n */\n PdfStream.prototype.save = function (writer) {\n if (typeof this.cmapBeginSave !== 'undefined') {\n this.onCmapBeginSave();\n }\n if (typeof this.fontProgramBeginSave !== 'undefined') {\n this.onFontProgramBeginSave();\n }\n var data = '';\n for (var i = 0; i < this.data.length; i++) {\n data = data + this.data[i];\n }\n if (data.length > 1 && !this.isResource) {\n data = 'q\\r\\n' + data + 'Q\\r\\n';\n }\n data = this.compressContent(data, writer);\n var length = data.length;\n this.items.setValue(this.dictionaryProperties.length, new PdfNumber(length));\n _super.prototype.save.call(this, writer, false);\n writer.write(this.dicPrefix);\n writer.write(Operators.newLine);\n if (data.length > 0) {\n writer.write(data);\n }\n writer.write(Operators.newLine);\n writer.write(this.dicSuffix);\n writer.write(Operators.newLine);\n };\n /**\n * Converts `bytes to string`.\n * @private\n */\n PdfStream.bytesToString = function (byteArray) {\n var output = '';\n for (var i = 0; i < byteArray.length; i++) {\n output = output + String.fromCharCode(byteArray[i]);\n }\n return output;\n };\n return PdfStream;\n}(PdfDictionary));\nexport { PdfStream };\nvar SaveCmapEventHandler = /** @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveCmapEventHandler(sender) {\n this.sender = sender;\n }\n return SaveCmapEventHandler;\n}());\nexport { SaveCmapEventHandler };\nvar SaveFontProgramEventHandler = /** @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveFontProgramEventHandler(sender) {\n this.sender = sender;\n }\n return SaveFontProgramEventHandler;\n}());\nexport { SaveFontProgramEventHandler };\n","/**\n * public Enum for `ObjectType`.\n * @private\n */\nexport var ObjectType;\n(function (ObjectType) {\n /**\n * Specifies the type of `Free`.\n * @private\n */\n ObjectType[ObjectType[\"Free\"] = 0] = \"Free\";\n /**\n * Specifies the type of `Normal`.\n * @private\n */\n ObjectType[ObjectType[\"Normal\"] = 1] = \"Normal\";\n /**\n * Specifies the type of `Packed`.\n * @private\n */\n ObjectType[ObjectType[\"Packed\"] = 2] = \"Packed\";\n})(ObjectType || (ObjectType = {}));\n","import { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfStream } from './../primitives/pdf-stream';\nimport { PdfArray } from './../primitives/pdf-array';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { PdfString } from './../primitives/pdf-string';\n/**\n * `PdfReference` class is used to perform reference related primitive operations.\n * @private\n */\nvar PdfReference = /** @class */ (function () {\n function PdfReference(objNumber, genNumber) {\n /**\n * Holds the `index` number of the object.\n * @default -1\n * @private\n */\n this.index3 = -1;\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position3 = -1;\n /**\n * Holds the `object number`.\n * @default 0\n * @private\n */\n this.objNumber = 0;\n /**\n * Holds the `generation number` of the object.\n * @default 0\n * @private\n */\n this.genNumber = 0;\n if (typeof objNumber === 'number' && typeof genNumber === 'number') {\n this.objNumber = objNumber;\n this.genNumber = genNumber;\n // } else if (typeof objNum === 'string' && typeof genNum === 'string') {\n }\n else {\n this.objNumber = Number(objNumber);\n this.genNumber = Number(genNumber);\n }\n }\n Object.defineProperty(PdfReference.prototype, \"status\", {\n //Property\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status3;\n },\n set: function (value) {\n this.status3 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReference.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving3;\n },\n set: function (value) {\n this.isSaving3 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReference.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index3;\n },\n set: function (value) {\n this.index3 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReference.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position3;\n },\n set: function (value) {\n this.position3 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReference.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n var returnObject3 = null;\n return returnObject3;\n },\n enumerable: true,\n configurable: true\n });\n //IPdfPrimitives methods\n /**\n * `Saves` the object.\n * @private\n */\n PdfReference.prototype.save = function (writer) {\n writer.write(this.toString());\n };\n /**\n * Returns a `string` representing the object.\n * @private\n */\n PdfReference.prototype.toString = function () {\n return this.objNumber.toString() + ' ' + this.genNumber.toString() + ' R';\n };\n /**\n * Creates a `deep copy` of the IPdfPrimitive object.\n * @private\n */\n PdfReference.prototype.clone = function (crossTable) {\n return null;\n };\n return PdfReference;\n}());\nexport { PdfReference };\n/**\n * `PdfReferenceHolder` class is used to perform reference holder related primitive operations.\n * @private\n */\nvar PdfReferenceHolder = /** @class */ (function () {\n function PdfReferenceHolder(obj1, obj2) {\n /**\n * Holds the `index` number of the object.\n * @default -1\n * @private\n */\n this.index4 = -1;\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position4 = -1;\n /**\n * The `index` of the object within the object collection.\n * @default -1\n * @private\n */\n this.objectIndex = -1;\n /**\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n // if (typeof obj2 === 'undefined') {\n this.initialize(obj1);\n // }\n // else {\n // if (obj2 === null) {\n // throw new Error('ArgumentNullException : crossTable');\n // }\n // if (obj1 === null) {\n // throw new Error('ArgumentNullException : reference');\n // }\n // this.crossTable = obj2;\n // let tempObj1 : PdfReference = obj1;\n // this.reference = tempObj1;\n // }\n }\n Object.defineProperty(PdfReferenceHolder.prototype, \"status\", {\n //Properties\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status4;\n },\n set: function (value) {\n this.status4 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving4;\n },\n set: function (value) {\n this.isSaving4 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index4;\n },\n set: function (value) {\n this.index4 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position4;\n },\n set: function (value) {\n this.position4 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n return null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"object\", {\n /**\n * Gets the `object` the reference is of.\n * @private\n */\n get: function () {\n // if ((this.reference != null) || (this.object == null)) {\n // this.object = this.GetterObject();\n // }\n return this.primitiveObject;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"reference\", {\n /**\n * Gets the `reference`.\n * @private\n */\n get: function () {\n return this.pdfReference;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"index\", {\n /**\n * Gets the `index` of the object.\n * @private\n */\n get: function () {\n // let items : PdfMainObjectCollection = this.crossTable.PdfObjects;\n // this.objectIndex = items.GetObjectIndex(this.reference);\n // if (this.objectIndex < 0) {\n // let obj : IPdfPrimitive = this.crossTable.GetObject(this.reference);\n // this.objectIndex = items.Count - 1;\n // }\n return this.objectIndex;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"element\", {\n /**\n * Gets the `element`.\n * @private\n */\n get: function () {\n return this.primitiveObject;\n },\n enumerable: true,\n configurable: true\n });\n PdfReferenceHolder.prototype.initialize = function (obj1) {\n if (obj1 instanceof PdfArray\n || obj1 instanceof PdfDictionary\n || obj1 instanceof PdfName\n || obj1 instanceof PdfNumber\n || obj1 instanceof PdfStream\n || obj1 instanceof PdfReference\n || obj1 instanceof PdfString) {\n this.primitiveObject = obj1;\n }\n else {\n var tempObj = obj1;\n this.initialize(tempObj.element);\n }\n };\n /**\n * `Writes` a reference into a PDF document.\n * @private\n */\n PdfReferenceHolder.prototype.save = function (writer) {\n // if (writer == null) {\n // throw new Error('ArgumentNullException : writer');\n // }\n var position = writer.position;\n var cTable = writer.document.crossTable;\n // if (cTable.Document instanceof PdfDocument) {\n this.object.isSaving = true;\n // }\n var reference = null;\n // if (writer.Document.FileStructure.IncrementalUpdate === true && writer.Document.isStreamCopied === true) {\n // if (this.reference === null) {\n // reference = cTable.GetReference(this.Object);\n // } else {\n // reference = this.reference;\n // }\n // } else {\n // reference = cTable.GetReference(this.Object);\n // }\n // if (!(writer.Document.FileStructure.IncrementalUpdate === true && writer.Document.isStreamCopied === true)) {\n reference = cTable.getReference(this.object);\n // }\n // if (writer.Position !== position) {\n // writer.Position = position;\n // }\n reference.save(writer);\n };\n /**\n * Creates a `copy of PdfReferenceHolder`.\n * @private\n */\n PdfReferenceHolder.prototype.clone = function (crossTable) {\n var refHolder = null;\n var temp = null;\n var refNum = '';\n var reference = null;\n // Restricts addition of same object multiple time.\n /* if (this.Reference != null && this.crossTable != null && this.crossTable.PageCorrespondance.containsKey(this.Reference)) {\n refHolder = new PdfReferenceHolder(this.crossTable.PageCorrespondance.getValue(this.Reference) as PdfReference, crossTable);\n return refHolder;\n }\n if (Object instanceof PdfNumber) {\n return new PdfNumber((Object as PdfNumber).IntValue);\n }\n */\n // if (Object instanceof PdfDictionary) {\n // // Meaning the referenced page is not available for import.\n // let type : PdfName = new PdfName(this.dictionaryProperties.type);\n // let dict : PdfDictionary = Object as PdfDictionary;\n // if (dict.ContainsKey(type)) {\n // let pageName : PdfName = dict.Items.getValue(type.Value) as PdfName;\n // if (pageName !== null) {\n // if (pageName.Value === 'Page') {\n // return new PdfNull();\n // }\n // }\n // }\n // }\n /* if (Object instanceof PdfName) {\n return new PdfName ((Object as PdfName ).Value);\n }\n */\n // Resolves circular references.\n // if (crossTable.PrevReference !== null && (crossTable.PrevReference.indexOf(this.Reference) !== -1)) {\n // let obj : IPdfPrimitive = this.crossTable.GetObject(this.Reference).ClonedObject;\n // if (obj !== null) {\n // reference = crossTable.GetReference(obj);\n // return new PdfReferenceHolder(reference, crossTable);\n // } else {\n // return new PdfNull();\n // }\n // }\n /*if (this.Reference !== null) {\n crossTable.PrevReference.push(this.Reference);\n }\n reference = crossTable.GetReference(temp);\n refHolder = new PdfReferenceHolder(reference, crossTable);\n return refHolder;\n */\n return null;\n };\n return PdfReferenceHolder;\n}());\nexport { PdfReferenceHolder };\n","/**\n * `PdfBoolean` class is used to perform boolean related primitive operations.\n * @private\n */\nvar PdfBoolean = /** @class */ (function () {\n //constructor\n /**\n * Initializes a new instance of the `PdfBoolean` class.\n * @private\n */\n function PdfBoolean(value) {\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.currentPosition = -1;\n this.value = value;\n }\n Object.defineProperty(PdfBoolean.prototype, \"status\", {\n //Properties\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.objectStatus;\n },\n set: function (value) {\n this.objectStatus = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBoolean.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.saving;\n },\n set: function (value) {\n this.saving = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBoolean.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index;\n },\n set: function (value) {\n this.index = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBoolean.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.currentPosition;\n },\n set: function (value) {\n this.currentPosition = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBoolean.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n var rValue = null;\n return rValue;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Saves` the object using the specified writer.\n * @private\n */\n PdfBoolean.prototype.save = function (writer) {\n writer.write(this.boolToStr(this.value));\n };\n /**\n * Creates a `copy of PdfBoolean`.\n * @private\n */\n PdfBoolean.prototype.clone = function (crossTable) {\n var newNumber = new PdfBoolean(this.value);\n return newNumber;\n };\n // Implementation\n /**\n * Converts `boolean to string` - 0/1 'true'/'false'.\n * @private\n */\n PdfBoolean.prototype.boolToStr = function (value) {\n return value ? 'true' : 'false';\n };\n return PdfBoolean;\n}());\nexport { PdfBoolean };\n","import { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { PdfBoolean } from './../primitives/pdf-boolean';\nimport { PdfName } from './../primitives/pdf-name';\n/**\n * Defines the way the document is to be presented on the screen or in print.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets viewer preferences\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Destroy the document\n * document.destroy();\n * ```\n */\nvar PdfViewerPreferences = /** @class */ (function () {\n /**\n * Initialize a new instance of `PdfViewerPreferences` class.\n *\n * @private\n * ```\n */\n function PdfViewerPreferences(catalog) {\n this._dictionaryProperties = new DictionaryProperties();\n this._centerWindow = false;\n this._fitWindow = false;\n this._displayTitle = false;\n this._splitWindow = false;\n this._hideMenuBar = false;\n this._hideToolBar = false;\n this._hideWindowUI = false;\n this._pageMode = PdfPageMode.UseNone;\n this._pageLayout = PdfPageLayout.SinglePage;\n this._dictionary = new PdfDictionary();\n this._duplex = DuplexMode.None;\n this._catalog = catalog;\n }\n Object.defineProperty(PdfViewerPreferences.prototype, \"centerWindow\", {\n /**\n * A flag specifying whether to position the document’s window in the center of the screen.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the center window\n * let centerWindow : boolean = viewerPreferences.centerWindow;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._centerWindow;\n },\n /**\n * A flag specifying whether to position the document’s window in the center of the screen.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the center window\n * viewerPreferences.centerWindow = true;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._centerWindow = value;\n this._dictionary.items.setValue(this._dictionaryProperties.centerWindow, new PdfBoolean(this._centerWindow));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"displayTitle\", {\n /**\n * A flag specifying whether the window’s title bar should display the document title taken\n * from the Title entry of the document information dictionary. If false, the title bar\n * should instead display the name of the PDF file containing the document.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the display title\n * let displayTitle : boolean = viewerPreferences.displayTitle;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._displayTitle;\n },\n /**\n * A flag specifying whether the window’s title bar should display the document title taken\n * from the Title entry of the document information dictionary. If false, the title bar\n * should instead display the name of the PDF file containing the document.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the display title\n * viewerPreferences.displayTitle = true;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._displayTitle = value;\n this._dictionary.items.setValue(this._dictionaryProperties.displayTitle, new PdfBoolean(this._displayTitle));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"fitWindow\", {\n /**\n * A flag specifying whether to resize the document’s window to fit the size of the first\n * displayed page.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the fit window\n * let fitWindow : boolean = viewerPreferences.fitWindow;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._fitWindow;\n },\n /**\n * A flag specifying whether to resize the document’s window to fit the size of the first\n * displayed page.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the fit window\n * viewerPreferences.fitWindow = true;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._fitWindow = value;\n this._dictionary.items.setValue(this._dictionaryProperties.fitWindow, new PdfBoolean(this._fitWindow));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"hideMenuBar\", {\n /**\n * A flag specifying whether to hide the viewer application’s menu bar when the\n * document is active.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the hide menu bar\n * let hideMenuBar: boolean = viewerPreferences.hideMenuBar;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._hideMenuBar;\n },\n /**\n * A flag specifying whether to hide the viewer application’s menu bar when the\n * document is active.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the hide menu bar\n * viewerPreferences.hideMenuBar = true;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._hideMenuBar = value;\n this._dictionary.items.setValue(this._dictionaryProperties.hideMenuBar, new PdfBoolean(this._hideMenuBar));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"hideToolBar\", {\n /**\n * A flag specifying whether to hide the viewer application’s tool bar when the\n * document is active.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the hide tool bar\n * let hideToolBar: boolean = viewerPreferences.hideToolBar;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._hideToolBar;\n },\n /**\n * A flag specifying whether to hide the viewer application’s tool bar when the\n * document is active.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the hide tool bar\n * viewerPreferences.hideToolbar = true;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._hideToolBar = value;\n this._dictionary.items.setValue(this._dictionaryProperties.hideToolBar, new PdfBoolean(this._hideToolBar));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"hideWindowUI\", {\n /**\n * A flag specifying whether to hide user interface elements in the document’s window\n * (such as scroll bars and navigation controls), leaving only the document’s contents displayed.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the hide window UI\n * let hideWindowUI: boolean = viewerPreferences.hideWindowUI;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._hideWindowUI;\n },\n /**\n * A flag specifying whether to hide user interface elements in the document’s window\n * (such as scroll bars and navigation controls), leaving only the document’s contents displayed.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the hide window UI\n * viewerPreferences.hideWindowUI = true;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._hideWindowUI = value;\n this._dictionary.items.setValue(this._dictionaryProperties.hideWindowUI, new PdfBoolean(this._hideWindowUI));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"pageMode\", {\n /**\n * A name object specifying how the document should be displayed when opened.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the page mode\n * let pageMode: PdfPageMode = viewerPreferences.pageMode;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._pageMode;\n },\n /**\n * A name object specifying how the document should be displayed when opened.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the page mode\n * viewerPreferences.pageMode = PdfPageMode.UseOutlines;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._pageMode = value;\n this._catalog.items.setValue(this._dictionaryProperties.pageMode, new PdfName(this._mapPageMode(this._pageMode)));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"duplex\", {\n /**\n * Gets print duplex mode handling option to use when printing the file from the print dialog.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the duplex\n * let duplex : DuplexMode = viewerPreferences.duplex;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._duplex;\n },\n /**\n * Sets print duplex mode handling option to use when printing the file from the print dialog.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the duplex\n * viewerPreferences.duplex = DuplexMode.DuplexFlipLongEdge;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._duplex = value;\n this._catalog.items.setValue(this._dictionaryProperties.duplex, new PdfName(this._mapDuplexMode(this._duplex)));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"pageLayout\", {\n /**\n * A name object specifying the page layout to be used when the document is opened.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the page layout\n * let pageLayout : PdfPageLayout = viewerPreferences.pageLayout;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._pageLayout;\n },\n /**\n * A name object specifying the page layout to be used when the document is opened.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the page layout\n * viewerPreferences.pageLayout = PdfPageLayout.TwoColumnLeft;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._pageLayout = value;\n this._catalog.items.setValue(this._dictionaryProperties.pageLayout, new PdfName(this._mapPageLayout(this._pageLayout)));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"pageScaling\", {\n /**\n * Gets the page scaling option to be selected\n * when a print dialog is displayed for this document.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Gets the page scaling\n * let pageScaling : PageScalingMode = viewerPreferences.pageScaling;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this._pageScaling;\n },\n /**\n * Sets the page scaling option to be selected\n * when a print dialog is displayed for this document.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the page scaling\n * viewerPreferences.pageScaling = PageScalingMode.None;\n * // Destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this._pageScaling = value;\n if (this._pageScaling === PageScalingMode.AppDefault && this._dictionary.items.containsKey(this._dictionaryProperties.printScaling)) {\n this._dictionary.items.remove(this._dictionaryProperties.printScaling);\n }\n else if (this._pageScaling === PageScalingMode.None) {\n this._dictionary.items.setValue(this._dictionaryProperties.printScaling, new PdfName('None'));\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewerPreferences.prototype, \"element\", {\n /**\n * Primivie element\n *\n * @private\n */\n get: function () {\n return this._dictionary;\n },\n enumerable: true,\n configurable: true\n });\n PdfViewerPreferences.prototype._mapDuplexMode = function (mode) {\n switch (mode) {\n case DuplexMode.Simplex:\n return 'Simplex';\n case DuplexMode.DuplexFlipShortEdge:\n return 'DuplexFlipShortEdge';\n case DuplexMode.DuplexFlipLongEdge:\n return 'DuplexFlipLongEdge';\n case DuplexMode.None:\n return 'None';\n }\n };\n PdfViewerPreferences.prototype._mapPageMode = function (mode) {\n switch (mode) {\n case PdfPageMode.UseNone:\n return 'UseNone';\n case PdfPageMode.UseOutlines:\n return 'UseOutlines';\n case PdfPageMode.UseThumbs:\n return 'UseThumbs';\n case PdfPageMode.FullScreen:\n return 'FullScreen';\n case PdfPageMode.UseOC:\n return 'UseOC';\n case PdfPageMode.UseAttachments:\n return 'UseAttachments';\n }\n };\n PdfViewerPreferences.prototype._mapPageLayout = function (layout) {\n switch (layout) {\n case PdfPageLayout.SinglePage:\n return 'SinglePage';\n case PdfPageLayout.OneColumn:\n return 'OneColumn';\n case PdfPageLayout.TwoColumnLeft:\n return 'TwoColumnLeft';\n case PdfPageLayout.TwoColumnRight:\n return 'TwoColumnRight';\n case PdfPageLayout.TwoPageLeft:\n return 'TwoPageLeft';\n case PdfPageLayout.TwoPageRight:\n return 'TwoPageRight';\n }\n };\n return PdfViewerPreferences;\n}());\nexport { PdfViewerPreferences };\n/**\n * Represents mode of document displaying.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the page mode\n * viewerPreferences.pageMode = PdfPageMode.UseOutlines;\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var PdfPageMode;\n(function (PdfPageMode) {\n /**\n * Default value. Neither document outline nor thumbnail images visible.\n */\n PdfPageMode[PdfPageMode[\"UseNone\"] = 0] = \"UseNone\";\n /**\n * Document outline visible.\n */\n PdfPageMode[PdfPageMode[\"UseOutlines\"] = 1] = \"UseOutlines\";\n /**\n * Thumbnail images visible.\n */\n PdfPageMode[PdfPageMode[\"UseThumbs\"] = 2] = \"UseThumbs\";\n /**\n * Full-screen mode, with no menu bar, window controls, or any other window visible.\n */\n PdfPageMode[PdfPageMode[\"FullScreen\"] = 3] = \"FullScreen\";\n /**\n * Optional content group panel visible.\n */\n PdfPageMode[PdfPageMode[\"UseOC\"] = 4] = \"UseOC\";\n /**\n * Attachments are visible.\n */\n PdfPageMode[PdfPageMode[\"UseAttachments\"] = 5] = \"UseAttachments\";\n})(PdfPageMode || (PdfPageMode = {}));\n/**\n * A name object specifying the page layout to be used when the document is opened.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the page layout\n * viewerPreferences.pageLayout = PdfPageLayout.TwoColumnLeft;\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var PdfPageLayout;\n(function (PdfPageLayout) {\n /**\n * Default Value. Display one page at a time.\n */\n PdfPageLayout[PdfPageLayout[\"SinglePage\"] = 0] = \"SinglePage\";\n /**\n * Display the pages in one column.\n */\n PdfPageLayout[PdfPageLayout[\"OneColumn\"] = 1] = \"OneColumn\";\n /**\n * Display the pages in two columns, with odd numbered\n * pages on the left.\n */\n PdfPageLayout[PdfPageLayout[\"TwoColumnLeft\"] = 2] = \"TwoColumnLeft\";\n /**\n * Display the pages in two columns, with odd numbered\n * pages on the right.\n */\n PdfPageLayout[PdfPageLayout[\"TwoColumnRight\"] = 3] = \"TwoColumnRight\";\n /**\n * Display the pages two at a time, with odd-numbered pages on the left.\n */\n PdfPageLayout[PdfPageLayout[\"TwoPageLeft\"] = 4] = \"TwoPageLeft\";\n /**\n * Display the pages two at a time, with odd-numbered pages on the right.\n */\n PdfPageLayout[PdfPageLayout[\"TwoPageRight\"] = 5] = \"TwoPageRight\";\n})(PdfPageLayout || (PdfPageLayout = {}));\n/**\n * The paper handling option to use when printing the file from the print dialog.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the duplex\n * viewerPreferences.duplex = DuplexMode.DuplexFlipLongEdge;\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var DuplexMode;\n(function (DuplexMode) {\n /**\n * Print single-sided.\n */\n DuplexMode[DuplexMode[\"Simplex\"] = 0] = \"Simplex\";\n /**\n * Duplex and flip on the short edge of the sheet.\n */\n DuplexMode[DuplexMode[\"DuplexFlipShortEdge\"] = 1] = \"DuplexFlipShortEdge\";\n /**\n * Duplex and flip on the long edge of the sheet.\n */\n DuplexMode[DuplexMode[\"DuplexFlipLongEdge\"] = 2] = \"DuplexFlipLongEdge\";\n /**\n * Default value.\n */\n DuplexMode[DuplexMode[\"None\"] = 3] = \"None\";\n})(DuplexMode || (DuplexMode = {}));\n/**\n * Specifies the different page scaling option that shall be selected\n * when a print dialog is displayed for this document.\n * ```typescript\n * // Create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // Gets the viewer preferences of the document\n * let viewerPreferences : PdfViewerPreferences = document.viewerPreferences;\n * // Sets the page scaling\n * viewerPreferences.pageScaling = PageScalingMode.None;\n * // Destroy the document\n * document.destroy();\n * ```\n */\nexport var PageScalingMode;\n(function (PageScalingMode) {\n /**\n * Indicates the conforming reader’s default print scaling.\n */\n PageScalingMode[PageScalingMode[\"AppDefault\"] = 0] = \"AppDefault\";\n /**\n * Indicates no page scaling.\n */\n PageScalingMode[PageScalingMode[\"None\"] = 1] = \"None\";\n})(PageScalingMode || (PageScalingMode = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfCatalog.ts class for EJ2-PDF\n */\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { PdfViewerPreferences } from './pdf-viewer-preferences';\n/**\n * `PdfCatalog` class represents internal catalog of the Pdf document.\n * @private\n */\nvar PdfCatalog = /** @class */ (function (_super) {\n __extends(PdfCatalog, _super);\n //constructor\n /**\n * Initializes a new instance of the `PdfCatalog` class.\n * @private\n */\n function PdfCatalog() {\n var _this = _super.call(this) || this;\n //fields\n /**\n * Internal variable to store collection of `sections`.\n * @default null\n * @private\n */\n _this.sections = null;\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @private\n */\n _this.tempDictionaryProperties = new DictionaryProperties();\n _this.items.setValue(new DictionaryProperties().type, new PdfName('Catalog'));\n return _this;\n }\n Object.defineProperty(PdfCatalog.prototype, \"pages\", {\n //Properties\n /**\n * Gets or sets the sections, which contain `pages`.\n * @private\n */\n get: function () {\n return this.sections;\n },\n set: function (value) {\n var dictionary = value.element;\n // if (this.sections !== value) {\n // this.sections = value;\n // this.Items.setValue(this.tempDictionaryProperties.pages, new PdfReferenceHolder(value));\n // }\n this.sections = value;\n this.items.setValue(this.tempDictionaryProperties.pages, new PdfReferenceHolder(value));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCatalog.prototype, \"viewerPreferences\", {\n /**\n * Gets the viewer preferences of the PDF document.\n * @private\n */\n get: function () {\n if (this._viewerPreferences === null || typeof this._viewerPreferences === 'undefined') {\n this._viewerPreferences = new PdfViewerPreferences(this);\n this.items.setValue(this.tempDictionaryProperties.viewerPreferences, new PdfReferenceHolder(this._viewerPreferences.element));\n }\n return this._viewerPreferences;\n },\n enumerable: true,\n configurable: true\n });\n return PdfCatalog;\n}(PdfDictionary));\nexport { PdfCatalog };\n","/**\n * public Enum for `PdfHorizontalAlignment`.\n * @private\n */\nexport var PdfHorizontalAlignment;\n(function (PdfHorizontalAlignment) {\n /**\n * Specifies the type of `Left`.\n * @private\n */\n PdfHorizontalAlignment[PdfHorizontalAlignment[\"Left\"] = 0] = \"Left\";\n /**\n * Specifies the type of `Center`.\n * @private\n */\n PdfHorizontalAlignment[PdfHorizontalAlignment[\"Center\"] = 1] = \"Center\";\n /**\n * Specifies the type of `Right`.\n * @private\n */\n PdfHorizontalAlignment[PdfHorizontalAlignment[\"Right\"] = 2] = \"Right\";\n})(PdfHorizontalAlignment || (PdfHorizontalAlignment = {}));\n/**\n * public Enum for `PdfVerticalAlignment`.\n * @private\n */\nexport var PdfVerticalAlignment;\n(function (PdfVerticalAlignment) {\n /**\n * Specifies the type of `Top`.\n * @private\n */\n PdfVerticalAlignment[PdfVerticalAlignment[\"Top\"] = 0] = \"Top\";\n /**\n * Specifies the type of `Middle`.\n * @private\n */\n PdfVerticalAlignment[PdfVerticalAlignment[\"Middle\"] = 1] = \"Middle\";\n /**\n * Specifies the type of `Bottom`.\n * @private\n */\n PdfVerticalAlignment[PdfVerticalAlignment[\"Bottom\"] = 2] = \"Bottom\";\n})(PdfVerticalAlignment || (PdfVerticalAlignment = {}));\n/**\n * public Enum for `public`.\n * @private\n */\nexport var PdfTextAlignment;\n(function (PdfTextAlignment) {\n /**\n * Specifies the type of `Left`.\n * @private\n */\n PdfTextAlignment[PdfTextAlignment[\"Left\"] = 0] = \"Left\";\n /**\n * Specifies the type of `Center`.\n * @private\n */\n PdfTextAlignment[PdfTextAlignment[\"Center\"] = 1] = \"Center\";\n /**\n * Specifies the type of `Right`.\n * @private\n */\n PdfTextAlignment[PdfTextAlignment[\"Right\"] = 2] = \"Right\";\n /**\n * Specifies the type of `Justify`.\n * @private\n */\n PdfTextAlignment[PdfTextAlignment[\"Justify\"] = 3] = \"Justify\";\n})(PdfTextAlignment || (PdfTextAlignment = {}));\n/**\n * public Enum for `TextRenderingMode`.\n * @private\n */\nexport var TextRenderingMode;\n(function (TextRenderingMode) {\n /**\n * Specifies the type of `Fill`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"Fill\"] = 0] = \"Fill\";\n /**\n * Specifies the type of `Stroke`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"Stroke\"] = 1] = \"Stroke\";\n /**\n * Specifies the type of `FillStroke`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"FillStroke\"] = 2] = \"FillStroke\";\n /**\n * Specifies the type of `None`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"None\"] = 3] = \"None\";\n /**\n * Specifies the type of `ClipFlag`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"ClipFlag\"] = 4] = \"ClipFlag\";\n /**\n * Specifies the type of `ClipFill`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"ClipFill\"] = 4] = \"ClipFill\";\n /**\n * Specifies the type of `ClipStroke`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"ClipStroke\"] = 5] = \"ClipStroke\";\n /**\n * Specifies the type of `ClipFillStroke`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"ClipFillStroke\"] = 6] = \"ClipFillStroke\";\n /**\n * Specifies the type of `Clip`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"Clip\"] = 7] = \"Clip\";\n})(TextRenderingMode || (TextRenderingMode = {}));\n/**\n * public Enum for `PdfLineJoin`.\n * @private\n */\nexport var PdfLineJoin;\n(function (PdfLineJoin) {\n /**\n * Specifies the type of `Miter`.\n * @private\n */\n PdfLineJoin[PdfLineJoin[\"Miter\"] = 0] = \"Miter\";\n /**\n * Specifies the type of `Round`.\n * @private\n */\n PdfLineJoin[PdfLineJoin[\"Round\"] = 1] = \"Round\";\n /**\n * Specifies the type of `Bevel`.\n * @private\n */\n PdfLineJoin[PdfLineJoin[\"Bevel\"] = 2] = \"Bevel\";\n})(PdfLineJoin || (PdfLineJoin = {}));\n/**\n * public Enum for `PdfLineCap`.\n * @private\n */\nexport var PdfLineCap;\n(function (PdfLineCap) {\n /**\n * Specifies the type of `Flat`.\n * @private\n */\n PdfLineCap[PdfLineCap[\"Flat\"] = 0] = \"Flat\";\n /**\n * Specifies the type of `Round`.\n * @private\n */\n PdfLineCap[PdfLineCap[\"Round\"] = 1] = \"Round\";\n /**\n * Specifies the type of `Square`.\n * @private\n */\n PdfLineCap[PdfLineCap[\"Square\"] = 2] = \"Square\";\n})(PdfLineCap || (PdfLineCap = {}));\n/**\n * public Enum for `PdfDashStyle`.\n * @private\n */\nexport var PdfDashStyle;\n(function (PdfDashStyle) {\n /**\n * Specifies the type of `Solid`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"Solid\"] = 0] = \"Solid\";\n /**\n * Specifies the type of `Dash`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"Dash\"] = 1] = \"Dash\";\n /**\n * Specifies the type of `Dot`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"Dot\"] = 2] = \"Dot\";\n /**\n * Specifies the type of `DashDot`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"DashDot\"] = 3] = \"DashDot\";\n /**\n * Specifies the type of `DashDotDot`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"DashDotDot\"] = 4] = \"DashDotDot\";\n /**\n * Specifies the type of `Custom`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"Custom\"] = 5] = \"Custom\";\n})(PdfDashStyle || (PdfDashStyle = {}));\n/**\n * public Enum for `PdfFillMode`.\n * @private\n */\nexport var PdfFillMode;\n(function (PdfFillMode) {\n /**\n * Specifies the type of `Winding`.\n * @private\n */\n PdfFillMode[PdfFillMode[\"Winding\"] = 0] = \"Winding\";\n /**\n * Specifies the type of `Alternate`.\n * @private\n */\n PdfFillMode[PdfFillMode[\"Alternate\"] = 1] = \"Alternate\";\n})(PdfFillMode || (PdfFillMode = {}));\n/**\n * public Enum for `PdfColorSpace`.\n * @private\n */\nexport var PdfColorSpace;\n(function (PdfColorSpace) {\n /**\n * Specifies the type of `Rgb`.\n * @private\n */\n PdfColorSpace[PdfColorSpace[\"Rgb\"] = 0] = \"Rgb\";\n /**\n * Specifies the type of `Cmyk`.\n * @private\n */\n PdfColorSpace[PdfColorSpace[\"Cmyk\"] = 1] = \"Cmyk\";\n /**\n * Specifies the type of `GrayScale`.\n * @private\n */\n PdfColorSpace[PdfColorSpace[\"GrayScale\"] = 2] = \"GrayScale\";\n /**\n * Specifies the type of `Indexed`.\n * @private\n */\n PdfColorSpace[PdfColorSpace[\"Indexed\"] = 3] = \"Indexed\";\n})(PdfColorSpace || (PdfColorSpace = {}));\n/**\n * public Enum for `PdfBlendMode`.\n * @private\n */\nexport var PdfBlendMode;\n(function (PdfBlendMode) {\n /**\n * Specifies the type of `Normal`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Normal\"] = 0] = \"Normal\";\n /**\n * Specifies the type of `Multiply`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Multiply\"] = 1] = \"Multiply\";\n /**\n * Specifies the type of `Screen`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Screen\"] = 2] = \"Screen\";\n /**\n * Specifies the type of `Overlay`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Overlay\"] = 3] = \"Overlay\";\n /**\n * Specifies the type of `Darken`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Darken\"] = 4] = \"Darken\";\n /**\n * Specifies the type of `Lighten`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Lighten\"] = 5] = \"Lighten\";\n /**\n * Specifies the type of `ColorDodge`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"ColorDodge\"] = 6] = \"ColorDodge\";\n /**\n * Specifies the type of `ColorBurn`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"ColorBurn\"] = 7] = \"ColorBurn\";\n /**\n * Specifies the type of `HardLight`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"HardLight\"] = 8] = \"HardLight\";\n /**\n * Specifies the type of `SoftLight`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"SoftLight\"] = 9] = \"SoftLight\";\n /**\n * Specifies the type of `Difference`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Difference\"] = 10] = \"Difference\";\n /**\n * Specifies the type of `Exclusion`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Exclusion\"] = 11] = \"Exclusion\";\n /**\n * Specifies the type of `Hue`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Hue\"] = 12] = \"Hue\";\n /**\n * Specifies the type of `Saturation`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Saturation\"] = 13] = \"Saturation\";\n /**\n * Specifies the type of `Color`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Color\"] = 14] = \"Color\";\n /**\n * Specifies the type of `Luminosity`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Luminosity\"] = 15] = \"Luminosity\";\n})(PdfBlendMode || (PdfBlendMode = {}));\n/**\n * public Enum for `PdfGraphicsUnit`.\n * @private\n */\nexport var PdfGraphicsUnit;\n(function (PdfGraphicsUnit) {\n /**\n * Specifies the type of `Centimeter`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Centimeter\"] = 0] = \"Centimeter\";\n /**\n * Specifies the type of `Pica`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Pica\"] = 1] = \"Pica\";\n /**\n * Specifies the type of `Pixel`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Pixel\"] = 2] = \"Pixel\";\n /**\n * Specifies the type of `Point`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Point\"] = 3] = \"Point\";\n /**\n * Specifies the type of `Inch`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Inch\"] = 4] = \"Inch\";\n /**\n * Specifies the type of `Document`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Document\"] = 5] = \"Document\";\n /**\n * Specifies the type of `Millimeter`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Millimeter\"] = 6] = \"Millimeter\";\n})(PdfGraphicsUnit || (PdfGraphicsUnit = {}));\n/**\n * public Enum for `PdfGridImagePosition`.\n * @private\n */\nexport var PdfGridImagePosition;\n(function (PdfGridImagePosition) {\n /**\n * Specifies the type of `Fit`.\n * @private\n */\n PdfGridImagePosition[PdfGridImagePosition[\"Fit\"] = 0] = \"Fit\";\n /**\n * Specifies the type of `Center`.\n * @private\n */\n PdfGridImagePosition[PdfGridImagePosition[\"Center\"] = 1] = \"Center\";\n /**\n * Specifies the type of `Stretch`.\n * @private\n */\n PdfGridImagePosition[PdfGridImagePosition[\"Stretch\"] = 2] = \"Stretch\";\n /**\n * Specifies the type of `Tile`.\n * @private\n */\n PdfGridImagePosition[PdfGridImagePosition[\"Tile\"] = 3] = \"Tile\";\n})(PdfGridImagePosition || (PdfGridImagePosition = {}));\n/**\n * public Enum for `the text rendering direction`.\n * @private\n */\nexport var PdfTextDirection;\n(function (PdfTextDirection) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfTextDirection[PdfTextDirection[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `LeftToRight`.\n * @private\n */\n PdfTextDirection[PdfTextDirection[\"LeftToRight\"] = 1] = \"LeftToRight\";\n /**\n * Specifies the type of `RightToLeft`.\n * @private\n */\n PdfTextDirection[PdfTextDirection[\"RightToLeft\"] = 2] = \"RightToLeft\";\n})(PdfTextDirection || (PdfTextDirection = {}));\n","/**\n * public Enum for `PdfFontStyle`.\n * @private\n */\nexport var PdfFontStyle;\n(function (PdfFontStyle) {\n /**\n * Specifies the type of `Regular`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Regular\"] = 0] = \"Regular\";\n /**\n * Specifies the type of `Bold`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Bold\"] = 1] = \"Bold\";\n /**\n * Specifies the type of `Italic`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Italic\"] = 2] = \"Italic\";\n /**\n * Specifies the type of `Underline`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Underline\"] = 4] = \"Underline\";\n /**\n * Specifies the type of `Strikeout`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Strikeout\"] = 8] = \"Strikeout\";\n})(PdfFontStyle || (PdfFontStyle = {}));\n/**\n * Specifies the font family from the standard font.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // create new standard font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * ```\n */\nexport var PdfFontFamily;\n(function (PdfFontFamily) {\n /**\n * Specifies the `Helvetica` font.\n */\n PdfFontFamily[PdfFontFamily[\"Helvetica\"] = 0] = \"Helvetica\";\n /**\n * Specifies the `Courier` font.\n */\n PdfFontFamily[PdfFontFamily[\"Courier\"] = 1] = \"Courier\";\n /**\n * Specifies the `TimesRoman` font.\n */\n PdfFontFamily[PdfFontFamily[\"TimesRoman\"] = 2] = \"TimesRoman\";\n /**\n * Specifies the `Symbol` font.\n */\n PdfFontFamily[PdfFontFamily[\"Symbol\"] = 3] = \"Symbol\";\n /**\n * Specifies the `ZapfDingbats` font.\n */\n PdfFontFamily[PdfFontFamily[\"ZapfDingbats\"] = 4] = \"ZapfDingbats\";\n})(PdfFontFamily || (PdfFontFamily = {}));\n/**\n * public Enum for `PdfFontType`.\n * @private\n */\nexport var PdfFontType;\n(function (PdfFontType) {\n /**\n * Specifies the type of `Standard`.\n * @private\n */\n PdfFontType[PdfFontType[\"Standard\"] = 0] = \"Standard\";\n /**\n * Specifies the type of `TrueType`.\n * @private\n */\n PdfFontType[PdfFontType[\"TrueType\"] = 1] = \"TrueType\";\n /**\n * Specifies the type of `TrueTypeEmbedded`.\n * @private\n */\n PdfFontType[PdfFontType[\"TrueTypeEmbedded\"] = 2] = \"TrueTypeEmbedded\";\n})(PdfFontType || (PdfFontType = {}));\n/**\n * public Enum for `PdfWordWrapType`.\n * @private\n */\nexport var PdfWordWrapType;\n(function (PdfWordWrapType) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfWordWrapType[PdfWordWrapType[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Word`.\n * @private\n */\n PdfWordWrapType[PdfWordWrapType[\"Word\"] = 1] = \"Word\";\n /**\n * Specifies the type of `WordOnly`.\n * @private\n */\n PdfWordWrapType[PdfWordWrapType[\"WordOnly\"] = 2] = \"WordOnly\";\n /**\n * Specifies the type of `Character`.\n * @private\n */\n PdfWordWrapType[PdfWordWrapType[\"Character\"] = 3] = \"Character\";\n})(PdfWordWrapType || (PdfWordWrapType = {}));\n/**\n * public Enum for `PdfSubSuperScript`.\n * @private\n */\nexport var PdfSubSuperScript;\n(function (PdfSubSuperScript) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfSubSuperScript[PdfSubSuperScript[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `SuperScript`.\n * @private\n */\n PdfSubSuperScript[PdfSubSuperScript[\"SuperScript\"] = 1] = \"SuperScript\";\n /**\n * Specifies the type of `SubScript`.\n * @private\n */\n PdfSubSuperScript[PdfSubSuperScript[\"SubScript\"] = 2] = \"SubScript\";\n})(PdfSubSuperScript || (PdfSubSuperScript = {}));\n/**\n * public Enum for `FontEncoding`.\n * @private\n */\nexport var FontEncoding;\n(function (FontEncoding) {\n /**\n * Specifies the type of `Unknown`.\n * @private\n */\n FontEncoding[FontEncoding[\"Unknown\"] = 0] = \"Unknown\";\n /**\n * Specifies the type of `StandardEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"StandardEncoding\"] = 1] = \"StandardEncoding\";\n /**\n * Specifies the type of `MacRomanEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"MacRomanEncoding\"] = 2] = \"MacRomanEncoding\";\n /**\n * Specifies the type of `MacExpertEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"MacExpertEncoding\"] = 3] = \"MacExpertEncoding\";\n /**\n * Specifies the type of `WinAnsiEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"WinAnsiEncoding\"] = 4] = \"WinAnsiEncoding\";\n /**\n * Specifies the type of `PdfDocEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"PdfDocEncoding\"] = 5] = \"PdfDocEncoding\";\n /**\n * Specifies the type of `IdentityH`.\n * @private\n */\n FontEncoding[FontEncoding[\"IdentityH\"] = 6] = \"IdentityH\";\n})(FontEncoding || (FontEncoding = {}));\n/**\n * public Enum for `TtfCmapFormat`.\n * @private\n */\nexport var TtfCmapFormat;\n(function (TtfCmapFormat) {\n /**\n * This is the Apple standard character to glyph index mapping table.\n * @private\n */\n TtfCmapFormat[TtfCmapFormat[\"Apple\"] = 0] = \"Apple\";\n /**\n * This is the Microsoft standard character to glyph index mapping table.\n * @private\n */\n TtfCmapFormat[TtfCmapFormat[\"Microsoft\"] = 4] = \"Microsoft\";\n /**\n * Format 6: Trimmed table mapping.\n * @private\n */\n TtfCmapFormat[TtfCmapFormat[\"Trimmed\"] = 6] = \"Trimmed\";\n})(TtfCmapFormat || (TtfCmapFormat = {}));\n/**\n * Enumerator that implements CMAP encodings.\n * @private\n */\nexport var TtfCmapEncoding;\n(function (TtfCmapEncoding) {\n /**\n * Unknown encoding.\n * @private\n */\n TtfCmapEncoding[TtfCmapEncoding[\"Unknown\"] = 0] = \"Unknown\";\n /**\n * When building a symbol font for Windows.\n * @private\n */\n TtfCmapEncoding[TtfCmapEncoding[\"Symbol\"] = 1] = \"Symbol\";\n /**\n * When building a Unicode font for Windows.\n * @private\n */\n TtfCmapEncoding[TtfCmapEncoding[\"Unicode\"] = 2] = \"Unicode\";\n /**\n * For font that will be used on a Macintosh.\n * @private\n */\n TtfCmapEncoding[TtfCmapEncoding[\"Macintosh\"] = 3] = \"Macintosh\";\n})(TtfCmapEncoding || (TtfCmapEncoding = {}));\n/**\n * Ttf platform ID.\n * @private\n */\nexport var TtfPlatformID;\n(function (TtfPlatformID) {\n /**\n * Apple platform.\n * @private\n */\n TtfPlatformID[TtfPlatformID[\"AppleUnicode\"] = 0] = \"AppleUnicode\";\n /**\n * Macintosh platform.\n * @private\n */\n TtfPlatformID[TtfPlatformID[\"Macintosh\"] = 1] = \"Macintosh\";\n /**\n * Iso platform.\n * @private\n */\n TtfPlatformID[TtfPlatformID[\"Iso\"] = 2] = \"Iso\";\n /**\n * Microsoft platform.\n * @private\n */\n TtfPlatformID[TtfPlatformID[\"Microsoft\"] = 3] = \"Microsoft\";\n})(TtfPlatformID || (TtfPlatformID = {}));\n/**\n * Microsoft encoding ID.\n * @private\n */\nexport var TtfMicrosoftEncodingID;\n(function (TtfMicrosoftEncodingID) {\n /**\n * Undefined encoding.\n * @private\n */\n TtfMicrosoftEncodingID[TtfMicrosoftEncodingID[\"Undefined\"] = 0] = \"Undefined\";\n /**\n * Unicode encoding.\n * @private\n */\n TtfMicrosoftEncodingID[TtfMicrosoftEncodingID[\"Unicode\"] = 1] = \"Unicode\";\n})(TtfMicrosoftEncodingID || (TtfMicrosoftEncodingID = {}));\n/**\n * Macintosh encoding ID.\n * @private\n */\nexport var TtfMacintoshEncodingID;\n(function (TtfMacintoshEncodingID) {\n /**\n * Roman encoding.\n * @private\n */\n TtfMacintoshEncodingID[TtfMacintoshEncodingID[\"Roman\"] = 0] = \"Roman\";\n /**\n * Japanese encoding.\n * @private\n */\n TtfMacintoshEncodingID[TtfMacintoshEncodingID[\"Japanese\"] = 1] = \"Japanese\";\n /**\n * Chinese encoding.\n * @private\n */\n TtfMacintoshEncodingID[TtfMacintoshEncodingID[\"Chinese\"] = 2] = \"Chinese\";\n})(TtfMacintoshEncodingID || (TtfMacintoshEncodingID = {}));\n/**\n * Enumerator that implements font descriptor flags.\n * @private\n */\nexport var FontDescriptorFlags;\n(function (FontDescriptorFlags) {\n /**\n * All glyphs have the same width (as opposed to proportional or variable-pitch fonts, which have different widths).\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"FixedPitch\"] = 1] = \"FixedPitch\";\n /**\n * Glyphs have serifs, which are short strokes drawn at an angle on the top and\n * bottom of glyph stems (as opposed to sans serif fonts, which do not).\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Serif\"] = 2] = \"Serif\";\n /**\n * Font contains glyphs outside the Adobe standard Latin character set. The\n * flag and the nonsymbolic flag cannot both be set or both be clear.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Symbolic\"] = 4] = \"Symbolic\";\n /**\n * Glyphs resemble cursive handwriting.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Script\"] = 8] = \"Script\";\n /**\n * Font uses the Adobe standard Latin character set or a subset of it.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Nonsymbolic\"] = 32] = \"Nonsymbolic\";\n /**\n * Glyphs have dominant vertical strokes that are slanted.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Italic\"] = 64] = \"Italic\";\n /**\n * Bold font.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"ForceBold\"] = 262144] = \"ForceBold\";\n})(FontDescriptorFlags || (FontDescriptorFlags = {}));\n/**\n * true type font composite glyph flags.\n * @private\n */\nexport var TtfCompositeGlyphFlags;\n(function (TtfCompositeGlyphFlags) {\n /**\n * The Arg1And2AreWords.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"Arg1And2AreWords\"] = 1] = \"Arg1And2AreWords\";\n /**\n * The ArgsAreXyValues.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"ArgsAreXyValues\"] = 2] = \"ArgsAreXyValues\";\n /**\n * The RoundXyToGrid.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"RoundXyToGrid\"] = 4] = \"RoundXyToGrid\";\n /**\n * The WeHaveScale.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"WeHaveScale\"] = 8] = \"WeHaveScale\";\n /**\n * The Reserved.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"Reserved\"] = 16] = \"Reserved\";\n /**\n * The MoreComponents.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"MoreComponents\"] = 32] = \"MoreComponents\";\n /**\n * The WeHaveAnXyScale.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"WeHaveAnXyScale\"] = 64] = \"WeHaveAnXyScale\";\n /**\n * The WeHaveTwoByTwo\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"WeHaveTwoByTwo\"] = 128] = \"WeHaveTwoByTwo\";\n /**\n * The WeHaveInstructions.\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"WeHaveInstructions\"] = 256] = \"WeHaveInstructions\";\n /**\n * The UseMyMetrics.\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"UseMyMetrics\"] = 512] = \"UseMyMetrics\";\n})(TtfCompositeGlyphFlags || (TtfCompositeGlyphFlags = {}));\n","import { ObjectStatus } from './../input-output/enum';\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { DictionaryProperties } from './pdf-dictionary-properties';\nimport { Operators } from './pdf-operators';\nimport { Dictionary } from './../collections/dictionary';\nimport { PdfReference } from './../primitives/pdf-reference';\nimport { ObjectType } from './cross-table';\nimport { PdfStream } from './../primitives/pdf-stream';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PdfCatalog } from './../document/pdf-catalog';\n/**\n * `PdfCrossTable` is responsible for intermediate level parsing\n * and savingof a PDF document.\n * @private\n */\nvar PdfCrossTable = /** @class */ (function () {\n function PdfCrossTable() {\n /**\n * The modified `objects` that should be saved.\n * @private\n */\n this.objects = new Dictionary();\n /**\n * Holds `maximal generation number` or offset to object.\n * @default 0\n * @private\n */\n this.maxGenNumIndex = 0;\n /**\n * The `number of the objects`.\n * @default 0\n * @private\n */\n this.objectCount = 0;\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @default new PdfDictionaryProperties()\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n }\n Object.defineProperty(PdfCrossTable.prototype, \"isMerging\", {\n //Properties\n /**\n * Gets or sets if the document `is merged`.\n * @private\n */\n get: function () {\n return this.merging;\n },\n set: function (value) {\n this.merging = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"trailer\", {\n /**\n * Gets the `trailer`.\n * @private\n */\n get: function () {\n if (this.internalTrailer == null) {\n this.internalTrailer = new PdfStream();\n }\n return this.internalTrailer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"document\", {\n /**\n * Gets or sets the main `PdfDocument` class instance.\n * @private\n */\n get: function () {\n return this.pdfDocument;\n },\n set: function (value) {\n this.pdfDocument = value;\n this.items = this.pdfDocument.pdfObjects;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"pdfObjects\", {\n /**\n * Gets the catched `PDF object` main collection.\n * @private\n */\n get: function () {\n return this.items;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"objectCollection\", {\n /**\n * Gets the `object collection`.\n * @private\n */\n get: function () {\n return this.pdfDocument.pdfObjects;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"count\", {\n /**\n * Gets or sets the `number of the objects` within the document.\n * @private\n */\n get: function () {\n return this.objectCount;\n },\n set: function (value) {\n this.objectCount = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"nextObjNumber\", {\n /**\n * Returns `next available object number`.\n * @private\n */\n get: function () {\n this.count = this.count + 1;\n return this.count;\n },\n enumerable: true,\n configurable: true\n });\n PdfCrossTable.prototype.save = function (writer, filename) {\n this.saveHead(writer);\n var state = false;\n this.mappedReferences = null;\n this.objects.clear();\n this.markTrailerReferences();\n this.saveObjects(writer);\n var saveCount = this.count;\n var xrefPos = writer.position;\n this.registerObject(0, new PdfReference(0, -1), true);\n var prevXRef = 0;\n writer.write(Operators.xref);\n writer.write(Operators.newLine);\n this.saveSections(writer);\n this.saveTrailer(writer, this.count, prevXRef);\n this.saveTheEndess(writer, xrefPos);\n this.count = saveCount;\n for (var i = 0; i < this.objectCollection.count; ++i) {\n var oi = this.objectCollection.items(i);\n oi.object.isSaving = false;\n }\n if (typeof filename === 'undefined') {\n return writer.stream.buffer;\n }\n else {\n writer.stream.save(filename);\n }\n };\n /**\n * `Saves the endess` of the file.\n * @private\n */\n PdfCrossTable.prototype.saveTheEndess = function (writer, xrefPos) {\n writer.write(Operators.newLine + Operators.startxref + Operators.newLine);\n writer.write(xrefPos.toString() + Operators.newLine);\n writer.write(Operators.eof + Operators.newLine);\n };\n /**\n * `Saves the new trailer` dictionary.\n * @private\n */\n PdfCrossTable.prototype.saveTrailer = function (writer, count, prevXRef) {\n writer.write(Operators.trailer + Operators.newLine);\n // Save the dictionary.\n var trailer = this.trailer;\n trailer.items.setValue(this.dictionaryProperties.size, new PdfNumber(this.objectCount + 1));\n trailer = new PdfDictionary(trailer); // Make it real dictionary.\n trailer.setEncrypt(false);\n trailer.save(writer);\n };\n /**\n * `Saves the xref section`.\n * @private\n */\n PdfCrossTable.prototype.saveSections = function (writer) {\n var objectNum = 0;\n var count = 0;\n do {\n count = this.prepareSubsection(objectNum);\n this.saveSubsection(writer, objectNum, count);\n objectNum += count;\n } while (count !== 0);\n };\n /**\n * `Saves a subsection`.\n * @private\n */\n PdfCrossTable.prototype.saveSubsection = function (writer, objectNum, count) {\n if (count <= 0 || objectNum >= this.count) {\n return;\n }\n var subsectionHead = '{0} {1}{2}';\n writer.write(objectNum + ' ' + (count + 1) + Operators.newLine);\n for (var i = objectNum; i <= objectNum + count; ++i) {\n var obj = this.objects.getValue(i);\n var str = '';\n if (obj.type === ObjectType.Free) {\n str = this.getItem(obj.offset, 65535, true);\n }\n else {\n str = this.getItem(obj.offset, obj.generation, false);\n }\n writer.write(str);\n }\n };\n /**\n * Generates string for `xref table item`.\n * @private\n */\n PdfCrossTable.prototype.getItem = function (offset, genNumber, isFree) {\n var returnString = '';\n var addOffsetLength = 10 - offset.toString().length;\n if (genNumber <= 0) {\n genNumber = 0;\n }\n var addGenNumberLength = (5 - genNumber.toString().length) <= 0 ? 0 : (5 - genNumber.toString().length);\n for (var index = 0; index < addOffsetLength; index++) {\n returnString = returnString + '0';\n }\n returnString = returnString + offset.toString() + ' ';\n for (var index = 0; index < addGenNumberLength; index++) {\n returnString = returnString + '0';\n }\n returnString = returnString + genNumber.toString() + ' ';\n returnString = returnString + ((isFree) ? Operators.f : Operators.n) + Operators.newLine;\n return returnString;\n };\n /**\n * `Prepares a subsection` of the current section within the cross-reference table.\n * @private\n */\n PdfCrossTable.prototype.prepareSubsection = function (objectNum) {\n var count = 0;\n var i;\n var total = this.count;\n for (var k = 0; k < this.document.pdfObjects.count; k++) {\n var reference = this.document.pdfObjects.items(k).reference;\n var refString = reference.toString();\n var refArray = refString.split(' ');\n }\n if (objectNum >= total) {\n return count;\n }\n // search for first changed indirect object.\n for (i = objectNum; i < total; ++i) {\n break;\n }\n objectNum = i;\n // look up for all indirect objects in one subsection.\n for (; i < total; ++i) {\n ++count;\n }\n return count;\n };\n /**\n * `Marks the trailer references` being saved.\n * @private\n */\n PdfCrossTable.prototype.markTrailerReferences = function () {\n var tempArray;\n var keys = this.trailer.items.keys();\n var values = this.trailer.items.values();\n };\n /**\n * `Saves the head`.\n * @private\n */\n PdfCrossTable.prototype.saveHead = function (writer) {\n var version = this.generateFileVersion(writer.document);\n writer.write('%PDF-' + version);\n writer.write(Operators.newLine);\n };\n /**\n * Generates the `version` of the file.\n * @private\n */\n PdfCrossTable.prototype.generateFileVersion = function (document) {\n var iVersion = 4;\n var version = '1.' + iVersion.toString();\n return version;\n };\n PdfCrossTable.prototype.getReference = function (obj, bNew) {\n if (typeof bNew === 'undefined') {\n var wasNew = false;\n return this.getReference(obj, wasNew);\n }\n else {\n //code splitted for reducing lines of code exceeds 100.\n return this.getSubReference(obj, bNew);\n }\n };\n /**\n * Retrieves the `reference` of the object given.\n * @private\n */\n PdfCrossTable.prototype.getSubReference = function (obj, bNew) {\n var isNew = false;\n var wasNew;\n var reference = null;\n // if (obj.IsSaving) {\n if (this.items.count > 0 && obj.objectCollectionIndex > 0 && this.items.count > obj.objectCollectionIndex - 1) {\n var tempObj = this.document.pdfObjects.getReference(obj, wasNew);\n reference = tempObj.reference;\n wasNew = tempObj.wasNew;\n }\n if (reference == null) {\n if (obj.status === ObjectStatus.Registered) {\n wasNew = false;\n }\n else {\n wasNew = true;\n }\n }\n else {\n wasNew = false;\n }\n // need to add mapped reference code\n if (reference == null) {\n var objnumber = this.nextObjNumber;\n reference = new PdfReference(objnumber, 0);\n var found = void 0;\n if (wasNew) {\n this.document.pdfObjects.add(obj);\n this.document.pdfObjects.trySetReference(obj, reference, found);\n var tempIndex = this.document.pdfObjects.count - 1;\n var tempkey = this.document.pdfObjects.objectCollections[tempIndex].reference.objNumber;\n var tempvalue = this.document.pdfObjects.objectCollections[this.document.pdfObjects.count - 1];\n this.document.pdfObjects.mainObjectCollection.setValue(tempkey, tempvalue);\n obj.position = -1;\n }\n else {\n this.document.pdfObjects.trySetReference(obj, reference, found);\n }\n obj.objectCollectionIndex = reference.objNumber;\n obj.status = ObjectStatus.None;\n isNew = true;\n }\n bNew = isNew || this.bForceNew;\n return reference;\n };\n /**\n * `Saves all objects` in the collection.\n * @private\n */\n PdfCrossTable.prototype.saveObjects = function (writer) {\n var objectCollection = this.objectCollection;\n for (var i = 0; i < objectCollection.count; ++i) {\n var oi = objectCollection.items(i);\n var obj = oi.object;\n obj.isSaving = true;\n this.saveIndirectObject(obj, writer);\n }\n };\n /**\n * `Saves indirect object`.\n * @private\n */\n PdfCrossTable.prototype.saveIndirectObject = function (obj, writer) {\n var reference = this.getReference(obj);\n if (obj instanceof PdfCatalog) {\n this.trailer.items.setValue(this.dictionaryProperties.root, reference);\n }\n // NOTE : This is needed for correct string objects encryption.\n this.pdfDocument.currentSavingObj = reference;\n var tempArchive = false;\n tempArchive = obj.getArchive();\n var allowedType = !((obj instanceof PdfStream) || !tempArchive || (obj instanceof PdfCatalog));\n var sigFlag = false;\n this.registerObject(writer.position, reference);\n this.doSaveObject(obj, reference, writer);\n };\n /**\n * Performs `real saving` of the save object.\n * @private\n */\n PdfCrossTable.prototype.doSaveObject = function (obj, reference, writer) {\n var correctPosition = writer.length;\n writer.write(reference.objNumber.toString());\n writer.write(Operators.whiteSpace);\n writer.write(reference.genNumber.toString());\n writer.write(Operators.whiteSpace);\n writer.write(Operators.obj);\n writer.write(Operators.newLine);\n obj.save(writer);\n var stream = writer.stream;\n writer.write(Operators.endObj);\n writer.write(Operators.newLine);\n };\n PdfCrossTable.prototype.registerObject = function (offset, reference, free) {\n if (typeof free === 'boolean') {\n // Register the object by its number.\n this.objects.setValue(reference.objNumber, new RegisteredObject(offset, reference, free));\n this.maxGenNumIndex = Math.max(this.maxGenNumIndex, reference.genNumber);\n }\n else if (typeof free === 'undefined') {\n // Register the object by its number.\n this.objects.setValue(reference.objNumber, new RegisteredObject(offset, reference));\n this.maxGenNumIndex = Math.max(this.maxGenNumIndex, reference.genNumber);\n }\n };\n /**\n * `Dereferences` the specified primitive object.\n * @private\n */\n PdfCrossTable.dereference = function (obj) {\n var rh = obj;\n if (rh != null) {\n obj = rh.object;\n }\n return obj;\n };\n return PdfCrossTable;\n}());\nexport { PdfCrossTable };\nvar RegisteredObject = /** @class */ (function () {\n function RegisteredObject(offset, reference, free) {\n var tempOffset = offset;\n this.offsetNumber = tempOffset;\n var tempReference = reference;\n this.generation = tempReference.genNumber;\n this.object = tempReference.objNumber;\n if (typeof free === 'undefined') {\n this.type = ObjectType.Normal;\n }\n else {\n this.type = ObjectType.Free;\n }\n }\n Object.defineProperty(RegisteredObject.prototype, \"objectNumber\", {\n //Properties\n /**\n * Gets the `object number`.\n * @private\n */\n get: function () {\n return this.object;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RegisteredObject.prototype, \"offset\", {\n /**\n * Gets the `offset`.\n * @private\n */\n get: function () {\n var result;\n result = this.offsetNumber;\n return result;\n },\n enumerable: true,\n configurable: true\n });\n return RegisteredObject;\n}());\nexport { RegisteredObject };\n","/**\n * Coordinates of Position for `PointF`.\n * @private\n */\nvar PointF = /** @class */ (function () {\n function PointF(x, y) {\n if (typeof x === 'undefined') {\n this.x = 0;\n this.y = 0;\n }\n else {\n if (x !== null) {\n this.x = x;\n }\n else {\n this.x = 0;\n }\n if (y !== null) {\n this.y = y;\n }\n else {\n this.y = 0;\n }\n }\n }\n return PointF;\n}());\nexport { PointF };\n/**\n * Width and Height as `Size`.\n * @private\n */\nvar SizeF = /** @class */ (function () {\n function SizeF(width, height) {\n if (typeof height === 'undefined') {\n this.height = 0;\n this.width = 0;\n }\n else {\n if (height !== null) {\n this.height = height;\n }\n else {\n this.height = 0;\n }\n if (width !== null) {\n this.width = width;\n }\n else {\n this.width = 0;\n }\n }\n }\n return SizeF;\n}());\nexport { SizeF };\n/**\n * `RectangleF` with Position and size.\n * @private\n */\nvar RectangleF = /** @class */ (function () {\n function RectangleF(arg1, arg2, arg3, arg4) {\n if (typeof arg1 === typeof arg1 && typeof arg1 === 'undefined') {\n this.x = 0;\n this.y = 0;\n this.height = 0;\n this.width = 0;\n }\n else {\n if (arg1 instanceof PointF && arg2 instanceof SizeF && typeof arg3 === 'undefined') {\n var pointf = arg1;\n this.x = pointf.x;\n this.y = pointf.y;\n var sizef = arg2;\n this.height = sizef.height;\n this.width = sizef.width;\n }\n else {\n var x = arg1;\n var y = arg2;\n var width = arg3;\n var height = arg4;\n this.x = x;\n this.y = y;\n this.height = height;\n this.width = width;\n }\n }\n }\n return RectangleF;\n}());\nexport { RectangleF };\n/**\n * `Rectangle` with left, right, top and bottom.\n * @private\n */\nvar Rectangle = /** @class */ (function () {\n /**\n * Instance of `RectangleF` class with X, Y, Width and Height.\n * @private\n */\n function Rectangle(left, top, right, bottom) {\n this.left = left;\n this.top = top;\n this.right = right;\n this.bottom = bottom;\n }\n Object.defineProperty(Rectangle.prototype, \"width\", {\n /**\n * Gets a value of width\n */\n get: function () {\n return this.right - this.left;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rectangle.prototype, \"height\", {\n /**\n * Gets a value of height\n */\n get: function () {\n return this.bottom - this.top;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rectangle.prototype, \"topLeft\", {\n /**\n * Gets a value of Top and Left\n */\n get: function () {\n return new PointF(this.left, this.top);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rectangle.prototype, \"size\", {\n /**\n * Gets a value of size\n */\n get: function () {\n return new SizeF(this.width, this.height);\n },\n enumerable: true,\n configurable: true\n });\n Rectangle.prototype.toString = function () {\n return this.topLeft + 'x' + this.size;\n };\n return Rectangle;\n}());\nexport { Rectangle };\n","/**\n * PdfPageSize.ts class for EJ2-PDF\n */\nimport { SizeF } from './../drawing/pdf-drawing';\n/**\n * Represents information about various predefined `page sizes`.\n */\nvar PdfPageSize = /** @class */ (function () {\n //constructor\n /**\n * Initialize an instance for `PdfPageSize` class.\n * @private\n */\n function PdfPageSize() {\n // \n }\n /**\n * Specifies the size of `letter`.\n * @private\n */\n PdfPageSize.letter = new SizeF(612, 792);\n /**\n * Specifies the size of `note`.\n * @private\n */\n PdfPageSize.note = new SizeF(540, 720);\n /**\n * Specifies the size of `legal`.\n * @private\n */\n PdfPageSize.legal = new SizeF(612, 1008);\n /**\n * Specifies the size of `a0`.\n * @private\n */\n PdfPageSize.a0 = new SizeF(2380, 3368);\n /**\n * Specifies the size of `a1`.\n * @private\n */\n PdfPageSize.a1 = new SizeF(1684, 2380);\n /**\n * Specifies the size of `a2`.\n * @private\n */\n PdfPageSize.a2 = new SizeF(1190, 1684);\n /**\n * Specifies the size of `a3`.\n * @private\n */\n PdfPageSize.a3 = new SizeF(842, 1190);\n /**\n * Specifies the size of `a4`.\n * @private\n */\n PdfPageSize.a4 = new SizeF(595, 842);\n /**\n * Specifies the size of `a5`.\n * @private\n */\n PdfPageSize.a5 = new SizeF(421, 595);\n /**\n * Specifies the size of `a6`.\n * @private\n */\n PdfPageSize.a6 = new SizeF(297, 421);\n /**\n * Specifies the size of `a7`.\n * @private\n */\n PdfPageSize.a7 = new SizeF(210, 297);\n /**\n * Specifies the size of `a8`.\n * @private\n */\n PdfPageSize.a8 = new SizeF(148, 210);\n /**\n * Specifies the size of `a9`.\n * @private\n */\n PdfPageSize.a9 = new SizeF(105, 148);\n /**\n * Specifies the size of `a10`.\n * @private\n */\n PdfPageSize.a10 = new SizeF(74, 105);\n /**\n * Specifies the size of `b0`.\n * @private\n */\n PdfPageSize.b0 = new SizeF(2836, 4008);\n /**\n * Specifies the size of `b1`.\n * @private\n */\n PdfPageSize.b1 = new SizeF(2004, 2836);\n /**\n * Specifies the size of `b2`.\n * @private\n */\n PdfPageSize.b2 = new SizeF(1418, 2004);\n /**\n * Specifies the size of `b3`.\n * @private\n */\n PdfPageSize.b3 = new SizeF(1002, 1418);\n /**\n * Specifies the size of `b4`.\n * @private\n */\n PdfPageSize.b4 = new SizeF(709, 1002);\n /**\n * Specifies the size of `b5`.\n * @private\n */\n PdfPageSize.b5 = new SizeF(501, 709);\n /**\n * Specifies the size of `archE`.\n * @private\n */\n PdfPageSize.archE = new SizeF(2592, 3456);\n /**\n * Specifies the size of `archD`.\n * @private\n */\n PdfPageSize.archD = new SizeF(1728, 2592);\n /**\n * Specifies the size of `archC`.\n * @private\n */\n PdfPageSize.archC = new SizeF(1296, 1728);\n /**\n * Specifies the size of `archB`.\n * @private\n */\n PdfPageSize.archB = new SizeF(864, 1296);\n /**\n * Specifies the size of `archA`.\n * @private\n */\n PdfPageSize.archA = new SizeF(648, 864);\n /**\n * Specifies the size of `flsa`.\n * @private\n */\n PdfPageSize.flsa = new SizeF(612, 936);\n /**\n * Specifies the size of `halfLetter`.\n * @private\n */\n PdfPageSize.halfLetter = new SizeF(396, 612);\n /**\n * Specifies the size of `letter11x17`.\n * @private\n */\n PdfPageSize.letter11x17 = new SizeF(792, 1224);\n /**\n * Specifies the size of `ledger`.\n * @private\n */\n PdfPageSize.ledger = new SizeF(1224, 792);\n return PdfPageSize;\n}());\nexport { PdfPageSize };\n","/**\n * PdfMargins.ts class for EJ2-PDF\n * A class representing PDF page margins.\n */\nvar PdfMargins = /** @class */ (function () {\n /**\n * Initializes a new instance of the `PdfMargins` class.\n * @private\n */\n function PdfMargins() {\n /**\n * Represents the `Default Page Margin` value.\n * @default 0.0\n * @private\n */\n this.pdfMargin = 40.0;\n this.setMargins(this.pdfMargin);\n }\n Object.defineProperty(PdfMargins.prototype, \"left\", {\n //Properties\n /**\n * Gets or sets the `left margin` size.\n * @private\n */\n get: function () {\n return this.leftMargin;\n },\n set: function (value) {\n this.leftMargin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfMargins.prototype, \"top\", {\n /**\n * Gets or sets the `top margin` size.\n * @private\n */\n get: function () {\n return this.topMargin;\n },\n set: function (value) {\n this.topMargin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfMargins.prototype, \"right\", {\n /**\n * Gets or sets the `right margin` size.\n * @private\n */\n get: function () {\n return this.rightMargin;\n },\n set: function (value) {\n this.rightMargin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfMargins.prototype, \"bottom\", {\n /**\n * Gets or sets the `bottom margin` size.\n * @private\n */\n get: function () {\n return this.bottomMargin;\n },\n set: function (value) {\n this.bottomMargin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfMargins.prototype, \"all\", {\n /**\n * Sets the `margins`.\n * @private\n */\n set: function (value) {\n this.setMargins(value);\n },\n enumerable: true,\n configurable: true\n });\n PdfMargins.prototype.setMargins = function (margin1, margin2, margin3, margin4) {\n if (typeof margin2 === 'undefined') {\n this.leftMargin = this.topMargin = this.rightMargin = this.bottomMargin = margin1;\n }\n else {\n if (typeof margin3 === 'undefined') {\n this.leftMargin = this.rightMargin = margin1;\n this.bottomMargin = this.topMargin = margin2;\n }\n else {\n this.leftMargin = margin1;\n this.topMargin = margin2;\n this.rightMargin = margin3;\n this.bottomMargin = margin4;\n }\n }\n };\n /**\n * `Clones` the object.\n * @private\n */\n PdfMargins.prototype.clone = function () {\n return this;\n };\n return PdfMargins;\n}());\nexport { PdfMargins };\n","/**\n * PdfPageSettings.ts class for EJ2-PDF\n */\nimport { SizeF, PointF } from './../drawing/pdf-drawing';\nimport { PdfPageSize } from './pdf-page-size';\nimport { PdfPageRotateAngle, PdfPageOrientation } from './enum';\nimport { PdfMargins } from './../graphics/pdf-margins';\n/**\n * The class provides various `setting` related with PDF pages.\n */\nvar PdfPageSettings = /** @class */ (function () {\n function PdfPageSettings(margins) {\n //Fields\n /**\n * The page `margins`.\n * @private\n */\n this.pageMargins = new PdfMargins();\n /**\n * The page `size`.\n * @default a4\n * @private\n */\n this.pageSize = PdfPageSize.a4;\n /**\n * The page `rotation angle`.\n * @default PdfPageRotateAngle.RotateAngle0\n * @private\n */\n this.rotateAngle = PdfPageRotateAngle.RotateAngle0;\n /**\n * The page `orientation`.\n * @default PdfPageOrientation.Portrait\n * @private\n */\n this.pageOrientation = PdfPageOrientation.Portrait;\n /**\n * The page `origin`.\n * @default 0,0\n * @private\n */\n this.pageOrigin = new PointF(0, 0);\n /**\n * Checks the Whether the `rotation` is applied or not.\n * @default false\n * @private\n */\n this.isRotation = false;\n if (typeof margins === 'number') {\n this.pageMargins.setMargins(margins);\n }\n }\n Object.defineProperty(PdfPageSettings.prototype, \"size\", {\n //Properties\n /**\n * Gets or sets the `size` of the page.\n * @private\n */\n get: function () {\n return this.pageSize;\n },\n set: function (value) {\n this.setSize(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"orientation\", {\n /**\n * Gets or sets the page `orientation`.\n * @private\n */\n get: function () {\n return this.pageOrientation;\n },\n set: function (orientation) {\n if (this.pageOrientation !== orientation) {\n this.pageOrientation = orientation;\n this.updateSize(orientation);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"margins\", {\n /**\n * Gets or sets the `margins` of the page.\n * @private\n */\n get: function () {\n return this.pageMargins;\n },\n set: function (value) {\n this.pageMargins = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"width\", {\n /**\n * Gets or sets the `width` of the page.\n * @private\n */\n get: function () {\n return this.pageSize.width;\n },\n set: function (value) {\n this.pageSize.width = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"height\", {\n /**\n * Gets or sets the `height` of the page.\n * @private\n */\n get: function () {\n return this.pageSize.height;\n },\n set: function (value) {\n this.pageSize.height = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"origin\", {\n /**\n * Gets or sets the `origin` of the page.\n * @private\n */\n get: function () {\n return this.pageOrigin;\n },\n set: function (value) {\n this.pageOrigin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"rotate\", {\n /**\n * Gets or sets the number of degrees by which the page should be `rotated` clockwise when displayed or printed.\n * @private\n */\n get: function () {\n return this.rotateAngle;\n },\n set: function (value) {\n this.rotateAngle = value;\n this.isRotation = true;\n },\n enumerable: true,\n configurable: true\n });\n //Methods\n /**\n * `Update page size` depending on orientation.\n * @private\n */\n PdfPageSettings.prototype.updateSize = function (orientation) {\n var min = Math.min(this.pageSize.width, this.pageSize.height);\n var max = Math.max(this.pageSize.width, this.pageSize.height);\n switch (orientation) {\n case PdfPageOrientation.Portrait:\n this.pageSize = new SizeF(min, max);\n break;\n case PdfPageOrientation.Landscape:\n this.pageSize = new SizeF(max, min);\n break;\n }\n };\n /**\n * Creates a `clone` of the object.\n * @private\n */\n PdfPageSettings.prototype.clone = function () {\n var settings = this;\n settings.pageMargins = this.pageMargins.clone();\n // if (GetTransition() != null)\n // {\n // settings.Transition = (PdfPageTransition)Transition.clone();\n // }\n return settings;\n };\n /**\n * Returns `size`, shrinked by the margins.\n * @private\n */\n PdfPageSettings.prototype.getActualSize = function () {\n var width = this.width - (this.margins.left + this.margins.right);\n var height = this.height - (this.margins.top + this.margins.bottom);\n var size = new SizeF(width, height);\n return size;\n };\n /**\n * Sets `size` to the page aaccording to the orientation.\n * @private\n */\n PdfPageSettings.prototype.setSize = function (size) {\n var min = Math.min(size.width, size.height);\n var max = Math.max(size.width, size.height);\n if (this.orientation === PdfPageOrientation.Portrait) {\n this.pageSize = new SizeF(min, max);\n }\n else {\n this.pageSize = new SizeF(max, min);\n }\n };\n return PdfPageSettings;\n}());\nexport { PdfPageSettings };\n","import { Operators } from './pdf-operators';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PointF, RectangleF } from './../drawing/pdf-drawing';\nimport { PdfString } from './../primitives/pdf-string';\nimport { PdfName } from './../primitives/pdf-name';\n/**\n * Helper class to `write PDF graphic streams` easily.\n * @private\n */\nvar PdfStreamWriter = /** @class */ (function () {\n /**\n * Initialize an instance of `PdfStreamWriter` class.\n * @private\n */\n function PdfStreamWriter(stream) {\n if (stream == null) {\n throw new Error('ArgumentNullException:stream');\n }\n this.stream = stream;\n }\n //Implementation\n /**\n * `Clear` the stream.\n * @public\n */\n PdfStreamWriter.prototype.clear = function () {\n this.stream.clearStream();\n };\n PdfStreamWriter.prototype.setGraphicsState = function (dictionaryName) {\n if (dictionaryName instanceof PdfName) {\n this.stream.write(dictionaryName.toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setGraphicsState);\n }\n else {\n this.stream.write(Operators.slash);\n this.stream.write(dictionaryName);\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setGraphicsState);\n }\n };\n /**\n * `Executes the XObject`.\n * @private\n */\n PdfStreamWriter.prototype.executeObject = function (name) {\n this.stream.write(name.toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.paintXObject);\n this.stream.write(Operators.newLine);\n };\n /**\n * `Closes path object`.\n * @private\n */\n PdfStreamWriter.prototype.closePath = function () {\n this.writeOperator(Operators.closePath);\n };\n /**\n * `Clips the path`.\n * @private\n */\n PdfStreamWriter.prototype.clipPath = function (useEvenOddRule) {\n this.stream.write(Operators.clipPath);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n }\n this.stream.write(Operators.whiteSpace);\n this.stream.write(Operators.endPath);\n this.stream.write(Operators.newLine);\n };\n /**\n * `Closes, then fills and strokes the path`.\n * @private\n */\n PdfStreamWriter.prototype.closeFillStrokePath = function (useEvenOddRule) {\n this.stream.write(Operators.closeFillStrokePath);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n this.stream.write(Operators.newLine);\n }\n else {\n this.stream.write(Operators.newLine);\n }\n };\n /**\n * `Fills and strokes path`.\n * @private\n */\n PdfStreamWriter.prototype.fillStrokePath = function (useEvenOddRule) {\n this.stream.write(Operators.fillStroke);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n this.stream.write(Operators.newLine);\n }\n else {\n this.stream.write(Operators.newLine);\n }\n };\n /**\n * `Fills path`.\n * @private\n */\n PdfStreamWriter.prototype.fillPath = function (useEvenOddRule) {\n this.stream.write(Operators.fill);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n this.stream.write(Operators.newLine);\n }\n else {\n this.stream.write(Operators.newLine);\n }\n };\n /**\n * `Ends the path`.\n * @private\n */\n PdfStreamWriter.prototype.endPath = function () {\n this.writeOperator(Operators.n);\n };\n /**\n * `Closes and fills the path`.\n * @private\n */\n PdfStreamWriter.prototype.closeFillPath = function (useEvenOddRule) {\n this.writeOperator(Operators.closePath);\n this.stream.write(Operators.fill);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n this.stream.write(Operators.newLine);\n }\n else {\n this.stream.write(Operators.newLine);\n }\n };\n /**\n * `Closes and strokes the path`.\n * @private\n */\n PdfStreamWriter.prototype.closeStrokePath = function () {\n this.writeOperator(Operators.closeStrokePath);\n };\n /**\n * `Sets the text scaling`.\n * @private\n */\n PdfStreamWriter.prototype.setTextScaling = function (textScaling) {\n this.stream.write(PdfNumber.floatToString(textScaling));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setTextScaling);\n };\n /**\n * `Strokes path`.\n * @private\n */\n PdfStreamWriter.prototype.strokePath = function () {\n this.writeOperator(Operators.stroke);\n };\n /**\n * `Restores` the graphics state.\n * @private\n */\n PdfStreamWriter.prototype.restoreGraphicsState = function () {\n this.writeOperator(Operators.restoreState);\n };\n /**\n * `Saves` the graphics state.\n * @private\n */\n PdfStreamWriter.prototype.saveGraphicsState = function () {\n this.writeOperator(Operators.saveState);\n };\n PdfStreamWriter.prototype.startNextLine = function (arg1, arg2) {\n if (typeof arg1 === 'undefined') {\n this.writeOperator(Operators.goToNextLine);\n }\n else if (arg1 instanceof PointF) {\n this.writePoint(arg1);\n this.writeOperator(Operators.setCoords);\n }\n else {\n this.writePoint(arg1, arg2);\n this.writeOperator(Operators.setCoords);\n }\n };\n /**\n * Shows the `text`.\n * @private\n */\n PdfStreamWriter.prototype.showText = function (text) {\n this.checkTextParam(text);\n this.writeText(text);\n this.writeOperator(Operators.setText);\n };\n /**\n * Sets `text leading`.\n * @private\n */\n PdfStreamWriter.prototype.setLeading = function (leading) {\n this.stream.write(PdfNumber.floatToString(leading));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setTextLeading);\n };\n /**\n * `Begins the path`.\n * @private\n */\n PdfStreamWriter.prototype.beginPath = function (x, y) {\n this.writePoint(x, y);\n this.writeOperator(Operators.beginPath);\n };\n /**\n * `Begins text`.\n * @private\n */\n PdfStreamWriter.prototype.beginText = function () {\n this.writeOperator(Operators.beginText);\n };\n /**\n * `Ends text`.\n * @private\n */\n PdfStreamWriter.prototype.endText = function () {\n this.writeOperator(Operators.endText);\n };\n PdfStreamWriter.prototype.appendRectangle = function (arg1, arg2, arg3, arg4) {\n if (arg1 instanceof RectangleF) {\n this.appendRectangle(arg1.x, arg1.y, arg1.width, arg1.height);\n }\n else {\n this.writePoint(arg1, arg2);\n this.writePoint(arg3, arg4);\n this.writeOperator(Operators.appendRectangle);\n }\n };\n PdfStreamWriter.prototype.appendLineSegment = function (arg1, arg2) {\n if (arg1 instanceof PointF) {\n this.appendLineSegment(arg1.x, arg1.y);\n }\n else {\n this.writePoint(arg1, arg2);\n this.writeOperator(Operators.appendLineSegment);\n }\n };\n /**\n * Sets the `text rendering mode`.\n * @private\n */\n PdfStreamWriter.prototype.setTextRenderingMode = function (renderingMode) {\n this.stream.write(renderingMode.toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setRenderingMode);\n };\n /**\n * Sets the `character spacing`.\n * @private\n */\n PdfStreamWriter.prototype.setCharacterSpacing = function (charSpacing) {\n this.stream.write(PdfNumber.floatToString(charSpacing));\n this.stream.write(Operators.whiteSpace);\n this.stream.write(Operators.setCharacterSpace);\n this.stream.write(Operators.newLine);\n };\n /**\n * Sets the `word spacing`.\n * @private\n */\n PdfStreamWriter.prototype.setWordSpacing = function (wordSpacing) {\n this.stream.write(PdfNumber.floatToString(wordSpacing));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setWordSpace);\n };\n PdfStreamWriter.prototype.showNextLineText = function (arg1, arg2) {\n if (arg1 instanceof PdfString) {\n this.checkTextParam(arg1);\n this.writeText(arg1);\n this.writeOperator(Operators.setTextOnNewLine);\n }\n else {\n this.checkTextParam(arg1);\n this.writeText(arg1, arg2);\n this.writeOperator(Operators.setTextOnNewLine);\n }\n };\n PdfStreamWriter.prototype.setColorSpace = function (arg1, arg2) {\n if (arg1 instanceof PdfName && typeof arg2 === 'boolean') {\n var temparg1 = arg1;\n var temparg2 = arg2;\n // if (temparg1 == null) {\n // throw new Error('ArgumentNullException:name');\n // }\n var op = (temparg2) ? Operators.selectcolorspaceforstroking : Operators.selectcolorspacefornonstroking;\n this.stream.write(temparg1.toString());\n this.stream.write(Operators.whiteSpace);\n this.stream.write(op);\n this.stream.write(Operators.newLine);\n }\n else {\n var temparg1 = arg1;\n var temparg2 = arg2;\n this.setColorSpace(new PdfName(temparg1), temparg2);\n }\n };\n /**\n * Modifies current `transformation matrix`.\n * @private\n */\n PdfStreamWriter.prototype.modifyCtm = function (matrix) {\n if (matrix == null) {\n throw new Error('ArgumentNullException:matrix');\n }\n this.stream.write(matrix.toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.modifyCtm);\n };\n PdfStreamWriter.prototype.setFont = function (font, name, size) {\n if (typeof name === 'string') {\n this.setFont(font, new PdfName(name), size);\n }\n else {\n if (font == null) {\n throw new Error('ArgumentNullException:font');\n }\n this.stream.write(name.toString());\n this.stream.write(Operators.whiteSpace);\n this.stream.write(PdfNumber.floatToString(size));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setFont);\n }\n };\n /**\n * `Writes the operator`.\n * @private\n */\n PdfStreamWriter.prototype.writeOperator = function (opcode) {\n this.stream.write(opcode);\n this.stream.write(Operators.newLine);\n };\n PdfStreamWriter.prototype.checkTextParam = function (text) {\n if (text == null) {\n throw new Error('ArgumentNullException:text');\n }\n if (typeof text === 'string' && text === '') {\n throw new Error('ArgumentException:The text can not be an empty string, text');\n }\n };\n PdfStreamWriter.prototype.writeText = function (arg1, arg2) {\n if ((arg1 instanceof PdfString) && (typeof arg2 === 'undefined')) {\n this.stream.write(arg1.pdfEncode());\n }\n else {\n var start = void 0;\n var end = void 0;\n if (arg2) {\n start = PdfString.hexStringMark[0];\n end = PdfString.hexStringMark[1];\n }\n else {\n start = PdfString.stringMark[0];\n end = PdfString.stringMark[1];\n }\n this.stream.write(start);\n this.stream.write(arg1);\n this.stream.write(end);\n }\n };\n PdfStreamWriter.prototype.writePoint = function (arg1, arg2) {\n if ((arg1 instanceof PointF) && (typeof arg2 === 'undefined')) {\n this.writePoint(arg1.x, arg1.y);\n }\n else {\n var temparg1 = arg1;\n this.stream.write(PdfNumber.floatToString(temparg1));\n this.stream.write(Operators.whiteSpace);\n // NOTE: Change Y co-ordinate because we shifted co-ordinate system only.\n arg2 = this.updateY(arg2);\n this.stream.write(PdfNumber.floatToString(arg2));\n this.stream.write(Operators.whiteSpace);\n }\n };\n /**\n * `Updates y` co-ordinate.\n * @private\n */\n PdfStreamWriter.prototype.updateY = function (arg) {\n return -arg;\n };\n /**\n * `Writes string` to the file.\n * @private\n */\n PdfStreamWriter.prototype.write = function (string) {\n var builder = '';\n builder += string;\n builder += Operators.newLine;\n this.writeOperator(builder);\n };\n /**\n * `Writes comment` to the file.\n * @private\n */\n PdfStreamWriter.prototype.writeComment = function (comment) {\n if (comment != null && comment.length > 0) {\n var builder = '';\n builder += Operators.comment;\n builder += Operators.whiteSpace;\n builder += comment;\n //builder.Append( Operators.NewLine );\n this.writeOperator(builder);\n }\n else {\n throw new Error('Invalid comment');\n }\n };\n /**\n * Sets the `color and space`.\n * @private\n */\n PdfStreamWriter.prototype.setColorAndSpace = function (color, colorSpace, forStroking) {\n if (!color.isEmpty) {\n // bool test = color is PdfExtendedColor;\n this.stream.write(color.toString(colorSpace, forStroking));\n this.stream.write(Operators.newLine);\n }\n };\n // public setLineDashPattern(pattern : number[], patternOffset : number) : void\n // {\n // let pat : PdfArray = new PdfArray(pattern);\n // let off : PdfNumber = new PdfNumber(patternOffset);\n // this.setLineDashPatternHelper(pat, off);\n // }\n // private setLineDashPatternHelper(pattern : PdfArray, patternOffset : PdfNumber) : void\n // {\n // pattern.Save(this);\n // this.m_stream.write(Operators.whiteSpace);\n // patternOffset.Save(this);\n // this.m_stream.write(Operators.whiteSpace);\n // this.writeOperator(Operators.setDashPattern);\n // }\n /**\n * Sets the `line dash pattern`.\n * @private\n */\n PdfStreamWriter.prototype.setLineDashPattern = function (pattern, patternOffset) {\n // let pat : PdfArray = new PdfArray(pattern);\n // let off : PdfNumber = new PdfNumber(patternOffset);\n // this.setLineDashPatternHelper(pat, off);\n this.setLineDashPatternHelper(pattern, patternOffset);\n };\n /**\n * Sets the `line dash pattern`.\n * @private\n */\n PdfStreamWriter.prototype.setLineDashPatternHelper = function (pattern, patternOffset) {\n var tempPattern = '[';\n if (pattern.length > 1) {\n for (var index = 0; index < pattern.length; index++) {\n if (index === pattern.length - 1) {\n tempPattern += pattern[index].toString();\n }\n else {\n tempPattern += pattern[index].toString() + ' ';\n }\n }\n }\n tempPattern += '] ';\n tempPattern += patternOffset.toString();\n tempPattern += ' ' + Operators.setDashPattern;\n this.stream.write(tempPattern);\n this.stream.write(Operators.newLine);\n };\n /**\n * Sets the `miter limit`.\n * @private\n */\n PdfStreamWriter.prototype.setMiterLimit = function (miterLimit) {\n this.stream.write(PdfNumber.floatToString(miterLimit));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setMiterLimit);\n };\n /**\n * Sets the `width of the line`.\n * @private\n */\n PdfStreamWriter.prototype.setLineWidth = function (width) {\n this.stream.write(PdfNumber.floatToString(width));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setLineWidth);\n };\n /**\n * Sets the `line cap`.\n * @private\n */\n PdfStreamWriter.prototype.setLineCap = function (lineCapStyle) {\n this.stream.write((lineCapStyle).toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setLineCapStyle);\n };\n /**\n * Sets the `line join`.\n * @private\n */\n PdfStreamWriter.prototype.setLineJoin = function (lineJoinStyle) {\n this.stream.write((lineJoinStyle).toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setLineJoinStyle);\n };\n Object.defineProperty(PdfStreamWriter.prototype, \"position\", {\n //IPdfWriter members\n /**\n * Gets or sets the current `position` within the stream.\n * @private\n */\n get: function () {\n return this.stream.position;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStreamWriter.prototype, \"length\", {\n /**\n * Gets `stream length`.\n * @private\n */\n get: function () {\n var returnValue = 0;\n if (this.stream.data.length !== 0 && this.stream.data.length !== -1) {\n for (var index = 0; index < this.stream.data.length; index++) {\n returnValue += this.stream.data[index].length;\n }\n }\n return returnValue;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStreamWriter.prototype, \"document\", {\n /**\n * Gets and Sets the `current document`.\n * @private\n */\n get: function () {\n return null;\n },\n enumerable: true,\n configurable: true\n });\n /* tslint:disable-next-line:max-line-length */\n PdfStreamWriter.prototype.appendBezierSegment = function (arg1, arg2, arg3, arg4, arg5, arg6) {\n if (arg1 instanceof PointF && arg2 instanceof PointF && arg3 instanceof PointF) {\n this.writePoint(arg1.x, arg1.y);\n this.writePoint(arg2.x, arg2.y);\n this.writePoint(arg3.x, arg3.y);\n }\n else {\n this.writePoint(arg1, arg2);\n this.writePoint(arg3, arg4);\n this.writePoint(arg5, arg6);\n }\n this.writeOperator(Operators.appendbeziercurve);\n };\n PdfStreamWriter.prototype.setColourWithPattern = function (colours, patternName, forStroking) {\n if ((colours != null)) {\n var count = colours.length;\n var i = 0;\n for (i = 0; i < count; ++i) {\n this.stream.write(colours[i].toString());\n this.stream.write(Operators.whiteSpace);\n }\n }\n if ((patternName != null)) {\n this.stream.write(patternName.toString());\n this.stream.write(Operators.whiteSpace);\n }\n if (forStroking) {\n this.writeOperator(Operators.setColorAndPatternStroking);\n }\n else {\n this.writeOperator(Operators.setColorAndPattern);\n }\n };\n return PdfStreamWriter;\n}());\nexport { PdfStreamWriter };\n","import { SizeF, RectangleF, PointF } from './../../drawing/pdf-drawing';\nimport { PdfWordWrapType } from './enum';\nimport { StringTokenizer } from './string-tokenizer';\n/**\n * Class `lay outing the text`.\n */\nvar PdfStringLayouter = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `StringLayouter` class.\n * @private\n */\n function PdfStringLayouter() {\n /**\n * Checks whether the x co-ordinate is need to set as client size or not.\n * @hidden\n * @private\n */\n this.isOverloadWithPosition = false;\n //\n }\n PdfStringLayouter.prototype.layout = function (arg1, arg2, arg3, arg4, arg5, arg6, arg7) {\n if (arg4 instanceof RectangleF) {\n this.initialize(arg1, arg2, arg3, arg4, arg5);\n this.isOverloadWithPosition = arg6;\n this.clientSize = arg7;\n var result = this.doLayout();\n this.clear();\n return result;\n }\n else {\n this.initialize(arg1, arg2, arg3, arg4);\n this.isOverloadWithPosition = arg5;\n this.clientSize = arg6;\n var result = this.doLayout();\n this.clear();\n return result;\n }\n };\n PdfStringLayouter.prototype.initialize = function (text, font, format, rectSize, pageHeight) {\n if (typeof pageHeight === 'number') {\n if (text == null) {\n throw new Error('ArgumentNullException:text');\n }\n if (font == null) {\n throw new Error('ArgumentNullException:font');\n }\n this.text = text;\n this.font = font;\n this.format = format;\n this.size = new SizeF(rectSize.width, rectSize.height);\n this.rectangle = rectSize;\n this.pageHeight = pageHeight;\n this.reader = new StringTokenizer(text);\n }\n else {\n this.initialize(text, font, format, new RectangleF(new PointF(0, 0), rectSize), 0);\n }\n };\n /**\n * `Clear` all resources.\n * @private\n */\n PdfStringLayouter.prototype.clear = function () {\n this.font = null;\n this.format = null;\n this.reader.close();\n this.reader = null;\n this.text = null;\n };\n /**\n * `Layouts` the text.\n * @private\n */\n PdfStringLayouter.prototype.doLayout = function () {\n var result = new PdfStringLayoutResult();\n var lineResult = new PdfStringLayoutResult();\n var lines = [];\n var line = this.reader.peekLine();\n var lineIndent = this.getLineIndent(true);\n while (line != null) {\n lineResult = this.layoutLine(line, lineIndent);\n if (lineResult !== null || typeof lineResult !== 'undefined') {\n var numSymbolsInserted = 0;\n /* tslint:disable */\n var returnedValue = this.copyToResult(result, lineResult, lines, /*out*/ numSymbolsInserted);\n /* tslint:enable */\n var success = returnedValue.success;\n numSymbolsInserted = returnedValue.numInserted;\n if (!success) {\n this.reader.read(numSymbolsInserted);\n break;\n }\n }\n // if (lineResult.textRemainder != null && lineResult.textRemainder.length > 0 ) {\n // break;\n // }\n this.reader.readLine();\n line = this.reader.peekLine();\n lineIndent = this.getLineIndent(false);\n }\n this.finalizeResult(result, lines);\n return result;\n };\n /**\n * Returns `line indent` for the line.\n * @private\n */\n PdfStringLayouter.prototype.getLineIndent = function (firstLine) {\n var lineIndent = 0;\n if (this.format != null) {\n lineIndent = (firstLine) ? this.format.firstLineIndent : this.format.paragraphIndent;\n lineIndent = (this.size.width > 0) ? Math.min(this.size.width, lineIndent) : lineIndent;\n }\n return lineIndent;\n };\n /**\n * Calculates `height` of the line.\n * @private\n */\n PdfStringLayouter.prototype.getLineHeight = function () {\n var height = this.font.height;\n if (this.format != null && this.format.lineSpacing !== 0) {\n height = this.format.lineSpacing + this.font.height;\n }\n return height;\n };\n /**\n * Calculates `width` of the line.\n * @private\n */\n PdfStringLayouter.prototype.getLineWidth = function (line) {\n var width = this.font.getLineWidth(line, this.format);\n return width;\n };\n // tslint:disable\n /**\n * `Layouts` line.\n * @private\n */\n PdfStringLayouter.prototype.layoutLine = function (line, lineIndent) {\n var lineResult = new PdfStringLayoutResult();\n lineResult.layoutLineHeight = this.getLineHeight();\n var lines = [];\n var maxWidth = this.size.width;\n var lineWidth = this.getLineWidth(line) + lineIndent;\n var lineType = LineType.FirstParagraphLine;\n var readWord = true;\n // line is in bounds.\n if (maxWidth <= 0 || Math.round(lineWidth) <= Math.round(maxWidth)) {\n this.addToLineResult(lineResult, lines, line, lineWidth, LineType.NewLineBreak | lineType);\n }\n else {\n var builder = '';\n var curLine = '';\n lineWidth = lineIndent;\n var curIndent = lineIndent;\n var reader = new StringTokenizer(line);\n var word = reader.peekWord();\n var isSingleWord = false;\n if (word.length !== reader.length) {\n if (word === ' ') {\n curLine = curLine + word;\n builder = builder + word;\n reader.position += 1;\n word = reader.peekWord();\n }\n }\n while (word != null) {\n curLine = curLine + word;\n var curLineWidth = this.getLineWidth(curLine.toString()) + curIndent /*)*/;\n if (curLine.toString() === ' ') {\n curLine = '';\n curLineWidth = 0;\n }\n if (curLineWidth > maxWidth) {\n if (this.getWrapType() === PdfWordWrapType.None) {\n break;\n }\n if (curLine.length === word.length) {\n // Character wrap is disabled or one symbol is greater than bounds.\n if (this.getWrapType() === PdfWordWrapType.WordOnly) {\n lineResult.textRemainder = line.substring(reader.position);\n break;\n }\n else if (curLine.length === 1) {\n builder = builder + word;\n break;\n }\n else {\n readWord = false;\n curLine = '';\n word = reader.peek().toString();\n continue;\n }\n }\n else {\n if (this.getLineWidth(word.toString()) > maxWidth) {\n this.format.wordWrap = PdfWordWrapType.Character;\n }\n else {\n if (typeof this.format !== 'undefined' && this.format !== null) {\n this.format.wordWrap = PdfWordWrapType.Word;\n }\n }\n if (this.getWrapType() !== PdfWordWrapType.Character || !readWord) {\n var ln = builder.toString();\n // if (ln.indexOf(' ') === -1) {\n // isSingleWord = true;\n // this.addToLineResult(lineResult, lines, curLine, lineWidth, LineType.LayoutBreak | lineType);\n // } else {\n // this.addToLineResult(lineResult, lines, ln, lineWidth, LineType.LayoutBreak | lineType);\n // } \n if (ln !== ' ') {\n this.addToLineResult(lineResult, lines, ln, lineWidth, LineType.LayoutBreak | lineType);\n }\n if (this.isOverloadWithPosition) {\n maxWidth = this.clientSize.width;\n }\n curLine = '';\n builder = '';\n lineWidth = 0;\n curIndent = 0;\n curLineWidth = 0;\n lineType = LineType.None;\n // if (isSingleWord) {\n // reader.readWord();\n // readWord = false;\n // }\n word = (readWord) ? word : reader.peekWord();\n //isSingleWord = false;\n readWord = true;\n }\n else {\n readWord = false;\n curLine = '';\n curLine = curLine + builder.toString();\n word = reader.peek().toString();\n }\n continue;\n }\n }\n /*tslint:disable:max-func-body-length */\n builder = builder + word;\n lineWidth = curLineWidth;\n if (readWord) {\n reader.readWord();\n word = reader.peekWord();\n //isSingleWord = false;\n }\n else {\n reader.read();\n word = reader.peek().toString();\n }\n }\n if (builder.length > 0) {\n var ln = builder.toString();\n this.addToLineResult(lineResult, lines, ln, lineWidth, LineType.NewLineBreak | LineType.LastParagraphLine);\n }\n reader.close();\n }\n lineResult.layoutLines = [];\n for (var index = 0; index < lines.length; index++) {\n lineResult.layoutLines.push(lines[index]);\n }\n lines = [];\n return lineResult;\n };\n /**\n * `Adds` line to line result.\n * @private\n */\n PdfStringLayouter.prototype.addToLineResult = function (lineResult, lines, line, lineWidth, breakType) {\n var info = new LineInfo();\n info.text = line;\n info.width = lineWidth;\n info.lineType = breakType;\n lines.push(info);\n var size = lineResult.actualSize;\n size.height += this.getLineHeight();\n size.width = Math.max(size.width, lineWidth);\n lineResult.size = size;\n };\n /**\n * `Copies` layout result from line result to entire result. Checks whether we can proceed lay outing or not.\n * @private\n */\n PdfStringLayouter.prototype.copyToResult = function (result, lineResult, lines, \n /*out*/ numInserted) {\n var success = true;\n var allowPartialLines = (this.format != null && !this.format.lineLimit);\n var height = result.actualSize.height;\n var maxHeight = this.size.height;\n if ((this.pageHeight > 0) && (maxHeight + this.rectangle.y > this.pageHeight)) {\n maxHeight = this.rectangle.y - this.pageHeight;\n maxHeight = Math.max(maxHeight, -maxHeight);\n }\n numInserted = 0;\n if (lineResult.lines != null) {\n for (var i = 0, len = lineResult.lines.length; i < len; i++) {\n var expHeight = height + lineResult.lineHeight;\n if (expHeight <= maxHeight || maxHeight <= 0 || allowPartialLines) {\n var info = lineResult.lines[i];\n numInserted += info.text.length;\n info = this.trimLine(info, (lines.length === 0));\n lines.push(info);\n // Update width.\n var size = result.actualSize;\n size.width = Math.max(size.width, info.width);\n result.size = size;\n // The part of the line fits only and it's allowed to use partial lines.\n // if (expHeight >= maxHeight && maxHeight > 0 && allowPartialLines)\n // {\n // let shouldClip : boolean = (this.format == null || !this.format.noClip);\n // if (shouldClip)\n // {\n // let exceededHeight : number = expHeight - maxHeight;\n // let fitHeight : number = /*Utils.Round(*/ lineResult.lineHeight - exceededHeight /*)*/;\n // height = /*Utils.Round(*/ height + fitHeight /*)*/;\n // }\n // else\n // {\n // height = expHeight;\n // }\n // success = false;\n // break;\n // } else {\n height = expHeight;\n // }\n }\n else {\n success = false;\n break;\n }\n }\n }\n if (height != result.size.height) {\n var size1 = result.actualSize;\n size1.height = height;\n result.size = size1;\n }\n return { success: success, numInserted: numInserted };\n };\n /**\n * `Finalizes` final result.\n * @private\n */\n PdfStringLayouter.prototype.finalizeResult = function (result, lines) {\n result.layoutLines = [];\n for (var index = 0; index < lines.length; index++) {\n result.layoutLines.push(lines[index]);\n }\n result.layoutLineHeight = this.getLineHeight();\n if (!this.reader.end) {\n result.textRemainder = this.reader.readToEnd();\n }\n lines = [];\n };\n /**\n * `Trims` whitespaces at the line.\n * @private\n */\n PdfStringLayouter.prototype.trimLine = function (info, firstLine) {\n var line = info.text;\n var lineWidth = info.width;\n // Trim start whitespaces if the line is not a start of the paragraph only.\n var trimStartSpaces = ((info.lineType & LineType.FirstParagraphLine) === 0);\n var start = (this.format == null || !this.format.rightToLeft);\n var spaces = StringTokenizer.spaces;\n line = (start) ? line.trim() : line.trim();\n // Recalculate line width.\n if (line.length !== info.text.length) {\n lineWidth = this.getLineWidth(line);\n if ((info.lineType & LineType.FirstParagraphLine) > 0) {\n lineWidth += this.getLineIndent(firstLine);\n }\n }\n info.text = line;\n info.width = lineWidth;\n return info;\n };\n /**\n * Returns `wrap` type.\n * @private\n */\n PdfStringLayouter.prototype.getWrapType = function () {\n var wrapType = (this.format != null) ? this.format.wordWrap : PdfWordWrapType.Word;\n return wrapType;\n };\n return PdfStringLayouter;\n}());\nexport { PdfStringLayouter };\n//Internal declaration\nvar PdfStringLayoutResult = /** @class */ (function () {\n function PdfStringLayoutResult() {\n }\n Object.defineProperty(PdfStringLayoutResult.prototype, \"remainder\", {\n // Properties\n /**\n * Gets the `text` which is not lay outed.\n * @private\n */\n get: function () {\n return this.textRemainder;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"actualSize\", {\n /**\n * Gets the actual layout text `bounds`.\n * @private\n */\n get: function () {\n if (typeof this.size === 'undefined') {\n this.size = new SizeF(0, 0);\n }\n return this.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"lines\", {\n /**\n * Gets layout `lines` information.\n * @private\n */\n get: function () {\n return this.layoutLines;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"lineHeight\", {\n /**\n * Gets the `height` of the line.\n * @private\n */\n get: function () {\n return this.layoutLineHeight;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"empty\", {\n /**\n * Gets value that indicates whether any layout text [`empty`].\n * @private\n */\n get: function () {\n return (this.layoutLines == null || this.layoutLines.length === 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"lineCount\", {\n /**\n * Gets `number of` the layout lines.\n * @private\n */\n get: function () {\n var count = (!this.empty) ? this.layoutLines.length : 0;\n return count;\n },\n enumerable: true,\n configurable: true\n });\n return PdfStringLayoutResult;\n}());\nexport { PdfStringLayoutResult };\nvar LineInfo = /** @class */ (function () {\n function LineInfo() {\n }\n Object.defineProperty(LineInfo.prototype, \"lineType\", {\n //Properties\n /**\n * Gets the `type` of the line text.\n * @private\n */\n get: function () {\n return this.type;\n },\n set: function (value) {\n this.type = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LineInfo.prototype, \"text\", {\n /**\n * Gets the line `text`.\n * @private\n */\n get: function () {\n return this.content;\n },\n set: function (value) {\n this.content = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LineInfo.prototype, \"width\", {\n /**\n * Gets `width` of the line text.\n * @private\n */\n get: function () {\n return this.lineWidth;\n },\n set: function (value) {\n this.lineWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n return LineInfo;\n}());\nexport { LineInfo };\n/**\n* Break type of the `line`.\n* @private\n*/\nexport var LineType;\n(function (LineType) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n LineType[LineType[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `NewLineBreak`.\n * @private\n */\n LineType[LineType[\"NewLineBreak\"] = 1] = \"NewLineBreak\";\n /**\n * Specifies the type of `LayoutBreak`.\n * @private\n */\n LineType[LineType[\"LayoutBreak\"] = 2] = \"LayoutBreak\";\n /**\n * Specifies the type of `FirstParagraphLine`.\n * @private\n */\n LineType[LineType[\"FirstParagraphLine\"] = 4] = \"FirstParagraphLine\";\n /**\n * Specifies the type of `LastParagraphLine`.\n * @private\n */\n LineType[LineType[\"LastParagraphLine\"] = 8] = \"LastParagraphLine\";\n})(LineType || (LineType = {}));\n","import { PdfColorSpace } from './enum';\nimport { Operators } from './../input-output/pdf-operators';\nimport { Dictionary } from './../collections/dictionary';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PdfArray } from './../primitives/pdf-array';\n/**\n * Implements structures and routines working with `color`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * //\n * // set color\n * let brushColor : PdfColor = new PdfColor(0, 0, 0);\n * //\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(brushColor);\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @default black color\n */\nvar PdfColor = /** @class */ (function () {\n function PdfColor(color1, color2, color3, color4) {\n if (typeof color1 === 'undefined') {\n if (typeof color2 !== 'undefined' && typeof color3 !== 'undefined' && typeof color4 !== 'undefined') {\n this.assignRGB(color2, color3, color4);\n }\n else {\n this.filled = false;\n }\n }\n else if (color1 instanceof PdfColor) {\n this.redColor = color1.r;\n this.greenColor = color1.g;\n this.blueColor = color1.b;\n this.grayColor = color1.gray;\n this.alpha = color1.alpha;\n this.filled = (this.alpha !== 0);\n /* tslint:disable-next-line:max-line-length */\n }\n else if (typeof color1 === 'number' && typeof color2 === 'undefined' && typeof color3 === 'undefined' && typeof color4 === 'undefined') {\n if (color1 < 0) {\n color1 = 0;\n }\n if (color1 > 1) {\n color1 = 1;\n }\n this.redColor = color1 * PdfColor.maxColourChannelValue;\n this.greenColor = color1 * PdfColor.maxColourChannelValue;\n this.blueColor = color1 * PdfColor.maxColourChannelValue;\n this.cyanColor = color1;\n this.magentaColor = color1;\n this.yellowColor = color1;\n this.blackColor = color1;\n this.grayColor = color1;\n this.alpha = PdfColor.maxColourChannelValue;\n this.filled = true;\n }\n else if (typeof color4 === 'undefined') {\n this.assignRGB(color1, color2, color3);\n }\n else {\n this.assignRGB(color2, color3, color4, color1);\n }\n }\n /**\n * `Assign` red, green, blue colors with alpha value..\n * @private\n */\n PdfColor.prototype.assignRGB = function (r, g, b, a) {\n if (typeof r === 'undefined' || typeof g === 'undefined' || typeof b === 'undefined') {\n this.filled = false;\n }\n else {\n this.cyanColor = 0;\n this.magentaColor = 0;\n this.yellowColor = 0;\n this.blackColor = 0;\n this.grayColor = 0;\n this.redColor = r;\n this.greenColor = g;\n this.blueColor = b;\n if (typeof a === 'undefined') {\n this.alpha = PdfColor.maxColourChannelValue;\n }\n else {\n this.alpha = a;\n }\n this.filled = true;\n this.assignCMYK(r, g, b);\n }\n };\n /**\n * `Calculate and assign` cyan, megenta, yellow colors from rgb values..\n * @private\n */\n PdfColor.prototype.assignCMYK = function (r, g, b) {\n var red = r / PdfColor.maxColourChannelValue;\n var green = g / PdfColor.maxColourChannelValue;\n var blue = b / PdfColor.maxColourChannelValue;\n var black = PdfNumber.min(1 - red, 1 - green, 1 - blue);\n var cyan = (black === 1.0) ? 0 : (1 - red - black) / (1 - black);\n var magenta = (black === 1.0) ? 0 : (1 - green - black) / (1 - black);\n var yellow = (black === 1.0) ? 0 : (1 - blue - black) / (1 - black);\n this.blackColor = black;\n this.cyanColor = cyan;\n this.magentaColor = magenta;\n this.yellowColor = yellow;\n };\n Object.defineProperty(PdfColor.prototype, \"r\", {\n //Properties\n // public static get Empty():PdfColor\n // {\n // return this.s_emptyColor\n // }\n /**\n * Gets or sets `Red` channel value.\n * @private\n */\n get: function () {\n return this.redColor;\n },\n set: function (value) {\n this.redColor = value;\n this.assignCMYK(this.redColor, this.greenColor, this.blueColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"red\", {\n /**\n * Gets the `Red` color\n * @private\n */\n get: function () {\n return (this.r / PdfColor.maxColourChannelValue);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"b\", {\n /**\n * Gets or sets `Blue` channel value.\n * @private\n */\n get: function () {\n return this.blueColor;\n },\n set: function (value) {\n this.blueColor = value;\n this.assignCMYK(this.redColor, this.greenColor, this.blueColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"blue\", {\n /**\n * Gets the `blue` color.\n * @private\n */\n get: function () {\n return (this.b / PdfColor.maxColourChannelValue);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"c\", {\n /**\n * Gets or sets `Cyan` channel value.\n * @private\n */\n get: function () {\n return this.cyanColor;\n },\n set: function (value) {\n if (value < 0) {\n this.cyanColor = 0;\n }\n else if (value > 1) {\n this.cyanColor = 1;\n }\n else {\n this.cyanColor = value;\n }\n this.assignRGB(this.cyanColor, this.magentaColor, this.yellowColor, this.blackColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"k\", {\n /**\n * Gets or sets `Black` channel value.\n * @private\n */\n get: function () {\n return this.blackColor;\n },\n set: function (value) {\n if ((value < 0)) {\n this.blackColor = 0;\n }\n else if ((value > 1)) {\n this.blackColor = 1;\n }\n else {\n this.blackColor = value;\n }\n this.assignRGB(this.cyanColor, this.magentaColor, this.yellowColor, this.blackColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"m\", {\n /**\n * Gets or sets `Magenta` channel value.\n * @private\n */\n get: function () {\n return this.magentaColor;\n },\n set: function (value) {\n if ((value < 0)) {\n this.magentaColor = 0;\n }\n else if ((value > 1)) {\n this.magentaColor = 1;\n }\n else {\n this.magentaColor = value;\n }\n this.assignRGB(this.cyanColor, this.magentaColor, this.yellowColor, this.blackColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"y\", {\n /**\n * Gets or sets `Yellow` channel value.\n * @private\n */\n get: function () {\n return this.yellowColor;\n },\n set: function (value) {\n if ((value < 0)) {\n this.yellowColor = 0;\n }\n else if ((value > 1)) {\n this.yellowColor = 1;\n }\n else {\n this.yellowColor = value;\n }\n this.assignRGB(this.cyanColor, this.magentaColor, this.yellowColor, this.blackColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"g\", {\n /**\n * Gets or sets `Green` channel value.\n * @private\n */\n get: function () {\n return this.greenColor;\n },\n set: function (value) {\n this.greenColor = value;\n this.assignCMYK(this.redColor, this.greenColor, this.blueColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"green\", {\n /**\n * Gets the `Green` color.\n * @private\n */\n get: function () {\n return (this.g / PdfColor.maxColourChannelValue);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"gray\", {\n /**\n * Gets or sets `Gray` channel value.\n * @private\n */\n get: function () {\n return ((((this.redColor + this.greenColor) + this.blueColor)) / (PdfColor.maxColourChannelValue * 3));\n },\n set: function (value) {\n if (value < 0) {\n this.grayColor = 0;\n }\n else if (value > 1) {\n this.grayColor = 1;\n }\n else {\n this.grayColor = value;\n }\n this.r = (this.grayColor * PdfColor.maxColourChannelValue);\n this.g = (this.grayColor * PdfColor.maxColourChannelValue);\n this.b = (this.grayColor * PdfColor.maxColourChannelValue);\n this.assignCMYK(this.redColor, this.greenColor, this.blueColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"isEmpty\", {\n /**\n * Gets whether the PDFColor `is Empty` or not.\n * @private\n */\n get: function () {\n return !this.filled;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"a\", {\n /**\n * Gets or sets `Alpha` channel value.\n * @private\n */\n get: function () {\n return this.alpha;\n },\n set: function (value) {\n if (value < 0) {\n this.alpha = 0;\n }\n else {\n // if (this.alpha !== value) {\n this.alpha = value;\n // }\n }\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n //Public methods\n /**\n * Converts `PDFColor to PDF string` representation.\n * @private\n */\n PdfColor.prototype.toString = function (colorSpace, stroke) {\n if (this.isEmpty) {\n return '';\n }\n var str = '';\n switch (colorSpace) {\n case PdfColorSpace.Rgb:\n str = this.rgbToString(stroke);\n break;\n case PdfColorSpace.GrayScale:\n str = this.grayScaleToString(stroke);\n break;\n case PdfColorSpace.Cmyk:\n str = this.cmykToString(stroke);\n break;\n }\n return str;\n };\n /**\n * Sets `GrayScale` color.\n * @private\n */\n PdfColor.prototype.grayScaleToString = function (ifStroking) {\n var gray = this.gray;\n var colour = '';\n var obj = null;\n /* tslint:disable-next-line:max-line-length */\n obj = (ifStroking) ? PdfColor.grayStringsSroke.containsKey(gray) ? PdfColor.grayStringsSroke.getValue(gray) : null : PdfColor.grayStringsFill.containsKey(gray) ? PdfColor.grayStringsFill.getValue(gray) : null;\n if (obj == null) {\n if (ifStroking) {\n colour = gray.toString() + ' G';\n PdfColor.grayStringsSroke.setValue(gray, colour);\n }\n }\n else {\n colour = obj.toString();\n }\n return colour + Operators.newLine;\n };\n /**\n * Sets `RGB` color.\n * @private\n */\n PdfColor.prototype.rgbToString = function (ifStroking) {\n var r = this.r;\n var g = this.g;\n var b = this.b;\n var key = (r << 16) + (g << 8) + b;\n if (ifStroking) {\n key += 1 << 24;\n }\n var colour = '';\n var obj = null;\n if (PdfColor.rgbStrings.containsKey(key)) {\n obj = PdfColor.rgbStrings.getValue(key);\n }\n if (obj == null) {\n var red = r / PdfColor.maxColourChannelValue;\n var green = g / PdfColor.maxColourChannelValue;\n var blue = b / PdfColor.maxColourChannelValue;\n if (ifStroking) {\n colour = red.toString() + ' ' + green.toString() + ' ' + blue.toString() + ' RG';\n }\n else {\n colour = red.toString() + ' ' + green.toString() + ' ' + blue.toString() + ' rg';\n }\n PdfColor.rgbStrings.setValue(key, colour);\n }\n else {\n colour = obj.toString();\n }\n return colour + Operators.newLine;\n };\n /***\n * Sets `CMYK` color.\n * @private\n */\n PdfColor.prototype.cmykToString = function (ifStroking) {\n var cyan = this.c;\n var magenta = this.m;\n var yellow = this.y;\n var black = this.b;\n var colour = '';\n colour = cyan.toString() + ' ' + magenta.toString() + ' ' + yellow.toString() + ' ' + black.toString() + ' K';\n return colour + Operators.newLine;\n };\n /**\n * Converts `colour to a PDF array`.\n * @private\n */\n PdfColor.prototype.toArray = function (colorSpace) {\n var array = new PdfArray();\n switch (colorSpace) {\n case PdfColorSpace.Rgb:\n array.add(new PdfNumber(this.red));\n array.add(new PdfNumber(this.green));\n array.add(new PdfNumber(this.blue));\n break;\n }\n return array;\n };\n //Fields\n /**\n * Holds `RGB colors` converted into strings.\n * @private\n */\n PdfColor.rgbStrings = new Dictionary();\n /**\n * Holds Gray scale colors converted into strings for `stroking`.\n * @private\n */\n PdfColor.grayStringsSroke = new Dictionary();\n /**\n * Holds Gray scale colors converted into strings for `filling`.\n * @private\n */\n PdfColor.grayStringsFill = new Dictionary();\n /**\n * `Max value` of color channel.\n * @private\n */\n PdfColor.maxColourChannelValue = 255.0;\n return PdfColor;\n}());\nexport { PdfColor };\n","/**\n * `PdfBrush` class provides objects used to fill the interiors of graphical shapes such as rectangles,\n * ellipses, pies, polygons, and paths.\n * @private\n */\nvar PdfBrush = /** @class */ (function () {\n /**\n * Creates instanceof `PdfBrush` class.\n * @hidden\n * @private\n */\n function PdfBrush() {\n //\n }\n //IClonable implementation\n PdfBrush.prototype.clone = function () {\n return this;\n };\n return PdfBrush;\n}());\nexport { PdfBrush };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfColor } from './../pdf-color';\nimport { PdfColorSpace } from './../enum';\nimport { PdfBrush } from './pdf-brush';\n/**\n * Represents a brush that fills any object with a solid color.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfSolidBrush = /** @class */ (function (_super) {\n __extends(PdfSolidBrush, _super);\n //Constructors\n /**\n * Initializes a new instance of the `PdfSolidBrush` class.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param color color of the brush\n */\n function PdfSolidBrush(color) {\n var _this = _super.call(this) || this;\n _this.pdfColor = color;\n return _this;\n }\n Object.defineProperty(PdfSolidBrush.prototype, \"color\", {\n //Properties\n /**\n * Gets or sets the `color` of the brush.\n * @private\n */\n get: function () {\n return this.pdfColor;\n },\n set: function (value) {\n this.pdfColor = value;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * `Monitors` the changes of the brush and modify PDF state respectively.\n * @private\n */\n PdfSolidBrush.prototype.monitorChanges = function (brush, streamWriter, getResources, saveChanges, currentColorSpace) {\n if (streamWriter == null) {\n throw new Error('ArgumentNullException:streamWriter');\n }\n var diff = false;\n if (brush == null) {\n diff = true;\n streamWriter.setColorAndSpace(this.pdfColor, currentColorSpace, false);\n return diff;\n }\n else {\n var sBrush = brush;\n diff = true;\n streamWriter.setColorAndSpace(this.pdfColor, currentColorSpace, false);\n return diff;\n }\n };\n /**\n * `Resets` the changes, which were made by the brush.\n * @private\n */\n PdfSolidBrush.prototype.resetChanges = function (streamWriter) {\n streamWriter.setColorAndSpace(new PdfColor(0, 0, 0), PdfColorSpace.Rgb, false);\n };\n return PdfSolidBrush;\n}(PdfBrush));\nexport { PdfSolidBrush };\n","/**\n * PdfPen.ts class for EJ2-PDF\n */\nimport { PdfColor } from './pdf-color';\nimport { PdfSolidBrush } from './brushes/pdf-solid-brush';\nimport { PdfDashStyle, PdfColorSpace } from './enum';\nimport { PdfBrush } from './brushes/pdf-brush';\n/**\n * `PdfPen` class defining settings for drawing operations, that determines the color,\n * width, and style of the drawing elements.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * // draw rectangle\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfPen = /** @class */ (function () {\n function PdfPen(arg1, arg2) {\n //Fields\n /**\n * Specifies the `color of the pen`.\n * @default new PdfColor()\n * @private\n */\n this.pdfColor = new PdfColor(0, 0, 0);\n /**\n * Specifies the `dash offset of the pen`.\n * @default 0\n * @private\n */\n this.dashOffsetValue = 0;\n /**\n * Specifies the `dash pattern of the pen`.\n * @default [0]\n * @private\n */\n this.penDashPattern = [0];\n /**\n * Specifies the `dash style of the pen`.\n * @default Solid\n * @private\n */\n this.pdfDashStyle = PdfDashStyle.Solid;\n /**\n * Specifies the `line cap of the pen`.\n * @default 0\n * @private\n */\n this.pdfLineCap = 0;\n /**\n * Specifies the `line join of the pen`.\n * @default 0\n * @private\n */\n this.pdfLineJoin = 0;\n /**\n * Specifies the `width of the pen`.\n * @default 1.0\n * @private\n */\n this.penWidth = 1.0;\n /**\n * Specifies the `mitter limit of the pen`.\n * @default 0.0\n * @private\n */\n this.internalMiterLimit = 0.0;\n /**\n * Stores the `colorspace` value.\n * @default Rgb\n * @private\n */\n this.colorSpace = PdfColorSpace.Rgb;\n if (arg1 instanceof PdfBrush) {\n this.setBrush(arg1);\n }\n else if (arg1 instanceof PdfColor) {\n this.color = arg1;\n }\n if (typeof arg2 === 'number') {\n this.width = arg2;\n }\n }\n Object.defineProperty(PdfPen.prototype, \"color\", {\n //Properties\n /**\n * Gets or sets the `color of the pen`.\n * @private\n */\n get: function () {\n return this.pdfColor;\n },\n set: function (value) {\n this.pdfColor = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"dashOffset\", {\n /**\n * Gets or sets the `dash offset of the pen`.\n * @private\n */\n get: function () {\n if (typeof this.dashOffsetValue === 'undefined' || this.dashOffsetValue == null) {\n return 0;\n }\n else {\n return this.dashOffsetValue;\n }\n },\n set: function (value) {\n this.dashOffsetValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"dashPattern\", {\n /**\n * Gets or sets the `dash pattern of the pen`.\n * @private\n */\n get: function () {\n return this.penDashPattern;\n },\n set: function (value) {\n this.penDashPattern = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"dashStyle\", {\n /**\n * Gets or sets the `dash style of the pen`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // set pen style\n * pen.dashStyle = PdfDashStyle.DashDot;\n * // get pen style\n * let style : PdfDashStyle = pen.dashStyle;\n * //\n * // draw rectangle\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.pdfDashStyle;\n },\n set: function (value) {\n if (this.pdfDashStyle !== value) {\n this.pdfDashStyle = value;\n switch (this.pdfDashStyle) {\n case PdfDashStyle.Custom:\n break;\n case PdfDashStyle.Dash:\n this.penDashPattern = [3, 1];\n break;\n case PdfDashStyle.Dot:\n this.penDashPattern = [1, 1];\n break;\n case PdfDashStyle.DashDot:\n this.penDashPattern = [3, 1, 1, 1];\n break;\n case PdfDashStyle.DashDotDot:\n this.penDashPattern = [3, 1, 1, 1, 1, 1];\n break;\n case PdfDashStyle.Solid:\n break;\n default:\n this.pdfDashStyle = PdfDashStyle.Solid;\n this.penDashPattern = [0];\n break;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"lineCap\", {\n /**\n * Gets or sets the `line cap of the pen`.\n * @private\n */\n get: function () {\n return this.pdfLineCap;\n },\n set: function (value) {\n this.pdfLineCap = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"lineJoin\", {\n /**\n * Gets or sets the `line join style of the pen`.\n * @private\n */\n get: function () {\n return this.pdfLineJoin;\n },\n set: function (value) {\n this.pdfLineJoin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"miterLimit\", {\n /**\n * Gets or sets the `miter limit`.\n * @private\n */\n get: function () {\n return this.internalMiterLimit;\n },\n set: function (value) {\n this.internalMiterLimit = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"width\", {\n /**\n * Gets or sets the `width of the pen`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // set pen width\n * pen.width = 2;\n * //\n * // draw rectangle\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.penWidth;\n },\n set: function (value) {\n this.penWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n //Helper\n /**\n * `Clones` this instance of PdfPen class.\n * @private\n */\n PdfPen.prototype.clone = function () {\n var pen = this;\n return pen;\n };\n /**\n * `Sets the brush`.\n * @private\n */\n PdfPen.prototype.setBrush = function (brush) {\n var sBrush = brush;\n if ((sBrush != null && sBrush instanceof PdfSolidBrush)) {\n this.color = sBrush.color;\n this.pdfBrush = sBrush;\n }\n this.color = sBrush.color;\n this.pdfBrush = sBrush;\n };\n /**\n * `Monitors the changes`.\n * @private\n */\n PdfPen.prototype.monitorChanges = function (currentPen, streamWriter, getResources, saveState, currentColorSpace, matrix) {\n var diff = false;\n saveState = true;\n if (currentPen == null) {\n diff = true;\n }\n diff = this.dashControl(currentPen, saveState, streamWriter);\n streamWriter.setLineWidth(this.width);\n streamWriter.setLineJoin(this.lineJoin);\n streamWriter.setLineCap(this.lineCap);\n var miterLimit = this.miterLimit;\n if (miterLimit > 0) {\n streamWriter.setMiterLimit(miterLimit);\n diff = true;\n }\n var brush = this.pdfBrush;\n streamWriter.setColorAndSpace(this.color, currentColorSpace, true);\n diff = true;\n return diff;\n };\n /**\n * `Controls the dash style` and behaviour of each line.\n * @private\n */\n PdfPen.prototype.dashControl = function (pen, saveState, streamWriter) {\n saveState = true;\n var lineWidth = this.width;\n var pattern = this.getPattern();\n streamWriter.setLineDashPattern(pattern, this.dashOffset * lineWidth);\n return saveState;\n };\n /**\n * `Gets the pattern` of PdfPen.\n * @private\n */\n PdfPen.prototype.getPattern = function () {\n var pattern = this.dashPattern;\n for (var i = 0; i < pattern.length; ++i) {\n pattern[i] *= this.width;\n }\n return pattern;\n };\n return PdfPen;\n}());\nexport { PdfPen };\n","/**\n * PdfStringFormat.ts class for EJ2-PDF\n */\nimport { PdfVerticalAlignment } from './../../graphics/enum';\nimport { PdfSubSuperScript, PdfWordWrapType } from './../../graphics/fonts/enum';\n/**\n * `PdfStringFormat` class represents the text layout information on PDF.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set the text alignment\n * stringFormat.alignment = PdfTextAlignment.Center;\n * // set the vertical alignment\n * stringFormat.lineAlignment = PdfVerticalAlignment.Middle;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfStringFormat = /** @class */ (function () {\n function PdfStringFormat(arg1, arg2) {\n /**\n * The `scaling factor` of the text being drawn.\n * @private\n */\n this.scalingFactor = 100.0;\n /**\n * Indicates text `wrapping` type.\n * @private\n */\n this.wordWrapType = PdfWordWrapType.Word;\n this.internalLineLimit = true;\n this.wordWrapType = PdfWordWrapType.Word;\n if ((typeof arg1 !== 'undefined') && (typeof arg1 !== 'string')) {\n this.textAlignment = arg1;\n }\n if (typeof arg2 !== 'undefined') {\n this.verticalAlignment = arg2;\n }\n }\n Object.defineProperty(PdfStringFormat.prototype, \"alignment\", {\n //Properties\n /**\n * Gets or sets the `horizontal` text alignment\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set the text alignment\n * stringFormat.alignment = PdfTextAlignment.Center;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.textAlignment;\n },\n set: function (value) {\n this.textAlignment = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"textDirection\", {\n get: function () {\n return this.direction;\n },\n set: function (value) {\n this.direction = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"lineAlignment\", {\n /**\n * Gets or sets the `vertical` text alignment.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set the vertical alignment\n * stringFormat.lineAlignment = PdfVerticalAlignment.Middle;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this.verticalAlignment === 'undefined' || this.verticalAlignment == null) {\n return PdfVerticalAlignment.Top;\n }\n else {\n return this.verticalAlignment;\n }\n },\n set: function (value) {\n this.verticalAlignment = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"rightToLeft\", {\n /**\n * Gets or sets the value that indicates text `direction` mode.\n * @private\n */\n get: function () {\n if (typeof this.isRightToLeft === 'undefined' || this.isRightToLeft == null) {\n return false;\n }\n else {\n return this.isRightToLeft;\n }\n },\n set: function (value) {\n this.isRightToLeft = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"characterSpacing\", {\n /**\n * Gets or sets value that indicates a `size` among the characters in the text.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set character spacing\n * stringFormat.characterSpacing = 10;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this.internalCharacterSpacing === 'undefined' || this.internalCharacterSpacing == null) {\n return 0;\n }\n else {\n return this.internalCharacterSpacing;\n }\n },\n set: function (value) {\n this.internalCharacterSpacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"wordSpacing\", {\n /**\n * Gets or sets value that indicates a `size` among the words in the text.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set word spacing\n * stringFormat.wordSpacing = 10;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this.internalWordSpacing === 'undefined' || this.internalWordSpacing == null) {\n return 0;\n }\n else {\n return this.internalWordSpacing;\n }\n },\n set: function (value) {\n this.internalWordSpacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"lineSpacing\", {\n /**\n * Gets or sets value that indicates the `vertical distance` between the baselines of adjacent lines of text.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // set string\n * let text : string = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor\n * incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitati';\n * // set rectangle bounds\n * let rectangle : RectangleF = new RectangleF({x : 0, y : 0}, {width : 300, height : 100})\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set line spacing\n * stringFormat.lineSpacing = 10;\n * //\n * // draw the text\n * page1.graphics.drawString(text, font, blackBrush, rectangle, stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this.leading === 'undefined' || this.leading == null) {\n return 0;\n }\n else {\n return this.leading;\n }\n },\n set: function (value) {\n this.leading = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"clipPath\", {\n /**\n * Gets or sets a value indicating whether the text is `clipped` or not.\n * @private\n */\n get: function () {\n if (typeof this.clip === 'undefined' || this.clip == null) {\n return false;\n }\n else {\n return this.clip;\n }\n },\n set: function (value) {\n this.clip = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"subSuperScript\", {\n /**\n * Gets or sets value indicating whether the text is in `subscript or superscript` mode.\n * @private\n */\n get: function () {\n if (typeof this.pdfSubSuperScript === 'undefined' || this.pdfSubSuperScript == null) {\n return PdfSubSuperScript.None;\n }\n else {\n return this.pdfSubSuperScript;\n }\n },\n set: function (value) {\n this.pdfSubSuperScript = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"paragraphIndent\", {\n /**\n * Gets or sets the `indent` of the first line in the paragraph.\n * @private\n */\n get: function () {\n if (typeof this.internalParagraphIndent === 'undefined' || this.internalParagraphIndent == null) {\n return 0;\n }\n else {\n return this.internalParagraphIndent;\n }\n },\n set: function (value) {\n this.internalParagraphIndent = value;\n this.firstLineIndent = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"lineLimit\", {\n /**\n * Gets or sets a value indicating whether [`line limit`].\n * @private\n */\n get: function () {\n return this.internalLineLimit;\n },\n set: function (value) {\n this.internalLineLimit = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"measureTrailingSpaces\", {\n /**\n * Gets or sets a value indicating whether [`measure trailing spaces`].\n * @private\n */\n get: function () {\n if (typeof this.trailingSpaces === 'undefined' || this.trailingSpaces == null) {\n return false;\n }\n else {\n return this.trailingSpaces;\n }\n },\n set: function (value) {\n this.trailingSpaces = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"noClip\", {\n /**\n * Gets or sets a value indicating whether [`no clip`].\n * @private\n */\n get: function () {\n if (typeof this.isNoClip === 'undefined' || this.isNoClip == null) {\n return false;\n }\n else {\n return this.isNoClip;\n }\n },\n set: function (value) {\n this.isNoClip = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"wordWrap\", {\n /**\n * Gets or sets value indicating type of the text `wrapping`.\n * @private\n */\n get: function () {\n // if (typeof this.wrapType === 'undefined' || this.wrapType == null) {\n // return PdfWordWrapType.Word;\n // } else {\n return this.wordWrapType;\n // }\n },\n set: function (value) {\n this.wordWrapType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"horizontalScalingFactor\", {\n /**\n * Gets or sets the `scaling factor`.\n * @private\n */\n get: function () {\n // if (typeof this.scalingFactor === 'undefined' || this.scalingFactor == null) {\n // return 100;\n // } else {\n return this.scalingFactor;\n // }\n },\n set: function (value) {\n if (value <= 0) {\n throw new Error('ArgumentOutOfRangeException:The scaling factor cant be less of equal to zero, ScalingFactor');\n }\n this.scalingFactor = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"firstLineIndent\", {\n /**\n * Gets or sets the `indent` of the first line in the text.\n * @private\n */\n get: function () {\n if (typeof this.initialLineIndent === 'undefined' || this.initialLineIndent == null) {\n return 0;\n }\n else {\n return this.initialLineIndent;\n }\n },\n set: function (value) {\n this.initialLineIndent = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Clones` the object.\n * @private\n */\n //IClonable implementation\n PdfStringFormat.prototype.clone = function () {\n var format = this;\n return format;\n };\n return PdfStringFormat;\n}());\nexport { PdfStringFormat };\n","/**\n * StringTokenizer.ts class for EJ2-PDF\n * Utility class for working with strings.\n * @private\n */\nvar StringTokenizer = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `StringTokenizer` class.\n * @private\n */\n function StringTokenizer(textValue) {\n /**\n * Current `position`.\n * @private\n */\n this.currentPosition = 0;\n if (textValue == null) {\n throw new Error('ArgumentNullException:text');\n }\n this.text = textValue;\n }\n Object.defineProperty(StringTokenizer.prototype, \"length\", {\n // Properties\n /**\n * Gets text `length`.\n * @private\n */\n get: function () {\n return this.text.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(StringTokenizer.prototype, \"end\", {\n get: function () {\n return (this.currentPosition === this.text.length);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(StringTokenizer.prototype, \"position\", {\n /**\n * Gets or sets the position.\n * @private\n */\n get: function () {\n return this.currentPosition;\n },\n set: function (value) {\n this.currentPosition = value;\n },\n enumerable: true,\n configurable: true\n });\n StringTokenizer.getCharsCount = function (text, symbols) {\n if (typeof symbols === 'string') {\n if (text == null) {\n throw new Error('ArgumentNullException:wholeText');\n }\n var numSymbols = 0;\n var curIndex = 0;\n for (;;) {\n curIndex = text.indexOf(symbols, curIndex);\n if (curIndex === -1) {\n break;\n }\n else {\n numSymbols++;\n curIndex++;\n }\n }\n return numSymbols;\n }\n else {\n if (text == null) {\n throw new Error('ArgumentNullException:text');\n }\n if (symbols == null) {\n throw new Error('ArgumentNullException:symbols');\n }\n var count = 0;\n for (var i = 0, len = text.length; i < len; i++) {\n var ch = text[i];\n if (this.contains(symbols, ch)) {\n count++;\n }\n }\n return count;\n }\n };\n /**\n * Reads line of the text.\n * @private\n */\n StringTokenizer.prototype.readLine = function () {\n var pos = this.currentPosition;\n while (pos < this.length) {\n var ch = this.text[pos];\n switch (ch) {\n case '\\r':\n case '\\n': {\n var text = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos + 1;\n if (((ch === '\\r') && (this.currentPosition < this.length)) && (this.text[this.currentPosition] === '\\n')) {\n this.currentPosition++;\n }\n return text;\n }\n }\n pos++;\n }\n // The remaining text.\n if (pos > this.currentPosition) {\n var text2 = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos;\n return text2;\n }\n return null;\n };\n /**\n * Reads line of the text.\n * @private\n */\n StringTokenizer.prototype.peekLine = function () {\n var pos = this.currentPosition;\n var line = this.readLine();\n this.currentPosition = pos;\n return line;\n };\n /**\n * Reads a word from the text.\n * @private\n */\n StringTokenizer.prototype.readWord = function () {\n var pos = this.currentPosition;\n while (pos < this.length) {\n var ch = this.text[pos];\n switch (ch) {\n case '\\r':\n case '\\n':\n var textValue = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos + 1;\n if (((ch === '\\r') && (this.currentPosition < this.length)) && (this.text[this.currentPosition] === '\\n')) {\n this.currentPosition++;\n }\n return textValue;\n case ' ':\n case '\\t': {\n if (pos === this.currentPosition) {\n pos++;\n }\n var text = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos;\n return text;\n }\n }\n pos++;\n }\n // The remaining text.\n if (pos > this.currentPosition) {\n var text2 = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos;\n return text2;\n }\n return null;\n };\n /**\n * Peeks a word from the text.\n * @private\n */\n StringTokenizer.prototype.peekWord = function () {\n var pos = this.currentPosition;\n var word = this.readWord();\n this.currentPosition = pos;\n return word;\n };\n StringTokenizer.prototype.read = function (count) {\n if (typeof count === 'undefined') {\n var ch = '0';\n if (!this.end) {\n ch = this.text[this.currentPosition];\n this.currentPosition++;\n }\n return ch;\n }\n else {\n var num = 0;\n var builder = '';\n while (!this.end && num < count) {\n var ch = this.read();\n builder = builder + ch;\n num++;\n }\n return builder;\n }\n };\n /**\n * Peeks char form the data.\n * @private\n */\n StringTokenizer.prototype.peek = function () {\n var ch = '0';\n if (!this.end) {\n ch = this.text[this.currentPosition];\n }\n return ch;\n };\n /**\n * Closes a reader.\n * @private\n */\n StringTokenizer.prototype.close = function () {\n this.text = null;\n };\n StringTokenizer.prototype.readToEnd = function () {\n var text;\n if (this.currentPosition === 0) {\n text = this.text;\n }\n else {\n text = this.text.substr(this.currentPosition, this.length - this.currentPosition);\n }\n this.currentPosition = this.length;\n return text;\n };\n //Implementation\n /**\n * Checks whether array contains a symbol.\n * @private\n */\n StringTokenizer.contains = function (array, symbol) {\n var contains = false;\n for (var i = 0; i < array.length; i++) {\n if (array[i] === symbol) {\n contains = true;\n break;\n }\n }\n return contains;\n };\n // Constants\n /**\n * `Whitespace` symbol.\n * @private\n */\n StringTokenizer.whiteSpace = ' ';\n /**\n * `tab` symbol.\n * @private\n */\n StringTokenizer.tab = '\\t';\n /**\n * Array of `spaces`.\n * @private\n */\n StringTokenizer.spaces = [StringTokenizer.whiteSpace, StringTokenizer.tab];\n /**\n * `Pattern` for WhiteSpace.\n * @private\n */\n StringTokenizer.whiteSpacePattern = '^[ \\t]+$';\n return StringTokenizer;\n}());\nexport { StringTokenizer };\n","/**\n * PdfFont.ts class for EJ2-PDF\n */\nimport { PdfFontStyle } from './enum';\nimport { SizeF } from './../../drawing/pdf-drawing';\nimport { PdfStringFormat } from './pdf-string-format';\nimport { PdfStringLayouter } from './string-layouter';\nimport { StringTokenizer } from './string-tokenizer';\n/**\n * Defines a particular format for text, including font face, size, and style attributes.\n * @private\n */\nvar PdfFont = /** @class */ (function () {\n function PdfFont(size, style) {\n /**\n * `Style` of the font.\n * @private\n */\n this.fontStyle = PdfFontStyle.Regular;\n if (typeof size === 'number' && typeof style === 'undefined') {\n this.fontSize = size;\n }\n else {\n this.fontSize = size;\n this.setStyle(style);\n }\n }\n Object.defineProperty(PdfFont.prototype, \"name\", {\n //Properties\n /**\n * Gets the face name of this Font.\n * @private\n */\n get: function () {\n return this.metrics.name;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"size\", {\n /**\n * Gets the size of this font.\n * @private\n */\n get: function () {\n return this.fontSize;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"height\", {\n /**\n * Gets the height of the font in points.\n * @private\n */\n get: function () {\n return this.metrics.getHeight(null);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"style\", {\n /**\n * Gets the style information for this font.\n * @private\n */\n get: function () {\n return this.fontStyle;\n },\n set: function (value) {\n this.fontStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"bold\", {\n /**\n * Gets a value indicating whether this `PdfFont` is `bold`.\n * @private\n */\n get: function () {\n return ((this.style & PdfFontStyle.Bold) > 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"italic\", {\n /**\n * Gets a value indicating whether this `PdfFont` has the `italic` style applied.\n * @private\n */\n get: function () {\n return ((this.style & PdfFontStyle.Italic) > 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"strikeout\", {\n /**\n * Gets a value indicating whether this `PdfFont` is `strikeout`.\n * @private\n */\n get: function () {\n return ((this.style & PdfFontStyle.Strikeout) > 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"underline\", {\n /**\n * Gets a value indicating whether this `PdfFont` is `underline`.\n * @private\n */\n get: function () {\n return ((this.style & PdfFontStyle.Underline) > 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"metrics\", {\n /**\n * Gets or sets the `metrics` for this font.\n * @private\n */\n get: function () {\n return this.fontMetrics;\n },\n set: function (value) {\n this.fontMetrics = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"element\", {\n // /**\n // * Gets and Sets the font `internals`.\n // * @private\n // */\n // public get fontInternal() : IPdfPrimitive {\n // return this.pdfFontInternals;\n // }\n // public set fontInternal(value : IPdfPrimitive) {\n // this.pdfFontInternals = value;\n // }\n //IPdfWrapper Members\n /**\n * Gets the `element` representing the font.\n * @private\n */\n get: function () {\n return this.pdfFontInternals;\n },\n enumerable: true,\n configurable: true\n });\n PdfFont.prototype.measureString = function (text, arg2, arg3, arg4, arg5) {\n if (typeof text === 'string' && typeof arg2 === 'undefined') {\n return this.measureString(text, null);\n }\n else if (typeof text === 'string' && (arg2 instanceof PdfStringFormat || arg2 == null) && typeof arg3 === 'undefined' && typeof arg4 === 'undefined') {\n var temparg2 = arg2;\n var charactersFitted = 0;\n var linesFilled = 0;\n return this.measureString(text, temparg2, charactersFitted, linesFilled);\n }\n else if (typeof text === 'string' && (arg2 instanceof PdfStringFormat || arg2 == null) && typeof arg3 === 'number' && typeof arg4 === 'number') {\n var temparg2 = arg2;\n return this.measureString(text, 0, temparg2, arg3, arg4);\n // } else if (typeof text === 'string' && typeof arg2 === 'number' && typeof arg3 === 'undefined') {\n // return this.measureString(text, arg2, null);\n // } else if (typeof text === 'string' && typeof arg2 === 'number' && (arg3 instanceof PdfStringFormat || arg3 == null) && typeof arg4 === 'undefined' && typeof arg5 === 'undefined') {\n // let temparg3 : PdfStringFormat = arg3 as PdfStringFormat;\n // let charactersFitted : number = 0;\n // let linesFilled : number = 0;\n // return this.measureString(text, arg2, temparg3, charactersFitted, linesFilled);\n }\n else if (typeof text === 'string' && typeof arg2 === 'number' && (arg3 instanceof PdfStringFormat || arg3 == null) && typeof arg4 === 'number' && typeof arg5 === 'number') {\n var layoutArea = new SizeF(arg2, 0);\n var temparg3 = arg3;\n return this.measureString(text, layoutArea, temparg3, arg4, arg5);\n // } else if (typeof text === 'string' && arg2 instanceof SizeF && typeof arg3 === 'undefined') {\n // return this.measureString(text, arg2, null);\n // } else if (typeof text === 'string' && arg2 instanceof SizeF && (arg3 instanceof PdfStringFormat || arg3 == null) && typeof arg4 === 'undefined' && typeof arg5 === 'undefined') {\n // let temparg3 : PdfStringFormat = arg3 as PdfStringFormat;\n // let charactersFitted : number = 0;\n // let linesFilled : number = 0;\n // return this.measureString(text, arg2, temparg3, charactersFitted, linesFilled);\n }\n else {\n if (text == null) {\n throw Error(\"ArgumentNullException(\\\"text\\\")\");\n }\n var temparg2 = arg2;\n var temparg3 = arg3;\n var layouter = new PdfStringLayouter();\n var result = layouter.layout(text, this, temparg3, temparg2, false, new SizeF(0, 0));\n // arg4 = (result.Remainder == null) ? text.length : text.length - result.Remainder.length;\n arg4 = text.length;\n arg5 = (result.empty) ? 0 : result.lines.length;\n return result.actualSize;\n }\n };\n /* tslint:enable */\n //IPdfCache Members\n /**\n * `Checks` whether the object is similar to another object.\n * @private\n */\n PdfFont.prototype.equalsTo = function (obj) {\n var result = this.equalsToFont(obj);\n return result;\n };\n /**\n * Returns `internals` of the object.\n * @private\n */\n PdfFont.prototype.getInternals = function () {\n return this.pdfFontInternals;\n };\n /**\n * Sets `internals` to the object.\n * @private\n */\n PdfFont.prototype.setInternals = function (internals) {\n if (internals == null) {\n throw new Error('ArgumentNullException:internals');\n }\n this.pdfFontInternals = internals;\n };\n /**\n * Sets the `style` of the font.\n * @private\n */\n PdfFont.prototype.setStyle = function (style) {\n this.fontStyle = style;\n };\n /**\n * Applies `settings` to the default line width.\n * @private\n */\n PdfFont.prototype.applyFormatSettings = function (line, format, width) {\n // if (line == null) {\n // throw new Error(`ArgumentNullException:line`);\n // }\n var realWidth = width;\n if (format != null && width > 0) {\n // Space among characters is not default.\n if (format.characterSpacing !== 0) {\n realWidth += (line.length - 1) * format.characterSpacing;\n }\n // Space among words is not default.\n if (format.wordSpacing !== 0) {\n var symbols = StringTokenizer.spaces;\n var whitespacesCount = StringTokenizer.getCharsCount(line, symbols);\n realWidth += whitespacesCount * format.wordSpacing;\n }\n }\n return realWidth;\n };\n //Constants\n /**\n * `Multiplier` of the symbol width.\n * @default 0.001\n * @private\n */\n PdfFont.charSizeMultiplier = 0.001;\n /**\n * `Synchronization` object.\n * @private\n */\n PdfFont.syncObject = new Object();\n return PdfFont;\n}());\nexport { PdfFont };\n","/**\n * public Enum for `PdfLayoutType`.\n * @private\n */\nexport var PdfLayoutType;\n(function (PdfLayoutType) {\n /**\n * Specifies the type of `Paginate`.\n * @private\n */\n PdfLayoutType[PdfLayoutType[\"Paginate\"] = 0] = \"Paginate\";\n /**\n * Specifies the type of `OnePage`.\n * @private\n */\n PdfLayoutType[PdfLayoutType[\"OnePage\"] = 1] = \"OnePage\";\n})(PdfLayoutType || (PdfLayoutType = {}));\n/**\n * public Enum for `PdfLayoutBreakType`.\n * @private\n */\nexport var PdfLayoutBreakType;\n(function (PdfLayoutBreakType) {\n /**\n * Specifies the type of `FitPage`.\n * @private\n */\n PdfLayoutBreakType[PdfLayoutBreakType[\"FitPage\"] = 0] = \"FitPage\";\n /**\n * Specifies the type of `FitElement`.\n * @private\n */\n PdfLayoutBreakType[PdfLayoutBreakType[\"FitElement\"] = 1] = \"FitElement\";\n /**\n * Specifies the type of `FitColumnsToPage`.\n * @private\n */\n PdfLayoutBreakType[PdfLayoutBreakType[\"FitColumnsToPage\"] = 2] = \"FitColumnsToPage\";\n})(PdfLayoutBreakType || (PdfLayoutBreakType = {}));\nexport var PathPointType;\n(function (PathPointType) {\n /**\n * Specifies the path point type of `Start`.\n * @private\n */\n PathPointType[PathPointType[\"Start\"] = 0] = \"Start\";\n /**\n * Specifies the path point type of `Line`.\n * @private\n */\n PathPointType[PathPointType[\"Line\"] = 1] = \"Line\";\n /**\n * Specifies the path point type of `Bezier3`.\n * @private\n */\n PathPointType[PathPointType[\"Bezier3\"] = 3] = \"Bezier3\";\n /**\n * Specifies the path point type of `Bezier`.\n * @private\n */\n PathPointType[PathPointType[\"Bezier\"] = 3] = \"Bezier\";\n /**\n * Specifies the path point type of `PathTypeMask`.\n * @private\n */\n PathPointType[PathPointType[\"PathTypeMask\"] = 7] = \"PathTypeMask\";\n /**\n * Specifies the path point type of `DashMode`.\n * @private\n */\n PathPointType[PathPointType[\"DashMode\"] = 16] = \"DashMode\";\n /**\n * Specifies the path point type of `PathMarker`.\n * @private\n */\n PathPointType[PathPointType[\"PathMarker\"] = 32] = \"PathMarker\";\n /**\n * Specifies the path point type of `CloseSubpath`.\n * @private\n */\n PathPointType[PathPointType[\"CloseSubpath\"] = 128] = \"CloseSubpath\";\n})(PathPointType || (PathPointType = {}));\n","/**\n * PdfTransformationMatrix.ts class for EJ2-PDF\n */\nimport { PointF } from './../drawing/pdf-drawing';\nimport { PdfNumber } from './../primitives/pdf-number';\n/**\n * Class for representing Root `transformation matrix`.\n */\nvar PdfTransformationMatrix = /** @class */ (function () {\n function PdfTransformationMatrix(value) {\n /**\n * Value for `angle converting`.\n * @default 180.0 / Math.PI\n * @private\n */\n this.radDegFactor = 180.0 / Math.PI;\n if (typeof value === 'undefined') {\n this.transformationMatrix = new Matrix(1.00, 0.00, 0.00, 1.00, 0.00, 0.00);\n }\n else {\n this.transformationMatrix = new Matrix(1.00, 0.00, 0.00, -1.00, 0.00, 0.00);\n }\n }\n Object.defineProperty(PdfTransformationMatrix.prototype, \"matrix\", {\n // Properties\n /**\n * Gets or sets the `internal matrix object`.\n * @private\n */\n get: function () {\n return this.transformationMatrix;\n },\n set: function (value) {\n this.transformationMatrix = value;\n },\n enumerable: true,\n configurable: true\n });\n // Public methods\n /**\n * `Translates` coordinates by specified coordinates.\n * @private\n */\n PdfTransformationMatrix.prototype.translate = function (offsetX, offsetY) {\n this.transformationMatrix.translate(offsetX, offsetY);\n };\n /**\n * `Scales` coordinates by specified coordinates.\n * @private\n */\n PdfTransformationMatrix.prototype.scale = function (scaleX, scaleY) {\n this.transformationMatrix.elements[0] = scaleX;\n this.transformationMatrix.elements[3] = scaleY;\n };\n /**\n * `Rotates` coordinate system in counterclockwise direction.\n * @private\n */\n PdfTransformationMatrix.prototype.rotate = function (angle) {\n //Convert from degree to radian \n angle = (angle * Math.PI) / 180;\n //Rotation \n this.transformationMatrix.elements[0] = Math.cos(angle);\n this.transformationMatrix.elements[1] = Math.sin(angle);\n this.transformationMatrix.elements[2] = -Math.sin(angle);\n this.transformationMatrix.elements[3] = Math.cos(angle);\n };\n // Overrides\n /**\n * Gets `PDF representation`.\n * @private\n */\n PdfTransformationMatrix.prototype.toString = function () {\n var builder = '';\n var whitespace = ' ';\n for (var i = 0, len = this.transformationMatrix.elements.length; i < len; i++) {\n var temp = this.matrix.elements[i];\n builder += PdfNumber.floatToString(this.transformationMatrix.elements[i]);\n builder += whitespace;\n }\n return builder;\n };\n // Implementation\n /**\n * `Multiplies` matrices (changes coordinate system.)\n * @private\n */\n PdfTransformationMatrix.prototype.multiply = function (matrix) {\n this.transformationMatrix.multiply(matrix.matrix);\n };\n /**\n * Converts `degrees to radians`.\n * @private\n */\n PdfTransformationMatrix.degreesToRadians = function (degreesX) {\n return this.degRadFactor * degreesX;\n };\n /**\n * Converts `radians to degrees`.\n * @private\n */\n PdfTransformationMatrix.prototype.radiansToDegrees = function (radians) {\n return this.radDegFactor * radians;\n };\n /**\n * `Clones` this instance of PdfTransformationMatrix.\n * @private\n */\n PdfTransformationMatrix.prototype.clone = function () {\n return this;\n };\n // Constants\n /**\n * Value for `angle converting`.\n * @default Math.PI / 180.0\n * @private\n */\n PdfTransformationMatrix.degRadFactor = Math.PI / 180.0;\n return PdfTransformationMatrix;\n}());\nexport { PdfTransformationMatrix };\nvar Matrix = /** @class */ (function () {\n function Matrix(arg1, arg2, arg3, arg4, arg5, arg6) {\n if (typeof arg1 === 'undefined') {\n this.metrixElements = [];\n }\n else if (typeof arg1 === 'number') {\n this.metrixElements = [];\n this.metrixElements.push(arg1);\n this.metrixElements.push(arg2);\n this.metrixElements.push(arg3);\n this.metrixElements.push(arg4);\n this.metrixElements.push(arg5);\n this.metrixElements.push(arg6);\n }\n else {\n this.metrixElements = arg1;\n }\n }\n Object.defineProperty(Matrix.prototype, \"elements\", {\n // Properties\n /**\n * Gets the `elements`.\n * @private\n */\n get: function () {\n return this.metrixElements;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"offsetX\", {\n /**\n * Gets the off set `X`.\n * @private\n */\n get: function () {\n return this.metrixElements[4];\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"offsetY\", {\n /**\n * Gets the off set `Y`.\n * @private\n */\n get: function () {\n return this.metrixElements[5];\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Translates` coordinates by specified coordinates.\n * @private\n */\n Matrix.prototype.translate = function (offsetX, offsetY) {\n this.metrixElements[4] = offsetX;\n this.metrixElements[5] = offsetY;\n };\n /**\n * `Translates` the specified offset X.\n * @private\n */\n Matrix.prototype.transform = function (point) {\n var x = point.x;\n var y = point.y;\n var x2 = x * this.elements[0] + y * this.elements[2] + this.offsetX;\n var y2 = x * this.elements[1] + y * this.elements[3] + this.offsetY;\n return new PointF(x2, y2);\n };\n /**\n * `Multiplies matrices` (changes coordinate system.)\n * @private\n */\n Matrix.prototype.multiply = function (matrix) {\n var tempMatrix = [];\n tempMatrix.push(this.elements[0] * matrix.elements[0] + this.elements[1] * matrix.elements[2]);\n tempMatrix[1] = (this.elements[0] * matrix.elements[1] + this.elements[1] * matrix.elements[3]);\n tempMatrix[2] = (this.elements[2] * matrix.elements[0] + this.elements[3] * matrix.elements[2]);\n tempMatrix[3] = (this.elements[2] * matrix.elements[1] + this.elements[3] * matrix.elements[3]);\n tempMatrix[4] = (this.offsetX * matrix.elements[0] + this.offsetY * matrix.elements[2] + matrix.offsetX);\n tempMatrix[5] = (this.offsetX * matrix.elements[1] + this.offsetY * matrix.elements[3] + matrix.offsetY);\n for (var i = 0; i < tempMatrix.length; i++) {\n this.elements[i] = tempMatrix[i];\n }\n };\n // IDisposable Members\n /**\n * `Dispose` this instance of PdfTransformationMatrix class.\n * @private\n */\n Matrix.prototype.dispose = function () {\n this.metrixElements = null;\n };\n // ICloneable Members\n /**\n * `Clones` this instance of PdfTransformationMatrix class.\n * @private\n */\n Matrix.prototype.clone = function () {\n var m = new Matrix(this.metrixElements);\n return m;\n };\n return Matrix;\n}());\nexport { Matrix };\n","/**\n * `constants.ts` class for EJ2-PDF\n * @private\n */\nvar ProcedureSets = /** @class */ (function () {\n function ProcedureSets() {\n /**\n * Specifies the `PDF` procedure set.\n * @private\n */\n this.pdf = 'PDF';\n /**\n * Specifies the `Text` procedure set.\n * @private\n */\n this.text = 'Text';\n /**\n * Specifies the `ImageB` procedure set.\n * @private\n */\n this.imageB = 'ImageB';\n /**\n * Specifies the `ImageC` procedure set.\n * @private\n */\n this.imageC = 'ImageC';\n /**\n * Specifies the `ImageI` procedure set.\n * @private\n */\n this.imageI = 'ImageI';\n }\n return ProcedureSets;\n}());\nexport { ProcedureSets };\n","/**\n * Dictionary class\n * @private\n * @hidden\n */\nvar TemporaryDictionary = /** @class */ (function () {\n function TemporaryDictionary() {\n /**\n * @hidden\n * @private\n */\n this.mKeys = [];\n /**\n * @hidden\n * @private\n */\n this.mValues = [];\n }\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.size = function () {\n return this.mKeys.length;\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.add = function (key, value) {\n if (key === undefined || key === null || value === undefined || value === null) {\n throw new ReferenceError('Provided key or value is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n this.mKeys.push(key);\n this.mValues.push(value);\n return 1;\n }\n else {\n throw new RangeError('An item with the same key has already been added.');\n }\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.keys = function () {\n return this.mKeys;\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.values = function () {\n return this.mValues;\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.getValue = function (key) {\n if (key === undefined || key === null) {\n throw new ReferenceError('Provided key is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n throw new RangeError('No item with the specified key has been added.');\n }\n else {\n return this.mValues[index];\n }\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.setValue = function (key, value) {\n if (key === undefined || key === null) {\n throw new ReferenceError('Provided key is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n this.mKeys.push(key);\n this.mValues.push(value);\n }\n else {\n this.mValues[index] = value;\n }\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.remove = function (key) {\n if (key === undefined || key === null) {\n throw new ReferenceError('Provided key is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n throw new RangeError('No item with the specified key has been added.');\n }\n else {\n this.mKeys.splice(index, 1);\n this.mValues.splice(index, 1);\n return true;\n }\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.containsKey = function (key) {\n if (key === undefined || key === null) {\n throw new ReferenceError('Provided key is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n return false;\n }\n return true;\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.clear = function () {\n this.mKeys = [];\n this.mValues = [];\n };\n return TemporaryDictionary;\n}());\nexport { TemporaryDictionary };\n","import { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PdfName } from './../primitives/pdf-name';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\n/**\n * Represents a simple `transparency`.\n * @private\n */\nvar PdfTransparency = /** @class */ (function () {\n // Properties\n // /**\n // * Gets the `stroke` operation alpha value.\n // * @private\n // */\n // public get stroke() : number {\n // let result : number = this.getNumber(this.dictionaryProperties.CA);\n // return result;\n // }\n // /**\n // * Gets the `fill` operation alpha value.\n // * @private\n // */\n // public get fill() : number {\n // let result : number = this.getNumber(this.dictionaryProperties.ca);\n // return result;\n // }\n // /**\n // * Gets the `blend mode`.\n // * @private\n // */\n // public get mode() : PdfBlendMode {\n // let result : string = this.getName(this.dictionaryProperties.ca);\n // return PdfBlendMode.Normal;\n // }\n // Constructors\n /**\n * Initializes a new instance of the `Transparency` class.\n * @private\n */\n function PdfTransparency(stroke, fill, mode) {\n // Fields\n /**\n * Internal variable to store `dictionary`.\n * @default new PdfDictionary()\n * @private\n */\n this.dictionary = new PdfDictionary();\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @default new DictionaryProperties()\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n this.dictionary.items.setValue(this.dictionaryProperties.CA, new PdfNumber(stroke));\n this.dictionary.items.setValue(this.dictionaryProperties.ca, new PdfNumber(fill));\n this.dictionary.items.setValue(this.dictionaryProperties.BM, new PdfName(mode.toString()));\n }\n Object.defineProperty(PdfTransparency.prototype, \"element\", {\n // // Implementation\n // /**\n // * Gets the `number value`.\n // * @private\n // */\n // private getNumber(keyName : string) : number {\n // let result : number = 0.0;\n // let numb : PdfNumber = this.dictionary.items.getValue(keyName) as PdfNumber;\n // result = numb.intValue;\n // return result;\n // }\n // /**\n // * Gets the `name value`.\n // * @private\n // */\n // private getName(keyName : string) : string {\n // let result : string = null;\n // let name : PdfName = this.dictionary.items.getValue(keyName) as PdfName;\n // result = name.value;\n // return result;\n // }\n // IPdfWrapper Members\n /**\n * Gets the `element`.\n * @private\n */\n get: function () {\n return this.dictionary;\n },\n enumerable: true,\n configurable: true\n });\n return PdfTransparency;\n}());\nexport { PdfTransparency };\n","/**\n * Represent a `collection of automatic fields information`.\n * @private\n */\nvar PdfAutomaticFieldInfoCollection = /** @class */ (function () {\n /**\n * Initializes a new instance of the 'PdfPageNumberFieldInfoCollection' class.\n * @private\n */\n function PdfAutomaticFieldInfoCollection() {\n /**\n * Internal variable to store instance of `pageNumberFields` class.\n * @private\n */\n this.automaticFieldsInformation = [];\n //\n }\n Object.defineProperty(PdfAutomaticFieldInfoCollection.prototype, \"automaticFields\", {\n /**\n * Gets the `page number fields collection`.\n * @private\n */\n get: function () {\n return this.automaticFieldsInformation;\n },\n enumerable: true,\n configurable: true\n });\n // Public methods\n /// Adds the specified field info.\n /**\n * Add page number field into collection.\n * @private\n */\n PdfAutomaticFieldInfoCollection.prototype.add = function (fieldInfo) {\n return this.automaticFields.push(fieldInfo);\n };\n return PdfAutomaticFieldInfoCollection;\n}());\nexport { PdfAutomaticFieldInfoCollection };\n","/**\n * Represents a base class for all page graphics elements.\n */\nvar PdfGraphicsElement = /** @class */ (function () {\n // Constructors\n function PdfGraphicsElement() {\n //\n }\n /**\n * `Draws` the page number field.\n * @public\n */\n PdfGraphicsElement.prototype.drawHelper = function (graphics, x, y) {\n var bNeedSave = (x !== 0 || y !== 0);\n var gState = null;\n // Translate co-ordinates.\n if (bNeedSave) {\n // Save state.\n gState = graphics.save();\n graphics.translateTransform(x, y);\n }\n this.drawInternal(graphics);\n if (bNeedSave) {\n // Restore state.\n graphics.restore(gState);\n }\n };\n return PdfGraphicsElement;\n}());\nexport { PdfGraphicsElement };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfAutomaticField.ts class for EJ2-PDF\n */\nimport { RectangleF, SizeF, PointF } from './../../drawing/pdf-drawing';\nimport { PdfSolidBrush } from './../../graphics/brushes/pdf-solid-brush';\nimport { PdfColor } from './../../graphics/pdf-color';\nimport { PdfDocument } from './../pdf-document';\nimport { PdfGraphicsElement } from './../../graphics/figures/base/graphics-element';\nimport { PdfAutomaticFieldInfo } from './automatic-field-info';\n/**\n * Represents a fields which is calculated before the document saves.\n */\nvar PdfAutomaticField = /** @class */ (function (_super) {\n __extends(PdfAutomaticField, _super);\n // Constructors\n function PdfAutomaticField() {\n var _this = _super.call(this) || this;\n // Fields\n _this.internalBounds = new RectangleF(0, 0, 0, 0);\n _this.internalTemplateSize = new SizeF(0, 0);\n return _this;\n }\n Object.defineProperty(PdfAutomaticField.prototype, \"bounds\", {\n // Properties\n get: function () {\n return this.internalBounds;\n },\n set: function (value) {\n this.internalBounds = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"size\", {\n get: function () {\n return new SizeF(this.bounds.width, this.bounds.height);\n },\n set: function (value) {\n this.bounds.width = value.width;\n this.bounds.height = value.height;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"location\", {\n get: function () {\n return new PointF(this.bounds.x, this.bounds.y);\n },\n set: function (value) {\n this.bounds.x = value.x;\n this.bounds.y = value.y;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"font\", {\n get: function () {\n return this.internalFont;\n },\n set: function (value) {\n this.internalFont = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"brush\", {\n get: function () {\n return this.internalBrush;\n },\n set: function (value) {\n this.internalBrush = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"pen\", {\n get: function () {\n return this.internalPen;\n },\n set: function (value) {\n this.internalPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"stringFormat\", {\n get: function () {\n return this.internalStringFormat;\n },\n set: function (value) {\n this.internalStringFormat = value;\n },\n enumerable: true,\n configurable: true\n });\n PdfAutomaticField.prototype.performDrawHelper = function (graphics, location, scalingX, scalingY) {\n if (this.bounds.height === 0 || this.bounds.width === 0) {\n var text = this.getValue(graphics);\n this.internalTemplateSize = this.getFont().measureString(text, this.size, this.stringFormat);\n }\n };\n PdfAutomaticField.prototype.draw = function (arg1, arg2, arg3) {\n if (typeof arg2 === 'undefined') {\n var location_1 = new PointF(0, 0);\n this.draw(arg1, location_1);\n }\n else if (arg2 instanceof PointF) {\n this.draw(arg1, arg2.x, arg2.y);\n }\n else {\n this.drawHelper(arg1, arg2, arg3);\n var info = new PdfAutomaticFieldInfo(this, new PointF(arg2, arg3));\n arg1.automaticFields.add(info);\n }\n };\n PdfAutomaticField.prototype.getSize = function () {\n if (this.bounds.height === 0 || this.bounds.width === 0) {\n return this.internalTemplateSize;\n }\n else {\n return this.size;\n }\n };\n PdfAutomaticField.prototype.drawInternal = function (graphics) {\n //\n };\n /* tslint:disable */\n PdfAutomaticField.prototype.getBrush = function () {\n return (typeof this.internalBrush === 'undefined' || this.internalBrush == null) ? new PdfSolidBrush(new PdfColor(0, 0, 0)) : this.internalBrush;\n };\n PdfAutomaticField.prototype.getFont = function () {\n return (typeof this.internalFont === 'undefined' || this.internalFont == null) ? PdfDocument.defaultFont : this.internalFont;\n };\n /* tslint:enable */\n PdfAutomaticField.prototype.getPageFromGraphics = function (graphics) {\n if (typeof graphics.page !== 'undefined' && graphics.page !== null) {\n var page = graphics.page;\n return page;\n }\n else {\n var page = graphics.currentPage;\n return page;\n }\n };\n return PdfAutomaticField;\n}(PdfGraphicsElement));\nexport { PdfAutomaticField };\n","/**\n * PdfAutomaticFieldInfo.ts class for EJ2-PDF\n * @private\n */\nimport { PointF } from './../../drawing/pdf-drawing';\nimport { PdfAutomaticField } from './automatic-field';\n/**\n * Represents information about the automatic field.\n * @private\n */\nvar PdfAutomaticFieldInfo = /** @class */ (function () {\n function PdfAutomaticFieldInfo(field, location, scaleX, scaleY) {\n // Fields\n /**\n * Internal variable to store location of the field.\n * @private\n */\n this.pageNumberFieldLocation = new PointF();\n /**\n * Internal variable to store field.\n * @private\n */\n this.pageNumberField = null;\n /**\n * Internal variable to store x scaling factor.\n * @private\n */\n this.scaleX = 1;\n /**\n * Internal variable to store y scaling factor.\n * @private\n */\n this.scaleY = 1;\n if (typeof location === 'undefined' && field instanceof PdfAutomaticFieldInfo) {\n this.pageNumberField = field.field;\n this.pageNumberFieldLocation = field.location;\n this.scaleX = field.scalingX;\n this.scaleY = field.scalingY;\n }\n else if (typeof scaleX === 'undefined' && location instanceof PointF && field instanceof PdfAutomaticField) {\n this.pageNumberField = field;\n this.pageNumberFieldLocation = location;\n }\n else {\n this.pageNumberField = field;\n this.pageNumberFieldLocation = location;\n this.scaleX = scaleX;\n this.scaleY = scaleY;\n }\n }\n Object.defineProperty(PdfAutomaticFieldInfo.prototype, \"location\", {\n /* tslint:enable */\n // Properties\n /**\n * Gets or sets the location.\n * @private\n */\n get: function () {\n return this.pageNumberFieldLocation;\n },\n set: function (value) {\n this.pageNumberFieldLocation = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticFieldInfo.prototype, \"field\", {\n /**\n * Gets or sets the field.\n * @private\n */\n get: function () {\n return this.pageNumberField;\n },\n set: function (value) {\n this.pageNumberField = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticFieldInfo.prototype, \"scalingX\", {\n /**\n * Gets or sets the scaling X factor.\n * @private\n */\n get: function () {\n return this.scaleX;\n },\n set: function (value) {\n this.scaleX = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticFieldInfo.prototype, \"scalingY\", {\n /**\n * Gets or sets the scaling Y factor.\n * @private\n */\n get: function () {\n return this.scaleY;\n },\n set: function (value) {\n this.scaleY = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfAutomaticFieldInfo;\n}());\nexport { PdfAutomaticFieldInfo };\n","/**\n * ByteArray class\n * Used to keep information about image stream as byte array.\n * @private\n */\nvar ByteArray = /** @class */ (function () {\n /**\n * Initialize the new instance for `byte-array` class\n * @hidden\n * @private\n */\n function ByteArray(length) {\n /**\n * Current stream `position`.\n * @default 0\n * @private\n */\n this.mPosition = 0;\n this.buffer = new Uint8Array(length);\n this.dataView = new DataView(this.buffer.buffer);\n }\n Object.defineProperty(ByteArray.prototype, \"position\", {\n /**\n * Gets and Sets a current `position` of byte array.\n * @hidden\n * @private\n */\n get: function () {\n return this.mPosition;\n },\n set: function (value) {\n this.mPosition = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Read` from current stream position.\n * @default 0\n * @hidden\n * @private\n */\n ByteArray.prototype.read = function (buffer, offset, count) {\n for (var index = offset; index < count; index++) {\n var position = this.position;\n buffer.buffer[index] = this.readByte(position);\n this.position++;\n }\n };\n /**\n * @hidden\n */\n ByteArray.prototype.getBuffer = function (index) {\n return this.buffer[index];\n };\n /**\n * @hidden\n */\n ByteArray.prototype.writeFromBase64String = function (base64) {\n var arr = this.encodedString(base64);\n this.buffer = arr;\n };\n /**\n * @hidden\n */\n ByteArray.prototype.encodedString = function (input) {\n var keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var chr1;\n var chr2;\n var chr3;\n var enc1;\n var enc2;\n var enc3;\n var enc4;\n var i = 0;\n var resultIndex = 0;\n var dataUrlPrefix = 'data:';\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, '');\n var totalLength = input.length * 3 / 4;\n if (input.charAt(input.length - 1) === keyStr.charAt(64)) {\n totalLength--;\n }\n var output = new Uint8Array(totalLength | 0);\n while (i < input.length) {\n enc1 = keyStr.indexOf(input.charAt(i++));\n enc2 = keyStr.indexOf(input.charAt(i++));\n enc3 = keyStr.indexOf(input.charAt(i++));\n enc4 = keyStr.indexOf(input.charAt(i++));\n chr1 = (enc1 << 2) | (enc2 >> 4);\n chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\n chr3 = ((enc3 & 3) << 6) | enc4;\n output[resultIndex++] = chr1;\n output[resultIndex++] = chr2;\n output[resultIndex++] = chr3;\n }\n return output;\n };\n /**\n * @hidden\n */\n ByteArray.prototype.readByte = function (offset) {\n return (this.buffer[offset]);\n };\n Object.defineProperty(ByteArray.prototype, \"internalBuffer\", {\n /**\n * @hidden\n */\n get: function () {\n return this.buffer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ByteArray.prototype, \"count\", {\n /**\n * @hidden\n */\n get: function () {\n return this.buffer.byteLength;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * 'readNextTwoBytes' stream\n * @hidden\n * @private\n */\n ByteArray.prototype.readNextTwoBytes = function (stream) {\n var data = stream.readByte(this.position);\n this.position++;\n data <<= 8;\n data |= stream.readByte(this.position);\n this.position++;\n return data;\n };\n return ByteArray;\n}());\nexport { ByteArray };\n","/**\n * TtfTableInfo.ts class for EJ2-PDF\n */\nvar TtfTableInfo = /** @class */ (function () {\n function TtfTableInfo() {\n }\n Object.defineProperty(TtfTableInfo.prototype, \"empty\", {\n //Properties\n /**\n * Gets a value indicating whether this table is empty.\n * @private\n */\n get: function () {\n var empty = (this.offset === this.length && this.length === this.checksum && this.checksum === 0);\n return empty;\n },\n enumerable: true,\n configurable: true\n });\n return TtfTableInfo;\n}());\nexport { TtfTableInfo };\n","var TtfNameTable = /** @class */ (function () {\n function TtfNameTable() {\n }\n return TtfNameTable;\n}());\nexport { TtfNameTable };\n","/**\n * TtfNameRecord.ts class for EJ2-PDF\n */\nvar TtfNameRecord = /** @class */ (function () {\n function TtfNameRecord() {\n }\n return TtfNameRecord;\n}());\nexport { TtfNameRecord };\n","/**\n * TtfHeadTable.ts class for EJ2-PDF\n */\nvar TtfHeadTable = /** @class */ (function () {\n function TtfHeadTable() {\n }\n return TtfHeadTable;\n}());\nexport { TtfHeadTable };\n","var TtfMetrics = /** @class */ (function () {\n function TtfMetrics() {\n }\n Object.defineProperty(TtfMetrics.prototype, \"isItalic\", {\n //Properties\n /**\n * Gets a value indicating whether this instance is italic.\n */\n get: function () {\n return ((this.macStyle & 2) !== 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TtfMetrics.prototype, \"isBold\", {\n /**\n * Gets a value indicating whether this instance is bold.\n */\n get: function () {\n return ((this.macStyle & 1) !== 0);\n },\n enumerable: true,\n configurable: true\n });\n return TtfMetrics;\n}());\nexport { TtfMetrics };\n","/**\n * TtfHorizontalHeaderTable.ts class for EJ2-PDF\n */\nvar TtfHorizontalHeaderTable = /** @class */ (function () {\n function TtfHorizontalHeaderTable() {\n }\n return TtfHorizontalHeaderTable;\n}());\nexport { TtfHorizontalHeaderTable };\n","/**\n * TtfOS2Table.ts class for EJ2-PDF\n * The OS/2 table consists of a set of metrics that are required by Windows and OS/2.\n */\nvar TtfOS2Table = /** @class */ (function () {\n function TtfOS2Table() {\n }\n return TtfOS2Table;\n}());\nexport { TtfOS2Table };\n","/**\n * TtfPostTable.ts class for EJ2-PDF\n */\nvar TtfPostTable = /** @class */ (function () {\n function TtfPostTable() {\n }\n return TtfPostTable;\n}());\nexport { TtfPostTable };\n","/**\n * TtfLongHorMetric.ts class for EJ2-PDF\n */\nvar TtfLongHorMetric = /** @class */ (function () {\n function TtfLongHorMetric() {\n }\n return TtfLongHorMetric;\n}());\nexport { TtfLongHorMetric };\n","/**\n * TtfCmapSubTable.ts class for EJ2-PDF\n */\nvar TtfCmapSubTable = /** @class */ (function () {\n function TtfCmapSubTable() {\n }\n return TtfCmapSubTable;\n}());\nexport { TtfCmapSubTable };\n","/**\n * TtfCmapTable.ts class for EJ2-PDF\n */\nvar TtfCmapTable = /** @class */ (function () {\n function TtfCmapTable() {\n }\n return TtfCmapTable;\n}());\nexport { TtfCmapTable };\n","/**\n * TtfGlyphInfo.ts class for EJ2-PDF\n */\nvar TtfGlyphInfo = /** @class */ (function () {\n function TtfGlyphInfo() {\n }\n Object.defineProperty(TtfGlyphInfo.prototype, \"empty\", {\n //Properties\n /**\n * Gets a value indicating whether this TtfGlyphInfo is empty.\n */\n get: function () {\n var empty = (this.index === this.width && this.width === this.charCode && this.charCode === 0);\n return empty;\n },\n enumerable: true,\n configurable: true\n });\n //IComparable implementation\n /**\n * Compares two WidthDescriptor objects.\n */\n TtfGlyphInfo.prototype.compareTo = function (obj) {\n var glyph = obj;\n return this.index - glyph.index;\n };\n return TtfGlyphInfo;\n}());\nexport { TtfGlyphInfo };\n","/**\n * TtfLocaTable.ts class for EJ2-PDF\n */\nvar TtfLocaTable = /** @class */ (function () {\n function TtfLocaTable() {\n }\n return TtfLocaTable;\n}());\nexport { TtfLocaTable };\n","/**\n * TtfAppleCmapSubTable.ts class for EJ2-PDF\n */\nvar TtfAppleCmapSubTable = /** @class */ (function () {\n function TtfAppleCmapSubTable() {\n }\n return TtfAppleCmapSubTable;\n}());\nexport { TtfAppleCmapSubTable };\n","/**\n * TtfMicrosoftCmapSubTable.ts class for EJ2-PDF\n */\nvar TtfMicrosoftCmapSubTable = /** @class */ (function () {\n function TtfMicrosoftCmapSubTable() {\n }\n return TtfMicrosoftCmapSubTable;\n}());\nexport { TtfMicrosoftCmapSubTable };\n","/**\n * TtfTrimmedCmapSubTable.ts class for EJ2-PDF\n */\nvar TtfTrimmedCmapSubTable = /** @class */ (function () {\n function TtfTrimmedCmapSubTable() {\n }\n return TtfTrimmedCmapSubTable;\n}());\nexport { TtfTrimmedCmapSubTable };\n","/**\n * TtfLocaTable.ts class for EJ2-PDF\n */\nvar TtfGlyphHeader = /** @class */ (function () {\n function TtfGlyphHeader() {\n }\n return TtfGlyphHeader;\n}());\nexport { TtfGlyphHeader };\n","/**\n * Writes data in BigEndian order.\n */\nvar BigEndianWriter = /** @class */ (function () {\n //Constructors\n /**\n * Creates a new writer.\n */\n function BigEndianWriter(capacity) {\n //Constants\n /**\n * Size of Int32 type.\n */\n this.int32Size = 4;\n /**\n * Size of Int16 type.\n */\n this.int16Size = 2;\n /**\n * Size of long type.\n */\n this.int64Size = 8;\n this.bufferLength = capacity;\n this.buffer = [];\n }\n Object.defineProperty(BigEndianWriter.prototype, \"data\", {\n //Properties\n /**\n * Gets data written to the writer.\n */\n get: function () {\n if (this.buffer.length < this.bufferLength) {\n var length_1 = this.bufferLength - this.buffer.length;\n for (var i = 0; i < length_1; i++) {\n this.buffer.push(0);\n }\n }\n return this.buffer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BigEndianWriter.prototype, \"position\", {\n /// \n /// Gets position of the internal buffer.\n /// \n get: function () {\n if (this.internalPosition === undefined || this.internalPosition === null) {\n this.internalPosition = 0;\n }\n return this.internalPosition;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Writes short value.\n */\n BigEndianWriter.prototype.writeShort = function (value) {\n var bytes = [((value & 0x0000ff00) >> 8), value & 0x000000ff];\n this.flush(bytes);\n };\n /**\n * Writes int value.\n */\n BigEndianWriter.prototype.writeInt = function (value) {\n var i1 = (value & 0xff000000) >> 24;\n i1 = i1 < 0 ? 256 + i1 : i1;\n var i2 = (value & 0x00ff0000) >> 16;\n i2 = i2 < 0 ? 256 + i2 : i2;\n var i3 = (value & 0x0000ff00) >> 8;\n i3 = i3 < 0 ? 256 + i3 : i3;\n var i4 = value & 0x000000ff;\n i4 = i4 < 0 ? 256 + i4 : i4;\n var bytes = [(value & 0xff000000) >> 24, (value & 0x00ff0000) >> 16, (value & 0x0000ff00) >> 8, value & 0x000000ff];\n this.flush(bytes);\n };\n /**\n * Writes u int value.\n */\n BigEndianWriter.prototype.writeUInt = function (value) {\n var buff = [(value & 0xff000000) >> 24, (value & 0x00ff0000) >> 16, (value & 0x0000ff00) >> 8, value & 0x000000ff];\n this.flush(buff);\n };\n /**\n * Writes string value.\n */\n BigEndianWriter.prototype.writeString = function (value) {\n if (value == null) {\n throw new Error('Argument Null Exception : value');\n }\n var bytes = [];\n for (var i = 0; i < value.length; i++) {\n bytes.push(value.charCodeAt(i));\n }\n this.flush(bytes);\n };\n /**\n * Writes byte[] value.\n */\n BigEndianWriter.prototype.writeBytes = function (value) {\n this.flush(value);\n };\n // //Implementation\n BigEndianWriter.prototype.flush = function (buff) {\n if (buff === null) {\n throw new Error('Argument Null Exception : buff');\n }\n var position = this.position;\n for (var i = 0; i < buff.length; i++) {\n this.buffer[position] = buff[i];\n position++;\n }\n this.internalPosition += buff.length;\n };\n return BigEndianWriter;\n}());\nexport { BigEndianWriter };\n","/**\n * TtfReader.ts class for EJ2-PDF\n */\nimport { TtfTableInfo } from './ttf-table-info';\nimport { Dictionary } from './../../collections/dictionary';\nimport { TtfNameTable } from './ttf-name-table';\nimport { TtfNameRecord } from './ttf-name-record';\nimport { TtfHeadTable } from './ttf-head-table';\nimport { TtfMetrics } from './ttf-metrics';\nimport { TtfHorizontalHeaderTable } from './ttf-horizontal-header-table';\nimport { TtfOS2Table } from './ttf-OS2-Table';\nimport { TtfPostTable } from './ttf-post-table';\nimport { TtfLongHorMetric } from './ttf-long-hor-metric';\nimport { TtfCmapSubTable } from './ttf-cmap-sub-table';\nimport { TtfCmapTable } from './ttf-cmap-table';\nimport { TtfGlyphInfo } from './ttf-glyph-info';\nimport { TtfLocaTable } from './ttf-loca-table';\nimport { TtfAppleCmapSubTable } from './ttf-apple-cmap-sub-table';\nimport { TtfMicrosoftCmapSubTable } from './ttf-microsoft-cmap-sub-table';\nimport { TtfTrimmedCmapSubTable } from './ttf-trimmed-cmap-sub-table';\nimport { TtfGlyphHeader } from './ttf-glyph-header';\nimport { Rectangle } from './../../drawing/pdf-drawing';\nimport { StringTokenizer } from './string-tokenizer';\nimport { TtfCmapFormat, TtfCmapEncoding, TtfPlatformID } from './enum';\nimport { TtfMicrosoftEncodingID, TtfMacintoshEncodingID, TtfCompositeGlyphFlags } from './enum';\nimport { BigEndianWriter } from './../../input-output/big-endian-writer';\nvar TtfReader = /** @class */ (function () {\n //Constructors\n function TtfReader(fontData) {\n this.int32Size = 4;\n this.isTtcFont = false;\n this.isMacTtf = false;\n this.metricsName = '';\n this.isMacTTF = false;\n this.missedGlyphs = 0;\n this.tableNames = ['cvt ', 'fpgm', 'glyf', 'head', 'hhea', 'hmtx', 'loca', 'maxp', 'prep'];\n this.entrySelectors = [0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4];\n this.fontData = fontData;\n this.initialize();\n }\n Object.defineProperty(TtfReader.prototype, \"macintosh\", {\n //Properties\n /**\n * Gets glyphs for Macintosh or Symbol fonts (char - key, glyph - value).\n */\n get: function () {\n if (this.macintoshDictionary === null || this.macintoshDictionary === undefined) {\n this.macintoshDictionary = new Dictionary();\n }\n return this.macintoshDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TtfReader.prototype, \"microsoft\", {\n /**\n * Gets glyphs for Microsoft or Symbol fonts (char - key, glyph - value).\n */\n get: function () {\n if (this.microsoftDictionary === null || this.microsoftDictionary === undefined) {\n this.microsoftDictionary = new Dictionary();\n }\n return this.microsoftDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TtfReader.prototype, \"macintoshGlyphs\", {\n /**\n * Gets glyphs for Macintosh or Symbol fonts (glyph index - key, glyph - value).\n */\n get: function () {\n if (this.internalMacintoshGlyphs === null || this.internalMacintoshGlyphs === undefined) {\n this.internalMacintoshGlyphs = new Dictionary();\n }\n return this.internalMacintoshGlyphs;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TtfReader.prototype, \"microsoftGlyphs\", {\n /**\n * Gets glyphs for Microsoft Unicode fonts (glyph index - key, glyph - value).\n */\n get: function () {\n if (this.internalMicrosoftGlyphs === null || this.internalMicrosoftGlyphs === undefined) {\n this.internalMicrosoftGlyphs = new Dictionary();\n }\n return this.internalMicrosoftGlyphs;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n TtfReader.prototype.initialize = function () {\n if (this.metrics === undefined) {\n this.metrics = new TtfMetrics();\n }\n this.readFontDictionary();\n var nameTable = this.readNameTable();\n var headTable = this.readHeadTable();\n this.initializeFontName(nameTable);\n this.metrics.macStyle = headTable.macStyle;\n };\n TtfReader.prototype.readFontDictionary = function () {\n this.offset = 0;\n var version = this.checkPreambula();\n //this.offset += 4;\n var numTables = this.readInt16(this.offset);\n var searchRange = this.readInt16(this.offset);\n var entrySelector = this.readInt16(this.offset);\n var rangeShift = this.readInt16(this.offset);\n if (this.tableDirectory === undefined) {\n this.tableDirectory = new Dictionary();\n }\n for (var i = 0; i < numTables; ++i) {\n var table = new TtfTableInfo();\n var tableKey = this.readString(this.int32Size);\n table.checksum = this.readInt32(this.offset);\n table.offset = this.readInt32(this.offset);\n table.length = this.readInt32(this.offset);\n this.tableDirectory.setValue(tableKey, table);\n }\n this.lowestPosition = this.offset;\n if (!this.isTtcFont) {\n this.fixOffsets();\n }\n };\n TtfReader.prototype.fixOffsets = function () {\n var minOffset = Number.MAX_VALUE;\n // Search for a smallest offset and compare it with the lowest position found.\n var tableKeys = this.tableDirectory.keys();\n for (var i = 0; i < tableKeys.length; i++) {\n var value = this.tableDirectory.getValue(tableKeys[i]);\n var offset = value.offset;\n if (minOffset > offset) {\n minOffset = offset;\n if (minOffset <= this.lowestPosition) {\n break;\n }\n }\n }\n var shift = minOffset - this.lowestPosition;\n if (shift !== 0) {\n var table = new Dictionary();\n for (var i = 0; i < tableKeys.length; i++) {\n var value = this.tableDirectory.getValue(tableKeys[i]);\n value.offset -= shift;\n table.setValue(tableKeys[i], value);\n }\n this.tableDirectory = table;\n }\n };\n TtfReader.prototype.checkPreambula = function () {\n var version = this.readInt32(this.offset);\n this.isMacTtf = (version === 0x74727565) ? true : false;\n if (version !== 0x10000 && version !== 0x74727565 && version !== 0x4f54544f) {\n this.isTtcFont = true;\n this.offset = 0;\n var fontTag = this.readString(4);\n if (fontTag !== 'ttcf') {\n throw new Error('Can not read TTF font data');\n }\n //skip 4\n this.offset += 4;\n var ttcIdentificationNumber = this.readInt32(this.offset);\n if (ttcIdentificationNumber < 0) {\n throw new Error('Can not read TTF font data');\n }\n this.offset = this.readInt32(this.offset);\n version = this.readInt32(this.offset);\n }\n return version;\n };\n TtfReader.prototype.readNameTable = function () {\n var tableInfo = this.getTable('name');\n this.offset = tableInfo.offset;\n var table = new TtfNameTable();\n table.formatSelector = this.readUInt16(this.offset);\n table.recordsCount = this.readUInt16(this.offset);\n table.offset = this.readUInt16(this.offset);\n table.nameRecords = [];\n var recordSize = 12;\n var position = this.offset;\n for (var i = 0; i < table.recordsCount; i++) {\n this.offset = position;\n var record = new TtfNameRecord();\n record.platformID = this.readUInt16(this.offset);\n record.encodingID = this.readUInt16(this.offset);\n record.languageID = this.readUInt16(this.offset);\n record.nameID = this.readUInt16(this.offset);\n record.length = this.readUInt16(this.offset);\n record.offset = this.readUInt16(this.offset);\n this.offset = tableInfo.offset + table.offset + record.offset;\n var unicode = (record.platformID === 0 || record.platformID === 3);\n record.name = this.readString(record.length, unicode);\n table.nameRecords[i] = record;\n position += recordSize;\n }\n return table;\n };\n TtfReader.prototype.readHeadTable = function () {\n var tableInfo = this.getTable('head');\n this.offset = tableInfo.offset;\n var table = new TtfHeadTable();\n table.version = this.readFixed(this.offset);\n table.fontRevision = this.readFixed(this.offset);\n table.checkSumAdjustment = this.readUInt32(this.offset);\n table.magicNumber = this.readUInt32(this.offset);\n table.flags = this.readUInt16(this.offset);\n table.unitsPerEm = this.readUInt16(this.offset);\n table.created = this.readInt64(this.offset);\n table.modified = this.readInt64(this.offset);\n table.xMin = this.readInt16(this.offset);\n table.yMin = this.readInt16(this.offset);\n table.xMax = this.readInt16(this.offset);\n table.yMax = this.readInt16(this.offset);\n table.macStyle = this.readUInt16(this.offset);\n table.lowestReadableSize = this.readUInt16(this.offset);\n table.fontDirectionHint = this.readInt16(this.offset);\n table.indexToLocalFormat = this.readInt16(this.offset);\n table.glyphDataFormat = this.readInt16(this.offset);\n return table;\n };\n TtfReader.prototype.readHorizontalHeaderTable = function () {\n var tableInfo = this.getTable('hhea');\n this.offset = tableInfo.offset;\n var table = new TtfHorizontalHeaderTable();\n table.version = this.readFixed(this.offset);\n table.ascender = this.readInt16(this.offset);\n table.descender = this.readInt16(this.offset);\n table.lineGap = this.readInt16(this.offset);\n table.advanceWidthMax = this.readUInt16(this.offset);\n table.minLeftSideBearing = this.readInt16(this.offset);\n table.minRightSideBearing = this.readInt16(this.offset);\n table.xMaxExtent = this.readInt16(this.offset);\n table.caretSlopeRise = this.readInt16(this.offset);\n table.caretSlopeRun = this.readInt16(this.offset);\n //skip 2 * 5\n this.offset += 10;\n table.metricDataFormat = this.readInt16(this.offset);\n table.numberOfHMetrics = this.readUInt16(this.offset);\n return table;\n };\n TtfReader.prototype.readOS2Table = function () {\n var tableInfo = this.getTable('OS/2');\n this.offset = tableInfo.offset;\n var table = new TtfOS2Table();\n table.version = this.readUInt16(this.offset);\n table.xAvgCharWidth = this.readInt16(this.offset);\n table.usWeightClass = this.readUInt16(this.offset);\n table.usWidthClass = this.readUInt16(this.offset);\n table.fsType = this.readInt16(this.offset);\n table.ySubscriptXSize = this.readInt16(this.offset);\n table.ySubscriptYSize = this.readInt16(this.offset);\n table.ySubscriptXOffset = this.readInt16(this.offset);\n table.ySubscriptYOffset = this.readInt16(this.offset);\n table.ySuperscriptXSize = this.readInt16(this.offset);\n table.ySuperscriptYSize = this.readInt16(this.offset);\n table.ySuperscriptXOffset = this.readInt16(this.offset);\n table.ySuperscriptYOffset = this.readInt16(this.offset);\n table.yStrikeoutSize = this.readInt16(this.offset);\n table.yStrikeoutPosition = this.readInt16(this.offset);\n table.sFamilyClass = this.readInt16(this.offset);\n table.panose = this.readBytes(10);\n table.ulUnicodeRange1 = this.readUInt32(this.offset);\n table.ulUnicodeRange2 = this.readUInt32(this.offset);\n table.ulUnicodeRange3 = this.readUInt32(this.offset);\n table.ulUnicodeRange4 = this.readUInt32(this.offset);\n table.vendorIdentifier = this.readBytes(4);\n table.fsSelection = this.readUInt16(this.offset);\n table.usFirstCharIndex = this.readUInt16(this.offset);\n table.usLastCharIndex = this.readUInt16(this.offset);\n table.sTypoAscender = this.readInt16(this.offset);\n table.sTypoDescender = this.readInt16(this.offset);\n table.sTypoLineGap = this.readInt16(this.offset);\n table.usWinAscent = this.readUInt16(this.offset);\n table.usWinDescent = this.readUInt16(this.offset);\n table.ulCodePageRange1 = this.readUInt32(this.offset);\n table.ulCodePageRange2 = this.readUInt32(this.offset);\n if (table.version > 1) {\n table.sxHeight = this.readInt16(this.offset);\n table.sCapHeight = this.readInt16(this.offset);\n table.usDefaultChar = this.readUInt16(this.offset);\n table.usBreakChar = this.readUInt16(this.offset);\n table.usMaxContext = this.readUInt16(this.offset);\n }\n else {\n table.sxHeight = 0;\n table.sCapHeight = 0;\n table.usDefaultChar = 0;\n table.usBreakChar = 0;\n table.usMaxContext = 0;\n }\n return table;\n };\n TtfReader.prototype.readPostTable = function () {\n var tableInfo = this.getTable('post');\n this.offset = tableInfo.offset;\n var table = new TtfPostTable();\n table.formatType = this.readFixed(this.offset);\n table.italicAngle = this.readFixed(this.offset);\n table.underlinePosition = this.readInt16(this.offset);\n table.underlineThickness = this.readInt16(this.offset);\n table.isFixedPitch = this.readUInt32(this.offset);\n table.minType42 = this.readUInt32(this.offset);\n table.maxType42 = this.readUInt32(this.offset);\n table.minType1 = this.readUInt32(this.offset);\n table.maxType1 = this.readUInt32(this.offset);\n return table;\n };\n /**\n * Reads Width of the glyphs.\n */\n TtfReader.prototype.readWidthTable = function (glyphCount, unitsPerEm) {\n var tableInfo = this.getTable('hmtx');\n this.offset = tableInfo.offset;\n var width = [];\n for (var i = 0; i < glyphCount; i++) {\n var glyph = new TtfLongHorMetric();\n glyph.advanceWidth = this.readUInt16(this.offset);\n glyph.lsb = this.readInt16(this.offset);\n var glyphWidth = glyph.advanceWidth * 1000 / unitsPerEm;\n width.push(Math.floor(glyphWidth));\n }\n return width;\n };\n /**\n * Reads the cmap table.\n */\n TtfReader.prototype.readCmapTable = function () {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset;\n var table = new TtfCmapTable();\n table.version = this.readUInt16(this.offset);\n table.tablesCount = this.readUInt16(this.offset);\n var position = this.offset;\n var subTables = [];\n for (var i = 0; i < table.tablesCount; i++) {\n this.offset = position;\n var subTable = new TtfCmapSubTable();\n subTable.platformID = this.readUInt16(this.offset);\n subTable.encodingID = this.readUInt16(this.offset);\n subTable.offset = this.readUInt32(this.offset);\n position = this.offset;\n this.readCmapSubTable(subTable);\n subTables[i] = subTable;\n }\n return subTables;\n };\n /**\n * Reads the cmap sub table.\n */\n TtfReader.prototype.readCmapSubTable = function (subTable) {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset + subTable.offset;\n var format = this.readUInt16(this.offset);\n var encoding = this.getCmapEncoding(subTable.platformID, subTable.encodingID);\n var platform = (encoding === TtfCmapEncoding.Macintosh) ? TtfPlatformID.Macintosh : TtfPlatformID.Microsoft;\n if (encoding !== TtfCmapEncoding.Unknown) {\n switch (format) {\n case TtfCmapFormat.Apple:\n this.readAppleCmapTable(subTable, encoding);\n break;\n case TtfCmapFormat.Microsoft:\n this.readMicrosoftCmapTable(subTable, encoding);\n break;\n case TtfCmapFormat.Trimmed:\n this.readTrimmedCmapTable(subTable, encoding);\n break;\n }\n }\n };\n /**\n * Reads Symbol cmap table.\n */\n TtfReader.prototype.readAppleCmapTable = function (subTable, encoding) {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset + subTable.offset;\n var table = new TtfAppleCmapSubTable();\n table.format = this.readUInt16(this.offset);\n table.length = this.readUInt16(this.offset);\n table.version = this.readUInt16(this.offset);\n if (this.maxMacIndex === null || this.maxMacIndex === undefined) {\n this.maxMacIndex = 0;\n }\n for (var i = 0; i < 256; ++i) {\n var glyphInfo = new TtfGlyphInfo();\n glyphInfo.index = this.readByte(this.offset);\n glyphInfo.width = this.getWidth(glyphInfo.index);\n glyphInfo.charCode = i;\n this.macintosh.setValue(i, glyphInfo);\n this.addGlyph(glyphInfo, encoding);\n // NOTE: this code fixes char codes that extends 0x100. However, it might corrupt something.\n this.maxMacIndex = Math.max(i, this.maxMacIndex);\n }\n };\n /**\n * Reads Symbol cmap table.\n */\n TtfReader.prototype.readMicrosoftCmapTable = function (subTable, encoding) {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset + subTable.offset;\n var collection = (encoding === TtfCmapEncoding.Unicode) ? this.microsoft : this.macintosh;\n var table = new TtfMicrosoftCmapSubTable();\n table.format = this.readUInt16(this.offset);\n table.length = this.readUInt16(this.offset);\n table.version = this.readUInt16(this.offset);\n table.segCountX2 = this.readUInt16(this.offset);\n table.searchRange = this.readUInt16(this.offset);\n table.entrySelector = this.readUInt16(this.offset);\n table.rangeShift = this.readUInt16(this.offset);\n var segCount = table.segCountX2 / 2;\n table.endCount = this.readUshortArray(segCount);\n table.reservedPad = this.readUInt16(this.offset);\n table.startCount = this.readUshortArray(segCount);\n table.idDelta = this.readUshortArray(segCount);\n table.idRangeOffset = this.readUshortArray(segCount);\n var length = (table.length / 2 - 8) - (segCount * 4);\n table.glyphID = this.readUshortArray(length);\n // Process glyphIdArray array.\n var codeOffset = 0;\n var index = 0;\n for (var j = 0; j < segCount; j++) {\n for (var k = table.startCount[j]; k <= table.endCount[j] && k !== 65535; k++) {\n if (table.idRangeOffset[j] === 0) {\n codeOffset = (k + table.idDelta[j]) & 65535;\n }\n else {\n index = j + table.idRangeOffset[j] / 2 - segCount + k - table.startCount[j];\n if (index >= table.glyphID.length) {\n continue;\n }\n codeOffset = (table.glyphID[index] + table.idDelta[j]) & 65535;\n }\n var glyph = new TtfGlyphInfo();\n glyph.index = codeOffset;\n glyph.width = this.getWidth(glyph.index);\n var id = (encoding === TtfCmapEncoding.Symbol) ? ((k & 0xff00) === 0xf000 ? k & 0xff : k) : k;\n glyph.charCode = id;\n collection.setValue(id, glyph);\n this.addGlyph(glyph, encoding);\n }\n }\n };\n /**\n * Reads Trimed cmap table.\n */\n TtfReader.prototype.readTrimmedCmapTable = function (subTable, encoding) {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset + subTable.offset;\n var table = new TtfTrimmedCmapSubTable();\n table.format = this.readUInt16(this.offset);\n table.length = this.readUInt16(this.offset);\n table.version = this.readUInt16(this.offset);\n table.firstCode = this.readUInt16(this.offset);\n table.entryCount = this.readUInt16(this.offset);\n for (var i = 0; i < table.entryCount; ++i) {\n var glyphInfo = new TtfGlyphInfo();\n glyphInfo.index = this.readUInt16(this.offset);\n glyphInfo.width = this.getWidth(glyphInfo.index);\n glyphInfo.charCode = i + table.firstCode;\n this.macintosh.setValue(i, glyphInfo);\n this.addGlyph(glyphInfo, encoding);\n // NOTE: this code fixes char codes that extends 0x100. However, it might corrupt something.\n this.maxMacIndex = Math.max(i, this.maxMacIndex);\n }\n };\n TtfReader.prototype.initializeFontName = function (nameTable) {\n for (var i = 0; i < nameTable.recordsCount; i++) {\n var record = nameTable.nameRecords[i];\n if (record.nameID === 1) {\n //font family\n this.metrics.fontFamily = record.name;\n }\n else if (record.nameID === 6) {\n //post script name\n this.metrics.postScriptName = record.name;\n }\n /* tslint:disable */\n if (this.metrics.fontFamily !== null && this.metrics.fontFamily !== undefined && this.metrics.postScriptName !== null && this.metrics.postScriptName !== undefined) {\n break;\n }\n /* tslint:disable */\n }\n };\n TtfReader.prototype.getTable = function (name) {\n // if (name === null) {\n // throw new Error('Argument Null Exception : name');\n // }\n var table = new TtfTableInfo();\n var obj;\n if (this.tableDirectory.containsKey(name)) {\n obj = this.tableDirectory.getValue(name);\n }\n if (obj !== null && obj !== undefined) {\n table = obj;\n }\n return table;\n };\n /**\n * Returns width of the glyph.\n */\n TtfReader.prototype.getWidth = function (glyphCode) {\n glyphCode = (glyphCode < this.width.length) ? glyphCode : this.width.length - 1;\n return this.width[glyphCode];\n };\n /**\n * Gets CMAP encoding based on platform ID and encoding ID.\n */\n /* tslint:disable */\n TtfReader.prototype.getCmapEncoding = function (platformID, encodingID) {\n var format = TtfCmapEncoding.Unknown;\n if (platformID == TtfPlatformID.Microsoft && encodingID == TtfMicrosoftEncodingID.Undefined) {\n // When building a symbol font for Windows,\n // the platform ID should be 3 and the encoding ID should be 0.\n format = TtfCmapEncoding.Symbol;\n }\n else if (platformID == TtfPlatformID.Microsoft && encodingID == TtfMicrosoftEncodingID.Unicode) {\n // When building a Unicode font for Windows,\n // the platform ID should be 3 and the encoding ID should be 1.\n format = TtfCmapEncoding.Unicode;\n }\n else if (platformID == TtfPlatformID.Macintosh && encodingID == TtfMacintoshEncodingID.Roman) {\n // When building a font that will be used on the Macintosh,\n // the platform ID should be 1 and the encoding ID should be 0.\n format = TtfCmapEncoding.Macintosh;\n }\n return format;\n };\n /* tslint:enable */\n /**\n * Adds glyph to the collection.\n */\n TtfReader.prototype.addGlyph = function (glyph, encoding) {\n var collection = null;\n switch (encoding) {\n case TtfCmapEncoding.Unicode:\n collection = this.microsoftGlyphs;\n break;\n case TtfCmapEncoding.Macintosh:\n case TtfCmapEncoding.Symbol:\n collection = this.macintoshGlyphs;\n break;\n }\n collection.setValue(glyph.index, glyph);\n };\n /**\n * Initializes metrics.\n */\n /* tslint:disable */\n TtfReader.prototype.initializeMetrics = function (nameTable, headTable, horizontalHeadTable, os2Table, postTable, cmapTables) {\n /* tslint:enable */\n // if (cmapTables === null) {\n // throw new Error('ArgumentNullException : cmapTables');\n // }\n this.initializeFontName(nameTable);\n // Get font encoding.\n var bSymbol = false;\n for (var i = 0; i < cmapTables.length; i++) {\n var subTable = cmapTables[i];\n var encoding = this.getCmapEncoding(subTable.platformID, subTable.encodingID);\n if (encoding === TtfCmapEncoding.Symbol) {\n bSymbol = true;\n break;\n }\n }\n this.metrics.isSymbol = bSymbol;\n this.metrics.macStyle = headTable.macStyle;\n this.metrics.isFixedPitch = (postTable.isFixedPitch !== 0);\n this.metrics.italicAngle = postTable.italicAngle;\n var factor = 1000 / headTable.unitsPerEm;\n this.metrics.winAscent = os2Table.sTypoAscender * factor;\n this.metrics.macAscent = horizontalHeadTable.ascender * factor;\n //m_metrics.MacAscent = os2Table.UsWinAscent * factor;\n // NOTE: This is stange workaround. The value is good if os2Table.SCapHeight != 0, otherwise it should be properly computed.\n this.metrics.capHeight = (os2Table.sCapHeight !== 0) ? os2Table.sCapHeight : 0.7 * headTable.unitsPerEm * factor;\n this.metrics.winDescent = os2Table.sTypoDescender * factor;\n this.metrics.macDescent = horizontalHeadTable.descender * factor;\n //m_metrics.MacDescent = -os2Table.UsWinDescent * factor;\n this.metrics.leading = (os2Table.sTypoAscender - os2Table.sTypoDescender + os2Table.sTypoLineGap) * factor;\n this.metrics.lineGap = Math.ceil(horizontalHeadTable.lineGap * factor);\n var left = headTable.xMin * factor;\n var top = Math.ceil(this.metrics.macAscent + this.metrics.lineGap);\n var right = headTable.xMax * factor;\n var bottom = this.metrics.macDescent;\n this.metrics.fontBox = new Rectangle(left, top, right, bottom);\n // NOTE: Strange!\n this.metrics.stemV = 80;\n this.metrics.widthTable = this.updateWidth();\n this.metrics.contains = this.tableDirectory.containsKey('CFF');\n this.metrics.subScriptSizeFactor = headTable.unitsPerEm / os2Table.ySubscriptYSize;\n this.metrics.superscriptSizeFactor = headTable.unitsPerEm / os2Table.ySuperscriptYSize;\n };\n /**\n * Updates chars structure which is used in the case of ansi encoding (256 bytes).\n */\n TtfReader.prototype.updateWidth = function () {\n var count = 256;\n var bytes = [];\n if (this.metrics.isSymbol) {\n for (var i = 0; i < count; i++) {\n var glyphInfo = this.getGlyph(String.fromCharCode(i));\n bytes[i] = (glyphInfo.empty) ? 0 : glyphInfo.width;\n }\n }\n else {\n var byteToProcess = [];\n var unknown = '?';\n var space = String.fromCharCode(32);\n for (var i = 0; i < count; i++) {\n byteToProcess[0] = i;\n var text = this.getString(byteToProcess, 0, byteToProcess.length);\n var ch = (text.length > 0) ? text[0] : unknown;\n var glyphInfo = this.getGlyph(ch);\n if (!glyphInfo.empty) {\n bytes[i] = glyphInfo.width;\n }\n else {\n glyphInfo = this.getGlyph(space);\n bytes[i] = (glyphInfo.empty) ? 0 : glyphInfo.width;\n }\n }\n }\n return bytes;\n };\n /**\n * Returns default glyph.\n */\n TtfReader.prototype.getDefaultGlyph = function () {\n var glyph = this.getGlyph(StringTokenizer.whiteSpace);\n return glyph;\n };\n /**\n * Reads unicode string from byte array.\n */\n TtfReader.prototype.getString = function (byteToProcess, start, length) {\n var result = '';\n for (var index = 0; index < length; index++) {\n result += String.fromCharCode(byteToProcess[index + start]);\n }\n return result;\n };\n /**\n * Reads loca table.\n */\n TtfReader.prototype.readLocaTable = function (bShort) {\n var tableInfo = this.getTable('loca');\n this.offset = tableInfo.offset;\n var table = new TtfLocaTable();\n var buffer = null;\n if (bShort) {\n var len = tableInfo.length / 2;\n buffer = [];\n for (var i = 0; i < len; i++) {\n buffer[i] = this.readUInt16(this.offset) * 2;\n }\n }\n else {\n var len = tableInfo.length / 4;\n buffer = [];\n for (var i = 0; i < len; i++) {\n buffer[i] = this.readUInt32(this.offset);\n }\n }\n table.offsets = buffer;\n return table;\n };\n /**\n * Updates hash table of used glyphs.\n */\n TtfReader.prototype.updateGlyphChars = function (glyphChars, locaTable) {\n // if (glyphChars === null) {\n // throw new Error('Argument Null Exception : glyphChars');\n // }\n // Add zero key.\n if (!glyphChars.containsKey(0)) {\n glyphChars.setValue(0, 0);\n }\n var clone = new Dictionary();\n var glyphCharKeys = glyphChars.keys();\n for (var i = 0; i < glyphCharKeys.length; i++) {\n clone.setValue(glyphCharKeys[i], glyphChars.getValue(glyphCharKeys[i]));\n }\n for (var i = 0; i < glyphCharKeys.length; i++) {\n var nextKey = glyphCharKeys[i];\n this.processCompositeGlyph(glyphChars, nextKey, locaTable);\n }\n };\n /**\n * Checks if glyph is composite or not.\n */\n TtfReader.prototype.processCompositeGlyph = function (glyphChars, glyph, locaTable) {\n // if (glyphChars === null) {\n // throw new Error('Argument Null Exception : glyphChars');\n // }\n // Is in range.\n if (glyph < locaTable.offsets.length - 1) {\n var glyphOffset = locaTable.offsets[glyph];\n if (glyphOffset !== locaTable.offsets[glyph + 1]) {\n var tableInfo = this.getTable('glyf');\n this.offset = tableInfo.offset + glyphOffset;\n var glyphHeader = new TtfGlyphHeader();\n glyphHeader.numberOfContours = this.readInt16(this.offset);\n glyphHeader.xMin = this.readInt16(this.offset);\n glyphHeader.yMin = this.readInt16(this.offset);\n glyphHeader.xMax = this.readInt16(this.offset);\n glyphHeader.yMax = this.readInt16(this.offset);\n // Glyph is composite.\n if (glyphHeader.numberOfContours < 0) {\n var skipBytes = 0;\n var entry = true;\n while (entry) {\n var flags = this.readUInt16(this.offset);\n var glyphIndex = this.readUInt16(this.offset);\n if (!glyphChars.containsKey(glyphIndex)) {\n glyphChars.setValue(glyphIndex, 0);\n }\n if ((flags & TtfCompositeGlyphFlags.MoreComponents) === 0) {\n break;\n }\n skipBytes = ((flags & TtfCompositeGlyphFlags.Arg1And2AreWords) !== 0) ? 4 : 2;\n if ((flags & TtfCompositeGlyphFlags.WeHaveScale) !== 0) {\n skipBytes += 2;\n }\n else if ((flags & TtfCompositeGlyphFlags.WeHaveAnXyScale) !== 0) {\n skipBytes += 4;\n }\n else if ((flags & TtfCompositeGlyphFlags.WeHaveTwoByTwo) !== 0) {\n skipBytes += 2 * 4;\n }\n this.offset += skipBytes;\n }\n }\n }\n }\n };\n /**\n * Creates new glyph tables based on chars that are used for output.\n */\n /* tslint:disable */\n TtfReader.prototype.generateGlyphTable = function (glyphChars, locaTable, newLocaTable, newGlyphTable) {\n /* tslint:enable */\n // if (glyphChars === null) {\n // throw new Error('Argument Null Exception : glyphChars');\n // }\n newLocaTable = [];\n // Sorting used glyphs keys.\n var activeGlyphs = glyphChars.keys();\n activeGlyphs.sort(function (a, b) { return a - b; });\n var glyphSize = 0;\n for (var i = 0; i < activeGlyphs.length; i++) {\n var glyphIndex = activeGlyphs[i];\n if (locaTable.offsets.length > 0) {\n glyphSize += locaTable.offsets[glyphIndex + 1] - locaTable.offsets[glyphIndex];\n }\n }\n var glyphSizeAligned = this.align(glyphSize);\n newGlyphTable = [];\n for (var i = 0; i < glyphSizeAligned; i++) {\n newGlyphTable.push(0);\n }\n var nextGlyphOffset = 0;\n var nextGlyphIndex = 0;\n var table = this.getTable('glyf');\n // Creating NewLocaTable - that would hold offsets for filtered glyphs.\n for (var i = 0; i < locaTable.offsets.length; i++) {\n newLocaTable.push(nextGlyphOffset);\n if (nextGlyphIndex < activeGlyphs.length && activeGlyphs[nextGlyphIndex] === i) {\n ++nextGlyphIndex;\n newLocaTable[i] = nextGlyphOffset;\n var oldGlyphOffset = locaTable.offsets[i];\n var oldNextGlyphOffset = locaTable.offsets[i + 1] - oldGlyphOffset;\n if (oldNextGlyphOffset > 0) {\n this.offset = table.offset + oldGlyphOffset;\n var result = this.read(newGlyphTable, nextGlyphOffset, oldNextGlyphOffset);\n newGlyphTable = result.buffer;\n nextGlyphOffset += oldNextGlyphOffset;\n }\n }\n }\n return { glyphTableSize: glyphSize, newLocaTable: newLocaTable, newGlyphTable: newGlyphTable };\n };\n /**\n * Updates new Loca table.\n */\n /* tslint:disable */\n TtfReader.prototype.updateLocaTable = function (newLocaTable, bLocaIsShort, newLocaTableOut) {\n /* tslint:enable */\n if (newLocaTable === null) {\n throw new Error('Argument Null Exception : newLocaTable');\n }\n var size = (bLocaIsShort) ? newLocaTable.length * 2 : newLocaTable.length * 4;\n var count = this.align(size);\n //BigEndianWiter\n var writer = new BigEndianWriter(count);\n for (var i = 0; i < newLocaTable.length; i++) {\n var value = newLocaTable[i];\n if (bLocaIsShort) {\n value /= 2;\n writer.writeShort(value);\n }\n else {\n writer.writeInt(value);\n }\n }\n return { newLocaUpdated: writer.data, newLocaSize: size };\n };\n /**\n * Aligns number to be divisible on 4.\n */\n TtfReader.prototype.align = function (value) {\n return (value + 3) & (~3);\n };\n /**\n * Returns font program data.\n */\n /* tslint:disable */\n TtfReader.prototype.getFontProgram = function (newLocaTableOut, newGlyphTable, glyphTableSize, locaTableSize) {\n /* tslint:enable */\n if (newLocaTableOut === null) {\n throw new Error('Argument Null Exception : newLocaTableOut');\n }\n if (newGlyphTable === null) {\n throw new Error('Argument Null Exception : newGlyphTable');\n }\n var tableNames = this.tableNames;\n var result = this.getFontProgramLength(newLocaTableOut, newGlyphTable, 0);\n var fontProgramLength = result.fontProgramLength;\n var numTables = result.numTables;\n var writer = new BigEndianWriter(fontProgramLength);\n writer.writeInt(0x10000);\n writer.writeShort(numTables);\n var entrySelector = this.entrySelectors[numTables];\n writer.writeShort((1 << (entrySelector & 31)) * 16);\n writer.writeShort(entrySelector);\n writer.writeShort((numTables - (1 << (entrySelector & 31))) * 16);\n // Writing to destination buffer - checksums && sizes of used tables.\n this.writeCheckSums(writer, numTables, newLocaTableOut, newGlyphTable, glyphTableSize, locaTableSize);\n // // Writing to destination buffer - used glyphs.\n this.writeGlyphs(writer, newLocaTableOut, newGlyphTable);\n return writer.data;\n };\n /* tslint:disable */\n TtfReader.prototype.getFontProgramLength = function (newLocaTableOut, newGlyphTable, numTables) {\n /* tslint:enable */\n if (newLocaTableOut === null) {\n throw new Error('Argument Null Exception : newLocaTableOut');\n }\n if (newGlyphTable === null) {\n throw new Error('Argument Null Exception : newGlyphTable');\n }\n // glyf and loca are used by default;\n numTables = 2;\n var tableNames = this.tableNames;\n var fontProgramLength = 0;\n for (var i = 0; i < tableNames.length; i++) {\n var tableName = tableNames[i];\n if (tableName !== 'glyf' && tableName !== 'loca') {\n var table = this.getTable(tableName);\n if (!table.empty) {\n ++numTables;\n fontProgramLength += this.align(table.length);\n }\n }\n }\n fontProgramLength += newLocaTableOut.length;\n fontProgramLength += newGlyphTable.length;\n var usedTablesSize = numTables * 16 + (3 * 4);\n fontProgramLength += usedTablesSize;\n return { fontProgramLength: fontProgramLength, numTables: numTables };\n };\n /**\n * Writing to destination buffer - checksums and sizes of used tables.\n */\n /* tslint:disable */\n TtfReader.prototype.writeCheckSums = function (writer, numTables, newLocaTableOut, newGlyphTable, glyphTableSize, locaTableSize) {\n /* tslint:enable */\n if (writer === null) {\n throw new Error('Argument Null Exception : writer');\n }\n if (newLocaTableOut === null) {\n throw new Error('Argument Null Exception : newLocaTableOut');\n }\n if (newGlyphTable === null) {\n throw new Error('Argument Null Exception : newGlyphTable');\n }\n var tableNames = this.tableNames;\n var usedTablesSize = numTables * 16 + (3 * 4);\n var nextTableSize = 0;\n for (var i = 0; i < tableNames.length; i++) {\n var tableName = tableNames[i];\n var tableInfo = this.getTable(tableName);\n if (tableInfo.empty) {\n continue;\n }\n writer.writeString(tableName);\n if (tableName === 'glyf') {\n var checksum = this.calculateCheckSum(newGlyphTable);\n writer.writeInt(checksum);\n nextTableSize = glyphTableSize;\n }\n else if (tableName === 'loca') {\n var checksum = this.calculateCheckSum(newLocaTableOut);\n writer.writeInt(checksum);\n nextTableSize = locaTableSize;\n }\n else {\n writer.writeInt(tableInfo.checksum);\n nextTableSize = tableInfo.length;\n }\n writer.writeUInt(usedTablesSize);\n writer.writeUInt(nextTableSize);\n usedTablesSize += this.align(nextTableSize);\n }\n };\n /**\n * Gets checksum from source buffer.\n */\n TtfReader.prototype.calculateCheckSum = function (bytes) {\n if (bytes === null) {\n throw new Error('Argument Null Exception : bytes');\n }\n var pos = 0;\n var byte1 = 0;\n var byte2 = 0;\n var byte3 = 0;\n var byte4 = 0;\n for (var i = 0; i < (bytes.length + 1) / 4; i++) {\n byte4 += (bytes[pos++] & 255);\n byte3 += (bytes[pos++] & 255);\n byte2 += (bytes[pos++] & 255);\n byte1 += (bytes[pos++] & 255);\n }\n var result = byte1;\n result += (byte2 << 8);\n result += (byte3 << 16);\n result += (byte4 << 24);\n return result;\n };\n /**\n * Writing to destination buffer - used glyphs.\n */\n TtfReader.prototype.writeGlyphs = function (writer, newLocaTable, newGlyphTable) {\n if (writer === null) {\n throw new Error('Argument Null Exception : writer');\n }\n if (newLocaTable === null) {\n throw new Error('Argument Null Exception : newLocaTableOut');\n }\n if (newGlyphTable === null) {\n throw new Error('Argument Null Exception : newGlyphTable');\n }\n var tableNames = this.tableNames;\n for (var i = 0; i < tableNames.length; i++) {\n var tableName = tableNames[i];\n var tableInfo = this.getTable(tableName);\n if (tableInfo.empty) {\n continue;\n }\n if (tableName === 'glyf') {\n writer.writeBytes(newGlyphTable);\n }\n else if (tableName === 'loca') {\n writer.writeBytes(newLocaTable);\n }\n else {\n var count = this.align(tableInfo.length);\n var buff = [];\n for (var i_1 = 0; i_1 < count; i_1++) {\n buff.push(0);\n }\n this.offset = tableInfo.offset;\n var result = this.read(buff, 0, tableInfo.length);\n writer.writeBytes(result.buffer);\n }\n }\n };\n //public methods\n /**\n * Sets position value of font data.\n */\n TtfReader.prototype.setOffset = function (offset) {\n this.offset = offset;\n };\n /**\n * Creates font Internals\n * @private\n */\n TtfReader.prototype.createInternals = function () {\n this.metrics = new TtfMetrics();\n var nameTable = this.readNameTable();\n var headTable = this.readHeadTable();\n this.bIsLocaShort = (headTable.indexToLocalFormat === 0);\n var horizontalHeadTable = this.readHorizontalHeaderTable();\n var os2Table = this.readOS2Table();\n var postTable = this.readPostTable();\n this.width = this.readWidthTable(horizontalHeadTable.numberOfHMetrics, headTable.unitsPerEm);\n var subTables = this.readCmapTable();\n this.initializeMetrics(nameTable, headTable, horizontalHeadTable, os2Table, postTable, subTables);\n };\n TtfReader.prototype.getGlyph = function (charCode) {\n if (typeof charCode === 'number') {\n var obj1 = null;\n if (!this.metrics.isSymbol && this.microsoftGlyphs != null) {\n if (this.microsoftGlyphs.containsKey(charCode)) {\n obj1 = this.microsoftGlyphs.getValue(charCode);\n }\n }\n else if (this.metrics.isSymbol && this.macintoshGlyphs != null) {\n if (this.macintoshGlyphs.containsKey(charCode)) {\n obj1 = this.macintoshGlyphs.getValue(charCode);\n }\n }\n var glyph = (obj1 != null) ? obj1 : this.getDefaultGlyph();\n return glyph;\n }\n else {\n var obj = null;\n var code = charCode.charCodeAt(0);\n if (!this.metrics.isSymbol && this.microsoft !== null) {\n if (this.microsoft.containsKey(code)) {\n obj = this.microsoft.getValue(code);\n if (code !== StringTokenizer.whiteSpace.charCodeAt(0)) {\n this.isFontPresent = true;\n }\n }\n else if (code !== StringTokenizer.whiteSpace.charCodeAt(0)) {\n this.isFontPresent = false;\n }\n }\n else if (this.metrics.isSymbol && this.macintosh !== null || this.isMacTTF) {\n // NOTE: this code fixes char codes that extends 0x100. However, it might corrupt something.\n if (this.maxMacIndex !== 0) {\n code %= this.maxMacIndex + 1;\n }\n else {\n code = ((code & 0xff00) === 0xf000 ? code & 0xff : code);\n }\n if (this.macintosh.containsKey(code)) {\n obj = this.macintosh.getValue(code);\n this.isFontPresent = true;\n }\n }\n // Fix for StackOverFlow exception in XPS to PDF converter\n if (charCode === StringTokenizer.whiteSpace && obj === null) {\n obj = new TtfGlyphInfo();\n }\n var glyph = (obj !== null) ? obj : this.getDefaultGlyph();\n return glyph;\n }\n };\n /**\n * Gets hash table with chars indexed by glyph index.\n */\n TtfReader.prototype.getGlyphChars = function (chars) {\n if (chars === null || chars === undefined) {\n throw new Error('Argument Null Exception : chars');\n }\n var dictionary = new Dictionary();\n var charKeys = chars.keys();\n for (var i = 0; i < charKeys.length; i++) {\n var ch = charKeys[i];\n var glyph = this.getGlyph(ch);\n if (!glyph.empty) {\n dictionary.setValue(glyph.index, ch.charCodeAt(0));\n }\n }\n return dictionary;\n };\n /**\n * Gets all glyphs.\n */\n TtfReader.prototype.getAllGlyphs = function () {\n var allGlyphInfo = [];\n var info = new TtfGlyphInfo();\n var index = 0;\n for (var i = 0; i < this.width.length; i++) {\n var width = this.width[i];\n info.index = index;\n info.width = width;\n allGlyphInfo.push(info);\n index++;\n }\n return allGlyphInfo;\n };\n /**\n * Reads a font's program.\n * @private\n */\n TtfReader.prototype.readFontProgram = function (chars) {\n var glyphChars = this.getGlyphChars(chars);\n var locaTable = this.readLocaTable(this.bIsLocaShort);\n if (glyphChars.size() < chars.size()) {\n this.missedGlyphs = chars.size() - glyphChars.size();\n }\n this.updateGlyphChars(glyphChars, locaTable);\n /* tslint:disable */\n var result1 = this.generateGlyphTable(glyphChars, locaTable, null, null);\n /* tslint:enable */\n var glyphTableSize = result1.glyphTableSize;\n var newLocaTable = result1.newLocaTable;\n var newGlyphTable = result1.newGlyphTable;\n var result2 = this.updateLocaTable(newLocaTable, this.bIsLocaShort, null);\n var newLocaSize = result2.newLocaSize;\n var newLocaUpdated = result2.newLocaUpdated;\n var fontProgram = this.getFontProgram(newLocaUpdated, newGlyphTable, glyphTableSize, newLocaSize);\n return fontProgram;\n };\n /**\n * Reconverts string to be in proper format saved into PDF file.\n */\n TtfReader.prototype.convertString = function (text) {\n if (text === null) {\n throw new Error('Argument Null Exception : text');\n }\n var glyph = '';\n var i = 0;\n for (var k = 0; k < text.length; k++) {\n var ch = text[k];\n var glyphInfo = this.getGlyph(ch);\n if (!glyphInfo.empty) {\n glyph += String.fromCharCode(glyphInfo.index);\n i++;\n }\n }\n return glyph;\n };\n /**\n * Gets char width.\n */\n TtfReader.prototype.getCharWidth = function (code) {\n var glyphInfo = this.getGlyph(code);\n glyphInfo = (!glyphInfo.empty) ? glyphInfo : this.getDefaultGlyph();\n var codeWidth = (!glyphInfo.empty) ? glyphInfo.width : 0;\n return codeWidth;\n };\n TtfReader.prototype.readString = function (length, isUnicode) {\n if (isUnicode === undefined) {\n return this.readString(length, false);\n }\n else {\n //let buffer : number[] = this.readBytes(length);\n var result = '';\n if (isUnicode) {\n for (var i = 0; i < length; i++) {\n if (i % 2 !== 0) {\n result += String.fromCharCode(this.fontData[this.offset]);\n }\n this.offset += 1;\n }\n }\n else {\n for (var i = 0; i < length; i++) {\n result += String.fromCharCode(this.fontData[this.offset]);\n this.offset += 1;\n }\n }\n return result;\n }\n };\n TtfReader.prototype.readFixed = function (offset) {\n var integer = this.readInt16(offset);\n var sFraction = this.readInt16(offset + 2);\n var fraction = sFraction / 16384;\n return integer + fraction;\n };\n TtfReader.prototype.readInt32 = function (offset) {\n var i1 = this.fontData[offset + 3];\n var i2 = this.fontData[offset + 2];\n var i3 = this.fontData[offset + 1];\n var i4 = this.fontData[offset];\n this.offset += 4;\n return i1 + (i2 << 8) + (i3 << 16) + (i4 << 24);\n };\n TtfReader.prototype.readUInt32 = function (offset) {\n var i1 = this.fontData[offset + 3];\n var i2 = this.fontData[offset + 2];\n var i3 = this.fontData[offset + 1];\n var i4 = this.fontData[offset];\n this.offset += 4;\n return (i1 | i2 << 8 | i3 << 16 | i4 << 24);\n };\n // private readInt16(offset : number) : number {\n // let result : number = (this.fontData[offset] << 8) + this.fontData[offset + 1];\n // this.offset += 2;\n // return result;\n // }\n TtfReader.prototype.readInt16 = function (offset) {\n var result = (this.fontData[offset] << 8) + this.fontData[offset + 1];\n result = result & (1 << 15) ? result - 0x10000 : result;\n this.offset += 2;\n return result;\n };\n TtfReader.prototype.readInt64 = function (offset) {\n var low = this.readInt32(offset + 4);\n var n = this.readInt32(offset) * 4294967296.0 + low;\n if (low < 0) {\n n += 4294967296;\n }\n return n;\n };\n TtfReader.prototype.readUInt16 = function (offset) {\n var result = (this.fontData[offset] << 8) | this.fontData[offset + 1];\n this.offset += 2;\n return result;\n };\n /**\n * Reads ushort array.\n */\n TtfReader.prototype.readUshortArray = function (length) {\n var buffer = [];\n for (var i = 0; i < length; i++) {\n buffer[i] = this.readUInt16(this.offset);\n }\n return buffer;\n };\n TtfReader.prototype.readBytes = function (length) {\n var result = [];\n for (var i = 0; i < length; i++) {\n result.push(this.fontData[this.offset]);\n this.offset += 1;\n }\n return result;\n };\n TtfReader.prototype.readByte = function (offset) {\n var result = this.fontData[offset];\n this.offset += 1;\n return result;\n };\n /**\n * Reads bytes to array in BigEndian order.\n * @private\n */\n TtfReader.prototype.read = function (buffer, index, count) {\n if (buffer === null) {\n throw new Error('Argument Null Exception : buffer');\n }\n var written = 0;\n var read = 0;\n do {\n for (var i = 0; (i < count - written) && (this.offset + i < this.fontData.length); i++) {\n buffer[index + i] = this.fontData[this.offset + i];\n }\n read = count - written;\n this.offset += read;\n written += read;\n } while (written < count);\n return { buffer: buffer, written: written };\n };\n return TtfReader;\n}());\nexport { TtfReader };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfFont } from './pdf-font';\nimport { PdfSubSuperScript } from './enum';\nimport { PdfArray } from './../../primitives/pdf-array';\n/**\n * `Metrics` of the font.\n * @private\n */\nvar PdfFontMetrics = /** @class */ (function () {\n function PdfFontMetrics() {\n /**\n * `Line gap`.\n * @private\n */\n this.lineGap = 0;\n }\n // Public methods\n /**\n * Returns `ascent` taking into consideration font`s size.\n * @private\n */\n PdfFontMetrics.prototype.getAscent = function (format) {\n var returnValue = this.ascent * PdfFont.charSizeMultiplier * this.getSize(format);\n return returnValue;\n };\n /**\n * Returns `descent` taking into consideration font`s size.\n * @private\n */\n PdfFontMetrics.prototype.getDescent = function (format) {\n var returnValue = this.descent * PdfFont.charSizeMultiplier * this.getSize(format);\n return returnValue;\n };\n /**\n * Returns `Line gap` taking into consideration font`s size.\n * @private\n */\n PdfFontMetrics.prototype.getLineGap = function (format) {\n var returnValue = this.lineGap * PdfFont.charSizeMultiplier * this.getSize(format);\n return returnValue;\n };\n /**\n * Returns `height` taking into consideration font`s size.\n * @private\n */\n PdfFontMetrics.prototype.getHeight = function (format) {\n var height;\n var clearTypeFonts = ['cambria', 'candara', 'constantia', 'corbel', 'cariadings'];\n var clearTypeFontCollection = [];\n for (var index = 0; index < clearTypeFonts.length; index++) {\n var font = clearTypeFonts[index];\n clearTypeFontCollection.push(font);\n }\n if (this.getDescent(format) < 0) {\n // if ((clearTypeFontCollection.indexOf(this.name.toLowerCase()) !== -1) && !this.isUnicodeFont) {\n // height = (this.GetAscent(format) - this.GetDescent(format) - this.GetLineGap(format));\n // } else {\n height = (this.getAscent(format) - this.getDescent(format) + this.getLineGap(format));\n // }\n }\n else {\n height = (this.getAscent(format) + this.getDescent(format) + this.getLineGap(format));\n }\n return height;\n };\n /**\n * Calculates `size` of the font depending on the subscript/superscript value.\n * @private\n */\n PdfFontMetrics.prototype.getSize = function (format) {\n var size = this.size;\n if (format != null) {\n switch (format.subSuperScript) {\n case PdfSubSuperScript.SubScript:\n size /= this.subScriptSizeFactor;\n break;\n case PdfSubSuperScript.SuperScript:\n size /= this.superscriptSizeFactor;\n break;\n }\n }\n return size;\n };\n /**\n * `Clones` the metrics.\n * @private\n */\n PdfFontMetrics.prototype.clone = function () {\n var metrics = this;\n metrics.widthTable = WidthTable.clone();\n return metrics;\n };\n Object.defineProperty(PdfFontMetrics.prototype, \"widthTable\", {\n // Properies\n /**\n * Gets or sets the `width table`.\n * @private\n */\n get: function () {\n return this.internalWidthTable;\n },\n set: function (value) {\n this.internalWidthTable = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfFontMetrics;\n}());\nexport { PdfFontMetrics };\nvar WidthTable = /** @class */ (function () {\n function WidthTable() {\n }\n /**\n * Static `clones` this instance of the WidthTable class.\n * @private\n */\n WidthTable.clone = function () {\n return null;\n };\n return WidthTable;\n}());\nexport { WidthTable };\nvar StandardWidthTable = /** @class */ (function (_super) {\n __extends(StandardWidthTable, _super);\n // Constructors\n /**\n * Initializes a new instance of the `StandardWidthTable` class.\n * @private\n */\n function StandardWidthTable(widths) {\n var _this = _super.call(this) || this;\n if (widths == null) {\n throw new Error('ArgumentNullException:widths');\n }\n _this.widths = widths;\n return _this;\n }\n //Properties\n /**\n * Gets the `32 bit number` at the specified index.\n * @private\n */\n StandardWidthTable.prototype.items = function (index) {\n if (index < 0 || index >= this.widths.length) {\n throw new Error('ArgumentOutOfRangeException:index, The character is not supported by the font.');\n }\n var result = this.widths[index];\n return result;\n };\n Object.defineProperty(StandardWidthTable.prototype, \"length\", {\n /**\n * Gets the `length` of the internal array.\n * @private\n */\n get: function () {\n return this.widths.length;\n },\n enumerable: true,\n configurable: true\n });\n //Overrides\n /**\n * `Clones` this instance of the WidthTable class.\n * @private\n */\n StandardWidthTable.prototype.clone = function () {\n var swt = this;\n swt.widths = this.widths;\n return swt;\n };\n /**\n * Converts width table to a `PDF array`.\n * @private\n */\n StandardWidthTable.prototype.toArray = function () {\n var arr = new PdfArray(this.widths);\n return arr;\n };\n return StandardWidthTable;\n}(WidthTable));\nexport { StandardWidthTable };\n","/**\n * TrueTypeFont.ts class for EJ2-PDF\n */\nimport { ByteArray } from './../../graphics/images/index';\nimport { TtfReader } from './ttf-reader';\nimport { PdfDictionary, SaveDescendantFontEventHandler, SaveFontDictionaryEventHandler } from './../../primitives/pdf-dictionary';\nimport { SaveFontProgramEventHandler, SaveCmapEventHandler } from './../../primitives/pdf-stream';\nimport { PdfStream } from './../../primitives/pdf-stream';\nimport { PdfArray } from './../../primitives/pdf-array';\nimport { PdfName } from './../../primitives/pdf-name';\nimport { PdfNumber } from './../../primitives/pdf-number';\nimport { PdfString } from './../../primitives/pdf-string';\nimport { PdfReferenceHolder } from './../../primitives/pdf-reference';\nimport { PdfFontMetrics } from './pdf-font-metrics';\nimport { StandardWidthTable } from './pdf-font-metrics';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { Dictionary } from './../../collections/dictionary';\nimport { FontDescriptorFlags } from './enum';\nimport { RectangleF } from './../../drawing/pdf-drawing';\nimport { Operators } from './../../input-output/pdf-operators';\nvar UnicodeTrueTypeFont = /** @class */ (function () {\n /* tslint:enable */\n //Constructors\n /**\n * Initializes a new instance of the `PdfTrueTypeFont` class.\n * @private\n */\n function UnicodeTrueTypeFont(base64String, size) {\n // Fields\n this.nameString = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';\n /**\n * Specifies the Internal variable to store fields of `PdfDictionaryProperties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Indicates whether the font program is compressed or not.\n * @private\n */\n this.isCompress = false;\n /**\n * Indicates whether the font is embedded or not.\n */\n this.isEmbedFont = false;\n /**\n * Cmap table's start prefix.\n */\n /* tslint:disable */\n this.cmapPrefix = '/CIDInit /ProcSet findresource begin\\n12 dict begin\\nbegincmap' + Operators.newLine + '/CIDSystemInfo << /Registry (Adobe)/Ordering (UCS)/Supplement 0>> def\\n/CMapName ' + '/Adobe-Identity-UCS def\\n/CMapType 2 def\\n1 begincodespacerange' + Operators.newLine;\n /* tslint:enable */\n /**\n * Cmap table's start suffix.\n */\n this.cmapEndCodespaceRange = 'endcodespacerange' + Operators.newLine;\n /**\n * Cmap's begin range marker.\n */\n this.cmapBeginRange = 'beginbfrange' + Operators.newLine;\n /**\n * Cmap's end range marker.\n */\n this.cmapEndRange = 'endbfrange' + Operators.newLine;\n /**\n * Cmap table's end\n */\n /* tslint:disable */\n this.cmapSuffix = 'endbfrange\\nendcmap\\nCMapName currentdict ' + '/CMap defineresource pop\\nend end' + Operators.newLine;\n if (base64String === null || base64String === undefined) {\n throw new Error('ArgumentNullException:base64String');\n }\n this.fontSize = size;\n this.fontString = base64String;\n this.Initialize();\n }\n //Implementation\n /**\n * Returns width of the char symbol.\n */\n UnicodeTrueTypeFont.prototype.getCharWidth = function (charCode) {\n var codeWidth = this.ttfReader.getCharWidth(charCode);\n return codeWidth;\n };\n /**\n * Returns width of the text line.\n */\n UnicodeTrueTypeFont.prototype.getLineWidth = function (line) {\n // if (line == null) {\n // throw new Error('ArgumentNullException : line');\n // }\n var width = 0;\n for (var i = 0, len = line.length; i < len; i++) {\n var ch = line[i];\n var charWidth = this.getCharWidth(ch);\n width += charWidth;\n }\n return width;\n };\n /**\n * Initializes a new instance of the `PdfTrueTypeFont` class.\n * @private\n */\n UnicodeTrueTypeFont.prototype.Initialize = function () {\n var byteArray = new ByteArray(this.fontString.length);\n byteArray.writeFromBase64String(this.fontString);\n this.fontData = byteArray.internalBuffer;\n this.ttfReader = new TtfReader(this.fontData);\n this.ttfMetrics = this.ttfReader.metrics;\n };\n UnicodeTrueTypeFont.prototype.createInternals = function () {\n this.fontDictionary = new PdfDictionary();\n this.fontProgram = new PdfStream();\n this.cmap = new PdfStream();\n this.descendantFont = new PdfDictionary();\n this.metrics = new PdfFontMetrics();\n this.ttfReader.createInternals();\n this.ttfMetrics = this.ttfReader.metrics;\n this.initializeMetrics();\n // Create all the dictionaries of the font.\n this.subsetName = this.getFontName();\n this.createDescendantFont();\n this.createCmap();\n this.createFontDictionary();\n this.createFontProgram();\n };\n UnicodeTrueTypeFont.prototype.getInternals = function () {\n return this.fontDictionary;\n };\n /**\n * Initializes metrics.\n */\n UnicodeTrueTypeFont.prototype.initializeMetrics = function () {\n var ttfMetrics = this.ttfReader.metrics;\n this.metrics.ascent = ttfMetrics.macAscent;\n this.metrics.descent = ttfMetrics.macDescent;\n this.metrics.height = ttfMetrics.macAscent - ttfMetrics.macDescent + ttfMetrics.lineGap;\n this.metrics.name = ttfMetrics.fontFamily;\n this.metrics.postScriptName = ttfMetrics.postScriptName;\n this.metrics.size = this.fontSize;\n this.metrics.widthTable = new StandardWidthTable(ttfMetrics.widthTable);\n this.metrics.lineGap = ttfMetrics.lineGap;\n this.metrics.subScriptSizeFactor = ttfMetrics.subScriptSizeFactor;\n this.metrics.superscriptSizeFactor = ttfMetrics.superscriptSizeFactor;\n this.metrics.isBold = ttfMetrics.isBold;\n };\n /**\n * Gets random string.\n */\n UnicodeTrueTypeFont.prototype.getFontName = function () {\n var builder = '';\n var name;\n // if (this.isEmbed === false) {\n for (var i = 0; i < 6; i++) {\n var index = Math.floor(Math.random() * (25 - 0 + 1)) + 0;\n builder += this.nameString[index];\n }\n builder += '+';\n // }\n builder += this.ttfReader.metrics.postScriptName;\n name = builder.toString();\n // if (name === '') {\n // name = this.ttfReader.metrics.fontFamily;\n // }\n name = this.formatName(name);\n return name;\n };\n /**\n * Generates name of the font.\n */\n UnicodeTrueTypeFont.prototype.formatName = function (fontName) {\n // if (fontName === null) {\n // throw new Error('ArgumentNullException : fontName');\n // }\n // if (fontName === '') {\n // throw new Error('ArgumentOutOfRangeException : fontName, Parameter can not be empty');\n // }\n var ret = fontName.replace('(', '#28');\n ret = ret.replace(')', '#29');\n ret = ret.replace('[', '#5B');\n ret = ret.replace(']', '#5D');\n ret = ret.replace('<', '#3C');\n ret = ret.replace('>', '#3E');\n ret = ret.replace('{', '#7B');\n ret = ret.replace('}', '#7D');\n ret = ret.replace('/', '#2F');\n ret = ret.replace('%', '#25');\n return ret.replace(' ', '#20');\n };\n /**\n * Creates descendant font.\n */\n UnicodeTrueTypeFont.prototype.createDescendantFont = function () {\n // Set property used to clone Font every time\n this.descendantFont.isResource = true;\n this.descendantFont.descendantFontBeginSave = new SaveDescendantFontEventHandler(this);\n this.descendantFont.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.font));\n this.descendantFont.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.cIDFontType2));\n this.descendantFont.items.setValue(this.dictionaryProperties.baseFont, new PdfName(this.subsetName));\n this.descendantFont.items.setValue(this.dictionaryProperties.cIDToGIDMap, new PdfName(this.dictionaryProperties.identity));\n this.descendantFont.items.setValue(this.dictionaryProperties.dw, new PdfNumber(1000));\n this.fontDescriptor = this.createFontDescriptor();\n this.descendantFont.items.setValue(this.dictionaryProperties.fontDescriptor, new PdfReferenceHolder(this.fontDescriptor));\n var systemInfo = this.createSystemInfo();\n this.descendantFont.items.setValue(this.dictionaryProperties.cIDSystemInfo, systemInfo);\n };\n /**\n * Creates font descriptor.\n */\n UnicodeTrueTypeFont.prototype.createFontDescriptor = function () {\n var descriptor = new PdfDictionary();\n var metrics = this.ttfReader.metrics;\n // Set property used to clone Font every time\n descriptor.isResource = true;\n descriptor.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.fontDescriptor));\n descriptor.items.setValue(this.dictionaryProperties.fontName, new PdfName(this.subsetName));\n descriptor.items.setValue(this.dictionaryProperties.flags, new PdfNumber(this.getDescriptorFlags()));\n descriptor.items.setValue(this.dictionaryProperties.fontBBox, PdfArray.fromRectangle(this.getBoundBox()));\n descriptor.items.setValue(this.dictionaryProperties.missingWidth, new PdfNumber(metrics.widthTable[32]));\n descriptor.items.setValue(this.dictionaryProperties.stemV, new PdfNumber(metrics.stemV));\n descriptor.items.setValue(this.dictionaryProperties.italicAngle, new PdfNumber(metrics.italicAngle));\n descriptor.items.setValue(this.dictionaryProperties.capHeight, new PdfNumber(metrics.capHeight));\n descriptor.items.setValue(this.dictionaryProperties.ascent, new PdfNumber(metrics.winAscent));\n descriptor.items.setValue(this.dictionaryProperties.descent, new PdfNumber(metrics.winDescent));\n descriptor.items.setValue(this.dictionaryProperties.leading, new PdfNumber(metrics.leading));\n descriptor.items.setValue(this.dictionaryProperties.avgWidth, new PdfNumber(metrics.widthTable[32]));\n descriptor.items.setValue(this.dictionaryProperties.fontFile2, new PdfReferenceHolder(this.fontProgram));\n descriptor.items.setValue(this.dictionaryProperties.maxWidth, new PdfNumber(metrics.widthTable[32]));\n descriptor.items.setValue(this.dictionaryProperties.xHeight, new PdfNumber(0));\n descriptor.items.setValue(this.dictionaryProperties.stemH, new PdfNumber(0));\n return descriptor;\n };\n /**\n * Generates cmap.\n * @private\n */\n UnicodeTrueTypeFont.prototype.createCmap = function () {\n this.cmap.cmapBeginSave = new SaveCmapEventHandler(this);\n };\n /**\n * Generates font dictionary.\n */\n UnicodeTrueTypeFont.prototype.createFontDictionary = function () {\n // Set property used to clone Font every time\n this.fontDictionary.isResource = true;\n this.fontDictionary.fontDictionaryBeginSave = new SaveFontDictionaryEventHandler(this);\n this.fontDictionary.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.font));\n this.fontDictionary.items.setValue(this.dictionaryProperties.baseFont, new PdfName(this.subsetName));\n this.fontDictionary.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.type0));\n this.fontDictionary.items.setValue(this.dictionaryProperties.encoding, new PdfName(this.dictionaryProperties.identityH));\n var descFonts = new PdfArray();\n var reference = new PdfReferenceHolder(this.descendantFont);\n // Set property used to clone Font every time\n descFonts.isFont = true;\n descFonts.add(reference);\n this.fontDictionary.items.setValue(this.dictionaryProperties.descendantFonts, descFonts);\n };\n /**\n * Creates font program.\n */\n UnicodeTrueTypeFont.prototype.createFontProgram = function () {\n this.fontProgram.fontProgramBeginSave = new SaveFontProgramEventHandler(this);\n };\n /**\n * Creates system info dictionary for CID font.\n * @private\n */\n UnicodeTrueTypeFont.prototype.createSystemInfo = function () {\n var systemInfo = new PdfDictionary();\n systemInfo.items.setValue(this.dictionaryProperties.registry, new PdfString('Adobe'));\n systemInfo.items.setValue(this.dictionaryProperties.ordering, new PdfString(this.dictionaryProperties.identity));\n systemInfo.items.setValue(this.dictionaryProperties.supplement, new PdfNumber(0));\n return systemInfo;\n };\n /**\n * Runs before font Dictionary will be saved.\n */\n UnicodeTrueTypeFont.prototype.descendantFontBeginSave = function () {\n if (this.usedChars !== null && this.usedChars !== undefined && this.usedChars.size() > 0) {\n var width = this.getDescendantWidth();\n if (width !== null) {\n this.descendantFont.items.setValue(this.dictionaryProperties.w, width);\n }\n }\n };\n /**\n * Runs before font Dictionary will be saved.\n */\n UnicodeTrueTypeFont.prototype.cmapBeginSave = function () {\n this.generateCmap();\n };\n /**\n * Runs before font Dictionary will be saved.\n */\n /* tslint:disable */\n UnicodeTrueTypeFont.prototype.fontDictionaryBeginSave = function () {\n if (this.usedChars !== null && this.usedChars !== undefined && this.usedChars.size() > 0 && !this.fontDictionary.containsKey(this.dictionaryProperties.toUnicode)) {\n this.fontDictionary.items.setValue(this.dictionaryProperties.toUnicode, new PdfReferenceHolder(this.cmap));\n }\n };\n /* tslint:enable */\n /**\n * Runs before font program stream save.\n */\n UnicodeTrueTypeFont.prototype.fontProgramBeginSave = function () {\n this.isCompress = true;\n this.generateFontProgram();\n };\n /**\n * Gets width description pad array for c i d font.\n */\n UnicodeTrueTypeFont.prototype.getDescendantWidth = function () {\n var array = new PdfArray();\n if (this.usedChars !== null && this.usedChars !== undefined && this.usedChars.size() > 0) {\n var glyphInfo = [];\n // if (!this.isEmbedFont) {\n var keys = this.usedChars.keys();\n for (var i = 0; i < keys.length; i++) {\n var chLen = keys[i];\n var glyph = this.ttfReader.getGlyph(chLen);\n if (glyph.empty) {\n continue;\n }\n glyphInfo.push(glyph);\n }\n // } else {\n // glyphInfo = this.ttfReader.getAllGlyphs();\n // }\n glyphInfo.sort(function (a, b) { return a.index - b.index; });\n var firstGlyphIndex = 0;\n var lastGlyphIndex = 0;\n var firstGlyphIndexWasSet = false;\n var widthDetails = new PdfArray();\n // if (!this.isEmbedFont) {\n for (var i = 0; i < glyphInfo.length; i++) {\n var glyph = glyphInfo[i];\n if (!firstGlyphIndexWasSet) {\n firstGlyphIndexWasSet = true;\n firstGlyphIndex = glyph.index;\n lastGlyphIndex = glyph.index - 1;\n }\n if ((lastGlyphIndex + 1 !== glyph.index || (i + 1 === glyphInfo.length)) && glyphInfo.length > 1) {\n // Add glyph index / width.\n array.add(new PdfNumber(firstGlyphIndex));\n if (i !== 0) {\n array.add(widthDetails);\n }\n firstGlyphIndex = glyph.index;\n widthDetails = new PdfArray();\n }\n widthDetails.add(new PdfNumber(glyph.width));\n if (i + 1 === glyphInfo.length) {\n array.add(new PdfNumber(firstGlyphIndex));\n array.add(widthDetails);\n }\n lastGlyphIndex = glyph.index;\n }\n // } else {\n // for (let i : number = 0; i < glyphInfo.length; i++) {\n // let glyph : TtfGlyphInfo = glyphInfo[i];\n // if (!firstGlyphIndexWasSet) {\n // firstGlyphIndexWasSet = true;\n // lastGlyphIndex = glyph.index - 1;\n // }\n // firstGlyphIndex = glyph.index;\n // if ((lastGlyphIndex + 1 === glyph.index || (i + 1 === glyphInfo.length)) && glyphInfo.length > 1) {\n // // Add glyph index / width.\n // widthDetails.add(new PdfNumber(glyph.width));\n // array.add(new PdfNumber(firstGlyphIndex));\n // array.add(widthDetails);\n // widthDetails = new PdfArray();\n // }\n // lastGlyphIndex = glyph.index;\n // }\n // }\n }\n return array;\n };\n /**\n * Creates cmap.\n */\n UnicodeTrueTypeFont.prototype.generateCmap = function () {\n if (this.usedChars !== null && this.usedChars !== undefined && this.usedChars.size() > 0) {\n var glyphChars = this.ttfReader.getGlyphChars(this.usedChars);\n if (glyphChars.size() > 0) {\n var keys = glyphChars.keys().sort();\n // add first and last glyph indexes\n var first = keys[0];\n var last = keys[keys.length - 1];\n var middlePart = this.toHexString(first, false) + this.toHexString(last, false) + Operators.newLine;\n var builder = '';\n builder += this.cmapPrefix;\n builder += middlePart;\n builder += this.cmapEndCodespaceRange;\n var nextRange = 0;\n for (var i = 0; i < keys.length; i++) {\n if (nextRange === 0) {\n if (i !== 0) {\n builder += this.cmapEndRange;\n }\n nextRange = Math.min(100, keys.length - i);\n builder += nextRange;\n builder += Operators.whiteSpace;\n builder += this.cmapBeginRange;\n }\n nextRange -= 1;\n var key = keys[i];\n /* tslint:disable */\n builder += this.toHexString(key, true) + this.toHexString(key, true) + this.toHexString(glyphChars.getValue(key), true) + '\\n';\n /* tslint:enable */\n }\n builder += this.cmapSuffix;\n this.cmap.clearStream();\n this.cmap.isResource = true;\n this.cmap.write(builder);\n }\n }\n };\n /**\n * Generates font program.\n */\n UnicodeTrueTypeFont.prototype.generateFontProgram = function () {\n var fontProgram = null;\n this.usedChars = (this.usedChars === null || this.usedChars === undefined) ? new Dictionary() : this.usedChars;\n this.ttfReader.setOffset(0);\n fontProgram = this.ttfReader.readFontProgram(this.usedChars);\n this.fontProgram.clearStream();\n this.fontProgram.isResource = true;\n this.fontProgram.writeBytes(fontProgram);\n };\n /**\n * Calculates flags for the font descriptor.\n * @private\n */\n UnicodeTrueTypeFont.prototype.getDescriptorFlags = function () {\n var flags = 0;\n var metrics = this.ttfReader.metrics;\n if (metrics.isFixedPitch) {\n flags |= FontDescriptorFlags.FixedPitch;\n }\n if (metrics.isSymbol) {\n flags |= FontDescriptorFlags.Symbolic;\n }\n else {\n flags |= FontDescriptorFlags.Nonsymbolic;\n }\n if (metrics.isItalic) {\n flags |= FontDescriptorFlags.Italic;\n }\n if (metrics.isBold) {\n flags |= FontDescriptorFlags.ForceBold;\n }\n return flags;\n };\n /**\n * Calculates BoundBox of the descriptor.\n * @private\n */\n UnicodeTrueTypeFont.prototype.getBoundBox = function () {\n var rect = this.ttfReader.metrics.fontBox;\n var width = Math.abs(rect.right - rect.left);\n var height = Math.abs(rect.top - rect.bottom);\n var rectangle = new RectangleF(rect.left, rect.bottom, width, height);\n return rectangle;\n };\n /**\n * Converts integer of decimal system to hex integer.\n */\n UnicodeTrueTypeFont.prototype.toHexString = function (n, isCaseChange) {\n var s = n.toString(16);\n if (isCaseChange) {\n s = s.toUpperCase();\n }\n return '<0000'.substring(0, 5 - s.length) + s + '>';\n };\n /**\n * Stores used symbols.\n */\n UnicodeTrueTypeFont.prototype.setSymbols = function (text) {\n if (text === null) {\n throw new Error('Argument Null Exception : text');\n }\n if (this.usedChars === null || this.usedChars === undefined) {\n this.usedChars = new Dictionary();\n }\n for (var i = 0; i < text.length; i++) {\n var ch = text[i];\n this.usedChars.setValue(ch, String.fromCharCode(0));\n }\n // else {\n // if (text === null) {\n // throw new Error('Argument Null Exception : glyphs');\n // }\n // if (this.usedChars === null || this.usedChars === undefined) {\n // this.usedChars = new Dictionary();\n // }\n // for (let i : number = 0; i < text.length; i++) {\n // let glyphIndex : number = text[i];\n // let glyph : TtfGlyphInfo = this.ttfReader.getGlyph(glyphIndex);\n // if (!glyph == null) {\n // let c : string = glyph.charCode.toLocaleString();\n // this.usedChars.setValue(c, String.fromCharCode(0));\n // }\n // }\n // }\n if (this.isEmbedFont === false) {\n this.getDescendantWidth();\n }\n };\n return UnicodeTrueTypeFont;\n}());\nexport { UnicodeTrueTypeFont };\n","/**\n * ArabicShapeRenderer.ts class for EJ2-PDF\n */\nimport { Dictionary } from './../../../collections/dictionary';\nvar ArabicShapeRenderer = /** @class */ (function () {\n //#endregion\n //#region Constructor\n function ArabicShapeRenderer() {\n //#region Constants\n this.arabicCharTable = [['\\u0621', '\\uFE80'], ['\\u0622', '\\uFE81', '\\uFE82'],\n ['\\u0623', '\\uFE83', '\\uFE84'],\n ['\\u0624', '\\uFE85', '\\uFE86'],\n ['\\u0625', '\\uFE87', '\\uFE88'],\n ['\\u0626', '\\uFE89', '\\uFE8A', '\\uFE8B', '\\uFE8C'],\n ['\\u0627', '\\uFE8D', '\\uFE8E'],\n ['\\u0628', '\\uFE8F', '\\uFE90', '\\uFE91', '\\uFE92'],\n ['\\u0629', '\\uFE93', '\\uFE94'],\n ['\\u062A', '\\uFE95', '\\uFE96', '\\uFE97', '\\uFE98'],\n ['\\u062B', '\\uFE99', '\\uFE9A', '\\uFE9B', '\\uFE9C'],\n ['\\u062C', '\\uFE9D', '\\uFE9E', '\\uFE9F', '\\uFEA0'],\n ['\\u062D', '\\uFEA1', '\\uFEA2', '\\uFEA3', '\\uFEA4'],\n ['\\u062E', '\\uFEA5', '\\uFEA6', '\\uFEA7', '\\uFEA8'],\n ['\\u062F', '\\uFEA9', '\\uFEAA'],\n ['\\u0630', '\\uFEAB', '\\uFEAC'],\n ['\\u0631', '\\uFEAD', '\\uFEAE'],\n ['\\u0632', '\\uFEAF', '\\uFEB0'],\n ['\\u0633', '\\uFEB1', '\\uFEB2', '\\uFEB3', '\\uFEB4'],\n ['\\u0634', '\\uFEB5', '\\uFEB6', '\\uFEB7', '\\uFEB8'],\n ['\\u0635', '\\uFEB9', '\\uFEBA', '\\uFEBB', '\\uFEBC'],\n ['\\u0636', '\\uFEBD', '\\uFEBE', '\\uFEBF', '\\uFEC0'],\n ['\\u0637', '\\uFEC1', '\\uFEC2', '\\uFEC3', '\\uFEC4'],\n ['\\u0638', '\\uFEC5', '\\uFEC6', '\\uFEC7', '\\uFEC8'],\n ['\\u0639', '\\uFEC9', '\\uFECA', '\\uFECB', '\\uFECC'],\n ['\\u063A', '\\uFECD', '\\uFECE', '\\uFECF', '\\uFED0'],\n ['\\u0640', '\\u0640', '\\u0640', '\\u0640', '\\u0640'],\n ['\\u0641', '\\uFED1', '\\uFED2', '\\uFED3', '\\uFED4'],\n ['\\u0642', '\\uFED5', '\\uFED6', '\\uFED7', '\\uFED8'],\n ['\\u0643', '\\uFED9', '\\uFEDA', '\\uFEDB', '\\uFEDC'],\n ['\\u0644', '\\uFEDD', '\\uFEDE', '\\uFEDF', '\\uFEE0'],\n ['\\u0645', '\\uFEE1', '\\uFEE2', '\\uFEE3', '\\uFEE4'],\n ['\\u0646', '\\uFEE5', '\\uFEE6', '\\uFEE7', '\\uFEE8'],\n ['\\u0647', '\\uFEE9', '\\uFEEA', '\\uFEEB', '\\uFEEC'],\n ['\\u0648', '\\uFEED', '\\uFEEE'],\n ['\\u0649', '\\uFEEF', '\\uFEF0', '\\uFBE8', '\\uFBE9'],\n ['\\u064A', '\\uFEF1', '\\uFEF2', '\\uFEF3', '\\uFEF4'],\n ['\\u0671', '\\uFB50', '\\uFB51'],\n ['\\u0679', '\\uFB66', '\\uFB67', '\\uFB68', '\\uFB69'],\n ['\\u067A', '\\uFB5E', '\\uFB5F', '\\uFB60', '\\uFB61'],\n ['\\u067B', '\\uFB52', '\\uFB53', '\\uFB54', '\\uFB55'],\n ['\\u067E', '\\uFB56', '\\uFB57', '\\uFB58', '\\uFB59'],\n ['\\u067F', '\\uFB62', '\\uFB63', '\\uFB64', '\\uFB65'],\n ['\\u0680', '\\uFB5A', '\\uFB5B', '\\uFB5C', '\\uFB5D'],\n ['\\u0683', '\\uFB76', '\\uFB77', '\\uFB78', '\\uFB79'],\n ['\\u0684', '\\uFB72', '\\uFB73', '\\uFB74', '\\uFB75'],\n ['\\u0686', '\\uFB7A', '\\uFB7B', '\\uFB7C', '\\uFB7D'],\n ['\\u0687', '\\uFB7E', '\\uFB7F', '\\uFB80', '\\uFB81'],\n ['\\u0688', '\\uFB88', '\\uFB89'],\n ['\\u068C', '\\uFB84', '\\uFB85'],\n ['\\u068D', '\\uFB82', '\\uFB83'],\n ['\\u068E', '\\uFB86', '\\uFB87'],\n ['\\u0691', '\\uFB8C', '\\uFB8D'],\n ['\\u0698', '\\uFB8A', '\\uFB8B'],\n ['\\u06A4', '\\uFB6A', '\\uFB6B', '\\uFB6C', '\\uFB6D'],\n ['\\u06A6', '\\uFB6E', '\\uFB6F', '\\uFB70', '\\uFB71'],\n ['\\u06A9', '\\uFB8E', '\\uFB8F', '\\uFB90', '\\uFB91'],\n ['\\u06AD', '\\uFBD3', '\\uFBD4', '\\uFBD5', '\\uFBD6'],\n ['\\u06AF', '\\uFB92', '\\uFB93', '\\uFB94', '\\uFB95'],\n ['\\u06B1', '\\uFB9A', '\\uFB9B', '\\uFB9C', '\\uFB9D'],\n ['\\u06B3', '\\uFB96', '\\uFB97', '\\uFB98', '\\uFB99'],\n ['\\u06BA', '\\uFB9E', '\\uFB9F'],\n ['\\u06BB', '\\uFBA0', '\\uFBA1', '\\uFBA2', '\\uFBA3'],\n ['\\u06BE', '\\uFBAA', '\\uFBAB', '\\uFBAC', '\\uFBAD'],\n ['\\u06C0', '\\uFBA4', '\\uFBA5'],\n ['\\u06C1', '\\uFBA6', '\\uFBA7', '\\uFBA8', '\\uFBA9'],\n ['\\u06C5', '\\uFBE0', '\\uFBE1'],\n ['\\u06C6', '\\uFBD9', '\\uFBDA'],\n ['\\u06C7', '\\uFBD7', '\\uFBD8'],\n ['\\u06C8', '\\uFBDB', '\\uFBDC'],\n ['\\u06C9', '\\uFBE2', '\\uFBE3'],\n ['\\u06CB', '\\uFBDE', '\\uFBDF'],\n ['\\u06CC', '\\uFBFC', '\\uFBFD', '\\uFBFE', '\\uFBFF'],\n ['\\u06D0', '\\uFBE4', '\\uFBE5', '\\uFBE6', '\\uFBE7'],\n ['\\u06D2', '\\uFBAE', '\\uFBAF'],\n ['\\u06D3', '\\uFBB0', '\\uFBB1']\n ];\n this.alef = '\\u0627';\n this.alefHamza = '\\u0623';\n this.alefHamzaBelow = '\\u0625';\n this.alefMadda = '\\u0622';\n this.lam = '\\u0644';\n this.hamza = '\\u0621';\n this.zeroWidthJoiner = '\\u200D';\n this.hamzaAbove = '\\u0654';\n this.hamzaBelow = '\\u0655';\n this.wawHamza = '\\u0624';\n this.yehHamza = '\\u0626';\n this.waw = '\\u0648';\n this.alefMaksura = '\\u0649';\n this.yeh = '\\u064A';\n this.farsiYeh = '\\u06CC';\n this.shadda = '\\u0651';\n this.madda = '\\u0653';\n this.lwa = '\\uFEFB';\n this.lwawh = '\\uFEF7';\n this.lwawhb = '\\uFEF9';\n this.lwawm = '\\uFEF5';\n this.bwhb = '\\u06D3';\n this.fathatan = '\\u064B';\n this.superScriptalef = '\\u0670';\n this.vowel = 0x1;\n // #endregion\n //#region Fields\n this.arabicMapTable = new Dictionary();\n for (var i = 0; i < this.arabicCharTable.length; i++) {\n this.arabicMapTable.setValue(this.arabicCharTable[i][0], this.arabicCharTable[i]);\n }\n }\n //#endregion\n //#region implementation\n ArabicShapeRenderer.prototype.getCharacterShape = function (input, index) {\n if ((input >= this.hamza) && (input <= this.bwhb)) {\n var value = [];\n if (this.arabicMapTable.getValue(input)) {\n value = this.arabicMapTable.getValue(input);\n return value[index + 1];\n }\n }\n else if (input >= this.lwawm && input <= this.lwa) {\n return (input);\n }\n return input;\n };\n ArabicShapeRenderer.prototype.shape = function (text, level) {\n var builder = '';\n var str2 = '';\n for (var i = 0; i < text.length; i++) {\n var c = text[i];\n if (c >= '؀' && c <= 'ۿ') {\n //if(c>= 0x0600.toString() && c<= 0x06FF.toString()) {\n str2 = str2 + c;\n }\n else {\n if (str2.length > 0) {\n var st = this.doShape(str2.toString(), 0);\n builder = builder + st;\n str2 = '';\n }\n builder = builder + c;\n }\n }\n if (str2.length > 0) {\n var st = this.doShape(str2.toString(), 0);\n builder = builder + st;\n }\n return builder.toString();\n };\n ArabicShapeRenderer.prototype.doShape = function (input, level) {\n var str = '';\n var ligature = 0;\n var len = 0;\n var i = 0;\n var next = '';\n var previous = new ArabicShape();\n var present = new ArabicShape();\n while (i < input.length) {\n next = input[i++];\n ligature = this.ligature(next, present);\n if (ligature === 0) {\n var shapeCount = this.getShapeCount(next);\n len = (shapeCount === 1) ? 0 : 2;\n if (previous.Shapes > 2) {\n len += 1;\n }\n len = len % (present.Shapes);\n present.Value = this.getCharacterShape(present.Value, len);\n str = this.append(str, previous, level);\n previous = present;\n present = new ArabicShape();\n present.Value = next;\n present.Shapes = shapeCount;\n present.Ligature++;\n }\n }\n len = (previous.Shapes > 2) ? 1 : 0;\n len = len % (present.Shapes);\n present.Value = this.getCharacterShape(present.Value, len);\n str = this.append(str, previous, level);\n str = this.append(str, present, level);\n return str.toString();\n };\n ArabicShapeRenderer.prototype.append = function (builder, shape, level) {\n if (shape.Value !== '') {\n builder = builder + shape.Value;\n shape.Ligature -= 1;\n if (shape.Type !== '') {\n if ((level & this.vowel) === 0) {\n builder = builder + shape.Type;\n shape.Ligature -= 1;\n }\n else {\n shape.Ligature -= 1;\n }\n }\n if (shape.vowel !== '') {\n if ((level & this.vowel) === 0) {\n builder = builder + shape.vowel;\n shape.Ligature -= 1;\n }\n else {\n shape.Ligature -= 1;\n }\n }\n }\n return builder;\n };\n ArabicShapeRenderer.prototype.ligature = function (value, shape) {\n if (shape.Value !== '') {\n var result = 0;\n if ((value >= this.fathatan && value <= this.hamzaBelow) || value === this.superScriptalef) {\n result = 1;\n if ((shape.vowel !== '') && (value !== this.shadda)) {\n result = 2;\n }\n if (value === this.shadda) {\n if (shape.Type == null) {\n shape.Type = this.shadda;\n }\n else {\n return 0;\n }\n }\n else if (value === this.hamzaBelow) {\n if (shape.Value === this.alef) {\n shape.Value = this.alefHamzaBelow;\n result = 2;\n }\n else if (value === this.lwa) {\n shape.Value = this.lwawhb;\n result = 2;\n }\n else {\n shape.Type = this.hamzaBelow;\n }\n }\n else if (value === this.hamzaAbove) {\n if (shape.Value === this.alef) {\n shape.Value = this.alefHamza;\n result = 2;\n }\n else if (shape.Value === this.lwa) {\n shape.Value = this.lwawh;\n result = 2;\n }\n else if (shape.Value === this.waw) {\n shape.Value = this.wawHamza;\n result = 2;\n }\n else if (shape.Value === this.yeh || shape.Value === this.alefMaksura || shape.Value === this.farsiYeh) {\n shape.Value = this.yehHamza;\n result = 2;\n }\n else {\n shape.Type = this.hamzaAbove;\n }\n }\n else if (value === this.madda) {\n if (shape.Value === this.alef) {\n shape.Value = this.alefMadda;\n result = 2;\n }\n }\n else {\n shape.vowel = value;\n }\n if (result === 1) {\n shape.Ligature++;\n }\n return result;\n }\n if (shape.vowel !== '') {\n return 0;\n }\n if (shape.Value === this.lam) {\n if (value === this.alef) {\n shape.Value = this.lwa;\n shape.Shapes = 2;\n result = 3;\n }\n else if (value === this.alefHamza) {\n shape.Value = this.lwawh;\n shape.Shapes = 2;\n result = 3;\n }\n else if (value === this.alefHamzaBelow) {\n shape.Value = this.lwawhb;\n shape.Shapes = 2;\n result = 3;\n }\n else if (value === this.alefMadda) {\n shape.Value = this.lwawm;\n shape.Shapes = 2;\n result = 3;\n }\n }\n // else if (shape.Value === '') {\n // shape.Value = value;\n // shape.Shapes = this.getShapeCount(value);\n // result = 1;\n // }\n return result;\n }\n else {\n return 0;\n }\n };\n ArabicShapeRenderer.prototype.getShapeCount = function (shape) {\n if ((shape >= this.hamza) && (shape <= this.bwhb) && !((shape >= this.fathatan && shape <= this.hamzaBelow)\n || shape === this.superScriptalef)) {\n var c = [];\n if (this.arabicMapTable.getValue(shape)) {\n c = this.arabicMapTable.getValue(shape);\n return c.length - 1;\n }\n }\n else if (shape === this.zeroWidthJoiner) {\n return 4;\n }\n return 1;\n };\n return ArabicShapeRenderer;\n}());\nexport { ArabicShapeRenderer };\n//#endregion\n//#region Internals\nvar ArabicShape = /** @class */ (function () {\n function ArabicShape() {\n //#region Fields\n this.shapeValue = '';\n this.shapeType = '';\n this.shapeVowel = '';\n this.shapeLigature = 0;\n this.shapeShapes = 1;\n //#endregion\n }\n Object.defineProperty(ArabicShape.prototype, \"Value\", {\n //#endregion\n //#region Properties \n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeValue;\n },\n set: function (value) {\n this.shapeValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ArabicShape.prototype, \"Type\", {\n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeType;\n },\n set: function (value) {\n this.shapeType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ArabicShape.prototype, \"vowel\", {\n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeVowel;\n },\n set: function (value) {\n this.shapeVowel = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ArabicShape.prototype, \"Ligature\", {\n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeLigature;\n },\n set: function (value) {\n this.shapeLigature = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ArabicShape.prototype, \"Shapes\", {\n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeShapes;\n },\n set: function (value) {\n this.shapeShapes = value;\n },\n enumerable: true,\n configurable: true\n });\n return ArabicShape;\n}());\nexport { ArabicShape };\n//#endregion\n","/**\n * Bidi.ts class for EJ2-PDF\n */\nimport { Dictionary } from './../../../collections/dictionary';\n/**\n * `Metrics` of the font.\n * @private\n */\nvar Bidi = /** @class */ (function () {\n //#endregion\n //#region Constructor\n function Bidi() {\n //#region Fields\n this.indexes = [];\n this.indexLevels = [];\n this.mirroringShapeCharacters = new Dictionary();\n this.update();\n }\n //#endregion\n //#region implementation\n Bidi.prototype.doMirrorShaping = function (text) {\n var result = [];\n for (var i = 0; i < text.length; i++) {\n if (((this.indexLevels[i] & 1) === 1) && this.mirroringShapeCharacters.containsKey(text[i].charCodeAt(0))) {\n result[i] = String.fromCharCode(this.mirroringShapeCharacters.getValue(text[i].charCodeAt(0)));\n }\n else {\n result[i] = text[i].toString();\n }\n }\n var res = '';\n for (var j = 0; j < result.length; j++) {\n res = res + result[j];\n }\n return res;\n };\n Bidi.prototype.getLogicalToVisualString = function (inputText, isRtl) {\n var rtlCharacters = new RtlCharacters();\n this.indexLevels = rtlCharacters.getVisualOrder(inputText, isRtl);\n this.setDefaultIndexLevel();\n this.doOrder(0, this.indexLevels.length - 1);\n var text = this.doMirrorShaping(inputText);\n //let text : string = inputText;\n var resultBuilder = '';\n for (var i = 0; i < this.indexes.length; i++) {\n var index = this.indexes[i];\n resultBuilder += text[index];\n }\n return resultBuilder.toString();\n };\n Bidi.prototype.setDefaultIndexLevel = function () {\n for (var i = 0; i < this.indexLevels.length; i++) {\n this.indexes[i] = i;\n }\n };\n Bidi.prototype.doOrder = function (sIndex, eIndex) {\n var max = this.indexLevels[sIndex];\n var min = max;\n var odd = max;\n var even = max;\n for (var i = sIndex + 1; i <= eIndex; ++i) {\n var data = this.indexLevels[i];\n if (data > max) {\n max = data;\n }\n else if (data < min) {\n min = data;\n }\n odd &= data;\n even |= data;\n }\n if ((even & 1) === 0) {\n return;\n }\n if ((odd & 1) === 1) {\n this.reArrange(sIndex, eIndex + 1);\n return;\n }\n min |= 1;\n while (max >= min) {\n var pstart = sIndex;\n /*tslint:disable:no-constant-condition */\n while (true) {\n while (pstart <= eIndex) {\n if (this.indexLevels[pstart] >= max) {\n break;\n }\n pstart += 1;\n }\n if (pstart > eIndex) {\n break;\n }\n var pend = pstart + 1;\n while (pend <= eIndex) {\n if (this.indexLevels[pend] < max) {\n break;\n }\n pend += 1;\n }\n this.reArrange(pstart, pend);\n pstart = pend + 1;\n }\n max -= 1;\n }\n };\n Bidi.prototype.reArrange = function (i, j) {\n var length = (i + j) / 2;\n --j;\n for (; i < length; ++i, --j) {\n var temp = this.indexes[i];\n this.indexes[i] = this.indexes[j];\n this.indexes[j] = temp;\n }\n };\n Bidi.prototype.update = function () {\n this.mirroringShapeCharacters.setValue(40, 41);\n this.mirroringShapeCharacters.setValue(41, 40);\n this.mirroringShapeCharacters.setValue(60, 62);\n this.mirroringShapeCharacters.setValue(62, 60);\n this.mirroringShapeCharacters.setValue(91, 93);\n this.mirroringShapeCharacters.setValue(93, 91);\n this.mirroringShapeCharacters.setValue(123, 125);\n this.mirroringShapeCharacters.setValue(125, 123);\n this.mirroringShapeCharacters.setValue(171, 187);\n this.mirroringShapeCharacters.setValue(187, 171);\n this.mirroringShapeCharacters.setValue(8249, 8250);\n this.mirroringShapeCharacters.setValue(8250, 8249);\n this.mirroringShapeCharacters.setValue(8261, 8262);\n this.mirroringShapeCharacters.setValue(8262, 8261);\n this.mirroringShapeCharacters.setValue(8317, 8318);\n this.mirroringShapeCharacters.setValue(8318, 8317);\n this.mirroringShapeCharacters.setValue(8333, 8334);\n this.mirroringShapeCharacters.setValue(8334, 8333);\n this.mirroringShapeCharacters.setValue(8712, 8715);\n this.mirroringShapeCharacters.setValue(8713, 8716);\n this.mirroringShapeCharacters.setValue(8714, 8717);\n this.mirroringShapeCharacters.setValue(8715, 8712);\n this.mirroringShapeCharacters.setValue(8716, 8713);\n this.mirroringShapeCharacters.setValue(8717, 8714);\n this.mirroringShapeCharacters.setValue(8725, 10741);\n this.mirroringShapeCharacters.setValue(8764, 8765);\n this.mirroringShapeCharacters.setValue(8765, 8764);\n this.mirroringShapeCharacters.setValue(8771, 8909);\n this.mirroringShapeCharacters.setValue(8786, 8787);\n this.mirroringShapeCharacters.setValue(8787, 8786);\n this.mirroringShapeCharacters.setValue(8788, 8789);\n this.mirroringShapeCharacters.setValue(8789, 8788);\n this.mirroringShapeCharacters.setValue(8804, 8805);\n this.mirroringShapeCharacters.setValue(8805, 8804);\n this.mirroringShapeCharacters.setValue(8806, 8807);\n this.mirroringShapeCharacters.setValue(8807, 8806);\n this.mirroringShapeCharacters.setValue(8808, 8809);\n this.mirroringShapeCharacters.setValue(8809, 8808);\n this.mirroringShapeCharacters.setValue(8810, 8811);\n this.mirroringShapeCharacters.setValue(8811, 8810);\n this.mirroringShapeCharacters.setValue(8814, 8815);\n this.mirroringShapeCharacters.setValue(8815, 8814);\n this.mirroringShapeCharacters.setValue(8816, 8817);\n this.mirroringShapeCharacters.setValue(8817, 8816);\n this.mirroringShapeCharacters.setValue(8818, 8819);\n this.mirroringShapeCharacters.setValue(8819, 8818);\n this.mirroringShapeCharacters.setValue(8820, 8821);\n this.mirroringShapeCharacters.setValue(8821, 8820);\n this.mirroringShapeCharacters.setValue(8822, 8823);\n this.mirroringShapeCharacters.setValue(8823, 8822);\n this.mirroringShapeCharacters.setValue(8824, 8825);\n this.mirroringShapeCharacters.setValue(8825, 8824);\n this.mirroringShapeCharacters.setValue(8826, 8827);\n this.mirroringShapeCharacters.setValue(8827, 8826);\n this.mirroringShapeCharacters.setValue(8828, 8829);\n this.mirroringShapeCharacters.setValue(8829, 8828);\n this.mirroringShapeCharacters.setValue(8830, 8831);\n this.mirroringShapeCharacters.setValue(8831, 8830);\n this.mirroringShapeCharacters.setValue(8832, 8833);\n this.mirroringShapeCharacters.setValue(8833, 8832);\n this.mirroringShapeCharacters.setValue(8834, 8835);\n this.mirroringShapeCharacters.setValue(8835, 8834);\n this.mirroringShapeCharacters.setValue(8836, 8837);\n this.mirroringShapeCharacters.setValue(8837, 8836);\n this.mirroringShapeCharacters.setValue(8838, 8839);\n this.mirroringShapeCharacters.setValue(8839, 8838);\n this.mirroringShapeCharacters.setValue(8840, 8841);\n this.mirroringShapeCharacters.setValue(8841, 8840);\n this.mirroringShapeCharacters.setValue(8842, 8843);\n this.mirroringShapeCharacters.setValue(8843, 8842);\n this.mirroringShapeCharacters.setValue(8847, 8848);\n this.mirroringShapeCharacters.setValue(8848, 8847);\n this.mirroringShapeCharacters.setValue(8849, 8850);\n this.mirroringShapeCharacters.setValue(8850, 8849);\n this.mirroringShapeCharacters.setValue(8856, 10680);\n this.mirroringShapeCharacters.setValue(8866, 8867);\n this.mirroringShapeCharacters.setValue(8867, 8866);\n this.mirroringShapeCharacters.setValue(8870, 10974);\n this.mirroringShapeCharacters.setValue(8872, 10980);\n this.mirroringShapeCharacters.setValue(8873, 10979);\n this.mirroringShapeCharacters.setValue(8875, 10981);\n this.mirroringShapeCharacters.setValue(8880, 8881);\n this.mirroringShapeCharacters.setValue(8881, 8880);\n this.mirroringShapeCharacters.setValue(8882, 8883);\n this.mirroringShapeCharacters.setValue(8883, 8882);\n this.mirroringShapeCharacters.setValue(8884, 8885);\n this.mirroringShapeCharacters.setValue(8885, 8884);\n /*tslint:disable:max-func-body-length */\n this.mirroringShapeCharacters.setValue(8886, 8887);\n this.mirroringShapeCharacters.setValue(8887, 8886);\n this.mirroringShapeCharacters.setValue(8905, 8906);\n this.mirroringShapeCharacters.setValue(8906, 8905);\n this.mirroringShapeCharacters.setValue(8907, 8908);\n this.mirroringShapeCharacters.setValue(8908, 8907);\n this.mirroringShapeCharacters.setValue(8909, 8771);\n this.mirroringShapeCharacters.setValue(8912, 8913);\n this.mirroringShapeCharacters.setValue(8913, 8912);\n this.mirroringShapeCharacters.setValue(8918, 8919);\n this.mirroringShapeCharacters.setValue(8919, 8918);\n this.mirroringShapeCharacters.setValue(8920, 8921);\n this.mirroringShapeCharacters.setValue(8921, 8920);\n this.mirroringShapeCharacters.setValue(8922, 8923);\n this.mirroringShapeCharacters.setValue(8923, 8922);\n this.mirroringShapeCharacters.setValue(8924, 8925);\n this.mirroringShapeCharacters.setValue(8925, 8924);\n this.mirroringShapeCharacters.setValue(8926, 8927);\n this.mirroringShapeCharacters.setValue(8927, 8926);\n this.mirroringShapeCharacters.setValue(8928, 8929);\n this.mirroringShapeCharacters.setValue(8929, 8928);\n this.mirroringShapeCharacters.setValue(8930, 8931);\n this.mirroringShapeCharacters.setValue(8931, 8930);\n this.mirroringShapeCharacters.setValue(8932, 8933);\n this.mirroringShapeCharacters.setValue(8933, 8932);\n this.mirroringShapeCharacters.setValue(8934, 8935);\n this.mirroringShapeCharacters.setValue(8935, 8934);\n this.mirroringShapeCharacters.setValue(8936, 8937);\n this.mirroringShapeCharacters.setValue(8937, 8936);\n this.mirroringShapeCharacters.setValue(8938, 8939);\n this.mirroringShapeCharacters.setValue(8939, 8938);\n this.mirroringShapeCharacters.setValue(8940, 8941);\n this.mirroringShapeCharacters.setValue(8941, 8940);\n this.mirroringShapeCharacters.setValue(8944, 8945);\n this.mirroringShapeCharacters.setValue(8945, 8944);\n this.mirroringShapeCharacters.setValue(8946, 8954);\n this.mirroringShapeCharacters.setValue(8947, 8955);\n this.mirroringShapeCharacters.setValue(8948, 8956);\n this.mirroringShapeCharacters.setValue(8950, 8957);\n this.mirroringShapeCharacters.setValue(8951, 8958);\n this.mirroringShapeCharacters.setValue(8954, 8946);\n this.mirroringShapeCharacters.setValue(8955, 8947);\n this.mirroringShapeCharacters.setValue(8956, 8948);\n this.mirroringShapeCharacters.setValue(8957, 8950);\n this.mirroringShapeCharacters.setValue(8958, 8951);\n this.mirroringShapeCharacters.setValue(8968, 8969);\n this.mirroringShapeCharacters.setValue(8969, 8968);\n this.mirroringShapeCharacters.setValue(8970, 8971);\n this.mirroringShapeCharacters.setValue(8971, 8970);\n this.mirroringShapeCharacters.setValue(9001, 9002);\n this.mirroringShapeCharacters.setValue(9002, 9001);\n this.mirroringShapeCharacters.setValue(10088, 10089);\n this.mirroringShapeCharacters.setValue(10089, 10088);\n this.mirroringShapeCharacters.setValue(10090, 10091);\n this.mirroringShapeCharacters.setValue(10091, 10090);\n this.mirroringShapeCharacters.setValue(10092, 10093);\n this.mirroringShapeCharacters.setValue(10093, 10092);\n this.mirroringShapeCharacters.setValue(10094, 10095);\n this.mirroringShapeCharacters.setValue(10095, 10094);\n this.mirroringShapeCharacters.setValue(10096, 10097);\n this.mirroringShapeCharacters.setValue(10097, 10096);\n this.mirroringShapeCharacters.setValue(10098, 10099);\n this.mirroringShapeCharacters.setValue(10099, 10098);\n this.mirroringShapeCharacters.setValue(10100, 10101);\n this.mirroringShapeCharacters.setValue(10101, 10100);\n this.mirroringShapeCharacters.setValue(10197, 10198);\n this.mirroringShapeCharacters.setValue(10198, 10197);\n this.mirroringShapeCharacters.setValue(10205, 10206);\n this.mirroringShapeCharacters.setValue(10206, 10205);\n this.mirroringShapeCharacters.setValue(10210, 10211);\n this.mirroringShapeCharacters.setValue(10211, 10210);\n this.mirroringShapeCharacters.setValue(10212, 10213);\n this.mirroringShapeCharacters.setValue(10213, 10212);\n this.mirroringShapeCharacters.setValue(10214, 10215);\n this.mirroringShapeCharacters.setValue(10215, 10214);\n this.mirroringShapeCharacters.setValue(10216, 10217);\n this.mirroringShapeCharacters.setValue(10217, 10216);\n this.mirroringShapeCharacters.setValue(10218, 10219);\n this.mirroringShapeCharacters.setValue(10219, 10218);\n this.mirroringShapeCharacters.setValue(10627, 10628);\n this.mirroringShapeCharacters.setValue(10628, 10627);\n this.mirroringShapeCharacters.setValue(10629, 10630);\n this.mirroringShapeCharacters.setValue(10630, 10629);\n this.mirroringShapeCharacters.setValue(10631, 10632);\n this.mirroringShapeCharacters.setValue(10632, 10631);\n this.mirroringShapeCharacters.setValue(10633, 10634);\n this.mirroringShapeCharacters.setValue(10634, 10633);\n this.mirroringShapeCharacters.setValue(10635, 10636);\n this.mirroringShapeCharacters.setValue(10636, 10635);\n this.mirroringShapeCharacters.setValue(10637, 10640);\n this.mirroringShapeCharacters.setValue(10638, 10639);\n this.mirroringShapeCharacters.setValue(10639, 10638);\n this.mirroringShapeCharacters.setValue(10640, 10637);\n this.mirroringShapeCharacters.setValue(10641, 10642);\n this.mirroringShapeCharacters.setValue(10642, 10641);\n this.mirroringShapeCharacters.setValue(10643, 10644);\n this.mirroringShapeCharacters.setValue(10644, 10643);\n this.mirroringShapeCharacters.setValue(10645, 10646);\n this.mirroringShapeCharacters.setValue(10646, 10645);\n this.mirroringShapeCharacters.setValue(10647, 10648);\n this.mirroringShapeCharacters.setValue(10648, 10647);\n this.mirroringShapeCharacters.setValue(10680, 8856);\n this.mirroringShapeCharacters.setValue(10688, 10689);\n this.mirroringShapeCharacters.setValue(10689, 10688);\n this.mirroringShapeCharacters.setValue(10692, 10693);\n this.mirroringShapeCharacters.setValue(10693, 10692);\n this.mirroringShapeCharacters.setValue(10703, 10704);\n this.mirroringShapeCharacters.setValue(10704, 10703);\n this.mirroringShapeCharacters.setValue(10705, 10706);\n this.mirroringShapeCharacters.setValue(10706, 10705);\n this.mirroringShapeCharacters.setValue(10708, 10709);\n this.mirroringShapeCharacters.setValue(10709, 10708);\n this.mirroringShapeCharacters.setValue(10712, 10713);\n this.mirroringShapeCharacters.setValue(10713, 10712);\n this.mirroringShapeCharacters.setValue(10714, 10715);\n this.mirroringShapeCharacters.setValue(10715, 10714);\n this.mirroringShapeCharacters.setValue(10741, 8725);\n this.mirroringShapeCharacters.setValue(10744, 10745);\n this.mirroringShapeCharacters.setValue(10745, 10744);\n this.mirroringShapeCharacters.setValue(10748, 10749);\n this.mirroringShapeCharacters.setValue(10749, 10748);\n this.mirroringShapeCharacters.setValue(10795, 10796);\n this.mirroringShapeCharacters.setValue(10796, 10795);\n this.mirroringShapeCharacters.setValue(10797, 10796);\n this.mirroringShapeCharacters.setValue(10798, 10797);\n this.mirroringShapeCharacters.setValue(10804, 10805);\n this.mirroringShapeCharacters.setValue(10805, 10804);\n this.mirroringShapeCharacters.setValue(10812, 10813);\n this.mirroringShapeCharacters.setValue(10813, 10812);\n this.mirroringShapeCharacters.setValue(10852, 10853);\n this.mirroringShapeCharacters.setValue(10853, 10852);\n this.mirroringShapeCharacters.setValue(10873, 10874);\n this.mirroringShapeCharacters.setValue(10874, 10873);\n this.mirroringShapeCharacters.setValue(10877, 10878);\n this.mirroringShapeCharacters.setValue(10878, 10877);\n this.mirroringShapeCharacters.setValue(10879, 10880);\n this.mirroringShapeCharacters.setValue(10880, 10879);\n this.mirroringShapeCharacters.setValue(10881, 10882);\n this.mirroringShapeCharacters.setValue(10882, 10881);\n this.mirroringShapeCharacters.setValue(10883, 10884);\n this.mirroringShapeCharacters.setValue(10884, 10883);\n this.mirroringShapeCharacters.setValue(10891, 10892);\n this.mirroringShapeCharacters.setValue(10892, 10891);\n this.mirroringShapeCharacters.setValue(10897, 10898);\n this.mirroringShapeCharacters.setValue(10898, 10897);\n this.mirroringShapeCharacters.setValue(10899, 10900);\n this.mirroringShapeCharacters.setValue(10900, 10899);\n this.mirroringShapeCharacters.setValue(10901, 10902);\n this.mirroringShapeCharacters.setValue(10902, 10901);\n this.mirroringShapeCharacters.setValue(10903, 10904);\n this.mirroringShapeCharacters.setValue(10904, 10903);\n this.mirroringShapeCharacters.setValue(10905, 10906);\n this.mirroringShapeCharacters.setValue(10906, 10905);\n this.mirroringShapeCharacters.setValue(10907, 10908);\n this.mirroringShapeCharacters.setValue(10908, 10907);\n this.mirroringShapeCharacters.setValue(10913, 10914);\n this.mirroringShapeCharacters.setValue(10914, 10913);\n this.mirroringShapeCharacters.setValue(10918, 10919);\n this.mirroringShapeCharacters.setValue(10919, 10918);\n this.mirroringShapeCharacters.setValue(10920, 10921);\n this.mirroringShapeCharacters.setValue(10921, 10920);\n this.mirroringShapeCharacters.setValue(10922, 10923);\n this.mirroringShapeCharacters.setValue(10923, 10922);\n this.mirroringShapeCharacters.setValue(10924, 10925);\n this.mirroringShapeCharacters.setValue(10925, 10924);\n this.mirroringShapeCharacters.setValue(10927, 10928);\n this.mirroringShapeCharacters.setValue(10928, 10927);\n this.mirroringShapeCharacters.setValue(10931, 10932);\n this.mirroringShapeCharacters.setValue(10932, 10931);\n this.mirroringShapeCharacters.setValue(10939, 10940);\n this.mirroringShapeCharacters.setValue(10940, 10939);\n this.mirroringShapeCharacters.setValue(10941, 10942);\n this.mirroringShapeCharacters.setValue(10942, 10941);\n this.mirroringShapeCharacters.setValue(10943, 10944);\n this.mirroringShapeCharacters.setValue(10944, 10943);\n this.mirroringShapeCharacters.setValue(10945, 10946);\n this.mirroringShapeCharacters.setValue(10946, 10945);\n this.mirroringShapeCharacters.setValue(10947, 10948);\n this.mirroringShapeCharacters.setValue(10948, 10947);\n this.mirroringShapeCharacters.setValue(10949, 10950);\n this.mirroringShapeCharacters.setValue(10950, 10949);\n this.mirroringShapeCharacters.setValue(10957, 10958);\n this.mirroringShapeCharacters.setValue(10958, 10957);\n this.mirroringShapeCharacters.setValue(10959, 10960);\n this.mirroringShapeCharacters.setValue(10960, 10959);\n this.mirroringShapeCharacters.setValue(10961, 10962);\n this.mirroringShapeCharacters.setValue(10962, 10961);\n this.mirroringShapeCharacters.setValue(10963, 10964);\n this.mirroringShapeCharacters.setValue(10964, 10963);\n this.mirroringShapeCharacters.setValue(10965, 10966);\n this.mirroringShapeCharacters.setValue(10966, 10965);\n this.mirroringShapeCharacters.setValue(10974, 8870);\n this.mirroringShapeCharacters.setValue(10979, 8873);\n this.mirroringShapeCharacters.setValue(10980, 8872);\n this.mirroringShapeCharacters.setValue(10981, 8875);\n this.mirroringShapeCharacters.setValue(10988, 10989);\n this.mirroringShapeCharacters.setValue(10989, 10988);\n this.mirroringShapeCharacters.setValue(10999, 11000);\n this.mirroringShapeCharacters.setValue(11000, 10999);\n this.mirroringShapeCharacters.setValue(11001, 11002);\n this.mirroringShapeCharacters.setValue(11002, 11001);\n this.mirroringShapeCharacters.setValue(12296, 12297);\n this.mirroringShapeCharacters.setValue(12297, 12296);\n this.mirroringShapeCharacters.setValue(12298, 12299);\n this.mirroringShapeCharacters.setValue(12299, 12298);\n this.mirroringShapeCharacters.setValue(12300, 12301);\n this.mirroringShapeCharacters.setValue(12301, 12300);\n this.mirroringShapeCharacters.setValue(12302, 12303);\n this.mirroringShapeCharacters.setValue(12303, 12302);\n this.mirroringShapeCharacters.setValue(12304, 12305);\n this.mirroringShapeCharacters.setValue(12305, 12304);\n this.mirroringShapeCharacters.setValue(12308, 12309);\n this.mirroringShapeCharacters.setValue(12309, 12308);\n this.mirroringShapeCharacters.setValue(12310, 12311);\n this.mirroringShapeCharacters.setValue(12311, 12310);\n this.mirroringShapeCharacters.setValue(12312, 12313);\n this.mirroringShapeCharacters.setValue(12313, 12312);\n this.mirroringShapeCharacters.setValue(12314, 12315);\n this.mirroringShapeCharacters.setValue(12315, 12314);\n this.mirroringShapeCharacters.setValue(65288, 65289);\n this.mirroringShapeCharacters.setValue(65289, 65288);\n this.mirroringShapeCharacters.setValue(65308, 65310);\n this.mirroringShapeCharacters.setValue(65310, 65308);\n this.mirroringShapeCharacters.setValue(65339, 65341);\n this.mirroringShapeCharacters.setValue(65341, 65339);\n this.mirroringShapeCharacters.setValue(65371, 65373);\n this.mirroringShapeCharacters.setValue(65373, 65371);\n this.mirroringShapeCharacters.setValue(65375, 65376);\n this.mirroringShapeCharacters.setValue(65376, 65375);\n this.mirroringShapeCharacters.setValue(65378, 65379);\n this.mirroringShapeCharacters.setValue(65379, 65378);\n };\n return Bidi;\n}());\nexport { Bidi };\nvar RtlCharacters = /** @class */ (function () {\n //#endregion\n //#region constructors\n function RtlCharacters() {\n //#region fields\n /// \n /// Specifies the character types.\n /// \n this.types = [];\n /// \n /// Specifies the text order (RTL or LTR).\n /// \n this.textOrder = -1;\n /// \n /// Specifies the RTL character types.\n /// \n /* tslint:disable-next-line:prefer-array-literal */\n this.rtlCharacterTypes = new Array(65536);\n //#endregion\n //#region constants\n /// \n /// Left-to-Right (Non-European or non-Arabic digits).\n /// \n this.L = 0;\n /// \n /// Left-to-Right Embedding\n /// \n this.LRE = 1;\n /// \n /// Left-to-Right Override\n /// \n this.LRO = 2;\n /// \n /// Right-to-Left (Hebrew alphabet, and related punctuation).\n /// \n this.R = 3;\n /// \n /// Right-to-Left Arabic \n /// \n this.AL = 4;\n /// \n /// Right-to-Left Embedding.\n /// \n this.RLE = 5;\n /// \n /// Right-to-Left Override\n /// \n this.RLO = 6;\n /// \n /// Pop Directional Format\n /// \n this.PDF = 7;\n /// \n /// European Number (European digits, Eastern Arabic-Indic digits).\n /// \n this.EN = 8;\n /// \n /// European Number Separator (Plus sign, Minus sign).\n /// \n this.ES = 9;\n /// \n /// European Number Terminator (Degree sign, currency symbols).\n /// \n this.ET = 10;\n /// \n /// Arabic Number (Arabic-Indic digits, Arabic decimal and thousands separators).\n /// \n this.AN = 11;\n /// \n /// Common Number Separator (Colon, Comma, Full Stop, No-Break Space.\n /// \n this.CS = 12;\n /// \n /// Nonspacing Mark (Characters with the General_Category values).\n /// \n this.NSM = 13;\n /// \n /// Boundary Neutral (Default ignorables, non-characters, and control characters, other than those explicitly given other types.)\n /// \n this.BN = 14;\n /// \n /// Paragraph Separator (Paragraph separator, appropriate Newline Functions, higher-level protocol paragraph determination).\n /// \n this.B = 15;\n /// \n /// \tSegment Separator (tab).\n /// \n this.S = 16;\n /// \n /// Whitespace (Space, Figure space, Line separator, Form feed, General Punctuation spaces).\n /// \n this.WS = 17;\n /// \n /// Other Neutrals (All other characters, including object replacement character).\n /// \n this.ON = 18;\n /// \n /// RTL character types.\n /// \n this.charTypes = [\n this.L, this.EN, this.BN, this.ES, this.ES, this.S, this.ET, this.ET, this.B, this.AN, this.AN, this.S, this.CS, this.CS,\n this.WS, this.NSM, this.NSM, this.B, this.BN, 27, this.BN, 28, 30, this.B, 31, 31, this.S, 32, 32, this.WS, 33, 34,\n this.ON, 35, 37, this.ET, 38, 42, this.ON, 43, 43, this.ET, 44, 44, this.CS, 45, 45, this.ET, 46, 46, this.CS,\n 47, 47, this.CS, 48, 57, this.EN, 58, 58, this.CS, 59, 64, this.ON, 65, 90, this.L, 91, 96, this.ON, 97, 122, this.L,\n 123, 126, this.ON, 127, 132, this.BN, 133, 133, this.B, 134, 159, this.BN, 160, 160, this.CS,\n 161, 161, this.ON, 162, 165, this.ET, 166, 169, this.ON, 170, 170, this.L, 171, 175, this.ON,\n 176, 177, this.ET, 178, 179, this.EN, 180, 180, this.ON, 181, 181, this.L, 182, 184, this.ON,\n 185, 185, this.EN, 186, 186, this.L, 187, 191, this.ON, 192, 214, this.L, 215, 215, this.ON,\n 216, 246, this.L, 247, 247, this.ON, 248, 696, this.L, 697, 698, this.ON, 699, 705, this.L,\n 706, 719, this.ON, 720, 721, this.L, 722, 735, this.ON, 736, 740, this.L, 741, 749, this.ON,\n 750, 750, this.L, 751, 767, this.ON, 768, 855, this.NSM, 856, 860, this.L, 861, 879, this.NSM,\n 880, 883, this.L, 884, 885, this.ON, 886, 893, this.L, 894, 894, this.ON, 895, 899, this.L,\n 900, 901, this.ON, 902, 902, this.L, 903, 903, this.ON, 904, 1013, this.L, 1014, 1014, this.ON,\n 1015, 1154, this.L, 1155, 1158, this.NSM, 1159, 1159, this.L, 1160, 1161, this.NSM,\n 1162, 1417, this.L, 1418, 1418, this.ON, 1419, 1424, this.L, 1425, 1441, this.NSM,\n 1442, 1442, this.L, 1443, 1465, this.NSM, 1466, 1466, this.L, 1467, 1469, this.NSM,\n 1470, 1470, this.R, 1471, 1471, this.NSM, 1472, 1472, this.R, 1473, 1474, this.NSM,\n 1475, 1475, this.R, 1476, 1476, this.NSM, 1477, 1487, this.L, 1488, 1514, this.R,\n 1515, 1519, this.L, 1520, 1524, this.R, 1525, 1535, this.L, 1536, 1539, this.AL,\n 1540, 1547, this.L, 1548, 1548, this.CS, 1549, 1549, this.AL, 1550, 1551, this.ON,\n 1552, 1557, this.NSM, 1558, 1562, this.L, 1563, 1563, this.AL, 1564, 1566, this.L,\n 1567, 1567, this.AL, 1568, 1568, this.L, 1569, 1594, this.AL, 1595, 1599, this.L,\n 1600, 1610, this.AL, 1611, 1624, this.NSM, 1625, 1631, this.L, 1632, 1641, this.AN,\n 1642, 1642, this.ET, 1643, 1644, this.AN, 1645, 1647, this.AL, 1648, 1648, this.NSM,\n 1649, 1749, this.AL, 1750, 1756, this.NSM, 1757, 1757, this.AL, 1758, 1764, this.NSM,\n 1765, 1766, this.AL, 1767, 1768, this.NSM, 1769, 1769, this.ON, 1770, 1773, this.NSM,\n 1774, 1775, this.AL, 1776, 1785, this.EN, 1786, 1805, this.AL, 1806, 1806, this.L,\n 1807, 1807, this.BN, 1808, 1808, this.AL, 1809, 1809, this.NSM, 1810, 1839, this.AL,\n 1840, 1866, this.NSM, 1867, 1868, this.L, 1869, 1871, this.AL, 1872, 1919, this.L,\n 1920, 1957, this.AL, 1958, 1968, this.NSM, 1969, 1969, this.AL, 1970, 2304, this.L,\n 2305, 2306, this.NSM, 2307, 2363, this.L, 2364, 2364, this.NSM, 2365, 2368, this.L,\n 2369, 2376, this.NSM, 2377, 2380, this.L, 2381, 2381, this.NSM, 2382, 2384, this.L,\n 2385, 2388, this.NSM, 2389, 2401, this.L, 2402, 2403, this.NSM, 2404, 2432, this.L,\n 2433, 2433, this.NSM, 2434, 2491, this.L, 2492, 2492, this.NSM, 2493, 2496, this.L,\n 2497, 2500, this.NSM, 2501, 2508, this.L, 2509, 2509, this.NSM, 2510, 2529, this.L,\n 2530, 2531, this.NSM, 2532, 2545, this.L, 2546, 2547, this.ET, 2548, 2560, this.L,\n 2561, 2562, this.NSM, 2563, 2619, this.L, 2620, 2620, this.NSM, 2621, 2624, this.L,\n 2625, 2626, this.NSM, 2627, 2630, this.L, 2631, 2632, this.NSM, 2633, 2634, this.L,\n 2635, 2637, this.NSM, 2638, 2671, this.L, 2672, 2673, this.NSM, 2674, 2688, this.L,\n 2689, 2690, this.NSM, 2691, 2747, this.L, 2748, 2748, this.NSM, 2749, 2752, this.L,\n 2753, 2757, this.NSM, 2758, 2758, this.L, 2759, 2760, this.NSM, 2761, 2764, this.L,\n 2765, 2765, this.NSM, 2766, 2785, this.L, 2786, 2787, this.NSM, 2788, 2800, this.L,\n 2801, 2801, this.ET, 2802, 2816, this.L, 2817, 2817, this.NSM, 2818, 2875, this.L,\n 2876, 2876, this.NSM, 2877, 2878, this.L, 2879, 2879, this.NSM, 2880, 2880, this.L,\n 2881, 2883, this.NSM, 2884, 2892, this.L, 2893, 2893, this.NSM, 2894, 2901, this.L,\n 2902, 2902, this.NSM, 2903, 2945, this.L, 2946, 2946, this.NSM, 2947, 3007, this.L,\n 3008, 3008, this.NSM, 3009, 3020, this.L, 3021, 3021, this.NSM, 3022, 3058, this.L,\n 3059, 3064, this.ON, 3065, 3065, this.ET, 3066, 3066, this.ON, 3067, 3133, this.L,\n 3134, 3136, this.NSM, 3137, 3141, this.L, 3142, 3144, this.NSM, 3145, 3145, this.L,\n 3146, 3149, this.NSM, 3150, 3156, this.L, 3157, 3158, this.NSM, 3159, 3259, this.L,\n 3260, 3260, this.NSM, 3261, 3275, this.L, 3276, 3277, this.NSM, 3278, 3392, this.L,\n 3393, 3395, this.NSM, 3396, 3404, this.L, 3405, 3405, this.NSM, 3406, 3529, this.L,\n 3530, 3530, this.NSM, 3531, 3537, this.L, 3538, 3540, this.NSM, 3541, 3541, this.L,\n 3542, 3542, this.NSM, 3543, 3632, this.L, 3633, 3633, this.NSM, 3634, 3635, this.L,\n 3636, 3642, this.NSM, 3643, 3646, this.L, 3647, 3647, this.ET, 3648, 3654, this.L,\n 3655, 3662, this.NSM, 3663, 3760, this.L, 3761, 3761, this.NSM, 3762, 3763, this.L,\n 3764, 3769, this.NSM, 3770, 3770, this.L, 3771, 3772, this.NSM, 3773, 3783, this.L,\n 3784, 3789, this.NSM, 3790, 3863, this.L, 3864, 3865, this.NSM, 3866, 3892, this.L,\n 3893, 3893, this.NSM, 3894, 3894, this.L, 3895, 3895, this.NSM, 3896, 3896, this.L,\n 3897, 3897, this.NSM, 3898, 3901, this.ON, 3902, 3952, this.L, 3953, 3966, this.NSM,\n 3967, 3967, this.L, 3968, 3972, this.NSM, 3973, 3973, this.L, 3974, 3975, this.NSM,\n 3976, 3983, this.L, 3984, 3991, this.NSM, 3992, 3992, this.L, 3993, 4028, this.NSM,\n 4029, 4037, this.L, 4038, 4038, this.NSM, 4039, 4140, this.L, 4141, 4144, this.NSM,\n 4145, 4145, this.L, 4146, 4146, this.NSM, 4147, 4149, this.L, 4150, 4151, this.NSM,\n 4152, 4152, this.L, 4153, 4153, this.NSM, 4154, 4183, this.L, 4184, 4185, this.NSM,\n 4186, 5759, this.L, 5760, 5760, this.WS, 5761, 5786, this.L, 5787, 5788, this.ON,\n 5789, 5905, this.L, 5906, 5908, this.NSM, 5909, 5937, this.L, 5938, 5940, this.NSM,\n 5941, 5969, this.L, 5970, 5971, this.NSM, 5972, 6001, this.L, 6002, 6003, this.NSM,\n 6004, 6070, this.L, 6071, 6077, this.NSM, 6078, 6085, this.L, 6086, 6086, this.NSM,\n 6087, 6088, this.L, 6089, 6099, this.NSM, 6100, 6106, this.L, 6107, 6107, this.ET,\n 6108, 6108, this.L, 6109, 6109, this.NSM, 6110, 6127, this.L, 6128, 6137, this.ON,\n 6138, 6143, this.L, 6144, 6154, this.ON, 6155, 6157, this.NSM, 6158, 6158, this.WS,\n 6159, 6312, this.L, 6313, 6313, this.NSM, 6314, 6431, this.L, 6432, 6434, this.NSM,\n 6435, 6438, this.L, 6439, 6443, this.NSM, 6444, 6449, this.L, 6450, 6450, this.NSM,\n 6451, 6456, this.L, 6457, 6459, this.NSM, 6460, 6463, this.L, 6464, 6464, this.ON,\n 6465, 6467, this.L, 6468, 6469, this.ON, 6470, 6623, this.L, 6624, 6655, this.ON,\n 6656, 8124, this.L, 8125, 8125, this.ON, 8126, 8126, this.L, 8127, 8129, this.ON,\n 8130, 8140, this.L, 8141, 8143, this.ON, 8144, 8156, this.L, 8157, 8159, this.ON,\n 8160, 8172, this.L, 8173, 8175, this.ON, 8176, 8188, this.L, 8189, 8190, this.ON,\n 8191, 8191, this.L, 8192, 8202, this.WS, 8203, 8205, this.BN, 8206, 8206, this.L,\n 8207, 8207, this.R, 8208, 8231, this.ON, 8232, 8232, this.WS, 8233, 8233, this.B,\n 8234, 8234, this.LRE, 8235, 8235, this.RLE, 8236, 8236, this.PDF, 8237, 8237, this.LRO,\n 8238, 8238, this.RLO, 8239, 8239, this.WS, 8240, 8244, this.ET, 8245, 8276, this.ON,\n 8277, 8278, this.L, 8279, 8279, this.ON, 8280, 8286, this.L, 8287, 8287, this.WS,\n 8288, 8291, this.BN, 8292, 8297, this.L, 8298, 8303, this.BN, 8304, 8304, this.EN,\n 8305, 8307, this.L, 8308, 8313, this.EN, 8314, 8315, this.ET, 8316, 8318, this.ON,\n 8319, 8319, this.L, 8320, 8329, this.EN, 8330, 8331, this.ET, 8332, 8334, this.ON,\n 8335, 8351, this.L, 8352, 8369, this.ET, 8370, 8399, this.L, 8400, 8426, this.NSM,\n 8427, 8447, this.L, 8448, 8449, this.ON, 8450, 8450, this.L, 8451, 8454, this.ON,\n 8455, 8455, this.L, 8456, 8457, this.ON, 8458, 8467, this.L, 8468, 8468, this.ON,\n 8469, 8469, this.L, 8470, 8472, this.ON, 8473, 8477, this.L, 8478, 8483, this.ON,\n 8484, 8484, this.L, 8485, 8485, this.ON, 8486, 8486, this.L, 8487, 8487, this.ON,\n 8488, 8488, this.L, 8489, 8489, this.ON, 8490, 8493, this.L, 8494, 8494, this.ET,\n 8495, 8497, this.L, 8498, 8498, this.ON, 8499, 8505, this.L, 8506, 8507, this.ON,\n 8508, 8511, this.L, 8512, 8516, this.ON, 8517, 8521, this.L, 8522, 8523, this.ON,\n 8524, 8530, this.L, 8531, 8543, this.ON, 8544, 8591, this.L, 8592, 8721, this.ON,\n 8722, 8723, this.ET, 8724, 9013, this.ON, 9014, 9082, this.L, 9083, 9108, this.ON,\n 9109, 9109, this.L, 9110, 9168, this.ON, 9169, 9215, this.L, 9216, 9254, this.ON,\n 9255, 9279, this.L, 9280, 9290, this.ON, 9291, 9311, this.L, 9312, 9371, this.EN,\n 9372, 9449, this.L, 9450, 9450, this.EN, 9451, 9751, this.ON, 9752, 9752, this.L,\n 9753, 9853, this.ON, 9854, 9855, this.L, 9856, 9873, this.ON, 9874, 9887, this.L,\n 9888, 9889, this.ON, 9890, 9984, this.L, 9985, 9988, this.ON, 9989, 9989, this.L,\n 9990, 9993, this.ON, 9994, 9995, this.L, 9996, 10023, this.ON, 10024, 10024, this.L,\n 10025, 10059, this.ON, 10060, 10060, this.L, 10061, 10061, this.ON, 10062, 10062, this.L,\n 10063, 10066, this.ON, 10067, 10069, this.L, 10070, 10070, this.ON, 10071, 10071, this.L,\n 10072, 10078, this.ON, 10079, 10080, this.L, 10081, 10132, this.ON, 10133, 10135, this.L,\n 10136, 10159, this.ON, 10160, 10160, this.L, 10161, 10174, this.ON, 10175, 10191, this.L,\n 10192, 10219, this.ON, 10220, 10223, this.L, 10224, 11021, this.ON, 11022, 11903, this.L,\n 11904, 11929, this.ON, 11930, 11930, this.L, 11931, 12019, this.ON, 12020, 12031, this.L,\n 12032, 12245, this.ON, 12246, 12271, this.L, 12272, 12283, this.ON, 12284, 12287, this.L,\n 12288, 12288, this.WS, 12289, 12292, this.ON, 12293, 12295, this.L, 12296, 12320, this.ON,\n 12321, 12329, this.L, 12330, 12335, this.NSM, 12336, 12336, this.ON, 12337, 12341, this.L,\n 12342, 12343, this.ON, 12344, 12348, this.L, 12349, 12351, this.ON, 12352, 12440, this.L,\n 12441, 12442, this.NSM, 12443, 12444, this.ON, 12445, 12447, this.L, 12448, 12448, this.ON,\n 12449, 12538, this.L, 12539, 12539, this.ON, 12540, 12828, this.L, 12829, 12830, this.ON,\n 12831, 12879, this.L, 12880, 12895, this.ON, 12896, 12923, this.L, 12924, 12925, this.ON,\n 12926, 12976, this.L, 12977, 12991, this.ON, 12992, 13003, this.L, 13004, 13007, this.ON,\n 13008, 13174, this.L, 13175, 13178, this.ON, 13179, 13277, this.L, 13278, 13279, this.ON,\n 13280, 13310, this.L, 13311, 13311, this.ON, 13312, 19903, this.L, 19904, 19967, this.ON,\n 19968, 42127, this.L, 42128, 42182, this.ON, 42183, 64284, this.L, 64285, 64285, this.R,\n 64286, 64286, this.NSM, 64287, 64296, this.R, 64297, 64297, this.ET, 64298, 64310, this.R,\n 64311, 64311, this.L, 64312, 64316, this.R, 64317, 64317, this.L, 64318, 64318, this.R,\n 64319, 64319, this.L, 64320, 64321, this.R, 64322, 64322, this.L, 64323, 64324, this.R,\n 64325, 64325, this.L, 64326, 64335, this.R, 64336, 64433, this.AL, 64434, 64466, this.L,\n 64467, 64829, this.AL, 64830, 64831, this.ON, 64832, 64847, this.L, 64848, 64911, this.AL,\n 64912, 64913, this.L, 64914, 64967, this.AL, 64968, 65007, this.L, 65008, 65020, this.AL,\n 65021, 65021, this.ON, 65022, 65023, this.L, 65024, 65039, this.NSM, 65040, 65055, this.L,\n 65056, 65059, this.NSM, 65060, 65071, this.L, 65072, 65103, this.ON, 65104, 65104, this.CS,\n 65105, 65105, this.ON, 65106, 65106, this.CS, 65107, 65107, this.L, 65108, 65108, this.ON,\n 65109, 65109, this.CS, 65110, 65118, this.ON, 65119, 65119, this.ET, 65120, 65121, this.ON,\n 65122, 65123, this.ET, 65124, 65126, this.ON, 65127, 65127, this.L, 65128, 65128, this.ON,\n 65129, 65130, this.ET, 65131, 65131, this.ON, 65132, 65135, this.L, 65136, 65140, this.AL,\n 65141, 65141, this.L, 65142, 65276, this.AL, 65277, 65278, this.L, 65279, 65279, this.BN,\n 65280, 65280, this.L, 65281, 65282, this.ON, 65283, 65285, this.ET, 65286, 65290, this.ON,\n 65291, 65291, this.ET, 65292, 65292, this.CS, 65293, 65293, this.ET, 65294, 65294, this.CS,\n 65295, 65295, this.ES, 65296, 65305, this.EN, 65306, 65306, this.CS, 65307, 65312, this.ON,\n 65313, 65338, this.L, 65339, 65344, this.ON, 65345, 65370, this.L, 65371, 65381, this.ON,\n 65382, 65503, this.L, 65504, 65505, this.ET, 65506, 65508, this.ON, 65509, 65510, this.ET,\n 65511, 65511, this.L, 65512, 65518, this.ON, 65519, 65528, this.L, 65529, 65531, this.BN,\n 65532, 65533, this.ON, 65534, 65535, this.L\n ];\n for (var i = 0; i < this.charTypes.length; ++i) {\n var start = this.charTypes[i];\n var end = this.charTypes[++i];\n var b = this.charTypes[++i];\n while (start <= end) {\n this.rtlCharacterTypes[start++] = b;\n }\n }\n }\n //#endregion\n //#region implementation\n RtlCharacters.prototype.getVisualOrder = function (inputText, isRtl) {\n this.types = this.getCharacterCode(inputText);\n this.textOrder = isRtl ? this.LRE : this.L;\n this.doVisualOrder();\n var result = [];\n for (var i = 0; i < this.levels.length; i++) {\n result[i] = this.levels[i];\n }\n return result;\n };\n RtlCharacters.prototype.getCharacterCode = function (text) {\n var characterCodes = [];\n for (var i = 0; i < text.length; i++) {\n characterCodes[i] = this.rtlCharacterTypes[text[i].charCodeAt(0)];\n }\n return characterCodes;\n };\n RtlCharacters.prototype.setDefaultLevels = function () {\n for (var i = 0; i < this.length; i++) {\n this.levels[i] = this.textOrder;\n }\n };\n RtlCharacters.prototype.setLevels = function () {\n this.setDefaultLevels();\n for (var n = 0; n < this.length; ++n) {\n var level = this.levels[n];\n if ((level & 0x80) !== 0) {\n level &= 0x7f;\n this.result[n] = ((level & 0x1) === 0) ? this.L : this.R;\n }\n this.levels[n] = level;\n }\n };\n RtlCharacters.prototype.updateLevels = function (index, level, length) {\n if ((level & 1) === 0) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.R) {\n this.levels[i] += 1;\n }\n else if (this.result[i] !== this.L) {\n this.levels[i] += 2;\n }\n }\n }\n else {\n for (var i = index; i < length; ++i) {\n if (this.result[i] !== this.R) {\n this.levels[i] += 1;\n }\n }\n }\n };\n RtlCharacters.prototype.doVisualOrder = function () {\n this.length = this.types.length;\n this.result = this.types;\n this.levels = [];\n this.setLevels();\n this.length = this.getEmbeddedCharactersLength();\n var preview = this.textOrder;\n var i = 0;\n while (i < this.length) {\n var level = this.levels[i];\n var preType = ((Math.max(preview, level) & 0x1) === 0) ? this.L : this.R;\n var length_1 = i + 1;\n while (length_1 < this.length && this.levels[length_1] === level) {\n ++length_1;\n }\n var success = length_1 < this.length ? this.levels[length_1] : this.textOrder;\n var type = ((Math.max(success, level) & 0x1) === 0) ? this.L : this.R;\n this.checkNSM(i, length_1, level, preType, type);\n this.updateLevels(i, level, length_1);\n preview = level;\n i = length_1;\n }\n this.checkEmbeddedCharacters(this.length);\n };\n RtlCharacters.prototype.getEmbeddedCharactersLength = function () {\n var index = 0;\n for (var i = 0; i < this.length; ++i) {\n if (!(this.types[i] === this.LRE || this.types[i] === this.RLE || this.types[i] === this.LRO ||\n this.types[i] === this.RLO || this.types[i] === this.PDF || this.types[i] === this.BN)) {\n this.result[index] = this.result[i];\n this.levels[index] = this.levels[i];\n index++;\n }\n }\n return index;\n };\n RtlCharacters.prototype.checkEmbeddedCharacters = function (length) {\n for (var i = this.types.length - 1; i >= 0; --i) {\n if (this.types[i] === this.LRE || this.types[i] === this.RLE || this.types[i] === this.LRO ||\n this.types[i] === this.RLO || this.types[i] === this.PDF || this.types[i] === this.BN) {\n this.result[i] = this.types[i];\n this.levels[i] = -1;\n }\n else {\n length -= 1;\n this.result[i] = this.result[length];\n this.levels[i] = this.levels[length];\n }\n }\n for (var i = 0; i < this.types.length; i++) {\n if (this.levels[i] === -1) {\n if (i === 0) {\n this.levels[i] = this.textOrder;\n }\n else {\n this.levels[i] = this.levels[i - 1];\n }\n }\n }\n };\n RtlCharacters.prototype.checkNSM = function (index, length, level, startType, endType) {\n var charType = startType;\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.NSM) {\n this.result[i] = charType;\n }\n else {\n charType = this.result[i];\n }\n }\n this.checkEuropeanDigits(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkEuropeanDigits = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.EN) {\n for (var j = i - 1; j >= index; --j) {\n if (this.result[j] === this.L || this.result[j] === this.R || this.result[j] === this.AL) {\n if (this.result[j] === this.AL) {\n this.result[i] = this.AN;\n }\n break;\n }\n }\n }\n }\n this.checkArabicCharacters(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkArabicCharacters = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.AL) {\n this.result[i] = this.R;\n }\n }\n this.checkEuropeanNumberSeparator(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkEuropeanNumberSeparator = function (index, length, level, startType, endType) {\n for (var i = index + 1; i < length - 1; ++i) {\n if (this.result[i] === this.ES || this.result[i] === this.CS) {\n var preview = this.result[i - 1];\n var success = this.result[i + 1];\n if (preview === this.EN && success === this.EN) {\n this.result[i] = this.EN;\n }\n else if (this.result[i] === this.CS && preview === this.AN && success === this.AN) {\n this.result[i] = this.AN;\n }\n }\n }\n this.checkEuropeanNumberTerminator(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkEuropeanNumberTerminator = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.ET) {\n var s = i;\n var b = [];\n b.push(this.ET);\n var l = this.getLength(s, length, b);\n var data = s === index ? startType : this.result[s - 1];\n if (data !== this.EN) {\n data = (l === length) ? endType : this.result[l];\n }\n if (data === this.EN) {\n for (var j = s; j < l; ++j) {\n this.result[j] = this.EN;\n }\n }\n i = l;\n }\n }\n this.checkOtherNeutrals(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkOtherNeutrals = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.ES || this.result[i] === this.ET || this.result[i] === this.CS) {\n this.result[i] = this.ON;\n }\n }\n this.checkOtherCharacters(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkOtherCharacters = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.EN) {\n var pst = startType;\n for (var j = i - 1; j >= index; --j) {\n if (this.result[j] === this.L || this.result[j] === this.R) {\n pst = this.result[j];\n break;\n }\n }\n if (pst === this.L) {\n this.result[i] = this.L;\n }\n }\n }\n this.checkCommanCharacters(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.getLength = function (index, length, validSet) {\n --index;\n while (++index < length) {\n var t = this.result[index];\n for (var i = 0; i < validSet.length; ++i) {\n if (t === validSet[i]) {\n index = this.getLength(++index, length, validSet);\n }\n }\n return index;\n }\n return length;\n };\n RtlCharacters.prototype.checkCommanCharacters = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.WS || this.result[i] === this.ON || this.result[i] === this.B ||\n this.result[i] === this.S) {\n var s = i;\n var byte = [this.B, this.S, this.WS, this.ON];\n var l = this.getLength(s, length, byte);\n var lt = 0;\n var tt = 0;\n var rt = 0;\n if (s === index) {\n lt = startType;\n }\n else {\n lt = this.result[s - 1];\n if (lt === this.AN) {\n lt = this.R;\n }\n else if (lt === this.EN) {\n lt = this.R;\n }\n }\n if (l === length) {\n tt = endType;\n }\n else {\n tt = this.result[l];\n if (tt === this.AN) {\n tt = this.R;\n }\n else if (tt === this.EN) {\n tt = this.R;\n }\n }\n if (lt === tt) {\n rt = lt;\n }\n else {\n rt = ((level & 0x1) === 0) ? this.L : this.R;\n }\n for (var j = s; j < l; ++j) {\n this.result[j] = rt;\n }\n i = l;\n }\n }\n };\n return RtlCharacters;\n}());\nexport { RtlCharacters };\n","import { PdfString } from './../../primitives/pdf-string';\nimport { ArabicShapeRenderer } from './rtl/rtl-text-shape';\nimport { PdfTextDirection } from './../enum';\nimport { Bidi } from './rtl/rtl-bidirectional';\n/**\n * `Metrics` of the font.\n * @private\n */\nvar RtlRenderer = /** @class */ (function () {\n function RtlRenderer() {\n //region Constants\n /// Open bracket symbol.\n /// \n this.openBracket = '(';\n /// \n /// Close bracket symbol.\n /// \n this.closeBracket = ')';\n //#endregion\n }\n //#region Constructors\n /// \n /// Initializes a new instance of the class.\n /// \n // public constructor() {\n // }\n //#region Public Methods\n /// \n /// Layouts text. Changes blocks position in the RTL text.\n /// Ligates the text if needed.\n /// \n /// Line of the text.\n /// Font to be used for string printing.\n /// Font alignment.\n /// Indicates whether Word Spacing used or not.\n /// Layout string.\n RtlRenderer.prototype.layout = function (line, font, rtl, wordSpace, format) {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n var result = [];\n if (font.Unicode) {\n result = this.customLayout(line, rtl, format, font, wordSpace);\n }\n else {\n result = [];\n result[0] = line;\n }\n return result;\n };\n /// \n /// Layouts a string and splits it by the words and using correct lay outing.\n /// \n /// Text line.\n /// Font object.\n /// Indicates whether RTL should be applied.\n /// Indicates whether word spacing is used.\n /// Array of words if converted, null otherwise.\n RtlRenderer.prototype.splitLayout = function (line, font, rtl, wordSpace, format) {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n var words = [];\n var system = false;\n if (!system || words == null) {\n words = this.customSplitLayout(line, font, rtl, wordSpace, format);\n }\n return words;\n };\n //#endregion\n //#region Implementation\n // private isEnglish( word : string) : boolean\n // {\n // let c : string = (word.length > 0) ? word[0] : '';\n // return (c >= '0' && c < 'ÿ');\n // }\n // private keepOrder( words : string, startIndex : number, count: number, result : string[], resultIndex : number) : void\n // {\n // for (let i : number = 0, ri = resultIndex - count + 1; i < count; ++i, ++ri) {\n // result[ri] = words[i + startIndex];\n // }\n // }\n /// \n /// Uses system API to layout the text.\n /// \n /// Line of the text to be layouted.\n /// Font which is used for text printing.\n /// Indicates whether we use RTL or RTL lay outing of the text container.\n /// Layout string.\n /* tslint:disable-next-line:max-line-length */\n RtlRenderer.prototype.getGlyphIndex = function (line, font, rtl, /*out*/ glyphs, custom) {\n var success = true;\n var fail = false;\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n glyphs = null;\n if (line.length === 0) {\n return { success: fail, glyphs: glyphs };\n }\n var renderer = new ArabicShapeRenderer();\n var text = renderer.shape(line, 0);\n var internalFont = font.fontInternal;\n var ttfReader = internalFont.ttfReader;\n glyphs = new Uint16Array(text.length);\n var i = 0;\n for (var k = 0, len = text.length; k < len; k++) {\n var ch = text[k];\n var glyphInfo = ttfReader.getGlyph(ch);\n if (glyphInfo !== null && typeof glyphInfo !== 'undefined') {\n glyphs[i++] = (glyphInfo).index;\n }\n }\n return { success: success, glyphs: glyphs };\n };\n /* tslint:disable-next-line:max-line-length */\n RtlRenderer.prototype.customLayout = function (line, rtl, format, font, wordSpace) {\n if (wordSpace === null || typeof wordSpace === 'undefined') {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n var result = null;\n //bidirectional order.\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None) {\n var bidi = new Bidi();\n result = bidi.getLogicalToVisualString(line, rtl);\n }\n return result;\n }\n else {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n var layouted = null;\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None) {\n var renderer = new ArabicShapeRenderer();\n var txt = renderer.shape(line, 0);\n layouted = this.customLayout(txt, rtl, format);\n }\n // else {\n // layouted = this.customLayout(line, rtl, format);\n // }\n // We have unicode font, but from the file. \n var result = [];\n // Split the text by words if word spacing is not default.\n if (wordSpace) {\n var words = layouted.split('');\n var count = words.length;\n for (var i = 0; i < count; i++) {\n words[i] = this.addChars(font, words[i]);\n }\n result = words;\n }\n else {\n result = [];\n result[0] = this.addChars(font, layouted);\n }\n return result;\n }\n };\n /// \n /// Add information about used glyphs to the font.\n /// \n /// Font used for text rendering.\n /// Array of used glyphs.\n /// String in the form to be written to the file.\n RtlRenderer.prototype.addChars = function (font, glyphs) {\n var line = glyphs;\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n var text = line;\n var internalFont = font.fontInternal;\n var ttfReader = internalFont.ttfReader;\n font.setSymbols(text);\n // Reconvert string according to unicode standard.\n text = ttfReader.convertString(text);\n var bytes = PdfString.toUnicodeArray(text, false);\n text = PdfString.byteToString(bytes);\n return text;\n // else {\n // if (font == null) {\n // throw new Error('ArgumentNullException : font');\n // }\n // if (glyphs == null) {\n // throw new Error('ArgumentNullException : glyphs');\n // }\n // // Mark the chars as used.\n // let text : string = '';\n // font.setSymbols(glyphs);\n // // Create string from the glyphs.\n // \n // let chars : string[] = [];\n // for (let i : number = 0; i < glyphs.length; i++) {\n // chars[i] = glyphs[i].toString();\n // }\n // for (let j : number = 0 ; j < chars.length; j++) {\n // text = text + chars[j];\n // }\n // let bytes : number[] = PdfString.toUnicodeArray(text, false);\n // text = PdfString.byteToString(bytes);\n // return text;\n // }\n };\n /// \n /// Layouts a string and splits it by the words by using custom lay outing.\n /// \n /// Text line.\n /// Font object.\n /// Indicates whether RTL should be applied.\n /// Indicates whether word spacing is used.\n /// Array of words if converted, null otherwise.\n /* tslint:disable-next-line:max-line-length */\n RtlRenderer.prototype.customSplitLayout = function (line, font, rtl, wordSpace, format) {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n var reversedLine = this.customLayout(line, rtl, format);\n var words = reversedLine.split('');\n return words;\n };\n return RtlRenderer;\n}());\nexport { RtlRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfColorSpace } from './../enum';\nimport { PdfColor } from './../pdf-color';\nimport { PdfBrush } from './pdf-brush';\nimport { PdfDictionary } from '../../primitives/pdf-dictionary';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfBoolean } from './../../primitives/pdf-boolean';\nimport { PdfArray } from './../../primitives/pdf-array';\nimport { PdfName } from '../../primitives/pdf-name';\nimport { PdfNumber } from '../../primitives/pdf-number';\nimport { PdfReferenceHolder } from '../../primitives/pdf-reference';\n/**\n * `PdfGradientBrush` class provides objects used to fill the interiors of graphical shapes such as rectangles,\n * ellipses, pies, polygons, and paths.\n * @private\n */\nvar PdfGradientBrush = /** @class */ (function (_super) {\n __extends(PdfGradientBrush, _super);\n //Constructor\n /**\n * Initializes a new instance of the `PdfGradientBrush` class.\n * @public\n */\n /* tslint:disable-next-line:max-line-length */\n function PdfGradientBrush(shading) {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Local variable to store the background color.\n * @private\n */\n _this.mbackground = new PdfColor(255, 255, 255);\n /**\n * Local variable to store the stroking color.\n * @private\n */\n _this.mbStroking = false;\n /**\n * Local variable to store the function.\n * @private\n */\n _this.mfunction = null;\n /**\n * Local variable to store the DictionaryProperties.\n * @private\n */\n _this.dictionaryProperties = new DictionaryProperties();\n _this.mpatternDictionary = new PdfDictionary();\n _this.mpatternDictionary.items.setValue(_this.dictionaryProperties.type, new PdfName(_this.dictionaryProperties.pattern));\n _this.mpatternDictionary.items.setValue(_this.dictionaryProperties.patternType, new PdfNumber(2));\n _this.shading = shading;\n _this.colorSpace = PdfColorSpace.Rgb;\n return _this;\n }\n Object.defineProperty(PdfGradientBrush.prototype, \"background\", {\n //Properties\n /**\n * Gets or sets the background color of the brush.\n * @public\n */\n get: function () {\n return this.mbackground;\n },\n set: function (value) {\n this.mbackground = value;\n var sh = this.shading;\n if (value.isEmpty) {\n sh.remove(this.dictionaryProperties.background);\n }\n else {\n sh.items.setValue(this.dictionaryProperties.background, value.toArray(this.colorSpace));\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"antiAlias\", {\n /**\n * Gets or sets a value indicating whether use anti aliasing algorithm.\n * @public\n */\n get: function () {\n var sh = this.shading;\n var aa = (sh.items.getValue(this.dictionaryProperties.antiAlias));\n return aa.value;\n },\n set: function (value) {\n var sh = this.shading;\n var aa = (sh.items.getValue(this.dictionaryProperties.antiAlias));\n if ((aa == null && typeof aa === 'undefined')) {\n aa = new PdfBoolean(value);\n sh.items.setValue(this.dictionaryProperties.antiAlias, aa);\n }\n else {\n aa.value = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"function\", {\n /**\n * Gets or sets the function of the brush.\n * @protected\n */\n get: function () {\n return this.mfunction;\n },\n set: function (value) {\n this.mfunction = value;\n if (value != null && typeof value !== 'undefined') {\n this.shading.items.setValue(this.dictionaryProperties.function, new PdfReferenceHolder(this.mfunction));\n }\n else {\n this.shading.remove(this.dictionaryProperties.function);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"bBox\", {\n /**\n * Gets or sets the boundary box of the brush.\n * @protected\n */\n get: function () {\n var sh = this.shading;\n var box = (sh.items.getValue(this.dictionaryProperties.bBox));\n return box;\n },\n set: function (value) {\n var sh = this.shading;\n if (value == null && typeof value === 'undefined') {\n sh.remove(this.dictionaryProperties.bBox);\n }\n else {\n sh.items.setValue(this.dictionaryProperties.bBox, value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"colorSpace\", {\n /**\n * Gets or sets the color space of the brush.\n * @public\n */\n get: function () {\n return this.mcolorSpace;\n },\n set: function (value) {\n var colorSpace = this.shading.items.getValue(this.dictionaryProperties.colorSpace);\n if ((value !== this.mcolorSpace) || (colorSpace == null)) {\n this.mcolorSpace = value;\n var csValue = this.colorSpaceToDeviceName(value);\n this.shading.items.setValue(this.dictionaryProperties.colorSpace, new PdfName(csValue));\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"stroking\", {\n /**\n * Gets or sets a value indicating whether this PdfGradientBrush is stroking.\n * @public\n */\n get: function () {\n return this.mbStroking;\n },\n set: function (value) {\n this.mbStroking = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"patternDictionary\", {\n /**\n * Gets the pattern dictionary.\n * @protected\n */\n get: function () {\n if (this.mpatternDictionary == null) {\n this.mpatternDictionary = new PdfDictionary();\n }\n return this.mpatternDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"shading\", {\n /**\n * Gets or sets the shading dictionary.\n * @protected\n */\n get: function () {\n return this.mshading;\n },\n set: function (value) {\n if (value == null) {\n throw new Error('ArgumentNullException : Shading');\n }\n if (value !== this.mshading) {\n this.mshading = value;\n this.patternDictionary.items.setValue(this.dictionaryProperties.shading, new PdfReferenceHolder(this.mshading));\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"matrix\", {\n /**\n * Gets or sets the transformation matrix.\n * @public\n */\n get: function () {\n return this.mmatrix;\n },\n set: function (value) {\n if (value == null) {\n throw new Error('ArgumentNullException : Matrix');\n }\n if (value !== this.mmatrix) {\n this.mmatrix = value.clone();\n var m = new PdfArray(this.mmatrix.matrix.elements);\n this.mpatternDictionary.items.setValue(this.dictionaryProperties.matrix, m);\n }\n },\n enumerable: true,\n configurable: true\n });\n //Overrides\n /**\n * Monitors the changes of the brush and modify PDF state respectfully.\n * @param brush The brush.\n * @param streamWriter The stream writer.\n * @param getResources The get resources delegate.\n * @param saveChanges if set to true the changes should be saved anyway.\n * @param currentColorSpace The current color space.\n */\n /* tslint:disable-next-line:max-line-length */\n PdfGradientBrush.prototype.monitorChanges = function (brush, streamWriter, getResources, saveChanges, currentColorSpace) {\n var diff = false;\n if (brush instanceof PdfGradientBrush) {\n if ((this.colorSpace !== currentColorSpace)) {\n this.colorSpace = currentColorSpace;\n this.resetFunction();\n }\n // Set the /Pattern colour space.\n streamWriter.setColorSpace('Pattern', this.mbStroking);\n // Set the pattern for non-stroking operations.\n var resources = getResources.getResources();\n var name_1 = resources.getName(this);\n streamWriter.setColourWithPattern(null, name_1, this.mbStroking);\n diff = true;\n }\n return diff;\n };\n /**\n * Resets the changes, which were made by the brush.\n * In other words resets the state to the initial one.\n * @param streamWriter The stream writer.\n */\n PdfGradientBrush.prototype.resetChanges = function (streamWriter) {\n // Unable reset.\n };\n //Implementation\n /**\n * Converts colorspace enum to a PDF name.\n * @param colorSpace The color space enum value.\n */\n PdfGradientBrush.prototype.colorSpaceToDeviceName = function (colorSpace) {\n var result;\n switch (colorSpace) {\n case PdfColorSpace.Rgb:\n result = 'DeviceRGB';\n break;\n }\n return result;\n };\n /**\n * Resets the pattern dictionary.\n * @param dictionary A new pattern dictionary.\n */\n PdfGradientBrush.prototype.resetPatternDictionary = function (dictionary) {\n this.mpatternDictionary = dictionary;\n };\n /**\n * Clones the anti aliasing value.\n * @param brush The brush.\n */\n PdfGradientBrush.prototype.cloneAntiAliasingValue = function (brush) {\n if ((brush == null)) {\n throw new Error('ArgumentNullException : brush');\n }\n var sh = this.shading;\n var aa = (sh.items.getValue(this.dictionaryProperties.antiAlias));\n if ((aa != null)) {\n brush.shading.items.setValue(this.dictionaryProperties.antiAlias, new PdfBoolean(aa.value));\n }\n };\n /**\n * Clones the background value.\n * @param brush The brush.\n */\n PdfGradientBrush.prototype.cloneBackgroundValue = function (brush) {\n var background = this.background;\n if (!background.isEmpty) {\n brush.background = background;\n }\n };\n Object.defineProperty(PdfGradientBrush.prototype, \"element\", {\n /* tslint:enable */\n // IPdfWrapper Members\n /**\n * Gets the `element`.\n * @private\n */\n get: function () {\n return this.patternDictionary;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGradientBrush;\n}(PdfBrush));\nexport { PdfGradientBrush };\n","/**\n * ImageDecoder class\n */\nimport { ByteArray } from './byte-array';\nimport { PdfStream } from './../../primitives/pdf-stream';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfName } from './../../primitives/pdf-name';\nimport { PdfNumber } from './../../primitives/pdf-number';\nimport { PdfBoolean } from './../../primitives/pdf-boolean';\nimport { PdfDictionary } from './../../primitives/pdf-dictionary';\n/**\n * Specifies the image `format`.\n * @private\n */\nexport var ImageFormat;\n(function (ImageFormat) {\n /**\n * Specifies the type of `Unknown`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Unknown\"] = 0] = \"Unknown\";\n /**\n * Specifies the type of `Bmp`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Bmp\"] = 1] = \"Bmp\";\n /**\n * Specifies the type of `Emf`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Emf\"] = 2] = \"Emf\";\n /**\n * Specifies the type of `Gif`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Gif\"] = 3] = \"Gif\";\n /**\n * Specifies the type of `Jpeg`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Jpeg\"] = 4] = \"Jpeg\";\n /**\n * Specifies the type of `Png`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Png\"] = 5] = \"Png\";\n /**\n * Specifies the type of `Wmf`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Wmf\"] = 6] = \"Wmf\";\n /**\n * Specifies the type of `Icon`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Icon\"] = 7] = \"Icon\";\n})(ImageFormat || (ImageFormat = {}));\n/**\n * `Decode the image stream`.\n * @private\n */\nvar ImageDecoder = /** @class */ (function () {\n /**\n * Initialize the new instance for `image-decoder` class.\n * @private\n */\n function ImageDecoder(stream) {\n /**\n * Start of file markers.\n * @hidden\n * @private\n */\n this.sof1Marker = 0x00C1;\n this.sof2Marker = 0x00C2;\n this.sof3Marker = 0x00C3;\n this.sof5Marker = 0x00C5;\n this.sof6Marker = 0x00C6;\n this.sof7Marker = 0x00C7;\n this.sof9Marker = 0x00C9;\n this.sof10Marker = 0x00CA;\n this.sof11Marker = 0x00CB;\n this.sof13Marker = 0x00CD;\n this.sof14Marker = 0x00CE;\n this.sof15Marker = 0x00CF;\n /**\n * Specifies `format` of image.\n * @hidden\n * @private\n */\n this.mFormat = ImageFormat.Unknown;\n /**\n * `Bits per component`.\n * @default 8\n * @hidden\n * @private\n */\n this.mbitsPerComponent = 8;\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n this.mStream = stream;\n this.initialize();\n }\n Object.defineProperty(ImageDecoder.prototype, \"height\", {\n /**\n * Gets the `height` of image.\n * @hidden\n * @private\n */\n get: function () {\n return this.mHeight;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ImageDecoder.prototype, \"width\", {\n /**\n * Gets the `width` of image.\n * @hidden\n * @private\n */\n get: function () {\n return this.mWidth;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ImageDecoder.prototype, \"bitsPerComponent\", {\n /**\n * Gets `bits per component`.\n * @hidden\n * @private\n */\n get: function () {\n return this.mbitsPerComponent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ImageDecoder.prototype, \"size\", {\n /**\n * Gets the `size` of an image data.\n * @hidden\n * @private\n */\n get: function () {\n return this.mImageData.count;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ImageDecoder.prototype, \"imageData\", {\n /**\n * Gets the value of an `image data`.\n * @hidden\n * @private\n */\n get: function () {\n return this.mImageData;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ImageDecoder.prototype, \"imageDataAsNumberArray\", {\n /**\n * Gets the value of an `image data as number array`.\n * @hidden\n * @private\n */\n get: function () {\n return this.mImageData.internalBuffer.buffer;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Initialize` image data and image stream.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.initialize = function () {\n if (this.mFormat === ImageFormat.Unknown && this.checkIfJpeg()) {\n this.mFormat = ImageFormat.Jpeg;\n this.parseJpegImage();\n }\n else {\n throw new TypeError('Only the JPEG format is supported');\n }\n this.reset();\n this.mImageData = new ByteArray(this.mStream.count);\n this.mStream.read(this.mImageData, 0, this.mImageData.count);\n };\n /**\n * `Reset` stream position into 0.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.reset = function () {\n this.mStream.position = 0;\n };\n /**\n * `Parse` Jpeg image.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.parseJpegImage = function () {\n this.reset();\n var imgData = new ByteArray(this.mStream.count);\n this.mStream.read(imgData, 0, imgData.count);\n var i = 4;\n var isLengthExceed = false;\n /* tslint:disable */\n var length = imgData.getBuffer(i) * 256 + imgData.getBuffer(i + 1);\n while (i < imgData.count) {\n i += length;\n if (i < imgData.count) {\n if (imgData.getBuffer(i + 1) === 192) {\n this.mHeight = imgData.getBuffer(i + 5) * 256 + imgData.getBuffer(i + 6);\n this.mWidth = imgData.getBuffer(i + 7) * 256 + imgData.getBuffer(i + 8);\n return;\n }\n else {\n i += 2;\n length = imgData.getBuffer(i) * 256 + imgData.getBuffer(i + 1);\n }\n }\n else {\n isLengthExceed = true;\n break;\n }\n }\n if (isLengthExceed) {\n this.mStream.position = 0;\n this.skip(this.mStream, 2);\n this.readExceededJPGImage(this.mStream);\n }\n /* tslint:enable */\n };\n Object.defineProperty(ImageDecoder.prototype, \"format\", {\n /**\n * Gets the image `format`.\n * @private\n * @hidden\n */\n get: function () {\n return this.mFormat;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Checks if JPG`.\n * @private\n * @hidden\n */\n ImageDecoder.prototype.checkIfJpeg = function () {\n this.reset();\n for (var i = 0; i < ImageDecoder.mJpegHeader.length; i++) {\n if (ImageDecoder.mJpegHeader[i] !== this.mStream.readByte(i)) {\n return false;\n }\n this.mStream.position++;\n }\n return true;\n };\n /**\n * Return image `dictionary`.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.getImageDictionary = function () {\n if (this.mFormat === ImageFormat.Jpeg) {\n var tempArrayBuffer = this.imageData.internalBuffer.length;\n this.imageStream = new PdfStream();\n this.imageStream.isResource = true;\n var tempString = '';\n var decodedString = '';\n for (var i = 0; i < this.imageDataAsNumberArray.byteLength; i++) {\n tempString += String.fromCharCode(null, this.mStream.readByte(i));\n }\n for (var i = 0; i < tempString.length; i++) {\n if (i % 2 !== 0) {\n decodedString += tempString[i];\n }\n }\n this.imageStream.data = [decodedString];\n this.imageStream.compress = false;\n this.imageStream.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.xObject));\n this.imageStream.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.image));\n this.imageStream.items.setValue(this.dictionaryProperties.width, new PdfNumber(this.width));\n this.imageStream.items.setValue(this.dictionaryProperties.height, new PdfNumber(this.height));\n this.imageStream.items.setValue(this.dictionaryProperties.bitsPerComponent, new PdfNumber(this.bitsPerComponent));\n this.imageStream.items.setValue(this.dictionaryProperties.filter, new PdfName(this.dictionaryProperties.dctdecode));\n this.imageStream.items.setValue(this.dictionaryProperties.colorSpace, new PdfName(this.getColorSpace()));\n this.imageStream.items.setValue(this.dictionaryProperties.decodeParms, this.getDecodeParams());\n return this.imageStream;\n }\n else {\n return this.imageStream;\n }\n };\n /**\n * Return `colorSpace` of an image.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.getColorSpace = function () {\n return this.dictionaryProperties.deviceRgb;\n };\n /**\n * Return `decode parameters` of an image.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.getDecodeParams = function () {\n var decodeParams = new PdfDictionary();\n decodeParams.items.setValue(this.dictionaryProperties.columns, new PdfNumber(this.width));\n decodeParams.items.setValue(this.dictionaryProperties.blackIs1, new PdfBoolean(true));\n decodeParams.items.setValue(this.dictionaryProperties.k, new PdfNumber(-1));\n decodeParams.items.setValue(this.dictionaryProperties.predictor, new PdfNumber(15));\n decodeParams.items.setValue(this.dictionaryProperties.bitsPerComponent, new PdfNumber(this.bitsPerComponent));\n return decodeParams;\n };\n /**\n * 'readExceededJPGImage' stream\n * @hidden\n * @private\n */\n ImageDecoder.prototype.readExceededJPGImage = function (stream) {\n this.mStream = stream;\n var isContinueReading = true;\n while (isContinueReading) {\n var marker = this.getMarker(stream);\n switch (marker) {\n case this.sof1Marker:\n case this.sof2Marker:\n case this.sof3Marker:\n case this.sof5Marker:\n case this.sof6Marker:\n case this.sof7Marker:\n case this.sof9Marker:\n case this.sof10Marker:\n case this.sof11Marker:\n case this.sof13Marker:\n case this.sof14Marker:\n case this.sof15Marker:\n stream.position += 3;\n this.mHeight = this.mStream.readNextTwoBytes(stream);\n this.mWidth = this.mStream.readNextTwoBytes(stream);\n isContinueReading = false;\n break;\n default:\n this.skipStream(stream);\n break;\n }\n }\n };\n /**\n * 'skip' stream\n * @hidden\n * @private\n */\n ImageDecoder.prototype.skip = function (stream, noOfBytes) {\n this.mStream = stream;\n var temp = new ByteArray(noOfBytes);\n this.mStream.read(temp, 0, temp.count);\n };\n /**\n * 'getMarker' stream\n * @hidden\n * @private\n */\n ImageDecoder.prototype.getMarker = function (stream) {\n var skippedByte = 0;\n var marker = 32;\n marker = stream.readByte(this.mStream.position);\n stream.position++;\n while (marker !== 255) {\n skippedByte++;\n marker = stream.readByte(this.mStream.position);\n stream.position++;\n }\n do {\n marker = stream.readByte(this.mStream.position);\n stream.position++;\n } while (marker === 255);\n return marker;\n };\n /**\n * 'skipStream' stream\n * @hidden\n * @private\n */\n ImageDecoder.prototype.skipStream = function (stream) {\n var markerLength = this.mStream.readNextTwoBytes(stream) - 2;\n if (markerLength > 0) {\n stream.position += markerLength;\n }\n };\n /**\n * Number array for `png header`.\n * @hidden\n * @private\n */\n ImageDecoder.mPngHeader = [137, 80, 78, 71, 13, 10, 26, 10];\n /**\n * Number Array for `jpeg header`.\n * @hidden\n * @private\n */\n ImageDecoder.mJpegHeader = [255, 216];\n /**\n * Number array for `gif header`.\n * @hidden\n * @private\n */\n ImageDecoder.GIF_HEADER = 'G,I,F,8';\n /**\n * Number array for `bmp header.`\n * @hidden\n * @private\n */\n ImageDecoder.BMP_HEADER = 'B,M';\n return ImageDecoder;\n}());\nexport { ImageDecoder };\n","/**\n * PdfTemplate.ts class for EJ2-PDF\n */\nimport { PdfStream } from './../../primitives/pdf-stream';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfArray } from './../../primitives/pdf-array';\nimport { PdfGraphics } from './../pdf-graphics';\nimport { PdfResources } from './../pdf-resources';\nimport { PdfName } from './../../primitives/pdf-name';\nimport { PointF, SizeF, RectangleF } from './../../drawing/pdf-drawing';\nimport { GetResourceEventHandler } from './../pdf-graphics';\n/**\n * Represents `Pdf Template` object.\n * @private\n */\nvar PdfTemplate = /** @class */ (function () {\n function PdfTemplate(arg1, arg2) {\n /**\n * Initialize an instance for `DictionaryProperties` class.\n * @private\n * @hidden\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Checks whether the transformation 'is performed'.\n * @default true\n * @private\n */\n this.writeTransformation = true;\n if (typeof arg1 === 'undefined') {\n //\n }\n else if (arg1 instanceof SizeF && typeof arg2 === 'undefined') {\n this.content = new PdfStream();\n var tempSize = new SizeF(arg1.width, arg1.height);\n this.setSize(tempSize);\n this.initialize();\n }\n else {\n this.content = new PdfStream();\n this.setSize(new SizeF(arg1, arg2));\n this.initialize();\n }\n }\n Object.defineProperty(PdfTemplate.prototype, \"size\", {\n //Properties\n /**\n * Gets the size of the 'PdfTemplate'.\n */\n get: function () {\n return this.templateSize;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTemplate.prototype, \"width\", {\n /**\n * Gets the width of the 'PdfTemplate'.\n */\n get: function () {\n return this.size.width;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTemplate.prototype, \"height\", {\n /**\n * Gets the height of the 'PdfTemplate'.\n */\n get: function () {\n return this.size.height;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTemplate.prototype, \"graphics\", {\n /**\n * Gets the `graphics` of the 'PdfTemplate'.\n */\n get: function () {\n if (this.pdfGraphics == null || typeof this.pdfGraphics === 'undefined') {\n var gr = new GetResourceEventHandler(this);\n var g = new PdfGraphics(this.size, gr, this.content);\n this.pdfGraphics = g;\n // if(this.writeTransformation) {\n // Transform co-ordinates to Top/Left.\n this.pdfGraphics.initializeCoordinates();\n // }\n }\n return this.pdfGraphics;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the resources and modifies the template dictionary.\n * @private\n */\n PdfTemplate.prototype.getResources = function () {\n if (this.resources == null) {\n this.resources = new PdfResources();\n this.content.items.setValue(this.dictionaryProperties.resources, this.resources);\n }\n return this.resources;\n };\n // Public methods\n /**\n * `Initialize` the type and subtype of the template.\n * @private\n */\n PdfTemplate.prototype.initialize = function () {\n this.addType();\n this.addSubType();\n };\n /**\n * `Adds type key`.\n * @private\n */\n PdfTemplate.prototype.addType = function () {\n var value = new PdfName(this.dictionaryProperties.xObject);\n this.content.items.setValue(this.dictionaryProperties.type, value);\n };\n /**\n * `Adds SubType key`.\n * @private\n */\n PdfTemplate.prototype.addSubType = function () {\n var value = new PdfName(this.dictionaryProperties.form);\n this.content.items.setValue(this.dictionaryProperties.subtype, value);\n };\n PdfTemplate.prototype.reset = function (size) {\n if (typeof size === 'undefined') {\n if (this.resources != null) {\n this.resources = null;\n this.content.remove(this.dictionaryProperties.resources);\n }\n if (this.graphics != null) {\n this.graphics.reset(this.size);\n }\n }\n else {\n this.setSize(size);\n this.reset();\n }\n };\n /**\n * `Set the size` of the 'PdfTemplate'.\n * @private\n */\n PdfTemplate.prototype.setSize = function (size) {\n var rect = new RectangleF(new PointF(0, 0), size);\n var val = PdfArray.fromRectangle(rect);\n this.content.items.setValue(this.dictionaryProperties.bBox, val);\n this.templateSize = size;\n };\n Object.defineProperty(PdfTemplate.prototype, \"element\", {\n // /**\n // * Returns the value of current graphics.\n // * @private\n // */\n // public GetGraphics(g : PdfGraphics) : PdfGraphics {\n // if (this.graphics == null || typeof this.graphics === 'undefined') {\n // this.graphics = g;\n // this.graphics.Size = this.Size;\n // this.graphics.StreamWriter = new PdfStreamWriter(this.content)\n // this.graphics.Initialize();\n // if(this.writeTransformation) {\n // this.graphics.InitializeCoordinates();\n // }\n // }\n // return this.graphics;\n // }\n // IPdfWrapper Members\n /**\n * Gets the `content stream` of 'PdfTemplate' class.\n * @private\n */\n get: function () {\n return this.content;\n },\n enumerable: true,\n configurable: true\n });\n return PdfTemplate;\n}());\nexport { PdfTemplate };\n","/**\n * Used to perform `convertion between pixels and points`.\n * @private\n */\nvar PdfUnitConverter = /** @class */ (function () {\n //constructors\n /**\n * Initializes a new instance of the `UnitConvertor` class with DPI value.\n * @private\n */\n function PdfUnitConverter(dpi) {\n this.updateProportionsHelper(dpi);\n }\n /**\n * `Converts` the value, from one graphics unit to another graphics unit.\n * @private\n */\n PdfUnitConverter.prototype.convertUnits = function (value, from, to) {\n return this.convertFromPixels(this.convertToPixels(value, from), to);\n };\n /**\n * Converts the value `to pixel` from specified graphics unit.\n * @private\n */\n PdfUnitConverter.prototype.convertToPixels = function (value, from) {\n var index = from;\n var result = (value * this.proportions[index]);\n return result;\n };\n /**\n * Converts value, to specified graphics unit `from Pixel`.\n * @private\n */\n PdfUnitConverter.prototype.convertFromPixels = function (value, to) {\n var index = to;\n var result = (value / this.proportions[index]);\n return result;\n };\n /**\n * `Update proportions` matrix according to Graphics settings.\n * @private\n */\n PdfUnitConverter.prototype.updateProportionsHelper = function (pixelPerInch) {\n this.proportions = [\n pixelPerInch / 2.54,\n pixelPerInch / 6.0,\n 1,\n pixelPerInch / 72.0,\n pixelPerInch,\n pixelPerInch / 300.0,\n pixelPerInch / 25.4 // Millimeter\n ];\n };\n //Fields\n /**\n * Indicates default `horizontal resolution`.\n * @default 96\n * @private\n */\n PdfUnitConverter.horizontalResolution = 96;\n /**\n * Indicates default `vertical resolution`.\n * @default 96\n * @private\n */\n PdfUnitConverter.verticalResolution = 96;\n return PdfUnitConverter;\n}());\nexport { PdfUnitConverter };\n","import { SizeF } from './../../drawing/pdf-drawing';\nimport { PdfGraphicsUnit } from './../enum';\nimport { PdfUnitConverter } from './../unit-convertor';\n/**\n * `PdfImage` class represents the base class for images and provides functionality for the 'PdfBitmap' class.\n * @private\n */\nvar PdfImage = /** @class */ (function () {\n function PdfImage() {\n }\n Object.defineProperty(PdfImage.prototype, \"width\", {\n /**\n * Gets and Sets the `width` of an image.\n * @private\n */\n get: function () {\n return this.imageWidth;\n },\n set: function (value) {\n this.imageWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfImage.prototype, \"height\", {\n /**\n * Gets and Sets the `height` of an image.\n * @private\n */\n get: function () {\n return this.imageHeight;\n },\n set: function (value) {\n this.imageHeight = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfImage.prototype, \"size\", {\n /**\n * Gets or sets the size of the image.\n * @private\n */\n set: function (value) {\n this.width = value.width;\n this.height = value.height;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfImage.prototype, \"physicalDimension\", {\n /**\n * Gets the `physical dimension` of an image.\n * @private\n */\n get: function () {\n this.imagePhysicalDimension = this.getPointSize(this.width, this.height, this.horizontalResolution, this.verticalResolution);\n return new SizeF(this.width, this.height);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfImage.prototype, \"element\", {\n // /**\n // * Gets the `image stream as string`.\n // * @private\n // */\n // public static fromString(string : string) : PdfImage {\n // let image : PdfImage = new PdfBitmap(string);\n // return image;\n // }\n /**\n * Gets the `element` image stream.\n * @private\n */\n get: function () {\n return this.imageStream;\n },\n enumerable: true,\n configurable: true\n });\n PdfImage.prototype.getPointSize = function (width, height, horizontalResolution, verticalResolution) {\n if (typeof horizontalResolution === 'undefined') {\n var dpiX = PdfUnitConverter.horizontalResolution;\n var dpiY = PdfUnitConverter.verticalResolution;\n var size = this.getPointSize(width, height, dpiX, dpiY);\n return size;\n }\n else {\n var ucX = new PdfUnitConverter(horizontalResolution);\n var ucY = new PdfUnitConverter(verticalResolution);\n var ptWidth = ucX.convertUnits(width, PdfGraphicsUnit.Pixel, PdfGraphicsUnit.Point);\n var ptHeight = ucY.convertUnits(height, PdfGraphicsUnit.Pixel, PdfGraphicsUnit.Point);\n var size = new SizeF(ptWidth, ptHeight);\n return size;\n }\n };\n return PdfImage;\n}());\nexport { PdfImage };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfBitmap.ts class for EJ2-PDF\n */\nimport { ImageDecoder } from './../../graphics/images/image-decoder';\nimport { ByteArray } from './../../graphics/images/byte-array';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfImage } from './pdf-image';\n/**\n * The 'PdfBitmap' contains methods and properties to handle the Bitmap images.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // base64 string of an image\n * let imageString : string = '/9j/3+2w7em7HzY/KiijFw … 1OEYRUYrQ45yc5OUtz/9k=';\n * // load the image from the base64 string of original image.\n * let image : PdfBitmap = new PdfBitmap(imageString);\n * // draw the image\n * page1.graphics.drawImage(image, new RectangleF({x : 10, y : 10}, {width : 200, height : 200}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfBitmap = /** @class */ (function (_super) {\n __extends(PdfBitmap, _super);\n /**\n * Create an instance for `PdfBitmap` class.\n * @param encodedString Base64 string of an image.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // base64 string of an image\n * let imageString : string = '/9j/3+2w7em7HzY/KiijFw … 1OEYRUYrQ45yc5OUtz/9k=';\n * //\n * // load the image from the base64 string of original image.\n * let image : PdfBitmap = new PdfBitmap(imageString);\n * //\n * // draw the image\n * page1.graphics.drawImage(image, new RectangleF({x : 10, y : 10}, {width : 200, height : 200}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n function PdfBitmap(encodedString) {\n var _this = _super.call(this) || this;\n //Fields\n /**\n * Specifies the `status` of an image.\n * @default true.\n * @hidden\n * @private\n */\n _this.imageStatus = true;\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @hidden\n * @private\n */\n _this.dictionaryProperties = new DictionaryProperties();\n _this.loadImage(encodedString);\n return _this;\n }\n /**\n * `Load image`.\n * @hidden\n * @private\n */\n PdfBitmap.prototype.loadImage = function (encodedString) {\n var task = this.initializeAsync(encodedString);\n };\n /**\n * `Initialize` image parameters.\n * @private\n */\n PdfBitmap.prototype.initializeAsync = function (encodedString) {\n var byteArray = new ByteArray(encodedString.length);\n byteArray.writeFromBase64String(encodedString);\n this.decoder = new ImageDecoder(byteArray);\n this.height = this.decoder.height;\n this.width = this.decoder.width;\n // FrameCount = BitmapImageDecoder.FrameCount;\n this.bitsPerComponent = this.decoder.bitsPerComponent;\n };\n /**\n * `Saves` the image into stream.\n * @private\n */\n PdfBitmap.prototype.save = function () {\n this.imageStatus = true;\n this.imageStream = this.decoder.getImageDictionary();\n };\n return PdfBitmap;\n}(PdfImage));\nexport { PdfBitmap };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfResources.ts class for EJ2-PDF\n */\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { TemporaryDictionary } from './../collections/object-object-pair/dictionary';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfArray } from './../primitives/pdf-array';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { PdfCrossTable } from './../input-output/pdf-cross-table';\nimport { PdfFont } from './fonts/pdf-font';\nimport { PdfTemplate } from './figures/pdf-template';\nimport { PdfBrush } from './brushes/pdf-brush';\nimport { PdfTransparency } from './pdf-transparency';\nimport { PdfBitmap } from './../graphics/images/pdf-bitmap';\nimport { PdfImage } from './../graphics/images/pdf-image';\nimport { PdfGradientBrush } from './brushes/pdf-gradient-brush';\nimport { PdfTilingBrush } from './brushes/pdf-tiling-brush';\n/**\n * `PdfResources` class used to set resource contents like font, image.\n * @private\n */\nvar PdfResources = /** @class */ (function (_super) {\n __extends(PdfResources, _super);\n function PdfResources(baseDictionary) {\n var _this = _super.call(this, baseDictionary) || this;\n /**\n * Dictionary for the `properties names`.\n * @private\n */\n _this.properties = new PdfDictionary();\n return _this;\n }\n Object.defineProperty(PdfResources.prototype, \"names\", {\n //Properties\n /**\n * Gets the `font names`.\n * @private\n */\n get: function () {\n return this.getNames();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfResources.prototype, \"document\", {\n /**\n * Get or set the `page document`.\n * @private\n */\n get: function () {\n return this.pdfDocument;\n },\n set: function (value) {\n this.pdfDocument = value;\n },\n enumerable: true,\n configurable: true\n });\n //Public Methods\n /**\n * `Generates name` for the object and adds to the resource if the object is new.\n * @private\n */\n PdfResources.prototype.getName = function (obj) {\n var primitive = obj.element;\n var name = null;\n if (this.names.containsKey(primitive)) {\n name = this.names.getValue(primitive);\n }\n // Object is new.\n if (name == null) {\n var sName = this.generateName();\n name = new PdfName(sName);\n this.names.setValue(primitive, name);\n if (obj instanceof PdfFont) {\n this.add(obj, name);\n }\n else if (obj instanceof PdfTemplate) {\n this.add(obj, name);\n }\n else if (obj instanceof PdfGradientBrush || obj instanceof PdfTilingBrush) {\n this.add(obj, name);\n }\n else if (obj instanceof PdfTransparency) {\n this.add(obj, name);\n }\n else if (obj instanceof PdfImage || obj instanceof PdfBitmap) {\n this.add(obj, name);\n }\n }\n return name;\n };\n /**\n * Gets `resource names` to font dictionaries.\n * @private\n */\n PdfResources.prototype.getNames = function () {\n if (this.pdfNames == null) {\n this.pdfNames = new TemporaryDictionary();\n }\n var fonts = this.items.getValue(this.dictionaryProperties.font);\n if (fonts != null) {\n var reference = fonts;\n var dictionary = fonts;\n dictionary = PdfCrossTable.dereference(fonts);\n }\n return this.pdfNames;\n };\n /**\n * Add `RequireProcedureSet` into procset array.\n * @private\n */\n PdfResources.prototype.requireProcedureSet = function (procedureSetName) {\n if (procedureSetName == null) {\n throw new Error('ArgumentNullException:procedureSetName');\n }\n var procSets = this.items.getValue(this.dictionaryProperties.procset);\n if (procSets == null) {\n procSets = new PdfArray();\n this.items.setValue(this.dictionaryProperties.procset, procSets);\n }\n var name = new PdfName(procedureSetName);\n if (!procSets.contains(name)) {\n procSets.add(name);\n }\n };\n //Helper Methods\n /**\n * `Remove font` from array.\n * @private\n */\n PdfResources.prototype.removeFont = function (name) {\n var key = null;\n var keys = this.pdfNames.keys();\n for (var index = 0; index < this.pdfNames.size(); index++) {\n if (this.pdfNames.getValue(keys[index]) === new PdfName(name)) {\n key = keys[index];\n break;\n }\n }\n if (key != null) {\n this.pdfNames.remove(key);\n }\n };\n /**\n * Generates `Unique string name`.\n * @private\n */\n PdfResources.prototype.generateName = function () {\n var name = Guid.getNewGuidString();\n return name;\n };\n PdfResources.prototype.add = function (arg1, arg2) {\n if (arg1 instanceof PdfFont) {\n var dictionary = null;\n var fonts = this.items.getValue(this.dictionaryProperties.font);\n if (fonts != null) {\n var reference = fonts;\n dictionary = fonts;\n dictionary = fonts;\n }\n else {\n dictionary = new PdfDictionary();\n this.items.setValue(this.dictionaryProperties.font, dictionary);\n }\n dictionary.items.setValue(arg2.value, new PdfReferenceHolder(arg1.element));\n }\n else if (arg1 instanceof PdfTemplate) {\n var xobjects = void 0;\n xobjects = this.items.getValue(this.dictionaryProperties.xObject);\n // Create fonts dictionary.\n if (xobjects == null) {\n xobjects = new PdfDictionary();\n this.items.setValue(this.dictionaryProperties.xObject, xobjects);\n }\n xobjects.items.setValue(arg2.value, new PdfReferenceHolder(arg1.element));\n }\n else if (arg1 instanceof PdfBrush) {\n if (arg1 instanceof PdfGradientBrush || arg1 instanceof PdfTilingBrush) {\n var savable = arg1.element;\n if (savable != null) {\n var pattern = this.items.getValue(this.dictionaryProperties.pattern);\n // Create a new pattern dictionary.\n if (pattern == null) {\n pattern = new PdfDictionary();\n this.items.setValue(this.dictionaryProperties.pattern, pattern);\n }\n pattern.items.setValue(arg2.value, new PdfReferenceHolder(savable));\n }\n }\n }\n else if (arg1 instanceof PdfTransparency) {\n var savable = arg1.element;\n var transDic = null;\n transDic = this.items.getValue(this.dictionaryProperties.extGState);\n // Create a new pattern dictionary.\n if (transDic == null) {\n transDic = new PdfDictionary();\n this.items.setValue(this.dictionaryProperties.extGState, transDic);\n }\n transDic.items.setValue(arg2.value, new PdfReferenceHolder(savable));\n }\n else {\n /* tslint:disable */\n var xobjects = this.Dictionary.items.getValue(this.dictionaryProperties.xObject);\n var parentXObjects = void 0;\n if (typeof this.pdfDocument !== 'undefined') {\n parentXObjects = this.pdfDocument.sections.element.items.getValue(this.dictionaryProperties.resources).items.getValue(this.dictionaryProperties.xObject);\n }\n var values = this.Dictionary.items.values();\n var hasSameImageStream = false;\n var oldReference = void 0;\n if (typeof this.pdfDocument !== 'undefined' && (typeof parentXObjects === undefined || parentXObjects == null)) {\n parentXObjects = new PdfDictionary();\n this.pdfDocument.sections.element.items.getValue(this.dictionaryProperties.resources).items.setValue(this.dictionaryProperties.xObject, parentXObjects);\n }\n else if (typeof this.pdfDocument !== 'undefined') {\n var values_1 = parentXObjects.items.values();\n for (var i = 0; i < values_1.length; i++) {\n if (typeof values_1[i] !== 'undefined' && typeof values_1[i].element !== 'undefined') {\n if (values_1[i].element.data[0] === arg1.element.data[0]) {\n oldReference = values_1[i];\n hasSameImageStream = true;\n }\n }\n }\n }\n if (xobjects == null) {\n xobjects = new PdfDictionary();\n this.Dictionary.items.setValue(this.dictionaryProperties.xObject, xobjects);\n }\n if (hasSameImageStream && typeof oldReference !== 'undefined') {\n xobjects.items.setValue(arg2.value, oldReference);\n }\n else {\n var reference = new PdfReferenceHolder(arg1.element);\n xobjects.items.setValue(arg2.value, reference);\n if (typeof this.pdfDocument !== 'undefined') {\n parentXObjects.items.setValue(arg2.value, reference);\n }\n }\n /* tslint:enable */\n }\n };\n return PdfResources;\n}(PdfDictionary));\nexport { PdfResources };\n/* tslint:disable */\n/**\n * Used to create new guid for resources.\n * @private\n */\nvar Guid = /** @class */ (function () {\n function Guid() {\n }\n /**\n * Generate `new GUID`.\n * @private\n */\n Guid.getNewGuidString = function () {\n return 'aaaaaaaa-aaaa-4aaa-baaa-aaaaaaaaaaaa'.replace(/[ab]/g, function (c) {\n var random = Math.random() * 16 | 0;\n var result = c === 'a' ? random : (random & 0x3 | 0x8);\n return result.toString(16);\n });\n };\n return Guid;\n}());\nexport { Guid };\n/* tslint:enable */ \n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { GetResourceEventHandler } from './../pdf-graphics';\nimport { PdfBrush } from './pdf-brush';\nimport { PointF, SizeF, RectangleF, Rectangle } from './../../drawing/pdf-drawing';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfArray } from './../../primitives/pdf-array';\nimport { PdfNumber } from './../../primitives/pdf-number';\nimport { PdfGraphics } from './../pdf-graphics';\nimport { PdfResources } from './../pdf-resources';\nimport { PdfStream } from './../../primitives/pdf-stream';\nimport { PdfPage } from './../../pages/pdf-page';\n/**\n * `PdfTilingBrush` Implements a colored tiling brush.\n */\nvar PdfTilingBrush = /** @class */ (function (_super) {\n __extends(PdfTilingBrush, _super);\n /**\n * Initializes a new instance of the `PdfTilingBrush` class.\n * @public\n */\n function PdfTilingBrush(arg1, arg2) {\n var _this = _super.call(this) || this;\n /**\n * Local variable to store Stroking.\n * @private\n */\n _this.mStroking = false;\n /**\n * Local variable to store the tile start location.\n * @private\n */\n _this.mLocation = new PointF(0, 0);\n /**\n * Local variable to store the dictionary properties.\n * @private\n */\n _this.mDictionaryProperties = new DictionaryProperties();\n var rect = null;\n if (arg1 instanceof Rectangle) {\n rect = arg1;\n }\n else if (arg1 instanceof SizeF) {\n rect = new Rectangle(0, 0, arg1.width, arg1.height);\n }\n if (arg2 !== null && arg2 instanceof PdfPage) {\n _this.mPage = arg2;\n }\n _this.brushStream = new PdfStream();\n _this.mResources = new PdfResources();\n _this.brushStream.items.setValue(_this.mDictionaryProperties.resources, _this.mResources);\n _this.setBox(rect);\n _this.setObligatoryFields();\n if (arg2 !== null && arg2 instanceof PdfPage) {\n _this.mPage = arg2;\n _this.graphics.colorSpace = arg2.document.colorSpace;\n }\n return _this;\n }\n /**\n * Initializes a new instance of the `PdfTilingBrush` class.\n * @private\n * @param rectangle The size of the smallest brush cell.\n * @param page The Current Page Object.\n * @param location The Tile start location.\n * @param matrix The matrix.\n */\n PdfTilingBrush.prototype.initialize = function (rectangle, page, location, matrix) {\n this.mPage = page;\n this.mLocation = location;\n this.mTransformationMatrix = matrix;\n this.tempBrushStream = this.brushStream;\n this.brushStream = new PdfStream();\n var tempResource = new PdfResources();\n this.brushStream.items.setValue(this.mDictionaryProperties.resources, tempResource);\n this.setBox(rectangle);\n this.setObligatoryFields();\n return this;\n };\n Object.defineProperty(PdfTilingBrush.prototype, \"location\", {\n //Properties\n /**\n * Location representing the start position of the tiles.\n * @public\n */\n get: function () {\n return this.mLocation;\n },\n set: function (value) {\n this.mLocation = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Sets the obligatory fields.\n * @private\n */\n PdfTilingBrush.prototype.setObligatoryFields = function () {\n this.brushStream.items.setValue(this.mDictionaryProperties.patternType, new PdfNumber(1));\n // Tiling brush.\n this.brushStream.items.setValue(this.mDictionaryProperties.paintType, new PdfNumber(1));\n // Coloured.\n this.brushStream.items.setValue(this.mDictionaryProperties.tilingType, new PdfNumber(1));\n // Constant spacing.\n this.brushStream.items.setValue(this.mDictionaryProperties.xStep, new PdfNumber((this.mBox.right - this.mBox.left)));\n this.brushStream.items.setValue(this.mDictionaryProperties.yStep, new PdfNumber((this.mBox.bottom - this.mBox.top)));\n if ((this.mPage != null) && (this.mLocation != null)) {\n if ((this.mTransformationMatrix == null && typeof this.mTransformationMatrix === 'undefined')) {\n // Transform the tile origin to fit the location\n var tileTransform = (this.mPage.size.height % this.rectangle.size.height) - (this.mLocation.y);\n /* tslint:disable-next-line:max-line-length */\n this.brushStream.items.setValue(this.mDictionaryProperties.matrix, new PdfArray([1, 0, 0, 1, this.mLocation.x, tileTransform]));\n }\n else {\n var tileTransform = 0;\n // Transform the tile origin to fit the location\n var elements = this.mTransformationMatrix.matrix.elements;\n if ((this.mPage.size.height > this.rectangle.size.height)) {\n tileTransform = (this.mTransformationMatrix.matrix.offsetY\n - (this.mPage.size.height % this.rectangle.size.height));\n }\n else {\n tileTransform = ((this.mPage.size.height % this.rectangle.size.height) + this.mTransformationMatrix.matrix.offsetY);\n }\n this.brushStream.items.setValue(this.mDictionaryProperties.matrix, new PdfArray([\n elements[0], elements[1], elements[2], elements[3], elements[4], tileTransform\n ]));\n }\n }\n };\n /**\n * Sets the BBox coordinates.\n * @private\n */\n PdfTilingBrush.prototype.setBox = function (box) {\n this.mBox = box;\n var rect = new RectangleF(this.mBox.left, this.mBox.top, this.mBox.right, this.mBox.bottom);\n this.brushStream.items.setValue(this.mDictionaryProperties.bBox, PdfArray.fromRectangle(rect));\n };\n Object.defineProperty(PdfTilingBrush.prototype, \"rectangle\", {\n //Properties\n /**\n * Gets the boundary box of the smallest brush cell.\n * @public\n */\n get: function () {\n return this.mBox;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTilingBrush.prototype, \"size\", {\n /**\n * Gets the size of the smallest brush cell.\n * @public\n */\n get: function () {\n return this.mBox.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTilingBrush.prototype, \"graphics\", {\n /**\n * Gets Graphics context of the brush.\n */\n get: function () {\n if ((this.mGraphics == null && typeof this.mGraphics === 'undefined')) {\n var gr = new GetResourceEventHandler(this);\n var g = new PdfGraphics(this.size, gr, this.brushStream);\n this.mGraphics = g;\n this.mResources = this.getResources();\n this.mGraphics.initializeCoordinates();\n }\n return this.mGraphics;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the resources and modifies the template dictionary.\n * @public\n */\n PdfTilingBrush.prototype.getResources = function () {\n return this.mResources;\n };\n Object.defineProperty(PdfTilingBrush.prototype, \"stroking\", {\n /**\n * Gets or sets a value indicating whether this PdfTilingBrush\n * is used for stroking operations.\n */\n get: function () {\n return this.mStroking;\n },\n set: function (value) {\n this.mStroking = value;\n },\n enumerable: true,\n configurable: true\n });\n //PdfBrush methods\n /**\n * Creates a new copy of a brush.\n * @public\n */\n PdfTilingBrush.prototype.clone = function () {\n var brush = this.initialize(this.rectangle, this.mPage, this.location, this.mTransformationMatrix);\n if ((this.mTransformationMatrix != null) && (this.mTransformationMatrix.matrix != null)) {\n /* tslint:disable-next-line:max-line-length */\n brush.brushStream.items.setValue(this.mDictionaryProperties.matrix, new PdfArray(this.mTransformationMatrix.matrix.elements));\n }\n brush.brushStream.data = this.tempBrushStream.data;\n brush.mResources = new PdfResources(this.mResources);\n brush.brushStream.items.setValue(this.mDictionaryProperties.resources, brush.mResources);\n return brush;\n };\n /**\n * Monitors the changes of the brush and modify PDF state respectfully.\n * @param brush The brush\n * @param streamWriter The stream writer\n * @param getResources The get resources delegate.\n * @param saveChanges if set to true the changes should be saved anyway.\n * @param currentColorSpace The current color space.\n */\n /* tslint:disable-next-line:max-line-length */\n PdfTilingBrush.prototype.monitorChanges = function (brush, streamWriter, getResources, saveChanges, currentColorSpace) {\n var diff = false;\n if (brush !== this) {\n // Set the Pattern colour space.\n streamWriter.setColorSpace('Pattern', this.mStroking);\n // Set the pattern for non-stroking operations.\n var resources1 = getResources.getResources();\n var name1 = resources1.getName(this);\n streamWriter.setColourWithPattern(null, name1, this.mStroking);\n diff = true;\n }\n else if (brush instanceof PdfTilingBrush) {\n // Set the /Pattern colour space.\n streamWriter.setColorSpace('Pattern', this.mStroking);\n // Set the pattern for non-stroking operations.\n var resources = getResources.getResources();\n var name_1 = resources.getName(this);\n streamWriter.setColourWithPattern(null, name_1, this.mStroking);\n diff = true;\n }\n return diff;\n };\n /**\n * Resets the changes, which were made by the brush.\n * In other words resets the state to the initial one.\n * @param streamWriter The stream writer.\n */\n PdfTilingBrush.prototype.resetChanges = function (streamWriter) {\n // We shouldn't do anything to reset changes.\n // All changes will be reset automatically by setting a new colour space.\n };\n Object.defineProperty(PdfTilingBrush.prototype, \"element\", {\n /* tslint:enable */\n // IPdfWrapper Members\n /**\n * Gets the `element`.\n * @public\n */\n get: function () {\n return this.brushStream;\n },\n enumerable: true,\n configurable: true\n });\n return PdfTilingBrush;\n}(PdfBrush));\nexport { PdfTilingBrush };\n","/**\n * PdfGraphics.ts class for EJ2-PDF\n */\nimport { PdfColorSpace, TextRenderingMode, PdfFillMode, PdfTextAlignment } from './enum';\nimport { PdfVerticalAlignment, PdfBlendMode } from './enum';\nimport { PdfSubSuperScript } from './fonts/enum';\nimport { PdfStreamWriter } from './../input-output/pdf-stream-writer';\nimport { PdfPen } from './pdf-pen';\nimport { PdfBrush } from './brushes/pdf-brush';\nimport { PdfSolidBrush } from './brushes/pdf-solid-brush';\nimport { PdfFont } from './fonts/pdf-font';\nimport { PdfTransformationMatrix, Matrix } from './pdf-transformation-matrix';\nimport { PointF, SizeF, RectangleF } from './../drawing/pdf-drawing';\nimport { ProcedureSets } from './constants';\nimport { PdfString } from './../primitives/pdf-string';\nimport { PdfStringFormat } from './fonts/pdf-string-format';\nimport { TemporaryDictionary } from './../collections/object-object-pair/dictionary';\nimport { PdfTransparency } from './pdf-transparency';\nimport { PdfStringLayouter, LineType } from './fonts/string-layouter';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { StringTokenizer } from './fonts/string-tokenizer';\nimport { PdfAutomaticFieldInfoCollection } from './../document/automatic-fields/automatic-field-info-collection';\nimport { PdfAutomaticFieldInfo } from './../document/automatic-fields/automatic-field-info';\nimport { Operators } from './../input-output/pdf-operators';\nimport { UnicodeTrueTypeFont } from './fonts/unicode-true-type-font';\nimport { InternalEnum } from './../primitives/pdf-string';\nimport { RtlRenderer } from './fonts/rtl-renderer';\nimport { PdfTextDirection } from './enum';\nimport { PathPointType } from './figures/enum';\nimport { PdfGradientBrush } from './../../implementation/graphics/brushes/pdf-gradient-brush';\nimport { PdfTilingBrush } from './brushes/pdf-tiling-brush';\n/**\n * `PdfGraphics` class represents a graphics context of the objects.\n * It's used for performing all the graphics operations.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * //graphics of the page\n * let page1Graphics : PdfGraphics = page1.graphics;\n * // draw the text on the page1 graphics\n * page1Graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * //\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfGraphics = /** @class */ (function () {\n function PdfGraphics(arg1, arg2, arg3) {\n /**\n * Represents the `Current color space`.\n * @private\n */\n this.currentColorSpace = PdfColorSpace.Rgb;\n /**\n * Stores `previous rendering mode`.\n * @private\n */\n this.previousTextRenderingMode = TextRenderingMode.Fill;\n /**\n * Previous `character spacing` value or 0.\n * @private\n */\n this.previousCharacterSpacing = 0.0;\n /**\n * Previous `word spacing` value or 0.\n * @private\n */\n this.previousWordSpacing = 0.0;\n /**\n * The `previously used text scaling` value.\n * @private\n */\n this.previousTextScaling = 100.0;\n /**\n * Instance of `ProcedureSets` class.\n * @private\n */\n this.procedureSets = new ProcedureSets();\n /**\n * To check wihether it is a `direct text rendering`.\n * @default true\n * @private\n */\n this.isNormalRender = true;\n /**\n * check whether to `use font size` to calculate the shift.\n * @default false\n * @private\n */\n this.isUseFontSize = false;\n /**\n * check whether the font is in `italic type`.\n * @default false\n * @private\n */\n this.isItalic = false;\n /**\n * Check whether it is an `emf Text Matrix`.\n * @default false\n * @private\n */\n this.isEmfTextScaled = false;\n /**\n * Check whether it is an `emf` call.\n * @default false\n * @private\n */\n this.isEmf = false;\n /**\n * Check whether it is an `emf plus` call.\n * @default false\n * @private\n */\n this.isEmfPlus = false;\n /**\n * Check whether it is in `base line format`.\n * @default true\n * @private\n */\n this.isBaselineFormat = true;\n /**\n * Emf Text `Scaling Factor`.\n * @private\n */\n this.emfScalingFactor = new SizeF(0, 0);\n /**\n * To check whether the `last color space` of document and garphics is saved.\n * @private\n */\n this.colorSpaceChanged = false;\n /**\n * Stores an instance of `DictionaryProperties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Checks whether the x co-ordinate is need to set as client size or not.\n * @hidden\n * @private\n */\n this.isOverloadWithPosition = false;\n /**\n * Checks whether the x co-ordinate is need to set as client size or not.\n * @hidden\n * @private\n */\n this.isPointOverload = false;\n /**\n * Current colorspaces.\n * @hidden\n * @private\n */\n this.currentColorSpaces = ['RGB', 'CMYK', 'GrayScale', 'Indexed'];\n /**\n * Checks the current image `is optimized` or not.\n * @default false.\n * @private\n */\n this.isImageOptimized = false;\n /**\n * Stores the `graphics states`.\n * @private\n */\n this.graphicsState = [];\n /**\n * Indicates whether the object `had trasparency`.\n * @default false\n * @private\n */\n this.istransparencySet = false;\n /**\n * Stores the instance of `PdfAutomaticFieldInfoCollection` class .\n * @default null\n * @private\n */\n this.internalAutomaticFields = null;\n /**\n * Stores the index of the start line that should draw with in the next page.\n * @private\n */\n this.startCutIndex = -1;\n this.getResources = arg2;\n this.canvasSize = arg1;\n if (arg3 instanceof PdfStreamWriter) {\n this.pdfStreamWriter = arg3;\n }\n else {\n this.pdfStreamWriter = new PdfStreamWriter(arg3);\n }\n this.initialize();\n }\n Object.defineProperty(PdfGraphics.prototype, \"stringLayoutResult\", {\n // Properties\n /**\n * Returns the `result` after drawing string.\n * @private\n */\n get: function () {\n return this.pdfStringLayoutResult;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"size\", {\n /**\n * Gets the `size` of the canvas.\n * @private\n */\n get: function () {\n return this.canvasSize;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"mediaBoxUpperRightBound\", {\n /**\n * Gets and Sets the value of `MediaBox upper right bound`.\n * @private\n */\n get: function () {\n if (typeof this.internalMediaBoxUpperRightBound === 'undefined') {\n this.internalMediaBoxUpperRightBound = 0;\n }\n return this.internalMediaBoxUpperRightBound;\n },\n set: function (value) {\n this.internalMediaBoxUpperRightBound = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"clientSize\", {\n /**\n * Gets the `size` of the canvas reduced by margins and page templates.\n * @private\n */\n get: function () {\n return new SizeF(this.clipBounds.width, this.clipBounds.height);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"colorSpace\", {\n /**\n * Gets or sets the current `color space` of the document\n * @private\n */\n get: function () {\n return this.currentColorSpace;\n },\n set: function (value) {\n this.currentColorSpace = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"streamWriter\", {\n /**\n * Gets the `stream writer`.\n * @private\n */\n get: function () {\n return this.pdfStreamWriter;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"matrix\", {\n /**\n * Gets the `transformation matrix` reflecting current transformation.\n * @private\n */\n get: function () {\n if (this.transformationMatrix == null) {\n this.transformationMatrix = new PdfTransformationMatrix();\n }\n return this.transformationMatrix;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"layer\", {\n /**\n * Gets the `layer` for the graphics, if exists.\n * @private\n */\n get: function () {\n return this.pageLayer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"page\", {\n /**\n * Gets the `page` for this graphics, if exists.\n * @private\n */\n get: function () {\n return this.pageLayer.page;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"automaticFields\", {\n get: function () {\n if (this.internalAutomaticFields == null || typeof this.internalAutomaticFields === 'undefined') {\n this.internalAutomaticFields = new PdfAutomaticFieldInfoCollection();\n }\n return this.internalAutomaticFields;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * `Initializes` this instance.\n * @private\n */\n PdfGraphics.prototype.initialize = function () {\n this.bStateSaved = false;\n this.currentPen = null;\n this.currentBrush = null;\n this.currentFont = null;\n this.currentColorSpace = PdfColorSpace.Rgb;\n this.bCSInitialized = false;\n this.transformationMatrix = null;\n this.previousTextRenderingMode = (-1); //.Fill;\n this.previousCharacterSpacing = -1.0;\n this.previousWordSpacing = -1.0;\n this.previousTextScaling = -100.0;\n // this.m_trasparencies = null;\n this.currentStringFormat = null;\n this.clipBounds = new RectangleF(new PointF(0, 0), this.size);\n this.getResources.getResources().requireProcedureSet(this.procedureSets.pdf);\n };\n PdfGraphics.prototype.drawPdfTemplate = function (template, location, size) {\n if (typeof size === 'undefined') {\n if (template == null) {\n throw Error('ArgumentNullException-template');\n }\n this.drawPdfTemplate(template, location, template.size);\n }\n else {\n // let crossTable : PdfCrossTable = null;\n // if (this.pageLayer != null) {\n // crossTable = (this.page as PdfPage).section.parentDocument.crossTable;\n // }\n if (template == null) {\n throw Error('ArgumentNullException-template');\n }\n var scaleX = (template.width > 0) ? size.width / template.width : 1;\n var scaleY = (template.height > 0) ? size.height / template.height : 1;\n var bNeedScale = !(scaleX === 1 && scaleY === 1);\n // Save state.\n var state = this.save();\n // Take into consideration that rect location is bottom/left.\n var matrix = new PdfTransformationMatrix();\n if (this.pageLayer != null) {\n this.getTranslateTransform(location.x, location.y + size.height, matrix);\n }\n if (bNeedScale) {\n this.getScaleTransform(scaleX, scaleY, matrix);\n }\n this.pdfStreamWriter.modifyCtm(matrix);\n // Output template.\n var resources = this.getResources.getResources();\n var name_1 = resources.getName(template);\n this.pdfStreamWriter.executeObject(name_1);\n // Restore state.\n this.restore(state);\n //Transfer automatic fields from template.\n var g = template.graphics;\n if (g != null) {\n for (var index = 0; index < g.automaticFields.automaticFields.length; index++) {\n var fieldInfo = g.automaticFields.automaticFields[index];\n var newLocation = new PointF(fieldInfo.location.x + location.x, fieldInfo.location.y + location.y);\n var scalingX = template.size.width == 0 ? 0 : size.width / template.size.width;\n var scalingY = template.size.height == 0 ? 0 : size.height / template.size.height;\n this.automaticFields.add(new PdfAutomaticFieldInfo(fieldInfo.field, newLocation, scalingX, scalingY));\n this.page.dictionary.modify();\n }\n }\n this.getResources.getResources().requireProcedureSet(this.procedureSets.imageB);\n this.getResources.getResources().requireProcedureSet(this.procedureSets.imageC);\n this.getResources.getResources().requireProcedureSet(this.procedureSets.imageI);\n this.getResources.getResources().requireProcedureSet(this.procedureSets.text);\n }\n };\n /**\n * @public\n */\n PdfGraphics.prototype.drawString = function (arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) {\n if (typeof arg1 === 'string' && arg2 instanceof PdfFont && (arg3 instanceof PdfPen || arg3 === null) && (arg4 instanceof PdfBrush || arg4 === null) && typeof arg5 === 'number' && typeof arg6 === 'number' && (arg7 instanceof PdfStringFormat || arg7 === null) && typeof arg8 === 'undefined') {\n this.isOverloadWithPosition = true;\n this.drawString(arg1, arg2, arg3, arg4, arg5, arg6, (this.clientSize.width - arg5), 0, arg7);\n }\n else {\n var temparg3 = arg3;\n var temparg4 = arg4;\n var temparg5 = arg5;\n var temparg6 = arg6;\n var temparg7 = arg7;\n var temparg8 = arg8;\n var temparg9 = arg9;\n var layouter = new PdfStringLayouter();\n var result = layouter.layout(arg1, arg2, temparg9, new SizeF(temparg7, temparg8), this.isOverloadWithPosition, this.clientSize);\n if (!result.empty) {\n var rect = this.checkCorrectLayoutRectangle(result.actualSize, temparg5, temparg6, temparg9);\n if (temparg7 <= 0) {\n temparg5 = rect.x;\n temparg7 = rect.width;\n }\n if (temparg8 <= 0) {\n temparg6 = rect.y;\n temparg8 = rect.height;\n }\n this.drawStringLayoutResult(result, arg2, temparg3, temparg4, new RectangleF(temparg5, temparg6, temparg7, temparg8), temparg9);\n this.isEmfTextScaled = false;\n this.emfScalingFactor = new SizeF(0, 0);\n }\n this.getResources.getResources().requireProcedureSet(this.procedureSets.text);\n this.isNormalRender = true;\n this.pdfStringLayoutResult = result;\n this.isUseFontSize = false;\n }\n };\n PdfGraphics.prototype.drawLine = function (arg1, arg2, arg3, arg4, arg5) {\n if (arg2 instanceof PointF) {\n var temparg2 = arg2;\n var temparg3 = arg3;\n this.drawLine(arg1, temparg2.x, temparg2.y, temparg3.x, temparg3.y);\n }\n else {\n var temparg2 = arg2;\n var temparg3 = arg3;\n var temparg4 = arg4;\n var temparg5 = arg5;\n this.stateControl(arg1, null, null);\n var sw = this.streamWriter;\n sw.beginPath(temparg2, temparg3);\n sw.appendLineSegment(temparg4, temparg5);\n sw.strokePath();\n this.getResources.getResources().requireProcedureSet(this.procedureSets.pdf);\n }\n };\n PdfGraphics.prototype.drawRectangle = function (arg1, arg2, arg3, arg4, arg5, arg6) {\n if (arg1 instanceof PdfPen && typeof arg2 === 'number') {\n var temparg3 = arg3;\n this.drawRectangle(arg1, null, arg2, temparg3, arg4, arg5);\n }\n else if (arg1 instanceof PdfBrush && typeof arg2 === 'number') {\n var temparg3 = arg3;\n this.drawRectangle(null, arg1, arg2, temparg3, arg4, arg5);\n }\n else {\n var temparg3 = arg3;\n var temparg4 = arg4;\n var temparg5 = arg5;\n var temparg6 = arg6;\n if ((arg2 instanceof PdfTilingBrush)) {\n this.bCSInitialized = false;\n var xOffset = (this.matrix.matrix.offsetX + temparg3);\n var yOffset = void 0;\n if (((this.layer != null) && (this.layer.page != null))) {\n yOffset = ((this.layer.page.size.height - this.matrix.matrix.offsetY) + temparg4);\n }\n else {\n yOffset = ((this.clientSize.height - this.matrix.matrix.offsetY) + temparg4);\n }\n (arg2).location = new PointF(xOffset, yOffset);\n (arg2).graphics.colorSpace = this.colorSpace;\n }\n else if ((arg2 instanceof PdfGradientBrush)) {\n arg2.colorSpace = this.colorSpace;\n }\n if (arg2 instanceof PdfSolidBrush && arg2.color.isEmpty) {\n arg2 = null;\n }\n var temparg1 = arg1;\n var temparg2 = arg2;\n this.stateControl(temparg1, temparg2, null);\n this.streamWriter.appendRectangle(temparg3, temparg4, temparg5, temparg6);\n this.drawPathHelper(temparg1, temparg2, false);\n }\n };\n /**\n * Draw rounded rectangle specified by a brush, pen, coordinate pair, a width, a height and a radius.\n * ```typescript\n * // Create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // Create a new page\n * let page : PdfPage = document.pages.add();\n * // Create brush for draw rectangle\n * let brush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(238, 130, 238));\n * // Create a new PDF pen\n * let pen: PdfPen = new PdfPen(new PdfColor(255, 0, 0), 1);\n * // Draw rounded rectangle\n * page.graphics.drawRoundedRectangle(pen, brush, 20, 20, 100, 50, 5);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param pen Stoke color of the rectangle.\n * @param brush Fill color of the rectangle.\n * @param x The x-coordinate of the upper-left corner of the rectangle to draw.\n * @param y The y-coordinate of the upper-left corner of the rectangle to draw.\n * @param width Width of the rectangle to draw.\n * @param height Height of the rectangle to draw.\n * @param radius Radius of the arcs to draw.\n */\n PdfGraphics.prototype.drawRoundedRectangle = function (pen, brush, x, y, width, height, radius) {\n if (pen === null) {\n throw new Error('pen');\n }\n if (brush === null) {\n throw new Error('brush');\n }\n if (radius === 0) {\n this.drawRectangle(pen, brush, x, y, width, height);\n }\n else {\n var bounds = [x, y, width, height];\n var diameter = radius * 2;\n var size = [diameter, diameter];\n var arc = [bounds[0], bounds[1], size[0], size[1]];\n this._pathPoints = [];\n this._pathTypes = [];\n var startFigure = true;\n startFigure = this._addArc(arc[0], arc[1], arc[2], arc[3], 180, 90, startFigure);\n arc[0] = (bounds[0] + bounds[2]) - diameter;\n startFigure = this._addArc(arc[0], arc[1], arc[2], arc[3], 270, 90, startFigure);\n arc[1] = (bounds[1] + bounds[3]) - diameter;\n startFigure = this._addArc(arc[0], arc[1], arc[2], arc[3], 0, 90, startFigure);\n arc[0] = bounds[0];\n startFigure = this._addArc(arc[0], arc[1], arc[2], arc[3], 90, 90, startFigure);\n var index = this._pathPoints.length - 1;\n var type = ((this._pathTypes[index]));\n type = (type | PathPointType.CloseSubpath);\n this._pathTypes[index] = (type);\n this._drawPath(pen, brush, this._pathPoints, this._pathTypes, PdfFillMode.Alternate);\n this._pathPoints = [];\n this._pathTypes = [];\n }\n };\n PdfGraphics.prototype._addArc = function (x, y, width, height, startAngle, sweepAngle, startFigure) {\n var points = this._getBezierArcPoints(x, y, (x + width), (y + height), startAngle, sweepAngle);\n for (var i = 0; i < points.length; i = i + 8) {\n var point = [points[i], points[i + 1], points[i + 2], points[i + 3], points[i + 4], points[i + 5], points[i + 6], points[i + 7]];\n startFigure = this._addArcPoints(point, PathPointType.Bezier3, startFigure);\n }\n return startFigure;\n };\n PdfGraphics.prototype._addArcPoints = function (points, pointType, startFigure) {\n for (var i = 0; i < points.length; i++) {\n var point = new PointF(points[i], points[(i + 1)]);\n if (i === 0) {\n if (this._pathPoints.length === 0 || startFigure) {\n this._addPoint(point, PathPointType.Start);\n startFigure = false;\n }\n else if (point.x !== this._getLastPoint().x || point.y !== this._getLastPoint().y) {\n this._addPoint(point, PathPointType.Line);\n }\n }\n else {\n this._addPoint(point, pointType);\n }\n i++;\n }\n return startFigure;\n };\n PdfGraphics.prototype._getLastPoint = function () {\n var lastPoint = new PointF(0, 0);\n var count = this._pathPoints.length;\n if (count > 0) {\n lastPoint.x = this._pathPoints[(count - 1)].x;\n lastPoint.y = this._pathPoints[(count - 1)].y;\n }\n return lastPoint;\n };\n PdfGraphics.prototype._addPoint = function (point, type) {\n this._pathPoints.push(point);\n this._pathTypes.push(type);\n };\n PdfGraphics.prototype._getBezierArcPoints = function (x1, y1, x2, y2, s1, e1) {\n if ((x1 > x2)) {\n var tmp = void 0;\n tmp = x1;\n x1 = x2;\n x2 = tmp;\n }\n if ((y2 > y1)) {\n var tmp = void 0;\n tmp = y1;\n y1 = y2;\n y2 = tmp;\n }\n var fragAngle;\n var numFragments;\n if ((Math.abs(e1) <= 90)) {\n fragAngle = e1;\n numFragments = 1;\n }\n else {\n numFragments = (Math.ceil((Math.abs(e1) / 90)));\n fragAngle = (e1 / numFragments);\n }\n var xcen = ((x1 + x2) / 2);\n var ycen = ((y1 + y2) / 2);\n var rx = ((x2 - x1) / 2);\n var ry = ((y2 - y1) / 2);\n var halfAng = ((fragAngle * (Math.PI / 360)));\n var kappa = (Math.abs(4.0 / 3.0 * (1.0 - Math.cos(halfAng)) / Math.sin(halfAng)));\n var pointList = [];\n for (var i = 0; (i < numFragments); i++) {\n var theta0 = (((s1 + (i * fragAngle)) * (Math.PI / 180)));\n var theta1 = (((s1 + ((i + 1) * fragAngle)) * (Math.PI / 180)));\n var cos0 = (Math.cos(theta0));\n var cos1 = (Math.cos(theta1));\n var sin0 = (Math.sin(theta0));\n var sin1 = (Math.sin(theta1));\n if ((fragAngle > 0)) {\n pointList.push((xcen + (rx * cos0)), (ycen - (ry * sin0)), (xcen + (rx * (cos0 - (kappa * sin0)))), (ycen - (ry * (sin0 + (kappa * cos0)))), (xcen + (rx * (cos1 + (kappa * sin1)))), (ycen - (ry * (sin1 - (kappa * cos1)))), (xcen + (rx * cos1)), (ycen - (ry * sin1)));\n }\n else {\n pointList.push((xcen + (rx * cos0)), (ycen - (ry * sin0)), (xcen + (rx * (cos0 + (kappa * sin0)))), (ycen - (ry * (sin0 - (kappa * cos0)))), (xcen + (rx * (cos1 - (kappa * sin1)))), (ycen - (ry * (sin1 + (kappa * cos1)))), (xcen + (rx * cos1)), (ycen - (ry * sin1)));\n }\n }\n return pointList;\n };\n PdfGraphics.prototype.drawPathHelper = function (arg1, arg2, arg3, arg4) {\n if (typeof arg3 === 'boolean') {\n var temparg3 = arg3;\n this.drawPathHelper(arg1, arg2, PdfFillMode.Winding, temparg3);\n }\n else {\n var temparg3 = arg3;\n var temparg4 = arg4;\n var isPen = arg1 != null;\n var isBrush = arg2 != null;\n var isEvenOdd = (temparg3 === PdfFillMode.Alternate);\n if (isPen && isBrush) {\n this.streamWriter.fillStrokePath(isEvenOdd);\n }\n else if (!isPen && !isBrush) {\n this.streamWriter.endPath();\n }\n else if (isPen) {\n this.streamWriter.strokePath();\n }\n else {\n this.streamWriter.fillPath(isEvenOdd);\n }\n }\n };\n PdfGraphics.prototype.drawImage = function (arg1, arg2, arg3, arg4, arg5) {\n if (typeof arg2 === 'number' && typeof arg3 === 'number' && typeof arg4 === 'undefined') {\n var size = arg1.physicalDimension;\n this.drawImage(arg1, arg2, arg3, size.width, size.height);\n }\n else {\n var temparg2 = arg2;\n var temparg3 = arg3;\n var temparg4 = arg4;\n var temparg5 = arg5;\n arg1.save();\n var matrix = new PdfTransformationMatrix();\n this.getTranslateTransform(temparg2, (temparg3 + temparg5), matrix);\n this.getScaleTransform(arg4, arg5, matrix);\n this.pdfStreamWriter.write('q');\n this.pdfStreamWriter.modifyCtm(matrix);\n // Output template.\n var resources = this.getResources.getResources();\n if (typeof this.pageLayer !== 'undefined' && this.page != null) {\n resources.document = this.page.document;\n }\n var name_2 = resources.getName(arg1);\n if (typeof this.pageLayer !== 'undefined') {\n this.page.setResources(resources);\n }\n this.pdfStreamWriter.executeObject(name_2);\n this.pdfStreamWriter.write(Operators.restoreState);\n this.pdfStreamWriter.write(Operators.newLine);\n var resource = this.getResources.getResources();\n resource.requireProcedureSet(this.procedureSets.imageB);\n resource.requireProcedureSet(this.procedureSets.imageC);\n resource.requireProcedureSet(this.procedureSets.imageI);\n resource.requireProcedureSet(this.procedureSets.text);\n }\n };\n //Implementation\n /**\n * Returns `bounds` of the line info.\n * @private\n */\n PdfGraphics.prototype.getLineBounds = function (lineIndex, result, font, layoutRectangle, format) {\n var bounds;\n if (!result.empty && lineIndex < result.lineCount && lineIndex >= 0) {\n var line = result.lines[lineIndex];\n var vShift = this.getTextVerticalAlignShift(result.actualSize.height, layoutRectangle.height, format);\n var y = vShift + layoutRectangle.y + (result.lineHeight * lineIndex);\n var lineWidth = line.width;\n var hShift = this.getHorizontalAlignShift(lineWidth, layoutRectangle.width, format);\n var lineIndent = this.getLineIndent(line, format, layoutRectangle, (lineIndex === 0));\n hShift += (!this.rightToLeft(format)) ? lineIndent : 0;\n var x = layoutRectangle.x + hShift;\n var width = (!this.shouldJustify(line, layoutRectangle.width, format)) ? lineWidth - lineIndent : layoutRectangle.width - lineIndent;\n var height = result.lineHeight;\n bounds = new RectangleF(x, y, width, height);\n }\n else {\n bounds = new RectangleF(0, 0, 0, 0);\n }\n return bounds;\n };\n /**\n * Creates `lay outed rectangle` depending on the text settings.\n * @private\n */\n PdfGraphics.prototype.checkCorrectLayoutRectangle = function (textSize, x, y, format) {\n var layoutedRectangle = new RectangleF(x, y, textSize.width, textSize.width);\n if (format != null) {\n switch (format.alignment) {\n case PdfTextAlignment.Center:\n layoutedRectangle.x -= layoutedRectangle.width / 2;\n break;\n case PdfTextAlignment.Right:\n layoutedRectangle.x -= layoutedRectangle.width;\n break;\n }\n switch (format.lineAlignment) {\n case PdfVerticalAlignment.Middle:\n layoutedRectangle.y -= layoutedRectangle.height / 2;\n break;\n case PdfVerticalAlignment.Bottom:\n layoutedRectangle.y -= layoutedRectangle.height;\n break;\n }\n }\n return layoutedRectangle;\n };\n /**\n * Sets the `layer` for the graphics.\n * @private\n */\n PdfGraphics.prototype.setLayer = function (layer) {\n this.pageLayer = layer;\n var page = layer.page;\n if (page != null && typeof page !== 'undefined') {\n page.beginSave = this.pageSave;\n }\n };\n /**\n * Adding page number field before page saving.\n * @private\n */\n PdfGraphics.prototype.pageSave = function (page) {\n if (page.graphics.automaticFields != null) {\n for (var i = 0; i < page.graphics.automaticFields.automaticFields.length; i++) {\n var fieldInfo = page.graphics.automaticFields.automaticFields[i];\n fieldInfo.field.performDraw(page.graphics, fieldInfo.location, fieldInfo.scalingX, fieldInfo.scalingY);\n }\n }\n };\n /**\n * `Draws a layout result`.\n * @private\n */\n PdfGraphics.prototype.drawStringLayoutResult = function (result, font, pen, brush, layoutRectangle, format) {\n if (!result.empty) {\n this.applyStringSettings(font, pen, brush, format, layoutRectangle);\n // Set text scaling\n var textScaling = (format != null) ? format.horizontalScalingFactor : 100.0;\n if (textScaling !== this.previousTextScaling && !this.isEmfTextScaled) {\n this.pdfStreamWriter.setTextScaling(textScaling);\n this.previousTextScaling = textScaling;\n }\n var height = (format == null || format.lineSpacing === 0) ? font.height : format.lineSpacing + font.height;\n var subScript = (format != null && format.subSuperScript === PdfSubSuperScript.SubScript);\n var shift = 0;\n shift = (subScript) ? height - (font.height + font.metrics.getDescent(format)) : (height - font.metrics.getAscent(format));\n this.shift = shift;\n this.pdfStreamWriter.startNextLine(layoutRectangle.x, layoutRectangle.y - shift);\n this.pdfStreamWriter.setLeading(+height);\n var resultHeight = 0;\n var remainingString = '';\n for (var i = 0; i < result.lines.length; i++) {\n resultHeight += result.lineHeight;\n if ((layoutRectangle.y + resultHeight) > this.clientSize.height) {\n this.startCutIndex = i;\n break;\n }\n }\n for (var j = this.startCutIndex; (j < result.lines.length && j >= 0); j++) {\n remainingString += result.lines[j].text;\n }\n var bounds = new RectangleF(layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height);\n this.drawLayoutResult(result, font, format, layoutRectangle);\n this.underlineStrikeoutText(pen, brush, result, font, bounds, format);\n this.isEmfPlus = false;\n this.isUseFontSize = false;\n if (this.startCutIndex !== -1) {\n var page = this.getNextPage();\n page.graphics.drawString(remainingString, font, pen, brush, layoutRectangle.x, 0, layoutRectangle.width, 0, format);\n }\n }\n else {\n throw new Error('ArgumentNullException:result');\n }\n };\n /**\n * Gets the `next page`.\n * @private\n */\n PdfGraphics.prototype.getNextPage = function () {\n var section = this.currentPage.section;\n var nextPage = null;\n var index = section.indexOf(this.currentPage);\n if (index === section.count - 1) {\n nextPage = section.add();\n }\n else {\n nextPage = section.getPages()[index + 1];\n }\n return nextPage;\n };\n PdfGraphics.prototype.setClip = function (rectangle, mode) {\n if (typeof mode === 'undefined') {\n this.setClip(rectangle, PdfFillMode.Winding);\n }\n else {\n this.pdfStreamWriter.appendRectangle(rectangle);\n this.pdfStreamWriter.clipPath((mode === PdfFillMode.Alternate));\n }\n };\n /**\n * Applies all the `text settings`.\n * @private\n */\n PdfGraphics.prototype.applyStringSettings = function (font, pen, brush, format, bounds) {\n if (brush instanceof PdfTilingBrush) {\n this.bCSInitialized = false;\n brush.graphics.colorSpace = this.colorSpace;\n }\n else if ((brush instanceof PdfGradientBrush)) {\n this.bCSInitialized = false;\n brush.colorSpace = this.colorSpace;\n }\n var setLineWidth = false;\n var tm = this.getTextRenderingMode(pen, brush, format);\n this.stateControl(pen, brush, font, format);\n this.pdfStreamWriter.beginText();\n if ((tm) !== this.previousTextRenderingMode) {\n this.pdfStreamWriter.setTextRenderingMode(tm);\n this.previousTextRenderingMode = tm;\n }\n // Set character spacing.\n var cs = (format != null) ? format.characterSpacing : 0;\n if (cs !== this.previousCharacterSpacing && !this.isEmfTextScaled) {\n this.pdfStreamWriter.setCharacterSpacing(cs);\n this.previousCharacterSpacing = cs;\n }\n // Set word spacing.\n // NOTE: it works only if the space code is equal to 32 (0x20).\n var ws = (format != null) ? format.wordSpacing : 0;\n if (ws !== this.previousWordSpacing) {\n this.pdfStreamWriter.setWordSpacing(ws);\n this.previousWordSpacing = ws;\n }\n };\n /**\n * Calculates `shift value` if the text is vertically aligned.\n * @private\n */\n PdfGraphics.prototype.getTextVerticalAlignShift = function (textHeight, boundsHeight, format) {\n var shift = 0;\n if (boundsHeight >= 0 && format != null && format.lineAlignment !== PdfVerticalAlignment.Top) {\n switch (format.lineAlignment) {\n case PdfVerticalAlignment.Middle:\n shift = (boundsHeight - textHeight) / 2;\n break;\n case PdfVerticalAlignment.Bottom:\n shift = boundsHeight - textHeight;\n break;\n }\n }\n return shift;\n };\n /**\n * `Draws layout result`.\n * @private\n */\n PdfGraphics.prototype.drawLayoutResult = function (result, font, format, layoutRectangle) {\n var vAlignShift = this.getTextVerticalAlignShift(result.actualSize.height, layoutRectangle.height, format);\n if (vAlignShift !== 0) {\n this.pdfStreamWriter.startNextLine(0, vAlignShift);\n }\n var ttfFont = font;\n var unicode = (ttfFont != null && ttfFont.isUnicode);\n var embed = (ttfFont != null && ttfFont.isEmbedFont);\n var lines = result.lines;\n for (var i = 0, len = lines.length; (i < len && i !== this.startCutIndex); i++) {\n var lineInfo = lines[i];\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var hAlignShift = this.getHorizontalAlignShift(lineWidth, layoutRectangle.width, format);\n var lineIndent = this.getLineIndent(lineInfo, format, layoutRectangle, (i === 0));\n hAlignShift += (!this.rightToLeft(format)) ? lineIndent : 0;\n if (hAlignShift !== 0 && !this.isEmfTextScaled) {\n this.pdfStreamWriter.startNextLine(hAlignShift, 0);\n }\n if (unicode) {\n this.drawUnicodeLine(lineInfo, layoutRectangle, font, format);\n }\n else {\n this.drawAsciiLine(lineInfo, layoutRectangle, font, format);\n }\n if (hAlignShift !== 0 && !this.isEmfTextScaled) {\n this.pdfStreamWriter.startNextLine(-hAlignShift, 0);\n }\n if (this.isOverloadWithPosition && lines.length > 1) {\n this.pdfStreamWriter.startNextLine(-(layoutRectangle.x), 0);\n layoutRectangle.x = 0;\n layoutRectangle.width = this.clientSize.width;\n this.isOverloadWithPosition = false;\n this.isPointOverload = true;\n }\n }\n this.getResources.getResources().requireProcedureSet(this.procedureSets.text);\n if (vAlignShift !== 0) {\n this.pdfStreamWriter.startNextLine(0, -(vAlignShift - result.lineHeight));\n }\n this.pdfStreamWriter.endText();\n };\n /**\n * `Draws Ascii line`.\n * @private\n */\n PdfGraphics.prototype.drawAsciiLine = function (lineInfo, layoutRectangle, font, format) {\n this.justifyLine(lineInfo, layoutRectangle.width, format);\n var value = '';\n if (lineInfo.text.indexOf('(') !== -1 || lineInfo.text.indexOf(')') !== -1) {\n for (var i = 0; i < lineInfo.text.length; i++) {\n if (lineInfo.text[i] === '(') {\n value += '\\\\\\(';\n }\n else if (lineInfo.text[i] === ')') {\n value += '\\\\\\)';\n }\n else {\n value += lineInfo.text[i];\n }\n }\n }\n if (value === '') {\n value = lineInfo.text;\n }\n var line = '(' + value + ')';\n this.pdfStreamWriter.showNextLineText(new PdfString(line));\n };\n /**\n * Draws unicode line.\n * @private\n */\n PdfGraphics.prototype.drawUnicodeLine = function (lineInfo, layoutRectangle, font, format) {\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var rtl = (format !== null && typeof format !== 'undefined' && format.rightToLeft);\n var useWordSpace = (format !== null && typeof format !== 'undefined' && (format.wordSpacing !== 0 || format.alignment === PdfTextAlignment.Justify));\n var ttfFont = font;\n var wordSpacing = this.justifyLine(lineInfo, layoutRectangle.width, format);\n var rtlRender = new RtlRenderer();\n if (rtl || (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None)) {\n var blocks = null;\n var rightAlign = (format !== null && typeof format !== 'undefined' && format.alignment === PdfTextAlignment.Right);\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None) {\n /* tslint:disable-next-line:max-line-length */\n blocks = rtlRender.layout(line, ttfFont, (format.textDirection === PdfTextDirection.RightToLeft) ? true : false, useWordSpace, format);\n }\n else {\n blocks = rtlRender.layout(line, ttfFont, rightAlign, useWordSpace, format);\n }\n var words = null;\n if (blocks.length > 1) {\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None) {\n /* tslint:disable-next-line:max-line-length */\n words = rtlRender.splitLayout(line, ttfFont, (format.textDirection === PdfTextDirection.RightToLeft) ? true : false, useWordSpace, format);\n }\n else {\n words = rtlRender.splitLayout(line, ttfFont, rightAlign, useWordSpace, format);\n }\n }\n else {\n words = [line];\n }\n this.drawUnicodeBlocks(blocks, words, ttfFont, format, wordSpacing);\n }\n else {\n if (useWordSpace) {\n var result = this.breakUnicodeLine(line, ttfFont, null);\n var blocks = result.tokens;\n var words = result.words;\n this.drawUnicodeBlocks(blocks, words, ttfFont, format, wordSpacing);\n }\n else {\n var token = this.convertToUnicode(line, ttfFont);\n var value = this.getUnicodeString(token);\n this.streamWriter.showNextLineText(value);\n }\n }\n };\n /**\n * Draws array of unicode tokens.\n */\n PdfGraphics.prototype.drawUnicodeBlocks = function (blocks, words, font, format, wordSpacing) {\n if (blocks == null) {\n throw new Error('Argument Null Exception : blocks');\n }\n if (words == null) {\n throw new Error('Argument Null Exception : words');\n }\n if (font == null) {\n throw new Error('Argument Null Exception : font');\n }\n this.streamWriter.startNextLine();\n var x = 0;\n var xShift = 0;\n var firstLineIndent = 0;\n var paragraphIndent = 0;\n try {\n if (format !== null && typeof format !== 'undefined') {\n firstLineIndent = format.firstLineIndent;\n paragraphIndent = format.paragraphIndent;\n format.firstLineIndent = 0;\n format.paragraphIndent = 0;\n }\n var spaceWidth = font.getCharWidth(StringTokenizer.whiteSpace, format) + wordSpacing;\n var characterSpacing = (format != null) ? format.characterSpacing : 0;\n var wordSpace = (format !== null && typeof format !== 'undefined' && wordSpacing === 0) ? format.wordSpacing : 0;\n spaceWidth += characterSpacing + wordSpace;\n for (var i = 0; i < blocks.length; i++) {\n var token = blocks[i];\n var word = words[i];\n var tokenWidth = 0;\n if (x !== 0) {\n this.streamWriter.startNextLine(x, 0);\n }\n if (word.length > 0) {\n tokenWidth += /*Utils.Round(*/ font.measureString(word, format).width /*)*/;\n tokenWidth += characterSpacing;\n var val = this.getUnicodeString(token);\n this.streamWriter.showText(val);\n }\n if (i !== blocks.length - 1) {\n x = tokenWidth + spaceWidth;\n xShift += x;\n }\n }\n // Rolback current line position.\n if (xShift > 0) {\n this.streamWriter.startNextLine(-xShift, 0);\n }\n }\n finally {\n if (format !== null && typeof format !== 'undefined') {\n format.firstLineIndent = firstLineIndent;\n format.paragraphIndent = paragraphIndent;\n }\n }\n };\n /**\n * Breakes the unicode line to the words and converts symbols to glyphs.\n */\n PdfGraphics.prototype.breakUnicodeLine = function (line, ttfFont, words) {\n if (line === null) {\n throw new Error('Argument Null Exception : line');\n }\n words = line.split(null);\n var tokens = [];\n for (var i = 0; i < words.length; i++) {\n // Reconvert string according to unicode standard.\n var word = words[i];\n var token = this.convertToUnicode(word, ttfFont);\n tokens[i] = token;\n }\n return { tokens: tokens, words: words };\n };\n /**\n * Creates PdfString from the unicode text.\n */\n PdfGraphics.prototype.getUnicodeString = function (token) {\n if (token === null) {\n throw new Error('Argument Null Exception : token');\n }\n var val = new PdfString(token);\n val.converted = true;\n val.encode = InternalEnum.ForceEncoding.Ascii;\n return val;\n };\n /**\n * Converts to unicode format.\n */\n PdfGraphics.prototype.convertToUnicode = function (text, ttfFont) {\n var token = null;\n if (text == null) {\n throw new Error('Argument Null Exception : text');\n }\n if (ttfFont == null) {\n throw new Error('Argument Null Exception : ttfFont');\n }\n if (ttfFont.fontInternal instanceof UnicodeTrueTypeFont) {\n var ttfReader = ttfFont.fontInternal.ttfReader;\n ttfFont.setSymbols(text);\n token = ttfReader.convertString(text);\n var bytes = PdfString.toUnicodeArray(token, false);\n token = PdfString.byteToString(bytes);\n }\n return token;\n };\n /**\n * `Justifies` the line if needed.\n * @private\n */\n PdfGraphics.prototype.justifyLine = function (lineInfo, boundsWidth, format) {\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var shouldJustify = this.shouldJustify(lineInfo, boundsWidth, format);\n var hasWordSpacing = (format != null && format.wordSpacing !== 0);\n var symbols = StringTokenizer.spaces;\n var whitespacesCount = StringTokenizer.getCharsCount(line, symbols);\n var wordSpace = 0;\n if (shouldJustify) {\n // Correct line width.\n if (hasWordSpacing) {\n lineWidth -= (whitespacesCount * format.wordSpacing);\n }\n var difference = boundsWidth - lineWidth;\n wordSpace = difference / whitespacesCount;\n this.pdfStreamWriter.setWordSpacing(wordSpace);\n }\n else {\n // If there is justifying, but the line shouldn't be justified, restore default word spacing.\n if (hasWordSpacing) {\n this.pdfStreamWriter.setWordSpacing(format.wordSpacing);\n }\n else {\n this.pdfStreamWriter.setWordSpacing(0);\n }\n }\n return wordSpace;\n };\n /**\n * `Reset` or reinitialize the current graphic value.\n * @private\n */\n PdfGraphics.prototype.reset = function (size) {\n this.canvasSize = size;\n this.streamWriter.clear();\n this.initialize();\n this.initializeCoordinates();\n };\n /**\n * Checks whether the line should be `justified`.\n * @private\n */\n PdfGraphics.prototype.shouldJustify = function (lineInfo, boundsWidth, format) {\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var justifyStyle = (format != null && format.alignment === PdfTextAlignment.Justify);\n var goodWidth = (boundsWidth >= 0 && lineWidth < boundsWidth);\n var symbols = StringTokenizer.spaces;\n var whitespacesCount = StringTokenizer.getCharsCount(line, symbols);\n var hasSpaces = (whitespacesCount > 0 && line[0] !== StringTokenizer.whiteSpace);\n var goodLineBreakStyle = ((lineInfo.lineType & LineType.LayoutBreak) > 0);\n var shouldJustify = (justifyStyle && goodWidth && hasSpaces && (goodLineBreakStyle || format.alignment === PdfTextAlignment.Justify));\n return shouldJustify;\n };\n /**\n * Emulates `Underline, Strikeout` of the text if needed.\n * @private\n */\n PdfGraphics.prototype.underlineStrikeoutText = function (pen, brush, result, font, layoutRectangle, format) {\n if (font.underline || font.strikeout) {\n // Calculate line width.\n var linePen = this.createUnderlineStikeoutPen(pen, brush, font, format);\n if (linePen != null) {\n // Approximate line positions.\n var vShift = this.getTextVerticalAlignShift(result.actualSize.height, layoutRectangle.height, format);\n var underlineYOffset = 0;\n underlineYOffset = layoutRectangle.y + vShift + font.metrics.getAscent(format) + 1.5 * linePen.width;\n var strikeoutYOffset = layoutRectangle.y + vShift + font.metrics.getHeight(format) / 2 + 1.5 * linePen.width;\n var lines = result.lines;\n // Run through the text and draw lines.\n for (var i = 0, len = result.lineCount; i < len; i++) {\n var lineInfo = lines[i];\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var hShift = this.getHorizontalAlignShift(lineWidth, layoutRectangle.width, format);\n var lineIndent = this.getLineIndent(lineInfo, format, layoutRectangle, (i === 0));\n hShift += (!this.rightToLeft(format)) ? lineIndent : 0;\n var x1 = layoutRectangle.x + hShift;\n var x2 = (!this.shouldJustify(lineInfo, layoutRectangle.width, format)) ? x1 + lineWidth - lineIndent : x1 + layoutRectangle.width - lineIndent;\n if (font.underline) {\n var y = underlineYOffset;\n this.drawLine(linePen, x1, y, x2, y);\n underlineYOffset += result.lineHeight;\n }\n if (font.strikeout) {\n var y = strikeoutYOffset;\n this.drawLine(linePen, x1, y, x2, y);\n strikeoutYOffset += result.lineHeight;\n }\n if (this.isPointOverload && lines.length > 1) {\n layoutRectangle.x = 0;\n layoutRectangle.width = this.clientSize.width;\n }\n }\n this.isPointOverload = false;\n }\n }\n };\n /**\n * `Creates a pen` for drawing lines in the text.\n * @private\n */\n PdfGraphics.prototype.createUnderlineStikeoutPen = function (pen, brush, font, format) {\n // Calculate line width.\n var lineWidth = font.metrics.getSize(format) / 20;\n var linePen = null;\n // Create a pen fo the lines.\n if (pen != null) {\n linePen = new PdfPen(pen.color, lineWidth);\n }\n else if (brush != null) {\n linePen = new PdfPen(brush, lineWidth);\n }\n return linePen;\n };\n /**\n * Return `text rendering mode`.\n * @private\n */\n PdfGraphics.prototype.getTextRenderingMode = function (pen, brush, format) {\n var tm = TextRenderingMode.None;\n if (pen != null && brush != null) {\n tm = TextRenderingMode.FillStroke;\n }\n else if (pen != null) {\n tm = TextRenderingMode.Stroke;\n }\n else {\n tm = TextRenderingMode.Fill;\n }\n if (format != null && format.clipPath) {\n tm |= TextRenderingMode.ClipFlag;\n }\n return tm;\n };\n /**\n * Returns `line indent` for the line.\n * @private\n */\n PdfGraphics.prototype.getLineIndent = function (lineInfo, format, layoutBounds, firstLine) {\n var lineIndent = 0;\n var firstParagraphLine = ((lineInfo.lineType & LineType.FirstParagraphLine) > 0);\n if (format != null && firstParagraphLine) {\n lineIndent = (firstLine) ? format.firstLineIndent : format.paragraphIndent;\n lineIndent = (layoutBounds.width > 0) ? Math.min(layoutBounds.width, lineIndent) : lineIndent;\n }\n return lineIndent;\n };\n /**\n * Calculates shift value if the line is `horizontaly aligned`.\n * @private\n */\n PdfGraphics.prototype.getHorizontalAlignShift = function (lineWidth, boundsWidth, format) {\n var shift = 0;\n if (boundsWidth >= 0 && format != null && format.alignment !== PdfTextAlignment.Left) {\n switch (format.alignment) {\n case PdfTextAlignment.Center:\n shift = (boundsWidth - lineWidth) / 2;\n break;\n case PdfTextAlignment.Right:\n shift = boundsWidth - lineWidth;\n break;\n }\n }\n return shift;\n };\n /**\n * Gets or sets the value that indicates `text direction` mode.\n * @private\n */\n PdfGraphics.prototype.rightToLeft = function (format) {\n var rtl = (format !== null && typeof format !== 'undefined' && format.rightToLeft);\n if (format !== null && typeof format !== 'undefined') {\n if (format.textDirection !== PdfTextDirection.None && typeof format.textDirection !== 'undefined') {\n rtl = true;\n }\n }\n return rtl;\n };\n PdfGraphics.prototype.stateControl = function (pen, brush, font, format) {\n if (typeof format === 'undefined') {\n this.stateControl(pen, brush, font, null);\n }\n else {\n if (brush instanceof PdfGradientBrush) {\n this.bCSInitialized = false;\n brush.colorSpace = this.colorSpace;\n }\n if (brush instanceof PdfTilingBrush) {\n this.bCSInitialized = false;\n brush.graphics.colorSpace = this.colorSpace;\n }\n var saveState = false;\n if (brush !== null) {\n var solidBrush = brush;\n if (typeof this.pageLayer !== 'undefined' && this.pageLayer != null) {\n if (this.colorSpaceChanged === false) {\n this.lastDocumentCS = this.pageLayer.page.document.colorSpace;\n this.lastGraphicsCS = this.pageLayer.page.graphics.colorSpace;\n this.colorSpace = this.pageLayer.page.document.colorSpace;\n this.currentColorSpace = this.pageLayer.page.document.colorSpace;\n this.colorSpaceChanged = true;\n }\n }\n this.initCurrentColorSpace(this.currentColorSpace);\n }\n else if (pen != null) {\n var pdfPen = pen;\n if (typeof this.pageLayer !== 'undefined' && this.pageLayer != null) {\n this.colorSpace = this.pageLayer.page.document.colorSpace;\n this.currentColorSpace = this.pageLayer.page.document.colorSpace;\n }\n this.initCurrentColorSpace(this.currentColorSpace);\n }\n this.penControl(pen, saveState);\n this.brushControl(brush, saveState);\n this.fontControl(font, format, saveState);\n }\n };\n /**\n * Initializes the `current color space`.\n * @private\n */\n PdfGraphics.prototype.initCurrentColorSpace = function (colorspace) {\n var re = this.getResources.getResources();\n if (!this.bCSInitialized) {\n if (this.currentColorSpace != PdfColorSpace.GrayScale) {\n this.pdfStreamWriter.setColorSpace('Device' + this.currentColorSpaces[this.currentColorSpace], true);\n this.pdfStreamWriter.setColorSpace('Device' + this.currentColorSpaces[this.currentColorSpace], false);\n this.bCSInitialized = true;\n }\n else {\n this.pdfStreamWriter.setColorSpace('DeviceGray', true);\n this.pdfStreamWriter.setColorSpace('DeviceGray', false);\n this.bCSInitialized = true;\n }\n }\n };\n /**\n * Controls the `pen state`.\n * @private\n */\n PdfGraphics.prototype.penControl = function (pen, saveState) {\n if (pen != null) {\n this.currentPen = pen;\n pen.monitorChanges(this.currentPen, this.pdfStreamWriter, this.getResources, saveState, this.colorSpace, this.matrix.clone());\n this.currentPen = pen.clone();\n }\n };\n /**\n * Controls the `brush state`.\n * @private\n */\n PdfGraphics.prototype.brushControl = function (brush, saveState) {\n if (brush != null && typeof brush !== 'undefined') {\n var b = brush.clone();\n var lgb = b;\n if (lgb !== null && typeof lgb !== 'undefined' && !(brush instanceof PdfSolidBrush) && !(brush instanceof PdfTilingBrush)) {\n var m = lgb.matrix;\n var matrix = this.matrix.clone();\n if ((m != null)) {\n m.multiply(matrix);\n matrix = m;\n }\n lgb.matrix = matrix;\n }\n this.currentBrush = lgb;\n var br = (brush);\n b.monitorChanges(this.currentBrush, this.pdfStreamWriter, this.getResources, saveState, this.colorSpace);\n this.currentBrush = brush;\n brush = null;\n }\n };\n /**\n * Saves the font and other `font settings`.\n * @private\n */\n PdfGraphics.prototype.fontControl = function (font, format, saveState) {\n if (font != null) {\n var curSubSuper = (format != null) ? format.subSuperScript : PdfSubSuperScript.None;\n var prevSubSuper = (this.currentStringFormat != null) ? this.currentStringFormat.subSuperScript : PdfSubSuperScript.None;\n if (saveState || font !== this.currentFont || curSubSuper !== prevSubSuper) {\n var resources = this.getResources.getResources();\n this.currentFont = font;\n this.currentStringFormat = format;\n var size = font.metrics.getSize(format);\n this.isEmfTextScaled = false;\n var fontName = resources.getName(font);\n this.pdfStreamWriter.setFont(font, fontName, size);\n }\n }\n };\n PdfGraphics.prototype.setTransparency = function (arg1, arg2, arg3) {\n if (typeof arg2 === 'undefined') {\n this.istransparencySet = true;\n this.setTransparency(arg1, arg1, PdfBlendMode.Normal);\n }\n else if (typeof arg2 === 'number' && typeof arg3 === 'undefined') {\n this.setTransparency(arg1, arg2, PdfBlendMode.Normal);\n }\n else {\n if (this.trasparencies == null) {\n this.trasparencies = new TemporaryDictionary();\n }\n var transp = null;\n var td = new TransparencyData(arg1, arg2, arg3);\n if (this.trasparencies.containsKey(td)) {\n transp = this.trasparencies.getValue(td);\n }\n if (transp == null) {\n transp = new PdfTransparency(arg1, arg2, arg3);\n this.trasparencies.setValue(td, transp);\n }\n var resources = this.getResources.getResources();\n var name_3 = resources.getName(transp);\n var sw = this.streamWriter;\n sw.setGraphicsState(name_3);\n }\n };\n PdfGraphics.prototype.clipTranslateMargins = function (x, y, left, top, right, bottom) {\n if (x instanceof RectangleF && typeof y === 'undefined') {\n this.clipBounds = x;\n this.pdfStreamWriter.writeComment('Clip margins.');\n this.pdfStreamWriter.appendRectangle(x);\n this.pdfStreamWriter.closePath();\n this.pdfStreamWriter.clipPath(false);\n this.pdfStreamWriter.writeComment('Translate co-ordinate system.');\n this.translateTransform(x.x, x.y);\n }\n else if (typeof x === 'number') {\n var clipArea = new RectangleF(left, top, this.size.width - left - right, this.size.height - top - bottom);\n this.clipBounds = clipArea;\n this.pdfStreamWriter.writeComment(\"Clip margins.\");\n this.pdfStreamWriter.appendRectangle(clipArea);\n this.pdfStreamWriter.closePath();\n this.pdfStreamWriter.clipPath(false);\n this.pdfStreamWriter.writeComment(\"Translate co-ordinate system.\");\n this.translateTransform(x, y);\n }\n };\n /**\n * `Updates y` co-ordinate.\n * @private\n */\n PdfGraphics.prototype.updateY = function (y) {\n return -y;\n };\n /**\n * Used to `translate the transformation`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // set translate transform\n * page1.graphics.translateTransform(100, 100);\n * //\n * // draw the rectangle after applying translate transform\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param offsetX The x-coordinate of the translation.\n * @param offsetY The y-coordinate of the translation.\n */\n PdfGraphics.prototype.translateTransform = function (offsetX, offsetY) {\n var matrix = new PdfTransformationMatrix();\n this.getTranslateTransform(offsetX, offsetY, matrix);\n this.pdfStreamWriter.modifyCtm(matrix);\n this.matrix.multiply(matrix);\n };\n /**\n * `Translates` coordinates of the input matrix.\n * @private\n */\n PdfGraphics.prototype.getTranslateTransform = function (x, y, input) {\n input.translate(x, this.updateY(y));\n return input;\n };\n /**\n * Applies the specified `scaling operation` to the transformation matrix of this Graphics by prepending it to the object's transformation matrix.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // create pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // apply scaling trasformation\n * page1.graphics.scaleTransform(1.5, 2);\n * //\n * // draw the rectangle after applying scaling transform\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 100, y : 100}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param scaleX Scale factor in the x direction.\n * @param scaleY Scale factor in the y direction.\n */\n PdfGraphics.prototype.scaleTransform = function (scaleX, scaleY) {\n var matrix = new PdfTransformationMatrix();\n this.getScaleTransform(scaleX, scaleY, matrix);\n this.pdfStreamWriter.modifyCtm(matrix);\n this.matrix.multiply(matrix);\n };\n /**\n * `Scales` coordinates of the input matrix.\n * @private\n */\n PdfGraphics.prototype.getScaleTransform = function (x, y, input) {\n if (input == null) {\n input = new PdfTransformationMatrix();\n }\n input.scale(x, y);\n return input;\n };\n /**\n * Applies the specified `rotation` to the transformation matrix of this Graphics.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // create pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // set RotateTransform with 25 degree of angle\n * page1.graphics.rotateTransform(25);\n * //\n * // draw the rectangle after RotateTransformation\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 100, y : 100}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param angle Angle of rotation in degrees.\n */\n PdfGraphics.prototype.rotateTransform = function (angle) {\n var matrix = new PdfTransformationMatrix();\n this.getRotateTransform(angle, matrix);\n this.pdfStreamWriter.modifyCtm(matrix);\n this.matrix.multiply(matrix);\n };\n /**\n * `Initializes coordinate system`.\n * @private\n */\n PdfGraphics.prototype.initializeCoordinates = function () {\n // Matrix equation: TM(T-1)=M', where T=[1 0 0 -1 0 h]\n this.pdfStreamWriter.writeComment('Change co-ordinate system to left/top.');\n // Translate co-ordinates only, don't flip.\n if (this.mediaBoxUpperRightBound !== -(this.size.height)) {\n if (this.cropBox == null) {\n if (this.mediaBoxUpperRightBound === this.size.height || this.mediaBoxUpperRightBound === 0) {\n this.translateTransform(0, this.updateY(this.size.height));\n }\n else {\n this.translateTransform(0, this.updateY(this.mediaBoxUpperRightBound));\n }\n }\n }\n };\n /**\n * `Rotates` coordinates of the input matrix.\n * @private\n */\n PdfGraphics.prototype.getRotateTransform = function (angle, input) {\n if (input == null || typeof input === 'undefined') {\n input = new PdfTransformationMatrix();\n }\n input.rotate(this.updateY(angle));\n return input;\n };\n /**\n * `Saves` the current state of this Graphics and identifies the saved state with a GraphicsState.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // create pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // save the graphics state\n * let state1 : PdfGraphicsState = page1.graphics.save();\n * //\n * page1.graphics.scaleTransform(1.5, 2);\n * // draw the rectangle\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 100, y : 100}, {width : 100, height : 50}));\n * // restore the graphics state\n * page1.graphics.restore(state1);\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n PdfGraphics.prototype.save = function () {\n var state = new PdfGraphicsState(this, this.matrix.clone());\n state.brush = this.currentBrush;\n state.pen = this.currentPen;\n state.font = this.currentFont;\n state.colorSpace = this.currentColorSpace;\n state.characterSpacing = this.previousCharacterSpacing;\n state.wordSpacing = this.previousWordSpacing;\n state.textScaling = this.previousTextScaling;\n state.textRenderingMode = this.previousTextRenderingMode;\n this.graphicsState.push(state);\n this.pdfStreamWriter.saveGraphicsState();\n return state;\n };\n PdfGraphics.prototype.restore = function (state) {\n if (typeof state === 'undefined') {\n if (this.graphicsState.length > 0) {\n this.doRestoreState();\n }\n }\n else {\n if (this.graphicsState.indexOf(state) !== -1) {\n for (;;) {\n if (this.graphicsState.length === 0) {\n break;\n }\n var popState = this.doRestoreState();\n if (popState === state) {\n break;\n }\n }\n }\n }\n };\n /**\n * `Restores graphics state`.\n * @private\n */\n PdfGraphics.prototype.doRestoreState = function () {\n var state = this.graphicsState.pop();\n this.transformationMatrix = state.matrix;\n this.currentBrush = state.brush;\n this.currentPen = state.pen;\n this.currentFont = state.font;\n this.currentColorSpace = state.colorSpace;\n this.previousCharacterSpacing = state.characterSpacing;\n this.previousWordSpacing = state.wordSpacing;\n this.previousTextScaling = state.textScaling;\n this.previousTextRenderingMode = state.textRenderingMode;\n this.pdfStreamWriter.restoreGraphicsState();\n return state;\n };\n /**\n * `Draws the specified path`, using its original physical size, at the location specified by a coordinate pair.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * //Create new PDF path.\n * let path : PdfPath = new PdfPath();\n * //Add line path points.\n * path.addLine(new PointF(10, 100), new PointF(10, 200));\n * path.addLine(new PointF(100, 100), new PointF(100, 200));\n * path.addLine(new PointF(100, 200), new PointF(55, 150));\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(255, 0, 0));\n * // set brush\n * let brush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the path\n * page1.graphics.drawPath(pen, brush, path);\n * //\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param pen Color of the text.\n * @param brush Color of the text.\n * @param path Draw path.\n */\n PdfGraphics.prototype.drawPath = function (pen, brush, path) {\n this._drawPath(pen, brush, path.pathPoints, path.pathTypes, path.fillMode);\n };\n PdfGraphics.prototype._drawPath = function (pen, brush, pathPoints, pathTypes, fillMode) {\n if (brush instanceof PdfTilingBrush) {\n this.bCSInitialized = false;\n brush.graphics.colorSpace = this.colorSpace;\n }\n else if (brush instanceof PdfGradientBrush) {\n this.bCSInitialized = false;\n brush.colorSpace = this.colorSpace;\n }\n this.stateControl(pen, brush, null);\n this.buildUpPath(pathPoints, pathTypes);\n this.drawPathHelper(pen, brush, fillMode, false);\n };\n /* tslint:disable-next-line:max-line-length */\n PdfGraphics.prototype.drawArc = function (arg1, arg2, arg3, arg4, arg5, arg6, arg7) {\n if (arg2 instanceof RectangleF) {\n this.drawArc(arg1, arg2.x, arg2.y, arg2.width, arg2.height, arg3, arg4);\n }\n else {\n if ((arg7 !== 0)) {\n this.stateControl(arg1, null, null);\n this.constructArcPath(arg2, arg3, (arg2 + arg4), (arg3 + arg5), arg6, arg7);\n this.drawPathHelper(arg1, null, false);\n }\n }\n };\n /**\n * Builds up the path.\n * @private\n */\n PdfGraphics.prototype.buildUpPath = function (arg1, arg2) {\n var cnt = arg1.length;\n for (var i = 0; i < cnt; ++i) {\n var typeValue = 0;\n var point = arg1[i];\n switch (((arg2[i] & (PdfGraphics.pathTypesValuesMask)))) {\n case PathPointType.Start:\n this.pdfStreamWriter.beginPath(point.x, point.y);\n break;\n case PathPointType.Bezier3:\n var p2 = new PointF(0, 0);\n var p3 = new PointF(0, 0);\n var result1 = this.getBezierPoints(arg1, arg2, i, p2, p3);\n this.pdfStreamWriter.appendBezierSegment(point, result1.p2, result1.p3);\n i = result1.i;\n break;\n case PathPointType.Line:\n this.pdfStreamWriter.appendLineSegment(point);\n break;\n default:\n throw new Error('ArithmeticException - Incorrect path formation.');\n }\n typeValue = arg2[i];\n this.checkFlags(typeValue);\n }\n };\n /**\n * Gets the bezier points from respective arrays.\n * @private\n */\n /* tslint:disable-next-line:max-line-length */\n PdfGraphics.prototype.getBezierPoints = function (points, types, i, p2, p3) {\n var errorMsg = 'Malforming path.';\n ++i;\n if ((((types[i] & PdfGraphics.pathTypesValuesMask)) === PathPointType.Bezier3)) {\n p2 = points[i];\n ++i;\n if ((((types[i] & PdfGraphics.pathTypesValuesMask)) === PathPointType.Bezier3)) {\n p3 = points[i];\n }\n else {\n throw new Error('ArgumentException : errorMsg');\n }\n }\n else {\n throw new Error('ArgumentException : errorMsg');\n }\n return { i: i, p2: p2, p3: p3 };\n };\n /**\n * Checks path point type flags.\n * @private\n */\n PdfGraphics.prototype.checkFlags = function (type) {\n if ((((type & (PathPointType.CloseSubpath))) === PathPointType.CloseSubpath)) {\n this.pdfStreamWriter.closePath();\n }\n };\n /**\n * Constructs the arc path using Bezier curves.\n * @private\n */\n PdfGraphics.prototype.constructArcPath = function (x1, y1, x2, y2, startAng, sweepAngle) {\n var points = this.getBezierArc(x1, y1, x2, y2, startAng, sweepAngle);\n if ((points.length === 0)) {\n return;\n }\n var pt = [points[0], points[1], points[2], points[3], points[4], points[5], points[6], points[7]];\n this.pdfStreamWriter.beginPath(pt[0], pt[1]);\n var i = 0;\n for (i = 0; i < points.length; i = i + 8) {\n pt = [points[i], points[i + 1], points[i + 2], points[i + 3], points[i + 4], points[i + 5], points[i + 6], points[i + 7]];\n this.pdfStreamWriter.appendBezierSegment(pt[2], pt[3], pt[4], pt[5], pt[6], pt[7]);\n }\n };\n /**\n * Gets the bezier points for arc constructing.\n * @private\n */\n PdfGraphics.prototype.getBezierArc = function (numX1, numY1, numX2, numY2, s1, e1) {\n if ((numX1 > numX2)) {\n var tmp = void 0;\n tmp = numX1;\n numX1 = numX2;\n numX2 = tmp;\n }\n if ((numY2 > numY1)) {\n var tmp = void 0;\n tmp = numY1;\n numY1 = numY2;\n numY2 = tmp;\n }\n var fragAngle1;\n var numFragments;\n if ((Math.abs(e1) <= 90)) {\n fragAngle1 = e1;\n numFragments = 1;\n }\n else {\n numFragments = (Math.ceil((Math.abs(e1) / 90)));\n fragAngle1 = (e1 / numFragments);\n }\n var xcen = ((numX1 + numX2) / 2);\n var ycen = ((numY1 + numY2) / 2);\n var rx = ((numX2 - numX1) / 2);\n var ry = ((numY2 - numY1) / 2);\n var halfAng = ((fragAngle1 * (Math.PI / 360)));\n var kappa = (Math.abs(4.0 / 3.0 * (1.0 - Math.cos(halfAng)) / Math.sin(halfAng)));\n var pointsList = [];\n for (var i = 0; (i < numFragments); i++) {\n var thetaValue0 = (((s1 + (i * fragAngle1)) * (Math.PI / 180)));\n var thetaValue1 = (((s1 + ((i + 1) * fragAngle1)) * (Math.PI / 180)));\n var cos0 = (Math.cos(thetaValue0));\n var cos1 = (Math.cos(thetaValue1));\n var sin0 = (Math.sin(thetaValue0));\n var sin1 = (Math.sin(thetaValue1));\n if ((fragAngle1 > 0)) {\n /* tslint:disable-next-line:max-line-length */\n pointsList.push((xcen + (rx * cos0)), (ycen - (ry * sin0)), (xcen + (rx * (cos0 - (kappa * sin0)))), (ycen - (ry * (sin0 + (kappa * cos0)))), (xcen + (rx * (cos1 + (kappa * sin1)))), (ycen - (ry * (sin1 - (kappa * cos1)))), (xcen + (rx * cos1)), (ycen - (ry * sin1)));\n }\n else {\n /* tslint:disable-next-line:max-line-length */\n pointsList.push((xcen + (rx * cos0)), (ycen - (ry * sin0)), (xcen + (rx * (cos0 + (kappa * sin0)))), (ycen - (ry * (sin0 - (kappa * cos0)))), (xcen + (rx * (cos1 - (kappa * sin1)))), (ycen - (ry * (sin1 + (kappa * cos1)))), (xcen + (rx * cos1)), (ycen - (ry * sin1)));\n }\n }\n return pointsList;\n };\n /* tslint:disable */\n // Constants\n /**\n * Specifies the mask of `path type values`.\n * @private\n */\n PdfGraphics.pathTypesValuesMask = 0xf;\n /**\n * Checks whether the object is `transparencyObject`.\n * @hidden\n * @private\n */\n PdfGraphics.transparencyObject = false;\n return PdfGraphics;\n}());\nexport { PdfGraphics };\n/**\n * `GetResourceEventHandler` class is alternate for event handlers and delegates.\n * @private\n * @hidden\n */\nvar GetResourceEventHandler = /** @class */ (function () {\n /**\n * Initialize instance of `GetResourceEventHandler` class.\n * Alternate for event handlers and delegates.\n * @private\n */\n function GetResourceEventHandler(sender) {\n this.sender = sender;\n }\n /**\n * Return the instance of `PdfResources` class.\n * @private\n */\n GetResourceEventHandler.prototype.getResources = function () {\n return this.sender.getResources();\n };\n return GetResourceEventHandler;\n}());\nexport { GetResourceEventHandler };\nvar PdfGraphicsState = /** @class */ (function () {\n function PdfGraphicsState(graphics, matrix) {\n /**\n * Stores `previous rendering mode`.\n * @default TextRenderingMode.Fill\n * @private\n */\n this.internalTextRenderingMode = TextRenderingMode.Fill;\n /**\n * `Previous character spacing` value or 0.\n * @default 0.0\n * @private\n */\n this.internalCharacterSpacing = 0.0;\n /**\n * `Previous word spacing` value or 0.\n * @default 0.0\n * @private\n */\n this.internalWordSpacing = 0.0;\n /**\n * The previously used `text scaling value`.\n * @default 100.0\n * @private\n */\n this.internalTextScaling = 100.0;\n /**\n * `Current color space`.\n * @default PdfColorSpace.Rgb\n * @private\n */\n this.pdfColorSpace = PdfColorSpace.Rgb;\n if (typeof graphics !== 'undefined') {\n this.pdfGraphics = graphics;\n var elements_1 = [];\n graphics.matrix.matrix.elements.forEach(function (element) {\n elements_1.push(element);\n });\n this.transformationMatrix = new PdfTransformationMatrix();\n this.transformationMatrix.matrix = new Matrix(elements_1);\n }\n }\n Object.defineProperty(PdfGraphicsState.prototype, \"graphics\", {\n // Properties\n /**\n * Gets the parent `graphics object`.\n * @private\n */\n get: function () {\n return this.pdfGraphics;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"matrix\", {\n /**\n * Gets the `current matrix`.\n * @private\n */\n get: function () {\n return this.transformationMatrix;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"characterSpacing\", {\n /**\n * Gets or sets the `current character spacing`.\n * @private\n */\n get: function () {\n return this.internalCharacterSpacing;\n },\n set: function (value) {\n this.internalCharacterSpacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"wordSpacing\", {\n /**\n * Gets or sets the `word spacing` value.\n * @private\n */\n get: function () {\n return this.internalWordSpacing;\n },\n set: function (value) {\n this.internalWordSpacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"textScaling\", {\n /**\n * Gets or sets the `text scaling` value.\n * @private\n */\n get: function () {\n return this.internalTextScaling;\n },\n set: function (value) {\n this.internalTextScaling = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"pen\", {\n /**\n * Gets or sets the `current pen` object.\n * @private\n */\n get: function () {\n return this.pdfPen;\n },\n set: function (value) {\n this.pdfPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"brush\", {\n /**\n * Gets or sets the `brush`.\n * @private\n */\n get: function () {\n return this.pdfBrush;\n },\n set: function (value) {\n this.pdfBrush = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"font\", {\n /**\n * Gets or sets the `current font` object.\n * @private\n */\n get: function () {\n return this.pdfFont;\n },\n set: function (value) {\n this.pdfFont = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"colorSpace\", {\n /**\n * Gets or sets the `current color space` value.\n * @private\n */\n get: function () {\n return this.pdfColorSpace;\n },\n set: function (value) {\n this.pdfColorSpace = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"textRenderingMode\", {\n /**\n * Gets or sets the `text rendering mode`.\n * @private\n */\n get: function () {\n return this.internalTextRenderingMode;\n },\n set: function (value) {\n this.internalTextRenderingMode = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGraphicsState;\n}());\nexport { PdfGraphicsState };\nvar TransparencyData = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `TransparencyData` class.\n * @private\n */\n function TransparencyData(alphaPen, alphaBrush, blendMode) {\n this.alphaPen = alphaPen;\n this.alphaBrush = alphaBrush;\n this.blendMode = blendMode;\n }\n return TransparencyData;\n}());\n/* tslint:enable */\n","import { PdfStream } from './../primitives/pdf-stream';\nimport { PdfGraphics, GetResourceEventHandler } from './../graphics/pdf-graphics';\nimport { PdfPageLayerCollection } from './pdf-page-layer-collection';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfColorSpace } from './../graphics/enum';\n/**\n * The `PdfPageLayer` used to create layers in PDF document.\n * @private\n */\nvar PdfPageLayer = /** @class */ (function () {\n function PdfPageLayer(page, streamClipPageTemplates) {\n // private bSaved : boolean;\n /**\n * Local Variable to store the `color space` of the document.\n * @private\n */\n this.pdfColorSpace = PdfColorSpace.Rgb;\n /**\n * Local Variable to set `visibility`.\n * @default true\n * @private\n */\n this.isVisible = true;\n /**\n * Indicates if `Sublayer` is present.\n * @default false\n * @private\n */\n this.sublayer = false;\n /**\n * Local variable to store `length` of the graphics.\n * @default 0\n * @private\n */\n this.contentLength = 0;\n /**\n * Instance for `PdfDictionaryProperties` Class.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n if (page === null) {\n throw new Error('ArgumentNullException:page');\n }\n this.pdfPage = page;\n this.clipPageTemplates = true;\n if (typeof streamClipPageTemplates === 'undefined') {\n this.content = new PdfStream();\n }\n else if (streamClipPageTemplates instanceof PdfStream || streamClipPageTemplates === null) {\n if (streamClipPageTemplates === null) {\n throw new Error('ArgumentNullException:stream');\n }\n this.content = streamClipPageTemplates;\n }\n else {\n this.content = new PdfStream();\n this.clipPageTemplates = streamClipPageTemplates;\n }\n }\n Object.defineProperty(PdfPageLayer.prototype, \"colorSpace\", {\n // Properties\n /**\n * Get or set the `color space`.\n * @private\n */\n get: function () {\n return this.pdfColorSpace;\n },\n set: function (value) {\n this.pdfColorSpace = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"page\", {\n /**\n * Gets parent `page` of the layer.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"layerId\", {\n /**\n * Gets and Sets the `id of the layer`.\n * @private\n */\n get: function () {\n return this.layerid;\n },\n set: function (value) {\n this.layerid = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"name\", {\n /**\n * Gets or sets the `name` of the layer.\n * @private\n */\n get: function () {\n return this.layerName;\n },\n set: function (value) {\n this.layerName = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"visible\", {\n /**\n * Gets or sets the `visibility` of the layer.\n * @private\n */\n get: function () {\n return this.isVisible;\n },\n set: function (value) {\n this.isVisible = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"graphics\", {\n /**\n * Gets `Graphics` context of the layer, used to draw various graphical content on layer.\n * @private\n */\n get: function () {\n if ((this.pdfGraphics == null)) {\n this.initializeGraphics(this.page);\n }\n return this.pdfGraphics;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"layers\", {\n /**\n * Gets the collection of `PdfPageLayer`, this collection handle by the class 'PdfPageLayerCollection'.\n * @private\n */\n get: function () {\n if (this.layer == null) {\n this.layer = new PdfPageLayerCollection(this.page);\n this.layer.sublayer = true;\n return this.layer;\n }\n else {\n return this.layer;\n }\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Adds` a new PDF Page layer.\n * @private\n */\n PdfPageLayer.prototype.add = function () {\n var layer = new PdfPageLayer(this.pdfPage);\n layer.name = '';\n return layer;\n };\n /**\n * Returns a value indicating the `sign` of a single-precision floating-point number.\n * @private\n */\n PdfPageLayer.prototype.sign = function (number) {\n if (number === 0) {\n return 0;\n }\n else if (number > 0) {\n return 1;\n }\n else {\n return -1;\n }\n };\n /**\n * `Initializes Graphics context` of the layer.\n * @private\n */\n PdfPageLayer.prototype.initializeGraphics = function (page) {\n var oPage = page;\n var gr = new GetResourceEventHandler(this.page);\n var cropBox = null;\n this.pdfGraphics = new PdfGraphics(page.size, gr, this.content);\n this.pdfGraphics.mediaBoxUpperRightBound = 0;\n if (oPage != null) {\n var sc = oPage.section.parent;\n if (sc != null) {\n this.pdfGraphics.colorSpace = sc.document.colorSpace;\n this.colorSpace = sc.document.colorSpace;\n }\n }\n // Transform coordinates to the left/top and activate margins.\n var isSame = (this.sign(page.origin.y) === this.sign(page.origin.x));\n // if (page != null) {\n if (page.origin.x >= 0 && page.origin.y >= 0 || !(isSame)) {\n this.pdfGraphics.initializeCoordinates();\n }\n else {\n // this.m_graphics.InitializeCoordinates(page);\n }\n var clipRect = oPage.section.getActualBounds(oPage, true);\n var margins = oPage.section.pageSettings.margins;\n if (this.clipPageTemplates) {\n if (page.origin.x >= 0 && page.origin.y >= 0) {\n this.pdfGraphics.clipTranslateMargins(clipRect);\n }\n }\n else {\n this.graphics.clipTranslateMargins(clipRect.x, clipRect.y, margins.left, margins.top, margins.right, margins.bottom);\n }\n this.pdfGraphics.setLayer(this);\n // this.bSaved = false;\n };\n Object.defineProperty(PdfPageLayer.prototype, \"element\", {\n // IPdfWrapper Members\n /**\n * Gets the wrapped `element`.\n * @private\n */\n get: function () {\n return this.content;\n },\n enumerable: true,\n configurable: true\n });\n return PdfPageLayer;\n}());\nexport { PdfPageLayer };\n","/**\n * PdfCollection.ts class for EJ2-PDF\n * The class used to handle the collection of PdF objects.\n */\nvar PdfCollection = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `Collection` class.\n * @private\n */\n function PdfCollection() {\n //\n }\n Object.defineProperty(PdfCollection.prototype, \"count\", {\n // Properties\n /**\n * Gets the `Count` of stored objects.\n * @private\n */\n get: function () {\n if (typeof this.collection === 'undefined') {\n this.collection = [];\n }\n return this.collection.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCollection.prototype, \"list\", {\n /**\n * Gets the `list` of stored objects.\n * @private\n */\n get: function () {\n if (typeof this.collection === 'undefined') {\n this.collection = [];\n }\n return this.collection;\n },\n enumerable: true,\n configurable: true\n });\n return PdfCollection;\n}());\nexport { PdfCollection };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfPageLayerCollection.ts class for EJ2-PDF\n */\nimport { PdfPageBase } from './pdf-page-base';\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { PdfPageLayer } from './pdf-page-layer';\nimport { PdfCollection } from './../general/pdf-collection';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { PdfStream } from './../primitives/pdf-stream';\n/**\n * The class provides methods and properties to handle the collections of `PdfPageLayer`.\n */\nvar PdfPageLayerCollection = /** @class */ (function (_super) {\n __extends(PdfPageLayerCollection, _super);\n function PdfPageLayerCollection(page) {\n var _this = _super.call(this) || this;\n /**\n * Stores the `number of first level layers` in the document.\n * @default 0\n * @private\n */\n _this.parentLayerCount = 0;\n /**\n * Indicates if `Sublayer` is present.\n * @default false\n * @private\n */\n _this.sublayer = false;\n /**\n * Stores the `optional content dictionary`.\n * @private\n */\n _this.optionalContent = new PdfDictionary();\n if (page instanceof PdfPageBase) {\n // if (page == null) {\n // throw new Error('ArgumentNullException:page');\n // }\n _this.page = page;\n var lPage = page;\n // if (lPage != null) {\n _this.parseLayers(lPage);\n // }\n }\n return _this;\n }\n PdfPageLayerCollection.prototype.items = function (index, value) {\n if (typeof index === 'number' && typeof value === 'undefined') {\n var obj = this.list[index];\n return obj;\n }\n else {\n if (value == null) {\n throw new Error('ArgumentNullException: layer');\n }\n if (value.page !== this.page) {\n throw new Error('ArgumentException: The layer belongs to another page');\n }\n // // Add/remove the layer.\n // let layer : PdfPageLayer = this.items(index);\n // if (layer != null) {\n // this.RemoveLayer(layer);\n // }\n // this.List[index] = value;\n // this.InsertLayer(index, value);\n }\n };\n PdfPageLayerCollection.prototype.add = function (firstArgument, secondArgument) {\n if (typeof firstArgument === 'undefined') {\n var layer = new PdfPageLayer(this.page);\n layer.name = '';\n this.add(layer);\n return layer;\n }\n else if (firstArgument instanceof PdfPageLayer) {\n // if (layer == null)\n // throw new ArgumentNullException(\"layer\");\n // if (layer.Page != m_page)\n // throw new ArgumentException(\"The layer belongs to another page\");\n var index = this.list.push(firstArgument);\n // Register layer.\n this.addLayer(index, firstArgument);\n return index;\n }\n else {\n return 0;\n }\n };\n /**\n * Registers `layer` at the page.\n * @private\n */\n PdfPageLayerCollection.prototype.addLayer = function (index, layer) {\n var reference = new PdfReferenceHolder(layer);\n this.page.contents.add(reference);\n };\n // private RemoveLayer(layer : PdfPageLayer) : void {\n // if (layer == null) {\n // throw new Error('ArgumentNullException:layer');\n // }\n // let reference : PdfReferenceHolder = new PdfReferenceHolder(layer);\n // if (this.page != null) {\n // this.page.Contents.Remove(reference);\n // }\n // }\n /**\n * Inserts `PdfPageLayer` into the collection at specified index.\n * @private\n */\n PdfPageLayerCollection.prototype.insert = function (index, layer) {\n // if (index < 0)\n // throw new ArgumentOutOfRangeException(\"index\", \"Value can not be less 0\");\n // if (layer == null)\n // throw new ArgumentNullException(\"layer\");\n // if (layer.Page != m_page)\n // throw new ArgumentException(\"The layer belongs to another page\");\n var list = [];\n var length = this.list.length;\n for (var i = index; i < length; i++) {\n list.push(this.list.pop());\n }\n this.list.push(layer);\n for (var i = 0; i < list.length; i++) {\n this.list.push(list[i]);\n }\n // Register layer.\n this.insertLayer(index, layer);\n };\n /**\n * Registers layer at the page.\n * @private\n */\n PdfPageLayerCollection.prototype.insertLayer = function (index, layer) {\n if (layer == null) {\n throw new Error('ArgumentNullException:layer');\n }\n var reference = new PdfReferenceHolder(layer);\n this.page.contents.insert(index, reference);\n };\n // tslint:disable\n /**\n * `Parses the layers`.\n * @private\n */\n PdfPageLayerCollection.prototype.parseLayers = function (loadedPage) {\n // if (loadedPage == null) {\n // throw new Error('ArgumentNullException:loadedPage');\n // }\n var contents = this.page.contents;\n var resource = this.page.getResources();\n var crossTable = null;\n var ocproperties = null;\n var propertie = null;\n var isLayerAdded = false;\n // if (loadedPage instanceof PdfPage) {\n crossTable = loadedPage.crossTable;\n // } else {\n // crossTable = (loadedPage as PdfLoadedPage).CrossTable;\n // Propertie = PdfCrossTable.Dereference(Resource[DictionaryProperties.Properties]) as PdfDictionary;\n // ocproperties = PdfCrossTable.Dereference((loadedPage as PdfLoadedPage).\n // Document.Catalog[DictionaryProperties.OCProperties]) as PdfDictionary;\n // }\n var saveStream = new PdfStream();\n var restoreStream = new PdfStream();\n var saveState = 'q';\n var newLine = '\\n';\n var restoreState = 'Q';\n // for (let index : number = 0; index < contents.Items.length; index++) {\n // let obj : IPdfPrimitive = contents[index];\n // let stream : PdfStream = crossTable.GetObject(obj) as PdfStream;\n // if (stream == null)\n // throw new PdfDocumentException(\"Invalid contents array.\");\n // // if (stream.Compress)\n // {\n // if (!loadedPage.Imported)\n // stream.Decompress();\n // }\n // byte[] contentId = stream.Data;\n // string str = PdfString.ByteToString(contentId);\n // if (!loadedPage.Imported && (contents.Count == 1) && ((stream.Data[stream.Data.Length - 2] ==\n // RestoreState) || (stream.Data[stream.Data.Length - 1] == RestoreState)))\n // {\n // byte[] content = stream.Data;\n // byte[] data = new byte[content.Length + 4];\n // data[0] = SaveState;\n // data[1] = NewLine;\n // content.CopyTo(data, 2);\n // data[data.Length - 2] = NewLine;\n // data[data.Length - 1] = RestoreState;\n // stream.Data = data;\n // }\n // if (ocproperties != null)\n // {\n // if (Propertie != null)\n // {\n // foreach (KeyValuePair prop in Propertie.Items)\n // {\n // String Key = prop.Key.ToString();\n // PdfReferenceHolder refh = prop.Value as PdfReferenceHolder;\n // PdfDictionary Dict = null;\n // if (refh != null)\n // {\n // Dict = refh.Object as PdfDictionary;\n // }\n // else\n // {\n // Dict = prop.Value as PdfDictionary;\n // }\n // PdfDictionary m_usage = PdfCrossTable.Dereference(Dict[DictionaryProperties.Usage]) as PdfDictionary;\n // if (m_usage != null)\n // {\n // if (str.Contains(Key))\n // {\n // PdfPageLayer layer = new PdfPageLayer(loadedPage, stream);\n // PdfDictionary printoption = PdfCrossTable.Dereference(m_usage[DictionaryProperties.Print])\n // as PdfDictionary;\n // if (printoption != null)\n // {\n // layer.m_printOption = printoption;\n // foreach (KeyValuePair value in printoption.Items)\n // {\n // if (value.Key.Value.Equals(DictionaryProperties.PrintState))\n // {\n // string printState = (value.Value as PdfName).Value;\n // if (printState.Equals(DictionaryProperties.OCGON))\n // {\n // layer.PrintState = PdfPrintState.AlwaysPrint;\n // break;\n // }\n // else\n // {\n // layer.PrintState = PdfPrintState.NeverPrint;\n // break;\n // }\n // }\n // }\n // }\n // PdfString layerName = PdfCrossTable.Dereference(Dict[DictionaryProperties.Name]) as PdfString;\n // layer.Name = layerName.Value;\n // List.add(layer);\n // isLayerAdded = true;\n // if(!str.Contains(\"EMC\"))\n // break;\n // }\n // }\n // else\n // {\n // if (str.Contains(Key))\n // {\n // PdfPageLayer layer = new PdfPageLayer(loadedPage, stream);\n // List.add(layer);\n // if(Dict.ContainsKey(DictionaryProperties.Name))\n // {\n // PdfString layerName = PdfCrossTable.Dereference(Dict[DictionaryProperties.Name]) as PdfString;\n // layer.Name = layerName.Value;\n // }\n // isLayerAdded = true;\n // break;\n // }\n // }\n // }\n // }\n // }\n // if (!isLayerAdded)\n // {\n // PdfPageLayer layer = new PdfPageLayer(loadedPage, stream);\n // List.add(layer);\n // }\n // else\n // isLayerAdded = false;\n // }\n var saveData = [];\n saveData.push(saveState);\n saveStream.data = saveData;\n contents.insert(0, new PdfReferenceHolder(saveStream));\n saveData = [];\n saveData.push(restoreState);\n restoreStream.data = saveData;\n contents.insert(contents.count, new PdfReferenceHolder(restoreStream));\n };\n /**\n * Returns `index of` the `PdfPageLayer` in the collection if exists, -1 otherwise.\n * @private\n */\n PdfPageLayerCollection.prototype.indexOf = function (layer) {\n if (layer == null) {\n throw new Error('ArgumentNullException: layer');\n }\n var index = this.list.indexOf(layer);\n return index;\n };\n return PdfPageLayerCollection;\n}(PdfCollection));\nexport { PdfPageLayerCollection };\n","import { PdfArray } from './../primitives/pdf-array';\nimport { PdfPageLayerCollection } from './pdf-page-layer-collection';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfResources } from './../graphics/pdf-resources';\n/**\n * The abstract base class for all pages,\n * `PdfPageBase` class provides methods and properties to create PDF pages and its elements.\n * @private\n */\nvar PdfPageBase = /** @class */ (function () {\n //constructors\n /**\n * Initializes a new instance of the `PdfPageBase` class.\n * @private\n */\n function PdfPageBase(dictionary) {\n /**\n * `Index` of the default layer.\n * @default -1.\n * @private\n */\n this.defLayerIndex = -1;\n /**\n * Local variable to store if page `updated`.\n * @default false.\n * @private\n */\n this.modified = false;\n /**\n * Instance of `DictionaryProperties` class.\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n this.pageDictionary = dictionary;\n }\n Object.defineProperty(PdfPageBase.prototype, \"section\", {\n //Properties\n /**\n * Gets the `section` of a page.\n * @private\n */\n get: function () {\n // if (this.pdfSection === null) {\n // throw new Error('PdfException : Page must be added to some section before using.');\n // }\n return this.pdfSection;\n },\n set: function (value) {\n this.pdfSection = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"dictionary\", {\n /**\n * Gets the page `dictionary`.\n * @private\n */\n get: function () {\n return this.pageDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"element\", {\n /**\n * Gets the wrapped `element`.\n * @private\n */\n get: function () {\n return this.pageDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"defaultLayer\", {\n /**\n * Gets the `default layer` of the page (Read only).\n * @private\n */\n get: function () {\n var layer = this.layers;\n var index = this.defaultLayerIndex;\n var returnlayer = layer.items(index);\n return returnlayer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"defaultLayerIndex\", {\n /**\n * Gets or sets `index of the default layer`.\n * @private\n */\n get: function () {\n if (this.layerCollection.count === 0 || this.defLayerIndex === -1) {\n var layer = this.layerCollection.add();\n this.defLayerIndex = this.layerCollection.indexOf(layer);\n }\n return this.defLayerIndex;\n },\n /**\n * Gets or sets` index of the default layer`.\n * @private\n */\n set: function (value) {\n if (value < 0 || value > this.layers.count - 1) {\n throw new Error('ArgumentOutOfRangeException : value, Index can not be less 0 and greater Layers.Count - 1');\n }\n else {\n this.defLayerIndex = value;\n this.modified = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"layers\", {\n /**\n * Gets the collection of the page's `layers` (Read only).\n * @private\n */\n get: function () {\n if (this.layerCollection == null || typeof this.layerCollection === 'undefined') {\n this.layerCollection = new PdfPageLayerCollection(this);\n }\n return this.layerCollection;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Return an instance of `PdfResources` class.\n * @private\n */\n PdfPageBase.prototype.getResources = function () {\n if (this.resources == null) {\n this.resources = new PdfResources();\n this.dictionary.items.setValue(this.dictionaryProperties.resources, this.resources);\n }\n return this.resources;\n };\n Object.defineProperty(PdfPageBase.prototype, \"contents\", {\n /**\n * Gets `array of page's content`.\n * @private\n */\n get: function () {\n var obj = this.pageDictionary.items.getValue(this.dictionaryProperties.contents);\n var contents = obj;\n var rh = obj;\n if (contents == null) {\n contents = new PdfArray();\n this.pageDictionary.items.setValue(this.dictionaryProperties.contents, contents);\n }\n return contents;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Sets the `resources`.\n * @private\n */\n PdfPageBase.prototype.setResources = function (res) {\n this.resources = res;\n this.dictionary.items.setValue(this.dictionaryProperties.resources, this.resources);\n this.modified = true;\n };\n return PdfPageBase;\n}());\nexport { PdfPageBase };\n","import { PdfArray } from './../primitives/pdf-array';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { SizeF, RectangleF, PointF } from './../drawing/pdf-drawing';\nimport { PdfStringLayouter } from './../graphics/fonts/string-layouter';\nimport { PdfColorSpace } from './../graphics/enum';\n/**\n * `PdfAnnotationCollection` class represents the collection of 'PdfAnnotation' objects.\n * @private\n */\nvar PdfAnnotationCollection = /** @class */ (function () {\n function PdfAnnotationCollection(page) {\n // Constants\n /**\n * `Error` constant message.\n * @private\n */\n this.alreadyExistsAnnotationError = 'This annotatation had been already added to page';\n /**\n * `Error` constant message.\n * @private\n */\n this.missingAnnotationException = 'Annotation is not contained in collection.';\n /**\n * Specifies the Internal variable to store fields of `PdfDictionaryProperties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Array of the `annotations`.\n * @private\n */\n this.internalAnnotations = new PdfArray();\n /**\n * privte `list` for the annotations.\n * @private\n */\n this.lists = [];\n if (typeof page !== 'undefined') {\n this.page = page;\n }\n }\n Object.defineProperty(PdfAnnotationCollection.prototype, \"annotations\", {\n /**\n * Gets the `PdfAnnotation` object at the specified index. Read-Only.\n * @private\n */\n get: function () {\n return this.internalAnnotations;\n },\n set: function (value) {\n this.internalAnnotations = value;\n },\n enumerable: true,\n configurable: true\n });\n // Public methods\n /**\n * `Adds` a new annotation to the collection.\n * @private\n */\n PdfAnnotationCollection.prototype.add = function (annotation) {\n // this.SetPrint(annotation);\n this.doAdd(annotation);\n };\n /**\n * `Adds` a Annotation to collection.\n * @private\n */\n /* tslint:disable */\n PdfAnnotationCollection.prototype.doAdd = function (annotation) {\n if (typeof annotation.destination !== 'undefined') {\n var layout = new PdfStringLayouter();\n var layoutResult = layout.layout(annotation.text, annotation.font, annotation.stringFormat, new SizeF((annotation.bounds.width), 0), false, new SizeF(0, 0));\n var lastPosition = annotation.bounds.y;\n if (layoutResult.lines.length === 1) {\n var size = annotation.font.measureString(layoutResult.lines[0].text);\n annotation.bounds = new RectangleF(new PointF(annotation.bounds.x, lastPosition), size);\n annotation.text = layoutResult.lines[0].text;\n //Draw Annotation Text.\n this.page.graphics.drawString(annotation.text, annotation.font, null, annotation.brush, annotation.bounds.x, annotation.bounds.y, annotation.bounds.width, annotation.bounds.height, null);\n //Add annotation to dictionary.\n annotation.setPage(this.page);\n this.setColor(annotation);\n this.internalAnnotations.add(new PdfReferenceHolder(annotation));\n this.lists.push(annotation);\n }\n else {\n for (var i = 0; i < layoutResult.lines.length; i++) {\n var size = annotation.font.measureString(layoutResult.lines[i].text);\n if (i === 0) {\n annotation.bounds = new RectangleF(annotation.bounds.x, lastPosition, size.width, size.height);\n annotation.text = layoutResult.lines[i].text;\n //Draw Annotation Text.\n this.page.graphics.drawString(annotation.text, annotation.font, null, annotation.brush, annotation.bounds.x, lastPosition, size.width, size.height, null);\n //Add annotation to dictionary.\n annotation.setPage(this.page);\n this.setColor(annotation);\n this.internalAnnotations.add(new PdfReferenceHolder(annotation));\n this.lists.push(annotation);\n //Update y for drawing next line of the text.\n lastPosition += annotation.bounds.height;\n }\n else {\n var annot = annotation.clone();\n annot.bounds = new RectangleF(new PointF(annotation.bounds.x, lastPosition), size);\n annot.text = layoutResult.lines[i].text;\n //Draw Annotation Text.\n this.page.graphics.drawString(annot.text, annot.font, null, annot.brush, annot.bounds.x, annot.bounds.y, annot.bounds.width, annot.bounds.height, null);\n //Add annotation to dictionary.\n annot.setPage(this.page);\n this.setColor(annot);\n this.internalAnnotations.add(new PdfReferenceHolder(annot));\n this.lists.push(annot);\n //Update y for drawing next line of the text.\n lastPosition += annot.bounds.height;\n }\n }\n }\n }\n else {\n annotation.setPage(this.page);\n this.internalAnnotations.add(new PdfReferenceHolder(annotation));\n return this.lists.push(annotation);\n }\n };\n /* tslint:enable */\n /**\n * `Set a color of an annotation`.\n * @private\n */\n PdfAnnotationCollection.prototype.setColor = function (annotation) {\n var cs = PdfColorSpace.Rgb;\n var colours = annotation.color.toArray(cs);\n annotation.dictionary.items.setValue(this.dictionaryProperties.c, colours);\n };\n Object.defineProperty(PdfAnnotationCollection.prototype, \"element\", {\n // IPdfWrapper Members\n /**\n * Gets the `Element` representing this object.\n * @private\n */\n get: function () {\n return this.internalAnnotations;\n },\n enumerable: true,\n configurable: true\n });\n return PdfAnnotationCollection;\n}());\nexport { PdfAnnotationCollection };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfPageBase } from './pdf-page-base';\nimport { PdfDictionary, SaveTemplateEventHandler } from './../primitives/pdf-dictionary';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { SizeF } from './../drawing/pdf-drawing';\nimport { PdfAnnotationCollection } from './../annotations/annotation-collection';\nimport { PdfPageLayer } from './pdf-page-layer';\n/**\n * Provides methods and properties to create pages and its elements.\n * `PdfPage` class inherited from the `PdfPageBase` class.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * //\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * //\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfPage = /** @class */ (function (_super) {\n __extends(PdfPage, _super);\n //constructors\n /**\n * Initialize the new instance for `PdfPage` class.\n * @private\n */\n function PdfPage() {\n var _this = _super.call(this, new PdfDictionary()) || this;\n /**\n * Stores the instance of `PdfAnnotationCollection` class.\n * @hidden\n * @default null\n * @private\n */\n _this.annotationCollection = null;\n /**\n * Stores the instance of `PageBeginSave` event for Page Number Field.\n * @default null\n * @private\n */\n _this.beginSave = null;\n _this.initialize();\n return _this;\n }\n Object.defineProperty(PdfPage.prototype, \"document\", {\n //Properties\n /**\n * Gets current `document`.\n * @private\n */\n get: function () {\n if (this.section !== null && this.section.parent !== null) {\n return this.section.parent.document;\n }\n else {\n return null;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"graphics\", {\n /**\n * Get the current `graphics`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * //\n * // get graphics\n * let graphics : PdfGraphics = page1.graphics;\n * //\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n var result = this.defaultLayer.graphics;\n result.currentPage = this;\n return result;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"crossTable\", {\n /**\n * Gets the `cross table`.\n * @private\n */\n get: function () {\n if (this.section === null) {\n throw new Error('PdfDocumentException : Page is not created');\n }\n return this.section.parent === null ? this.section.parentDocument.crossTable : this.section.parent.document.crossTable;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"size\", {\n /**\n * Gets the size of the PDF page- Read only.\n * @public\n */\n get: function () {\n return this.section.pageSettings.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"origin\", {\n /**\n * Gets the `origin` of the page.\n * @private\n */\n get: function () {\n return this.section.pageSettings.origin;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"annotations\", {\n /**\n * Gets a collection of the `annotations` of the page- Read only.\n * @private\n */\n get: function () {\n if (this.annotationCollection == null) {\n this.annotationCollection = new PdfAnnotationCollection(this);\n // if (!this.Dictionary.ContainsKey(this.dictionaryProperties.annots)) {\n this.dictionary.items.setValue(this.dictionaryProperties.annots, this.annotationCollection.element);\n // }\n this.annotationCollection.annotations = this.dictionary.items.getValue(this.dictionaryProperties.annots);\n }\n return this.annotationCollection;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * `Initializes` a page.\n * @private\n */\n PdfPage.prototype.initialize = function () {\n this.dictionary.items.setValue(this.dictionaryProperties.type, new PdfName('Page'));\n this.dictionary.pageBeginDrawTemplate = new SaveTemplateEventHandler(this);\n };\n /**\n * Sets parent `section` to the page.\n * @private\n */\n PdfPage.prototype.setSection = function (section) {\n this.section = section;\n this.dictionary.items.setValue(this.dictionaryProperties.parent, new PdfReferenceHolder(section));\n };\n /**\n * `Resets the progress`.\n * @private\n */\n PdfPage.prototype.resetProgress = function () {\n this.isProgressOn = false;\n };\n /**\n * Get the page size reduced by page margins and page template dimensions.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // create new standard font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the specified point using `getClientSize` method\n * let point : PointF = new PointF(page1.getClientSize().width - 200, page1.getClientSize().height - 200);\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, point);\n * //\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n PdfPage.prototype.getClientSize = function () {\n var returnValue = this.section.getActualBounds(this, true);\n return new SizeF(returnValue.width, returnValue.height);\n };\n /**\n * Helper method to retrive the instance of `PageBeginSave` event for header and footer elements.\n * @private\n */\n PdfPage.prototype.pageBeginSave = function () {\n var doc = this.document;\n if (typeof doc !== undefined && doc != null) {\n this.drawPageTemplates(doc);\n }\n if (this.beginSave != null && typeof this.beginSave !== 'undefined') {\n this.beginSave(this);\n }\n };\n /**\n * Helper method to draw template elements.\n * @private\n */\n PdfPage.prototype.drawPageTemplates = function (document) {\n // Draw Background templates.\n var hasBackTemplates = this.section.containsTemplates(document, this, false);\n if (hasBackTemplates) {\n var backLayer = new PdfPageLayer(this, false);\n this.layers.insert(0, backLayer);\n this.section.drawTemplates(this, backLayer, document, false);\n if (backLayer.graphics !== null && typeof backLayer.graphics !== 'undefined') {\n for (var i = 0; i < backLayer.graphics.automaticFields.automaticFields.length; i++) {\n var fieldInfo = backLayer.graphics.automaticFields.automaticFields[i];\n fieldInfo.field.performDraw(backLayer.graphics, fieldInfo.location, fieldInfo.scalingX, fieldInfo.scalingY);\n }\n }\n }\n // Draw Foreground templates.\n var hasFrontTemplates = this.section.containsTemplates(document, this, true);\n if (hasFrontTemplates) {\n var frontLayer = new PdfPageLayer(this, false);\n this.layers.add(frontLayer);\n this.section.drawTemplates(this, frontLayer, document, true);\n }\n };\n return PdfPage;\n}(PdfPageBase));\nexport { PdfPage };\n","/**\n * Provides data for `PageAddedEventHandler` event.\n * This event raises when adding the new PDF page to the PDF document.\n */\nvar PageAddedEventArgs = /** @class */ (function () {\n function PageAddedEventArgs(page) {\n if (typeof page !== 'undefined') {\n this.pdfPage = page;\n }\n else {\n this.pdfPage = null;\n }\n }\n Object.defineProperty(PageAddedEventArgs.prototype, \"page\", {\n /**\n * Gets the `newly added page`.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n enumerable: true,\n configurable: true\n });\n return PageAddedEventArgs;\n}());\nexport { PageAddedEventArgs };\n","/**\n * Represents the `collection of pages in a section`.\n * @private\n */\nvar PdfSectionPageCollection = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `PdfSectionPageCollection` class.\n * @private\n */\n function PdfSectionPageCollection(section) {\n // Fields\n /**\n * @hidden\n * @private\n */\n this.pdfSection = null;\n if (section == null) {\n throw Error('ArgumentNullException(\"section\")');\n }\n this.section = section;\n }\n Object.defineProperty(PdfSectionPageCollection.prototype, \"section\", {\n // Properties\n /**\n * Gets the `PdfPage` at the specified index.\n * @private\n */\n get: function () {\n return this.pdfSection;\n },\n set: function (value) {\n this.pdfSection = value;\n },\n enumerable: true,\n configurable: true\n });\n // Public Methods\n /**\n * `Determines` whether the specified page is within the collection.\n * @private\n */\n PdfSectionPageCollection.prototype.contains = function (page) {\n return this.section.contains(page);\n };\n /**\n * `Removes` the specified page from collection.\n * @private\n */\n PdfSectionPageCollection.prototype.remove = function (page) {\n this.section.remove(page);\n };\n /**\n * `Adds` a new page from collection.\n * @private\n */\n PdfSectionPageCollection.prototype.add = function () {\n return this.section.add();\n };\n return PdfSectionPageCollection;\n}());\nexport { PdfSectionPageCollection };\n","import { TemplateType } from './../pages/enum';\n// import { PdfStampCollection } from `./../Pages/PdfStampCollection`;\n/**\n * `PdfDocumentTemplate` class encapsulates a page template for all the pages in the document.\n * @private\n */\nvar PdfDocumentTemplate = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `PdfDocumentTemplate` class.\n * @public\n */\n function PdfDocumentTemplate() {\n //\n }\n Object.defineProperty(PdfDocumentTemplate.prototype, \"left\", {\n // private m_stamps : PdfStampCollection;\n // Properties\n /**\n * `Left` page template object.\n * @public\n */\n get: function () {\n return this.leftTemplate;\n },\n set: function (value) {\n this.leftTemplate = this.checkElement(value, TemplateType.Left);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"top\", {\n /**\n * `Top` page template object.\n * @public\n */\n get: function () {\n return this.topTemplate;\n },\n set: function (value) {\n this.topTemplate = this.checkElement(value, TemplateType.Top);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"right\", {\n /**\n * `Right` page template object.\n * @public\n */\n get: function () {\n return this.rightTemplate;\n },\n set: function (value) {\n this.rightTemplate = this.checkElement(value, TemplateType.Right);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"bottom\", {\n /**\n * `Bottom` page template object.\n * @public\n */\n get: function () {\n return this.bottomTemplate;\n },\n set: function (value) {\n this.bottomTemplate = this.checkElement(value, TemplateType.Bottom);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"EvenLeft\", {\n /**\n * `EvenLeft` page template object.\n * @public\n */\n get: function () {\n return this.evenLeft;\n },\n set: function (value) {\n this.evenLeft = this.checkElement(value, TemplateType.Left);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"EvenTop\", {\n /**\n * `EvenTop` page template object.\n * @public\n */\n get: function () {\n return this.evenTop;\n },\n set: function (value) {\n this.evenTop = this.checkElement(value, TemplateType.Top);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"EvenRight\", {\n /**\n * `EvenRight` page template object.\n * @public\n */\n get: function () {\n return this.evenRight;\n },\n set: function (value) {\n this.evenRight = this.checkElement(value, TemplateType.Right);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"EvenBottom\", {\n /**\n * `EvenBottom` page template object.\n * @public\n */\n get: function () {\n return this.evenBottom;\n },\n set: function (value) {\n this.evenBottom = this.checkElement(value, TemplateType.Bottom);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"OddLeft\", {\n /**\n * `OddLeft` page template object.\n * @public\n */\n get: function () {\n return this.oddLeft;\n },\n set: function (value) {\n this.oddLeft = this.checkElement(value, TemplateType.Left);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"OddTop\", {\n /**\n * `OddTop` page template object.\n * @public\n */\n get: function () {\n return this.oddTop;\n },\n set: function (value) {\n this.oddTop = this.checkElement(value, TemplateType.Top);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"OddRight\", {\n /**\n * `OddRight` page template object.\n * @public\n */\n get: function () {\n return this.oddRight;\n },\n set: function (value) {\n this.oddRight = this.checkElement(value, TemplateType.Right);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"OddBottom\", {\n /**\n * `OddBottom` page template object.\n * @public\n */\n get: function () {\n return this.oddBottom;\n },\n set: function (value) {\n this.oddBottom = this.checkElement(value, TemplateType.Bottom);\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * Returns `left` template.\n * @public\n */\n PdfDocumentTemplate.prototype.getLeft = function (page) {\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var template = null;\n // if (page.Document.Pages != null) {\n var even = this.isEven(page);\n if (even) {\n template = (this.EvenLeft != null) ? this.EvenLeft : this.left;\n }\n else {\n template = (this.OddLeft != null) ? this.OddLeft : this.left;\n }\n // }\n return template;\n };\n /**\n * Returns `top` template.\n * @public\n */\n PdfDocumentTemplate.prototype.getTop = function (page) {\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var template = null;\n // if (page.Document.Pages != null) {\n var even = this.isEven(page);\n if (even) {\n template = (this.EvenTop != null) ? this.EvenTop : this.top;\n }\n else {\n template = (this.OddTop != null) ? this.OddTop : this.top;\n }\n // }\n return template;\n };\n /**\n * Returns `right` template.\n * @public\n */\n PdfDocumentTemplate.prototype.getRight = function (page) {\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var template = null;\n // if (page.Document.Pages != null) {\n var even = this.isEven(page);\n if (even) {\n template = (this.EvenRight != null) ? this.EvenRight : this.right;\n }\n else {\n template = (this.OddRight != null) ? this.OddRight : this.right;\n }\n // }\n return template;\n };\n /**\n * Returns `bottom` template.\n * @public\n */\n PdfDocumentTemplate.prototype.getBottom = function (page) {\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var template = null;\n // if (page.Document.Pages != null) {\n var even = this.isEven(page);\n if (even) {\n template = (this.EvenBottom != null) ? this.EvenBottom : this.bottom;\n }\n else {\n template = (this.OddBottom != null) ? this.OddBottom : this.bottom;\n }\n // }\n return template;\n };\n /**\n * Checks whether the page `is even`.\n * @private\n */\n PdfDocumentTemplate.prototype.isEven = function (page) {\n var pages = page.section.document.pages;\n var index = 0;\n if (pages.pageCollectionIndex.containsKey(page)) {\n index = pages.pageCollectionIndex.getValue(page) + 1;\n }\n else {\n index = pages.indexOf(page) + 1;\n }\n var even = ((index % 2) === 0);\n return even;\n };\n /**\n * Checks a `template element`.\n * @private\n */\n PdfDocumentTemplate.prototype.checkElement = function (templateElement, type) {\n if (templateElement != null) {\n if ((typeof templateElement.type !== 'undefined') && (templateElement.type !== TemplateType.None)) {\n throw new Error('NotSupportedException:Can not reassign the template element. Please, create new one.');\n }\n templateElement.type = type;\n }\n return templateElement;\n };\n return PdfDocumentTemplate;\n}());\nexport { PdfDocumentTemplate };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfSectionTemplate.ts class for EJ2-PDF\n */\nimport { PdfDocumentTemplate } from './../document/pdf-document-template';\n/**\n * Represents a `page template` for all the pages in the section.\n */\nvar PdfSectionTemplate = /** @class */ (function (_super) {\n __extends(PdfSectionTemplate, _super);\n // Constructors\n /**\n * `Creates a new object`.\n * @private\n */\n function PdfSectionTemplate() {\n var _this = _super.call(this) || this;\n _this.leftValue = _this.topValue = _this.rightValue = _this.bottomValue = _this.stampValue = true;\n return _this;\n }\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentLeftTemplate\", {\n // Properties\n /**\n * Gets or sets value indicating whether parent `Left page template should be used or not`.\n * @private\n */\n get: function () {\n return this.leftValue;\n },\n set: function (value) {\n this.leftValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentTopTemplate\", {\n /**\n * Gets or sets value indicating whether parent `Top page template should be used or not`.\n * @private\n */\n get: function () {\n return this.topValue;\n },\n set: function (value) {\n this.topValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentRightTemplate\", {\n /**\n * Gets or sets value indicating whether parent `Right page template should be used or not`.\n * @private\n */\n get: function () {\n return this.rightValue;\n },\n set: function (value) {\n this.rightValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentBottomTemplate\", {\n /**\n * Gets or sets value indicating whether parent `Bottom page template should be used or not`.\n * @private\n */\n get: function () {\n return this.bottomValue;\n },\n set: function (value) {\n this.bottomValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentStamps\", {\n /**\n * Gets or sets value indicating whether the `stamp value` is true or not.\n * @private\n */\n get: function () {\n return this.stampValue;\n },\n set: function (value) {\n this.stampValue = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfSectionTemplate;\n}(PdfDocumentTemplate));\nexport { PdfSectionTemplate };\n","import { PdfPage } from './pdf-page';\nimport { PageAddedEventArgs } from './page-added-event-arguments';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { PdfArray } from './../primitives/pdf-array';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { SaveSectionEventHandler } from './../primitives/pdf-dictionary';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfSectionCollection } from './pdf-section-collection';\nimport { PdfSectionPageCollection } from './pdf-section-page-collection';\nimport { RectangleF } from './../drawing/pdf-drawing';\nimport { PdfSectionTemplate } from './pdf-section-templates';\n/**\n * Represents a `section` entity. A section it's a set of the pages with similar page settings.\n */\nvar PdfSection = /** @class */ (function () {\n function PdfSection(document, pageSettings) {\n //Fields\n //public PageAdded() : PageAddedEventArgs.PageAddedEventHandler = new PageAddedEventArgs.PageAddedEventHandler(Object,args)\n /**\n * @hidden\n * @private\n */\n this.pageAdded = new PageAddedEventArgs();\n /**\n * @hidden\n * @private\n */\n this.pdfPages = [];\n /**\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n this.pdfDocument = document;\n if (typeof pageSettings === 'undefined') {\n this.settings = document.pageSettings.clone();\n this.initialSettings = this.settings.clone();\n }\n else {\n this.settings = pageSettings.clone();\n this.initialSettings = this.settings.clone();\n }\n this.initialize();\n }\n Object.defineProperty(PdfSection.prototype, \"parent\", {\n //Property\n /**\n * Gets or sets the `parent`.\n * @private\n */\n get: function () {\n return this.sectionCollection;\n },\n set: function (value) {\n this.sectionCollection = value;\n this.section.items.setValue(this.dictionaryProperties.parent, new PdfReferenceHolder(value));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"parentDocument\", {\n /**\n * Gets the `parent document`.\n * @private\n */\n get: function () {\n return this.pdfDocument;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"pageSettings\", {\n /**\n * Gets or sets the `page settings` of the section.\n * @private\n */\n get: function () {\n return this.settings;\n },\n set: function (value) {\n if (value != null) {\n this.settings = value;\n }\n else {\n throw Error('Value can not be null.');\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"element\", {\n /**\n * Gets the wrapped `element`.\n * @private\n */\n get: function () {\n return this.section;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"count\", {\n /**\n * Gets the `count` of the pages in the section.\n * @private\n */\n get: function () {\n return this.pagesReferences.count;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"template\", {\n /**\n * Gets or sets a `template` for the pages in the section.\n * @private\n */\n get: function () {\n if (this.pageTemplate == null) {\n this.pageTemplate = new PdfSectionTemplate();\n }\n return this.pageTemplate;\n },\n set: function (value) {\n this.pageTemplate = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"document\", {\n /**\n * Gets the `document`.\n * @private\n */\n get: function () {\n return this.sectionCollection.document;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"pages\", {\n /**\n * Gets the collection of `pages` in a section (Read only)\n * @private\n */\n get: function () {\n if (this.pagesCollection == null || typeof this.pagesCollection === 'undefined') {\n this.pagesCollection = new PdfSectionPageCollection(this);\n }\n return this.pagesCollection;\n },\n enumerable: true,\n configurable: true\n });\n //methods\n /**\n * `Return the page collection` of current section.\n * @private\n */\n PdfSection.prototype.getPages = function () {\n return this.pdfPages;\n };\n /**\n * `Translates` point into native coordinates of the page.\n * @private\n */\n PdfSection.prototype.pointToNativePdf = function (page, point) {\n var bounds = this.getActualBounds(page, true);\n point.x += bounds.x;\n point.y = this.pageSettings.height - (point.y);\n return point;\n };\n /**\n * Sets the page setting of the current section.\n * @public\n * @param settings Instance of `PdfPageSettings`\n */\n PdfSection.prototype.setPageSettings = function (settings) {\n this.settings = settings;\n this.state.orientation = settings.orientation;\n this.state.rotate = settings.rotate;\n this.state.size = settings.size;\n this.state.origin = settings.origin;\n };\n /**\n * `Initializes` the object.\n * @private\n */\n PdfSection.prototype.initialize = function () {\n this.pagesReferences = new PdfArray();\n this.section = new PdfDictionary();\n this.state = new PageSettingsState(this.pdfDocument);\n this.section.sectionBeginSave = new SaveSectionEventHandler(this, this.state);\n this.pageCount = new PdfNumber(0);\n this.section.items.setValue(this.dictionaryProperties.count, this.pageCount);\n this.section.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.pages));\n this.section.items.setValue(this.dictionaryProperties.kids, this.pagesReferences);\n };\n /**\n * Checks whether any template should be printed on this layer.\n * @private\n * @param document The parent document.\n * @param page The parent page.\n * @param foreground Layer z-order.\n * @returns True - if some content should be printed on the layer, False otherwise.\n */\n PdfSection.prototype.containsTemplates = function (document, page, foreground) {\n var documentHeaders = this.getDocumentTemplates(document, page, foreground);\n var sectionTemplates = this.getSectionTemplates(page, foreground);\n return (documentHeaders.length > 0 || sectionTemplates.length > 0);\n };\n /**\n * Returns array of the document templates.\n * @private\n * @param document The parent document.\n * @param page The parent page.\n * @param headers If true - return headers/footers, if false - return simple templates.\n * @param foreground If true - return foreground templates, if false - return background templates.\n * @returns Returns array of the document templates.\n */\n /* tslint:disable */\n PdfSection.prototype.getDocumentTemplates = function (document, page, foreground) {\n var templates = [];\n if (this.template.applyDocumentTopTemplate && document.template.getTop(page) != null) {\n if ((!(document.template.getTop(page).foreground || foreground)) || (document.template.getTop(page).foreground && foreground)) {\n templates.push(document.template.getTop(page));\n }\n }\n if (this.template.applyDocumentBottomTemplate && document.template.getBottom(page) != null) {\n if ((!(document.template.getBottom(page).foreground || foreground)) || (document.template.getBottom(page).foreground && foreground)) {\n templates.push(document.template.getBottom(page));\n }\n }\n if (this.template.applyDocumentLeftTemplate && document.template.getLeft(page) != null) {\n if ((!(document.template.getLeft(page).foreground || foreground)) || (document.template.getLeft(page).foreground && foreground)) {\n templates.push(document.template.getLeft(page));\n }\n }\n if (this.template.applyDocumentRightTemplate && document.template.getRight(page) != null) {\n if ((!(document.template.getRight(page).foreground || foreground)) || (document.template.getRight(page).foreground && foreground)) {\n templates.push(document.template.getRight(page));\n }\n }\n return templates;\n };\n /**\n * Returns array of the section templates.\n * @private\n * @param page The parent page.\n * @param foreground If true - return foreground templates, if false - return background templates.\n * @returns Returns array of the section templates.\n */\n /* tslint:disable */\n PdfSection.prototype.getSectionTemplates = function (page, foreground) {\n var templates = [];\n if (this.template.getTop(page) != null) {\n var pageTemplate = this.template.getTop(page);\n if ((!(pageTemplate.foreground || foreground)) || (pageTemplate.foreground && foreground)) {\n templates.push(pageTemplate);\n }\n }\n if (this.template.getBottom(page) != null) {\n var pageTemplate = this.template.getBottom(page);\n if ((!(pageTemplate.foreground || foreground)) || (pageTemplate.foreground && foreground)) {\n templates.push(pageTemplate);\n }\n }\n if (this.template.getLeft(page) != null) {\n var pageTemplate = this.template.getLeft(page);\n if ((!(pageTemplate.foreground || foreground)) || (pageTemplate.foreground && foreground)) {\n templates.push(pageTemplate);\n }\n }\n if (this.template.getRight(page) != null) {\n var pageTemplate = this.template.getRight(page);\n if ((!(pageTemplate.foreground || foreground)) || (pageTemplate.foreground && foreground)) {\n templates.push(pageTemplate);\n }\n }\n return templates;\n };\n /* tslint:enable */\n /**\n * `Adds` the specified page.\n * @private\n */\n PdfSection.prototype.add = function (page) {\n if (typeof page === 'undefined') {\n var page_1 = new PdfPage();\n this.add(page_1);\n return page_1;\n }\n else {\n var r = this.checkPresence(page);\n this.pdfPages.push(page);\n this.pagesReferences.add(r);\n page.setSection(this);\n page.resetProgress();\n this.pageAddedMethod(page);\n }\n };\n /**\n * `Checks the presence`.\n * @private\n */\n PdfSection.prototype.checkPresence = function (page) {\n var rh = new PdfReferenceHolder(page);\n var contains = false;\n var sc = this.parent;\n for (var index = 0; index < sc.section.length; index++) {\n var section = sc.section[index];\n contains = contains || section.contains(page);\n }\n return rh;\n };\n /**\n * `Determines` whether the page in within the section.\n * @private\n */\n PdfSection.prototype.contains = function (page) {\n var index = this.indexOf(page);\n return (0 <= index);\n };\n /**\n * Get the `index of` the page.\n * @private\n */\n PdfSection.prototype.indexOf = function (page) {\n for (var index = 0; index < this.pdfPages.length; index++) {\n if (this.pdfPages[index] === page) {\n return this.pdfPages.indexOf(page);\n }\n }\n var r = new PdfReferenceHolder(page);\n return this.pagesReferences.indexOf(r);\n };\n /**\n * Call two event's methods.\n * @hidden\n * @private\n */\n PdfSection.prototype.pageAddedMethod = function (page) {\n //Create event's arguments\n var args = new PageAddedEventArgs(page);\n this.onPageAdded(args);\n var parent = this.parent;\n parent.document.pages.onPageAdded(args);\n this.pageCount.intValue = this.count;\n };\n /**\n * Called when the page has been added.\n * @hidden\n * @private\n */\n PdfSection.prototype.onPageAdded = function (args) {\n //\n };\n PdfSection.prototype.getActualBounds = function (arg1, arg2, arg3) {\n if (arg1 instanceof PdfPage && typeof arg2 === 'boolean') {\n var result = void 0;\n var document_1 = this.parent.document;\n result = this.getActualBounds(document_1, arg1, arg2);\n return result;\n }\n else {\n arg1 = arg1;\n arg2 = arg2;\n arg3 = arg3;\n var bounds = new RectangleF(0, 0, 0, 0);\n bounds.height = (arg3) ? this.pageSettings.size.height : this.pageSettings.getActualSize().height;\n bounds.width = (arg3) ? this.pageSettings.size.width : this.pageSettings.getActualSize().width;\n var left = this.getLeftIndentWidth(arg1, arg2, arg3);\n var top_1 = this.getTopIndentHeight(arg1, arg2, arg3);\n var right = this.getRightIndentWidth(arg1, arg2, arg3);\n var bottom = this.getBottomIndentHeight(arg1, arg2, arg3);\n bounds.x += left;\n bounds.y += top_1;\n bounds.width -= (left + right);\n bounds.height -= (top_1 + bottom);\n return bounds;\n }\n };\n /**\n * Calculates width of the `left indent`.\n * @private\n */\n PdfSection.prototype.getLeftIndentWidth = function (document, page, includeMargins) {\n if (document == null) {\n throw new Error('ArgumentNullException:document');\n }\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var value = (includeMargins) ? this.pageSettings.margins.left : 0;\n var templateWidth = (this.template.getLeft(page) != null) ? this.template.getLeft(page).width : 0;\n var docTemplateWidth = (document.template.getLeft(page) != null) ? document.template.getLeft(page).width : 0;\n value += (this.template.applyDocumentLeftTemplate) ? Math.max(templateWidth, docTemplateWidth) : templateWidth;\n return value;\n };\n /**\n * Calculates `Height` of the top indent.\n * @private\n */\n PdfSection.prototype.getTopIndentHeight = function (document, page, includeMargins) {\n if (document == null) {\n throw new Error('ArgumentNullException:document');\n }\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var value = (includeMargins) ? this.pageSettings.margins.top : 0;\n var templateHeight = (this.template.getTop(page) != null) ? this.template.getTop(page).height : 0;\n var docTemplateHeight = (document.template.getTop(page) != null) ? document.template.getTop(page).height : 0;\n value += (this.template.applyDocumentTopTemplate) ? Math.max(templateHeight, docTemplateHeight) : templateHeight;\n return value;\n };\n /**\n * Calculates `width` of the right indent.\n * @private\n */\n PdfSection.prototype.getRightIndentWidth = function (document, page, includeMargins) {\n if (document == null) {\n throw new Error('ArgumentNullException:document');\n }\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var value = (includeMargins) ? this.pageSettings.margins.right : 0;\n var templateWidth = (this.template.getRight(page) != null) ? this.template.getRight(page).width : 0;\n var docTemplateWidth = (document.template.getRight(page) != null) ? document.template.getRight(page).width : 0;\n value += (this.template.applyDocumentRightTemplate) ? Math.max(templateWidth, docTemplateWidth) : templateWidth;\n return value;\n };\n /**\n * Calculates `Height` of the bottom indent.\n * @private\n */\n PdfSection.prototype.getBottomIndentHeight = function (document, page, includeMargins) {\n if (document == null) {\n throw new Error('ArgumentNullException:document');\n }\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var value = (includeMargins) ? this.pageSettings.margins.bottom : 0;\n var templateHeight = (this.template.getBottom(page) != null) ? this.template.getBottom(page).height : 0;\n var docTemplateHeight = (document.template.getBottom(page) != null) ? document.template.getBottom(page).height : 0;\n value += (this.template.applyDocumentBottomTemplate) ? Math.max(templateHeight, docTemplateHeight) : templateHeight;\n return value;\n };\n /**\n * `Removes` the page from the section.\n * @private\n */\n PdfSection.prototype.remove = function (page) {\n if (page == null) {\n throw Error('ArgumentNullException(\"page\")');\n }\n var index = this.pdfPages.indexOf(page);\n this.pagesReferences.removeAt(index);\n var temproaryPages = [];\n for (var j = 0; j < index; j++) {\n temproaryPages.push(this.pdfPages[j]);\n }\n for (var j = index + 1; j < this.pdfPages.length; j++) {\n temproaryPages.push(this.pdfPages[j]);\n }\n this.pdfPages = temproaryPages;\n };\n /**\n * In fills dictionary by the data from `Page settings`.\n * @private\n */\n PdfSection.prototype.applyPageSettings = function (container, parentSettings, state) {\n var bounds = new RectangleF(state.origin, state.size);\n container.items.setValue(this.dictionaryProperties.mediaBox, PdfArray.fromRectangle(bounds));\n var rotate = 0;\n rotate = PdfSectionCollection.rotateFactor * state.rotate;\n var angle = new PdfNumber(rotate);\n container.items.setValue(this.dictionaryProperties.rotate, angle);\n };\n /**\n * Catches the Save event of the dictionary.\n * @hidden\n * @private\n */\n PdfSection.prototype.beginSave = function (state, writer) {\n var doc = writer.document;\n this.applyPageSettings(this.section, doc.pageSettings, state);\n };\n /**\n * Draws page templates on the page.\n * @private\n */\n PdfSection.prototype.drawTemplates = function (page, layer, document, foreground) {\n var documentHeaders = this.getDocumentTemplates(document, page, foreground);\n var sectionHeaders = this.getSectionTemplates(page, foreground);\n this.drawTemplatesHelper(layer, document, documentHeaders);\n this.drawTemplatesHelper(layer, document, sectionHeaders);\n };\n /**\n * Draws page templates on the page.\n * @private\n */\n PdfSection.prototype.drawTemplatesHelper = function (layer, document, templates) {\n if (templates != null && templates.length > 0) {\n var len = templates.length;\n for (var i = 0; i < len; i++) {\n var template = templates[i];\n template.draw(layer, document);\n }\n }\n };\n return PdfSection;\n}());\nexport { PdfSection };\nvar PageSettingsState = /** @class */ (function () {\n //Public Constructor\n /**\n * New instance to store the `PageSettings`.\n * @private\n */\n function PageSettingsState(document) {\n this.pageOrientation = document.pageSettings.orientation;\n this.pageRotate = document.pageSettings.rotate;\n this.pageSize = document.pageSettings.size;\n this.pageOrigin = document.pageSettings.origin;\n }\n Object.defineProperty(PageSettingsState.prototype, \"orientation\", {\n //public Properties\n /**\n * @hidden\n * @private\n */\n get: function () {\n return this.pageOrientation;\n },\n set: function (value) {\n this.pageOrientation = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PageSettingsState.prototype, \"rotate\", {\n /**\n * @hidden\n * @private\n */\n get: function () {\n return this.pageRotate;\n },\n set: function (value) {\n this.pageRotate = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PageSettingsState.prototype, \"size\", {\n /**\n * @hidden\n * @private\n */\n get: function () {\n return this.pageSize;\n },\n set: function (value) {\n this.pageSize = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PageSettingsState.prototype, \"origin\", {\n /**\n * @hidden\n * @private\n */\n get: function () {\n return this.pageOrigin;\n },\n set: function (value) {\n this.pageOrigin = value;\n },\n enumerable: true,\n configurable: true\n });\n return PageSettingsState;\n}());\nexport { PageSettingsState };\n","import { PdfNumber } from './../primitives/pdf-number';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfArray } from './../primitives/pdf-array';\nimport { PdfDictionary, SaveSectionCollectionEventHandler } from './../primitives/pdf-dictionary';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { RectangleF, PointF } from './../drawing/pdf-drawing';\nimport { PdfSection } from './pdf-section';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\n/**\n * Represents the `collection of the sections`.\n * @private\n */\nvar PdfSectionCollection = /** @class */ (function () {\n //constructor\n /**\n * Initializes a new instance of the `PdfSectionCollection` class.\n * @private\n */\n function PdfSectionCollection(document) {\n /**\n * @hidden\n * @private\n */\n this.sections = [];\n /**\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n // if (document === null) {\n // throw new Error('ArgumentNullException : document');\n // }\n this.pdfDocument = document.clone();\n this.initialize();\n }\n Object.defineProperty(PdfSectionCollection.prototype, \"section\", {\n //Properties\n /**\n * Gets the `Section` collection.\n */\n get: function () {\n return this.sections;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionCollection.prototype, \"document\", {\n /**\n * Gets a parent `document`.\n * @private\n */\n get: function () {\n return this.pdfDocument;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionCollection.prototype, \"count\", {\n /**\n * Gets the `number of sections` in a document.\n * @private\n */\n get: function () {\n return this.sections.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionCollection.prototype, \"element\", {\n /**\n * Gets the wrapped `element`.\n * @private\n */\n get: function () {\n return this.pages;\n },\n enumerable: true,\n configurable: true\n });\n //Methods\n /**\n * `Initializes the object`.\n * @private\n */\n PdfSectionCollection.prototype.initialize = function () {\n this.sectionCount = new PdfNumber(0);\n this.sectionCollection = new PdfArray();\n this.pages = new PdfDictionary();\n this.pages.beginSave = new SaveSectionCollectionEventHandler(this);\n this.pages.items.setValue(this.dictionaryProperties.type, new PdfName('Pages'));\n this.pages.items.setValue(this.dictionaryProperties.kids, this.sectionCollection);\n this.pages.items.setValue(this.dictionaryProperties.count, this.sectionCount);\n this.pages.items.setValue(this.dictionaryProperties.resources, new PdfDictionary());\n this.setPageSettings(this.pages, this.pdfDocument.pageSettings);\n };\n /**\n * Initializes a new instance of the `PdfSectionCollection` class.\n * @private\n */\n PdfSectionCollection.prototype.pdfSectionCollection = function (index) {\n if (index < 0 || index >= this.count) {\n throw new Error('IndexOutOfRangeException()');\n }\n return this.sections[index];\n };\n /**\n * In fills dictionary by the data from `Page settings`.\n * @private\n */\n PdfSectionCollection.prototype.setPageSettings = function (container, pageSettings) {\n // if (container === null) {\n // throw new Error('ArgumentNullException : container');\n // }\n // if (pageSettings === null) {\n // throw new Error('ArgumentNullException : pageSettings');\n // }\n var bounds = new RectangleF(new PointF(), pageSettings.size);\n container.items.setValue(this.dictionaryProperties.mediaBox, PdfArray.fromRectangle(bounds));\n };\n /**\n * `Adds` the specified section.\n * @private\n */\n PdfSectionCollection.prototype.add = function (section) {\n if (typeof section === 'undefined') {\n var section_1 = new PdfSection(this.pdfDocument);\n this.add(section_1);\n return section_1;\n }\n else {\n // if (section === null) {\n // throw new Error('ArgumentNullException : section');\n // }\n var r = this.checkSection(section);\n this.sections.push(section);\n section.parent = this;\n this.sectionCollection.add(r);\n return this.sections.indexOf(section);\n }\n };\n /**\n * `Checks` if the section is within the collection.\n * @private\n */\n PdfSectionCollection.prototype.checkSection = function (section) {\n var r = new PdfReferenceHolder(section);\n var contains = this.sectionCollection.contains(r);\n // if (contains) {\n // throw new Error('ArgumentException : The object can not be added twice to the collection,section');\n // }\n return r;\n };\n /**\n * Catches the Save event of the dictionary to `count the pages`.\n * @private\n */\n PdfSectionCollection.prototype.countPages = function () {\n var count = 0;\n this.sections.forEach(function (n) { return (count += n.count); });\n return count;\n };\n /**\n * Catches the Save event of the dictionary to `count the pages`.\n * @hidden\n * @private\n */\n PdfSectionCollection.prototype.beginSave = function () {\n this.sectionCount.intValue = this.countPages();\n };\n //Fields\n /**\n * Rotate factor for page `rotation`.\n * @default 90\n * @private\n */\n PdfSectionCollection.rotateFactor = 90;\n return PdfSectionCollection;\n}());\nexport { PdfSectionCollection };\n","import { PdfPage } from './pdf-page';\nimport { Dictionary } from './../collections/dictionary';\n/**\n * Represents a virtual collection of all the pages in the document.\n * @private\n */\nvar PdfDocumentPageCollection = /** @class */ (function () {\n //constructor\n /**\n * Initializes a new instance of the `PdfPageCollection` class.\n * @private\n */\n function PdfDocumentPageCollection(document) {\n /**\n * It holds the page collection with the `index`.\n * @private\n */\n this.pdfPageCollectionIndex = new Dictionary();\n this.document = document;\n }\n Object.defineProperty(PdfDocumentPageCollection.prototype, \"count\", {\n //Property\n /**\n * Gets the total `number of the pages`.\n * @private\n */\n get: function () {\n return this.countPages();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentPageCollection.prototype, \"pageCollectionIndex\", {\n /**\n * Gets a `page index` from the document.\n * @private\n */\n get: function () {\n return this.pdfPageCollectionIndex;\n },\n enumerable: true,\n configurable: true\n });\n PdfDocumentPageCollection.prototype.add = function (page) {\n if (typeof page === 'undefined') {\n var page_1 = new PdfPage();\n this.add(page_1);\n return page_1;\n }\n else {\n var section = this.getLastSection();\n section.add(page);\n }\n };\n /**\n * Returns `last section` in the document.\n * @private\n */\n PdfDocumentPageCollection.prototype.getLastSection = function () {\n var sc = this.document.sections;\n if (sc.section.length === 0) {\n sc.add();\n }\n var section = sc.section[sc.section.length - 1];\n return section;\n };\n /**\n * Called when `new page has been added`.\n * @private\n */\n PdfDocumentPageCollection.prototype.onPageAdded = function (args) {\n // if (PageAdded !== null)\n // {\n // PageAdded(this, args);\n // }\n };\n /**\n * Gets the `total number of pages`.\n * @private\n */\n PdfDocumentPageCollection.prototype.countPages = function () {\n var sc = this.document.sections;\n var count = 0;\n for (var index = 0; index < sc.section.length; index++) {\n count += sc.section[index].count;\n }\n return count;\n };\n /**\n * Gets the `page object` from page index.\n * @private\n */\n PdfDocumentPageCollection.prototype.getPageByIndex = function (index) {\n return this.getPage(index);\n };\n /**\n * Gets a page by its `index` in the document.\n * @private\n */\n PdfDocumentPageCollection.prototype.getPage = function (index) {\n if ((index < 0) || (index >= this.count)) {\n throw Error('ArgumentOutOfRangeException(\"index\", \"Value can not be less 0\")');\n }\n var page = null;\n var sectionStartIndex = 0;\n var sectionCount = 0;\n var pageIndex = 0;\n var length = this.document.sections.count;\n for (var i = 0; i < length; i++) {\n var section = this.document.sections.section[i];\n sectionCount = section.count;\n pageIndex = index - sectionStartIndex;\n // We found a section containing the page.\n if ((index >= sectionStartIndex && pageIndex < sectionCount)) {\n page = section.getPages()[pageIndex];\n break;\n }\n sectionStartIndex += sectionCount;\n }\n return page;\n };\n /**\n * Gets the `index of` the page in the document.\n * @private\n */\n PdfDocumentPageCollection.prototype.indexOf = function (page) {\n var index = -1;\n if (page == null) {\n throw new Error('ArgumentNullException: page');\n }\n else {\n var numPages = 0;\n for (var i = 0, len = this.document.sections.count; i < len; i++) {\n var section = this.document.sections.pdfSectionCollection(i);\n index = section.indexOf(page);\n if (index >= 0) {\n index += numPages;\n break;\n }\n else {\n index = -1;\n }\n numPages += section.count;\n }\n }\n return index;\n };\n /**\n * `Removes` the specified page.\n * @private\n */\n PdfDocumentPageCollection.prototype.remove = function (page) {\n if (page == null) {\n throw Error('ArgumentNullException(\"page\")');\n }\n var section = null;\n var len;\n for (var i = 0, len_1 = this.document.sections.count; i < len_1; i++) {\n section = this.document.sections.pdfSectionCollection(i);\n if (section.pages.contains(page)) {\n section.pages.remove(page);\n break;\n }\n }\n return section;\n };\n return PdfDocumentPageCollection;\n}());\nexport { PdfDocumentPageCollection };\n","/**\n * PdfCacheCollection.ts class for EJ2-PDF\n */\nimport { Dictionary } from './../collections/dictionary';\n/**\n * `Collection of the cached objects`.\n * @private\n */\nvar PdfCacheCollection = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `PdfCacheCollection` class.\n * @private\n */\n function PdfCacheCollection() {\n this.referenceObjects = [];\n this.pdfFontCollection = new Dictionary();\n }\n // Public methods\n /**\n * `Searches` for the similar cached object. If is not found - adds the object to the cache.\n * @private\n */\n PdfCacheCollection.prototype.search = function (obj) {\n var result = null;\n var group = this.getGroup(obj);\n if (group == null) {\n group = this.createNewGroup();\n }\n else if (group.length > 0) {\n result = group[0];\n }\n group.push(obj);\n return result;\n };\n // Implementation\n /**\n * `Creates` a new group.\n * @private\n */\n PdfCacheCollection.prototype.createNewGroup = function () {\n var group = [];\n this.referenceObjects.push(group);\n return group;\n };\n /**\n * `Find and Return` a group.\n * @private\n */\n PdfCacheCollection.prototype.getGroup = function (result) {\n var group = null;\n if (result !== null) {\n var len = this.referenceObjects.length;\n for (var i = 0; i < len; i++) {\n if (this.referenceObjects.length > 0) {\n var tGroup = this.referenceObjects[i];\n if (tGroup.length > 0) {\n var representative = tGroup[0];\n if (result.equalsTo(representative)) {\n group = tGroup;\n break;\n }\n }\n else {\n this.removeGroup(tGroup);\n }\n }\n len = this.referenceObjects.length;\n }\n }\n return group;\n };\n /**\n * Remove a group from the storage.\n */\n PdfCacheCollection.prototype.removeGroup = function (group) {\n if (group !== null) {\n var index = this.referenceObjects.indexOf(group);\n this.referenceObjects.slice(index, index + 1);\n }\n };\n PdfCacheCollection.prototype.destroy = function () {\n this.pdfFontCollection = undefined;\n this.referenceObjects = undefined;\n };\n return PdfCacheCollection;\n}());\nexport { PdfCacheCollection };\n","/**\n * PdfStandardFontMetricsFactory.ts class for EJ2-PDF\n */\nimport { PdfFontStyle, PdfFontFamily } from './enum';\nimport { PdfFontMetrics, StandardWidthTable } from './pdf-font-metrics';\n/**\n * @private\n * `Factory of the standard fonts metrics`.\n */\nvar PdfStandardFontMetricsFactory = /** @class */ (function () {\n function PdfStandardFontMetricsFactory() {\n }\n /**\n * Returns `metrics` of the font.\n * @private\n */\n PdfStandardFontMetricsFactory.getMetrics = function (fontFamily, fontStyle, size) {\n var metrics = null;\n switch (fontFamily) {\n case PdfFontFamily.Helvetica:\n metrics = this.getHelveticaMetrics(fontFamily, fontStyle, size);\n break;\n case PdfFontFamily.Courier:\n metrics = this.getCourierMetrics(fontFamily, fontStyle, size);\n break;\n case PdfFontFamily.TimesRoman:\n metrics = this.getTimesMetrics(fontFamily, fontStyle, size);\n break;\n case PdfFontFamily.Symbol:\n metrics = this.getSymbolMetrics(fontFamily, fontStyle, size);\n break;\n case PdfFontFamily.ZapfDingbats:\n metrics = this.getZapfDingbatsMetrics(fontFamily, fontStyle, size);\n break;\n default:\n metrics = this.getHelveticaMetrics(PdfFontFamily.Helvetica, fontStyle, size);\n break;\n }\n metrics.name = fontFamily.toString();\n metrics.subScriptSizeFactor = this.subSuperScriptFactor;\n metrics.superscriptSizeFactor = this.subSuperScriptFactor;\n return metrics;\n };\n // Implementation\n /**\n * Creates `Helvetica font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getHelveticaMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n if ((fontStyle & PdfFontStyle.Bold) > 0 && (fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.helveticaBoldItalicAscent;\n metrics.descent = this.helveticaBoldItalicDescent;\n metrics.postScriptName = this.helveticaBoldItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.arialBoldWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Bold) > 0) {\n metrics.ascent = this.helveticaBoldAscent;\n metrics.descent = this.helveticaBoldDescent;\n metrics.postScriptName = this.helveticaBoldName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.arialBoldWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.helveticaItalicAscent;\n metrics.descent = this.helveticaItalicDescent;\n metrics.postScriptName = this.helveticaItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.arialWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else {\n metrics.ascent = this.helveticaAscent;\n metrics.descent = this.helveticaDescent;\n metrics.postScriptName = this.helveticaName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.arialWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n return metrics;\n };\n /**\n * Creates `Courier font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getCourierMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n if ((fontStyle & PdfFontStyle.Bold) > 0 && (fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.courierBoldItalicAscent;\n metrics.descent = this.courierBoldItalicDescent;\n metrics.postScriptName = this.courierBoldItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.fixedWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Bold) > 0) {\n metrics.ascent = this.courierBoldAscent;\n metrics.descent = this.courierBoldDescent;\n metrics.postScriptName = this.courierBoldName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.fixedWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.courierItalicAscent;\n metrics.descent = this.courierItalicDescent;\n metrics.postScriptName = this.courierItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.fixedWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else {\n metrics.ascent = this.courierAscent;\n metrics.descent = this.courierDescent;\n metrics.postScriptName = this.courierName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.fixedWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n return metrics;\n };\n /**\n * Creates `Times font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getTimesMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n if ((fontStyle & PdfFontStyle.Bold) > 0 && (fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.timesBoldItalicAscent;\n metrics.descent = this.timesBoldItalicDescent;\n metrics.postScriptName = this.timesBoldItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.timesRomanBoldItalicWidths);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Bold) > 0) {\n metrics.ascent = this.timesBoldAscent;\n metrics.descent = this.timesBoldDescent;\n metrics.postScriptName = this.timesBoldName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.timesRomanBoldWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.timesItalicAscent;\n metrics.descent = this.timesItalicDescent;\n metrics.postScriptName = this.timesItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.timesRomanItalicWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else {\n metrics.ascent = this.timesAscent;\n metrics.descent = this.timesDescent;\n metrics.postScriptName = this.timesName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.timesRomanWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n return metrics;\n };\n /**\n * Creates `Symbol font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getSymbolMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n metrics.ascent = this.symbolAscent;\n metrics.descent = this.symbolDescent;\n metrics.postScriptName = this.symbolName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.symbolWidth);\n metrics.height = metrics.ascent - metrics.descent;\n return metrics;\n };\n /**\n * Creates `ZapfDingbats font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getZapfDingbatsMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n metrics.ascent = this.zapfDingbatsAscent;\n metrics.descent = this.zapfDingbatsDescent;\n metrics.postScriptName = this.zapfDingbatsName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.zapfDingbatsWidth);\n metrics.height = metrics.ascent - metrics.descent;\n return metrics;\n };\n /**\n * `Multiplier` os subscript superscript.\n * @private\n */\n PdfStandardFontMetricsFactory.subSuperScriptFactor = 1.52;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaAscent = 931;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaDescent = -225;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaName = 'Helvetica';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldAscent = 962;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldDescent = -228;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldName = 'Helvetica-Bold';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaItalicAscent = 931;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaItalicDescent = -225;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaItalicName = 'Helvetica-Oblique';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldItalicAscent = 962;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldItalicDescent = -228;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldItalicName = 'Helvetica-BoldOblique';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierAscent = 805;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierDescent = -250;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.courierName = 'Courier';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldAscent = 801;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldDescent = -250;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldName = 'Courier-Bold';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierItalicAscent = 805;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierItalicDescent = -250;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.courierItalicName = 'Courier-Oblique';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldItalicAscent = 801;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldItalicDescent = -250;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldItalicName = 'Courier-BoldOblique';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesAscent = 898;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesDescent = -218;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.timesName = 'Times-Roman';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldAscent = 935;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldDescent = -218;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldName = 'Times-Bold';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesItalicAscent = 883;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesItalicDescent = -217;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.timesItalicName = 'Times-Italic';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldItalicAscent = 921;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldItalicDescent = -218;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldItalicName = 'Times-BoldItalic';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.symbolAscent = 1010;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.symbolDescent = -293;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.symbolName = 'Symbol';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.zapfDingbatsAscent = 820;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.zapfDingbatsDescent = -143;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.zapfDingbatsName = 'ZapfDingbats';\n /**\n * `Arial` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.arialWidth = [\n 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278, 333,\n 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, 584, 584,\n 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500, 667, 556, 833,\n 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 278, 278, 278,\n 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556, 222, 222, 500, 222, 833,\n 556, 556, 556, 556, 333, 500, 278, 556, 500, 722, 500, 500, 500, 334, 260, 334,\n 584, 0, 556, 0, 222, 556, 333, 1000, 556, 556, 333, 1000, 667, 333, 1000, 0,\n 611, 0, 0, 222, 222, 333, 333, 350, 556, 1000, 333, 1000, 500, 333, 944, 0,\n 500, 667, 0, 333, 556, 556, 556, 556, 260, 556, 333, 737, 370, 556, 584, 0,\n 737, 333, 400, 584, 333, 333, 333, 556, 537, 278, 333, 333, 365, 556, 834, 834,\n 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722, 667, 667, 667, 667, 278, 278,\n 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667,\n 667, 611, 556, 556, 556, 556, 556, 556, 889, 500, 556, 556, 556, 556, 278, 278,\n 278, 278, 556, 556, 556, 556, 556, 556, 556, 584, 611, 556, 556, 556, 556, 500,\n 556, 500\n ];\n /**\n * `Arial bold` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.arialBoldWidth = [\n 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278, 333,\n 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333, 584, 584,\n 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556, 722, 611, 833,\n 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 333, 278, 333,\n 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611, 278, 278, 556, 278, 889,\n 611, 611, 611, 611, 389, 556, 333, 611, 556, 778, 556, 556, 500, 389, 280, 389,\n 584, 0, 556, 0, 278, 556, 500, 1000, 556, 556, 333, 1000, 667, 333, 1000, 0,\n 611, 0, 0, 278, 278, 500, 500, 350, 556, 1000, 333, 1000, 556, 333, 944, 0,\n 500, 667, 0, 333, 556, 556, 556, 556, 280, 556, 333, 737, 370, 556, 584, 0,\n 737, 333, 400, 584, 333, 333, 333, 611, 556, 278, 333, 333, 365, 556, 834, 834,\n 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722, 667, 667, 667, 667, 278, 278,\n 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667,\n 667, 611, 556, 556, 556, 556, 556, 556, 889, 556, 556, 556, 556, 556, 278, 278,\n 278, 278, 611, 611, 611, 611, 611, 611, 611, 584, 611, 611, 611, 611, 611, 556,\n 611, 556\n ];\n /**\n * `Fixed` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.fixedWidth = [\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600\n ];\n /**\n * `Times` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.timesRomanWidth = [\n 250, 333, 408, 500, 500, 833, 778, 180, 333, 333, 500, 564, 250, 333,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 278, 278, 564, 564,\n 564, 444, 921, 722, 667, 667, 722, 611, 556, 722, 722, 333, 389, 722, 611, 889,\n 722, 722, 556, 722, 667, 556, 611, 722, 722, 944, 722, 722, 611, 333, 278, 333,\n 469, 500, 333, 444, 500, 444, 500, 444, 333, 500, 500, 278, 278, 500, 278, 778,\n 500, 500, 500, 500, 333, 389, 278, 500, 500, 722, 500, 500, 444, 480, 200, 480,\n 541, 0, 500, 0, 333, 500, 444, 1000, 500, 500, 333, 1000, 556, 333, 889, 0,\n 611, 0, 0, 333, 333, 444, 444, 350, 500, 1000, 333, 980, 389, 333, 722, 0,\n 444, 722, 0, 333, 500, 500, 500, 500, 200, 500, 333, 760, 276, 500, 564, 0,\n 760, 333, 400, 564, 300, 300, 333, 500, 453, 250, 333, 300, 310, 500, 750, 750,\n 750, 444, 722, 722, 722, 722, 722, 722, 889, 667, 611, 611, 611, 611, 333, 333,\n 333, 333, 722, 722, 722, 722, 722, 722, 722, 564, 722, 722, 722, 722, 722, 722,\n 556, 500, 444, 444, 444, 444, 444, 444, 667, 444, 444, 444, 444, 444, 278, 278,\n 278, 278, 500, 500, 500, 500, 500, 500, 500, 564, 500, 500, 500, 500, 500, 500,\n 500, 500\n ];\n /**\n * `Times bold` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.timesRomanBoldWidth = [\n 250, 333, 555, 500, 500, 1000, 833, 278, 333, 333, 500, 570, 250, 333,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, 570, 570,\n 570, 500, 930, 722, 667, 722, 722, 667, 611, 778, 778, 389, 500, 778, 667, 944,\n 722, 778, 611, 778, 722, 556, 667, 722, 722, 1000, 722, 722, 667, 333, 278, 333,\n 581, 500, 333, 500, 556, 444, 556, 444, 333, 500, 556, 278, 333, 556, 278, 833,\n 556, 500, 556, 556, 444, 389, 333, 556, 500, 722, 500, 500, 444, 394, 220, 394,\n 520, 0, 500, 0, 333, 500, 500, 1000, 500, 500, 333, 1000, 556, 333, 1000, 0,\n 667, 0, 0, 333, 333, 500, 500, 350, 500, 1000, 333, 1000, 389, 333, 722, 0,\n 444, 722, 0, 333, 500, 500, 500, 500, 220, 500, 333, 747, 300, 500, 570, 0,\n 747, 333, 400, 570, 300, 300, 333, 556, 540, 250, 333, 300, 330, 500, 750, 750,\n 750, 500, 722, 722, 722, 722, 722, 722, 1000, 722, 667, 667, 667, 667, 389, 389,\n 389, 389, 722, 722, 778, 778, 778, 778, 778, 570, 778, 722, 722, 722, 722, 722,\n 611, 556, 500, 500, 500, 500, 500, 500, 722, 444, 444, 444, 444, 444, 278, 278,\n 278, 278, 500, 556, 500, 500, 500, 500, 500, 570, 500, 556, 556, 556, 556, 500,\n 556, 500\n ];\n /**\n * `Times italic` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.timesRomanItalicWidth = [\n 250, 333, 420, 500, 500, 833, 778, 214, 333, 333, 500, 675, 250, 333,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, 675, 675,\n 675, 500, 920, 611, 611, 667, 722, 611, 611, 722, 722, 333, 444, 667, 556, 833,\n 667, 722, 611, 722, 611, 500, 556, 722, 611, 833, 611, 556, 556, 389, 278, 389,\n 422, 500, 333, 500, 500, 444, 500, 444, 278, 500, 500, 278, 278, 444, 278, 722,\n 500, 500, 500, 500, 389, 389, 278, 500, 444, 667, 444, 444, 389, 400, 275, 400,\n 541, 0, 500, 0, 333, 500, 556, 889, 500, 500, 333, 1000, 500, 333, 944, 0,\n 556, 0, 0, 333, 333, 556, 556, 350, 500, 889, 333, 980, 389, 333, 667, 0,\n 389, 556, 0, 389, 500, 500, 500, 500, 275, 500, 333, 760, 276, 500, 675, 0,\n 760, 333, 400, 675, 300, 300, 333, 500, 523, 250, 333, 300, 310, 500, 750, 750,\n 750, 500, 611, 611, 611, 611, 611, 611, 889, 667, 611, 611, 611, 611, 333, 333,\n 333, 333, 722, 667, 722, 722, 722, 722, 722, 675, 722, 722, 722, 722, 722, 556,\n 611, 500, 500, 500, 500, 500, 500, 500, 667, 444, 444, 444, 444, 444, 278, 278,\n 278, 278, 500, 500, 500, 500, 500, 500, 500, 675, 500, 500, 500, 500, 500, 444,\n 500, 444\n ];\n /**\n * `Times bold italic` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.timesRomanBoldItalicWidths = [\n 250, 389, 555, 500, 500, 833, 778, 278, 333, 333, 500, 570, 250, 333,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, 570, 570,\n 570, 500, 832, 667, 667, 667, 722, 667, 667, 722, 778, 389, 500, 667, 611, 889,\n 722, 722, 611, 722, 667, 556, 611, 722, 667, 889, 667, 611, 611, 333, 278, 333,\n 570, 500, 333, 500, 500, 444, 500, 444, 333, 500, 556, 278, 278, 500, 278, 778,\n 556, 500, 500, 500, 389, 389, 278, 556, 444, 667, 500, 444, 389, 348, 220, 348,\n 570, 0, 500, 0, 333, 500, 500, 1000, 500, 500, 333, 1000, 556, 333, 944, 0,\n 611, 0, 0, 333, 333, 500, 500, 350, 500, 1000, 333, 1000, 389, 333, 722, 0,\n 389, 611, 0, 389, 500, 500, 500, 500, 220, 500, 333, 747, 266, 500, 606, 0,\n 747, 333, 400, 570, 300, 300, 333, 576, 500, 250, 333, 300, 300, 500, 750, 750,\n 750, 500, 667, 667, 667, 667, 667, 667, 944, 667, 667, 667, 667, 667, 389, 389,\n 389, 389, 722, 722, 722, 722, 722, 722, 722, 570, 722, 722, 722, 722, 722, 611,\n 611, 500, 500, 500, 500, 500, 500, 500, 722, 444, 444, 444, 444, 444, 278, 278,\n 278, 278, 500, 556, 500, 500, 500, 500, 500, 570, 500, 556, 556, 556, 556, 444,\n 500, 444\n ];\n /**\n * `Symbol` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.symbolWidth = [\n 250, 333, 713, 500, 549, 833, 778, 439, 333, 333, 500, 549, 250, 549,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 278, 278,\n 549, 549, 549, 444, 549, 722, 667, 722, 612, 611, 763, 603, 722, 333,\n 631, 722, 686, 889, 722, 722, 768, 741, 556, 592, 611, 690, 439, 768,\n 645, 795, 611, 333, 863, 333, 658, 500, 500, 631, 549, 549, 494, 439,\n 521, 411, 603, 329, 603, 549, 549, 576, 521, 549, 549, 521, 549, 603,\n 439, 576, 713, 686, 493, 686, 494, 480, 200, 480, 549, 750, 620, 247,\n 549, 167, 713, 500, 753, 753, 753, 753, 1042, 987, 603, 987, 603, 400,\n 549, 411, 549, 549, 713, 494, 460, 549, 549, 549, 549, 1000, 603, 1000,\n 658, 823, 686, 795, 987, 768, 768, 823, 768, 768, 713, 713, 713, 713,\n 713, 713, 713, 768, 713, 790, 790, 890, 823, 549, 250, 713, 603, 603,\n 1042, 987, 603, 987, 603, 494, 329, 790, 790, 786, 713, 384, 384, 384,\n 384, 384, 384, 494, 494, 494, 494, 329, 274, 686, 686, 686, 384, 384,\n 384, 384, 384, 384, 494, 494, 494, -1\n ];\n /**\n * `Zip dingbats` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.zapfDingbatsWidth = [\n 278, 974, 961, 974, 980, 719, 789, 790, 791, 690, 960, 939, 549, 855,\n 911, 933, 911, 945, 974, 755, 846, 762, 761, 571, 677, 763, 760, 759,\n 754, 494, 552, 537, 577, 692, 786, 788, 788, 790, 793, 794, 816, 823,\n 789, 841, 823, 833, 816, 831, 923, 744, 723, 749, 790, 792, 695, 776,\n 768, 792, 759, 707, 708, 682, 701, 826, 815, 789, 789, 707, 687, 696,\n 689, 786, 787, 713, 791, 785, 791, 873, 761, 762, 762, 759, 759, 892,\n 892, 788, 784, 438, 138, 277, 415, 392, 392, 668, 668, 390, 390, 317,\n 317, 276, 276, 509, 509, 410, 410, 234, 234, 334, 334, 732, 544, 544,\n 910, 667, 760, 760, 776, 595, 694, 626, 788, 788, 788, 788, 788, 788,\n 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788,\n 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788,\n 788, 788, 788, 788, 788, 788, 894, 838, 1016, 458, 748, 924, 748, 918,\n 927, 928, 928, 834, 873, 828, 924, 924, 917, 930, 931, 463, 883, 836,\n 836, 867, 867, 696, 696, 874, 874, 760, 946, 771, 865, 771, 888, 967,\n 888, 831, 873, 927, 970, 918\n ];\n return PdfStandardFontMetricsFactory;\n}());\nexport { PdfStandardFontMetricsFactory };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfFontFamily, PdfFontStyle, FontEncoding } from './enum';\nimport { PdfFont } from './pdf-font';\nimport { PdfDocument } from './../../document/pdf-document';\nimport { PdfStandardFontMetricsFactory } from './pdf-standard-font-metrics-factory';\nimport { PdfDictionary } from './../../primitives/pdf-dictionary';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfName } from './../../primitives/pdf-name';\n/**\n * Represents one of the 14 standard fonts.\n * It's used to create a standard PDF font to draw the text in to the PDF.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * //\n * // create new standard font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * //\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfStandardFont = /** @class */ (function (_super) {\n __extends(PdfStandardFont, _super);\n function PdfStandardFont(fontFamilyPrototype, size, style) {\n var _this = _super.call(this, size, (typeof style === 'undefined') ? ((fontFamilyPrototype instanceof PdfStandardFont) ? fontFamilyPrototype.style : PdfFontStyle.Regular) : style) || this;\n /**\n * Gets `ascent` of the font.\n * @private\n */\n _this.dictionaryProperties = new DictionaryProperties();\n /**\n * Gets `encodings` for internal class use.\n * @hidden\n * @private\n */\n _this.encodings = ['Unknown', 'StandardEncoding', 'MacRomanEncoding', 'MacExpertEncoding',\n 'WinAnsiEncoding', 'PDFDocEncoding', 'IdentityH'];\n if (typeof fontFamilyPrototype === 'undefined') {\n _this.pdfFontFamily = PdfFontFamily.Helvetica;\n }\n else if ((fontFamilyPrototype instanceof PdfStandardFont)) {\n _this.pdfFontFamily = fontFamilyPrototype.fontFamily;\n }\n else {\n _this.pdfFontFamily = fontFamilyPrototype;\n }\n _this.checkStyle();\n _this.initializeInternals();\n return _this;\n }\n Object.defineProperty(PdfStandardFont.prototype, \"fontFamily\", {\n /* tslint:enable */\n //Properties\n /**\n * Gets the `FontFamily`.\n * @private\n */\n get: function () {\n return this.pdfFontFamily;\n },\n enumerable: true,\n configurable: true\n });\n //methods\n /**\n * Checks font `style` of the font.\n * @private\n */\n PdfStandardFont.prototype.checkStyle = function () {\n if (this.fontFamily === PdfFontFamily.Symbol || this.fontFamily === PdfFontFamily.ZapfDingbats) {\n var style = this.style;\n style &= ~(PdfFontStyle.Bold | PdfFontStyle.Italic);\n this.setStyle(style);\n }\n };\n /**\n * Returns `width` of the line.\n * @public\n */\n PdfStandardFont.prototype.getLineWidth = function (line, format) {\n if (line == null) {\n throw new Error('ArgumentNullException:line');\n }\n var width = 0;\n var name = this.name;\n line = PdfStandardFont.convert(line);\n for (var i = 0, len = line.length; i < len; i++) {\n var ch = line[i];\n var charWidth = this.getCharWidthInternal(ch, format);\n width += charWidth;\n }\n var size = this.metrics.getSize(format);\n width *= (PdfFont.charSizeMultiplier * size);\n width = this.applyFormatSettings(line, format, width);\n return width;\n };\n /**\n * Checks whether fonts are `equals`.\n * @private\n */\n PdfStandardFont.prototype.equalsToFont = function (font) {\n var equal = false;\n var stFont = font;\n if (stFont != null) {\n var fontFamilyEqual = (this.fontFamily === stFont.fontFamily);\n var lineReducer = (~(PdfFontStyle.Underline | PdfFontStyle.Strikeout));\n var styleEqual = (this.style & lineReducer) === (stFont.style & lineReducer);\n equal = (fontFamilyEqual && styleEqual);\n }\n return equal;\n };\n /**\n * `Initializes` font internals..\n * @private\n */\n PdfStandardFont.prototype.initializeInternals = function () {\n var equalFont = null;\n // if (PdfDocument.EnableCache) {\n equalFont = PdfDocument.cache.search(this);\n // }\n var internals = null;\n // if (equalFont == null) {\n // Create font metrics.\n var metrics = PdfStandardFontMetricsFactory.getMetrics(this.pdfFontFamily, this.style, this.size);\n this.metrics = metrics;\n internals = this.createInternals();\n this.setInternals(internals);\n };\n /**\n * `Creates` font`s dictionary.\n * @private\n */\n PdfStandardFont.prototype.createInternals = function () {\n var dictionary = new PdfDictionary();\n dictionary.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.font));\n dictionary.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.type1));\n dictionary.items.setValue(this.dictionaryProperties.baseFont, new PdfName(this.metrics.postScriptName));\n if (this.fontFamily !== PdfFontFamily.Symbol && this.fontFamily !== PdfFontFamily.ZapfDingbats) {\n var encoding = this.encodings[FontEncoding.WinAnsiEncoding];\n dictionary.items.setValue(this.dictionaryProperties.encoding, new PdfName(encoding));\n }\n return dictionary;\n };\n /**\n * Returns `width` of the char. This methods doesn`t takes into consideration font`s size.\n * @private\n */\n PdfStandardFont.prototype.getCharWidthInternal = function (charCode, format) {\n var width = 0;\n var code = 0;\n code = charCode.charCodeAt(0);\n if (this.name === '0' || this.name === '1' || this.name === '2' ||\n this.name === '3' || this.name === '4') {\n code = code - PdfStandardFont.charOffset;\n }\n code = (code >= 0 && code !== 128) ? code : 0;\n var metrics = this.metrics;\n var widthTable = metrics.widthTable;\n width = widthTable.items(code);\n return width;\n };\n /**\n * `Converts` the specified text.\n * @private\n */\n PdfStandardFont.convert = function (text) {\n return text;\n };\n //Constants\n /**\n * First character `position`.\n * @private\n */\n PdfStandardFont.charOffset = 32;\n return PdfStandardFont;\n}(PdfFont));\nexport { PdfStandardFont };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfWriter } from './../input-output/pdf-writer';\nimport { PdfMainObjectCollection } from './../input-output/pdf-main-object-collection';\nimport { PdfDocumentBase } from './pdf-document-base';\nimport { PdfCrossTable } from './../input-output/pdf-cross-table';\nimport { PdfCatalog } from './pdf-catalog';\nimport { PdfPageSettings } from './../pages/pdf-page-settings';\nimport { PdfSectionCollection } from './../pages/pdf-section-collection';\nimport { PdfDocumentPageCollection } from './../pages/pdf-document-page-collection';\nimport { PdfCacheCollection } from './../general/pdf-cache-collection';\nimport { PdfColorSpace } from './../graphics/enum';\nimport { PdfDocumentTemplate } from './pdf-document-template';\nimport { PdfFontFamily } from './../graphics/fonts/enum';\nimport { PdfStandardFont } from './../graphics/fonts/pdf-standard-font';\n/**\n * Represents a PDF document and can be used to create a new PDF document from the scratch.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfDocument = /** @class */ (function (_super) {\n __extends(PdfDocument, _super);\n function PdfDocument(isMerging) {\n var _this = _super.call(this) || this;\n /**\n * Default `margin` value.\n * @default 40.0\n * @private\n */\n _this.defaultMargin = 40.0;\n /**\n * Internal variable to store instance of `StreamWriter` classes..\n * @default null\n * @private\n */\n _this.streamWriter = null;\n _this.document = _this;\n var isMerge = false;\n if (typeof isMerging === 'undefined') {\n PdfDocument.cacheCollection = new PdfCacheCollection();\n isMerge = false;\n }\n else {\n isMerge = isMerging;\n }\n var objects = new PdfMainObjectCollection();\n _this.setMainObjectCollection(objects);\n var crossTable = new PdfCrossTable();\n crossTable.isMerging = isMerge;\n crossTable.document = _this;\n _this.setCrossTable(crossTable);\n var catalog = new PdfCatalog();\n _this.setCatalog(catalog);\n objects.add(catalog);\n catalog.position = -1;\n _this.sectionCollection = new PdfSectionCollection(_this);\n _this.documentPageCollection = new PdfDocumentPageCollection(_this);\n catalog.pages = _this.sectionCollection;\n return _this;\n }\n Object.defineProperty(PdfDocument, \"defaultFont\", {\n //Properties\n /**\n * Gets the `default font`. It is used for complex objects when font is not explicitly defined.\n * @private\n */\n get: function () {\n if (this.defaultStandardFont == null) {\n this.defaultStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 8);\n }\n return this.defaultStandardFont;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"sections\", {\n /**\n * Gets the collection of the `sections` in the document.\n * @private\n */\n get: function () {\n return this.sectionCollection;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"pageSettings\", {\n /**\n * Gets the document's page setting.\n * @public\n */\n get: function () {\n if (this.settings == null) {\n this.settings = new PdfPageSettings(this.defaultMargin);\n }\n return this.settings;\n },\n /**\n * Sets the document's page setting.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n *\n * // sets the right margin of the page\n * document.pageSettings.margins.right = 0;\n * // set the page size.\n * document.pageSettings.size = new SizeF(500, 500);\n * // change the page orientation to landscape\n * document.pageSettings.orientation = PdfPageOrientation.Landscape;\n * // apply 90 degree rotation on the page\n * document.pageSettings.rotate = PdfPageRotateAngle.RotateAngle90;\n *\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // set the specified Point\n * let point : PointF = new PointF(page1.getClientSize().width - 200, page1.getClientSize().height - 200);\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, point);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this.settings = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"pages\", {\n /**\n * Represents the collection of pages in the PDF document.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * //\n * // get the collection of pages in the document\n * let pageCollection : PdfDocumentPageCollection = document.pages;\n * //\n * // add pages\n * let page1 : PdfPage = pageCollection.add();\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.documentPageCollection;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument, \"cache\", {\n /**\n * Gets collection of the `cached objects`.\n * @private\n */\n get: function () {\n if (typeof PdfDocument.cacheCollection === 'undefined' || PdfDocument.cacheCollection == null) {\n return new PdfCacheCollection();\n }\n return PdfDocument.cacheCollection;\n },\n /**\n * Sets collection of the `cached objects`.\n * @private\n */\n set: function (value) {\n this.cacheCollection = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument, \"enableCache\", {\n /**\n * Gets the value of enable cache.\n * @private\n */\n get: function () {\n return this.isCacheEnabled;\n },\n /**\n * Sets thie value of enable cache.\n * @private\n */\n set: function (value) {\n this.isCacheEnabled = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"colorSpace\", {\n /* tslint:disable */\n /**\n * Gets or sets the `color space` of the document. This property can be used to create PDF document in RGB, Gray scale or CMYK color spaces.\n * @private\n */\n get: function () {\n if ((this.pdfColorSpace === PdfColorSpace.Rgb) || ((this.pdfColorSpace === PdfColorSpace.Cmyk)\n || (this.pdfColorSpace === PdfColorSpace.GrayScale))) {\n return this.pdfColorSpace;\n }\n else {\n return PdfColorSpace.Rgb;\n }\n },\n set: function (value) {\n if ((value === PdfColorSpace.Rgb) || ((value === PdfColorSpace.Cmyk) ||\n (value === PdfColorSpace.GrayScale))) {\n this.pdfColorSpace = value;\n }\n else {\n this.pdfColorSpace = PdfColorSpace.Rgb;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"template\", {\n /* tslint:enable */\n /**\n * Gets or sets a `template` to all pages in the document.\n * @private\n */\n get: function () {\n if (this.pageTemplate == null) {\n this.pageTemplate = new PdfDocumentTemplate();\n }\n return this.pageTemplate;\n },\n set: function (value) {\n this.pageTemplate = value;\n },\n enumerable: true,\n configurable: true\n });\n PdfDocument.prototype.docSave = function (stream, arg2, arg3) {\n this.checkPagesPresence();\n if (stream === null) {\n throw new Error('ArgumentNullException : stream');\n }\n this.streamWriter = stream;\n var writer = new PdfWriter(stream);\n writer.document = this;\n if (typeof arg2 === 'boolean' && typeof arg3 === 'undefined') {\n return this.crossTable.save(writer);\n }\n else {\n this.crossTable.save(writer, arg2);\n }\n };\n /**\n * Checks the pages `presence`.\n * @private\n */\n PdfDocument.prototype.checkPagesPresence = function () {\n if (this.pages.count === 0) {\n this.pages.add();\n }\n };\n /**\n * disposes the current instance of `PdfDocument` class.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n PdfDocument.prototype.destroy = function () {\n this.catalog = undefined;\n this.colorSpace = undefined;\n this.currentSavingObj = undefined;\n this.documentPageCollection = undefined;\n this.isStreamCopied = undefined;\n this.pageSettings = undefined;\n this.pageTemplate = undefined;\n this.pdfColorSpace = undefined;\n this.sectionCollection = undefined;\n PdfDocument.cache.destroy();\n this.crossTable.pdfObjects.destroy();\n PdfDocument.cache = undefined;\n this.streamWriter.destroy();\n };\n /**\n * `Font` used in complex objects to draw strings and text when it is not defined explicitly.\n * @default null\n * @private\n */\n PdfDocument.defaultStandardFont = null;\n /**\n * Indicates whether enable cache or not\n * @default true\n * @private\n */\n PdfDocument.isCacheEnabled = true;\n return PdfDocument;\n}(PdfDocumentBase));\nexport { PdfDocument };\n","import { createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { PdfPageOrientation, PdfDocument, PdfBitmap } from '@syncfusion/ej2-pdf-export';\n/**\n * Represent the Pdf export for gauge\n *\n * @hidden\n */\nvar PdfExport = /** @class */ (function () {\n /**\n * Constructor for gauge\n *\n * @param {CircularGauge} control - Specfies the instance of the gauge.\n */\n // eslint-disable-next-line\n function PdfExport(control) {\n }\n /**\n * To export the file as image/svg format\n *\n * @param {CircularGauge} gauge - Specifies the instance of Circular Gauge.\n * @param {ExportType} type - Specifies the type of the document.\n * @param {string} fileName Specfies the file name of the document.\n * @param {PdfPageOrientation} orientation - Specfies the orientation of the PDF document to export the gauge.\n * @param {boolean} allowDownload - Specfies whether to download the document or not.\n * @returns {Promise} - Returns the promise string\n * @private\n */\n PdfExport.prototype.export = function (gauge, type, fileName, orientation, allowDownload) {\n // eslint-disable-next-line\n var promise = new Promise(function (resolve, reject) {\n var element = createElement('canvas', {\n id: 'ej2-canvas',\n attrs: {\n 'width': gauge.availableSize.width.toString(),\n 'height': gauge.availableSize.height.toString()\n }\n });\n orientation = isNullOrUndefined(orientation) ? PdfPageOrientation.Landscape : orientation;\n var exportElement = gauge.svgObject.cloneNode(true);\n var backgroundElement = exportElement.childNodes[0];\n var backgroundColor = backgroundElement.getAttribute('fill');\n if ((gauge.theme === 'Tailwind' || gauge.theme === 'Bootstrap5' || gauge.theme === 'Fluent' || gauge.theme === 'Material3' || gauge.theme === 'Fluent2')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(255,255,255, 1)');\n }\n else if ((gauge.theme === 'TailwindDark' || gauge.theme === 'Bootstrap5Dark' || gauge.theme === 'FluentDark' || gauge.theme === 'Material3Dark' ||\n gauge.theme === 'Fluent2Dark' || gauge.theme === 'Fluent2HighContrast')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(0, 0, 0, 1)');\n }\n var url = window.URL.createObjectURL(new Blob([(new XMLSerializer()).serializeToString(exportElement)], { type: 'image/svg+xml' }));\n var image = new Image();\n var context = element.getContext('2d');\n image.onload = (function () {\n context.drawImage(image, 0, 0);\n window.URL.revokeObjectURL(url);\n var document = new PdfDocument();\n var imageString = element.toDataURL('image/jpeg').replace('image/jpeg', 'image/octet-stream');\n document.pageSettings.orientation = orientation;\n imageString = imageString.slice(imageString.indexOf(',') + 1);\n document.pages.add().graphics.\n drawImage(new PdfBitmap(imageString), 0, 0, gauge.availableSize.width, gauge.availableSize.height);\n if (allowDownload) {\n document.save(fileName + '.pdf');\n document.destroy();\n }\n else {\n resolve(null);\n }\n });\n image.src = url;\n });\n return promise;\n };\n PdfExport.prototype.getModuleName = function () {\n // Returns te module name\n return 'PdfExport';\n };\n /**\n * To destroy the PdfExport.\n *\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n PdfExport.prototype.destroy = function () { };\n return PdfExport;\n}());\nexport { PdfExport };\n","import { createElement, Browser } from '@syncfusion/ej2-base';\n/**\n * Represent the Image Export for gauge\n *\n * @hidden\n */\nvar ImageExport = /** @class */ (function () {\n /**\n * Constructor for gauge\n *\n * @param {CircularGauge} control - Specfies the instance of the gauge\n */\n // eslint-disable-next-line\n function ImageExport(control) {\n }\n /**\n * To export the file as image/svg format\n *\n * @param {CircularGauge} gauge - Specifies the instance of Circular Gauge.\n * @param {ExportType} type - Specifies the type of the image file.\n * @param {string} fileName - Specifies the file name of the image file.\n * @param {boolean} allowDownload - Specifies whether to download the image file or not.\n * @returns {Promise} - Returns promise string.\n * @private\n */\n ImageExport.prototype.export = function (gauge, type, fileName, allowDownload) {\n var _this = this;\n // eslint-disable-next-line\n var promise = new Promise(function (resolve, reject) {\n var isDownload = !(Browser.userAgent.toString().indexOf('HeadlessChrome') > -1);\n var element = createElement('canvas', {\n id: 'ej2-canvas',\n attrs: {\n 'width': gauge.availableSize.width.toString(),\n 'height': gauge.availableSize.height.toString()\n }\n });\n var exportElement = gauge.svgObject.cloneNode(true);\n var backgroundElement = exportElement.childNodes[0];\n var backgroundColor = backgroundElement.getAttribute('fill');\n if ((gauge.theme === 'Tailwind' || gauge.theme === 'Bootstrap5' || gauge.theme === 'Fluent' || gauge.theme === 'Material3' || gauge.theme === 'Fluent2')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(255,255,255, 1)');\n }\n else if ((gauge.theme === 'TailwindDark' || gauge.theme === 'Bootstrap5Dark' || gauge.theme === 'FluentDark' || gauge.theme === 'Material3Dark' ||\n gauge.theme === 'Fluent2Dark' || gauge.theme === 'Fluent2HighContrast')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n exportElement.childNodes[0].setAttribute('fill', 'rgba(0, 0, 0, 1)');\n }\n var svgData = '' +\n exportElement.outerHTML +\n '';\n var url = window.URL.createObjectURL(new Blob(type === 'SVG' ? [svgData] :\n [(new XMLSerializer()).serializeToString(exportElement)], { type: 'image/svg+xml' }));\n if (type === 'SVG') {\n if (allowDownload) {\n _this.triggerDownload(fileName, type, url, isDownload);\n }\n else {\n resolve(null);\n }\n }\n else {\n var image_1 = new Image();\n var context_1 = element.getContext('2d');\n image_1.onload = (function () {\n context_1.drawImage(image_1, 0, 0);\n window.URL.revokeObjectURL(url);\n if (allowDownload) {\n _this.triggerDownload(fileName, type, element.toDataURL('image/png').replace('image/png', 'image/octet-stream'), isDownload);\n }\n else {\n if (type === 'JPEG') {\n resolve(element.toDataURL('image/jpeg'));\n }\n else if (type === 'PNG') {\n resolve(element.toDataURL('image/png'));\n }\n }\n });\n image_1.src = url;\n }\n });\n return promise;\n };\n ImageExport.prototype.getModuleName = function () {\n // Returns te module name\n return 'ImageExport';\n };\n /**\n * To destroy the ImageExport.\n *\n * @returns {void}\n * @private\n */\n /* eslint-disable-next-line @typescript-eslint/no-empty-function */\n ImageExport.prototype.destroy = function () { };\n /**\n * To trigger the download element\n *\n * @param {string} fileName - Specifies the file name.\n * @param {ExportType} type - Specifies the export type.\n * @param {string} url - Specifies the url.\n * @param {boolean} isDownload - Specifies the boolean value.\n * @returns {void}\n */\n ImageExport.prototype.triggerDownload = function (fileName, type, url, isDownload) {\n createElement('a', {\n attrs: {\n 'download': fileName + '.' + type.toLocaleLowerCase(),\n 'href': url\n }\n }).dispatchEvent(new MouseEvent(isDownload ? 'click' : 'move', {\n view: window,\n bubbles: false,\n cancelable: true\n }));\n };\n return ImageExport;\n}());\nexport { ImageExport };\n","import { print as printFunction, createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { getElement } from '../utils/helper-common';\nimport { beforePrint } from './constants';\n/**\n * Represent the print for gauge\n *\n * @hidden\n */\nvar Print = /** @class */ (function () {\n /**\n * Constructor for gauge\n *\n * @param {CircularGauge} control - Specifies the instance of the gauge.\n */\n // eslint-disable-next-line\n function Print(control) {\n }\n /**\n * To print the gauge\n *\n * @param {CircularGauge} gauge - Specifies the instance of Circular Gauge.\n * @param {string[] | string | Element} elements - Specifies the element.\n * @returns {void}\n * @private\n */\n Print.prototype.print = function (gauge, elements) {\n var printWindow = window.open('', 'print', 'height=' + window.outerHeight + ',width=' + window.outerWidth + ',tabbar=no');\n printWindow.moveTo(0, 0);\n printWindow.resizeTo(screen.availWidth, screen.availHeight);\n var argsData = {\n cancel: false, htmlContent: this.getHTMLContent(gauge, elements), name: beforePrint\n };\n // eslint-disable-next-line\n gauge.trigger('beforePrint', argsData, function (beforePrintArgs) {\n if (!argsData.cancel) {\n printFunction(argsData.htmlContent, printWindow);\n }\n });\n };\n /**\n * To get the html string of the gauge\n *\n * @param {CircularGauge} gauge - Specifies the instance of Circular Gauge.\n * @param { string[] | string | Element} elements - Specifies the element.\n * @returns {Element} - Returns the div element.\n * @private\n */\n Print.prototype.getHTMLContent = function (gauge, elements) {\n var div = createElement('div');\n if (elements) {\n if (elements instanceof Array) {\n elements.forEach(function (value) {\n div.appendChild(getElement(value).cloneNode(true));\n });\n }\n else if (elements instanceof Element) {\n div.appendChild(elements.cloneNode(true));\n }\n else {\n div.appendChild(getElement(elements).cloneNode(true));\n }\n }\n else {\n var exportElement = gauge.element.cloneNode(true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var backgroundElement = exportElement.getElementsByTagName('svg')[0];\n if (!isNullOrUndefined(backgroundElement)) {\n backgroundElement = backgroundElement.childNodes[0];\n if (!isNullOrUndefined(backgroundElement)) {\n var backgroundColor = backgroundElement.getAttribute('fill');\n if ((gauge.theme === 'Tailwind' || gauge.theme === 'Bootstrap5' || gauge.theme === 'Fluent' || gauge.theme === 'Material3' || gauge.theme === 'Fluent2')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n backgroundElement.setAttribute('fill', 'rgba(255,255,255, 1)');\n }\n else if ((gauge.theme === 'TailwindDark' || gauge.theme === 'Bootstrap5Dark' || gauge.theme === 'FluentDark' || gauge.theme === 'Material3Dark' ||\n gauge.theme === 'Fluent2Dark' || gauge.theme === 'Fluent2HighContrast')\n && (backgroundColor === 'rgba(255,255,255, 0.0)' || backgroundColor === 'transparent')) {\n backgroundElement.setAttribute('fill', 'rgba(0, 0, 0, 1)');\n }\n }\n }\n div.appendChild(exportElement);\n }\n return div;\n };\n Print.prototype.getModuleName = function () {\n // Returns te module name\n return 'Print';\n };\n /**\n * To destroy the Print.\n *\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n Print.prototype.destroy = function () { };\n return Print;\n}());\nexport { Print };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty, Complex, Collection, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '@syncfusion/ej2-svg-base';\n/**\n * Specifies the color information for the gradient in the circular gauge.\n */\nvar ColorStop = /** @class */ (function (_super) {\n __extends(ColorStop, _super);\n function ColorStop() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('#000000')\n ], ColorStop.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], ColorStop.prototype, \"opacity\", void 0);\n __decorate([\n Property('0%')\n ], ColorStop.prototype, \"offset\", void 0);\n __decorate([\n Property('')\n ], ColorStop.prototype, \"style\", void 0);\n return ColorStop;\n}(ChildProperty));\nexport { ColorStop };\n/**\n * Specifies the position in percentage from which the radial gradient must be applied.\n */\nvar GradientPosition = /** @class */ (function (_super) {\n __extends(GradientPosition, _super);\n function GradientPosition() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('0%')\n ], GradientPosition.prototype, \"x\", void 0);\n __decorate([\n Property('0%')\n ], GradientPosition.prototype, \"y\", void 0);\n return GradientPosition;\n}(ChildProperty));\nexport { GradientPosition };\n/**\n * This specifies the properties of the linear gradient colors for the circular gauge.\n */\nvar LinearGradient = /** @class */ (function (_super) {\n __extends(LinearGradient, _super);\n function LinearGradient() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], LinearGradient.prototype, \"startValue\", void 0);\n __decorate([\n Property(null)\n ], LinearGradient.prototype, \"endValue\", void 0);\n __decorate([\n Collection([{ color: '#000000', opacity: 1, offset: '0%', style: '' }], ColorStop)\n ], LinearGradient.prototype, \"colorStop\", void 0);\n return LinearGradient;\n}(ChildProperty));\nexport { LinearGradient };\n/**\n * This specifies the properties of the radial gradient colors for the circular gauge.\n */\nvar RadialGradient = /** @class */ (function (_super) {\n __extends(RadialGradient, _super);\n function RadialGradient() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('0%')\n ], RadialGradient.prototype, \"radius\", void 0);\n __decorate([\n Complex({ x: '0%', y: '0%' }, GradientPosition)\n ], RadialGradient.prototype, \"outerPosition\", void 0);\n __decorate([\n Complex({ x: '0%', y: '0%' }, GradientPosition)\n ], RadialGradient.prototype, \"innerPosition\", void 0);\n __decorate([\n Collection([{ color: '#000000', opacity: 1, offset: '0%', style: '' }], ColorStop)\n ], RadialGradient.prototype, \"colorStop\", void 0);\n return RadialGradient;\n}(ChildProperty));\nexport { RadialGradient };\n/**\n * Sets and gets the module that enables the gradient option for pointers and ranges.\n *\n * @hidden\n */\nvar Gradient = /** @class */ (function () {\n /**\n * Constructor for gauge\n *\n * @param {CircularGauge} gauge - Specifies the instance of the gauge\n */\n function Gradient(gauge) {\n this.gauge = gauge;\n }\n /**\n * To get linear gradient string for pointers and ranges\n *\n * @param { PointerModel | CapModel | NeedleTailModel | RangeModel} element - Specifies the element.\n * @param {name} name - Specifies the name of the gradient.\n * @param {name} direction - Specifies the gradient position.\n * @returns {string} - Returns the string value.\n * @private\n */\n Gradient.prototype.calculateLinearGradientPosition = function (element, name, direction) {\n var linearPosition = {\n id: name,\n x1: (isNullOrUndefined(element.linearGradient.startValue) && name.indexOf('range') !== -1\n ? (direction === 'right' ? '100%' : '0%')\n : (!isNullOrUndefined(element.linearGradient.startValue) ? ((element.linearGradient.startValue.indexOf('%') === -1 ?\n element.linearGradient.startValue :\n parseFloat(element.linearGradient.startValue).toString()) + '%') : '0%')),\n x2: (isNullOrUndefined(element.linearGradient.endValue) && name.indexOf('range') !== -1 ?\n (direction === 'left' ? '100%' : '0%') :\n (!isNullOrUndefined(element.linearGradient.endValue) ? ((element.linearGradient.endValue.indexOf('%') === -1 ?\n element.linearGradient.endValue : parseFloat(element.linearGradient.endValue).toString()) + '%') : '100%')),\n y1: (isNullOrUndefined(element.linearGradient.startValue) && name.indexOf('range') !== -1\n ? (direction === 'bottom' ? '100%' : '0%') : '0%'),\n y2: (isNullOrUndefined(element.linearGradient.endValue) && name.indexOf('range') !== -1\n ? (direction === 'top' ? '100%' : '0%') : '0%')\n };\n return linearPosition;\n };\n /**\n * To get linear gradient string for pointers and ranges\n *\n * @param { PointerModel | CapModel | NeedleTailModel | RangeModel} element - Specifies the element.\n * @param {number} index - Specifies the index of the axis.\n * @param { string } direction - Specifies the gradient position.\n * @param { number } rangeIndex - Specifies the index of the range.\n * @returns {string} - Returns the string value.\n * @private\n */\n Gradient.prototype.getLinearGradientColor = function (element, index, direction, rangeIndex) {\n var render = new SvgRenderer('');\n var colors = (isNullOrUndefined(element.linearGradient.startValue) &&\n isNullOrUndefined(element.linearGradient.endValue) && !isNullOrUndefined(rangeIndex)) ?\n this.getCircularGradientColor(element.linearGradient.colorStop, index) :\n this.getGradientColor(element.linearGradient.colorStop);\n var name = (isNullOrUndefined(element.linearGradient.startValue) &&\n isNullOrUndefined(element.linearGradient.endValue) && !isNullOrUndefined(rangeIndex)) ?\n '_' + this.gauge.svgObject.id + '_range_' +\n rangeIndex + '_color_' + index + '_' + 'linearGradient'\n : '_' + this.gauge.svgObject.id + '_' + this.gauge.gradientCount + '_' + 'linearGradient';\n var gradientPosition = this.calculateLinearGradientPosition(element, name, direction);\n gradientPosition = {\n id: gradientPosition.id,\n x1: gradientPosition.x1,\n x2: gradientPosition.x2,\n y1: gradientPosition.y1,\n y2: gradientPosition.y2\n };\n var def = render.drawGradient('linearGradient', gradientPosition, colors);\n this.gauge.svgObject.appendChild(def);\n return 'url(#' + name + ')';\n };\n /**\n * To get color, opacity, offset and style for circular gradient path.\n *\n * @param {ColorStopModel[]} colorStop - Specifies the colorStop.\n * @param {number} index - Specifies the index.\n * @returns {GradientColor[]} - return the gradient color value.\n * @private\n */\n Gradient.prototype.getCircularGradientColor = function (colorStop, index) {\n var colors = [];\n var colorIndex = index;\n for (var j = colorIndex; j < (index === (colorStop.length - 1) ? index + 1 : index + 2); j++) {\n var color = {\n color: colorStop[j].color,\n colorStop: colorStop[j].offset,\n opacity: colorStop[j].opacity ? colorStop[j].opacity.toString() : '1',\n style: colorStop[j].style\n };\n colors.push(color);\n colorIndex++;\n }\n return colors;\n };\n /**\n * To get the radial gradient string.\n *\n * @param {PointerModel | CapModel | NeedleTailModel | RangeModel} element - Specifies the element.\n * @returns {string} - Returns the string.\n * @private\n */\n Gradient.prototype.getRadialGradientColor = function (element) {\n var render = new SvgRenderer('');\n var colors = this.getGradientColor(element.radialGradient.colorStop);\n var name = '_' + this.gauge.svgObject.id + '_' + this.gauge.gradientCount + '_' + 'radialGradient';\n var gradientPosition = {\n id: name,\n r: !isNullOrUndefined(element.radialGradient.radius) ?\n (element.radialGradient.radius.indexOf('%') === -1 ?\n element.radialGradient.radius :\n parseFloat(element.radialGradient.radius).toString()) + '%' : '0%',\n cx: (!isNullOrUndefined(element.radialGradient.outerPosition) && !isNullOrUndefined(element.radialGradient.outerPosition.x)) ?\n (element.radialGradient.outerPosition.x.indexOf('%') === -1 ?\n element.radialGradient.outerPosition.x :\n parseFloat(element.radialGradient.outerPosition.x).toString()) + '%' : '0%',\n cy: (!isNullOrUndefined(element.radialGradient.outerPosition) && !isNullOrUndefined(element.radialGradient.outerPosition.y)) ?\n (element.radialGradient.outerPosition.y.indexOf('%') === -1 ?\n element.radialGradient.outerPosition.y :\n parseFloat(element.radialGradient.outerPosition.y).toString()) + '%' : '0%',\n fx: (!isNullOrUndefined(element.radialGradient.innerPosition) && !isNullOrUndefined(element.radialGradient.innerPosition.x)) ?\n (element.radialGradient.innerPosition.x.indexOf('%') === -1 ?\n element.radialGradient.innerPosition.x :\n parseFloat(element.radialGradient.innerPosition.x).toString()) + '%' : '0%',\n fy: (!isNullOrUndefined(element.radialGradient.innerPosition) && !isNullOrUndefined(element.radialGradient.innerPosition.y)) ?\n (element.radialGradient.innerPosition.y.indexOf('%') === -1 ?\n element.radialGradient.innerPosition.y :\n parseFloat(element.radialGradient.innerPosition.y).toString()) + '%' : '0%'\n };\n var def = render.drawGradient('radialGradient', gradientPosition, colors);\n this.gauge.svgObject.appendChild(def);\n return 'url(#' + name + ')';\n };\n /**\n * To get color, opacity, offset and style.\n *\n * @param { ColorStopModel[]} colorStop - Specifies the color stop.\n * @returns {GradientColor[]} - Returns the gradientColor.\n * @private\n */\n Gradient.prototype.getGradientColor = function (colorStop) {\n var colors = [];\n for (var j = 0; j < colorStop.length; j++) {\n var color = {\n color: colorStop[j].color,\n colorStop: colorStop[j].offset,\n opacity: colorStop[j].opacity ? colorStop[j].opacity.toString() : '1',\n style: colorStop[j].style\n };\n colors.push(color);\n }\n return colors;\n };\n /**\n * To get a gradient color string\n *\n * @param {PointerModel | CapModel | NeedleTailModel | RangeModel} element - Specifies the element.\n * @param {number} index - specifies the index.\n * @param {string} direction - specifies the direction.\n * @param {number} rangeIndex - specifies the index of range.\n * @returns {string} - Returns the string\n * @private\n */\n Gradient.prototype.getGradientColorString = function (element, index, direction, rangeIndex) {\n var gradientColor;\n if ((element.linearGradient && !isNullOrUndefined(element.linearGradient.colorStop)) ||\n (element.radialGradient && !isNullOrUndefined(element.radialGradient.colorStop))) {\n if (element.linearGradient) {\n gradientColor = this.getLinearGradientColor(element, index, direction, rangeIndex);\n }\n else {\n gradientColor = this.getRadialGradientColor(element);\n }\n this.gauge.gradientCount = this.gauge.gradientCount + 1;\n }\n else {\n return null;\n }\n return gradientColor;\n };\n Gradient.prototype.getModuleName = function () {\n // Returns te module name\n return 'Gradient';\n };\n /**\n * To destroy the Gradient.\n *\n * @returns {void}\n * @private\n */\n Gradient.prototype.destroy = function () {\n this.gauge = null;\n };\n return Gradient;\n}());\nexport { Gradient };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/* eslint-disable max-len */\n/**\n * Circular Gauge\n */\nimport { Property, NotifyPropertyChanges, Component, animationMode } from '@syncfusion/ej2-base';\nimport { Complex, Browser, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, Collection, Internationalization } from '@syncfusion/ej2-base';\nimport { remove, createElement } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '@syncfusion/ej2-svg-base';\nimport { removeElement, getElement, stringToNumber, measureText, toPixel, textElement, getAngleFromValue, getAngleFromLocation, getPathArc, getPointer, RectOption, Size, GaugeLocation, Rect, TextOption } from './utils/helper-common';\nimport { setStyles, getValueFromAngle, getRange } from './utils/helper-circular-gauge';\nimport { Border, Margin, Font, TooltipSettings, LegendSettings } from './model/base';\nimport { Axis } from './axes/axis';\nimport { Annotations } from './annotations/annotations';\nimport { GaugeTooltip } from './user-interaction/tooltip';\nimport { load, loaded, gaugeMouseMove, gaugeMouseLeave, gaugeMouseDown, pointerMove } from './model/constants';\nimport { rangeMove, pointerStart, rangeStart, pointerEnd, rangeEnd } from './model/constants';\nimport { gaugeMouseUp, dragEnd, dragMove, dragStart, resized } from './model/constants';\nimport { AxisLayoutPanel } from './axes/axis-panel';\nimport { getThemeStyle } from './model/theme';\nimport { textTrim, titleTooltip } from './utils/helper-legend';\nimport { Legend } from './legend/legend';\nimport { PdfExport } from './model/pdf-export';\nimport { ImageExport } from './model/image-export';\nimport { Print } from './model/print';\nimport { Gradient } from './axes/gradient';\n/**\n * Represents the circular gauge control. This is used to customize the properties of the circular gauge to visualize the data in circular scale.\n * ```html\n *
\n * \n * ```\n */\nvar CircularGauge = /** @class */ (function (_super) {\n __extends(CircularGauge, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {CircularGaugeModel} options - Specifies the options\n * @param {string} element - Specifies the element\n * @hidden\n */\n function CircularGauge(options, element) {\n var _this = _super.call(this, options, element) || this;\n /** @private */\n _this.allowLoadingAnimation = false;\n /** @private */\n _this.isRangeUpdate = false;\n /** @private */\n _this.isAnimationProgress = true;\n /** @private */\n _this.isResize = false;\n /** @private */\n _this.isOverAllAnimationComplete = false;\n /** @private */\n _this.isDrag = false;\n /**\n * @private\n */\n _this.gradientCount = 0;\n CircularGauge_1.Inject(Gradient);\n if (element) {\n _this.appendTo(element);\n }\n return _this;\n }\n CircularGauge_1 = CircularGauge;\n /**\n * To create svg object, renderer and binding events for the container.\n *\n * @returns {void}\n */\n CircularGauge.prototype.preRender = function () {\n if (!isNullOrUndefined(this.element)) {\n this.unWireEvents();\n this.trigger(load, { gauge: this });\n this.initPrivateVariable();\n this.setCulture();\n this.createSvg();\n this.wireEvents();\n }\n };\n /**\n * To render the circular gauge elements\n *\n * @returns {void}\n */\n CircularGauge.prototype.render = function () {\n if (!isNullOrUndefined(this.element)) {\n this.setTheme();\n this.calculateBounds();\n this.isPropertyChange = false;\n this.allowLoadingAnimation = ((this.animationDuration === 0 && animationMode === 'Enable') || this.animationDuration > 0)\n && !this.isOverAllAnimationComplete;\n this.renderElements(true);\n this.renderAnimation();\n this.renderComplete();\n }\n };\n CircularGauge.prototype.setTheme = function () {\n this.themeStyle = getThemeStyle(this.theme);\n };\n /**\n * Method to unbind events for circular gauge\n *\n * @returns {void}\n */\n CircularGauge.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.gaugeOnMouseDown);\n EventHandler.remove(this.element, Browser.touchMoveEvent, this.mouseMove);\n EventHandler.remove(this.element, Browser.touchEndEvent, this.mouseEnd);\n EventHandler.remove(this.element, 'click', this.gaugeOnMouseClick);\n EventHandler.remove(this.element, 'contextmenu', this.gaugeRightClick);\n EventHandler.remove(this.element, (Browser.isPointer ? 'pointerleave' : 'mouseleave'), this.mouseLeave);\n window.removeEventListener((Browser.isTouch && ('orientation' in window && 'onorientationchange' in window)) ? 'orientationchange' : 'resize', this.resizeEvent);\n };\n /**\n * Method to bind events for circular gauge\n *\n * @returns {void}\n */\n CircularGauge.prototype.wireEvents = function () {\n /*! Bind the Event handler */\n EventHandler.add(this.element, Browser.touchStartEvent, this.gaugeOnMouseDown, this);\n EventHandler.add(this.element, Browser.touchMoveEvent, this.mouseMove, this);\n EventHandler.add(this.element, Browser.touchEndEvent, this.mouseEnd, this);\n EventHandler.add(this.element, 'click', this.gaugeOnMouseClick, this);\n EventHandler.add(this.element, 'contextmenu', this.gaugeRightClick, this);\n EventHandler.add(this.element, (Browser.isPointer ? 'pointerleave' : 'mouseleave'), this.mouseLeave, this);\n this.resizeEvent = this.gaugeResize.bind(this);\n window.addEventListener((Browser.isTouch && ('orientation' in window && 'onorientationchange' in window)) ? 'orientationchange' : 'resize', this.resizeEvent);\n /*! Apply the style for circular gauge */\n this.setGaugeStyle(this.element);\n };\n /**\n * Handles the mouse click on accumulation chart.\n *\n * @param {PointerEvent} e - Specifies the pointer event\n * @returns {boolean} - Returns the boolean value\n * @private\n */\n CircularGauge.prototype.gaugeOnMouseClick = function (e) {\n this.setMouseXY(e);\n if (this.legendModule && this.legendSettings.visible) {\n this.legendModule.click(e);\n }\n return false;\n };\n /**\n * Handles the mouse move.\n *\n * @param {PointerEvent} e - Specifies the pointer event\n * @returns {boolean} - Returns the boolean value\n * @private\n */\n CircularGauge.prototype.mouseMove = function (e) {\n var _this = this;\n this.setMouseXY(e);\n var args = this.getMouseArgs(e, 'touchmove', gaugeMouseMove);\n this.trigger('gaugeMouseMove', args, function (observedArgs) {\n var dragArgs;\n if (!args.cancel) {\n if ((_this.enablePointerDrag || _this.enableRangeDrag) && _this.svgObject.getAttribute('cursor') !== 'grabbing') {\n if ((args.target.id.indexOf('_Pointer_') !== -1 && _this.enablePointerDrag) || (_this.enableRangeDrag && args.target.id.indexOf('_Range_') !== -1)) {\n _this.svgObject.setAttribute('cursor', 'pointer');\n }\n else {\n _this.svgObject.setAttribute('cursor', 'auto');\n }\n }\n var svgElement = getElement(_this.element.id + '_svg');\n var extraWidth = _this.element.getBoundingClientRect().left - svgElement.getBoundingClientRect().left;\n if (_this.enablePointerDrag && _this.activePointer) {\n _this.isDrag = true;\n e.preventDefault();\n var dragPointInd = parseInt(_this.activePointer.pathElement[0].id.slice(-1), 10);\n var dragAxisInd = parseInt(_this.activePointer.pathElement[0].id.split('_Axis_')[1], 10);\n dragArgs = {\n axis: _this.activeAxis,\n pointer: _this.activePointer,\n previousValue: _this.activePointer.currentValue,\n name: dragMove,\n type: pointerMove,\n currentValue: null,\n axisIndex: dragAxisInd,\n pointerIndex: dragPointInd\n };\n _this.pointerDrag(new GaugeLocation(args.x + extraWidth, args.y), dragAxisInd, dragPointInd);\n dragArgs.currentValue = _this.activePointer.currentValue;\n _this.trigger(dragMove, dragArgs);\n _this.activeRange = null;\n }\n else if (_this.enableRangeDrag && _this.activeRange) {\n _this.isDrag = true;\n e.preventDefault();\n var dragAxisInd = parseInt(_this.activeRange.pathElement[0].id.split('_Axis_')[1], 10);\n var dragRangeInd = parseInt(_this.activeRange.pathElement[0].id.split('Range_')[1], 10);\n dragArgs = {\n axis: _this.activeAxis,\n name: dragMove,\n type: rangeMove,\n range: _this.activeRange,\n axisIndex: dragAxisInd,\n rangeIndex: dragRangeInd\n };\n _this.rangeDrag(new GaugeLocation(args.x + extraWidth, args.y), dragAxisInd, dragRangeInd);\n _this.trigger(dragMove, dragArgs);\n }\n }\n });\n this.notify(Browser.touchMoveEvent, e);\n titleTooltip(e, e.clientX, e.clientY, this, false);\n return false;\n };\n /**\n * Handles the mouse leave.\n *\n * @param {PointerEvent} e - Specifies the pointer event\n * @returns {boolean} - Returns the boolean value\n * @private\n */\n CircularGauge.prototype.mouseLeave = function (e) {\n this.setMouseXY(e);\n this.activeAxis = null;\n this.activePointer = null;\n this.activeRange = null;\n this.svgObject.setAttribute('cursor', 'auto');\n var args = this.getMouseArgs(e, 'touchmove', gaugeMouseLeave);\n this.trigger(gaugeMouseLeave, args);\n return false;\n };\n /**\n * Handles the mouse right click.\n *\n * @param {MouseEvent | PointerEvent} event - Specifies the pointer or mouse event.\n * @returns {boolean} - Returns the boolean value.\n * @private\n */\n CircularGauge.prototype.gaugeRightClick = function (event) {\n if (event.buttons === 2 || event.pointerType === 'touch') {\n event.preventDefault();\n event.stopPropagation();\n return false;\n }\n return true;\n };\n /**\n * Handles the pointer draf while mouse move on gauge.\n *\n * @param {GaugeLocation} location - Specifies the location of the gauge\n * @param {number} axisIndex - Specifies the axis index\n * @param {number} pointerIndex - Specifies the pointer index\n * @returns {void}\n * @private\n */\n CircularGauge.prototype.pointerDrag = function (location, axisIndex, pointerIndex) {\n var axis = this.activeAxis;\n var range = axis.visibleRange;\n var value = getValueFromAngle(getAngleFromLocation(this.midPoint, location), range.max, range.min, axis.startAngle, axis.endAngle, axis.direction === 'ClockWise');\n if (value >= range.min && value <= range.max) {\n this.axes[axisIndex].pointers[pointerIndex].value = value;\n this.activePointer.currentValue = value;\n this.gaugeAxisLayoutPanel.pointerRenderer.setPointerValue(axis, this.activePointer, value);\n }\n };\n /**\n * Handles the range draf while mouse move on gauge.\n *\n * @param {GaugeLocation} location - Specifies the gauge location\n * @param {number} axisIndex - Specifies the axis index\n * @param {number} rangeIndex - Specifies the range index\n * @returns {void}\n * @private\n */\n CircularGauge.prototype.rangeDrag = function (location, axisIndex, rangeIndex) {\n if (this.activeAxis) {\n var axis = this.activeAxis;\n var range = axis.visibleRange;\n var value = getValueFromAngle(getAngleFromLocation(this.midPoint, location), range.max, range.min, axis.startAngle, axis.endAngle, axis.direction === 'ClockWise');\n if (value >= range.min && value <= range.max) {\n var previousValue1 = this.activeRange.currentValue;\n this.activeRange.currentValue = value;\n var add = (this.activeRange.end - this.activeRange.start);\n var div = add / 2;\n var avg = parseFloat(this.activeRange.start.toString()) + div;\n var start = typeof this.activeRange.start === 'string' ? parseFloat(this.activeRange.start) : this.activeRange.start;\n var end = typeof this.activeRange.end === 'string' ? parseFloat(this.activeRange.end) : this.activeRange.end;\n this.startValue = (value < avg) ? value : ((previousValue1 < avg) ? previousValue1 : ((start < end) ? this.activeRange.start : this.activeRange.end));\n this.endValue = (value < avg) ? ((previousValue1 > avg) ? previousValue1 : ((start < end) ? this.activeRange.end : this.activeRange.start)) : value;\n this.axes[axisIndex].ranges[rangeIndex].start = this.startValue;\n this.axes[axisIndex].ranges[rangeIndex].end = this.endValue;\n if (this.isTouch) {\n this.setRangeValue(axisIndex, rangeIndex, this.startValue, this.endValue);\n }\n }\n }\n };\n /**\n * Handles the mouse down on gauge.\n *\n * @param {PointerEvent} e - Specifies the pointer event\n * @returns {boolean} - Returns the boolean value\n * @private\n */\n CircularGauge.prototype.gaugeOnMouseDown = function (e) {\n var _this = this;\n this.setMouseXY(e);\n var currentPointer;\n var currentRange;\n var args = this.getMouseArgs(e, 'touchstart', gaugeMouseDown);\n this.trigger('gaugeMouseDown', args, function (observedArgs) {\n if (!args.cancel &&\n args.target.id.indexOf(_this.element.id + '_Axis_') >= 0 &&\n args.target.id.indexOf('_Pointer_') >= 0) {\n currentPointer = getPointer(args.target.id, _this);\n _this.activeAxis = _this.axes[currentPointer.axisIndex];\n _this.activePointer = _this.activeAxis.pointers[currentPointer.pointerIndex];\n if (isNullOrUndefined(_this.activePointer.pathElement)) {\n _this.activePointer.pathElement = [e.target];\n }\n if (_this.activePointer.type === 'Marker' && _this.activePointer.markerShape === 'Text' && _this.activePointer.pathElement.length === 0) {\n _this.activePointer.pathElement = [e.target];\n }\n var pointInd = parseInt(_this.activePointer.pathElement[0].id.slice(-1), 10);\n var axisInd = parseInt(_this.activePointer.pathElement[0].id.split('_Axis_')[1], 10);\n _this.trigger(dragStart, {\n axis: _this.activeAxis,\n name: dragStart,\n type: pointerStart,\n pointer: _this.activePointer,\n currentValue: _this.activePointer.currentValue,\n pointerIndex: pointInd,\n axisIndex: axisInd\n });\n if (_this.enablePointerDrag) {\n _this.svgObject.setAttribute('cursor', 'grabbing');\n }\n }\n else if (!args.cancel &&\n args.target.id.indexOf(_this.element.id + '_Axis_') >= 0 &&\n args.target.id.indexOf('_Range_') >= 0) {\n currentRange = getRange(args.target.id, _this);\n _this.activeAxis = _this.axes[currentRange.axisIndex];\n _this.activeRange = _this.activeAxis.ranges[currentRange.rangeIndex];\n if (isNullOrUndefined(_this.activeRange.pathElement)) {\n _this.activeRange.pathElement = [e.target];\n }\n var rangeInd = parseInt(_this.activeRange.pathElement[0].id.split('Range_')[1], 10);\n var axisInd = parseInt(_this.activeRange.pathElement[0].id.split('_Axis_')[1], 10);\n _this.trigger(dragStart, {\n axis: _this.activeAxis,\n name: dragStart,\n type: rangeStart,\n range: _this.activeRange,\n axisIndex: axisInd,\n rangeIndex: rangeInd\n });\n if (_this.enableRangeDrag) {\n _this.svgObject.setAttribute('cursor', 'grabbing');\n }\n }\n });\n return false;\n };\n /**\n * Handles the mouse end.\n *\n * @param {PointerEvent} e - Specifies the pointer event\n * @returns {boolean} - Returns the boolean value\n * @private\n */\n CircularGauge.prototype.mouseEnd = function (e) {\n this.setMouseXY(e);\n var args = this.getMouseArgs(e, 'touchend', gaugeMouseUp);\n this.isTouch = e.pointerType === 'touch' || e.pointerType === '2' || e.type === 'touchend';\n this.trigger(gaugeMouseUp, args);\n if (this.activeAxis && this.activePointer && this.enablePointerDrag) {\n this.svgObject.setAttribute('cursor', 'auto');\n var pointerInd = parseInt(this.activePointer.pathElement[0].id.slice(-1), 10);\n var axisInd = parseInt(this.activePointer.pathElement[0].id.split('_Axis_')[1], 10);\n this.trigger(dragEnd, {\n name: dragEnd,\n type: pointerEnd,\n axis: this.activeAxis,\n pointer: this.activePointer,\n currentValue: this.activePointer.currentValue,\n axisIndex: axisInd,\n pointerIndex: pointerInd\n });\n this.activeAxis = null;\n this.activePointer = null;\n this.isDrag = false;\n }\n else if (this.activeAxis && this.activeRange && this.enableRangeDrag) {\n this.svgObject.setAttribute('cursor', 'auto');\n var rangeInd = parseInt(this.activeRange.pathElement[0].id.slice(-1), 10);\n var axisInd = parseInt(this.activeRange.pathElement[0].id.split('_Axis_')[1], 10);\n this.trigger(dragEnd, {\n name: dragEnd,\n type: rangeEnd,\n axis: this.activeAxis,\n range: this.activeRange,\n axisIndex: axisInd,\n rangeIndex: rangeInd\n });\n this.activeAxis = null;\n this.activeRange = null;\n this.isDrag = false;\n }\n if (!isNullOrUndefined(this.activePointer)) {\n this.activePointer = null;\n }\n this.svgObject.setAttribute('cursor', 'auto');\n this.notify(Browser.touchEndEvent, e);\n if (e.type.indexOf('touch') > -1 && (args.target.id === (this.element.id + '_CircularGaugeTitle') || args.target.id.indexOf('_gauge_legend_') > -1)) {\n var touchArg = e;\n titleTooltip(e, touchArg.changedTouches[0].pageX, touchArg.changedTouches[0].pageY, this, true);\n }\n return false;\n };\n /**\n * Handles the mouse event arguments.\n *\n * @param {PointerEvent} e - Specifies the pointer event\n * @param {string} type - Specifies the type\n * @param {string} name - Specifies the name\n * @returns {IMouseEventArgs} - Returns the mouse event args\n * @private\n */\n CircularGauge.prototype.getMouseArgs = function (e, type, name) {\n var rect = this.element.getBoundingClientRect();\n var location = new GaugeLocation(-rect.left, -rect.top);\n var isTouch = (e.type === type);\n location.x += isTouch ? e.changedTouches[0].clientX : e.clientX;\n location.y += isTouch ? e.changedTouches[0].clientY : e.clientY;\n return {\n cancel: false, name: name,\n x: location.x, y: location.y,\n target: isTouch ? e.target : e.target\n };\n };\n /**\n * Handles the gauge resize.\n *\n * @param {Event} e - Specifies the event\n * @returns {boolean} - Returns the boolean value\n * @private\n */\n CircularGauge.prototype.gaugeResize = function (e) {\n var _this = this;\n if (!this.isDestroyed) {\n // eslint-disable-next-line prefer-const\n var args = {\n gauge: this,\n previousSize: this.availableSize,\n name: resized,\n cancel: false,\n currentSize: this.calculateSvgSize()\n };\n this.trigger(resized, args);\n if (!args.cancel) {\n if (this.resizeTo) {\n clearTimeout(this.resizeTo);\n }\n if (!isNullOrUndefined(this.element) && this.element.classList.contains('e-circulargauge')) {\n this.animatePointer = false;\n this.resizeTo = window.setTimeout(function () {\n _this.isResize = true;\n _this.isPropertyChange = true;\n _this.createSvg();\n _this.calculateBounds();\n _this.allowLoadingAnimation = false;\n if (_this.isOverAllAnimationComplete) {\n _this.loadingAnimationDuration = [];\n }\n _this.renderElements();\n _this.isResize = false;\n }, 500);\n }\n }\n }\n return false;\n };\n /**\n * Applying styles for circular gauge elements\n *\n * @param {HTMLElement} element - Specifies the html element\n * @returns {void}\n */\n CircularGauge.prototype.setGaugeStyle = function (element) {\n element.style.touchAction = 'element';\n element.style.msTouchAction = 'element';\n element.style.msContentZooming = 'none';\n element.style.msUserSelect = 'none';\n element.style.webkitUserSelect = 'none';\n element.style.position = 'relative';\n };\n /**\n * Method to set culture for gauge\n *\n * @returns {void}\n */\n CircularGauge.prototype.setCulture = function () {\n this.intl = new Internationalization();\n };\n /**\n * Methods to create svg element for circular gauge.\n *\n * @returns {void}\n */\n CircularGauge.prototype.createSvg = function () {\n this.removeSvg();\n if (isNullOrUndefined(this.renderer)) {\n this.renderer = new SvgRenderer(this.element.id);\n }\n if (isNullOrUndefined(this.gaugeAxisLayoutPanel)) {\n this.gaugeAxisLayoutPanel = new AxisLayoutPanel(this);\n }\n this.availableSize = this.calculateSvgSize();\n this.svgObject = this.renderer.createSvg({\n id: this.element.id + '_svg',\n width: this.availableSize.width,\n height: this.availableSize.height\n });\n };\n /**\n * To Remove the SVG from circular gauge.\n *\n * @returns {void}\n * @private\n */\n CircularGauge.prototype.removeSvg = function () {\n if (!isNullOrUndefined(this.element)) {\n removeElement(this.element.id + '_Secondary_Element');\n if (this.svgObject) {\n while (this.svgObject.childNodes.length > 0) {\n while (this.svgObject.childNodes.length > 0) {\n this.svgObject.removeChild(this.svgObject.firstChild);\n }\n if (!this.svgObject.hasChildNodes() && this.svgObject.parentNode) {\n remove(this.svgObject);\n }\n }\n if (!this.svgObject.hasChildNodes() && this.svgObject.parentNode) {\n remove(this.svgObject);\n }\n }\n removeElement(this.element.id + '_svg');\n this.clearTemplate();\n }\n };\n /**\n * To initialize the circular gauge private variable.\n *\n * @returns {void}\n * @private\n */\n CircularGauge.prototype.initPrivateVariable = function () {\n if (this.element.id === '') {\n var collection = document.getElementsByClassName('e-circulargauge').length;\n this.element.id = 'circulargauge_control_' + collection;\n }\n this.renderer = new SvgRenderer(this.element.id);\n this.gaugeAxisLayoutPanel = new AxisLayoutPanel(this);\n this.animatePointer = true;\n };\n /**\n * To calculate the size of the circular gauge element.\n *\n * @returns {void}\n */\n CircularGauge.prototype.calculateSvgSize = function () {\n var containerWidth = this.element.offsetWidth;\n var containerHeight = this.element.offsetHeight;\n var borderWidth = parseInt(this.element.style.borderWidth.split('px').join(''), 10) * 2;\n var width = stringToNumber(this.width, containerWidth) || containerWidth || 600;\n var height = stringToNumber(this.height, containerHeight) || containerHeight || 450;\n width = !isNaN(borderWidth) ? (width - borderWidth) : width;\n height = !isNaN(borderWidth) ? (height - borderWidth) : height;\n return new Size(width, height);\n };\n /**\n * To calculate the spacing of the circular gauge element.\n *\n * @param {number} top - Specifies the top value\n * @param {number} left - Specifies the left value\n * @param {number} width - Specifies the width\n * @param {number} height - Specifies the height\n * @param {number} radius - Specifies the radius\n * @param {number} titleHeight - Specifies the titleHeight\n * @param {number} isUpperAngle - Specifies the isUpperAngle\n * @param {number} isLowerAngle - Specifies the isLowerAngle\n * @param {number} isFullPercent - Specifies the boolean value\n * @param {number} isUpper - Specifies the boolean value\n * @param {number} isLower - Specifies the boolean value\n * @returns {void}\n */\n /* eslint-disable max-len */\n CircularGauge.prototype.radiusAndCenterCalculation = function (top, left, width, height, radius, titleHeight, isUpperAngle, isLowerAngle, isFullPercent, radiusPercent, isUpper, isLower) {\n var rect;\n var bottom = this.margin.bottom + this.border.width;\n var minRadius;\n var widthRadius;\n var centerX;\n var centerY;\n if (this.moveToCenter && this.axes.length === 1 &&\n isNullOrUndefined(this.centerXpoint) && isNullOrUndefined(this.centerYpoint)) {\n rect = new Rect(left, top, width, height);\n }\n else {\n if (!this.allowMargin) {\n if (!isNullOrUndefined(this.legendModule) && (width > height) && (this.legendSettings.position === 'Top' || this.legendSettings.position === 'Bottom')) {\n minRadius = Math.min(width, height) / 2;\n rect = new Rect((left + (width / 2) - minRadius), (top + (height / 2) - minRadius), minRadius * 2, minRadius * 2);\n }\n else {\n if (width > height && (isLowerAngle && isLower || isUpperAngle && isUpper)) {\n widthRadius = ((width) / 2);\n var heightValue = isUpper && isLower ? (height / 2) : (height * (3 / 4));\n if (widthRadius > heightValue) {\n widthRadius = heightValue;\n }\n rect = new Rect((left + (width / 2) - widthRadius), (top + (height / 2) - widthRadius), widthRadius * 2, widthRadius * 2);\n }\n else {\n if (height > width) {\n var heightRadius = height / 2;\n rect = new Rect((left + (width / 2) - radius), (top + (height / 2) - heightRadius), radius * 2, heightRadius * 2);\n }\n else {\n rect = new Rect((left + (width / 2) - radius), (top + (height / 2) - radius), radius * 2, radius * 2);\n }\n }\n }\n }\n else {\n rect = new Rect((left + (width / 2) - radius), (top + (height / 2) - radius), radius * 2, radius * 2);\n }\n }\n this.gaugeRect = rect;\n if (this.legendModule && this.legendSettings.visible) {\n this.legendModule.getLegendOptions(this.axes);\n this.legendModule.calculateLegendBounds(this.gaugeRect, this.availableSize);\n }\n if (!this.allowMargin) {\n if (!isNullOrUndefined(this.legendModule) && (isUpperAngle || isLowerAngle) && (width > height) && (this.legendSettings.position === 'Top' || this.legendSettings.position === 'Bottom')) {\n var difference = height - this.gaugeRect.height;\n this.gaugeRect.width = width - ((this.availableSize.width - this.gaugeRect.width) / 2);\n this.gaugeRect.y = this.gaugeRect.y - difference;\n this.gaugeRect.height = this.gaugeRect.height + difference + ((this.availableSize.height - this.gaugeRect.height) / 2);\n }\n else if (!isNullOrUndefined(this.legendModule) && (isUpperAngle || isLowerAngle) && (width > height) && (this.legendSettings.position === 'Left' || this.legendSettings.position === 'Right')) {\n var difference = this.gaugeRect.height - this.gaugeRect.width;\n this.gaugeRect.x = this.legendSettings.position === 'Right'\n ? this.gaugeRect.x + this.margin.right : this.gaugeRect.x;\n this.gaugeRect.width = this.legendSettings.position === 'Left' ?\n Math.abs(width - ((this.availableSize.width - this.gaugeRect.width + difference) / 2))\n : Math.abs(width - ((this.availableSize.width - this.gaugeRect.width) / 2) - 10);\n }\n centerX = this.centerXpoint !== null ?\n stringToNumber(this.centerXpoint, this.availableSize.width) : this.gaugeRect.x + (this.gaugeRect.width / 2);\n if ((isUpperAngle || isLowerAngle) && !isNullOrUndefined(this.legendModule)) {\n centerX = (this.legendSettings.position === 'Top' || this.legendSettings.position === 'Bottom')\n ? this.availableSize.width / 2 : this.legendSettings.position === 'Right' ? (this.gaugeRect.width / 2) + this.margin.right :\n centerX;\n }\n centerY = ((isUpperAngle || isLowerAngle) ? (isUpperAngle ?\n (((this.gaugeRect.height * (3 / 4) + this.gaugeRect.y) - bottom))\n : (((this.gaugeRect.height * (1 / 4)) + (this.gaugeRect.y)))) : this.gaugeRect.y + (this.gaugeRect.height / 2));\n centerY = !isFullPercent && (isUpperAngle || isLowerAngle) ? (this.gaugeRect.height / 2) + this.gaugeRect.y + (radiusPercent * (3 / 4) * (1 / 2)) : centerY;\n if (!isNullOrUndefined(this.axes) && this.axes.length > 1 && !isNullOrUndefined(this.midPoint)) {\n isUpper = isUpperAngle ? isUpperAngle : isUpper;\n isLower = isLowerAngle ? isLowerAngle : isLower;\n if (isUpper && isLower) {\n centerY = (this.availableSize.height / 2) - bottom;\n }\n }\n }\n else {\n centerX = this.centerXpoint !== null ?\n stringToNumber(this.centerXpoint, this.availableSize.width) : this.gaugeRect.x + (this.gaugeRect.width / 2);\n centerY = this.centerYpoint !== null ?\n stringToNumber(this.centerYpoint, this.availableSize.height) : this.gaugeRect.y + (this.gaugeRect.height / 2);\n }\n this.midPoint = new GaugeLocation(centerX, centerY);\n };\n /**\n * Method to calculate the availble size for circular gauge.\n *\n * @returns {void}\n */\n CircularGauge.prototype.calculateBounds = function () {\n var padding = 5;\n var rect;\n var margin = this.margin;\n var titleHeight = 0;\n if (this.title) {\n titleHeight = measureText(this.title, this.titleStyle).height + padding;\n }\n var top = margin.top + titleHeight + this.border.width;\n var left = margin.left + this.border.width;\n var isUpper = false;\n var isLower = false;\n var width = this.availableSize.width - left - margin.right - this.border.width;\n var height = this.availableSize.height - top - this.border.width - margin.bottom;\n var radius = Math.min(width, height) / 2;\n this.centerXpoint = (this.centerX === '') ? null : this.centerX;\n this.centerYpoint = (this.centerY === '') ? null : this.centerY;\n if (this.moveToCenter && this.axes.length === 1 &&\n isNullOrUndefined(this.centerXpoint) && isNullOrUndefined(this.centerYpoint)) {\n rect = new Rect(left, top, width, height);\n }\n if (!this.allowMargin) {\n for (var j = 0; j < this.axes.length; j++) {\n var isUpperAngle = 270 <= this.axes[j].startAngle && this.axes[j].startAngle <= 360 &&\n 0 <= this.axes[j].endAngle && this.axes[j].endAngle <= 90;\n var isLowerAngle = 90 >= this.axes[j].startAngle && this.axes[j].startAngle <= 180 &&\n 180 <= this.axes[j].endAngle && 270 <= this.axes[j].endAngle && 0 !== this.axes[j].startAngle &&\n 360 !== this.axes[j].endAngle;\n isUpper = isUpperAngle ? isUpperAngle : isUpper;\n isLower = isLowerAngle ? isLowerAngle : isLower;\n var isFullPercent = this.axes[j].radius !== null ? parseInt(this.axes[0].radius.split('%')[0], 10) >= 100 : true;\n var radiusPercent = this.axes[j].radius !== null ? radius * (parseInt(this.axes[0].radius.split('%')[0], 10) / 100) : radius;\n this.radiusAndCenterCalculation(top, left, width, height, radius, titleHeight, isUpperAngle, isLowerAngle, isFullPercent, radiusPercent, isUpper, isLower);\n }\n }\n else {\n rect = new Rect((left + (width / 2) - radius), (top + (height / 2) - radius), radius * 2, radius * 2);\n this.radiusAndCenterCalculation(top, left, width, height, radius, titleHeight, false, false, null, null, false, false);\n }\n this.gaugeAxisLayoutPanel.measureAxis(this.gaugeRect);\n };\n /**\n * To render elements for circular gauge\n *\n * @param {boolean} animate - Specifies whether animation is true or false\n * @returns {void}\n */\n CircularGauge.prototype.renderElements = function (animate) {\n if (animate === void 0) { animate = true; }\n this.renderBorder();\n this.renderTitle();\n this.gaugeAxisLayoutPanel.renderAxes(animate);\n this.renderLegend();\n this.element.appendChild(this.svgObject);\n this.trigger(loaded, { gauge: this });\n removeElement('gauge-measuretext');\n };\n CircularGauge.prototype.renderAnimation = function () {\n if (this.allowLoadingAnimation) {\n for (var i = 0; i < this.axes.length; i++) {\n this.gaugeAxisLayoutPanel.axisLineAnimation(i, this.loadingAnimationDuration[i], this);\n }\n }\n };\n /**\n * Method to render legend for accumulation chart\n *\n * @returns {void}\n */\n CircularGauge.prototype.renderLegend = function () {\n if (!this.legendModule || !this.legendSettings.visible) {\n return null;\n }\n if (this.legendModule.legendCollection.length) {\n this.legendModule.renderLegend(this.legendSettings, this.legendModule.legendBounds);\n }\n };\n /**\n * Method to render the title for circular gauge.\n *\n * @returns {void}\n */\n CircularGauge.prototype.renderTitle = function () {\n if (this.title) {\n // eslint-disable-next-line prefer-const\n var style = {\n color: this.titleStyle.color,\n size: this.titleStyle.size || this.themeStyle.fontSize,\n fontFamily: this.titleStyle.fontFamily || this.themeStyle.fontFamily,\n fontStyle: this.titleStyle.fontStyle,\n fontWeight: this.titleStyle.fontWeight || this.themeStyle.titleFontWeight,\n opacity: this.titleStyle.opacity\n };\n var titleSize = style.size;\n if (!isNaN(Number(titleSize))) {\n style.size = titleSize + 'px';\n }\n var width = Math.abs((this.margin.left + this.margin.right) - this.availableSize.width);\n var trimmedTitle = textTrim(width, this.title, style);\n var size = measureText(trimmedTitle, style);\n var options = new TextOption(this.element.id + '_CircularGaugeTitle', this.availableSize.width / 2, this.margin.top + 3 * (size.height / 4), 'middle', trimmedTitle);\n var element = textElement(options, style, style.color || this.themeStyle.titleFontColor, this.svgObject, '');\n element.setAttribute('aria-label', this.description || this.title);\n element.setAttribute('role', 'region');\n element.setAttribute('tabindex', this.tabIndex.toString());\n }\n };\n /**\n * Method to render the border for circular gauge.\n *\n * @returns {void}\n */\n CircularGauge.prototype.renderBorder = function () {\n var borderWidth = this.border.width;\n if (borderWidth > 0 || (this.background || this.themeStyle.backgroundColor)) {\n this.svgObject.appendChild(this.renderer.drawRectangle(new RectOption(this.element.id + '_CircularGaugeBorder', this.background || this.themeStyle.backgroundColor, this.border, null, new Rect(borderWidth / 2, borderWidth / 2, this.availableSize.width - borderWidth, this.availableSize.height - borderWidth))));\n }\n };\n /* eslint-disable valid-jsdoc */\n /**\n * This method is used to set the pointer value dynamically for circular gauge.\n *\n * @param {number} axisIndex - Specifies the index value for the axis in circular gauge.\n * @param {number} pointerIndex - Specifies the index value for the pointer in circular gauge.\n * @param {number} value - Specifies the value for the pointer in circular gauge.\n */\n CircularGauge.prototype.setPointerValue = function (axisIndex, pointerIndex, value) {\n var _this = this;\n var axis = this.axes[axisIndex];\n var pointer = axis.pointers[pointerIndex];\n var pointerRadius = pointer.currentRadius;\n this.allowLoadingAnimation = false;\n if (!this.isDestroyed && pointer.currentValue !== value) {\n var enableAnimation_1 = pointer.animation.enable || animationMode === 'Enable';\n value = value < axis.visibleRange.min ? axis.visibleRange.min : value;\n value = value > axis.visibleRange.max ? axis.visibleRange.max : value;\n pointer['isPointerAnimation'] = true;\n document.getElementById(this.element.id + '_Axis_' + axisIndex + '_Pointer_' + pointerIndex).style.visibility = 'visible';\n pointer.pathElement.map(function (element) {\n if (pointer.type === 'RangeBar') {\n setStyles(element, pointer.color, pointer.border);\n if (enableAnimation_1) {\n _this.gaugeAxisLayoutPanel.pointerRenderer.performRangeBarAnimation(element, pointer.currentValue, value, axis, pointer, axisIndex);\n }\n else {\n _this.isAnimationProgress = false;\n _this.gaugeAxisLayoutPanel.pointerRenderer.setPointerValue(axis, pointer, value);\n }\n }\n else {\n if (element.id.indexOf('_Pointer_NeedleCap_') >= 0) {\n setStyles(element, pointer.cap.color, pointer.cap.border);\n }\n else if (element.id.indexOf('_Pointer_NeedleTail_') >= 0) {\n setStyles(element, pointer.needleTail.color, pointer.needleTail.border);\n }\n else if (element.id.indexOf('_Pointer_NeedleRect_') >= 0) {\n setStyles(element, 'transparent', { color: 'transparent', width: 0 });\n }\n else if (pointer.type === 'Marker' && pointer.markerShape !== 'Text') {\n setStyles(element, pointer.color, pointer.border);\n }\n if (enableAnimation_1) {\n if (pointer.type === 'Marker' && pointer.markerShape === 'Text') {\n _this.gaugeAxisLayoutPanel.pointerRenderer.performTextAnimation(element, pointer.currentValue, value, axis, pointer, axisIndex);\n }\n else {\n _this.gaugeAxisLayoutPanel.pointerRenderer.performNeedleAnimation(element, pointer.currentValue, value, axis, pointer, axisIndex);\n }\n }\n else {\n _this.gaugeAxisLayoutPanel.pointerRenderer.setPointerValue(axis, pointer, value);\n }\n }\n });\n if (this.allowLoadingAnimation && !pointer.animation.enable) {\n this.allowLoadingAnimation = false;\n pointer.value = value;\n }\n }\n this.isProtectedOnChange = true;\n pointer.previousValue = pointer.currentValue;\n pointer.currentValue = value;\n pointer.value = value;\n this.isProtectedOnChange = false;\n };\n /**\n * This method is used to set the annotation content dynamically for circular gauge.\n *\n * @param {number} axisIndex - Specifies the index value for the axis in circular gauge.\n * @param {number} annotationIndex - Specifies the index value for the annotation in circular gauge.\n * @param {string | Function} content - Specifies the content for the annotation in circular gauge.\n * @returns {void}\n */\n CircularGauge.prototype.setAnnotationValue = function (axisIndex, annotationIndex, content) {\n if (!this.isDestroyed) {\n this.allowLoadingAnimation = false;\n var isElementExist = getElement(this.element.id + '_Annotations_' + axisIndex) !== null;\n var element = getElement(this.element.id + '_Annotations_' + axisIndex) ||\n createElement('div', {\n id: this.element.id + '_Annotations_' + axisIndex, styles: this.animationDuration > 0 ? 'opacity: 0' : 'opacity: 1'\n });\n var annotation = this.axes[axisIndex].annotations[annotationIndex];\n if (content !== null) {\n removeElement(this.element.id + '_Axis_' + axisIndex + '_Annotation_' + annotationIndex);\n annotation.content = content;\n this.annotationsModule.createTemplate(element, annotationIndex, axisIndex, this);\n var secondaryElement = getElement(this.element.id + '_Secondary_Element');\n if (!isElementExist && !isNullOrUndefined(secondaryElement)) {\n secondaryElement.appendChild(element);\n }\n }\n }\n };\n /**\n * This method is used to print the rendered circular gauge.\n *\n * @param {string[] | string | Element} id - Specifies the element to print the circular gauge.\n */\n CircularGauge.prototype.print = function (id) {\n if (this.allowPrint && this.printModule) {\n this.printModule.print(this, id);\n }\n };\n /**\n * This method is used to perform the export functionality for the circular gauge.\n *\n * @param {ExportType} type - Specifies the type of the export.\n * @param {string} fileName - Specifies the file name for the exported file.\n * @param {PdfPageOrientation} orientation - Specifies the orientation for the exported PDF document.\n * @param {boolean} allowDownload - Specifies whether to download as a file.\n * @returns {Promise} - Specifies the base64 string of the exported image which is returned when the allowDownload is set to false.\n */\n CircularGauge.prototype.export = function (type, fileName, orientation, allowDownload) {\n var _this = this;\n if (isNullOrUndefined(allowDownload)) {\n allowDownload = true;\n }\n if (type === 'PDF' && this.allowPdfExport && this.pdfExportModule) {\n // eslint-disable-next-line\n return new Promise(function (resolve, reject) {\n resolve(_this.pdfExportModule.export(_this, type, fileName, orientation, allowDownload));\n });\n }\n else if (this.allowImageExport && (type !== 'PDF') && this.imageExportModule) {\n // eslint-disable-next-line\n return new Promise(function (resolve, reject) {\n resolve(_this.imageExportModule.export(_this, type, fileName, allowDownload));\n });\n }\n return null;\n };\n /**\n * Method to set mouse x, y from events\n *\n * @param {PointerEvent} e - Specifies the pointer event\n * @returns {void}\n */\n CircularGauge.prototype.setMouseXY = function (e) {\n var pageX;\n var pageY;\n var svgRect = getElement(this.element.id + '_svg').getBoundingClientRect();\n var rect = this.element.getBoundingClientRect();\n if (e.type.indexOf('touch') > -1) {\n this.isTouch = true;\n var touchArg = e;\n pageY = touchArg.changedTouches[0].clientY;\n pageX = touchArg.changedTouches[0].clientX;\n }\n else {\n this.isTouch = e.pointerType === 'touch' || e.pointerType === '2';\n pageX = e.clientX;\n pageY = e.clientY;\n }\n this.mouseY = (pageY - rect.top) - Math.max(svgRect.top - rect.top, 0);\n this.mouseX = (pageX - rect.left) - Math.max(svgRect.left - rect.left, 0);\n };\n /**\n * This method is used to set the range values dynamically for circular gauge.\n *\n * @param {number} axisIndex - Specifies the index value for the axis in circular gauge.\n * @param {number} rangeIndex - Specifies the index value for the range in circular gauge.\n * @param {number} start - Specifies the start value for the current range in circular gauge.\n * @param {number} end - Specifies the end value for the current range in circular gauge.\n */\n CircularGauge.prototype.setRangeValue = function (axisIndex, rangeIndex, start, end) {\n this.allowLoadingAnimation = false;\n var element = getElement(this.element.id + '_Axis_' + axisIndex + '_Range_' + rangeIndex);\n var axis = this.axes[axisIndex];\n var range = axis.ranges[rangeIndex];\n var axisRange = axis.visibleRange;\n var isClockWise = axis.direction === 'ClockWise';\n var startValue = Math.min(Math.max(start, axisRange.min), end);\n var endValue = Math.min(Math.max(start, end), axisRange.max);\n var oldRangeStart = range.start;\n var oldRangeEnd = range.end;\n range.start = start;\n range.end = end;\n if (range.start !== range.end && oldRangeStart === oldRangeEnd && this.legendModule && this.legendSettings.visible) {\n this.legendModule.getLegendOptions(this.axes);\n var height = this.legendModule.legendBounds.height + this.legendSettings.margin.top + this.legendSettings.margin.bottom + this.legendSettings.border.width;\n var width = this.legendModule.legendBounds.width + this.legendSettings.margin.left + this.legendSettings.margin.right + this.legendSettings.border.width;\n // eslint-disable-next-line prefer-const\n var rect = this.gaugeRect;\n var position = this.legendModule.position;\n if (position === 'Bottom') {\n rect.height = rect.height + height;\n }\n if (position === 'Top') {\n rect.height = rect.height + height;\n rect.y = rect.y - height;\n }\n if (position === 'Left') {\n rect.width = rect.width + width;\n rect.x = rect.x - width;\n }\n if (position === 'Right') {\n rect.width = rect.width + width;\n }\n this.legendModule.calculateLegendBounds(rect, this.availableSize);\n if (this.legendModule.legendCollection.length) {\n this.legendModule.renderLegend(this.legendSettings, this.legendModule.legendBounds);\n }\n }\n this.isRangeUpdate = true;\n var startAngle = getAngleFromValue(startValue, axisRange.max, axisRange.min, axis.startAngle, axis.endAngle, isClockWise);\n var endAngle = getAngleFromValue(endValue, axisRange.max, axisRange.min, axis.startAngle, axis.endAngle, isClockWise);\n var startWidth;\n if (range.startWidth.length > 0) {\n startWidth = toPixel(range.startWidth, range.currentRadius);\n }\n else {\n startWidth = range.startWidth;\n }\n var endWidth;\n if (range.endWidth.length > 0) {\n endWidth = toPixel(range.endWidth, range.currentRadius);\n }\n else {\n endWidth = range.endWidth;\n }\n endAngle = isClockWise ? endAngle : [startAngle, startAngle = endAngle][0];\n endWidth = isClockWise ? endWidth : [startWidth, startWidth = endWidth][0];\n element.setAttribute('d', getPathArc(this.midPoint, Math.round(startAngle), Math.round(endAngle), range.currentRadius, startWidth, endWidth, range, axis));\n setStyles(element, (range.color ? range.color : range.rangeColor), {\n color: (range.color ? range.color : range.rangeColor),\n width: 0\n });\n };\n /**\n * This method destroys the circular gauge. This method removes the events associated with the circular gauge and disposes the objects created for rendering and updating the circular gauge.\n *\n * @method destroy\n * @return {void}\n * @member of Circular-Gauge\n */\n CircularGauge.prototype.destroy = function () {\n if (!isNullOrUndefined(this.element)) {\n this.unWireEvents();\n }\n if (!isNullOrUndefined(this.tooltipModule)) {\n this.tooltipModule.removeEventListener();\n }\n _super.prototype.destroy.call(this);\n if (!isNullOrUndefined(this.gaugeAxisLayoutPanel)) {\n this.gaugeAxisLayoutPanel.destroy();\n }\n this.availableSize = null;\n this.midPoint = null;\n this.activePointer = null;\n this.activeAxis = null;\n this.activeRange = null;\n this.gaugeRect = null;\n this.gaugeAxisLayoutPanel = null;\n this.themeStyle = null;\n this.loadingAnimationDuration = null;\n this.intl = null;\n this.removeSvg();\n this.resizeEvent = null;\n this.svgObject = null;\n this.renderer = null;\n };\n /**\n * To provide the array of modules needed for control rendering\n *\n * @returns {ModuleDeclaration[]} - Returns the modules\n * @private\n */\n CircularGauge.prototype.requiredModules = function () {\n var modules = [];\n var annotationEnable = false;\n var axes = this.axes;\n axes.map(function (axis) {\n axis.annotations.map(function (annotation) {\n if (!annotationEnable) {\n annotationEnable = !isNullOrUndefined(annotation.content) && annotation.content.length !== 0;\n }\n });\n });\n if (annotationEnable) {\n modules.push({\n member: 'Annotations',\n args: [this, Annotations],\n name: 'Annotations'\n });\n }\n if (this.tooltip.enable) {\n modules.push({\n member: 'Tooltip',\n args: [this, GaugeTooltip],\n name: 'Tooltip'\n });\n }\n if (this.allowPrint) {\n modules.push({\n member: 'Print',\n args: [this, Print],\n name: 'Print'\n });\n }\n if (this.allowImageExport) {\n modules.push({\n member: 'ImageExport',\n args: [this, ImageExport],\n name: 'ImageExport'\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport',\n args: [this, PdfExport],\n name: 'PdfExport'\n });\n }\n if (this.legendSettings.visible) {\n modules.push({\n member: 'Legend',\n args: [this, Legend],\n name: 'Legend'\n });\n }\n modules.push({\n member: 'Gradient',\n args: [this, Gradient],\n name: 'Gradient'\n });\n return modules;\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Returns the string\n * @private\n */\n CircularGauge.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {CircularGaugeModel} newProp - Specifies the new property\n * @param {CircularGaugeModel} oldProp - Specifies the old property\n * @returns {void}\n * @private\n */\n CircularGauge.prototype.onPropertyChanged = function (newProp, oldProp) {\n // property method calculated\n if (!this.isDestroyed) {\n this.isPropertyChange = true;\n var renderer = false;\n this.allowLoadingAnimation = this.animationDuration > 0 && !this.isOverAllAnimationComplete ? true : false;\n var refreshBounds = false;\n var refreshWithoutAnimation = false;\n var isPointerValueSame = (Object.keys(newProp).length === 1 && newProp instanceof Object &&\n !isNullOrUndefined(this.activePointer));\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'height':\n case 'width':\n case 'centerX':\n case 'centerY':\n case 'margin':\n this.createSvg();\n refreshBounds = true;\n break;\n case 'animationDuration':\n this.allowLoadingAnimation = true;\n break;\n case 'title':\n refreshBounds = (newProp.title === '' || oldProp.title === '');\n renderer = !(newProp.title === '' || oldProp.title === '');\n break;\n case 'titleStyle':\n if (newProp.titleStyle && newProp.titleStyle.size) {\n refreshBounds = true;\n }\n else {\n renderer = true;\n }\n break;\n case 'border':\n renderer = true;\n break;\n case 'background':\n renderer = true;\n break;\n case 'legendSettings':\n refreshWithoutAnimation = true;\n break;\n case 'axes':\n // eslint-disable-next-line no-case-declarations\n var axesPropertyLength = this.axes.length;\n for (var x = 0; x < axesPropertyLength; x++) {\n if (!isNullOrUndefined(newProp.axes[x])) {\n var collection = Object.keys(newProp.axes[x]);\n for (var _b = 0, collection_1 = collection; _b < collection_1.length; _b++) {\n var collectionProp = collection_1[_b];\n if (collectionProp === 'pointers') {\n var pointerPropertyLength = Object.keys(newProp.axes[x].pointers).length;\n for (var y = 0; y < pointerPropertyLength; y++) {\n var index = parseInt(Object.keys(newProp.axes[x].pointers)[y], 10);\n if (!isNullOrUndefined(Object.keys(newProp.axes[x].pointers[index]))) {\n this.allowLoadingAnimation = false;\n this.loadingAnimationDuration = [];\n this.isAnimationProgress = this.axes[x].pointers[index].animation.enable;\n this.axes[x].pointers[index]['previousValue'] = this.axes[x].pointers[index]['currentValue'];\n this.axes[x].pointers[index]['isPointerAnimation'] = Object.keys(newProp.axes[x].pointers[index]).indexOf('value') > -1;\n }\n }\n }\n }\n }\n }\n refreshWithoutAnimation = true;\n break;\n }\n }\n if (!isPointerValueSame && !this.isRangeUpdate) {\n if (!refreshBounds && renderer) {\n this.removeSvg();\n this.renderElements();\n }\n if (refreshBounds || this.allowLoadingAnimation) {\n this.removeSvg();\n this.calculateBounds();\n this.renderElements();\n if (this.allowLoadingAnimation) {\n this.allowLoadingAnimation = this.animationDuration > 0 && !this.isOverAllAnimationComplete ? true : false;\n this.renderAnimation();\n }\n }\n if (refreshWithoutAnimation && !renderer && !refreshBounds && !this.allowLoadingAnimation) {\n this.removeSvg();\n this.calculateBounds();\n this.renderElements(false);\n }\n }\n this.isRangeUpdate = false;\n }\n };\n /**\n * Get component name for circular gauge\n *\n * @returns {string} - Returns the module name\n * @private\n */\n CircularGauge.prototype.getModuleName = function () {\n return 'circulargauge';\n };\n var CircularGauge_1;\n __decorate([\n Property(null)\n ], CircularGauge.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], CircularGauge.prototype, \"height\", void 0);\n __decorate([\n Complex({ color: 'transparent', width: 0 }, Border)\n ], CircularGauge.prototype, \"border\", void 0);\n __decorate([\n Property(null)\n ], CircularGauge.prototype, \"background\", void 0);\n __decorate([\n Property('')\n ], CircularGauge.prototype, \"title\", void 0);\n __decorate([\n Property(0)\n ], CircularGauge.prototype, \"animationDuration\", void 0);\n __decorate([\n Complex({ size: null, color: null, fontWeight: null, fontFamily: null }, Font)\n ], CircularGauge.prototype, \"titleStyle\", void 0);\n __decorate([\n Complex({}, Margin)\n ], CircularGauge.prototype, \"margin\", void 0);\n __decorate([\n Collection([{}], Axis)\n ], CircularGauge.prototype, \"axes\", void 0);\n __decorate([\n Complex({}, TooltipSettings)\n ], CircularGauge.prototype, \"tooltip\", void 0);\n __decorate([\n Property(false)\n ], CircularGauge.prototype, \"enablePointerDrag\", void 0);\n __decorate([\n Property(false)\n ], CircularGauge.prototype, \"enableRangeDrag\", void 0);\n __decorate([\n Property(false)\n ], CircularGauge.prototype, \"allowPrint\", void 0);\n __decorate([\n Property(false)\n ], CircularGauge.prototype, \"allowImageExport\", void 0);\n __decorate([\n Property(false)\n ], CircularGauge.prototype, \"allowPdfExport\", void 0);\n __decorate([\n Property(true)\n ], CircularGauge.prototype, \"allowRangePreRender\", void 0);\n __decorate([\n Property(null)\n ], CircularGauge.prototype, \"centerX\", void 0);\n __decorate([\n Property(null)\n ], CircularGauge.prototype, \"centerY\", void 0);\n __decorate([\n Property(false)\n ], CircularGauge.prototype, \"moveToCenter\", void 0);\n __decorate([\n Property('Material')\n ], CircularGauge.prototype, \"theme\", void 0);\n __decorate([\n Property(false)\n ], CircularGauge.prototype, \"useGroupingSeparator\", void 0);\n __decorate([\n Property(null)\n ], CircularGauge.prototype, \"description\", void 0);\n __decorate([\n Property(0)\n ], CircularGauge.prototype, \"tabIndex\", void 0);\n __decorate([\n Property(true)\n ], CircularGauge.prototype, \"allowMargin\", void 0);\n __decorate([\n Complex({}, LegendSettings)\n ], CircularGauge.prototype, \"legendSettings\", void 0);\n __decorate([\n Event()\n ], CircularGauge.prototype, \"loaded\", void 0);\n __decorate([\n Event()\n ], CircularGauge.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], CircularGauge.prototype, \"animationComplete\", void 0);\n __decorate([\n Event()\n ], CircularGauge.prototype, \"axisLabelRender\", void 0);\n __decorate([\n Event()\n ], CircularGauge.prototype, \"radiusCalculate\", void 0);\n __decorate([\n Event()\n ], CircularGauge.prototype, \"annotationRender\", void 0);\n __decorate([\n Event()\n ], CircularGauge.prototype, \"legendRender\", void 0);\n __decorate([\n Event()\n ], CircularGauge.prototype, \"tooltipRender\", void 0);\n __decorate([\n Event()\n ], CircularGauge.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], CircularGauge.prototype, \"dragMove\", void 0);\n __decorate([\n Event()\n ], CircularGauge.prototype, \"dragEnd\", void 0);\n __decorate([\n Event()\n ], CircularGauge.prototype, \"gaugeMouseMove\", void 0);\n __decorate([\n Event()\n ], CircularGauge.prototype, \"gaugeMouseLeave\", void 0);\n __decorate([\n Event()\n ], CircularGauge.prototype, \"gaugeMouseDown\", void 0);\n __decorate([\n Event()\n ], CircularGauge.prototype, \"gaugeMouseUp\", void 0);\n __decorate([\n Event()\n ], CircularGauge.prototype, \"resized\", void 0);\n __decorate([\n Event()\n ], CircularGauge.prototype, \"beforePrint\", void 0);\n CircularGauge = CircularGauge_1 = __decorate([\n NotifyPropertyChanges\n ], CircularGauge);\n return CircularGauge;\n}(Component));\nexport { CircularGauge };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types */\n/**\n * React Component Base\n */\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { extend, isNullOrUndefined, setValue, getValue, isObject, onIntlChange } from '@syncfusion/ej2-base';\nvar defaulthtmlkeys = ['alt', 'className', 'disabled', 'form', 'id',\n 'readOnly', 'style', 'tabIndex', 'title', 'type', 'name',\n 'onClick', 'onFocus', 'onBlur'];\nvar delayUpdate = ['accordion', 'tab', 'splitter'];\nvar isColEName = /\\]/;\nvar ComponentBase = /** @class */ (function (_super) {\n __extends(ComponentBase, _super);\n function ComponentBase() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.mountingState = false;\n _this.attrKeys = [];\n _this.cachedTimeOut = 0;\n _this.isAppendCalled = false;\n _this.initRenderCalled = false;\n _this.isReactForeceUpdate = false;\n _this.isReact = true;\n _this.isshouldComponentUpdateCalled = false;\n _this.isCreated = false;\n return _this;\n }\n // Lifecycle methods are changed by React team and so we can deprecate this method and use\n // Reference link:https://reactjs.org/docs/react-component.html#unsafe_componentWillMount\n ComponentBase.prototype.componentDidMount = function () {\n this.refreshChild(true);\n this.canDelayUpdate = delayUpdate.indexOf(this.getModuleName()) !== -1;\n // Used timeout to resolve template binding\n // Reference link: https://github.com/facebook/react/issues/10309#issuecomment-318433235\n this.renderReactComponent();\n if (this.portals && this.portals.length) {\n this.mountingState = true;\n this.renderReactTemplates();\n this.mountingState = false;\n }\n };\n ComponentBase.prototype.componentDidUpdate = function (prev) {\n if (!this.isshouldComponentUpdateCalled && this.initRenderCalled && !this.isReactForeceUpdate) {\n if (prev !== this.props) {\n this.isshouldComponentUpdateCalled = true;\n this.updateProperties(this.props, false, prev);\n }\n }\n };\n ComponentBase.prototype.renderReactComponent = function () {\n var ele = this.reactElement;\n if (ele && !this.isAppendCalled) {\n this.isAppendCalled = true;\n this.appendTo(ele);\n }\n };\n // Lifecycle methods are changed by React team and so we can deprecate this method and use\n // Reference link:https://reactjs.org/docs/react-component.html#unsafe_componentwillreceiveprops\n /**\n * @param {Object} nextProps - Specifies the property value.\n * @returns {boolean} - Returns boolean value.\n * @private\n */\n ComponentBase.prototype.shouldComponentUpdate = function (nextProps) {\n this.isshouldComponentUpdateCalled = true;\n if (!this.initRenderCalled) {\n this.updateProperties(nextProps, true);\n return true;\n }\n if (!this.isAppendCalled) {\n clearTimeout(this.cachedTimeOut);\n this.isAppendCalled = true;\n this.appendTo(this.reactElement);\n }\n this.updateProperties(nextProps);\n return true;\n };\n ComponentBase.prototype.updateProperties = function (nextProps, silent, prev) {\n var _this = this;\n var dProps = extend({}, nextProps);\n var keys = Object.keys(nextProps);\n var prevProps = extend({}, prev || this.props);\n // The statelessTemplates props value is taken from sample level property or default component property.\n var statelessTemplates = !isNullOrUndefined(prevProps['statelessTemplates']) ? prevProps['statelessTemplates'] :\n (!isNullOrUndefined(this['statelessTemplateProps']) ? this['statelessTemplateProps'] : []);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var propkey = keys_1[_i];\n var isClassName = propkey === 'className';\n if (propkey === 'children') {\n continue;\n }\n if (!isClassName && !isNullOrUndefined(this.htmlattributes[\"\" + propkey]) &&\n this.htmlattributes[\"\" + propkey] !== dProps[\"\" + propkey]) {\n this.htmlattributes[\"\" + propkey] = dProps[\"\" + propkey];\n }\n if (this.compareValues(prevProps[\"\" + propkey], nextProps[\"\" + propkey])) {\n delete dProps[\"\" + propkey];\n }\n else if (this.attrKeys.indexOf(propkey) !== -1) {\n if (isClassName) {\n this.clsName = true;\n var propsClsName = prevProps[\"\" + propkey].split(' ');\n for (var i = 0; i < propsClsName.length; i++) {\n this.element.classList.remove(propsClsName[parseInt(i.toString(), 10)]);\n }\n var dpropsClsName = dProps[\"\" + propkey].split(' ');\n for (var j = 0; j < dpropsClsName.length; j++) {\n this.element.classList.add(dpropsClsName[parseInt(j.toString(), 10)]);\n }\n }\n else if (propkey !== 'disabled' && !Object.prototype.hasOwnProperty.call(this.properties, propkey)) {\n delete dProps[\"\" + propkey];\n }\n }\n else if (propkey === 'value' && nextProps[\"\" + propkey] === this[\"\" + propkey]) {\n delete dProps[\"\" + propkey];\n }\n else if (statelessTemplates.indexOf(propkey) > -1 && ((propkey === 'content' && typeof dProps[\"\" + propkey] === 'function') || (nextProps[\"\" + propkey].toString() === this[\"\" + propkey].toString()))) {\n delete dProps[\"\" + propkey];\n }\n }\n if (dProps['children']) {\n delete dProps['children'];\n }\n if (this.initRenderCalled && (this.canDelayUpdate || prevProps.delayUpdate)) {\n setTimeout(function () {\n _this.refreshProperties(dProps, nextProps, silent);\n });\n }\n else {\n this.refreshProperties(dProps, nextProps, silent);\n }\n };\n ComponentBase.prototype.refreshProperties = function (dProps, nextProps, silent) {\n var statelessTemplates = !isNullOrUndefined(this.props['statelessTemplates']) ? this.props['statelessTemplates'] : [];\n if (Object.keys(dProps).length) {\n if (!silent) {\n this.processComplexTemplate(dProps, this);\n }\n this.setProperties(dProps, silent);\n }\n if (statelessTemplates.indexOf('directiveTemplates') === -1) {\n this.refreshChild(silent, nextProps);\n }\n };\n ComponentBase.prototype.processComplexTemplate = function (curObject, context) {\n var compTemplate = context.complexTemplate;\n if (compTemplate) {\n for (var prop in compTemplate) {\n if (Object.prototype.hasOwnProperty.call(compTemplate, prop)) {\n var PropVal = compTemplate[\"\" + prop];\n if (curObject[\"\" + prop]) {\n setValue(PropVal, getValue(prop, curObject), curObject);\n }\n }\n }\n }\n };\n ComponentBase.prototype.getDefaultAttributes = function () {\n var _this = this;\n this.isReact = true;\n var propKeys = Object.keys(this.props);\n //let stringValue: string[] = ['autocomplete', 'dropdownlist', 'combobox'];\n var ignoreProps = ['children', 'statelessTemplates', 'immediateRender', 'isLegacyTemplate', 'delayUpdate'];\n // if ((stringValue.indexOf(this.getModuleName()) !== -1) && (!isNullOrUndefined(this.props[\"value\"]))) {\n // this.value = (<{ [key: string]: Object }>this.props)[\"value\"];\n // }\n if (!this.htmlattributes) {\n this.htmlattributes = {};\n }\n this.attrKeys = defaulthtmlkeys.concat(this.controlAttributes || []);\n for (var _i = 0, propKeys_1 = propKeys; _i < propKeys_1.length; _i++) {\n var prop = propKeys_1[_i];\n if (prop.indexOf('data-') !== -1 || prop.indexOf('aria-') !== -1 || this.attrKeys.indexOf(prop) !== -1 || (Object.keys(this.properties).indexOf(\"\" + prop) === -1 && ignoreProps.indexOf(\"\" + prop) === -1)) {\n if (this.htmlattributes[\"\" + prop] !== this.props[\"\" + prop]) {\n this.htmlattributes[\"\" + prop] = this.props[\"\" + prop];\n }\n }\n }\n if (!this.htmlattributes.ref) {\n this.htmlattributes.ref = function (ele) {\n _this.reactElement = ele;\n };\n var keycompoentns = ['autocomplete', 'combobox', 'dropdownlist', 'dropdowntree', 'multiselect',\n 'listbox', 'colorpicker', 'numerictextbox', 'textbox',\n 'uploader', 'maskedtextbox', 'slider', 'datepicker', 'datetimepicker', 'daterangepicker', 'timepicker', 'checkbox', 'switch', 'radio', 'rating', 'textarea', 'multicolumncombobox'];\n if (keycompoentns.indexOf(this.getModuleName()) !== -1) {\n this.htmlattributes.key = '' + ComponentBase.reactUid;\n ComponentBase.reactUid++;\n if (this.type && !this.htmlattributes['type']) {\n this.htmlattributes['type'] = this.multiline ? 'hidden' : this.type;\n }\n if (this.name && !this.htmlattributes['name']) {\n this.htmlattributes['name'] = this.name;\n }\n }\n }\n if (this.clsName) {\n var clsList = this.element.classList;\n var className = this.htmlattributes['className'];\n for (var i = 0; i < clsList.length; i++) {\n if ((className.indexOf(clsList[parseInt(i.toString(), 10)]) === -1)) {\n this.htmlattributes['className'] = this.htmlattributes['className'] + ' ' + clsList[parseInt(i.toString(), 10)];\n }\n }\n }\n return this.htmlattributes;\n };\n ComponentBase.prototype.trigger = function (eventName, eventProp, successHandler) {\n var _this = this;\n if (this.isDestroyed !== true && this.modelObserver) {\n if (isColEName.test(eventName)) {\n var handler = getValue(eventName, this);\n if (handler) {\n handler.call(this, eventProp);\n if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n if ((eventName === 'change' || eventName === 'input')) {\n if (this.props.onChange && eventProp.event) {\n this.props.onChange.call(undefined, {\n syntheticEvent: eventProp.event,\n nativeEvent: { text: eventProp.value },\n value: eventProp.value,\n target: this\n });\n }\n }\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = false;\n if (eventName === 'created') {\n setTimeout(function () {\n _this.isCreated = true;\n if (!_this.isDestroyed) {\n _this.modelObserver.notify(eventName, eventProp, successHandler);\n }\n }, 10);\n }\n else {\n this.modelObserver.notify(eventName, eventProp, successHandler);\n }\n this.isProtectedOnChange = prevDetection;\n }\n };\n ComponentBase.prototype.compareValues = function (value1, value2) {\n var typeVal = typeof value1;\n var typeVal2 = typeof value2;\n if (typeVal === typeVal2) {\n if (value1 === value2) {\n return true;\n }\n if ((!isNullOrUndefined(value1) && value1.constructor) !== (!isNullOrUndefined(value2) && value2.constructor)) {\n return false;\n }\n if (value1 instanceof Date ||\n value1 instanceof RegExp ||\n value1 instanceof String ||\n value1 instanceof Number) {\n return value1.toString() === value2.toString();\n }\n if (isObject(value1) || Array.isArray(value1)) {\n var tempVal = value1;\n var tempVal2 = value2;\n if (isObject(tempVal)) {\n tempVal = [value1];\n tempVal2 = [value2];\n }\n return this.compareObjects(tempVal, tempVal2).status;\n }\n if (value1.moduleName &&\n value1.moduleName === value2.moduleName &&\n (value1.moduleName === 'query' ||\n value1.moduleName === 'datamanager')) {\n if (JSON.stringify(value1) === JSON.stringify(value2)) {\n return true;\n }\n }\n }\n return false;\n };\n ComponentBase.prototype.compareObjects = function (oldProps, newProps, propName) {\n var status = true;\n var lenSimilarity = (oldProps.length === newProps.length);\n var diffArray = [];\n var templateProps = !isNullOrUndefined(this['templateProps']) ? this['templateProps'] : [];\n if (lenSimilarity) {\n for (var i = 0, len = newProps.length; i < len; i++) {\n var curObj = {};\n var oldProp = oldProps[parseInt(i.toString(), 10)];\n var newProp = newProps[parseInt(i.toString(), 10)];\n var keys = Object.keys(newProp);\n if (keys.length !== 0) {\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n var oldValue = oldProp[\"\" + key];\n var newValue = newProp[\"\" + key];\n if (key === 'items') {\n for (var _j = 0; _j < newValue.length; _j++) {\n if (this.getModuleName() === 'richtexteditor' && typeof (newValue[parseInt(_j.toString(), 10)]) === 'object') {\n return { status: true };\n }\n }\n }\n if (this.getModuleName() === 'grid' && key === 'field') {\n curObj[\"\" + key] = newValue;\n }\n if (!Object.prototype.hasOwnProperty.call(oldProp, key) || !((templateProps.length > 0 && templateProps.indexOf(\"\" + key) === -1 && typeof (newValue) === 'function') ? this.compareValues(oldValue.toString(), newValue.toString()) : this.compareValues(oldValue, newValue))) {\n if (!propName) {\n return { status: false };\n }\n status = false;\n curObj[\"\" + key] = newValue;\n }\n }\n }\n else if (newProps[parseInt(i.toString(), 10)] === oldProps[parseInt(i.toString(), 10)]) {\n status = true;\n }\n else {\n if (!propName) {\n return { status: false };\n }\n status = false;\n }\n if (this.getModuleName() === 'grid' && propName === 'columns' && isNullOrUndefined(curObj['field'])) {\n curObj['field'] = undefined;\n }\n if (Object.keys(curObj).length) {\n diffArray.push({ index: i, value: curObj, key: propName });\n }\n }\n }\n else {\n status = false;\n }\n return { status: status, changedProperties: diffArray };\n };\n ComponentBase.prototype.refreshChild = function (silent, props) {\n if (this.checkInjectedModules) {\n var prevModule = this.getInjectedModules() || [];\n var curModule = this.getInjectedServices() || [];\n for (var _i = 0, curModule_1 = curModule; _i < curModule_1.length; _i++) {\n var mod = curModule_1[_i];\n if (prevModule.indexOf(mod) === -1) {\n prevModule.push(mod);\n }\n }\n this.injectedModules = prevModule;\n }\n if (this.directivekeys) {\n var changedProps = [];\n var key = '';\n var directiveValue = this.validateChildren({}, this.directivekeys, (props || this.props));\n if (directiveValue && Object.keys(directiveValue).length) {\n if (!silent && this.skipRefresh) {\n for (var _a = 0, _b = this.skipRefresh; _a < _b.length; _a++) {\n var fields = _b[_a];\n delete directiveValue[\"\" + fields];\n }\n }\n if (this.prevProperties) {\n var dKeys = Object.keys(this.prevProperties);\n for (var i = 0; i < dKeys.length; i++) {\n key = dKeys[parseInt(i.toString(), 10)];\n if (!Object.prototype.hasOwnProperty.call(directiveValue, key)) {\n continue;\n }\n var compareOutput = this.compareObjects(this.prevProperties[\"\" + key], directiveValue[\"\" + key], key);\n if (compareOutput.status) {\n delete directiveValue[\"\" + key];\n }\n else {\n if (compareOutput.changedProperties.length) {\n changedProps = changedProps.concat(compareOutput.changedProperties);\n }\n var obj = {};\n obj[\"\" + key] = directiveValue[\"\" + key];\n this.prevProperties = extend(this.prevProperties, obj);\n }\n }\n }\n else {\n this.prevProperties = extend({}, directiveValue, {}, true);\n }\n if (changedProps.length) {\n if (this.getModuleName() === 'grid' && key === 'columns') {\n for (var _c1 = 0, allColumns = this.columns; _c1 < allColumns.length; _c1++) {\n var compareField1 = getValue('field', allColumns[parseInt(_c1.toString(), 10)]);\n var compareField2 = getValue(_c1 + '.value.field', changedProps);\n if (compareField1 === compareField2) {\n var propInstance = getValue(changedProps[parseInt(_c1.toString(), 10)].key + '.' + changedProps[parseInt(_c1.toString(), 10)].index, this);\n if (propInstance && propInstance.setProperties) {\n propInstance.setProperties(changedProps[parseInt(_c1.toString(), 10)].value);\n }\n else {\n extend(propInstance, changedProps[parseInt(_c1.toString(), 10)].value);\n }\n }\n else {\n this.setProperties(directiveValue, silent);\n }\n }\n }\n else {\n for (var _c = 0, changedProps_1 = changedProps; _c < changedProps_1.length; _c++) {\n var changes = changedProps_1[_c];\n var propInstance = getValue(changes.key + '.' + changes.index, this);\n if (propInstance && propInstance.setProperties) {\n propInstance.setProperties(changes.value);\n }\n else {\n extend(propInstance, changes.value);\n }\n }\n }\n }\n else {\n this.setProperties(directiveValue, silent);\n }\n }\n }\n };\n ComponentBase.prototype.componentWillUnmount = function () {\n clearTimeout(this.cachedTimeOut);\n var modulesName = ['dropdowntree', 'checkbox'];\n var hasModule = ((!modulesName.indexOf(this.getModuleName())) ? document.body.contains(this.element) : true);\n if (this.initRenderCalled && this.isAppendCalled && this.element && hasModule && !this.isDestroyed && this.isCreated) {\n this.destroy();\n }\n onIntlChange.offIntlEvents();\n };\n ComponentBase.prototype.appendReactElement = function (element, container) {\n var portal = ReactDOM.createPortal(element, container);\n if (!this.portals) {\n this.portals = [portal];\n }\n else {\n this.portals.push(portal);\n }\n };\n ComponentBase.prototype.renderReactTemplates = function (callback) {\n this.isReactForeceUpdate = true;\n if (callback) {\n this.forceUpdate(callback);\n }\n else {\n this.forceUpdate();\n }\n this.isReactForeceUpdate = false;\n };\n ComponentBase.prototype.clearTemplate = function (templateNames, index, callback) {\n var _this = this;\n var tempPortal = [];\n if (templateNames && templateNames.length) {\n Array.prototype.forEach.call(templateNames, function (propName) {\n var propIndexCount = 0;\n _this.portals.forEach(function (portal) {\n if (portal.propName === propName) {\n tempPortal.push(propIndexCount);\n propIndexCount++;\n }\n });\n if (!isNullOrUndefined(index) && _this.portals[index] && _this.portals[index].propName === propName) {\n _this.portals.splice(index, 1);\n }\n else {\n for (var i = 0; i < _this.portals.length; i++) {\n if (_this.portals[parseInt(i.toString(), 10)].propName === propName) {\n _this.portals.splice(i, 1);\n i--;\n }\n }\n }\n });\n }\n else {\n this.portals = [];\n }\n this.renderReactTemplates(callback);\n };\n ComponentBase.prototype.validateChildren = function (childCache, mapper, props) {\n var flag = false;\n var childs = React.Children.toArray(props.children);\n for (var _i = 0, childs_1 = childs; _i < childs_1.length; _i++) {\n var child = childs_1[_i];\n var ifield = this.getChildType(child);\n var key = mapper[\"\" + ifield];\n if (ifield && mapper) {\n var childProps = this.getChildProps(React.Children.toArray(child.props.children), key);\n if (childProps.length) {\n flag = true;\n childCache[child.type.propertyName || ifield] = childProps;\n }\n }\n }\n if (flag) {\n return childCache;\n }\n return null;\n };\n ComponentBase.prototype.getChildType = function (child) {\n if (child.type && child.type.isDirective) {\n return child.type.moduleName || '';\n }\n return '';\n };\n ComponentBase.prototype.getChildProps = function (subChild, matcher) {\n var ret = [];\n for (var _i = 0, subChild_1 = subChild; _i < subChild_1.length; _i++) {\n var child = subChild_1[_i];\n var accessProp = false;\n var key = void 0;\n if (typeof matcher === 'string') {\n accessProp = true;\n key = matcher;\n }\n else {\n key = Object.keys(matcher)[0];\n }\n var prop = child.props;\n var field = this.getChildType(child);\n if (field === key) {\n if (accessProp || !prop.children) {\n var cacheVal = extend({}, prop, {}, true);\n this.processComplexTemplate(cacheVal, child.type);\n ret.push(cacheVal);\n }\n else {\n var cachedValue = this.validateChildren(extend({}, prop), matcher[\"\" + key], prop) || prop;\n if (cachedValue['children']) {\n delete cachedValue['children'];\n }\n this.processComplexTemplate(cachedValue, child.type);\n ret.push(cachedValue);\n }\n }\n }\n return ret;\n };\n ComponentBase.prototype.getInjectedServices = function () {\n var childs = React.Children.toArray(this.props.children);\n for (var _i = 0, childs_2 = childs; _i < childs_2.length; _i++) {\n var child = childs_2[_i];\n if (child.type && child.type.isService) {\n return child.props.services;\n }\n }\n return [];\n };\n /**\n * @private\n */\n ComponentBase.reactUid = 1;\n return ComponentBase;\n}(React.Component));\nexport { ComponentBase };\n","/**\n * Apply mixins for the React components.\n *\n * @param {any} derivedClass ?\n * @param {any[]} baseClass ?\n * @returns {void} ?\n * @private\n */\nexport function applyMixins(derivedClass, baseClass) {\n baseClass.forEach(function (baseClass) {\n Object.getOwnPropertyNames(baseClass.prototype).forEach(function (name) {\n if (name !== 'isMounted' && name !== 'replaceState' && name !== 'render') {\n derivedClass.prototype[\"\" + name] = baseClass.prototype[\"\" + name];\n }\n });\n });\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\n/**\n * Directory base\n */\nvar ComplexBase = /** @class */ (function (_super) {\n __extends(ComplexBase, _super);\n function ComplexBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ComplexBase.prototype.render = function () {\n return null;\n };\n ComplexBase.isDirective = true;\n return ComplexBase;\n}(React.PureComponent));\nexport { ComplexBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Dependency injection\n */\nimport * as React from 'react';\nvar Inject = /** @class */ (function (_super) {\n __extends(Inject, _super);\n function Inject() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Inject.prototype.render = function () {\n return null;\n };\n Inject.isService = true;\n return Inject;\n}(React.PureComponent));\nexport { Inject };\n","/* eslint-disable @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types */\n/**\n * Template compiler for react\n */\nimport { setTemplateEngine, getTemplateEngine, extend } from '@syncfusion/ej2-base';\nimport * as ReactDOM from 'react-dom';\nimport * as React from 'react';\n/**\n * Compile the string value to DOM elements.\n */\nvar stringCompiler = getTemplateEngine();\n/**\n * Compile the template property to the DOM elements.\n *\n * @param {any} templateElement ?\n * @param {Object} helper ?\n * @returns {Function} ?\n * @private\n */\nexport function compile(templateElement, helper) {\n if (typeof templateElement === 'string' || (templateElement.prototype && templateElement.prototype.CSPTemplate && typeof templateElement === 'function')) {\n return stringCompiler(templateElement, helper);\n }\n else {\n return function (data, component, prop, element) {\n var actTemplate = templateElement;\n var actData = data;\n if (typeof actTemplate === 'object') {\n actTemplate = templateElement.template;\n actData = extend({}, data, templateElement.data || {});\n }\n var cEle;\n if (element) {\n cEle = element;\n }\n else {\n cEle = document.createElement('div');\n }\n var rele = React.createElement(actTemplate, actData);\n var portal = ReactDOM.createPortal(rele, cEle);\n portal.propName = prop;\n if (!component.portals) {\n component.portals = [portal];\n }\n else {\n component.portals.push(portal);\n }\n if (!element) {\n return [cEle];\n }\n };\n }\n}\nsetTemplateEngine({ compile: compile });\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { CircularGauge } from '@syncfusion/ej2-circulargauge';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the React Circular Gauge component. This tag is used to customize the properties of the circular gauge to visualize the data in circular scale.\n * ```tsx\n * \n * ```\n */\nvar CircularGaugeComponent = /** @class */ (function (_super) {\n __extends(CircularGaugeComponent, _super);\n function CircularGaugeComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = true;\n _this.directivekeys = { 'axes': { 'axis': { 'annotations': 'annotation', 'ranges': 'range', 'pointers': 'pointer' } } };\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n CircularGaugeComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement('div', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return CircularGaugeComponent;\n}(CircularGauge));\nexport { CircularGaugeComponent };\napplyMixins(CircularGaugeComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { ComplexBase } from '@syncfusion/ej2-react-base';\n/**\n * Represents the directive to render the axes in the Circular Gauge.\n * ```tsx\n * \n * \n * \n * \n * \n * ```\n */\nvar AxisDirective = /** @class */ (function (_super) {\n __extends(AxisDirective, _super);\n function AxisDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AxisDirective.moduleName = 'axis';\n return AxisDirective;\n}(ComplexBase));\nexport { AxisDirective };\nvar AxesDirective = /** @class */ (function (_super) {\n __extends(AxesDirective, _super);\n function AxesDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AxesDirective.propertyName = 'axes';\n AxesDirective.moduleName = 'axes';\n return AxesDirective;\n}(ComplexBase));\nexport { AxesDirective };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { ComplexBase } from '@syncfusion/ej2-react-base';\n/**\n * Represents the directive to render and customize the pointers in an axis of circular gauge.\n * ```tsx\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * ```\n */\nvar PointerDirective = /** @class */ (function (_super) {\n __extends(PointerDirective, _super);\n function PointerDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PointerDirective.moduleName = 'pointer';\n return PointerDirective;\n}(ComplexBase));\nexport { PointerDirective };\nvar PointersDirective = /** @class */ (function (_super) {\n __extends(PointersDirective, _super);\n function PointersDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n PointersDirective.propertyName = 'pointers';\n PointersDirective.moduleName = 'pointers';\n return PointersDirective;\n}(ComplexBase));\nexport { PointersDirective };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { ComplexBase } from '@syncfusion/ej2-react-base';\n/**\n * Represents the directive to render and customize the ranges in an axis of circular gauge.\n * ```tsx\n * \n * \n * \n * \n * \n * \n * \n * \n * \n * ```\n */\nvar RangeDirective = /** @class */ (function (_super) {\n __extends(RangeDirective, _super);\n function RangeDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n RangeDirective.moduleName = 'range';\n return RangeDirective;\n}(ComplexBase));\nexport { RangeDirective };\nvar RangesDirective = /** @class */ (function (_super) {\n __extends(RangesDirective, _super);\n function RangesDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n RangesDirective.propertyName = 'ranges';\n RangesDirective.moduleName = 'ranges';\n return RangesDirective;\n}(ComplexBase));\nexport { RangesDirective };\n","import React, { useEffect, useState } from \"react\";\r\nimport {\r\n CircularGaugeComponent,\r\n AxesDirective,\r\n AxisDirective,\r\n PointersDirective,\r\n PointerDirective,\r\n RangesDirective,\r\n RangeDirective,\r\n} from \"@syncfusion/ej2-react-circulargauge\";\r\nimport axiosClient from \"../Utils/axiosClient\";\r\n\r\nconst GaugeChart = () => {\r\n const [data, setData] = useState(0);\r\n\r\n useEffect(() => {\r\n const fetchWhatsappQuality = async () => {\r\n try {\r\n const response = await axiosClient.get(\"/users/GetWhatsappQuality\");\r\n\r\n if (response.status === 200) {\r\n const formattedData = response.data;\r\n\r\n let randomValue;\r\n\r\n if (formattedData === \"GREEN\")\r\n // randomValue = Math.floor(Math.random() * (100 - 90 + 1)) + 90;\r\n randomValue = 100;\r\n else if (formattedData === \"ORANGE\")\r\n randomValue = Math.floor(Math.random() * (89 - 70 + 1)) + 70;\r\n else if (formattedData === \"RED\")\r\n randomValue = Math.floor(Math.random() * (69 - 30 + 1)) + 30;\r\n // else randomValue = Math.floor(Math.random() * (30 - 0 + 1));\r\n else randomValue = 0;\r\n\r\n setData(randomValue);\r\n }\r\n } catch (error) {}\r\n };\r\n fetchWhatsappQuality();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default GaugeChart;\r\n","/* eslint-disable valid-jsdoc */\n/* eslint-disable security/detect-object-injection */\nimport { DataUtil } from './util';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Query class is used to build query which is used by the DataManager to communicate with datasource.\n */\nvar Query = /** @class */ (function () {\n /**\n * Constructor for Query class.\n *\n * @param {string|string[]} from?\n * @param from\n * @hidden\n */\n function Query(from) {\n /** @hidden */\n this.subQuery = null;\n /** @hidden */\n this.isChild = false;\n /** @hidden */\n this.distincts = [];\n this.queries = [];\n this.key = '';\n this.fKey = '';\n if (typeof from === 'string') {\n this.fromTable = from;\n }\n else if (from && from instanceof Array) {\n this.lookups = from;\n }\n this.expands = [];\n this.sortedColumns = [];\n this.groupedColumns = [];\n this.subQuery = null;\n this.isChild = false;\n this.params = [];\n this.lazyLoad = [];\n return this;\n }\n Object.defineProperty(Query.prototype, \"moduleName\", {\n /** @hidden */\n get: function () { return 'query'; },\n enumerable: true,\n configurable: true\n });\n ;\n /**\n * Sets the primary key.\n *\n * @param {string} field - Defines the column field.\n */\n Query.prototype.setKey = function (field) {\n this.key = field;\n return this;\n };\n /**\n * Sets default DataManager to execute query.\n *\n * @param {DataManager} dataManager - Defines the DataManager.\n */\n Query.prototype.using = function (dataManager) {\n this.dataManager = dataManager;\n return this;\n };\n /**\n * Executes query with the given DataManager.\n *\n * @param {DataManager} dataManager - Defines the DataManager.\n * @param {Function} done - Defines the success callback.\n * @param {Function} fail - Defines the failure callback.\n * @param {Function} always - Defines the callback which will be invoked on either success or failure.\n *\n *
\n     * let dataManager: DataManager = new DataManager([{ ID: '10' }, { ID: '2' }, { ID: '1' }, { ID: '20' }]);\n     * let query: Query = new Query();\n     * query.sortBy('ID', (x: string, y: string): number => { return parseInt(x, 10) - parseInt(y, 10) });\n     * let promise: Promise< Object > = query.execute(dataManager);\n     * promise.then((e: { result: Object }) => { });\n     * 
\n */\n Query.prototype.execute = function (dataManager, done, fail, always) {\n dataManager = dataManager || this.dataManager;\n if (dataManager) {\n return dataManager.executeQuery(this, done, fail, always);\n }\n return DataUtil.throwError('Query - execute() : dataManager needs to be is set using \"using\" function or should be passed as argument');\n };\n /**\n * Executes query with the local datasource.\n *\n * @param {DataManager} dataManager - Defines the DataManager.\n */\n Query.prototype.executeLocal = function (dataManager) {\n dataManager = dataManager || this.dataManager;\n if (dataManager) {\n return dataManager.executeLocal(this);\n }\n return DataUtil.throwError('Query - executeLocal() : dataManager needs to be is set using \"using\" function or should be passed as argument');\n };\n /**\n * Creates deep copy of the Query object.\n */\n Query.prototype.clone = function () {\n var cloned = new Query();\n cloned.queries = this.queries.slice(0);\n cloned.key = this.key;\n cloned.isChild = this.isChild;\n cloned.dataManager = this.dataManager;\n cloned.fromTable = this.fromTable;\n cloned.params = this.params.slice(0);\n cloned.expands = this.expands.slice(0);\n cloned.sortedColumns = this.sortedColumns.slice(0);\n cloned.groupedColumns = this.groupedColumns.slice(0);\n cloned.subQuerySelector = this.subQuerySelector;\n cloned.subQuery = this.subQuery;\n cloned.fKey = this.fKey;\n cloned.isCountRequired = this.isCountRequired;\n cloned.distincts = this.distincts.slice(0);\n cloned.lazyLoad = this.lazyLoad.slice(0);\n return cloned;\n };\n /**\n * Specifies the name of table to retrieve data in query execution.\n *\n * @param {string} tableName - Defines the table name.\n */\n Query.prototype.from = function (tableName) {\n this.fromTable = tableName;\n return this;\n };\n /**\n * Adds additional parameter which will be sent along with the request which will be generated while DataManager execute.\n *\n * @param {string} key - Defines the key of additional parameter.\n * @param {Function|string} value - Defines the value for the key.\n */\n Query.prototype.addParams = function (key, value) {\n if (typeof value === 'function') {\n this.params.push({ key: key, fn: value });\n }\n else {\n this.params.push({ key: key, value: value });\n }\n return this;\n };\n /**\n * @param fields\n * @hidden\n */\n Query.prototype.distinct = function (fields) {\n if (typeof fields === 'string') {\n this.distincts = [].slice.call([fields], 0);\n }\n else {\n this.distincts = fields.slice(0);\n }\n return this;\n };\n /**\n * Expands the related table.\n *\n * @param {string|Object[]} tables\n */\n Query.prototype.expand = function (tables) {\n if (typeof tables === 'string') {\n this.expands = [].slice.call([tables], 0);\n }\n else {\n this.expands = tables.slice(0);\n }\n return this;\n };\n /**\n * Filter data with given filter criteria.\n *\n * @param {string|Predicate} fieldName - Defines the column field or Predicate.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string|number|boolean} value - Defines the values to match with data.\n * @param {boolean} ignoreCase - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreAccent\n * @param matchCase\n */\n Query.prototype.where = function (fieldName, operator, value, ignoreCase, ignoreAccent, matchCase) {\n operator = operator ? (operator).toLowerCase() : null;\n var predicate = null;\n if (typeof fieldName === 'string') {\n predicate = new Predicate(fieldName, operator, value, ignoreCase, ignoreAccent, matchCase);\n }\n else if (fieldName instanceof Predicate) {\n predicate = fieldName;\n }\n this.queries.push({\n fn: 'onWhere',\n e: predicate\n });\n return this;\n };\n /**\n * Search data with given search criteria.\n *\n * @param {string|number|boolean} searchKey - Defines the search key.\n * @param {string|string[]} fieldNames - Defines the collection of column fields.\n * @param {string} operator - Defines the operator how to search data.\n * @param {boolean} ignoreCase - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreAccent\n */\n Query.prototype.search = function (searchKey, fieldNames, operator, ignoreCase, ignoreAccent) {\n if (typeof fieldNames === 'string') {\n fieldNames = [fieldNames];\n }\n if (!operator || operator === 'none') {\n operator = 'contains';\n }\n var comparer = DataUtil.fnOperators[operator];\n this.queries.push({\n fn: 'onSearch',\n e: {\n fieldNames: fieldNames,\n operator: operator,\n searchKey: searchKey,\n ignoreCase: ignoreCase,\n ignoreAccent: ignoreAccent,\n comparer: comparer\n }\n });\n return this;\n };\n /**\n * Sort the data with given sort criteria.\n * By default, sort direction is ascending.\n *\n * @param {string|string[]} fieldName - Defines the single or collection of column fields.\n * @param {string|Function} comparer - Defines the sort direction or custom sort comparer function.\n * @param isFromGroup\n */\n Query.prototype.sortBy = function (fieldName, comparer, isFromGroup) {\n return this.sortByForeignKey(fieldName, comparer, isFromGroup);\n };\n /**\n * Sort the data with given sort criteria.\n * By default, sort direction is ascending.\n *\n * @param {string|string[]} fieldName - Defines the single or collection of column fields.\n * @param {string|Function} comparer - Defines the sort direction or custom sort comparer function.\n * @param isFromGroup\n * @param {string} direction - Defines the sort direction .\n */\n Query.prototype.sortByForeignKey = function (fieldName, comparer, isFromGroup, direction) {\n var order = !isNullOrUndefined(direction) ? direction : 'ascending';\n var sorts;\n var temp;\n if (typeof fieldName === 'string' && DataUtil.endsWith(fieldName.toLowerCase(), ' desc')) {\n fieldName = fieldName.replace(/ desc$/i, '');\n comparer = 'descending';\n }\n if (!comparer || typeof comparer === 'string') {\n order = comparer ? comparer.toLowerCase() : 'ascending';\n comparer = DataUtil.fnSort(comparer);\n }\n if (isFromGroup) {\n sorts = Query.filterQueries(this.queries, 'onSortBy');\n for (var i = 0; i < sorts.length; i++) {\n temp = sorts[i].e.fieldName;\n if (typeof temp === 'string') {\n if (temp === fieldName) {\n return this;\n }\n }\n else if (temp instanceof Array) {\n for (var j = 0; j < temp.length; j++) {\n if (temp[j] === fieldName || fieldName.toLowerCase() === temp[j] + ' desc') {\n return this;\n }\n }\n }\n }\n }\n this.queries.push({\n fn: 'onSortBy',\n e: {\n fieldName: fieldName,\n comparer: comparer,\n direction: order\n }\n });\n return this;\n };\n /**\n * Sorts data in descending order.\n *\n * @param {string} fieldName - Defines the column field.\n */\n Query.prototype.sortByDesc = function (fieldName) {\n return this.sortBy(fieldName, 'descending');\n };\n /**\n * Groups data with the given field name.\n *\n * @param {string} fieldName - Defines the column field.\n * @param fn\n * @param format\n */\n Query.prototype.group = function (fieldName, fn, format) {\n this.sortBy(fieldName, null, true);\n this.queries.push({\n fn: 'onGroup',\n e: {\n fieldName: fieldName,\n comparer: fn ? fn : null,\n format: format ? format : null\n }\n });\n return this;\n };\n /**\n * Gets data based on the given page index and size.\n *\n * @param {number} pageIndex - Defines the current page index.\n * @param {number} pageSize - Defines the no of records per page.\n */\n Query.prototype.page = function (pageIndex, pageSize) {\n this.queries.push({\n fn: 'onPage',\n e: {\n pageIndex: pageIndex,\n pageSize: pageSize\n }\n });\n return this;\n };\n /**\n * Gets data based on the given start and end index.\n *\n * @param {number} start - Defines the start index of the datasource.\n * @param {number} end - Defines the end index of the datasource.\n */\n Query.prototype.range = function (start, end) {\n this.queries.push({\n fn: 'onRange',\n e: {\n start: start,\n end: end\n }\n });\n return this;\n };\n /**\n * Gets data from the top of the data source based on given number of records count.\n *\n * @param {number} nos - Defines the no of records to retrieve from datasource.\n */\n Query.prototype.take = function (nos) {\n this.queries.push({\n fn: 'onTake',\n e: {\n nos: nos\n }\n });\n return this;\n };\n /**\n * Skips data with given number of records count from the top of the data source.\n *\n * @param {number} nos - Defines the no of records skip in the datasource.\n */\n Query.prototype.skip = function (nos) {\n this.queries.push({\n fn: 'onSkip',\n e: { nos: nos }\n });\n return this;\n };\n /**\n * Selects specified columns from the data source.\n *\n * @param {string|string[]} fieldNames - Defines the collection of column fields.\n */\n Query.prototype.select = function (fieldNames) {\n if (typeof fieldNames === 'string') {\n fieldNames = [].slice.call([fieldNames], 0);\n }\n this.queries.push({\n fn: 'onSelect',\n e: { fieldNames: fieldNames }\n });\n return this;\n };\n /**\n * Gets the records in hierarchical relationship from two tables. It requires the foreign key to relate two tables.\n *\n * @param {Query} query - Defines the query to relate two tables.\n * @param {Function} selectorFn - Defines the custom function to select records.\n */\n Query.prototype.hierarchy = function (query, selectorFn) {\n this.subQuerySelector = selectorFn;\n this.subQuery = query;\n return this;\n };\n /**\n * Sets the foreign key which is used to get data from the related table.\n *\n * @param {string} key - Defines the foreign key.\n */\n Query.prototype.foreignKey = function (key) {\n this.fKey = key;\n return this;\n };\n /**\n * It is used to get total number of records in the DataManager execution result.\n */\n Query.prototype.requiresCount = function () {\n this.isCountRequired = true;\n return this;\n };\n //type - sum, avg, min, max\n /**\n * Aggregate the data with given type and field name.\n *\n * @param {string} type - Defines the aggregate type.\n * @param {string} field - Defines the column field to aggregate.\n */\n Query.prototype.aggregate = function (type, field) {\n this.queries.push({\n fn: 'onAggregates',\n e: { field: field, type: type }\n });\n return this;\n };\n /**\n * Pass array of filterColumn query for performing filter operation.\n *\n * @param {QueryOptions[]} queries\n * @param {string} name\n * @hidden\n */\n Query.filterQueries = function (queries, name) {\n return queries.filter(function (q) {\n return q.fn === name;\n });\n };\n /**\n * To get the list of queries which is already filtered in current data source.\n *\n * @param {Object[]} queries\n * @param {string[]} singles\n * @hidden\n */\n Query.filterQueryLists = function (queries, singles) {\n var filtered = queries.filter(function (q) {\n return singles.indexOf(q.fn) !== -1;\n });\n var res = {};\n for (var i = 0; i < filtered.length; i++) {\n if (!res[filtered[i].fn]) {\n res[filtered[i].fn] = filtered[i].e;\n }\n }\n return res;\n };\n return Query;\n}());\nexport { Query };\n/**\n * Predicate class is used to generate complex filter criteria.\n * This will be used by DataManager to perform multiple filtering operation.\n */\nvar Predicate = /** @class */ (function () {\n /**\n * Constructor for Predicate class.\n *\n * @param {string|Predicate} field\n * @param {string} operator\n * @param {string|number|boolean|Predicate|Predicate[]} value\n * @param {boolean=false} ignoreCase\n * @param ignoreAccent\n * @param {boolean} matchCase\n * @hidden\n */\n function Predicate(field, operator, value, ignoreCase, ignoreAccent, matchCase) {\n if (ignoreCase === void 0) { ignoreCase = false; }\n /** @hidden */\n this.ignoreAccent = false;\n /** @hidden */\n this.isComplex = false;\n if (typeof field === 'string') {\n this.field = field;\n this.operator = operator.toLowerCase();\n this.value = value;\n this.matchCase = matchCase;\n this.ignoreCase = ignoreCase;\n this.ignoreAccent = ignoreAccent;\n this.isComplex = false;\n this.comparer = DataUtil.fnOperators.processOperator(this.operator);\n }\n else if (field instanceof Predicate && value instanceof Predicate || value instanceof Array) {\n this.isComplex = true;\n this.condition = operator.toLowerCase();\n this.predicates = [field];\n this.matchCase = field.matchCase;\n this.ignoreCase = field.ignoreCase;\n this.ignoreAccent = field.ignoreAccent;\n if (value instanceof Array) {\n [].push.apply(this.predicates, value);\n }\n else {\n this.predicates.push(value);\n }\n }\n return this;\n }\n /**\n * Adds n-number of new predicates on existing predicate with “and” condition.\n *\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.and = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'and');\n };\n /**\n * Adds new predicate on existing predicate with “and” condition.\n *\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreCase\n * @param ignoreAccent\n */\n Predicate.prototype.and = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'and', ignoreCase, ignoreAccent);\n };\n /**\n * Adds n-number of new predicates on existing predicate with “or” condition.\n *\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.or = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'or');\n };\n /**\n * Adds new predicate on existing predicate with “or” condition.\n *\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreCase\n * @param ignoreAccent\n */\n Predicate.prototype.or = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'or', ignoreCase, ignoreAccent);\n };\n /**\n * Adds n-number of new predicates on existing predicate with “and not” condition.\n *\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.ornot = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'or not');\n };\n /**\n * Adds new predicate on existing predicate with “and not” condition.\n *\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreCase\n * @param ignoreAccent\n */\n Predicate.prototype.ornot = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'ornot', ignoreCase, ignoreAccent);\n };\n /**\n * Adds n-number of new predicates on existing predicate with “and not” condition.\n *\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.andnot = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'and not');\n };\n /**\n * Adds new predicate on existing predicate with “and not” condition.\n *\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreCase\n * @param ignoreAccent\n */\n Predicate.prototype.andnot = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'andnot', ignoreCase, ignoreAccent);\n };\n /**\n * Converts plain JavaScript object to Predicate object.\n *\n * @param {Predicate[]|Predicate} json - Defines single or collection of Predicate.\n */\n Predicate.fromJson = function (json) {\n if (json instanceof Array) {\n var res = [];\n for (var i = 0, len = json.length; i < len; i++) {\n res.push(this.fromJSONData(json[i]));\n }\n return res;\n }\n var pred = json;\n return this.fromJSONData(pred);\n };\n /**\n * Validate the record based on the predicates.\n *\n * @param {Object} record - Defines the datasource record.\n */\n Predicate.prototype.validate = function (record) {\n var predicate = this.predicates ? this.predicates : [];\n var ret;\n var isAnd;\n if (!this.isComplex && this.comparer) {\n if (this.condition && this.condition.indexOf('not') !== -1) {\n this.condition = this.condition.split('not')[0] === '' ? undefined : this.condition.split('not')[0];\n return !this.comparer.call(this, DataUtil.getObject(this.field, record), this.value, this.ignoreCase, this.ignoreAccent);\n }\n else {\n return this.comparer.call(this, DataUtil.getObject(this.field, record), this.value, this.ignoreCase, this.ignoreAccent);\n }\n }\n if (this.condition && this.condition.indexOf('not') !== -1) {\n isAnd = this.condition.indexOf('and') !== -1;\n }\n else {\n isAnd = this.condition === 'and';\n }\n for (var i = 0; i < predicate.length; i++) {\n if (i > 0 && this.condition && this.condition.indexOf('not') !== -1) {\n predicate[i].condition = predicate[i].condition ? predicate[i].condition + 'not' : 'not';\n }\n ret = predicate[i].validate(record);\n if (isAnd) {\n if (!ret) {\n return false;\n }\n }\n else {\n if (ret) {\n return true;\n }\n }\n }\n return isAnd;\n };\n /**\n * Converts predicates to plain JavaScript.\n * This method is uses Json stringify when serializing Predicate object.\n */\n Predicate.prototype.toJson = function () {\n var predicates;\n var p;\n if (this.isComplex) {\n predicates = [];\n p = this.predicates;\n for (var i = 0; i < p.length; i++) {\n predicates.push(p[i].toJson());\n }\n }\n return {\n isComplex: this.isComplex,\n field: this.field,\n operator: this.operator,\n value: this.value,\n ignoreCase: this.ignoreCase,\n ignoreAccent: this.ignoreAccent,\n condition: this.condition,\n predicates: predicates,\n matchCase: this.matchCase\n };\n };\n Predicate.combinePredicates = function (predicates, operator) {\n if (predicates.length === 1) {\n if (!(predicates[0] instanceof Array)) {\n return predicates[0];\n }\n predicates = predicates[0];\n }\n return new Predicate(predicates[0], operator, predicates.slice(1));\n };\n Predicate.combine = function (pred, field, operator, value, condition, ignoreCase, ignoreAccent) {\n if (field instanceof Predicate) {\n return Predicate[condition](pred, field);\n }\n if (typeof field === 'string') {\n return Predicate[condition](pred, new Predicate(field, operator, value, ignoreCase, ignoreAccent));\n }\n return DataUtil.throwError('Predicate - ' + condition + ' : invalid arguments');\n };\n Predicate.fromJSONData = function (json) {\n var preds = json.predicates || [];\n var len = preds.length;\n var predicates = [];\n var result;\n for (var i = 0; i < len; i++) {\n predicates.push(this.fromJSONData(preds[i]));\n }\n if (!json.isComplex) {\n result = new Predicate(json.field, json.operator, json.value, json.ignoreCase, json.ignoreAccent);\n }\n else {\n result = new Predicate(predicates[0], json.condition, predicates.slice(1));\n }\n return result;\n };\n return Predicate;\n}());\nexport { Predicate };\n","/**\n * Position library\n */\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nvar elementRect;\nvar popupRect;\nvar element;\nvar parentDocument;\nvar fixedParent = false;\n/**\n *\n * @param {HTMLElement} anchor - specifies the element\n * @param {HTMLElement} element - specifies the element\n * @returns {OffsetPosition} - returns the value\n */\nexport function calculateRelativeBasedPosition(anchor, element) {\n var fixedElement = false;\n var anchorPos = { left: 0, top: 0 };\n var tempAnchor = anchor;\n if (!anchor || !element) {\n return anchorPos;\n }\n if (isNullOrUndefined(element.offsetParent) && element.style.position === 'fixed') {\n fixedElement = true;\n }\n while ((element.offsetParent || fixedElement) && anchor && element.offsetParent !== anchor) {\n anchorPos.left += anchor.offsetLeft;\n anchorPos.top += anchor.offsetTop;\n anchor = anchor.offsetParent;\n }\n anchor = tempAnchor;\n while ((element.offsetParent || fixedElement) && anchor && element.offsetParent !== anchor) {\n anchorPos.left -= anchor.scrollLeft;\n anchorPos.top -= anchor.scrollTop;\n anchor = anchor.parentElement;\n }\n return anchorPos;\n}\n/**\n *\n * @param {Element} currentElement - specifies the element\n * @param {string} positionX - specifies the position\n * @param {string} positionY - specifies the position\n * @param {boolean} parentElement - specifies the boolean\n * @param {ClientRect} targetValues - specifies the client\n * @returns {OffsetPosition} - returns the position\n */\nexport function calculatePosition(currentElement, positionX, positionY, parentElement, targetValues) {\n popupRect = undefined;\n popupRect = targetValues;\n fixedParent = parentElement ? true : false;\n if (!currentElement) {\n return { left: 0, top: 0 };\n }\n if (!positionX) {\n positionX = 'left';\n }\n if (!positionY) {\n positionY = 'top';\n }\n parentDocument = currentElement.ownerDocument;\n element = currentElement;\n var pos = { left: 0, top: 0 };\n return updatePosition(positionX.toLowerCase(), positionY.toLowerCase(), pos);\n}\n/**\n *\n * @param {number} value - specifies the number\n * @param {OffsetPosition} pos - specifies the position\n * @returns {void}\n */\nfunction setPosx(value, pos) {\n pos.left = value;\n}\n/**\n *\n * @param {number} value - specifies the number\n * @param {OffsetPosition} pos - specifies the position\n * @returns {void}\n */\nfunction setPosy(value, pos) {\n pos.top = value;\n}\n/**\n *\n * @param {string} posX - specifies the position\n * @param {string} posY - specifies the position\n * @param {OffsetPosition} pos - specifies the position\n * @returns {OffsetPosition} - returns the postion\n */\nfunction updatePosition(posX, posY, pos) {\n elementRect = element.getBoundingClientRect();\n switch (posY + posX) {\n case 'topcenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementTop(), pos);\n break;\n case 'topright':\n setPosx(getElementRight(), pos);\n setPosy(getElementTop(), pos);\n break;\n case 'centercenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'centerright':\n setPosx(getElementRight(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'centerleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'bottomcenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementBottom(), pos);\n break;\n case 'bottomright':\n setPosx(getElementRight(), pos);\n setPosy(getElementBottom(), pos);\n break;\n case 'bottomleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementBottom(), pos);\n break;\n default:\n case 'topleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementTop(), pos);\n break;\n }\n element = null;\n return pos;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getBodyScrollTop() {\n return parentDocument.documentElement.scrollTop || parentDocument.body.scrollTop;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getBodyScrollLeft() {\n return parentDocument.documentElement.scrollLeft || parentDocument.body.scrollLeft;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementBottom() {\n return fixedParent ? elementRect.bottom : elementRect.bottom + getBodyScrollTop();\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementVCenter() {\n return getElementTop() + (elementRect.height / 2);\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementTop() {\n return fixedParent ? elementRect.top : elementRect.top + getBodyScrollTop();\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementLeft() {\n return elementRect.left + getBodyScrollLeft();\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementRight() {\n var popupWidth = (element && (element.classList.contains('e-date-wrapper') || element.classList.contains('e-datetime-wrapper') || (element.classList.contains('e-ddl') && element.classList.contains('e-rtl')) || element.classList.contains('e-date-range-wrapper'))) ? (popupRect ? popupRect.width : 0) :\n (popupRect && (elementRect.width >= popupRect.width) ? popupRect.width : 0);\n return elementRect.right + getBodyScrollLeft() - popupWidth;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementHCenter() {\n return getElementLeft() + (elementRect.width / 2);\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { merge, extend, isNullOrUndefined, setValue, getValue } from '@syncfusion/ej2-base';\nimport { DataUtil } from './util';\nimport { Query, Predicate } from './query';\nvar consts = { GroupGuid: '{271bbba0-1ee7}' };\n/**\n * Adaptors are specific data source type aware interfaces that are used by DataManager to communicate with DataSource.\n * This is the base adaptor class that other adaptors can extend.\n *\n * @hidden\n */\nvar Adaptor = /** @class */ (function () {\n /**\n * Constructor for Adaptor class\n *\n * @param {DataOptions} ds?\n * @param ds\n * @hidden\n * @returns aggregates\n */\n function Adaptor(ds) {\n // common options for all the adaptors\n this.options = {\n from: 'table',\n requestType: 'json',\n sortBy: 'sorted',\n select: 'select',\n skip: 'skip',\n group: 'group',\n take: 'take',\n search: 'search',\n count: 'requiresCounts',\n where: 'where',\n aggregates: 'aggregates',\n expand: 'expand'\n };\n /**\n * Specifies the type of adaptor.\n *\n * @default Adaptor\n */\n this.type = Adaptor;\n this.dataSource = ds;\n this.pvt = {};\n }\n /**\n * Returns the data from the query processing.\n *\n * @param {Object} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {Request} xhr?\n * @param ds\n * @param query\n * @param xhr\n * @returns Object\n */\n Adaptor.prototype.processResponse = function (data, ds, query, xhr) {\n return data;\n };\n return Adaptor;\n}());\nexport { Adaptor };\n/**\n * JsonAdaptor is used to process JSON data. It contains methods to process the given JSON data based on the queries.\n *\n * @hidden\n */\nvar JsonAdaptor = /** @class */ (function (_super) {\n __extends(JsonAdaptor, _super);\n function JsonAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Process the JSON data based on the provided queries.\n *\n * @param {DataManager} dataManager\n * @param {Query} query\n * @returns Object\n */\n JsonAdaptor.prototype.processQuery = function (dataManager, query) {\n var result = dataManager.dataSource.json.slice(0);\n var count = result.length;\n var countFlg = true;\n var ret;\n var key;\n var lazyLoad = {};\n var keyCount = 0;\n var group = [];\n var sort = [];\n var page;\n for (var i = 0; i < query.lazyLoad.length; i++) {\n keyCount++;\n lazyLoad[query.lazyLoad[i].key] = query.lazyLoad[i].value;\n }\n var agg = {};\n var isGroupByFormat = false;\n if (query.lazyLoad.length) {\n for (var i = 0; i < query.queries.length; i++) {\n key = query.queries[i];\n if (key.fn === 'onGroup' && !isNullOrUndefined(key.e.format)) {\n isGroupByFormat = true;\n break;\n }\n }\n }\n for (var i = 0; i < query.queries.length; i++) {\n key = query.queries[i];\n if ((key.fn === 'onPage' || key.fn === 'onGroup' || (key.fn === 'onSortBy' && !isGroupByFormat)) && query.lazyLoad.length) {\n if (key.fn === 'onGroup') {\n group.push(key.e);\n }\n if (key.fn === 'onPage') {\n page = key.e;\n }\n if (key.fn === 'onSortBy') {\n sort.unshift(key.e);\n }\n continue;\n }\n ret = this[key.fn].call(this, result, key.e, query);\n if (key.fn === 'onAggregates') {\n agg[key.e.field + ' - ' + key.e.type] = ret;\n }\n else {\n result = ret !== undefined ? ret : result;\n }\n if (key.fn === 'onPage' || key.fn === 'onSkip' || key.fn === 'onTake' || key.fn === 'onRange') {\n countFlg = false;\n }\n if (countFlg) {\n count = result.length;\n }\n }\n if (keyCount) {\n var args = {\n query: query, lazyLoad: lazyLoad, result: result, group: group, page: page, sort: sort\n };\n var lazyLoadData = this.lazyLoadGroup(args);\n result = lazyLoadData.result;\n count = lazyLoadData.count;\n }\n if (query.isCountRequired) {\n result = {\n result: result,\n count: count,\n aggregates: agg\n };\n }\n return result;\n };\n /**\n * Perform lazy load grouping in JSON array based on the given query and lazy load details.\n *\n * @param {LazyLoadGroupArgs} args\n */\n JsonAdaptor.prototype.lazyLoadGroup = function (args) {\n var count = 0;\n var agg = this.getAggregate(args.query);\n var result = args.result;\n if (!isNullOrUndefined(args.lazyLoad.onDemandGroupInfo)) {\n var req = args.lazyLoad.onDemandGroupInfo;\n for (var i = req.where.length - 1; i >= 0; i--) {\n result = this.onWhere(result, req.where[i]);\n }\n if (args.group.length !== req.level) {\n var field = args.group[req.level].fieldName;\n result = DataUtil.group(result, field, agg, null, null, args.group[req.level].comparer, true);\n if (args.sort.length) {\n result = this.onSortBy(result, args.sort[parseInt(req.level.toString(), 10)], args.query, true);\n }\n }\n else {\n for (var i = args.sort.length - 1; i >= req.level; i--) {\n result = this.onSortBy(result, args.sort[parseInt(i.toString(), 10)], args.query, false);\n }\n }\n count = result.length;\n var data = result;\n result = result.slice(req.skip);\n result = result.slice(0, req.take);\n if (args.group.length !== req.level) {\n this.formGroupResult(result, data);\n }\n }\n else {\n var field_1 = args.group[0].fieldName;\n result = DataUtil.group(result, field_1, agg, null, null, args.group[0].comparer, true);\n count = result.length;\n var data = result;\n if (args.sort.length) {\n var sort = args.sort.length > 1 ?\n args.sort.filter(function (x) { return x.fieldName === field_1; })[0] : args.sort[0];\n result = this.onSortBy(result, sort, args.query, true);\n }\n if (args.page) {\n result = this.onPage(result, args.page, args.query);\n }\n this.formGroupResult(result, data);\n }\n return { result: result, count: count };\n };\n JsonAdaptor.prototype.formGroupResult = function (result, data) {\n if (result.length && data.length) {\n var uid = 'GroupGuid';\n var childLevel = 'childLevels';\n var level = 'level';\n var records = 'records';\n result[uid] = data[uid];\n result[childLevel] = data[childLevel];\n result[level] = data[level];\n result[records] = data[records];\n }\n return result;\n };\n /**\n * Separate the aggregate query from the given queries\n *\n * @param {Query} query\n */\n JsonAdaptor.prototype.getAggregate = function (query) {\n var aggQuery = Query.filterQueries(query.queries, 'onAggregates');\n var agg = [];\n if (aggQuery.length) {\n var tmp = void 0;\n for (var i = 0; i < aggQuery.length; i++) {\n tmp = aggQuery[i].e;\n agg.push({ type: tmp.type, field: DataUtil.getValue(tmp.field, query) });\n }\n }\n return agg;\n };\n /**\n * Performs batch update in the JSON array which add, remove and update records.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n */\n JsonAdaptor.prototype.batchRequest = function (dm, changes, e) {\n var i;\n var deletedRecordsLen = changes.deletedRecords.length;\n for (i = 0; i < changes.addedRecords.length; i++) {\n this.insert(dm, changes.addedRecords[i]);\n }\n for (i = 0; i < changes.changedRecords.length; i++) {\n this.update(dm, e.key, changes.changedRecords[i]);\n }\n for (i = 0; i < deletedRecordsLen; i++) {\n this.remove(dm, e.key, changes.deletedRecords[i]);\n }\n return changes;\n };\n /**\n * Performs filter operation with the given data and where query.\n *\n * @param {Object[]} ds\n * @param {{validate:Function}} e\n * @param e.validate\n */\n JsonAdaptor.prototype.onWhere = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.filter(function (obj) {\n if (e) {\n return e.validate(obj);\n }\n });\n };\n /**\n * Returns aggregate function based on the aggregate type.\n *\n * @param {Object[]} ds\n * @param e\n * @param {string} } type\n * @param e.field\n * @param e.type\n */\n JsonAdaptor.prototype.onAggregates = function (ds, e) {\n var fn = DataUtil.aggregates[e.type];\n if (!ds || !fn || ds.length === 0) {\n return null;\n }\n return fn(ds, e.field);\n };\n /**\n * Performs search operation based on the given query.\n *\n * @param {Object[]} ds\n * @param {QueryOptions} e\n */\n JsonAdaptor.prototype.onSearch = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n if (e.fieldNames.length === 0) {\n DataUtil.getFieldList(ds[0], e.fieldNames);\n }\n return ds.filter(function (obj) {\n for (var j = 0; j < e.fieldNames.length; j++) {\n if (e.comparer.call(obj, DataUtil.getObject(e.fieldNames[j], obj), e.searchKey, e.ignoreCase, e.ignoreAccent)) {\n return true;\n }\n }\n return false;\n });\n };\n /**\n * Sort the data with given direction and field.\n *\n * @param {Object[]} ds\n * @param e\n * @param {Object} b\n * @param e.comparer\n * @param e.fieldName\n * @param query\n * @param isLazyLoadGroupSort\n */\n JsonAdaptor.prototype.onSortBy = function (ds, e, query, isLazyLoadGroupSort) {\n if (!ds || !ds.length) {\n return ds;\n }\n var fnCompare;\n var field = DataUtil.getValue(e.fieldName, query);\n if (!field) {\n return ds.sort(e.comparer);\n }\n if (field instanceof Array) {\n field = field.slice(0);\n for (var i = field.length - 1; i >= 0; i--) {\n if (!field[i]) {\n continue;\n }\n fnCompare = e.comparer;\n if (DataUtil.endsWith(field[i], ' desc')) {\n fnCompare = DataUtil.fnSort('descending');\n field[i] = field[i].replace(' desc', '');\n }\n ds = DataUtil.sort(ds, field[i], fnCompare);\n }\n return ds;\n }\n return DataUtil.sort(ds, isLazyLoadGroupSort ? 'key' : field, e.comparer);\n };\n /**\n * Group the data based on the given query.\n *\n * @param {Object[]} ds\n * @param {QueryOptions} e\n * @param {Query} query\n */\n JsonAdaptor.prototype.onGroup = function (ds, e, query) {\n if (!ds || !ds.length) {\n return ds;\n }\n var agg = this.getAggregate(query);\n return DataUtil.group(ds, DataUtil.getValue(e.fieldName, query), agg, null, null, e.comparer);\n };\n /**\n * Retrieves records based on the given page index and size.\n *\n * @param {Object[]} ds\n * @param e\n * @param {number} } pageIndex\n * @param e.pageSize\n * @param {Query} query\n * @param e.pageIndex\n */\n JsonAdaptor.prototype.onPage = function (ds, e, query) {\n var size = DataUtil.getValue(e.pageSize, query);\n var start = (DataUtil.getValue(e.pageIndex, query) - 1) * size;\n var end = start + size;\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(start, end);\n };\n /**\n * Retrieves records based on the given start and end index from query.\n *\n * @param {Object[]} ds\n * @param e\n * @param {number} } end\n * @param e.start\n * @param e.end\n */\n JsonAdaptor.prototype.onRange = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(DataUtil.getValue(e.start), DataUtil.getValue(e.end));\n };\n /**\n * Picks the given count of records from the top of the datasource.\n *\n * @param {Object[]} ds\n * @param {{nos:number}} e\n * @param e.nos\n */\n JsonAdaptor.prototype.onTake = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(0, DataUtil.getValue(e.nos));\n };\n /**\n * Skips the given count of records from the data source.\n *\n * @param {Object[]} ds\n * @param {{nos:number}} e\n * @param e.nos\n */\n JsonAdaptor.prototype.onSkip = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(DataUtil.getValue(e.nos));\n };\n /**\n * Selects specified columns from the data source.\n *\n * @param {Object[]} ds\n * @param {{fieldNames:string}} e\n * @param e.fieldNames\n */\n JsonAdaptor.prototype.onSelect = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return DataUtil.select(ds, DataUtil.getValue(e.fieldNames));\n };\n /**\n * Inserts new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param tableName\n * @param query\n * @param {number} position\n */\n JsonAdaptor.prototype.insert = function (dm, data, tableName, query, position) {\n if (isNullOrUndefined(position)) {\n return dm.dataSource.json.push(data);\n }\n else {\n return dm.dataSource.json.splice(position, 0, data);\n }\n };\n /**\n * Remove the data from the dataSource based on the key field value.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n * @returns null\n */\n JsonAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n var ds = dm.dataSource.json;\n var i;\n if (typeof value === 'object' && !(value instanceof Date)) {\n value = DataUtil.getObject(keyField, value);\n }\n for (i = 0; i < ds.length; i++) {\n if (DataUtil.getObject(keyField, ds[i]) === value) {\n break;\n }\n }\n return i !== ds.length ? ds.splice(i, 1) : null;\n };\n /**\n * Updates existing record and saves the changes to the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n * @returns null\n */\n JsonAdaptor.prototype.update = function (dm, keyField, value, tableName) {\n var ds = dm.dataSource.json;\n var i;\n var key;\n if (!isNullOrUndefined(keyField)) {\n key = getValue(keyField, value);\n }\n for (i = 0; i < ds.length; i++) {\n if (!isNullOrUndefined(keyField) && (getValue(keyField, ds[i])) === key) {\n break;\n }\n }\n return i < ds.length ? merge(ds[i], value) : null;\n };\n return JsonAdaptor;\n}(Adaptor));\nexport { JsonAdaptor };\n/**\n * URL Adaptor of DataManager can be used when you are required to use remote service to retrieve data.\n * It interacts with server-side for all DataManager Queries and CRUD operations.\n *\n * @hidden\n */\nvar UrlAdaptor = /** @class */ (function (_super) {\n __extends(UrlAdaptor, _super);\n function UrlAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Process the query to generate request body.\n *\n * @param {DataManager} dm\n * @param {Query} query\n * @param {Object[]} hierarchyFilters?\n * @param hierarchyFilters\n * @returns p\n */\n // tslint:disable-next-line:max-func-body-length\n UrlAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var queries = this.getQueryRequest(query);\n var singles = Query.filterQueryLists(query.queries, ['onSelect', 'onPage', 'onSkip', 'onTake', 'onRange']);\n var params = query.params;\n var url = dm.dataSource.url;\n var temp;\n var skip;\n var take = null;\n var options = this.options;\n var request = { sorts: [], groups: [], filters: [], searches: [], aggregates: [] };\n // calc Paging & Range\n if ('onPage' in singles) {\n temp = singles.onPage;\n skip = DataUtil.getValue(temp.pageIndex, query);\n take = DataUtil.getValue(temp.pageSize, query);\n skip = (skip - 1) * take;\n }\n else if ('onRange' in singles) {\n temp = singles.onRange;\n skip = temp.start;\n take = temp.end - temp.start;\n }\n // Sorting\n for (var i = 0; i < queries.sorts.length; i++) {\n temp = DataUtil.getValue(queries.sorts[i].e.fieldName, query);\n request.sorts.push(DataUtil.callAdaptorFunction(this, 'onEachSort', { name: temp, direction: queries.sorts[i].e.direction }, query));\n }\n // hierarchy\n if (hierarchyFilters) {\n temp = this.getFiltersFrom(hierarchyFilters, query);\n if (temp) {\n request.filters.push(DataUtil.callAdaptorFunction(this, 'onEachWhere', temp.toJson(), query));\n }\n }\n // Filters\n for (var i = 0; i < queries.filters.length; i++) {\n var res = DataUtil.callAdaptorFunction(this, 'onEachWhere', queries.filters[i].e.toJson(), query);\n if ((this.getModuleName &&\n this.getModuleName() === 'ODataV4Adaptor') &&\n !isNullOrUndefined(queries.filters[i].e.key) && queries.filters.length > 1) {\n res = '(' + res + ')';\n }\n request.filters.push(res);\n var keys_3 = typeof request.filters[i] === 'object' ? Object.keys(request.filters[i]) : [];\n for (var _i = 0, keys_1 = keys_3; _i < keys_1.length; _i++) {\n var prop = keys_1[_i];\n if (DataUtil.isNull((request)[prop])) {\n delete request[prop];\n }\n }\n }\n // Searches\n for (var i = 0; i < queries.searches.length; i++) {\n temp = queries.searches[i].e;\n request.searches.push(DataUtil.callAdaptorFunction(this, 'onEachSearch', {\n fields: temp.fieldNames,\n operator: temp.operator,\n key: temp.searchKey,\n ignoreCase: temp.ignoreCase\n }, query));\n }\n // Grouping\n for (var i = 0; i < queries.groups.length; i++) {\n request.groups.push(DataUtil.getValue(queries.groups[i].e.fieldName, query));\n }\n // aggregates\n for (var i = 0; i < queries.aggregates.length; i++) {\n temp = queries.aggregates[i].e;\n request.aggregates.push({ type: temp.type, field: DataUtil.getValue(temp.field, query) });\n }\n var req = {};\n this.getRequestQuery(options, query, singles, request, req);\n // Params\n DataUtil.callAdaptorFunction(this, 'addParams', { dm: dm, query: query, params: params, reqParams: req });\n if (query.lazyLoad.length) {\n for (var i = 0; i < query.lazyLoad.length; i++) {\n req[query.lazyLoad[i].key] = query.lazyLoad[i].value;\n }\n }\n // cleanup\n var keys = Object.keys(req);\n for (var _a = 0, keys_2 = keys; _a < keys_2.length; _a++) {\n var prop = keys_2[_a];\n if (DataUtil.isNull(req[prop]) || req[prop] === '' || req[prop].length === 0) {\n delete req[prop];\n }\n }\n if (!(options.skip in req && options.take in req) && take !== null) {\n req[options.skip] = DataUtil.callAdaptorFunction(this, 'onSkip', skip, query);\n req[options.take] = DataUtil.callAdaptorFunction(this, 'onTake', take, query);\n }\n var p = this.pvt;\n this.pvt = {};\n if (this.options.requestType === 'json') {\n return {\n data: JSON.stringify(req, DataUtil.parse.jsonDateReplacer),\n url: url,\n pvtData: p,\n type: 'POST',\n contentType: 'application/json; charset=utf-8'\n };\n }\n temp = this.convertToQueryString(req, query, dm);\n temp = (dm.dataSource.url.indexOf('?') !== -1 ? '&' : '/') + temp;\n return {\n type: 'GET', url: temp.length ? url.replace(/\\/*$/, temp) : url, pvtData: p\n };\n };\n UrlAdaptor.prototype.getRequestQuery = function (options, query, singles, request, request1) {\n var param = 'param';\n var req = request1;\n req[options.from] = query.fromTable;\n if (options.apply && query.distincts.length) {\n req[options.apply] = 'onDistinct' in this ? DataUtil.callAdaptorFunction(this, 'onDistinct', query.distincts) : '';\n }\n if (!query.distincts.length && options.expand) {\n req[options.expand] = 'onExpand' in this && 'onSelect' in singles ?\n DataUtil.callAdaptorFunction(this, 'onExpand', { selects: DataUtil.getValue(singles.onSelect.fieldNames, query), expands: query.expands }, query) : query.expands;\n }\n req[options.select] = 'onSelect' in singles && !query.distincts.length ?\n DataUtil.callAdaptorFunction(this, 'onSelect', DataUtil.getValue(singles.onSelect.fieldNames, query), query) : '';\n req[options.count] = query.isCountRequired ? DataUtil.callAdaptorFunction(this, 'onCount', query.isCountRequired, query) : '';\n req[options.search] = request.searches.length ? DataUtil.callAdaptorFunction(this, 'onSearch', request.searches, query) : '';\n req[options.skip] = 'onSkip' in singles ?\n DataUtil.callAdaptorFunction(this, 'onSkip', DataUtil.getValue(singles.onSkip.nos, query), query) : '';\n req[options.take] = 'onTake' in singles ?\n DataUtil.callAdaptorFunction(this, 'onTake', DataUtil.getValue(singles.onTake.nos, query), query) : '';\n req[options.where] = request.filters.length || request.searches.length ?\n DataUtil.callAdaptorFunction(this, 'onWhere', request.filters, query) : '';\n req[options.sortBy] = request.sorts.length ? DataUtil.callAdaptorFunction(this, 'onSortBy', request.sorts, query) : '';\n req[options.group] = request.groups.length ? DataUtil.callAdaptorFunction(this, 'onGroup', request.groups, query) : '';\n req[options.aggregates] = request.aggregates.length ?\n DataUtil.callAdaptorFunction(this, 'onAggregates', request.aggregates, query) : '';\n req[param] = [];\n };\n /**\n * Convert the object from processQuery to string which can be added query string.\n *\n * @param {Object} req\n * @param request\n * @param {Query} query\n * @param {DataManager} dm\n */\n UrlAdaptor.prototype.convertToQueryString = function (request, query, dm) {\n return '';\n // this needs to be overridden\n };\n /**\n * Return the data from the data manager processing.\n *\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {Request} xhr?\n * @param {Object} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n */\n UrlAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n if (xhr && xhr.headers.get('Content-Type') &&\n xhr.headers.get('Content-Type').indexOf('application/json') !== -1) {\n var handleTimeZone = DataUtil.timeZoneHandling;\n if (ds && !ds.timeZoneHandling) {\n DataUtil.timeZoneHandling = false;\n }\n data = DataUtil.parse.parseJson(data);\n DataUtil.timeZoneHandling = handleTimeZone;\n }\n var requests = request;\n var pvt = requests.pvtData || {};\n var groupDs = data ? data.groupDs : [];\n if (xhr && xhr.headers.get('Content-Type') &&\n xhr.headers.get('Content-Type').indexOf('xml') !== -1) {\n return (query.isCountRequired ? { result: [], count: 0 } : []);\n }\n var d = JSON.parse(requests.data);\n if (d && d.action === 'batch' && data && data.addedRecords) {\n changes.addedRecords = data.addedRecords;\n return changes;\n }\n if (data && data.d) {\n data = data.d;\n }\n var args = {};\n if (data && 'count' in data) {\n args.count = data.count;\n }\n args.result = data && data.result ? data.result : data;\n var isExpand = false;\n if (Array.isArray(data.result) && data.result.length) {\n var key = 'key';\n var val = 'value';\n var level = 'level';\n if (!isNullOrUndefined(data.result[0][key])) {\n args.result = this.formRemoteGroupedData(args.result, 1, pvt.groups.length - 1);\n }\n if (query && query.lazyLoad.length && pvt.groups.length) {\n for (var i = 0; i < query.lazyLoad.length; i++) {\n if (query.lazyLoad[i][key] === 'onDemandGroupInfo') {\n var value = query.lazyLoad[i][val][level];\n if (pvt.groups.length === value) {\n isExpand = true;\n }\n }\n }\n }\n }\n if (!isExpand) {\n this.getAggregateResult(pvt, data, args, groupDs, query);\n }\n return DataUtil.isNull(args.count) ? args.result : { result: args.result, count: args.count, aggregates: args.aggregates };\n };\n UrlAdaptor.prototype.formRemoteGroupedData = function (data, level, childLevel) {\n for (var i = 0; i < data.length; i++) {\n if (data[i].items.length && Object.keys(data[i].items[0]).indexOf('key') > -1) {\n this.formRemoteGroupedData(data[i].items, level + 1, childLevel - 1);\n }\n }\n var uid = 'GroupGuid';\n var childLvl = 'childLevels';\n var lvl = 'level';\n var records = 'records';\n data[uid] = consts[uid];\n data[lvl] = level;\n data[childLvl] = childLevel;\n data[records] = data[0].items.length ? this.getGroupedRecords(data, !isNullOrUndefined(data[0].items[records])) : [];\n return data;\n };\n UrlAdaptor.prototype.getGroupedRecords = function (data, hasRecords) {\n var childGroupedRecords = [];\n var records = 'records';\n for (var i = 0; i < data.length; i++) {\n if (!hasRecords) {\n for (var j = 0; j < data[i].items.length; j++) {\n childGroupedRecords.push(data[i].items[j]);\n }\n }\n else {\n childGroupedRecords = childGroupedRecords.concat(data[i].items[records]);\n }\n }\n return childGroupedRecords;\n };\n /**\n * Add the group query to the adaptor`s option.\n *\n * @param {Object[]} e\n * @returns void\n */\n UrlAdaptor.prototype.onGroup = function (e) {\n this.pvt.groups = e;\n return e;\n };\n /**\n * Add the aggregate query to the adaptor`s option.\n *\n * @param {Aggregates[]} e\n * @returns void\n */\n UrlAdaptor.prototype.onAggregates = function (e) {\n this.pvt.aggregates = e;\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {Object} e\n * @param query\n * @param original\n */\n UrlAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n var url;\n var key;\n return {\n type: 'POST',\n url: dm.dataSource.batchUrl || dm.dataSource.crudUrl || dm.dataSource.removeUrl || dm.dataSource.url,\n contentType: 'application/json; charset=utf-8',\n dataType: 'json',\n data: JSON.stringify(extend({}, {\n changed: changes.changedRecords,\n added: changes.addedRecords,\n deleted: changes.deletedRecords,\n action: 'batch',\n table: e[url],\n key: e[key]\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {Request} request\n * @param {Fetch} settings?\n * @returns void\n */\n UrlAdaptor.prototype.beforeSend = function (dm, request, settings) {\n // need to extend this method\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName\n * @param query\n */\n UrlAdaptor.prototype.insert = function (dm, data, tableName, query) {\n return {\n url: dm.dataSource.insertUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: data,\n table: tableName,\n action: 'insert'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number|string} value\n * @param {string} tableName\n * @param query\n */\n UrlAdaptor.prototype.remove = function (dm, keyField, value, tableName, query) {\n return {\n type: 'POST',\n url: dm.dataSource.removeUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n key: value,\n keyColumn: keyField,\n table: tableName,\n action: 'remove'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * Prepare and return request body which is used to update record.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName\n * @param query\n */\n UrlAdaptor.prototype.update = function (dm, keyField, value, tableName, query) {\n return {\n type: 'POST',\n url: dm.dataSource.updateUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: value,\n action: 'update',\n keyColumn: keyField,\n key: DataUtil.getObject(keyField, value),\n table: tableName\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * To generate the predicate based on the filtered query.\n *\n * @param {Object[]|string[]|number[]} data\n * @param {Query} query\n * @hidden\n */\n UrlAdaptor.prototype.getFiltersFrom = function (data, query) {\n var key = query.fKey;\n var value;\n var prop = key;\n var pKey = query.key;\n var predicats = [];\n if (typeof data[0] !== 'object') {\n prop = null;\n }\n for (var i = 0; i < data.length; i++) {\n if (typeof data[0] === 'object') {\n value = DataUtil.getObject(pKey || prop, data[i]);\n }\n else {\n value = data[i];\n }\n predicats.push(new Predicate(key, 'equal', value));\n }\n return Predicate.or(predicats);\n };\n UrlAdaptor.prototype.getAggregateResult = function (pvt, data, args, groupDs, query) {\n var pData = data;\n if (data && data.result) {\n pData = data.result;\n }\n if (pvt && pvt.aggregates && pvt.aggregates.length) {\n var agg = pvt.aggregates;\n var fn = void 0;\n var aggregateData = pData;\n var res = {};\n if (data.aggregate) {\n aggregateData = data.aggregate;\n }\n for (var i = 0; i < agg.length; i++) {\n fn = DataUtil.aggregates[agg[i].type];\n if (fn) {\n res[agg[i].field + ' - ' + agg[i].type] = fn(aggregateData, agg[i].field);\n }\n }\n args.aggregates = res;\n }\n var key = 'key';\n var isServerGrouping = Array.isArray(data.result) && data.result.length && !isNullOrUndefined(data.result[0][key]);\n if (pvt && pvt.groups && pvt.groups.length && !isServerGrouping) {\n var groups = pvt.groups;\n for (var i = 0; i < groups.length; i++) {\n var level = null;\n if (!isNullOrUndefined(groupDs)) {\n groupDs = DataUtil.group(groupDs, groups[i]);\n }\n var groupQuery = Query.filterQueries(query.queries, 'onGroup')[i].e;\n pData = DataUtil.group(pData, groups[i], pvt.aggregates, level, groupDs, groupQuery.comparer);\n }\n args.result = pData;\n }\n return args;\n };\n UrlAdaptor.prototype.getQueryRequest = function (query) {\n var req = { sorts: [], groups: [], filters: [], searches: [], aggregates: [] };\n req.sorts = Query.filterQueries(query.queries, 'onSortBy');\n req.groups = Query.filterQueries(query.queries, 'onGroup');\n req.filters = Query.filterQueries(query.queries, 'onWhere');\n req.searches = Query.filterQueries(query.queries, 'onSearch');\n req.aggregates = Query.filterQueries(query.queries, 'onAggregates');\n return req;\n };\n UrlAdaptor.prototype.addParams = function (options) {\n var req = options.reqParams;\n if (options.params.length) {\n req.params = {};\n }\n for (var _i = 0, _a = options.params; _i < _a.length; _i++) {\n var tmp = _a[_i];\n if (req[tmp.key]) {\n throw new Error('Query() - addParams: Custom Param is conflicting other request arguments');\n }\n req[tmp.key] = tmp.value;\n if (tmp.fn) {\n req[tmp.key] = tmp.fn.call(options.query, tmp.key, options.query, options.dm);\n }\n req.params[tmp.key] = req[tmp.key];\n }\n };\n return UrlAdaptor;\n}(Adaptor));\nexport { UrlAdaptor };\n/**\n * OData Adaptor that is extended from URL Adaptor, is used for consuming data through OData Service.\n *\n * @hidden\n */\nvar ODataAdaptor = /** @class */ (function (_super) {\n __extends(ODataAdaptor, _super);\n function ODataAdaptor(props) {\n var _this = _super.call(this) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n requestType: 'get',\n accept: 'application/json;odata=light;q=1,application/json;odata=verbose;q=0.5',\n multipartAccept: 'multipart/mixed',\n sortBy: '$orderby',\n select: '$select',\n skip: '$skip',\n take: '$top',\n count: '$inlinecount',\n where: '$filter',\n expand: '$expand',\n batch: '$batch',\n changeSet: '--changeset_',\n batchPre: 'batch_',\n contentId: 'Content-Id: ',\n batchContent: 'Content-Type: multipart/mixed; boundary=',\n changeSetContent: 'Content-Type: application/http\\nContent-Transfer-Encoding: binary ',\n batchChangeSetContentType: 'Content-Type: application/json; charset=utf-8 ',\n updateType: 'PUT'\n });\n extend(_this.options, props || {});\n return _this;\n }\n ODataAdaptor.prototype.getModuleName = function () {\n return 'ODataAdaptor';\n };\n /**\n * Generate request string based on the filter criteria from query.\n *\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n * @param predicate\n * @param query\n * @param requiresCast\n */\n ODataAdaptor.prototype.onPredicate = function (predicate, query, requiresCast) {\n var returnValue = '';\n var operator;\n var guid;\n var val = predicate.value;\n var type = typeof val;\n var field = predicate.field ? ODataAdaptor.getField(predicate.field) : null;\n if (val instanceof Date) {\n val = 'datetime\\'' + DataUtil.parse.replacer(val) + '\\'';\n }\n if (type === 'string') {\n val = val.replace(/'/g, '\\'\\'');\n if (predicate.ignoreCase) {\n val = val.toLowerCase();\n }\n if (predicate.operator !== 'like') {\n val = encodeURIComponent(val);\n }\n if (predicate.operator !== 'wildcard' && predicate.operator !== 'like') {\n val = '\\'' + val + '\\'';\n }\n if (requiresCast) {\n field = 'cast(' + field + ', \\'Edm.String\\')';\n }\n if (DataUtil.parse.isGuid(val)) {\n guid = 'guid';\n }\n if (predicate.ignoreCase) {\n if (!guid) {\n field = 'tolower(' + field + ')';\n }\n val = val.toLowerCase();\n }\n }\n if (predicate.operator === 'isempty' || predicate.operator === 'isnull' || predicate.operator === 'isnotempty' ||\n predicate.operator === 'isnotnull') {\n operator = predicate.operator.indexOf('isnot') !== -1 ? DataUtil.odBiOperator['notequal'] : DataUtil.odBiOperator['equal'];\n val = predicate.operator === 'isnull' || predicate.operator === 'isnotnull' ? null : '\\'\\'';\n }\n else {\n operator = DataUtil.odBiOperator[predicate.operator];\n }\n if (operator) {\n returnValue += field;\n returnValue += operator;\n if (guid) {\n returnValue += guid;\n }\n return returnValue + val;\n }\n if (!isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor') {\n operator = DataUtil.odv4UniOperator[predicate.operator];\n }\n else {\n operator = DataUtil.odUniOperator[predicate.operator];\n }\n if (operator === 'like') {\n val = val;\n if (val.indexOf('%') !== -1) {\n if (val.charAt(0) === '%' && val.lastIndexOf('%') < 2) {\n val = val.substring(1, val.length);\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['startswith'] : DataUtil.odUniOperator['startswith'];\n }\n else if (val.charAt(val.length - 1) === '%' && val.indexOf('%') > val.length - 3) {\n val = val.substring(0, val.length - 1);\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['endswith'] : DataUtil.odUniOperator['endswith'];\n }\n else if (val.lastIndexOf('%') !== val.indexOf('%') && val.lastIndexOf('%') > val.indexOf('%') + 1) {\n val = val.substring(val.indexOf('%') + 1, val.lastIndexOf('%'));\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n }\n else {\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n }\n }\n val = encodeURIComponent(val);\n val = '\\'' + val + '\\'';\n }\n else if (operator === 'wildcard') {\n val = val;\n if (val.indexOf('*') !== -1) {\n var splittedStringValue = val.split('*');\n var splittedValue = void 0;\n var count = 0;\n if (val.indexOf('*') !== 0 && splittedStringValue[0].indexOf('%3f') === -1 &&\n splittedStringValue[0].indexOf('?') === -1) {\n splittedValue = splittedStringValue[0];\n splittedValue = '\\'' + splittedValue + '\\'';\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['startswith'] : DataUtil.odUniOperator['startswith'];\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += splittedValue + ')';\n count++;\n }\n if (val.lastIndexOf('*') !== val.length - 1 && splittedStringValue[splittedStringValue.length - 1].indexOf('%3f') === -1 &&\n splittedStringValue[splittedStringValue.length - 1].indexOf('?') === -1) {\n splittedValue = splittedStringValue[splittedStringValue.length - 1];\n splittedValue = '\\'' + splittedValue + '\\'';\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['endswith'] : DataUtil.odUniOperator['endswith'];\n if (count > 0) {\n returnValue += ' and ';\n }\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += splittedValue + ')';\n count++;\n }\n if (splittedStringValue.length > 2) {\n for (var i = 1; i < splittedStringValue.length - 1; i++) {\n if (splittedStringValue[i].indexOf('%3f') === -1 && splittedStringValue[i].indexOf('?') === -1) {\n splittedValue = splittedStringValue[i];\n splittedValue = '\\'' + splittedValue + '\\'';\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n if (count > 0) {\n returnValue += ' and ';\n }\n if (operator === 'substringof' || operator === 'not substringof') {\n var temp = splittedValue;\n splittedValue = field;\n field = temp;\n }\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += splittedValue + ')';\n count++;\n }\n }\n }\n if (count === 0) {\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n if (val.indexOf('?') !== -1 || val.indexOf('%3f') !== -1) {\n val = val.indexOf('?') !== -1 ? val.split('?').join('') : val.split('%3f').join('');\n }\n val = '\\'' + val + '\\'';\n }\n else {\n operator = 'wildcard';\n }\n }\n else {\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n if (val.indexOf('?') !== -1 || val.indexOf('%3f') !== -1) {\n val = val.indexOf('?') !== -1 ? val.split('?').join('') : val.split('%3f').join('');\n }\n val = '\\'' + val + '\\'';\n }\n }\n if (operator === 'substringof' || operator === 'not substringof') {\n var temp = val;\n val = field;\n field = temp;\n }\n if (operator !== 'wildcard') {\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += val + ')';\n }\n return returnValue;\n };\n ODataAdaptor.prototype.addParams = function (options) {\n _super.prototype.addParams.call(this, options);\n delete options.reqParams.params;\n };\n /**\n * Generate request string based on the multiple filter criteria from query.\n *\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n * @param predicate\n * @param query\n * @param requiresCast\n */\n ODataAdaptor.prototype.onComplexPredicate = function (predicate, query, requiresCast) {\n var res = [];\n for (var i = 0; i < predicate.predicates.length; i++) {\n res.push('(' + this.onEachWhere(predicate.predicates[i], query, requiresCast) + ')');\n }\n return res.join(' ' + predicate.condition + ' ');\n };\n /**\n * Generate query string based on the multiple filter criteria from query.\n *\n * @param {Predicate} filter\n * @param {boolean} requiresCast?\n * @param query\n * @param requiresCast\n */\n ODataAdaptor.prototype.onEachWhere = function (filter, query, requiresCast) {\n return filter.isComplex ? this.onComplexPredicate(filter, query, requiresCast) : this.onPredicate(filter, query, requiresCast);\n };\n /**\n * Generate query string based on the multiple filter criteria from query.\n *\n * @param {string[]} filters\n */\n ODataAdaptor.prototype.onWhere = function (filters) {\n if (this.pvt.search) {\n filters.push(this.onEachWhere(this.pvt.search, null, true));\n }\n return filters.join(' and ');\n };\n /**\n * Generate query string based on the multiple search criteria from query.\n *\n * @param e\n * @param {string} operator\n * @param {string} key\n * @param {boolean} } ignoreCase\n * @param e.fields\n * @param e.operator\n * @param e.key\n * @param e.ignoreCase\n */\n ODataAdaptor.prototype.onEachSearch = function (e) {\n if (e.fields && e.fields.length === 0) {\n DataUtil.throwError('Query() - Search : oData search requires list of field names to search');\n }\n var filter = this.pvt.search || [];\n for (var i = 0; i < e.fields.length; i++) {\n filter.push(new Predicate(e.fields[i], e.operator, e.key, e.ignoreCase));\n }\n this.pvt.search = filter;\n };\n /**\n * Generate query string based on the search criteria from query.\n *\n * @param {Object} e\n */\n ODataAdaptor.prototype.onSearch = function (e) {\n this.pvt.search = Predicate.or(this.pvt.search);\n return '';\n };\n /**\n * Generate query string based on multiple sort criteria from query.\n *\n * @param {QueryOptions} e\n */\n ODataAdaptor.prototype.onEachSort = function (e) {\n var res = [];\n if (e.name instanceof Array) {\n for (var i = 0; i < e.name.length; i++) {\n res.push(ODataAdaptor.getField(e.name[i]) + (e.direction === 'descending' ? ' desc' : ''));\n }\n }\n else {\n res.push(ODataAdaptor.getField(e.name) + (e.direction === 'descending' ? ' desc' : ''));\n }\n return res.join(',');\n };\n /**\n * Returns sort query string.\n *\n * @param {string[]} e\n */\n ODataAdaptor.prototype.onSortBy = function (e) {\n return e.reverse().join(',');\n };\n /**\n * Adds the group query to the adaptor option.\n *\n * @param {Object[]} e\n * @returns string\n */\n ODataAdaptor.prototype.onGroup = function (e) {\n this.pvt.groups = e;\n return [];\n };\n /**\n * Returns the select query string.\n *\n * @param {string[]} e\n */\n ODataAdaptor.prototype.onSelect = function (e) {\n for (var i = 0; i < e.length; i++) {\n e[i] = ODataAdaptor.getField(e[i]);\n }\n return e.join(',');\n };\n /**\n * Add the aggregate query to the adaptor option.\n *\n * @param {Object[]} e\n * @returns string\n */\n ODataAdaptor.prototype.onAggregates = function (e) {\n this.pvt.aggregates = e;\n return '';\n };\n /**\n * Returns the query string which requests total count from the data source.\n *\n * @param {boolean} e\n * @returns string\n */\n ODataAdaptor.prototype.onCount = function (e) {\n return e === true ? 'allpages' : '';\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {Request} request\n * @param {Fetch} settings?\n * @param settings\n */\n ODataAdaptor.prototype.beforeSend = function (dm, request, settings) {\n if (DataUtil.endsWith(settings.url, this.options.batch) && settings.type.toLowerCase() === 'post') {\n request.headers.set('Accept', this.options.multipartAccept);\n request.headers.set('DataServiceVersion', '2.0');\n //request.overrideMimeType('text/plain; charset=x-user-defined');\n }\n else {\n request.headers.set('Accept', this.options.accept);\n }\n request.headers.set('DataServiceVersion', '2.0');\n request.headers.set('MaxDataServiceVersion', '2.0');\n };\n /**\n * Returns the data from the query processing.\n *\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {Request} xhr?\n * @param {Fetch} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n * @returns aggregateResult\n */\n ODataAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var metaCheck = 'odata.metadata';\n if ((request && request.type === 'GET') && !this.rootUrl && data[metaCheck]) {\n var dataUrls = data[metaCheck].split('/$metadata#');\n this.rootUrl = dataUrls[0];\n this.resourceTableName = dataUrls[1];\n }\n var pvtData = 'pvtData';\n if (!isNullOrUndefined(data.d)) {\n var dataCopy = ((query && query.isCountRequired) ? data.d.results : data.d);\n var metaData = '__metadata';\n if (!isNullOrUndefined(dataCopy)) {\n for (var i = 0; i < dataCopy.length; i++) {\n if (!isNullOrUndefined(dataCopy[i][metaData])) {\n delete dataCopy[i][metaData];\n }\n }\n }\n }\n var pvt = request && request[pvtData];\n var emptyAndBatch = this.processBatchResponse(data, query, xhr, request, changes);\n if (emptyAndBatch) {\n return emptyAndBatch;\n }\n var versionCheck = xhr && request.fetchRequest.headers.get('DataServiceVersion');\n var count = null;\n var version = (versionCheck && parseInt(versionCheck, 10)) || 2;\n if (query && query.isCountRequired) {\n var oDataCount = '__count';\n if (data[oDataCount] || data['odata.count']) {\n count = data[oDataCount] || data['odata.count'];\n }\n if (data.d) {\n data = data.d;\n }\n if (data[oDataCount] || data['odata.count']) {\n count = data[oDataCount] || data['odata.count'];\n }\n }\n if (version === 3 && data.value) {\n data = data.value;\n }\n if (data.d) {\n data = data.d;\n }\n if (version < 3 && data.results) {\n data = data.results;\n }\n var args = {};\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n return DataUtil.isNull(count) ? args.result : { result: args.result, count: args.count, aggregates: args.aggregates };\n };\n /**\n * Converts the request object to query string.\n *\n * @param {Object} req\n * @param request\n * @param {Query} query\n * @param {DataManager} dm\n * @returns tableName\n */\n ODataAdaptor.prototype.convertToQueryString = function (request, query, dm) {\n var res = [];\n var table = 'table';\n var tableName = request[table] || '';\n var format = '$format';\n delete request[table];\n if (dm.dataSource.requiresFormat) {\n request[format] = 'json';\n }\n var keys = Object.keys(request);\n for (var _i = 0, keys_4 = keys; _i < keys_4.length; _i++) {\n var prop = keys_4[_i];\n res.push(prop + '=' + request[prop]);\n }\n res = res.join('&');\n if (dm.dataSource.url && dm.dataSource.url.indexOf('?') !== -1 && !tableName) {\n return res;\n }\n return res.length ? tableName + '?' + res : tableName || '';\n };\n ODataAdaptor.prototype.localTimeReplacer = function (key, convertObj) {\n for (var _i = 0, _a = !isNullOrUndefined(convertObj) ? Object.keys(convertObj) : []; _i < _a.length; _i++) {\n var prop = _a[_i];\n if ((convertObj[prop] instanceof Date)) {\n convertObj[prop] = DataUtil.dateParse.toLocalTime(convertObj[prop]);\n }\n }\n return convertObj;\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n * @param tableName\n */\n ODataAdaptor.prototype.insert = function (dm, data, tableName) {\n return {\n url: (dm.dataSource.insertUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : ''),\n data: JSON.stringify(data, this.options.localTime ? this.localTimeReplacer : null)\n };\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number} value\n * @param {string} tableName?\n * @param tableName\n */\n ODataAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n var url;\n if (typeof value === 'string' && !DataUtil.parse.isGuid(value)) {\n url = \"('\" + value + \"')\";\n }\n else {\n url = \"(\" + value + \")\";\n }\n return {\n type: 'DELETE',\n url: (dm.dataSource.removeUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : '') + url\n };\n };\n /**\n * Updates existing record and saves the changes to the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n * @param query\n * @param original\n * @returns this\n */\n ODataAdaptor.prototype.update = function (dm, keyField, value, tableName, query, original) {\n if (this.options.updateType === 'PATCH' && !isNullOrUndefined(original)) {\n value = this.compareAndRemove(value, original, keyField);\n }\n var url;\n if (typeof value[keyField] === 'string' && !DataUtil.parse.isGuid(value[keyField])) {\n url = \"('\" + value[keyField] + \"')\";\n }\n else {\n url = \"(\" + value[keyField] + \")\";\n }\n return {\n type: this.options.updateType,\n url: (dm.dataSource.updateUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : '') + url,\n data: JSON.stringify(value, this.options.localTime ? this.localTimeReplacer : null),\n accept: this.options.accept\n };\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n * @param query\n * @param original\n * @returns {Object}\n */\n ODataAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n var initialGuid = e.guid = DataUtil.getGuid(this.options.batchPre);\n var url = (dm.dataSource.batchUrl || this.rootUrl) ?\n (dm.dataSource.batchUrl || this.rootUrl) + '/' + this.options.batch :\n (dm.dataSource.batchUrl || dm.dataSource.url).replace(/\\/*$/, '/' + this.options.batch);\n e.url = this.resourceTableName ? this.resourceTableName : e.url;\n var args = {\n url: e.url,\n key: e.key,\n cid: 1,\n cSet: DataUtil.getGuid(this.options.changeSet)\n };\n var req = '--' + initialGuid + '\\n';\n req += 'Content-Type: multipart/mixed; boundary=' + args.cSet.replace('--', '') + '\\n';\n this.pvt.changeSet = 0;\n req += this.generateInsertRequest(changes.addedRecords, args, dm);\n req += this.generateUpdateRequest(changes.changedRecords, args, dm, original ? original.changedRecords : []);\n req += this.generateDeleteRequest(changes.deletedRecords, args, dm);\n req += args.cSet + '--\\n';\n req += '--' + initialGuid + '--';\n return {\n type: 'POST',\n url: url,\n dataType: 'json',\n contentType: 'multipart/mixed; charset=UTF-8;boundary=' + initialGuid,\n data: req\n };\n };\n /**\n * Generate the string content from the removed records.\n * The result will be send during batch update.\n *\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n * @param dm\n * @returns this\n */\n ODataAdaptor.prototype.generateDeleteRequest = function (arr, e, dm) {\n if (!arr) {\n return '';\n }\n var req = '';\n var stat = {\n 'method': 'DELETE ',\n 'url': function (data, i, key) {\n var url = DataUtil.getObject(key, data[i]);\n if (typeof url === 'number' || DataUtil.parse.isGuid(url)) {\n return '(' + url + ')';\n }\n else if (url instanceof Date) {\n var dateTime = data[i][key];\n return '(' + dateTime.toJSON() + ')';\n }\n else {\n return \"('\" + url + \"')\";\n }\n },\n 'data': function (data, i) { return ''; }\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req + '\\n';\n };\n /**\n * Generate the string content from the inserted records.\n * The result will be send during batch update.\n *\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n * @param dm\n */\n ODataAdaptor.prototype.generateInsertRequest = function (arr, e, dm) {\n if (!arr) {\n return '';\n }\n var req = '';\n var stat = {\n 'method': 'POST ',\n 'url': function (data, i, key) { return ''; },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req;\n };\n /**\n * Generate the string content from the updated records.\n * The result will be send during batch update.\n *\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n * @param dm\n * @param org\n */\n ODataAdaptor.prototype.generateUpdateRequest = function (arr, e, dm, org) {\n var _this = this;\n if (!arr) {\n return '';\n }\n var req = '';\n arr.forEach(function (change) { return change = _this.compareAndRemove(change, org.filter(function (o) { return DataUtil.getObject(e.key, o) === DataUtil.getObject(e.key, change); })[0], e.key); });\n var stat = {\n 'method': this.options.updateType + ' ',\n 'url': function (data, i, key) {\n if (typeof data[i][key] === 'number' || DataUtil.parse.isGuid(data[i][key])) {\n return '(' + data[i][key] + ')';\n }\n else if (data[i][key] instanceof Date) {\n var date = data[i][key];\n return '(' + date.toJSON() + ')';\n }\n else {\n return \"('\" + data[i][key] + \"')\";\n }\n },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req;\n };\n ODataAdaptor.getField = function (prop) {\n return prop.replace(/\\./g, '/');\n };\n ODataAdaptor.prototype.generateBodyContent = function (arr, e, stat, dm) {\n var req = '';\n for (var i = 0; i < arr.length; i++) {\n req += '\\n' + e.cSet + '\\n';\n req += this.options.changeSetContent + '\\n\\n';\n req += stat.method;\n if (stat.method === 'POST ') {\n req += (dm.dataSource.insertUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n }\n else if (stat.method === 'PUT ' || stat.method === 'PATCH ') {\n req += (dm.dataSource.updateUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n }\n else if (stat.method === 'DELETE ') {\n req += (dm.dataSource.removeUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n }\n req += 'Accept: ' + this.options.accept + '\\n';\n req += 'Content-Id: ' + this.pvt.changeSet++ + '\\n';\n req += this.options.batchChangeSetContentType + '\\n';\n if (!isNullOrUndefined(arr[i]['@odata.etag'])) {\n req += 'If-Match: ' + arr[i]['@odata.etag'] + '\\n\\n';\n delete arr[i]['@odata.etag'];\n }\n else {\n req += '\\n';\n }\n req += stat.data(arr, i);\n }\n return req;\n };\n ODataAdaptor.prototype.processBatchResponse = function (data, query, xhr, request, changes) {\n if (xhr && xhr.headers.get('Content-Type') && xhr.headers.get('Content-Type').indexOf('xml') !== -1) {\n return (query.isCountRequired ? { result: [], count: 0 } : []);\n }\n if (request && this.options.batch && DataUtil.endsWith(request.url, this.options.batch) && request.type.toLowerCase() === 'post') {\n var guid = xhr.headers.get('Content-Type');\n var cIdx = void 0;\n var jsonObj = void 0;\n var d = data + '';\n guid = guid.substring(guid.indexOf('=batchresponse') + 1);\n d = d.split(guid);\n if (d.length < 2) {\n return {};\n }\n d = d[1];\n var exVal = /(?:\\bContent-Type.+boundary=)(changesetresponse.+)/i.exec(d);\n if (exVal) {\n d.replace(exVal[0], '');\n }\n var changeGuid = exVal ? exVal[1] : '';\n d = d.split(changeGuid);\n for (var i = d.length; i > -1; i--) {\n if (!/\\bContent-ID:/i.test(d[i]) || !/\\bHTTP.+201/.test(d[i])) {\n continue;\n }\n cIdx = parseInt(/\\bContent-ID: (\\d+)/i.exec(d[i])[1], 10);\n if (changes.addedRecords[cIdx]) {\n jsonObj = DataUtil.parse.parseJson(/^\\{.+\\}/m.exec(d[i])[0]);\n extend({}, changes.addedRecords[cIdx], this.processResponse(jsonObj));\n }\n }\n return changes;\n }\n return null;\n };\n ODataAdaptor.prototype.compareAndRemove = function (data, original, key) {\n var _this = this;\n if (isNullOrUndefined(original)) {\n return data;\n }\n Object.keys(data).forEach(function (prop) {\n if (prop !== key && prop !== '@odata.etag') {\n if (DataUtil.isPlainObject(data[prop])) {\n _this.compareAndRemove(data[prop], original[prop]);\n var final = Object.keys(data[prop]).filter(function (data) { return data !== '@odata.etag'; });\n if (final.length === 0) {\n delete data[prop];\n }\n }\n else if (data[prop] === original[prop]) {\n delete data[prop];\n }\n else if (data[prop] && original[prop] && data[prop].valueOf() === original[prop].valueOf()) {\n delete data[prop];\n }\n }\n });\n return data;\n };\n return ODataAdaptor;\n}(UrlAdaptor));\nexport { ODataAdaptor };\n/**\n * The OData v4 is an improved version of OData protocols.\n * The DataManager uses the ODataV4Adaptor to consume OData v4 services.\n *\n * @hidden\n */\nvar ODataV4Adaptor = /** @class */ (function (_super) {\n __extends(ODataV4Adaptor, _super);\n function ODataV4Adaptor(props) {\n var _this = _super.call(this, props) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n requestType: 'get',\n accept: 'application/json, text/javascript, */*; q=0.01',\n multipartAccept: 'multipart/mixed',\n sortBy: '$orderby',\n select: '$select',\n skip: '$skip',\n take: '$top',\n count: '$count',\n search: '$search',\n where: '$filter',\n expand: '$expand',\n batch: '$batch',\n changeSet: '--changeset_',\n batchPre: 'batch_',\n contentId: 'Content-Id: ',\n batchContent: 'Content-Type: multipart/mixed; boundary=',\n changeSetContent: 'Content-Type: application/http\\nContent-Transfer-Encoding: binary ',\n batchChangeSetContentType: 'Content-Type: application/json; charset=utf-8 ',\n updateType: 'PATCH',\n localTime: false,\n apply: '$apply'\n });\n extend(_this.options, props || {});\n return _this;\n }\n /**\n * @hidden\n */\n ODataV4Adaptor.prototype.getModuleName = function () {\n return 'ODataV4Adaptor';\n };\n /**\n * Returns the query string which requests total count from the data source.\n *\n * @param {boolean} e\n * @returns string\n */\n ODataV4Adaptor.prototype.onCount = function (e) {\n return e === true ? 'true' : '';\n };\n /**\n * Generate request string based on the filter criteria from query.\n *\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n * @param predicate\n * @param query\n * @param requiresCast\n */\n ODataV4Adaptor.prototype.onPredicate = function (predicate, query, requiresCast) {\n var returnValue = '';\n var val = predicate.value;\n var isDate = val instanceof Date;\n if (query instanceof Query) {\n var queries = this.getQueryRequest(query);\n for (var i = 0; i < queries.filters.length; i++) {\n if (queries.filters[i].e.key === predicate.value) {\n requiresCast = true;\n }\n }\n }\n returnValue = _super.prototype.onPredicate.call(this, predicate, query, requiresCast);\n if (isDate) {\n returnValue = returnValue.replace(/datetime'(.*)'$/, '$1');\n }\n if (DataUtil.parse.isGuid(val)) {\n returnValue = returnValue.replace('guid', '').replace(/'/g, '');\n }\n return returnValue;\n };\n /**\n * Generate query string based on the multiple search criteria from query.\n *\n * @param e\n * @param {string} operator\n * @param {string} key\n * @param {boolean} } ignoreCase\n * @param e.fields\n * @param e.operator\n * @param e.key\n * @param e.ignoreCase\n */\n ODataV4Adaptor.prototype.onEachSearch = function (e) {\n var search = this.pvt.searches || [];\n search.push(e.key);\n this.pvt.searches = search;\n };\n /**\n * Generate query string based on the search criteria from query.\n *\n * @param {Object} e\n */\n ODataV4Adaptor.prototype.onSearch = function (e) {\n return this.pvt.searches.join(' OR ');\n };\n /**\n * Returns the expand query string.\n *\n * @param {string} e\n * @param e.selects\n * @param e.expands\n */\n ODataV4Adaptor.prototype.onExpand = function (e) {\n var _this = this;\n var selected = {};\n var expanded = {};\n var expands = e.expands.slice();\n var exArr = [];\n var selects = e.selects.filter(function (item) { return item.indexOf('.') > -1; });\n selects.forEach(function (select) {\n var splits = select.split('.');\n if (!(splits[0] in selected)) {\n selected[splits[0]] = [];\n }\n if (splits.length === 2) {\n if (selected[splits[0]].length && Object.keys(selected).indexOf(splits[0]) !== -1) {\n if (selected[splits[0]][0].indexOf('$expand') !== -1 && selected[splits[0]][0].indexOf(';$select=') === -1) {\n selected[splits[0]][0] = selected[splits[0]][0] + ';' + '$select=' + splits[1];\n }\n else {\n selected[splits[0]][0] = selected[splits[0]][0] + ',' + splits[1];\n }\n }\n else {\n selected[splits[0]].push('$select=' + splits[1]);\n }\n }\n else {\n var sel = '$select=' + splits[splits.length - 1];\n var exp = '';\n var close_1 = '';\n for (var i = 1; i < splits.length - 1; i++) {\n exp = exp + '$expand=' + splits[i] + '(';\n close_1 = close_1 + ')';\n }\n var combineVal = exp + sel + close_1;\n if (selected[splits[0]].length && Object.keys(selected).indexOf(splits[0]) !== -1 &&\n _this.expandQueryIndex(selected[splits[0]], true)) {\n var idx = _this.expandQueryIndex(selected[splits[0]]);\n selected[splits[0]][idx] = selected[splits[0]][idx] + combineVal.replace('$expand=', ',');\n }\n else {\n selected[splits[0]].push(combineVal);\n }\n }\n });\n //Auto expand from select query\n Object.keys(selected).forEach(function (expand) {\n if ((expands.indexOf(expand) === -1)) {\n expands.push(expand);\n }\n });\n expands.forEach(function (expand) {\n expanded[expand] = expand in selected ? expand + \"(\" + selected[expand].join(';') + \")\" : expand;\n });\n Object.keys(expanded).forEach(function (ex) { return exArr.push(expanded[ex]); });\n return exArr.join(',');\n };\n ODataV4Adaptor.prototype.expandQueryIndex = function (query, isExpand) {\n for (var i = 0; i < query.length; i++) {\n if (query[i].indexOf('$expand') !== -1) {\n return isExpand ? true : i;\n }\n }\n return isExpand ? false : 0;\n };\n /**\n * Returns the groupby query string.\n *\n * @param {string} e\n * @param distinctFields\n */\n ODataV4Adaptor.prototype.onDistinct = function (distinctFields) {\n var fields = distinctFields.map(function (field) { return ODataAdaptor.getField(field); }).join(',');\n return \"groupby((\" + fields + \"))\";\n };\n /**\n * Returns the select query string.\n *\n * @param {string[]} e\n */\n ODataV4Adaptor.prototype.onSelect = function (e) {\n return _super.prototype.onSelect.call(this, e.filter(function (item) { return item.indexOf('.') === -1; }));\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {Request} request\n * @param {Fetch} settings\n * @returns void\n */\n ODataV4Adaptor.prototype.beforeSend = function (dm, request, settings) {\n if (settings.type === 'POST' || settings.type === 'PUT' || settings.type === 'PATCH') {\n request.headers.set('Prefer', 'return=representation');\n }\n request.headers.set('Accept', this.options.accept);\n };\n /**\n * Returns the data from the query processing.\n *\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {Request} xhr?\n * @param {Fetch} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n * @returns aggregateResult\n */\n ODataV4Adaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var metaName = '@odata.context';\n var metaV4Name = '@context';\n if ((request && request.type === 'GET') && !this.rootUrl && (data[metaName] || data[metaV4Name])) {\n var dataUrl = data[metaName] ? data[metaName].split('/$metadata#') : data[metaV4Name].split('/$metadata#');\n this.rootUrl = dataUrl[0];\n this.resourceTableName = dataUrl[1];\n }\n var pvtData = 'pvtData';\n var pvt = request && request[pvtData];\n var emptyAndBatch = _super.prototype.processBatchResponse.call(this, data, query, xhr, request, changes);\n if (emptyAndBatch) {\n return emptyAndBatch;\n }\n var count = null;\n var dataCount = '@odata.count';\n var dataV4Count = '@count';\n if (query && query.isCountRequired) {\n if (dataCount in data) {\n count = data[dataCount];\n }\n else if (dataV4Count in data) {\n count = data[dataV4Count];\n }\n }\n data = !isNullOrUndefined(data.value) ? data.value : data;\n var args = {};\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n return DataUtil.isNull(count) ? args.result : { result: args.result, count: count, aggregates: args.aggregates };\n };\n return ODataV4Adaptor;\n}(ODataAdaptor));\nexport { ODataV4Adaptor };\n/**\n * The Web API is a programmatic interface to define the request and response messages system that is mostly exposed in JSON or XML.\n * The DataManager uses the WebApiAdaptor to consume Web API.\n * Since this adaptor is targeted to interact with Web API created using OData endpoint, it is extended from ODataAdaptor\n *\n * @hidden\n */\nvar WebApiAdaptor = /** @class */ (function (_super) {\n __extends(WebApiAdaptor, _super);\n function WebApiAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n WebApiAdaptor.prototype.getModuleName = function () {\n return 'WebApiAdaptor';\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n * @param tableName\n */\n WebApiAdaptor.prototype.insert = function (dm, data, tableName) {\n return {\n type: 'POST',\n url: dm.dataSource.url,\n data: JSON.stringify(data)\n };\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number} value\n * @param {string} tableName?\n * @param tableName\n */\n WebApiAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n return {\n type: 'DELETE',\n url: dm.dataSource.url + '/' + value,\n data: JSON.stringify(value)\n };\n };\n /**\n * Prepare and return request body which is used to update record.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n */\n WebApiAdaptor.prototype.update = function (dm, keyField, value, tableName) {\n return {\n type: 'PUT',\n url: dm.dataSource.url,\n data: JSON.stringify(value)\n };\n };\n WebApiAdaptor.prototype.batchRequest = function (dm, changes, e) {\n var _this = this;\n var initialGuid = e.guid = DataUtil.getGuid(this.options.batchPre);\n var url = dm.dataSource.url.replace(/\\/*$/, '/' + this.options.batch);\n e.url = this.resourceTableName ? this.resourceTableName : e.url;\n var req = [];\n var _loop_1 = function (i, x) {\n changes.addedRecords.forEach(function (j, d) {\n var stat = {\n 'method': 'POST ',\n 'url': function (data, i, key) { return ''; },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('POST ' + '/api/' + (dm.dataSource.insertUrl || dm.dataSource.crudUrl || e.url)\n + stat.url(changes.addedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n };\n //insertion\n for (var i = 0, x = changes.addedRecords.length; i < x; i++) {\n _loop_1(i, x);\n }\n var _loop_2 = function (i, x) {\n changes.changedRecords.forEach(function (j, d) {\n var stat = {\n 'method': _this.options.updateType + ' ',\n 'url': function (data, i, key) { return ''; },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('PUT ' + '/api/' + (dm.dataSource.updateUrl || dm.dataSource.crudUrl || e.url)\n + stat.url(changes.changedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n };\n //updation\n for (var i = 0, x = changes.changedRecords.length; i < x; i++) {\n _loop_2(i, x);\n }\n var _loop_3 = function (i, x) {\n changes.deletedRecords.forEach(function (j, d) {\n var state = {\n 'mtd': 'DELETE ',\n 'url': function (data, i, key) {\n var url = DataUtil.getObject(key, data[i]);\n if (typeof url === 'number' || DataUtil.parse.isGuid(url)) {\n return '/' + url;\n }\n else if (url instanceof Date) {\n var datTime = data[i][key];\n return '/' + datTime.toJSON();\n }\n else {\n return \"/'\" + url + \"'\";\n }\n },\n 'data': function (data, i) { return ''; }\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('DELETE ' + '/api/' + (dm.dataSource.removeUrl || dm.dataSource.crudUrl || e.url)\n + state.url(changes.deletedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n };\n //deletion\n for (var i = 0, x = changes.deletedRecords.length; i < x; i++) {\n _loop_3(i, x);\n }\n req.push('--' + initialGuid + '--', '');\n return {\n type: 'POST',\n url: url,\n contentType: 'multipart/mixed; boundary=' + initialGuid,\n data: req.join('\\r\\n')\n };\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {Request} request\n * @param {Fetch} settings\n * @returns void\n */\n WebApiAdaptor.prototype.beforeSend = function (dm, request, settings) {\n request.headers.set('Accept', 'application/json, text/javascript, */*; q=0.01');\n };\n /**\n * Returns the data from the query processing.\n *\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {Request} xhr?\n * @param {Fetch} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n * @returns aggregateResult\n */\n WebApiAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var pvtData = 'pvtData';\n var pvt = request && request[pvtData];\n var count = null;\n var args = {};\n if (request && request.type.toLowerCase() !== 'post') {\n var versionCheck = xhr && request.fetchRequest.headers.get('DataServiceVersion');\n var version = (versionCheck && parseInt(versionCheck, 10)) || 2;\n if (query && query.isCountRequired) {\n if (!DataUtil.isNull(data.Count)) {\n count = data.Count;\n }\n }\n if (version < 3 && data.Items) {\n data = data.Items;\n }\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n }\n args.result = args.result || data;\n return DataUtil.isNull(count) ? args.result : { result: args.result, count: args.count, aggregates: args.aggregates };\n };\n return WebApiAdaptor;\n}(ODataAdaptor));\nexport { WebApiAdaptor };\n/**\n * WebMethodAdaptor can be used by DataManager to interact with web method.\n *\n * @hidden\n */\nvar WebMethodAdaptor = /** @class */ (function (_super) {\n __extends(WebMethodAdaptor, _super);\n function WebMethodAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Prepare the request body based on the query.\n * The query information can be accessed at the WebMethod using variable named `value`.\n *\n * @param {DataManager} dm\n * @param {Query} query\n * @param {Object[]} hierarchyFilters?\n * @param hierarchyFilters\n * @returns application\n */\n WebMethodAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var obj = new UrlAdaptor().processQuery(dm, query, hierarchyFilters);\n var getData = 'data';\n var data = DataUtil.parse.parseJson(obj[getData]);\n var result = {};\n var value = 'value';\n if (data.param) {\n for (var i = 0; i < data.param.length; i++) {\n var param = data.param[i];\n var key = Object.keys(param)[0];\n result[key] = param[key];\n }\n }\n result[value] = data;\n var pvtData = 'pvtData';\n var url = 'url';\n return {\n data: JSON.stringify(result, DataUtil.parse.jsonDateReplacer),\n url: obj[url],\n pvtData: obj[pvtData],\n type: 'POST',\n contentType: 'application/json; charset=utf-8'\n };\n };\n return WebMethodAdaptor;\n}(UrlAdaptor));\nexport { WebMethodAdaptor };\n/**\n * RemoteSaveAdaptor, extended from JsonAdaptor and it is used for binding local data and performs all DataManager queries in client-side.\n * It interacts with server-side only for CRUD operations.\n *\n * @hidden\n */\nvar RemoteSaveAdaptor = /** @class */ (function (_super) {\n __extends(RemoteSaveAdaptor, _super);\n /**\n * @hidden\n */\n function RemoteSaveAdaptor() {\n var _this = _super.call(this) || this;\n setValue('beforeSend', UrlAdaptor.prototype.beforeSend, _this);\n return _this;\n }\n RemoteSaveAdaptor.prototype.insert = function (dm, data, tableName, query, position) {\n this.pvt.position = position;\n this.updateType = 'add';\n return {\n url: dm.dataSource.insertUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: data,\n table: tableName,\n action: 'insert'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.remove = function (dm, keyField, val, tableName, query) {\n _super.prototype.remove.call(this, dm, keyField, val);\n return {\n type: 'POST',\n url: dm.dataSource.removeUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n key: val,\n keyColumn: keyField,\n table: tableName,\n action: 'remove'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.update = function (dm, keyField, val, tableName, query) {\n this.updateType = 'update';\n this.updateKey = keyField;\n return {\n type: 'POST',\n url: dm.dataSource.updateUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: val,\n action: 'update',\n keyColumn: keyField,\n key: val[keyField],\n table: tableName\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes, e) {\n var i;\n var newData = request ? JSON.parse(request.data) : data;\n data = newData.action === 'batch' ? DataUtil.parse.parseJson(data) : data;\n if (this.updateType === 'add') {\n _super.prototype.insert.call(this, ds, data, null, null, this.pvt.position);\n }\n if (this.updateType === 'update') {\n _super.prototype.update.call(this, ds, this.updateKey, data);\n }\n this.updateType = undefined;\n if (data.added) {\n for (i = 0; i < data.added.length; i++) {\n _super.prototype.insert.call(this, ds, data.added[i]);\n }\n }\n if (data.changed) {\n for (i = 0; i < data.changed.length; i++) {\n _super.prototype.update.call(this, ds, e.key, data.changed[i]);\n }\n }\n if (data.deleted) {\n for (i = 0; i < data.deleted.length; i++) {\n _super.prototype.remove.call(this, ds, e.key, data.deleted[i]);\n }\n }\n return data;\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * Also perform the changes in the locally cached data to sync with the remote data.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n * @param query\n * @param original\n */\n RemoteSaveAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n return {\n type: 'POST',\n url: dm.dataSource.batchUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n contentType: 'application/json; charset=utf-8',\n dataType: 'json',\n data: JSON.stringify(extend({}, {\n changed: changes.changedRecords,\n added: changes.addedRecords,\n deleted: changes.deletedRecords,\n action: 'batch',\n table: e.url,\n key: e.key\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.addParams = function (options) {\n var urlParams = new UrlAdaptor();\n urlParams.addParams(options);\n };\n return RemoteSaveAdaptor;\n}(JsonAdaptor));\nexport { RemoteSaveAdaptor };\n/**\n * Fetch Adaptor that is extended from URL Adaptor, is used for handle data operations with user defined functions.\n *\n * @hidden\n */\nvar CustomDataAdaptor = /** @class */ (function (_super) {\n __extends(CustomDataAdaptor, _super);\n function CustomDataAdaptor(props) {\n var _this = _super.call(this) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n getData: new Function(),\n addRecord: new Function(),\n updateRecord: new Function(),\n deleteRecord: new Function(),\n batchUpdate: new Function()\n });\n extend(_this.options, props || {});\n return _this;\n }\n CustomDataAdaptor.prototype.getModuleName = function () {\n return 'CustomDataAdaptor';\n };\n return CustomDataAdaptor;\n}(UrlAdaptor));\nexport { CustomDataAdaptor };\n/**\n * The GraphqlAdaptor that is extended from URL Adaptor, is used for retrieving data from the Graphql server.\n * It interacts with the Graphql server with all the DataManager Queries and performs CRUD operations.\n *\n * @hidden\n */\nvar GraphQLAdaptor = /** @class */ (function (_super) {\n __extends(GraphQLAdaptor, _super);\n function GraphQLAdaptor(options) {\n var _this = _super.call(this) || this;\n _this.opt = options;\n _this.schema = _this.opt.response;\n _this.query = _this.opt.query;\n /* eslint-disable @typescript-eslint/no-empty-function */\n // tslint:disable-next-line:no-empty\n _this.getVariables = _this.opt.getVariables ? _this.opt.getVariables : function () { };\n /* eslint-enable @typescript-eslint/no-empty-function */\n _this.getQuery = function () { return _this.query; };\n return _this;\n }\n GraphQLAdaptor.prototype.getModuleName = function () {\n return 'GraphQLAdaptor';\n };\n /**\n * Process the JSON data based on the provided queries.\n *\n * @param {DataManager} dm\n * @param {Query} query?\n * @param datamanager\n * @param query\n */\n GraphQLAdaptor.prototype.processQuery = function (datamanager, query) {\n var urlQuery = _super.prototype.processQuery.apply(this, arguments);\n var dm = JSON.parse(urlQuery.data);\n // constructing GraphQL parameters\n var keys = ['skip', 'take', 'sorted', 'table', 'select', 'where',\n 'search', 'requiresCounts', 'aggregates', 'params'];\n var temp = {};\n var str = 'searchwhereparams';\n keys.filter(function (e) {\n temp[e] = str.indexOf(e) > -1 ? JSON.stringify(dm[e]) : dm[e];\n });\n var vars = this.getVariables() || {};\n // tslint:disable-next-line:no-string-literal\n vars['datamanager'] = temp;\n var data = JSON.stringify({\n query: this.getQuery(),\n variables: vars\n });\n urlQuery.data = data;\n return urlQuery;\n };\n /**\n * Returns the data from the query processing.\n * It will also cache the data for later usage.\n *\n * @param {DataResult} data\n * @param {DataManager} ds?\n * @param {Query} query?\n * @param {Request} xhr?\n * @param {Object} request?\n * @param resData\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @returns DataResult\n */\n GraphQLAdaptor.prototype.processResponse = function (resData, ds, query, xhr, request) {\n var res = resData;\n var count;\n var aggregates;\n var result = getValue(this.schema.result, res.data);\n if (this.schema.count) {\n count = getValue(this.schema.count, res.data);\n }\n if (this.schema.aggregates) {\n aggregates = getValue(this.schema.aggregates, res.data);\n aggregates = !isNullOrUndefined(aggregates) ? DataUtil.parse.parseJson(aggregates) : aggregates;\n }\n var pvt = request.pvtData || {};\n var args = { result: result, aggregates: aggregates };\n var data = args;\n if (pvt && pvt.groups && pvt.groups.length) {\n this.getAggregateResult(pvt, data, args, null, query);\n }\n return !isNullOrUndefined(count) ? { result: args.result, count: count, aggregates: aggregates } : args.result;\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n */\n GraphQLAdaptor.prototype.insert = function () {\n var inserted = _super.prototype.insert.apply(this, arguments);\n return this.generateCrudData(inserted, 'insert');\n };\n /**\n * Prepare and returns request body which is used to update a new record in the table.\n */\n GraphQLAdaptor.prototype.update = function () {\n var inserted = _super.prototype.update.apply(this, arguments);\n return this.generateCrudData(inserted, 'update');\n };\n /**\n * Prepare and returns request body which is used to remove a new record in the table.\n */\n GraphQLAdaptor.prototype.remove = function () {\n var inserted = _super.prototype.remove.apply(this, arguments);\n return this.generateCrudData(inserted, 'remove');\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {Object} e\n * @param e.key\n * @param {Query} query\n * @param {Object} original\n */\n GraphQLAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n var batch = _super.prototype.batchRequest.apply(this, arguments);\n // tslint:disable-next-line:typedef\n var bData = JSON.parse(batch.data);\n bData.key = e.key;\n batch.data = JSON.stringify(bData);\n return this.generateCrudData(batch, 'batch');\n };\n GraphQLAdaptor.prototype.generateCrudData = function (crudData, action) {\n var parsed = JSON.parse(crudData.data);\n crudData.data = JSON.stringify({\n query: this.opt.getMutation(action),\n variables: parsed\n });\n return crudData;\n };\n return GraphQLAdaptor;\n}(UrlAdaptor));\nexport { GraphQLAdaptor };\n/**\n * Cache Adaptor is used to cache the data of the visited pages. It prevents new requests for the previously visited pages.\n * You can configure cache page size and duration of caching by using cachingPageSize and timeTillExpiration properties of the DataManager\n *\n * @hidden\n */\nvar CacheAdaptor = /** @class */ (function (_super) {\n __extends(CacheAdaptor, _super);\n /**\n * Constructor for CacheAdaptor class.\n *\n * @param {CacheAdaptor} adaptor?\n * @param {number} timeStamp?\n * @param {number} pageSize?\n * @param adaptor\n * @param timeStamp\n * @param pageSize\n * @hidden\n */\n function CacheAdaptor(adaptor, timeStamp, pageSize) {\n var _this = _super.call(this) || this;\n _this.isCrudAction = false;\n _this.isInsertAction = false;\n if (!isNullOrUndefined(adaptor)) {\n _this.cacheAdaptor = adaptor;\n }\n _this.pageSize = pageSize;\n _this.guidId = DataUtil.getGuid('cacheAdaptor');\n var obj = { keys: [], results: [] };\n window.localStorage.setItem(_this.guidId, JSON.stringify(obj));\n var guid = _this.guidId;\n if (!isNullOrUndefined(timeStamp)) {\n setInterval(function () {\n var data = DataUtil.parse.parseJson(window.localStorage.getItem(guid));\n var forDel = [];\n for (var i = 0; i < data.results.length; i++) {\n var currentTime = +new Date();\n var requestTime = +new Date(data.results[i].timeStamp);\n data.results[i].timeStamp = currentTime - requestTime;\n if (currentTime - requestTime > timeStamp) {\n forDel.push(i);\n }\n }\n for (var i = 0; i < forDel.length; i++) {\n data.results.splice(forDel[i], 1);\n data.keys.splice(forDel[i], 1);\n }\n window.localStorage.removeItem(guid);\n window.localStorage.setItem(guid, JSON.stringify(data));\n }, timeStamp);\n }\n return _this;\n }\n /**\n * It will generate the key based on the URL when we send a request to server.\n *\n * @param {string} url\n * @param {Query} query?\n * @param query\n * @hidden\n */\n CacheAdaptor.prototype.generateKey = function (url, query) {\n var queries = this.getQueryRequest(query);\n var singles = Query.filterQueryLists(query.queries, ['onSelect', 'onPage', 'onSkip', 'onTake', 'onRange']);\n var key = url;\n var page = 'onPage';\n if (page in singles) {\n key += singles[page].pageIndex;\n }\n queries.sorts.forEach(function (obj) {\n key += obj.e.direction + obj.e.fieldName;\n });\n queries.groups.forEach(function (obj) {\n key += obj.e.fieldName;\n });\n queries.searches.forEach(function (obj) {\n key += obj.e.searchKey;\n });\n for (var filter = 0; filter < queries.filters.length; filter++) {\n var currentFilter = queries.filters[filter];\n if (currentFilter.e.isComplex) {\n var newQuery = query.clone();\n newQuery.queries = [];\n for (var i = 0; i < currentFilter.e.predicates.length; i++) {\n newQuery.queries.push({ fn: 'onWhere', e: currentFilter.e.predicates[i], filter: query.queries.filter });\n }\n key += currentFilter.e.condition + this.generateKey(url, newQuery);\n }\n else {\n key += currentFilter.e.field + currentFilter.e.operator + currentFilter.e.value;\n }\n }\n return key;\n };\n /**\n * Process the query to generate request body.\n * If the data is already cached, it will return the cached data.\n *\n * @param {DataManager} dm\n * @param {Query} query?\n * @param {Object[]} hierarchyFilters?\n * @param query\n * @param hierarchyFilters\n */\n CacheAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var key = this.generateKey(dm.dataSource.url, query);\n var cachedItems = DataUtil.parse.parseJson(window.localStorage.getItem(this.guidId));\n var data = cachedItems ? cachedItems.results[cachedItems.keys.indexOf(key)] : null;\n if (data != null && !this.isCrudAction && !this.isInsertAction) {\n return data;\n }\n this.isCrudAction = null;\n this.isInsertAction = null;\n /* eslint-disable prefer-spread */\n return this.cacheAdaptor.processQuery.apply(this.cacheAdaptor, [].slice.call(arguments, 0));\n /* eslint-enable prefer-spread */\n };\n /**\n * Returns the data from the query processing.\n * It will also cache the data for later usage.\n *\n * @param {DataResult} data\n * @param {DataManager} ds?\n * @param {Query} query?\n * @param {Request} xhr?\n * @param {Fetch} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n */\n CacheAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n if (this.isInsertAction || (request && this.cacheAdaptor.options.batch &&\n DataUtil.endsWith(request.url, this.cacheAdaptor.options.batch) && request.type.toLowerCase() === 'post')) {\n return this.cacheAdaptor.processResponse(data, ds, query, xhr, request, changes);\n }\n /* eslint-disable prefer-spread */\n data = this.cacheAdaptor.processResponse.apply(this.cacheAdaptor, [].slice.call(arguments, 0));\n /* eslint-enable prefer-spread */\n var key = query ? this.generateKey(ds.dataSource.url, query) : ds.dataSource.url;\n var obj = {};\n obj = DataUtil.parse.parseJson(window.localStorage.getItem(this.guidId));\n var index = obj.keys.indexOf(key);\n if (index !== -1) {\n obj.results.splice(index, 1);\n obj.keys.splice(index, 1);\n }\n obj.results[obj.keys.push(key) - 1] = { keys: key, result: data.result, timeStamp: new Date(), count: data.count };\n while (obj.results.length > this.pageSize) {\n obj.results.splice(0, 1);\n obj.keys.splice(0, 1);\n }\n window.localStorage.setItem(this.guidId, JSON.stringify(obj));\n return data;\n };\n /**\n * Method will trigger before send the request to server side. Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {Request} request\n * @param {Fetch} settings?\n * @param settings\n */\n CacheAdaptor.prototype.beforeSend = function (dm, request, settings) {\n if (!isNullOrUndefined(this.cacheAdaptor.options.batch) && DataUtil.endsWith(settings.url, this.cacheAdaptor.options.batch)\n && settings.type.toLowerCase() === 'post') {\n request.headers.set('Accept', this.cacheAdaptor.options.multipartAccept);\n }\n if (!dm.dataSource.crossDomain) {\n request.headers.set('Accept', this.cacheAdaptor.options.accept);\n }\n };\n /**\n * Updates existing record and saves the changes to the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName\n */\n CacheAdaptor.prototype.update = function (dm, keyField, value, tableName) {\n this.isCrudAction = true;\n return this.cacheAdaptor.update(dm, keyField, value, tableName);\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n * @param tableName\n */\n CacheAdaptor.prototype.insert = function (dm, data, tableName) {\n this.isInsertAction = true;\n return this.cacheAdaptor.insert(dm, data, tableName);\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n */\n CacheAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n this.isCrudAction = true;\n return this.cacheAdaptor.remove(dm, keyField, value, tableName);\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n */\n CacheAdaptor.prototype.batchRequest = function (dm, changes, e) {\n return this.cacheAdaptor.batchRequest(dm, changes, e);\n };\n return CacheAdaptor;\n}(UrlAdaptor));\nexport { CacheAdaptor };\n","/* eslint-disable valid-jsdoc */\n/* eslint-disable security/detect-object-injection */\nimport { Fetch } from '@syncfusion/ej2-base';\nimport { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataUtil } from './util';\nimport { Predicate, Query } from './query';\nimport { ODataAdaptor, JsonAdaptor, CacheAdaptor, RemoteSaveAdaptor, CustomDataAdaptor } from './adaptors';\n/**\n * DataManager is used to manage and manipulate relational data.\n */\nvar DataManager = /** @class */ (function () {\n /**\n * Constructor for DataManager class\n *\n * @param {DataOptions|JSON[]} dataSource?\n * @param {Query} query?\n * @param {AdaptorOptions|string} adaptor?\n * @param dataSource\n * @param query\n * @param adaptor\n * @hidden\n */\n function DataManager(dataSource, query, adaptor) {\n var _this = this;\n /** @hidden */\n this.dateParse = true;\n /** @hidden */\n this.timeZoneHandling = true;\n this.persistQuery = {};\n this.isInitialLoad = false;\n this.requests = [];\n this.isInitialLoad = true;\n if (!dataSource && !this.dataSource) {\n dataSource = [];\n }\n adaptor = adaptor || dataSource.adaptor;\n if (dataSource && dataSource.timeZoneHandling === false) {\n this.timeZoneHandling = dataSource.timeZoneHandling;\n }\n var data;\n if (dataSource instanceof Array) {\n data = {\n json: dataSource,\n offline: true\n };\n }\n else if (typeof dataSource === 'object') {\n if (!dataSource.json) {\n dataSource.json = [];\n }\n if (!dataSource.enablePersistence) {\n dataSource.enablePersistence = false;\n }\n if (!dataSource.id) {\n dataSource.id = '';\n }\n if (!dataSource.ignoreOnPersist) {\n dataSource.ignoreOnPersist = [];\n }\n data = {\n url: dataSource.url,\n insertUrl: dataSource.insertUrl,\n removeUrl: dataSource.removeUrl,\n updateUrl: dataSource.updateUrl,\n crudUrl: dataSource.crudUrl,\n batchUrl: dataSource.batchUrl,\n json: dataSource.json,\n headers: dataSource.headers,\n accept: dataSource.accept,\n data: dataSource.data,\n timeTillExpiration: dataSource.timeTillExpiration,\n cachingPageSize: dataSource.cachingPageSize,\n enableCaching: dataSource.enableCaching,\n requestType: dataSource.requestType,\n key: dataSource.key,\n crossDomain: dataSource.crossDomain,\n jsonp: dataSource.jsonp,\n dataType: dataSource.dataType,\n offline: dataSource.offline !== undefined ? dataSource.offline\n : dataSource.adaptor instanceof RemoteSaveAdaptor || dataSource.adaptor instanceof CustomDataAdaptor ?\n false : dataSource.url ? false : true,\n requiresFormat: dataSource.requiresFormat,\n enablePersistence: dataSource.enablePersistence,\n id: dataSource.id,\n ignoreOnPersist: dataSource.ignoreOnPersist\n };\n }\n else {\n DataUtil.throwError('DataManager: Invalid arguments');\n }\n if (data.requiresFormat === undefined && !DataUtil.isCors()) {\n data.requiresFormat = isNullOrUndefined(data.crossDomain) ? true : data.crossDomain;\n }\n if (data.dataType === undefined) {\n data.dataType = 'json';\n }\n this.dataSource = data;\n this.defaultQuery = query;\n if (this.dataSource.enablePersistence && this.dataSource.id) {\n window.addEventListener('unload', this.setPersistData.bind(this));\n }\n if (data.url && data.offline && !data.json.length) {\n this.isDataAvailable = false;\n this.adaptor = adaptor || new ODataAdaptor();\n this.dataSource.offline = false;\n this.ready = this.executeQuery(query || new Query());\n this.ready.then(function (e) {\n _this.dataSource.offline = true;\n _this.isDataAvailable = true;\n data.json = e.result;\n _this.adaptor = new JsonAdaptor();\n });\n }\n else {\n this.adaptor = data.offline ? new JsonAdaptor() : new ODataAdaptor();\n }\n if (!data.jsonp && this.adaptor instanceof ODataAdaptor) {\n data.jsonp = 'callback';\n }\n this.adaptor = adaptor || this.adaptor;\n if (data.enableCaching) {\n this.adaptor = new CacheAdaptor(this.adaptor, data.timeTillExpiration, data.cachingPageSize);\n }\n return this;\n }\n Object.defineProperty(DataManager.prototype, \"moduleName\", {\n /** @hidden */\n get: function () { return 'datamanager'; },\n enumerable: true,\n configurable: true\n });\n ;\n /**\n * Get the queries maintained in the persisted state.\n * @param {string} id - The identifier of the persisted query to retrieve.\n * @returns {object} The persisted data object.\n */\n DataManager.prototype.getPersistedData = function (id) {\n var persistedData = localStorage.getItem(id || this.dataSource.id);\n return JSON.parse(persistedData);\n };\n /**\n * Set the queries to be maintained in the persisted state.\n * @param {Event} e - The event parameter that triggers the setPersistData method.\n * @param {string} id - The identifier of the persisted query to set.\n * @param {object} persistData - The data to be persisted.\n * @returns {void} .\n */\n DataManager.prototype.setPersistData = function (e, id, persistData) {\n localStorage.setItem(id || this.dataSource.id, JSON.stringify(persistData || this.persistQuery));\n };\n DataManager.prototype.setPersistQuery = function (query) {\n var _this = this;\n var persistedQuery = this.getPersistedData();\n if (this.isInitialLoad && persistedQuery && Object.keys(persistedQuery).length) {\n this.persistQuery = persistedQuery;\n this.persistQuery.queries = this.persistQuery.queries.filter(function (query) {\n if (_this.dataSource.ignoreOnPersist && _this.dataSource.ignoreOnPersist.length) {\n if (query.fn && _this.dataSource.ignoreOnPersist.some(function (keyword) { return query.fn === keyword; })) {\n return false; // Exclude the matching query\n }\n }\n if (query.fn === 'onWhere') {\n var e = query.e;\n if (e && e.isComplex && e.predicates instanceof Array) {\n var allPredicates = e.predicates.map(function (predicateObj) {\n if (predicateObj.predicates && predicateObj.predicates instanceof Array) {\n // Process nested predicate array\n var nestedPredicates = predicateObj.predicates.map(function (nestedPredicate) {\n var field = nestedPredicate.field, operator = nestedPredicate.operator, value = nestedPredicate.value, ignoreCase = nestedPredicate.ignoreCase, ignoreAccent = nestedPredicate.ignoreAccent, matchCase = nestedPredicate.matchCase;\n return new Predicate(field, operator, value, ignoreCase, ignoreAccent, matchCase);\n });\n return predicateObj.condition === 'and' ? Predicate.and(nestedPredicates) : Predicate.or(nestedPredicates);\n }\n else {\n // Process individual predicate\n var field = predicateObj.field, operator = predicateObj.operator, value = predicateObj.value, ignoreCase = predicateObj.ignoreCase, ignoreAccent = predicateObj.ignoreAccent, matchCase = predicateObj.matchCase;\n return new Predicate(field, operator, value, ignoreCase, ignoreAccent, matchCase);\n }\n });\n query.e = new Predicate(allPredicates[0], e.condition, allPredicates.slice(1));\n }\n }\n return true; // Keep all other queries\n });\n var newQuery = extend(new Query(), this.persistQuery);\n this.isInitialLoad = false;\n return (newQuery);\n }\n else {\n this.persistQuery = query;\n this.isInitialLoad = false;\n return query;\n }\n };\n /**\n * Overrides DataManager's default query with given query.\n *\n * @param {Query} query - Defines the new default query.\n */\n DataManager.prototype.setDefaultQuery = function (query) {\n this.defaultQuery = query;\n return this;\n };\n /**\n * Executes the given query with local data source.\n *\n * @param {Query} query - Defines the query to retrieve data.\n */\n DataManager.prototype.executeLocal = function (query) {\n if (!this.defaultQuery && !(query instanceof Query)) {\n DataUtil.throwError('DataManager - executeLocal() : A query is required to execute');\n }\n if (!this.dataSource.json) {\n DataUtil.throwError('DataManager - executeLocal() : Json data is required to execute');\n }\n if (this.dataSource.enablePersistence && this.dataSource.id) {\n query = this.setPersistQuery(query);\n }\n query = query || this.defaultQuery;\n var result = this.adaptor.processQuery(this, query);\n if (query.subQuery) {\n var from = query.subQuery.fromTable;\n var lookup = query.subQuery.lookups;\n var res = query.isCountRequired ? result.result :\n result;\n if (lookup && lookup instanceof Array) {\n DataUtil.buildHierarchy(query.subQuery.fKey, from, res, lookup, query.subQuery.key);\n }\n for (var j = 0; j < res.length; j++) {\n if (res[j][from] instanceof Array) {\n res[j] = extend({}, {}, res[j]);\n res[j][from] = this.adaptor.processResponse(query.subQuery.using(new DataManager(res[j][from].slice(0))).executeLocal(), this, query);\n }\n }\n }\n return this.adaptor.processResponse(result, this, query);\n };\n /**\n * Executes the given query with either local or remote data source.\n * It will be executed as asynchronously and returns Promise object which will be resolved or rejected after action completed.\n *\n * @param {Query|Function} query - Defines the query to retrieve data.\n * @param {Function} done - Defines the callback function and triggers when the Promise is resolved.\n * @param {Function} fail - Defines the callback function and triggers when the Promise is rejected.\n * @param {Function} always - Defines the callback function and triggers when the Promise is resolved or rejected.\n */\n DataManager.prototype.executeQuery = function (query, done, fail, always) {\n var _this = this;\n var makeRequest = 'makeRequest';\n if (this.dataSource.enablePersistence && this.dataSource.id) {\n query = this.setPersistQuery(query);\n }\n if (typeof query === 'function') {\n always = fail;\n fail = done;\n done = query;\n query = null;\n }\n if (!query) {\n query = this.defaultQuery;\n }\n if (!(query instanceof Query)) {\n DataUtil.throwError('DataManager - executeQuery() : A query is required to execute');\n }\n var deffered = new Deferred();\n var args = { query: query };\n if (!this.dataSource.offline && (this.dataSource.url !== undefined && this.dataSource.url !== '')\n || (!isNullOrUndefined(this.adaptor[makeRequest])) || this.isCustomDataAdaptor(this.adaptor)) {\n var result = this.adaptor.processQuery(this, query);\n if (!isNullOrUndefined(this.adaptor[makeRequest])) {\n this.adaptor[makeRequest](result, deffered, args, query);\n }\n else if (!isNullOrUndefined(result.url) || this.isCustomDataAdaptor(this.adaptor)) {\n this.requests = [];\n this.makeRequest(result, deffered, args, query);\n }\n else {\n args = DataManager.getDeferedArgs(query, result, args);\n deffered.resolve(args);\n }\n }\n else {\n DataManager.nextTick(function () {\n var res = _this.executeLocal(query);\n args = DataManager.getDeferedArgs(query, res, args);\n deffered.resolve(args);\n });\n }\n if (done || fail) {\n deffered.promise.then(done, fail);\n }\n if (always) {\n deffered.promise.then(always, always);\n }\n return deffered.promise;\n };\n DataManager.getDeferedArgs = function (query, result, args) {\n if (query.isCountRequired) {\n args.result = result.result;\n args.count = result.count;\n args.aggregates = result.aggregates;\n }\n else {\n args.result = result;\n }\n return args;\n };\n DataManager.nextTick = function (fn) {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n // tslint:disable-next-line:no-any\n (window.setImmediate || window.setTimeout)(fn, 0);\n /* eslint-enable @typescript-eslint/no-explicit-any */\n };\n DataManager.prototype.extendRequest = function (url, fnSuccess, fnFail) {\n return extend({}, {\n type: 'GET',\n dataType: this.dataSource.dataType,\n crossDomain: this.dataSource.crossDomain,\n jsonp: this.dataSource.jsonp,\n cache: true,\n processData: false,\n onSuccess: fnSuccess,\n onFailure: fnFail\n }, url);\n };\n // tslint:disable-next-line:max-func-body-length\n DataManager.prototype.makeRequest = function (url, deffered, args, query) {\n var _this = this;\n var isSelector = !!query.subQuerySelector;\n var fnFail = function (e) {\n args.error = e;\n deffered.reject(args);\n };\n var process = function (data, count, xhr, request, actual, aggregates, virtualSelectRecords) {\n args.xhr = xhr;\n args.count = count ? parseInt(count.toString(), 10) : 0;\n args.result = data;\n args.request = request;\n args.aggregates = aggregates;\n args.actual = actual;\n args.virtualSelectRecords = virtualSelectRecords;\n deffered.resolve(args);\n };\n var fnQueryChild = function (data, selector) {\n var subDeffer = new Deferred();\n var childArgs = { parent: args };\n query.subQuery.isChild = true;\n var subUrl = _this.adaptor.processQuery(_this, query.subQuery, data ? _this.adaptor.processResponse(data) : selector);\n var childReq = _this.makeRequest(subUrl, subDeffer, childArgs, query.subQuery);\n if (!isSelector) {\n subDeffer.then(function (subData) {\n if (data) {\n DataUtil.buildHierarchy(query.subQuery.fKey, query.subQuery.fromTable, data, subData, query.subQuery.key);\n process(data, subData.count, subData.xhr);\n }\n }, fnFail);\n }\n return childReq;\n };\n var fnSuccess = function (data, request) {\n if (_this.isGraphQLAdaptor(_this.adaptor)) {\n // tslint:disable-next-line:no-string-literal\n if (!isNullOrUndefined(data['errors'])) {\n // tslint:disable-next-line:no-string-literal\n return fnFail(data['errors'], request);\n }\n }\n if (_this.isCustomDataAdaptor(_this.adaptor)) {\n request = extend({}, _this.fetchReqOption, request);\n }\n if (request.contentType.indexOf('xml') === -1 && _this.dateParse) {\n data = DataUtil.parse.parseJson(data);\n }\n var result = _this.adaptor.processResponse(data, _this, query, request.fetchRequest, request);\n var count = 0;\n var aggregates = null;\n var virtualSelectRecords = 'virtualSelectRecords';\n var virtualRecords = data[virtualSelectRecords];\n if (query.isCountRequired) {\n count = result.count;\n aggregates = result.aggregates;\n result = result.result;\n }\n if (!query.subQuery) {\n process(result, count, request.fetchRequest, request.type, data, aggregates, virtualRecords);\n return;\n }\n if (!isSelector) {\n fnQueryChild(result, request);\n }\n };\n var req = this.extendRequest(url, fnSuccess, fnFail);\n if (!this.isCustomDataAdaptor(this.adaptor)) {\n var fetch_1 = new Fetch(req);\n fetch_1.beforeSend = function () {\n _this.beforeSend(fetch_1.fetchRequest, fetch_1);\n };\n req = fetch_1.send();\n req.catch(function (e) { return true; }); // to handle failure remote requests.\n this.requests.push(fetch_1);\n }\n else {\n this.fetchReqOption = req;\n var request = req;\n this.adaptor.options.getData({\n data: request.data,\n onSuccess: request.onSuccess, onFailure: request.onFailure\n });\n }\n if (isSelector) {\n var promise = void 0;\n var res = query.subQuerySelector.call(this, { query: query.subQuery, parent: query });\n if (res && res.length) {\n promise = Promise.all([req, fnQueryChild(null, res)]);\n promise.then(function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var result = args[0];\n var pResult = _this.adaptor.processResponse(result[0], _this, query, _this.requests[0].fetchRequest, _this.requests[0]);\n var count = 0;\n if (query.isCountRequired) {\n count = pResult.count;\n pResult = pResult.result;\n }\n var cResult = _this.adaptor.processResponse(result[1], _this, query.subQuery, _this.requests[1].fetchRequest, _this.requests[1]);\n count = 0;\n if (query.subQuery.isCountRequired) {\n count = cResult.count;\n cResult = cResult.result;\n }\n DataUtil.buildHierarchy(query.subQuery.fKey, query.subQuery.fromTable, pResult, cResult, query.subQuery.key);\n isSelector = false;\n process(pResult, count, _this.requests[0].fetchRequest);\n });\n }\n else {\n isSelector = false;\n }\n }\n return req;\n };\n DataManager.prototype.beforeSend = function (request, settings) {\n this.adaptor.beforeSend(this, request, settings);\n var headers = this.dataSource.headers;\n var props;\n for (var i = 0; headers && i < headers.length; i++) {\n props = [];\n var keys = Object.keys(headers[i]);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var prop = keys_1[_i];\n props.push(prop);\n request.headers.set(prop, headers[i][prop]);\n }\n }\n };\n /**\n * Save bulk changes to the given table name.\n * User can add a new record, edit an existing record, and delete a record at the same time.\n * If the datasource from remote, then updated in a single post.\n *\n * @param {Object} changes - Defines the CrudOptions.\n * @param {string} key - Defines the column field.\n * @param {string|Query} tableName - Defines the table name.\n * @param {Query} query - Sets default query for the DataManager.\n * @param original\n */\n DataManager.prototype.saveChanges = function (changes, key, tableName, query, original) {\n var _this = this;\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var args = {\n url: tableName,\n key: key || this.dataSource.key\n };\n var req = this.adaptor.batchRequest(this, changes, args, query || new Query(), original);\n var dofetchRequest = 'dofetchRequest';\n if (this.dataSource.offline) {\n return req;\n }\n if (!isNullOrUndefined(this.adaptor[dofetchRequest])) {\n return this.adaptor[dofetchRequest](req);\n }\n else if (!this.isCustomDataAdaptor(this.adaptor)) {\n var deff_1 = new Deferred();\n var fetch_2 = new Fetch(req);\n fetch_2.beforeSend = function () {\n _this.beforeSend(fetch_2.fetchRequest, fetch_2);\n };\n fetch_2.onSuccess = function (data, request) {\n if (_this.isGraphQLAdaptor(_this.adaptor)) {\n // tslint:disable-next-line:no-string-literal\n if (!isNullOrUndefined(data['errors'])) {\n // tslint:disable-next-line:no-string-literal\n fetch_2.onFailure(JSON.stringify(data['errors']));\n }\n }\n deff_1.resolve(_this.adaptor.processResponse(data, _this, null, request.fetchRequest, request, changes, args));\n };\n fetch_2.onFailure = function (e) {\n deff_1.reject([{ error: e }]);\n };\n fetch_2.send().catch(function (e) { return true; }); // to handle the failure requests.\n return deff_1.promise;\n }\n else {\n return this.dofetchRequest(req, this.adaptor.options.batchUpdate);\n }\n };\n /**\n * Inserts new record in the given table.\n *\n * @param {Object} data - Defines the data to insert.\n * @param {string|Query} tableName - Defines the table name.\n * @param {Query} query - Sets default query for the DataManager.\n * @param position\n */\n DataManager.prototype.insert = function (data, tableName, query, position) {\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var req = this.adaptor.insert(this, data, tableName, query, position);\n var dofetchRequest = 'dofetchRequest';\n if (this.dataSource.offline) {\n return req;\n }\n if (!isNullOrUndefined(this.adaptor[dofetchRequest])) {\n return this.adaptor[dofetchRequest](req);\n }\n else {\n return this.dofetchRequest(req, this.adaptor.options.addRecord);\n }\n };\n /**\n * Removes data from the table with the given key.\n *\n * @param {string} keyField - Defines the column field.\n * @param {Object} value - Defines the value to find the data in the specified column.\n * @param {string|Query} tableName - Defines the table name\n * @param {Query} query - Sets default query for the DataManager.\n */\n DataManager.prototype.remove = function (keyField, value, tableName, query) {\n if (typeof value === 'object') {\n value = DataUtil.getObject(keyField, value);\n }\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var res = this.adaptor.remove(this, keyField, value, tableName, query);\n var dofetchRequest = 'dofetchRequest';\n if (this.dataSource.offline) {\n return res;\n }\n if (!isNullOrUndefined(this.adaptor[dofetchRequest])) {\n return this.adaptor[dofetchRequest](res);\n }\n else {\n var remove = this.adaptor.options.deleteRecord;\n return this.dofetchRequest(res, remove);\n }\n };\n /**\n * Updates existing record in the given table.\n *\n * @param {string} keyField - Defines the column field.\n * @param {Object} value - Defines the value to find the data in the specified column.\n * @param {string|Query} tableName - Defines the table name\n * @param {Query} query - Sets default query for the DataManager.\n * @param original\n */\n DataManager.prototype.update = function (keyField, value, tableName, query, original) {\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var res = this.adaptor.update(this, keyField, value, tableName, query, original);\n var dofetchRequest = 'dofetchRequest';\n if (this.dataSource.offline) {\n return res;\n }\n if (!isNullOrUndefined(this.adaptor[dofetchRequest])) {\n return this.adaptor[dofetchRequest](res);\n }\n else {\n var update = this.adaptor.options.updateRecord;\n return this.dofetchRequest(res, update);\n }\n };\n DataManager.prototype.isCustomDataAdaptor = function (dataSource) {\n return this.adaptor.getModuleName &&\n this.adaptor.getModuleName() === 'CustomDataAdaptor';\n };\n DataManager.prototype.isGraphQLAdaptor = function (dataSource) {\n return this.adaptor.getModuleName &&\n this.adaptor.getModuleName() === 'GraphQLAdaptor';\n };\n DataManager.prototype.successFunc = function (record, request) {\n if (this.isGraphQLAdaptor(this.adaptor)) {\n var data = typeof record === 'object' ? record : JSON.parse(record);\n // tslint:disable-next-line:no-string-literal\n if (!isNullOrUndefined(data['errors'])) {\n // tslint:disable-next-line:no-string-literal\n this.failureFunc(JSON.stringify(data['errors']));\n }\n }\n if (this.isCustomDataAdaptor(this.adaptor)) {\n request = extend({}, this.fetchReqOption, request);\n }\n try {\n DataUtil.parse.parseJson(record);\n }\n catch (e) {\n record = [];\n }\n record = this.adaptor.processResponse(DataUtil.parse.parseJson(record), this, null, request.fetchRequest, request);\n this.fetchDeffered.resolve(record);\n };\n DataManager.prototype.failureFunc = function (e) {\n this.fetchDeffered.reject([{ error: e }]);\n };\n DataManager.prototype.dofetchRequest = function (res, fetchFunc) {\n var _this = this;\n res = extend({}, {\n type: 'POST',\n contentType: 'application/json; charset=utf-8',\n processData: false\n }, res);\n this.fetchDeffered = new Deferred();\n if (!this.isCustomDataAdaptor(this.adaptor)) {\n var fetch_3 = new Fetch(res);\n fetch_3.beforeSend = function () {\n _this.beforeSend(fetch_3.fetchRequest, fetch_3);\n };\n fetch_3.onSuccess = this.successFunc.bind(this);\n fetch_3.onFailure = this.failureFunc.bind(this);\n fetch_3.send().catch(function (e) { return true; }); // to handle the failure requests.\n }\n else {\n this.fetchReqOption = res;\n fetchFunc.call(this, {\n data: res.data, onSuccess: this.successFunc.bind(this),\n onFailure: this.failureFunc.bind(this)\n });\n }\n return this.fetchDeffered.promise;\n };\n DataManager.prototype.clearPersistence = function () {\n window.removeEventListener('unload', this.setPersistData.bind(this));\n this.dataSource.enablePersistence = false;\n this.persistQuery = {};\n window.localStorage.setItem(this.dataSource.id, '[]');\n };\n return DataManager;\n}());\nexport { DataManager };\n/**\n * Deferred is used to handle asynchronous operation.\n */\nvar Deferred = /** @class */ (function () {\n function Deferred() {\n var _this = this;\n /**\n * Promise is an object that represents a value that may not be available yet, but will be resolved at some point in the future.\n */\n this.promise = new Promise(function (resolve, reject) {\n _this.resolve = resolve;\n _this.reject = reject;\n });\n /**\n * Defines the callback function triggers when the Deferred object is resolved.\n */\n this.then = this.promise.then.bind(this.promise);\n /**\n * Defines the callback function triggers when the Deferred object is rejected.\n */\n this.catch = this.promise.catch.bind(this.promise);\n }\n return Deferred;\n}());\nexport { Deferred };\n","/* eslint-disable valid-jsdoc */\n/* eslint-disable security/detect-object-injection */\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataManager } from './manager';\nimport { Query, Predicate } from './query';\nvar consts = { GroupGuid: '{271bbba0-1ee7}' };\n/**\n * Data manager common utility methods.\n *\n * @hidden\n */\nvar DataUtil = /** @class */ (function () {\n function DataUtil() {\n }\n /**\n * Returns the value by invoking the provided parameter function.\n * If the paramater is not of type function then it will be returned as it is.\n *\n * @param {Function|string|string[]|number} value\n * @param {Object} inst?\n * @param inst\n * @hidden\n */\n DataUtil.getValue = function (value, inst) {\n if (typeof value === 'function') {\n return value.call(inst || {});\n }\n return value;\n };\n /**\n * Returns true if the input string ends with given string.\n *\n * @param {string} input\n * @param {string} substr\n */\n DataUtil.endsWith = function (input, substr) {\n return input.slice && input.slice(-substr.length) === substr;\n };\n /**\n * Returns true if the input string not ends with given string.\n *\n * @param {string} input\n * @param {string} substr\n */\n DataUtil.notEndsWith = function (input, substr) {\n return input.slice && input.slice(-substr.length) !== substr;\n };\n /**\n * Returns true if the input string starts with given string.\n *\n * @param {string} str\n * @param {string} startstr\n * @param input\n * @param start\n */\n DataUtil.startsWith = function (input, start) {\n return input.slice(0, start.length) === start;\n };\n /**\n * Returns true if the input string not starts with given string.\n *\n * @param {string} str\n * @param {string} startstr\n * @param input\n * @param start\n */\n DataUtil.notStartsWith = function (input, start) {\n return input.slice(0, start.length) !== start;\n };\n /**\n * Returns true if the input string pattern(wildcard) matches with given string.\n *\n * @param {string} str\n * @param {string} startstr\n * @param input\n * @param pattern\n */\n DataUtil.wildCard = function (input, pattern) {\n var asteriskSplit;\n var optionalSplit;\n // special character allowed search\n if (pattern.indexOf('[') !== -1) {\n pattern = pattern.split('[').join('[[]');\n }\n if (pattern.indexOf('(') !== -1) {\n pattern = pattern.split('(').join('[(]');\n }\n if (pattern.indexOf(')') !== -1) {\n pattern = pattern.split(')').join('[)]');\n }\n if (pattern.indexOf('\\\\') !== -1) {\n pattern = pattern.split('\\\\').join('[\\\\\\\\]');\n }\n if (pattern.indexOf('*') !== -1) {\n if (pattern.charAt(0) !== '*') {\n pattern = '^' + pattern;\n }\n if (pattern.charAt(pattern.length - 1) !== '*') {\n pattern = pattern + '$';\n }\n asteriskSplit = pattern.split('*');\n for (var i = 0; i < asteriskSplit.length; i++) {\n if (asteriskSplit[i].indexOf('.') === -1) {\n asteriskSplit[i] = asteriskSplit[i] + '.*';\n }\n else {\n asteriskSplit[i] = asteriskSplit[i] + '*';\n }\n }\n pattern = asteriskSplit.join('');\n }\n if (pattern.indexOf('%3f') !== -1 || pattern.indexOf('?') !== -1) {\n optionalSplit = pattern.indexOf('%3f') !== -1 ? pattern.split('%3f') : pattern.split('?');\n pattern = optionalSplit.join('.');\n }\n // eslint-disable-next-line security/detect-non-literal-regexp\n var regexPattern = new RegExp(pattern, 'g');\n return regexPattern.test(input);\n };\n /**\n * Returns true if the input string pattern(like) matches with given string.\n *\n * @param {string} str\n * @param {string} startstr\n * @param input\n * @param pattern\n */\n DataUtil.like = function (input, pattern) {\n if (pattern.indexOf('%') !== -1) {\n if (pattern.charAt(0) === '%' && pattern.lastIndexOf('%') < 2) {\n pattern = pattern.substring(1, pattern.length);\n return DataUtil.startsWith(DataUtil.toLowerCase(input), DataUtil.toLowerCase(pattern));\n }\n else if (pattern.charAt(pattern.length - 1) === '%' && pattern.indexOf('%') > pattern.length - 3) {\n pattern = pattern.substring(0, pattern.length - 1);\n return DataUtil.endsWith(DataUtil.toLowerCase(input), DataUtil.toLowerCase(pattern));\n }\n else if (pattern.lastIndexOf('%') !== pattern.indexOf('%') && pattern.lastIndexOf('%') > pattern.indexOf('%') + 1) {\n pattern = pattern.substring(pattern.indexOf('%') + 1, pattern.lastIndexOf('%'));\n return input.indexOf(pattern) !== -1;\n }\n else {\n return input.indexOf(pattern) !== -1;\n }\n }\n else {\n return false;\n }\n };\n /**\n * To return the sorting function based on the string.\n *\n * @param {string} order\n * @hidden\n */\n DataUtil.fnSort = function (order) {\n order = order ? DataUtil.toLowerCase(order) : 'ascending';\n if (order === 'ascending') {\n return this.fnAscending;\n }\n return this.fnDescending;\n };\n /**\n * Comparer function which is used to sort the data in ascending order.\n *\n * @param {string|number} x\n * @param {string|number} y\n * @returns number\n */\n DataUtil.fnAscending = function (x, y) {\n if (isNullOrUndefined(x) && isNullOrUndefined(y)) {\n return -1;\n }\n if (y === null || y === undefined) {\n return -1;\n }\n if (typeof x === 'string') {\n return x.localeCompare(y);\n }\n if (x === null || x === undefined) {\n return 1;\n }\n return x - y;\n };\n /**\n * Comparer function which is used to sort the data in descending order.\n *\n * @param {string|number} x\n * @param {string|number} y\n * @returns number\n */\n DataUtil.fnDescending = function (x, y) {\n if (isNullOrUndefined(x) && isNullOrUndefined(y)) {\n return -1;\n }\n if (y === null || y === undefined) {\n return 1;\n }\n if (typeof x === 'string') {\n return x.localeCompare(y) * -1;\n }\n if (x === null || x === undefined) {\n return -1;\n }\n return y - x;\n };\n DataUtil.extractFields = function (obj, fields) {\n var newObj = {};\n for (var i = 0; i < fields.length; i++) {\n newObj = this.setValue(fields[i], this.getObject(fields[i], obj), newObj);\n }\n return newObj;\n };\n /**\n * Select objects by given fields from jsonArray.\n *\n * @param {Object[]} jsonArray\n * @param {string[]} fields\n */\n DataUtil.select = function (jsonArray, fields) {\n var newData = [];\n for (var i = 0; i < jsonArray.length; i++) {\n newData.push(this.extractFields(jsonArray[i], fields));\n }\n return newData;\n };\n /**\n * Group the input data based on the field name.\n * It also performs aggregation of the grouped records based on the aggregates paramater.\n *\n * @param {Object[]} jsonArray\n * @param {string} field?\n * @param {Object[]} agg?\n * @param {number} level?\n * @param {Object[]} groupDs?\n * @param field\n * @param aggregates\n * @param level\n * @param groupDs\n * @param format\n * @param isLazyLoad\n */\n DataUtil.group = function (jsonArray, field, aggregates, level, groupDs, format, isLazyLoad) {\n level = level || 1;\n var jsonData = jsonArray;\n var guid = 'GroupGuid';\n if (jsonData.GroupGuid === consts[guid]) {\n var _loop_1 = function (j) {\n if (!isNullOrUndefined(groupDs)) {\n var indx = -1;\n var temp = groupDs.filter(function (e) { return e.key === jsonData[j].key; });\n indx = groupDs.indexOf(temp[0]);\n jsonData[j].items = this_1.group(jsonData[j].items, field, aggregates, jsonData.level + 1, groupDs[indx].items, format, isLazyLoad);\n jsonData[j].count = groupDs[indx].count;\n }\n else {\n jsonData[j].items = this_1.group(jsonData[j].items, field, aggregates, jsonData.level + 1, null, format, isLazyLoad);\n jsonData[j].count = jsonData[j].items.length;\n }\n };\n var this_1 = this;\n for (var j = 0; j < jsonData.length; j++) {\n _loop_1(j);\n }\n jsonData.childLevels += 1;\n return jsonData;\n }\n var grouped = {};\n var groupedArray = [];\n groupedArray.GroupGuid = consts[guid];\n groupedArray.level = level;\n groupedArray.childLevels = 0;\n groupedArray.records = jsonData;\n var _loop_2 = function (i) {\n var val = this_2.getVal(jsonData, i, field);\n if (!isNullOrUndefined(format)) {\n val = format(val, field);\n }\n if (!grouped[val]) {\n grouped[val] = {\n key: val,\n count: 0,\n items: [],\n aggregates: {},\n field: field\n };\n groupedArray.push(grouped[val]);\n if (!isNullOrUndefined(groupDs)) {\n var tempObj = groupDs.filter(function (e) { return e.key === grouped[val].key; });\n grouped[val].count = tempObj[0].count;\n }\n }\n grouped[val].count = !isNullOrUndefined(groupDs) ? grouped[val].count : grouped[val].count += 1;\n if (!isLazyLoad || (isLazyLoad && aggregates.length)) {\n grouped[val].items.push(jsonData[i]);\n }\n };\n var this_2 = this;\n for (var i = 0; i < jsonData.length; i++) {\n _loop_2(i);\n }\n if (aggregates && aggregates.length) {\n var _loop_3 = function (i) {\n var res = {};\n var fn = void 0;\n var aggs = aggregates;\n for (var j = 0; j < aggregates.length; j++) {\n fn = DataUtil.aggregates[aggregates[j].type];\n if (!isNullOrUndefined(groupDs)) {\n var temp = groupDs.filter(function (e) { return e.key === groupedArray[i].key; });\n if (fn) {\n res[aggs[j].field + ' - ' + aggs[j].type] = fn(temp[0].items, aggs[j].field);\n }\n }\n else {\n if (fn) {\n res[aggs[j].field + ' - ' + aggs[j].type] = fn(groupedArray[i].items, aggs[j].field);\n }\n }\n }\n groupedArray[i].aggregates = res;\n };\n for (var i = 0; i < groupedArray.length; i++) {\n _loop_3(i);\n }\n }\n if (isLazyLoad && groupedArray.length && aggregates.length) {\n for (var i = 0; i < groupedArray.length; i++) {\n groupedArray[i].items = [];\n }\n }\n return jsonData.length && groupedArray || jsonData;\n };\n /**\n * It is used to categorize the multiple items based on a specific field in jsonArray.\n * The hierarchical queries are commonly required when you use foreign key binding.\n *\n * @param {string} fKey\n * @param {string} from\n * @param {Object[]} source\n * @param {Group} lookup?\n * @param {string} pKey?\n * @param lookup\n * @param pKey\n * @hidden\n */\n DataUtil.buildHierarchy = function (fKey, from, source, lookup, pKey) {\n var i;\n var grp = {};\n var temp;\n if (lookup.result) {\n lookup = lookup.result;\n }\n if (lookup.GroupGuid) {\n this.throwError('DataManager: Do not have support Grouping in hierarchy');\n }\n for (i = 0; i < lookup.length; i++) {\n var fKeyData = this.getObject(fKey, lookup[i]);\n temp = grp[fKeyData] || (grp[fKeyData] = []);\n temp.push(lookup[i]);\n }\n for (i = 0; i < source.length; i++) {\n var fKeyData = this.getObject(pKey || fKey, source[i]);\n source[i][from] = grp[fKeyData];\n }\n };\n /**\n * The method used to get the field names which started with specified characters.\n *\n * @param {Object} obj\n * @param {string[]} fields?\n * @param {string} prefix?\n * @param fields\n * @param prefix\n * @hidden\n */\n DataUtil.getFieldList = function (obj, fields, prefix) {\n if (prefix === undefined) {\n prefix = '';\n }\n if (fields === undefined || fields === null) {\n return this.getFieldList(obj, [], prefix);\n }\n var copyObj = obj;\n var keys = Object.keys(obj);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var prop = keys_1[_i];\n if (typeof copyObj[prop] === 'object' && !(copyObj[prop] instanceof Array)) {\n this.getFieldList(copyObj[prop], fields, prefix + prop + '.');\n }\n else {\n fields.push(prefix + prop);\n }\n }\n return fields;\n };\n /**\n * Gets the value of the property in the given object.\n * The complex object can be accessed by providing the field names concatenated with dot(.).\n *\n * @param {string} nameSpace - The name of the property to be accessed.\n * @param {Object} from - Defines the source object.\n */\n DataUtil.getObject = function (nameSpace, from) {\n if (!nameSpace) {\n return from;\n }\n if (!from) {\n return undefined;\n }\n if (nameSpace.indexOf('.') === -1) {\n var lowerCaseNameSpace = nameSpace.charAt(0).toLowerCase() + nameSpace.slice(1);\n var upperCaseNameSpace = nameSpace.charAt(0).toUpperCase() + nameSpace.slice(1);\n if (!isNullOrUndefined(from[nameSpace])) {\n return from[nameSpace];\n }\n else {\n if (!isNullOrUndefined(from[lowerCaseNameSpace])) {\n return from[lowerCaseNameSpace];\n }\n else if (!isNullOrUndefined(from[upperCaseNameSpace])) {\n return from[upperCaseNameSpace];\n }\n else {\n return null;\n }\n }\n }\n var value = from;\n var splits = nameSpace.split('.');\n for (var i = 0; i < splits.length; i++) {\n if (value == null) {\n break;\n }\n value = value[splits[i]];\n if (value === undefined) {\n var casing = splits[i].charAt(0).toUpperCase() + splits[i].slice(1);\n value = from[casing] || from[casing.charAt(0).toLowerCase() + casing.slice(1)] || null;\n }\n from = value;\n }\n return value;\n };\n /**\n * To set value for the nameSpace in desired object.\n *\n * @param {string} nameSpace - String value to the get the inner object.\n * @param {Object} value - Value that you need to set.\n * @param {Object} obj - Object to get the inner object value.\n * @return { [key: string]: Object; } | Object\n * @hidden\n */\n DataUtil.setValue = function (nameSpace, value, obj) {\n var keys = nameSpace.toString().split('.');\n var start = obj || {};\n var fromObj = start;\n var i;\n var length = keys.length;\n var key;\n for (i = 0; i < length; i++) {\n key = keys[i];\n if (i + 1 === length) {\n fromObj[key] = value === undefined ? undefined : value;\n }\n else if (isNullOrUndefined(fromObj[key])) {\n fromObj[key] = {};\n }\n fromObj = fromObj[key];\n }\n return start;\n };\n /**\n * Sort the given data based on the field and comparer.\n *\n * @param {Object[]} ds - Defines the input data.\n * @param {string} field - Defines the field to be sorted.\n * @param {Function} comparer - Defines the comparer function used to sort the records.\n */\n DataUtil.sort = function (ds, field, comparer) {\n if (ds.length <= 1) {\n return ds;\n }\n var middle = parseInt((ds.length / 2).toString(), 10);\n var left = ds.slice(0, middle);\n var right = ds.slice(middle);\n left = this.sort(left, field, comparer);\n right = this.sort(right, field, comparer);\n return this.merge(left, right, field, comparer);\n };\n DataUtil.ignoreDiacritics = function (value) {\n if (typeof value !== 'string') {\n return value;\n }\n var result = value.split('');\n var newValue = result.map(function (temp) { return temp in DataUtil.diacritics ? DataUtil.diacritics[temp] : temp; });\n return newValue.join('');\n };\n DataUtil.merge = function (left, right, fieldName, comparer) {\n var result = [];\n var current;\n while (left.length > 0 || right.length > 0) {\n if (left.length > 0 && right.length > 0) {\n if (comparer) {\n current = comparer(this.getVal(left, 0, fieldName), this.getVal(right, 0, fieldName), left[0], right[0]) <= 0 ? left : right;\n }\n else {\n current = left[0][fieldName] < left[0][fieldName] ? left : right;\n }\n }\n else {\n current = left.length > 0 ? left : right;\n }\n result.push(current.shift());\n }\n return result;\n };\n DataUtil.getVal = function (array, index, field) {\n return field ? this.getObject(field, array[index]) : array[index];\n };\n DataUtil.toLowerCase = function (val) {\n return val ? typeof val === 'string' ? val.toLowerCase() : val.toString() : (val === 0 || val === false) ? val.toString() : '';\n };\n /**\n * To perform the filter operation with specified adaptor and returns the result.\n *\n * @param {Object} adaptor\n * @param {string} fnName\n * @param {Object} param1?\n * @param {Object} param2?\n * @param param1\n * @param param2\n * @hidden\n */\n DataUtil.callAdaptorFunction = function (adaptor, fnName, param1, param2) {\n if (fnName in adaptor) {\n var res = adaptor[fnName](param1, param2);\n if (!isNullOrUndefined(res)) {\n param1 = res;\n }\n }\n return param1;\n };\n DataUtil.getAddParams = function (adp, dm, query) {\n var req = {};\n DataUtil.callAdaptorFunction(adp, 'addParams', {\n dm: dm,\n query: query,\n params: query.params,\n reqParams: req\n });\n return req;\n };\n /**\n * Checks wheather the given input is a plain object or not.\n *\n * @param {Object|Object[]} obj\n */\n DataUtil.isPlainObject = function (obj) {\n return (!!obj) && (obj.constructor === Object);\n };\n /**\n * Returns true when the browser cross origin request.\n */\n DataUtil.isCors = function () {\n var xhr = null;\n var request = 'XMLHttpRequest';\n try {\n xhr = new window[request]();\n }\n catch (e) {\n // No exception handling\n }\n return !!xhr && ('withCredentials' in xhr);\n };\n /**\n * Generate random GUID value which will be prefixed with the given value.\n *\n * @param {string} prefix\n */\n DataUtil.getGuid = function (prefix) {\n var hexs = '0123456789abcdef';\n var rand;\n return (prefix || '') + '00000000-0000-4000-0000-000000000000'.replace(/0/g, function (val, i) {\n if ('crypto' in window && 'getRandomValues' in crypto) {\n var arr = new Uint8Array(1);\n window.crypto.getRandomValues(arr);\n rand = arr[0] % 16 | 0;\n }\n else {\n rand = Math.random() * 16 | 0;\n }\n return hexs[i === 19 ? rand & 0x3 | 0x8 : rand];\n });\n };\n /**\n * Checks wheather the given value is null or not.\n *\n * @param {string|Object} val\n * @returns boolean\n */\n DataUtil.isNull = function (val) {\n return val === undefined || val === null;\n };\n /**\n * To get the required items from collection of objects.\n *\n * @param {Object[]} array\n * @param {string} field\n * @param {Function} comparer\n * @returns Object\n * @hidden\n */\n DataUtil.getItemFromComparer = function (array, field, comparer) {\n var keyVal;\n var current;\n var key;\n var i = 0;\n var castRequired = typeof DataUtil.getVal(array, 0, field) === 'string';\n if (array.length) {\n while (isNullOrUndefined(keyVal) && i < array.length) {\n keyVal = DataUtil.getVal(array, i, field);\n key = array[i++];\n }\n }\n for (; i < array.length; i++) {\n current = DataUtil.getVal(array, i, field);\n if (isNullOrUndefined(current)) {\n continue;\n }\n if (castRequired) {\n keyVal = +keyVal;\n current = +current;\n }\n if (comparer(keyVal, current) > 0) {\n keyVal = current;\n key = array[i];\n }\n }\n return key;\n };\n /**\n * To get distinct values of Array or Array of Objects.\n *\n * @param {Object[]} json\n * @param {string} field\n * @param fieldName\n * @param {boolean} requiresCompleteRecord\n * @returns Object[]\n * * distinct array of objects is return when requiresCompleteRecord set as true.\n * @hidden\n */\n DataUtil.distinct = function (json, fieldName, requiresCompleteRecord) {\n requiresCompleteRecord = isNullOrUndefined(requiresCompleteRecord) ? false : requiresCompleteRecord;\n var result = [];\n var val;\n var tmp = {};\n json.forEach(function (data, index) {\n val = typeof (json[index]) === 'object' ? DataUtil.getVal(json, index, fieldName) : json[index];\n if (!(val in tmp)) {\n result.push(!requiresCompleteRecord ? val : json[index]);\n tmp[val] = 1;\n }\n });\n return result;\n };\n /**\n * Process the given records based on the datamanager string.\n *\n * @param {string} datamanager\n * @param dm\n * @param {Object[]} records\n */\n DataUtil.processData = function (dm, records) {\n var query = this.prepareQuery(dm);\n var sampledata = new DataManager(records);\n if (dm.requiresCounts) {\n query.requiresCount();\n }\n /* eslint-disable @typescript-eslint/no-explicit-any */\n // tslint:disable-next-line:no-any\n var result = sampledata.executeLocal(query);\n /* eslint-enable @typescript-eslint/no-explicit-any */\n var returnValue = {\n result: dm.requiresCounts ? result.result : result,\n count: result.count,\n aggregates: JSON.stringify(result.aggregates)\n };\n return dm.requiresCounts ? returnValue : result;\n };\n DataUtil.prepareQuery = function (dm) {\n var _this = this;\n var query = new Query();\n if (dm.select) {\n query.select(dm.select);\n }\n if (dm.where) {\n var where = DataUtil.parse.parseJson(dm.where);\n where.filter(function (pred) {\n if (isNullOrUndefined(pred.condition)) {\n query.where(pred.field, pred.operator, pred.value, pred.ignoreCase, pred.ignoreAccent);\n }\n else {\n var predicateList = [];\n if (pred.field) {\n predicateList.push(new Predicate(pred.field, pred.operator, pred.value, pred.ignoreCase, pred.ignoreAccent));\n }\n else {\n predicateList = predicateList.concat(_this.getPredicate(pred.predicates));\n }\n if (pred.condition === 'or') {\n query.where(Predicate.or(predicateList));\n }\n else if (pred.condition === 'and') {\n query.where(Predicate.and(predicateList));\n }\n }\n });\n }\n if (dm.search) {\n var search = DataUtil.parse.parseJson(dm.search);\n // tslint:disable-next-line:no-string-literal\n search.filter(function (e) { return query.search(e.key, e.fields, e['operator'], \n // tslint:disable-next-line:no-string-literal\n e['ignoreCase'], e['ignoreAccent']); });\n }\n if (dm.aggregates) {\n dm.aggregates.filter(function (e) { return query.aggregate(e.type, e.field); });\n }\n if (dm.sorted) {\n dm.sorted.filter(function (e) { return query.sortBy(e.name, e.direction); });\n }\n if (dm.skip) {\n query.skip(dm.skip);\n }\n if (dm.take) {\n query.take(dm.take);\n }\n if (dm.group) {\n dm.group.filter(function (grp) { return query.group(grp); });\n }\n return query;\n };\n DataUtil.getPredicate = function (pred) {\n var mainPred = [];\n for (var i = 0; i < pred.length; i++) {\n var e = pred[i];\n if (e.field) {\n mainPred.push(new Predicate(e.field, e.operator, e.value, e.ignoreCase, e.ignoreAccent));\n }\n else {\n var childPred = [];\n // tslint:disable-next-line:typedef\n var cpre = this.getPredicate(e.predicates);\n for (var _i = 0, _a = Object.keys(cpre); _i < _a.length; _i++) {\n var prop = _a[_i];\n childPred.push(cpre[prop]);\n }\n mainPred.push(e.condition === 'or' ? Predicate.or(childPred) : Predicate.and(childPred));\n }\n }\n return mainPred;\n };\n /**\n * Specifies the value which will be used to adjust the date value to server timezone.\n *\n * @default null\n */\n DataUtil.serverTimezoneOffset = null;\n /**\n * Species whether are not to be parsed with serverTimezoneOffset value.\n *\n * @hidden\n */\n DataUtil.timeZoneHandling = true;\n /**\n * Throw error with the given string as message.\n *\n * @param {string} er\n * @param error\n */\n DataUtil.throwError = function (error) {\n try {\n throw new Error(error);\n }\n catch (e) {\n // eslint-disable-next-line no-throw-literal\n throw e.message + '\\n' + e.stack;\n }\n };\n DataUtil.aggregates = {\n /**\n * Calculate sum of the given field in the data.\n *\n * @param {Object[]} ds\n * @param {string} field\n */\n sum: function (ds, field) {\n var result = 0;\n var val;\n var castRequired = typeof DataUtil.getVal(ds, 0, field) !== 'number';\n for (var i = 0; i < ds.length; i++) {\n val = DataUtil.getVal(ds, i, field);\n if (!isNaN(val) && val !== null) {\n if (castRequired) {\n val = +val;\n }\n result += val;\n }\n }\n return result;\n },\n /**\n * Calculate average value of the given field in the data.\n *\n * @param {Object[]} ds\n * @param {string} field\n */\n average: function (ds, field) {\n return DataUtil.aggregates.sum(ds, field) / ds.length;\n },\n /**\n * Returns the min value of the data based on the field.\n *\n * @param {Object[]} ds\n * @param {string|Function} field\n */\n min: function (ds, field) {\n var comparer;\n if (typeof field === 'function') {\n comparer = field;\n field = null;\n }\n return DataUtil.getObject(field, DataUtil.getItemFromComparer(ds, field, comparer || DataUtil.fnAscending));\n },\n /**\n * Returns the max value of the data based on the field.\n *\n * @param {Object[]} ds\n * @param {string} field\n * @returns number\n */\n max: function (ds, field) {\n var comparer;\n if (typeof field === 'function') {\n comparer = field;\n field = null;\n }\n return DataUtil.getObject(field, DataUtil.getItemFromComparer(ds, field, comparer || DataUtil.fnDescending));\n },\n /**\n * Returns the total number of true value present in the data based on the given boolean field name.\n *\n * @param {Object[]} ds\n * @param {string} field\n */\n truecount: function (ds, field) {\n return new DataManager(ds).executeLocal(new Query().where(field, 'equal', true, true)).length;\n },\n /**\n * Returns the total number of false value present in the data based on the given boolean field name.\n *\n * @param {Object[]} ds\n * @param {string} field\n */\n falsecount: function (ds, field) {\n return new DataManager(ds).executeLocal(new Query().where(field, 'equal', false, true)).length;\n },\n /**\n * Returns the length of the given data.\n *\n * @param {Object[]} ds\n * @param {string} field?\n * @param field\n * @returns number\n */\n count: function (ds, field) {\n return ds.length;\n }\n };\n /**\n * Specifies the Object with filter operators.\n */\n DataUtil.operatorSymbols = {\n '<': 'lessthan',\n '>': 'greaterthan',\n '<=': 'lessthanorequal',\n '>=': 'greaterthanorequal',\n '==': 'equal',\n '!=': 'notequal',\n '*=': 'contains',\n '$=': 'endswith',\n '^=': 'startswith'\n };\n /**\n * Specifies the Object with filter operators which will be used for OData filter query generation.\n * * It will be used for date/number type filter query.\n */\n DataUtil.odBiOperator = {\n '<': ' lt ',\n '>': ' gt ',\n '<=': ' le ',\n '>=': ' ge ',\n '==': ' eq ',\n '!=': ' ne ',\n 'lessthan': ' lt ',\n 'lessthanorequal': ' le ',\n 'greaterthan': ' gt ',\n 'greaterthanorequal': ' ge ',\n 'equal': ' eq ',\n 'notequal': ' ne '\n };\n /**\n * Specifies the Object with filter operators which will be used for OData filter query generation.\n * It will be used for string type filter query.\n */\n DataUtil.odUniOperator = {\n '$=': 'endswith',\n '^=': 'startswith',\n '*=': 'substringof',\n 'endswith': 'endswith',\n 'startswith': 'startswith',\n 'contains': 'substringof',\n 'doesnotendwith': 'not endswith',\n 'doesnotstartwith': 'not startswith',\n 'doesnotcontain': 'not substringof',\n 'wildcard': 'wildcard',\n 'like': 'like'\n };\n /**\n * Specifies the Object with filter operators which will be used for ODataV4 filter query generation.\n * It will be used for string type filter query.\n */\n DataUtil.odv4UniOperator = {\n '$=': 'endswith',\n '^=': 'startswith',\n '*=': 'contains',\n 'endswith': 'endswith',\n 'startswith': 'startswith',\n 'contains': 'contains',\n 'doesnotendwith': 'not endswith',\n 'doesnotstartwith': 'not startswith',\n 'doesnotcontain': 'not contains',\n 'wildcard': 'wildcard',\n 'like': 'like'\n };\n DataUtil.diacritics = {\n '\\u24B6': 'A',\n '\\uFF21': 'A',\n '\\u00C0': 'A',\n '\\u00C1': 'A',\n '\\u00C2': 'A',\n '\\u1EA6': 'A',\n '\\u1EA4': 'A',\n '\\u1EAA': 'A',\n '\\u1EA8': 'A',\n '\\u00C3': 'A',\n '\\u0100': 'A',\n '\\u0102': 'A',\n '\\u1EB0': 'A',\n '\\u1EAE': 'A',\n '\\u1EB4': 'A',\n '\\u1EB2': 'A',\n '\\u0226': 'A',\n '\\u01E0': 'A',\n '\\u00C4': 'A',\n '\\u01DE': 'A',\n '\\u1EA2': 'A',\n '\\u00C5': 'A',\n '\\u01FA': 'A',\n '\\u01CD': 'A',\n '\\u0200': 'A',\n '\\u0202': 'A',\n '\\u1EA0': 'A',\n '\\u1EAC': 'A',\n '\\u1EB6': 'A',\n '\\u1E00': 'A',\n '\\u0104': 'A',\n '\\u023A': 'A',\n '\\u2C6F': 'A',\n '\\uA732': 'AA',\n '\\u00C6': 'AE',\n '\\u01FC': 'AE',\n '\\u01E2': 'AE',\n '\\uA734': 'AO',\n '\\uA736': 'AU',\n '\\uA738': 'AV',\n '\\uA73A': 'AV',\n '\\uA73C': 'AY',\n '\\u24B7': 'B',\n '\\uFF22': 'B',\n '\\u1E02': 'B',\n '\\u1E04': 'B',\n '\\u1E06': 'B',\n '\\u0243': 'B',\n '\\u0182': 'B',\n '\\u0181': 'B',\n '\\u24B8': 'C',\n '\\uFF23': 'C',\n '\\u0106': 'C',\n '\\u0108': 'C',\n '\\u010A': 'C',\n '\\u010C': 'C',\n '\\u00C7': 'C',\n '\\u1E08': 'C',\n '\\u0187': 'C',\n '\\u023B': 'C',\n '\\uA73E': 'C',\n '\\u24B9': 'D',\n '\\uFF24': 'D',\n '\\u1E0A': 'D',\n '\\u010E': 'D',\n '\\u1E0C': 'D',\n '\\u1E10': 'D',\n '\\u1E12': 'D',\n '\\u1E0E': 'D',\n '\\u0110': 'D',\n '\\u018B': 'D',\n '\\u018A': 'D',\n '\\u0189': 'D',\n '\\uA779': 'D',\n '\\u01F1': 'DZ',\n '\\u01C4': 'DZ',\n '\\u01F2': 'Dz',\n '\\u01C5': 'Dz',\n '\\u24BA': 'E',\n '\\uFF25': 'E',\n '\\u00C8': 'E',\n '\\u00C9': 'E',\n '\\u00CA': 'E',\n '\\u1EC0': 'E',\n '\\u1EBE': 'E',\n '\\u1EC4': 'E',\n '\\u1EC2': 'E',\n '\\u1EBC': 'E',\n '\\u0112': 'E',\n '\\u1E14': 'E',\n '\\u1E16': 'E',\n '\\u0114': 'E',\n '\\u0116': 'E',\n '\\u00CB': 'E',\n '\\u1EBA': 'E',\n '\\u011A': 'E',\n '\\u0204': 'E',\n '\\u0206': 'E',\n '\\u1EB8': 'E',\n '\\u1EC6': 'E',\n '\\u0228': 'E',\n '\\u1E1C': 'E',\n '\\u0118': 'E',\n '\\u1E18': 'E',\n '\\u1E1A': 'E',\n '\\u0190': 'E',\n '\\u018E': 'E',\n '\\u24BB': 'F',\n '\\uFF26': 'F',\n '\\u1E1E': 'F',\n '\\u0191': 'F',\n '\\uA77B': 'F',\n '\\u24BC': 'G',\n '\\uFF27': 'G',\n '\\u01F4': 'G',\n '\\u011C': 'G',\n '\\u1E20': 'G',\n '\\u011E': 'G',\n '\\u0120': 'G',\n '\\u01E6': 'G',\n '\\u0122': 'G',\n '\\u01E4': 'G',\n '\\u0193': 'G',\n '\\uA7A0': 'G',\n '\\uA77D': 'G',\n '\\uA77E': 'G',\n '\\u24BD': 'H',\n '\\uFF28': 'H',\n '\\u0124': 'H',\n '\\u1E22': 'H',\n '\\u1E26': 'H',\n '\\u021E': 'H',\n '\\u1E24': 'H',\n '\\u1E28': 'H',\n '\\u1E2A': 'H',\n '\\u0126': 'H',\n '\\u2C67': 'H',\n '\\u2C75': 'H',\n '\\uA78D': 'H',\n '\\u24BE': 'I',\n '\\uFF29': 'I',\n '\\u00CC': 'I',\n '\\u00CD': 'I',\n '\\u00CE': 'I',\n '\\u0128': 'I',\n '\\u012A': 'I',\n '\\u012C': 'I',\n '\\u0130': 'I',\n '\\u00CF': 'I',\n '\\u1E2E': 'I',\n '\\u1EC8': 'I',\n '\\u01CF': 'I',\n '\\u0208': 'I',\n '\\u020A': 'I',\n '\\u1ECA': 'I',\n '\\u012E': 'I',\n '\\u1E2C': 'I',\n '\\u0197': 'I',\n '\\u24BF': 'J',\n '\\uFF2A': 'J',\n '\\u0134': 'J',\n '\\u0248': 'J',\n '\\u24C0': 'K',\n '\\uFF2B': 'K',\n '\\u1E30': 'K',\n '\\u01E8': 'K',\n '\\u1E32': 'K',\n '\\u0136': 'K',\n '\\u1E34': 'K',\n '\\u0198': 'K',\n '\\u2C69': 'K',\n '\\uA740': 'K',\n '\\uA742': 'K',\n '\\uA744': 'K',\n '\\uA7A2': 'K',\n '\\u24C1': 'L',\n '\\uFF2C': 'L',\n '\\u013F': 'L',\n '\\u0139': 'L',\n '\\u013D': 'L',\n '\\u1E36': 'L',\n '\\u1E38': 'L',\n '\\u013B': 'L',\n '\\u1E3C': 'L',\n '\\u1E3A': 'L',\n '\\u0141': 'L',\n '\\u023D': 'L',\n '\\u2C62': 'L',\n '\\u2C60': 'L',\n '\\uA748': 'L',\n '\\uA746': 'L',\n '\\uA780': 'L',\n '\\u01C7': 'LJ',\n '\\u01C8': 'Lj',\n '\\u24C2': 'M',\n '\\uFF2D': 'M',\n '\\u1E3E': 'M',\n '\\u1E40': 'M',\n '\\u1E42': 'M',\n '\\u2C6E': 'M',\n '\\u019C': 'M',\n '\\u24C3': 'N',\n '\\uFF2E': 'N',\n '\\u01F8': 'N',\n '\\u0143': 'N',\n '\\u00D1': 'N',\n '\\u1E44': 'N',\n '\\u0147': 'N',\n '\\u1E46': 'N',\n '\\u0145': 'N',\n '\\u1E4A': 'N',\n '\\u1E48': 'N',\n '\\u0220': 'N',\n '\\u019D': 'N',\n '\\uA790': 'N',\n '\\uA7A4': 'N',\n '\\u01CA': 'NJ',\n '\\u01CB': 'Nj',\n '\\u24C4': 'O',\n '\\uFF2F': 'O',\n '\\u00D2': 'O',\n '\\u00D3': 'O',\n '\\u00D4': 'O',\n '\\u1ED2': 'O',\n '\\u1ED0': 'O',\n '\\u1ED6': 'O',\n '\\u1ED4': 'O',\n '\\u00D5': 'O',\n '\\u1E4C': 'O',\n '\\u022C': 'O',\n '\\u1E4E': 'O',\n '\\u014C': 'O',\n '\\u1E50': 'O',\n '\\u1E52': 'O',\n '\\u014E': 'O',\n '\\u022E': 'O',\n '\\u0230': 'O',\n '\\u00D6': 'O',\n '\\u022A': 'O',\n '\\u1ECE': 'O',\n '\\u0150': 'O',\n '\\u01D1': 'O',\n '\\u020C': 'O',\n '\\u020E': 'O',\n '\\u01A0': 'O',\n '\\u1EDC': 'O',\n '\\u1EDA': 'O',\n '\\u1EE0': 'O',\n '\\u1EDE': 'O',\n '\\u1EE2': 'O',\n '\\u1ECC': 'O',\n '\\u1ED8': 'O',\n '\\u01EA': 'O',\n '\\u01EC': 'O',\n '\\u00D8': 'O',\n '\\u01FE': 'O',\n '\\u0186': 'O',\n '\\u019F': 'O',\n '\\uA74A': 'O',\n '\\uA74C': 'O',\n '\\u01A2': 'OI',\n '\\uA74E': 'OO',\n '\\u0222': 'OU',\n '\\u24C5': 'P',\n '\\uFF30': 'P',\n '\\u1E54': 'P',\n '\\u1E56': 'P',\n '\\u01A4': 'P',\n '\\u2C63': 'P',\n '\\uA750': 'P',\n '\\uA752': 'P',\n '\\uA754': 'P',\n '\\u24C6': 'Q',\n '\\uFF31': 'Q',\n '\\uA756': 'Q',\n '\\uA758': 'Q',\n '\\u024A': 'Q',\n '\\u24C7': 'R',\n '\\uFF32': 'R',\n '\\u0154': 'R',\n '\\u1E58': 'R',\n '\\u0158': 'R',\n '\\u0210': 'R',\n '\\u0212': 'R',\n '\\u1E5A': 'R',\n '\\u1E5C': 'R',\n '\\u0156': 'R',\n '\\u1E5E': 'R',\n '\\u024C': 'R',\n '\\u2C64': 'R',\n '\\uA75A': 'R',\n '\\uA7A6': 'R',\n '\\uA782': 'R',\n '\\u24C8': 'S',\n '\\uFF33': 'S',\n '\\u1E9E': 'S',\n '\\u015A': 'S',\n '\\u1E64': 'S',\n '\\u015C': 'S',\n '\\u1E60': 'S',\n '\\u0160': 'S',\n '\\u1E66': 'S',\n '\\u1E62': 'S',\n '\\u1E68': 'S',\n '\\u0218': 'S',\n '\\u015E': 'S',\n '\\u2C7E': 'S',\n '\\uA7A8': 'S',\n '\\uA784': 'S',\n '\\u24C9': 'T',\n '\\uFF34': 'T',\n '\\u1E6A': 'T',\n '\\u0164': 'T',\n '\\u1E6C': 'T',\n '\\u021A': 'T',\n '\\u0162': 'T',\n '\\u1E70': 'T',\n '\\u1E6E': 'T',\n '\\u0166': 'T',\n '\\u01AC': 'T',\n '\\u01AE': 'T',\n '\\u023E': 'T',\n '\\uA786': 'T',\n '\\uA728': 'TZ',\n '\\u24CA': 'U',\n '\\uFF35': 'U',\n '\\u00D9': 'U',\n '\\u00DA': 'U',\n '\\u00DB': 'U',\n '\\u0168': 'U',\n '\\u1E78': 'U',\n '\\u016A': 'U',\n '\\u1E7A': 'U',\n '\\u016C': 'U',\n '\\u00DC': 'U',\n '\\u01DB': 'U',\n '\\u01D7': 'U',\n '\\u01D5': 'U',\n '\\u01D9': 'U',\n '\\u1EE6': 'U',\n '\\u016E': 'U',\n '\\u0170': 'U',\n '\\u01D3': 'U',\n '\\u0214': 'U',\n '\\u0216': 'U',\n '\\u01AF': 'U',\n '\\u1EEA': 'U',\n '\\u1EE8': 'U',\n '\\u1EEE': 'U',\n '\\u1EEC': 'U',\n '\\u1EF0': 'U',\n '\\u1EE4': 'U',\n '\\u1E72': 'U',\n '\\u0172': 'U',\n '\\u1E76': 'U',\n '\\u1E74': 'U',\n '\\u0244': 'U',\n '\\u24CB': 'V',\n '\\uFF36': 'V',\n '\\u1E7C': 'V',\n '\\u1E7E': 'V',\n '\\u01B2': 'V',\n '\\uA75E': 'V',\n '\\u0245': 'V',\n '\\uA760': 'VY',\n '\\u24CC': 'W',\n '\\uFF37': 'W',\n '\\u1E80': 'W',\n '\\u1E82': 'W',\n '\\u0174': 'W',\n '\\u1E86': 'W',\n '\\u1E84': 'W',\n '\\u1E88': 'W',\n '\\u2C72': 'W',\n '\\u24CD': 'X',\n '\\uFF38': 'X',\n '\\u1E8A': 'X',\n '\\u1E8C': 'X',\n '\\u24CE': 'Y',\n '\\uFF39': 'Y',\n '\\u1EF2': 'Y',\n '\\u00DD': 'Y',\n '\\u0176': 'Y',\n '\\u1EF8': 'Y',\n '\\u0232': 'Y',\n '\\u1E8E': 'Y',\n '\\u0178': 'Y',\n '\\u1EF6': 'Y',\n '\\u1EF4': 'Y',\n '\\u01B3': 'Y',\n '\\u024E': 'Y',\n '\\u1EFE': 'Y',\n '\\u24CF': 'Z',\n '\\uFF3A': 'Z',\n '\\u0179': 'Z',\n '\\u1E90': 'Z',\n '\\u017B': 'Z',\n '\\u017D': 'Z',\n '\\u1E92': 'Z',\n '\\u1E94': 'Z',\n '\\u01B5': 'Z',\n '\\u0224': 'Z',\n '\\u2C7F': 'Z',\n '\\u2C6B': 'Z',\n '\\uA762': 'Z',\n '\\u24D0': 'a',\n '\\uFF41': 'a',\n '\\u1E9A': 'a',\n '\\u00E0': 'a',\n '\\u00E1': 'a',\n '\\u00E2': 'a',\n '\\u1EA7': 'a',\n '\\u1EA5': 'a',\n '\\u1EAB': 'a',\n '\\u1EA9': 'a',\n '\\u00E3': 'a',\n '\\u0101': 'a',\n '\\u0103': 'a',\n '\\u1EB1': 'a',\n '\\u1EAF': 'a',\n '\\u1EB5': 'a',\n '\\u1EB3': 'a',\n '\\u0227': 'a',\n '\\u01E1': 'a',\n '\\u00E4': 'a',\n '\\u01DF': 'a',\n '\\u1EA3': 'a',\n '\\u00E5': 'a',\n '\\u01FB': 'a',\n '\\u01CE': 'a',\n '\\u0201': 'a',\n '\\u0203': 'a',\n '\\u1EA1': 'a',\n '\\u1EAD': 'a',\n '\\u1EB7': 'a',\n '\\u1E01': 'a',\n '\\u0105': 'a',\n '\\u2C65': 'a',\n '\\u0250': 'a',\n '\\uA733': 'aa',\n '\\u00E6': 'ae',\n '\\u01FD': 'ae',\n '\\u01E3': 'ae',\n '\\uA735': 'ao',\n '\\uA737': 'au',\n '\\uA739': 'av',\n '\\uA73B': 'av',\n '\\uA73D': 'ay',\n '\\u24D1': 'b',\n '\\uFF42': 'b',\n '\\u1E03': 'b',\n '\\u1E05': 'b',\n '\\u1E07': 'b',\n '\\u0180': 'b',\n '\\u0183': 'b',\n '\\u0253': 'b',\n '\\u24D2': 'c',\n '\\uFF43': 'c',\n '\\u0107': 'c',\n '\\u0109': 'c',\n '\\u010B': 'c',\n '\\u010D': 'c',\n '\\u00E7': 'c',\n '\\u1E09': 'c',\n '\\u0188': 'c',\n '\\u023C': 'c',\n '\\uA73F': 'c',\n '\\u2184': 'c',\n '\\u24D3': 'd',\n '\\uFF44': 'd',\n '\\u1E0B': 'd',\n '\\u010F': 'd',\n '\\u1E0D': 'd',\n '\\u1E11': 'd',\n '\\u1E13': 'd',\n '\\u1E0F': 'd',\n '\\u0111': 'd',\n '\\u018C': 'd',\n '\\u0256': 'd',\n '\\u0257': 'd',\n '\\uA77A': 'd',\n '\\u01F3': 'dz',\n '\\u01C6': 'dz',\n '\\u24D4': 'e',\n '\\uFF45': 'e',\n '\\u00E8': 'e',\n '\\u00E9': 'e',\n '\\u00EA': 'e',\n '\\u1EC1': 'e',\n '\\u1EBF': 'e',\n '\\u1EC5': 'e',\n '\\u1EC3': 'e',\n '\\u1EBD': 'e',\n '\\u0113': 'e',\n '\\u1E15': 'e',\n '\\u1E17': 'e',\n '\\u0115': 'e',\n '\\u0117': 'e',\n '\\u00EB': 'e',\n '\\u1EBB': 'e',\n '\\u011B': 'e',\n '\\u0205': 'e',\n '\\u0207': 'e',\n '\\u1EB9': 'e',\n '\\u1EC7': 'e',\n '\\u0229': 'e',\n '\\u1E1D': 'e',\n '\\u0119': 'e',\n '\\u1E19': 'e',\n '\\u1E1B': 'e',\n '\\u0247': 'e',\n '\\u025B': 'e',\n '\\u01DD': 'e',\n '\\u24D5': 'f',\n '\\uFF46': 'f',\n '\\u1E1F': 'f',\n '\\u0192': 'f',\n '\\uA77C': 'f',\n '\\u24D6': 'g',\n '\\uFF47': 'g',\n '\\u01F5': 'g',\n '\\u011D': 'g',\n '\\u1E21': 'g',\n '\\u011F': 'g',\n '\\u0121': 'g',\n '\\u01E7': 'g',\n '\\u0123': 'g',\n '\\u01E5': 'g',\n '\\u0260': 'g',\n '\\uA7A1': 'g',\n '\\u1D79': 'g',\n '\\uA77F': 'g',\n '\\u24D7': 'h',\n '\\uFF48': 'h',\n '\\u0125': 'h',\n '\\u1E23': 'h',\n '\\u1E27': 'h',\n '\\u021F': 'h',\n '\\u1E25': 'h',\n '\\u1E29': 'h',\n '\\u1E2B': 'h',\n '\\u1E96': 'h',\n '\\u0127': 'h',\n '\\u2C68': 'h',\n '\\u2C76': 'h',\n '\\u0265': 'h',\n '\\u0195': 'hv',\n '\\u24D8': 'i',\n '\\uFF49': 'i',\n '\\u00EC': 'i',\n '\\u00ED': 'i',\n '\\u00EE': 'i',\n '\\u0129': 'i',\n '\\u012B': 'i',\n '\\u012D': 'i',\n '\\u00EF': 'i',\n '\\u1E2F': 'i',\n '\\u1EC9': 'i',\n '\\u01D0': 'i',\n '\\u0209': 'i',\n '\\u020B': 'i',\n '\\u1ECB': 'i',\n '\\u012F': 'i',\n '\\u1E2D': 'i',\n '\\u0268': 'i',\n '\\u0131': 'i',\n '\\u24D9': 'j',\n '\\uFF4A': 'j',\n '\\u0135': 'j',\n '\\u01F0': 'j',\n '\\u0249': 'j',\n '\\u24DA': 'k',\n '\\uFF4B': 'k',\n '\\u1E31': 'k',\n '\\u01E9': 'k',\n '\\u1E33': 'k',\n '\\u0137': 'k',\n '\\u1E35': 'k',\n '\\u0199': 'k',\n '\\u2C6A': 'k',\n '\\uA741': 'k',\n '\\uA743': 'k',\n '\\uA745': 'k',\n '\\uA7A3': 'k',\n '\\u24DB': 'l',\n '\\uFF4C': 'l',\n '\\u0140': 'l',\n '\\u013A': 'l',\n '\\u013E': 'l',\n '\\u1E37': 'l',\n '\\u1E39': 'l',\n '\\u013C': 'l',\n '\\u1E3D': 'l',\n '\\u1E3B': 'l',\n '\\u017F': 'l',\n '\\u0142': 'l',\n '\\u019A': 'l',\n '\\u026B': 'l',\n '\\u2C61': 'l',\n '\\uA749': 'l',\n '\\uA781': 'l',\n '\\uA747': 'l',\n '\\u01C9': 'lj',\n '\\u24DC': 'm',\n '\\uFF4D': 'm',\n '\\u1E3F': 'm',\n '\\u1E41': 'm',\n '\\u1E43': 'm',\n '\\u0271': 'm',\n '\\u026F': 'm',\n '\\u24DD': 'n',\n '\\uFF4E': 'n',\n '\\u01F9': 'n',\n '\\u0144': 'n',\n '\\u00F1': 'n',\n '\\u1E45': 'n',\n '\\u0148': 'n',\n '\\u1E47': 'n',\n '\\u0146': 'n',\n '\\u1E4B': 'n',\n '\\u1E49': 'n',\n '\\u019E': 'n',\n '\\u0272': 'n',\n '\\u0149': 'n',\n '\\uA791': 'n',\n '\\uA7A5': 'n',\n '\\u01CC': 'nj',\n '\\u24DE': 'o',\n '\\uFF4F': 'o',\n '\\u00F2': 'o',\n '\\u00F3': 'o',\n '\\u00F4': 'o',\n '\\u1ED3': 'o',\n '\\u1ED1': 'o',\n '\\u1ED7': 'o',\n '\\u1ED5': 'o',\n '\\u00F5': 'o',\n '\\u1E4D': 'o',\n '\\u022D': 'o',\n '\\u1E4F': 'o',\n '\\u014D': 'o',\n '\\u1E51': 'o',\n '\\u1E53': 'o',\n '\\u014F': 'o',\n '\\u022F': 'o',\n '\\u0231': 'o',\n '\\u00F6': 'o',\n '\\u022B': 'o',\n '\\u1ECF': 'o',\n '\\u0151': 'o',\n '\\u01D2': 'o',\n '\\u020D': 'o',\n '\\u020F': 'o',\n '\\u01A1': 'o',\n '\\u1EDD': 'o',\n '\\u1EDB': 'o',\n '\\u1EE1': 'o',\n '\\u1EDF': 'o',\n '\\u1EE3': 'o',\n '\\u1ECD': 'o',\n '\\u1ED9': 'o',\n '\\u01EB': 'o',\n '\\u01ED': 'o',\n '\\u00F8': 'o',\n '\\u01FF': 'o',\n '\\u0254': 'o',\n '\\uA74B': 'o',\n '\\uA74D': 'o',\n '\\u0275': 'o',\n '\\u01A3': 'oi',\n '\\u0223': 'ou',\n '\\uA74F': 'oo',\n '\\u24DF': 'p',\n '\\uFF50': 'p',\n '\\u1E55': 'p',\n '\\u1E57': 'p',\n '\\u01A5': 'p',\n '\\u1D7D': 'p',\n '\\uA751': 'p',\n '\\uA753': 'p',\n '\\uA755': 'p',\n '\\u24E0': 'q',\n '\\uFF51': 'q',\n '\\u024B': 'q',\n '\\uA757': 'q',\n '\\uA759': 'q',\n '\\u24E1': 'r',\n '\\uFF52': 'r',\n '\\u0155': 'r',\n '\\u1E59': 'r',\n '\\u0159': 'r',\n '\\u0211': 'r',\n '\\u0213': 'r',\n '\\u1E5B': 'r',\n '\\u1E5D': 'r',\n '\\u0157': 'r',\n '\\u1E5F': 'r',\n '\\u024D': 'r',\n '\\u027D': 'r',\n '\\uA75B': 'r',\n '\\uA7A7': 'r',\n '\\uA783': 'r',\n '\\u24E2': 's',\n '\\uFF53': 's',\n '\\u00DF': 's',\n '\\u015B': 's',\n '\\u1E65': 's',\n '\\u015D': 's',\n '\\u1E61': 's',\n '\\u0161': 's',\n '\\u1E67': 's',\n '\\u1E63': 's',\n '\\u1E69': 's',\n '\\u0219': 's',\n '\\u015F': 's',\n '\\u023F': 's',\n '\\uA7A9': 's',\n '\\uA785': 's',\n '\\u1E9B': 's',\n '\\u24E3': 't',\n '\\uFF54': 't',\n '\\u1E6B': 't',\n '\\u1E97': 't',\n '\\u0165': 't',\n '\\u1E6D': 't',\n '\\u021B': 't',\n '\\u0163': 't',\n '\\u1E71': 't',\n '\\u1E6F': 't',\n '\\u0167': 't',\n '\\u01AD': 't',\n '\\u0288': 't',\n '\\u2C66': 't',\n '\\uA787': 't',\n '\\uA729': 'tz',\n '\\u24E4': 'u',\n '\\uFF55': 'u',\n '\\u00F9': 'u',\n '\\u00FA': 'u',\n '\\u00FB': 'u',\n '\\u0169': 'u',\n '\\u1E79': 'u',\n '\\u016B': 'u',\n '\\u1E7B': 'u',\n '\\u016D': 'u',\n '\\u00FC': 'u',\n '\\u01DC': 'u',\n '\\u01D8': 'u',\n '\\u01D6': 'u',\n '\\u01DA': 'u',\n '\\u1EE7': 'u',\n '\\u016F': 'u',\n '\\u0171': 'u',\n '\\u01D4': 'u',\n '\\u0215': 'u',\n '\\u0217': 'u',\n '\\u01B0': 'u',\n '\\u1EEB': 'u',\n '\\u1EE9': 'u',\n '\\u1EEF': 'u',\n '\\u1EED': 'u',\n '\\u1EF1': 'u',\n '\\u1EE5': 'u',\n '\\u1E73': 'u',\n '\\u0173': 'u',\n '\\u1E77': 'u',\n '\\u1E75': 'u',\n '\\u0289': 'u',\n '\\u24E5': 'v',\n '\\uFF56': 'v',\n '\\u1E7D': 'v',\n '\\u1E7F': 'v',\n '\\u028B': 'v',\n '\\uA75F': 'v',\n '\\u028C': 'v',\n '\\uA761': 'vy',\n '\\u24E6': 'w',\n '\\uFF57': 'w',\n '\\u1E81': 'w',\n '\\u1E83': 'w',\n '\\u0175': 'w',\n '\\u1E87': 'w',\n '\\u1E85': 'w',\n '\\u1E98': 'w',\n '\\u1E89': 'w',\n '\\u2C73': 'w',\n '\\u24E7': 'x',\n '\\uFF58': 'x',\n '\\u1E8B': 'x',\n '\\u1E8D': 'x',\n '\\u24E8': 'y',\n '\\uFF59': 'y',\n '\\u1EF3': 'y',\n '\\u00FD': 'y',\n '\\u0177': 'y',\n '\\u1EF9': 'y',\n '\\u0233': 'y',\n '\\u1E8F': 'y',\n '\\u00FF': 'y',\n '\\u1EF7': 'y',\n '\\u1E99': 'y',\n '\\u1EF5': 'y',\n '\\u01B4': 'y',\n '\\u024F': 'y',\n '\\u1EFF': 'y',\n '\\u24E9': 'z',\n '\\uFF5A': 'z',\n '\\u017A': 'z',\n '\\u1E91': 'z',\n '\\u017C': 'z',\n '\\u017E': 'z',\n '\\u1E93': 'z',\n '\\u1E95': 'z',\n '\\u01B6': 'z',\n '\\u0225': 'z',\n '\\u0240': 'z',\n '\\u2C6C': 'z',\n '\\uA763': 'z',\n '\\u0386': '\\u0391',\n '\\u0388': '\\u0395',\n '\\u0389': '\\u0397',\n '\\u038A': '\\u0399',\n '\\u03AA': '\\u0399',\n '\\u038C': '\\u039F',\n '\\u038E': '\\u03A5',\n '\\u03AB': '\\u03A5',\n '\\u038F': '\\u03A9',\n '\\u03AC': '\\u03B1',\n '\\u03AD': '\\u03B5',\n '\\u03AE': '\\u03B7',\n '\\u03AF': '\\u03B9',\n '\\u03CA': '\\u03B9',\n '\\u0390': '\\u03B9',\n '\\u03CC': '\\u03BF',\n '\\u03CD': '\\u03C5',\n '\\u03CB': '\\u03C5',\n '\\u03B0': '\\u03C5',\n '\\u03C9': '\\u03C9',\n '\\u03C2': '\\u03C3'\n };\n DataUtil.fnOperators = {\n /**\n * Returns true when the actual input is equal to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param {boolean} ignoreAccent?\n * @param ignoreCase\n * @param ignoreAccent\n */\n equal: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) === DataUtil.toLowerCase(expected);\n }\n return actual === expected;\n },\n /**\n * Returns true when the actual input is not equal to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n * @param ignoreAccent\n */\n notequal: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n return !DataUtil.fnOperators.equal(actual, expected, ignoreCase);\n },\n /**\n * Returns true when the actual input is less than to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n */\n lessthan: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) < DataUtil.toLowerCase(expected);\n }\n if (isNullOrUndefined(actual)) {\n actual = undefined;\n }\n return actual < expected;\n },\n /**\n * Returns true when the actual input is greater than to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n */\n greaterthan: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) > DataUtil.toLowerCase(expected);\n }\n return actual > expected;\n },\n /**\n * Returns true when the actual input is less than or equal to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n */\n lessthanorequal: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) <= DataUtil.toLowerCase(expected);\n }\n if (isNullOrUndefined(actual)) {\n actual = undefined;\n }\n return actual <= expected;\n },\n /**\n * Returns true when the actual input is greater than or equal to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n */\n greaterthanorequal: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) >= DataUtil.toLowerCase(expected);\n }\n return actual >= expected;\n },\n /**\n * Returns true when the actual input contains the given string.\n *\n * @param {string|number} actual\n * @param {string|number} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n * @param ignoreAccent\n */\n contains: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n DataUtil.toLowerCase(actual).indexOf(DataUtil.toLowerCase(expected)) !== -1;\n }\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n actual.toString().indexOf(expected) !== -1;\n },\n /**\n * Returns true when the actual input not contains the given string.\n *\n * @param {string|number} actual\n * @param {string|number} expected\n * @param {boolean} ignoreCase?\n */\n doesnotcontain: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n DataUtil.toLowerCase(actual).indexOf(DataUtil.toLowerCase(expected)) === -1;\n }\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n actual.toString().indexOf(expected) === -1;\n },\n /**\n * Returns true when the given input value is not null.\n *\n * @param {string|number} actual\n * @returns boolean\n */\n isnotnull: function (actual) {\n return actual !== null && actual !== undefined;\n },\n /**\n * Returns true when the given input value is null.\n *\n * @param {string|number} actual\n * @returns boolean\n */\n isnull: function (actual) {\n return actual === null || actual === undefined;\n },\n /**\n * Returns true when the actual input starts with the given string\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n * @param ignoreAccent\n */\n startswith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.startsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.startsWith(actual, expected);\n },\n /**\n * Returns true when the actual input not starts with the given string\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n doesnotstartwith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.notStartsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.notStartsWith(actual, expected);\n },\n /**\n * Returns true when the actual input like with the given string.\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n like: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.like(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.like(actual, expected);\n },\n /**\n * Returns true when the given input value is empty.\n *\n * @param {string|number} actual\n * @returns boolean\n */\n isempty: function (actual) {\n return actual === undefined || actual === '';\n },\n /**\n * Returns true when the given input value is not empty.\n *\n * @param {string|number} actual\n * @returns boolean\n */\n isnotempty: function (actual) {\n return actual !== undefined && actual !== '';\n },\n /**\n * Returns true when the actual input pattern(wildcard) matches with the given string.\n *\n * @param {string|Date} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n wildcard: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return (actual || typeof actual === 'boolean') && expected && typeof actual !== 'object' &&\n DataUtil.wildCard(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return (actual || typeof actual === 'boolean') && expected && DataUtil.wildCard(actual, expected);\n },\n /**\n * Returns true when the actual input ends with the given string.\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n * @param ignoreAccent\n */\n endswith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.endsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.endsWith(actual, expected);\n },\n /**\n * Returns true when the actual input not ends with the given string.\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n doesnotendwith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.notEndsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.notEndsWith(actual, expected);\n },\n /**\n * It will return the filter operator based on the filter symbol.\n *\n * @param {string} operator\n * @hidden\n */\n processSymbols: function (operator) {\n var fnName = DataUtil.operatorSymbols[operator];\n if (fnName) {\n var fn = DataUtil.fnOperators[fnName];\n return fn;\n }\n return DataUtil.throwError('Query - Process Operator : Invalid operator');\n },\n /**\n * It will return the valid filter operator based on the specified operators.\n *\n * @param {string} operator\n * @hidden\n */\n processOperator: function (operator) {\n var fn = DataUtil.fnOperators[operator];\n if (fn) {\n return fn;\n }\n return DataUtil.fnOperators.processSymbols(operator);\n }\n };\n /**\n * To perform the parse operation on JSON data, like convert to string from JSON or convert to JSON from string.\n */\n DataUtil.parse = {\n /**\n * Parse the given string to the plain JavaScript object.\n *\n * @param {string|Object|Object[]} jsonText\n */\n parseJson: function (jsonText) {\n if (typeof jsonText === 'string' && (/^[\\s]*\\[|^[\\s]*\\{(.)+:/g.test(jsonText) || jsonText.indexOf('\"') === -1)) {\n jsonText = JSON.parse(jsonText, DataUtil.parse.jsonReviver);\n }\n else if (jsonText instanceof Array) {\n DataUtil.parse.iterateAndReviveArray(jsonText);\n }\n else if (typeof jsonText === 'object' && jsonText !== null) {\n DataUtil.parse.iterateAndReviveJson(jsonText);\n }\n return jsonText;\n },\n /**\n * It will perform on array of values.\n *\n * @param {string[]|Object[]} array\n * @hidden\n */\n iterateAndReviveArray: function (array) {\n for (var i = 0; i < array.length; i++) {\n if (typeof array[i] === 'object' && array[i] !== null) {\n DataUtil.parse.iterateAndReviveJson(array[i]);\n // eslint-disable-next-line no-useless-escape\n }\n else if (typeof array[i] === 'string' && (!/^[\\s]*\\[|^[\\s]*\\{(.)+:|\\\"/g.test(array[i]) ||\n array[i].toString().indexOf('\"') === -1)) {\n array[i] = DataUtil.parse.jsonReviver('', array[i]);\n }\n else {\n array[i] = DataUtil.parse.parseJson(array[i]);\n }\n }\n },\n /**\n * It will perform on JSON values\n *\n * @param {JSON} json\n * @hidden\n */\n iterateAndReviveJson: function (json) {\n var value;\n var keys = Object.keys(json);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var prop = keys_2[_i];\n if (DataUtil.startsWith(prop, '__')) {\n continue;\n }\n value = json[prop];\n if (typeof value === 'object') {\n if (value instanceof Array) {\n DataUtil.parse.iterateAndReviveArray(value);\n }\n else if (value) {\n DataUtil.parse.iterateAndReviveJson(value);\n }\n }\n else {\n json[prop] = DataUtil.parse.jsonReviver(json[prop], value);\n }\n }\n },\n /**\n * It will perform on JSON values\n *\n * @param {string} field\n * @param {string|Date} value\n * @hidden\n */\n jsonReviver: function (field, value) {\n if (typeof value === 'string') {\n // eslint-disable-next-line security/detect-unsafe-regex\n var ms = /^\\/Date\\(([+-]?[0-9]+)([+-][0-9]{4})?\\)\\/$/.exec(value);\n var offSet = DataUtil.timeZoneHandling ? DataUtil.serverTimezoneOffset : null;\n if (ms) {\n return DataUtil.dateParse.toTimeZone(new Date(parseInt(ms[1], 10)), offSet, true);\n // eslint-disable-next-line no-useless-escape, security/detect-unsafe-regex\n }\n else if (/^(\\d{4}\\-\\d\\d\\-\\d\\d([tT][\\d:\\.]*){1})([zZ]|([+\\-])(\\d\\d):?(\\d\\d))?$/.test(value)) {\n var isUTC = value.indexOf('Z') > -1 || value.indexOf('z') > -1;\n var arr = value.split(/[^0-9.]/);\n if (isUTC) {\n if (arr[5].indexOf('.') > -1) {\n var secondsMs = arr[5].split('.');\n arr[5] = secondsMs[0];\n arr[6] = new Date(value).getUTCMilliseconds().toString();\n }\n else {\n arr[6] = '00';\n }\n value = DataUtil.dateParse\n .toTimeZone(new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5] ? arr[5] : '00', 10), parseInt(arr[6], 10)), DataUtil.serverTimezoneOffset, false);\n }\n else {\n var utcFormat = new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5] ? arr[5] : '00', 10));\n var hrs = parseInt(arr[6], 10);\n var mins = parseInt(arr[7], 10);\n if (isNaN(hrs) && isNaN(mins)) {\n return utcFormat;\n }\n if (value.indexOf('+') > -1) {\n utcFormat.setHours(utcFormat.getHours() - hrs, utcFormat.getMinutes() - mins);\n }\n else {\n utcFormat.setHours(utcFormat.getHours() + hrs, utcFormat.getMinutes() + mins);\n }\n value = DataUtil.dateParse\n .toTimeZone(utcFormat, DataUtil.serverTimezoneOffset, false);\n }\n if (DataUtil.serverTimezoneOffset == null) {\n value = DataUtil.dateParse.addSelfOffset(value);\n }\n }\n }\n return value;\n },\n /**\n * Check wheather the given value is JSON or not.\n *\n * @param {Object[]} jsonData\n */\n isJson: function (jsonData) {\n if (typeof jsonData[0] === 'string') {\n return jsonData;\n }\n return DataUtil.parse.parseJson(jsonData);\n },\n /**\n * Checks wheather the given value is GUID or not.\n *\n * @param {string} value\n */\n isGuid: function (value) {\n // eslint-disable-next-line security/detect-unsafe-regex\n var regex = /[A-Fa-f0-9]{8}(?:-[A-Fa-f0-9]{4}){3}-[A-Fa-f0-9]{12}/i;\n var match = regex.exec(value);\n return match != null;\n },\n /**\n * The method used to replace the value based on the type.\n *\n * @param {Object} value\n * @param {boolean} stringify\n * @hidden\n */\n replacer: function (value, stringify) {\n if (DataUtil.isPlainObject(value)) {\n return DataUtil.parse.jsonReplacer(value, stringify);\n }\n if (value instanceof Array) {\n return DataUtil.parse.arrayReplacer(value);\n }\n if (value instanceof Date) {\n return DataUtil.parse.jsonReplacer({ val: value }, stringify).val;\n }\n return value;\n },\n /**\n * It will replace the JSON value.\n *\n * @param {string} key\n * @param {Object} val\n * @param stringify\n * @hidden\n */\n jsonReplacer: function (val, stringify) {\n var value;\n var keys = Object.keys(val);\n for (var _i = 0, keys_3 = keys; _i < keys_3.length; _i++) {\n var prop = keys_3[_i];\n value = val[prop];\n if (!(value instanceof Date)) {\n continue;\n }\n var d = value;\n if (DataUtil.serverTimezoneOffset == null) {\n val[prop] = DataUtil.dateParse.toTimeZone(d, null).toJSON();\n }\n else {\n d = new Date(+d + DataUtil.serverTimezoneOffset * 3600000);\n val[prop] = DataUtil.dateParse.toTimeZone(DataUtil.dateParse.addSelfOffset(d), null).toJSON();\n }\n }\n return val;\n },\n /**\n * It will replace the Array of value.\n *\n * @param {string} key\n * @param {Object[]} val\n * @hidden\n */\n arrayReplacer: function (val) {\n for (var i = 0; i < val.length; i++) {\n if (DataUtil.isPlainObject(val[i])) {\n val[i] = DataUtil.parse.jsonReplacer(val[i]);\n }\n else if (val[i] instanceof Date) {\n val[i] = DataUtil.parse.jsonReplacer({ date: val[i] }).date;\n }\n }\n return val;\n },\n /**\n * It will replace the Date object with respective to UTC format value.\n *\n * @param {string} key\n * @param {any} value\n * @hidden\n */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n /* tslint:disable-next-line:no-any */\n jsonDateReplacer: function (key, value) {\n /* eslint-enable @typescript-eslint/no-explicit-any */\n if (key === 'value' && value) {\n if (typeof value === 'string') {\n // eslint-disable-next-line security/detect-unsafe-regex\n var ms = /^\\/Date\\(([+-]?[0-9]+)([+-][0-9]{4})?\\)\\/$/.exec(value);\n if (ms) {\n value = DataUtil.dateParse.toTimeZone(new Date(parseInt(ms[1], 10)), null, true);\n // eslint-disable-next-line no-useless-escape, security/detect-unsafe-regex\n }\n else if (/^(\\d{4}\\-\\d\\d\\-\\d\\d([tT][\\d:\\.]*){1})([zZ]|([+\\-])(\\d\\d):?(\\d\\d))?$/.test(value)) {\n var arr = value.split(/[^0-9]/);\n value = DataUtil.dateParse\n .toTimeZone(new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5], 10)), null, true);\n }\n }\n if (value instanceof Date) {\n value = DataUtil.dateParse.addSelfOffset(value);\n if (DataUtil.serverTimezoneOffset === null) {\n return DataUtil.dateParse.toTimeZone(DataUtil.dateParse.addSelfOffset(value), null).toJSON();\n }\n else {\n value = DataUtil.dateParse.toTimeZone(value, ((value.getTimezoneOffset() / 60)\n - DataUtil.serverTimezoneOffset), false);\n return value.toJSON();\n }\n }\n }\n return value;\n }\n };\n /**\n * @hidden\n */\n DataUtil.dateParse = {\n addSelfOffset: function (input) {\n return new Date(+input - (input.getTimezoneOffset() * 60000));\n },\n toUTC: function (input) {\n return new Date(+input + (input.getTimezoneOffset() * 60000));\n },\n toTimeZone: function (input, offset, utc) {\n if (offset === null) {\n return input;\n }\n var unix = utc ? DataUtil.dateParse.toUTC(input) : input;\n return new Date(+unix - (offset * 3600000));\n },\n toLocalTime: function (input) {\n var datefn = input;\n var timeZone = -datefn.getTimezoneOffset();\n var differenceString = timeZone >= 0 ? '+' : '-';\n var localtimefn = function (num) {\n var norm = Math.floor(Math.abs(num));\n return (norm < 10 ? '0' : '') + norm;\n };\n var val = datefn.getFullYear() + '-' + localtimefn(datefn.getMonth() + 1) + '-' + localtimefn(datefn.getDate()) +\n 'T' + localtimefn(datefn.getHours()) +\n ':' + localtimefn(datefn.getMinutes()) +\n ':' + localtimefn(datefn.getSeconds()) +\n differenceString + localtimefn(timeZone / 60) +\n ':' + localtimefn(timeZone % 60);\n return val;\n }\n };\n return DataUtil;\n}());\nexport { DataUtil };\n","import { isNullOrUndefined, classList, createElement, Browser } from '@syncfusion/ej2-base';\nvar globalTimeOut = {};\nvar DEFT_MAT_WIDTH = 30;\nvar DEFT_MAT3_WIDTH = 30;\nvar DEFT_FAB_WIDTH = 30;\nvar DEFT_FLUENT_WIDTH = 30;\nvar DEFT_FLUENT2_WIDTH = 30;\nvar DEFT_BOOT_WIDTH = 30;\nvar DEFT_BOOT4_WIDTH = 36;\nvar DEFT_BOOT5_WIDTH = 36;\nvar CLS_SHOWSPIN = 'e-spin-show';\nvar CLS_HIDESPIN = 'e-spin-hide';\nvar CLS_MATERIALSPIN = 'e-spin-material';\nvar CLS_MATERIAL3SPIN = 'e-spin-material3';\nvar CLS_FABRICSPIN = 'e-spin-fabric';\nvar CLS_FLUENTSPIN = 'e-spin-fluent';\nvar CLS_FLUENT2SPIN = 'e-spin-fluent2';\nvar CLS_TAILWINDSPIN = 'e-spin-tailwind';\nvar CLS_BOOTSPIN = 'e-spin-bootstrap';\nvar CLS_BOOT4SPIN = 'e-spin-bootstrap4';\nvar CLS_BOOT5SPIN = 'e-spin-bootstrap5';\nvar CLS_HIGHCONTRASTSPIN = 'e-spin-high-contrast';\nvar CLS_SPINWRAP = 'e-spinner-pane';\nvar CLS_SPININWRAP = 'e-spinner-inner';\nvar CLS_SPINCIRCLE = 'e-path-circle';\nvar CLS_SPINARC = 'e-path-arc';\nvar CLS_SPINLABEL = 'e-spin-label';\nvar CLS_SPINTEMPLATE = 'e-spin-template';\nvar spinTemplate = null;\nvar spinCSSClass = null;\n/**\n * Function to change the Spinners in a page globally from application end.\n * ```\n * E.g : blazorSpinner({ action: \"Create\", options: {target: targetElement}, type: \"\" });\n * ```\n *\n * @param {string} action - specifies the string\n * @param {CreateArgs} options - specifies the args\n * @param {string} target - specifies the target\n * @param {string} type - specifes the type\n * @returns {void}\n * @private\n */\nexport function Spinner(action, options, target, type) {\n switch (action) {\n case 'Create':\n /* eslint-disable */\n var element = document.querySelector(options.target);\n var args = {\n type: type, target: element, cssClass: options.cssClass,\n label: options.label, width: options.width\n };\n /* eslint-enable */\n createSpinner(args);\n break;\n case 'Show':\n showSpinner(document.querySelector(target));\n break;\n case 'Hide':\n hideSpinner(document.querySelector(target));\n break;\n case 'Set': {\n var setArgs = { cssClass: options.cssClass, type: type };\n setSpinner(setArgs);\n break;\n }\n }\n}\n/**\n * Create a spinner for the specified target element.\n * ```\n * E.g : createSpinner({ target: targetElement, width: '34px', label: 'Loading..' });\n * ```\n *\n * @param {SpinnerArgs} args - specifies the args\n * @param {CreateElementArgs} internalCreateElement - specifis the element args\n * @returns {void}\n * @private\n */\nexport function createSpinner(args, internalCreateElement) {\n var _a;\n if (!args.target) {\n return;\n }\n var radius;\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n // eslint-disable-next-line\n var container = create_spinner_container(args.target, makeElement);\n if (!isNullOrUndefined(args.cssClass)) {\n var classNames = args.cssClass.split(' ').filter(function (className) { return className.trim() !== ''; });\n (_a = container.wrap.classList).add.apply(_a, classNames);\n }\n if (!isNullOrUndefined(args.template) || !isNullOrUndefined(spinTemplate)) {\n var template = !isNullOrUndefined(args.template) ? args.template : spinTemplate;\n container.wrap.classList.add(CLS_SPINTEMPLATE);\n replaceContent(container.wrap, template, spinCSSClass);\n }\n else {\n var theme = !isNullOrUndefined(args.type) ? args.type : getTheme(container.wrap);\n var width = !isNullOrUndefined(args.width) ? args.width : undefined;\n radius = calculateRadius(width, theme);\n setTheme(theme, container.wrap, radius, makeElement);\n if (!isNullOrUndefined(args.label)) {\n createLabel(container.inner_wrap, args.label, makeElement);\n }\n }\n container.wrap.classList.add(CLS_HIDESPIN);\n container = null;\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {string} label - specifies the string\n * @param {createElementParams} makeElement - specifies the element\n * @returns {HTMLElement} - returns the element\n */\nfunction createLabel(container, label, makeElement) {\n var labelEle = makeElement('div', {});\n labelEle.classList.add(CLS_SPINLABEL);\n labelEle.innerHTML = label;\n container.appendChild(labelEle);\n return labelEle;\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createMaterialSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Material', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_MATERIALSPIN);\n mat_calculate_attributes(radius, container, 'Material', CLS_MATERIALSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createMaterial3Spinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Material3', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_MATERIAL3SPIN);\n mat_calculate_attributes(radius, container, 'Material3', CLS_MATERIAL3SPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createBootstrap4Spinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Bootstrap4', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_BOOT4SPIN);\n mat_calculate_attributes(radius, container, 'Bootstrap4', CLS_BOOT4SPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createBootstrap5Spinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Bootstrap5', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_BOOT5SPIN);\n mat_calculate_attributes(radius, container, 'Bootstrap5', CLS_BOOT5SPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {string} uniqueID - specifies the id.\n * @param {number} radius - specifies the radius\n * @returns {void}\n */\nfunction startMatAnimate(container, uniqueID, radius) {\n var globalObject = {};\n var timeOutVar = 0;\n globalTimeOut[\"\" + uniqueID].timeOut = 0;\n globalObject[\"\" + uniqueID] = globalVariables(uniqueID, radius, 0, 0);\n var spinnerInfo = { uniqueID: uniqueID, container: container, globalInfo: globalObject, timeOutVar: timeOutVar };\n animateMaterial(spinnerInfo);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createFabricSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Fabric', radius: radius };\n create_fabric_element(container, uniqueID, CLS_FABRICSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_FABRICSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createFluentSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Fluent', radius: radius };\n create_fabric_element(container, uniqueID, CLS_FLUENTSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_FLUENTSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createFluent2Spinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Fluent2', radius: radius };\n create_fabric_element(container, uniqueID, CLS_FLUENT2SPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_FLUENT2SPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createTailwindSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Tailwind', radius: radius };\n create_fabric_element(container, uniqueID, CLS_TAILWINDSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_TAILWINDSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createHighContrastSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'HighContrast', radius: radius };\n create_fabric_element(container, uniqueID, CLS_HIGHCONTRASTSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_HIGHCONTRASTSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @returns {string} - returns the string\n */\nfunction getTheme(container) {\n var theme = window.getComputedStyle(container, ':after').getPropertyValue('content');\n return theme.replace(/['\"]+/g, '');\n}\n/**\n *\n * @param {string} theme - specifies the theme\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction setTheme(theme, container, radius, makeElement) {\n var innerContainer = container.querySelector('.' + CLS_SPININWRAP);\n var svg = innerContainer.querySelector('svg');\n if (!isNullOrUndefined(svg)) {\n innerContainer.removeChild(svg);\n }\n switch (theme) {\n case 'Material':\n createMaterialSpinner(innerContainer, radius, makeElement);\n break;\n case 'Material3':\n createMaterial3Spinner(innerContainer, radius, makeElement);\n break;\n case 'Fabric':\n createFabricSpinner(innerContainer, radius, makeElement);\n break;\n case 'Fluent':\n createFluentSpinner(innerContainer, radius, makeElement);\n break;\n case 'Fluent2':\n createFluent2Spinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap':\n createBootstrapSpinner(innerContainer, radius, makeElement);\n break;\n case 'HighContrast':\n createHighContrastSpinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap4':\n createBootstrap4Spinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap5':\n createBootstrap5Spinner(innerContainer, radius, makeElement);\n break;\n case 'Tailwind':\n case 'Tailwind-dark':\n createTailwindSpinner(innerContainer, radius, makeElement);\n break;\n }\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createBootstrapSpinner(innerContainer, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Bootstrap', radius: radius };\n create_bootstrap_element(innerContainer, uniqueID, makeElement);\n boot_calculate_attributes(innerContainer, radius);\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {string} uniqueID - specifies the id\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_bootstrap_element(innerContainer, uniqueID, makeElement) {\n var svgBoot = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n var viewBoxValue = 64;\n var trans = 32;\n var defaultRadius = 2;\n svgBoot.setAttribute('id', uniqueID);\n svgBoot.setAttribute('class', CLS_BOOTSPIN);\n svgBoot.setAttribute('viewBox', '0 0 ' + viewBoxValue + ' ' + viewBoxValue);\n innerContainer.insertBefore(svgBoot, innerContainer.firstChild);\n for (var item = 0; item <= 7; item++) {\n var bootCircle = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n bootCircle.setAttribute('class', CLS_SPINCIRCLE + '_' + item);\n bootCircle.setAttribute('r', defaultRadius + '');\n bootCircle.setAttribute('transform', 'translate(' + trans + ',' + trans + ')');\n svgBoot.appendChild(bootCircle);\n }\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {number} radius - specifies the radius\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction boot_calculate_attributes(innerContainer, radius) {\n var svg = innerContainer.querySelector('svg.e-spin-bootstrap');\n var x = 0;\n var y = 0;\n var rad = 24;\n svg.style.width = svg.style.height = radius + 'px';\n var startArc = 90;\n for (var item = 0; item <= 7; item++) {\n var start = defineArcPoints(x, y, rad, startArc);\n var circleEle = svg.querySelector('.' + CLS_SPINCIRCLE + '_' + item);\n circleEle.setAttribute('cx', start.x + '');\n circleEle.setAttribute('cy', start.y + '');\n startArc = startArc >= 360 ? 0 : startArc;\n startArc = startArc + 45;\n }\n}\n/**\n *\n * @param {number} begin - specifies the number\n * @param {number} stop - specifirs the number\n * @returns {number[]} - returns the array of number\n */\nfunction generateSeries(begin, stop) {\n var series = [];\n var start = begin;\n var end = stop;\n var increment = false;\n var count = 1;\n formSeries(start);\n /**\n *\n * @param {number} i - specifies the number\n * @returns {void}\n */\n function formSeries(i) {\n series.push(i);\n if (i !== end || count === 1) {\n if (i <= start && i > 1 && !increment) {\n i = parseFloat((i - 0.2).toFixed(2));\n }\n else if (i === 1) {\n i = 7;\n i = parseFloat((i + 0.2).toFixed(2));\n increment = true;\n }\n else if (i < 8 && increment) {\n i = parseFloat((i + 0.2).toFixed(2));\n if (i === 8) {\n increment = false;\n }\n }\n else if (i <= 8 && !increment) {\n i = parseFloat((i - 0.2).toFixed(2));\n }\n ++count;\n formSeries(i);\n }\n }\n return series;\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @returns {void}\n */\nfunction animateBootstrap(innerContainer) {\n var svg = innerContainer.querySelector('svg.e-spin-bootstrap');\n var id = svg.getAttribute('id');\n for (var i = 1; i <= 8; i++) {\n var circleEle = (innerContainer.getElementsByClassName('e-path-circle_' +\n (i === 8 ? 0 : i))[0]);\n rotation(circleEle, i, i, generateSeries(i, i), id);\n }\n /**\n *\n * @param {SVGCircleElement} circle - specifies the circl element\n * @param {number} start - specifies the number\n * @param {number} end - specifies the end number\n * @param {number} series - specifies the series\n * @param {string} id - specifies the id\n * @returns {void}\n */\n function rotation(circle, start, end, series, id) {\n var count = 0;\n boot_animate(start);\n // eslint-disable-next-line\n function boot_animate(radius) {\n if (globalTimeOut[\"\" + id].isAnimate) {\n ++count;\n circle.setAttribute('r', radius + '');\n if (count >= series.length) {\n count = 0;\n }\n // eslint-disable-next-line\n globalTimeOut[id].timeOut = setTimeout(boot_animate.bind(null, series[count]), 18);\n }\n }\n }\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {string} template - specifies the template\n * @param {string} cssClass - specifies the css class.\n * @returns {void}\n */\nfunction replaceContent(container, template, cssClass) {\n if (!isNullOrUndefined(cssClass)) {\n container.classList.add(cssClass);\n }\n var inner = container.querySelector('.e-spinner-inner');\n inner.innerHTML = template;\n}\n/**\n *\n * @param {string} width - specifies the width\n * @param {string} theme - specifies the string\n * @returns {number} - returns the number\n */\nfunction calculateRadius(width, theme) {\n var defaultSize;\n switch (theme) {\n case 'Material':\n defaultSize = DEFT_MAT_WIDTH;\n break;\n case 'Material3':\n defaultSize = DEFT_MAT3_WIDTH;\n break;\n case 'Fabric':\n defaultSize = DEFT_FAB_WIDTH;\n break;\n case 'Tailwind':\n case 'Tailwind-dark':\n defaultSize = DEFT_FAB_WIDTH;\n break;\n case 'Fluent':\n defaultSize = DEFT_FLUENT_WIDTH;\n break;\n case 'Fluent2':\n defaultSize = DEFT_FLUENT2_WIDTH;\n break;\n case 'Bootstrap4':\n defaultSize = DEFT_BOOT4_WIDTH;\n break;\n case 'Bootstrap5':\n defaultSize = DEFT_BOOT5_WIDTH;\n break;\n default:\n defaultSize = DEFT_BOOT_WIDTH;\n }\n width = width ? parseFloat(width + '') : defaultSize;\n return theme === 'Bootstrap' ? width : width / 2;\n}\n/**\n *\n * @param {string} id - specifies the id\n * @param {number} radius - specifies the radius\n * @param {number} count - specifies the number count\n * @param {number} previousId - specifies the previous id\n * @returns {GlobalVariables} - returns the variables\n */\nfunction globalVariables(id, radius, count, previousId) {\n return {\n radius: radius,\n count: count,\n previousId: previousId\n };\n}\n/**\n * @returns {string} - returns the string\n */\n// eslint-disable-next-line\nfunction random_generator() {\n var random = '';\n var combine = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n for (var i = 0; i < 5; i++) {\n random += combine.charAt(Math.floor(Math.random() * combine.length));\n }\n return random;\n}\n/**\n *\n * @param {HTMLElement} innerCon - specifies the element\n * @param {string} uniqueID - specifies the unique id\n * @param {string} themeClass - specifies the string\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_fabric_element(innerCon, uniqueID, themeClass, makeElement) {\n var svgFabric = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svgFabric.setAttribute('id', uniqueID);\n svgFabric.setAttribute('class', themeClass);\n var fabricCirclePath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n fabricCirclePath.setAttribute('class', CLS_SPINCIRCLE);\n var fabricCircleArc = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n fabricCircleArc.setAttribute('class', CLS_SPINARC);\n innerCon.insertBefore(svgFabric, innerCon.firstChild);\n svgFabric.appendChild(fabricCirclePath);\n svgFabric.appendChild(fabricCircleArc);\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {string} uniqueID - specifies the unique id\n * @param {createElementParams} makeElement - specifies the element\n * @param {string} cls - specifies the string\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_material_element(innerContainer, uniqueID, makeElement, cls) {\n var svgMaterial = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n var matCirclePath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n svgMaterial.setAttribute('class', cls);\n svgMaterial.setAttribute('id', uniqueID);\n matCirclePath.setAttribute('class', CLS_SPINCIRCLE);\n innerContainer.insertBefore(svgMaterial, innerContainer.firstChild);\n svgMaterial.appendChild(matCirclePath);\n}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_spinner_container(target, makeElement) {\n var spinnerContainer = makeElement('div', {});\n var spinnerInnerContainer = makeElement('div', {});\n spinnerContainer.classList.add(CLS_SPINWRAP);\n spinnerInnerContainer.classList.add(CLS_SPININWRAP);\n spinnerInnerContainer.setAttribute('aria-disabled', 'true');\n target.appendChild(spinnerContainer);\n spinnerContainer.appendChild(spinnerInnerContainer);\n // eslint-disable-next-line\n return { wrap: spinnerContainer, inner_wrap: spinnerInnerContainer };\n}\n/**\n *\n * @param {SpinnerInfo} spinnerInfo - specifies the spinner\n * @returns {void}\n */\nfunction animateMaterial(spinnerInfo) {\n var start = 1;\n var end = 149;\n var duration = 1333;\n var max = 75;\n createCircle(start, end, easeAnimation, duration, spinnerInfo.globalInfo[spinnerInfo.uniqueID].count, max, spinnerInfo);\n spinnerInfo.globalInfo[spinnerInfo.uniqueID].count = ++spinnerInfo.globalInfo[spinnerInfo.uniqueID].count % 4;\n}\n/**\n *\n * @param {number} start - specifies the number\n * @param {number} end - specifies the end number\n * @param {Function} easing - specifies the function\n * @param {number} duration - specifies the duration\n * @param {number} count - specifies the count\n * @param {number} max - specifies the max number\n * @param {SpinnerInfo} spinnerInfo - specifies the spinner info\n * @returns {void}\n */\nfunction createCircle(start, end, easing, duration, count, max, spinnerInfo) {\n var id = ++spinnerInfo.globalInfo[spinnerInfo.uniqueID].previousId;\n var startTime = new Date().getTime();\n var change = end - start;\n var diameter = getSize((spinnerInfo.globalInfo[spinnerInfo.uniqueID].radius * 2) + '');\n var strokeSize = getStrokeSize(diameter);\n var rotate = -90 * (spinnerInfo.globalInfo[spinnerInfo.uniqueID].count || 0);\n mat_animation(spinnerInfo);\n // eslint-disable-next-line\n function mat_animation(spinnerInfo) {\n var currentTime = Math.max(0, Math.min(new Date().getTime() - startTime, duration));\n updatePath(easing(currentTime, start, change, duration), spinnerInfo.container);\n if (id === spinnerInfo.globalInfo[spinnerInfo.uniqueID].previousId && currentTime < duration) {\n // eslint-disable-next-line\n globalTimeOut[spinnerInfo.uniqueID].timeOut = setTimeout(mat_animation.bind(null, spinnerInfo), 1);\n }\n else {\n animateMaterial(spinnerInfo);\n }\n }\n /**\n *\n * @param {number} value - specifies the number value\n * @param {HTMLElement} container - specifies the container\n * @returns {void}\n */\n function updatePath(value, container) {\n if (!isNullOrUndefined(container.querySelector('svg.e-spin-material')) || !isNullOrUndefined(container.querySelector('svg.e-spin-material3'))) {\n var svg = void 0;\n if (!isNullOrUndefined(container.querySelector('svg.e-spin-material')) &&\n !isNullOrUndefined(container.querySelector('svg.e-spin-material').querySelector('path.e-path-circle'))) {\n svg = container.querySelector('svg.e-spin-material');\n }\n else if (!isNullOrUndefined(container.querySelector('svg.e-spin-material3')) &&\n !isNullOrUndefined(container.querySelector('svg.e-spin-material3').querySelector('path.e-path-circle'))) {\n svg = container.querySelector('svg.e-spin-material3');\n }\n if (!isNullOrUndefined(svg)) {\n var path = svg.querySelector('path.e-path-circle');\n path.setAttribute('stroke-dashoffset', getDashOffset(diameter, strokeSize, value, max) + '');\n path.setAttribute('transform', 'rotate(' + (rotate) + ' ' + diameter / 2 + ' ' + diameter / 2 + ')');\n }\n }\n }\n}\n/**\n *\n * @param {number} radius - specifies the number\n * @param {HTMLElement} container - specifies the element\n * @param {string} type - specifies the string type\n * @param {string} cls - specifies the string\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction mat_calculate_attributes(radius, container, type, cls) {\n var diameter = radius * 2;\n var svg = container.querySelector('svg.' + cls);\n var path = svg.querySelector('path.e-path-circle');\n var strokeSize = getStrokeSize(diameter);\n var transformOrigin = (diameter / 2) + 'px';\n svg.setAttribute('viewBox', '0 0 ' + diameter + ' ' + diameter);\n svg.style.width = svg.style.height = diameter + 'px';\n svg.style.transformOrigin = transformOrigin + ' ' + transformOrigin + ' ' + transformOrigin;\n path.setAttribute('d', drawArc(diameter, strokeSize));\n if (type === 'Material' || type === 'Material3' || type === 'Fluent2') {\n path.setAttribute('stroke-width', strokeSize + '');\n path.setAttribute('stroke-dasharray', ((diameter - strokeSize) * Math.PI * 0.75) + '');\n path.setAttribute('stroke-dashoffset', getDashOffset(diameter, strokeSize, 1, 75) + '');\n }\n}\n/**\n *\n * @param {string} value - specifies the value\n * @returns {number} - returns the number\n */\nfunction getSize(value) {\n var parsed = parseFloat(value);\n return parsed;\n}\n/**\n *\n * @param {number} diameter - specifies the diameter\n * @param {number} strokeSize - specifies the size\n * @returns {string} - returns the string\n */\nfunction drawArc(diameter, strokeSize) {\n var radius = diameter / 2;\n var offset = strokeSize / 2;\n return 'M' + radius + ',' + offset\n + 'A' + (radius - offset) + ',' + (radius - offset) + ' 0 1 1 ' + offset + ',' + radius;\n}\n/**\n *\n * @param {number} diameter - specifies the number\n * @returns {number} - returns the number\n */\nfunction getStrokeSize(diameter) {\n return 10 / 100 * diameter;\n}\n/**\n *\n * @param {number} diameter - specifies the number\n * @param {number} strokeSize - specifies the stroke size\n * @param {number} value - specifies the value\n * @param {number} max - specifies the max number\n * @returns {number} - returns the number\n */\nfunction getDashOffset(diameter, strokeSize, value, max) {\n return (diameter - strokeSize) * Math.PI * ((3 * (max) / 100) - (value / 100));\n}\n/**\n *\n * @param {number} current - specifies the number\n * @param {number} start - specifies the stroke size\n * @param {number} change - specifies the value\n * @param {number} duration - specifies the max number\n * @returns {number} - returns the number\n */\nfunction easeAnimation(current, start, change, duration) {\n var timestamp = (current /= duration) * current;\n var timecount = timestamp * current;\n return start + change * (6 * timecount * timestamp + -15 * timestamp * timestamp + 10 * timecount);\n}\n/**\n *\n * @param {number} radius - specifies the number\n * @param {HTMLElement} innerConainer - specifies the element\n * @param {string} trgClass - specifies the class\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction fb_calculate_attributes(radius, innerConainer, trgClass) {\n var centerX = radius;\n var centerY = radius;\n var diameter = radius * 2;\n var startArc = 315;\n var endArc = 45;\n var svg = innerConainer.querySelector('.' + trgClass);\n var circle = svg.querySelector('.e-path-circle');\n var path = svg.querySelector('.e-path-arc');\n var transformOrigin = (diameter / 2) + 'px';\n circle.setAttribute('d', defineCircle(centerX, centerY, radius));\n path.setAttribute('d', defineArc(centerX, centerY, radius, startArc, endArc));\n svg.setAttribute('viewBox', '0 0 ' + diameter + ' ' + diameter);\n svg.style.transformOrigin = transformOrigin + ' ' + transformOrigin + ' ' + transformOrigin;\n svg.style.width = svg.style.height = diameter + 'px';\n}\n/**\n *\n * @param {number} centerX - specifies the number\n * @param {number} centerY - specifies the stroke size\n * @param {number} radius - specifies the value\n * @param {number} angle - specifies the max number\n * @returns {number} - returns the number\n */\nfunction defineArcPoints(centerX, centerY, radius, angle) {\n var radians = (angle - 90) * Math.PI / 180.0;\n return {\n x: centerX + (radius * Math.cos(radians)),\n y: centerY + (radius * Math.sin(radians))\n };\n}\n/**\n *\n * @param {number} x - specifies the number\n * @param {number} y - specifies the stroke size\n * @param {number} radius - specifies the radius\n * @param {number} startArc - specifies the value\n * @param {number} endArc - specifies the max number\n * @returns {number} - returns the number\n */\nfunction defineArc(x, y, radius, startArc, endArc) {\n var start = defineArcPoints(x, y, radius, endArc);\n var end = defineArcPoints(x, y, radius, startArc);\n var d = [\n 'M', start.x, start.y,\n 'A', radius, radius, 0, 0, 0, end.x, end.y\n ].join(' ');\n return d;\n}\n/**\n *\n * @param {number} x - specifies the number\n * @param {number} y - specifies the stroke size\n * @param {number} radius - specifies the value\n * @returns {string} - returns the string\n */\nfunction defineCircle(x, y, radius) {\n var d = [\n 'M', x, y,\n 'm', -radius, 0,\n 'a', radius, radius, 0, 1, 0, radius * 2, 0,\n 'a', radius, radius, 0, 1, 0, -radius * 2, 0\n ].join(' ');\n return d;\n}\n/**\n * Function to show the Spinner.\n *\n * @param {HTMLElement} container - Specify the target of the Spinner.\n * @returns {void}\n * @private\n */\nexport function showSpinner(container) {\n showHideSpinner(container, false);\n container = null;\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {boolean} isHide - specifies the boolean\n * @returns {void}\n */\nfunction showHideSpinner(container, isHide) {\n var spinnerWrap;\n if (container) {\n if (container.classList.contains(CLS_SPINWRAP)) {\n spinnerWrap = container;\n }\n else {\n var spinWrapCollection = container.querySelectorAll('.' + CLS_SPINWRAP);\n if (Browser.isIE) {\n for (var i = 0; i < spinWrapCollection.length; i++) {\n if (spinWrapCollection[i].parentElement && spinWrapCollection[i].parentElement === container) {\n spinnerWrap = spinWrapCollection[i];\n break;\n }\n }\n }\n else {\n spinnerWrap = Array.from(spinWrapCollection).find(function (wrap) { return wrap.parentElement === container; }) || null;\n }\n }\n }\n if (container && spinnerWrap) {\n var inner = spinnerWrap.querySelector('.' + CLS_SPININWRAP);\n var spinCheck = isHide ? !spinnerWrap.classList.contains(CLS_SPINTEMPLATE) &&\n !spinnerWrap.classList.contains(CLS_HIDESPIN) :\n !spinnerWrap.classList.contains(CLS_SPINTEMPLATE) && !spinnerWrap.classList.contains(CLS_SHOWSPIN);\n if (spinCheck) {\n var svgEle = spinnerWrap.querySelector('svg');\n if (isNullOrUndefined(svgEle)) {\n return;\n }\n var id = svgEle.getAttribute('id');\n globalTimeOut[\"\" + id].isAnimate = !isHide;\n switch (globalTimeOut[\"\" + id].type) {\n case 'Material':\n case 'Material3':\n if (isHide) {\n clearTimeout(globalTimeOut[id].timeOut);\n }\n else {\n startMatAnimate(inner, id, globalTimeOut[id].radius);\n }\n break;\n case 'Bootstrap':\n if (isHide) {\n clearTimeout(globalTimeOut[id].timeOut);\n }\n else {\n animateBootstrap(inner);\n }\n break;\n }\n }\n if (isHide) {\n classList(spinnerWrap, [CLS_HIDESPIN], [CLS_SHOWSPIN]);\n }\n else {\n classList(spinnerWrap, [CLS_SHOWSPIN], [CLS_HIDESPIN]);\n }\n container = null;\n }\n}\n/**\n * Function to hide the Spinner.\n *\n * @param {HTMLElement} container - Specify the target of the Spinner.\n * @returns {void}\n * @private\n */\nexport function hideSpinner(container) {\n showHideSpinner(container, true);\n container = null;\n}\n/**\n * Function to change the Spinners in a page globally from application end.\n * ```\n * E.g : setSpinner({ cssClass: 'custom-css'; type: 'Material' });\n * ```\n *\n * @param {SetSpinnerArgs} args - specifies the args\n * @param {createElementParams} internalCreateElement - specifies the element params\n * @returns {void}\n * @private\n */\nexport function setSpinner(args, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n if (args.template !== undefined) {\n spinTemplate = args.template;\n if (args.template !== undefined) {\n spinCSSClass = args.cssClass;\n }\n }\n var container = document.querySelectorAll('.' + CLS_SPINWRAP);\n for (var index = 0; index < container.length; index++) {\n ensureTemplate(args.template, container[index], args.type, args.cssClass, makeElement);\n }\n}\n/**\n *\n * @param {string} template - specifies the string\n * @param {HTMLElement} container - specifies the container\n * @param {string} theme - specifies the theme\n * @param {string} cssClass - specifies the string class\n * @param {createElementParams} makeEle - specifies the params\n * @returns {void}\n */\nfunction ensureTemplate(template, container, theme, cssClass, makeEle) {\n if (isNullOrUndefined(template) && !container.classList.contains(CLS_SPINTEMPLATE)) {\n replaceTheme(container, theme, cssClass, makeEle);\n if (container.classList.contains(CLS_SHOWSPIN)) {\n container.classList.remove(CLS_SHOWSPIN);\n showSpinner(container);\n }\n else {\n container.classList.remove(CLS_HIDESPIN);\n hideSpinner(container);\n }\n }\n else {\n spinTemplate = template;\n if (!isNullOrUndefined(cssClass)) {\n spinCSSClass = cssClass;\n }\n if (!isNullOrUndefined(spinTemplate)) {\n replaceContent(container, spinTemplate, spinCSSClass);\n }\n }\n}\n/**\n *\n * @param {HTMLElement} container - specifies the container\n * @param {string} theme - specifies the theme\n * @param {string} cssClass - specifies the string class\n * @param {createElementParams} makeEle - specifies the params\n * @returns {void}\n */\nfunction replaceTheme(container, theme, cssClass, makeEle) {\n if (!isNullOrUndefined(cssClass)) {\n container.classList.add(cssClass);\n }\n var svgElement = container.querySelector('svg');\n if (!isNullOrUndefined(svgElement)) {\n var radius = theme === 'Bootstrap' ? parseFloat(svgElement.style.height) : parseFloat(svgElement.style.height) / 2;\n var classNames = svgElement.getAttribute('class');\n var svgClassList = classNames.split(/\\s/);\n if (svgClassList.indexOf('e-spin-material') >= 0) {\n var id = svgElement.getAttribute('id');\n clearTimeout(globalTimeOut[\"\" + id].timeOut);\n }\n setTheme(theme, container, radius, makeEle);\n }\n}\n","/**\n * Collision module.\n */\nimport { calculatePosition } from './position';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nvar parentDocument;\nvar targetContainer;\n/**\n *\n * @param {HTMLElement} element - specifies the element\n * @param {HTMLElement} viewPortElement - specifies the element\n * @param {CollisionCoordinates} axis - specifies the collision coordinates\n * @param {OffsetPosition} position - specifies the position\n * @returns {void}\n */\nexport function fit(element, viewPortElement, axis, position) {\n if (viewPortElement === void 0) { viewPortElement = null; }\n if (axis === void 0) { axis = { X: false, Y: false }; }\n if (!axis.Y && !axis.X) {\n return { left: 0, top: 0 };\n }\n var elemData = element.getBoundingClientRect();\n targetContainer = viewPortElement;\n parentDocument = element.ownerDocument;\n if (!position) {\n position = calculatePosition(element, 'left', 'top');\n }\n if (axis.X) {\n var containerWidth = targetContainer ? getTargetContainerWidth() : getViewPortWidth();\n var containerLeft = ContainerLeft();\n var containerRight = ContainerRight();\n var overLeft = containerLeft - position.left;\n var overRight = position.left + elemData.width - containerRight;\n if (elemData.width > containerWidth) {\n if (overLeft > 0 && overRight <= 0) {\n position.left = containerRight - elemData.width;\n }\n else if (overRight > 0 && overLeft <= 0) {\n position.left = containerLeft;\n }\n else {\n position.left = overLeft > overRight ? (containerRight - elemData.width) : containerLeft;\n }\n }\n else if (overLeft > 0) {\n position.left += overLeft;\n }\n else if (overRight > 0) {\n position.left -= overRight;\n }\n }\n if (axis.Y) {\n var containerHeight = targetContainer ? getTargetContainerHeight() : getViewPortHeight();\n var containerTop = ContainerTop();\n var containerBottom = ContainerBottom();\n var overTop = containerTop - position.top;\n var overBottom = position.top + elemData.height - containerBottom;\n if (elemData.height > containerHeight) {\n if (overTop > 0 && overBottom <= 0) {\n position.top = containerBottom - elemData.height;\n }\n else if (overBottom > 0 && overTop <= 0) {\n position.top = containerTop;\n }\n else {\n position.top = overTop > overBottom ? (containerBottom - elemData.height) : containerTop;\n }\n }\n else if (overTop > 0) {\n position.top += overTop;\n }\n else if (overBottom > 0) {\n position.top -= overBottom;\n }\n }\n return position;\n}\n/**\n *\n * @param {HTMLElement} element - specifies the html element\n * @param {HTMLElement} viewPortElement - specifies the html element\n * @param {number} x - specifies the number\n * @param {number} y - specifies the number\n * @returns {string[]} - returns the string value\n */\nexport function isCollide(element, viewPortElement, x, y) {\n if (viewPortElement === void 0) { viewPortElement = null; }\n var elemOffset = calculatePosition(element, 'left', 'top');\n if (x) {\n elemOffset.left = x;\n }\n if (y) {\n elemOffset.top = y;\n }\n var data = [];\n targetContainer = viewPortElement;\n parentDocument = element.ownerDocument;\n var elementRect = element.getBoundingClientRect();\n var top = elemOffset.top;\n var left = elemOffset.left;\n var right = elemOffset.left + elementRect.width;\n var bottom = elemOffset.top + elementRect.height;\n var yAxis = topCollideCheck(top, bottom);\n var xAxis = leftCollideCheck(left, right);\n if (yAxis.topSide) {\n data.push('top');\n }\n if (xAxis.rightSide) {\n data.push('right');\n }\n if (xAxis.leftSide) {\n data.push('left');\n }\n if (yAxis.bottomSide) {\n data.push('bottom');\n }\n return data;\n}\n/**\n *\n * @param {HTMLElement} element - specifies the element\n * @param {HTMLElement} target - specifies the element\n * @param {number} offsetX - specifies the number\n * @param {number} offsetY - specifies the number\n * @param {string} positionX - specifies the string value\n * @param {string} positionY - specifies the string value\n * @param {HTMLElement} viewPortElement - specifies the element\n * @param {CollisionCoordinates} axis - specifies the collision axis\n * @param {boolean} fixedParent - specifies the boolean\n * @returns {void}\n */\nexport function flip(element, target, offsetX, offsetY, positionX, positionY, viewPortElement, \n/* eslint-disable */\naxis, fixedParent) {\n if (viewPortElement === void 0) { viewPortElement = null; }\n if (axis === void 0) { axis = { X: true, Y: true }; }\n if (!target || !element || !positionX || !positionY || (!axis.X && !axis.Y)) {\n return;\n }\n var tEdge = { TL: null,\n TR: null,\n BL: null,\n BR: null\n }, eEdge = {\n TL: null,\n TR: null,\n BL: null,\n BR: null\n /* eslint-enable */\n };\n var elementRect;\n if (window.getComputedStyle(element).display === 'none') {\n var oldVisibility = element.style.visibility;\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n elementRect = element.getBoundingClientRect();\n element.style.removeProperty('display');\n element.style.visibility = oldVisibility;\n }\n else {\n elementRect = element.getBoundingClientRect();\n }\n var pos = {\n posX: positionX, posY: positionY, offsetX: offsetX, offsetY: offsetY, position: { left: 0, top: 0 }\n };\n targetContainer = viewPortElement;\n parentDocument = target.ownerDocument;\n updateElementData(target, tEdge, pos, fixedParent, elementRect);\n setPosition(eEdge, pos, elementRect);\n if (axis.X) {\n leftFlip(target, eEdge, tEdge, pos, elementRect, true);\n }\n if (axis.Y && tEdge.TL.top > -1) {\n topFlip(target, eEdge, tEdge, pos, elementRect, true);\n }\n setPopup(element, pos, elementRect);\n}\n/**\n *\n * @param {HTMLElement} element - specifies the element\n * @param {PositionLocation} pos - specifies the location\n * @param {ClientRect} elementRect - specifies the client rect\n * @returns {void}\n */\nfunction setPopup(element, pos, elementRect) {\n var left = 0;\n var top = 0;\n if (element.offsetParent != null\n && (getComputedStyle(element.offsetParent).position === 'absolute' ||\n getComputedStyle(element.offsetParent).position === 'relative')) {\n var data = calculatePosition(element.offsetParent, 'left', 'top', false, elementRect);\n left = data.left;\n top = data.top;\n }\n var scaleX = 1;\n var scaleY = 1;\n var tranformElement = getTransformElement(element);\n if (tranformElement) {\n var transformStyle = getComputedStyle(tranformElement).transform;\n if (transformStyle !== 'none') {\n var matrix = new DOMMatrix(transformStyle);\n scaleX = matrix.a;\n scaleY = matrix.d;\n }\n }\n element.style.top = ((pos.position.top / scaleY) + pos.offsetY - (top / scaleY)) + 'px';\n element.style.left = ((pos.position.left / scaleX) + pos.offsetX - (left / scaleX)) + 'px';\n}\n/**\n *\n * @param {HTMLElement} element - specifies the element\n * @returns {HTMLElement}\n */\nexport function getTransformElement(element) {\n while (element) {\n var transform = window.getComputedStyle(element).transform;\n if (transform && transform !== 'none') {\n return element;\n }\n if (element == document.body) {\n return null;\n }\n element = (element.offsetParent || element.parentElement);\n }\n return null;\n}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {EdgeOffset} edge - specifies the offset\n * @param {PositionLocation} pos - specifies theloaction\n * @param {boolean} fixedParent - specifies the boolean\n * @param {ClientRect} elementRect - specifies the client rect\n * @returns {void}\n */\nfunction updateElementData(target, edge, pos, fixedParent, elementRect) {\n pos.position = calculatePosition(target, pos.posX, pos.posY, fixedParent, elementRect);\n edge.TL = calculatePosition(target, 'left', 'top', fixedParent, elementRect);\n edge.TR = calculatePosition(target, 'right', 'top', fixedParent, elementRect);\n edge.BR = calculatePosition(target, 'left', 'bottom', fixedParent, elementRect);\n edge.BL = calculatePosition(target, 'right', 'bottom', fixedParent, elementRect);\n}\n/**\n *\n * @param {EdgeOffset} eStatus - specifies the status\n * @param {PositionLocation} pos - specifies the location\n * @param {ClientRect} elementRect - specifies the client\n * @returns {void}\n */\nfunction setPosition(eStatus, pos, elementRect) {\n eStatus.TL = { top: pos.position.top + pos.offsetY, left: pos.position.left + pos.offsetX };\n eStatus.TR = { top: eStatus.TL.top, left: eStatus.TL.left + elementRect.width };\n eStatus.BL = { top: eStatus.TL.top + elementRect.height,\n left: eStatus.TL.left };\n eStatus.BR = { top: eStatus.TL.top + elementRect.height,\n left: eStatus.TL.left + elementRect.width };\n}\n/**\n *\n * @param {number} left - specifies the number\n * @param {number} right - specifies the number\n * @returns {LeftCorners} - returns the value\n */\nfunction leftCollideCheck(left, right) {\n //eslint-disable-next-line\n var leftSide = false, rightSide = false;\n if (((left - getBodyScrollLeft()) < ContainerLeft())) {\n leftSide = true;\n }\n if (right > ContainerRight()) {\n rightSide = true;\n }\n return { leftSide: leftSide, rightSide: rightSide };\n}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {EdgeOffset} edge - specifes the element\n * @param {EdgeOffset} tEdge - specifies the edge offset\n * @param {PositionLocation} pos - specifes the location\n * @param {ClientRect} elementRect - specifies the client\n * @param {boolean} deepCheck - specifies the boolean value\n * @returns {void}\n */\nfunction leftFlip(target, edge, tEdge, pos, elementRect, deepCheck) {\n var collideSide = leftCollideCheck(edge.TL.left, edge.TR.left);\n if ((tEdge.TL.left - getBodyScrollLeft()) <= ContainerLeft()) {\n collideSide.leftSide = false;\n }\n if (tEdge.TR.left > ContainerRight()) {\n collideSide.rightSide = false;\n }\n if ((collideSide.leftSide && !collideSide.rightSide) || (!collideSide.leftSide && collideSide.rightSide)) {\n if (pos.posX === 'right') {\n pos.posX = 'left';\n }\n else {\n pos.posX = 'right';\n }\n pos.offsetX = pos.offsetX + elementRect.width;\n pos.offsetX = -1 * pos.offsetX;\n pos.position = calculatePosition(target, pos.posX, pos.posY, false);\n setPosition(edge, pos, elementRect);\n if (deepCheck) {\n leftFlip(target, edge, tEdge, pos, elementRect, false);\n }\n }\n}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {EdgeOffset} edge - specifies the offset\n * @param {EdgeOffset} tEdge - specifies the offset\n * @param {PositionLocation} pos - specifies the location\n * @param {ClientRect} elementRect - specifies the client rect\n * @param {boolean} deepCheck - specifies the boolean\n * @returns {void}\n */\nfunction topFlip(target, edge, tEdge, pos, elementRect, deepCheck) {\n var collideSide = topCollideCheck(edge.TL.top, edge.BL.top);\n if ((tEdge.TL.top - getBodyScrollTop()) <= ContainerTop()) {\n collideSide.topSide = false;\n }\n if (tEdge.BL.top >= ContainerBottom() && target.getBoundingClientRect().bottom < window.innerHeight) {\n collideSide.bottomSide = false;\n }\n if ((collideSide.topSide && !collideSide.bottomSide) || (!collideSide.topSide && collideSide.bottomSide)) {\n if (pos.posY === 'top') {\n pos.posY = 'bottom';\n }\n else {\n pos.posY = 'top';\n }\n pos.offsetY = pos.offsetY + elementRect.height;\n pos.offsetY = -1 * pos.offsetY;\n pos.position = calculatePosition(target, pos.posX, pos.posY, false, elementRect);\n setPosition(edge, pos, elementRect);\n if (deepCheck) {\n topFlip(target, edge, tEdge, pos, elementRect, false);\n }\n }\n}\n/**\n *\n * @param {number} top - specifies the number\n * @param {number} bottom - specifies the number\n * @returns {TopCorners} - retyrns the value\n */\nfunction topCollideCheck(top, bottom) {\n //eslint-disable-next-line\n var topSide = false, bottomSide = false;\n if ((top - getBodyScrollTop()) < ContainerTop()) {\n topSide = true;\n }\n if (bottom > ContainerBottom()) {\n bottomSide = true;\n }\n return { topSide: topSide, bottomSide: bottomSide };\n}\n/**\n * @returns {void}\n */\nfunction getTargetContainerWidth() {\n return targetContainer.getBoundingClientRect().width;\n}\n/**\n * @returns {void}\n */\nfunction getTargetContainerHeight() {\n return targetContainer.getBoundingClientRect().height;\n}\n/**\n * @returns {void}\n */\nfunction getTargetContainerLeft() {\n return targetContainer.getBoundingClientRect().left;\n}\n/**\n * @returns {void}\n */\nfunction getTargetContainerTop() {\n return targetContainer.getBoundingClientRect().top;\n}\n//eslint-disable-next-line\nfunction ContainerTop() {\n if (targetContainer) {\n return getTargetContainerTop();\n }\n return 0;\n}\n//eslint-disable-next-line\nfunction ContainerLeft() {\n if (targetContainer) {\n return getTargetContainerLeft();\n }\n return 0;\n}\n//eslint-disable-next-line\nfunction ContainerRight() {\n if (targetContainer) {\n return (getBodyScrollLeft() + getTargetContainerLeft() + getTargetContainerWidth());\n }\n return (getBodyScrollLeft() + getViewPortWidth());\n}\n//eslint-disable-next-line\nfunction ContainerBottom() {\n if (targetContainer) {\n return (getBodyScrollTop() + getTargetContainerTop() + getTargetContainerHeight());\n }\n return (getBodyScrollTop() + getViewPortHeight());\n}\n/**\n * @returns {number} - returns the scroll top value\n */\nfunction getBodyScrollTop() {\n // if(targetContainer)\n // return targetContainer.scrollTop;\n return parentDocument.documentElement.scrollTop || parentDocument.body.scrollTop;\n}\n/**\n * @returns {number} - returns the scroll left value\n */\nfunction getBodyScrollLeft() {\n // if(targetContainer)\n // return targetContainer.scrollLeft;\n return parentDocument.documentElement.scrollLeft || parentDocument.body.scrollLeft;\n}\n/**\n * @returns {number} - returns the viewport height\n */\nfunction getViewPortHeight() {\n return window.innerHeight;\n}\n/**\n * @returns {number} - returns the viewport width\n */\nfunction getViewPortWidth() {\n var windowWidth = window.innerWidth;\n var documentReact = document.documentElement.getBoundingClientRect();\n var offsetWidth = (isNullOrUndefined(document.documentElement)) ? 0 : documentReact.width;\n return windowWidth - (windowWidth - offsetWidth);\n}\n/**\n * @returns {void}\n */\nexport function destroy() {\n targetContainer = null;\n parentDocument = null;\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { setStyleAttribute, addClass, removeClass, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit } from '@syncfusion/ej2-base';\nimport { Browser } from '@syncfusion/ej2-base';\nimport { calculatePosition, calculateRelativeBasedPosition } from '../common/position';\nimport { Animation, Property, Event, Component } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { EventHandler } from '@syncfusion/ej2-base';\nimport { flip, fit, isCollide, destroy as collisionDestroy, getTransformElement } from '../common/collision';\n/**\n * Specifies the offset position values.\n */\nvar PositionData = /** @class */ (function (_super) {\n __extends(PositionData, _super);\n function PositionData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('left')\n ], PositionData.prototype, \"X\", void 0);\n __decorate([\n Property('top')\n ], PositionData.prototype, \"Y\", void 0);\n return PositionData;\n}(ChildProperty));\nexport { PositionData };\n// don't use space in classNames\nvar CLASSNAMES = {\n ROOT: 'e-popup',\n RTL: 'e-rtl',\n OPEN: 'e-popup-open',\n CLOSE: 'e-popup-close'\n};\n/**\n * Represents the Popup Component\n * ```html\n *
\n *
Popup Content
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Popup = /** @class */ (function (_super) {\n __extends(Popup, _super);\n function Popup(element, options) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Called internally if any of the property value changed.\n *\n * @param {PopupModel} newProp - specifies the new property\n * @param {PopupModel} oldProp - specifies the old property\n * @private\n * @returns {void}\n */\n Popup.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n setStyleAttribute(this.element, { 'width': formatUnit(newProp.width) });\n break;\n case 'height':\n setStyleAttribute(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'zIndex':\n setStyleAttribute(this.element, { 'zIndex': newProp.zIndex });\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'position':\n case 'relateTo':\n this.refreshPosition();\n break;\n case 'offsetX': {\n var x = newProp.offsetX - oldProp.offsetX;\n this.element.style.left = (parseInt(this.element.style.left, 10) + (x)).toString() + 'px';\n break;\n }\n case 'offsetY': {\n var y = newProp.offsetY - oldProp.offsetY;\n this.element.style.top = (parseInt(this.element.style.top, 10) + (y)).toString() + 'px';\n break;\n }\n case 'content':\n this.setContent();\n break;\n case 'actionOnScroll':\n if (newProp.actionOnScroll !== 'none') {\n this.wireScrollEvents();\n }\n else {\n this.unwireScrollEvents();\n }\n break;\n }\n }\n };\n /**\n * gets the Component module name.\n *\n * @returns {void}\n * @private\n */\n Popup.prototype.getModuleName = function () {\n return 'popup';\n };\n /**\n * To resolve if any collision occurs.\n *\n * @returns {void}\n */\n Popup.prototype.resolveCollision = function () {\n this.checkCollision();\n };\n /**\n * gets the persisted state properties of the Component.\n *\n * @returns {void}\n */\n Popup.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * To destroy the control.\n *\n * @returns {void}\n */\n Popup.prototype.destroy = function () {\n if (this.element.classList.contains('e-popup-open')) {\n this.unwireEvents();\n }\n this.element.classList.remove(CLASSNAMES.ROOT, CLASSNAMES.RTL, CLASSNAMES.OPEN, CLASSNAMES.CLOSE);\n this.content = null;\n this.relateTo = null;\n collisionDestroy();\n _super.prototype.destroy.call(this);\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Popup.prototype.render = function () {\n this.element.classList.add(CLASSNAMES.ROOT);\n var styles = {};\n if (this.zIndex !== 1000) {\n styles.zIndex = this.zIndex;\n }\n if (this.width !== 'auto') {\n styles.width = formatUnit(this.width);\n }\n if (this.height !== 'auto') {\n styles.height = formatUnit(this.height);\n }\n setStyleAttribute(this.element, styles);\n this.fixedParent = false;\n this.setEnableRtl();\n this.setContent();\n };\n Popup.prototype.wireEvents = function () {\n if (Browser.isDevice) {\n EventHandler.add(window, 'orientationchange', this.orientationOnChange, this);\n }\n if (this.actionOnScroll !== 'none') {\n this.wireScrollEvents();\n }\n };\n Popup.prototype.wireScrollEvents = function () {\n if (this.getRelateToElement()) {\n for (var _i = 0, _a = this.getScrollableParent(this.getRelateToElement()); _i < _a.length; _i++) {\n var parent_1 = _a[_i];\n EventHandler.add(parent_1, 'scroll', this.scrollRefresh, this);\n }\n }\n };\n Popup.prototype.unwireEvents = function () {\n if (Browser.isDevice) {\n EventHandler.remove(window, 'orientationchange', this.orientationOnChange);\n }\n if (this.actionOnScroll !== 'none') {\n this.unwireScrollEvents();\n }\n };\n Popup.prototype.unwireScrollEvents = function () {\n if (this.getRelateToElement()) {\n for (var _i = 0, _a = this.getScrollableParent(this.getRelateToElement()); _i < _a.length; _i++) {\n var parent_2 = _a[_i];\n EventHandler.remove(parent_2, 'scroll', this.scrollRefresh);\n }\n }\n };\n Popup.prototype.getRelateToElement = function () {\n var relateToElement = this.relateTo === '' || isNullOrUndefined(this.relateTo) ?\n document.body : this.relateTo;\n this.setProperties({ relateTo: relateToElement }, true);\n return ((typeof this.relateTo) === 'string') ?\n document.querySelector(this.relateTo) : this.relateTo;\n };\n Popup.prototype.scrollRefresh = function (e) {\n if (this.actionOnScroll === 'reposition') {\n if (!isNullOrUndefined(this.element) && !(this.element.offsetParent === e.target ||\n (this.element.offsetParent && this.element.offsetParent.tagName === 'BODY' &&\n e.target.parentElement == null))) {\n this.refreshPosition();\n }\n }\n else if (this.actionOnScroll === 'hide') {\n this.hide();\n }\n if (this.actionOnScroll !== 'none') {\n if (this.getRelateToElement()) {\n var targetVisible = this.isElementOnViewport(this.getRelateToElement(), e.target);\n if (!targetVisible && !this.targetInvisibleStatus) {\n this.trigger('targetExitViewport');\n this.targetInvisibleStatus = true;\n }\n else if (targetVisible) {\n this.targetInvisibleStatus = false;\n }\n }\n }\n };\n /**\n * This method is to get the element visibility on viewport when scroll\n * the page. This method will returns true even though 1 px of element\n * part is in visible.\n *\n * @param {HTMLElement} relateToElement - specifies the element\n * @param {HTMLElement} scrollElement - specifies the scroll element\n * @returns {boolean} - retruns the boolean\n */\n // eslint-disable-next-line\n Popup.prototype.isElementOnViewport = function (relateToElement, scrollElement) {\n var scrollParents = this.getScrollableParent(relateToElement);\n for (var parent_3 = 0; parent_3 < scrollParents.length; parent_3++) {\n if (this.isElementVisible(relateToElement, scrollParents[parent_3])) {\n continue;\n }\n else {\n return false;\n }\n }\n return true;\n };\n Popup.prototype.isElementVisible = function (relateToElement, scrollElement) {\n var rect = this.checkGetBoundingClientRect(relateToElement);\n if (!rect.height || !rect.width) {\n return false;\n }\n if (!isNullOrUndefined(this.checkGetBoundingClientRect(scrollElement))) {\n var parent_4 = scrollElement.getBoundingClientRect();\n return !(rect.bottom < parent_4.top) &&\n (!(rect.bottom > parent_4.bottom) &&\n (!(rect.right > parent_4.right) &&\n !(rect.left < parent_4.left)));\n }\n else {\n var win = window;\n var windowView = {\n top: win.scrollY,\n left: win.scrollX,\n right: win.scrollX + win.outerWidth,\n bottom: win.scrollY + win.outerHeight\n };\n var off = calculatePosition(relateToElement);\n var ele = {\n top: off.top,\n left: off.left,\n right: off.left + rect.width,\n bottom: off.top + rect.height\n };\n var elementView = {\n top: windowView.bottom - ele.top,\n left: windowView.right - ele.left,\n bottom: ele.bottom - windowView.top,\n right: ele.right - windowView.left\n };\n return elementView.top > 0\n && elementView.left > 0\n && elementView.right > 0\n && elementView.bottom > 0;\n }\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Popup.prototype.preRender = function () {\n //There is no event handler\n };\n Popup.prototype.setEnableRtl = function () {\n this.reposition();\n if (this.enableRtl) {\n this.element.classList.add(CLASSNAMES.RTL);\n }\n else {\n this.element.classList.remove(CLASSNAMES.RTL);\n }\n };\n Popup.prototype.setContent = function () {\n if (!isNullOrUndefined(this.content)) {\n this.element.innerHTML = '';\n if (typeof (this.content) === 'string') {\n this.element.textContent = this.content;\n }\n else {\n var relateToElem = this.getRelateToElement();\n // eslint-disable-next-line\n var props = this.content.props;\n if (!relateToElem.classList.contains('e-dropdown-btn') || isNullOrUndefined(props)) {\n this.element.appendChild(this.content);\n }\n }\n }\n };\n Popup.prototype.orientationOnChange = function () {\n var _this = this;\n setTimeout(function () {\n _this.refreshPosition();\n }, 200);\n };\n /**\n * Based on the `relative` element and `offset` values, `Popup` element position will refreshed.\n *\n * @param {HTMLElement} target - The target element.\n * @param {boolean} collision - Specifies whether to check for collision.\n * @returns {void}\n */\n Popup.prototype.refreshPosition = function (target, collision) {\n if (!isNullOrUndefined(target)) {\n this.checkFixedParent(target);\n }\n this.reposition();\n if (!collision) {\n this.checkCollision();\n }\n };\n Popup.prototype.reposition = function () {\n var pos;\n var position;\n var relateToElement = this.getRelateToElement();\n if (typeof this.position.X === 'number' && typeof this.position.Y === 'number') {\n pos = { left: this.position.X, top: this.position.Y };\n }\n else if ((typeof this.position.X === 'string' && typeof this.position.Y === 'number') ||\n (typeof this.position.X === 'number' && typeof this.position.Y === 'string')) {\n var parentDisplay = void 0;\n var display = this.element.style.display;\n this.element.style.display = 'block';\n if (this.element.classList.contains('e-dlg-modal')) {\n parentDisplay = this.element.parentElement.style.display;\n this.element.parentElement.style.display = 'block';\n }\n position = this.getAnchorPosition(relateToElement, this.element, this.position, this.offsetX, this.offsetY);\n if (typeof this.position.X === 'string') {\n pos = { left: position.left, top: this.position.Y };\n }\n else {\n pos = { left: this.position.X, top: position.top };\n }\n this.element.style.display = display;\n if (this.element.classList.contains('e-dlg-modal')) {\n this.element.parentElement.style.display = parentDisplay;\n }\n }\n else if (relateToElement) {\n var height = this.element.clientHeight;\n var display = this.element.style.display;\n this.element.style.display = 'block';\n pos = this.getAnchorPosition(relateToElement, this.element, this.position, this.offsetX, this.offsetY, height);\n this.element.style.display = display;\n }\n else {\n pos = { left: 0, top: 0 };\n }\n if (!isNullOrUndefined(pos)) {\n this.element.style.left = pos.left + 'px';\n this.element.style.top = pos.top + 'px';\n }\n };\n Popup.prototype.checkGetBoundingClientRect = function (ele) {\n var eleRect;\n try {\n eleRect = ele.getBoundingClientRect();\n return eleRect;\n }\n catch (error) {\n return null;\n }\n };\n Popup.prototype.getAnchorPosition = function (anchorEle, ele, position, offsetX, offsetY, height) {\n if (height === void 0) { height = 0; }\n var eleRect = this.checkGetBoundingClientRect(ele);\n var anchorRect = this.checkGetBoundingClientRect(anchorEle);\n if (isNullOrUndefined(eleRect) || isNullOrUndefined(anchorRect)) {\n return null;\n }\n var anchor = anchorEle;\n var anchorPos = { left: 0, top: 0 };\n if (ele.offsetParent && ele.offsetParent.tagName === 'BODY' && anchorEle.tagName === 'BODY') {\n anchorPos = calculatePosition(anchorEle);\n }\n else {\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName !== 'BODY')) {\n ele = ele.parentElement;\n }\n anchorPos = calculateRelativeBasedPosition(anchor, ele);\n }\n switch (position.X) {\n default:\n case 'left':\n break;\n case 'center':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.left += (window.innerWidth / 2 - eleRect.width / 2);\n }\n else if (this.targetType === 'container') {\n anchorPos.left += (anchorRect.width / 2 - eleRect.width / 2);\n }\n else {\n anchorPos.left += (anchorRect.width / 2);\n }\n break;\n case 'right':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.left += (window.innerWidth - eleRect.width);\n }\n else if (this.targetType === 'container') {\n var scaleX = 1;\n var tranformElement = getTransformElement(ele);\n if (tranformElement) {\n var transformStyle = getComputedStyle(tranformElement).transform;\n if (transformStyle !== 'none') {\n var matrix = new DOMMatrix(transformStyle);\n scaleX = matrix.a;\n }\n }\n anchorPos.left += ((anchorRect.width - eleRect.width) / scaleX);\n }\n else {\n anchorPos.left += (anchorRect.width);\n }\n break;\n }\n switch (position.Y) {\n default:\n case 'top':\n break;\n case 'center':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.top += (window.innerHeight / 2 - eleRect.height / 2);\n }\n else if (this.targetType === 'container') {\n anchorPos.top += (anchorRect.height / 2 - eleRect.height / 2);\n }\n else {\n anchorPos.top += (anchorRect.height / 2);\n }\n break;\n case 'bottom':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.top += (window.innerHeight - eleRect.height);\n }\n else if (this.targetType === 'container' && !ele.classList.contains('e-dialog')) {\n anchorPos.top += (anchorRect.height - eleRect.height);\n }\n else if (this.targetType === 'container' && ele.classList.contains('e-dialog')) {\n anchorPos.top += (anchorRect.height - height);\n }\n else {\n anchorPos.top += (anchorRect.height);\n }\n break;\n }\n anchorPos.left += offsetX;\n anchorPos.top += offsetY;\n return anchorPos;\n };\n Popup.prototype.callFlip = function (param) {\n var relateToElement = this.getRelateToElement();\n flip(this.element, relateToElement, this.offsetX, this.offsetY, this.position.X, this.position.Y, this.viewPortElement, param, this.fixedParent);\n };\n Popup.prototype.callFit = function (param) {\n if (isCollide(this.element, this.viewPortElement).length !== 0) {\n if (isNullOrUndefined(this.viewPortElement)) {\n var data = fit(this.element, this.viewPortElement, param);\n if (param.X) {\n this.element.style.left = data.left + 'px';\n }\n if (param.Y) {\n this.element.style.top = data.top + 'px';\n }\n }\n else {\n var elementRect = this.checkGetBoundingClientRect(this.element);\n var viewPortRect = this.checkGetBoundingClientRect(this.viewPortElement);\n if (isNullOrUndefined(elementRect) || isNullOrUndefined(viewPortRect)) {\n return null;\n }\n if (param && param.Y === true) {\n if (viewPortRect.top > elementRect.top) {\n this.element.style.top = '0px';\n }\n else if (viewPortRect.bottom < elementRect.bottom) {\n this.element.style.top = parseInt(this.element.style.top, 10) - (elementRect.bottom - viewPortRect.bottom) + 'px';\n }\n }\n if (param && param.X === true) {\n if (viewPortRect.right < elementRect.right) {\n this.element.style.left = parseInt(this.element.style.left, 10) - (elementRect.right - viewPortRect.right) + 'px';\n }\n else if (viewPortRect.left > elementRect.left) {\n this.element.style.left = parseInt(this.element.style.left, 10) + (viewPortRect.left - elementRect.left) + 'px';\n }\n }\n }\n }\n };\n Popup.prototype.checkCollision = function () {\n var horz = this.collision.X;\n var vert = this.collision.Y;\n if (horz === 'none' && vert === 'none') {\n return;\n }\n if (horz === 'flip' && vert === 'flip') {\n this.callFlip({ X: true, Y: true });\n }\n else if (horz === 'fit' && vert === 'fit') {\n this.callFit({ X: true, Y: true });\n }\n else {\n if (horz === 'flip') {\n this.callFlip({ X: true, Y: false });\n }\n else if (vert === 'flip') {\n this.callFlip({ Y: true, X: false });\n }\n if (horz === 'fit') {\n this.callFit({ X: true, Y: false });\n }\n else if (vert === 'fit') {\n this.callFit({ X: false, Y: true });\n }\n }\n };\n /**\n * Shows the popup element from screen.\n *\n * @returns {void}\n * @param {AnimationModel} animationOptions - specifies the model\n * @param { HTMLElement } relativeElement - To calculate the zIndex value dynamically.\n */\n Popup.prototype.show = function (animationOptions, relativeElement) {\n var _this = this;\n var relateToElement = this.getRelateToElement();\n if (relateToElement.classList.contains('e-filemanager')) {\n this.fmDialogContainer = this.element.getElementsByClassName('e-file-select-wrap')[0];\n }\n this.wireEvents();\n if (!isNullOrUndefined(this.fmDialogContainer) && Browser.isIos) {\n this.fmDialogContainer.style.display = 'block';\n }\n if (this.zIndex === 1000 || !isNullOrUndefined(relativeElement)) {\n var zIndexElement = (isNullOrUndefined(relativeElement)) ? this.element : relativeElement;\n this.zIndex = getZindexPartial(zIndexElement);\n setStyleAttribute(this.element, { 'zIndex': this.zIndex });\n }\n animationOptions = (!isNullOrUndefined(animationOptions) && typeof animationOptions === 'object') ?\n animationOptions : this.showAnimation;\n if (this.collision.X !== 'none' || this.collision.Y !== 'none') {\n removeClass([this.element], CLASSNAMES.CLOSE);\n addClass([this.element], CLASSNAMES.OPEN);\n this.checkCollision();\n removeClass([this.element], CLASSNAMES.OPEN);\n addClass([this.element], CLASSNAMES.CLOSE);\n }\n if (!isNullOrUndefined(animationOptions)) {\n animationOptions.begin = function () {\n if (!_this.isDestroyed) {\n removeClass([_this.element], CLASSNAMES.CLOSE);\n addClass([_this.element], CLASSNAMES.OPEN);\n }\n };\n animationOptions.end = function () {\n if (!_this.isDestroyed) {\n _this.trigger('open');\n }\n };\n new Animation(animationOptions).animate(this.element);\n }\n else {\n removeClass([this.element], CLASSNAMES.CLOSE);\n addClass([this.element], CLASSNAMES.OPEN);\n this.trigger('open');\n }\n };\n /**\n * Hides the popup element from screen.\n *\n * @param {AnimationModel} animationOptions - To give the animation options.\n * @returns {void}\n */\n Popup.prototype.hide = function (animationOptions) {\n var _this = this;\n animationOptions = (!isNullOrUndefined(animationOptions) && typeof animationOptions === 'object') ?\n animationOptions : this.hideAnimation;\n if (!isNullOrUndefined(animationOptions)) {\n animationOptions.end = function () {\n if (!_this.isDestroyed) {\n removeClass([_this.element], CLASSNAMES.OPEN);\n addClass([_this.element], CLASSNAMES.CLOSE);\n _this.trigger('close');\n }\n };\n new Animation(animationOptions).animate(this.element);\n }\n else {\n removeClass([this.element], CLASSNAMES.OPEN);\n addClass([this.element], CLASSNAMES.CLOSE);\n this.trigger('close');\n }\n this.unwireEvents();\n };\n /**\n * Gets scrollable parent elements for the given element.\n *\n * @returns {void}\n * @param { HTMLElement } element - Specify the element to get the scrollable parents of it.\n */\n Popup.prototype.getScrollableParent = function (element) {\n this.checkFixedParent(element);\n return getScrollableParent(element, this.fixedParent);\n };\n Popup.prototype.checkFixedParent = function (element) {\n var parent = element.parentElement;\n while (parent && parent.tagName !== 'HTML') {\n var parentStyle = getComputedStyle(parent);\n if ((parentStyle.position === 'fixed' || parentStyle.position === 'sticky') && !isNullOrUndefined(this.element) && this.element.offsetParent &&\n this.element.offsetParent.tagName === 'BODY' && getComputedStyle(this.element.offsetParent).overflow !== 'hidden') {\n this.element.style.top = window.scrollY > parseInt(this.element.style.top, 10) ?\n formatUnit(window.scrollY - parseInt(this.element.style.top, 10))\n : formatUnit(parseInt(this.element.style.top, 10) - window.scrollY);\n this.element.style.position = 'fixed';\n this.fixedParent = true;\n }\n parent = parent.parentElement;\n if (!isNullOrUndefined(this.element) && isNullOrUndefined(this.element.offsetParent) && parentStyle.position === 'fixed'\n && this.element.style.position === 'fixed') {\n this.fixedParent = true;\n }\n }\n };\n __decorate([\n Property('auto')\n ], Popup.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], Popup.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"content\", void 0);\n __decorate([\n Property('container')\n ], Popup.prototype, \"targetType\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"viewPortElement\", void 0);\n __decorate([\n Property({ X: 'none', Y: 'none' })\n ], Popup.prototype, \"collision\", void 0);\n __decorate([\n Property('')\n ], Popup.prototype, \"relateTo\", void 0);\n __decorate([\n Complex({}, PositionData)\n ], Popup.prototype, \"position\", void 0);\n __decorate([\n Property(0)\n ], Popup.prototype, \"offsetX\", void 0);\n __decorate([\n Property(0)\n ], Popup.prototype, \"offsetY\", void 0);\n __decorate([\n Property(1000)\n ], Popup.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], Popup.prototype, \"enableRtl\", void 0);\n __decorate([\n Property('reposition')\n ], Popup.prototype, \"actionOnScroll\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"showAnimation\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"hideAnimation\", void 0);\n __decorate([\n Event()\n ], Popup.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], Popup.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], Popup.prototype, \"targetExitViewport\", void 0);\n Popup = __decorate([\n NotifyPropertyChanges\n ], Popup);\n return Popup;\n}(Component));\nexport { Popup };\n/**\n * Gets scrollable parent elements for the given element.\n *\n * @param { HTMLElement } element - Specify the element to get the scrollable parents of it.\n * @param {boolean} fixedParent - specifies the parent element\n * @private\n * @returns {void}\n */\nexport function getScrollableParent(element, fixedParent) {\n var eleStyle = getComputedStyle(element);\n var scrollParents = [];\n var overflowRegex = /(auto|scroll)/;\n var parent = element.parentElement;\n while (parent && parent.tagName !== 'HTML') {\n var parentStyle = getComputedStyle(parent);\n if (!(eleStyle.position === 'absolute' && parentStyle.position === 'static')\n && overflowRegex.test(parentStyle.overflow + parentStyle.overflowY + parentStyle.overflowX)) {\n scrollParents.push(parent);\n }\n parent = parent.parentElement;\n }\n if (!fixedParent) {\n scrollParents.push(document);\n }\n return scrollParents;\n}\n/**\n * Gets the maximum z-index of the given element.\n *\n * @returns {void}\n * @param { HTMLElement } element - Specify the element to get the maximum z-index of it.\n * @private\n */\nexport function getZindexPartial(element) {\n // upto body traversal\n var parent = element.parentElement;\n var parentZindex = [];\n while (parent) {\n if (parent.tagName !== 'BODY') {\n var index = document.defaultView.getComputedStyle(parent, null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(parent, null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n parentZindex.push(index);\n }\n parent = parent.parentElement;\n }\n else {\n break;\n }\n }\n var childrenZindex = [];\n for (var i = 0; i < document.body.children.length; i++) {\n if (!element.isEqualNode(document.body.children[i])) {\n var index = document.defaultView.getComputedStyle(document.body.children[i], null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(document.body.children[i], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n childrenZindex.push(index);\n }\n }\n }\n childrenZindex.push('999');\n var siblingsZindex = [];\n if (!isNullOrUndefined(element.parentElement) && element.parentElement.tagName !== 'BODY') {\n var childNodes = [].slice.call(element.parentElement.children);\n for (var i = 0; i < childNodes.length; i++) {\n if (!element.isEqualNode(childNodes[i])) {\n var index = document.defaultView.getComputedStyle(childNodes[i], null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(childNodes[i], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n siblingsZindex.push(index);\n }\n }\n }\n }\n var finalValue = parentZindex.concat(childrenZindex, siblingsZindex);\n // eslint-disable-next-line\n var currentZindexValue = Math.max.apply(Math, finalValue) + 1;\n return currentZindexValue > 2147483647 ? 2147483647 : currentZindexValue;\n}\n/**\n * Gets the maximum z-index of the page.\n *\n * @returns {void}\n * @param { HTMLElement } tagName - Specify the tagName to get the maximum z-index of it.\n * @private\n */\nexport function getMaxZindex(tagName) {\n if (tagName === void 0) { tagName = ['*']; }\n var maxZindex = [];\n for (var i = 0; i < tagName.length; i++) {\n var elements = document.getElementsByTagName(tagName[i]);\n for (var i_1 = 0; i_1 < elements.length; i_1++) {\n var index = document.defaultView.getComputedStyle(elements[i_1], null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(elements[i_1], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n maxZindex.push(index);\n }\n }\n }\n // eslint-disable-next-line\n var currentZindexValue = Math.max.apply(Math, maxZindex) + 1;\n return currentZindexValue > 2147483647 ? 2147483647 : currentZindexValue;\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, ChildProperty, Event, append, compile } from '@syncfusion/ej2-base';\nimport { EventHandler, Touch, Browser, Animation as PopupAnimation, animationMode } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, getUniqueID, formatUnit, select, selectAll } from '@syncfusion/ej2-base';\nimport { attributes, closest, removeClass, addClass, remove } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Complex, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Popup } from '../popup/popup';\nimport { calculatePosition } from '../common/position';\nimport { isCollide, fit, destroy as collisionDestroy } from '../common/collision';\nvar TOUCHEND_HIDE_DELAY = 1500;\nvar TAPHOLD_THRESHOLD = 500;\nvar SHOW_POINTER_TIP_GAP = 0;\nvar HIDE_POINTER_TIP_GAP = 8;\nvar MOUSE_TRAIL_GAP = 2;\nvar POINTER_ADJUST = 2;\nvar ROOT = 'e-tooltip';\nvar RTL = 'e-rtl';\nvar DEVICE = 'e-bigger';\nvar ICON = 'e-icons';\nvar CLOSE = 'e-tooltip-close';\nvar TOOLTIP_WRAP = 'e-tooltip-wrap';\nvar CONTENT = 'e-tip-content';\nvar ARROW_TIP = 'e-arrow-tip';\nvar ARROW_TIP_OUTER = 'e-arrow-tip-outer';\nvar ARROW_TIP_INNER = 'e-arrow-tip-inner';\nvar TIP_BOTTOM = 'e-tip-bottom';\nvar TIP_TOP = 'e-tip-top';\nvar TIP_LEFT = 'e-tip-left';\nvar TIP_RIGHT = 'e-tip-right';\nvar POPUP_ROOT = 'e-popup';\nvar POPUP_OPEN = 'e-popup-open';\nvar POPUP_CLOSE = 'e-popup-close';\nvar POPUP_LIB = 'e-lib';\nvar HIDE_POPUP = 'e-hidden';\nvar POPUP_CONTAINER = 'e-tooltip-popup-container';\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ effect: 'FadeIn', duration: 150, delay: 0 })\n ], Animation.prototype, \"open\", void 0);\n __decorate([\n Property({ effect: 'FadeOut', duration: 150, delay: 0 })\n ], Animation.prototype, \"close\", void 0);\n return Animation;\n}(ChildProperty));\nexport { Animation };\n/**\n * Represents the Tooltip component that displays a piece of information about the target element on mouse hover.\n * ```html\n *
Show Tooltip
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Tooltip = /** @class */ (function (_super) {\n __extends(Tooltip, _super);\n /**\n * Constructor for creating the Tooltip Component\n *\n * @param {TooltipModel} options - specifies the options for the constructor\n * @param {string| HTMLElement} element - specifies the element for the constructor\n *\n */\n function Tooltip(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.mouseMoveEvent = null;\n _this.mouseMoveTarget = null;\n _this.containerElement = null;\n _this.isBodyContainer = true;\n return _this;\n }\n Tooltip.prototype.initialize = function () {\n this.formatPosition();\n addClass([this.element], ROOT);\n };\n Tooltip.prototype.formatPosition = function () {\n var _a, _b;\n if (!this.position)\n return;\n if (this.position.indexOf('Top') === 0 || this.position.indexOf('Bottom') === 0) {\n _a = this.position.split(/(?=[A-Z])/), this.tooltipPositionY = _a[0], this.tooltipPositionX = _a[1];\n }\n else {\n _b = this.position.split(/(?=[A-Z])/), this.tooltipPositionX = _b[0], this.tooltipPositionY = _b[1];\n }\n };\n Tooltip.prototype.renderArrow = function () {\n this.setTipClass(this.position);\n var tip = this.createElement('div', { className: ARROW_TIP + ' ' + this.tipClass });\n tip.appendChild(this.createElement('div', { className: ARROW_TIP_OUTER + ' ' + this.tipClass }));\n tip.appendChild(this.createElement('div', { className: ARROW_TIP_INNER + ' ' + this.tipClass }));\n this.tooltipEle.appendChild(tip);\n };\n Tooltip.prototype.setTipClass = function (position) {\n if (position.indexOf('Right') === 0) {\n this.tipClass = TIP_LEFT;\n }\n else if (position.indexOf('Bottom') === 0) {\n this.tipClass = TIP_TOP;\n }\n else if (position.indexOf('Left') === 0) {\n this.tipClass = TIP_RIGHT;\n }\n else {\n this.tipClass = TIP_BOTTOM;\n }\n };\n Tooltip.prototype.renderPopup = function (target) {\n var elePos = this.mouseTrail ? { top: 0, left: 0 } : this.getTooltipPosition(target);\n this.tooltipEle.classList.remove(POPUP_LIB);\n this.popupObj = new Popup(this.tooltipEle, {\n height: this.height,\n width: this.width,\n position: { X: elePos.left, Y: elePos.top },\n enableRtl: this.enableRtl,\n open: this.openPopupHandler.bind(this),\n close: this.closePopupHandler.bind(this)\n });\n };\n Tooltip.prototype.getScalingFactor = function (target) {\n if (!target) {\n return { x: 1, y: 1 };\n }\n var scalingFactors = { x: 1, y: 1 };\n var elementsWithTransform = target.closest('[style*=\"transform: scale\"]');\n if (elementsWithTransform && elementsWithTransform !== this.tooltipEle && elementsWithTransform.contains(this.tooltipEle)) {\n var computedStyle = window.getComputedStyle(elementsWithTransform);\n var transformValue = computedStyle.getPropertyValue('transform');\n var matrixValues = transformValue.match(/matrix\\(([^)]+)\\)/)[1].split(',').map(parseFloat);\n scalingFactors.x = matrixValues[0];\n scalingFactors.y = matrixValues[3];\n }\n return scalingFactors;\n };\n Tooltip.prototype.getTooltipPosition = function (target) {\n this.tooltipEle.style.display = 'block';\n var parentWithZoomStyle = this.element.closest('[style*=\"zoom\"]');\n if (parentWithZoomStyle) {\n if (!parentWithZoomStyle.contains(this.tooltipEle)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.tooltipEle.style.zoom = getComputedStyle(parentWithZoomStyle).zoom;\n }\n }\n var pos = calculatePosition(target, this.tooltipPositionX, this.tooltipPositionY, !this.isBodyContainer, this.isBodyContainer ? null : this.containerElement.getBoundingClientRect());\n var scalingFactors = this.getScalingFactor(target);\n var offsetPos = this.calculateTooltipOffset(this.position, scalingFactors.x, scalingFactors.y);\n var collisionPosition = this.calculateElementPosition(pos, offsetPos);\n var collisionLeft = collisionPosition[0];\n var collisionTop = collisionPosition[1];\n var elePos = this.collisionFlipFit(target, collisionLeft, collisionTop);\n elePos.left = elePos.left / scalingFactors.x;\n elePos.top = elePos.top / scalingFactors.y;\n this.tooltipEle.style.display = '';\n return elePos;\n };\n Tooltip.prototype.windowResize = function () {\n this.reposition(this.findTarget());\n };\n Tooltip.prototype.reposition = function (target) {\n if (this.popupObj && target) {\n var elePos = this.getTooltipPosition(target);\n this.popupObj.position = { X: elePos.left, Y: elePos.top };\n this.popupObj.dataBind();\n }\n };\n Tooltip.prototype.openPopupHandler = function () {\n if (!this.mouseTrail && this.needTemplateReposition()) {\n this.reposition(this.findTarget());\n }\n this.trigger('afterOpen', this.tooltipEventArgs);\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.closePopupHandler = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact && !(this.opensOn === 'Click' || typeof (this.content) === 'function')) {\n this.clearTemplate(['content']);\n }\n this.clear();\n var tooltipAfterCloseEventArgs = {\n type: this.tooltipEventArgs.event ? this.tooltipEventArgs.event.type : null, cancel: false, target: this.tooltipEventArgs.target, event: this.tooltipEventArgs.event ? this.tooltipEventArgs.event : null,\n element: this.tooltipEle, isInteracted: !isNullOrUndefined(this.tooltipEventArgs.event)\n };\n this.trigger('afterClose', tooltipAfterCloseEventArgs);\n tooltipAfterCloseEventArgs = null;\n };\n Tooltip.prototype.calculateTooltipOffset = function (position, xScalingFactor, yScalingFactor) {\n if (xScalingFactor === void 0) { xScalingFactor = 1; }\n if (yScalingFactor === void 0) { yScalingFactor = 1; }\n var pos = { top: 0, left: 0 };\n var tipWidth;\n var tipHeight;\n var tooltipEleWidth;\n var tooltipEleHeight;\n var arrowEle;\n var tipAdjust;\n var tipHeightAdjust;\n var tipWidthAdjust;\n if (xScalingFactor !== 1 || yScalingFactor !== 1) {\n var tooltipEleRect = this.tooltipEle.getBoundingClientRect();\n var arrowEleRect = void 0;\n tooltipEleWidth = Math.round(tooltipEleRect.width);\n tooltipEleHeight = Math.round(tooltipEleRect.height);\n arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n if (arrowEle) {\n arrowEleRect = arrowEle.getBoundingClientRect();\n }\n tipWidth = arrowEle ? Math.round(arrowEleRect.width) : 0;\n tipHeight = arrowEle ? Math.round(arrowEleRect.height) : 0;\n tipAdjust = (this.showTipPointer ? SHOW_POINTER_TIP_GAP : HIDE_POINTER_TIP_GAP);\n tipHeightAdjust = (tipHeight / 2) + POINTER_ADJUST + (tooltipEleHeight - (this.tooltipEle.clientHeight * yScalingFactor));\n tipWidthAdjust = (tipWidth / 2) + POINTER_ADJUST + (tooltipEleWidth - (this.tooltipEle.clientWidth * xScalingFactor));\n }\n else {\n tooltipEleWidth = this.tooltipEle.offsetWidth;\n tooltipEleHeight = this.tooltipEle.offsetHeight;\n arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n tipWidth = arrowEle ? arrowEle.offsetWidth : 0;\n tipHeight = arrowEle ? arrowEle.offsetHeight : 0;\n tipAdjust = (this.showTipPointer ? SHOW_POINTER_TIP_GAP : HIDE_POINTER_TIP_GAP);\n tipHeightAdjust = (tipHeight / 2) + POINTER_ADJUST + (this.tooltipEle.offsetHeight - this.tooltipEle.clientHeight);\n tipWidthAdjust = (tipWidth / 2) + POINTER_ADJUST + (this.tooltipEle.offsetWidth - this.tooltipEle.clientWidth);\n }\n if (this.mouseTrail) {\n tipAdjust += MOUSE_TRAIL_GAP;\n }\n switch (position) {\n case 'RightTop':\n pos.left += tipWidth + tipAdjust;\n pos.top -= tooltipEleHeight - tipHeightAdjust;\n break;\n case 'RightCenter':\n pos.left += tipWidth + tipAdjust;\n pos.top -= (tooltipEleHeight / 2);\n break;\n case 'RightBottom':\n pos.left += tipWidth + tipAdjust;\n pos.top -= (tipHeightAdjust);\n break;\n case 'BottomRight':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tipWidthAdjust);\n break;\n case 'BottomCenter':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth / 2);\n break;\n case 'BottomLeft':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth - tipWidthAdjust);\n break;\n case 'LeftBottom':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tipHeightAdjust);\n break;\n case 'LeftCenter':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tooltipEleHeight / 2);\n break;\n case 'LeftTop':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tooltipEleHeight - tipHeightAdjust);\n break;\n case 'TopLeft':\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth - tipWidthAdjust);\n break;\n case 'TopRight':\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tipWidthAdjust);\n break;\n default:\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth / 2);\n break;\n }\n pos.left += this.offsetX;\n pos.top += this.offsetY;\n return pos;\n };\n Tooltip.prototype.updateTipPosition = function (position) {\n var selEle = selectAll('.' + ARROW_TIP + ',.' + ARROW_TIP_OUTER + ',.' + ARROW_TIP_INNER, this.tooltipEle);\n var removeList = [TIP_BOTTOM, TIP_TOP, TIP_LEFT, TIP_RIGHT];\n removeClass(selEle, removeList);\n this.setTipClass(position);\n addClass(selEle, this.tipClass);\n };\n Tooltip.prototype.adjustArrow = function (target, position, tooltipPositionX, tooltipPositionY) {\n var arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n if (this.showTipPointer === false || arrowEle === null) {\n return;\n }\n this.updateTipPosition(position);\n var leftValue;\n var topValue;\n this.tooltipEle.style.display = 'block';\n var tooltipWidth = this.tooltipEle.clientWidth;\n var tooltipHeight = this.tooltipEle.clientHeight;\n var arrowInnerELe = select('.' + ARROW_TIP_INNER, this.tooltipEle);\n var tipWidth = arrowEle.offsetWidth;\n var tipHeight = arrowEle.offsetHeight;\n this.tooltipEle.style.display = '';\n if (this.tipClass === TIP_BOTTOM || this.tipClass === TIP_TOP) {\n if (this.tipClass === TIP_BOTTOM) {\n topValue = '99.9%';\n // Arrow icon aligned -2px height from ArrowOuterTip div\n arrowInnerELe.style.top = '-' + (tipHeight - 2) + 'px';\n }\n else {\n topValue = -(tipHeight - 1) + 'px';\n // Arrow icon aligned -6px height from ArrowOuterTip div\n arrowInnerELe.style.top = '-' + (tipHeight - 6) + 'px';\n }\n if (target) {\n var tipPosExclude = tooltipPositionX !== 'Center' || (tooltipWidth > target.offsetWidth) || this.mouseTrail;\n if ((tipPosExclude && tooltipPositionX === 'Left') || (!tipPosExclude && this.tipPointerPosition === 'End')) {\n leftValue = (tooltipWidth - tipWidth - POINTER_ADJUST) + 'px';\n }\n else if ((tipPosExclude && tooltipPositionX === 'Right') || (!tipPosExclude && this.tipPointerPosition === 'Start')) {\n leftValue = POINTER_ADJUST + 'px';\n }\n else if ((tipPosExclude) && (this.tipPointerPosition === 'End' || this.tipPointerPosition === 'Start')) {\n leftValue = (this.tipPointerPosition === 'End') ? ((target.offsetWidth + ((this.tooltipEle.offsetWidth - target.offsetWidth) / 2)) - (tipWidth / 2)) - POINTER_ADJUST + 'px'\n : ((this.tooltipEle.offsetWidth - target.offsetWidth) / 2) - (tipWidth / 2) + POINTER_ADJUST + 'px';\n }\n else {\n leftValue = ((tooltipWidth / 2) - (tipWidth / 2)) + 'px';\n }\n }\n }\n else {\n if (this.tipClass === TIP_RIGHT) {\n leftValue = '99.9%';\n // Arrow icon aligned -2px left from ArrowOuterTip div\n arrowInnerELe.style.left = '-' + (tipWidth - 2) + 'px';\n }\n else {\n leftValue = -(tipWidth - 1) + 'px';\n // Arrow icon aligned -2px from ArrowOuterTip width\n arrowInnerELe.style.left = (-(tipWidth) + (tipWidth - 2)) + 'px';\n }\n var tipPosExclude = tooltipPositionY !== 'Center' || (tooltipHeight > target.offsetHeight) || this.mouseTrail;\n if ((tipPosExclude && tooltipPositionY === 'Top') || (!tipPosExclude && this.tipPointerPosition === 'End')) {\n topValue = (tooltipHeight - tipHeight - POINTER_ADJUST) + 'px';\n }\n else if ((tipPosExclude && tooltipPositionY === 'Bottom') || (!tipPosExclude && this.tipPointerPosition === 'Start')) {\n topValue = POINTER_ADJUST + 'px';\n }\n else {\n topValue = ((tooltipHeight / 2) - (tipHeight / 2)) + 'px';\n }\n }\n arrowEle.style.top = topValue;\n arrowEle.style.left = leftValue;\n };\n Tooltip.prototype.renderContent = function (target) {\n var _this = this;\n var tooltipContent = select('.' + CONTENT, this.tooltipEle);\n if (this.cssClass) {\n addClass([this.tooltipEle], this.cssClass.split(' '));\n }\n if (target && !isNullOrUndefined(target.getAttribute('title'))) {\n target.setAttribute('data-content', target.getAttribute('title'));\n target.removeAttribute('title');\n }\n if (!isNullOrUndefined(this.content)) {\n tooltipContent.innerHTML = '';\n if (this.content instanceof HTMLElement) {\n tooltipContent.appendChild(this.content);\n }\n else if (typeof this.content === 'string') {\n if (this.isAngular) {\n this.setProperties({ content: SanitizeHtmlHelper.sanitize(this.content) }, true);\n }\n else {\n this.content = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(this.content) : this.content;\n }\n if (this.enableHtmlParse) {\n var tempFunction = compile(this.content);\n var tempArr = tempFunction({}, this, 'content', this.element.id + 'content', undefined, undefined, tooltipContent, this.root);\n if (tempArr) {\n append(tempArr, tooltipContent);\n }\n }\n else {\n tooltipContent['textContent'] = this.content;\n }\n }\n else {\n var templateFunction = compile(this.content);\n var tempArr = templateFunction({}, this, 'content', this.element.id + 'content', undefined, undefined, tooltipContent);\n if (tempArr) {\n if (this.isAngular) {\n setTimeout(function () {\n _this.reposition(target);\n }, 1);\n }\n append(tempArr, tooltipContent);\n }\n this.renderReactTemplates();\n }\n }\n else {\n if (target && !isNullOrUndefined(target.getAttribute('data-content'))) {\n tooltipContent.innerHTML = target.getAttribute('data-content');\n }\n }\n };\n Tooltip.prototype.renderCloseIcon = function () {\n if (!this.isSticky) {\n var existingCloseIcon = this.tooltipEle.querySelector('.' + ICON + '.' + CLOSE);\n if (existingCloseIcon) {\n remove(existingCloseIcon);\n }\n return;\n }\n var tipClose = this.createElement('div', { className: ICON + ' ' + CLOSE });\n this.tooltipEle.appendChild(tipClose);\n EventHandler.add(tipClose, Browser.touchStartEvent, this.onStickyClose, this);\n };\n Tooltip.prototype.addDescribedBy = function (target, id) {\n var describedby = (target.getAttribute('aria-describedby') || '').split(/\\s+/);\n if (describedby.indexOf(id) < 0) {\n describedby.push(id);\n }\n attributes(target, { 'aria-describedby': describedby.join(' ').trim(), 'data-tooltip-id': id });\n };\n Tooltip.prototype.removeDescribedBy = function (target) {\n var id = target.getAttribute('data-tooltip-id');\n var describedby = (target.getAttribute('aria-describedby') || '').split(/\\s+/);\n var index = describedby.indexOf(id);\n if (index !== -1) {\n describedby.splice(index, 1);\n }\n target.removeAttribute('data-tooltip-id');\n var orgdescribedby = describedby.join(' ').trim();\n if (orgdescribedby) {\n target.setAttribute('aria-describedby', orgdescribedby);\n }\n else {\n target.removeAttribute('aria-describedby');\n }\n };\n Tooltip.prototype.tapHoldHandler = function (evt) {\n clearTimeout(this.autoCloseTimer);\n this.targetHover(evt.originalEvent);\n };\n Tooltip.prototype.touchEndHandler = function () {\n var _this = this;\n if (this.isSticky) {\n return;\n }\n var close = function () {\n _this.close();\n };\n this.autoCloseTimer = setTimeout(close, TOUCHEND_HIDE_DELAY);\n };\n Tooltip.prototype.targetClick = function (e) {\n var target;\n if (this.target) {\n target = closest(e.target, this.target);\n }\n else {\n target = this.element;\n }\n if (isNullOrUndefined(target)) {\n return;\n }\n if (target.getAttribute('data-tooltip-id') === null) {\n this.targetHover(e);\n }\n else if (!this.isSticky) {\n this.hideTooltip(this.animation.close, e, target);\n }\n };\n Tooltip.prototype.targetHover = function (e) {\n var target;\n if (this.target) {\n target = closest(e.target, this.target);\n }\n else {\n target = this.element;\n }\n if (isNullOrUndefined(target) || (target.getAttribute('data-tooltip-id') !== null && this.closeDelay === 0)) {\n return;\n }\n var targetList = [].slice.call(selectAll('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document));\n for (var _i = 0, targetList_1 = targetList; _i < targetList_1.length; _i++) {\n var target_1 = targetList_1[_i];\n this.restoreElement(target_1);\n }\n this.showTooltip(target, this.animation.open, e);\n };\n Tooltip.prototype.mouseMoveBeforeOpen = function (e) {\n this.mouseMoveEvent = e;\n };\n Tooltip.prototype.mouseMoveBeforeRemove = function () {\n if (this.mouseMoveTarget) {\n EventHandler.remove(this.mouseMoveTarget, 'mousemove touchstart', this.mouseMoveBeforeOpen);\n }\n };\n Tooltip.prototype.showTooltip = function (target, showAnimation, e) {\n var _this = this;\n clearTimeout(this.showTimer);\n clearTimeout(this.hideTimer);\n if (this.openDelay && this.mouseTrail) {\n this.mouseMoveBeforeRemove();\n this.mouseMoveTarget = target;\n EventHandler.add(this.mouseMoveTarget, 'mousemove touchstart', this.mouseMoveBeforeOpen, this);\n }\n this.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: this.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n var observeCallback = function (beforeRenderArgs) {\n _this.beforeRenderCallback(beforeRenderArgs, target, e, showAnimation);\n };\n this.trigger('beforeRender', this.tooltipEventArgs, observeCallback.bind(this));\n };\n Tooltip.prototype.beforeRenderCallback = function (beforeRenderArgs, target, e, showAnimation) {\n if (beforeRenderArgs.cancel) {\n this.isHidden = true;\n this.clear();\n this.mouseMoveBeforeRemove();\n }\n else {\n this.isHidden = false;\n if (isNullOrUndefined(this.tooltipEle)) {\n this.ctrlId = this.element.getAttribute('id') ?\n getUniqueID(this.element.getAttribute('id')) : getUniqueID('tooltip');\n this.tooltipEle = this.createElement('div', {\n className: TOOLTIP_WRAP + ' ' + POPUP_ROOT + ' ' + POPUP_LIB, attrs: {\n role: 'tooltip', 'aria-hidden': 'false', 'id': this.ctrlId + '_content'\n }, styles: 'width:' +\n formatUnit(this.width) + ';height:' + formatUnit(this.height) + ';position:absolute;'\n });\n this.tooltipBeforeRender(target, this);\n this.tooltipAfterRender(target, e, showAnimation, this);\n }\n else {\n if (target) {\n this.adjustArrow(target, this.position, this.tooltipPositionX, this.tooltipPositionY);\n this.addDescribedBy(target, this.ctrlId + '_content');\n this.renderContent(target);\n PopupAnimation.stop(this.tooltipEle);\n this.reposition(target);\n this.tooltipAfterRender(target, e, showAnimation, this);\n }\n }\n }\n };\n Tooltip.prototype.appendContainer = function (ctrlObj) {\n if (typeof this.container == 'string') {\n if (this.container === 'body') {\n this.containerElement = document.body;\n }\n else {\n this.isBodyContainer = false;\n this.containerElement = select(this.container, document);\n }\n }\n else if (this.container instanceof HTMLElement) {\n this.containerElement = this.container;\n this.isBodyContainer = this.containerElement.tagName === 'BODY';\n }\n if (!this.isBodyContainer) {\n addClass([this.containerElement], POPUP_CONTAINER);\n }\n this.containerElement.appendChild(ctrlObj.tooltipEle);\n };\n Tooltip.prototype.tooltipBeforeRender = function (target, ctrlObj) {\n if (target) {\n if (Browser.isDevice) {\n addClass([ctrlObj.tooltipEle], DEVICE);\n }\n if (ctrlObj.width !== 'auto') {\n ctrlObj.tooltipEle.style.maxWidth = formatUnit(ctrlObj.width);\n }\n ctrlObj.tooltipEle.appendChild(ctrlObj.createElement('div', { className: CONTENT }));\n this.appendContainer(ctrlObj);\n removeClass([ctrlObj.tooltipEle], HIDE_POPUP);\n ctrlObj.addDescribedBy(target, ctrlObj.ctrlId + '_content');\n ctrlObj.renderContent(target);\n addClass([ctrlObj.tooltipEle], POPUP_OPEN);\n if (ctrlObj.showTipPointer) {\n ctrlObj.renderArrow();\n }\n ctrlObj.renderCloseIcon();\n ctrlObj.renderPopup(target);\n ctrlObj.adjustArrow(target, ctrlObj.position, ctrlObj.tooltipPositionX, ctrlObj.tooltipPositionY);\n PopupAnimation.stop(ctrlObj.tooltipEle);\n ctrlObj.reposition(target);\n }\n };\n Tooltip.prototype.tooltipAfterRender = function (target, e, showAnimation, ctrlObj) {\n if (target) {\n removeClass([ctrlObj.tooltipEle], POPUP_OPEN);\n addClass([ctrlObj.tooltipEle], POPUP_CLOSE);\n ctrlObj.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: ctrlObj.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n if (ctrlObj.needTemplateReposition() && !ctrlObj.mouseTrail && (showAnimation.effect === 'None' || showAnimation.effect == 'FadeIn' ||\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (this.isReact && typeof ctrlObj.content != 'string'))) {\n ctrlObj.tooltipEle.style.display = 'none';\n }\n var observeCallback = function (observedArgs) {\n ctrlObj.beforeOpenCallback(observedArgs, target, showAnimation, e);\n };\n ctrlObj.trigger('beforeOpen', ctrlObj.tooltipEventArgs, observeCallback.bind(ctrlObj));\n }\n };\n Tooltip.prototype.beforeOpenCallback = function (observedArgs, target, showAnimation, e) {\n var _this = this;\n if (observedArgs.cancel) {\n this.isHidden = true;\n this.clear();\n this.mouseMoveBeforeRemove();\n this.restoreElement(target);\n }\n else {\n var openAnimation_1 = {\n name: (showAnimation.effect === 'None' && animationMode === 'Enable') ? 'FadeIn' : this.animation.open.effect,\n duration: showAnimation.duration,\n delay: showAnimation.delay,\n timingFunction: 'easeOut'\n };\n if (showAnimation.effect === 'None') {\n openAnimation_1 = undefined;\n }\n if (this.openDelay > 0) {\n var show = function () {\n if (_this.mouseTrail) {\n EventHandler.add(target, 'mousemove touchstart mouseenter', _this.onMouseMove, _this);\n }\n if (_this.popupObj) {\n _this.popupObj.show(openAnimation_1, target);\n if (_this.mouseMoveEvent && _this.mouseTrail) {\n _this.onMouseMove(_this.mouseMoveEvent);\n }\n }\n };\n this.showTimer = setTimeout(show, this.openDelay);\n }\n else {\n if (this.popupObj) {\n this.popupObj.show(openAnimation_1, target);\n }\n }\n }\n if (e) {\n this.wireMouseEvents(e, target);\n }\n };\n Tooltip.prototype.needTemplateReposition = function () {\n // eslint-disable-next-line\n var tooltip = this;\n return !isNullOrUndefined(tooltip.viewContainerRef)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n && typeof tooltip.viewContainerRef !== 'string' || this.isReact;\n };\n Tooltip.prototype.checkCollision = function (target, x, y) {\n var elePos = {\n left: x, top: y, position: this.position,\n horizontal: this.tooltipPositionX, vertical: this.tooltipPositionY\n };\n var affectedPos = isCollide(this.tooltipEle, this.checkCollideTarget(), x, y);\n if (affectedPos.length > 0) {\n elePos.horizontal = affectedPos.indexOf('left') >= 0 ? 'Right' : affectedPos.indexOf('right') >= 0 ? 'Left' :\n this.tooltipPositionX;\n elePos.vertical = affectedPos.indexOf('top') >= 0 ? 'Bottom' : affectedPos.indexOf('bottom') >= 0 ? 'Top' :\n this.tooltipPositionY;\n }\n return elePos;\n };\n Tooltip.prototype.calculateElementPosition = function (pos, offsetPos) {\n return [this.isBodyContainer ? pos.left + offsetPos.left :\n (pos.left - this.containerElement.getBoundingClientRect().left) + offsetPos.left + window.pageXOffset + this.containerElement.scrollLeft,\n this.isBodyContainer ? pos.top + offsetPos.top :\n (pos.top - this.containerElement.getBoundingClientRect().top) +\n offsetPos.top + window.pageYOffset + this.containerElement.scrollTop];\n };\n Tooltip.prototype.collisionFlipFit = function (target, x, y) {\n var elePos = this.checkCollision(target, x, y);\n var newpos = elePos.position;\n if (this.tooltipPositionY !== elePos.vertical) {\n newpos = ((this.position.indexOf('Bottom') === 0 || this.position.indexOf('Top') === 0) ?\n elePos.vertical + this.tooltipPositionX : this.tooltipPositionX + elePos.vertical);\n }\n if (this.tooltipPositionX !== elePos.horizontal) {\n if (newpos.indexOf('Left') === 0) {\n elePos.vertical = (newpos === 'LeftTop' || newpos === 'LeftCenter') ? 'Top' : 'Bottom';\n newpos = (elePos.vertical + 'Left');\n }\n if (newpos.indexOf('Right') === 0) {\n elePos.vertical = (newpos === 'RightTop' || newpos === 'RightCenter') ? 'Top' : 'Bottom';\n newpos = (elePos.vertical + 'Right');\n }\n elePos.horizontal = this.tooltipPositionX;\n }\n this.tooltipEventArgs = {\n type: null, cancel: false, target: target, event: null,\n element: this.tooltipEle, collidedPosition: newpos\n };\n this.trigger('beforeCollision', this.tooltipEventArgs);\n if (this.tooltipEventArgs.cancel) {\n newpos = this.position;\n }\n else {\n var elePosVertical = elePos.vertical;\n var elePosHorizontal = elePos.horizontal;\n if (elePos.position !== newpos) {\n var pos = calculatePosition(target, elePosHorizontal, elePosVertical, !this.isBodyContainer, this.isBodyContainer ? null : this.containerElement.getBoundingClientRect());\n this.adjustArrow(target, newpos, elePosHorizontal, elePosVertical);\n var scalingFactors = this.getScalingFactor(target);\n var offsetPos = this.calculateTooltipOffset(newpos, scalingFactors.x, scalingFactors.y);\n offsetPos.top -= this.getOffSetPosition('TopBottom', newpos, this.offsetY);\n offsetPos.left -= this.getOffSetPosition('RightLeft', newpos, this.offsetX);\n elePos.position = newpos;\n var elePosition = this.calculateElementPosition(pos, offsetPos);\n elePos.left = elePosition[0];\n elePos.top = elePosition[1];\n }\n else {\n this.adjustArrow(target, newpos, elePosHorizontal, elePosVertical);\n }\n }\n var eleOffset = { left: elePos.left, top: elePos.top };\n var position = this.isBodyContainer ?\n fit(this.tooltipEle, this.checkCollideTarget(), { X: true, Y: this.windowCollision }, eleOffset) : eleOffset;\n this.tooltipEle.style.display = 'block';\n var arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n if (this.showTipPointer && arrowEle != null && (newpos.indexOf('Bottom') === 0 || newpos.indexOf('Top') === 0)) {\n var arrowleft = parseInt(arrowEle.style.left, 10) - (position.left - elePos.left);\n if (arrowleft < 0) {\n arrowleft = 0;\n }\n else if ((arrowleft + arrowEle.offsetWidth) > this.tooltipEle.clientWidth) {\n arrowleft = this.tooltipEle.clientWidth - arrowEle.offsetWidth;\n }\n arrowEle.style.left = arrowleft.toString() + 'px';\n }\n this.tooltipEle.style.display = '';\n eleOffset.left = position.left;\n eleOffset.top = position.top;\n return eleOffset;\n };\n Tooltip.prototype.getOffSetPosition = function (positionString, newPos, offsetType) {\n return ((positionString.indexOf(this.position.split(/(?=[A-Z])/)[0]) !== -1) &&\n (positionString.indexOf(newPos.split(/(?=[A-Z])/)[0]) !== -1)) ? (2 * offsetType) : 0;\n };\n Tooltip.prototype.checkCollideTarget = function () {\n return !this.windowCollision && this.target ? this.element : null;\n };\n Tooltip.prototype.hideTooltip = function (hideAnimation, e, targetElement) {\n var _this = this;\n if (this.closeDelay > 0) {\n clearTimeout(this.hideTimer);\n clearTimeout(this.showTimer);\n var hide = function () {\n if (_this.closeDelay && _this.tooltipEle && _this.isTooltipOpen) {\n return;\n }\n _this.tooltipHide(hideAnimation, e, targetElement);\n };\n this.hideTimer = setTimeout(hide, this.closeDelay);\n }\n else {\n this.tooltipHide(hideAnimation, e, targetElement);\n }\n };\n Tooltip.prototype.tooltipHide = function (hideAnimation, e, targetElement) {\n var _this = this;\n var target;\n if (e) {\n target = this.target ? (targetElement || e.target) : this.element;\n }\n else {\n target = select('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document);\n }\n this.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: this.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n // this line commented for close the tooltip popup element even the target element destroyed in a page.\n //if (isNullOrUndefined(target)) { return; }\n this.trigger('beforeClose', this.tooltipEventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.mouseMoveBeforeRemove();\n _this.popupHide(hideAnimation, target, e);\n }\n else {\n _this.isHidden = false;\n }\n });\n };\n Tooltip.prototype.popupHide = function (hideAnimation, target, e) {\n if (target && e) {\n this.restoreElement(target);\n }\n this.isHidden = true;\n var closeAnimation = {\n name: (hideAnimation.effect === 'None' && animationMode === 'Enable') ? 'FadeOut' : this.animation.close.effect,\n duration: hideAnimation.duration,\n delay: hideAnimation.delay,\n timingFunction: 'easeIn'\n };\n if (hideAnimation.effect === 'None') {\n closeAnimation = undefined;\n }\n if (this.popupObj) {\n this.popupObj.hide(closeAnimation);\n }\n };\n Tooltip.prototype.restoreElement = function (target) {\n this.unwireMouseEvents(target);\n if (!isNullOrUndefined(target.getAttribute('data-content'))) {\n target.setAttribute('title', target.getAttribute('data-content'));\n target.removeAttribute('data-content');\n }\n this.removeDescribedBy(target);\n };\n Tooltip.prototype.clear = function () {\n var target = this.findTarget();\n if (target) {\n this.restoreElement(target);\n }\n if (this.tooltipEle) {\n removeClass([this.tooltipEle], POPUP_CLOSE);\n addClass([this.tooltipEle], POPUP_OPEN);\n }\n if (this.isHidden) {\n if (this.popupObj) {\n this.popupObj.destroy();\n }\n if (this.tooltipEle) {\n remove(this.tooltipEle);\n }\n this.tooltipEle = null;\n this.popupObj = null;\n }\n };\n Tooltip.prototype.tooltipHover = function () {\n if (this.tooltipEle) {\n this.isTooltipOpen = true;\n }\n };\n Tooltip.prototype.tooltipMouseOut = function (e) {\n this.isTooltipOpen = false;\n this.hideTooltip(this.animation.close, e, this.findTarget());\n };\n Tooltip.prototype.onMouseOut = function (e) {\n var enteredElement = e.relatedTarget;\n // don't close the tooltip only if it is tooltip content element\n if (enteredElement && !this.mouseTrail) {\n var checkForTooltipElement = closest(enteredElement, \".\" + TOOLTIP_WRAP + \".\" + POPUP_LIB + \".\" + POPUP_ROOT);\n if (checkForTooltipElement) {\n EventHandler.add(checkForTooltipElement, 'mouseleave', this.tooltipElementMouseOut, this);\n }\n else {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n if (this.closeDelay === 0 && (this.animation.close.effect === 'None' || (this.isReact && typeof this.content != 'string'))) {\n this.clear();\n }\n }\n }\n else {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n this.clear();\n }\n if (this.popupObj && !this.popupObj.element.classList.contains(POPUP_OPEN)) {\n this.clear();\n }\n };\n Tooltip.prototype.tooltipElementMouseOut = function (e) {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n EventHandler.remove(this.element, 'mouseleave', this.tooltipElementMouseOut);\n this.clear();\n };\n Tooltip.prototype.onStickyClose = function () {\n this.close();\n };\n Tooltip.prototype.onMouseMove = function (event) {\n var eventPageX = 0;\n var eventPageY = 0;\n if (event.type.indexOf('touch') > -1) {\n event.preventDefault();\n eventPageX = event.touches[0].pageX;\n eventPageY = event.touches[0].pageY;\n }\n else {\n eventPageX = event.pageX;\n eventPageY = event.pageY;\n }\n PopupAnimation.stop(this.tooltipEle);\n removeClass([this.tooltipEle], POPUP_CLOSE);\n addClass([this.tooltipEle], POPUP_OPEN);\n this.adjustArrow(event.target, this.position, this.tooltipPositionX, this.tooltipPositionY);\n var scalingFactors = this.getScalingFactor(event.target);\n var pos = this.calculateTooltipOffset(this.position, scalingFactors.x, scalingFactors.y);\n var x = eventPageX + pos.left + this.offsetX;\n var y = eventPageY + pos.top + this.offsetY;\n var elePos = this.checkCollision(event.target, x, y);\n if (this.tooltipPositionX !== elePos.horizontal || this.tooltipPositionY !== elePos.vertical) {\n var newpos = (this.position.indexOf('Bottom') === 0 || this.position.indexOf('Top') === 0) ?\n elePos.vertical + elePos.horizontal : elePos.horizontal + elePos.vertical;\n elePos.position = newpos;\n this.adjustArrow(event.target, elePos.position, elePos.horizontal, elePos.vertical);\n var colpos = this.calculateTooltipOffset(elePos.position, scalingFactors.x, scalingFactors.y);\n elePos.left = eventPageX + colpos.left - this.offsetX;\n elePos.top = eventPageY + colpos.top - this.offsetY;\n }\n this.tooltipEle.style.left = elePos.left + 'px';\n this.tooltipEle.style.top = elePos.top + 'px';\n };\n Tooltip.prototype.keyDown = function (event) {\n if (this.tooltipEle && event.keyCode === 27) {\n this.close();\n }\n };\n Tooltip.prototype.touchEnd = function (e) {\n if (this.tooltipEle && closest(e.target, '.' + ROOT) === null && !this.isSticky) {\n this.close();\n }\n };\n Tooltip.prototype.scrollHandler = function (e) {\n if (this.tooltipEle && !this.isSticky) {\n if (!(closest(e.target, \".\" + TOOLTIP_WRAP + \".\" + POPUP_LIB + \".\" + POPUP_ROOT))\n && !this.isSticky) {\n this.close();\n }\n }\n };\n /**\n * Core method that initializes the control rendering.\n *\n * @private\n * @returns {void}\n */\n Tooltip.prototype.render = function () {\n this.initialize();\n this.wireEvents(this.opensOn);\n this.renderComplete();\n };\n /**\n * Initializes the values of private members.\n *\n * @private\n * @returns {void}\n */\n Tooltip.prototype.preRender = function () {\n this.tipClass = TIP_BOTTOM;\n this.tooltipPositionX = 'Center';\n this.tooltipPositionY = 'Top';\n this.isHidden = true;\n };\n /**\n * Binding events to the Tooltip element.\n *\n * @hidden\n * @param {string} trigger - specify the trigger string to the function\n * @returns {void}\n *\n */\n Tooltip.prototype.wireEvents = function (trigger) {\n var triggerList = this.getTriggerList(trigger);\n for (var _i = 0, triggerList_1 = triggerList; _i < triggerList_1.length; _i++) {\n var opensOn = triggerList_1[_i];\n if (opensOn === 'Custom') {\n return;\n }\n if (opensOn === 'Focus') {\n this.wireFocusEvents();\n }\n if (opensOn === 'Click') {\n EventHandler.add(this.element, Browser.touchStartEvent, this.targetClick, this);\n }\n if (opensOn === 'Hover') {\n if (Browser.isDevice) {\n this.touchModule = new Touch(this.element, {\n tapHoldThreshold: TAPHOLD_THRESHOLD,\n tapHold: this.tapHoldHandler.bind(this)\n });\n EventHandler.add(this.element, Browser.touchEndEvent, this.touchEndHandler, this);\n }\n else {\n EventHandler.add(this.element, 'mouseover', this.targetHover, this);\n }\n }\n }\n this.windowResizeBound = this.windowResize.bind(this);\n this.keyDownBound = this.keyDown.bind(this);\n this.touchEndBound = this.touchEnd.bind(this);\n this.scrollWheelBound = this.scrollHandler.bind(this);\n document.addEventListener('wheel', this.scrollWheelBound);\n document.addEventListener('scroll', this.scrollWheelBound);\n document.addEventListener('touchend', this.touchEndBound);\n document.addEventListener('keydown', this.keyDownBound);\n window.addEventListener('resize', this.windowResizeBound);\n };\n Tooltip.prototype.getTriggerList = function (trigger) {\n if (!trigger)\n return [];\n if (trigger === 'Auto') {\n trigger = (Browser.isDevice) ? 'Hover' : 'Hover Focus';\n }\n return trigger.split(' ');\n };\n Tooltip.prototype.wireFocusEvents = function () {\n if (!isNullOrUndefined(this.target)) {\n var targetList = [].slice.call(selectAll(this.target, this.element));\n this.targetsList = targetList;\n if (!isNullOrUndefined(this.targetsList) && this.targetsList.length > 0) {\n for (var _i = 0, targetList_2 = targetList; _i < targetList_2.length; _i++) {\n var target = targetList_2[_i];\n EventHandler.add(target, 'focus', this.targetHover, this);\n }\n }\n else {\n EventHandler.add(this.element, 'focusin', this.targetHover, this);\n }\n }\n else {\n EventHandler.add(this.element, 'focusin', this.targetHover, this);\n }\n };\n Tooltip.prototype.wireMouseEvents = function (e, target) {\n if (this.tooltipEle) {\n if (!this.isSticky) {\n if (e.type === 'focus') {\n EventHandler.add(target, 'blur', this.onMouseOut, this);\n }\n if (e.type === 'focusin') {\n EventHandler.add(target, 'focusout', this.onMouseOut, this);\n }\n if (e.type === 'mouseover') {\n EventHandler.add(target, 'mouseleave', this.onMouseOut, this);\n }\n if (this.closeDelay) {\n EventHandler.add(this.tooltipEle, 'mouseenter', this.tooltipHover, this);\n EventHandler.add(this.tooltipEle, 'mouseleave', this.tooltipMouseOut, this);\n }\n }\n if (this.mouseTrail && this.openDelay === 0) {\n EventHandler.add(target, 'mousemove touchstart mouseenter', this.onMouseMove, this);\n }\n }\n };\n /**\n * Unbinding events from the element on widget destroy.\n *\n * @hidden\n *\n * @param {string} trigger - specify the trigger string to the function\n * @returns {void}\n *\n */\n Tooltip.prototype.unwireEvents = function (trigger) {\n var triggerList = this.getTriggerList(trigger);\n for (var _i = 0, triggerList_2 = triggerList; _i < triggerList_2.length; _i++) {\n var opensOn = triggerList_2[_i];\n if (opensOn === 'Custom') {\n return;\n }\n if (opensOn === 'Focus') {\n this.unwireFocusEvents();\n }\n if (opensOn === 'Click') {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.targetClick);\n }\n if (opensOn === 'Hover') {\n if (Browser.isDevice) {\n if (this.touchModule) {\n this.touchModule.destroy();\n }\n EventHandler.remove(this.element, Browser.touchEndEvent, this.touchEndHandler);\n }\n else {\n EventHandler.remove(this.element, 'mouseover', this.targetHover);\n }\n }\n }\n document.removeEventListener('touchend', this.touchEndBound);\n this.touchEndBound = null;\n document.removeEventListener('wheel', this.scrollWheelBound);\n document.removeEventListener('scroll', this.scrollWheelBound);\n this.scrollWheelBound = null;\n window.removeEventListener('resize', this.windowResizeBound);\n this.windowResizeBound = null;\n document.removeEventListener('keydown', this.keyDownBound);\n this.keyDownBound = null;\n };\n Tooltip.prototype.unwireFocusEvents = function () {\n if (!isNullOrUndefined(this.target)) {\n var targetList = [].slice.call(selectAll(this.target, this.element));\n if (!isNullOrUndefined(this.targetsList) && this.targetsList.length > 0) {\n for (var _i = 0, targetList_3 = targetList; _i < targetList_3.length; _i++) {\n var target = targetList_3[_i];\n EventHandler.remove(target, 'focus', this.targetHover);\n }\n }\n else {\n EventHandler.remove(this.element, 'focusin', this.targetHover);\n }\n }\n else {\n EventHandler.remove(this.element, 'focusin', this.targetHover);\n }\n };\n Tooltip.prototype.unwireMouseEvents = function (target) {\n if (!this.isSticky) {\n var triggerList = this.getTriggerList(this.opensOn);\n for (var _i = 0, triggerList_3 = triggerList; _i < triggerList_3.length; _i++) {\n var opensOn = triggerList_3[_i];\n if (opensOn === 'Focus') {\n EventHandler.remove(target, 'blur', this.onMouseOut);\n EventHandler.remove(target, 'focusout', this.onMouseOut);\n }\n if (opensOn === 'Hover' && !Browser.isDevice) {\n EventHandler.remove(target, 'mouseleave', this.onMouseOut);\n }\n }\n if (this.closeDelay) {\n EventHandler.remove(target, 'mouseenter', this.tooltipHover);\n EventHandler.remove(target, 'mouseleave', this.tooltipMouseOut);\n }\n }\n if (this.mouseTrail) {\n EventHandler.remove(target, 'mousemove touchstart mouseenter', this.onMouseMove);\n }\n };\n Tooltip.prototype.findTarget = function () {\n var target = select('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document);\n return target;\n };\n /**\n * Core method to return the component name.\n *\n * @private\n *\n * @returns {string} - this method returns module name.\n */\n Tooltip.prototype.getModuleName = function () {\n return 'tooltip';\n };\n /**\n * Returns the properties to be maintained in the persisted state.\n *\n * @private\n *\n * @returns {string} - this method returns persisted data.\n */\n Tooltip.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Called internally, if any of the property value changed.\n *\n * @private\n *\n * @param {TooltipModel} newProp - this param gives new property values to the method\n * @param {TooltipModel} oldProp - this param gives old property values to the method\n * @returns {void}\n *\n */\n Tooltip.prototype.onPropertyChanged = function (newProp, oldProp) {\n var targetElement = this.findTarget();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n if (this.tooltipEle && targetElement) {\n this.tooltipEle.style.width = this.tooltipEle.style.maxWidth = formatUnit(newProp.width);\n this.reposition(targetElement);\n }\n break;\n case 'height':\n if (this.tooltipEle && targetElement) {\n this.tooltipEle.style.height = formatUnit(newProp.height);\n this.reposition(targetElement);\n }\n break;\n case 'content':\n if (this.tooltipEle) {\n this.renderContent();\n }\n break;\n case 'opensOn':\n this.unwireEvents(oldProp.opensOn);\n this.wireEvents(newProp.opensOn);\n break;\n case 'position':\n this.formatPosition();\n if (this.tooltipEle && targetElement) {\n var arrowInnerELe = select('.' + ARROW_TIP_INNER, this.tooltipEle);\n if (arrowInnerELe) {\n arrowInnerELe.style.top = arrowInnerELe.style.left = null;\n }\n this.reposition(targetElement);\n }\n break;\n case 'tipPointerPosition':\n if (this.tooltipEle && targetElement) {\n this.reposition(targetElement);\n }\n break;\n case 'offsetX':\n if (this.tooltipEle) {\n var x = newProp.offsetX - oldProp.offsetX;\n this.tooltipEle.style.left = (parseInt(this.tooltipEle.style.left, 10) + (x)).toString() + 'px';\n }\n break;\n case 'offsetY':\n if (this.tooltipEle) {\n var y = newProp.offsetY - oldProp.offsetY;\n this.tooltipEle.style.top = (parseInt(this.tooltipEle.style.top, 10) + (y)).toString() + 'px';\n }\n break;\n case 'cssClass':\n if (this.tooltipEle) {\n if (oldProp.cssClass) {\n removeClass([this.tooltipEle], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.tooltipEle], newProp.cssClass.split(' '));\n }\n }\n break;\n case 'enableRtl':\n if (this.tooltipEle) {\n if (this.enableRtl) {\n addClass([this.tooltipEle], RTL);\n }\n else {\n removeClass([this.tooltipEle], RTL);\n }\n }\n break;\n case 'isSticky':\n if (this.tooltipEle && targetElement) {\n this.renderCloseIcon();\n this.reposition(targetElement);\n }\n break;\n case 'container':\n if (!isNullOrUndefined(this.containerElement)) {\n removeClass([this.containerElement], POPUP_CONTAINER);\n }\n this.container = newProp.container;\n if (this.tooltipEle && targetElement) {\n this.appendContainer(this);\n this.reposition(targetElement);\n }\n }\n }\n };\n /**\n * It is used to show the Tooltip on the specified target with specific animation settings.\n *\n * @param {HTMLElement} element - Target element where the Tooltip is to be displayed. (It is an optional parameter)\n * @param {TooltipAnimationSettings} animation - Sets the specific animation, while showing the Tooltip on the screen. (It is an optional parameter)\n * @returns {void}\n */\n Tooltip.prototype.open = function (element, animation) {\n if (isNullOrUndefined(animation)) {\n animation = this.animation.open;\n }\n if (isNullOrUndefined(element)) {\n element = this.element;\n }\n if (element.style.display === 'none') {\n return;\n }\n this.showTooltip(element, animation);\n };\n /**\n * It is used to hide the Tooltip with specific animation effect.\n *\n * @param {TooltipAnimationSettings} animation - Sets the specific animation when hiding Tooltip from the screen. (It is an optional parameter)\n * @returns {void}\n */\n Tooltip.prototype.close = function (animation) {\n if (!animation) {\n animation = this.animation.close;\n }\n this.hideTooltip(animation);\n };\n /**\n * It is used to refresh the Tooltip content and its position.\n *\n * @param {HTMLElement} target - Target element where the Tooltip content or position needs to be refreshed.\n * @returns {void}\n */\n Tooltip.prototype.refresh = function (target) {\n if (this.tooltipEle) {\n this.renderContent(target);\n }\n if (this.popupObj && target) {\n this.reposition(target);\n }\n if (!isNullOrUndefined(this.targetsList) && !isNullOrUndefined(this.target)) {\n var target_2 = selectAll(this.target, this.element);\n if (target_2.length !== this.targetsList.length) {\n this.unwireEvents(this.opensOn);\n this.wireEvents(this.opensOn);\n }\n }\n };\n /**\n *\n * It is used to destroy the Tooltip component.\n *\n * @method destroy\n * @returns {void}\n * @memberof Tooltip\n */\n Tooltip.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.tooltipEle) {\n remove(this.tooltipEle);\n }\n if (this.popupObj) {\n this.popupObj.destroy();\n }\n collisionDestroy();\n removeClass([this.element], ROOT);\n this.unwireEvents(this.opensOn);\n this.unwireMouseEvents(this.element);\n this.tooltipEle = null;\n this.popupObj = null;\n var currentTarget = selectAll('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', this.element);\n for (var _i = 0, currentTarget_1 = currentTarget; _i < currentTarget_1.length; _i++) {\n var target = currentTarget_1[_i];\n this.restoreElement(target);\n }\n this.containerElement = null;\n this.tipClass = null;\n this.tooltipPositionX = null;\n this.tooltipPositionY = null;\n this.ctrlId = null;\n this.tooltipEventArgs = null;\n this.touchModule = null;\n this.mouseMoveEvent = null;\n this.mouseMoveTarget = null;\n this.containerElement = null;\n this.targetsList = null;\n };\n __decorate([\n Property('auto')\n ], Tooltip.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Tooltip.prototype, \"height\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"content\", void 0);\n __decorate([\n Property('body')\n ], Tooltip.prototype, \"container\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"target\", void 0);\n __decorate([\n Property('TopCenter')\n ], Tooltip.prototype, \"position\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"offsetX\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"offsetY\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"showTipPointer\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"enableHtmlParse\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"windowCollision\", void 0);\n __decorate([\n Property('Auto')\n ], Tooltip.prototype, \"tipPointerPosition\", void 0);\n __decorate([\n Property('Auto')\n ], Tooltip.prototype, \"opensOn\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"mouseTrail\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isSticky\", void 0);\n __decorate([\n Complex({}, Animation)\n ], Tooltip.prototype, \"animation\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"openDelay\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"closeDelay\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"cssClass\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property('')\n ], Tooltip.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeRender\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"afterOpen\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"afterClose\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeCollision\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"destroyed\", void 0);\n Tooltip = __decorate([\n NotifyPropertyChanges\n ], Tooltip);\n return Tooltip;\n}(Component));\nexport { Tooltip };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Internationalization, setCulture } from '@syncfusion/ej2-base';\n/**\n * ValueFormatter class to globalize the value.\n *\n * @hidden\n */\nvar ValueFormatter = /** @class */ (function () {\n function ValueFormatter(cultureName) {\n this.intl = new Internationalization();\n if (!isNullOrUndefined(cultureName)) {\n this.intl.culture = cultureName;\n }\n }\n ValueFormatter.prototype.getFormatFunction = function (format) {\n if (!isNullOrUndefined(format) && (format.type === 'dateTime' || format.type === 'datetime' || format.type === 'date' || format.type === 'time')) {\n return this.intl.getDateFormat(format);\n }\n else {\n return this.intl.getNumberFormat(format);\n }\n };\n ValueFormatter.prototype.getParserFunction = function (format) {\n if (format.type) {\n return this.intl.getDateParser(format);\n }\n else {\n return this.intl.getNumberParser(format);\n }\n };\n ValueFormatter.prototype.fromView = function (value, format, type) {\n if ((type === 'date' || type === 'datetime' || type === 'number') && (!isNullOrUndefined(format))) {\n return format(value);\n }\n else {\n return value;\n }\n };\n ValueFormatter.prototype.toView = function (value, format) {\n var result = value;\n if (!isNullOrUndefined(format) && !isNullOrUndefined(value)) {\n result = format(value);\n }\n return result;\n };\n ValueFormatter.prototype.setCulture = function (cultureName) {\n if (!isNullOrUndefined(cultureName)) {\n setCulture(cultureName);\n }\n };\n return ValueFormatter;\n}());\nexport { ValueFormatter };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { merge, isNullOrUndefined, extend, Property } from '@syncfusion/ej2-base';\nimport { Query, DataUtil } from '@syncfusion/ej2-data';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { getUid, templateCompiler, getForeignData, getObject } from '../base/util';\n/**\n * Represents Grid `Column` model class.\n */\nvar Column = /** @class */ (function () {\n function Column(options, parent) {\n var _this = this;\n /**\n * If `disableHtmlEncode` is set to true, it encodes the HTML of the header and content cells.\n *\n * @default true\n */\n this.disableHtmlEncode = true;\n /**\n * If `allowSorting` set to false, then it disables sorting option of a particular column.\n * By default all columns are sortable.\n *\n * @default true\n */\n this.allowSorting = true;\n /**\n * If `allowResizing` is set to false, it disables resize option of a particular column.\n * By default all the columns can be resized.\n *\n * @default true\n */\n this.allowResizing = true;\n /**\n * If `allowFiltering` set to false, then it disables filtering option and filter bar element of a particular column.\n * By default all columns are filterable.\n *\n * @default true\n */\n this.allowFiltering = true;\n /**\n * If `allowGrouping` set to false, then it disables grouping of a particular column.\n * By default all columns are groupable.\n *\n * @default true\n */\n this.allowGrouping = true;\n /**\n * If `allowReordering` set to false, then it disables reorder of a particular column.\n * By default all columns can be reorder.\n *\n * @default true\n */\n this.allowReordering = true;\n /**\n * If `showColumnMenu` set to false, then it disable the column menu of a particular column.\n * By default column menu will show for all columns\n *\n * @default true\n */\n this.showColumnMenu = true;\n /**\n * If `enableGroupByFormat` set to true, then it groups the particular column by formatted values.\n *\n * @default true\n */\n this.enableGroupByFormat = false;\n /**\n * If `allowEditing` set to false, then it disables editing of a particular column.\n * By default all columns are editable.\n *\n * @default true\n */\n this.allowEditing = true;\n /**\n * It is used to customize the default filter options for a specific columns.\n * * type - Specifies the filter type as menu or checkbox.\n * * ui - to render custom component for specific column it has following functions.\n * * ui.create – It is used for creating custom components.\n * * ui.read - It is used for read the value from the component.\n * * ui.write - It is used to apply component model as dynamically.\n * {% codeBlock src=\"grid/filter-menu-api/index.ts\" %}{% endcodeBlock %}\n *\n * > Check the [`Filter UI`](../../grid/filtering/filter-menu/#custom-component-in-filter-menu) for its customization.\n *\n * @default {}\n */\n this.filter = {};\n /**\n * If `showInColumnChooser` set to false, then hide the particular column in column chooser.\n * By default all columns are displayed in column Chooser.\n *\n * @default true\n */\n this.showInColumnChooser = true;\n /**\n * Defines the `IEditCell` object to customize default edit cell.\n *\n * @default {}\n */\n this.edit = {};\n /**\n * If `allowSearching` set to false, then it disables Searching of a particular column.\n * By default all columns allow Searching.\n *\n * @default true\n */\n this.allowSearching = true;\n /**\n * If `autoFit` set to true, then the particular column content width will be\n * adjusted based on its content in the initial rendering itself.\n * Setting this property as true is equivalent to calling `autoFitColumns` method in the `dataBound` event.\n *\n * @default false\n */\n this.autoFit = false;\n this.sortDirection = 'Descending';\n /**\n * @returns {Function} returns the edit template\n * @hidden */\n this.getEditTemplate = function () { return _this.editTemplateFn; };\n /**\n * @returns {Function} returns the filter template\n * @hidden */\n this.getFilterTemplate = function () { return _this.filterTemplateFn; };\n merge(this, options);\n this.parent = parent;\n if (this.type === 'none') {\n this.type = null;\n }\n else if (this.type) {\n this.type = typeof (this.type) === 'string' ? this.type.toLowerCase() : undefined;\n }\n if (this.editType) {\n this.editType = this.editType.toLowerCase();\n }\n if (isNullOrUndefined(this.uid)) {\n this.uid = getUid('grid-column');\n }\n var valueFormatter = new ValueFormatter();\n if (options.format && (options.format.skeleton || (options.format.format &&\n typeof options.format.format === 'string'))) {\n this.setFormatter(valueFormatter.getFormatFunction(extend({}, options.format)));\n this.setParser(valueFormatter.getParserFunction(options.format));\n }\n this.toJSON = function () {\n var col = {};\n var skip = ['filter', 'dataSource', 'headerText', 'template', 'headerTemplate', 'edit',\n 'editTemplate', 'filterTemplate', 'commandsTemplate', 'parent'];\n var keys = Object.keys(_this);\n for (var i = 0; i < keys.length; i++) {\n if (keys[parseInt(i.toString(), 10)] === 'columns') {\n col[keys[parseInt(i.toString(), 10)]] = [];\n for (var j = 0; j < _this[keys[parseInt(i.toString(), 10)]].length; j++) {\n col[keys[parseInt(i.toString(), 10)]].push(_this[keys[parseInt(i.toString(), 10)]][parseInt(j.toString(), 10)].toJSON());\n }\n }\n else if (skip.indexOf(keys[parseInt(i.toString(), 10)]) < 0) {\n col[keys[parseInt(i.toString(), 10)]] = _this[keys[parseInt(i.toString(), 10)]];\n }\n }\n return col;\n };\n if (!this.field) {\n this.allowFiltering = false;\n this.allowGrouping = false;\n this.allowSorting = false;\n if (this.columns) {\n this.allowResizing = this.columns.some(function (col) {\n return col.allowResizing;\n });\n }\n }\n if (this.commands && !this.textAlign) {\n this.textAlign = 'Right';\n }\n if (this.template || this.commandsTemplate) {\n this.templateFn = templateCompiler(this.template || this.commandsTemplate);\n }\n if (this.headerTemplate) {\n this.headerTemplateFn = templateCompiler(this.headerTemplate);\n }\n if (!isNullOrUndefined(this.filter) && this.filter.itemTemplate) {\n this.fltrTemplateFn = templateCompiler(this.filter.itemTemplate);\n }\n if (this.editTemplate) {\n this.editTemplateFn = templateCompiler(this.editTemplate);\n }\n if (this.filterTemplate) {\n this.filterTemplateFn = templateCompiler(this.filterTemplate);\n }\n if (this.isForeignColumn() &&\n (isNullOrUndefined(this.editType) || this.editType === 'dropdownedit' || this.editType === 'defaultedit')) {\n this.editType = 'dropdownedit';\n if (this.edit.params && this.edit.params.dataSource) {\n this.edit.params.ddEditedData = true;\n }\n this.edit.params = extend({\n dataSource: this.dataSource,\n query: new Query(), fields: { value: this.foreignKeyField || this.field, text: this.foreignKeyValue }\n }, this.edit.params);\n }\n if (this.sortComparer) {\n var a_1 = this.sortComparer;\n this.sortComparer = function (x, y, xObj, yObj) {\n if (typeof a_1 === 'string') {\n a_1 = getObject(a_1, window);\n }\n if (_this.sortDirection === 'Descending') {\n var z = x;\n x = y;\n y = z;\n var obj = xObj;\n xObj = yObj;\n yObj = obj;\n }\n return a_1(x, y, xObj, yObj);\n };\n }\n if (!this.sortComparer && this.isForeignColumn()) {\n this.sortComparer = function (x, y) {\n x = getObject(_this.foreignKeyValue, getForeignData(_this, {}, x)[0]);\n y = getObject(_this.foreignKeyValue, getForeignData(_this, {}, y)[0]);\n return _this.sortDirection === 'Descending' ? DataUtil.fnDescending(x, y) : DataUtil.fnAscending(x, y);\n };\n }\n }\n /**\n * @returns {string} returns the sort direction\n * @hidden */\n Column.prototype.getSortDirection = function () {\n return this.sortDirection;\n };\n /**\n * @param {string} direction - specifies the direction\n * @returns {void}\n * @hidden\n */\n Column.prototype.setSortDirection = function (direction) {\n this.sortDirection = direction;\n };\n /**\n * @returns {freezeTable} returns the FreezeTable\n * @hidden */\n Column.prototype.getFreezeTableName = function () {\n return this.freezeTable;\n };\n /**\n * @param {Column} column - specifies the column\n * @returns {void}\n * @hidden\n */\n Column.prototype.setProperties = function (column) {\n //Angular two way binding\n var keys = Object.keys(column);\n var _loop_1 = function (i) {\n if (keys[parseInt(i.toString(), 10)] === 'columns') {\n var cols_1 = column[keys[parseInt(i.toString(), 10)]];\n var _loop_2 = function (j) {\n this_1.columns.find(function (col) {\n return col.field === cols_1[parseInt(j.toString(), 10)]\n .field;\n }).setProperties(cols_1[parseInt(j.toString(), 10)]);\n };\n for (var j = 0; j < cols_1.length; j++) {\n _loop_2(j);\n }\n }\n else {\n this_1[keys[parseInt(i.toString(), 10)]] = column[keys[parseInt(i.toString(), 10)]];\n }\n //Refresh the react columnTemplates on state change\n if (this_1.parent && this_1.parent.isReact) {\n if (keys[parseInt(i.toString(), 10)] === 'template') {\n this_1.templateFn = templateCompiler(column[keys[parseInt(i.toString(), 10)]]);\n this_1.parent.refreshReactColumnTemplateByUid(this_1.uid, true);\n }\n else if (keys[parseInt(i.toString(), 10)] === 'headerTemplate') {\n this_1.headerTemplateFn = templateCompiler(column[keys[parseInt(i.toString(), 10)]]);\n this_1.parent.refreshReactHeaderTemplateByUid(this_1.uid);\n }\n else if (keys[parseInt(i.toString(), 10)] === 'editTemplate') {\n this_1.editTemplateFn = templateCompiler(column[keys[parseInt(i.toString(), 10)]]);\n }\n }\n };\n var this_1 = this;\n for (var i = 0; i < keys.length; i++) {\n _loop_1(i);\n }\n };\n /**\n * @returns {boolean} returns true for foreign column\n * @hidden\n * It defines the column is foreign key column or not.\n */\n Column.prototype.isForeignColumn = function () {\n return !!(this.dataSource && this.foreignKeyValue);\n };\n /**\n * @returns {Function} returns the function\n * @hidden\n */\n Column.prototype.getFormatter = function () {\n return this.formatFn;\n };\n /**\n * @param {Function} value - specifies the value\n * @returns {void}\n * @hidden\n */\n Column.prototype.setFormatter = function (value) {\n this.formatFn = value;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getParser = function () {\n return this.parserFn;\n };\n /**\n * @param {Function} value - specifies the value\n * @returns {void}\n * @hidden\n */\n Column.prototype.setParser = function (value) {\n this.parserFn = value;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getColumnTemplate = function () {\n return this.templateFn;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getHeaderTemplate = function () {\n return this.headerTemplateFn;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getFilterItemTemplate = function () {\n return this.fltrTemplateFn;\n };\n /**\n * @returns {string} returns the string\n * @hidden */\n Column.prototype.getDomSetter = function () {\n return this.disableHtmlEncode ? 'textContent' : 'innerHTML';\n };\n return Column;\n}());\nexport { Column };\n/**\n * Define options for custom command buttons.\n */\nvar CommandColumnModel = /** @class */ (function () {\n function CommandColumnModel() {\n }\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"title\", void 0);\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"buttonOption\", void 0);\n return CommandColumnModel;\n}());\nexport { CommandColumnModel };\n/**\n * Defines Grid column\n */\nvar GridColumn = /** @class */ (function (_super) {\n __extends(GridColumn, _super);\n function GridColumn() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], GridColumn.prototype, \"columns\", void 0);\n return GridColumn;\n}(Column));\nexport { GridColumn };\n/**\n * Defines stacked grid column\n */\nvar StackedColumn = /** @class */ (function (_super) {\n __extends(StackedColumn, _super);\n function StackedColumn() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return StackedColumn;\n}(GridColumn));\nexport { StackedColumn };\n","/** @hidden */\nexport var created = 'create';\n/** @hidden */\nexport var destroyed = 'destroy';\n/** @hidden */\nexport var load = 'load';\n/** @hidden */\nexport var rowDataBound = 'rowDataBound';\n/** @hidden */\nexport var queryCellInfo = 'queryCellInfo';\n/** @hidden */\nexport var headerCellInfo = 'headerCellInfo';\n/** @hidden */\nexport var actionBegin = 'actionBegin';\n/** @hidden */\nexport var actionComplete = 'actionComplete';\n/** @hidden */\nexport var actionFailure = 'actionFailure';\n/** @hidden */\nexport var dataBound = 'dataBound';\n/** @hidden */\nexport var rowSelecting = 'rowSelecting';\n/** @hidden */\nexport var rowSelected = 'rowSelected';\n/** @hidden */\nexport var rowDeselecting = 'rowDeselecting';\n/** @hidden */\nexport var rowDeselected = 'rowDeselected';\n/** @hidden */\nexport var cellSelecting = 'cellSelecting';\n/** @hidden */\nexport var cellSelected = 'cellSelected';\n/** @hidden */\nexport var cellDeselecting = 'cellDeselecting';\n/** @hidden */\nexport var cellDeselected = 'cellDeselected';\n/** @hidden */\nexport var columnSelecting = 'columnSelecting';\n/** @hidden */\nexport var columnSelected = 'columnSelected';\n/** @hidden */\nexport var columnDeselecting = 'columnDeselecting';\n/** @hidden */\nexport var columnDeselected = 'columnDeselected';\n/** @hidden */\nexport var columnDragStart = 'columnDragStart';\n/** @hidden */\nexport var columnDrag = 'columnDrag';\n/** @hidden */\nexport var columnDrop = 'columnDrop';\n/** @hidden */\nexport var rowDragStartHelper = 'rowDragStartHelper';\n/** @hidden */\nexport var rowDragStart = 'rowDragStart';\n/** @hidden */\nexport var rowDrag = 'rowDrag';\n/** @hidden */\nexport var rowDrop = 'rowDrop';\n/** @hidden */\nexport var beforePrint = 'beforePrint';\n/** @hidden */\nexport var printComplete = 'printComplete';\n/** @hidden */\nexport var detailDataBound = 'detailDataBound';\n/** @hidden */\nexport var toolbarClick = 'toolbarClick';\n/** @hidden */\nexport var batchAdd = 'batchAdd';\n/** @hidden */\nexport var batchCancel = 'batchCancel';\n/** @hidden */\nexport var batchDelete = 'batchDelete';\n/** @hidden */\nexport var beforeBatchAdd = 'beforeBatchAdd';\n/** @hidden */\nexport var beforeBatchDelete = 'beforeBatchDelete';\n/** @hidden */\nexport var beforeBatchSave = 'beforeBatchSave';\n/** @hidden */\nexport var beginEdit = 'beginEdit';\n/** @hidden */\nexport var cellEdit = 'cellEdit';\n/** @hidden */\nexport var cellSave = 'cellSave';\n/** @hidden */\nexport var cellSaved = 'cellSaved';\n/** @hidden */\nexport var endAdd = 'endAdd';\n/** @hidden */\nexport var endDelete = 'endDelete';\n/** @hidden */\nexport var endEdit = 'endEdit';\n/** @hidden */\nexport var recordDoubleClick = 'recordDoubleClick';\n/** @hidden */\nexport var recordClick = 'recordClick';\n/** @hidden */\nexport var beforeDataBound = 'beforeDataBound';\n/** @hidden */\nexport var beforeOpenColumnChooser = 'beforeOpenColumnChooser';\n/** @hidden */\nexport var beforeOpenAdaptiveDialog = 'beforeOpenAdaptiveDialog';\n/** @hidden */\nexport var resizeStart = 'resizeStart';\n/** @hidden */\nexport var onResize = 'resizing';\n/** @hidden */\nexport var resizeStop = 'resizeStop';\n/** @hidden */\nexport var checkBoxChange = 'checkBoxChange';\n/** @hidden */\nexport var beforeCopy = 'beforeCopy';\n/** @hidden */\nexport var beforePaste = 'beforePaste';\n/** @hidden */\nexport var beforeAutoFill = 'beforeAutoFill';\n/** @hidden */\nexport var filterChoiceRequest = 'filterchoicerequest';\n/** @hidden */\nexport var filterAfterOpen = 'filterAfterOpen';\n/** @hidden */\nexport var filterBeforeOpen = 'filterBeforeOpen';\n/** @hidden */\nexport var filterSearchBegin = 'filterSearchBegin';\n/** @hidden */\nexport var commandClick = 'commandClick';\n/** @hidden */\nexport var exportGroupCaption = 'exportGroupCaption';\n/** @hidden */\nexport var lazyLoadGroupExpand = 'lazyLoadGroupExpand';\n/** @hidden */\nexport var lazyLoadGroupCollapse = 'lazyLoadGroupCollapse';\n/**\n * Specifies grid internal events\n */\n/** @hidden */\nexport var initialLoad = 'initial-load';\n/** @hidden */\nexport var initialEnd = 'initial-end';\n/** @hidden */\nexport var dataReady = 'data-ready';\n/** @hidden */\nexport var contentReady = 'content-ready';\n/** @hidden */\nexport var uiUpdate = 'ui-update';\n/** @hidden */\nexport var onEmpty = 'on-empty';\n/** @hidden */\nexport var inBoundModelChanged = 'inbound-model-changed';\n/** @hidden */\nexport var modelChanged = 'model-changed';\n/** @hidden */\nexport var colGroupRefresh = 'colgroup-refresh';\n/** @hidden */\nexport var headerRefreshed = 'header-refreshed';\n/** @hidden */\nexport var pageBegin = 'paging-begin';\n/** @hidden */\nexport var pageComplete = 'paging-complete';\n/** @hidden */\nexport var sortBegin = 'sorting-begin';\n/** @hidden */\nexport var sortComplete = 'sorting-complete';\n/** @hidden */\nexport var filterBegin = 'filtering-begin';\n/** @hidden */\nexport var filterComplete = 'filtering-complete';\n/** @hidden */\nexport var searchBegin = 'searching-begin';\n/** @hidden */\nexport var searchComplete = 'searching-complete';\n/** @hidden */\nexport var reorderBegin = 'reorder-begin';\n/** @hidden */\nexport var reorderComplete = 'reorder-complete';\n/** @hidden */\nexport var rowDragAndDropBegin = 'rowdraganddrop-begin';\n/** @hidden */\nexport var rowDragAndDropComplete = 'rowdraganddrop-complete';\n/** @hidden */\nexport var groupBegin = 'grouping-begin';\n/** @hidden */\nexport var groupComplete = 'grouping-complete';\n/** @hidden */\nexport var ungroupBegin = 'ungrouping-begin';\n/** @hidden */\nexport var ungroupComplete = 'ungrouping-complete';\n/** @hidden */\nexport var groupAggregates = 'group-aggregates';\n/** @hidden */\nexport var refreshFooterRenderer = 'refresh-footer-rendered';\n/** @hidden */\nexport var refreshAggregateCell = 'refresh-aggregate-cell';\n/** @hidden */\nexport var refreshAggregates = 'refresh-aggregates';\n/** @hidden */\nexport var rowSelectionBegin = 'rowselecting';\n/** @hidden */\nexport var rowSelectionComplete = 'rowselected';\n/** @hidden */\nexport var columnSelectionBegin = 'columnselecting';\n/** @hidden */\nexport var columnSelectionComplete = 'columnselected';\n/** @hidden */\nexport var cellSelectionBegin = 'cellselecting';\n/** @hidden */\nexport var cellSelectionComplete = 'cellselected';\n/** @hidden */\nexport var destroyAutoFillElements = 'destroy-autofill-elements';\n/** @hidden */\nexport var beforeCellFocused = 'beforecellfocused';\n/** @hidden */\nexport var cellFocused = 'cellfocused';\n/** @hidden */\nexport var keyPressed = 'key-pressed';\n/** @hidden */\nexport var click = 'click';\n/** @hidden */\nexport var destroy = 'destroy';\n/** @hidden */\nexport var columnVisibilityChanged = 'column-visible-changed';\n/** @hidden */\nexport var scroll = 'scroll';\n/** @hidden */\nexport var columnWidthChanged = 'column-width-changed';\n/** @hidden */\nexport var columnPositionChanged = 'column-position-changed';\n/** @hidden */\nexport var rowDragAndDrop = 'row-drag-and-drop';\n/** @hidden */\nexport var rowsAdded = 'rows-added';\n/** @hidden */\nexport var rowsRemoved = 'rows-removed';\n/** @hidden */\nexport var columnDragStop = 'column-drag-stop';\n/** @hidden */\nexport var headerDrop = 'header-drop';\n/** @hidden */\nexport var dataSourceModified = 'datasource-modified';\n/** @hidden */\nexport var refreshComplete = 'refresh-complete';\n/** @hidden */\nexport var refreshVirtualBlock = 'refresh-virtual-block';\n/** @hidden */\nexport var dblclick = 'dblclick';\n/** @hidden */\nexport var toolbarRefresh = 'toolbar-refresh';\n/** @hidden */\nexport var bulkSave = 'bulk-save';\n/** @hidden */\nexport var autoCol = 'auto-col';\n/** @hidden */\nexport var tooltipDestroy = 'tooltip-destroy';\n/** @hidden */\nexport var updateData = 'update-data';\n/** @hidden */\nexport var editBegin = 'edit-begin';\n/** @hidden */\nexport var editComplete = 'edit-complete';\n/** @hidden */\nexport var addBegin = 'add-begin';\n/** @hidden */\nexport var addComplete = 'add-complete';\n/** @hidden */\nexport var saveComplete = 'save-complete';\n/** @hidden */\nexport var deleteBegin = 'delete-begin';\n/** @hidden */\nexport var deleteComplete = 'delete-complete';\n/** @hidden */\nexport var preventBatch = 'prevent-batch';\n/** @hidden */\nexport var dialogDestroy = 'dialog-destroy';\n/** @hidden */\nexport var crudAction = 'crud-Action';\n/** @hidden */\nexport var addDeleteAction = 'add-delete-Action';\n/** @hidden */\nexport var destroyForm = 'destroy-form';\n/** @hidden */\nexport var doubleTap = 'double-tap';\n/** @hidden */\nexport var beforeExcelExport = 'beforeExcelExport';\n/** @hidden */\nexport var excelExportComplete = 'excelExportComplete';\n/** @hidden */\nexport var excelQueryCellInfo = 'excelQueryCellInfo';\n/** @hidden */\nexport var excelHeaderQueryCellInfo = 'excelHeaderQueryCellInfo';\n/** @hidden */\nexport var exportDetailDataBound = 'exportDetailDataBound';\n/** @hidden */\nexport var exportDetailTemplate = 'exportDetailTemplate';\n/** @hidden */\nexport var beforePdfExport = 'beforePdfExport';\n/** @hidden */\nexport var pdfExportComplete = 'pdfExportComplete';\n/** @hidden */\nexport var pdfQueryCellInfo = 'pdfQueryCellInfo';\n/** @hidden */\nexport var pdfHeaderQueryCellInfo = 'pdfHeaderQueryCellInfo';\n/** @hidden */\nexport var accessPredicate = 'access-predicate';\n/** @hidden */\nexport var contextMenuClick = 'contextMenuClick';\n/** @hidden */\nexport var freezeRender = 'freezerender';\n/** @hidden */\nexport var freezeRefresh = 'freezerefresh';\n/** @hidden */\nexport var contextMenuOpen = 'contextMenuOpen';\n/** @hidden */\nexport var columnMenuClick = 'columnMenuClick';\n/** @hidden */\nexport var columnMenuOpen = 'columnMenuOpen';\n/** @hidden */\nexport var filterOpen = 'filterOpen';\n/** @hidden */\nexport var filterDialogCreated = 'filterDialogCreated';\n/** @hidden */\nexport var filterMenuClose = 'filter-menu-close';\n/** @hidden */\nexport var initForeignKeyColumn = 'initForeignKeyColumn';\n/** @hidden */\nexport var getForeignKeyData = 'getForeignKeyData';\n/** @hidden */\nexport var generateQuery = 'generateQuery';\n/** @hidden */\nexport var showEmptyGrid = 'showEmptyGrid';\n/** @hidden */\nexport var foreignKeyData = 'foreignKeyData';\n/** @hidden */\nexport var columnDataStateChange = 'columnDataStateChange';\n/** @hidden */\nexport var dataStateChange = 'dataStateChange';\n/** @hidden */\nexport var dataSourceChanged = 'dataSourceChanged';\n/** @hidden */\nexport var rtlUpdated = 'rtl-updated';\n/** @hidden */\nexport var beforeFragAppend = 'beforeFragAppend';\n/** @hidden */\nexport var frozenHeight = 'frozenHeight';\n/** @hidden */\nexport var textWrapRefresh = 'textWrapRefresh';\n/** @hidden */\nexport var recordAdded = 'recordAdded';\n/** @hidden */\nexport var cancelBegin = 'cancel-Begin';\n/** @hidden */\nexport var editNextValCell = 'editNextValCell';\n/** @hidden */\nexport var hierarchyPrint = 'hierarchyprint';\n/** @hidden */\nexport var expandChildGrid = 'expandchildgrid';\n/** @hidden */\nexport var printGridInit = 'printGrid-Init';\n/** @hidden */\nexport var exportRowDataBound = 'export-RowDataBound';\n/** @hidden */\nexport var exportDataBound = 'export-DataBound';\n/** @hidden */\nexport var rowPositionChanged = 'row-position-changed';\n/** @hidden */\nexport var columnChooserOpened = 'columnChooserOpened';\n/** @hidden */\nexport var batchForm = 'batchedit-form';\n/** @hidden */\nexport var beforeStartEdit = 'edit-form';\n/** @hidden */\nexport var beforeBatchCancel = 'before-batch-cancel';\n/** @hidden */\nexport var batchEditFormRendered = 'batcheditform-rendered';\n/** @hidden */\nexport var partialRefresh = 'partial-refresh';\n/** @hidden */\nexport var beforeCustomFilterOpen = 'beforeCustomFilterOpen';\n/** @hidden */\nexport var selectVirtualRow = 'select-virtual-Row';\n/** @hidden */\nexport var columnsPrepared = 'columns-prepared';\n/** @hidden */\nexport var cBoxFltrBegin = 'cbox-filter-begin';\n/** @hidden */\nexport var cBoxFltrComplete = 'cbox-filter-complete';\n/** @hidden */\nexport var fltrPrevent = 'filter-Prevent';\n/** @hidden */\nexport var beforeFltrcMenuOpen = 'before-filter-cmenu-open';\n/** @hidden */\nexport var valCustomPlacement = 'validation-custom-placement';\n/** @hidden */\nexport var filterCboxValue = 'filter-cbox-value';\n/** @hidden */\nexport var componentRendered = 'component-rendered';\n/** @hidden */\nexport var restoreFocus = 'restore-Focus';\n/** @hidden */\nexport var detailStateChange = 'detail-state-change';\n/** @hidden */\nexport var detailIndentCellInfo = 'detail-indentcell-info';\n/** @hidden */\nexport var virtaulKeyHandler = 'virtaul-key-handler';\n/** @hidden */\nexport var virtaulCellFocus = 'virtaul-cell-focus';\n/** @hidden */\nexport var virtualScrollEditActionBegin = 'virtual-scroll-edit-action-begin';\n/** @hidden */\nexport var virtualScrollEditSuccess = 'virtual-scroll-edit-success';\n/** @hidden */\nexport var virtualScrollEditCancel = 'virtual-scroll-edit-cancel';\n/** @hidden */\nexport var virtualScrollEdit = 'virtual-scroll-edit';\n/** @hidden */\nexport var refreshVirtualCache = 'refresh-virtual-cache';\n/** @hidden */\nexport var editReset = 'edit-reset';\n/** @hidden */\nexport var virtualScrollAddActionBegin = 'virtual-scroll-add-action-begin';\n/** @hidden */\nexport var getVirtualData = 'get-virtual-data';\n/** @hidden */\nexport var refreshInfiniteModeBlocks = 'refresh-infinite-mode-blocks';\n/** @hidden */\nexport var resetInfiniteBlocks = 'reset-infinite-blocks';\n/** @hidden */\nexport var infiniteScrollHandler = 'infinite-scroll-handler';\n/** @hidden */\nexport var infinitePageQuery = 'infinite-page-query';\n/** @hidden */\nexport var infiniteShowHide = 'infinite-show-hide';\n/** @hidden */\nexport var appendInfiniteContent = 'append-infinite-content';\n/** @hidden */\nexport var removeInfiniteRows = 'remove-infinite-rows';\n/** @hidden */\nexport var setInfiniteCache = 'set-infinite-cache';\n/** @hidden */\nexport var infiniteEditHandler = 'infinite-edit-handler';\n/** @hidden */\nexport var initialCollapse = 'initial-collapse';\n/** @hidden */\nexport var getAggregateQuery = 'get-aggregate-query';\n/** @hidden */\nexport var closeFilterDialog = 'close-filter-dialog';\n/** @hidden */\nexport var columnChooserCancelBtnClick = 'columnChooserCancelBtnClick';\n/** @hidden */\nexport var getFilterBarOperator = 'get-filterbar-operator';\n/** @hidden */\nexport var resetColumns = 'reset-columns';\n/** @hidden */\nexport var pdfAggregateQueryCellInfo = 'pdfAggregateQueryCellInfo';\n/** @hidden */\nexport var excelAggregateQueryCellInfo = 'excelAggregateQueryCellInfo';\n/** @hidden */\nexport var setGroupCache = 'group-cache';\n/** @hidden */\nexport var lazyLoadScrollHandler = 'lazy-load-scroll-handler';\n/** @hidden */\nexport var groupCollapse = 'group-collapse';\n/** @hidden */\nexport var beforeCheckboxRenderer = 'beforeCheckboxRenderer';\n/** @hidden */\nexport var refreshHandlers = 'refreshResizeHandlers';\n/** @hidden */\nexport var refreshFrozenColumns = 'refresh-frozen-columns';\n/** @hidden */\nexport var setReorderDestinationElement = 'set-reorder-destination-element';\n/** @hidden */\nexport var refreshVirtualFrozenHeight = 'refresh-virtual-frozen-height';\n/** @hidden */\nexport var setFreezeSelection = 'set-freeze-selection';\n/** @hidden */\nexport var setInfiniteFrozenHeight = 'set-infinite-frozen-height';\n/** @hidden */\nexport var setInfiniteColFrozenHeight = 'set-infinite-col-frozen-height';\n/** @hidden */\nexport var beforeRefreshOnDataChange = 'before-refresh-on-data-change';\n/** @hidden */\nexport var immutableBatchCancel = 'immutable-batch-cancel';\n/** @hidden */\nexport var refreshVirtualFrozenRows = 'refresh-virtual-frozenrows';\n/** @hidden */\nexport var checkScrollReset = 'check-scroll-reset';\n/** @hidden */\nexport var refreshFrozenHeight = 'refresh-frozen-height';\n/** @hidden */\nexport var setHeightToFrozenElement = 'set-height-to-frozen-element';\n/** @hidden */\nexport var preventFrozenScrollRefresh = 'prevent-frozen-scroll-refresh';\n/** @hidden */\nexport var nextCellIndex = 'next-cell-index';\n/** @hidden */\nexport var refreshInfiniteCurrentViewData = 'refresh-infinite-current-view-data';\n/** @hidden */\nexport var infiniteCrudCancel = 'infinite-crud-cancel';\n/** @hidden */\nexport var filterDialogClose = 'filter-dialog-close';\n/** @hidden */\nexport var refreshCustomFilterOkBtn = 'refresh-cutsom-filter-ok-button';\n/** @hidden */\nexport var refreshCustomFilterClearBtn = 'refresh-cutsom-filter-clear-button';\n/** @hidden */\nexport var renderResponsiveCmenu = 'render-responsive-cmenu';\n/** @hidden */\nexport var filterCmenuSelect = 'filter-cmenu-select';\n/** @hidden */\nexport var customFilterClose = 'custom-filter-close';\n/** @hidden */\nexport var setFullScreenDialog = 'set-fullscreen-dialog';\n/** @hidden */\nexport var refreshExpandandCollapse = 'refresh-Expand-and-Collapse';\n/** @hidden */\nexport var rowModeChange = 'row-mode-change';\n/** @hidden */\nexport var enterKeyHandler = 'enter-key-handler';\n/** @hidden */\nexport var refreshVirtualMaxPage = 'refresh-virtual-max-page';\n/** @hidden */\nexport var setVirtualPageQuery = 'set-virtual-page-query';\n/** @hidden */\nexport var selectRowOnContextOpen = 'select-row-on-context-open';\n/** @hidden */\nexport var pagerRefresh = 'pager-refresh';\n/** @hidden */\nexport var closeInline = 'closeinline';\n/** @hidden */\nexport var closeBatch = 'closebatch';\n/** @hidden */\nexport var closeEdit = 'close-edit';\n/** @hidden */\nexport var resetVirtualFocus = 'reset-virtual-focus';\n/** @hidden */\nexport var afterContentRender = 'after-content-renderer';\n/** @hidden */\nexport var refreshVirtualEditFormCells = 'refresh-virtual-editform-cells';\n/** @hidden */\nexport var scrollToEdit = 'scroll-to-edit';\n/** @hidden */\nexport var beforeCheckboxRendererQuery = 'before-checkbox-renderer-query';\n/** @hidden */\nexport var createVirtualValidationForm = 'create-virtual-validation-form';\n/** @hidden */\nexport var validateVirtualForm = 'validate-virtual-form';\n/** @hidden */\nexport var destroyChildGrid = 'destroy-child-grid';\n/** @hidden */\nexport var stickyScrollComplete = 'sticky-scroll-complete';\n/** @hidden */\nexport var captionActionComplete = 'infinite-group-collapse';\n/** @hidden */\nexport var refreshInfinitePersistSelection = 'refresh-infinite-persist-selection';\n/** @hidden */\nexport var refreshInfiniteEditrowindex = 'refresh-infinite-editrowindex';\n/** @hidden */\nexport var afterFilterColumnMenuClose = 'after-filter-column-menu-close';\n/** @hidden */\nexport var beforeCheckboxfilterRenderer = 'beforeCheckboxfilterRenderer';\n/** @hidden */\nexport var commandColumnDestroy = 'commandColumnDestroy';\n/** @hidden */\nexport var batchCnfrmDlgCancel = 'cancelcnfrmDlg';\n/** @hidden */\nexport var refreshVirtualLazyLoadCache = 'refresh-Virtual-LazyLoad-Cache';\n/** @hidden */\nexport var refreshFrozenPosition = 'refresh-Frozen-Position';\n/** @hidden */\nexport var refreshResizePosition = 'refresh-Resize-Position';\n/** @hidden */\nexport var refreshSplitFrozenColumn = 'refresh-Split-Frozen-Column';\n/** @hidden */\nexport var renderResponsiveChangeAction = 'render-Responsive-Change-Action';\n/** @hidden */\nexport var renderResponsiveColumnChooserDiv = 'render-Responsive-Column-Chooser-Div';\n/** @hidden */\nexport var showAddNewRowFocus = 'show-Add-New-Row-Focus';\n/** @hidden */\nexport var infiniteScrollComplete = 'infinitescroll-complete';\n","/**\n * Specifies class names\n */\n/** @hidden */\nexport var rowCell = 'e-rowcell';\n/** @hidden */\nexport var gridHeader = 'e-gridheader';\n/** @hidden */\nexport var gridContent = 'e-gridcontent';\n/** @hidden */\nexport var gridFooter = 'e-gridfooter';\n/** @hidden */\nexport var headerContent = 'e-headercontent';\n/** @hidden */\nexport var movableContent = 'e-movablecontent';\n/** @hidden */\nexport var movableHeader = 'e-movableheader';\n/** @hidden */\nexport var frozenContent = 'e-frozencontent';\n/** @hidden */\nexport var frozenHeader = 'e-frozenheader';\n/** @hidden */\nexport var content = 'e-content';\n/** @hidden */\nexport var table = 'e-table';\n/** @hidden */\nexport var row = 'e-row';\n/** @hidden */\nexport var gridChkBox = 'e-gridchkbox';\n/** @hidden */\nexport var editedRow = 'e-editedrow';\n/** @hidden */\nexport var addedRow = 'e-addedrow';\n/** @hidden */\nexport var groupCaptionRow = 'e-groupcaptionrow';\n/**\n * Specifies repeated strings\n */\n/** @hidden */\nexport var changedRecords = 'changedRecords';\n/** @hidden */\nexport var addedRecords = 'addedRecords';\n/** @hidden */\nexport var deletedRecords = 'deletedRecords';\n/** @hidden */\nexport var leftRight = 'Left-Right';\n/** @hidden */\nexport var frozenRight = 'frozen-right';\n/** @hidden */\nexport var frozenLeft = 'frozen-left';\n/** @hidden */\nexport var dataColIndex = 'data-colindex';\n/** @hidden */\nexport var ariaColIndex = 'aria-colindex';\n/** @hidden */\nexport var dataRowIndex = 'data-rowindex';\n/** @hidden */\nexport var ariaRowIndex = 'aria-rowindex';\n/** @hidden */\nexport var tbody = 'tbody';\n/** @hidden */\nexport var colGroup = 'colgroup';\n/** @hidden */\nexport var open = 'open';\n/** @hidden */\nexport var change = 'change';\n/** @hidden */\nexport var focus = 'focus';\n/** @hidden */\nexport var create = 'created';\n/** @hidden */\nexport var beforeOpen = 'beforeOpen';\n/** @hidden */\nexport var downArrow = 'downArrow';\n/** @hidden */\nexport var upArrow = 'upArrow';\n/** @hidden */\nexport var pageUp = 'PageUp';\n/** @hidden */\nexport var pageDown = 'PageDown';\n/** @hidden */\nexport var enter = 'enter';\n/** @hidden */\nexport var shiftEnter = 'shiftEnter';\n/** @hidden */\nexport var tab = 'tab';\n/** @hidden */\nexport var shiftTab = 'shiftTab';\n/** @hidden */\nexport var initialFrozenColumnIndex = 'initialFrozenColumnIndex';\n","import { print as printWindow, createElement, detach, classList, selectAll, extend } from '@syncfusion/ej2-base';\nimport { getPrintGridModel } from '../base/util';\nimport { Grid } from '../base/grid';\nimport * as events from '../base/constant';\nimport { Deferred } from '@syncfusion/ej2-data';\nimport * as literals from '../base/string-literals';\n/**\n * @returns {string[]} returns the cloned property\n * @hidden\n */\nexport function getCloneProperties() {\n return ['aggregates', 'allowGrouping', 'allowFiltering', 'allowMultiSorting', 'allowReordering', 'allowSorting',\n 'allowTextWrap', 'childGrid', 'columns', 'currentViewData', 'dataSource', 'detailTemplate', 'enableAltRow',\n 'enableColumnVirtualization', 'filterSettings', 'gridLines',\n 'groupSettings', 'height', 'locale', 'pageSettings', 'printMode', 'query', 'queryString', 'enableRtl',\n 'rowHeight', 'rowTemplate', 'sortSettings', 'textWrapSettings', 'allowPaging', 'hierarchyPrintMode', 'searchSettings',\n 'queryCellInfo', 'beforeDataBound'];\n}\n/**\n *\n * The `Print` module is used to handle print action.\n */\nvar Print = /** @class */ (function () {\n /**\n * Constructor for the Grid print module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {Scroll} scrollModule - specifies the scroll module\n * @hidden\n */\n function Print(parent, scrollModule) {\n this.isAsyncPrint = false;\n this.defered = new Deferred();\n this.parent = parent;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.contentReady, this.isContentReady(), this);\n this.actionBeginFunction = this.actionBegin.bind(this);\n this.parent.addEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.on(events.onEmpty, this.onEmpty.bind(this));\n this.parent.on(events.hierarchyPrint, this.hierarchyPrint, this);\n this.scrollModule = scrollModule;\n }\n Print.prototype.isContentReady = function () {\n var _this = this;\n if (this.isPrintGrid() && (this.parent.hierarchyPrintMode === 'None' || !this.parent.childGrid)) {\n return this.contentReady;\n }\n return function () {\n _this.defered.promise.then(function () {\n _this.contentReady();\n });\n if (_this.isPrintGrid()) {\n _this.hierarchyPrint();\n }\n };\n };\n Print.prototype.hierarchyPrint = function () {\n this.removeColGroup(this.parent);\n var printGridObj = window.printGridObj;\n if (printGridObj && !printGridObj.element.querySelector('[aria-busy=true')) {\n printGridObj.printModule.defered.resolve();\n }\n };\n /**\n * By default, prints all the Grid pages and hides the pager.\n * > You can customize print options using the\n * [`printMode`](./printmode/).\n *\n * @returns {void}\n */\n Print.prototype.print = function () {\n this.renderPrintGrid();\n };\n Print.prototype.onEmpty = function () {\n if (this.isPrintGrid()) {\n this.contentReady();\n }\n };\n Print.prototype.actionBegin = function () {\n if (this.isPrintGrid()) {\n this.isAsyncPrint = true;\n }\n };\n Print.prototype.renderPrintGrid = function () {\n var gObj = this.parent;\n var element = createElement('div', {\n id: this.parent.element.id + '_print', className: gObj.element.className + ' e-print-grid'\n });\n element.classList.remove('e-gridhover');\n document.body.appendChild(element);\n var printGrid = new Grid(getPrintGridModel(gObj, gObj.hierarchyPrintMode));\n for (var i = 0; i < printGrid.columns.length; i++) {\n printGrid.columns[parseInt(i.toString(), 10)] = extend({}, printGrid.columns[parseInt(i.toString(), 10)]);\n if (gObj.isFrozenGrid() && !gObj.getFrozenColumns()) {\n printGrid.columns[parseInt(i.toString(), 10)].freeze = undefined;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.parent.isAngular) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n printGrid.viewContainerRef = this.parent.viewContainerRef;\n }\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n printGrid.load = function () { };\n printGrid.query = gObj.getQuery().clone();\n window.printGridObj = printGrid;\n printGrid.isPrinting = true;\n var modules = printGrid.getInjectedModules();\n var injectedModues = gObj.getInjectedModules();\n if (!modules || modules.length !== injectedModues.length) {\n printGrid.setInjectedModules(injectedModues);\n }\n gObj.notify(events.printGridInit, { element: element, printgrid: printGrid });\n this.parent.log('exporting_begin', this.getModuleName());\n printGrid.registeredTemplate = this.parent.registeredTemplate;\n printGrid.isVue = this.parent.isVue;\n printGrid.appendTo(element);\n if (!gObj.isVue3) {\n printGrid.trigger = gObj.trigger;\n }\n };\n Print.prototype.contentReady = function () {\n if (this.isPrintGrid()) {\n var gObj = this.parent;\n if (this.isAsyncPrint) {\n this.printGrid();\n return;\n }\n var args = {\n requestType: 'print',\n element: gObj.element,\n selectedRows: gObj.getContentTable().querySelectorAll('tr[aria-selected=\"true\"]'),\n cancel: false,\n hierarchyPrintMode: gObj.hierarchyPrintMode\n };\n if (!this.isAsyncPrint) {\n gObj.trigger(events.beforePrint, args);\n }\n if (args.cancel) {\n detach(gObj.element);\n return;\n }\n if (!this.isAsyncPrint) {\n this.printGrid();\n }\n }\n };\n Print.prototype.printGrid = function () {\n var gObj = this.parent;\n // Height adjustment on print grid\n if (gObj.height !== 'auto') { // if scroller enabled\n var cssProps = this.scrollModule.getCssProperties();\n var contentDiv = gObj.element.querySelector('.' + literals.content);\n var headerDiv = gObj.element.querySelector('.' + literals.gridHeader);\n contentDiv.style.height = 'auto';\n contentDiv.style.overflowY = 'auto';\n headerDiv.style[cssProps.padding] = '';\n headerDiv.firstElementChild.style[cssProps.border] = '';\n }\n // Grid alignment adjustment on grouping\n if (gObj.allowGrouping) {\n if (!gObj.groupSettings.columns.length) {\n gObj.element.querySelector('.e-groupdroparea').style.display = 'none';\n }\n else {\n this.removeColGroup(gObj);\n }\n }\n // hide horizontal scroll\n for (var _i = 0, _a = [].slice.call(gObj.element.getElementsByClassName(literals.content)); _i < _a.length; _i++) {\n var element = _a[_i];\n element.style.overflowX = 'hidden';\n }\n // Hide the waiting popup\n var waitingPop = [].slice.call(gObj.element.getElementsByClassName('e-spin-show'));\n for (var _b = 0, _c = [].slice.call(waitingPop); _b < _c.length; _b++) {\n var element = _c[_b];\n classList(element, ['e-spin-hide'], ['e-spin-show']);\n }\n this.printGridElement(gObj);\n gObj.isPrinting = false;\n delete window.printGridObj;\n var args = {\n element: gObj.element\n };\n gObj.trigger(events.printComplete, args);\n gObj.destroy();\n this.parent.log('exporting_complete', this.getModuleName());\n };\n Print.prototype.printGridElement = function (gObj) {\n classList(gObj.element, ['e-print-grid-layout'], ['e-print-grid']);\n if (gObj.isPrinting) {\n detach(gObj.element);\n }\n this.printWind = window.open('', 'print', 'height=' + window.outerHeight + ',width=' + window.outerWidth + ',tabbar=no');\n this.printWind.moveTo(0, 0);\n this.printWind.resizeTo(screen.availWidth, screen.availHeight);\n this.printWind = printWindow(gObj.element, this.printWind);\n };\n Print.prototype.removeColGroup = function (gObj) {\n var depth = gObj.groupSettings.columns.length;\n var element = gObj.element;\n var id = '#' + gObj.element.id;\n if (!depth) {\n return;\n }\n var groupCaption = selectAll('.e-groupcaption', element);\n var colSpan = groupCaption[depth - 1].getAttribute('colspan');\n for (var i = 0; i < groupCaption.length; i++) {\n groupCaption[parseInt(i.toString(), 10)].setAttribute('colspan', colSpan);\n }\n var colGroups = selectAll(\"colgroup\" + id + \"colgroup\", element);\n var contentColGroups = selectAll('.e-content colgroup', element);\n var footerColGroups = selectAll('.e-summarycontent colgroup', element);\n this.hideColGroup(colGroups, depth);\n this.hideColGroup(contentColGroups, depth);\n this.hideColGroup(footerColGroups, depth);\n };\n Print.prototype.hideColGroup = function (colGroups, depth) {\n for (var i = 0; i < colGroups.length; i++) {\n for (var j = 0; j < depth; j++) {\n colGroups[parseInt(i.toString(), 10)].children[parseInt(j.toString(), 10)].style.display = 'none';\n }\n }\n };\n /**\n * To destroy the print\n *\n * @returns {boolean} returns the isPrintGrid or not\n * @hidden\n */\n Print.prototype.isPrintGrid = function () {\n return this.parent.element.id.indexOf('_print') > 0 && this.parent.isPrinting;\n };\n /**\n * To destroy the print\n *\n * @returns {void}\n * @hidden\n */\n Print.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.contentReady, this.contentReady.bind(this));\n this.parent.removeEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.off(events.onEmpty, this.onEmpty.bind(this));\n this.parent.off(events.hierarchyPrint, this.hierarchyPrint);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Print.prototype.getModuleName = function () {\n return 'print';\n };\n Print.printGridProp = getCloneProperties().concat([events.beforePrint, events.printComplete, events.load]);\n return Print;\n}());\nexport { Print };\n","import { detach, getUniqueID, rippleEffect, setValue, attributes } from '@syncfusion/ej2-base';\nimport { getValue, addClass, deleteObject } from '@syncfusion/ej2-base';\n/**\n * Initialize wrapper element for angular.\n *\n * @private\n *\n * @param {CreateElementArgs} createElement - Specifies created element args\n * @param {string} tag - Specifies tag name\n * @param {string} type - Specifies type name\n * @param {HTMLInputElement} element - Specifies input element\n * @param {string} WRAPPER - Specifies wrapper element\n * @param {string} role - Specifies role\n * @returns {HTMLInputElement} - Input Element\n */\nexport function wrapperInitialize(createElement, tag, type, element, WRAPPER, role) {\n var input = element;\n if (element.tagName === tag) {\n var ejInstance = getValue('ej2_instances', element);\n input = createElement('input', { attrs: { 'type': type } });\n var props = ['change', 'cssClass', 'label', 'labelPosition', 'id'];\n for (var index = 0, len = element.attributes.length; index < len; index++) {\n if (props.indexOf(element.attributes[index].nodeName) === -1) {\n input.setAttribute(element.attributes[index].nodeName, element.attributes[index].nodeValue);\n }\n }\n attributes(element, { 'class': WRAPPER });\n element.appendChild(input);\n element.classList.add(role);\n element.classList.remove(role);\n setValue('ej2_instances', ejInstance, input);\n deleteObject(element, 'ej2_instances');\n }\n return input;\n}\n/**\n * Get the text node.\n *\n * @param {HTMLElement} element - Specifies html element\n * @private\n * @returns {Node} - Text node.\n */\nexport function getTextNode(element) {\n var node;\n var childnode = element.childNodes;\n for (var i = 0; i < childnode.length; i++) {\n node = childnode[i];\n if (node.nodeType === 3) {\n return node;\n }\n }\n return null;\n}\n/**\n * Destroy the button components.\n *\n * @private\n * @param {Switch | CheckBox} ejInst - Specifies eJ2 Instance\n * @param {Element} wrapper - Specifies wrapper element\n * @param {string} tagName - Specifies tag name\n * @returns {void}\n */\nexport function destroy(ejInst, wrapper, tagName) {\n if (tagName === 'INPUT') {\n wrapper.parentNode.insertBefore(ejInst.element, wrapper);\n detach(wrapper);\n ejInst.element.checked = false;\n ['name', 'value', 'disabled'].forEach(function (key) {\n ejInst.element.removeAttribute(key);\n });\n }\n else {\n ['role', 'aria-checked', 'class'].forEach(function (key) {\n wrapper.removeAttribute(key);\n });\n wrapper.innerHTML = '';\n ejInst.element = wrapper;\n }\n}\n/**\n * Initialize control pre rendering.\n *\n * @private\n * @param {Switch | CheckBox} proxy - Specifies proxy\n * @param {string} control - Specifies control\n * @param {string} wrapper - Specifies wrapper element\n * @param {HTMLInputElement} element - Specifies input element\n * @param {string} moduleName - Specifies module name\n * @returns {void}\n */\nexport function preRender(proxy, control, wrapper, element, moduleName) {\n element = wrapperInitialize(proxy.createElement, control, 'checkbox', element, wrapper, moduleName);\n proxy.element = element;\n if (proxy.element.getAttribute('type') !== 'checkbox') {\n proxy.element.setAttribute('type', 'checkbox');\n }\n if (!proxy.element.id) {\n proxy.element.id = getUniqueID('e-' + moduleName);\n }\n}\n/**\n * Creates CheckBox component UI with theming and ripple support.\n *\n * @private\n * @param {CreateElementArgs} createElement - Specifies Created Element args\n * @param {boolean} enableRipple - Specifies ripple effect\n * @param {CheckBoxUtilModel} options - Specifies Checkbox util Model\n * @returns {Element} - Checkbox Element\n */\nexport function createCheckBox(createElement, enableRipple, options) {\n if (enableRipple === void 0) { enableRipple = false; }\n if (options === void 0) { options = {}; }\n var wrapper = createElement('div', { className: 'e-checkbox-wrapper e-css' });\n if (options.cssClass) {\n addClass([wrapper], options.cssClass.split(' '));\n }\n if (options.enableRtl) {\n wrapper.classList.add('e-rtl');\n }\n if (enableRipple) {\n var rippleSpan = createElement('span', { className: 'e-ripple-container' });\n rippleEffect(rippleSpan, { isCenterRipple: true, duration: 400 });\n wrapper.appendChild(rippleSpan);\n }\n var frameSpan = createElement('span', { className: 'e-frame e-icons' });\n if (options.checked) {\n frameSpan.classList.add('e-check');\n }\n wrapper.appendChild(frameSpan);\n if (options.label) {\n var labelSpan = createElement('span', { className: 'e-label' });\n if (options.disableHtmlEncode) {\n labelSpan.textContent = options.label;\n }\n else {\n labelSpan.innerHTML = options.label;\n }\n wrapper.appendChild(labelSpan);\n }\n return wrapper;\n}\n/**\n * Handles ripple mouse.\n *\n * @private\n * @param {MouseEvent} e - Specifies mouse event\n * @param {Element} rippleSpan - Specifies Ripple span element\n * @returns {void}\n */\nexport function rippleMouseHandler(e, rippleSpan) {\n if (rippleSpan) {\n var event_1 = document.createEvent('MouseEvents');\n event_1.initEvent(e.type, false, true);\n rippleSpan.dispatchEvent(event_1);\n }\n}\n/**\n * Append hidden input to given element\n *\n * @private\n * @param {Switch | CheckBox} proxy - Specifies Proxy\n * @param {Element} wrap - Specifies Wrapper ELement\n * @returns {void}\n */\nexport function setHiddenInput(proxy, wrap) {\n if (proxy.element.getAttribute('ejs-for')) {\n wrap.appendChild(proxy.createElement('input', {\n attrs: { 'name': proxy.name || proxy.element.name, 'value': 'false', 'type': 'hidden' }\n }));\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, NotifyPropertyChanges, Component, isBlazor, isRippleEnabled } from '@syncfusion/ej2-base';\nimport { addClass, Event, detach, removeClass } from '@syncfusion/ej2-base';\nimport { rippleEffect, EventHandler, Observer, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { getTextNode } from '../common/common';\n/**\n * Defines the icon position of button.\n */\nexport var IconPosition;\n(function (IconPosition) {\n /**\n * Positions the Icon at the left of the text content in the Button.\n */\n IconPosition[\"Left\"] = \"Left\";\n /**\n * Positions the Icon at the right of the text content in the Button.\n */\n IconPosition[\"Right\"] = \"Right\";\n /**\n * Positions the Icon at the top of the text content in the Button.\n */\n IconPosition[\"Top\"] = \"Top\";\n /**\n * Positions the Icon at the bottom of the text content in the Button.\n */\n IconPosition[\"Bottom\"] = \"Bottom\";\n})(IconPosition || (IconPosition = {}));\nexport var buttonObserver = new Observer();\nvar cssClassName = {\n RTL: 'e-rtl',\n BUTTON: 'e-btn',\n PRIMARY: 'e-primary',\n ICONBTN: 'e-icon-btn'\n};\n/**\n * The Button is a graphical user interface element that triggers an event on its click action. It can contain a text, an image, or both.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar Button = /** @class */ (function (_super) {\n __extends(Button, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {ButtonModel} options - Specifies the button model\n * @param {string|HTMLButtonElement} element - Specifies the target element\n */\n function Button(options, element) {\n return _super.call(this, options, element) || this;\n }\n Button.prototype.preRender = function () {\n // pre render code snippets\n };\n /**\n * Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Button.prototype.render = function () {\n this.initialize();\n this.removeRippleEffect = rippleEffect(this.element, { selector: '.' + cssClassName.BUTTON });\n this.renderComplete();\n };\n Button.prototype.initialize = function () {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.isPrimary) {\n this.element.classList.add(cssClassName.PRIMARY);\n }\n if (!isBlazor() || (isBlazor() && this.getModuleName() !== 'progress-btn')) {\n if (this.content) {\n var tempContent = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(this.content) : this.content;\n this.element.innerHTML = tempContent;\n }\n this.setIconCss();\n }\n if (this.enableRtl) {\n this.element.classList.add(cssClassName.RTL);\n }\n if (this.disabled) {\n this.controlStatus(this.disabled);\n }\n else {\n this.wireEvents();\n }\n };\n Button.prototype.controlStatus = function (disabled) {\n this.element.disabled = disabled;\n };\n Button.prototype.setIconCss = function () {\n if (this.iconCss) {\n var span = this.createElement('span', { className: 'e-btn-icon ' + this.iconCss });\n if (!this.element.textContent.trim()) {\n this.element.classList.add(cssClassName.ICONBTN);\n }\n else {\n span.classList.add('e-icon-' + this.iconPosition.toLowerCase());\n if (this.iconPosition === 'Top' || this.iconPosition === 'Bottom') {\n this.element.classList.add('e-' + this.iconPosition.toLowerCase() + '-icon-btn');\n }\n }\n var node = this.element.childNodes[0];\n if (node && (this.iconPosition === 'Left' || this.iconPosition === 'Top')) {\n this.element.insertBefore(span, node);\n }\n else {\n this.element.appendChild(span);\n }\n }\n };\n Button.prototype.wireEvents = function () {\n if (this.isToggle) {\n EventHandler.add(this.element, 'click', this.btnClickHandler, this);\n }\n };\n Button.prototype.unWireEvents = function () {\n if (this.isToggle) {\n EventHandler.remove(this.element, 'click', this.btnClickHandler);\n }\n };\n Button.prototype.btnClickHandler = function () {\n if (this.element.classList.contains('e-active')) {\n this.element.classList.remove('e-active');\n }\n else {\n this.element.classList.add('e-active');\n }\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n Button.prototype.destroy = function () {\n var classList = [cssClassName.PRIMARY, cssClassName.RTL, cssClassName.ICONBTN, 'e-success', 'e-info', 'e-danger',\n 'e-warning', 'e-flat', 'e-outline', 'e-small', 'e-bigger', 'e-active', 'e-round',\n 'e-top-icon-btn', 'e-bottom-icon-btn'];\n if (this.cssClass) {\n classList = classList.concat(this.cssClass.split(' '));\n }\n _super.prototype.destroy.call(this);\n removeClass([this.element], classList);\n if (!this.element.getAttribute('class')) {\n this.element.removeAttribute('class');\n }\n if (this.disabled) {\n this.element.removeAttribute('disabled');\n }\n if (this.content) {\n this.element.innerHTML = this.element.innerHTML.replace(this.content, '');\n }\n var span = this.element.querySelector('span.e-btn-icon');\n if (span) {\n detach(span);\n }\n this.unWireEvents();\n if (isRippleEnabled) {\n this.removeRippleEffect();\n }\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module name\n * @private\n */\n Button.prototype.getModuleName = function () {\n return 'btn';\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist Data\n * @private\n */\n Button.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Dynamically injects the required modules to the component.\n *\n * @private\n * @returns {void}\n */\n Button.Inject = function () {\n // Inject code snippets\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ButtonModel} newProp - Specifies new properties\n * @param {ButtonModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Button.prototype.onPropertyChanged = function (newProp, oldProp) {\n var span = this.element.querySelector('span.e-btn-icon');\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'isPrimary':\n if (newProp.isPrimary) {\n this.element.classList.add(cssClassName.PRIMARY);\n }\n else {\n this.element.classList.remove(cssClassName.PRIMARY);\n }\n break;\n case 'disabled':\n this.controlStatus(newProp.disabled);\n break;\n case 'iconCss': {\n span = this.element.querySelector('span.e-btn-icon');\n if (span) {\n if (newProp.iconCss) {\n span.className = 'e-btn-icon ' + newProp.iconCss;\n if (this.element.textContent.trim()) {\n if (this.iconPosition === 'Left') {\n span.classList.add('e-icon-left');\n }\n else {\n span.classList.add('e-icon-right');\n }\n }\n }\n else {\n detach(span);\n }\n }\n else {\n this.setIconCss();\n }\n break;\n }\n case 'iconPosition':\n removeClass([this.element], ['e-top-icon-btn', 'e-bottom-icon-btn']);\n span = this.element.querySelector('span.e-btn-icon');\n if (span) {\n detach(span);\n }\n this.setIconCss();\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.element.classList.add(cssClassName.RTL);\n }\n else {\n this.element.classList.remove(cssClassName.RTL);\n }\n break;\n case 'content': {\n var node = getTextNode(this.element);\n if (!node) {\n this.element.classList.remove(cssClassName.ICONBTN);\n }\n if (!isBlazor() || (isBlazor() && !this.isServerRendered && this.getModuleName() !== 'progress-btn')) {\n if (this.enableHtmlSanitizer) {\n newProp.content = SanitizeHtmlHelper.sanitize(newProp.content);\n }\n this.element.innerHTML = newProp.content;\n this.setIconCss();\n }\n break;\n }\n case 'isToggle':\n if (newProp.isToggle) {\n EventHandler.add(this.element, 'click', this.btnClickHandler, this);\n }\n else {\n EventHandler.remove(this.element, 'click', this.btnClickHandler);\n removeClass([this.element], ['e-active']);\n }\n break;\n }\n }\n };\n /**\n * Click the button element\n * its native method\n *\n * @public\n * @returns {void}\n */\n Button.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to Button\n * its native method\n *\n * @public\n * @returns {void}\n */\n Button.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([\n Property('Left')\n ], Button.prototype, \"iconPosition\", void 0);\n __decorate([\n Property('')\n ], Button.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"disabled\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"isPrimary\", void 0);\n __decorate([\n Property('')\n ], Button.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], Button.prototype, \"content\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"isToggle\", void 0);\n __decorate([\n Property()\n ], Button.prototype, \"locale\", void 0);\n __decorate([\n Property(true)\n ], Button.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Event()\n ], Button.prototype, \"created\", void 0);\n Button = __decorate([\n NotifyPropertyChanges\n ], Button);\n return Button;\n}(Component));\nexport { Button };\n","/**\n * Resize library\n */\nimport { isNullOrUndefined as isNOU, createElement, EventHandler, detach, Browser } from '@syncfusion/ej2-base';\nvar elementClass = ['north-west', 'north', 'north-east', 'west', 'east', 'south-west', 'south', 'south-east'];\nvar RESIZE_HANDLER = 'e-resize-handle';\nvar FOCUSED_HANDLER = 'e-focused-handle';\nvar DIALOG_RESIZABLE = 'e-dlg-resizable';\nvar RESTRICT_LEFT = ['e-restrict-left'];\nvar RESIZE_WITHIN_VIEWPORT = 'e-resize-viewport';\nvar dialogBorderResize = ['north', 'west', 'east', 'south'];\nvar targetElement;\nvar selectedHandler;\nvar originalWidth = 0;\nvar originalHeight = 0;\nvar originalX = 0;\nvar originalY = 0;\nvar originalMouseX = 0;\nvar originalMouseY = 0;\nvar minHeight;\nvar maxHeight;\nvar minWidth;\nvar maxWidth;\nvar containerElement;\nvar resizeStart = null;\nvar resize = null;\nvar resizeEnd = null;\nvar resizeWestWidth;\nvar setLeft = true;\nvar previousWidth = 0;\nvar setWidth = true;\n// eslint-disable-next-line\nvar proxy;\n/**\n *\n * @param {ResizeArgs} args - specifies the resize args\n * @returns {void}\n */\nexport function createResize(args) {\n resizeStart = args.resizeBegin;\n resize = args.resizing;\n resizeEnd = args.resizeComplete;\n targetElement = getDOMElement(args.element);\n containerElement = getDOMElement(args.boundary);\n var directions = args.direction.split(' ');\n for (var i = 0; i < directions.length; i++) {\n if (dialogBorderResize.indexOf(directions[i]) >= 0 && directions[i]) {\n setBorderResizeElm(directions[i]);\n }\n else if (directions[i].trim() !== '') {\n var resizeHandler = createElement('div', { className: 'e-icons ' + RESIZE_HANDLER + ' ' + 'e-' + directions[i] });\n targetElement.appendChild(resizeHandler);\n }\n }\n minHeight = args.minHeight;\n minWidth = args.minWidth;\n maxWidth = args.maxWidth;\n maxHeight = args.maxHeight;\n if (args.proxy && args.proxy.element && args.proxy.element.classList.contains('e-dialog')) {\n wireEvents(args.proxy);\n }\n else {\n wireEvents();\n }\n}\n/**\n *\n * @param {string} direction - specifies the string\n * @returns {void}\n */\nfunction setBorderResizeElm(direction) {\n calculateValues();\n var borderBottom = createElement('span', {\n attrs: {\n 'unselectable': 'on', 'contenteditable': 'false'\n }\n });\n borderBottom.setAttribute('class', 'e-dialog-border-resize e-' + direction);\n if (direction === 'south') {\n borderBottom.style.height = '2px';\n borderBottom.style.width = '100%';\n borderBottom.style.bottom = '0px';\n borderBottom.style.left = '0px';\n }\n if (direction === 'north') {\n borderBottom.style.height = '2px';\n borderBottom.style.width = '100%';\n borderBottom.style.top = '0px';\n borderBottom.style.left = '0px';\n }\n if (direction === 'east') {\n borderBottom.style.height = '100%';\n borderBottom.style.width = '2px';\n borderBottom.style.right = '0px';\n borderBottom.style.top = '0px';\n }\n if (direction === 'west') {\n borderBottom.style.height = '100%';\n borderBottom.style.width = '2px';\n borderBottom.style.left = '0px';\n borderBottom.style.top = '0px';\n }\n targetElement.appendChild(borderBottom);\n}\n/**\n *\n * @param {string} element - specifies the element\n * @returns {HTMLElement} - returns the element\n */\nfunction getDOMElement(element) {\n var domElement;\n if (!isNOU(element)) {\n if (typeof (element) === 'string') {\n domElement = document.querySelector(element);\n }\n else {\n domElement = element;\n }\n }\n return domElement;\n}\nfunction wireEvents(args) {\n var context = args || this;\n var resizers = targetElement.querySelectorAll('.' + RESIZE_HANDLER);\n for (var i = 0; i < resizers.length; i++) {\n selectedHandler = resizers[i];\n EventHandler.add(selectedHandler, 'mousedown', onMouseDown, context);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(selectedHandler, eventName, onTouchStart, context);\n }\n var borderResizers = targetElement.querySelectorAll('.e-dialog-border-resize');\n if (!isNOU(borderResizers)) {\n for (var i = 0; i < borderResizers.length; i++) {\n selectedHandler = borderResizers[i];\n EventHandler.add(selectedHandler, 'mousedown', onMouseDown, context);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(selectedHandler, eventName, onTouchStart, context);\n }\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {string} e - specifies the string\n * @returns {string} - returns the string\n */\nfunction getEventType(e) {\n return (e.indexOf('mouse') > -1) ? 'mouse' : 'touch';\n}\n/* istanbul ignore next */\n/**\n *\n * @param {MouseEvent} e - specifies the mouse event\n * @returns {void}\n */\nfunction onMouseDown(e) {\n e.preventDefault();\n targetElement = e.target.parentElement;\n calculateValues();\n originalMouseX = e.pageX;\n originalMouseY = e.pageY;\n e.target.classList.add(FOCUSED_HANDLER);\n if (!isNOU(resizeStart)) {\n var proxy_1 = null || this;\n if (resizeStart(e, proxy_1) === true) {\n return;\n }\n }\n if (this.targetEle && targetElement && targetElement.querySelector('.' + DIALOG_RESIZABLE)) {\n containerElement = this.target === ('body' || 'document.body' || document.body) ? null : this.targetEle;\n maxWidth = this.targetEle.clientWidth;\n maxHeight = this.targetEle.clientHeight;\n }\n var target = (isNOU(containerElement)) ? document : containerElement;\n EventHandler.add(target, 'mousemove', onMouseMove, this);\n EventHandler.add(document, 'mouseup', onMouseUp, this);\n for (var i = 0; i < RESTRICT_LEFT.length; i++) {\n if (targetElement.classList.contains(RESTRICT_LEFT[i])) {\n setLeft = false;\n }\n else {\n setLeft = true;\n }\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {MouseEvent} e - specifies the event\n * @returns {void}\n */\nfunction onMouseUp(e) {\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n var target = (isNOU(containerElement)) ? document : containerElement;\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.remove(target, 'mousemove', onMouseMove);\n EventHandler.remove(target, touchMoveEvent, onMouseMove);\n EventHandler.remove(target, eventName, onMouseMove);\n if (!isNOU(document.body.querySelector('.' + FOCUSED_HANDLER))) {\n document.body.querySelector('.' + FOCUSED_HANDLER).classList.remove(FOCUSED_HANDLER);\n }\n if (!isNOU(resizeEnd)) {\n var proxy_2 = null || this;\n resizeEnd(e, proxy_2);\n }\n EventHandler.remove(document, 'mouseup', onMouseUp);\n EventHandler.remove(document, touchEndEvent, onMouseUp);\n}\n/* istanbul ignore next */\n/**\n * @returns {void}\n */\nfunction calculateValues() {\n originalWidth = parseFloat(getComputedStyle(targetElement, null).getPropertyValue('width').replace('px', ''));\n originalHeight = parseFloat(getComputedStyle(targetElement, null).getPropertyValue('height').replace('px', ''));\n originalX = targetElement.getBoundingClientRect().left;\n originalY = targetElement.getBoundingClientRect().top;\n}\n/* istanbul ignore next */\n/**\n *\n * @param {MouseEvent} e - specifies the event\n * @returns {void}\n */\nfunction onTouchStart(e) {\n targetElement = e.target.parentElement;\n calculateValues();\n var dialogResizeElement = targetElement.classList.contains('e-dialog');\n if ((e.target.classList.contains(RESIZE_HANDLER) || e.target.classList.contains('e-dialog-border-resize')) && dialogResizeElement) {\n e.target.classList.add(FOCUSED_HANDLER);\n }\n var coordinates = e.touches ? e.changedTouches[0] : e;\n originalMouseX = coordinates.pageX;\n originalMouseY = coordinates.pageY;\n if (!isNOU(resizeStart)) {\n var proxy_3 = null || this;\n if (resizeStart(e, proxy_3) === true) {\n return;\n }\n }\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n var target = (isNOU(containerElement)) ? document : containerElement;\n EventHandler.add(target, touchMoveEvent, onMouseMove, this);\n EventHandler.add(document, touchEndEvent, onMouseUp, this);\n}\n/* istanbul ignore next */\n/**\n *\n * @param {MouseEvent} e - specifies the event\n * @returns {void}\n */\nfunction onMouseMove(e) {\n if (e.target.classList.contains(RESIZE_HANDLER) && e.target.classList.contains(FOCUSED_HANDLER)) {\n selectedHandler = e.target;\n }\n else if (!isNOU(document.body.querySelector('.' + FOCUSED_HANDLER))) {\n selectedHandler = document.body.querySelector('.' + FOCUSED_HANDLER);\n }\n if (!isNOU(selectedHandler)) {\n var resizeTowards = '';\n for (var i = 0; i < elementClass.length; i++) {\n if (selectedHandler.classList.contains('e-' + elementClass[i])) {\n resizeTowards = elementClass[i];\n }\n }\n if (!isNOU(resize)) {\n var proxy_4 = null || this;\n resize(e, proxy_4);\n }\n switch (resizeTowards) {\n case 'south':\n resizeSouth(e);\n break;\n case 'north':\n resizeNorth(e);\n break;\n case 'west':\n resizeWest(e);\n break;\n case 'east':\n resizeEast(e);\n break;\n case 'south-east':\n resizeSouth(e);\n resizeEast(e);\n break;\n case 'south-west':\n resizeSouth(e);\n resizeWest(e);\n break;\n case 'north-east':\n resizeNorth(e);\n resizeEast(e);\n break;\n case 'north-west':\n resizeNorth(e);\n resizeWest(e);\n break;\n default: break;\n }\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {HTMLElement} element - specifies the eleemnt\n * @returns {ClientRect} - returns the client\n */\nfunction getClientRectValues(element) {\n return element.getBoundingClientRect();\n}\n/**\n * @param {MouseEvent | TouchEvent} e - specifies the event\n * @returns {void}\n */\nfunction resizeSouth(e) {\n var documentHeight = document.documentElement.clientHeight;\n var calculateValue = false;\n var coordinates = e.touches ? e.changedTouches[0] : e;\n var currentpageY = coordinates.pageY;\n var targetRectValues = getClientRectValues(targetElement);\n var containerRectValues;\n if (!isNOU(containerElement)) {\n containerRectValues = getClientRectValues(containerElement);\n }\n if (!isNOU(containerElement)) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && ((documentHeight - currentpageY) >= 0 || (targetRectValues.top < 0))) {\n calculateValue = true;\n }\n var calculatedHeight = originalHeight + (currentpageY - originalMouseY);\n calculatedHeight = (calculatedHeight > minHeight) ? calculatedHeight : minHeight;\n var containerTop = 0;\n if (!isNOU(containerElement)) {\n containerTop = containerRectValues.top;\n }\n var borderValue = isNOU(containerElement) ? 0 : containerElement.offsetHeight - containerElement.clientHeight;\n var topWithoutborder = (targetRectValues.top - containerTop) - (borderValue / 2);\n topWithoutborder = (topWithoutborder < 0) ? 0 : topWithoutborder;\n if (targetRectValues.top > 0 && (topWithoutborder + calculatedHeight) > maxHeight) {\n calculateValue = false;\n if (targetElement.classList.contains(RESIZE_WITHIN_VIEWPORT)) {\n return;\n }\n targetElement.style.height = (maxHeight - parseInt(topWithoutborder.toString(), 10)) + 'px';\n return;\n }\n var targetTop = 0;\n if (calculateValue) {\n if (targetRectValues.top < 0 && (documentHeight + (targetRectValues.height + targetRectValues.top) > 0)) {\n targetTop = targetRectValues.top;\n if ((calculatedHeight + targetTop) <= 30) {\n calculatedHeight = (targetRectValues.height - (targetRectValues.height + targetRectValues.top)) + 30;\n }\n }\n if (((calculatedHeight + targetRectValues.top) >= maxHeight)) {\n targetElement.style.height = targetRectValues.height +\n (documentHeight - (targetRectValues.height + targetRectValues.top)) + 'px';\n }\n var calculatedTop = (isNOU(containerElement)) ? targetTop : topWithoutborder;\n if (calculatedHeight >= minHeight && ((calculatedHeight + calculatedTop) <= maxHeight)) {\n targetElement.style.height = calculatedHeight + 'px';\n }\n }\n}\n/**\n * Resizes the element towards the north direction.\n *\n * @param {MouseEvent | TouchEvent} e - The event object.\n * @returns {void}\n */\nfunction resizeNorth(e) {\n var calculateValue = false;\n var boundaryRectValues;\n var pageY = (getEventType(e.type) === 'mouse') ? e.pageY : e.touches[0].pageY;\n var targetRectValues = getClientRectValues(targetElement);\n if (!isNOU(containerElement)) {\n boundaryRectValues = getClientRectValues(containerElement);\n }\n if (!isNOU(containerElement) && (targetRectValues.top - boundaryRectValues.top) > 0) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && pageY > 0) {\n calculateValue = true;\n }\n var currentHeight = originalHeight - (pageY - originalMouseY);\n if (calculateValue) {\n if (currentHeight >= minHeight && currentHeight <= maxHeight) {\n var containerTop = 0;\n if (!isNOU(containerElement)) {\n containerTop = boundaryRectValues.top;\n }\n var top_1 = (originalY - containerTop) + (pageY - originalMouseY);\n top_1 = top_1 > 0 ? top_1 : 1;\n targetElement.style.height = currentHeight + 'px';\n targetElement.style.top = top_1 + 'px';\n }\n }\n}\n/**\n * Resizes the element towards the west direction.\n *\n * @param {MouseEvent | TouchEvent} e - The event object.\n * @returns {void}\n */\nfunction resizeWest(e) {\n var documentWidth = document.documentElement.clientWidth;\n var calculateValue = false;\n var rectValues;\n if (!isNOU(containerElement)) {\n rectValues = getClientRectValues(containerElement);\n }\n var pageX = (getEventType(e.type) === 'mouse') ? e.pageX : e.touches[0].pageX;\n var targetRectValues = getClientRectValues(targetElement);\n var borderValue = isNOU(containerElement) ? 0 : containerElement.offsetWidth - containerElement.clientWidth;\n /* eslint-disable */\n var left = isNOU(containerElement) ? 0 : rectValues.left;\n var containerWidth = isNOU(containerElement) ? 0 : rectValues.width;\n /* eslint-enable */\n if (isNOU(resizeWestWidth)) {\n if (!isNOU(containerElement)) {\n resizeWestWidth = (((targetRectValues.left - left) - borderValue / 2)) + targetRectValues.width;\n resizeWestWidth = resizeWestWidth + (containerWidth - borderValue - resizeWestWidth);\n }\n else {\n resizeWestWidth = documentWidth;\n }\n }\n if (!isNOU(containerElement) &&\n (Math.floor((targetRectValues.left - rectValues.left) + targetRectValues.width +\n (rectValues.right - targetRectValues.right)) - borderValue) <= maxWidth) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && pageX >= 0) {\n calculateValue = true;\n }\n var calculatedWidth = originalWidth - (pageX - originalMouseX);\n if (setLeft) {\n calculatedWidth = (calculatedWidth > resizeWestWidth) ? resizeWestWidth : calculatedWidth;\n }\n if (calculateValue) {\n if (calculatedWidth >= minWidth && calculatedWidth <= maxWidth) {\n var containerLeft = 0;\n if (!isNOU(containerElement)) {\n containerLeft = rectValues.left;\n }\n var left_1 = (originalX - containerLeft) + (pageX - originalMouseX);\n left_1 = (left_1 > 0) ? left_1 : 1;\n if (calculatedWidth !== previousWidth && setWidth) {\n targetElement.style.width = calculatedWidth + 'px';\n }\n if (setLeft) {\n targetElement.style.left = left_1 + 'px';\n if (left_1 === 1) {\n setWidth = false;\n }\n else {\n setWidth = true;\n }\n }\n }\n }\n previousWidth = calculatedWidth;\n}\n/**\n * Resizes the element towards the east direction.\n *\n * @param {MouseEvent | TouchEvent} e - The event object.\n * @returns {void}\n */\nfunction resizeEast(e) {\n var documentWidth = document.documentElement.clientWidth;\n var calculateValue = false;\n var containerRectValues;\n if (!isNOU(containerElement)) {\n containerRectValues = getClientRectValues(containerElement);\n }\n var coordinates = e.touches ? e.changedTouches[0] : e;\n var pageX = coordinates.pageX;\n var targetRectValues = getClientRectValues(targetElement);\n if (!isNOU(containerElement) && (((targetRectValues.left - containerRectValues.left) + targetRectValues.width) <= maxWidth\n || (targetRectValues.right - containerRectValues.left) >= targetRectValues.width)) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && (documentWidth - pageX) > 0) {\n calculateValue = true;\n }\n var calculatedWidth = originalWidth + (pageX - originalMouseX);\n var containerLeft = 0;\n if (!isNOU(containerElement)) {\n containerLeft = containerRectValues.left;\n }\n if (((targetRectValues.left - containerLeft) + calculatedWidth) > maxWidth) {\n calculateValue = false;\n if (targetElement.classList.contains(RESIZE_WITHIN_VIEWPORT)) {\n return;\n }\n targetElement.style.width = maxWidth - (targetRectValues.left - containerLeft) + 'px';\n }\n if (calculateValue) {\n if (calculatedWidth >= minWidth && calculatedWidth <= maxWidth) {\n targetElement.style.width = calculatedWidth + 'px';\n }\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {number} minimumHeight - specifies the number\n * @returns {void}\n */\nexport function setMinHeight(minimumHeight) {\n minHeight = minimumHeight;\n}\n/**\n *\n * @param {number} value - specifies the number value\n * @returns {void}\n */\nexport function setMaxWidth(value) {\n maxWidth = value;\n}\n/**\n *\n * @param {number} value - specifies the number value\n * @returns {void}\n */\nexport function setMaxHeight(value) {\n maxHeight = value;\n}\n/**\n * @returns {void}\n */\nexport function removeResize() {\n var handlers = targetElement.querySelectorAll('.' + RESIZE_HANDLER);\n for (var i = 0; i < handlers.length; i++) {\n detach(handlers[i]);\n }\n var borderResizers = targetElement.querySelectorAll('.e-dialog-border-resize');\n if (!isNOU(borderResizers)) {\n for (var i = 0; i < borderResizers.length; i++) {\n detach(borderResizers[i]);\n }\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, Event, Collection, L10n, Complex, compile, createElement, animationMode } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, detach, attributes, prepend, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, isBlazor } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit, append, EventHandler, Draggable, extend } from '@syncfusion/ej2-base';\nimport { SanitizeHtmlHelper, Browser } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Popup, PositionData, getZindexPartial } from '../popup/popup';\nimport { createResize, removeResize, setMinHeight, setMaxWidth, setMaxHeight } from '../common/resize';\nvar ButtonProps = /** @class */ (function (_super) {\n __extends(ButtonProps, _super);\n function ButtonProps() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], ButtonProps.prototype, \"isFlat\", void 0);\n __decorate([\n Property()\n ], ButtonProps.prototype, \"buttonModel\", void 0);\n __decorate([\n Property('Button')\n ], ButtonProps.prototype, \"type\", void 0);\n __decorate([\n Event()\n ], ButtonProps.prototype, \"click\", void 0);\n return ButtonProps;\n}(ChildProperty));\nexport { ButtonProps };\n/**\n * Configures the animation properties for both open and close the dialog.\n */\nvar AnimationSettings = /** @class */ (function (_super) {\n __extends(AnimationSettings, _super);\n function AnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Fade')\n ], AnimationSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(400)\n ], AnimationSettings.prototype, \"duration\", void 0);\n __decorate([\n Property(0)\n ], AnimationSettings.prototype, \"delay\", void 0);\n return AnimationSettings;\n}(ChildProperty));\nexport { AnimationSettings };\nvar ROOT = 'e-dialog';\nvar RTL = 'e-rtl';\nvar DLG_HEADER_CONTENT = 'e-dlg-header-content';\nvar DLG_HEADER = 'e-dlg-header';\nvar DLG_FOOTER_CONTENT = 'e-footer-content';\nvar MODAL_DLG = 'e-dlg-modal';\nvar DLG_CONTENT = 'e-dlg-content';\nvar DLG_CLOSE_ICON = 'e-icon-dlg-close';\nvar DLG_OVERLAY = 'e-dlg-overlay';\nvar DLG_TARGET = 'e-dlg-target';\nvar DLG_CONTAINER = 'e-dlg-container';\nvar SCROLL_DISABLED = 'e-scroll-disabled';\nvar DLG_PRIMARY_BUTTON = 'e-primary';\nvar ICON = 'e-icons';\nvar POPUP_ROOT = 'e-popup';\nvar DEVICE = 'e-device';\nvar FULLSCREEN = 'e-dlg-fullscreen';\nvar DLG_CLOSE_ICON_BTN = 'e-dlg-closeicon-btn';\nvar DLG_HIDE = 'e-popup-close';\nvar DLG_SHOW = 'e-popup-open';\nvar DLG_UTIL_DEFAULT_TITLE = 'Information';\nvar DLG_UTIL_ROOT = 'e-scroll-disabled';\nvar DLG_UTIL_ALERT = 'e-alert-dialog';\nvar DLG_UTIL_CONFIRM = 'e-confirm-dialog';\nvar DLG_RESIZABLE = 'e-dlg-resizable';\nvar DLG_RESTRICT_LEFT_VALUE = 'e-restrict-left';\nvar DLG_RESTRICT_WIDTH_VALUE = 'e-resize-viewport';\nvar DLG_REF_ELEMENT = 'e-dlg-ref-element';\nvar DLG_USER_ACTION_CLOSED = 'user action';\nvar DLG_CLOSE_ICON_CLOSED = 'close icon';\nvar DLG_ESCAPE_CLOSED = 'escape';\nvar DLG_OVERLAYCLICK_CLOSED = 'overlayClick';\nvar DLG_DRAG = 'e-draggable';\n/**\n * Represents the dialog component that displays the information and get input from the user.\n * Two types of dialog components are `Modal and Modeless (non-modal)` depending on its interaction with parent application.\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Dialog = /** @class */ (function (_super) {\n __extends(Dialog, _super);\n /*\n * * Constructor for creating the widget\n *\n * @param\n * @param\n * @hidden\n */\n function Dialog(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.needsID = true;\n return _this;\n }\n /**\n *Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.render = function () {\n this.initialize();\n this.initRender();\n this.wireEvents();\n if (this.width === '100%') {\n this.element.style.width = '';\n }\n if (this.minHeight !== '') {\n this.element.style.minHeight = formatUnit(this.minHeight);\n }\n if (this.enableResize) {\n this.setResize();\n if (this.animationSettings.effect === 'None') {\n this.getMinHeight();\n }\n }\n this.renderComplete();\n };\n Dialog.prototype.initializeValue = function () {\n this.dlgClosedBy = DLG_USER_ACTION_CLOSED;\n };\n /**\n *Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.preRender = function () {\n var _this = this;\n this.initializeValue();\n this.headerContent = null;\n this.allowMaxHeight = true;\n this.preventVisibility = true;\n this.clonedEle = this.element.cloneNode(true);\n this.closeIconClickEventHandler = function (event) {\n _this.dlgClosedBy = DLG_CLOSE_ICON_CLOSED;\n _this.hide(event);\n };\n this.dlgOverlayClickEventHandler = function (event) {\n _this.dlgClosedBy = DLG_OVERLAYCLICK_CLOSED;\n event.preventFocus = false;\n _this.trigger('overlayClick', event, function (overlayClickEventArgs) {\n if (!overlayClickEventArgs.preventFocus) {\n _this.focusContent();\n }\n _this.dlgClosedBy = DLG_USER_ACTION_CLOSED;\n });\n };\n var localeText = { close: 'Close' };\n this.l10n = new L10n('dialog', localeText, this.locale);\n this.checkPositionData();\n if (isNullOrUndefined(this.target)) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.target = document.body;\n this.isProtectedOnChange = prevOnChange;\n }\n };\n Dialog.prototype.updatePersistData = function () {\n if (this.enablePersistence) {\n this.setProperties({ width: parseFloat(this.element.style.width), height: parseFloat(this.element.style.height),\n position: { X: parseFloat(this.dragObj.element.style.left), Y: parseFloat(this.dragObj.element.style.top) } }, true);\n }\n };\n Dialog.prototype.isNumberValue = function (value) {\n var isNumber = /^[-+]?\\d*\\.?\\d+$/.test(value);\n return isNumber;\n };\n Dialog.prototype.checkPositionData = function () {\n if (!isNullOrUndefined(this.position)) {\n if (!isNullOrUndefined(this.position.X) && (typeof (this.position.X) !== 'number')) {\n var isNumber = this.isNumberValue(this.position.X);\n if (isNumber) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.position.X = parseFloat(this.position.X);\n this.isProtectedOnChange = prevOnChange;\n }\n }\n if (!isNullOrUndefined(this.position.Y) && (typeof (this.position.Y) !== 'number')) {\n var isNumber = this.isNumberValue(this.position.Y);\n if (isNumber) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.position.Y = parseFloat(this.position.Y);\n this.isProtectedOnChange = prevOnChange;\n }\n }\n }\n };\n Dialog.prototype.getEle = function (list, selector) {\n var element = undefined;\n for (var i = 0; i < list.length; i++) {\n if (list[i].classList.contains(selector)) {\n element = list[i];\n break;\n }\n }\n return element;\n };\n /* istanbul ignore next */\n Dialog.prototype.getMinHeight = function () {\n var computedHeaderHeight = '0px';\n var computedFooterHeight = '0px';\n if (!isNullOrUndefined(this.element.querySelector('.' + DLG_HEADER_CONTENT))) {\n computedHeaderHeight = getComputedStyle(this.headerContent).height;\n }\n var footerEle = this.getEle(this.element.children, DLG_FOOTER_CONTENT);\n if (!isNullOrUndefined(footerEle)) {\n computedFooterHeight = getComputedStyle(footerEle).height;\n }\n var headerHeight = parseInt(computedHeaderHeight.slice(0, computedHeaderHeight.indexOf('p')), 10);\n var footerHeight = parseInt(computedFooterHeight.slice(0, computedFooterHeight.indexOf('p')), 10);\n setMinHeight(headerHeight + 30 + (isNaN(footerHeight) ? 0 : footerHeight));\n return (headerHeight + 30 + footerHeight);\n };\n Dialog.prototype.onResizeStart = function (args, dialogObj) {\n dialogObj.trigger('resizeStart', args);\n return args.cancel;\n };\n Dialog.prototype.onResizing = function (args, dialogObj) {\n dialogObj.trigger('resizing', args);\n };\n Dialog.prototype.onResizeComplete = function (args, dialogObj) {\n dialogObj.trigger('resizeStop', args);\n this.updatePersistData();\n };\n Dialog.prototype.setResize = function () {\n if (this.enableResize) {\n if (this.isBlazorServerRender() && !isNullOrUndefined(this.element.querySelector('.e-icons.e-resize-handle'))) {\n return;\n }\n this.element.classList.add(DLG_RESIZABLE);\n var computedHeight = getComputedStyle(this.element).minHeight;\n var computedWidth = getComputedStyle(this.element).minWidth;\n var direction = '';\n for (var i = 0; i < this.resizeHandles.length; i++) {\n if (this.resizeHandles[i] === 'All') {\n direction = 'south north east west north-east north-west south-east south-west';\n break;\n }\n else {\n var directionValue = '';\n switch (this.resizeHandles[i].toString()) {\n case 'SouthEast':\n directionValue = 'south-east';\n break;\n case 'SouthWest':\n directionValue = 'south-west';\n break;\n case 'NorthEast':\n directionValue = 'north-east';\n break;\n case 'NorthWest':\n directionValue = 'north-west';\n break;\n default:\n directionValue = this.resizeHandles[i].toString();\n break;\n }\n direction += directionValue.toLocaleLowerCase() + ' ';\n }\n }\n if (this.enableRtl && direction.trim() === 'south-east') {\n direction = 'south-west';\n }\n else if (this.enableRtl && direction.trim() === 'south-west') {\n direction = 'south-east';\n }\n if (this.isModal && this.enableRtl) {\n this.element.classList.add(DLG_RESTRICT_LEFT_VALUE);\n }\n else if (this.isModal && this.target === document.body) {\n this.element.classList.add(DLG_RESTRICT_WIDTH_VALUE);\n }\n createResize({\n element: this.element,\n direction: direction,\n minHeight: parseInt(computedHeight.slice(0, computedWidth.indexOf('p')), 10),\n maxHeight: this.targetEle.clientHeight,\n minWidth: parseInt(computedWidth.slice(0, computedWidth.indexOf('p')), 10),\n maxWidth: this.targetEle.clientWidth,\n boundary: this.target === document.body ? null : this.targetEle,\n resizeBegin: this.onResizeStart.bind(this),\n resizeComplete: this.onResizeComplete.bind(this),\n resizing: this.onResizing.bind(this),\n proxy: this\n });\n this.wireWindowResizeEvent();\n }\n else {\n removeResize();\n this.unWireWindowResizeEvent();\n if (this.isModal) {\n this.element.classList.remove(DLG_RESTRICT_LEFT_VALUE);\n }\n else {\n this.element.classList.remove(DLG_RESTRICT_WIDTH_VALUE);\n }\n this.element.classList.remove(DLG_RESIZABLE);\n }\n };\n Dialog.prototype.getFocusElement = function (target) {\n var value = 'input,select,textarea,button:enabled,a,[contenteditable=\"true\"],[tabindex]';\n var items = target.querySelectorAll(value);\n return { element: items[items.length - 1] };\n };\n /* istanbul ignore next */\n Dialog.prototype.keyDown = function (event) {\n var _this = this;\n if (event.keyCode === 9) {\n if (this.isModal) {\n var buttonObj = void 0;\n if (!isNullOrUndefined(this.btnObj)) {\n buttonObj = this.btnObj[this.btnObj.length - 1];\n }\n if ((isNullOrUndefined(this.btnObj)) && (!isNullOrUndefined(this.ftrTemplateContent))) {\n buttonObj = this.getFocusElement(this.ftrTemplateContent);\n }\n if (isNullOrUndefined(this.btnObj) && isNullOrUndefined(this.ftrTemplateContent) && !isNullOrUndefined(this.contentEle)) {\n buttonObj = this.getFocusElement(this.contentEle);\n }\n if (!isNullOrUndefined(buttonObj) && document.activeElement === buttonObj.element && !event.shiftKey) {\n event.preventDefault();\n this.focusableElements(this.element).focus();\n }\n if (document.activeElement === this.focusableElements(this.element) && event.shiftKey) {\n event.preventDefault();\n if (!isNullOrUndefined(buttonObj)) {\n buttonObj.element.focus();\n }\n }\n }\n }\n var element = document.activeElement;\n var isTagName = (['input', 'textarea'].indexOf(element.tagName.toLowerCase()) > -1);\n var isContentEdit = false;\n if (!isTagName) {\n isContentEdit = element.hasAttribute('contenteditable') && element.getAttribute('contenteditable') === 'true';\n }\n if (event.keyCode === 27 && this.closeOnEscape) {\n this.dlgClosedBy = DLG_ESCAPE_CLOSED;\n var query = document.querySelector('.e-popup-open:not(.e-dialog)');\n // 'document.querySelector' is used to find the elements rendered based on body\n if (!(!isNullOrUndefined(query) && !query.classList.contains('e-toolbar-pop'))) {\n this.hide(event);\n }\n }\n if ((event.keyCode === 13 && !event.ctrlKey && element.tagName.toLowerCase() !== 'textarea' &&\n isTagName && !isNullOrUndefined(this.primaryButtonEle)) ||\n (event.keyCode === 13 && event.ctrlKey && (element.tagName.toLowerCase() === 'textarea' ||\n isContentEdit)) && !isNullOrUndefined(this.primaryButtonEle)) {\n var buttonIndex_1;\n var firstPrimary = this.buttons.some(function (data, index) {\n buttonIndex_1 = index;\n var buttonModel = data.buttonModel;\n return !isNullOrUndefined(buttonModel) && buttonModel.isPrimary === true;\n });\n if (firstPrimary && typeof (this.buttons[buttonIndex_1].click) === 'function') {\n setTimeout(function () {\n _this.buttons[buttonIndex_1].click.call(_this, event);\n });\n }\n }\n };\n /**\n * Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.initialize = function () {\n if (!isNullOrUndefined(this.target)) {\n this.targetEle = ((typeof this.target) === 'string') ?\n document.querySelector(this.target) : this.target;\n }\n if (!this.isBlazorServerRender()) {\n addClass([this.element], ROOT);\n }\n if (Browser.isDevice) {\n addClass([this.element], DEVICE);\n }\n if (!this.isBlazorServerRender()) {\n this.setCSSClass();\n }\n this.setMaxHeight();\n };\n /**\n * Initialize the rendering\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.initRender = function () {\n var _this = this;\n this.initialRender = true;\n if (!this.isBlazorServerRender()) {\n attributes(this.element, { role: 'dialog' });\n }\n if (this.zIndex === 1000) {\n this.setzIndex(this.element, false);\n this.calculatezIndex = true;\n }\n else {\n this.calculatezIndex = false;\n }\n if (this.isBlazorServerRender() && isNullOrUndefined(this.headerContent)) {\n this.headerContent = this.element.getElementsByClassName('e-dlg-header-content')[0];\n }\n if (this.isBlazorServerRender() && isNullOrUndefined(this.contentEle)) {\n this.contentEle = this.element.querySelector('#' + this.element.id + '_dialog-content');\n }\n if (!this.isBlazorServerRender()) {\n this.setTargetContent();\n if (this.header !== '' && !isNullOrUndefined(this.header)) {\n this.setHeader();\n }\n this.renderCloseIcon();\n this.setContent();\n if (this.footerTemplate !== '' && !isNullOrUndefined(this.footerTemplate)) {\n this.setFooterTemplate();\n }\n else if (!isNullOrUndefined(this.buttons[0].buttonModel)) {\n this.setButton();\n }\n }\n if (this.isBlazorServerRender()) {\n if (!isNullOrUndefined(this.buttons[0].buttonModel) && this.footerTemplate === '') {\n this.setButton();\n }\n }\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n if (!this.isBlazorServerRender()) {\n attributes(this.element, { 'aria-modal': (this.isModal ? 'true' : 'false') });\n if (this.isModal) {\n this.setIsModal();\n }\n }\n if (this.isBlazorServerRender() && isNullOrUndefined(this.dlgContainer)) {\n this.dlgContainer = this.element.parentElement;\n for (var i = 0, childNodes = this.dlgContainer.children; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains('e-dlg-overlay')) {\n this.dlgOverlay = childNodes[i];\n }\n }\n }\n if (this.element.classList.contains(DLG_UTIL_ALERT) !== true && this.element.classList.contains(DLG_UTIL_CONFIRM) !== true\n && !isNullOrUndefined(this.element.parentElement)) {\n var parentEle = this.isModal ? this.dlgContainer.parentElement : this.element.parentElement;\n this.refElement = this.createElement('div', { className: DLG_REF_ELEMENT });\n parentEle.insertBefore(this.refElement, (this.isModal ? this.dlgContainer : this.element));\n }\n if (!isNullOrUndefined(this.targetEle)) {\n if (this.isModal) {\n this.targetEle.appendChild(this.dlgContainer);\n }\n else {\n this.targetEle.appendChild(this.element);\n }\n }\n this.popupObj = new Popup(this.element, {\n height: this.height,\n width: this.width,\n zIndex: this.zIndex,\n relateTo: this.target,\n actionOnScroll: 'none',\n enableRtl: this.enableRtl,\n // eslint-disable-next-line\n open: function (event) {\n var eventArgs = {\n container: _this.isModal ? _this.dlgContainer : _this.element,\n element: _this.element,\n target: _this.target,\n preventFocus: false\n };\n if (_this.enableResize) {\n _this.resetResizeIcon();\n }\n _this.trigger('open', eventArgs, function (openEventArgs) {\n if (!openEventArgs.preventFocus) {\n _this.focusContent();\n }\n });\n },\n // eslint-disable-next-line\n close: function (event) {\n if (_this.isModal) {\n addClass([_this.dlgOverlay], 'e-fade');\n }\n _this.unBindEvent(_this.element);\n if (_this.isModal) {\n _this.dlgContainer.style.display = 'none';\n }\n _this.trigger('close', _this.closeArgs);\n var activeEle = document.activeElement;\n if (!isNullOrUndefined(activeEle) && !isNullOrUndefined((activeEle).blur)) {\n activeEle.blur();\n }\n if (!isNullOrUndefined(_this.storeActiveElement) && !isNullOrUndefined(_this.storeActiveElement.focus)) {\n _this.storeActiveElement.focus();\n }\n }\n });\n this.positionChange();\n this.setEnableRTL();\n if (!this.isBlazorServerRender()) {\n addClass([this.element], DLG_HIDE);\n if (this.isModal) {\n this.setOverlayZindex();\n }\n }\n if (this.visible) {\n this.show();\n if (this.isModal) {\n var targetType = this.getTargetContainer(this.target);\n if (targetType instanceof Element) {\n var computedStyle = window.getComputedStyle(targetType);\n if (computedStyle.getPropertyValue('direction') === 'rtl') {\n this.setPopupPosition();\n }\n }\n }\n }\n else {\n if (this.isModal) {\n this.dlgOverlay.style.display = 'none';\n }\n }\n this.initialRender = false;\n };\n Dialog.prototype.getTargetContainer = function (targetValue) {\n var targetElement = null;\n if (typeof targetValue === 'string') {\n if (targetValue.startsWith('#')) {\n targetElement = document.getElementById(targetValue.substring(1));\n }\n else if (targetValue.startsWith('.')) {\n var elements = document.getElementsByClassName(targetValue.substring(1));\n targetElement = elements.length > 0 ? elements[0] : null;\n }\n else {\n if (!(targetValue instanceof HTMLElement) && targetValue !== document.body) {\n targetElement = document.querySelector(targetValue);\n }\n }\n }\n else if (targetValue instanceof HTMLElement) {\n targetElement = targetValue;\n }\n return targetElement;\n };\n Dialog.prototype.resetResizeIcon = function () {\n var dialogConHeight = this.getMinHeight();\n if (this.targetEle.offsetHeight < dialogConHeight) {\n var className = this.enableRtl ? 'e-south-west' : 'e-south-east';\n var resizeIcon = this.element.querySelector('.' + className);\n if (!isNullOrUndefined(resizeIcon)) {\n resizeIcon.style.bottom = '-' + dialogConHeight.toString() + 'px';\n }\n }\n };\n Dialog.prototype.setOverlayZindex = function (zIndexValue) {\n var zIndex;\n if (isNullOrUndefined(zIndexValue)) {\n zIndex = parseInt(this.element.style.zIndex, 10) ? parseInt(this.element.style.zIndex, 10) : this.zIndex;\n }\n else {\n zIndex = zIndexValue;\n }\n this.dlgOverlay.style.zIndex = (zIndex - 1).toString();\n this.dlgContainer.style.zIndex = zIndex.toString();\n };\n Dialog.prototype.positionChange = function () {\n if (this.isModal) {\n if (!isNaN(parseFloat(this.position.X)) && !isNaN(parseFloat(this.position.Y))) {\n this.setPopupPosition();\n }\n else if ((!isNaN(parseFloat(this.position.X)) && isNaN(parseFloat(this.position.Y)))\n || (isNaN(parseFloat(this.position.X)) && !isNaN(parseFloat(this.position.Y)))) {\n this.setPopupPosition();\n }\n else {\n this.element.style.top = '0px';\n this.element.style.left = '0px';\n this.dlgContainer.classList.add('e-dlg-' + this.position.X + '-' + this.position.Y);\n }\n }\n else {\n this.setPopupPosition();\n }\n };\n Dialog.prototype.setPopupPosition = function () {\n this.popupObj.setProperties({\n position: {\n X: this.position.X, Y: this.position.Y\n }\n });\n };\n Dialog.prototype.setAllowDragging = function () {\n var _this = this;\n var handleContent = '.' + DLG_HEADER_CONTENT;\n if (!this.element.classList.contains(DLG_DRAG)) {\n this.dragObj = new Draggable(this.element, {\n clone: false,\n isDragScroll: true,\n abort: '.e-dlg-closeicon-btn',\n handle: handleContent,\n dragStart: function (event) {\n _this.trigger('dragStart', event, function (dragEventArgs) {\n if (isBlazor()) {\n dragEventArgs.bindEvents(event.dragElement);\n }\n });\n },\n dragStop: function (event) {\n if (_this.isModal) {\n _this.IsDragStop = true;\n if (!isNullOrUndefined(_this.position)) {\n _this.dlgContainer.classList.remove('e-dlg-' + _this.position.X + '-' + _this.position.Y);\n }\n // Reset the dialog position after drag completion.\n var targetType = _this.getTargetContainer(_this.target);\n if (targetType instanceof Element) {\n var computedStyle = window.getComputedStyle(targetType);\n if (computedStyle.getPropertyValue('direction') === 'rtl') {\n _this.element.style.position = 'absolute';\n }\n else {\n _this.element.style.position = 'relative';\n }\n }\n else {\n _this.element.style.position = 'relative';\n }\n }\n _this.trigger('dragStop', event);\n _this.element.classList.remove(DLG_RESTRICT_LEFT_VALUE);\n _this.updatePersistData();\n },\n drag: function (event) {\n _this.trigger('drag', event);\n }\n });\n if (!isNullOrUndefined(this.targetEle)) {\n this.dragObj.dragArea = this.targetEle;\n }\n }\n };\n Dialog.prototype.setButton = function () {\n if (!this.isBlazorServerRender()) {\n this.buttonContent = [];\n this.btnObj = [];\n for (var i = 0; i < this.buttons.length; i++) {\n if (isNullOrUndefined(this.buttons[i].buttonModel)) {\n continue;\n }\n var buttonType = !isNullOrUndefined(this.buttons[i].type) ?\n this.buttons[i].type.toLowerCase() : 'button';\n var btn = this.createElement('button', { className: this.cssClass, attrs: { type: buttonType } });\n this.buttonContent.push(btn.outerHTML);\n }\n this.setFooterTemplate();\n }\n var footerBtn;\n for (var i = 0, childNodes = this.element.children; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains(DLG_FOOTER_CONTENT)) {\n footerBtn = childNodes[i].querySelectorAll('button');\n }\n }\n for (var i = 0; i < this.buttons.length; i++) {\n if (isNullOrUndefined(this.buttons[i].buttonModel)) {\n continue;\n }\n if (!this.isBlazorServerRender()) {\n this.btnObj[i] = new Button(this.buttons[i].buttonModel);\n }\n if (this.isBlazorServerRender()) {\n this.ftrTemplateContent = this.element.querySelector('.' + DLG_FOOTER_CONTENT);\n }\n if (!isNullOrUndefined(this.ftrTemplateContent) && footerBtn.length > 0) {\n if (typeof (this.buttons[i].click) === 'function') {\n EventHandler.add(footerBtn[i], 'click', this.buttons[i].click, this);\n }\n if (typeof (this.buttons[i].click) === 'object') {\n EventHandler.add(footerBtn[i], 'click', this.buttonClickHandler.bind(this, i), this);\n }\n }\n if (!this.isBlazorServerRender() && !isNullOrUndefined(this.ftrTemplateContent)) {\n this.btnObj[i].appendTo(this.ftrTemplateContent.children[i]);\n if (this.buttons[i].isFlat) {\n this.btnObj[i].element.classList.add('e-flat');\n }\n this.primaryButtonEle = this.element.getElementsByClassName('e-primary')[0];\n }\n }\n };\n Dialog.prototype.buttonClickHandler = function (index) {\n this.trigger('buttons[' + index + '].click', {});\n };\n Dialog.prototype.setContent = function () {\n this.contentEle = this.createElement('div', { className: DLG_CONTENT, id: this.element.id + '_dialog-content' });\n if (this.headerEle) {\n attributes(this.element, { 'aria-describedby': this.element.id + '_title' + ' ' + this.element.id + '_dialog-content' });\n }\n else {\n attributes(this.element, { 'aria-describedby': this.element.id + '_dialog-content' });\n }\n if (this.innerContentElement) {\n this.contentEle.appendChild(this.innerContentElement);\n }\n else if (!isNullOrUndefined(this.content) && this.content !== '' || !this.initialRender) {\n if (typeof (this.content) === 'string' && !isBlazor()) {\n this.setTemplate(this.content, this.contentEle, 'content');\n }\n else if (this.content instanceof HTMLElement) {\n this.contentEle.appendChild(this.content);\n }\n else {\n this.setTemplate(this.content, this.contentEle, 'content');\n }\n }\n if (!isNullOrUndefined(this.headerContent)) {\n this.element.insertBefore(this.contentEle, this.element.children[1]);\n }\n else {\n this.element.insertBefore(this.contentEle, this.element.children[0]);\n }\n if (this.height === 'auto') {\n if (!this.isBlazorServerRender() && Browser.isIE && this.element.style.width === '' && !isNullOrUndefined(this.width)) {\n this.element.style.width = formatUnit(this.width);\n }\n this.setMaxHeight();\n }\n };\n Dialog.prototype.setTemplate = function (template, toElement, prop) {\n var templateFn;\n var templateProps;\n if (toElement.classList.contains(DLG_HEADER)) {\n templateProps = this.element.id + 'header';\n }\n else if (toElement.classList.contains(DLG_FOOTER_CONTENT)) {\n templateProps = this.element.id + 'footerTemplate';\n }\n else {\n templateProps = this.element.id + 'content';\n }\n var templateValue;\n if (!isNullOrUndefined(template.outerHTML)) {\n toElement.appendChild(template);\n }\n else if ((typeof template === 'string') || (typeof template !== 'string') || (isBlazor() && !this.isStringTemplate)) {\n if ((typeof template === 'string')) {\n template = this.sanitizeHelper(template);\n }\n if (this.isVue || typeof template !== 'string') {\n templateFn = compile(template);\n templateValue = template;\n }\n else {\n toElement.innerHTML = template;\n }\n }\n var fromElements = [];\n if (!isNullOrUndefined(templateFn)) {\n var isString = (isBlazor() &&\n !this.isStringTemplate && (templateValue).indexOf('
Blazor') === 0) ?\n this.isStringTemplate : true;\n for (var _i = 0, _a = templateFn({}, this, prop, templateProps, isString); _i < _a.length; _i++) {\n var item = _a[_i];\n fromElements.push(item);\n }\n append([].slice.call(fromElements), toElement);\n }\n };\n /*\n * @returns {void}\n * @hidden\n * @value\n */\n Dialog.prototype.sanitizeHelper = function (value) {\n if (this.enableHtmlSanitizer) {\n var dialogItem = SanitizeHtmlHelper.beforeSanitize();\n var beforeEvent = {\n cancel: false,\n helper: null\n };\n extend(dialogItem, dialogItem, beforeEvent);\n this.trigger('beforeSanitizeHtml', dialogItem);\n if (dialogItem.cancel && !isNullOrUndefined(dialogItem.helper)) {\n value = dialogItem.helper(value);\n }\n else if (!dialogItem.cancel) {\n value = SanitizeHtmlHelper.serializeValue(dialogItem, value);\n }\n }\n return value;\n };\n Dialog.prototype.setMaxHeight = function () {\n if (!this.allowMaxHeight) {\n return;\n }\n var display = this.element.style.display;\n this.element.style.display = 'none';\n this.element.style.maxHeight = (!isNullOrUndefined(this.target)) && (this.targetEle.offsetHeight < window.innerHeight) ?\n (this.targetEle.offsetHeight - 20) + 'px' : (window.innerHeight - 20) + 'px';\n this.element.style.display = display;\n if (Browser.isIE && this.height === 'auto' && !isNullOrUndefined(this.contentEle)\n && this.element.offsetHeight < this.contentEle.offsetHeight) {\n this.element.style.height = 'inherit';\n }\n };\n Dialog.prototype.setEnableRTL = function () {\n if (!this.isBlazorServerRender()) {\n if (this.enableRtl) {\n addClass([this.element], RTL);\n }\n else {\n removeClass([this.element], RTL);\n }\n }\n if (!isNullOrUndefined(this.element.querySelector('.e-resize-handle'))) {\n removeResize();\n this.setResize();\n }\n };\n Dialog.prototype.setTargetContent = function () {\n var _this = this;\n if (isNullOrUndefined(this.content) || this.content === '') {\n var isContent = this.element.innerHTML.replace(/\\s|<(\\/?|\\/?)(!--!--)>/g, '') !== '';\n if (this.element.children.length > 0 || isContent) {\n this.innerContentElement = document.createDocumentFragment();\n [].slice.call(this.element.childNodes).forEach(function (el) {\n if (el.nodeType !== 8) {\n _this.innerContentElement.appendChild(el);\n }\n });\n }\n }\n };\n Dialog.prototype.setHeader = function () {\n if (this.headerEle) {\n this.headerEle.innerHTML = '';\n }\n else {\n this.headerEle = this.createElement('div', { id: this.element.id + '_title', className: DLG_HEADER });\n }\n this.createHeaderContent();\n this.headerContent.appendChild(this.headerEle);\n this.setTemplate(this.header, this.headerEle, 'header');\n attributes(this.element, { 'aria-describedby': this.element.id + '_title' });\n attributes(this.element, { 'aria-label': 'dialog' });\n this.element.insertBefore(this.headerContent, this.element.children[0]);\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n };\n Dialog.prototype.setFooterTemplate = function () {\n if (this.ftrTemplateContent) {\n this.ftrTemplateContent.innerHTML = '';\n }\n else {\n this.ftrTemplateContent = this.createElement('div', {\n className: DLG_FOOTER_CONTENT\n });\n }\n if (this.footerTemplate !== '' && !isNullOrUndefined(this.footerTemplate)) {\n this.setTemplate(this.footerTemplate, this.ftrTemplateContent, 'footerTemplate');\n }\n else {\n this.ftrTemplateContent.innerHTML = this.buttonContent.join('');\n }\n this.element.appendChild(this.ftrTemplateContent);\n };\n Dialog.prototype.createHeaderContent = function () {\n if (isNullOrUndefined(this.headerContent)) {\n this.headerContent = this.createElement('div', { id: this.element.id + '_dialog-header', className: DLG_HEADER_CONTENT });\n }\n };\n Dialog.prototype.renderCloseIcon = function () {\n if (this.showCloseIcon) {\n this.closeIcon = this.createElement('button', { className: DLG_CLOSE_ICON_BTN, attrs: { type: 'button' } });\n this.closeIconBtnObj = new Button({ cssClass: 'e-flat', iconCss: DLG_CLOSE_ICON + ' ' + ICON });\n this.closeIconTitle();\n if (!isNullOrUndefined(this.headerContent)) {\n prepend([this.closeIcon], this.headerContent);\n }\n else {\n this.createHeaderContent();\n prepend([this.closeIcon], this.headerContent);\n this.element.insertBefore(this.headerContent, this.element.children[0]);\n }\n this.closeIconBtnObj.appendTo(this.closeIcon);\n }\n };\n Dialog.prototype.closeIconTitle = function () {\n this.l10n.setLocale(this.locale);\n var closeIconTitle = this.l10n.getConstant('close');\n this.closeIcon.setAttribute('title', closeIconTitle);\n this.closeIcon.setAttribute('aria-label', closeIconTitle);\n };\n Dialog.prototype.setCSSClass = function (oldCSSClass) {\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' '));\n if (this.isModal && !isNullOrUndefined(this.dlgContainer)) {\n removeClass([this.dlgContainer], oldCSSClass.split(' '));\n }\n }\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n if (this.isModal && !isNullOrUndefined(this.dlgContainer)) {\n addClass([this.dlgContainer], this.cssClass.split(' '));\n }\n }\n };\n Dialog.prototype.setIsModal = function () {\n this.dlgContainer = this.createElement('div', { className: DLG_CONTAINER });\n this.setCSSClass();\n this.element.classList.remove(DLG_SHOW);\n this.element.parentNode.insertBefore(this.dlgContainer, this.element);\n this.dlgContainer.appendChild(this.element);\n addClass([this.element], MODAL_DLG);\n this.dlgOverlay = this.createElement('div', { className: DLG_OVERLAY });\n this.dlgOverlay.style.zIndex = (this.zIndex - 1).toString();\n this.dlgContainer.appendChild(this.dlgOverlay);\n };\n Dialog.prototype.getValidFocusNode = function (items) {\n var node;\n for (var u = 0; u < items.length; u++) {\n node = items[u];\n if ((node.clientHeight > 0 || (node.tagName.toLowerCase() === 'a' && node.hasAttribute('href'))) && node.tabIndex > -1 &&\n !node.disabled && !this.disableElement(node, '[disabled],[aria-disabled=\"true\"],[type=\"hidden\"]')) {\n return node;\n }\n else {\n node = null;\n }\n }\n return node;\n };\n Dialog.prototype.focusableElements = function (content) {\n if (!isNullOrUndefined(content)) {\n var value = 'input,select,textarea,button,a,[contenteditable=\"true\"],[tabindex]';\n var items = content.querySelectorAll(value);\n return this.getValidFocusNode(items);\n }\n return null;\n };\n Dialog.prototype.getAutoFocusNode = function (container) {\n var node = container.querySelector('.' + DLG_CLOSE_ICON_BTN);\n var value = '[autofocus]';\n var items = container.querySelectorAll(value);\n var validNode = this.getValidFocusNode(items);\n if (isBlazor()) {\n this.primaryButtonEle = this.element.getElementsByClassName('e-primary')[0];\n }\n if (!isNullOrUndefined(validNode)) {\n node = validNode;\n }\n else {\n validNode = this.focusableElements(this.contentEle);\n if (!isNullOrUndefined(validNode)) {\n return node = validNode;\n }\n else if (!isNullOrUndefined(this.primaryButtonEle)) {\n return this.element.querySelector('.' + DLG_PRIMARY_BUTTON);\n }\n }\n return node;\n };\n Dialog.prototype.disableElement = function (element, t) {\n var elementMatch = element ? element.matches || element.webkitMatchesSelector || element.msGetRegionContent : null;\n if (elementMatch) {\n for (; element; element = element.parentNode) {\n if (element instanceof Element && elementMatch.call(element, t)) {\n /* istanbul ignore next */\n return element;\n }\n }\n }\n return null;\n };\n Dialog.prototype.focusContent = function () {\n var element = this.getAutoFocusNode(this.element);\n var node = !isNullOrUndefined(element) ? element : this.element;\n var userAgent = Browser.userAgent;\n if (userAgent.indexOf('MSIE ') > 0 || userAgent.indexOf('Trident/') > 0) {\n this.element.focus();\n }\n node.focus();\n this.unBindEvent(this.element);\n this.bindEvent(this.element);\n };\n Dialog.prototype.bindEvent = function (element) {\n EventHandler.add(element, 'keydown', this.keyDown, this);\n };\n Dialog.prototype.unBindEvent = function (element) {\n EventHandler.remove(element, 'keydown', this.keyDown);\n };\n Dialog.prototype.updateSanitizeContent = function () {\n if (!this.isBlazorServerRender()) {\n this.contentEle.innerHTML = this.sanitizeHelper(this.content);\n }\n };\n Dialog.prototype.isBlazorServerRender = function () {\n return isBlazor() && this.isServerRendered;\n };\n /**\n * Module required function\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.getModuleName = function () {\n return 'dialog';\n };\n /**\n * Called internally if any of the property value changed\n *\n * @param {DialogModel} newProp - specifies the new property\n * @param {DialogModel} oldProp - specifies the old property\n * @private\n * @returns {void}\n */\n Dialog.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'content':\n if (!isNullOrUndefined(this.content) && this.content !== '') {\n if (this.isBlazorServerRender()) {\n this.contentEle = this.element.querySelector('.e-dlg-content');\n }\n if (!isNullOrUndefined(this.contentEle) && this.contentEle.getAttribute('role') !== 'dialog') {\n if (!this.isBlazorServerRender()) {\n this.contentEle.innerHTML = '';\n }\n if (typeof (this.content) === 'function') {\n this.clearTemplate(['content']);\n detach(this.contentEle);\n this.contentEle = null;\n this.setContent();\n }\n else {\n if (typeof (this.content) === 'string') {\n if (this.isBlazorServerRender() && (this.contentEle.innerText === '')) {\n this.contentEle.insertAdjacentHTML('beforeend', this.sanitizeHelper(this.content));\n }\n else {\n this.updateSanitizeContent();\n }\n }\n else {\n this.contentEle.appendChild(this.content);\n }\n }\n this.setMaxHeight();\n }\n else {\n if (!this.isBlazorServerRender() ||\n isNullOrUndefined(this.element.querySelector('.e-dlg-content'))) {\n this.setContent();\n }\n }\n }\n else if (!isNullOrUndefined(this.contentEle)) {\n detach(this.contentEle);\n this.contentEle = null;\n }\n break;\n case 'header':\n if (this.header === '' || isNullOrUndefined(this.header)) {\n if (this.headerEle) {\n detach(this.headerEle);\n this.headerEle = null;\n }\n }\n else {\n if (!this.isBlazorServerRender() ||\n isNullOrUndefined(this.element.querySelector('.e-dlg-header-content'))) {\n this.setHeader();\n }\n }\n break;\n case 'footerTemplate':\n if (this.footerTemplate === '' || isNullOrUndefined(this.footerTemplate)) {\n if (!this.ftrTemplateContent) {\n return;\n }\n detach(this.ftrTemplateContent);\n this.ftrTemplateContent = null;\n this.buttons = [{}];\n }\n else {\n if (!this.isBlazorServerRender() ||\n isNullOrUndefined(this.element.querySelector('.e-footer-content'))) {\n this.setFooterTemplate();\n }\n this.buttons = [{}];\n }\n break;\n case 'showCloseIcon':\n if (this.element.getElementsByClassName(DLG_CLOSE_ICON).length > 0) {\n if (!this.showCloseIcon && (this.header === '' || isNullOrUndefined(this.header))) {\n detach(this.headerContent);\n this.headerContent = null;\n }\n else if (!this.showCloseIcon) {\n detach(this.closeIcon);\n }\n else {\n if (this.isBlazorServerRender()) {\n this.wireEvents();\n }\n }\n }\n else {\n if (!this.isBlazorServerRender()) {\n this.renderCloseIcon();\n }\n this.wireEvents();\n }\n break;\n case 'locale':\n if (this.showCloseIcon) {\n this.closeIconTitle();\n }\n break;\n case 'visible':\n if (this.visible) {\n this.show();\n }\n else {\n this.hide();\n }\n break;\n case 'isModal':\n this.updateIsModal();\n break;\n case 'height':\n setStyleAttribute(this.element, { 'height': formatUnit(newProp.height) });\n this.updatePersistData();\n break;\n case 'width':\n setStyleAttribute(this.element, { 'width': formatUnit(newProp.width) });\n this.updatePersistData();\n break;\n case 'zIndex':\n this.popupObj.zIndex = this.zIndex;\n if (this.isModal) {\n this.setOverlayZindex(this.zIndex);\n }\n if (this.element.style.zIndex !== this.zIndex.toString()) {\n this.calculatezIndex = false;\n }\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'buttons': {\n this.unWireButtonEvents();\n this.destroyButtons();\n if (!isNullOrUndefined(this.ftrTemplateContent) && !this.isBlazorServerRender()) {\n detach(this.ftrTemplateContent);\n this.ftrTemplateContent = null;\n }\n this.footerTemplate = '';\n this.setButton();\n break;\n }\n case 'allowDragging':\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n else {\n this.dragObj.destroy();\n }\n break;\n case 'target':\n this.setTarget(newProp.target);\n break;\n case 'position':\n this.checkPositionData();\n if (this.isModal) {\n var positionX = this.position.X;\n var positionY = this.position.Y;\n if (!isNullOrUndefined(oldProp.position)) {\n if (!isNullOrUndefined(oldProp.position.X)) {\n positionX = oldProp.position.X;\n }\n if (!isNullOrUndefined(oldProp.position.Y)) {\n positionY = oldProp.position.Y;\n }\n }\n if (this.dlgContainer.classList.contains('e-dlg-' + positionX + '-' + positionY)) {\n this.dlgContainer.classList.remove('e-dlg-' + positionX + '-' + positionY);\n }\n }\n this.positionChange();\n this.updatePersistData();\n break;\n case 'enableRtl':\n this.setEnableRTL();\n break;\n case 'enableResize':\n this.setResize();\n break;\n case 'minHeight':\n if (this.minHeight !== '') {\n this.element.style.minHeight = formatUnit(this.minHeight);\n }\n break;\n }\n }\n };\n Dialog.prototype.setTarget = function (target) {\n this.popupObj.relateTo = target;\n this.target = target;\n this.targetEle = ((typeof this.target) === 'string') ?\n document.querySelector(this.target) : this.target;\n if (this.dragObj) {\n this.dragObj.dragArea = this.targetEle;\n }\n this.setMaxHeight();\n if (this.isModal) {\n this.updateIsModal();\n }\n if (this.enableResize) {\n this.setResize();\n }\n };\n Dialog.prototype.updateIsModal = function () {\n this.element.setAttribute('aria-modal', this.isModal ? 'true' : 'false');\n if (this.isModal) {\n if (isNullOrUndefined(this.dlgOverlay)) {\n this.setIsModal();\n this.element.style.top = '0px';\n this.element.style.left = '0px';\n if (!isNullOrUndefined(this.targetEle)) {\n this.targetEle.appendChild(this.dlgContainer);\n }\n }\n }\n else {\n removeClass([this.element], MODAL_DLG);\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n detach(this.dlgOverlay);\n while (this.dlgContainer.firstChild) {\n this.dlgContainer.parentElement.insertBefore(this.dlgContainer.firstChild, this.dlgContainer);\n }\n this.dlgContainer.parentElement.removeChild(this.dlgContainer);\n }\n if (this.visible) {\n this.show();\n }\n this.positionChange();\n if (this.isModal && this.dlgOverlay) {\n EventHandler.add(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler, this);\n }\n };\n Dialog.prototype.setzIndex = function (zIndexElement, setPopupZindex) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n var currentzIndex = getZindexPartial(zIndexElement);\n this.zIndex = currentzIndex > this.zIndex ? currentzIndex : this.zIndex;\n this.isProtectedOnChange = prevOnChange;\n if (setPopupZindex) {\n this.popupObj.zIndex = this.zIndex;\n }\n };\n Dialog.prototype.windowResizeHandler = function () {\n setMaxWidth(this.targetEle.clientWidth);\n setMaxHeight(this.targetEle.clientHeight);\n this.setMaxHeight();\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.getPersistData = function () {\n return this.addOnPersist(['width', 'height', 'position']);\n };\n Dialog.prototype.removeAllChildren = function (element) {\n while (element.children[0]) {\n this.removeAllChildren(element.children[0]);\n element.removeChild(element.children[0]);\n }\n };\n /**\n * To destroy the widget\n *\n * @returns {void}\n */\n Dialog.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n var classArray = [RTL, MODAL_DLG, DLG_RESIZABLE, DLG_RESTRICT_LEFT_VALUE, FULLSCREEN, DEVICE];\n var attrs = ['role', 'aria-modal', 'aria-labelledby', 'aria-describedby', 'aria-grabbed', 'tabindex', 'style'];\n removeClass([this.targetEle], [DLG_TARGET, SCROLL_DISABLED]);\n if (!isNullOrUndefined(this.element) && this.element.classList.contains(FULLSCREEN)) {\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n if (this.isModal) {\n removeClass([(!isNullOrUndefined(this.targetEle) ? this.targetEle : document.body)], SCROLL_DISABLED);\n }\n this.unWireEvents();\n this.unWireButtonEvents();\n this.destroyButtons();\n if (!isNullOrUndefined(this.closeIconBtnObj)) {\n this.closeIconBtnObj.destroy();\n }\n if (!isNullOrUndefined(this.dragObj)) {\n this.dragObj.destroy();\n }\n if (!isNullOrUndefined(this.popupObj.element) && this.popupObj.element.classList.contains(POPUP_ROOT)) {\n this.popupObj.destroy();\n }\n removeClass([this.element], classArray);\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n removeClass([this.element], this.cssClass.split(' '));\n }\n if (!isNullOrUndefined(this.refElement) && !isNullOrUndefined(this.refElement.parentElement)) {\n this.refElement.parentElement.insertBefore((this.isModal ? this.dlgContainer : this.element), this.refElement);\n detach(this.refElement);\n this.refElement = undefined;\n }\n if (this.isModal && !this.isBlazorServerRender()) {\n detach(this.dlgOverlay);\n this.dlgContainer.parentNode.insertBefore(this.element, this.dlgContainer);\n detach(this.dlgContainer);\n }\n if (!this.isBlazorServerRender()) {\n this.element.innerHTML = this.clonedEle.innerHTML;\n }\n if (this.isBlazorServerRender()) {\n if (!isNullOrUndefined(this.element.children)) {\n for (var i = 0; i <= this.element.children.length; i++) {\n i = i - i;\n detach(this.element.children[i]);\n }\n }\n }\n for (var i = 0; i < attrs.length; i++) {\n this.element.removeAttribute(attrs[i]);\n }\n this.ftrTemplateContent = null;\n this.headerContent = null;\n if (!this.isReact && !this.isVue && !isNullOrUndefined(this.contentEle)) {\n this.removeAllChildren(this.contentEle);\n }\n this.contentEle = null;\n if (!this.isBlazorServerRender()) {\n _super.prototype.destroy.call(this);\n }\n else {\n this.isDestroyed = true;\n }\n // eslint-disable-next-line\n if (this.isReact) {\n this.clearTemplate();\n }\n };\n Dialog.prototype.wireWindowResizeEvent = function () {\n this.boundWindowResizeHandler = this.windowResizeHandler.bind(this);\n window.addEventListener('resize', this.boundWindowResizeHandler);\n };\n Dialog.prototype.unWireWindowResizeEvent = function () {\n window.removeEventListener('resize', this.boundWindowResizeHandler);\n this.boundWindowResizeHandler = null;\n };\n /**\n * Binding event to the element while widget creation\n *\n * @returns {void}\n * @hidden\n */\n Dialog.prototype.wireEvents = function () {\n if (this.isBlazorServerRender() && this.showCloseIcon) {\n this.closeIcon = this.element.getElementsByClassName('e-dlg-closeicon-btn')[0];\n }\n if (this.showCloseIcon) {\n EventHandler.add(this.closeIcon, 'click', this.closeIconClickEventHandler, this);\n }\n if (this.isModal && this.dlgOverlay) {\n EventHandler.add(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler, this);\n }\n };\n /**\n * Unbinding event to the element while widget destroy\n *\n * @returns {void}\n * @hidden\n */\n Dialog.prototype.unWireEvents = function () {\n if (this.showCloseIcon) {\n EventHandler.remove(this.closeIcon, 'click', this.closeIconClickEventHandler);\n }\n if (this.isModal) {\n EventHandler.remove(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler);\n }\n };\n Dialog.prototype.unWireButtonEvents = function () {\n if (this.buttons.length > 0 && this.footerTemplate === '' && this.ftrTemplateContent) {\n for (var i = 0; i < this.buttons.length; i++) {\n if (this.buttons[i].click && typeof (this.buttons[i].click) === 'function'\n && this.ftrTemplateContent.children[i]) {\n EventHandler.remove(this.ftrTemplateContent.children[i], 'click', this.buttons[i].click);\n }\n }\n }\n };\n Dialog.prototype.destroyButtons = function () {\n if (!isNullOrUndefined(this.btnObj)) {\n for (var i = 0; i < this.btnObj.length; i++) {\n if (this.btnObj[i] && !this.btnObj[i].isDestroyed) {\n this.btnObj[i].destroy();\n }\n }\n }\n };\n /**\n * Refreshes the dialog's position when the user changes its header and footer height/width dynamically.\n *\n * @returns {void}\n */\n Dialog.prototype.refreshPosition = function () {\n this.popupObj.refreshPosition();\n if (this.element.classList.contains(MODAL_DLG)) {\n this.positionChange();\n }\n };\n /**\n * Returns the current width and height of the Dialog\n *\n * @returns {DialogDimension}- returns the dialog element Dimension.\n * @public\n */\n Dialog.prototype.getDimension = function () {\n var dialogWidth = this.element.offsetWidth;\n var dialogHeight = this.element.offsetHeight;\n return { width: dialogWidth, height: dialogHeight };\n };\n /**\n * Opens the dialog if it is in hidden state.\n * To open the dialog with full screen width, set the parameter to true.\n *\n * @param { boolean } isFullScreen - Enable the fullScreen Dialog.\n * @returns {void}\n */\n Dialog.prototype.show = function (isFullScreen) {\n var _this = this;\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n if (!this.element.classList.contains(DLG_SHOW) || (!isNullOrUndefined(isFullScreen))) {\n if (!isNullOrUndefined(isFullScreen)) {\n this.fullScreen(isFullScreen);\n }\n var eventArgs_1 = isBlazor() ? {\n cancel: false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n maxHeight: this.element.style.maxHeight\n } : {\n cancel: false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n target: this.target,\n maxHeight: this.element.style.maxHeight\n };\n this.trigger('beforeOpen', eventArgs_1, function (beforeOpenArgs) {\n if (!beforeOpenArgs.cancel) {\n if (_this.element.style.maxHeight !== eventArgs_1.maxHeight) {\n _this.allowMaxHeight = false;\n _this.element.style.maxHeight = eventArgs_1.maxHeight;\n }\n if (_this.enableResize && _this.boundWindowResizeHandler == null && !_this.initialRender) {\n _this.wireWindowResizeEvent();\n }\n _this.storeActiveElement = document.activeElement;\n _this.element.tabIndex = -1;\n if (_this.isModal && (!isNullOrUndefined(_this.dlgOverlay))) {\n _this.dlgOverlay.style.display = 'block';\n _this.dlgContainer.style.display = 'flex';\n removeClass([_this.dlgOverlay], 'e-fade');\n if (!isNullOrUndefined(_this.targetEle)) {\n if (_this.targetEle === document.body) {\n _this.dlgContainer.style.position = 'fixed';\n }\n else {\n _this.dlgContainer.style.position = 'absolute';\n }\n _this.dlgOverlay.style.position = 'absolute';\n var targetType = _this.getTargetContainer(_this.target);\n if (targetType instanceof Element) {\n var computedStyle = window.getComputedStyle(targetType);\n if (computedStyle.getPropertyValue('direction') === 'rtl') {\n _this.element.style.position = 'absolute';\n }\n else {\n _this.element.style.position = 'relative';\n }\n }\n else {\n _this.element.style.position = 'relative';\n }\n addClass([_this.targetEle], [DLG_TARGET, SCROLL_DISABLED]);\n }\n else {\n addClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n }\n var openAnimation = {\n name: (_this.animationSettings.effect === 'None' && animationMode === 'Enable') ? 'Zoom' + 'In' : _this.animationSettings.effect + 'In',\n duration: _this.animationSettings.duration,\n delay: _this.animationSettings.delay\n };\n var zIndexElement = (_this.isModal) ? _this.element.parentElement : _this.element;\n if (_this.calculatezIndex) {\n _this.setzIndex(zIndexElement, true);\n setStyleAttribute(_this.element, { 'zIndex': _this.zIndex });\n if (_this.isModal) {\n _this.setOverlayZindex(_this.zIndex);\n }\n }\n // eslint-disable-next-line\n (_this.animationSettings.effect === 'None' && animationMode === 'Enable') ? _this.popupObj.show(openAnimation) : ((_this.animationSettings.effect === 'None') ? _this.popupObj.show() : _this.popupObj.show(openAnimation));\n if (_this.isModal) {\n var targetType = _this.getTargetContainer(_this.target);\n if (targetType instanceof Element) {\n var computedStyle = window.getComputedStyle(targetType);\n if (computedStyle.getPropertyValue('direction') === 'rtl' && !_this.IsDragStop) {\n _this.setPopupPosition();\n }\n }\n }\n _this.dialogOpen = true;\n var prevOnChange = _this.isProtectedOnChange;\n _this.isProtectedOnChange = true;\n _this.visible = true;\n _this.preventVisibility = true;\n _this.isProtectedOnChange = prevOnChange;\n }\n });\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Closes the dialog if it is in visible state.\n *\n * @param { Event } event - specifies the event\n * @returns {void}\n */\n Dialog.prototype.hide = function (event) {\n var _this = this;\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n if (this.preventVisibility) {\n var eventArgs = isBlazor() ? {\n cancel: false,\n isInteracted: event ? true : false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n event: event\n } : {\n cancel: false,\n isInteracted: event ? true : false,\n element: this.element,\n target: this.target,\n container: this.isModal ? this.dlgContainer : this.element,\n event: event,\n closedBy: this.dlgClosedBy\n };\n this.closeArgs = eventArgs;\n this.trigger('beforeClose', eventArgs, function (beforeCloseArgs) {\n if (!beforeCloseArgs.cancel) {\n if (_this.isModal) {\n if (!isNullOrUndefined(_this.targetEle)) {\n removeClass([_this.targetEle], [DLG_TARGET, SCROLL_DISABLED]);\n }\n }\n if (_this.enableResize) {\n _this.unWireWindowResizeEvent();\n }\n if (document.body.classList.contains(DLG_TARGET) &&\n document.body.classList.contains(SCROLL_DISABLED)) {\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n var closeAnimation = {\n name: (_this.animationSettings.effect === 'None' && animationMode === 'Enable') ? 'Zoom' + 'Out' : _this.animationSettings.effect + 'Out',\n duration: _this.animationSettings.duration,\n delay: _this.animationSettings.delay\n };\n if (_this.animationSettings.effect === 'None' && animationMode === 'Enable') {\n _this.popupObj.hide(closeAnimation);\n }\n else if (_this.animationSettings.effect === 'None') {\n _this.popupObj.hide();\n }\n else {\n _this.popupObj.hide(closeAnimation);\n }\n _this.dialogOpen = false;\n var prevOnChange = _this.isProtectedOnChange;\n _this.isProtectedOnChange = true;\n _this.visible = false;\n _this.preventVisibility = false;\n _this.isProtectedOnChange = prevOnChange;\n }\n _this.dlgClosedBy = DLG_USER_ACTION_CLOSED;\n });\n }\n };\n /**\n * Specifies to view the Full screen Dialog.\n *\n * @param {boolean} args - specifies the arguments\n * @returns {boolean} - returns the boolean value\n * @private\n */\n Dialog.prototype.fullScreen = function (args) {\n /* eslint-disable */\n var top = this.element.offsetTop;\n var left = this.element.offsetLeft;\n /* eslint-enable */\n if (args) {\n if (!this.isModal) {\n this.element.style.top = document.scrollingElement.scrollTop + 'px';\n }\n addClass([this.element], FULLSCREEN);\n var display = this.element.style.display;\n this.element.style.display = 'none';\n this.element.style.maxHeight = (!isNullOrUndefined(this.target)) ?\n (this.targetEle.offsetHeight) + 'px' : (window.innerHeight) + 'px';\n this.element.style.display = display;\n addClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n if (this.allowDragging && !isNullOrUndefined(this.dragObj)) {\n this.dragObj.destroy();\n }\n }\n else {\n removeClass([this.element], FULLSCREEN);\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n }\n return args;\n };\n /**\n * Returns the dialog button instances.\n * Based on that, you can dynamically change the button states.\n *\n * @param { number } index - Index of the button.\n * @returns {Button} - returns the button element\n */\n Dialog.prototype.getButtons = function (index) {\n if (!isNullOrUndefined(index)) {\n return this.btnObj[index];\n }\n return this.btnObj;\n };\n __decorate([\n Property('')\n ], Dialog.prototype, \"content\", void 0);\n __decorate([\n Property(true)\n ], Dialog.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"showCloseIcon\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"isModal\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"header\", void 0);\n __decorate([\n Property(true)\n ], Dialog.prototype, \"visible\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"enableResize\", void 0);\n __decorate([\n Property(['South-East'])\n ], Dialog.prototype, \"resizeHandles\", void 0);\n __decorate([\n Property('auto')\n ], Dialog.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"minHeight\", void 0);\n __decorate([\n Property('100%')\n ], Dialog.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"cssClass\", void 0);\n __decorate([\n Property(1000)\n ], Dialog.prototype, \"zIndex\", void 0);\n __decorate([\n Property(null)\n ], Dialog.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"allowDragging\", void 0);\n __decorate([\n Collection([{}], ButtonProps)\n ], Dialog.prototype, \"buttons\", void 0);\n __decorate([\n Property(true)\n ], Dialog.prototype, \"closeOnEscape\", void 0);\n __decorate([\n Complex({}, AnimationSettings)\n ], Dialog.prototype, \"animationSettings\", void 0);\n __decorate([\n Complex({ X: 'center', Y: 'center' }, PositionData)\n ], Dialog.prototype, \"position\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"beforeSanitizeHtml\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"dragStop\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"overlayClick\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"destroyed\", void 0);\n Dialog = __decorate([\n NotifyPropertyChanges\n ], Dialog);\n return Dialog;\n}(Component));\nexport { Dialog };\n/**\n * Base for creating Alert and Confirmation Dialog through util method.\n */\n// eslint-disable-next-line\nexport var DialogUtility;\n(function (DialogUtility) {\n /**\n * An alert dialog box is used to display warning like messages to the users.\n * ```\n * Eg : DialogUtility.alert('Alert message');\n *\n * ```\n */\n /* istanbul ignore next */\n /**\n *\n * @param {AlertDialogArgs} args - specifies the string\n * @returns {Dialog} - returns the dialog element.\n */\n function alert(args) {\n var dialogElement = createElement('div', { 'className': DLG_UTIL_ALERT });\n document.body.appendChild(dialogElement);\n var alertDialogObj;\n var okButtonModel = [{\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n }];\n if (typeof (args) === 'string') {\n alertDialogObj = createDialog({ content: args,\n position: { X: 'center', Y: 'top' },\n isModal: true, header: DLG_UTIL_DEFAULT_TITLE,\n buttons: okButtonModel }, dialogElement);\n }\n else {\n alertDialogObj = createDialog(alertOptions(args), dialogElement);\n }\n alertDialogObj.close = function () {\n if (args && args.close) {\n args.close.apply(alertDialogObj);\n }\n alertDialogObj.destroy();\n if (alertDialogObj.element.classList.contains('e-dlg-modal')) {\n alertDialogObj.element.parentElement.remove();\n alertDialogObj.target.classList.remove(DLG_UTIL_ROOT);\n }\n else {\n alertDialogObj.element.remove();\n }\n };\n return alertDialogObj;\n }\n DialogUtility.alert = alert;\n /**\n * A confirm dialog displays a specified message along with ‘OK’ and ‘Cancel’ button.\n * ```\n * Eg : DialogUtility.confirm('Confirm dialog message');\n *\n * ```\n */\n /* istanbul ignore next */\n /**\n *\n * @param {ConfirmDialogArgs} args - specifies the args\n * @returns {Dialog} - returns te element\n */\n function confirm(args) {\n var dialogElement = createElement('div', { 'className': DLG_UTIL_CONFIRM });\n document.body.appendChild(dialogElement);\n var confirmDialogObj;\n var okCancelButtonModel = [{\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n }, {\n buttonModel: { content: 'Cancel' },\n click: function () {\n this.hide();\n }\n }];\n if (typeof (args) === 'string') {\n confirmDialogObj = createDialog({ position: { X: 'center', Y: 'top' }, content: args, isModal: true,\n header: DLG_UTIL_DEFAULT_TITLE, buttons: okCancelButtonModel\n }, dialogElement);\n }\n else {\n confirmDialogObj = createDialog(confirmOptions(args), dialogElement);\n }\n confirmDialogObj.close = function () {\n if (args && args.close) {\n args.close.apply(confirmDialogObj);\n }\n confirmDialogObj.destroy();\n if (confirmDialogObj.element.classList.contains('e-dlg-modal')) {\n confirmDialogObj.element.parentElement.remove();\n confirmDialogObj.target.classList.remove(DLG_UTIL_ROOT);\n }\n else {\n confirmDialogObj.element.remove();\n }\n };\n return confirmDialogObj;\n }\n DialogUtility.confirm = confirm;\n // eslint-disable-next-line\n function createDialog(options, element) {\n var dialogObject = new Dialog(options);\n dialogObject.appendTo(element);\n return dialogObject;\n }\n // eslint-disable-next-line\n function alertOptions(option) {\n var options = {};\n options.buttons = [];\n options = formOptions(options, option);\n options = setAlertButtonModel(options, option);\n return options;\n }\n // eslint-disable-next-line\n function confirmOptions(option) {\n var options = {};\n options.buttons = [];\n options = formOptions(options, option);\n options = setConfirmButtonModel(options, option);\n return options;\n }\n // eslint-disable-next-line\n function formOptions(options, option) {\n options.header = !isNullOrUndefined(option.title) ? option.title : null;\n options.content = !isNullOrUndefined(option.content) ? option.content : '';\n options.isModal = !isNullOrUndefined(option.isModal) ? option.isModal : true;\n options.showCloseIcon = !isNullOrUndefined(option.showCloseIcon) ? option.showCloseIcon : false;\n options.allowDragging = !isNullOrUndefined(option.isDraggable) ? option.isDraggable : false;\n options.closeOnEscape = !isNullOrUndefined(option.closeOnEscape) ? option.closeOnEscape : false;\n options.position = !isNullOrUndefined(option.position) ? option.position : { X: 'center', Y: 'top' };\n options.animationSettings = !isNullOrUndefined(option.animationSettings) ? option.animationSettings :\n { effect: 'Fade', duration: 400, delay: 0 };\n options.cssClass = !isNullOrUndefined(option.cssClass) ? option.cssClass : '';\n options.zIndex = !isNullOrUndefined(option.zIndex) ? option.zIndex : 1000;\n options.open = !isNullOrUndefined(option.open) ? option.open : null;\n options.width = !isNullOrUndefined(option.width) ? option.width : 'auto';\n options.height = !isNullOrUndefined(option.height) ? option.height : 'auto';\n return options;\n }\n // eslint-disable-next-line\n function setAlertButtonModel(options, option) {\n var alertButtonModel = [{\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n }];\n if (!isNullOrUndefined(option.okButton)) {\n options.buttons[0] = formButtonModel(options.buttons[0], option.okButton, alertButtonModel[0]);\n }\n else {\n options.buttons = alertButtonModel;\n }\n return options;\n }\n // eslint-disable-next-line\n function setConfirmButtonModel(options, option) {\n var okButtonModel = {\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n };\n var cancelButtonModel = {\n buttonModel: { content: 'Cancel' },\n click: function () {\n this.hide();\n }\n };\n if (!isNullOrUndefined(option.okButton)) {\n options.buttons[0] = formButtonModel(options.buttons[0], option.okButton, okButtonModel);\n }\n else {\n options.buttons[0] = okButtonModel;\n }\n if (!isNullOrUndefined(option.cancelButton)) {\n options.buttons[1] = formButtonModel(options.buttons[1], option.cancelButton, cancelButtonModel);\n }\n else {\n options.buttons[1] = cancelButtonModel;\n }\n return options;\n }\n // eslint-disable-next-line\n function formButtonModel(buttonModel, option, buttonPropModel) {\n var buttonProps = buttonPropModel;\n if (!isNullOrUndefined(option.text)) {\n buttonProps.buttonModel.content = option.text;\n }\n if (!isNullOrUndefined(option.icon)) {\n buttonProps.buttonModel.iconCss = option.icon;\n }\n if (!isNullOrUndefined(option.cssClass)) {\n buttonProps.buttonModel.cssClass = option.cssClass;\n }\n if (!isNullOrUndefined(option.click)) {\n buttonProps.click = option.click;\n }\n if (!isNullOrUndefined(option.isFlat)) {\n buttonProps.isFlat = option.isFlat;\n }\n return buttonProps;\n }\n})(DialogUtility || (DialogUtility = {}));\n","/* eslint-disable valid-jsdoc, jsdoc/require-jsdoc, jsdoc/require-returns, jsdoc/require-param */\nimport { createElement, attributes, addClass, removeClass, detach, classList } from '@syncfusion/ej2-base';\nimport { closest, formatUnit, isNullOrUndefined, remove } from '@syncfusion/ej2-base';\nvar CLASSNAMES = {\n RTL: 'e-rtl',\n DISABLE: 'e-disabled',\n INPUT: 'e-input',\n TEXTAREA: 'e-multi-line-input',\n INPUTGROUP: 'e-input-group',\n FLOATINPUT: 'e-float-input',\n FLOATLINE: 'e-float-line',\n FLOATTEXT: 'e-float-text',\n FLOATTEXTCONTENT: 'e-float-text-content',\n CLEARICON: 'e-clear-icon',\n CLEARICONHIDE: 'e-clear-icon-hide',\n LABELTOP: 'e-label-top',\n LABELBOTTOM: 'e-label-bottom',\n NOFLOATLABEL: 'e-no-float-label',\n INPUTCUSTOMTAG: 'e-input-custom-tag',\n FLOATCUSTOMTAG: 'e-float-custom-tag'\n};\n/**\n * Defines the constant attributes for the input element container.\n */\nexport var containerAttributes = ['title', 'style', 'class'];\n/**\n * Defines the constant focus class for the input element.\n */\nexport var TEXTBOX_FOCUS = 'e-input-focus';\n/**\n * Base for Input creation through util methods.\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var Input;\n(function (Input) {\n var privateInputObj = {\n container: null,\n buttons: [],\n clearButton: null\n };\n var floatType;\n var isBindClearAction = true;\n /**\n * Create a wrapper to input element with multiple span elements and set the basic properties to input based components.\n * ```\n * E.g : Input.createInput({ element: element, floatLabelType : \"Auto\", properties: { placeholder: 'Search' } });\n * ```\n *\n */\n function createInput(args, internalCreateElement) {\n args.element.__eventHandlers = {};\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var inputObject = { container: null, buttons: [], clearButton: null };\n floatType = args.floatLabelType;\n isBindClearAction = args.bindClearAction;\n if (isNullOrUndefined(args.floatLabelType) || args.floatLabelType === 'Never') {\n inputObject.container = createInputContainer(args, CLASSNAMES.INPUTGROUP, CLASSNAMES.INPUTCUSTOMTAG, 'span', makeElement);\n args.element.parentNode.insertBefore(inputObject.container, args.element);\n addClass([args.element], CLASSNAMES.INPUT);\n inputObject.container.appendChild(args.element);\n }\n else {\n createFloatingInput(args, inputObject, makeElement);\n }\n bindInitialEvent(args);\n if (!isNullOrUndefined(args.properties) && !isNullOrUndefined(args.properties.showClearButton) &&\n args.properties.showClearButton) {\n setClearButton(args.properties.showClearButton, args.element, inputObject, true, makeElement);\n inputObject.clearButton.setAttribute('role', 'button');\n if (inputObject.container.classList.contains(CLASSNAMES.FLOATINPUT)) {\n addClass([inputObject.container], CLASSNAMES.INPUTGROUP);\n }\n }\n if (!isNullOrUndefined(args.buttons)) {\n for (var i = 0; i < args.buttons.length; i++) {\n inputObject.buttons.push(appendSpan(args.buttons[i], inputObject.container, makeElement));\n }\n }\n if (!isNullOrUndefined(args.element) && args.element.tagName === 'TEXTAREA') {\n addClass([inputObject.container], CLASSNAMES.TEXTAREA);\n }\n validateInputType(inputObject.container, args.element);\n inputObject = setPropertyValue(args, inputObject);\n createSpanElement(inputObject.container, makeElement);\n privateInputObj = inputObject;\n return inputObject;\n }\n Input.createInput = createInput;\n function bindFocusEventHandler(args) {\n var parent = getParentNode(args.element);\n if (parent.classList.contains('e-input-group') || parent.classList.contains('e-outline') || parent.classList.contains('e-filled')) {\n parent.classList.add('e-input-focus');\n }\n if (args.floatLabelType !== 'Never') {\n setTimeout(function () {\n Input.calculateWidth(args.element, parent);\n }, 80);\n }\n }\n function bindBlurEventHandler(args) {\n var parent = getParentNode(args.element);\n if (parent.classList.contains('e-input-group') || parent.classList.contains('e-outline') || parent.classList.contains('e-filled')) {\n parent.classList.remove('e-input-focus');\n }\n if (args.floatLabelType !== 'Never') {\n setTimeout(function () {\n Input.calculateWidth(args.element, parent);\n }, 80);\n }\n }\n function bindInputEventHandler(args) {\n checkInputValue(args.floatLabelType, args.element);\n }\n function bindInitialEvent(args) {\n checkInputValue(args.floatLabelType, args.element);\n var focusHandler = function () { return bindFocusEventHandler(args); };\n var blurHandler = function () { return bindBlurEventHandler(args); };\n var inputHandler = function () { return bindInputEventHandler(args); };\n args.element.addEventListener('focus', focusHandler);\n args.element.addEventListener('blur', blurHandler);\n args.element.addEventListener('input', inputHandler);\n args.element.__eventHandlers['inputFocusHandler'] = { focusHandler: focusHandler };\n args.element.__eventHandlers['inputBlurHandler'] = { blurHandler: blurHandler };\n args.element.__eventHandlers['inputHandler'] = { inputHandler: inputHandler };\n }\n Input.bindInitialEvent = bindInitialEvent;\n function unbindInitialEvent(args) {\n if (!isNullOrUndefined(args.element)) {\n if (!isNullOrUndefined(args.element.__eventHandlers)) {\n if (!isNullOrUndefined(args.element.__eventHandlers['inputFocusHandler'])\n && !isNullOrUndefined(args.element.__eventHandlers['inputBlurHandler'])\n && !isNullOrUndefined(args.element.__eventHandlers['inputHandler'])) {\n var focusHandler_1 = args.element.__eventHandlers['inputFocusHandler'].focusHandler;\n var blurHandler_1 = args.element.__eventHandlers['inputBlurHandler'].blurHandler;\n var inputHandler_1 = args.element.__eventHandlers['inputHandler'].inputHandler;\n args.element.removeEventListener('focus', focusHandler_1);\n args.element.removeEventListener('blur', blurHandler_1);\n args.element.removeEventListener('input', inputHandler_1);\n // Clean up stored bound functions\n delete args.element.__eventHandlers['inputFocusHandler'];\n delete args.element.__eventHandlers['inputBlurHandler'];\n delete args.element.__eventHandlers['inputHandler'];\n }\n }\n }\n }\n function checkInputValue(floatLabelType, inputElement) {\n var inputValue = inputElement.value;\n var inputParent = inputElement.parentElement;\n var grandParent = inputParent && inputParent.parentElement;\n if (inputValue !== '' && !isNullOrUndefined(inputValue)) {\n if (inputParent && inputParent.classList.contains('e-input-group')) {\n inputParent.classList.add('e-valid-input');\n }\n else if (grandParent && grandParent.classList.contains('e-input-group')) {\n grandParent.classList.add('e-valid-input');\n }\n }\n else if (floatLabelType !== 'Always') {\n if (inputParent && inputParent.classList.contains('e-input-group')) {\n inputParent.classList.remove('e-valid-input');\n }\n else if (grandParent && grandParent.classList.contains('e-input-group')) {\n grandParent.classList.remove('e-valid-input');\n }\n }\n }\n function _focusFn() {\n var label = getParentNode(this).getElementsByClassName('e-float-text')[0];\n if (!isNullOrUndefined(label)) {\n addClass([label], CLASSNAMES.LABELTOP);\n if (label.classList.contains(CLASSNAMES.LABELBOTTOM)) {\n removeClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n }\n function _blurFn() {\n var parent = getParentNode(this);\n if ((parent.getElementsByTagName('textarea')[0]) ? parent.getElementsByTagName('textarea')[0].value === '' :\n parent.getElementsByTagName('input')[0].value === '') {\n var label = parent.getElementsByClassName('e-float-text')[0];\n if (!isNullOrUndefined(label)) {\n if (label.classList.contains(CLASSNAMES.LABELTOP)) {\n removeClass([label], CLASSNAMES.LABELTOP);\n }\n addClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n }\n function wireFloatingEvents(element) {\n element.addEventListener('focus', _focusFn);\n element.addEventListener('blur', _blurFn);\n }\n Input.wireFloatingEvents = wireFloatingEvents;\n function unwireFloatingEvents(element) {\n if (!isNullOrUndefined(element)) {\n element.removeEventListener('focus', _focusFn);\n element.removeEventListener('blur', _blurFn);\n }\n }\n function inputEventHandler(args) {\n validateLabel(args.element, args.floatLabelType);\n }\n function blurEventHandler(args) {\n validateLabel(args.element, args.floatLabelType);\n }\n function createFloatingInput(args, inputObject, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n if (args.floatLabelType === 'Auto') {\n wireFloatingEvents(args.element);\n }\n if (isNullOrUndefined(inputObject.container)) {\n inputObject.container = createInputContainer(args, CLASSNAMES.FLOATINPUT, CLASSNAMES.FLOATCUSTOMTAG, 'div', makeElement);\n inputObject.container.classList.add(CLASSNAMES.INPUTGROUP);\n if (args.element.parentNode) {\n args.element.parentNode.insertBefore(inputObject.container, args.element);\n }\n }\n else {\n if (!isNullOrUndefined(args.customTag)) {\n inputObject.container.classList.add(CLASSNAMES.FLOATCUSTOMTAG);\n }\n inputObject.container.classList.add(CLASSNAMES.FLOATINPUT);\n }\n var floatLinelement = makeElement('span', { className: CLASSNAMES.FLOATLINE });\n var floatLabelElement = makeElement('label', { className: CLASSNAMES.FLOATTEXT });\n if (!isNullOrUndefined(args.element.id) && args.element.id !== '') {\n floatLabelElement.id = 'label_' + args.element.id.replace(/ /g, '_');\n attributes(args.element, { 'aria-labelledby': floatLabelElement.id });\n }\n if (!isNullOrUndefined(args.element.placeholder) && args.element.placeholder !== '') {\n floatLabelElement.innerText = encodePlaceHolder(args.element.placeholder);\n args.element.removeAttribute('placeholder');\n }\n if (!isNullOrUndefined(args.properties) && !isNullOrUndefined(args.properties.placeholder) &&\n args.properties.placeholder !== '') {\n floatLabelElement.innerText = encodePlaceHolder(args.properties.placeholder);\n }\n if (!floatLabelElement.innerText) {\n inputObject.container.classList.add(CLASSNAMES.NOFLOATLABEL);\n }\n if (inputObject.container.classList.contains('e-float-icon-left')) {\n var inputWrap = inputObject.container.querySelector('.e-input-in-wrap');\n inputWrap.appendChild(args.element);\n inputWrap.appendChild(floatLinelement);\n inputWrap.appendChild(floatLabelElement);\n }\n else {\n inputObject.container.appendChild(args.element);\n inputObject.container.appendChild(floatLinelement);\n inputObject.container.appendChild(floatLabelElement);\n }\n updateLabelState(args.element.value, floatLabelElement);\n if (args.floatLabelType === 'Always') {\n if (floatLabelElement.classList.contains(CLASSNAMES.LABELBOTTOM)) {\n removeClass([floatLabelElement], CLASSNAMES.LABELBOTTOM);\n }\n addClass([floatLabelElement], CLASSNAMES.LABELTOP);\n }\n if (args.floatLabelType === 'Auto') {\n var inputFloatHandler = function () { return inputEventHandler(args); };\n var blurFloatHandler = function () { return blurEventHandler(args); };\n // Add event listeners using the defined functions\n args.element.addEventListener('input', inputFloatHandler);\n args.element.addEventListener('blur', blurFloatHandler);\n // Store the event handler functions to remove them later\n args.element.__eventHandlers['floatInputHandler'] = { inputFloatHandler: inputFloatHandler };\n args.element.__eventHandlers['floatBlurHandler'] = { blurFloatHandler: blurFloatHandler };\n }\n else {\n unWireFloatLabelEvents(args);\n }\n if (!isNullOrUndefined(args.element.getAttribute('id'))) {\n floatLabelElement.setAttribute('for', args.element.getAttribute('id'));\n }\n }\n function unWireFloatLabelEvents(args) {\n if (!isNullOrUndefined(args.element) &&\n !isNullOrUndefined(args.element.__eventHandlers)\n && !isNullOrUndefined(args.element.__eventHandlers['floatInputHandler'])\n && !isNullOrUndefined(args.element.__eventHandlers['floatBlurHandler'])) {\n var inputFloatHandler = args.element.__eventHandlers['floatInputHandler'].inputFloatHandler;\n var blurFloatHandler = args.element.__eventHandlers['floatBlurHandler'].blurFloatHandler;\n // Remove the event listeners using the defined functions\n args.element.removeEventListener('input', inputFloatHandler);\n args.element.removeEventListener('blur', blurFloatHandler);\n // Clean up stored event handler functions\n delete args.element.__eventHandlers['floatInputHandler'];\n delete args.element.__eventHandlers['floatBlurHandler'];\n }\n }\n function checkFloatLabelType(type, container) {\n if (type === 'Always' && container.classList.contains('e-outline')) {\n container.classList.add('e-valid-input');\n }\n }\n function setPropertyValue(args, inputObject) {\n if (!isNullOrUndefined(args.properties)) {\n for (var _i = 0, _a = Object.keys(args.properties); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n setCssClass(args.properties.cssClass, [inputObject.container]);\n checkFloatLabelType(args.floatLabelType, inputObject.container);\n break;\n case 'enabled':\n setEnabled(args.properties.enabled, args.element, args.floatLabelType, inputObject.container);\n break;\n case 'enableRtl':\n setEnableRtl(args.properties.enableRtl, [inputObject.container]);\n break;\n case 'placeholder':\n setPlaceholder(args.properties.placeholder, args.element);\n break;\n case 'readonly':\n setReadonly(args.properties.readonly, args.element);\n break;\n }\n }\n }\n return inputObject;\n }\n function updateIconState(value, button, readonly) {\n if (!isNullOrUndefined(button)) {\n if (value && !readonly) {\n removeClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n else {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n }\n }\n function updateLabelState(value, label, element) {\n if (element === void 0) { element = null; }\n if (value) {\n addClass([label], CLASSNAMES.LABELTOP);\n if (label.classList.contains(CLASSNAMES.LABELBOTTOM)) {\n removeClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n else {\n var isNotFocused = element != null ? element !== document.activeElement : true;\n if (isNotFocused) {\n if (label.classList.contains(CLASSNAMES.LABELTOP)) {\n removeClass([label], CLASSNAMES.LABELTOP);\n }\n addClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n }\n function getParentNode(element) {\n var parentNode = isNullOrUndefined(element.parentNode) ? element\n : element.parentNode;\n if (parentNode && parentNode.classList.contains('e-input-in-wrap')) {\n parentNode = parentNode.parentNode;\n }\n return parentNode;\n }\n /**\n * To create clear button.\n */\n function createClearButton(element, inputObject, initial, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var button = makeElement('span', { className: CLASSNAMES.CLEARICON });\n var container = inputObject.container;\n if (!isNullOrUndefined(initial)) {\n container.appendChild(button);\n }\n else {\n var baseElement = inputObject.container.classList.contains(CLASSNAMES.FLOATINPUT) ?\n inputObject.container.querySelector('.' + CLASSNAMES.FLOATTEXT) : element;\n baseElement.insertAdjacentElement('afterend', button);\n }\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n wireClearBtnEvents(element, button, container);\n button.setAttribute('aria-label', 'close');\n return button;\n }\n function clickHandler(event, element, button) {\n if (!(element.classList.contains(CLASSNAMES.DISABLE) || element.readOnly)) {\n event.preventDefault();\n if (element !== document.activeElement) {\n element.focus();\n }\n element.value = '';\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n }\n function inputHandler(element, button) {\n updateIconState(element.value, button);\n }\n function focusHandler(element, button) {\n updateIconState(element.value, button, element.readOnly);\n }\n function blurHandler(element, button) {\n setTimeout(function () {\n if (!isNullOrUndefined(button)) {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n button = !isNullOrUndefined(element) && element.classList.contains('e-combobox') ? null : button;\n }\n }, 200);\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n function wireClearBtnEvents(element, button, container) {\n if (isBindClearAction === undefined || isBindClearAction) {\n var clickHandlerEvent = function (e) { return clickHandler(e, element, button); };\n button.addEventListener('click', clickHandlerEvent);\n element.__eventHandlers['clearClickHandler'] = { clickHandlerEvent: clickHandlerEvent };\n }\n var inputHandlerEvent = function () { return inputHandler(element, button); };\n var focusHandlerEvent = function () { return focusHandler(element, button); };\n var blurHandlerEvent = function () { return blurHandler(element, button); };\n element.addEventListener('input', inputHandlerEvent);\n element.addEventListener('focus', focusHandlerEvent);\n element.addEventListener('blur', blurHandlerEvent);\n // Store the bound functions to remove them later\n element.__eventHandlers['clearInputHandler'] = { inputHandlerEvent: inputHandlerEvent };\n element.__eventHandlers['clearFocusHandler'] = { focusHandlerEvent: focusHandlerEvent };\n element.__eventHandlers['clearBlurHandler'] = { blurHandlerEvent: blurHandlerEvent };\n }\n Input.wireClearBtnEvents = wireClearBtnEvents;\n function unWireClearBtnEvents(element, button) {\n if (!isNullOrUndefined(element) &&\n !isNullOrUndefined(element.__eventHandlers)) {\n if (!isNullOrUndefined(element.__eventHandlers['clearClickHandler'])) {\n var clickHandlerEvent = element.__eventHandlers['clearClickHandler'].clickHandlerEvent;\n if (isBindClearAction === undefined || isBindClearAction) {\n if (!isNullOrUndefined(button)) {\n button.removeEventListener('click', clickHandlerEvent);\n }\n }\n delete element.__eventHandlers['clearClickHandler'];\n }\n if (!isNullOrUndefined(element.__eventHandlers['clearInputHandler'])\n && !isNullOrUndefined(element.__eventHandlers['clearFocusHandler'])\n && !isNullOrUndefined(element.__eventHandlers['clearBlurHandler'])) {\n var inputHandlerEvent = element.__eventHandlers['clearInputHandler'].inputHandlerEvent;\n var focusHandlerEvent = element.__eventHandlers['clearFocusHandler'].focusHandlerEvent;\n var blurHandlerEvent = element.__eventHandlers['clearBlurHandler'].blurHandlerEvent;\n element.removeEventListener('input', inputHandlerEvent);\n element.removeEventListener('focus', focusHandlerEvent);\n element.removeEventListener('blur', blurHandlerEvent);\n // Clean up stored Event functions\n delete element.__eventHandlers['clearInputHandler'];\n delete element.__eventHandlers['clearFocusHandler'];\n delete element.__eventHandlers['clearBlurHandler'];\n }\n }\n }\n function destroy(args, button) {\n if (button === void 0) { button = null; }\n unbindInitialEvent(args);\n if (args.floatLabelType === 'Auto') {\n unWireFloatLabelEvents(args);\n }\n if (args.properties.showClearButton) {\n unWireClearBtnEvents(args.element, button);\n }\n if (!isNullOrUndefined(args.buttons)) {\n _internalRipple(false, null, args.buttons);\n }\n unwireFloatingEvents(args.element);\n if (!isNullOrUndefined(args.element)) {\n delete args.element.__eventHandlers;\n if (args.element.classList.contains(CLASSNAMES.INPUT)) {\n args.element.classList.remove(CLASSNAMES.INPUT);\n }\n }\n privateInputObj = null;\n }\n Input.destroy = destroy;\n function validateLabel(element, floatLabelType) {\n var parent = getParentNode(element);\n if (parent.classList.contains(CLASSNAMES.FLOATINPUT) && floatLabelType === 'Auto') {\n var label = getParentNode(element).getElementsByClassName('e-float-text')[0];\n updateLabelState(element.value, label, element);\n }\n }\n /**\n * To create input box contianer.\n */\n function createInputContainer(args, className, tagClass, tag, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var container;\n if (!isNullOrUndefined(args.customTag)) {\n container = makeElement(args.customTag, { className: className });\n container.classList.add(tagClass);\n }\n else {\n container = makeElement(tag, { className: className });\n }\n container.classList.add('e-control-wrapper');\n return container;\n }\n function encodePlaceHolder(placeholder) {\n var result = '';\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n var spanEle = document.createElement('span');\n spanEle.innerHTML = '';\n var hiddenInput = (spanEle.children[0]);\n result = hiddenInput.placeholder;\n }\n return result;\n }\n /**\n * Sets the value to the input element.\n * ```\n * E.g : Input.setValue('content', element, \"Auto\", true );\n * ```\n *\n * @param {string} value - Specify the value of the input element.\n * @param {HTMLInputElement | HTMLTextAreaElement} element - The element on which the specified value is updated.\n * @param {string} floatLabelType - Specify the float label type of the input element.\n * @param {boolean} clearButton - Boolean value to specify whether the clear icon is enabled / disabled on the input.\n */\n function setValue(value, element, floatLabelType, clearButton) {\n element.value = value;\n if (floatLabelType !== 'Never') {\n calculateWidth(element, element.parentElement);\n }\n if ((!isNullOrUndefined(floatLabelType)) && floatLabelType === 'Auto') {\n validateLabel(element, floatLabelType);\n }\n if (!isNullOrUndefined(clearButton) && clearButton) {\n var parentElement = getParentNode(element);\n if (!isNullOrUndefined(parentElement)) {\n var button = parentElement.getElementsByClassName(CLASSNAMES.CLEARICON)[0];\n if (!isNullOrUndefined(button)) {\n if (element.value && !isNullOrUndefined(parentElement) && parentElement.classList.contains('e-input-focus')) {\n removeClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n else {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n }\n }\n }\n checkInputValue(floatLabelType, element);\n }\n Input.setValue = setValue;\n /**\n * Sets the single or multiple cssClass to wrapper of input element.\n * ```\n * E.g : Input.setCssClass('e-custom-class', [element]);\n * ```\n *\n * @param {string} cssClass - Css class names which are needed to add.\n * @param {Element[] | NodeList} elements - The elements which are needed to add / remove classes.\n * @param {string} oldClass\n * - Css class names which are needed to remove. If old classes are need to remove, can give this optional parameter.\n */\n function setCssClass(cssClass, elements, oldClass) {\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n removeClass(elements, oldClass.split(' '));\n }\n if (!isNullOrUndefined(cssClass) && cssClass !== '') {\n addClass(elements, cssClass.split(' '));\n }\n }\n Input.setCssClass = setCssClass;\n /**\n * Set the width to the placeholder when it overflows on the button such as spinbutton, clearbutton, icon etc\n * ```\n * E.g : Input.calculateWidth(element, container);\n * ```\n *\n * @param {any} element - Input element which is need to add.\n * @param {HTMLElement} container - The parent element which is need to get the label span to calculate width\n */\n function calculateWidth(element, container, moduleName) {\n if (moduleName !== 'multiselect' && !_isElementVisible(element)) {\n return;\n }\n var elementWidth = moduleName === 'multiselect' ? element : element.clientWidth - parseInt(getComputedStyle(element, null).getPropertyValue('padding-left'), 10);\n if (!isNullOrUndefined(container) && !isNullOrUndefined(container.getElementsByClassName('e-float-text-content')[0])) {\n if (container.getElementsByClassName('e-float-text-content')[0].classList.contains('e-float-text-overflow')) {\n container.getElementsByClassName('e-float-text-content')[0].classList.remove('e-float-text-overflow');\n }\n if (elementWidth < container.getElementsByClassName('e-float-text-content')[0].clientWidth || elementWidth === container.getElementsByClassName('e-float-text-content')[0].clientWidth) {\n container.getElementsByClassName('e-float-text-content')[0].classList.add('e-float-text-overflow');\n }\n }\n }\n Input.calculateWidth = calculateWidth;\n /**\n * Set the width to the wrapper of input element.\n * ```\n * E.g : Input.setWidth('200px', container);\n * ```\n *\n * @param {number | string} width - Width value which is need to add.\n * @param {HTMLElement} container - The element on which the width is need to add.\n */\n function setWidth(width, container) {\n if (typeof width === 'number') {\n container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n calculateWidth(container.firstChild, container);\n }\n Input.setWidth = setWidth;\n /**\n * Set the placeholder attribute to the input element.\n * ```\n * E.g : Input.setPlaceholder('Search here', element);\n * ```\n *\n * @param {string} placeholder - Placeholder value which is need to add.\n * @param {HTMLInputElement | HTMLTextAreaElement} element - The element on which the placeholder is need to add.\n */\n function setPlaceholder(placeholder, element) {\n placeholder = encodePlaceHolder(placeholder);\n var parentElement = getParentNode(element);\n if (parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n var floatTextContent = parentElement.getElementsByClassName('e-float-text-content')[0];\n if (floatTextContent && floatTextContent.children[0]) {\n floatTextContent.children[0].textContent = placeholder;\n }\n else {\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = placeholder;\n }\n parentElement.classList.remove(CLASSNAMES.NOFLOATLABEL);\n element.removeAttribute('placeholder');\n }\n else {\n parentElement.classList.add(CLASSNAMES.NOFLOATLABEL);\n var floatTextContent = parentElement.getElementsByClassName('e-float-text-content')[0];\n if (floatTextContent) {\n floatTextContent.children[0].textContent = '';\n }\n else {\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = '';\n }\n }\n }\n else {\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n attributes(element, { 'placeholder': placeholder });\n }\n else {\n element.removeAttribute('placeholder');\n }\n }\n }\n Input.setPlaceholder = setPlaceholder;\n /**\n * Set the read only attribute to the input element\n * ```\n * E.g : Input.setReadonly(true, element);\n * ```\n *\n * @param {boolean} isReadonly\n * - Boolean value to specify whether to set read only. Setting \"True\" value enables read only.\n * @param {HTMLInputElement | HTMLTextAreaElement} element\n * - The element which is need to enable read only.\n */\n function setReadonly(isReadonly, element, floatLabelType) {\n if (isReadonly) {\n attributes(element, { readonly: '' });\n }\n else {\n element.removeAttribute('readonly');\n }\n if (!isNullOrUndefined(floatLabelType)) {\n validateLabel(element, floatLabelType);\n }\n }\n Input.setReadonly = setReadonly;\n /**\n * Displays the element direction from right to left when its enabled.\n * ```\n * E.g : Input.setEnableRtl(true, [inputObj.container]);\n * ```\n *\n * @param {boolean} isRtl\n * - Boolean value to specify whether to set RTL. Setting \"True\" value enables the RTL mode.\n * @param {Element[] | NodeList} elements\n * - The elements that are needed to enable/disable RTL.\n */\n function setEnableRtl(isRtl, elements) {\n if (isRtl) {\n addClass(elements, CLASSNAMES.RTL);\n }\n else {\n removeClass(elements, CLASSNAMES.RTL);\n }\n }\n Input.setEnableRtl = setEnableRtl;\n /**\n * Enables or disables the given input element.\n * ```\n * E.g : Input.setEnabled(false, element);\n * ```\n *\n * @param {boolean} isEnable\n * - Boolean value to specify whether to enable or disable.\n * @param {HTMLInputElement | HTMLTextAreaElement} element\n * - Element to be enabled or disabled.\n */\n function setEnabled(isEnable, element, floatLabelType, inputContainer) {\n var disabledAttrs = { 'disabled': '', 'aria-disabled': 'true' };\n var considerWrapper = isNullOrUndefined(inputContainer) ? false : true;\n if (isEnable) {\n element.classList.remove(CLASSNAMES.DISABLE);\n removeAttributes(disabledAttrs, element);\n if (considerWrapper) {\n removeClass([inputContainer], CLASSNAMES.DISABLE);\n }\n }\n else {\n element.classList.add(CLASSNAMES.DISABLE);\n addAttributes(disabledAttrs, element);\n if (considerWrapper) {\n addClass([inputContainer], CLASSNAMES.DISABLE);\n }\n }\n if (!isNullOrUndefined(floatLabelType)) {\n validateLabel(element, floatLabelType);\n }\n }\n Input.setEnabled = setEnabled;\n function setClearButton(isClear, element, inputObject, initial, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n if (isClear) {\n inputObject.clearButton = createClearButton(element, inputObject, initial, makeElement);\n }\n else {\n remove(inputObject.clearButton);\n inputObject.clearButton = null;\n }\n }\n Input.setClearButton = setClearButton;\n /**\n * Removing the multiple attributes from the given element such as \"disabled\",\"id\" , etc.\n * ```\n * E.g : Input.removeAttributes({ 'disabled': 'disabled', 'aria-disabled': 'true' }, element);\n * ```\n *\n * @param {string} attrs\n * - Array of attributes which are need to removed from the element.\n * @param {HTMLInputElement | HTMLElement} element\n * - Element on which the attributes are needed to be removed.\n */\n function removeAttributes(attrs, element) {\n for (var _i = 0, _a = Object.keys(attrs); _i < _a.length; _i++) {\n var key = _a[_i];\n var parentElement = getParentNode(element);\n if (key === 'disabled') {\n element.classList.remove(CLASSNAMES.DISABLE);\n }\n if (key === 'disabled' && parentElement.classList.contains(CLASSNAMES.INPUTGROUP)) {\n parentElement.classList.remove(CLASSNAMES.DISABLE);\n }\n if (key === 'placeholder' && parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = '';\n }\n else {\n element.removeAttribute(key);\n }\n }\n }\n Input.removeAttributes = removeAttributes;\n /**\n * Adding the multiple attributes to the given element such as \"disabled\",\"id\" , etc.\n * ```\n * E.g : Input.addAttributes({ 'id': 'inputpopup' }, element);\n * ```\n *\n * @param {string} attrs\n * - Array of attributes which is added to element.\n * @param {HTMLInputElement | HTMLElement} element\n * - Element on which the attributes are needed to be added.\n */\n function addAttributes(attrs, element) {\n for (var _i = 0, _a = Object.keys(attrs); _i < _a.length; _i++) {\n var key = _a[_i];\n var parentElement = getParentNode(element);\n if (key === 'disabled') {\n element.classList.add(CLASSNAMES.DISABLE);\n }\n if (key === 'disabled' && parentElement.classList.contains(CLASSNAMES.INPUTGROUP)) {\n parentElement.classList.add(CLASSNAMES.DISABLE);\n }\n if (key === 'placeholder' && parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = attrs[\"\" + key];\n }\n else {\n element.setAttribute(key, attrs[\"\" + key]);\n }\n }\n }\n Input.addAttributes = addAttributes;\n function removeFloating(input) {\n var container = input.container;\n if (!isNullOrUndefined(container) && container.classList.contains(CLASSNAMES.FLOATINPUT)) {\n var inputEle = container.querySelector('textarea') ? container.querySelector('textarea') :\n container.querySelector('input');\n var placeholder = container.querySelector('.' + CLASSNAMES.FLOATTEXT).textContent;\n var clearButton = container.querySelector('.e-clear-icon') !== null;\n detach(container.querySelector('.' + CLASSNAMES.FLOATLINE));\n detach(container.querySelector('.' + CLASSNAMES.FLOATTEXT));\n classList(container, [CLASSNAMES.INPUTGROUP], [CLASSNAMES.FLOATINPUT]);\n unwireFloatingEvents(inputEle);\n attributes(inputEle, { 'placeholder': placeholder });\n inputEle.classList.add(CLASSNAMES.INPUT);\n if (!clearButton && inputEle.tagName === 'INPUT') {\n inputEle.removeAttribute('required');\n }\n }\n }\n Input.removeFloating = removeFloating;\n function addFloating(input, type, placeholder, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var container = closest(input, '.' + CLASSNAMES.INPUTGROUP);\n floatType = type;\n var customTag = container.tagName;\n customTag = customTag !== 'DIV' && customTag !== 'SPAN' ? customTag : null;\n var args = { element: input, floatLabelType: type,\n customTag: customTag, properties: { placeholder: placeholder } };\n if (type !== 'Never') {\n var iconEle = container.querySelector('.e-clear-icon');\n var inputObj = { container: container };\n input.classList.remove(CLASSNAMES.INPUT);\n createFloatingInput(args, inputObj, makeElement);\n createSpanElement(inputObj.container, makeElement);\n calculateWidth(args.element, inputObj.container);\n var isPrependIcon = container.classList.contains('e-float-icon-left');\n if (isNullOrUndefined(iconEle)) {\n if (isPrependIcon) {\n var inputWrap = container.querySelector('.e-input-in-wrap');\n iconEle = inputWrap.querySelector('.e-input-group-icon');\n }\n else {\n iconEle = container.querySelector('.e-input-group-icon');\n }\n }\n if (isNullOrUndefined(iconEle)) {\n if (isPrependIcon) {\n iconEle = container.querySelector('.e-input-group-icon');\n }\n }\n else {\n var floatLine = container.querySelector('.' + CLASSNAMES.FLOATLINE);\n var floatText = container.querySelector('.' + CLASSNAMES.FLOATTEXT);\n var wrapper = isPrependIcon ? container.querySelector('.e-input-in-wrap') : container;\n wrapper.insertBefore(input, iconEle);\n wrapper.insertBefore(floatLine, iconEle);\n wrapper.insertBefore(floatText, iconEle);\n }\n }\n else {\n unWireFloatLabelEvents(args);\n }\n checkFloatLabelType(type, input.parentElement);\n }\n Input.addFloating = addFloating;\n /**\n * Create the span inside the label and add the label text into the span textcontent\n * ```\n * E.g : Input.createSpanElement(inputObject, makeElement);\n * ```\n *\n * @param {Element} inputObject\n * - Element which is need to get the label\n * @param {createElementParams} makeElement\n * - Element which is need to create the span\n */\n function createSpanElement(inputObject, makeElement) {\n if (inputObject.classList.contains('e-outline') && inputObject.getElementsByClassName('e-float-text')[0]) {\n var labelSpanElement = makeElement('span', { className: CLASSNAMES.FLOATTEXTCONTENT });\n labelSpanElement.innerHTML = inputObject.getElementsByClassName('e-float-text')[0].innerHTML;\n inputObject.getElementsByClassName('e-float-text')[0].innerHTML = '';\n inputObject.getElementsByClassName('e-float-text')[0].appendChild(labelSpanElement);\n }\n }\n Input.createSpanElement = createSpanElement;\n /**\n * Enable or Disable the ripple effect on the icons inside the Input. Ripple effect is only applicable for material theme.\n * ```\n * E.g : Input.setRipple(true, [inputObjects]);\n * ```\n *\n * @param {boolean} isRipple\n * - Boolean value to specify whether to enable the ripple effect.\n * @param {InputObject[]} inputObj\n * - Specify the collection of input objects.\n */\n function setRipple(isRipple, inputObj) {\n for (var i = 0; i < inputObj.length; i++) {\n _internalRipple(isRipple, inputObj[parseInt(i.toString(), 10)].container);\n }\n }\n Input.setRipple = setRipple;\n function _internalRipple(isRipple, container, button) {\n var argsButton = [];\n argsButton.push(button);\n var buttons = isNullOrUndefined(button) ?\n container.querySelectorAll('.e-input-group-icon') : argsButton;\n if (isRipple && buttons.length > 0) {\n for (var index = 0; index < buttons.length; index++) {\n buttons[parseInt(index.toString(), 10)].addEventListener('mousedown', _onMouseDownRipple, false);\n buttons[parseInt(index.toString(), 10)].addEventListener('mouseup', _onMouseUpRipple, false);\n }\n }\n else if (buttons.length > 0) {\n for (var index = 0; index < buttons.length; index++) {\n buttons[parseInt(index.toString(), 10)].removeEventListener('mousedown', _onMouseDownRipple, this);\n buttons[parseInt(index.toString(), 10)].removeEventListener('mouseup', _onMouseUpRipple, this);\n }\n }\n }\n function _onMouseRipple(container, button) {\n if (!container.classList.contains('e-disabled') && !container.querySelector('input').readOnly) {\n button.classList.add('e-input-btn-ripple');\n }\n }\n function _isElementVisible(element) {\n if (!element) {\n return false;\n }\n // Check if the element or any of its parents are hidden using display: none\n var currentElement = element;\n while (currentElement && currentElement !== document.body) {\n var style = window.getComputedStyle(currentElement);\n if (style.display === 'none') {\n return false;\n }\n currentElement = currentElement.parentElement;\n }\n // If none of the elements have display: none, the element is considered visible\n return true;\n }\n function _onMouseDownRipple() {\n var ele = null || this;\n var parentEle = this.parentElement;\n while (!parentEle.classList.contains('e-input-group')) {\n parentEle = parentEle.parentElement;\n }\n _onMouseRipple(parentEle, ele);\n }\n function _onMouseUpRipple() {\n var ele = null || this;\n setTimeout(function () {\n ele.classList.remove('e-input-btn-ripple');\n }, 500);\n }\n function createIconEle(iconClass, makeElement) {\n var button = makeElement('span', { className: iconClass });\n button.classList.add('e-input-group-icon');\n return button;\n }\n /**\n * Creates a new span element with the given icons added and append it in container element.\n * ```\n * E.g : Input.addIcon('append', 'e-icon-spin', inputObj.container, inputElement);\n * ```\n *\n * @param {string} position - Specify the icon placement on the input.Possible values are append and prepend.\n * @param {string | string[]} icons - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param {HTMLElement} container - The container on which created span element is going to append.\n * @param {HTMLElement} input - The inputElement on which created span element is going to prepend.\n */\n function addIcon(position, icons, container, input, internalCreate) {\n var result = typeof (icons) === 'string' ? icons.split(',')\n : icons;\n if (position.toLowerCase() === 'append') {\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var icon = result_1[_i];\n appendSpan(icon, container, internalCreate);\n }\n }\n else {\n for (var _a = 0, result_2 = result; _a < result_2.length; _a++) {\n var icon = result_2[_a];\n prependSpan(icon, container, input, internalCreate);\n }\n }\n if (container.getElementsByClassName('e-input-group-icon')[0] && container.getElementsByClassName('e-float-text-overflow')[0]) {\n container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n }\n Input.addIcon = addIcon;\n /**\n * Creates a new span element with the given icons added and prepend it in input element.\n * ```\n * E.g : Input.prependSpan('e-icon-spin', inputObj.container, inputElement);\n * ```\n *\n * @param {string} iconClass - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param {HTMLElement} container - The container on which created span element is going to append.\n * @param {HTMLElement} inputElement - The inputElement on which created span element is going to prepend.\n */\n function prependSpan(iconClass, container, inputElement, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var button = createIconEle(iconClass, makeElement);\n container.classList.add('e-float-icon-left');\n var innerWrapper = container.querySelector('.e-input-in-wrap');\n if (isNullOrUndefined(innerWrapper)) {\n innerWrapper = makeElement('span', { className: 'e-input-in-wrap' });\n inputElement.parentNode.insertBefore(innerWrapper, inputElement);\n var result = container.querySelectorAll(inputElement.tagName + ' ~ *');\n innerWrapper.appendChild(inputElement);\n for (var i = 0; i < result.length; i++) {\n var element = result[parseInt(i.toString(), 10)];\n var parentElement = innerWrapper.parentElement;\n if (!(element.classList.contains('e-float-line')) || (!(parentElement && parentElement.classList.contains('e-filled')) && parentElement)) {\n innerWrapper.appendChild(element);\n }\n }\n }\n innerWrapper.parentNode.insertBefore(button, innerWrapper);\n _internalRipple(true, container, button);\n return button;\n }\n Input.prependSpan = prependSpan;\n /**\n * Creates a new span element with the given icons added and append it in container element.\n * ```\n * E.g : Input.appendSpan('e-icon-spin', inputObj.container);\n * ```\n *\n * @param {string} iconClass - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param {HTMLElement} container - The container on which created span element is going to append.\n */\n function appendSpan(iconClass, container, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var button = createIconEle(iconClass, makeElement);\n var wrap = (container.classList.contains('e-float-icon-left')) ? container.querySelector('.e-input-in-wrap') :\n container;\n wrap.appendChild(button);\n _internalRipple(true, container, button);\n return button;\n }\n Input.appendSpan = appendSpan;\n function validateInputType(containerElement, input) {\n if (input.type === 'hidden') {\n containerElement.classList.add('e-hidden');\n }\n else if (containerElement.classList.contains('e-hidden')) {\n containerElement.classList.remove('e-hidden');\n }\n }\n Input.validateInputType = validateInputType;\n function updateHTMLAttributesToElement(htmlAttributes, element) {\n if (!isNullOrUndefined(htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttributes.indexOf(key) < 0) {\n element.setAttribute(key, htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n Input.updateHTMLAttributesToElement = updateHTMLAttributesToElement;\n function updateCssClass(newClass, oldClass, container) {\n setCssClass(getInputValidClassList(newClass), [container], getInputValidClassList(oldClass));\n }\n Input.updateCssClass = updateCssClass;\n function getInputValidClassList(inputClassName) {\n var result = inputClassName;\n if (!isNullOrUndefined(inputClassName) && inputClassName !== '') {\n result = (inputClassName.replace(/\\s+/g, ' ')).trim();\n }\n return result;\n }\n Input.getInputValidClassList = getInputValidClassList;\n function updateHTMLAttributesToWrapper(htmlAttributes, container) {\n if (!isNullOrUndefined(htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttributes.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassValues = this.getInputValidClassList(htmlAttributes[\"\" + key]);\n if (updatedClassValues !== '') {\n addClass([container], updatedClassValues.split(' '));\n }\n }\n else if (key === 'style') {\n var setStyle = container.getAttribute(key);\n setStyle = !isNullOrUndefined(setStyle) ? (setStyle + htmlAttributes[\"\" + key]) :\n htmlAttributes[\"\" + key];\n container.setAttribute(key, setStyle);\n }\n else {\n container.setAttribute(key, htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n }\n Input.updateHTMLAttributesToWrapper = updateHTMLAttributesToWrapper;\n function isBlank(inputString) {\n return (!inputString || /^\\s*$/.test(inputString));\n }\n Input.isBlank = isBlank;\n})(Input || (Input = {}));\n/* eslint-enable valid-jsdoc, jsdoc/require-jsdoc, jsdoc/require-returns, jsdoc/require-param */\n","/* tslint:disable-next-line:max-line-length */\nimport { EventHandler, isNullOrUndefined, extend, classList, addClass, removeClass, Browser, getValue, setValue, createElement } from '@syncfusion/ej2-base';\nimport { parentsUntil, getUid, appendChildren, getDatePredicate, getObject, extendObjWithFn, eventPromise, setChecked, clearReactVueTemplates, padZero, Global } from '../base/util';\nimport { remove, debounce, Internationalization, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { DataUtil, Query, DataManager, Predicate } from '@syncfusion/ej2-data';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport * as events from '../base/constant';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { getForeignData } from '../base/util';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport { getFilterMenuPostion, toogleCheckbox, createCboxWithWrap, removeAddCboxClasses, getColumnByForeignKeyValue } from '../base/util';\n/**\n * @hidden\n * `CheckBoxFilterBase` module is used to handle filtering action.\n */\nvar CheckBoxFilterBase = /** @class */ (function () {\n /**\n * Constructor for checkbox filtering module\n *\n * @param {IXLFilter} parent - specifies the IXLFilter\n * @hidden\n */\n function CheckBoxFilterBase(parent) {\n this.isExecuteLocal = false;\n this.existingPredicate = {};\n this.foreignKeyQuery = new Query();\n /** @hidden */\n this.filterState = true;\n this.values = {};\n this.renderEmpty = false;\n this.isCheckboxFilterTemplate = false;\n this.infiniteRenderMod = false;\n // for infinite scroll ui\n this.infiniteInitialLoad = false;\n this.infiniteSearchValChange = false;\n this.infinitePermenantLocalData = [];\n this.infiniteQueryExecutionPending = false;\n this.infiniteSkipCnt = 0;\n this.infiniteScrollAppendDiff = 0;\n this.prevInfiniteScrollDirection = '';\n this.infiniteLoadedElem = [];\n this.infiniteDataCount = 0;\n this.infiniteLocalSelectAll = true;\n this.localInfiniteSelectAllClicked = false;\n this.localInfiniteSelectionInteracted = false;\n this.infiniteManualSelectMaintainPred = [];\n this.parent = parent;\n this.id = this.parent.element.id;\n this.valueFormatter = new ValueFormatter(this.parent.locale);\n this.cBoxTrue = createCheckBox(this.parent.createElement, false, { checked: true, label: ' ' });\n this.cBoxFalse = createCheckBox(this.parent.createElement, false, { checked: false, label: ' ' });\n this.cBoxTrue.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden', attrs: { type: 'checkbox' }\n }), this.cBoxTrue.firstChild);\n this.cBoxFalse.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden', attrs: { 'type': 'checkbox' }\n }), this.cBoxFalse.firstChild);\n this.cBoxFalse.querySelector('.e-frame').classList.add('e-uncheck');\n if (this.parent.enableRtl) {\n addClass([this.cBoxTrue, this.cBoxFalse], ['e-rtl']);\n }\n if (this.parent.cssClass) {\n if (this.parent.cssClass.indexOf(' ') !== -1) {\n addClass([this.cBoxTrue, this.cBoxFalse], this.parent.cssClass.split(' '));\n }\n else {\n addClass([this.cBoxTrue, this.cBoxFalse], [this.parent.cssClass]);\n }\n }\n }\n /**\n * @returns {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.destroy = function () {\n this.closeDialog();\n };\n CheckBoxFilterBase.prototype.wireEvents = function () {\n EventHandler.add(this.dlg, 'click', this.clickHandler, this);\n EventHandler.add(this.dlg, 'keyup', this.keyupHandler, this);\n this.searchHandler = debounce(this.searchBoxKeyUp, 200);\n var elem = this.dialogObj.element.querySelector('.e-searchinput');\n if (elem) {\n EventHandler.add(elem, 'keyup', this.searchHandler, this);\n EventHandler.add(elem, 'input', this.searchHandler, this);\n }\n };\n CheckBoxFilterBase.prototype.unWireEvents = function () {\n EventHandler.remove(this.dlg, 'click', this.clickHandler);\n EventHandler.remove(this.dlg, 'keyup', this.keyupHandler);\n var elem = this.dialogObj.element.querySelector('.e-searchinput');\n if (elem) {\n EventHandler.remove(elem, 'keyup', this.searchHandler);\n EventHandler.remove(elem, 'input', this.searchHandler);\n }\n };\n CheckBoxFilterBase.prototype.foreignKeyFilter = function (args, fColl, mPredicate) {\n var _this = this;\n var fPredicate = {};\n var filterCollection = [];\n var query = this.foreignKeyQuery.clone();\n this.options.column.dataSource.\n executeQuery(query.where(mPredicate)).then(function (e) {\n _this.options.column.columnData = e.result;\n _this.parent.notify(events.generateQuery, { predicate: fPredicate, column: _this.options.column });\n args.ejpredicate = fPredicate.predicate.predicates;\n var fpred = fPredicate.predicate.predicates;\n for (var i = 0; i < fpred.length; i++) {\n filterCollection.push({\n field: fpred[parseInt(i.toString(), 10)].field,\n predicate: 'or',\n matchCase: fpred[parseInt(i.toString(), 10)].ignoreCase,\n ignoreAccent: fpred[parseInt(i.toString(), 10)].ignoreAccent,\n operator: fpred[parseInt(i.toString(), 10)].operator,\n value: fpred[parseInt(i.toString(), 10)].value,\n type: _this.options.type\n });\n }\n args.filterCollection = filterCollection.length ? filterCollection :\n fColl.filter(function (col) { return col.field = _this.options.field; });\n _this.options.handler(args);\n });\n };\n CheckBoxFilterBase.prototype.searchBoxClick = function (e) {\n var target = e.target;\n if (target.classList.contains('e-searchclear')) {\n this.sInput.value = target.classList.contains('e-chkcancel-icon') ? '' : this.sInput.value;\n if (this.isCheckboxFilterTemplate) {\n this.parent.notify('refreshCheckbox', { event: e });\n }\n else {\n this.refreshCheckboxes();\n }\n this.updateSearchIcon();\n this.sInput.focus();\n }\n };\n CheckBoxFilterBase.prototype.searchBoxKeyUp = function (e) {\n if (isNullOrUndefined(e) || (e.key !== 'ArrowUp' && e.key !== 'ArrowDown' && e.key !== 'Tab' && !(e.key === 'Tab' && e.shiftKey))) {\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === 'Shimmer') {\n this.parent.showMaskRow(undefined, this.dialogObj.element);\n }\n if (this.isCheckboxFilterTemplate) {\n this.parent.notify('refreshCheckbox', { event: e });\n }\n else {\n this.refreshCheckboxes();\n }\n this.updateSearchIcon();\n }\n };\n CheckBoxFilterBase.prototype.updateSearchIcon = function () {\n if (this.sInput.value.length) {\n classList(this.sIcon, ['e-chkcancel-icon'], ['e-search-icon']);\n if (!isNullOrUndefined(document.body.querySelector('.e-chkcancel-icon'))) {\n document.body.querySelector('.e-chkcancel-icon').setAttribute('title', this.localeObj.getConstant('Clear'));\n }\n }\n else {\n classList(this.sIcon, ['e-search-icon'], ['e-chkcancel-icon']);\n if (!isNullOrUndefined(document.body.querySelector('.e-searchclear.e-search-icon'))) {\n document.body.querySelector('.e-searchclear.e-search-icon').setAttribute('title', this.localeObj.getConstant('Search'));\n }\n }\n };\n /**\n * Gets the localized label by locale keyword.\n *\n * @param {string} key - Defines localization key\n * @returns {string} - returns localization label\n */\n CheckBoxFilterBase.prototype.getLocalizedLabel = function (key) {\n return this.localeObj.getConstant(key);\n };\n CheckBoxFilterBase.prototype.updateDataSource = function () {\n var dataSource = this.options.dataSource;\n var str = 'object';\n if (!(dataSource instanceof DataManager)) {\n for (var i = 0; i < dataSource.length; i++) {\n // eslint-disable-next-line valid-typeof\n if (typeof dataSource !== str) {\n var obj = {};\n obj[this.options.field] = dataSource[parseInt(i.toString(), 10)];\n dataSource[parseInt(i.toString(), 10)] = obj;\n }\n }\n }\n };\n CheckBoxFilterBase.prototype.updateModel = function (options) {\n this.options = options;\n this.existingPredicate = options.actualPredicate || {};\n this.options.dataSource = options.dataSource;\n this.options.dataManager = options.dataManager ? options.dataManager : options.dataSource;\n this.updateDataSource();\n this.options.type = options.type;\n this.options.format = options.format || '';\n this.options.ignoreAccent = options.ignoreAccent || false;\n this.options.filteredColumns = options.filteredColumns || this.parent.filterSettings.columns;\n this.options.query = options.query || new Query();\n this.options.allowCaseSensitive = options.allowCaseSensitive || false;\n this.options.uid = options.column.uid;\n this.options.disableHtmlEncode = options.column.disableHtmlEncode || false;\n this.values = {};\n this.localeObj = options.localeObj;\n this.isFiltered = options.filteredColumns.length;\n this.infiniteRenderMod = this.parent.filterSettings && this.parent.filterSettings.enableInfiniteScrolling ? true : false;\n this.infiniteUnloadParentExistPred = this.infiniteRenderMod && this.existingPredicate[this.options.column.field] ? this.existingPredicate[this.options.column.field].slice() : [];\n };\n CheckBoxFilterBase.prototype.getAndSetChkElem = function (options) {\n this.dlg = this.parent.createElement('div', {\n id: this.id + this.options.type + '_excelDlg',\n attrs: { uid: this.options.column.uid },\n className: 'e-checkboxfilter e-filter-popup'\n });\n this.sBox = this.parent.createElement('div', { className: 'e-searchcontainer' });\n if (!options.hideSearchbox) {\n this.sInput = this.parent.createElement('input', {\n id: this.id + '_SearchBox',\n className: 'e-searchinput'\n });\n this.sIcon = this.parent.createElement('span', {\n className: 'e-searchclear e-search-icon e-icons e-input-group-icon', attrs: {\n type: 'text', title: this.getLocalizedLabel('Search')\n }\n });\n this.searchBox = this.parent.createElement('span', { className: 'e-searchbox e-fields' });\n this.searchBox.appendChild(this.sInput);\n this.sBox.appendChild(this.searchBox);\n var inputargs = {\n element: this.sInput, floatLabelType: 'Never', properties: {\n placeholder: this.getLocalizedLabel('Search'),\n cssClass: this.parent.cssClass\n }\n };\n Input.createInput(inputargs, this.parent.createElement);\n this.searchBox.querySelector('.e-input-group').appendChild(this.sIcon);\n }\n this.spinner = this.parent.createElement('div', { className: 'e-spinner' }); //for spinner\n this.cBox = this.parent.createElement('div', {\n id: this.id + this.options.type + '_CheckBoxList',\n className: 'e-checkboxlist e-fields'\n });\n this.spinner.appendChild(this.cBox);\n this.sBox.appendChild(this.spinner);\n return this.sBox;\n };\n CheckBoxFilterBase.prototype.showDialog = function (options) {\n var args = {\n requestType: events.filterBeforeOpen,\n columnName: this.options.field, columnType: this.options.type, cancel: false\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.notify(events.cBoxFltrBegin, args);\n if (args.cancel) {\n options.cancel = args.cancel;\n return;\n }\n this.dialogObj = new Dialog({\n visible: false, content: this.sBox,\n close: this.closeDialog.bind(this),\n enableRtl: this.parent.enableRtl,\n width: (!isNullOrUndefined(parentsUntil(options.target, 'e-bigger')))\n || this.parent.element.classList.contains('e-device') ? 260 : 255,\n target: this.parent.element, animationSettings: { effect: 'None' },\n buttons: [{\n click: this.btnClick.bind(this),\n buttonModel: {\n content: this.getLocalizedLabel(this.isExcel ? 'OKButton' : 'FilterButton'),\n cssClass: this.parent.cssClass ? 'e-primary' + ' ' + this.parent.cssClass : 'e-primary',\n isPrimary: true\n }\n },\n {\n click: this.btnClick.bind(this),\n buttonModel: { cssClass: this.parent.cssClass ? 'e-flat' + ' ' + this.parent.cssClass : 'e-flat',\n content: this.getLocalizedLabel(this.isExcel ? 'CancelButton' : 'ClearButton') }\n }],\n created: this.dialogCreated.bind(this),\n open: this.dialogOpen.bind(this),\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n var isStringTemplate = 'isStringTemplate';\n this.dialogObj[\"\" + isStringTemplate] = true;\n this.renderResponsiveFilter(options);\n var dialogLabel = this.parent.filterSettings && this.parent.filterSettings.type === 'CheckBox' ?\n this.getLocalizedLabel('CheckBoxFilterDialogARIA') : this.getLocalizedLabel('ExcelFilterDialogARIA');\n this.dlg.setAttribute('aria-label', dialogLabel);\n if (options.isResponsiveFilter) {\n var responsiveCnt = document.querySelector('.e-responsive-dialog > .e-dlg-content > .e-mainfilterdiv');\n responsiveCnt.appendChild(this.dlg);\n }\n else {\n this.parent.element.appendChild(this.dlg);\n }\n this.dialogObj.appendTo(this.dlg);\n this.dialogObj.element.style.maxHeight = options.isResponsiveFilter ? 'none' : this.options.height + 'px';\n this.dialogObj.show();\n var content = this.dialogObj.element.querySelector('.e-dlg-content');\n content.appendChild(this.sBox);\n this.wireEvents();\n if (!this.parent.enableAdaptiveUI) {\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === 'Shimmer'\n && !this.infiniteRenderMod) {\n this.parent.showMaskRow(undefined, this.dialogObj.element);\n }\n if (this.infiniteRenderMod && this.parent.filterSettings && this.parent.filterSettings.loadingIndicator === 'Shimmer') {\n this.showMask();\n }\n }\n else {\n if (this.parent.enableAdaptiveUI && this.parent.filterSettings && this.parent.filterSettings.loadingIndicator === 'Shimmer') {\n this.getAllData();\n return;\n }\n if (this.infiniteRenderMod) {\n this.cBox.style.marginTop = this.getListHeight(this.cBox) + 'px';\n }\n createSpinner({ target: this.spinner, cssClass: this.parent.cssClass ? this.parent.cssClass : null }, this.parent.createElement);\n showSpinner(this.spinner);\n }\n this.getAllData();\n };\n CheckBoxFilterBase.prototype.renderResponsiveFilter = function (options) {\n if (options.isResponsiveFilter) {\n this.dialogObj.buttons = [{}];\n this.dialogObj.position = { X: '', Y: '' };\n this.dialogObj.target = document.querySelector('.e-resfilter > .e-dlg-content > .e-mainfilterdiv');\n this.dialogObj.width = '100%';\n }\n };\n CheckBoxFilterBase.prototype.dialogCreated = function (e) {\n if (this.options.isResponsiveFilter) {\n this.dialogObj.element.style.left = '0px';\n }\n else {\n if (!Browser.isDevice) {\n getFilterMenuPostion(this.options.target, this.dialogObj);\n }\n else {\n this.dialogObj.position = { X: 'center', Y: 'center' };\n }\n }\n if (this.options.column.showColumnMenu) {\n this.parent.notify(events.filterDialogCreated, e);\n }\n };\n CheckBoxFilterBase.prototype.openDialog = function (options) {\n this.updateModel(options);\n this.getAndSetChkElem(options);\n this.showDialog(options);\n };\n CheckBoxFilterBase.prototype.closeDialog = function () {\n if (this.infiniteRenderMod && this.infinitePermenantLocalData.length && !this.options.isRemote) {\n this.options.dataSource.dataSource.json = this.infinitePermenantLocalData;\n }\n if (this.dialogObj && !this.dialogObj.isDestroyed) {\n this.isBlanks = false;\n var filterTemplateCol = this.options.columns.filter(function (col) { return col.getFilterItemTemplate(); });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var registeredTemplate = this.parent.registeredTemplate;\n if (filterTemplateCol.length && !isNullOrUndefined(registeredTemplate) && registeredTemplate.filterItemTemplate) {\n this.parent.destroyTemplate(['filterItemTemplate']);\n }\n if ((this.parent.isReact || this.parent.isVue) && this.parent.destroyTemplate !== undefined) {\n clearReactVueTemplates(this.parent, ['filterItemTemplate']);\n }\n this.parent.notify(events.filterMenuClose, { field: this.options.field });\n this.unWireEvents();\n if (this.parent.isReact && this.options.column.filter && typeof (this.options.column.filter.itemTemplate) !== 'string'\n && (this.options.column.filter.type === 'CheckBox' || this.options.column.filter.type === 'Excel')) {\n this.dialogObj.element.querySelector('.e-dlg-content').innerHTML = '';\n }\n this.dialogObj.destroy();\n if (this.dlg && this.dlg.parentElement) {\n remove(this.dlg);\n }\n this.dlg = null;\n this.parent.notify(events.filterDialogClose, {});\n }\n };\n /**\n * @param {Column} col - Defines column details\n * @returns {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.clearFilter = function (col) {\n // eslint-disable-next-line max-len\n var args = { instance: this, handler: this.clearFilter, cancel: false };\n this.parent.notify(events.fltrPrevent, args);\n if (args.cancel) {\n return;\n }\n this.options.handler({ action: 'clear-filter', field: col ? col.field : this.options.field });\n };\n CheckBoxFilterBase.prototype.btnClick = function (e) {\n if (this.filterState) {\n if ((e.target.tagName.toLowerCase() === 'input' && e.target.classList.contains('e-searchinput')) ||\n e.keyCode === 13) {\n if (!this.isCheckboxFilterTemplate) {\n this.fltrBtnHandler();\n }\n }\n else {\n var text = e.target.firstChild.textContent.toLowerCase();\n if (this.getLocalizedLabel(this.isExcel ? 'OKButton' : 'FilterButton').toLowerCase() === text) {\n if (!this.isCheckboxFilterTemplate) {\n this.fltrBtnHandler();\n }\n }\n else if (this.getLocalizedLabel('ClearButton').toLowerCase() === text) {\n this.clearFilter();\n }\n }\n this.closeDialog();\n }\n else if (e.target && e.target.firstChild &&\n e.target.firstChild.textContent.toLowerCase() === this.getLocalizedLabel('CancelButton').toLowerCase()) {\n this.closeDialog();\n }\n else if (!(e.target.tagName.toLowerCase() === 'input')) {\n this.clearFilter();\n this.closeDialog();\n }\n if (this.options.column.showColumnMenu) {\n this.parent.notify(events.afterFilterColumnMenuClose, {});\n }\n if (!isNullOrUndefined(this.parent.focusModule)) {\n this.parent.focusModule.filterfocus();\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.fltrBtnHandler = function () {\n var _this = this;\n if (this.infiniteRenderMod) {\n this.cBox.innerHTML = '';\n appendChildren(this.cBox, this.infiniteLoadedElem.slice());\n }\n var checked = [].slice.call(this.cBox.querySelectorAll('.e-check:not(.e-selectall):not(.e-add-current)'));\n var check = checked;\n var optr = 'equal';\n var ddlValue = this.dialogObj.element.querySelector('.e-dropdownlist');\n if (ddlValue) {\n this.options.operator = optr = ddlValue.ej2_instances[0].value;\n }\n this.isMenuNotEqual = this.options.operator === 'notequal';\n var searchInput;\n if (!this.options.hideSearchbox) {\n searchInput = this.searchBox.querySelector('.e-searchinput');\n }\n var caseSen = this.options.allowCaseSensitive;\n var defaults = {\n field: this.options.field, predicate: this.isMenuNotEqual ? 'and' : 'or', uid: this.options.uid,\n operator: optr, type: this.options.type, matchCase: caseSen, ignoreAccent: this.options.ignoreAccent\n };\n var isNotEqual = this.itemsCnt !== checked.length && this.itemsCnt - checked.length < checked.length;\n if (isNotEqual && searchInput && searchInput.value === '') {\n optr = this.isMenuNotEqual ? 'equal' : 'notequal';\n checked = [].slice.call(this.cBox.querySelectorAll('.e-uncheck:not(.e-selectall)'));\n defaults.predicate = this.isMenuNotEqual ? 'or' : 'and';\n defaults.operator = optr;\n }\n var val;\n var length;\n var coll = [];\n if ((checked.length !== this.itemsCnt || (searchInput && searchInput.value && searchInput.value !== ''))\n || this.infiniteRenderMod) {\n if (!this.infiniteRenderMod) {\n coll = this.predicateIterate(checked, defaults, isNotEqual);\n }\n else if (this.infiniteRenderMod &&\n (!this.infiniteSearchPred || (this.infiniteSearchPred && !this.infiniteSearchPred.isComplex))) {\n this.infiniteFltrBtnHandler(coll);\n }\n else {\n if (this.infiniteSearchPred.isComplex) {\n coll = this.predicateIterate(checked, defaults, isNotEqual);\n }\n }\n if ((this.options.type === 'date' || this.options.type === 'datetime') && check.length) {\n length = check.length - 1;\n val = this.values[parentsUntil(check[parseInt(length.toString(), 10)], 'e-ftrchk').getAttribute('uid')];\n if (isNullOrUndefined(val) && isNotEqual) {\n coll.push({\n field: defaults.field, matchCase: defaults.matchCase, operator: 'equal',\n predicate: 'or', value: null\n });\n }\n }\n var addCurrSelection = this.infiniteRenderMod ? this.sBox.querySelector('.e-add-current') :\n this.cBox.querySelector('.e-add-current');\n if (addCurrSelection && addCurrSelection.classList.contains('e-check')) {\n var existingPredicate_1 = this.existingPredicate[this.options.field];\n if (existingPredicate_1) {\n var _loop_1 = function (j) {\n if (!coll.some(function (data) {\n return data\n .value === existingPredicate_1[parseInt(j.toString(), 10)].value;\n })) {\n coll.push(existingPredicate_1[parseInt(j.toString(), 10)]);\n }\n };\n for (var j = 0; j < existingPredicate_1.length; j++) {\n _loop_1(j);\n }\n }\n else {\n return;\n }\n }\n if (!this.infiniteRenderMod) {\n this.initiateFilter(coll);\n }\n else if (coll.length) {\n this.initiateFilter(coll);\n }\n else if (this.sBox.querySelector('.e-selectall').classList.contains('e-check') && !coll.length) {\n var isClearFilter = this.options.filteredColumns.some(function (value) {\n return _this.options.field === value.field;\n });\n if (isClearFilter) {\n this.clearFilter();\n }\n }\n }\n else {\n var isClearFilter = this.options.filteredColumns.some(function (value) {\n return _this.options.field === value.field;\n });\n if (isClearFilter) {\n this.clearFilter();\n }\n }\n };\n CheckBoxFilterBase.prototype.predicateIterate = function (checkBoxChecked, defaults, isNotEqual) {\n var value;\n var fObj;\n var coll = [];\n for (var i = 0; i < checkBoxChecked.length; i++) {\n value = this.values[parentsUntil(checkBoxChecked[parseInt(i.toString(), 10)], 'e-ftrchk').getAttribute('uid')];\n fObj = extend({}, { value: value }, defaults);\n if (value && !value.toString().length) {\n fObj.operator = isNotEqual ? 'notequal' : 'equal';\n }\n if (value === '' || isNullOrUndefined(value)) {\n coll = coll.concat(CheckBoxFilterBase.generateNullValuePredicates(defaults));\n }\n else {\n coll.push(fObj);\n }\n this.notifyFilterPrevEvent(fObj);\n }\n return coll;\n };\n CheckBoxFilterBase.prototype.infiniteFltrBtnHandler = function (coll) {\n var value;\n if (this.infiniteManualSelectMaintainPred.length) {\n for (var i = 0; i < this.infiniteManualSelectMaintainPred.length; i++) {\n var pred = this.infiniteManualSelectMaintainPred[i];\n value = pred.value + '';\n if (value === '' || isNullOrUndefined(value)) {\n var dummyDefaults = { predicate: pred.predicate, field: pred.field, type: pred.type, uid: pred.uid, operator: pred.operator,\n matchCase: pred.matchCase, ignoreAccent: pred.ignoreAccent };\n coll.push.apply(coll, CheckBoxFilterBase.generateNullValuePredicates(dummyDefaults));\n }\n else {\n coll.push(this.infiniteManualSelectMaintainPred[i]);\n }\n this.notifyFilterPrevEvent(this.infiniteManualSelectMaintainPred[i]);\n }\n }\n if (!this.localInfiniteSelectAllClicked && this.sInput.value === '' && !(!this.options.parentCurrentViewDataCount && coll.length)) {\n for (var i = 0; i < this.infiniteUnloadParentExistPred.length; i++) {\n coll.unshift(this.infiniteUnloadParentExistPred[i]);\n this.notifyFilterPrevEvent(this.existingPredicate[this.options.field][i]);\n }\n }\n if (this.sInput.value !== '' && (!this.localInfiniteSelectAllClicked || this.infiniteLocalSelectAll)) {\n this.infiniteSearchPred['predicate'] = 'or';\n coll.unshift(this.infiniteSearchPred);\n this.notifyFilterPrevEvent(this.infiniteSearchPred);\n }\n };\n CheckBoxFilterBase.prototype.notifyFilterPrevEvent = function (predicate) {\n var args = {\n instance: this, handler: this.fltrBtnHandler, arg1: predicate.field, arg2: predicate.predicate, arg3: predicate.operator,\n arg4: predicate.matchCase, arg5: predicate.ignoreAccent, arg6: predicate.value, cancel: false\n };\n this.parent.notify(events.fltrPrevent, args);\n if (args.cancel) {\n return;\n }\n };\n // eslint-disable-next-line\n /** @hidden */\n CheckBoxFilterBase.generateNullValuePredicates = function (defaults) {\n var coll = [];\n if (defaults.type === 'string') {\n coll.push({\n field: defaults.field, ignoreAccent: defaults.ignoreAccent, matchCase: defaults.matchCase,\n operator: defaults.operator, predicate: defaults.predicate, value: ''\n });\n }\n coll.push({\n field: defaults.field,\n matchCase: defaults.matchCase, operator: defaults.operator, predicate: defaults.predicate, value: null\n });\n coll.push({\n field: defaults.field, matchCase: defaults.matchCase, operator: defaults.operator,\n predicate: defaults.predicate, value: undefined\n });\n return coll;\n };\n // eslint-disable-next-line\n /** @hidden */\n CheckBoxFilterBase.prototype.initiateFilter = function (fColl) {\n var firstVal = fColl[0];\n var predicate;\n if (!isNullOrUndefined(firstVal)) {\n predicate = firstVal.ejpredicate ? firstVal.ejpredicate :\n new Predicate(firstVal.field, firstVal.operator, firstVal.value, !firstVal.matchCase, firstVal.ignoreAccent);\n for (var j = 1; j < fColl.length; j++) {\n predicate = fColl[parseInt(j.toString(), 10)].ejpredicate !== undefined ?\n predicate[fColl[parseInt(j.toString(), 10)].predicate](fColl[parseInt(j.toString(), 10)].ejpredicate) :\n predicate[fColl[parseInt(j.toString(), 10)].predicate](fColl[parseInt(j.toString(), 10)].field, fColl[parseInt(j.toString(), 10)].operator, fColl[parseInt(j.toString(), 10)].value, !fColl[parseInt(j.toString(), 10)].matchCase, fColl[parseInt(j.toString(), 10)].ignoreAccent);\n }\n var args = {\n action: 'filtering', filterCollection: fColl, field: this.options.field,\n ejpredicate: Predicate.or(predicate)\n };\n this.options.handler(args);\n }\n };\n CheckBoxFilterBase.prototype.isForeignColumn = function (col) {\n return col.isForeignColumn ? col.isForeignColumn() : false;\n };\n CheckBoxFilterBase.prototype.refreshCheckboxes = function () {\n var _this = this;\n var val = this.sInput.value;\n var column = this.options.column;\n var query = this.isForeignColumn(column) ? this.foreignKeyQuery.clone() : this.options.query.clone();\n var foreignQuery = this.options.query.clone();\n var pred = query.queries.filter(function (e) { return e && e.fn === 'onWhere'; })[0];\n query.queries = [];\n foreignQuery.queries = [];\n var parsed = (this.options.type !== 'string' && parseFloat(val)) ? parseFloat(val) : val;\n var operator = this.options.isRemote ?\n (this.options.type === 'string' ? 'contains' : 'equal') : (this.options.type ? 'contains' : 'equal');\n var matchCase = true;\n var ignoreAccent = this.options.ignoreAccent;\n var field = this.isForeignColumn(column) ? column.foreignKeyValue : column.field;\n parsed = (parsed === '' || parsed === undefined) ? undefined : parsed;\n var coll = [];\n var defaults = {\n field: field, predicate: 'or', uid: this.options.uid,\n operator: 'equal', type: this.options.type, matchCase: matchCase, ignoreAccent: ignoreAccent\n };\n var predicte;\n var moduleName = this.options.dataManager.adaptor.getModuleName;\n if (this.options.type === 'boolean') {\n if (parsed !== undefined &&\n this.getLocalizedLabel('FilterTrue').toLowerCase().indexOf(parsed.toLowerCase()) !== -1) {\n parsed = 'true';\n }\n else if (parsed !== undefined &&\n this.getLocalizedLabel('FilterFalse').toLowerCase().indexOf(parsed.toLowerCase()) !== -1) {\n parsed = 'false';\n }\n if (parsed !== undefined &&\n this.getLocalizedLabel('FilterTrue').toLowerCase().indexOf(parsed.toLowerCase()) !== -1 && moduleName) {\n // eslint-disable-next-line no-constant-condition\n parsed = (moduleName() === 'ODataAdaptor' || 'ODataV4Adaptor') ? true : 'true';\n }\n else if (parsed !== undefined &&\n this.getLocalizedLabel('FilterFalse').toLowerCase().indexOf(parsed.toLowerCase()) !== -1 && moduleName) {\n // eslint-disable-next-line no-constant-condition\n parsed = (moduleName() === 'ODataAdaptor' || 'ODataV4Adaptor') ? false : 'false';\n }\n operator = 'equal';\n }\n if ((this.options.type === 'date' || this.options.type === 'datetime' || this.options.type === 'dateonly') && this.options.format) {\n var intl = new Internationalization();\n var format = typeof (this.options.format) === 'string' ? this.options.format :\n this.options.format.format;\n if (format) {\n parsed = intl.parseDate(val, { format: format }) || new Date(val);\n }\n else {\n parsed = new Date(val);\n }\n if (this.options.type === 'dateonly') {\n parsed = parsed.getFullYear() + '-' + padZero(parsed.getMonth() + 1) + '-' + padZero(parsed.getDate());\n }\n }\n this.infiniteSearchValChange = true;\n this.infiniteLoadedElem = [];\n this.infiniteLocalSelectAll = true;\n this.localInfiniteSelectAllClicked = false;\n this.localInfiniteSelectionInteracted = false;\n this.infiniteSkipCnt = 0;\n this.infiniteDataCount = 0;\n this.infiniteManualSelectMaintainPred = [];\n if (this.sInput.value === '') {\n this.infiniteUnloadParentExistPred = this.infiniteRenderMod && this.existingPredicate[this.options.column.field] ? this.existingPredicate[this.options.column.field].slice() : [];\n }\n else {\n this.infiniteUnloadParentExistPred = [];\n }\n this.addDistinct(query);\n var args = {\n requestType: events.filterSearchBegin,\n filterModel: this, columnName: field, column: column,\n operator: operator, matchCase: matchCase, ignoreAccent: ignoreAccent, filterChoiceCount: null,\n query: query, value: parsed\n };\n if (this.infiniteRenderMod && this.parent.filterSettings.itemsCount) {\n args.filterChoiceCount = this.parent.filterSettings.itemsCount;\n }\n this.parent.trigger(events.actionBegin, args, function (filterargs) {\n // eslint-disable-next-line no-self-assign\n filterargs.operator = filterargs.operator;\n predicte = new Predicate(field, filterargs.operator, args.value, filterargs.matchCase, filterargs.ignoreAccent);\n if (_this.options.type === 'date' || _this.options.type === 'datetime' || _this.options.type === 'dateonly') {\n operator = 'equal';\n var filterObj = {\n field: field, operator: operator, value: parsed, matchCase: matchCase,\n ignoreAccent: ignoreAccent\n };\n if (!isNullOrUndefined(parsed)) {\n predicte = getDatePredicate(filterObj, _this.options.type);\n }\n }\n if (val && typeof val === 'string' && _this.isBlanks &&\n _this.getLocalizedLabel('Blanks').toLowerCase().indexOf(val.toLowerCase()) >= 0) {\n coll = coll.concat(CheckBoxFilterBase.generateNullValuePredicates(defaults));\n var emptyValPredicte = CheckBoxFilterBase.generatePredicate(coll);\n emptyValPredicte.predicates.push(predicte);\n predicte = emptyValPredicte;\n query.where(emptyValPredicte);\n }\n else if (val.length) {\n predicte = !isNullOrUndefined(pred) ? predicte.and(pred.e) : predicte;\n query.where(predicte);\n }\n else if (!isNullOrUndefined(pred)) {\n predicte = pred.e;\n query.where(pred.e);\n }\n _this.infiniteSearchPred = predicte;\n filterargs.filterChoiceCount = !isNullOrUndefined(filterargs.filterChoiceCount) ? filterargs.filterChoiceCount : 1000;\n if (_this.infiniteRenderMod && _this.parent.filterSettings.itemsCount !== filterargs.filterChoiceCount) {\n _this.parent.filterSettings.itemsCount = args.filterChoiceCount;\n }\n var fPredicate = {};\n showSpinner(_this.spinner);\n _this.renderEmpty = false;\n if (_this.isForeignColumn(column) && val.length) {\n var colData = ('result' in column.dataSource) ? new DataManager(column.dataSource.result) :\n column.dataSource;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n colData.executeQuery(query).then(function (e) {\n var columnData = _this.options.column.columnData;\n _this.options.column.columnData = e.result;\n _this.parent.notify(events.generateQuery, { predicate: fPredicate, column: column });\n if (fPredicate.predicate.predicates.length) {\n foreignQuery.where(fPredicate.predicate);\n }\n else {\n _this.renderEmpty = true;\n }\n _this.options.column.columnData = columnData;\n if (_this.infiniteRenderMod) {\n _this.infiniteInitialLoad = isNullOrUndefined(_this.fullData) ? true : false;\n _this.makeInfiniteScrollRequest(foreignQuery);\n foreignQuery.requiresCount();\n }\n else {\n foreignQuery.take(filterargs.filterChoiceCount);\n }\n _this.search(filterargs, foreignQuery);\n });\n }\n else {\n if (_this.infiniteRenderMod && _this.parent.filterSettings.itemsCount) {\n _this.infiniteInitialLoad = isNullOrUndefined(_this.fullData) ? true : false;\n _this.makeInfiniteScrollRequest(query);\n query.requiresCount();\n }\n else {\n query.take(filterargs.filterChoiceCount);\n }\n _this.search(filterargs, query);\n }\n });\n };\n CheckBoxFilterBase.prototype.search = function (args, query) {\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n this.filterEvent(args, query);\n }\n else {\n this.processSearch(query);\n }\n };\n CheckBoxFilterBase.prototype.getPredicateFromCols = function (columns, isExecuteLocal) {\n var predicates = CheckBoxFilterBase.getPredicate(columns, isExecuteLocal);\n var predicateList = [];\n var fPredicate = {};\n var isGrid = this.parent.getForeignKeyColumns !== undefined;\n var foreignColumn = isGrid ? this.parent.getForeignKeyColumns() : [];\n for (var _i = 0, _a = Object.keys(predicates); _i < _a.length; _i++) {\n var prop = _a[_i];\n var col = void 0;\n if (isGrid && !this.parent.getColumnByField(prop)) {\n col = getColumnByForeignKeyValue(prop, foreignColumn);\n }\n if (col) {\n this.parent.notify(events.generateQuery, { predicate: fPredicate, column: col });\n if (fPredicate.predicate.predicates.length) {\n predicateList.push(Predicate.or(fPredicate.predicate.predicates));\n }\n }\n else {\n predicateList.push(predicates[\"\" + prop]);\n }\n }\n return predicateList.length && Predicate.and(predicateList);\n };\n CheckBoxFilterBase.prototype.getQuery = function () {\n return this.parent.getQuery ? this.parent.getQuery().clone() : new Query();\n };\n CheckBoxFilterBase.prototype.getAllData = function () {\n var _this = this;\n this.customQuery = false;\n var query = this.getQuery();\n var moduleName = this.options.dataManager.adaptor.getModuleName;\n if (!(!isNullOrUndefined(this.parent.getDataModule) && moduleName && moduleName() === 'ODataV4Adaptor')) {\n query.requiresCount(); //consider take query\n }\n this.addDistinct(query);\n var args = {\n requestType: events.filterChoiceRequest, query: query, filterChoiceCount: null\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n if (this.infiniteRenderMod && this.parent.filterSettings.itemsCount) {\n args.filterChoiceCount = this.parent.filterSettings.itemsCount;\n }\n this.parent.trigger(events.actionBegin, args, function (args) {\n args.filterChoiceCount = !isNullOrUndefined(args.filterChoiceCount) ? args.filterChoiceCount : 1000;\n if (_this.infiniteRenderMod && _this.parent.filterSettings.itemsCount !== args.filterChoiceCount) {\n _this.parent.filterSettings.itemsCount = args.filterChoiceCount;\n }\n if (!_this.infiniteRenderMod) {\n query.take(args.filterChoiceCount);\n }\n if (!args.query.distincts.length || _this.infiniteRenderMod) {\n _this.customQuery = true;\n _this.queryGenerate(query);\n }\n if (_this.infiniteRenderMod) {\n _this.infiniteInitialLoad = isNullOrUndefined(_this.fullData) ? true : false;\n _this.makeInfiniteScrollRequest(query);\n }\n if (_this.parent.dataSource && 'result' in _this.parent.dataSource) {\n _this.filterEvent(args, query);\n }\n else {\n _this.processDataOperation(query, true);\n }\n });\n };\n CheckBoxFilterBase.prototype.addDistinct = function (query) {\n var _this = this;\n var _a;\n var filteredColumn = DataUtil.distinct(this.options.filteredColumns, 'field');\n if (filteredColumn.indexOf(this.options.column.field) <= -1) {\n filteredColumn = filteredColumn.concat(this.options.column.field);\n }\n if (!this.infiniteRenderMod) {\n query.distinct(filteredColumn);\n }\n if (this.infiniteRenderMod && !this.options.isRemote && this.sInput.value === '') {\n this.options.dataSource = this.options.dataSource instanceof DataManager ?\n this.options.dataSource : new DataManager(this.options.dataSource);\n this.infinitePermenantLocalData = this.options.dataSource.dataSource.json.slice();\n this.options.dataSource.dataSource.json = DataUtil.distinct((_a = this.options.parentFilteredLocalRecords).concat.apply(_a, this.infinitePermenantLocalData), this.options.column.field, true);\n if (this.isForeignColumn(this.options.column)) {\n this.options.column.dataSource = this.options.column.dataSource instanceof DataManager ?\n this.options.column.dataSource : new DataManager(this.options.column.dataSource);\n this.options.dataSource.dataSource.json = this.options.dataSource.dataSource.json.map(function (item, i) {\n return Object.assign({}, item, _this.options.column.dataSource.dataSource.json[i]);\n });\n }\n }\n else if (this.infiniteRenderMod && this.options.isRemote) {\n query.select(this.options.column.field);\n query.sortBy(this.options.column.field, 'ascending');\n var moduleName = this.options.dataManager.adaptor.getModuleName;\n if (moduleName && moduleName() && (moduleName() === 'ODataV4Adaptor' || moduleName() === 'WebApiAdaptor'\n || moduleName() === 'CustomDataAdaptor' || moduleName() === 'GraphQLAdaptor' || moduleName() === 'ODataAdaptor')) {\n query.distinct(filteredColumn);\n }\n }\n return query;\n };\n CheckBoxFilterBase.prototype.filterEvent = function (args, query) {\n var _this = this;\n var defObj = eventPromise(args, query);\n this.parent.trigger(events.dataStateChange, defObj.state);\n var def = defObj.deffered;\n def.promise.then(function (e) {\n _this.dataSuccess(e);\n });\n };\n CheckBoxFilterBase.prototype.infiniteScrollMouseKeyDownHandler = function () {\n EventHandler.remove(this.cBox, 'scroll', this.infiniteScrollHandler);\n };\n CheckBoxFilterBase.prototype.infiniteScrollMouseKeyUpHandler = function (e) {\n var _this = this;\n EventHandler.add(this.cBox, 'scroll', this.infiniteScrollHandler, this);\n var target = this.cBox;\n if (target.children.length > 1 && (target.scrollTop >= target.scrollHeight - target.offsetHeight || target.scrollTop <= 0)) {\n this.infiniteScrollHandler();\n }\n Global.timer = setTimeout(function () { _this.clickHandler(e); Global.timer = null; }, 0);\n };\n CheckBoxFilterBase.prototype.getListHeight = function (element) {\n var listDiv = createElement('div', { className: 'e-ftrchk', styles: 'visibility: hidden' });\n listDiv.innerHTML = '
A
';\n element.appendChild(listDiv);\n var rect = listDiv.getBoundingClientRect();\n element.removeChild(listDiv);\n var listHeight = Math.round(rect.height);\n return listHeight;\n };\n CheckBoxFilterBase.prototype.getShimmerTemplate = function () {\n return '';\n };\n /**\n * @returns {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.showMask = function () {\n var maskRowCount = 5;\n var maskItemHeight;\n var maskList = this.parent.createElement('div', { id: this.id + this.options.type + '_CheckBoxMaskList',\n className: 'e-checkboxlist e-fields e-infinite-list e-masklist', styles: 'z-index: 10;' });\n var wrapperElem = this.cBox;\n this.removeMask();\n if (wrapperElem) {\n var computedStyle = getComputedStyle(wrapperElem);\n var liHeight = this.getListHeight(wrapperElem);\n var height = wrapperElem.children.length ? parseInt(computedStyle.height, 10) :\n Math.floor(parseInt(computedStyle.height.split('px')[0], 10)) - 5;\n if (this.parent.enableAdaptiveUI && this.infiniteRenderMod) {\n maskList.style.height = (height - liHeight) + 'px';\n this.dlg.querySelector('.e-dlg-content').style.overflow = 'hidden';\n }\n var backgroundColor = this.isExcel && !wrapperElem.children.length && !this.dlg.classList.contains('e-excelfilter') ?\n '' : getComputedStyle(this.dlg.querySelector('.e-dlg-content')).backgroundColor;\n maskList.style.cssText = 'width: ' + computedStyle.width + '; min-height: ' + computedStyle.minHeight + '; height: ' +\n height + 'px; margin: ' + computedStyle.margin + '; border-style: ' + computedStyle.borderStyle + '; border-width: '\n + computedStyle.borderWidth + '; border-color: ' + computedStyle.borderColor + '; position: absolute; background-color: ' +\n backgroundColor + ';';\n maskRowCount = Math.floor(height / liHeight);\n maskRowCount = wrapperElem.children.length > maskRowCount ? wrapperElem.children.length : maskRowCount;\n maskItemHeight = liHeight + 'px';\n }\n var maskTemplate = '
'\n + '
'\n + this.getShimmerTemplate() + this.getShimmerTemplate() + '
';\n maskList.innerHTML = '';\n if (!wrapperElem.children.length) {\n this.spinner.insertAdjacentHTML('beforebegin', maskTemplate);\n var maskSpan = [].slice.call(this.spinner.parentElement\n .querySelectorAll('.e-mask:not(.e-mask-checkbox-filter-intent):not(.e-mask-checkbox-filter-span-intent)'));\n maskSpan[0].classList.add('e-mask-checkbox-filter-intent');\n maskSpan[1].classList.add('e-mask-checkbox-filter-span-intent');\n }\n this.spinner.insertBefore(maskList, this.cBox);\n for (var i = 0; maskRowCount && i < maskRowCount; i++) {\n maskList.innerHTML += maskTemplate;\n var maskSpan = [].slice.call(maskList\n .querySelectorAll('.e-mask:not(.e-mask-checkbox-filter-intent):not(.e-mask-checkbox-filter-span-intent)'));\n maskSpan[0].classList.add('e-mask-checkbox-filter-intent');\n maskSpan[1].classList.add('e-mask-checkbox-filter-span-intent');\n }\n if (this.cBox) {\n maskList.scrollTop = this.cBox.scrollTop;\n }\n };\n CheckBoxFilterBase.prototype.removeMask = function () {\n var maskLists = this.dialogObj.element.querySelectorAll('.e-mask-ftrchk');\n if (maskLists.length) {\n for (var i = 0; i < maskLists.length; i++) {\n remove(maskLists[i]);\n }\n }\n var maskParent = this.dialogObj.element.querySelector('.e-checkboxlist.e-masklist');\n if (maskParent) {\n remove(this.dialogObj.element.querySelector('.e-checkboxlist.e-masklist'));\n }\n };\n CheckBoxFilterBase.prototype.infiniteScrollHandler = function () {\n var target = this.cBox;\n if (target.scrollTop >= target.scrollHeight - target.offsetHeight && !this.infiniteQueryExecutionPending\n && this.infiniteLoadedElem.length <= (this.infiniteSkipCnt + this.parent.filterSettings.itemsCount)\n && this.cBox.children.length === this.parent.filterSettings.itemsCount * 3\n && (!this.infiniteDataCount || this.infiniteDataCount > (this.infiniteSkipCnt + this.parent.filterSettings.itemsCount))) {\n this.makeInfiniteScrollRequest();\n this.prevInfiniteScrollDirection = 'down';\n }\n else if (target.scrollTop >= target.scrollHeight - target.offsetHeight && !this.infiniteQueryExecutionPending\n && this.infiniteLoadedElem.length > (this.infiniteSkipCnt + this.parent.filterSettings.itemsCount)\n && this.cBox.children.length === this.parent.filterSettings.itemsCount * 3) {\n this.infiniteRemoveElements(([].slice.call(this.cBox.children)).splice(0, this.parent.filterSettings.itemsCount));\n this.infiniteSkipCnt += this.prevInfiniteScrollDirection === 'down' ? this.parent.filterSettings.itemsCount :\n (this.parent.filterSettings.itemsCount * 3);\n appendChildren(this.cBox, this.infiniteLoadedElem.slice(this.infiniteSkipCnt, this.parent.filterSettings.itemsCount +\n this.infiniteSkipCnt));\n this.prevInfiniteScrollDirection = 'down';\n }\n else if (target.scrollTop === 0 && !this.infiniteInitialLoad && !this.infiniteSearchValChange && this.infiniteSkipCnt\n && this.infiniteLoadedElem.length && this.infiniteLoadedElem.length > this.parent.filterSettings.itemsCount * 3\n && this.cBox.children.length === this.parent.filterSettings.itemsCount * 3) {\n this.infiniteRemoveElements(([].slice.call(this.cBox.children)).splice((this.parent.filterSettings\n .itemsCount * 2), this.parent.filterSettings.itemsCount));\n this.infiniteSkipCnt -= this.prevInfiniteScrollDirection === 'up' ? this.parent.filterSettings.itemsCount :\n (this.parent.filterSettings.itemsCount * 3);\n this.infiniteAppendElements([].slice.call(this.infiniteLoadedElem.slice(this.infiniteSkipCnt, this.infiniteSkipCnt +\n this.parent.filterSettings.itemsCount)));\n this.cBox.scrollTop = this.infiniteScrollAppendDiff;\n this.prevInfiniteScrollDirection = 'up';\n }\n else if (target.scrollTop === 0 && !this.infiniteInitialLoad && !this.infiniteSearchValChange && this.infiniteSkipCnt\n && this.infiniteLoadedElem.length && this.cBox.children.length < this.parent.filterSettings.itemsCount * 3) {\n this.infiniteRemoveElements(([].slice.call(this.cBox.children)).splice((this.parent.filterSettings\n .itemsCount * 2), this.infiniteDataCount % this.parent.filterSettings.itemsCount));\n this.infiniteSkipCnt = (Math.floor(this.infiniteDataCount / this.parent.filterSettings.itemsCount) - 3) *\n this.parent.filterSettings.itemsCount;\n this.infiniteAppendElements([].slice.call(this.infiniteLoadedElem.slice(this.infiniteSkipCnt, this.infiniteSkipCnt +\n this.parent.filterSettings.itemsCount)));\n this.cBox.scrollTop = this.infiniteScrollAppendDiff;\n this.prevInfiniteScrollDirection = 'up';\n }\n };\n CheckBoxFilterBase.prototype.infiniteRemoveElements = function (removeElem) {\n for (var i = 0; i < removeElem.length; i++) {\n remove(removeElem[i]);\n }\n };\n CheckBoxFilterBase.prototype.infiniteAppendElements = function (appendElem) {\n for (var i = 0; i < appendElem.length; i++) {\n this.cBox.insertBefore(appendElem[i], this.cBox.children[i]);\n }\n };\n CheckBoxFilterBase.prototype.makeInfiniteScrollRequest = function (query) {\n var _this = this;\n if (!this.infiniteInitialLoad && this.parent.filterSettings && this.parent.filterSettings.loadingIndicator === 'Shimmer') {\n setTimeout(function () {\n if (_this.infiniteQueryExecutionPending) {\n _this.showMask();\n }\n }, 500);\n }\n else if (!this.infiniteInitialLoad) {\n createSpinner({ target: this.spinner, cssClass: this.parent.cssClass ? this.parent.cssClass : null }, this.parent\n .createElement);\n showSpinner(this.spinner);\n }\n var fName = 'fn';\n if (this.infiniteQuery && this.infiniteQuery.queries && this.infiniteQuery.queries.length) {\n for (var i = 0; i < this.infiniteQuery.queries.length; i++) {\n if (this.infiniteQuery.queries[i][\"\" + fName] === 'onTake'\n || this.infiniteQuery.queries[i][\"\" + fName] === 'onSkip') {\n this.infiniteQuery.queries.splice(i, 1);\n i--;\n }\n }\n }\n var existQuery = query ? true : false;\n query = query ? query : this.infiniteQuery;\n if (this.infiniteInitialLoad || this.infiniteSearchValChange) {\n this.infiniteSkipCnt = 0;\n }\n else {\n this.infiniteSkipCnt += this.parent.filterSettings.itemsCount;\n }\n query.skip(this.infiniteSkipCnt);\n if (this.infiniteInitialLoad || this.infiniteSearchValChange) {\n query.take(this.parent.filterSettings.itemsCount * 3);\n this.infiniteSkipCnt += this.parent.filterSettings.itemsCount * 2;\n }\n else {\n query.take(this.parent.filterSettings.itemsCount);\n }\n if (!existQuery) {\n this.processDataOperation(query);\n this.infiniteQueryExecutionPending = true;\n }\n };\n CheckBoxFilterBase.prototype.processDataOperation = function (query, isInitial) {\n var _this = this;\n this.options.dataSource = this.options.dataSource instanceof DataManager ?\n this.options.dataSource : new DataManager(this.options.dataSource);\n var allPromise = [];\n var runArray = [];\n if (this.isForeignColumn(this.options.column) && isInitial) {\n var colData = ('result' in this.options.column.dataSource) ?\n new DataManager(this.options.column.dataSource.result) :\n this.options.column.dataSource;\n this.foreignKeyQuery.params = query.params;\n allPromise.push(colData.executeQuery(this.foreignKeyQuery));\n runArray.push(function (data) { return _this.foreignKeyData = data; });\n }\n if (this.infiniteRenderMod) {\n this.infiniteQuery = query.clone();\n if (this.infiniteInitialLoad) {\n this.cBox.classList.add('e-checkbox-infinitescroll');\n EventHandler.add(this.cBox, 'scroll', this.infiniteScrollHandler, this);\n EventHandler.add(this.cBox, 'mouseup', this.infiniteScrollMouseKeyUpHandler, this);\n EventHandler.add(this.cBox, 'mousedown', this.infiniteScrollMouseKeyDownHandler, this);\n }\n else if (this.infiniteSearchValChange) {\n this.cBox.innerHTML = '';\n }\n }\n if (this.infiniteRenderMod && this.infiniteInitialLoad && !this.options.isRemote) {\n var field = this.isForeignColumn(this.options.column) ? this.options.foreignKeyValue :\n this.options.column.field;\n this.options.dataSource.executeQuery(new Query().sortBy(field, DataUtil.fnAscending)).then(function (e) {\n _this.options.dataSource.dataSource.json = e.result;\n _this.executeQueryOperations(query, allPromise, runArray);\n });\n }\n else {\n this.executeQueryOperations(query, allPromise, runArray);\n }\n };\n CheckBoxFilterBase.prototype.executeQueryOperations = function (query, allPromise, runArray) {\n var _this = this;\n allPromise.push(this.options.dataSource.executeQuery(query));\n runArray.push(this.dataSuccess.bind(this));\n var i = 0;\n Promise.all(allPromise).then(function (e) {\n _this.infiniteQueryExecutionPending = _this.infiniteRenderMod ? false : _this.infiniteQueryExecutionPending;\n for (var j = 0; j < e.length; j++) {\n _this.infiniteDataCount = _this.infiniteRenderMod && !_this.infiniteDataCount ? e[j].count : _this.infiniteDataCount;\n runArray[i++](e[parseInt(j.toString(), 10)].result);\n }\n }).catch(function () {\n if (_this.infiniteRenderMod && _this.parent.filterSettings && _this.parent.filterSettings.loadingIndicator === 'Shimmer') {\n _this.parent.showMaskRow(undefined, _this.dialogObj.element);\n }\n });\n };\n CheckBoxFilterBase.prototype.dataSuccess = function (e) {\n if (!this.infiniteInitialLoad && this.infiniteDataCount && ((this.infiniteSkipCnt >= this.infiniteDataCount\n && !this.infiniteSearchValChange) || (e.length === 0))) {\n return;\n }\n this.fullData = e;\n var args1 = { dataSource: this.fullData, executeQuery: true, field: this.options.field };\n this.parent.notify(events.beforeCheckboxRenderer, args1);\n if (args1.executeQuery) {\n var query = new Query();\n if (!this.customQuery) {\n this.isExecuteLocal = true;\n this.queryGenerate(query);\n this.isExecuteLocal = false;\n }\n // query.select(this.options.field);\n var result = new DataManager(args1.dataSource).executeLocal(query);\n var col = this.options.column;\n this.filteredData = CheckBoxFilterBase.getDistinct(result, this.options.field, col, this.foreignKeyData, this).records || [];\n }\n var data = args1.executeQuery ? this.filteredData : args1.dataSource;\n this.processDataSource(null, true, data, args1);\n if (this.sInput && ((this.infiniteRenderMod && this.infiniteInitialLoad) || !this.infiniteRenderMod)) {\n this.sInput.focus();\n }\n if (this.infiniteInitialLoad || this.infiniteSearchValChange) {\n this.infiniteInitialLoad = false;\n this.infiniteSearchValChange = false;\n }\n var args = {\n requestType: events.filterAfterOpen,\n columnName: this.options.field, columnType: this.options.type\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.notify(events.cBoxFltrComplete, args);\n if (this.isCheckboxFilterTemplate) {\n hideSpinner(this.spinner);\n }\n };\n CheckBoxFilterBase.prototype.queryGenerate = function (query) {\n if (this.parent.searchSettings && this.parent.searchSettings.key.length) {\n var moduleName = this.options.dataManager.adaptor.getModuleName;\n if (!isNullOrUndefined(this.parent.getDataModule) && moduleName && moduleName() === 'ODataV4Adaptor') {\n this.parent.getDataModule().searchQuery(query);\n }\n else {\n var searchSettings = this.parent.searchSettings;\n var fields = searchSettings.fields.length ? searchSettings.fields\n : this.options.columns.map(function (f) { return f.field; });\n query.search(searchSettings.key, fields, searchSettings.operator, searchSettings.ignoreCase, searchSettings.ignoreAccent);\n }\n }\n if ((this.options.filteredColumns.length)) {\n var cols = [];\n for (var i = 0; i < this.options.filteredColumns.length; i++) {\n var filterColumn = this.options.filteredColumns[parseInt(i.toString(), 10)];\n if (this.options.uid) {\n filterColumn.uid = filterColumn.uid || this.parent.getColumnByField(filterColumn.field).uid;\n if (filterColumn.uid !== this.options.uid) {\n cols.push(this.options.filteredColumns[parseInt(i.toString(), 10)]);\n }\n }\n else {\n if (filterColumn.field !== this.options.field) {\n cols.push(this.options.filteredColumns[parseInt(i.toString(), 10)]);\n }\n }\n }\n var predicate = this.getPredicateFromCols(cols, this.isExecuteLocal);\n if (predicate) {\n query.where(predicate);\n }\n }\n };\n CheckBoxFilterBase.prototype.processDataSource = function (query, isInitial, dataSource, args) {\n showSpinner(this.spinner);\n // query = query ? query : this.options.query.clone();\n // query.requiresCount();\n // let result: Object = new DataManager(dataSource as JSON[]).executeLocal(query);\n // let res: { result: Object[] } = result as { result: Object[] };\n this.isExecuteLocal = true;\n this.updateResult();\n this.isExecuteLocal = false;\n var args1 = { dataSource: this.fullData, isCheckboxFilterTemplate: false, column: this.options.column,\n element: this.cBox, type: this.options.type, format: this.options.type, btnObj: this.options.isResponsiveFilter ? null :\n this.dialogObj.btnObj[0], searchBox: this.searchBox };\n this.parent.notify(events.beforeCheckboxfilterRenderer, args1);\n this.isCheckboxFilterTemplate = args1.isCheckboxFilterTemplate;\n if (!this.isCheckboxFilterTemplate) {\n this.createFilterItems(dataSource, isInitial, args);\n }\n else if (this.infiniteRenderMod && this.parent.filterSettings && this.parent.filterSettings.loadingIndicator === 'Shimmer') {\n this.removeMask();\n }\n };\n CheckBoxFilterBase.prototype.processSearch = function (query) {\n this.processDataOperation(query);\n };\n CheckBoxFilterBase.prototype.updateResult = function () {\n this.result = {};\n var predicate = this.infiniteRenderMod && this.existingPredicate[this.options.field] ?\n this.getPredicateFromCols(this.existingPredicate[this.options.field], this.isExecuteLocal) :\n this.getPredicateFromCols(this.options.filteredColumns, this.isExecuteLocal);\n var query = new Query();\n if (predicate) {\n query.where(predicate);\n }\n this.parent.notify(events.beforeCheckboxRendererQuery, { query: query });\n var result = new DataManager(this.fullData).executeLocal(query);\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var res = result_1[_i];\n this.result[getObject(this.options.field, res)] = true;\n }\n };\n CheckBoxFilterBase.prototype.clickHandler = function (e) {\n var _a;\n if (!isNullOrUndefined(Global.timer)) {\n clearTimeout(Global.timer);\n }\n var target = e.target;\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === 'Shimmer'\n && parentsUntil(target, 'e-mask-ftrchk')) {\n return;\n }\n var elem = parentsUntil(target, 'e-checkbox-wrapper');\n if (parentsUntil(target, 'e-searchbox')) {\n this.searchBoxClick(e);\n }\n if (elem && !this.isCheckboxFilterTemplate) {\n var selectAll = elem.querySelector('.e-selectall');\n if (selectAll) {\n this.updateAllCBoxes(!selectAll.classList.contains('e-check'));\n }\n else {\n toogleCheckbox(elem.parentElement);\n if (this.infiniteRenderMod && !elem.parentElement.querySelector('.e-add-current')) {\n this.localInfiniteSelectionInteracted = true;\n var caseSen = this.options.allowCaseSensitive;\n var span = elem.parentElement.querySelector('.e-frame');\n var input = span.previousSibling;\n var optr = input.checked ? 'equal' : 'notequal';\n var pred = input.checked ? 'or' : 'and';\n var defaults = { field: this.options.field, predicate: pred, uid: this.options.uid,\n operator: optr, type: this.options.type, matchCase: caseSen, ignoreAccent: this.options.ignoreAccent\n };\n var value = this.values[parentsUntil(input, 'e-ftrchk').getAttribute('uid')];\n this.updateInfiniteManualSelectPred(defaults, value);\n if (this.infiniteRenderMod && !this.options.isRemote && this.options.parentTotalDataCount\n && this.infiniteUnloadParentExistPred.length) {\n var predicate = this.getPredicateFromCols((_a = this.options.filteredColumns).concat.apply(_a, this.infiniteManualSelectMaintainPred), true);\n var query = new Query();\n if (predicate) {\n query.where(predicate);\n }\n var result = new DataManager(this.infinitePermenantLocalData).executeLocal(query);\n if (this.options.parentTotalDataCount !== result.length) {\n this.options.parentTotalDataCount = result.length;\n }\n if (!this.options.parentTotalDataCount && this.infiniteUnloadParentExistPred.length) {\n this.infiniteUnloadParentExistPred = [];\n }\n }\n if (this.infiniteUnloadParentExistPred.length && (this.options.parentTotalDataCount === this.infiniteDataCount\n || !this.options.parentTotalDataCount)) {\n this.infiniteUnloadParentExistPred = [];\n }\n }\n }\n this.updateIndeterminatenBtn();\n elem.querySelector('.e-chk-hidden').focus();\n }\n this.setFocus(parentsUntil(elem, 'e-ftrchk'));\n };\n CheckBoxFilterBase.prototype.updateInfiniteManualSelectPred = function (defaults, value) {\n for (var i = 0; i < this.infiniteManualSelectMaintainPred.length; i++) {\n var predmdl = this.infiniteManualSelectMaintainPred[i];\n if (predmdl.value + '' === value + '' && (predmdl.operator === 'equal' || predmdl.operator === 'notequal')) {\n this.infiniteManualSelectMaintainPred.splice(i, 1);\n break;\n }\n }\n if ((defaults.predicate === 'or' && (!this.localInfiniteSelectAllClicked || !this.infiniteLocalSelectAll))\n || (defaults.predicate === 'and' && (!this.localInfiniteSelectAllClicked || this.infiniteLocalSelectAll))) {\n this.infiniteManualSelectMaintainPred.push(extend({}, { value: value }, defaults));\n if (defaults.predicate === 'or') {\n this.options.parentTotalDataCount++;\n }\n else {\n this.options.parentTotalDataCount--;\n }\n }\n };\n /**\n * Method to set the next target element on keyboard navigation using arrow keys.\n *\n * @param {KeyboardEventArgs} e - Defines the Keyboard event argument\n * @param {HTMLElement[]} focusableElements - Defines the Focusable elements\n * @returns {void}\n */\n CheckBoxFilterBase.prototype.focusNextOrPrev = function (e, focusableElements) {\n var nextIndex = (e.key === 'ArrowUp') ? focusableElements.indexOf(document.activeElement) - 1\n : focusableElements.indexOf(document.activeElement) + 1;\n var nextElement = focusableElements[((nextIndex + focusableElements.length) % focusableElements.length)];\n // Set focus on the next / previous element\n if (nextElement) {\n nextElement.focus();\n var target = nextElement.classList.contains('e-chk-hidden') ? parentsUntil(nextElement, 'e-ftrchk') : nextElement;\n this.setFocus(target);\n }\n };\n CheckBoxFilterBase.prototype.keyupHandler = function (e) {\n if (e.key === 'Tab' || ((e.key === 'ArrowUp' || e.key === 'ArrowDown') && !e.altKey)) {\n this.setFocus(parentsUntil(e.target, 'e-ftrchk'));\n }\n if ((e.key === 'ArrowUp' || e.key === 'ArrowDown') && !e.altKey && this.parent.filterSettings.type === 'CheckBox') {\n e.preventDefault();\n var focusableElements = Array.from(this.dlg.querySelectorAll('input, button, [tabindex]:not([tabindex=\"-1\"])'));\n this.focusNextOrPrev(e, focusableElements);\n }\n };\n CheckBoxFilterBase.prototype.setFocus = function (elem) {\n var prevElem = this.dlg.querySelector('.e-chkfocus');\n if (prevElem) {\n prevElem.classList.remove('e-chkfocus');\n }\n if (elem && elem !== prevElem) {\n elem.classList.add('e-chkfocus');\n }\n };\n CheckBoxFilterBase.prototype.updateAllCBoxes = function (checked) {\n if (this.infiniteRenderMod) {\n this.localInfiniteSelectAllClicked = true;\n this.infiniteLocalSelectAll = checked;\n this.infiniteUnloadParentExistPred = [];\n this.infiniteManualSelectMaintainPred = [];\n }\n var cBoxes = this.infiniteRenderMod ?\n this.infiniteLoadedElem.map(function (arr) {\n return arr.querySelector('.e-frame');\n }) : [].slice.call(this.cBox.querySelectorAll('.e-frame:not(.e-add-current)'));\n for (var _i = 0, cBoxes_1 = cBoxes; _i < cBoxes_1.length; _i++) {\n var cBox = cBoxes_1[_i];\n removeAddCboxClasses(cBox, checked);\n setChecked(cBox.previousSibling, checked);\n }\n };\n CheckBoxFilterBase.prototype.dialogOpen = function () {\n if (this.parent.element.classList.contains('e-device')) {\n this.dialogObj.element.querySelector('.e-input-group').classList.remove('e-input-focus');\n if (!this.options.isResponsiveFilter) {\n this.dialogObj.element.querySelector('.e-btn').focus();\n }\n }\n };\n CheckBoxFilterBase.prototype.createCheckbox = function (value, checked, data) {\n var elem = checked ? this.cBoxTrue.cloneNode(true) :\n this.cBoxFalse.cloneNode(true);\n setChecked(elem.querySelector('input'), checked);\n var label = elem.querySelector('.e-label');\n var dummyData = extendObjWithFn({}, data, { column: this.options.column, parent: this.parent });\n var innerText = this.options.disableHtmlEncode ? 'textContent' : 'innerHTML';\n label[\"\" + innerText] = !isNullOrUndefined(value) && value.toString().length ?\n this.parent.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(value) : value : this.getLocalizedLabel('Blanks');\n var checkboxUid = getUid('cbox');\n label.setAttribute('id', checkboxUid + 'cboxLabel');\n elem.querySelector('input').setAttribute('aria-labelledby', label.id);\n if (label.innerHTML === this.getLocalizedLabel('Blanks')) {\n this.isBlanks = true;\n }\n if (typeof value === 'boolean') {\n label.innerHTML = value === true ? this.getLocalizedLabel('FilterTrue') : this.getLocalizedLabel('FilterFalse');\n }\n addClass([label], ['e-checkboxfiltertext']);\n if (this.options.template && data[this.options.column.field] !== this.getLocalizedLabel('SelectAll')\n && data[this.options.column.field] !== this.getLocalizedLabel('AddCurrentSelection')) {\n label.innerHTML = '';\n var isReactCompiler = this.parent.isReact && this.options.column.filter\n && typeof (this.options.column.filter.itemTemplate) !== 'string';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n this.options.template(dummyData, this.parent, 'filterItemTemplate', null, null, null, label);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(label, this.options.template(dummyData, this.parent, 'filterItemTemplate', null, null, null, null, this.parent.root));\n }\n }\n return elem;\n };\n CheckBoxFilterBase.prototype.updateIndeterminatenBtn = function () {\n var cnt = this.infiniteRenderMod ? this.infiniteLoadedElem.length : this.cBox.children.length - 1;\n var className = [];\n var disabled = false;\n var elem = this.infiniteRenderMod ? this.sBox.querySelector('.e-selectall') : this.cBox.querySelector('.e-selectall');\n var selected = this.infiniteRenderMod ? this.infiniteLoadedElem.filter(function (arr) { return arr.querySelector('.e-check'); }).length :\n this.cBox.querySelectorAll('.e-check:not(.e-selectall):not(.e-add-current)').length;\n if (this.cBox.querySelector('.e-add-current')) {\n cnt -= 1;\n }\n var btn;\n if (!this.options.isResponsiveFilter) {\n btn = this.dialogObj.btnObj[0];\n btn.disabled = false;\n }\n var input = elem.previousSibling;\n setChecked(input, false);\n input.indeterminate = false;\n if (this.infiniteRenderMod && this.sInput.value === '' && !this.options.parentCurrentViewDataCount && !this.localInfiniteSelectionInteracted\n && (!this.localInfiniteSelectAllClicked || (!this.infiniteLocalSelectAll && !selected)) && (cnt !== selected || cnt === selected)) {\n selected = 0;\n }\n else if (this.infiniteRenderMod && this.infiniteLoadedElem.length < this.infiniteDataCount\n && this.infiniteUnloadParentExistPred.length && (!selected || cnt === selected) && this.infiniteLocalSelectAll) {\n if (!selected) {\n selected += this.infiniteUnloadParentExistPred.length;\n }\n else {\n cnt += this.infiniteUnloadParentExistPred.length;\n }\n }\n if (cnt === selected) {\n if (this.infiniteRenderMod) {\n this.infiniteLocalSelectAll = true;\n this.localInfiniteSelectAllClicked = true;\n this.infiniteManualSelectMaintainPred = [];\n }\n className = ['e-check'];\n setChecked(input, true);\n }\n else if (selected) {\n className = ['e-stop'];\n input.indeterminate = true;\n }\n else {\n if (this.infiniteRenderMod) {\n this.infiniteLocalSelectAll = false;\n this.localInfiniteSelectAllClicked = true;\n this.infiniteManualSelectMaintainPred = [];\n }\n className = ['e-uncheck'];\n disabled = true;\n if (btn) {\n btn.disabled = true;\n }\n }\n if (btn) {\n this.filterState = !btn.disabled;\n btn.dataBind();\n }\n removeClass([elem], ['e-check', 'e-stop', 'e-uncheck']);\n addClass([elem], className);\n this.parent.notify(events.refreshCustomFilterOkBtn, { disabled: disabled });\n };\n CheckBoxFilterBase.prototype.createFilterItems = function (data, isInitial, args1) {\n var _a, _b, _c;\n var cBoxes = this.parent.createElement('div');\n var btn;\n var disabled = false;\n if (!this.options.isResponsiveFilter) {\n btn = this.dialogObj.btnObj[0];\n }\n var nullCounter = -1;\n var key = 'ejValue';\n if (!args1.executeQuery) {\n key = args1.field;\n }\n for (var i = 0; i < data.length; i++) {\n var val = getValue(key, data[parseInt(i.toString(), 10)]);\n if (val === '' || isNullOrUndefined(val)) {\n nullCounter = nullCounter + 1;\n }\n }\n if (!this.infiniteRenderMod) {\n this.itemsCnt = nullCounter !== -1 ? data.length - nullCounter : data.length;\n }\n if (this.infiniteRenderMod && this.parent.filterSettings && this.parent.filterSettings.loadingIndicator === 'Shimmer') {\n this.removeMask();\n }\n if (data.length && !this.renderEmpty) {\n var selectAllValue = this.getLocalizedLabel('SelectAll');\n var innerDiv = this.cBox.querySelector('.e-checkfltrnmdiv');\n if (innerDiv) {\n innerDiv.classList.remove('e-checkfltrnmdiv');\n }\n var checkBox = this.createCheckbox(selectAllValue, false, (_a = {}, _a[this.options.field] = selectAllValue, _a));\n if (this.parent.cssClass) {\n if (this.parent.cssClass.indexOf(' ') !== -1) {\n addClass([checkBox], this.parent.cssClass.split(' '));\n }\n else {\n addClass([checkBox], [this.parent.cssClass]);\n }\n }\n if (this.infiniteInitialLoad || !this.infiniteRenderMod) {\n var selectAll = createCboxWithWrap(getUid('cbox'), checkBox, 'e-ftrchk');\n selectAll.querySelector('.e-frame').classList.add('e-selectall');\n if (this.infiniteRenderMod) {\n selectAll.classList.add('e-infinitescroll');\n if (this.parent.enableAdaptiveUI) {\n this.spinner.style.height = (this.spinner.offsetHeight - this.getListHeight(this.cBox)) + 'px';\n }\n this.sBox.insertBefore(selectAll, this.spinner);\n }\n else {\n cBoxes.appendChild(selectAll);\n }\n }\n else if (this.sBox.querySelector('.e-ftrchk .e-selectall')) {\n this.sBox.querySelector('.e-ftrchk .e-selectall').previousSibling.disabled = false;\n this.sBox.querySelector('.e-ftrchk .e-selectall').parentElement.classList.remove('e-checkbox-disabled');\n }\n var predicate = new Predicate('field', 'equal', this.options.field);\n if (this.options.foreignKeyValue) {\n predicate = predicate.or('field', 'equal', this.options.foreignKeyValue);\n }\n var isColFiltered = new DataManager(this.options.filteredColumns).executeLocal(new Query().where(predicate)).length;\n if (this.sInput.value) {\n var predicateCheckBox = this.createCheckbox(this.getLocalizedLabel('AddCurrentSelection'), false, (_b = {},\n _b[this.options.field] = this.getLocalizedLabel('AddCurrentSelection'),\n _b));\n if (this.parent.cssClass) {\n if (this.parent.cssClass.indexOf(' ') !== -1) {\n addClass([predicateCheckBox], this.parent.cssClass.split(' '));\n }\n else {\n addClass([predicateCheckBox], [this.parent.cssClass]);\n }\n }\n if ((this.infiniteRenderMod && (!isNullOrUndefined(this.sBox.children[2])\n && this.sBox.children[2].innerText !== 'Add current selection to filter')) || !this.infiniteRenderMod) {\n var predicateElement = createCboxWithWrap(getUid('cbox'), predicateCheckBox, 'e-ftrchk');\n predicateElement.querySelector('.e-frame').classList.add('e-add-current');\n if (this.infiniteRenderMod) {\n this.sBox.insertBefore(predicateElement, this.spinner);\n var checkBoxListElem = this.spinner.querySelector('.e-checkboxlist');\n var reduceHeight = Math.ceil(predicateElement.getBoundingClientRect().height);\n checkBoxListElem.style.height = (parseInt(getComputedStyle(checkBoxListElem).height.split('px')[0], 10) - reduceHeight)\n + 'px';\n checkBoxListElem.style.minHeight = checkBoxListElem.style.height;\n }\n else {\n cBoxes.appendChild(predicateElement);\n }\n }\n else if (this.sBox.querySelector('.e-ftrchk .e-add-current')) {\n this.sBox.querySelector('.e-ftrchk .e-add-current').previousSibling.disabled = false;\n this.sBox.querySelector('.e-ftrchk .e-add-current').parentElement.classList.remove('e-checkbox-disabled');\n }\n }\n else if (this.infiniteRenderMod && !isNullOrUndefined(this.sBox.children[2])\n && this.sBox.children[2].innerText === 'Add current selection to filter') {\n var checkBoxListElem = this.spinner.querySelector('.e-checkboxlist');\n var increaseHeight = Math.ceil(this.sBox.children[2].getBoundingClientRect().height);\n checkBoxListElem.style.height = (parseInt(getComputedStyle(checkBoxListElem).height.split('px')[0], 10) + increaseHeight)\n + 'px';\n checkBoxListElem.style.minHeight = checkBoxListElem.style.height;\n remove(this.sBox.children[2]);\n }\n var isRndere = void 0;\n for (var i = 0; i < data.length; i++) {\n var uid = getUid('cbox');\n this.values[\"\" + uid] = getValue(key, data[parseInt(i.toString(), 10)]);\n var value = getValue(this.options.field, data[parseInt(i.toString(), 10)]);\n if (this.options.formatFn) {\n value = this.valueFormatter.toView(value, this.options.formatFn);\n }\n var args_1 = { value: value, column: this.options.column, data: data[parseInt(i.toString(), 10)] };\n this.parent.notify(events.filterCboxValue, args_1);\n value = args_1.value;\n if ((value === '' || isNullOrUndefined(value))) {\n if (isRndere) {\n continue;\n }\n isRndere = true;\n }\n if (this.infiniteRenderMod) {\n this.updateInfiniteUnLoadedCheckboxExistPred(value, this.infiniteUnloadParentExistPred);\n }\n var checkbox = this.localInfiniteSelectAllClicked ?\n this.createCheckbox(value, this.infiniteLocalSelectAll, getValue('dataObj', data[i])) :\n this.createCheckbox(value, this.getCheckedState(isColFiltered, this.values[\"\" + uid]), getValue('dataObj', data[i]));\n cBoxes.appendChild(createCboxWithWrap(uid, checkbox, 'e-ftrchk'));\n if (this.infiniteRenderMod) {\n cBoxes.lastChild.style.height = this.getListHeight(this.cBox) + 'px';\n }\n }\n var scrollTop = this.cBox.scrollTop;\n if (!this.infiniteRenderMod || this.infiniteSearchValChange) {\n this.cBox.innerHTML = '';\n }\n else if (this.infiniteRenderMod && this.cBox.children.length) {\n this.infiniteRemoveElements(([].slice.call(this.cBox.children)).splice(0, this.parent.filterSettings.itemsCount));\n }\n if (this.infiniteRenderMod) {\n (_c = this.infiniteLoadedElem).push.apply(_c, [].slice.call(cBoxes.children));\n this.itemsCnt = nullCounter !== -1 ? this.infiniteLoadedElem.length - nullCounter : this.infiniteLoadedElem.length;\n }\n if (this.infiniteUnloadParentExistPred.length && (this.infiniteLoadedElem.length >= this.infiniteDataCount\n || !this.options.parentCurrentViewDataCount || (this.options.parentTotalDataCount === this.infiniteDataCount\n && this.options.parentCurrentViewDataCount))) {\n this.infiniteUnloadParentExistPred = [];\n }\n appendChildren(this.cBox, [].slice.call(cBoxes.children));\n if (this.infiniteRenderMod && !this.infiniteScrollAppendDiff) {\n this.infiniteScrollAppendDiff = Math.round(scrollTop - this.cBox.scrollTop);\n }\n this.updateIndeterminatenBtn();\n if (!this.infiniteRenderMod) {\n if (btn) {\n btn.disabled = false;\n }\n disabled = false;\n }\n else {\n if (btn && btn.disabled) {\n disabled = true;\n }\n else {\n disabled = false;\n }\n }\n }\n else {\n cBoxes.appendChild(this.parent.createElement('span', { innerHTML: this.getLocalizedLabel('NoResult') }));\n this.cBox.innerHTML = '';\n if (this.infiniteRenderMod) {\n var selectAll = this.sBox.querySelector('.e-ftrchk .e-selectall');\n if (selectAll) {\n var selectAllParent = selectAll.parentElement.parentElement;\n if (selectAll.classList.contains('e-check')) {\n toogleCheckbox(selectAllParent);\n }\n else if (selectAll.classList.contains('e-stop')) {\n toogleCheckbox(selectAllParent);\n selectAll.classList.remove('e-stop');\n toogleCheckbox(selectAllParent);\n }\n selectAll.previousSibling.disabled = true;\n selectAll.parentElement.classList.add('e-checkbox-disabled');\n }\n var addCurrSelection = this.sBox.querySelector('.e-ftrchk .e-add-current');\n if (addCurrSelection) {\n var addCurrSelectionParent = addCurrSelection.parentElement.parentElement;\n if (addCurrSelection.classList.contains('e-check')) {\n toogleCheckbox(addCurrSelectionParent);\n }\n addCurrSelection.previousSibling.disabled = true;\n addCurrSelection.parentElement.classList.add('e-checkbox-disabled');\n }\n }\n this.cBox.appendChild(this.parent.createElement('div', { className: 'e-checkfltrnmdiv' }));\n appendChildren(this.cBox.children[0], [].slice.call(cBoxes.children));\n if (btn) {\n btn.disabled = true;\n }\n disabled = true;\n this.filterState = !disabled;\n }\n if (btn && data.length) {\n this.filterState = !btn.disabled;\n btn.dataBind();\n }\n var args = { requestType: events.filterChoiceRequest, dataSource: this.renderEmpty ? [] : data };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.notify(events.cBoxFltrComplete, args);\n this.parent.notify(events.refreshCustomFilterOkBtn, { disabled: disabled });\n if (this.infiniteRenderMod && this.infiniteInitialLoad) {\n this.cBox.style.marginTop = '0px';\n }\n hideSpinner(this.spinner);\n };\n CheckBoxFilterBase.prototype.updateInfiniteUnLoadedCheckboxExistPred = function (value, updatePredArr) {\n for (var j = 0; j < updatePredArr.length; j++) {\n var pred = updatePredArr[j];\n var predValue = pred.value instanceof Date ? this.valueFormatter.toView(pred.value, this.options.formatFn) : pred.value;\n if (value === predValue && (pred.operator === 'equal' || pred.operator === 'notequal')) {\n this.infiniteManualSelectMaintainPred.push(updatePredArr[j]);\n updatePredArr.splice(j, 1);\n j--;\n }\n }\n };\n CheckBoxFilterBase.prototype.getCheckedState = function (isColFiltered, value) {\n if (!this.isFiltered || !isColFiltered) {\n return true;\n }\n else {\n var checkState = this.sInput.value ? true : this.result[\"\" + value];\n if (this.infiniteRenderMod) {\n return checkState;\n }\n else {\n return this.options.operator === 'notequal' ? !checkState : checkState;\n }\n }\n };\n CheckBoxFilterBase.getDistinct = function (json, field, column, foreignKeyData, checkboxFilter) {\n var len = json.length;\n var result = [];\n var value;\n var ejValue = 'ejValue';\n var lookup = {};\n var isForeignKey = column && column.isForeignColumn ? column.isForeignColumn() : false;\n while (len--) {\n value = json[parseInt(len.toString(), 10)];\n if (column && column.type === 'dateonly' && typeof value[\"\" + field] === 'string' && value[\"\" + field]) {\n var arr = value[\"\" + field].split(/[^0-9.]/);\n value[\"\" + field] = new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10));\n }\n value = getObject(field, value); //local remote diff, check with mdu\n var currentFilterValue = (typeof value === 'string') && !(isNullOrUndefined(checkboxFilter)) &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n !(isNullOrUndefined(checkboxFilter.parent)) && !(isNullOrUndefined(checkboxFilter.parent.filterSettings)) &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n !(isNullOrUndefined(checkboxFilter.parent.filterSettings.enableCaseSensitivity)) ? value.toLowerCase() : value;\n if (!(currentFilterValue in lookup)) {\n var obj = {};\n obj[\"\" + ejValue] = value;\n lookup[\"\" + currentFilterValue] = true;\n if (isForeignKey) {\n var foreignDataObj = getForeignData(column, {}, value, foreignKeyData)[0];\n setValue(events.foreignKeyData, foreignDataObj, json[parseInt(len.toString(), 10)]);\n value = getValue(column.foreignKeyValue, foreignDataObj);\n }\n setValue(field, isNullOrUndefined(value) ? null : value, obj);\n setValue('dataObj', json[parseInt(len.toString(), 10)], obj);\n result.push(obj);\n }\n }\n return DataUtil.group(DataUtil.sort(result, field, DataUtil.fnAscending), 'ejValue');\n };\n CheckBoxFilterBase.getPredicate = function (columns, isExecuteLocal) {\n var cols = DataUtil.distinct(columns, 'field', true) || [];\n var collection = [];\n var pred = {};\n for (var i = 0; i < cols.length; i++) {\n collection = new DataManager(columns).executeLocal(new Query().where('field', 'equal', cols[parseInt(i.toString(), 10)].field));\n if (collection.length !== 0) {\n pred[cols[parseInt(i.toString(), 10)].field] = CheckBoxFilterBase.generatePredicate(collection, isExecuteLocal);\n }\n }\n return pred;\n };\n CheckBoxFilterBase.generatePredicate = function (cols, isExecuteLocal) {\n var len = cols ? cols.length : 0;\n var predicate;\n var operate = 'or';\n var first = CheckBoxFilterBase.updateDateFilter(cols[0]);\n first.ignoreAccent = !isNullOrUndefined(first.ignoreAccent) ? first.ignoreAccent : false;\n if (first.type === 'date' || first.type === 'datetime' || first.type === 'dateonly') {\n predicate = getDatePredicate(first, first.type, isExecuteLocal);\n }\n else {\n predicate = first.ejpredicate ? first.ejpredicate :\n new Predicate(first.field, first.operator, first.value, !CheckBoxFilterBase.getCaseValue(first), first.ignoreAccent);\n }\n for (var p = 1; p < len; p++) {\n cols[parseInt(p.toString(), 10)] = CheckBoxFilterBase.updateDateFilter(cols[parseInt(p.toString(), 10)]);\n if (len > 2 && p > 1 && ((cols[p].predicate === 'or' && cols[p - 1].predicate === 'or')\n || (cols[p].predicate === 'and' && cols[p - 1].predicate === 'and'))) {\n if (cols[p].type === 'date' || cols[p].type === 'datetime' || cols[p].type === 'dateonly') {\n predicate.predicates.push(getDatePredicate(cols[parseInt(p.toString(), 10)], cols[p].type, isExecuteLocal));\n }\n else {\n predicate.predicates.push(new Predicate(cols[p].field, cols[parseInt(p.toString(), 10)].operator, cols[parseInt(p.toString(), 10)].value, !CheckBoxFilterBase.getCaseValue(cols[parseInt(p.toString(), 10)]), cols[parseInt(p.toString(), 10)].ignoreAccent));\n }\n }\n else {\n if (cols[p].type === 'date' || cols[p].type === 'datetime' || cols[p].type === 'dateonly') {\n if (cols[parseInt(p.toString(), 10)].predicate === 'and' && cols[parseInt(p.toString(), 10)].operator === 'equal') {\n predicate = predicate[\"\" + operate](getDatePredicate(cols[parseInt(p.toString(), 10)], cols[parseInt(p.toString(), 10)].type, isExecuteLocal), cols[parseInt(p.toString(), 10)].type, cols[parseInt(p.toString(), 10)].ignoreAccent);\n }\n else {\n predicate = predicate[(cols[parseInt(p.toString(), 10)].predicate)](getDatePredicate(cols[parseInt(p.toString(), 10)], cols[parseInt(p.toString(), 10)].type, isExecuteLocal), cols[parseInt(p.toString(), 10)].type, cols[parseInt(p.toString(), 10)].ignoreAccent);\n }\n }\n else {\n predicate = cols[parseInt(p.toString(), 10)].ejpredicate ?\n predicate[cols[parseInt(p.toString(), 10)]\n .predicate](cols[parseInt(p.toString(), 10)].ejpredicate) :\n predicate[(cols[parseInt(p.toString(), 10)].predicate)](cols[parseInt(p.toString(), 10)].field, cols[parseInt(p.toString(), 10)].operator, cols[parseInt(p.toString(), 10)].value, !CheckBoxFilterBase.getCaseValue(cols[parseInt(p.toString(), 10)]), cols[parseInt(p.toString(), 10)].ignoreAccent);\n }\n }\n }\n return predicate || null;\n };\n CheckBoxFilterBase.getCaseValue = function (filter) {\n if (isNullOrUndefined(filter.matchCase)) {\n if (filter.type === 'string' || isNullOrUndefined(filter.type) && typeof (filter.value) === 'string') {\n return false;\n }\n else {\n return true;\n }\n }\n else {\n return filter.matchCase;\n }\n };\n CheckBoxFilterBase.updateDateFilter = function (filter) {\n if ((filter.type === 'date' || filter.type === 'datetime' || filter.type === 'dateonly' || filter.value instanceof Date)) {\n filter.type = filter.type || 'date';\n }\n return filter;\n };\n return CheckBoxFilterBase;\n}());\nexport { CheckBoxFilterBase };\n","import { ChildProperty, compile as baseTemplateComplier, setValue, Internationalization, isUndefined } from '@syncfusion/ej2-base';\nimport { extend as baseExtend, isNullOrUndefined, getValue, classList } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, addClass, attributes, remove, createElement, removeClass } from '@syncfusion/ej2-base';\nimport { isObject, select, selectAll } from '@syncfusion/ej2-base';\nimport { DataUtil, Query, DataManager, Predicate, UrlAdaptor, Deferred } from '@syncfusion/ej2-data';\nimport { Column } from '../models/column';\nimport { calculateRelativeBasedPosition } from '@syncfusion/ej2-popups';\nimport { Print } from '../actions/print';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\nimport * as literals from '../base/string-literals';\n//https://typescript.codeplex.com/discussions/401501\n/**\n * Function to check whether target object implement specific interface\n *\n * @param {Object} target - specifies the target\n * @param {string} checkFor - specifies the checkfors\n * @returns {boolean} returns the boolean\n * @hidden\n */\nexport function doesImplementInterface(target, checkFor) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return target.prototype && checkFor in target.prototype;\n}\n/**\n * Function to get value from provided data\n *\n * @param {string} field - specifies the field\n * @param {Object} data - specifies the data\n * @param {ColumnModel} column - specifies the column\n * @returns {Object} returns the object\n * @hidden\n */\n// eslint-disable-next-line\nexport function valueAccessor(field, data, column) {\n return (isNullOrUndefined(field) || field === '') ? '' : DataUtil.getObject(field, data);\n}\n/**\n * Defines the method used to apply custom header cell values from external function and display this on each header cell rendered.\n *\n * @param {string} field - specifies the field\n * @param {ColumnModel} column - specifies the column\n * @returns {object} headerValueAccessor\n * @hidden\n */\nexport function headerValueAccessor(field, column) {\n return (isNullOrUndefined(field) || field === '') ? '' : DataUtil.getObject(field, column);\n}\n/**\n * The function used to update Dom using requestAnimationFrame.\n *\n * @param {Function} updateFunction - Function that contains the actual action\n * @param {object} callBack - defines the callback\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function getUpdateUsingRaf(updateFunction, callBack) {\n requestAnimationFrame(function () {\n try {\n callBack(null, updateFunction());\n }\n catch (e) {\n callBack(e);\n }\n });\n}\n/**\n * @hidden\n * @param {PdfExportProperties | ExcelExportProperties} exportProperties - Defines the export properties\n * @returns {boolean} Returns isExportColumns\n */\nexport function isExportColumns(exportProperties) {\n return !isNullOrUndefined(exportProperties) &&\n !isNullOrUndefined(exportProperties.columns) && exportProperties.columns.length > 0;\n}\n/**\n * @param {PdfExportProperties | ExcelExportProperties} exportProperties - Defines the export properties\n * @param {IGrid} gObj - Defines the grid object\n * @returns {void}\n * @hidden\n */\nexport function updateColumnTypeForExportColumns(exportProperties, gObj) {\n var exportColumns = exportProperties.columns;\n var gridColumns = gObj.columns;\n for (var i = 0; i < exportColumns.length; i++) {\n if (gridColumns.length - 1 >= i) {\n if (gridColumns[parseInt(i.toString(), 10)].columns) {\n for (var j = 0; j < gridColumns[parseInt(i.toString(), 10)].columns.length; j++) {\n exportColumns[parseInt(i.toString(), 10)].columns[parseInt(j.toString(), 10)]\n .type = gridColumns[parseInt(i.toString(), 10)].columns[parseInt(j.toString(), 10)].type;\n }\n }\n else {\n exportColumns[parseInt(i.toString(), 10)].type = gridColumns[parseInt(i.toString(), 10)].type;\n }\n }\n }\n}\n/**\n * @hidden\n * @param {IGrid} grid - Defines the grid\n * @returns {void}\n */\nexport function updatecloneRow(grid) {\n var nRows = [];\n var actualRows = grid.vRows;\n for (var i = 0; i < actualRows.length; i++) {\n if (actualRows[parseInt(i.toString(), 10)].isDataRow) {\n nRows.push(actualRows[parseInt(i.toString(), 10)]);\n }\n else if (!actualRows[parseInt(i.toString(), 10)].isDataRow) {\n nRows.push(actualRows[parseInt(i.toString(), 10)]);\n if (!actualRows[parseInt(i.toString(), 10)].isExpand && actualRows[parseInt(i.toString(), 10)].isCaptionRow) {\n i += getCollapsedRowsCount(actualRows[parseInt(i.toString(), 10)], grid);\n }\n }\n }\n grid.vcRows = nRows;\n}\nvar count = 0;\n/**\n * @hidden\n * @param {Row} val - Defines the value\n * @param {IGrid} grid - Defines the grid\n * @returns {number} Returns the collapsed row count\n */\nexport function getCollapsedRowsCount(val, grid) {\n count = 0;\n var gSummary = 'gSummary';\n var total = 'count';\n var gLen = grid.groupSettings.columns.length;\n var records = 'records';\n var items = 'items';\n var value = val[\"\" + gSummary];\n var dataRowCnt = 0;\n var agrCnt = 'aggregatesCount';\n if (value === val.data[\"\" + total]) {\n if (grid.groupSettings.columns.length && !isNullOrUndefined(val[\"\" + agrCnt]) && val[\"\" + agrCnt]) {\n if (grid.groupSettings.columns.length !== 1) {\n count += (val.indent !== 0 && (value) < 2) ? (val[\"\" + gSummary] * ((gLen - val.indent) + (gLen - val.indent) * val[\"\" + agrCnt])) :\n (val[\"\" + gSummary] * ((gLen - val.indent) + (gLen - val.indent - 1) * val[\"\" + agrCnt])) + val[\"\" + agrCnt];\n }\n else if (grid.groupSettings.columns.length === 1) {\n count += (val[\"\" + gSummary] * (gLen - val.indent)) + val[\"\" + agrCnt];\n }\n }\n else if (grid.groupSettings.columns.length) {\n if (grid.groupSettings.columns.length !== 1) {\n count += val[\"\" + gSummary] * (grid.groupSettings.columns.length - val.indent);\n }\n else {\n count += val[\"\" + gSummary];\n }\n }\n return count;\n }\n else {\n for (var i = 0, len = val.data[\"\" + items].length; i < len; i++) {\n var gLevel = val.data[\"\" + items][parseInt(i.toString(), 10)];\n count += gLevel[\"\" + items].length + ((gLen !== grid.columns.length) &&\n !isNullOrUndefined(gLevel[\"\" + items][\"\" + records]) ? gLevel[\"\" + items][\"\" + records].length : 0);\n dataRowCnt += (!isNullOrUndefined(gLevel[\"\" + items][\"\" + records]) && !isNullOrUndefined(val[\"\" + agrCnt])) ? gLevel[\"\" + items][\"\" + records].length :\n gLevel[\"\" + items].length;\n if (gLevel[\"\" + items].GroupGuid && gLevel[\"\" + items].childLevels !== 0) {\n recursive(gLevel);\n }\n }\n count += val.data[\"\" + items].length;\n if (!isNullOrUndefined(val[\"\" + agrCnt])) {\n if (val[\"\" + agrCnt] && count && dataRowCnt !== 0) {\n count += ((count - dataRowCnt) * val[\"\" + agrCnt]) + val[\"\" + agrCnt];\n }\n }\n }\n return count;\n}\n/**\n * @param {Object[]} row - Defines the row\n * @returns {void}\n * @hidden\n */\nexport function recursive(row) {\n var items = 'items';\n var rCount = 'count';\n for (var j = 0, length_1 = row[\"\" + items].length; j < length_1; j++) {\n var nLevel = row[\"\" + items][parseInt(j.toString(), 10)];\n count += nLevel[\"\" + rCount];\n if (nLevel[\"\" + items].childLevels !== 0) {\n recursive(nLevel);\n }\n }\n}\n/**\n * @param {Object[]} collection - Defines the array\n * @param {Object} predicate - Defines the predicate\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function iterateArrayOrObject(collection, predicate) {\n var result = [];\n for (var i = 0, len = collection.length; i < len; i++) {\n var pred = predicate(collection[parseInt(i.toString(), 10)], i);\n if (!isNullOrUndefined(pred)) {\n result.push(pred);\n }\n }\n return result;\n}\n/**\n * @param {Object[]} array - Defines the array\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function iterateExtend(array) {\n var obj = [];\n for (var i = 0; i < array.length; i++) {\n obj.push(baseExtend({}, getActualProperties(array[parseInt(i.toString(), 10)]), {}, true));\n }\n return obj;\n}\n/**\n * @param {string | Function} template - Defines the template\n * @returns {Function} Returns the function\n * @hidden\n */\nexport function templateCompiler(template) {\n if (template) {\n try {\n var validSelector = template[0] !== '<';\n if (typeof template === 'function') {\n return baseTemplateComplier(template);\n }\n else if (validSelector && document.querySelectorAll(template).length) {\n return baseTemplateComplier(document.querySelector(template).innerHTML.trim());\n }\n else {\n return baseTemplateComplier(template);\n }\n }\n catch (e) {\n return baseTemplateComplier(template);\n }\n }\n return undefined;\n}\n/**\n * @param {Element} node - Defines the column\n * @param {Object} customAttributes - Defines the index\n * @returns {void}\n * @hidden\n */\nexport function setStyleAndAttributes(node, customAttributes) {\n var copyAttr = {};\n var literals = ['style', 'class'];\n //Dont touch the original object - make a copy\n baseExtend(copyAttr, customAttributes, {});\n if ('style' in copyAttr) {\n setStyleAttribute(node, copyAttr[literals[0]]);\n delete copyAttr[literals[0]];\n }\n if ('class' in copyAttr) {\n addClass([node], copyAttr[literals[1]]);\n delete copyAttr[literals[1]];\n }\n attributes(node, copyAttr);\n}\n/**\n * @param {Object} copied - Defines the column\n * @param {Object} first - Defines the inndex\n * @param {Object} second - Defines the second object\n * @param {string[]} exclude - Defines the exclude\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function extend(copied, first, second, exclude) {\n var moved = baseExtend(copied, first, second);\n var values = Object.keys(moved);\n for (var i = 0; i < values.length; i++) {\n if (exclude && exclude.indexOf(values[parseInt(i.toString(), 10)]) !== -1) {\n delete moved[values[parseInt(i.toString(), 10)]];\n }\n }\n return moved;\n}\n/**\n * @param {Column[]} columnModel - Defines the column\n * @param {number} ind - Defines the inndex\n * @returns {number} - Returns the columnindex\n * @hidden\n */\nexport function setColumnIndex(columnModel, ind) {\n if (ind === void 0) { ind = 0; }\n for (var i = 0, len = (!isNullOrUndefined(columnModel) ? columnModel.length : 0); i < len; i++) {\n if (columnModel[parseInt(i.toString(), 10)].columns) {\n columnModel[parseInt(i.toString(), 10)].index = isNullOrUndefined(columnModel[parseInt(i.toString(), 10)].index) ? ind\n : columnModel[parseInt(i.toString(), 10)].index;\n ind++;\n ind = setColumnIndex(columnModel[parseInt(i.toString(), 10)].columns, ind);\n }\n else {\n columnModel[parseInt(i.toString(), 10)].index = isNullOrUndefined(columnModel[parseInt(i.toString(), 10)].index) ? ind\n : columnModel[parseInt(i.toString(), 10)].index;\n ind++;\n }\n }\n return ind;\n}\n/**\n * @param {Column[] | string[] | ColumnModel[]} columns - Defines the column\n * @param {boolean} autoWidth - Defines the autowidth\n * @param {IGrid} gObj - Defines the class name\n * @returns {Column} - Returns the columns\n * @hidden\n */\nexport function prepareColumns(columns, autoWidth, gObj) {\n for (var c = 0, len = (!isNullOrUndefined(columns) ? columns.length : 0); c < len; c++) {\n var column = void 0;\n if (typeof columns[parseInt(c.toString(), 10)] === 'string') {\n column = new Column({ field: columns[parseInt(c.toString(), 10)] }, gObj);\n }\n else if (!(columns[parseInt(c.toString(), 10)] instanceof Column) || columns[parseInt(c.toString(), 10)].columns) {\n if (!columns[parseInt(c.toString(), 10)].columns) {\n column = new Column(columns[parseInt(c.toString(), 10)], gObj);\n }\n else {\n columns[parseInt(c.toString(), 10)].columns = prepareColumns(columns[parseInt(c.toString(), 10)].columns, null, gObj);\n column = new Column(columns[parseInt(c.toString(), 10)], gObj);\n }\n }\n else {\n column = columns[parseInt(c.toString(), 10)];\n }\n if (column.type && column.type.toLowerCase() === 'checkbox') {\n column.allowReordering = false;\n }\n column.headerText = isNullOrUndefined(column.headerText) ? column.foreignKeyValue || column.field || '' : column.headerText;\n column.foreignKeyField = column.foreignKeyField || column.field;\n column.valueAccessor = (typeof column.valueAccessor === 'string' ? getValue(column.valueAccessor, window)\n : column.valueAccessor) || valueAccessor;\n column.width = autoWidth && isNullOrUndefined(column.width) ? 200 : column.width;\n if (isNullOrUndefined(column.visible)) {\n column.visible = true;\n }\n columns[parseInt(c.toString(), 10)] = column;\n }\n return columns;\n}\n/**\n * @param {HTMLElement} popUp - Defines the popup element\n * @param {MouseEvent | TouchEvent} e - Defines the moouse event\n * @param {string} className - Defines the class name\n * @returns {void}\n * @hidden\n */\nexport function setCssInGridPopUp(popUp, e, className) {\n var popUpSpan = popUp.querySelector('span');\n var position = popUp.parentElement.getBoundingClientRect();\n var targetPosition = e.target.getBoundingClientRect();\n popUpSpan.className = className;\n popUp.style.display = '';\n var isBottomTail = (isNullOrUndefined(e.clientY) ? e.changedTouches[0].clientY :\n e.clientY) > popUp.offsetHeight + 10;\n popUp.style.top = targetPosition.top - position.top +\n (isBottomTail ? -(popUp.offsetHeight + 10) : popUp.offsetHeight + 10) + 'px'; //10px for tail element\n popUp.style.left = getPopupLeftPosition(popUp, e, targetPosition, position.left) + 'px';\n if (isBottomTail) {\n popUp.querySelector('.e-downtail').style.display = '';\n popUp.querySelector('.e-uptail').style.display = 'none';\n }\n else {\n popUp.querySelector('.e-downtail').style.display = 'none';\n popUp.querySelector('.e-uptail').style.display = '';\n }\n}\n/**\n * @param {HTMLElement} popup - Defines the popup element\n * @param {MouseEvent | TouchEvent} e - Defines the mouse event\n * @param {Object} targetPosition - Defines the target position\n * @param {number} targetPosition.top - Defines the top position\n * @param {number} targetPosition.left - Defines the left position\n * @param {number} targetPosition.right - Defines the right position\n * @param {number} left - Defines the left position\n * @returns {number} Returns the popup left position\n * @hidden\n */\nfunction getPopupLeftPosition(popup, e, targetPosition, left) {\n var width = popup.offsetWidth / 2;\n var x = getPosition(e).x;\n if (x - targetPosition.left < width) {\n return targetPosition.left - left;\n }\n else if (targetPosition.right - x < width) {\n return targetPosition.right - left - width * 2;\n }\n else {\n return x - left - width;\n }\n}\n/**\n * @param {Object} obj - Defines the object\n * @returns {Object} Returns the Properties\n * @hidden\n */\nexport function getActualProperties(obj) {\n if (obj instanceof ChildProperty) {\n return getValue('properties', obj);\n }\n else {\n return obj;\n }\n}\n/**\n * @param {Element} elem - Defines the element\n * @param {string} selector - Defines the string selector\n * @param {boolean} isID - Defines the isID\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function parentsUntil(elem, selector, isID) {\n var parent = elem;\n while (parent) {\n if (isID ? parent.id === selector : parent.classList.contains(selector)) {\n break;\n }\n parent = parent.parentElement;\n }\n return parent;\n}\n/**\n * @param {Element} element - Defines the element\n * @param {Element} elements - Defines the element\n * @returns {number} Returns the element index\n * @hidden\n */\nexport function getElementIndex(element, elements) {\n var index = -1;\n for (var i = 0, len = elements.length; i < len; i++) {\n if (elements[parseInt(i.toString(), 10)].isEqualNode(element)) {\n index = i;\n break;\n }\n }\n return index;\n}\n/**\n * @param {Object} value - Defines the value\n * @param {Object} collection - defines the collection\n * @returns {number} Returns the array\n * @hidden\n */\nexport function inArray(value, collection) {\n for (var i = 0, len = collection.length; i < len; i++) {\n if (collection[parseInt(i.toString(), 10)] === value) {\n return i;\n }\n }\n return -1;\n}\n/**\n * @param {Object} collection - Defines the collection\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function getActualPropFromColl(collection) {\n var coll = [];\n for (var i = 0, len = collection.length; i < len; i++) {\n // eslint-disable-next-line no-prototype-builtins\n if (collection[parseInt(i.toString(), 10)].hasOwnProperty('properties')) {\n coll.push(collection[parseInt(i.toString(), 10)].properties);\n }\n else {\n coll.push(collection[parseInt(i.toString(), 10)]);\n }\n }\n return coll;\n}\n/**\n * @param {Element} target - Defines the target element\n * @param {string} selector - Defines the selector\n * @returns {void}\n * @hidden\n */\nexport function removeElement(target, selector) {\n var elements = [].slice.call(target.querySelectorAll(selector));\n for (var i = 0; i < elements.length; i++) {\n remove(elements[parseInt(i.toString(), 10)]);\n }\n}\n/**\n * @param {MouseEvent | TouchEvent} e Defines the mouse event\n * @returns {IPosition} Returns the position\n * @hidden\n */\nexport function getPosition(e) {\n var position = {};\n position.x = (isNullOrUndefined(e.clientX) ? e.changedTouches[0].clientX :\n e.clientX);\n position.y = (isNullOrUndefined(e.clientY) ? e.changedTouches[0].clientY :\n e.clientY);\n return position;\n}\nvar uid = 0;\n/**\n * @param {string} prefix - Defines the prefix string\n * @returns {string} Returns the uid\n * @hidden\n */\nexport function getUid(prefix) {\n return prefix + uid++;\n}\n/**\n * @param {Element | DocumentFragment} elem - Defines the element\n * @param {Element[] | NodeList} children - Defines the Element\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function appendChildren(elem, children) {\n for (var i = 0, len = children.length; i < len; i++) {\n if (len === children.length) {\n elem.appendChild(children[parseInt(i.toString(), 10)]);\n }\n else {\n elem.appendChild(children[0]);\n }\n }\n return elem;\n}\n/**\n * @param {Element} elem - Defines the element\n * @param {string} selector - Defines the selector\n * @param {boolean} isID - Defines isID\n * @returns {Element} Return the element\n * @hidden\n */\nexport function parents(elem, selector, isID) {\n var parent = elem;\n var parents = [];\n while (parent) {\n if (isID ? parent.id === selector : parent.classList.contains(selector)) {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\n/**\n * @param {AggregateType | string} type - Defines the type\n * @param {Object} data - Defines the data\n * @param {AggregateColumnModel} column - Defines the column\n * @param {Object} context - Defines the context\n * @returns {Object} Returns the calculated aggragate\n * @hidden\n */\nexport function calculateAggregate(type, data, column, context) {\n if (type === 'Custom') {\n var temp = column.customAggregate;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n return temp ? temp.call(context, data, column) : '';\n }\n return (column.field in data || data instanceof Array) ? DataUtil.aggregates[type.toLowerCase()](data, column.field) : null;\n}\n/** @hidden */\nvar scrollWidth = null;\n/** @hidden\n * @returns {number} - Returns the scrollbarwidth\n */\nexport function getScrollBarWidth() {\n if (scrollWidth !== null) {\n return scrollWidth;\n }\n var divNode = document.createElement('div');\n var value = 0;\n divNode.style.cssText = 'width:100px;height: 100px;overflow: scroll;position: absolute;top: -9999px;';\n document.body.appendChild(divNode);\n value = (divNode.offsetWidth - divNode.clientWidth) | 0;\n document.body.removeChild(divNode);\n return scrollWidth = value;\n}\n/** @hidden */\nvar rowHeight;\n/**\n * @param {HTMLElement} element - Defines the element\n * @returns {number} Returns the roww height\n * @hidden\n */\nexport function getRowHeight(element) {\n if (rowHeight !== undefined) {\n return rowHeight;\n }\n var table = createElement('table', { className: literals.table, styles: 'visibility: hidden', attrs: { role: 'grid' } });\n table.innerHTML = 'A';\n element.appendChild(table);\n var rect = table.querySelector('td').getBoundingClientRect();\n element.removeChild(table);\n rowHeight = Math.ceil(rect.height);\n return rowHeight;\n}\n/**\n * @param {HTMLElement} element - Defines the HTMl element\n * @returns {number} Returns the row height\n * @hidden\n */\nexport function getActualRowHeight(element) {\n var table = createElement('table', { className: literals.table, styles: 'visibility: hidden', attrs: { role: 'grid' } });\n table.innerHTML = 'A';\n element.appendChild(table);\n var rect = table.querySelector('tr').getBoundingClientRect();\n element.removeChild(table);\n return rect.height;\n}\n/**\n * @param {string} field - Defines the field\n * @returns {boolean} - Returns is complex field\n * @hidden\n */\nexport function isComplexField(field) {\n return field.split('.').length > 1;\n}\n/**\n * @param {string} field - Defines the field\n * @returns {string} - Returns the get complex field ID\n * @hidden\n */\nexport function getComplexFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/\\./g, '___');\n}\n/**\n * @param {string} field - Defines the field\n * @returns {string} - Returns the parsed column field id\n * @hidden\n */\nexport function getParsedFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/[^a-zA-Z0-9_.]/g, '\\\\$&');\n}\n/**\n * @param {string} field - Defines the field\n * @returns {string} - Returns the set complex field ID\n * @hidden\n */\nexport function setComplexFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/___/g, '.');\n}\n/**\n * @param {Column} col - Defines the column\n * @param {string} type - Defines the type\n * @param {Element} elem - Defines th element\n * @returns {boolean} Returns is Editable\n * @hidden\n */\nexport function isEditable(col, type, elem) {\n var row = parentsUntil(elem, literals.row);\n var isOldRow = !row ? true : row && !row.classList.contains('e-insertedrow');\n if (type === 'beginEdit' && isOldRow) {\n if (col.isIdentity || col.isPrimaryKey || !col.allowEditing) {\n return false;\n }\n return true;\n }\n else if (type === 'add' && col.isIdentity) {\n return false;\n }\n else {\n if (isOldRow && !col.allowEditing && !col.isIdentity && !col.isPrimaryKey) {\n return false;\n }\n return true;\n }\n}\n/**\n * @param {IGrid} inst - Defines the IGrid\n * @returns {boolean} Returns is action prevent in boolean\n * @hidden\n */\nexport function isActionPrevent(inst) {\n var dlg = select('#' + inst.element.id + 'EditConfirm', inst.element);\n return inst.editSettings.mode === 'Batch' &&\n (selectAll('.e-updatedtd', inst.element).length || selectAll('.e-gridform.e-formvalidator', inst.element).length)\n && inst.editSettings.showConfirmDialog && (dlg ? dlg.classList.contains('e-popup-close') : true);\n}\n/**\n * @param {any} elem - Defines the element\n * @param {boolean} action - Defines the boolean for action\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function wrap(elem, action) {\n var clName = 'e-wrap';\n elem = elem instanceof Array ? elem : [elem];\n for (var i = 0; i < elem.length; i++) {\n if (action) {\n elem[parseInt(i.toString(), 10)].classList.add(clName);\n }\n else {\n elem[parseInt(i.toString(), 10)].classList.remove(clName);\n }\n }\n}\n/**\n * @param {ServiceLocator} serviceLocator - Defines the service locator\n * @param {Column} column - Defines the column\n * @returns {void}\n * @hidden\n */\nexport function setFormatter(serviceLocator, column) {\n var fmtr = serviceLocator.getService('valueFormatter');\n var format = 'format';\n var args;\n if (column.type === 'date' || column.type === 'datetime' || column.type === 'dateonly') {\n args = { type: column.type === 'dateonly' ? 'date' : column.type, skeleton: column.format };\n if ((typeof (column.format) === 'string') && column.format !== 'yMd') {\n args[\"\" + format] = column.format;\n }\n }\n switch (column.type) {\n case 'date':\n column.setFormatter(fmtr.getFormatFunction(args));\n column.setParser(fmtr.getParserFunction(args));\n break;\n case 'dateonly':\n column.setFormatter(fmtr.getFormatFunction(args));\n column.setParser(fmtr.getParserFunction(args));\n break;\n case 'datetime':\n column.setFormatter(fmtr.getFormatFunction(args));\n column.setParser(fmtr.getParserFunction(args));\n break;\n case 'number':\n column.setFormatter(fmtr.getFormatFunction({ format: column.format }));\n column.setParser(fmtr.getParserFunction({ format: column.format }));\n break;\n }\n}\n/**\n * @param {Element} cells - Defines the cell element\n * @param {boolean} add - Defines the add\n * @param {string} args - Defines the args\n * @returns {void}\n * @hidden\n */\nexport function addRemoveActiveClasses(cells, add) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n for (var i = 0, len = cells.length; i < len; i++) {\n if (add) {\n classList(cells[parseInt(i.toString(), 10)], args.slice(), []);\n cells[parseInt(i.toString(), 10)].setAttribute('aria-selected', 'true');\n }\n else {\n classList(cells[parseInt(i.toString(), 10)], [], args.slice());\n cells[parseInt(i.toString(), 10)].removeAttribute('aria-selected');\n }\n }\n}\n/**\n * @param {string} result - Defines th string\n * @returns {string} Returns the distinct staing values\n * @hidden\n */\nexport function distinctStringValues(result) {\n var temp = {};\n var res = [];\n for (var i = 0; i < result.length; i++) {\n if (!(result[parseInt(i.toString(), 10)] in temp)) {\n res.push(result[parseInt(i.toString(), 10)].toString());\n temp[result[parseInt(i.toString(), 10)]] = 1;\n }\n }\n return res;\n}\n/**\n * @param {Element} target - Defines the target\n * @param {Dialog} dialogObj - Defines the dialog\n * @returns {void}\n * @hidden\n */\nexport function getFilterMenuPostion(target, dialogObj) {\n var elementVisible = dialogObj.element.style.display;\n dialogObj.element.style.display = 'block';\n var dlgWidth = dialogObj.width;\n var newpos = calculateRelativeBasedPosition(target, dialogObj.element);\n dialogObj.element.style.display = elementVisible;\n dialogObj.element.style.top = (newpos.top + target.getBoundingClientRect().height) - 5 + 'px';\n var leftPos = ((newpos.left - dlgWidth) + target.clientWidth);\n if (leftPos < 1) {\n dialogObj.element.style.left = (dlgWidth + leftPos) - 16 + 'px'; // right calculation\n }\n else {\n dialogObj.element.style.left = leftPos + -4 + 'px';\n }\n}\n/**\n * @param {Object} args - Defines the args\n * @param {Popup} args.popup - Defines the args for popup\n * @param {Dialog} dialogObj - Defines the dialog obj\n * @returns {void}\n * @hidden\n */\nexport function getZIndexCalcualtion(args, dialogObj) {\n args.popup.element.style.zIndex = (dialogObj.zIndex + 1).toString();\n}\n/**\n * @param {Element} elem - Defines the element\n * @returns {void}\n * @hidden\n */\nexport function toogleCheckbox(elem) {\n var span = elem.querySelector('.e-frame');\n var input = span.previousSibling;\n if (span.classList.contains('e-check')) {\n input.checked = false;\n classList(span, ['e-uncheck'], ['e-check']);\n }\n else {\n input.checked = true;\n classList(span, ['e-check'], ['e-uncheck']);\n }\n}\n/**\n * @param {HTMLInputElement} elem - Defines the element\n * @param {boolean} checked - Defines is checked\n * @returns {void}\n * @hidden\n */\nexport function setChecked(elem, checked) {\n elem.checked = checked;\n}\n/**\n * @param {string} uid - Defines the string\n * @param {Element} elem - Defines the Element\n * @param {string} className - Defines the classname\n * @returns {Element} Returns the box wrap\n * @hidden\n */\nexport function createCboxWithWrap(uid, elem, className) {\n var div = createElement('div', { className: className });\n div.appendChild(elem);\n div.setAttribute('uid', uid);\n return div;\n}\n/**\n * @param {Element} elem - Defines the element\n * @param {boolean} checked - Defines is checked\n * @returns {void}\n * @hidden\n */\nexport function removeAddCboxClasses(elem, checked) {\n removeClass([elem], ['e-check', 'e-stop', 'e-uncheck']);\n if (checked) {\n elem.classList.add('e-check');\n }\n else {\n elem.classList.add('e-uncheck');\n }\n}\n/**\n * Refresh the Row model's foreign data.\n *\n * @param {IRow} row - Grid Row model object.\n * @param {Column[]} columns - Foreign columns array.\n * @param {Object} data - Updated Row data.\n * @returns {void}\n * @hidden\n */\nexport function refreshForeignData(row, columns, data) {\n for (var i = 0; i < (!isNullOrUndefined(columns) ? columns.length : 0); i++) {\n setValue(columns[parseInt(i.toString(), 10)].field, getForeignData(columns[parseInt(i.toString(), 10)], data), row.foreignKeyData);\n }\n var cells = row.cells;\n for (var i = 0; i < cells.length; i++) {\n if (cells[parseInt(i.toString(), 10)].isForeignKey) {\n setValue('foreignKeyData', getValue(cells[parseInt(i.toString(), 10)].column.field, row.foreignKeyData), cells[parseInt(i.toString(), 10)]);\n }\n }\n}\n/**\n * Get the foreign data for the corresponding cell value.\n *\n * @param {Column} column - Foreign Key column\n * @param {Object} data - Row data.\n * @param {string | number} lValue - cell value.\n * @param {Object} foreignKeyData - foreign data source.\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function getForeignData(column, data, lValue, foreignKeyData) {\n var fField = column.foreignKeyField;\n var key = (!isNullOrUndefined(lValue) ? lValue : valueAccessor(column.field, data, column));\n key = isNullOrUndefined(key) ? '' : key;\n var query = new Query();\n var fdata = foreignKeyData || ((column.dataSource instanceof DataManager) && column.dataSource.dataSource.json.length ?\n column.dataSource.dataSource.json : column.columnData);\n if (key.getDay) {\n query.where(getDatePredicate({ field: fField, operator: 'equal', value: key, matchCase: false }));\n }\n else {\n query.where(fField, '==', key, false);\n }\n return new DataManager(fdata).executeLocal(query);\n}\n/**\n * To use to get the column's object by the foreign key value.\n *\n * @param {string} foreignKeyValue - Defines ForeignKeyValue.\n * @param {Column[]} columns - Array of column object.\n * @returns {Column} Returns the element\n * @hidden\n */\nexport function getColumnByForeignKeyValue(foreignKeyValue, columns) {\n var column;\n return columns.some(function (col) {\n column = col;\n return col.foreignKeyValue === foreignKeyValue;\n }) && column;\n}\n/**\n * @param {number} value - Defines the date or month value\n * @returns {string} Returns string\n * @hidden\n */\nexport function padZero(value) {\n if (value < 10) {\n return '0' + value;\n }\n return String(value);\n}\n/**\n * @param {PredicateModel} filterObject - Defines the filterObject\n * @param {string} type - Defines the type\n * @param {boolean} isExecuteLocal - Defines whether the data actions performed in client and used for dateonly type field\n * @returns {Predicate} Returns the Predicate\n * @hidden\n */\nexport function getDatePredicate(filterObject, type, isExecuteLocal) {\n var datePredicate;\n var prevDate;\n var nextDate;\n var prevObj = baseExtend({}, getActualProperties(filterObject));\n var nextObj = baseExtend({}, getActualProperties(filterObject));\n if (isNullOrUndefined(filterObject.value) || filterObject.value === '') {\n datePredicate = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n return datePredicate;\n }\n var value = new Date(filterObject.value);\n if (type === 'dateonly' && !isExecuteLocal) {\n if (typeof (prevObj.value) === 'string') {\n prevObj.value = new Date(prevObj.value);\n }\n var dateOnlyString = prevObj.value.getFullYear() + '-' + padZero(prevObj.value.getMonth() + 1) + '-' + padZero(prevObj.value.getDate());\n var predicates = new Predicate(prevObj.field, prevObj.operator, dateOnlyString, false);\n datePredicate = predicates;\n }\n else {\n if (filterObject.operator === 'equal' || filterObject.operator === 'notequal') {\n if (type === 'datetime') {\n prevDate = new Date(value.setSeconds(value.getSeconds() - 1));\n nextDate = new Date(value.setSeconds(value.getSeconds() + 2));\n filterObject.value = new Date(value.setSeconds(nextDate.getSeconds() - 1));\n }\n else {\n prevDate = new Date(value.setHours(0) - 1);\n nextDate = new Date(value.setHours(24));\n }\n prevObj.value = prevDate;\n nextObj.value = nextDate;\n if (filterObject.operator === 'equal') {\n prevObj.operator = 'greaterthan';\n nextObj.operator = 'lessthan';\n }\n else if (filterObject.operator === 'notequal') {\n prevObj.operator = 'lessthanorequal';\n nextObj.operator = 'greaterthanorequal';\n }\n var predicateSt = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n var predicateEnd = new Predicate(nextObj.field, nextObj.operator, nextObj.value, false);\n datePredicate = filterObject.operator === 'equal' ? predicateSt.and(predicateEnd) : predicateSt.or(predicateEnd);\n }\n else {\n if (type === 'date' && (filterObject.operator === 'lessthanorequal' || filterObject.operator === 'greaterthan')) {\n prevObj.value = new Date(value.setHours(24) - 1);\n }\n if (typeof (prevObj.value) === 'string') {\n prevObj.value = new Date(prevObj.value);\n }\n var predicates = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n datePredicate = predicates;\n }\n }\n if (filterObject.setProperties) {\n filterObject.setProperties({ ejpredicate: datePredicate }, true);\n }\n else {\n filterObject.ejpredicate = datePredicate;\n }\n return datePredicate;\n}\n/**\n * @param {IGrid} grid - Defines the IGrid\n * @returns {boolean} Returns true if group adaptive is true\n * @hidden\n */\nexport function isGroupAdaptive(grid) {\n return grid.enableVirtualization && grid.groupSettings.columns.length > 0 && grid.isVirtualAdaptive &&\n !grid.groupSettings.enableLazyLoading;\n}\n/**\n * @param {string} field - Defines the Field\n * @param {Object} object - Defines the objec\n * @returns {any} Returns the object\n * @hidden\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport function getObject(field, object) {\n if (field === void 0) { field = ''; }\n if (field) {\n var value = object;\n var splits = field.split('.');\n for (var i = 0; i < splits.length && !isNullOrUndefined(value); i++) {\n value = value[splits[parseInt(i.toString(), 10)]];\n if (isUndefined(value)) {\n var newCase = splits[parseInt(i.toString(), 10)].charAt(0).toUpperCase()\n + splits[parseInt(i.toString(), 10)].slice(1);\n value = object[\"\" + newCase] || object[(\"\" + newCase).charAt(0).toLowerCase() + (\"\" + newCase).slice(1)];\n }\n }\n return value;\n }\n}\n/**\n * @param {string | Object} format - defines the format\n * @param {string} colType - Defines the coltype\n * @returns {string} Returns the custom Data format\n * @hidden\n */\nexport function getCustomDateFormat(format, colType) {\n var intl = new Internationalization();\n var formatvalue;\n var formatter = 'format';\n var type = 'type';\n if (colType === 'date') {\n formatvalue = typeof (format) === 'object' ?\n intl.getDatePattern({ type: format[\"\" + type] ? format[\"\" + type] : 'date', format: format[\"\" + formatter] }, false) :\n intl.getDatePattern({ type: 'dateTime', skeleton: format }, false);\n }\n else {\n formatvalue = typeof (format) === 'object' ?\n intl.getDatePattern({ type: format[\"\" + type] ? format[\"\" + type] : 'dateTime', format: format[\"\" + formatter] }, false) :\n intl.getDatePattern({ type: 'dateTime', skeleton: format }, false);\n }\n return formatvalue;\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @param {HierarchyGridPrintMode} hierarchyPrintMode - Defines the hierarchyPrintMode\n * @returns {Object} Returns the object\n * @hidden\n */\nexport function getExpandedState(gObj, hierarchyPrintMode) {\n var rows = gObj.getRowsObject();\n var obj = {};\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n if (row.isExpand && !row.isDetailRow) {\n var index = gObj.allowPaging && gObj.printMode === 'AllPages' ? row.index +\n (gObj.pageSettings.currentPage * gObj.pageSettings.pageSize) - gObj.pageSettings.pageSize : row.index;\n if (!isNullOrUndefined(index)) {\n obj[parseInt(index.toString(), 10)] = {};\n obj[parseInt(index.toString(), 10)].isExpand = true;\n if (gObj.childGrid) {\n obj[parseInt(index.toString(), 10)].gridModel = getPrintGridModel(row.childGrid, hierarchyPrintMode);\n obj[parseInt(index.toString(), 10)].gridModel.query = gObj.childGrid.query;\n }\n }\n }\n }\n return obj;\n}\n/**\n * @param {IGrid} gObj - Defines the grid objct\n * @param {HierarchyGridPrintMode} hierarchyPrintMode - Defines the hierarchyPrintMode\n * @returns {IGrid} Returns the IGrid\n * @hidden\n */\nexport function getPrintGridModel(gObj, hierarchyPrintMode) {\n if (hierarchyPrintMode === void 0) { hierarchyPrintMode = 'Expanded'; }\n var printGridModel = {};\n if (!gObj) {\n return printGridModel;\n }\n for (var _i = 0, _a = Print.printGridProp; _i < _a.length; _i++) {\n var key = _a[_i];\n if (key === 'columns') {\n printGridModel[\"\" + key] = getActualPropFromColl(gObj.getColumns());\n }\n else if (key === 'allowPaging') {\n printGridModel[\"\" + key] = gObj.printMode === 'CurrentPage';\n }\n else {\n printGridModel[\"\" + key] = getActualProperties(gObj[\"\" + key]);\n }\n }\n printGridModel['enableHover'] = false;\n if ((gObj.childGrid || gObj.detailTemplate) && hierarchyPrintMode !== 'None') {\n printGridModel.expandedRows = getExpandedState(gObj, hierarchyPrintMode);\n }\n return printGridModel;\n}\n/**\n * @param {Object} copied - Defines the copied object\n * @param {Object} first - Defines the first object\n * @param {Object} second - Defines the second object\n * @param {boolean} deep - Defines the deep\n * @returns {Object} Returns the extended object\n * @hidden\n */\nexport function extendObjWithFn(copied, first, second, deep) {\n var res = copied || {};\n var len = arguments.length;\n if (deep) {\n len = len - 1;\n }\n for (var i = 1; i < len; i++) {\n // eslint-disable-next-line prefer-rest-params\n if (!arguments[parseInt(i.toString(), 10)]) {\n continue;\n }\n // eslint-disable-next-line prefer-rest-params\n var obj1 = arguments[parseInt(i.toString(), 10)];\n var keys = Object.keys(Object.getPrototypeOf(obj1)).length ?\n Object.keys(obj1).concat(getPrototypesOfObj(obj1)) : Object.keys(obj1);\n for (var i_1 = 0; i_1 < keys.length; i_1++) {\n var source = res[keys[parseInt(i_1.toString(), 10)]];\n var cpy = obj1[keys[parseInt(i_1.toString(), 10)]];\n var cln = void 0;\n if (deep && (isObject(cpy) || Array.isArray(cpy))) {\n if (isObject(cpy)) {\n cln = source ? source : {};\n res[keys[parseInt(i_1.toString(), 10)]] = baseExtend({}, cln, cpy, deep);\n }\n else {\n cln = source ? source : [];\n res[keys[parseInt(i_1.toString(), 10)]] = baseExtend([], cln, cpy, deep);\n }\n }\n else {\n res[keys[parseInt(i_1.toString(), 10)]] = cpy;\n }\n }\n }\n return res;\n}\n/**\n * @param {Object} obj - Defines the obj\n * @returns {string[]} Returns the string\n * @hidden\n */\nexport function getPrototypesOfObj(obj) {\n var keys = [];\n while (Object.getPrototypeOf(obj) && Object.keys(Object.getPrototypeOf(obj)).length) {\n keys = keys.concat(Object.keys(Object.getPrototypeOf(obj)));\n obj = Object.getPrototypeOf(obj);\n }\n return keys;\n}\n/**\n * @param {Column[]} column - Defines the Column\n * @returns {number} Returns the column Depth\n * @hidden\n */\nexport function measureColumnDepth(column) {\n var max = 0;\n for (var i = 0; i < (!isNullOrUndefined(column) ? column.length : 0); i++) {\n var depth = checkDepth(column[parseInt(i.toString(), 10)], 0);\n if (max < depth) {\n max = depth;\n }\n }\n return max + 1;\n}\n/**\n * @param {Column} col - Defines the Column\n * @param {number} index - Defines the index\n * @returns {number} Returns the depth\n * @hidden\n */\nexport function checkDepth(col, index) {\n var max = index;\n var indices = [];\n if (col.columns) {\n index++;\n for (var i = 0; i < col.columns.length; i++) {\n indices[parseInt(i.toString(), 10)] = checkDepth(col.columns[parseInt(i.toString(), 10)], index);\n }\n for (var j = 0; j < indices.length; j++) {\n if (max < indices[parseInt(j.toString(), 10)]) {\n max = indices[parseInt(j.toString(), 10)];\n }\n }\n index = max;\n }\n return index;\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @param {PredicateModel[]} filteredCols - Defines the PredicateModel\n * @returns {void}\n * @hidden\n */\nexport function refreshFilteredColsUid(gObj, filteredCols) {\n for (var i = 0; i < filteredCols.length; i++) {\n filteredCols[parseInt(i.toString(), 10)].uid = filteredCols[parseInt(i.toString(), 10)].isForeignKey ?\n getColumnByForeignKeyValue(filteredCols[parseInt(i.toString(), 10)].field, gObj.getForeignKeyColumns()).uid\n : gObj.enableColumnVirtualization ? getColumnModelByFieldName(gObj, filteredCols[parseInt(i.toString(), 10)].field).uid\n : gObj.getColumnByField(filteredCols[parseInt(i.toString(), 10)].field).uid;\n }\n}\n/** @hidden */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var Global;\n(function (Global) {\n // eslint-disable-next-line prefer-const\n Global.timer = null;\n})(Global || (Global = {}));\n/**\n * @param {Element} element - Defines the element\n * @returns {Object} Returns the transform values\n * @hidden\n */\nexport function getTransformValues(element) {\n var style = document.defaultView.getComputedStyle(element, null);\n var transformV = style.getPropertyValue('transform');\n var replacedTv = transformV.replace(/,/g, '');\n var translateX = parseFloat((replacedTv).split(' ')[4]);\n var translateY = parseFloat((replacedTv).split(' ')[5]);\n return { width: translateX, height: translateY };\n}\n/**\n * @param {Element} rootElement - Defines the root Element\n * @param {Element} element - Defines the element\n * @returns {void}\n * @hidden\n */\nexport function applyBiggerTheme(rootElement, element) {\n if (rootElement.classList.contains('e-bigger')) {\n element.classList.add('e-bigger');\n }\n}\n/**\n * @param {IGrid} gObj - Defines grid object\n * @returns {number} - Returns scroll width\n * @hidden\n */\nexport function getScrollWidth(gObj) {\n var scrollElem = gObj.getContent().firstElementChild;\n return scrollElem.scrollWidth > scrollElem.offsetWidth ? getScrollBarWidth() : 0;\n}\n/**\n * @param {IGrid} gObj - Defines grid object\n * @param {number} idx - Defines the index\n * @returns {number} Returns colSpan index\n * @hidden\n */\nexport function resetColspanGroupCaption(gObj, idx) {\n var colspan = 0;\n var cols = gObj.getColumns();\n var width = idx * 30;\n if (gObj.isRowDragable()) {\n colspan++;\n width += 30;\n }\n colspan += (gObj.groupSettings.columns.length - idx);\n width += (30 * (gObj.groupSettings.columns.length - idx));\n var gridWidth = (gObj.width === 'auto' ? gObj.element.offsetWidth : parseInt(gObj.width.toString(), 10)) -\n getScrollWidth(gObj);\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseInt(cols[parseInt(i.toString(), 10)].width.toString(), 10);\n colspan++;\n }\n if (width > gridWidth) {\n colspan--;\n break;\n }\n }\n return colspan;\n}\n/**\n * @param {HTMLElement} tr - Defines the tr Element\n * @param {IGrid} gObj - Defines grid object\n * @returns {void}\n * @hidden\n */\nexport function groupCaptionRowLeftRightPos(tr, gObj) {\n var width = 0;\n var idx = 0;\n var frozenCount = gObj.getVisibleFrozenLeftCount();\n for (var j = 0; j < tr.childNodes.length; j++) {\n var td = tr.childNodes[parseInt(j.toString(), 10)];\n if (frozenCount === idx) {\n break;\n }\n if (td.classList.contains('e-groupcaption') || td.classList.contains('e-summarycell')) {\n idx += parseInt(td.getAttribute('colspan'), 10);\n }\n td.classList.add('e-leftfreeze');\n if (td.classList.contains('e-groupcaption') && parseInt(td.getAttribute('colspan'), 10) === 1) {\n td.classList.add('e-freezeleftborder');\n }\n applyStickyLeftRightPosition(td, width, gObj.enableRtl, 'Left');\n if (td.classList.contains('e-indentcell') || td.classList.contains('e-recordplusexpand') ||\n td.classList.contains('e-recordpluscollapse')) {\n width += 30;\n }\n if (td.classList.contains('e-groupcaption')) {\n var colspan = parseInt(td.getAttribute('colspan'), 10);\n if (gObj.isRowDragable()) {\n colspan--;\n width += 30;\n }\n colspan = colspan - (gObj.groupSettings.columns.length - j);\n width = width + (30 * (gObj.groupSettings.columns.length - j));\n var cols = gObj.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if ((parseInt(td.getAttribute('colspan'), 10) > 1) &&\n (parseInt(cols[parseInt(i.toString(), 10)].width.toString(), 10)\n + width) > (parseInt(gObj.width.toString(), 10) - getScrollWidth(gObj))) {\n var newColspan = resetColspanGroupCaption(gObj, j);\n td.setAttribute('colspan', newColspan.toString());\n break;\n }\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseInt(cols[parseInt(i.toString(), 10)].width.toString(), 10);\n colspan--;\n }\n if (colspan === 0) {\n break;\n }\n }\n }\n if (td.classList.contains('e-summarycell')) {\n var uid_1 = td.getAttribute('e-mappinguid');\n var column = gObj.getColumnByUid(uid_1);\n width += parseInt(column.width.toString(), 10);\n }\n }\n}\n/**\n * @param {Element} row - Defines row element\n * @param {IGrid} gridObj - Defines grid object\n * @returns {boolean} Returns isRowEnteredInGrid\n * @hidden\n */\nexport function ensureLastRow(row, gridObj) {\n var content = gridObj.getContent().firstElementChild;\n return row && (row.getBoundingClientRect().top - content.getBoundingClientRect().top +\n gridObj.getRowHeight()) > content.offsetHeight;\n}\n/**\n * @param {Element} row - Defines row element\n * @param {number} rowTop - Defines row top number\n * @returns {boolean} Returns first row is true\n * @hidden\n */\nexport function ensureFirstRow(row, rowTop) {\n return row && row.getBoundingClientRect().top < rowTop;\n}\n/**\n * @param {number} index - Defines index\n * @param {IGrid} gObj - Defines grid object\n * @returns {boolean} Returns isRowEnteredInGrid\n * @hidden\n */\nexport function isRowEnteredInGrid(index, gObj) {\n var rowHeight = gObj.getRowHeight();\n var startIndex = gObj.getContent().firstElementChild.scrollTop / rowHeight;\n var endIndex = startIndex + (gObj.getContent().firstElementChild.offsetHeight / rowHeight);\n return index < endIndex && index > startIndex;\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @param {Object} data - Defines the query\n * @returns {number} Returns the edited data index\n * @hidden\n */\nexport function getEditedDataIndex(gObj, data) {\n var keyField = gObj.getPrimaryKeyFieldNames()[0];\n var dataIndex;\n gObj.getCurrentViewRecords().filter(function (e, index) {\n if (keyField.includes('.')) {\n var currentValue = getObject(keyField, e);\n var originalValue = getObject(keyField, data);\n if (currentValue === originalValue) {\n dataIndex = index;\n }\n }\n else {\n if (e[\"\" + keyField] === data[\"\" + keyField]) {\n dataIndex = index;\n }\n }\n });\n return dataIndex;\n}\n/**\n * @param {Object} args - Defines the argument\n * @param {Query} query - Defines the query\n * @returns {FilterStateObj} Returns the filter state object\n * @hidden\n */\nexport function eventPromise(args, query) {\n var state = getStateEventArgument(query);\n var def = new Deferred();\n state.dataSource = def.resolve;\n state.action = args;\n return { state: state, deffered: def };\n}\n/**\n * @param {Query} query - Defines the query\n * @returns {Object} Returns the state event argument\n * @hidden\n */\nexport function getStateEventArgument(query) {\n var adaptr = new UrlAdaptor();\n var dm = new DataManager({ url: '', adaptor: new UrlAdaptor });\n var state = adaptr.processQuery(dm, query);\n var data = JSON.parse(state.data);\n return data;\n}\n/**\n * @param {IGrid} gObj - Defines the Igrid\n * @returns {boolean} Returns the ispercentageWidth\n * @hidden\n */\nexport function ispercentageWidth(gObj) {\n var columns = gObj.getVisibleColumns();\n var percentageCol = 0;\n var undefinedWidthCol = 0;\n for (var i = 0; i < columns.length; i++) {\n if (isUndefined(columns[parseInt(i.toString(), 10)].width)) {\n undefinedWidthCol++;\n }\n else if (columns[parseInt(i.toString(), 10)].width.toString().indexOf('%') !== -1) {\n percentageCol++;\n }\n }\n return (gObj.width === 'auto' || typeof (gObj.width) === 'string' && gObj.width.indexOf('%') !== -1) &&\n !gObj.groupSettings.showGroupedColumn && gObj.groupSettings.columns.length\n && percentageCol && !undefinedWidthCol;\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @param {Row[]} rows - Defines the row\n * @param {HTMLTableRowElement[]} rowElms - Row elements\n * @param {number} index - Row index\n * @param {number} startRowIndex - Start Row Index\n * @returns {void}\n * @hidden\n */\nexport function resetRowIndex(gObj, rows, rowElms, index, startRowIndex) {\n var startIndex = index ? index : 0;\n for (var i = startRowIndex ? startRowIndex : 0; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)] && rows[parseInt(i.toString(), 10)].isDataRow) {\n rows[parseInt(i.toString(), 10)].index = startIndex;\n rows[parseInt(i.toString(), 10)].isAltRow = gObj.enableAltRow ? startIndex % 2 !== 0 : false;\n rowElms[parseInt(i.toString(), 10)].setAttribute(literals.dataRowIndex, startIndex.toString());\n rowElms[parseInt(i.toString(), 10)].setAttribute(literals.ariaRowIndex, (startIndex + 1).toString());\n if (rows[parseInt(i.toString(), 10)].isAltRow) {\n rowElms[parseInt(i.toString(), 10)].classList.add('e-altrow');\n }\n else {\n rowElms[parseInt(i.toString(), 10)].classList.remove('e-altrow');\n }\n for (var j = 0; j < rowElms[parseInt(i.toString(), 10)].cells.length; j++) {\n rowElms[parseInt(i.toString(), 10)].cells[parseInt(j.toString(), 10)].setAttribute('index', startIndex.toString());\n }\n startIndex++;\n }\n }\n if (!rows.length) {\n gObj.renderModule.emptyRow(true);\n }\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @returns {void}\n * @hidden\n */\nexport function resetCachedRowIndex(gObj) {\n var rowObjects = gObj.enableInfiniteScrolling && gObj.infiniteScrollSettings.enableCache ?\n gObj.getRowsObject() : gObj.vRows;\n var rowElements = gObj.getRows();\n for (var i = 0, startIndex = 0, k = 0; i < rowObjects.length; i++) {\n var rowObject = rowObjects[parseInt(i.toString(), 10)];\n if (rowObject.isDataRow) {\n rowObject.index = startIndex;\n rowObject.isAltRow = gObj.enableAltRow ? startIndex % 2 !== 0 : false;\n var rowElement = gObj.getRowElementByUID(rowObject.uid);\n if (!isNullOrUndefined(rowElement)) {\n rowElements[parseInt(k.toString(), 10)] = rowElement;\n rowElement.setAttribute(literals.dataRowIndex, startIndex.toString());\n rowElement.setAttribute(literals.ariaRowIndex, (startIndex + 1).toString());\n if (rowObject.isAltRow) {\n rowElement.classList.add('e-altrow');\n }\n else {\n rowElement.classList.remove('e-altrow');\n }\n for (var j = 0; j < rowElement.cells.length; j++) {\n rowElement.cells[parseInt(j.toString(), 10)].setAttribute('index', startIndex.toString());\n }\n k++;\n }\n startIndex++;\n }\n }\n if (gObj.enableInfiniteScrolling && gObj.infiniteScrollSettings.enableCache) {\n gObj.infiniteScrollModule.resetInfiniteCache(rowObjects);\n }\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @param {RowDropEventArgs} args - Defines the row drop event argument\n * @param {HTMLTableRowElement[]} tr - Row elements\n * @param {Row} dropRObj - dropped row object\n * @returns {void}\n * @hidden\n */\nexport function groupReorderRowObject(gObj, args, tr, dropRObj) {\n var rowObjects = gObj.enableVirtualization ? gObj.vRows : gObj.getRowsObject();\n var orderChangeRowObjects = [];\n var dropRowObject = dropRObj ? dropRObj :\n gObj.getRowObjectFromUID(args.target.closest('tr').getAttribute('data-uid'));\n var rowObjectDropIndex;\n for (var i = 0; i < args.rows.length; i++) {\n var orderChangeRowObject = gObj.getRowObjectFromUID(args.rows[parseInt(i.toString(), 10)].getAttribute('data-uid'));\n if (dropRowObject === orderChangeRowObject) {\n rowObjectDropIndex = rowObjects.indexOf(dropRowObject);\n }\n orderChangeRowObjects.push(rowObjects.splice(rowObjects.indexOf(orderChangeRowObject), 1)[0]);\n }\n if (isNullOrUndefined(rowObjectDropIndex)) {\n rowObjectDropIndex = rowObjects.indexOf(dropRowObject);\n if (args.fromIndex > args.dropIndex) {\n rowObjects.splice.apply(rowObjects, [rowObjectDropIndex, 0].concat(orderChangeRowObjects));\n }\n else {\n rowObjects.splice.apply(rowObjects, [rowObjectDropIndex + 1, 0].concat(orderChangeRowObjects));\n }\n }\n else {\n rowObjects.splice.apply(rowObjects, [rowObjectDropIndex, 0].concat(orderChangeRowObjects));\n }\n if (!gObj.enableVirtualization && !gObj.infiniteScrollSettings.enableCache) {\n var record = {};\n var currentViewData = gObj.getCurrentViewRecords();\n for (var i = 0, len = tr.length; i < len; i++) {\n var index = parseInt(tr[parseInt(i.toString(), 10)].getAttribute(literals.dataRowIndex), 10);\n record[parseInt(i.toString(), 10)] = currentViewData[parseInt(index.toString(), 10)];\n }\n var rows = gObj.getRows();\n for (var i = 0, len = tr.length; i < len; i++) {\n rows[parseInt(i.toString(), 10)] = tr[parseInt(i.toString(), 10)];\n currentViewData[parseInt(i.toString(), 10)] = record[parseInt(i.toString(), 10)];\n }\n }\n if (gObj.enableInfiniteScrolling && gObj.infiniteScrollSettings.enableCache) {\n gObj.infiniteScrollModule.resetInfiniteCache(rowObjects);\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @param {Object} changes - Defines the changes\n * @param {string} type - Defines the type\n * @param {string} keyField - Defines the keyfield\n * @returns {void}\n * @hidden\n */\nexport function compareChanges(gObj, changes, type, keyField) {\n var newArray = gObj.dataToBeUpdated[\"\" + type].concat(changes[\"\" + type]).reduce(function (r, o) {\n r[o[\"\" + keyField]] = r[o[\"\" + keyField]] === undefined ? o : Object.assign(r[o[\"\" + keyField]], o);\n return r;\n }, {});\n gObj.dataToBeUpdated[\"\" + type] = Object.keys(newArray).map(function (k) { return newArray[\"\" + k]; });\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @returns {void}\n * @hidden\n */\nexport function setRowElements(gObj) {\n (gObj).contentModule.rowElements =\n [].slice.call(gObj.element.querySelectorAll('.e-row:not(.e-addedrow):not(.e-cloneproperties .e-row)'));\n}\n/**\n * @param {Element} row - Defines the row\n * @param {number} start - Defines the start index\n * @param {number} end - Defines the end index\n * @returns {void}\n * @hidden\n */\nexport function sliceElements(row, start, end) {\n var cells = row.children;\n var len = cells.length;\n var k = 0;\n for (var i = 0; i < len; i++, k++) {\n if (i >= start && i < end) {\n continue;\n }\n row.removeChild(row.children[parseInt(k.toString(), 10)]);\n k--;\n }\n}\n/**\n * @param {Column} column - Defines the column\n * @param {string} uid - Defines the uid\n * @returns {boolean} Returns is child column\n * @hidden\n */\nexport function isChildColumn(column, uid) {\n var uids = [];\n uids.push(column.uid);\n pushuid(column, uids);\n if (uids.indexOf(uid) > -1) {\n return true;\n }\n else {\n return false;\n }\n}\n/**\n * @param {Column} column - Defines the column\n * @param {string[]} uids - Defines the uid\n * @returns {void}\n * @hidden\n */\nexport function pushuid(column, uids) {\n for (var i = 0; i < column.columns.length; i++) {\n if (column.columns[parseInt(i.toString(), 10)].uid) {\n uids.push(column.columns[parseInt(i.toString(), 10)].uid);\n }\n if (column.columns[parseInt(i.toString(), 10)].columns &&\n column.columns[parseInt(i.toString(), 10)].columns.length) {\n pushuid(column.columns[parseInt(i.toString(), 10)], uids);\n }\n }\n}\n/**\n * @param {Column} column - Defines the column\n * @returns {string} Returns the direction\n * @hidden\n */\nexport function frozenDirection(column) {\n if (column.columns[0].freeze || column.columns[0].isFrozen) {\n if (column.columns[0].freeze === 'Left' || column.columns[0].isFrozen) {\n return 'Left';\n }\n else if (column.columns[0].freeze === 'Right') {\n return 'Right';\n }\n else if (column.columns[0].freeze === 'Fixed') {\n return 'Fixed';\n }\n else {\n return 'None';\n }\n }\n else {\n if (column.columns[0].columns && column.columns[0].columns.length) {\n return frozenDirection(column.columns[0]);\n }\n else {\n return 'None';\n }\n }\n}\n/**\n * @param {Element} row - Defines the row\n * @returns {void}\n * @hidden\n */\nexport function addFixedColumnBorder(row) {\n if (row.querySelector('.e-fixedfreeze')) {\n var cells = [].slice.call(row.querySelectorAll('.e-filterbarcell:not(.e-hide),.e-summarycell:not(.e-hide),.e-headercell:not(.e-hide),.e-rowcell:not(.e-hide)'));\n for (var j = 0; j < cells.length; j++) {\n if (cells[parseInt(j.toString(), 10)].classList.contains('e-fixedfreeze') && (!(cells[j - 1]) ||\n (cells[j - 1] && !cells[j - 1].classList.contains('e-fixedfreeze')))) {\n cells[parseInt(j.toString(), 10)].classList.add('e-freezeleftborder');\n }\n if (cells[parseInt(j.toString(), 10)].classList.contains('e-fixedfreeze') && (!(cells[j + 1]) ||\n (cells[j + 1] && !cells[j + 1].classList.contains('e-fixedfreeze')))) {\n cells[parseInt(j.toString(), 10)].classList.add('e-freezerightborder');\n }\n }\n }\n}\n/**\n * @param {HTMLElement} node - Defines the row\n * @param {number} width - Defines the width\n * @param {boolean} isRtl - Boolean property\n * @param {string} position - Defines the position\n * @returns {void}\n * @hidden\n */\nexport function applyStickyLeftRightPosition(node, width, isRtl, position) {\n if (position === 'Left') {\n if (isRtl) {\n node.style.right = width + 'px';\n }\n else {\n node.style.left = width + 'px';\n }\n }\n if (position === 'Right') {\n if (isRtl) {\n node.style.left = width + 'px';\n }\n else {\n node.style.right = width + 'px';\n }\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid\n * @param {Column} column - Defines the column\n * @param {Element} node - Defines the Element\n * @param {number} colSpan - Defines the colSpan value\n * @returns {void}\n * @hidden\n */\nexport function resetColandRowSpanStickyPosition(gObj, column, node, colSpan) {\n var columns = gObj.getColumns();\n var index = column.index;\n if (column.freeze === 'Left' && column.border !== 'Left') {\n var idx = index + (colSpan - 1);\n while (columns[parseInt(idx.toString(), 10)].visible === false) {\n idx++;\n }\n if (columns[parseInt(idx.toString(), 10)].border === 'Left') {\n node.classList.add('e-freezeleftborder');\n }\n }\n else if (column.freeze === 'Right' || column.freeze === 'Fixed') {\n var width = 0;\n for (var j = index + 1; j < index + colSpan; j++) {\n if (j === columns.length) {\n break;\n }\n if (columns[parseInt(j.toString(), 10)].visible) {\n width += parseInt(columns[parseInt(j.toString(), 10)].width.toString(), 10);\n }\n else {\n colSpan++;\n }\n }\n if (gObj.enableRtl) {\n node.style.left = parseInt(node.style.left, 10) - width + 'px';\n }\n else {\n node.style.right = parseInt(node.style.right, 10) - width + 'px';\n }\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid\n * @param {number} rowIndex - Defines the row index\n * @param {number} colIndex - Defines the colum index\n * @returns {void}\n * @hidden\n */\nexport function getCellFromRow(gObj, rowIndex, colIndex) {\n var row = (gObj.getRowByIndex(rowIndex));\n for (var i = 0; i < row.cells.length; i++) {\n if (row.cells[parseInt(i.toString(), 10)].getAttribute('data-colindex') === colIndex.toString()) {\n return row.cells[parseInt(i.toString(), 10)];\n }\n }\n return null;\n}\n/**\n * @param {IGrid} gObj - Defines the grid\n * @param {Column} column - Defines the column\n * @param {Element} node - Defines the Element\n * @returns {void}\n * @hidden\n */\nexport function addStickyColumnPosition(gObj, column, node) {\n if (column.freeze === 'Left' || column.isFrozen) {\n node.classList.add('e-leftfreeze');\n if (column.border === 'Left') {\n node.classList.add('e-freezeleftborder');\n }\n if (column.index === 0) {\n applyStickyLeftRightPosition(node, (gObj.getIndentCount() * 30), gObj.enableRtl, 'Left');\n if (gObj.enableColumnVirtualization) {\n column.valueX = (gObj.getIndentCount() * 30);\n }\n }\n else {\n var cols = gObj.getColumns();\n var width = gObj.getIndentCount() * 30;\n for (var i = 0; i < cols.length; i++) {\n if (column.uid === cols[parseInt(i.toString(), 10)].uid) {\n break;\n }\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n applyStickyLeftRightPosition(node, width, gObj.enableRtl, 'Left');\n if (gObj.enableColumnVirtualization) {\n column.valueX = width;\n }\n }\n }\n else if (column.freeze === 'Right') {\n node.classList.add('e-rightfreeze');\n var cols = gObj.getColumns();\n if (column.border === 'Right') {\n node.classList.add('e-freezerightborder');\n }\n if (column.index === cols[cols.length - 1].index) {\n var width = gObj.getFrozenMode() === 'Right' && gObj.isRowDragable() ? 30 : 0;\n applyStickyLeftRightPosition(node, width, gObj.enableRtl, 'Right');\n if (gObj.enableColumnVirtualization) {\n column.valueX = width;\n }\n }\n else {\n var width = gObj.getFrozenMode() === 'Right' && gObj.isRowDragable() ? 30 : 0;\n for (var i = cols.length - 1; i >= 0; i--) {\n if (column.uid === cols[parseInt(i.toString(), 10)].uid) {\n break;\n }\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n applyStickyLeftRightPosition(node, width, gObj.enableRtl, 'Right');\n if (gObj.enableColumnVirtualization) {\n column.valueX = width;\n }\n }\n }\n else if (column.freeze === 'Fixed') {\n node.classList.add('e-fixedfreeze');\n var cols = gObj.getColumns();\n var width = 0;\n if (gObj.getVisibleFrozenLeftCount()) {\n width = gObj.getIndentCount() * 30;\n }\n else if (gObj.getFrozenMode() === 'Right') {\n width = gObj.groupSettings.columns.length * 30;\n }\n for (var i = 0; i < cols.length; i++) {\n if (column.uid === cols[parseInt(i.toString(), 10)].uid) {\n break;\n }\n if ((cols[parseInt(i.toString(), 10)].freeze === 'Left' || cols[parseInt(i.toString(), 10)].isFrozen) ||\n cols[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n }\n applyStickyLeftRightPosition(node, (width - 1), gObj.enableRtl, 'Left');\n width = gObj.getFrozenMode() === 'Right' && gObj.isRowDragable() ? 30 : 0;\n for (var i = cols.length - 1; i >= 0; i--) {\n if (column.uid === cols[parseInt(i.toString(), 10)].uid) {\n break;\n }\n if (cols[parseInt(i.toString(), 10)].freeze === 'Right' || cols[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n }\n applyStickyLeftRightPosition(node, (width - 1), gObj.enableRtl, 'Right');\n }\n else {\n node.classList.add('e-unfreeze');\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid Object\n * @param {Column} col - Defines the column\n * @param {number} rowIndex - Defines the rowindex\n * @returns {Element} Returns the element\n * @hidden\n */\nexport function getCellsByTableName(gObj, col, rowIndex) {\n return [].slice.call(gObj.getDataRows()[parseInt(rowIndex.toString(), 10)].getElementsByClassName(literals.rowCell));\n}\n/**\n * @param {IGrid} gObj - Defines the column\n * @param {Column} col - Defines the index\n * @param {number} rowIndex - Defines the rules\n * @param {number} index - Defines the movable column rules\n * @returns {Element} Returns the Element\n * @hidden\n */\nexport function getCellByColAndRowIndex(gObj, col, rowIndex, index) {\n return getCellsByTableName(gObj, col, rowIndex)[parseInt(index.toString(), 10)];\n}\n/**\n * @param {Column} col - Defines the column\n * @param {number} index - Defines the index\n * @param {Object} rules - Defines the rules\n * @param {Object} mRules - Defines the movable column rules\n * @param {Object} frRules - Defines the Frozen rules\n * @param {number} len - Defines the length\n * @param {boolean} isCustom - Defines custom form validation\n * @returns {void}\n * @hidden\n */\nexport function setValidationRuels(col, index, rules, mRules, frRules, len, isCustom) {\n if (isCustom) {\n rules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else {\n if (col.getFreezeTableName() === literals.frozenLeft\n || (!index && col.getFreezeTableName() === literals.frozenRight) || len === 1) {\n rules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else if (col.getFreezeTableName() === 'movable' || !col.getFreezeTableName()) {\n mRules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else if (col.getFreezeTableName() === literals.frozenRight) {\n frRules[getComplexFieldID(col.field)] = col.validationRules;\n }\n }\n}\n/**\n * @param {string} numberFormat - Format\n * @param {string} type - Value type\n * @param {boolean} isExcel - Boolean property\n * @param {string} currencyCode - Specifies the currency code to be used for formatting.\n * @returns {string} returns formated value\n * @hidden\n */\nexport function getNumberFormat(numberFormat, type, isExcel, currencyCode) {\n var format;\n var intl = new Internationalization();\n if (type === 'number') {\n try {\n format = intl.getNumberPattern({ format: numberFormat, currency: currencyCode, useGrouping: true }, true);\n }\n catch (error) {\n format = numberFormat;\n }\n }\n else if (type === 'date' || type === 'time' || type === 'datetime') {\n try {\n format = intl.getDatePattern({ skeleton: numberFormat, type: type }, isExcel);\n if (isNullOrUndefined(format)) {\n // eslint-disable-next-line\n throw 'error';\n }\n }\n catch (error) {\n try {\n format = intl.getDatePattern({ format: numberFormat, type: type }, isExcel);\n }\n catch (error) {\n format = numberFormat;\n }\n }\n }\n else {\n format = numberFormat;\n }\n if (type !== 'number') {\n var patternRegex = /G|H|c|'| a|yy|y|EEEE|E/g;\n var mtch_1 = { 'G': '', 'H': 'h', 'c': 'd', '\\'': '\"', ' a': ' AM/PM', 'yy': 'yy', 'y': 'yyyy', 'EEEE': 'dddd', 'E': 'ddd' };\n format = format.replace(patternRegex, function (pattern) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return mtch_1[\"\" + pattern];\n });\n }\n return format;\n}\n/**\n * @param {IGrid} gObj - Grid instance\n * @returns {void}\n * @hidden\n */\nexport function addBiggerDialog(gObj) {\n if (gObj.enableAdaptiveUI) {\n var dialogs = document.getElementsByClassName('e-responsive-dialog');\n for (var i = 0; i < dialogs.length; i++) {\n dialogs[parseInt(i.toString(), 10)].classList.add('e-bigger');\n }\n }\n}\n/**\n * @param {string} value - specifies the trr\n * @param {Object} mapObject - specifies the idx\n * @returns {Object | string} returns object or string\n * @hidden\n */\nexport function performComplexDataOperation(value, mapObject) {\n var returnObj;\n var length = value.split('.').length;\n var splits = value.split('.');\n var duplicateMap = mapObject;\n for (var i = 0; i < length; i++) {\n returnObj = duplicateMap[splits[parseInt(i.toString(), 10)]];\n duplicateMap = returnObj;\n }\n return returnObj;\n}\n/**\n * @param {Object} tr - specifies the trr\n * @param {number} idx - specifies the idx\n * @param {string} displayVal - specifies the displayval\n * @param {Row} rows - specifies the rows\n * @param {IGrid} parent - Grid instance\n * @param {boolean} isContent - check for content renderer\n * @returns {void}\n * @hidden\n */\nexport function setDisplayValue(tr, idx, displayVal, rows, parent, isContent) {\n var trs = Object.keys(tr);\n var actualIndex = idx;\n for (var i = 0; i < trs.length; i++) {\n var td = tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)];\n if (parent && !parent.isFrozenGrid() && !parent.isRowDragable()) {\n td = (!isNullOrUndefined(td) && (parseInt(td.getAttribute('data-colindex'), 10) === idx ||\n (parentsUntil(td, 'e-addedrow') && td.parentElement.childNodes[parseInt(idx.toString(), 10)] === td)))\n ? td : tr[parseInt(i.toString(), 10)].querySelector(\"td[data-colindex=\\\"\" + idx + \"\\\"]\");\n if (isNullOrUndefined(td)) {\n continue;\n }\n else {\n idx = (parent.getContentTable().querySelector('.e-detailrowcollapse, .e-detailrowexpand')) ?\n (td.cellIndex - 1) : td.cellIndex;\n }\n }\n if (tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell').length && td) {\n setStyleAttribute(tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)], { 'display': displayVal });\n if (tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)].classList.contains('e-hide')) {\n removeClass([tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)]], ['e-hide']);\n }\n if ((isContent && parent.isRowDragable()) || (parent && parent.isDetail())) {\n var index = idx + 1;\n rows[trs[parseInt(i.toString(), 10)]].cells[parseInt(index.toString(), 10)].visible = displayVal === '' ? true : false;\n }\n else {\n if (!isNullOrUndefined(rows[trs[parseInt(i.toString(), 10)]])) {\n rows[trs[parseInt(i.toString(), 10)]].cells[parseInt(idx.toString(), 10)].visible = displayVal === '' ? true : false;\n if (rows[trs[parseInt(i.toString(), 10)]].cells[parseInt(idx.toString(), 10)].visible === false) {\n tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)].classList.add('e-hide');\n }\n }\n }\n idx = actualIndex;\n }\n }\n}\n// eslint-disable-next-line\n/** @hidden */\nexport function addRemoveEventListener(parent, evt, isOn, module) {\n for (var _i = 0, evt_1 = evt; _i < evt_1.length; _i++) {\n var inst = evt_1[_i];\n if (isOn) {\n parent.on(inst.event, inst.handler, module);\n }\n else {\n parent.off(inst.event, inst.handler);\n }\n }\n}\n// eslint-disable-next-line\n/** @hidden */\nexport function createEditElement(parent, column, classNames, attr) {\n var complexFieldName = getComplexFieldID(column.field);\n attr = Object.assign(attr, {\n id: parent.element.id + complexFieldName,\n name: complexFieldName, 'e-mappinguid': column.uid\n });\n return parent.createElement('input', {\n className: classNames, attrs: attr\n });\n}\n/**\n * @param {IGrid} gObj - Grid instance\n * @param {string} uid - Defines column's uid\n * @returns {Column} returns column model\n * @hidden\n */\nexport function getColumnModelByUid(gObj, uid) {\n var column;\n for (var _i = 0, _a = (gObj.columnModel); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.uid === uid) {\n column = col;\n break;\n }\n }\n return column;\n}\n/**\n * @param {IGrid} gObj - Grid instance\n * @param {string} field - Defines column's uid\n * @returns {Column} returns column model\n * @hidden\n */\nexport function getColumnModelByFieldName(gObj, field) {\n var column;\n if (!gObj.columnModel) {\n gObj.getColumns();\n }\n for (var _i = 0, _a = (gObj.columnModel); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.field === field) {\n column = col;\n break;\n }\n }\n return column;\n}\n/**\n * @param {string} id - Defines component id\n * @param {string[]} evts - Defines events\n * @param {object} handlers - Defines event handlers\n * @param {any} instance - Defines class instance\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function registerEventHandlers(id, evts, handlers, instance) {\n instance.eventHandlers[\"\" + id] = {};\n for (var i = 0; i < evts.length; i++) {\n instance.eventHandlers[\"\" + id][evts[parseInt(i.toString(), 10)]] = handlers[evts[parseInt(i.toString(), 10)]];\n }\n}\n/**\n * @param {any} component - Defines component instance\n * @param {string[]} evts - Defines events\n * @param {any} instance - Defines class instance\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nexport function removeEventHandlers(component, evts, instance) {\n for (var i = 0; i < evts.length; i++) {\n if (component.isDestroyed) {\n break;\n }\n component.removeEventListener(evts[parseInt(i.toString(), 10)], instance.eventHandlers[component.element.id][evts[parseInt(i.toString(), 10)]]);\n }\n}\n/**\n * @param {IGrid | IXLFilter} parent - Defines parent instance\n * @param {string[]} templates - Defines the templates name which are needs to clear\n * @returns {void}\n * @hidden\n */\nexport function clearReactVueTemplates(parent, templates) {\n parent.destroyTemplate(templates);\n if (parent.isReact) {\n parent.renderTemplates();\n }\n}\n/**\n *\n * @param { Element } row - Defines row element\n * @returns { number } row index\n */\nexport function getRowIndexFromElement(row) {\n return parseInt(row.getAttribute(literals.dataRowIndex), 10);\n}\n/**\n *\n * @param { IGrid } grid - Defines grid instance\n * @returns { IGrid } returns parent grid instance\n */\nexport function getParentIns(grid) {\n return grid.parentDetails && grid.parentDetails.parentInstObj ?\n getParentIns(grid.parentDetails.parentInstObj) : grid;\n}\n/**\n *\n * @param { string[] } fields - Defines grouped fields\n * @param { values } values - Defines caption keys\n * @param { any } instance - Defines dynamic class instance\n * @returns { Predicate } returns filter predicate\n */\n// eslint-disable-next-line\nexport function generateExpandPredicates(fields, values, instance) {\n var filterCols = [];\n for (var i = 0; i < fields.length; i++) {\n var column = instance.parent.getColumnByField(fields[parseInt(i.toString(), 10)]);\n var value = values[parseInt(i.toString(), 10)] === 'null' ? null : values[parseInt(i.toString(), 10)];\n var pred = {\n field: fields[parseInt(i.toString(), 10)], predicate: 'or', uid: column.uid, operator: 'equal', type: column.type,\n matchCase: instance.allowCaseSensitive, ignoreAccent: instance.parent.filterSettings.ignoreAccent\n };\n if (value === '' || isNullOrUndefined(value)) {\n filterCols = filterCols.concat(CheckBoxFilterBase.generateNullValuePredicates(pred));\n }\n else {\n filterCols.push(extend({}, { value: value }, pred));\n }\n }\n return CheckBoxFilterBase.getPredicate(filterCols);\n}\n/**\n *\n * @param { Predicate } pred - Defines filter predicate\n * @returns { Predicate[] } Returns formed predicate\n */\nexport function getPredicates(pred) {\n var predicateList = [];\n for (var _i = 0, _a = Object.keys(pred); _i < _a.length; _i++) {\n var prop = _a[_i];\n predicateList.push(pred[\"\" + prop]);\n }\n return predicateList;\n}\n/**\n *\n * @param { number } index - Defines group caption indent\n * @param { Row[] } rowsObject - Defines rows object\n * @returns { { fields: string[], keys: string[] } } Returns grouped keys and values\n */\nexport function getGroupKeysAndFields(index, rowsObject) {\n var fields = [];\n var keys = [];\n for (var i = index; i >= 0; i--) {\n if (rowsObject[parseInt(i.toString(), 10)].isCaptionRow\n && fields.indexOf(rowsObject[parseInt(i.toString(), 10)].data.field) === -1\n && (rowsObject[parseInt(i.toString(), 10)].indent < rowsObject[parseInt(index.toString(), 10)].indent || i === index)) {\n fields.push(rowsObject[parseInt(i.toString(), 10)].data.field);\n keys.push(rowsObject[parseInt(i.toString(), 10)].data.key);\n if (rowsObject[parseInt(i.toString(), 10)].indent === 0) {\n break;\n }\n }\n }\n return { fields: fields, keys: keys };\n}\n// eslint-disable-next-line\n/**\n *\n * @param { number[][] } checkActiveMatrix - Defines matrix to check\n * @param { number[] } checkCellIndex - Defines index to check\n * @param { boolean } next - Defines select next or previous index\n * @returns { number[] } - Returns next active current index\n */\nexport function findCellIndex(checkActiveMatrix, checkCellIndex, next) {\n var activeMatrix = checkActiveMatrix;\n var cellIndex = checkCellIndex;\n var currentCellIndexPass = false;\n if (next) {\n for (var i = cellIndex[0]; i < activeMatrix.length; i++) {\n var rowCell = activeMatrix[parseInt(i.toString(), 10)];\n for (var j = 0; j < rowCell.length; j++) {\n if (currentCellIndexPass && activeMatrix[parseInt(i.toString(), 10)][parseInt(j.toString(), 10)] === 1) {\n cellIndex = [i, j];\n return cellIndex;\n }\n if (!currentCellIndexPass && cellIndex.toString() === [i, j].toString()) {\n currentCellIndexPass = true;\n }\n }\n }\n }\n else {\n for (var i = cellIndex[0]; i >= 0; i--) {\n var rowCell = activeMatrix[parseInt(i.toString(), 10)];\n for (var j = rowCell.length - 1; j >= 0; j--) {\n if (currentCellIndexPass && activeMatrix[parseInt(i.toString(), 10)][parseInt(j.toString(), 10)] === 1) {\n cellIndex = [i, j];\n return cellIndex;\n }\n if (!currentCellIndexPass && cellIndex.toString() === [i, j].toString()) {\n currentCellIndexPass = true;\n }\n }\n }\n }\n return cellIndex;\n}\n/**\n *\n * @param { string } string - Defines string need to capitalized first letter\n * @returns { string } - Returns capitalized first letter string\n */\nexport function capitalizeFirstLetter(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n/**\n *\n * @param { IGrid } grid - Defines parent instance\n * @returns { boolean } - Returns is virtual\n */\nexport function checkIsVirtual(grid) {\n return !(isGroupAdaptive(grid) || grid.groupSettings.enableLazyLoading\n || (!grid.enableVirtualization && grid.enableColumnVirtualization));\n}\n/**\n *\n * @param { number[] } blockes - Defines block indexes\n * @returns { number[] } - Returns is visible page\n */\nexport function getVisiblePage(blockes) {\n var visiblePage = [];\n for (var i = 0; i < blockes.length; i++) {\n var page = Math.ceil(blockes[parseInt(i.toString(), 10)] / 2);\n if (visiblePage.indexOf(page) === -1) {\n visiblePage.push(page);\n }\n }\n return visiblePage;\n}\n","/**\n * Defines types of Cell\n *\n * @hidden\n */\nexport var CellType;\n(function (CellType) {\n /** Defines CellType as Data */\n CellType[CellType[\"Data\"] = 0] = \"Data\";\n /** Defines CellType as Header */\n CellType[CellType[\"Header\"] = 1] = \"Header\";\n /** Defines CellType as Summary */\n CellType[CellType[\"Summary\"] = 2] = \"Summary\";\n /** Defines CellType as GroupSummary */\n CellType[CellType[\"GroupSummary\"] = 3] = \"GroupSummary\";\n /** Defines CellType as CaptionSummary */\n CellType[CellType[\"CaptionSummary\"] = 4] = \"CaptionSummary\";\n /** Defines CellType as Filter */\n CellType[CellType[\"Filter\"] = 5] = \"Filter\";\n /** Defines CellType as Indent */\n CellType[CellType[\"Indent\"] = 6] = \"Indent\";\n /** Defines CellType as GroupCaption */\n CellType[CellType[\"GroupCaption\"] = 7] = \"GroupCaption\";\n /** Defines CellType as GroupCaptionEmpty */\n CellType[CellType[\"GroupCaptionEmpty\"] = 8] = \"GroupCaptionEmpty\";\n /** Defines CellType as Expand */\n CellType[CellType[\"Expand\"] = 9] = \"Expand\";\n /** Defines CellType as HeaderIndent */\n CellType[CellType[\"HeaderIndent\"] = 10] = \"HeaderIndent\";\n /** Defines CellType as StackedHeader */\n CellType[CellType[\"StackedHeader\"] = 11] = \"StackedHeader\";\n /** Defines CellType as DetailHeader */\n CellType[CellType[\"DetailHeader\"] = 12] = \"DetailHeader\";\n /** Defines CellType as DetailExpand */\n CellType[CellType[\"DetailExpand\"] = 13] = \"DetailExpand\";\n /** Defines CellType as CommandColumn */\n CellType[CellType[\"CommandColumn\"] = 14] = \"CommandColumn\";\n /** Defines CellType as DetailFooterIntent */\n CellType[CellType[\"DetailFooterIntent\"] = 15] = \"DetailFooterIntent\";\n /** Defines CellType as RowDrag */\n CellType[CellType[\"RowDragIcon\"] = 16] = \"RowDragIcon\";\n /** Defines CellType as RowDragHeader */\n CellType[CellType[\"RowDragHIcon\"] = 17] = \"RowDragHIcon\";\n})(CellType || (CellType = {}));\n/**\n * Defines types of Render\n *\n * @hidden\n */\nexport var RenderType;\n(function (RenderType) {\n /** Defines RenderType as Header */\n RenderType[RenderType[\"Header\"] = 0] = \"Header\";\n /** Defines RenderType as Content */\n RenderType[RenderType[\"Content\"] = 1] = \"Content\";\n /** Defines RenderType as Summary */\n RenderType[RenderType[\"Summary\"] = 2] = \"Summary\";\n})(RenderType || (RenderType = {}));\n/**\n * Defines Predefined toolbar items.\n *\n * @hidden\n */\nexport var ToolbarItem;\n(function (ToolbarItem) {\n ToolbarItem[ToolbarItem[\"Add\"] = 0] = \"Add\";\n ToolbarItem[ToolbarItem[\"Edit\"] = 1] = \"Edit\";\n ToolbarItem[ToolbarItem[\"Update\"] = 2] = \"Update\";\n ToolbarItem[ToolbarItem[\"Delete\"] = 3] = \"Delete\";\n ToolbarItem[ToolbarItem[\"Cancel\"] = 4] = \"Cancel\";\n ToolbarItem[ToolbarItem[\"Print\"] = 5] = \"Print\";\n ToolbarItem[ToolbarItem[\"Search\"] = 6] = \"Search\";\n ToolbarItem[ToolbarItem[\"ColumnChooser\"] = 7] = \"ColumnChooser\";\n ToolbarItem[ToolbarItem[\"PdfExport\"] = 8] = \"PdfExport\";\n ToolbarItem[ToolbarItem[\"ExcelExport\"] = 9] = \"ExcelExport\";\n ToolbarItem[ToolbarItem[\"CsvExport\"] = 10] = \"CsvExport\";\n ToolbarItem[ToolbarItem[\"WordExport\"] = 11] = \"WordExport\";\n})(ToolbarItem || (ToolbarItem = {}));\n/**\n * Defines types of responsive dialogs\n *\n * @hidden\n */\nexport var ResponsiveDialogAction;\n(function (ResponsiveDialogAction) {\n /** Defines dialog type as Edit */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isEdit\"] = 0] = \"isEdit\";\n /** Defines dialog type as Add */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isAdd\"] = 1] = \"isAdd\";\n /** Defines dialog type as Sort */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isSort\"] = 2] = \"isSort\";\n /** Defines dialog type as Filter */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isFilter\"] = 3] = \"isFilter\";\n /** Defines dialog type as ColMenu */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isColMenu\"] = 4] = \"isColMenu\";\n /** Defines dialog type as ColumChooser */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isColumnChooser\"] = 5] = \"isColumnChooser\";\n})(ResponsiveDialogAction || (ResponsiveDialogAction = {}));\n/**\n * Defines responsive toolbar actions\n *\n * @hidden\n */\nexport var ResponsiveToolbarAction;\n(function (ResponsiveToolbarAction) {\n /** Defines initial responsive toolbar buttons */\n ResponsiveToolbarAction[ResponsiveToolbarAction[\"isInitial\"] = 0] = \"isInitial\";\n /** Defines responsive toolbar search */\n ResponsiveToolbarAction[ResponsiveToolbarAction[\"isSearch\"] = 1] = \"isSearch\";\n})(ResponsiveToolbarAction || (ResponsiveToolbarAction = {}));\n","import { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { Query, DataManager, Predicate, Deferred, UrlAdaptor, RemoteSaveAdaptor } from '@syncfusion/ej2-data';\nimport { setFormatter, isGroupAdaptive, getColumnByForeignKeyValue, refreshFilteredColsUid } from '../base/util';\nimport * as events from '../base/constant';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\n/**\n * Grid data module is used to generate query and data source.\n *\n * @hidden\n */\nvar Data = /** @class */ (function () {\n /**\n * Constructor for data module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the service locator\n * @hidden\n */\n function Data(parent, serviceLocator) {\n this.dataState = { isPending: false, resolver: null, group: [] };\n this.foreignKeyDataState = { isPending: false, resolver: null };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.initDataManager();\n if (this.parent.isDestroyed || this.getModuleName() === 'foreignKey') {\n return;\n }\n this.parent.on(events.rowsAdded, this.addRows, this);\n this.parent.on(events.rowPositionChanged, this.reorderRows, this);\n this.parent.on(events.rowsRemoved, this.removeRows, this);\n this.parent.on(events.dataSourceModified, this.initDataManager, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.updateData, this.crudActions, this);\n this.parent.on(events.addDeleteAction, this.getData, this);\n this.parent.on(events.autoCol, this.refreshFilteredCols, this);\n this.parent.on(events.columnsPrepared, this.refreshFilteredCols, this);\n }\n Data.prototype.reorderRows = function (e) {\n if (this.parent.getDataModule().isRemote()) {\n this.parent.getCurrentViewRecords().splice(e.toIndex, 0, this.parent.getCurrentViewRecords().splice(e.fromIndex, 1)[0]);\n }\n else {\n this.dataManager.dataSource.json.splice(e.toIndex, 0, this.dataManager.dataSource.json.splice(e.fromIndex, 1)[0]);\n }\n };\n Data.prototype.getModuleName = function () {\n return 'data';\n };\n /**\n * The function used to initialize dataManager and external query\n *\n * @returns {void}\n */\n Data.prototype.initDataManager = function () {\n var gObj = this.parent;\n this.dataManager = gObj.dataSource instanceof DataManager ? gObj.dataSource :\n (isNullOrUndefined(gObj.dataSource) ? new DataManager() : new DataManager(gObj.dataSource));\n if (gObj.isAngular && !(gObj.query instanceof Query)) {\n gObj.setProperties({ query: new Query() }, true);\n }\n else {\n this.isQueryInvokedFromData = true;\n if (!(gObj.query instanceof Query)) {\n gObj.query = new Query();\n }\n }\n };\n /**\n * The function is used to generate updated Query from Grid model.\n *\n * @param {boolean} skipPage - specifies the boolean to skip the page\n * @param {boolean} isAutoCompleteCall - specifies for auto complete call\n * @returns {Query} returns the Query\n * @hidden\n */\n Data.prototype.generateQuery = function (skipPage, isAutoCompleteCall) {\n var gObj = this.parent;\n var query = !isNullOrUndefined(gObj.getQuery()) ? gObj.getQuery().clone() : new Query();\n if (this.parent.columnQueryMode === 'ExcludeHidden') {\n query.select(this.parent.getColumns().filter(function (column) { return !(column.isPrimaryKey !== true && column.visible === false || column.field === undefined); }).map(function (column) { return column.field; }));\n }\n else if (this.parent.columnQueryMode === 'Schema') {\n var selectQueryFields = [];\n var columns = this.parent.columns;\n for (var i = 0; i < columns.length; i++) {\n selectQueryFields.push(columns[parseInt(i.toString(), 10)].field);\n }\n query.select(selectQueryFields);\n }\n this.filterQuery(query);\n this.searchQuery(query);\n this.aggregateQuery(query);\n this.sortQuery(query);\n if (isGroupAdaptive(this.parent)) {\n this.virtualGroupPageQuery(query);\n }\n else {\n this.pageQuery(query, skipPage);\n }\n if (isNullOrUndefined(isAutoCompleteCall) || !isAutoCompleteCall) {\n this.groupQuery(query);\n }\n return query;\n };\n /**\n * @param {Query} query - specifies the query\n * @returns {Query} - returns the query\n * @hidden\n */\n Data.prototype.aggregateQuery = function (query) {\n var rows = this.parent.aggregates;\n for (var i = 0; i < rows.length; i++) {\n var row = rows[parseInt(i.toString(), 10)];\n for (var j = 0; j < row.columns.length; j++) {\n var cols = row.columns[parseInt(j.toString(), 10)];\n var types = cols.type instanceof Array ? cols.type : [cols.type];\n for (var k = 0; k < types.length; k++) {\n query.aggregate(types[parseInt(k.toString(), 10)].toLowerCase(), cols.field);\n }\n }\n }\n return query;\n };\n Data.prototype.virtualGroupPageQuery = function (query) {\n var fName = 'fn';\n if (query.queries.length) {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[parseInt(i.toString(), 10)][\"\" + fName] === 'onPage') {\n query.queries.splice(i, 1);\n }\n }\n }\n return query;\n };\n Data.prototype.pageQuery = function (query, skipPage) {\n var gObj = this.parent;\n var fName = 'fn';\n var args = { query: query, skipPage: false };\n gObj.notify(events.setVirtualPageQuery, args);\n if (args.skipPage) {\n return query;\n }\n if ((gObj.allowPaging || gObj.enableVirtualization || gObj.enableInfiniteScrolling) && skipPage !== true) {\n gObj.pageSettings.currentPage = Math.max(1, gObj.pageSettings.currentPage);\n if (gObj.pageSettings.pageCount <= 0) {\n gObj.pageSettings.pageCount = 8;\n }\n if (gObj.pageSettings.pageSize <= 0) {\n gObj.pageSettings.pageSize = 12;\n }\n if (query.queries.length) {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[parseInt(i.toString(), 10)][\"\" + fName] === 'onPage') {\n query.queries.splice(i, 1);\n }\n }\n }\n if (!isNullOrUndefined(gObj.infiniteScrollModule) && gObj.enableInfiniteScrolling) {\n this.parent.notify(events.infinitePageQuery, query);\n }\n else {\n query.page(gObj.pageSettings.currentPage, gObj.allowPaging && gObj.pagerModule &&\n (gObj.pagerModule.pagerObj.isAllPage && !gObj.isManualRefresh) &&\n (!this.dataManager.dataSource.offline && !(this.dataManager.adaptor instanceof RemoteSaveAdaptor)) ?\n null : gObj.pageSettings.pageSize);\n }\n }\n return query;\n };\n Data.prototype.groupQuery = function (query) {\n var gObj = this.parent;\n if (gObj.allowGrouping && gObj.groupSettings.columns.length) {\n if (this.parent.groupSettings.enableLazyLoading) {\n query.lazyLoad.push({ key: 'isLazyLoad', value: this.parent.groupSettings.enableLazyLoading });\n }\n var columns = gObj.groupSettings.columns;\n for (var i = 0, len = columns.length; i < len; i++) {\n var column = this.getColumnByField(columns[parseInt(i.toString(), 10)]);\n if (!column) {\n this.parent.log('initial_action', { moduleName: 'group', columnName: columns[parseInt(i.toString(), 10)] });\n }\n var isGrpFmt = column.enableGroupByFormat;\n var format = column.format;\n if (isGrpFmt) {\n query.group(columns[parseInt(i.toString(), 10)], this.formatGroupColumn.bind(this), format);\n }\n else {\n query.group(columns[parseInt(i.toString(), 10)], null);\n }\n }\n }\n return query;\n };\n Data.prototype.sortQuery = function (query) {\n var gObj = this.parent;\n if ((gObj.allowSorting || gObj.allowGrouping) && gObj.sortSettings.columns.length) {\n var columns = gObj.sortSettings.columns;\n var sortGrp = [];\n for (var i = columns.length - 1; i > -1; i--) {\n var col = this.getColumnByField(columns[parseInt(i.toString(), 10)].field);\n if (col) {\n col.setSortDirection(columns[parseInt(i.toString(), 10)].direction);\n }\n else {\n this.parent.log('initial_action', { moduleName: 'sort', columnName: columns[parseInt(i.toString(), 10)].field });\n return query;\n }\n var fn = columns[parseInt(i.toString(), 10)].direction;\n if (col.sortComparer) {\n this.parent.log('grid_sort_comparer');\n fn = !this.isRemote() ? col.sortComparer.bind(col) : columns[parseInt(i.toString(), 10)].direction;\n }\n if (gObj.groupSettings.columns.indexOf(columns[parseInt(i.toString(), 10)].field) === -1) {\n if (col.isForeignColumn() || col.sortComparer) {\n query.sortByForeignKey(col.field, fn, undefined, columns[parseInt(i.toString(), 10)].direction.toLowerCase());\n }\n else {\n query.sortBy(col.field, fn);\n }\n }\n else {\n sortGrp.push({ direction: fn, field: col.field });\n }\n }\n for (var i = 0, len = sortGrp.length; i < len; i++) {\n if (typeof sortGrp[parseInt(i.toString(), 10)].direction === 'string') {\n query.sortBy(sortGrp[parseInt(i.toString(), 10)].field, sortGrp[parseInt(i.toString(), 10)].direction);\n }\n else {\n var col = this.getColumnByField(sortGrp[parseInt(i.toString(), 10)].field);\n query.sortByForeignKey(sortGrp[parseInt(i.toString(), 10)].field, sortGrp[parseInt(i.toString(), 10)].direction, undefined, col.getSortDirection().toLowerCase());\n }\n }\n }\n return query;\n };\n /**\n * @param {Query} query - specifies the query\n * @param {Column} fcolumn - specifies the forein key column model\n * @param {boolean} isForeignKey - Confirms whether the column is a foreign key or not\n * @returns {Query} - returns the query\n * @hidden\n */\n Data.prototype.searchQuery = function (query, fcolumn, isForeignKey) {\n var sSettings = this.parent.searchSettings;\n var fields = (!isNullOrUndefined(sSettings.fields) && sSettings.fields.length) ? sSettings.fields : this.getSearchColumnFieldNames();\n var predicateList = [];\n var needForeignKeySearch = false;\n if (!isNullOrUndefined(this.parent.searchSettings.key) && this.parent.searchSettings.key.length) {\n needForeignKeySearch = this.parent.getForeignKeyColumns().some(function (col) { return fields.indexOf(col.field) > -1; });\n var adaptor = !isForeignKey ? this.dataManager.adaptor : fcolumn.dataSource.adaptor;\n if (needForeignKeySearch || (adaptor.getModuleName &&\n adaptor.getModuleName() === 'ODataV4Adaptor')) {\n fields = isForeignKey ? [fcolumn.foreignKeyValue] : fields;\n for (var i = 0; i < fields.length; i++) {\n var column = isForeignKey ? fcolumn : this.getColumnByField(fields[parseInt(i.toString(), 10)]);\n if (column.isForeignColumn() && !isForeignKey) {\n predicateList = this.fGeneratePredicate(column, predicateList);\n }\n else {\n predicateList.push(new Predicate(fields[parseInt(i.toString(), 10)], sSettings.operator, sSettings.key, sSettings.ignoreCase, sSettings.ignoreAccent));\n }\n }\n var predList = Predicate.or(predicateList);\n predList.key = sSettings.key;\n query.where(predList);\n }\n else {\n query.search(sSettings.key, fields, sSettings.operator, sSettings.ignoreCase, sSettings.ignoreAccent);\n }\n }\n return query;\n };\n Data.prototype.filterQuery = function (query, column, skipFoerign) {\n var gObj = this.parent;\n var predicateList = [];\n var actualFilter = [];\n var foreignColumn = this.parent.getForeignKeyColumns();\n var foreignColEmpty;\n if (gObj.allowFiltering && gObj.filterSettings.columns.length) {\n var columns = column ? column : gObj.filterSettings.columns;\n var colType = {};\n for (var _i = 0, _a = gObj.getColumns(); _i < _a.length; _i++) {\n var col = _a[_i];\n colType[col.field] = col.filter.type ? col.filter.type : gObj.filterSettings.type;\n }\n var foreignCols = [];\n var defaultFltrCols = [];\n for (var _b = 0, columns_1 = columns; _b < columns_1.length; _b++) {\n var col = columns_1[_b];\n var gridColumn = col.isForeignKey ? gObj.getColumnByUid(col.uid) : gObj.getColumnByField(col.field);\n if (isNullOrUndefined(col.type) && gridColumn && (gridColumn.type === 'date' || gridColumn.type === 'datetime' || gridColumn.type === 'dateonly')) {\n col.type = col.isForeignKey ? gObj.getColumnByUid(col.uid).type : gObj.getColumnByField(col.field).type;\n }\n if (col.isForeignKey) {\n foreignCols.push(col);\n }\n else {\n defaultFltrCols.push(col);\n }\n }\n if (defaultFltrCols.length) {\n for (var i = 0, len = defaultFltrCols.length; i < len; i++) {\n defaultFltrCols[parseInt(i.toString(), 10)].uid = defaultFltrCols[parseInt(i.toString(), 10)].uid ||\n this.parent.grabColumnByFieldFromAllCols(defaultFltrCols[parseInt(i.toString(), 10)]\n .field, defaultFltrCols[parseInt(i.toString(), 10)].isForeignKey).uid;\n }\n var excelPredicate = CheckBoxFilterBase.getPredicate(defaultFltrCols);\n for (var _c = 0, _d = Object.keys(excelPredicate); _c < _d.length; _c++) {\n var prop = _d[_c];\n predicateList.push(excelPredicate[\"\" + prop]);\n }\n }\n if (foreignCols.length) {\n for (var _e = 0, foreignCols_1 = foreignCols; _e < foreignCols_1.length; _e++) {\n var col = foreignCols_1[_e];\n col.uid = col.uid || this.parent.grabColumnByFieldFromAllCols(col.field, col.isForeignKey).uid;\n var column_1 = this.parent.grabColumnByUidFromAllCols(col.uid);\n if (!column_1) {\n this.parent.log('initial_action', { moduleName: 'filter', columnName: col.field });\n }\n if (column_1.isForeignColumn() && getColumnByForeignKeyValue(col.field, foreignColumn) && !skipFoerign) {\n actualFilter.push(col);\n if (!column_1.columnData.length) {\n foreignColEmpty = true;\n }\n predicateList = this.fGeneratePredicate(column_1, predicateList);\n }\n else {\n var excelPredicate = CheckBoxFilterBase.getPredicate(columns);\n for (var _f = 0, _g = Object.keys(excelPredicate); _f < _g.length; _f++) {\n var prop = _g[_f];\n predicateList.push(excelPredicate[\"\" + prop]);\n }\n }\n }\n }\n if (predicateList.length && !foreignColEmpty) {\n query.where(Predicate.and(predicateList));\n }\n else {\n this.parent.notify(events.showEmptyGrid, {});\n }\n }\n return query;\n };\n Data.prototype.fGeneratePredicate = function (col, predicateList) {\n var fPredicate = {};\n if (col) {\n this.parent.notify(events.generateQuery, { predicate: fPredicate, column: col });\n if (fPredicate.predicate.predicates.length) {\n predicateList.push(fPredicate.predicate);\n }\n }\n return predicateList;\n };\n /**\n * The function is used to get dataManager promise by executing given Query.\n *\n * @param {object} args - specifies the object\n * @param {string} args.requestType - Defines the request type\n * @param {string[]} args.foreignKeyData - Defines the foreignKeyData.string\n * @param {Object} args.data - Defines the data.\n * @param {number} args.index - Defines the index .\n * @param {Query} query - Defines the query which will execute along with data processing.\n * @returns {Promise} - returns the object\n * @hidden\n */\n Data.prototype.getData = function (args, query) {\n var _this = this;\n if (args === void 0) { args = { requestType: '' }; }\n var key = this.getKey(args.foreignKeyData &&\n Object.keys(args.foreignKeyData).length ?\n args.foreignKeyData : this.parent.getPrimaryKeyFieldNames());\n this.parent.log('datasource_syntax_mismatch', { dataState: this.parent });\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n var def = this.eventPromise(args, query, key);\n return def.promise;\n }\n else {\n var crud = void 0;\n switch (args.requestType) {\n case 'delete':\n query = query ? query : this.generateQuery();\n // eslint-disable-next-line no-case-declarations\n var len = Object.keys(args.data).length;\n if (len === 1) {\n crud = this.dataManager.remove(key, args.data[0], query.fromTable, query);\n }\n else {\n var changes = {\n addedRecords: [],\n deletedRecords: [],\n changedRecords: []\n };\n changes.deletedRecords = args.data;\n crud = this.dataManager.saveChanges(changes, key, query.fromTable, query.requiresCount());\n }\n break;\n case 'save':\n query = query ? query : this.generateQuery();\n args.index = isNullOrUndefined(args.index) ? 0 : args.index;\n crud = this.dataManager.insert(args.data, query.fromTable, query, args.index);\n break;\n }\n var promise = 'promise';\n args[\"\" + promise] = crud;\n // eslint-disable-next-line no-prototype-builtins\n if (crud && !Array.isArray(crud) && !crud.hasOwnProperty('deletedRecords')) {\n return crud.then(function () {\n return _this.insert(query, args);\n });\n }\n else {\n return this.insert(query, args);\n }\n }\n };\n Data.prototype.insert = function (query, args) {\n if (args.requestType === 'save') {\n this.parent.notify(events.recordAdded, args);\n }\n return this.executeQuery(query);\n };\n Data.prototype.executeQuery = function (query) {\n var _this = this;\n if (this.dataManager.ready) {\n var deferred_1 = new Deferred();\n var ready = this.dataManager.ready;\n ready.then(function () {\n _this.dataManager.executeQuery(query).then(function (result) {\n deferred_1.resolve(result);\n });\n }).catch(function (e) {\n deferred_1.reject(e);\n });\n return deferred_1.promise;\n }\n else {\n return this.dataManager.executeQuery(query);\n }\n };\n Data.prototype.formatGroupColumn = function (value, field) {\n var serviceLocator = this.serviceLocator;\n var column = this.getColumnByField(field);\n var date = value;\n if (!column.type) {\n column.type = date.getDay ? (date.getHours() > 0 || date.getMinutes() > 0 ||\n date.getSeconds() > 0 || date.getMilliseconds() > 0 ? 'datetime' : 'date') : typeof (value);\n }\n if (isNullOrUndefined(column.getFormatter())) {\n setFormatter(serviceLocator, column);\n }\n var formatVal = ValueFormatter.prototype.toView(value, column.getFormatter());\n return formatVal;\n };\n Data.prototype.crudActions = function (args) {\n var query = this.generateQuery();\n var promise = null;\n var pr = 'promise';\n var key = this.getKey(args.foreignKeyData &&\n Object.keys(args.foreignKeyData).length ? args.foreignKeyData :\n this.parent.getPrimaryKeyFieldNames());\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n this.eventPromise(args, query, key);\n }\n switch (args.requestType) {\n case 'save':\n promise = this.dataManager.update(key, args.data, query.fromTable, query, args.previousData);\n break;\n }\n args[\"\" + pr] = promise ? promise : args[\"\" + pr];\n this.parent.notify(events.crudAction, args);\n };\n /**\n * @param {object} changes - specifies the changes\n * @param {string} key - specifies the key\n * @param {object} original - specifies the original data\n * @param {Query} query - specifies the query\n * @returns {Promise} returns the object\n * @hidden\n */\n Data.prototype.saveChanges = function (changes, key, original, query) {\n if (query === void 0) { query = this.generateQuery(); }\n query.requiresCount();\n if ('result' in this.parent.dataSource) {\n var deff = new Deferred();\n var args = {\n requestType: 'batchsave', changes: changes, key: key, query: query,\n endEdit: deff.resolve\n };\n this.setState({ isPending: true, resolver: deff.resolve });\n this.parent.trigger(events.dataSourceChanged, args);\n return deff.promise;\n }\n else {\n var promise = this.dataManager.saveChanges(changes, key, query.fromTable, query, original);\n return promise;\n }\n };\n Data.prototype.getKey = function (keys) {\n if (keys && keys.length) {\n return keys[0];\n }\n return undefined;\n };\n /**\n * @returns {boolean} returns whether its remote data\n * @hidden\n */\n Data.prototype.isRemote = function () {\n return this.dataManager.dataSource.offline !== true && this.dataManager.dataSource.url !== undefined &&\n this.dataManager.dataSource.url !== '';\n };\n Data.prototype.addRows = function (e) {\n for (var i = e.records.length; i > 0; i--) {\n if (this.parent.dataSource instanceof DataManager && this.dataManager.dataSource.offline) {\n this.dataManager.dataSource.json.splice(e.toIndex, 0, e.records[i - 1]);\n }\n else if (((!this.parent.getDataModule().isRemote()) && (!isNullOrUndefined(this.parent.dataSource))) &&\n (!this.parent.dataSource.result)) {\n this.parent.dataSource['splice'](e.toIndex, 0, e.records[i - 1]);\n }\n }\n };\n Data.prototype.removeRows = function (e) {\n var json = this.dataManager.dataSource.json;\n if (this.parent.dataSource instanceof DataManager && this.dataManager.dataSource.offline) {\n this.dataManager.dataSource.json = json.filter(function (value) { return e.records.indexOf(value) === -1; });\n }\n else if (((!this.parent.getDataModule().isRemote()) && (!isNullOrUndefined(this.parent.dataSource))) &&\n (!this.parent.dataSource.result)) {\n this.parent.dataSource = json.filter(function (value) { return e.records.indexOf(value) === -1; });\n }\n };\n Data.prototype.getColumnByField = function (field) {\n var col;\n return (this.parent.columnModel).some(function (column) {\n col = column;\n return column.field === field;\n }) && col;\n };\n Data.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.rowsAdded, this.addRows);\n this.parent.off(events.rowsRemoved, this.removeRows);\n this.parent.off(events.dataSourceModified, this.initDataManager);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.updateData, this.crudActions);\n this.parent.off(events.addDeleteAction, this.getData);\n this.parent.off(events.autoCol, this.refreshFilteredCols);\n this.parent.off(events.columnsPrepared, this.refreshFilteredCols);\n };\n Data.prototype.getState = function () {\n return this.dataState;\n };\n Data.prototype.setState = function (state) {\n return this.dataState = state;\n };\n Data.prototype.getForeignKeyDataState = function () {\n return this.foreignKeyDataState;\n };\n Data.prototype.setForeignKeyDataState = function (state) {\n this.foreignKeyDataState = state;\n };\n Data.prototype.getStateEventArgument = function (query) {\n var adaptr = new UrlAdaptor();\n var dm = new DataManager({ url: '', adaptor: new UrlAdaptor });\n var state = adaptr.processQuery(dm, query);\n var data = JSON.parse(state.data);\n return extend(data, state.pvtData);\n };\n Data.prototype.eventPromise = function (args, query, key) {\n var _this = this;\n var dataArgs = args;\n var state = this.getStateEventArgument(query);\n var def = new Deferred();\n var deff = new Deferred();\n if ((args.requestType !== undefined || (this.parent.groupSettings.disablePageWiseAggregates && query.queries.some(function (query) { return query.fn === 'onGroup'; })))\n && this.dataState.isDataChanged !== false) {\n state.action = args;\n if (args.requestType === 'save' || args.requestType === 'delete') {\n var editArgs_1 = args;\n editArgs_1.key = key;\n var promise = 'promise';\n editArgs_1[\"\" + promise] = deff.promise;\n editArgs_1.state = state;\n this.setState({ isPending: true, resolver: deff.resolve });\n dataArgs.endEdit = deff.resolve;\n dataArgs.cancelEdit = deff.reject;\n this.parent.trigger(events.dataSourceChanged, editArgs_1);\n deff.promise.then(function () {\n _this.setState({ isPending: true, resolver: def.resolve, group: state.group, aggregates: state.aggregates });\n if (editArgs_1.requestType === 'save') {\n _this.parent.notify(events.recordAdded, editArgs_1);\n }\n _this.parent.trigger(events.dataStateChange, state);\n })\n .catch(function () { return void 0; });\n }\n else {\n this.setState({ isPending: true, resolver: def.resolve, group: state.group, aggregates: state.aggregates });\n this.parent.trigger(events.dataStateChange, state);\n }\n }\n else {\n this.setState({});\n def.resolve(this.parent.dataSource);\n }\n return def;\n };\n /**\n * Gets the columns where searching needs to be performed from the Grid.\n *\n * @returns {string[]} returns the searched column field names\n */\n Data.prototype.getSearchColumnFieldNames = function () {\n var colFieldNames = [];\n var columns = this.parent.getColumns();\n for (var _i = 0, columns_2 = columns; _i < columns_2.length; _i++) {\n var col = columns_2[_i];\n if (col.allowSearching && !isNullOrUndefined(col.field)) {\n colFieldNames.push(col.field);\n }\n }\n return colFieldNames;\n };\n Data.prototype.refreshFilteredCols = function () {\n if (this.parent.allowFiltering && this.parent.filterSettings.columns.length) {\n refreshFilteredColsUid(this.parent, this.parent.filterSettings.columns);\n }\n };\n return Data;\n}());\nexport { Data };\n","import { merge } from '@syncfusion/ej2-base';\n/**\n * Row\n *\n * @hidden\n */\nvar Row = /** @class */ (function () {\n function Row(options, parent) {\n merge(this, options);\n this.parent = parent;\n }\n Row.prototype.clone = function () {\n var row = new Row({});\n merge(row, this);\n row.cells = this.cells.map(function (cell) { return cell.clone(); });\n return row;\n };\n /**\n * Replaces the row data and grid refresh the particular row element only.\n *\n * @param {Object} data - To update new data for the particular row.\n * @returns {void}\n */\n Row.prototype.setRowValue = function (data) {\n if (!this.parent) {\n return;\n }\n var key = this.data[this.parent.getPrimaryKeyFieldNames()[0]];\n this.parent.setRowData(key, data);\n };\n /**\n * Replaces the given field value and refresh the particular cell element only.\n *\n * @param {string} field - Specifies the field name which you want to update.\n * @param {string | number | boolean | Date} value - To update new value for the particular cell.\n * @returns {void}\n */\n Row.prototype.setCellValue = function (field, value) {\n if (!this.parent) {\n return;\n }\n var isValDiff = !(this.data[\"\" + field].toString() === value.toString());\n if (isValDiff) {\n var pKeyField = this.parent.getPrimaryKeyFieldNames()[0];\n var key = this.data[\"\" + pKeyField];\n this.parent.setCellValue(key, field, value);\n this.makechanges(pKeyField, this.data);\n }\n else {\n return;\n }\n };\n Row.prototype.makechanges = function (key, data) {\n if (!this.parent) {\n return;\n }\n var gObj = this.parent;\n var dataManager = gObj.getDataModule().dataManager;\n dataManager.update(key, data);\n };\n return Row;\n}());\nexport { Row };\n","import { merge } from '@syncfusion/ej2-base';\n/**\n * Cell\n *\n * @hidden\n */\nvar Cell = /** @class */ (function () {\n function Cell(options) {\n this.isSpanned = false;\n this.isRowSpanned = false;\n merge(this, options);\n }\n Cell.prototype.clone = function () {\n var cell = new Cell({});\n merge(cell, this);\n return cell;\n };\n return Cell;\n}());\nexport { Cell };\n","import { isNullOrUndefined, attributes } from '@syncfusion/ej2-base';\nimport { iterateArrayOrObject } from '../base/util';\nimport { CellType } from '../base/enum';\n/**\n * `CellMergeRender` module.\n *\n * @hidden\n */\nvar CellMergeRender = /** @class */ (function () {\n function CellMergeRender(serviceLocator, parent) {\n this.serviceLocator = serviceLocator;\n this.parent = parent;\n }\n CellMergeRender.prototype.render = function (cellArgs, row, i, td) {\n var cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n var cellRenderer = cellRendererFact.getCellRenderer(row.cells[parseInt(i.toString(), 10)].cellType\n || CellType.Data);\n var colSpan = row.cells[parseInt(i.toString(), 10)].cellSpan ? row.cells[parseInt(i.toString(), 10)].cellSpan :\n (cellArgs.colSpan + i) <= row.cells.length ? cellArgs.colSpan : row.cells.length - i;\n var rowSpan = cellArgs.rowSpan;\n var visible = 0;\n var spannedCell;\n if (row.index > 0) {\n var rowsObject = this.parent.getRowsObject();\n var cells = this.parent.groupSettings.columns.length > 0 &&\n !rowsObject[row.index - 1].isDataRow ? rowsObject[row.index].cells : rowsObject[row.index - 1].cells;\n var targetCell_1 = row.cells[parseInt(i.toString(), 10)];\n var uid_1 = 'uid';\n spannedCell = cells.filter(function (cell) { return cell.column.uid === targetCell_1.column[\"\" + uid_1]; })[0];\n }\n var colSpanLen = spannedCell && spannedCell.colSpanRange > 1 && spannedCell.rowSpanRange > 1 ?\n spannedCell.colSpanRange : colSpan;\n for (var j = i + 1; j < i + colSpanLen && j < row.cells.length; j++) {\n if (row.cells[parseInt(j.toString(), 10)].visible === false) {\n visible++;\n }\n else {\n row.cells[parseInt(j.toString(), 10)].isSpanned = true;\n }\n }\n if (visible > 0) {\n for (var j = i + colSpan; j < i + colSpan + visible && j < row.cells.length; j++) {\n row.cells[parseInt(j.toString(), 10)].isSpanned = true;\n }\n if (i + colSpan + visible >= row.cells.length) {\n colSpan -= (i + colSpan + visible) - row.cells.length;\n }\n }\n if (row.cells[parseInt(i.toString(), 10)].cellSpan) {\n row.data[cellArgs.column.field] = row.cells[parseInt(i.toString(), 10)].spanText;\n td = cellRenderer.render(row.cells[parseInt(i.toString(), 10)], row.data, { 'index': !isNullOrUndefined(row.index) ? row.index.toString() : '' });\n }\n if (colSpan > 1) {\n attributes(td, { 'colSpan': colSpan.toString(), 'aria-colSpan': colSpan.toString() });\n }\n if (rowSpan > 1) {\n attributes(td, { 'rowspan': rowSpan.toString(), 'aria-rowspan': rowSpan.toString() });\n row.cells[parseInt(i.toString(), 10)].isRowSpanned = true;\n row.cells[parseInt(i.toString(), 10)].rowSpanRange = Number(rowSpan);\n if (colSpan > 1) {\n row.cells[parseInt(i.toString(), 10)].colSpanRange = Number(colSpan);\n }\n }\n if (row.index > 0 && (spannedCell.rowSpanRange > 1)) {\n row.cells[parseInt(i.toString(), 10)].isSpanned = true;\n row.cells[parseInt(i.toString(), 10)].rowSpanRange = Number(spannedCell.rowSpanRange - 1);\n row.cells[parseInt(i.toString(), 10)].colSpanRange = spannedCell.rowSpanRange > 0 ? spannedCell.colSpanRange : 1;\n }\n if (this.parent.enableColumnVirtualization && !row.cells[parseInt(i.toString(), 10)].cellSpan &&\n !this.containsKey(cellArgs.column.field, cellArgs.data[cellArgs.column.field])) {\n this.backupMergeCells(cellArgs.column.field, cellArgs.data[cellArgs.column.field], cellArgs.colSpan);\n }\n return td;\n };\n CellMergeRender.prototype.backupMergeCells = function (fName, data, span) {\n this.setMergeCells(this.generteKey(fName, data), span);\n };\n CellMergeRender.prototype.generteKey = function (fname, data) {\n return fname + '__' + data.toString();\n };\n CellMergeRender.prototype.splitKey = function (key) {\n return key.split('__');\n };\n CellMergeRender.prototype.containsKey = function (fname, data) {\n // eslint-disable-next-line no-prototype-builtins\n return this.getMergeCells().hasOwnProperty(this.generteKey(fname, data));\n };\n CellMergeRender.prototype.getMergeCells = function () {\n return this.parent.mergeCells;\n };\n CellMergeRender.prototype.setMergeCells = function (key, span) {\n this.parent.mergeCells[\"\" + key] = span;\n };\n CellMergeRender.prototype.updateVirtualCells = function (rows) {\n var mCells = this.getMergeCells();\n for (var _i = 0, _a = Object.keys(mCells); _i < _a.length; _i++) {\n var key = _a[_i];\n var value = mCells[\"\" + key];\n var merge = this.splitKey(key);\n var columnIndex = this.getIndexFromAllColumns(merge[0]);\n var vColumnIndices = this.parent.getColumnIndexesInView();\n var span = value - (vColumnIndices[0] - columnIndex);\n if (columnIndex < vColumnIndices[0] && span > 1) {\n for (var _b = 0, rows_1 = rows; _b < rows_1.length; _b++) {\n var row = rows_1[_b];\n if (row.data[merge[0]].toString() === merge[1].toString()) {\n row.cells[0].cellSpan = span;\n row.cells[0].spanText = merge[1];\n break;\n }\n }\n }\n }\n return rows;\n };\n CellMergeRender.prototype.getIndexFromAllColumns = function (field) {\n var index = iterateArrayOrObject(this.parent.getVisibleColumns(), function (item, index) {\n if (item.field === field) {\n return index;\n }\n return undefined;\n })[0];\n return index;\n };\n return CellMergeRender;\n}());\nexport { CellMergeRender };\n","import { isNullOrUndefined, extend, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { attributes as addAttributes } from '@syncfusion/ej2-base';\nimport { rowDataBound, queryCellInfo } from '../base/constant';\nimport { setStyleAndAttributes, getObject, extendObjWithFn, applyStickyLeftRightPosition, groupCaptionRowLeftRightPos, resetColspanGroupCaption, resetColandRowSpanStickyPosition } from '../base/util';\nimport { CellType } from '../base/enum';\nimport { CellMergeRender } from './cell-merge-renderer';\nimport * as literals from '../base/string-literals';\n/**\n * RowRenderer class which responsible for building row content.\n *\n * @hidden\n */\nvar RowRenderer = /** @class */ (function () {\n function RowRenderer(serviceLocator, cellType, parent) {\n this.isSpan = false;\n this.cellType = cellType;\n this.serviceLocator = serviceLocator;\n this.parent = parent;\n this.element = this.parent.createElement('tr', { attrs: { role: 'row' } });\n }\n /* eslint-disable */\n /**\n * Function to render the row content based on Column[] and data.\n *\n * @param {Row} row - specifies the row\n * @param {Column[]} columns - specifies the columns\n * @param {Object} attributes - specifies the attributes\n * @param {string} rowTemplate - specifies the rowTemplate\n * @param {Element} cloneNode - specifies the cloneNode\n * @returns {Element} returns the element\n */\n /* eslint-enable */\n RowRenderer.prototype.render = function (row, columns, attributes, rowTemplate, cloneNode) {\n return this.refreshRow(row, columns, attributes, rowTemplate, cloneNode);\n };\n /* eslint-disable */\n /**\n * Function to refresh the row content based on Column[] and data.\n *\n * @param {Row} row - specifies the row\n * @param {Column[]} columns - specifies the column\n * @param {boolean} isChanged - specifies isChanged\n * @param {Object} attributes - specifies the attributes\n * @param {string} rowTemplate - specifies the rowTemplate\n * @returns {void}\n */\n /* eslint-enable */\n RowRenderer.prototype.refresh = function (row, columns, isChanged, attributes, rowTemplate) {\n var _this = this;\n if (isChanged) {\n row.data = extendObjWithFn({}, row.changes);\n this.refreshMergeCells(row);\n }\n var node = this.parent.element.querySelector('[data-uid=' + row.uid + ']');\n var tr = this.refreshRow(row, columns, attributes, rowTemplate, null, isChanged);\n var cells = [].slice.call(tr.cells);\n var tempCells = [].slice.call(node.querySelectorAll('.e-templatecell'));\n if (this.parent.isReact && tempCells.length) {\n var _loop_1 = function (col) {\n if (col.template) {\n setTimeout(function () {\n _this.parent.refreshReactColumnTemplateByUid(col.uid, true);\n }, 0);\n return \"break\";\n }\n };\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var col = columns_1[_i];\n var state_1 = _loop_1(col);\n if (state_1 === \"break\")\n break;\n }\n }\n var attr = [].slice.call(tr.attributes);\n attr.map(function (item) {\n node.setAttribute(item['name'], item['value']);\n });\n node.innerHTML = '';\n for (var _a = 0, cells_1 = cells; _a < cells_1.length; _a++) {\n var cell = cells_1[_a];\n node.appendChild(cell);\n }\n };\n // tslint:disable-next-line:max-func-body-length\n RowRenderer.prototype.refreshRow = function (row, columns, attributes, rowTemplate, cloneNode, isEdit) {\n var tr = !isNullOrUndefined(cloneNode) ? cloneNode : this.element.cloneNode();\n var rowArgs = { data: row.data };\n var cellArgs = { data: row.data };\n var chekBoxEnable = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox' && col.field; })[0];\n var value = false;\n var isFrozen = this.parent.isFrozenGrid();\n if (chekBoxEnable) {\n value = getObject(chekBoxEnable.field, rowArgs.data);\n }\n var selIndex = this.parent.getSelectedRowIndexes();\n if (row.isDataRow) {\n row.isSelected = selIndex.indexOf(row.index) > -1 || value;\n }\n if (row.isDataRow && this.parent.isCheckBoxSelection\n && this.parent.checkAllRows === 'Check' && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n row.isSelected = true;\n if (selIndex.indexOf(row.index) === -1) {\n selIndex.push(row.index);\n }\n }\n this.buildAttributeFromRow(tr, row);\n addAttributes(tr, extend({}, attributes, {}));\n setStyleAndAttributes(tr, row.attributes);\n var cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n var _loop_2 = function (i, len) {\n var cell = row.cells[parseInt(i.toString(), 10)];\n cell.isSelected = row.isSelected;\n cell.isColumnSelected = cell.column.isSelected;\n var cellRenderer = cellRendererFact.getCellRenderer(row.cells[parseInt(i.toString(), 10)].cellType\n || CellType.Data);\n var attrs = { 'index': !isNullOrUndefined(row.index) ? row.index.toString() : '' };\n if (row.isExpand && row.cells[parseInt(i.toString(), 10)].cellType === CellType.DetailExpand) {\n attrs['class'] = this_1.parent.isPrinting ? 'e-detailrowcollapse' : 'e-detailrowexpand';\n }\n var td = cellRenderer.render(row.cells[parseInt(i.toString(), 10)], row.data, attrs, row.isExpand, isEdit);\n if (row.cells[parseInt(i.toString(), 10)].cellType !== CellType.Filter) {\n if (row.cells[parseInt(i.toString(), 10)].cellType === CellType.Data\n || row.cells[parseInt(i.toString(), 10)].cellType === CellType.CommandColumn) {\n var isReactChild = this_1.parent.parentDetails && this_1.parent.parentDetails.parentInstObj &&\n this_1.parent.parentDetails.parentInstObj.isReact;\n if (((this_1.parent.isReact && this_1.parent.requireTemplateRef) || (isReactChild &&\n this_1.parent.parentDetails.parentInstObj.requireTemplateRef)) && cell.isTemplate) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_1 = this_1;\n thisRef_1.parent.renderTemplates(function () {\n if (typeof (cell.column.template) !== 'string') {\n var ariaAttr = td.getAttribute('aria-label');\n td.setAttribute('aria-label', td.innerText + ariaAttr);\n }\n thisRef_1.parent.trigger(queryCellInfo, extend(cellArgs, {\n cell: td, column: cell.column, colSpan: 1,\n rowSpan: 1, foreignKeyData: row.cells[parseInt(i.toString(), 10)].foreignKeyData,\n requestType: thisRef_1.parent.requestTypeAction\n }));\n });\n }\n else {\n this_1.parent.trigger(queryCellInfo, extend(cellArgs, {\n cell: td, column: cell.column, colSpan: 1,\n rowSpan: 1, foreignKeyData: row.cells[parseInt(i.toString(), 10)].foreignKeyData,\n requestType: this_1.parent.requestTypeAction\n }));\n }\n var isRowSpanned = false;\n if (row.index > 0 && (this_1.isSpan || (this_1.parent.isSpan && isEdit))) {\n var rowsObject = this_1.parent.getRowsObject();\n var prevRowCells = this_1.parent.groupSettings.columns.length > 0 &&\n !rowsObject[row.index - 1].isDataRow ? rowsObject[row.index].cells : rowsObject[row.index - 1].cells;\n var uid_1 = 'uid';\n var prevRowCell = prevRowCells.filter(function (cell) {\n return cell.column.uid === row.cells[parseInt(i.toString(), 10)].column[\"\" + uid_1];\n })[0];\n isRowSpanned = prevRowCell.isRowSpanned ? prevRowCell.isRowSpanned : prevRowCell.rowSpanRange > 1;\n }\n if ((cellArgs.rowSpan > 1 || cellArgs.colSpan > 1)) {\n this_1.resetrowSpanvalue(this_1.parent.frozenRows > row.index ? this_1.parent.frozenRows :\n this_1.parent.currentViewData.length, cellArgs, row.index);\n if (cellArgs.column.visible === false) {\n cellArgs.colSpan = 1;\n }\n else {\n if (isFrozen) {\n var columns_2 = this_1.parent.getColumns();\n var right = this_1.parent.getFrozenRightColumnsCount();\n var left = this_1.parent.getFrozenLeftCount();\n var movableCount = columns_2.length - right;\n var cellIdx = cellArgs.column.index;\n if (left > cellIdx && left < (cellIdx + cellArgs.colSpan)) {\n var colSpan = (cellIdx + cellArgs.colSpan) - left;\n cellArgs.colSpan = cellArgs.colSpan - colSpan;\n }\n else if (movableCount <= cellIdx && columns_2.length < (cellIdx + cellArgs.colSpan)) {\n var colSpan = (cellIdx + cellArgs.colSpan) - columns_2.length;\n cellArgs.colSpan = cellArgs.colSpan - colSpan;\n }\n else if (cellArgs.column.freeze === 'Fixed') {\n var colSpan = 1;\n var index = cellIdx;\n for (var j = index + 1; j < index + cellArgs.colSpan; j++) {\n if (columns_2[parseInt(j.toString(), 10)].freeze === 'Fixed') {\n colSpan++;\n }\n else {\n break;\n }\n }\n cellArgs.colSpan = colSpan;\n }\n else if (movableCount > cellIdx && movableCount < (cellIdx + cellArgs.colSpan)) {\n var colSpan = (cellIdx + cellArgs.colSpan) - movableCount;\n cellArgs.colSpan = cellArgs.colSpan - colSpan;\n }\n }\n }\n }\n if (cellArgs.colSpan > 1 || row.cells[parseInt(i.toString(), 10)].cellSpan > 1 || cellArgs.rowSpan > 1\n || isRowSpanned) {\n this_1.parent.isSpan = true;\n this_1.isSpan = true;\n var cellMerge = new CellMergeRender(this_1.serviceLocator, this_1.parent);\n td = cellMerge.render(cellArgs, row, i, td);\n if (isFrozen) {\n resetColandRowSpanStickyPosition(this_1.parent, cellArgs.column, td, cellArgs.colSpan);\n }\n }\n }\n if (this_1.isSpan) {\n var rowsObject = this_1.parent.getRowsObject();\n var isRtl = this_1.parent.enableRtl;\n if (rowsObject[row.index - 1]) {\n var prevRowCells = rowsObject[row.index - 1].cells;\n var prevRowCell = prevRowCells[i - 1];\n var currentRowCell = prevRowCells[parseInt(i.toString(), 10)];\n var nextRowCell = prevRowCells[i + 1];\n var direction = prevRowCells[parseInt(i.toString(), 10)].column.freeze;\n if (prevRowCell && (prevRowCell.isRowSpanned || prevRowCell.rowSpanRange > 1) && prevRowCell.visible) {\n if (!isRtl && (!currentRowCell.isRowSpanned || prevRowCell.rowSpanRange > currentRowCell.rowSpanRange)) {\n td.classList.add('e-rowcell-firstchild');\n }\n if (isFrozen) {\n if (prevRowCell.column.freeze === 'Fixed' && direction === 'Fixed') {\n td.classList.add(isRtl ? 'e-removefreezerightborder' : 'e-removefreezeleftborder');\n }\n else if (!isRtl && i === 1 && direction === 'Left') {\n td.classList.add('e-addfreezefirstchildborder');\n }\n }\n }\n if (nextRowCell && (nextRowCell.isRowSpanned || nextRowCell.rowSpanRange > 1) && nextRowCell.visible) {\n if (isRtl && (!currentRowCell.isRowSpanned || nextRowCell.rowSpanRange > currentRowCell.rowSpanRange)) {\n td.classList.add('e-rowcell-lastchild');\n }\n if (isFrozen && nextRowCell.column.freeze === 'Fixed' && direction === 'Fixed' && cellArgs.colSpan < 2) {\n td.classList.add(isRtl ? 'e-removefreezeleftborder' : 'e-removefreezerightborder');\n }\n }\n }\n }\n if (cellArgs.rowSpan > 1 && this_1.parent.currentViewData.length - row.index === cellArgs.rowSpan) {\n td.classList.add('e-row-span-lastrowcell');\n }\n if (!row.cells[parseInt(i.toString(), 10)].isSpanned) {\n tr.appendChild(td);\n }\n }\n };\n var this_1 = this;\n for (var i = 0, len = row.cells.length; i < len; i++) {\n _loop_2(i, len);\n }\n var emptyColspan = 0;\n if (this.parent.groupSettings.columns.length && this.parent.getFrozenLeftColumnsCount()) {\n if (tr.classList.contains('e-groupcaptionrow')) {\n var freezeCells = [].slice.call(tr.querySelectorAll('.e-leftfreeze,.e-unfreeze,.e-rightfreeze,.e-fixedfreeze,.e-freezerightborder,.e-freezeleftborder'));\n if (freezeCells.length) {\n removeClass(freezeCells, ['e-leftfreeze', 'e-unfreeze', 'e-rightfreeze', 'e-fixedfreeze', 'e-freezerightborder', 'e-freezeleftborder']);\n }\n if (tr.querySelector('.e-summarycell')) {\n groupCaptionRowLeftRightPos(tr, this.parent);\n }\n else {\n for (var j = 0; j < tr.childNodes.length; j++) {\n var td = tr.childNodes[parseInt(j.toString(), 10)];\n td.classList.add('e-leftfreeze');\n applyStickyLeftRightPosition(td, j * 30, this.parent.enableRtl, 'Left');\n if (td.classList.contains('e-groupcaption')) {\n var oldColspan = parseInt(td.getAttribute('colspan'), 10);\n var colspan = resetColspanGroupCaption(this.parent, j);\n td.setAttribute('colspan', colspan.toString());\n emptyColspan = oldColspan - colspan;\n }\n }\n if (emptyColspan) {\n var td = this.parent.createElement('TD', {\n className: 'e-groupcaption',\n attrs: { colspan: emptyColspan.toString(), id: this.parent.element.id + 'captioncell', tabindex: '-1' }\n });\n tr.appendChild(td);\n }\n }\n }\n if (tr.querySelectorAll('.e-leftfreeze').length &&\n (tr.querySelectorAll('.e-indentcell').length || tr.querySelectorAll('.e-grouptopleftcell').length)) {\n var td = tr.querySelectorAll('.e-indentcell, .e-grouptopleftcell');\n for (var i = 0; i < td.length; i++) {\n td[parseInt(i.toString(), 10)].classList.add('e-leftfreeze');\n applyStickyLeftRightPosition(td[parseInt(i.toString(), 10)], i * 30, this.parent.enableRtl, 'Left');\n }\n }\n }\n var args = { row: tr, rowHeight: this.parent.rowHeight };\n if (row.isDataRow) {\n var eventArg_1 = extend(rowArgs, args);\n eventArg_1.isSelectable = true;\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var cellTemplate = eventArg_1.row.querySelectorAll('.e-templatecell');\n if (((this.parent.isReact && this.parent.requireTemplateRef) || (isReactChild &&\n this.parent.parentDetails.parentInstObj.requireTemplateRef)) && cellTemplate.length) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_2 = this;\n thisRef_2.parent.renderTemplates(function () {\n thisRef_2.parent.trigger(rowDataBound, eventArg_1);\n if (!eventArg_1.isSelectable) {\n row.isSelectable = eventArg_1.isSelectable;\n thisRef_2.disableRowSelection(thisRef_2, row, args, eventArg_1);\n }\n });\n }\n else {\n this.parent.trigger(rowDataBound, eventArg_1);\n }\n row.isSelectable = eventArg_1.isSelectable;\n var isDraggable = this.parent.isRowDragable();\n if (this.parent.allowPaging && this.parent.selectionSettings.persistSelection) {\n var primaryKey_1 = this.parent.getPrimaryKeyFieldNames()[0];\n var pKey_1 = row.data ? row.data[\"\" + primaryKey_1] : null;\n var SelectedRecords = eventArg_1.isSelectable ? this.parent.partialSelectedRecords :\n this.parent.disableSelectedRecords;\n if (!SelectedRecords.some(function (data) { return data[\"\" + primaryKey_1] === pKey_1; })) {\n SelectedRecords.push(row.data);\n }\n }\n if (!eventArg_1.isSelectable) {\n this.disableRowSelection(this, row, args, eventArg_1);\n }\n if (this.parent.childGrid || isDraggable || this.parent.detailTemplate) {\n var td = tr.querySelectorAll('.e-rowcell:not(.e-hide)')[0];\n if (td) {\n td.classList.add('e-detailrowvisible');\n }\n }\n }\n if (this.parent.enableVirtualization) {\n rowArgs.rowHeight = this.parent.rowHeight;\n }\n if (rowArgs.rowHeight) {\n tr.style.height = rowArgs.rowHeight + 'px';\n }\n else if (this.parent.rowHeight && (tr.querySelector('.e-headercell') || tr.querySelector('.e-groupcaption'))) {\n tr.style.height = this.parent.rowHeight + 'px';\n }\n if (row.cssClass) {\n tr.classList.add(row.cssClass);\n }\n if (row.lazyLoadCssClass) {\n tr.classList.add(row.lazyLoadCssClass);\n }\n if (this.parent.rowRenderingMode === 'Vertical' && this.parent.allowTextWrap && (this.parent.textWrapSettings.wrapMode === 'Header'\n || this.parent.textWrapSettings.wrapMode === 'Both')) {\n tr.classList.add('e-verticalwrap');\n }\n var vFTable = this.parent.enableColumnVirtualization;\n if (!vFTable && this.parent.aggregates.length && this.parent.element.scrollHeight > this.parent.height) {\n for (var i = 0; i < this.parent.aggregates.length; i++) {\n var property = 'properties';\n var column = 'columns';\n if (this.parent.aggregates[parseInt(i.toString(), 10)][\"\" + property][\"\" + column][0].footerTemplate) {\n var summarycell = [].slice.call(tr.getElementsByClassName('e-summarycell'));\n if (summarycell.length) {\n var lastSummaryCell = (summarycell[summarycell.length - 1]);\n addClass([lastSummaryCell], ['e-lastsummarycell']);\n var firstSummaryCell = (summarycell[0]);\n addClass([firstSummaryCell], ['e-firstsummarycell']);\n }\n }\n }\n }\n return tr;\n };\n RowRenderer.prototype.resetrowSpanvalue = function (rowCount, cellArgs, rowIndex) {\n if (rowCount > rowIndex && rowCount < rowIndex + cellArgs.rowSpan) {\n var rowSpan = (rowIndex + cellArgs.rowSpan) - rowCount;\n cellArgs.rowSpan = cellArgs.rowSpan - rowSpan;\n }\n };\n RowRenderer.prototype.disableRowSelection = function (thisRef, row, args, eventArg) {\n var selIndex = this.parent.getSelectedRowIndexes();\n this.parent.selectionModule.isPartialSelection = true;\n row.isSelected = false;\n var selRowIndex = selIndex.indexOf(row.index);\n if (selRowIndex > -1) {\n selIndex.splice(selRowIndex, 1);\n }\n var chkBox = args.row.querySelectorAll('.e-rowcell.e-gridchkbox');\n var isDrag = eventArg.row.querySelector('.e-rowdragdrop');\n var cellIdx = thisRef.parent.groupSettings.columns.length + (isDrag || thisRef.parent.isDetail() ? 1 : 0);\n for (var i = 0; i < chkBox.length; i++) {\n chkBox[parseInt(i.toString(), 10)].firstElementChild.classList.add('e-checkbox-disabled');\n chkBox[parseInt(i.toString(), 10)].querySelector('.e-frame').classList.remove('e-check');\n }\n if (row.cells.length) {\n for (var i = cellIdx; i < row.cells.length; i++) {\n var cell = eventArg.row.querySelector('.e-rowcell[data-colindex=\"' + row.cells[parseInt(i.toString(), 10)].index + '\"]');\n if (cell) {\n removeClass([cell], ['e-selectionbackground', 'e-active']);\n }\n }\n }\n if (isDrag) {\n removeClass([isDrag], ['e-selectionbackground', 'e-active']);\n }\n };\n RowRenderer.prototype.refreshMergeCells = function (row) {\n for (var _i = 0, _a = row.cells; _i < _a.length; _i++) {\n var cell = _a[_i];\n cell.isSpanned = false;\n }\n return row;\n };\n /* eslint-disable */\n /**\n * Function to check and add alternative row css class.\n *\n * @param {Element} tr - specifies the tr element\n * @param {Row} row - specifies the row\n * @returns {void}\n */\n /* eslint-enable */\n RowRenderer.prototype.buildAttributeFromRow = function (tr, row) {\n var attr = {};\n var prop = { 'rowindex': literals.dataRowIndex, 'dataUID': 'data-uid', 'ariaSelected': 'aria-selected' };\n var classes = [];\n if (row.isDataRow) {\n classes.push(literals.row);\n }\n if (row.isAltRow) {\n classes.push('e-altrow');\n }\n if (row.isCaptionRow) {\n classes.push('e-groupcaptionrow');\n }\n if (row.isAggregateRow && row.parentUid) {\n classes.push('e-groupfooterrow');\n }\n if (!isNullOrUndefined(row.index)) {\n attr[literals.ariaRowIndex] = row.index + 1;\n attr[prop.rowindex] = row.index;\n }\n if (row.rowSpan) {\n attr.rowSpan = row.rowSpan;\n }\n if (row.uid) {\n attr[prop.dataUID] = row.uid;\n }\n if (row.isSelected) {\n attr[prop.ariaSelected] = true;\n }\n if (row.visible === false) {\n classes.push('e-hide');\n }\n attr.class = classes;\n setStyleAndAttributes(tr, attr);\n };\n return RowRenderer;\n}());\nexport { RowRenderer };\n","import { isNullOrUndefined, getValue, setValue } from '@syncfusion/ej2-base';\nimport { Row } from '../models/row';\nimport { CellType } from '../base/enum';\nimport { Cell } from '../models/cell';\nimport { getUid } from '../base/util';\nimport { getForeignData } from '../../grid/base/util';\nimport * as events from '../base/constant';\n/**\n * RowModelGenerator is used to generate grid data rows.\n *\n * @hidden\n */\nvar RowModelGenerator = /** @class */ (function () {\n /**\n * Constructor for header renderer module\n *\n * @param {IGrid} parent - specifies the IGrid\n */\n function RowModelGenerator(parent) {\n this.parent = parent;\n }\n RowModelGenerator.prototype.generateRows = function (data, args) {\n var rows = [];\n var startIndex = this.parent.enableVirtualization && args ? args.startIndex : 0;\n startIndex = this.parent.enableInfiniteScrolling && args ? this.getInfiniteIndex(args) : startIndex;\n if (this.parent.enableImmutableMode && args && args.startIndex) {\n startIndex = args.startIndex;\n }\n for (var i = 0, len = Object.keys(data).length; i < len; i++, startIndex++) {\n rows[parseInt(i.toString(), 10)] = this.generateRow(data[parseInt(i.toString(), 10)], startIndex);\n }\n return rows;\n };\n RowModelGenerator.prototype.ensureColumns = function () {\n //TODO: generate dummy column for group, detail here;\n var cols = [];\n if (this.parent.detailTemplate || this.parent.childGrid) {\n var args = {};\n this.parent.notify(events.detailIndentCellInfo, args);\n cols.push(this.generateCell(args, null, CellType.DetailExpand));\n }\n if (this.parent.isRowDragable()) {\n cols.push(this.generateCell({}, null, CellType.RowDragIcon));\n }\n return cols;\n };\n RowModelGenerator.prototype.generateRow = function (data, index, cssClass, indent, pid, tIndex, parentUid) {\n var options = {};\n options.foreignKeyData = {};\n options.uid = getUid('grid-row');\n options.data = data;\n options.index = index;\n options.indent = indent;\n options.tIndex = tIndex;\n options.isDataRow = true;\n options.parentGid = pid;\n options.parentUid = parentUid;\n if (this.parent.isPrinting) {\n if (this.parent.hierarchyPrintMode === 'All') {\n options.isExpand = true;\n }\n else if (this.parent.hierarchyPrintMode === 'Expanded' && this.parent.expandedRows && this.parent.expandedRows[parseInt(index.toString(), 10)]) {\n options.isExpand = this.parent.expandedRows[parseInt(index.toString(), 10)].isExpand;\n }\n }\n options.cssClass = cssClass;\n options.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n options.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n options.isSelected = this.parent.getSelectedRowIndexes().indexOf(index) > -1;\n this.refreshForeignKeyRow(options);\n var cells = this.ensureColumns();\n var row = new Row(options, this.parent);\n row.cells = this.parent.getFrozenMode() === 'Right' ? this.generateCells(options).concat(cells)\n : cells.concat(this.generateCells(options));\n return row;\n };\n RowModelGenerator.prototype.refreshForeignKeyRow = function (options) {\n var foreignKeyColumns = this.parent.getForeignKeyColumns();\n for (var i = 0; i < foreignKeyColumns.length; i++) {\n setValue(foreignKeyColumns[parseInt(i.toString(), 10)].field, getForeignData(foreignKeyColumns[parseInt(i.toString(), 10)], options.data), options.foreignKeyData);\n }\n };\n RowModelGenerator.prototype.generateCells = function (options) {\n var dummies = this.parent.getColumns();\n var tmp = [];\n for (var i = 0; i < dummies.length; i++) {\n tmp.push(this.generateCell(dummies[parseInt(i.toString(), 10)], options.uid, isNullOrUndefined(dummies[parseInt(i.toString(), 10)].commands) ? undefined : CellType.CommandColumn, null, i, options.foreignKeyData));\n }\n return tmp;\n };\n /**\n *\n * @param {Column} column - Defines column details\n * @param {string} rowId - Defines row id\n * @param {CellType} cellType - Defines cell type\n * @param {number} colSpan - Defines colSpan\n * @param {number} oIndex - Defines index\n * @param {Object} foreignKeyData - Defines foreign key data\n * @returns {Cell} returns cell model\n * @hidden\n */\n RowModelGenerator.prototype.generateCell = function (column, rowId, cellType, colSpan, oIndex, foreignKeyData) {\n var opt = {\n 'visible': column.visible,\n 'isDataCell': !isNullOrUndefined(column.field || column.template),\n 'isTemplate': !isNullOrUndefined(column.template),\n 'rowID': rowId,\n 'column': column,\n 'cellType': !isNullOrUndefined(cellType) ? cellType : CellType.Data,\n 'colSpan': colSpan,\n 'commands': column.commands,\n 'isForeignKey': column.isForeignColumn && column.isForeignColumn(),\n 'foreignKeyData': column.isForeignColumn && column.isForeignColumn() && getValue(column.field, foreignKeyData)\n };\n if (opt.isDataCell || opt.column.type === 'checkbox' || opt.commands) {\n opt.index = oIndex;\n }\n return new Cell(opt);\n };\n RowModelGenerator.prototype.refreshRows = function (input) {\n for (var i = 0; i < input.length; i++) {\n this.refreshForeignKeyRow(input[parseInt(i.toString(), 10)]);\n input[parseInt(i.toString(), 10)].cells = this.generateCells(input[parseInt(i.toString(), 10)]);\n }\n return input;\n };\n RowModelGenerator.prototype.getInfiniteIndex = function (args) {\n return args.requestType === 'infiniteScroll' || args.requestType === 'delete' || args.action === 'add'\n ? (isNullOrUndefined(args.startIndex) ? args['index'] : args.startIndex) : 0;\n };\n return RowModelGenerator;\n}());\nexport { RowModelGenerator };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Row } from '../models/row';\nimport { Column } from '../models/column';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { calculateAggregate, getUid } from '../base/util';\nimport { CellType } from '../base/enum';\nimport { Cell } from '../models/cell';\n/**\n * Summary row model generator\n *\n * @hidden\n */\nvar SummaryModelGenerator = /** @class */ (function () {\n /**\n * Constructor for Summary row model generator\n *\n * @param {IGrid} parent - specifies the IGrid\n */\n function SummaryModelGenerator(parent) {\n this.parent = parent;\n }\n SummaryModelGenerator.prototype.getData = function () {\n var _this = this;\n var rows = [];\n var row = this.parent.aggregates.slice();\n for (var i = 0; i < row.length; i++) {\n var columns = row[parseInt(i.toString(), 10)].columns.filter(function (column) {\n return !(column.footerTemplate || column.groupFooterTemplate || column.groupCaptionTemplate)\n || _this.columnSelector(column);\n });\n if (columns.length) {\n rows.push({ columns: columns });\n }\n }\n return rows;\n };\n SummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.footerTemplate !== undefined;\n };\n SummaryModelGenerator.prototype.getColumns = function (start) {\n var columns = [];\n if (this.parent.detailTemplate || !isNullOrUndefined(this.parent.childGrid)) {\n columns.push(new Column({}));\n }\n if (this.parent.allowGrouping) {\n for (var i = 0; i < this.parent.groupSettings.columns.length; i++) {\n columns.push(new Column({}));\n }\n }\n if (this.parent.isRowDragable() && !start) {\n columns.push(new Column({}));\n }\n columns.push.apply(columns, this.parent.getColumns());\n return columns;\n };\n SummaryModelGenerator.prototype.generateRows = function (input, args, start, end, columns) {\n if (input.length === 0) {\n if (args === undefined || !(args.count || args.loadSummaryOnEmpty)) {\n return [];\n }\n }\n var data = this.buildSummaryData(input, args);\n var rows = [];\n var row = this.getData();\n for (var i = 0; i < row.length; i++) {\n rows.push(this.getGeneratedRow(row[parseInt(i.toString(), 10)], data[parseInt(i.toString(), 10)], args ? args.level : undefined, start, end, args ? args.parentUid : undefined, columns));\n }\n return rows;\n };\n SummaryModelGenerator.prototype.getGeneratedRow = function (summaryRow, data, raw, start, end, parentUid, columns) {\n var tmp = [];\n var indents = this.getIndentByLevel();\n var isDetailGridAlone = !isNullOrUndefined(this.parent.childGrid);\n var indentLength = this.parent.getIndentCount();\n if (this.parent.groupSettings.columns.length && this.parent.allowRowDragAndDrop) {\n indents.push('e-indentcelltop');\n }\n else if (this.parent.isRowDragable() && !start) {\n indents = ['e-indentcelltop'];\n }\n var values = columns ? columns : this.getColumns(start);\n for (var i = 0; i < values.length; i++) {\n tmp.push(this.getGeneratedCell(values[parseInt(i.toString(), 10)], summaryRow, i >= indentLength ? this.getCellType() :\n i === 0 && this.parent.childGrid ? CellType.DetailFooterIntent : CellType.Indent, indents[parseInt(i.toString(), 10)], isDetailGridAlone));\n }\n var row = new Row({ data: data, attributes: { class: 'e-summaryrow' } });\n row.cells = tmp;\n row.uid = getUid('grid-row');\n row.parentUid = parentUid;\n row.isAggregateRow = true;\n row.visible = tmp.some(function (cell) { return cell.isDataCell && cell.visible; });\n return row;\n };\n SummaryModelGenerator.prototype.getGeneratedCell = function (column, summaryRow, cellType, indent, isDetailGridAlone) {\n //Get the summary column by display\n var sColumn = summaryRow.columns.filter(function (scolumn) { return scolumn.columnName === column.field; })[0];\n var attrs = {\n 'style': { 'textAlign': column.textAlign },\n 'e-mappinguid': column.uid, index: column.index\n };\n if (indent) {\n attrs.class = indent;\n }\n if (isNullOrUndefined(indent) && isDetailGridAlone) {\n attrs.class = 'e-detailindentcelltop';\n }\n var opt = {\n 'visible': column.visible,\n 'isDataCell': !isNullOrUndefined(sColumn),\n 'isTemplate': sColumn && !isNullOrUndefined(sColumn.footerTemplate\n || sColumn.groupFooterTemplate || sColumn.groupCaptionTemplate),\n 'column': sColumn || {},\n 'attributes': attrs,\n 'cellType': cellType\n };\n opt.column.headerText = column.headerText;\n return new Cell(opt);\n };\n SummaryModelGenerator.prototype.buildSummaryData = function (data, args) {\n var dummy = [];\n var summaryRows = this.getData();\n var single = {};\n for (var i = 0; i < summaryRows.length; i++) {\n single = {};\n var column = summaryRows[parseInt(i.toString(), 10)].columns;\n for (var j = 0; j < column.length; j++) {\n single = this.setTemplate(column[parseInt(j.toString(), 10)], (args && args.aggregates) ? args : data, single);\n }\n dummy.push(single);\n }\n return dummy;\n };\n SummaryModelGenerator.prototype.getIndentByLevel = function () {\n return this.parent.groupSettings.columns.map(function () { return 'e-indentcelltop'; });\n };\n SummaryModelGenerator.prototype.setTemplate = function (column, data, single) {\n var types = column.type;\n var helper = {};\n var formatFn = column.getFormatter() || (function () { return function (a) { return a; }; })();\n var group = data;\n if (!(types instanceof Array)) {\n types = [column.type];\n }\n for (var i = 0; i < types.length; i++) {\n var key = column.field + ' - ' + types[parseInt(i.toString(), 10)].toLowerCase();\n var disp = column.columnName;\n var disablePageWiseAggregatesGroup = this.parent.groupSettings.disablePageWiseAggregates\n && this.parent.groupSettings.columns.length && group.items ? true : false;\n var val = (types[parseInt(i.toString(), 10)] !== 'Custom' || disablePageWiseAggregatesGroup) && group.aggregates\n && key in group.aggregates ? group.aggregates[\"\" + key] :\n calculateAggregate(types[parseInt(i.toString(), 10)], group.aggregates ? group : data, column, this.parent);\n single[\"\" + disp] = single[\"\" + disp] || {};\n single[\"\" + disp][\"\" + key] = val;\n single[\"\" + disp][types[parseInt(i.toString(), 10)]] = !isNullOrUndefined(val) ? formatFn(val) : ' ';\n if (group.field) {\n single[\"\" + disp].field = group.field;\n single[\"\" + disp].key = group.key;\n }\n }\n helper.format = column.getFormatter();\n column.setTemplate(helper);\n return single;\n };\n SummaryModelGenerator.prototype.getCellType = function () {\n return CellType.Summary;\n };\n return SummaryModelGenerator;\n}());\nexport { SummaryModelGenerator };\nvar GroupSummaryModelGenerator = /** @class */ (function (_super) {\n __extends(GroupSummaryModelGenerator, _super);\n function GroupSummaryModelGenerator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n GroupSummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.groupFooterTemplate !== undefined;\n };\n GroupSummaryModelGenerator.prototype.getIndentByLevel = function (level) {\n if (level === void 0) { level = this.parent.groupSettings.columns.length; }\n if (this.parent.allowRowDragAndDrop && this.parent.groupSettings.columns.length) {\n level -= 1;\n }\n return this.parent.groupSettings.columns.map(function (v, indx) { return indx <= level - 1 ? '' : 'e-indentcelltop'; });\n };\n GroupSummaryModelGenerator.prototype.getCellType = function () {\n return CellType.GroupSummary;\n };\n return GroupSummaryModelGenerator;\n}(SummaryModelGenerator));\nexport { GroupSummaryModelGenerator };\nvar CaptionSummaryModelGenerator = /** @class */ (function (_super) {\n __extends(CaptionSummaryModelGenerator, _super);\n function CaptionSummaryModelGenerator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n CaptionSummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.groupCaptionTemplate !== undefined;\n };\n CaptionSummaryModelGenerator.prototype.getData = function () {\n var initVal = { columns: [] };\n return [_super.prototype.getData.call(this).reduce(function (prev, cur) {\n prev.columns = prev.columns.concat(cur.columns);\n return prev;\n }, initVal)];\n };\n CaptionSummaryModelGenerator.prototype.isEmpty = function () {\n return (this.getData()[0].columns || []).length === 0;\n };\n CaptionSummaryModelGenerator.prototype.getCellType = function () {\n return CellType.CaptionSummary;\n };\n return CaptionSummaryModelGenerator;\n}(SummaryModelGenerator));\nexport { CaptionSummaryModelGenerator };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Row } from '../models/row';\nimport { isNullOrUndefined, extend, setValue } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { GroupSummaryModelGenerator, CaptionSummaryModelGenerator } from '../services/summary-model-generator';\nimport { getForeignData, getUid } from '../../grid/base/util';\n/**\n * GroupModelGenerator is used to generate group caption rows and data rows.\n *\n * @hidden\n */\nvar GroupModelGenerator = /** @class */ (function (_super) {\n __extends(GroupModelGenerator, _super);\n function GroupModelGenerator(parent) {\n var _this = _super.call(this, parent) || this;\n _this.rows = [];\n /** @hidden */\n _this.index = 0;\n _this.infiniteChildCount = 0;\n _this.renderInfiniteAgg = true;\n _this.parent = parent;\n _this.summaryModelGen = new GroupSummaryModelGenerator(parent);\n _this.captionModelGen = new CaptionSummaryModelGenerator(parent);\n return _this;\n }\n GroupModelGenerator.prototype.generateRows = function (data, args) {\n if (this.parent.groupSettings.columns.length === 0) {\n return _super.prototype.generateRows.call(this, data, args);\n }\n this.isInfiniteScroll = (args.requestType === 'infiniteScroll');\n this.rows = [];\n this.index = this.parent.enableVirtualization || this.isInfiniteScroll ? args.startIndex : 0;\n for (var i = 0, len = data.length; i < len; i++) {\n this.infiniteChildCount = 0;\n this.renderInfiniteAgg = true;\n this.getGroupedRecords(0, data[parseInt(i.toString(), 10)], data.level, i, undefined, this.rows.length);\n }\n this.index = 0;\n if (this.parent.isCollapseStateEnabled()) {\n this.ensureRowVisibility();\n }\n return this.rows;\n };\n GroupModelGenerator.prototype.getGroupedRecords = function (index, data, raw, parentid, childId, tIndex, parentUid) {\n var _a;\n var level = raw;\n if (isNullOrUndefined(data.items)) {\n if (isNullOrUndefined(data.GroupGuid)) {\n this.rows = this.rows.concat(this.generateDataRows(data, index, parentid, this.rows.length, parentUid));\n }\n else {\n for (var j = 0, len = data.length; j < len; j++) {\n this.getGroupedRecords(index, data[parseInt(j.toString(), 10)], data.level, parentid, index, this.rows.length, parentUid);\n }\n }\n }\n else {\n var preCaption = void 0;\n var captionRow = this.generateCaptionRow(data, index, parentid, childId, tIndex, parentUid);\n if (this.isInfiniteScroll) {\n preCaption = this.getPreCaption(index, captionRow.data.key);\n }\n if (!preCaption) {\n this.rows = this.rows.concat(captionRow);\n }\n else {\n captionRow.uid = preCaption.uid;\n }\n if (data.items && data.items.length) {\n this.getGroupedRecords(index + 1, data.items, data.items.level, parentid, index + 1, this.rows.length, captionRow.uid);\n }\n if (this.parent.aggregates.length && this.isRenderAggregate(captionRow)) {\n var rowCnt = this.rows.length;\n (_a = this.rows).push.apply(_a, this.summaryModelGen.generateRows(data, { level: level, parentUid: captionRow.uid }));\n for (var i = rowCnt - 1; i >= 0; i--) {\n if (this.rows[parseInt(i.toString(), 10)].isCaptionRow) {\n this.rows[parseInt(i.toString(), 10)].aggregatesCount = this.rows.length - rowCnt;\n }\n else if (!this.rows[parseInt(i.toString(), 10)].isCaptionRow && !this.rows[parseInt(i.toString(), 10)].isDataRow) {\n break;\n }\n }\n }\n if (preCaption) {\n this.setInfiniteRowVisibility(preCaption);\n }\n }\n };\n GroupModelGenerator.prototype.isRenderAggregate = function (data) {\n if (this.parent.enableInfiniteScrolling) {\n if (!this.renderInfiniteAgg) {\n return false;\n }\n this.getPreCaption(data.indent, data.data.key);\n this.renderInfiniteAgg = data.data.count === this.infiniteChildCount;\n return this.renderInfiniteAgg;\n }\n return !this.parent.enableInfiniteScrolling;\n };\n GroupModelGenerator.prototype.getPreCaption = function (indent, key) {\n var rowObj = this.parent.getRowsObject().concat(this.rows);\n var preCap;\n this.infiniteChildCount = 0;\n var i = rowObj.length;\n while (i--) {\n if (rowObj[parseInt(i.toString(), 10)].isCaptionRow && rowObj[parseInt(i.toString(), 10)].indent === indent) {\n var groupKey = rowObj[parseInt(i.toString(), 10)].data.key;\n if ((groupKey.toString() === key.toString() && groupKey instanceof Date) || groupKey === key) {\n preCap = rowObj[parseInt(i.toString(), 10)];\n }\n }\n if (rowObj[parseInt(i.toString(), 10)].indent === indent || rowObj[parseInt(i.toString(), 10)].indent < indent) {\n break;\n }\n if (rowObj[parseInt(i.toString(), 10)].indent === indent + 1) {\n this.infiniteChildCount++;\n }\n }\n return preCap;\n };\n GroupModelGenerator.prototype.getCaptionRowCells = function (field, indent, data) {\n var cells = [];\n var visibles = [];\n var column = this.parent.getColumnByField(field);\n var indexes = this.parent.getColumnIndexesInView();\n if (this.parent.enableColumnVirtualization) {\n column = this.parent.columns.filter(function (c) { return c.field === field; })[0];\n }\n var groupedLen = this.parent.groupSettings.columns.length;\n var gObj = this.parent;\n if (!this.parent.enableColumnVirtualization || indexes.indexOf(indent) !== -1) {\n for (var i = 0; i < indent; i++) {\n cells.push(this.generateIndentCell());\n }\n cells.push(this.generateCell({}, null, CellType.Expand));\n }\n indent = this.parent.enableColumnVirtualization ? 1 :\n (this.parent.getVisibleColumns().length + groupedLen + (gObj.detailTemplate || gObj.childGrid ? 1 : 0) -\n indent + (this.parent.getVisibleColumns().length ? -1 : 0));\n //Captionsummary cells will be added here.\n if (this.parent.aggregates.length && !this.captionModelGen.isEmpty()) {\n var captionCells = this.captionModelGen.generateRows(data)[0];\n extend(data, captionCells.data);\n var cIndex_1 = 0;\n captionCells.cells.some(function (cell, index) { cIndex_1 = index; return cell.visible && cell.isDataCell; });\n visibles = captionCells.cells.slice(cIndex_1).filter(function (cell) { return cell.visible; });\n if (captionCells.visible && visibles[0].column.field === this.parent.getVisibleColumns()[0].field) {\n visibles = visibles.slice(1);\n }\n if (this.parent.getVisibleColumns().length === 1) {\n visibles = [];\n }\n indent = indent - visibles.length;\n }\n var cols = (!this.parent.enableColumnVirtualization ? [column] : this.parent.getColumns());\n var wFlag = true;\n for (var j = 0; j < cols.length; j++) {\n var tmpFlag = wFlag && indexes.indexOf(indent) !== -1;\n if (tmpFlag) {\n wFlag = false;\n }\n var cellType = !this.parent.enableColumnVirtualization || tmpFlag ?\n CellType.GroupCaption : CellType.GroupCaptionEmpty;\n indent = this.parent.enableColumnVirtualization && cellType === CellType.GroupCaption ? indent + groupedLen : indent;\n if (gObj.isRowDragable()) {\n indent++;\n }\n cells.push(this.generateCell(column, null, cellType, indent));\n }\n cells.push.apply(cells, visibles);\n return cells;\n };\n /**\n * @param {GroupedData} data - specifies the data\n * @param {number} indent - specifies the indent\n * @param {number} parentID - specifies the parentID\n * @param {number} childID - specifies the childID\n * @param {number} tIndex - specifies the TIndex\n * @param {string} parentUid - specifies the ParentUid\n * @returns {Row} returns the Row object\n * @hidden\n */\n GroupModelGenerator.prototype.generateCaptionRow = function (data, indent, parentID, childID, tIndex, parentUid) {\n var options = {};\n var records = 'records';\n var col = this.parent.getColumnByField(data.field);\n options.data = extend({}, data);\n if (col) {\n options.data.field = data.field;\n }\n options.isDataRow = false;\n options.isExpand = !this.parent.groupSettings.enableLazyLoading && !this.parent.isCollapseStateEnabled();\n options.parentGid = parentID;\n options.childGid = childID;\n options.tIndex = tIndex;\n options.isCaptionRow = true;\n options.parentUid = parentUid;\n options.gSummary = !isNullOrUndefined(data.items[\"\" + records]) ? data.items[\"\" + records].length : data.items.length;\n options.uid = getUid('grid-row');\n var row = new Row(options);\n row.indent = indent;\n this.getForeignKeyData(row);\n row.cells = this.getCaptionRowCells(data.field, indent, row.data);\n return row;\n };\n GroupModelGenerator.prototype.getForeignKeyData = function (row) {\n var data = row.data;\n var col = this.parent.getColumnByField(data.field);\n if (col && col.isForeignColumn && col.isForeignColumn()) {\n var fkValue = (isNullOrUndefined(data.key) ? '' : col.valueAccessor(col.foreignKeyValue, getForeignData(col, {}, data.key)[0], col));\n setValue('foreignKey', fkValue, row.data);\n }\n };\n /**\n * @param {Object[]} data - specifies the data\n * @param {number} indent - specifies the indent\n * @param {number} childID - specifies the childID\n * @param {number} tIndex - specifies the tIndex\n * @param {string} parentUid - specifies the ParentUid\n * @returns {Row[]} returns the row object\n * @hidden\n */\n GroupModelGenerator.prototype.generateDataRows = function (data, indent, childID, tIndex, parentUid) {\n var rows = [];\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0, len = data.length; i < len; i++, tIndex++) {\n rows[parseInt(i.toString(), 10)] = this.generateRow(data[parseInt(i.toString(), 10)], this.index, i ? undefined : 'e-firstchildrow', indent, childID, tIndex, parentUid);\n for (var j = 0; j < indent; j++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(indent) === -1) {\n continue;\n }\n rows[parseInt(i.toString(), 10)].cells.unshift(this.generateIndentCell());\n }\n this.index++;\n }\n return rows;\n };\n GroupModelGenerator.prototype.generateIndentCell = function () {\n return this.generateCell({}, null, CellType.Indent);\n };\n GroupModelGenerator.prototype.refreshRows = function (input) {\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0; i < input.length; i++) {\n if (input[parseInt(i.toString(), 10)].isDataRow) {\n input[parseInt(i.toString(), 10)].cells = this.generateCells(input[parseInt(i.toString(), 10)]);\n for (var j = 0; j < input[parseInt(i.toString(), 10)].indent; j++) {\n if (this.parent.enableColumnVirtualization\n && indexes.indexOf(input[parseInt(i.toString(), 10)].indent) === -1) {\n continue;\n }\n input[parseInt(i.toString(), 10)].cells.unshift(this.generateIndentCell());\n }\n }\n else {\n var cRow = this.generateCaptionRow(input[parseInt(i.toString(), 10)].data, input[parseInt(i.toString(), 10)].indent);\n input[parseInt(i.toString(), 10)].cells = cRow.cells;\n }\n }\n return input;\n };\n GroupModelGenerator.prototype.setInfiniteRowVisibility = function (caption) {\n if (!caption.isExpand || caption.visible === false) {\n for (var _i = 0, _a = this.rows; _i < _a.length; _i++) {\n var row = _a[_i];\n if (row.parentUid === caption.uid) {\n row.visible = false;\n if (row.isCaptionRow) {\n this.setInfiniteRowVisibility(row);\n }\n }\n }\n }\n };\n GroupModelGenerator.prototype.ensureRowVisibility = function () {\n for (var i = 0; i < this.rows.length; i++) {\n var row = this.rows[parseInt(i.toString(), 10)];\n if (!row.isCaptionRow) {\n continue;\n }\n for (var j = i + 1; j < this.rows.length; j++) {\n var childRow = this.rows[parseInt(j.toString(), 10)];\n if (row.uid === childRow.parentUid) {\n this.rows[parseInt(j.toString(), 10)].visible = row.isExpand;\n }\n }\n }\n };\n return GroupModelGenerator;\n}(RowModelGenerator));\nexport { GroupModelGenerator };\n","import { Droppable } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, remove, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { getUpdateUsingRaf, appendChildren, setDisplayValue, clearReactVueTemplates, getScrollBarWidth, getScrollWidth, getTransformValues } from '../base/util';\nimport * as events from '../base/constant';\nimport { RowRenderer } from './row-renderer';\nimport { CellMergeRender } from './cell-merge-renderer';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { GroupModelGenerator } from '../services/group-model-generator';\nimport { isGroupAdaptive, addFixedColumnBorder } from '../base/util';\nimport * as literals from '../base/string-literals';\n// eslint-disable-next-line valid-jsdoc\n/**\n * Content module is used to render grid content\n *\n * @hidden\n */\nvar ContentRender = /** @class */ (function () {\n /**\n * Constructor for content renderer module\n *\n * @param {IGrid} parent - specifies the Igrid\n * @param {ServiceLocator} serviceLocator - specifies the service locator\n */\n function ContentRender(parent, serviceLocator) {\n var _this = this;\n this.rows = [];\n this.freezeRows = [];\n this.movableRows = [];\n this.freezeRowElements = [];\n /** @hidden */\n this.currentInfo = {};\n /** @hidden */\n this.prevCurrentView = [];\n this.isLoaded = true;\n this.drop = function (e) {\n _this.parent.notify(events.columnDrop, { target: e.target, droppedElement: e.droppedElement });\n remove(e.droppedElement);\n };\n this.infiniteCache = {};\n /** @hidden */\n this.visibleRows = [];\n this.visibleFrozenRows = [];\n this.rightFreezeRows = [];\n this.isAddRows = false;\n this.isInfiniteFreeze = false;\n this.useGroupCache = false;\n /** @hidden */\n this.tempFreezeRows = [];\n this.rafCallback = function (args) {\n var arg = args;\n return function () {\n _this.ariaService.setBusy(_this.getPanel().querySelector('.' + literals.content), false);\n if (_this.parent.isDestroyed) {\n return;\n }\n var rows = _this.rows.slice(0);\n if (_this.parent.enableInfiniteScrolling) {\n if (_this.parent.groupSettings.enableLazyLoading) {\n for (var i = 0; i < _this.visibleRows.length; i++) {\n _this.setRowsInLazyGroup(_this.visibleRows[parseInt(i.toString(), 10)], i);\n }\n }\n rows = _this.parent.getRowsObject();\n var prevPage = arg.prevPage;\n if (_this.parent.infiniteScrollSettings.enableCache && prevPage) {\n var maxBlock = _this.parent.infiniteScrollSettings.maxBlocks;\n rows = [];\n var rowIdx = (parseInt(_this.rowElements[0].getAttribute('data-rowindex'), 10) + 1);\n var startIdx = Math.ceil(rowIdx / _this.parent.pageSettings.pageSize);\n for (var i = 0, count = startIdx; i < maxBlock; i++, count++) {\n if (_this.infiniteCache[parseInt(count.toString(), 10)]) {\n rows = rows.concat(_this.infiniteCache[parseInt(count.toString(), 10)]);\n }\n }\n }\n }\n _this.parent.notify(events.contentReady, { rows: rows, args: arg });\n if (_this.parent.editSettings.showAddNewRow && _this.parent.addNewRowFocus) {\n _this.parent.notify(events.showAddNewRowFocus, {});\n _this.parent.addNewRowFocus = false;\n }\n if (_this.parent.autoFit) {\n _this.parent.preventAdjustColumns();\n }\n if (!_this.parent.isInitialLoad) {\n _this.parent.focusModule.setFirstFocusableTabIndex();\n }\n if (_this.isLoaded) {\n _this.parent.isManualRefresh = false;\n if (_this.parent.enableInfiniteScrolling && _this.parent.groupSettings.enableLazyLoading && args.requestType === 'sorting') {\n _this.parent.infiniteScrollModule['groupCaptionAction'] = undefined;\n }\n var isReactChild = _this.parent.parentDetails && _this.parent.parentDetails.parentInstObj &&\n _this.parent.parentDetails.parentInstObj.isReact;\n if ((_this.parent.isReact || isReactChild) && _this.parent.element.querySelectorAll('.e-templatecell').length) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_1 = _this;\n thisRef_1.parent.renderTemplates(function () {\n thisRef_1.parent.trigger(events.dataBound, {}, function () {\n if (thisRef_1.parent.allowTextWrap) {\n thisRef_1.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n });\n });\n }\n else {\n _this.parent.trigger(events.dataBound, {}, function () {\n if (_this.parent.allowTextWrap) {\n _this.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n });\n }\n if (_this.parent.allowTextWrap && _this.parent.height === 'auto') {\n if (_this.parent.getContentTable().scrollHeight > _this.parent.getContent().clientHeight) {\n _this.parent.scrollModule.setPadding();\n }\n else {\n _this.parent.scrollModule.removePadding();\n }\n }\n }\n if (arg) {\n var action = (arg.requestType || '').toLowerCase() + '-complete';\n _this.parent.notify(action, arg);\n if (args.requestType === 'batchsave') {\n args.cancel = false;\n _this.parent.trigger(events.actionComplete, args);\n }\n }\n if (_this.isLoaded) {\n _this.parent.hideSpinner();\n }\n };\n };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.widthService = serviceLocator.getService('widthService');\n this.ariaService = this.serviceLocator.getService('ariaService');\n this.parent.enableDeepCompare = this.parent.getDataModule().isRemote();\n this.generator = this.getModelGenerator();\n if (this.parent.isDestroyed) {\n return;\n }\n if (!this.parent.enableColumnVirtualization && !this.parent.enableVirtualization\n && !this.parent.groupSettings.enableLazyLoading) {\n this.parent.on(events.columnVisibilityChanged, this.setVisible, this);\n }\n this.parent.on(events.colGroupRefresh, this.colGroupRefresh, this);\n this.parent.on(events.uiUpdate, this.enableAfterRender, this);\n this.parent.on(events.refreshInfiniteModeBlocks, this.refreshContentRows, this);\n this.parent.on(events.beforeCellFocused, this.beforeCellFocused, this);\n this.parent.on(events.destroy, this.droppableDestroy, this);\n }\n ContentRender.prototype.beforeCellFocused = function (e) {\n if (e.byKey && (e.keyArgs.action === 'upArrow' || e.keyArgs.action === 'downArrow')) {\n this.pressedKey = e.keyArgs.action;\n }\n else {\n this.pressedKey = undefined;\n }\n };\n /**\n * The function is used to render grid content div\n *\n * @returns {void}\n */\n ContentRender.prototype.renderPanel = function () {\n var gObj = this.parent;\n var div = this.parent.element.querySelector('.' + literals.gridContent);\n if (div) {\n this.ariaService.setOptions(this.parent.element.querySelector('.' + literals.content), { busy: false });\n this.setPanel(div);\n return;\n }\n div = this.parent.createElement('div', { className: literals.gridContent });\n var innerDiv = this.parent.createElement('div', {\n className: literals.content\n });\n this.ariaService.setOptions(innerDiv, { busy: false });\n if (this.parent.enableColumnVirtualization && this.parent.isFrozenGrid()) {\n this.renderHorizontalScrollbar(div);\n innerDiv.classList.add('e-virtual-content');\n }\n div.appendChild(innerDiv);\n this.setPanel(div);\n gObj.element.appendChild(div);\n };\n ContentRender.prototype.renderHorizontalScrollbar = function (element) {\n var parent = this.parent.createElement('div', { className: 'e-movablescrollbar' });\n var child = this.parent.createElement('div', { className: 'e-movablechild' });\n var scrollbarHeight = getScrollBarWidth().toString();\n this.setScrollbarHeight(child, scrollbarHeight);\n this.setScrollbarHeight(parent, scrollbarHeight);\n parent.appendChild(child);\n element.appendChild(parent);\n };\n ContentRender.prototype.setScrollbarHeight = function (ele, height) {\n ele.style.minHeight = height + 'px';\n ele.style.maxHeight = height + 'px';\n };\n /**\n * The function is used to render grid content table\n *\n * @returns {void}\n */\n ContentRender.prototype.renderTable = function () {\n var contentDiv = this.getPanel();\n var virtualTable = contentDiv.querySelector('.e-virtualtable');\n var virtualTrack = contentDiv.querySelector('.e-virtualtrack');\n if (this.parent.enableVirtualization && !isNullOrUndefined(virtualTable) && !isNullOrUndefined(virtualTrack)) {\n remove(virtualTable);\n remove(virtualTrack);\n }\n contentDiv.appendChild(this.createContentTable('_content_table'));\n this.setTable(contentDiv.querySelector('.' + literals.table));\n if (this.parent.selectionSettings.type === 'Multiple') {\n this.ariaService.setOptions(this.parent.element, {\n multiselectable: true\n });\n }\n this.initializeContentDrop();\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().classList.add('e-frozenhdr');\n }\n };\n /**\n * The function is used to create content table elements\n *\n * @param {string} id - specifies the id\n * @returns {Element} returns the element\n * @hidden\n */\n ContentRender.prototype.createContentTable = function (id) {\n var innerDiv = this.getPanel().firstElementChild;\n if (this.getTable()) {\n remove(this.getTable());\n }\n var table = innerDiv.querySelector('.' + literals.table) ? innerDiv.querySelector('.' + literals.table) :\n this.parent.createElement('table', {\n className: literals.table, attrs: {\n cellspacing: '0.25px', role: 'presentation',\n id: this.parent.element.id + id\n }\n });\n this.setColGroup(this.parent.getHeaderTable().querySelector(literals.colGroup).cloneNode(true));\n table.appendChild(this.getColGroup());\n table.appendChild(this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } }));\n innerDiv.appendChild(table);\n return innerDiv;\n };\n /**\n * Refresh the content of the Grid.\n *\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n */\n // tslint:disable-next-line:max-func-body-length\n ContentRender.prototype.refreshContentRows = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n var gObj = this.parent;\n if (gObj.currentViewData.length === 0) {\n return;\n }\n if (gObj.editSettings && gObj.editModule && gObj.editSettings.mode === 'Batch' && gObj.editModule.formObj\n && gObj.editSettings.showConfirmDialog === false) {\n gObj.editModule.destroyForm();\n }\n var dataSource = this.currentMovableRows || gObj.currentViewData;\n var isReact = gObj.isReact && !isNullOrUndefined(gObj.rowTemplate);\n var frag = isReact ? gObj.createElement(literals.tbody, { attrs: { role: 'rowgroup' } }) : document.createDocumentFragment();\n if (!this.initialPageRecords) {\n this.initialPageRecords = extend([], dataSource);\n }\n var hdrfrag = isReact ? gObj.createElement(literals.tbody, { attrs: { role: 'rowgroup' } }) : document.createDocumentFragment();\n var refFrag;\n var refHdrfrag;\n if (gObj.isReact && gObj.rowTemplate) {\n refFrag = frag;\n refHdrfrag = hdrfrag;\n }\n var columns = gObj.getColumns();\n var tr;\n var hdrTbody;\n var trElement;\n var row = new RowRenderer(this.serviceLocator, null, this.parent);\n var isInfiniteScroll = this.parent.enableInfiniteScrolling\n && args.requestType === 'infiniteScroll';\n var isColumnVirtualInfiniteProcess = this.isInfiniteColumnvirtualization() && args.requestType !== 'virtualscroll';\n gObj.notify(events.destroyChildGrid, {});\n this.rowElements = [];\n this.rows = [];\n this.tempFreezeRows = [];\n var tbdy;\n var tableName;\n var isGroupFrozenHdr = this.parent.frozenRows && this.parent.groupSettings.columns.length ? true : false;\n if (isGroupAdaptive(gObj)) {\n if (['sorting', 'filtering', 'searching', 'grouping', 'ungrouping', 'reorder', 'save', 'delete']\n .some(function (value) { return args.requestType === value; })) {\n this.emptyVcRows();\n }\n }\n var modelData;\n modelData = this.checkCache(modelData, args);\n if (!this.isAddRows && !this.useGroupCache) {\n modelData = this.generator.generateRows(dataSource, args);\n }\n this.setGroupCache(modelData, args);\n this.parent.notify(events.setInfiniteCache, { isInfiniteScroll: isInfiniteScroll, modelData: modelData, args: args });\n var isFrozenLeft = false;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var registeredTemplates = this.parent.registeredTemplate;\n if (!(args.requestType === 'infiniteScroll' && !this.parent.infiniteScrollSettings.enableCache) && registeredTemplates\n && registeredTemplates.template && !args.isFrozen && !isFrozenLeft) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var templatetoclear = [];\n for (var i = 0; i < registeredTemplates.template.length; i++) {\n for (var j = 0; j < registeredTemplates.template[parseInt(i.toString(), 10)].rootNodes.length; j++) {\n if (isNullOrUndefined(registeredTemplates.template[parseInt(i.toString(), 10)]\n .rootNodes[parseInt(j.toString(), 10)].parentNode)) {\n templatetoclear.push(registeredTemplates.template[parseInt(i.toString(), 10)]);\n }\n }\n }\n this.parent.destroyTemplate(['template'], templatetoclear);\n }\n if ((this.parent.isReact || this.parent.isVue) && !(args.requestType === 'infiniteScroll' && !this.parent.infiniteScrollSettings.enableCache) && !args.isFrozen) {\n var templates = [\n this.parent.isVue ? 'template' : 'columnTemplate', 'rowTemplate', 'detailTemplate',\n 'captionTemplate', 'commandsTemplate', 'groupFooterTemplate', 'groupCaptionTemplate'\n ];\n if (args.requestType === 'infiniteScroll' && this.parent.infiniteScrollSettings.enableCache) {\n templates = [\n this.parent.isVue ? 'template' : 'columnTemplate', 'commandsTemplate'\n ];\n }\n clearReactVueTemplates(this.parent, templates);\n }\n if (this.parent.enableColumnVirtualization) {\n var cellMerge = new CellMergeRender(this.serviceLocator, this.parent);\n cellMerge.updateVirtualCells(modelData);\n }\n this.tbody = this.getTable().querySelector(literals.tbody);\n var startIndex = 0;\n var blockLoad = true;\n if (isGroupAdaptive(gObj) && gObj.vcRows.length) {\n var top_1 = 'top';\n var scrollTop = !isNullOrUndefined(args.virtualInfo.offsets) ? args.virtualInfo.offsets.top :\n (!isNullOrUndefined(args.scrollTop) ? args.scrollTop[\"\" + top_1] : 0);\n if (scrollTop !== 0) {\n var offsets_1 = gObj.vGroupOffsets;\n var bSize = gObj.pageSettings.pageSize / 2;\n var values = Object.keys(offsets_1).map(function (key) { return offsets_1[\"\" + key]; });\n for (var m = 0; m < values.length; m++) {\n if (scrollTop < values[parseInt(m.toString(), 10)]) {\n if (!isNullOrUndefined(args.virtualInfo) && args.virtualInfo.direction === 'up') {\n startIndex = m > 0 ? ((m - 1) * bSize) : (m * bSize);\n break;\n }\n else {\n startIndex = m * bSize;\n if (this.parent.contentModule.isEndBlock(m) || this.parent.contentModule.isEndBlock(m + 1)) {\n args.virtualInfo.blockIndexes = [m, m + 1];\n }\n break;\n }\n }\n }\n if (Math.round(scrollTop + this.contentPanel.firstElementChild.offsetHeight) >=\n this.contentPanel.firstElementChild.scrollHeight && !args.rowObject) {\n blockLoad = false;\n }\n }\n }\n var isVFFrozenOnly = gObj.frozenRows && this.parent.enableVirtualization\n && args.requestType === 'reorder';\n if ((gObj.frozenRows && args.requestType === 'virtualscroll' && args.virtualInfo.sentinelInfo.axis === 'X') || isVFFrozenOnly) {\n var bIndex = args.virtualInfo.blockIndexes;\n var page = args.virtualInfo.page;\n args.virtualInfo.blockIndexes = [1, 2];\n if (isVFFrozenOnly) {\n args.virtualInfo.page = 1;\n }\n var data = isVFFrozenOnly ? this.initialPageRecords : dataSource;\n var mhdrData = this.vgenerator\n .generateRows(data, args);\n mhdrData.splice(this.parent.frozenRows);\n for (var i = 0; i < this.parent.frozenRows; i++) {\n // mhdrData[parseInt(i.toString(), 10)].cells.splice(0, this.parent.getFrozenColumns());\n tr = row.render(mhdrData[parseInt(i.toString(), 10)], columns);\n addFixedColumnBorder(tr);\n hdrfrag.appendChild(tr);\n }\n args.virtualInfo.blockIndexes = bIndex;\n args.virtualInfo.page = page;\n if (isVFFrozenOnly && args.virtualInfo.page === 1) {\n modelData.splice(0, this.parent.frozenRows);\n }\n }\n this.virtualFrozenHdrRefresh(hdrfrag, modelData, row, args, dataSource, columns);\n if (this.parent.groupSettings.enableLazyLoading && !this.useGroupCache && this.parent.groupSettings.columns.length) {\n (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).refRowsObj[this.parent.pageSettings.currentPage] = [];\n }\n if (this.parent.enableInfiniteScrolling && this.parent.groupSettings.enableLazyLoading && args.requestType === 'delete') { // || (this.parent.infiniteScrollSettings && this.parent.infiniteScrollSettings.enableCache))\n this.visibleRows = [];\n }\n var _loop_1 = function (i, len) {\n this_1.rows.push(modelData[parseInt(i.toString(), 10)]);\n if (this_1.parent.groupSettings.enableLazyLoading && !this_1.useGroupCache && this_1.parent.groupSettings.columns.length) {\n (this_1.parent.enableVirtualization ? this_1.parent.lazyLoadRender :\n this_1.parent.contentModule).refRowsObj[this_1.parent.pageSettings.currentPage].push(modelData[parseInt(i.toString(), 10)]);\n this_1.setRowsInLazyGroup(modelData[parseInt(i.toString(), 10)], i);\n if (isNullOrUndefined(modelData[parseInt(i.toString(), 10)].indent)) {\n return \"continue\";\n }\n }\n this_1.setInfiniteVisibleRows(args, modelData[parseInt(i.toString(), 10)]);\n if (isGroupAdaptive(gObj) && args.virtualInfo && args.virtualInfo.blockIndexes\n && (this_1.rowElements.length >= (args.virtualInfo.blockIndexes.length * this_1.parent.contentModule.getBlockSize()))\n && blockLoad) {\n this_1.parent.currentViewData['records'] = this_1.rows.map(function (m) { return m.data; });\n return \"break\";\n }\n if (!gObj.rowTemplate) {\n tr = row.render(modelData[parseInt(i.toString(), 10)], columns);\n addFixedColumnBorder(tr);\n var isVFreorder = this_1.ensureFrozenHeaderRender(args);\n if (gObj.frozenRows && (i < gObj.frozenRows || isGroupFrozenHdr) && !isInfiniteScroll && args.requestType !== 'virtualscroll' && isVFreorder\n && this_1.ensureVirtualFrozenHeaderRender(args)) {\n hdrfrag.appendChild(tr);\n }\n else {\n frag.appendChild(tr);\n }\n var rowIdx = parseInt(tr.getAttribute('data-rowindex'), 10);\n if (rowIdx + 1 === gObj.frozenRows) {\n isGroupFrozenHdr = false;\n }\n if (modelData[parseInt(i.toString(), 10)].isExpand) {\n gObj.notify(events.expandChildGrid, tr.cells[gObj.groupSettings.columns.length]);\n }\n }\n else {\n var rowTemplateID = gObj.element.id + 'rowTemplate';\n var elements = void 0;\n if (gObj.isReact) {\n var isHeader = gObj.frozenRows && i < gObj.frozenRows;\n var copied = extend({ index: i }, dataSource[parseInt(i.toString(), 10)]);\n gObj.getRowTemplate()(copied, gObj, 'rowTemplate', rowTemplateID, null, null, isHeader ? hdrfrag : frag);\n if (gObj.requireTemplateRef) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_2 = this_1;\n thisRef_2.parent.renderTemplates(function () {\n if (gObj.frozenRows && i < gObj.frozenRows) {\n tr = refHdrfrag.childNodes[parseInt(i.toString(), 10)];\n }\n else {\n trElement = refFrag.childNodes[parseInt(i.toString(), 10)];\n }\n var arg = { data: modelData[parseInt(i.toString(), 10)].data,\n row: trElement ? trElement : tr };\n thisRef_2.parent.trigger(events.rowDataBound, arg);\n if (modelData[parseInt(i.toString(), 10)].isDataRow || (thisRef_2.parent.enableVirtualization &&\n thisRef_2.parent.groupSettings.enableLazyLoading)) {\n thisRef_2.rowElements.push(arg.row);\n }\n thisRef_2.ariaService.setOptions(thisRef_2.parent.element, {\n colcount: gObj.getColumns().length.toString()\n });\n if (i === modelData.length - 1) {\n refFrag = null;\n refHdrfrag = null;\n }\n });\n return \"continue\";\n }\n }\n else {\n elements = gObj.getRowTemplate()(extend({ index: i }, dataSource[parseInt(i.toString(), 10)]), gObj, 'rowTemplate', rowTemplateID, undefined, undefined, undefined, this_1.parent['root']);\n }\n if (!gObj.isReact && elements[0].tagName === 'TBODY') {\n for (var j = 0; j < elements.length; j++) {\n var isTR = elements[parseInt(j.toString(), 10)].nodeName.toLowerCase() === 'tr';\n if (isTR || (elements[parseInt(j.toString(), 10)].querySelectorAll && elements[parseInt(j.toString(), 10)].querySelectorAll('tr').length)) {\n tr = isTR ? elements[parseInt(j.toString(), 10)] : elements[parseInt(j.toString(), 10)].querySelector('tr');\n }\n }\n if (gObj.frozenRows && i < gObj.frozenRows) {\n hdrfrag.appendChild(tr);\n }\n else {\n frag.appendChild(tr);\n }\n }\n else {\n if (gObj.frozenRows && i < gObj.frozenRows) {\n tr = !gObj.isReact ? appendChildren(hdrfrag, elements) : hdrfrag.lastElementChild;\n }\n else {\n // frag.appendChild(tr);\n if (!gObj.isReact) {\n tr = appendChildren(frag, elements);\n }\n trElement = gObj.isReact ? frag.lastElementChild : tr.lastElementChild;\n }\n }\n var arg = { data: modelData[parseInt(i.toString(), 10)].data, row: trElement ? trElement : tr };\n this_1.parent.trigger(events.rowDataBound, arg);\n }\n if (modelData[parseInt(i.toString(), 10)].isDataRow || (this_1.parent.enableVirtualization &&\n this_1.parent.groupSettings.enableLazyLoading)) {\n if (!isNullOrUndefined(gObj.rowTemplate) && (gObj.isAngular || gObj.isVue3 || gObj.isVue)) {\n this_1.rowElements.push(trElement ? trElement : tr);\n }\n else {\n this_1.rowElements.push(tr);\n }\n }\n this_1.ariaService.setOptions(this_1.parent.element, { colcount: gObj.getColumns().length.toString() });\n };\n var this_1 = this;\n for (var i = startIndex, len = modelData.length; i < len; i++) {\n var state_1 = _loop_1(i, len);\n if (state_1 === \"break\")\n break;\n }\n var isReactChild = gObj.parentDetails && gObj.parentDetails.parentInstObj && gObj.parentDetails.parentInstObj.isReact;\n if ((gObj.isReact || isReactChild) && !gObj.requireTemplateRef) {\n gObj.renderTemplates();\n }\n if (this.parent.enableInfiniteScrolling && this.parent.groupSettings.enableLazyLoading) {\n this.parent.contentModule.refRowsObj[this.parent.pageSettings.currentPage] =\n this.parent.contentModule['groupCache'][this.parent.pageSettings.currentPage];\n }\n if (this.parent.groupSettings.enableLazyLoading && !this.useGroupCache && this.parent.groupSettings.columns.length) {\n this.parent.notify(events.refreshExpandandCollapse, {\n rows: (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).refRowsObj[this.parent.pageSettings.currentPage]\n });\n }\n gObj.removeMaskRow();\n this.parent.notify('removeGanttShimmer', { requestType: 'hideShimmer' });\n if ((gObj.frozenRows && args.requestType !== 'virtualscroll' && !isInfiniteScroll && this.ensureVirtualFrozenHeaderRender(args))\n || (args.requestType === 'virtualscroll' && args.virtualInfo.sentinelInfo && args.virtualInfo.sentinelInfo.axis === 'X')) {\n hdrTbody = gObj.getHeaderTable().querySelector(literals.tbody);\n if (isReact) {\n var parentTable = hdrTbody.parentElement;\n remove(hdrTbody);\n parentTable.appendChild(hdrfrag);\n }\n else {\n hdrTbody.innerHTML = '';\n hdrTbody.appendChild(hdrfrag);\n }\n if (!gObj.isInitialLoad) {\n gObj.scrollModule.setHeight();\n }\n }\n // if (!gObj.enableVirtualization && hdrTbody && gObj.frozenRows && idx === 0 && cont.offsetHeight === Number(gObj.height)) {\n // cont.style.height = (cont.offsetHeight - hdrTbody.offsetHeight) + 'px';\n // }\n args.rows = this.rows.slice(0);\n getUpdateUsingRaf(function () {\n _this.parent.notify(events.beforeFragAppend, args);\n if (!_this.parent.enableVirtualization && (!_this.parent.enableColumnVirtualization || isColumnVirtualInfiniteProcess)\n && !isInfiniteScroll) {\n if (!gObj.isReact) {\n _this.tbody.innerHTML = '';\n }\n if (!isNullOrUndefined(_this.tbody.parentElement)) {\n remove(_this.tbody);\n }\n else {\n remove(gObj.getContentTable().querySelector(literals.tbody));\n }\n _this.tbody = _this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n }\n if (gObj.rowTemplate) {\n updateBlazorTemplate(gObj.element.id + 'rowTemplate', 'RowTemplate', gObj);\n }\n if (!isNullOrUndefined(_this.parent.infiniteScrollModule) && ((_this.parent.enableInfiniteScrolling\n && !_this.isInfiniteColumnvirtualization()) || isColumnVirtualInfiniteProcess)) {\n _this.isAddRows = false;\n _this.parent.notify(events.removeInfiniteRows, { args: args });\n _this.parent.notify(events.appendInfiniteContent, {\n tbody: tbdy ? tbdy : _this.tbody, frag: frag, args: args, rows: _this.rows,\n rowElements: _this.rowElements, visibleRows: _this.visibleRows,\n tableName: tableName\n });\n if (_this.isInfiniteColumnvirtualization() && _this.parent.isFrozenGrid()) {\n var virtualTable = _this.parent.getContent().querySelector('.e-virtualtable');\n var transform = getTransformValues(virtualTable);\n _this.parent.contentModule.resetStickyLeftPos(transform.width);\n _this.widthService.refreshFrozenScrollbar();\n }\n }\n else {\n _this.useGroupCache = false;\n _this.appendContent(_this.tbody, frag, args);\n }\n if (_this.parent.editSettings.showAddNewRow && (_this.parent.enableVirtualization || _this.parent.enableInfiniteScrolling)) {\n var newRow = _this.parent.element.querySelector('.e-addrow-removed');\n if (newRow) {\n remove(newRow);\n }\n }\n var startAdd = !_this.parent.element.querySelector('.' + literals.addedRow);\n if (_this.parent.editSettings.showAddNewRow && _this.parent.editSettings.mode === 'Normal') {\n if (startAdd) {\n if (_this.parent.enableVirtualization || _this.parent.enableInfiniteScrolling) {\n _this.parent.isAddNewRow = true;\n }\n _this.parent.isEdit = false;\n _this.parent.addRecord();\n }\n if (startAdd || ((_this.parent.enableVirtualization || _this.parent.enableInfiniteScrolling) &&\n ['sorting', 'filtering', 'searching', 'grouping', 'ungrouping', 'reorder']\n .some(function (value) { return args.requestType === value; }))) {\n _this.parent.notify(events.showAddNewRowFocus, {});\n }\n }\n if (_this.parent.getVisibleFrozenRightCount() && _this.parent.getContent() && getScrollWidth(_this.parent) > 0) {\n _this.parent.element.classList.add('e-right-shadow');\n }\n frag = null;\n }, this.rafCallback(extend({}, args)));\n };\n ContentRender.prototype.isInfiniteColumnvirtualization = function () {\n return this.parent.enableColumnVirtualization && this.parent.enableInfiniteScrolling;\n };\n ContentRender.prototype.enableCacheOnInfiniteColumnVirtual = function () {\n return this.isInfiniteColumnvirtualization() && this.parent.infiniteScrollSettings.enableCache;\n };\n ContentRender.prototype.emptyVcRows = function () {\n this.parent.vcRows = [];\n this.parent.vRows = [];\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ContentRender.prototype.appendContent = function (tbody, frag, args, tableName) {\n var isReact = this.parent.isReact && !isNullOrUndefined(this.parent.rowTemplate);\n if (isReact) {\n this.getTable().appendChild(frag);\n }\n else {\n tbody.appendChild(frag);\n this.getTable().appendChild(tbody);\n }\n if (this.parent.rowRenderingMode === 'Vertical' && this.parent.allowTextWrap && (this.parent.textWrapSettings.wrapMode === 'Header'\n || this.parent.textWrapSettings.wrapMode === 'Both')) {\n var cells = tbody.querySelectorAll('td');\n for (var i = 0; i < cells.length; i++) {\n var headerCellHeight = parseFloat(document.defaultView.getComputedStyle(cells[parseInt(i.toString(), 10)], '::before').getPropertyValue('height'));\n var cellHeight = cells[parseInt(i.toString(), 10)].offsetHeight;\n if (headerCellHeight > cellHeight) {\n cells[parseInt(i.toString(), 10)].style.height = headerCellHeight + 'px';\n cells[parseInt(i.toString(), 10)].style.boxSizing = 'content-box';\n }\n }\n }\n if (this.parent.getVisibleFrozenLeftCount() && this.parent.enableColumnVirtualization) {\n this.widthService.refreshFrozenScrollbar();\n }\n };\n ContentRender.prototype.setRowsInLazyGroup = function (row, index) {\n if (this.parent.groupSettings.enableLazyLoading && !this.useGroupCache && this.parent.groupSettings.columns.length) {\n (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).maintainRows(row, index);\n }\n };\n ContentRender.prototype.setGroupCache = function (data, args) {\n if (!this.useGroupCache && this.parent.groupSettings.enableLazyLoading) {\n this.parent.notify(events.setGroupCache, { args: args, data: data });\n }\n };\n ContentRender.prototype.ensureFrozenHeaderRender = function (args) {\n return !((this.parent.enableVirtualization\n && (args.requestType === 'reorder' || args.requestType === 'refresh')) || (this.parent.infiniteScrollSettings.enableCache\n && this.parent.frozenRows && this.parent.infiniteScrollModule.requestType === 'delete'\n && this.parent.pageSettings.currentPage !== 1));\n };\n ContentRender.prototype.ensureVirtualFrozenHeaderRender = function (args) {\n return !(this.parent.enableVirtualization && args.requestType === 'delete');\n };\n ContentRender.prototype.checkCache = function (modelData, args) {\n if (this.parent.infiniteScrollSettings.enableCache && args.requestType === 'infiniteScroll') {\n this.isAddRows = !isNullOrUndefined(this.infiniteCache[this.parent.pageSettings.currentPage]);\n if (this.isAddRows) {\n var data = this.infiniteCache[this.parent.pageSettings.currentPage];\n modelData = this.parent.pageSettings.currentPage === 1 ? data.slice(this.parent.frozenRows) : data;\n }\n return modelData;\n }\n if (this.parent.groupSettings.enableLazyLoading && this.parent.groupSettings.columns.length && (args.requestType === 'paging'\n || args.requestType === 'columnstate' || args.requestType === 'reorder' || args.requestType === 'virtualscroll')\n && (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).getGroupCache()[this.parent.pageSettings.currentPage]) {\n if (!this.parent.enableVirtualization) {\n this.useGroupCache = true;\n }\n return this.parent.enableVirtualization ? this.parent.getRowsObject() :\n this.parent.contentModule.initialGroupRows(args.requestType === 'reorder');\n }\n return null;\n };\n ContentRender.prototype.setInfiniteVisibleRows = function (args, data) {\n if (this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache\n && !(this.isInfiniteColumnvirtualization() && args.requestType === 'virtualscroll')) {\n this.visibleRows.push(data);\n }\n };\n ContentRender.prototype.getCurrentBlockInfiniteRecords = function () {\n var data = [];\n if (this.parent.infiniteScrollSettings.enableCache) {\n if (!Object.keys(this.infiniteCache).length) {\n return [];\n }\n var rows = this.parent.getRows();\n var index = parseInt(rows[this.parent.frozenRows].getAttribute(literals.dataRowIndex), 10);\n var first = Math.ceil((index + 1) / this.parent.pageSettings.pageSize);\n index = parseInt(rows[rows.length - 1].getAttribute(literals.dataRowIndex), 10);\n var last = Math.ceil((index + (rows.length ? 1 : 0)) / this.parent.pageSettings.pageSize);\n for (var i = first; i <= last; i++) {\n data = !data.length ? this.infiniteCache[parseInt(i.toString(), 10)]\n : data.concat(this.infiniteCache[parseInt(i.toString(), 10)]);\n }\n if (this.parent.frozenRows && this.parent.pageSettings.currentPage > 1) {\n data = this.infiniteCache[1].slice(0, this.parent.frozenRows).concat(data);\n }\n }\n return data;\n };\n ContentRender.prototype.getReorderedRows = function (args) {\n return this.parent.contentModule.getReorderedFrozenRows(args);\n };\n ContentRender.prototype.virtualFrozenHdrRefresh = function (hdrfrag, modelData, row, args, dataSource, columns) {\n if (this.parent.frozenRows && this.parent.enableVirtualization\n && (args.requestType === 'reorder' || args.requestType === 'refresh')) {\n var tr = void 0;\n var fhdrData = this.getReorderedRows(args);\n for (var i = 0; i < fhdrData.length; i++) {\n tr = row.render(fhdrData[parseInt(i.toString(), 10)], columns);\n hdrfrag.appendChild(tr);\n }\n if (args.virtualInfo.page === 1) {\n modelData.splice(0, this.parent.frozenRows);\n }\n }\n };\n ContentRender.prototype.getInfiniteRows = function () {\n var rows = [];\n if (this.parent.enableInfiniteScrolling) {\n if (this.parent.infiniteScrollSettings.enableCache) {\n var keys = Object.keys(this.infiniteCache);\n for (var i = 0; i < keys.length; i++) {\n rows = rows.concat(this.infiniteCache[keys[parseInt(i.toString(), 10)]]);\n }\n }\n else {\n rows = this.visibleRows;\n }\n }\n return rows;\n };\n ContentRender.prototype.getInfiniteMovableRows = function () {\n var infiniteCacheRows = this.getCurrentBlockInfiniteRecords();\n var infiniteRows = this.parent.enableInfiniteScrolling ? infiniteCacheRows.length ? infiniteCacheRows\n : this.visibleRows : [];\n return infiniteRows;\n };\n /**\n * Get the content div element of grid\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getPanel = function () {\n return this.contentPanel;\n };\n /**\n * Set the content div element of grid\n *\n * @param {Element} panel - specifies the panel\n * @returns {void}\n */\n ContentRender.prototype.setPanel = function (panel) {\n this.contentPanel = panel;\n };\n /**\n * Get the content table element of grid\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getTable = function () {\n return this.contentTable;\n };\n /**\n * Set the content table element of grid\n *\n * @param {Element} table - specifies the table\n * @returns {void}\n */\n ContentRender.prototype.setTable = function (table) {\n this.contentTable = table;\n };\n /**\n * Get the Movable Row collection in the Freeze pane Grid.\n *\n * @returns {Row[] | HTMLCollectionOf} returns the row\n */\n ContentRender.prototype.getRows = function () {\n var infiniteRows = this.getInfiniteRows();\n return infiniteRows.length ? infiniteRows : this.rows;\n };\n /**\n * Get the content table data row elements\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getRowElements = function () {\n return this.rowElements;\n };\n /**\n * Get the content table data row elements\n *\n * @param {Element[]} elements - specifies the elements\n * @returns {void}\n */\n ContentRender.prototype.setRowElements = function (elements) {\n this.rowElements = elements;\n };\n /**\n * Get the header colgroup element\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getColGroup = function () {\n return this.colgroup;\n };\n /**\n * Set the header colgroup element\n *\n * @param {Element} colGroup - specifies the colgroup\n * @returns {Element} returns the element\n */\n ContentRender.prototype.setColGroup = function (colGroup) {\n if (!isNullOrUndefined(colGroup)) {\n colGroup.id = 'content-' + colGroup.id;\n }\n return this.colgroup = colGroup;\n };\n /**\n * Function to hide content table column based on visible property\n *\n * @param {Column[]} columns - specifies the column\n * @returns {void}\n */\n ContentRender.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n var rows = this.getRows();\n var testRow;\n rows.some(function (r) { if (r.isDataRow) {\n testRow = r;\n } return r.isDataRow; });\n var needFullRefresh = true;\n if (!gObj.groupSettings.columns.length && testRow) {\n needFullRefresh = false;\n }\n var tr = gObj.getDataRows();\n var args = {};\n var infiniteData = this.infiniteRowVisibility();\n var contentrows = infiniteData ? infiniteData\n : this.rows.filter(function (row) { return !row.isDetailRow; });\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[parseInt(c.toString(), 10)];\n var idx = this.parent.getNormalizedColumnIndex(column.uid);\n var colIdx = this.parent.getColumnIndexByUid(column.uid);\n var displayVal = column.visible === true ? '' : 'none';\n if (idx !== -1 && testRow && idx < testRow.cells.length) {\n setStyleAttribute(this.getColGroup().childNodes[parseInt(idx.toString(), 10)], { 'display': displayVal });\n }\n if (!needFullRefresh) {\n this.setDisplayNone(tr, colIdx, displayVal, contentrows);\n }\n if (!this.parent.invokedFromMedia && column.hideAtMedia) {\n this.parent.updateMediaColumns(column);\n }\n this.parent.invokedFromMedia = false;\n }\n if (needFullRefresh) {\n this.refreshContentRows({ requestType: 'refresh' });\n }\n else {\n this.parent.notify(events.partialRefresh, { rows: contentrows, args: args });\n if (this.parent.editSettings.showAddNewRow && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n this.parent.notify(events.showAddNewRowFocus, {});\n }\n }\n };\n /**\n * @param {Object} tr - specifies the trr\n * @param {number} idx - specifies the idx\n * @param {string} displayVal - specifies the displayval\n * @param {Row} rows - specifies the rows\n * @returns {void}\n * @hidden\n */\n ContentRender.prototype.setDisplayNone = function (tr, idx, displayVal, rows) {\n setDisplayValue(tr, idx, displayVal, rows, this.parent, this.parent.isRowDragable());\n this.parent.notify(events.infiniteShowHide, { visible: displayVal, index: idx, isFreeze: this.isInfiniteFreeze });\n };\n ContentRender.prototype.infiniteRowVisibility = function (isFreeze) {\n var infiniteData;\n if (this.parent.enableInfiniteScrolling) {\n this.isInfiniteFreeze = isFreeze;\n if (this.parent.infiniteScrollSettings.enableCache) {\n infiniteData = this.getCurrentBlockInfiniteRecords();\n }\n else {\n infiniteData = isFreeze ? this.visibleFrozenRows : this.visibleRows;\n }\n }\n return infiniteData;\n };\n ContentRender.prototype.colGroupRefresh = function () {\n if (this.getColGroup()) {\n var colGroup = this.getHeaderColGroup();\n this.getTable().replaceChild(colGroup, this.getColGroup());\n this.setColGroup(colGroup);\n }\n };\n ContentRender.prototype.getHeaderColGroup = function () {\n return this.parent.element.querySelector('.' + literals.gridHeader)\n .querySelector(literals.colGroup + ':not(.e-masked-colgroup)').cloneNode(true);\n };\n ContentRender.prototype.initializeContentDrop = function () {\n var gObj = this.parent;\n this.droppable = new Droppable(gObj.element, {\n accept: '.e-dragclone',\n drop: this.drop\n });\n };\n ContentRender.prototype.droppableDestroy = function () {\n if (this.droppable && !this.droppable.isDestroyed) {\n this.droppable.destroy();\n }\n };\n ContentRender.prototype.canSkip = function (column, row, index) {\n /**\n * Skip the toggle visiblity operation when one of the following success\n * 1. Grid has empty records\n * 2. column visible property is unchanged\n * 3. cell`s isVisible property is same as column`s visible property.\n */\n return isNullOrUndefined(row) || //(1)\n isNullOrUndefined(column.visible) || //(2)\n row.cells[parseInt(index.toString(), 10)].visible === column.visible; //(3)\n };\n ContentRender.prototype.getModelGenerator = function () {\n return this.generator = this.parent.allowGrouping ? new GroupModelGenerator(this.parent) : new RowModelGenerator(this.parent);\n };\n ContentRender.prototype.renderEmpty = function (tbody) {\n this.getTable().appendChild(tbody);\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().querySelector(literals.tbody).innerHTML = '';\n }\n };\n ContentRender.prototype.setSelection = function (uid, set, clearAll) {\n this.parent.notify(events.setFreezeSelection, { uid: uid, set: set, clearAll: clearAll });\n var row = this.getRows().filter(function (row) { return clearAll || uid === row.uid; });\n for (var j = 0; j < row.length; j++) {\n row[parseInt(j.toString(), 10)].isSelected = set;\n var cells = row[parseInt(j.toString(), 10)].cells;\n for (var k = 0; k < cells.length; k++) {\n cells[parseInt(k.toString(), 10)].isSelected = set;\n }\n }\n };\n ContentRender.prototype.getRowByIndex = function (index) {\n index = this.getInfiniteRowIndex(index);\n return !isNullOrUndefined(index) ? this.parent.getDataRows()[parseInt(index.toString(), 10)] : undefined;\n };\n ContentRender.prototype.getInfiniteRowIndex = function (index) {\n if (this.parent.infiniteScrollSettings.enableCache && !isNullOrUndefined(index)) {\n var fRows = this.parent.frozenRows;\n var idx = fRows > index ? 0 : fRows;\n var firstRowIndex = parseInt(this.parent.getRows()[parseInt(idx.toString(), 10)]\n .getAttribute(literals.dataRowIndex), 10);\n index = fRows > index ? index : (index - firstRowIndex) + fRows;\n }\n return index;\n };\n ContentRender.prototype.getVirtualRowIndex = function (index) {\n return index;\n };\n ContentRender.prototype.enableAfterRender = function (e) {\n if (e.module === 'group' && e.enable) {\n this.generator = this.getModelGenerator();\n }\n };\n ContentRender.prototype.setRowObjects = function (rows) {\n this.rows = rows;\n };\n /**\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n * @hidden\n */\n ContentRender.prototype.immutableModeRendering = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n var gObj = this.parent;\n gObj.hideSpinner();\n var key = gObj.getPrimaryKeyFieldNames()[0];\n var oldKeys = {};\n var newKeys = {};\n var newRowObjs = [];\n var oldIndexes = {};\n var oldRowObjs = gObj.getRowsObject().slice();\n var batchChangeKeys = this.getBatchEditedRecords(key, oldRowObjs);\n var newIndexes = {};\n var hasBatch = Object.keys(batchChangeKeys).length !== 0;\n if (gObj.getContent().querySelector('.e-emptyrow') || args.requestType === 'reorder'\n || this.parent.groupSettings.columns.length) {\n this.refreshContentRows(args);\n }\n else {\n if (gObj.currentViewData.length === 0) {\n return;\n }\n var oldRowElements = {};\n var tbody = gObj.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n var dataSource = gObj.currentViewData;\n var trs = [].slice.call(this.getTable().querySelector(literals.tbody).children);\n if (this.prevCurrentView.length) {\n var prevLen = this.prevCurrentView.length;\n var currentLen = dataSource.length;\n if (prevLen === currentLen) {\n for (var i = 0; i < currentLen; i++) {\n if (this.parent.editSettings.mode === 'Batch'\n && trs[parseInt(i.toString(), 10)].classList.contains('e-insertedrow')) {\n trs.splice(i, 1);\n --i;\n continue;\n }\n newKeys[dataSource[parseInt(i.toString(), 10)][\"\" + key]] = oldKeys[this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key]] = i;\n newIndexes[parseInt(i.toString(), 10)] = dataSource[parseInt(i.toString(), 10)][\"\" + key];\n oldRowElements[oldRowObjs[parseInt(i.toString(), 10)].uid] = trs[parseInt(i.toString(), 10)];\n oldIndexes[parseInt(i.toString(), 10)] = this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key];\n }\n }\n else {\n for (var i = 0; i < currentLen; i++) {\n newKeys[dataSource[parseInt(i.toString(), 10)][\"\" + key]] = i;\n newIndexes[parseInt(i.toString(), 10)] = dataSource[parseInt(i.toString(), 10)][\"\" + key];\n }\n for (var i = 0; i < prevLen; i++) {\n if (this.parent.editSettings.mode === 'Batch'\n && trs[parseInt(i.toString(), 10)].classList.contains('e-insertedrow')) {\n trs.splice(i, 1);\n --i;\n continue;\n }\n oldRowElements[oldRowObjs[parseInt(i.toString(), 10)].uid] = trs[parseInt(i.toString(), 10)];\n oldKeys[this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key]] = i;\n oldIndexes[parseInt(i.toString(), 10)] = this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key];\n }\n }\n }\n for (var i = 0; i < dataSource.length; i++) {\n var oldIndex = oldKeys[dataSource[parseInt(i.toString(), 10)][\"\" + key]];\n if (!isNullOrUndefined(oldIndex)) {\n var isEqual = false;\n if (this.parent.enableDeepCompare) {\n isEqual = this.objectEqualityChecker(this.prevCurrentView[parseInt(oldIndex.toString(), 10)], dataSource[parseInt(i.toString(), 10)]);\n }\n var tr = oldRowElements[oldRowObjs[parseInt(oldIndex.toString(), 10)]\n .uid];\n newRowObjs.push(oldRowObjs[parseInt(oldIndex.toString(), 10)]);\n if (this.rowElements[parseInt(oldIndex.toString(), 10)] && this.rowElements[parseInt(oldIndex.toString(), 10)].getAttribute('data-uid') === newRowObjs[parseInt(i.toString(), 10)].uid\n && ((hasBatch && isNullOrUndefined(batchChangeKeys[newIndexes[parseInt(i.toString(), 10)]]))\n || (!hasBatch && (isEqual\n || this.prevCurrentView[parseInt(oldIndex.toString(), 10)] === dataSource[parseInt(i.toString(), 10)])))) {\n if (oldIndex !== i) {\n this.refreshImmutableContent(i, tr, newRowObjs[parseInt(i.toString(), 10)]);\n }\n tbody.appendChild(tr);\n continue;\n }\n if ((hasBatch && !isNullOrUndefined(batchChangeKeys[newIndexes[parseInt(i.toString(), 10)]]))\n || (!this.parent.enableDeepCompare\n && dataSource[parseInt(i.toString(), 10)] !== this.prevCurrentView[parseInt(oldIndex.toString(), 10)])\n || (this.parent.enableDeepCompare && !isEqual)) {\n oldRowObjs[parseInt(oldIndex.toString(), 10)].setRowValue(dataSource[parseInt(i.toString(), 10)]);\n }\n tbody.appendChild(tr);\n this.refreshImmutableContent(i, tr, newRowObjs[parseInt(i.toString(), 10)]);\n }\n else {\n var row = new RowRenderer(this.serviceLocator, null, gObj);\n var args_1 = { startIndex: i };\n var modelData = this.generator.generateRows([dataSource[parseInt(i.toString(), 10)]], args_1);\n newRowObjs.push(modelData[0]);\n var tr = row.render(modelData[0], gObj.getColumns());\n tbody.appendChild(tr);\n this.refreshImmutableContent(i, tr, newRowObjs[parseInt(i.toString(), 10)]);\n }\n }\n this.rows = newRowObjs;\n this.rowElements = [].slice.call(tbody.children);\n remove(this.getTable().querySelector(literals.tbody));\n this.getTable().appendChild(tbody);\n this.parent.trigger(events.dataBound, {}, function () {\n if (_this.parent.allowTextWrap) {\n _this.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n });\n if (args) {\n var action = (args.requestType || '').toLowerCase() + '-complete';\n this.parent.notify(action, args);\n }\n }\n };\n ContentRender.prototype.objectEqualityChecker = function (old, next) {\n var keys = Object.keys(old);\n var isEqual = true;\n for (var i = 0; i < keys.length; i++) {\n if (old[keys[parseInt(i.toString(), 10)]] !== next[keys[parseInt(i.toString(), 10)]]) {\n var isDate = old[keys[parseInt(i.toString(), 10)]] instanceof Date\n && next[keys[parseInt(i.toString(), 10)]] instanceof Date;\n if (!isDate || (old[keys[parseInt(i.toString(), 10)]]\n .getTime() !== next[keys[parseInt(i.toString(), 10)]].getTime())) {\n isEqual = false;\n break;\n }\n }\n }\n return isEqual;\n };\n ContentRender.prototype.getBatchEditedRecords = function (primaryKey, rows) {\n var keys = {};\n var changes = this.parent.getBatchChanges();\n var changedRecords = [];\n var addedRecords = [];\n if (Object.keys(changes).length) {\n changedRecords = changes.changedRecords;\n addedRecords = changes.addedRecords;\n }\n var args = { cancel: false };\n this.parent.notify(events.immutableBatchCancel, { rows: rows, args: args });\n if (addedRecords.length) {\n if (this.parent.editSettings.newRowPosition === 'Bottom') {\n rows.splice(rows.length - 1, addedRecords.length);\n }\n else {\n if (!args.cancel) {\n rows.splice(0, addedRecords.length);\n }\n }\n }\n for (var i = 0; i < changedRecords.length; i++) {\n keys[changedRecords[parseInt(i.toString(), 10)][\"\" + primaryKey]] = i;\n }\n return keys;\n };\n ContentRender.prototype.refreshImmutableContent = function (index, tr, row) {\n row.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n if (row.isAltRow) {\n tr.classList.add('e-altrow');\n }\n else {\n tr.classList.remove('e-altrow');\n }\n row.index = index;\n row.edit = undefined;\n row.isDirty = false;\n tr.setAttribute(literals.dataRowIndex, index.toString());\n tr.setAttribute(literals.ariaRowIndex, (index + 1).toString());\n this.updateCellIndex(tr, index);\n };\n ContentRender.prototype.updateCellIndex = function (rowEle, index) {\n for (var i = 0; i < rowEle.cells.length; i++) {\n rowEle.cells[parseInt(i.toString(), 10)].setAttribute('index', index.toString());\n }\n };\n return ContentRender;\n}());\nexport { ContentRender };\n","import { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, closest as getClosest, remove } from '@syncfusion/ej2-base';\nimport { classList } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { RowRenderer } from './row-renderer';\nimport { Cell } from '../models/cell';\nimport { Row } from '../models/row';\nimport * as events from '../base/constant';\nimport { Draggable, Droppable } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { parentsUntil, wrap, measureColumnDepth, appendChildren, addFixedColumnBorder, clearReactVueTemplates } from '../base/util';\nimport * as literals from '../base/string-literals';\n// eslint-disable-next-line valid-jsdoc\n/**\n * Content module is used to render grid content\n *\n * @hidden\n */\nvar HeaderRender = /** @class */ (function () {\n /**\n * Constructor for header renderer module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n */\n function HeaderRender(parent, serviceLocator) {\n var _this = this;\n this.frzIdx = 0;\n this.notfrzIdx = 0;\n this.isFirstCol = false;\n this.isReplaceDragEle = true;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n this.helper = function (e) {\n var gObj = _this.parent;\n var target = _this.draggable.currentStateTarget;\n var parentEle = parentsUntil(target, 'e-headercell');\n if (!(gObj.allowReordering || gObj.allowGrouping) || (!isNullOrUndefined(parentEle)\n && parentEle.getElementsByClassName('e-checkselectall').length > 0)) {\n return false;\n }\n var visualElement = _this.parent.createElement('div', { className: 'e-cloneproperties e-dragclone e-headerclone' });\n var element = target.classList.contains('e-headercell') ? target : parentEle;\n if (!element || (!gObj.allowReordering && element.classList.contains('e-stackedheadercell'))) {\n return false;\n }\n var height = element.offsetHeight;\n var headercelldiv = element.querySelector('.e-headercelldiv') || element.querySelector('.e-stackedheadercelldiv');\n var col;\n if (headercelldiv) {\n if (element.querySelector('.e-stackedheadercelldiv')) {\n col = gObj.getStackedHeaderColumnByHeaderText(headercelldiv.innerText.trim(), gObj.columns);\n }\n else {\n col = gObj.getColumnByUid(headercelldiv.getAttribute('e-mappinguid'));\n }\n _this.column = col;\n if (_this.column.lockColumn) {\n return false;\n }\n visualElement.setAttribute('e-mappinguid', _this.column.uid);\n }\n if (col && !isNullOrUndefined(col.headerTemplate)) {\n if (!isNullOrUndefined(col.headerTemplate)) {\n var colIndex = gObj.getColumnIndexByField(col.field);\n var result = col.getHeaderTemplate()(extend({ 'index': colIndex }, col), gObj, 'headerTemplate', null, null, null, null, gObj.root);\n var isReactCompiler = gObj.isReact && typeof (col.headerTemplate) !== 'string';\n var isReactChild = gObj.parentDetails && gObj.parentDetails.parentInstObj &&\n gObj.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n gObj.renderTemplates();\n }\n appendChildren(visualElement, result);\n }\n else {\n visualElement.innerHTML = col.headerTemplate;\n }\n if (!isNullOrUndefined(visualElement.firstChild) && visualElement.firstChild.nodeType === 1) {\n visualElement.firstChild.style.pointerEvents = 'none';\n }\n }\n else {\n visualElement.innerHTML = headercelldiv ?\n col.headerText : element.firstElementChild.innerHTML;\n }\n visualElement.style.width = element.offsetWidth + 'px';\n visualElement.style.height = element.offsetHeight + 'px';\n visualElement.style.lineHeight = (height - 6).toString() + 'px';\n gObj.element.appendChild(visualElement);\n return visualElement;\n };\n this.dragStart = function (e) {\n var gObj = _this.parent;\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n gObj.notify(events.columnDragStart, { target: _this.draggable.currentStateTarget, column: _this.column, event: e.event });\n };\n this.drag = function (e) {\n var gObj = _this.parent;\n var target = e.target;\n if (target) {\n var closest = getClosest(target, '.e-grid');\n var cloneElement = _this.parent.element.querySelector('.e-cloneproperties');\n if (!closest || closest.getAttribute('id') !== gObj.element.getAttribute('id')) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n if (gObj.allowReordering) {\n gObj.element.querySelector('.e-reorderuparrow').style.display = 'none';\n gObj.element.querySelector('.e-reorderdownarrow').style.display = 'none';\n }\n if (!gObj.groupSettings.allowReordering) {\n return;\n }\n }\n gObj.notify(events.columnDrag, { target: e.target, column: _this.column, event: e.event });\n }\n };\n this.dragStop = function (e) {\n var gObj = _this.parent;\n var cancel;\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n if ((!parentsUntil(e.target, 'e-headercell') && !parentsUntil(e.target, 'e-groupdroparea')) ||\n (!gObj.allowReordering && parentsUntil(e.target, 'e-headercell')) ||\n (!e.helper.getAttribute('e-mappinguid') && parentsUntil(e.target, 'e-groupdroparea'))) {\n remove(e.helper);\n cancel = true;\n }\n gObj.notify(events.columnDragStop, { target: e.target, event: e.event, column: _this.column, cancel: cancel });\n };\n this.drop = function (e) {\n var gObj = _this.parent;\n var uid = e.droppedElement.getAttribute('e-mappinguid');\n var closest = getClosest(e.target, '.e-grid');\n remove(e.droppedElement);\n if (closest && closest.getAttribute('id') !== gObj.element.getAttribute('id') ||\n !(gObj.allowReordering || gObj.allowGrouping)) {\n return;\n }\n gObj.notify(events.headerDrop, { target: e.target, uid: uid, droppedElement: e.droppedElement });\n };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.ariaService = this.serviceLocator.getService('ariaService');\n this.widthService = this.serviceLocator.getService('widthService');\n if (this.parent.isDestroyed) {\n return;\n }\n if (!this.parent.enableColumnVirtualization) {\n this.parent.on(events.columnVisibilityChanged, this.setVisible, this);\n }\n this.parent.on(events.columnPositionChanged, this.colPosRefresh, this);\n this.parent.on(events.initialEnd, this.renderCustomToolbar, this);\n if (this.parent.rowRenderingMode === 'Vertical') {\n this.parent.on(events.uiUpdate, this.updateCustomResponsiveToolbar, this);\n }\n }\n /**\n * The function is used to render grid header div\n *\n * @returns {void}\n */\n HeaderRender.prototype.renderPanel = function () {\n var div = this.parent.element.querySelector('.' + literals.gridHeader);\n var isRendered = (div != null);\n div = isRendered ? div : this.parent.createElement('div', { className: 'e-gridheader' });\n var innerDiv = isRendered ? div.querySelector('.' + literals.headerContent) :\n this.parent.createElement('div', { className: literals.headerContent });\n this.toggleStackClass(div);\n div.appendChild(innerDiv);\n this.setPanel(div);\n if (!isRendered) {\n this.parent.element.appendChild(div);\n }\n };\n /**\n * The function is used to render grid header div\n *\n * @returns {void}\n */\n HeaderRender.prototype.renderTable = function () {\n var headerDiv = this.getPanel();\n headerDiv.appendChild(this.createHeaderTable());\n this.setTable(headerDiv.querySelector('.' + literals.table));\n this.initializeHeaderDrag();\n this.initializeHeaderDrop();\n this.parent.notify(events.headerRefreshed, { rows: this.rows });\n };\n /**\n * Get the header content div element of grid\n *\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.getPanel = function () {\n return this.headerPanel;\n };\n /**\n * Set the header content div element of grid\n *\n * @param {Element} panel - specifies the panel element\n * @returns {void}\n */\n HeaderRender.prototype.setPanel = function (panel) {\n this.headerPanel = panel;\n };\n /**\n * Get the header table element of grid\n *\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.getTable = function () {\n return this.headerTable;\n };\n /**\n * Set the header table element of grid\n *\n * @param {Element} table - specifies the table element\n * @returns {void}\n */\n HeaderRender.prototype.setTable = function (table) {\n this.headerTable = table;\n };\n /**\n * Get the header colgroup element\n *\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.getColGroup = function () {\n return this.colgroup;\n };\n /**\n * Set the header colgroup element\n *\n * @param {Element} colGroup - specifies the colgroup\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.setColGroup = function (colGroup) {\n return this.colgroup = colGroup;\n };\n /**\n * Get the header row element collection.\n *\n * @returns {Element[]} returns the element\n */\n HeaderRender.prototype.getRows = function () {\n var table = this.getTable();\n return table.tHead.rows;\n };\n /**\n * The function is used to create header table elements\n *\n * @returns {Element} returns the element\n * @hidden\n */\n HeaderRender.prototype.createHeaderTable = function () {\n var table = this.createTable();\n var innerDiv = this.getPanel().querySelector('.' + literals.headerContent);\n innerDiv.appendChild(table);\n return innerDiv;\n };\n /**\n * The function is used to create header table elements\n *\n * @param {Element} tableEle - specifies the table Element\n * @param {freezeTable} tableName - specifies the table name\n * @returns {Element} returns the element\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderRender.prototype.createHeader = function (tableEle, tableName) {\n if (tableEle === void 0) { tableEle = null; }\n var gObj = this.parent;\n if (this.getTable()) {\n remove(this.getTable());\n }\n var table = this.parent.createElement('table', { className: literals.table, attrs: { cellspacing: '0.25px', role: 'presentation' } });\n var findHeaderRow = this.createHeaderContent(tableName);\n var thead = findHeaderRow.thead;\n var tbody = this.parent.createElement(literals.tbody, { className: this.parent.frozenRows ||\n ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) && this.parent.editSettings.showAddNewRow) ? '' :\n 'e-hide', attrs: { role: 'rowgroup' } });\n this.caption = this.parent.createElement('caption', { innerHTML: this.parent.element.id + '_header_table', className: 'e-hide' });\n var colGroup = this.parent.createElement(literals.colGroup);\n var rowBody = this.parent.createElement('tr', { attrs: { role: 'row' }, className: (this.parent.enableVirtualization ||\n this.parent.enableInfiniteScrolling) && this.parent.editSettings.showAddNewRow ? 'e-hide' : '' });\n var bodyCell;\n var rows = this.rows = findHeaderRow.rows;\n for (var i = 0, len = rows.length; i < len; i++) {\n for (var j = 0, len_1 = rows[parseInt(i.toString(), 10)].cells.length; j < len_1; j++) {\n bodyCell = this.parent.createElement('td');\n rowBody.appendChild(bodyCell);\n }\n }\n if (gObj.allowFiltering || gObj.allowSorting || gObj.allowGrouping) {\n table.classList.add('e-sortfilter');\n }\n this.updateColGroup(colGroup);\n tbody.appendChild(rowBody);\n table.appendChild(this.setColGroup(colGroup));\n table.appendChild(thead);\n table.appendChild(tbody);\n table.appendChild(this.caption);\n return table;\n };\n /**\n * @param {Element} tableEle - specifies the column\n * @returns {Element} returns the element\n * @hidden\n */\n HeaderRender.prototype.createTable = function (tableEle) {\n if (tableEle === void 0) { tableEle = null; }\n return this.createHeader(tableEle);\n };\n HeaderRender.prototype.createHeaderContent = function (tableName) {\n var gObj = this.parent;\n var columns = gObj.getColumns();\n var thead = this.parent.createElement('thead', { attrs: { 'role': 'rowgroup' } });\n var colHeader = this.parent.createElement('tr', { className: 'e-columnheader', attrs: { role: 'row' } });\n var rowRenderer = new RowRenderer(this.serviceLocator, CellType.Header, gObj);\n rowRenderer.element = colHeader;\n var rows = [];\n var headerRow;\n this.colDepth = measureColumnDepth(gObj.columns);\n for (var i = 0, len = this.colDepth; i < len; i++) {\n rows[parseInt(i.toString(), 10)] = this.generateRow(i);\n rows[parseInt(i.toString(), 10)].cells = [];\n }\n rows = this.ensureColumns(rows);\n rows = this.getHeaderCells(rows, tableName);\n if (gObj.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n for (var i = 0, len = rows.length; i < len; i++) {\n rows[parseInt(i.toString(), 10)].cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n }\n var headerTemplateColumn = columns.filter(function (a) { return a.headerTemplate; });\n if (headerTemplateColumn.length && (this.parent.isReact || this.parent.isVue)) {\n clearReactVueTemplates(this.parent, ['headerTemplate']);\n }\n for (var i = 0, len = this.colDepth; i < len; i++) {\n headerRow = rowRenderer.render(rows[parseInt(i.toString(), 10)], columns);\n if (this.parent.rowHeight && headerRow.querySelector('.e-headercell')) {\n headerRow.style.height = this.parent.rowHeight + 'px';\n }\n addFixedColumnBorder(headerRow);\n thead.appendChild(headerRow);\n }\n var findHeaderRow = {\n thead: thead,\n rows: rows\n };\n return findHeaderRow;\n };\n HeaderRender.prototype.updateColGroup = function (colGroup) {\n var cols = this.parent.getColumns();\n var col;\n var indexes = this.parent.getColumnIndexesInView();\n colGroup.id = this.parent.element.id + literals.colGroup;\n if (this.parent.allowGrouping) {\n for (var i = 0, len = this.parent.groupSettings.columns.length; i < len; i++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(i) === -1) {\n continue;\n }\n col = this.parent.createElement('col', { className: 'e-group-intent' });\n colGroup.appendChild(col);\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n col = this.parent.createElement('col', { className: 'e-detail-intent' });\n colGroup.appendChild(col);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n col = this.parent.createElement('col', { className: 'e-drag-intent' });\n colGroup.appendChild(col);\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n col = this.parent.createElement('col');\n if (cols[parseInt(i.toString(), 10)].visible === false) {\n setStyleAttribute(col, { 'display': 'none' });\n }\n colGroup.appendChild(col);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n col = this.parent.createElement('col', { className: 'e-drag-intent' });\n colGroup.appendChild(col);\n }\n return colGroup;\n };\n HeaderRender.prototype.ensureColumns = function (rows) {\n //TODO: generate dummy column for group, detail, stacked row here; ensureColumns here\n var gObj = this.parent;\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0, len = rows.length; i < len; i++) {\n if (gObj.allowGrouping) {\n for (var c = 0, len_2 = gObj.groupSettings.columns.length; c < len_2; c++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(c) === -1) {\n continue;\n }\n rows[parseInt(i.toString(), 10)].cells.push(this.generateCell({}, CellType.HeaderIndent));\n }\n }\n if (gObj.detailTemplate || gObj.childGrid) {\n var args = {};\n this.parent.notify(events.detailIndentCellInfo, args);\n rows[parseInt(i.toString(), 10)].cells.push(this.generateCell(args, CellType.DetailHeader));\n }\n if (gObj.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n rows[parseInt(i.toString(), 10)].cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n }\n return rows;\n };\n HeaderRender.prototype.getHeaderCells = function (rows, tableName) {\n var thead = this.parent.getHeaderTable() && this.parent.getHeaderTable().querySelector('thead');\n var cols = this.parent.enableColumnVirtualization ?\n this.parent.getColumns(this.parent.enablePersistence) : this.parent.columns;\n this.frzIdx = 0;\n this.notfrzIdx = 0;\n if (this.parent.lockcolPositionCount) {\n for (var i = 0; i < (!isNullOrUndefined(cols) ? cols.length : 0); i++) {\n this.lockColsRendered = false;\n rows = this.appendCells(cols[parseInt(i.toString(), 10)], rows, 0, i === 0, false, i === (cols.length - 1), thead, tableName, false);\n }\n }\n for (var i = 0, len = (!isNullOrUndefined(cols) ? cols.length : 0); i < len; i++) {\n this.notfrzIdx = 0;\n this.lockColsRendered = true;\n rows = this.appendCells(cols[parseInt(i.toString(), 10)], rows, 0, i === 0, false, i === (len - 1), thead, tableName, false);\n }\n return rows;\n };\n HeaderRender.prototype.appendCells = function (cols, rows, index, isFirstObj, isFirstCol, isLastCol, isMovable, tableName, isStackLastCol) {\n var lastCol = isLastCol ? isStackLastCol ? 'e-laststackcell' : 'e-lastcell' : '';\n var isLockColumn = !this.parent.lockcolPositionCount\n || (cols.lockColumn && !this.lockColsRendered) || (!cols.lockColumn && this.lockColsRendered);\n if (!cols.columns) {\n if (isLockColumn) {\n rows[parseInt(index.toString(), 10)].cells.push(this.generateCell(cols, CellType.Header, this.colDepth - index, (isFirstObj ? '' : (isFirstCol ? 'e-firstcell' : '')) + lastCol, index, this.parent.getColumnIndexByUid(cols.uid)));\n }\n if (this.parent.lockcolPositionCount) {\n if ((this.frzIdx + this.notfrzIdx < this.parent.frozenColumns) &&\n ((cols.lockColumn && !this.lockColsRendered) || (!cols.lockColumn && this.lockColsRendered))) {\n this.frzIdx++;\n }\n else {\n this.notfrzIdx++;\n }\n }\n else {\n this.frzIdx++;\n }\n }\n else {\n this.isFirstCol = false;\n var colSpan = this.getCellCnt(cols, 0);\n if (colSpan) {\n var stackedLockColsCount = this.getStackedLockColsCount(cols, 0);\n var isStackedLockColumn = this.parent.lockcolPositionCount === 0\n || (!this.lockColsRendered && stackedLockColsCount !== 0)\n || (this.lockColsRendered && (colSpan - stackedLockColsCount) !== 0);\n if (isStackedLockColumn) {\n rows[parseInt(index.toString(), 10)].cells.push(new Cell({\n cellType: CellType.StackedHeader, column: cols,\n colSpan: this.getColSpan(colSpan, stackedLockColsCount),\n className: isFirstObj ? '' : (isFirstCol ? 'e-firstcell' : '')\n }));\n }\n }\n if (this.parent.lockcolPositionCount && !this.lockColsRendered) {\n for (var i = 0; i < cols.columns.length; i++) {\n rows = this.appendCells(cols.columns[parseInt(i.toString(), 10)], rows, index + 1, isFirstObj, i === 0, i === (cols.columns.length - 1) && isLastCol, isMovable, tableName, false);\n }\n }\n if (this.lockColsRendered) {\n for (var i = 0, len = cols.columns.length; i < len; i++) {\n isFirstObj = isFirstObj && i === 0;\n var isFirstCol_1 = this.isFirstCol = cols.columns[parseInt(i.toString(), 10)].visible\n && !isFirstObj;\n var isLaststackedCol = i === (len - 1) && isLastCol;\n rows = this.appendCells(cols.columns[parseInt(i.toString(), 10)], rows, index + 1, isFirstObj, isFirstCol_1 && !isLaststackedCol, isLaststackedCol, isMovable, tableName, true);\n }\n }\n }\n return rows;\n };\n HeaderRender.prototype.getStackedLockColsCount = function (col, lockColsCount) {\n if (col.columns) {\n for (var i = 0; i < col.columns.length; i++) {\n lockColsCount = this.getStackedLockColsCount(col.columns[parseInt(i.toString(), 10)], lockColsCount);\n }\n }\n else if (col.lockColumn) {\n lockColsCount++;\n }\n return lockColsCount;\n };\n HeaderRender.prototype.getColSpan = function (colSpan, stackedLockColsCount) {\n colSpan = !this.lockColsRendered ? stackedLockColsCount : colSpan - stackedLockColsCount;\n return colSpan;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderRender.prototype.generateRow = function (index) {\n return new Row({});\n };\n HeaderRender.prototype.generateCell = function (column, cellType, rowSpan, className, rowIndex, colIndex) {\n var opt = {\n 'visible': column.visible,\n 'isDataCell': false,\n 'isTemplate': !isNullOrUndefined(column.headerTemplate),\n 'rowID': '',\n 'column': column,\n 'cellType': cellType,\n 'rowSpan': rowSpan,\n 'className': className,\n 'index': rowIndex,\n 'colIndex': colIndex\n };\n if (!opt.rowSpan || opt.rowSpan < 2) {\n delete opt.rowSpan;\n }\n return new Cell(opt);\n };\n /**\n * Function to hide header table column based on visible property\n *\n * @param {Column[]} columns - specifies the column\n * @returns {void}\n */\n HeaderRender.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n var displayVal;\n var idx;\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[parseInt(c.toString(), 10)];\n idx = gObj.getNormalizedColumnIndex(column.uid);\n displayVal = column.visible ? '' : 'none';\n setStyleAttribute(this.getColGroup().children[parseInt(idx.toString(), 10)], { 'display': displayVal });\n if (gObj.editSettings.showAddNewRow && gObj.element.querySelector('.e-addedrow')) {\n setStyleAttribute(gObj.element.querySelector('.e-addedrow').querySelector('colgroup').childNodes[parseInt(idx.toString(), 10)], { 'display': displayVal });\n }\n }\n this.refreshUI();\n if (this.parent.editSettings.showAddNewRow) {\n this.parent.isAddNewRow = true;\n }\n };\n HeaderRender.prototype.colPosRefresh = function () {\n this.refreshUI();\n };\n /**\n * Refresh the header of the Grid.\n *\n * @returns {void}\n */\n HeaderRender.prototype.refreshUI = function () {\n var headerDiv = this.getPanel();\n this.toggleStackClass(headerDiv);\n var table = this.freezeReorder ? this.headerPanel.querySelector('.' + literals.movableHeader).querySelector('.' + literals.table)\n : this.getTable();\n var tableName = undefined;\n if (table) {\n remove(table);\n if (this.parent.editSettings.showAddNewRow && !this.parent.isAddNewRow && table.querySelector('.e-addedrow') &&\n (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n (table.querySelector('.e-addedrow')).classList.add('e-addrow-removed');\n this.parent.isAddNewRow = true;\n }\n table.removeChild(table.firstChild);\n table.removeChild(table.childNodes[0]);\n var colGroup = this.parent.createElement(literals.colGroup);\n var findHeaderRow = this.createHeaderContent(tableName);\n this.rows = findHeaderRow.rows;\n table.insertBefore(findHeaderRow.thead, table.firstChild);\n this.updateColGroup(colGroup);\n table.insertBefore(this.setColGroup(colGroup), table.firstChild);\n this.appendContent(table);\n this.parent.notify(events.colGroupRefresh, {});\n this.widthService.setWidthToColumns();\n this.parent.updateDefaultCursor();\n this.initializeHeaderDrag();\n var rows = [].slice.call(headerDiv.querySelectorAll('tr.e-columnheader'));\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n var gCells = [].slice.call(row.getElementsByClassName('e-grouptopleftcell'));\n if (gCells.length) {\n gCells[gCells.length - 1].classList.add('e-lastgrouptopleftcell');\n }\n }\n this.parent.notify(events.headerRefreshed, { rows: this.rows });\n if (this.parent.enableColumnVirtualization && parentsUntil(table, literals.movableHeader)) {\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { isFrozen: false, isXaxis: true } });\n }\n if (this.parent.allowTextWrap && this.parent.textWrapSettings.wrapMode === 'Header') {\n wrap(rows, true);\n }\n }\n var firstHeaderCell = this.parent.getHeaderContent().querySelector('.e-headercell:not(.e-hide)');\n if (!isNullOrUndefined(firstHeaderCell)) {\n firstHeaderCell.tabIndex = 0;\n }\n };\n HeaderRender.prototype.toggleStackClass = function (div) {\n var column = this.parent.columns;\n var stackedHdr = (!isNullOrUndefined(column) ? column.some(function (column) { return !isNullOrUndefined(column.columns); }) : false);\n if (stackedHdr) {\n div.classList.add('e-stackedheader');\n }\n else {\n div.classList.remove('e-stackedheader');\n }\n };\n HeaderRender.prototype.appendContent = function (table) {\n this.getPanel().querySelector('.' + literals.headerContent).appendChild(table);\n };\n HeaderRender.prototype.getCellCnt = function (col, cnt) {\n if (col.columns) {\n for (var i = 0, len = col.columns.length; i < len; i++) {\n cnt = this.getCellCnt(col.columns[parseInt(i.toString(), 10)], cnt);\n }\n }\n else {\n if (col.visible) {\n cnt++;\n }\n }\n return cnt;\n };\n HeaderRender.prototype.initializeHeaderDrag = function () {\n var gObj = this.parent;\n if (!(this.parent.allowReordering || (this.parent.allowGrouping && this.parent.groupSettings.showDropArea))) {\n return;\n }\n this.draggable = new Draggable(gObj.getHeaderContent(), {\n dragTarget: '.e-headercell',\n distance: 5,\n helper: this.helper,\n dragStart: this.dragStart,\n drag: this.drag,\n dragStop: this.dragStop,\n abort: '.e-rhandler',\n isReplaceDragEle: this.isReplaceDragEle\n });\n this.parent.on(events.destroy, this.droppableDestroy, this);\n };\n HeaderRender.prototype.initializeHeaderDrop = function () {\n var gObj = this.parent;\n this.droppable = new Droppable(gObj.getHeaderContent(), {\n accept: '.e-dragclone',\n drop: this.drop\n });\n this.parent.on(events.destroy, this.droppableDestroy, this);\n };\n HeaderRender.prototype.droppableDestroy = function () {\n if (this.droppable && !this.droppable.isDestroyed) {\n this.droppable.destroy();\n }\n if (this.draggable && !this.draggable.isDestroyed) {\n this.draggable.destroy();\n }\n };\n HeaderRender.prototype.renderCustomToolbar = function () {\n var _this = this;\n var gObj = this.parent;\n if (gObj.rowRenderingMode === 'Vertical' && !gObj.toolbar\n && (gObj.allowSorting || (gObj.allowFiltering && gObj.filterSettings.type !== 'FilterBar'))) {\n var div = gObj.createElement('div', { className: 'e-res-toolbar e-toolbar' });\n var toolbarItems = gObj.createElement('div', { className: 'e-toolbar-items' });\n var toolbarLeft = gObj.createElement('div', { className: 'e-toolbar-left' });\n var count = this.parent.allowFiltering && this.parent.allowSorting ? 2 : 1;\n for (var i = 0; i < count; i++) {\n var toolbarItem = gObj.createElement('div', { className: 'e-toolbar-item e-gridresponsiveicons e-icons e-tbtn-align' });\n var cls = count === 1 ? this.parent.allowSorting ? 'sort'\n : 'filter' : i === 1 ? 'sort' : 'filter';\n var button = gObj.createElement('button', { className: 'e-tbar-btn e-control e-btn e-lib e-icon-btn' });\n var span = gObj.createElement('span', { className: 'e-btn-icon e-res' + cls + '-icon e-icons' });\n button.appendChild(span);\n var btnObj = new Button({\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n btnObj.appendTo(button);\n button.onclick = function (e) {\n if (e.target.classList.contains('e-ressort-btn')\n || e.target.classList.contains('e-ressort-icon') ||\n e.target.querySelector('.e-ressort-icon')) {\n _this.parent.showResponsiveCustomSort();\n }\n else {\n _this.parent.showResponsiveCustomFilter();\n }\n };\n toolbarItem.appendChild(button);\n toolbarLeft.appendChild(toolbarItem);\n }\n toolbarItems.appendChild(toolbarLeft);\n div.appendChild(toolbarItems);\n gObj.element.insertBefore(div, this.parent.element.querySelector('.' + literals.gridHeader));\n }\n else {\n if (gObj.enableAdaptiveUI && !gObj.toolbar) {\n gObj.getContent().classList.add('e-responsive-header');\n }\n }\n };\n HeaderRender.prototype.updateCustomResponsiveToolbar = function (args) {\n var resToolbar = this.parent.element.querySelector('.e-responsive-toolbar');\n if (args.module === 'toolbar') {\n if (resToolbar) {\n remove(resToolbar);\n }\n else {\n this.renderCustomToolbar();\n }\n }\n };\n return HeaderRender;\n}());\nexport { HeaderRender };\n","import { remove, addClass } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { doesImplementInterface, setStyleAndAttributes, appendChildren, extendObjWithFn, addStickyColumnPosition } from '../base/util';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { foreignKeyData } from '../base/constant';\nimport { CellType } from '../base/enum';\nimport * as literals from '../base/string-literals';\n/**\n * CellRenderer class which responsible for building cell content.\n *\n * @hidden\n */\nvar CellRenderer = /** @class */ (function () {\n function CellRenderer(parent, locator) {\n this.localizer = locator.getService('localization');\n this.formatter = locator.getService('valueFormatter');\n this.parent = parent;\n this.element = this.parent.createElement('TD', { className: literals.rowCell, attrs: { role: 'gridcell', tabindex: '-1' } });\n this.rowChkBox = this.parent.createElement('input', { className: 'e-checkselect', attrs: { 'type': 'checkbox', 'aria-label': this.localizer.getConstant('SelectRow') } });\n }\n /**\n * Function to return the wrapper for the TD content\n *\n * @returns {string | Element} returns the string\n */\n CellRenderer.prototype.getGui = function () {\n return '';\n };\n /**\n * Function to format the cell value.\n *\n * @param {Column} column - specifies the column\n * @param {Object} value - specifies the value\n * @param {Object} data - specifies the data\n * @returns {string} returns the format\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CellRenderer.prototype.format = function (column, value, data) {\n if (!isNullOrUndefined(column.format)) {\n if (column.type === 'number' && isNaN(parseInt(value, 10))) {\n value = null;\n }\n if (column.type === 'dateonly' && typeof value === 'string' && value) {\n var arr = value.split(/[^0-9.]/);\n value = new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10));\n }\n value = this.formatter.toView(value, column.getFormatter());\n }\n return isNullOrUndefined(value) ? '' : value.toString();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CellRenderer.prototype.evaluate = function (node, cell, data, attributes, fData, isEdit) {\n var _a;\n var result;\n if (cell.column.template) {\n var isReactCompiler = this.parent.isReact && typeof (cell.column.template) !== 'string' && cell.column.template.prototype && !(cell.column.template.prototype).CSPTemplate;\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var literals_1 = ['index'];\n var dummyData = extendObjWithFn({}, data, (_a = {}, _a[foreignKeyData] = fData, _a.column = cell.column, _a));\n var templateID = this.parent.element.id + cell.column.uid;\n var str = 'isStringTemplate';\n if (isReactCompiler || isReactChild) {\n var copied = { 'index': attributes[literals_1[0]] };\n cell.column.getColumnTemplate()(extend(copied, dummyData), this.parent, 'columnTemplate', templateID, this.parent[\"\" + str], null, node);\n }\n else {\n result = cell.column.getColumnTemplate()(extend({ 'index': attributes[literals_1[0]] }, dummyData), this.parent, 'template', templateID, this.parent[\"\" + str], undefined, undefined, this.parent['root']);\n }\n if (!isReactCompiler && !isReactChild) {\n appendChildren(node, result);\n }\n this.parent.notify('template-result', { template: result });\n result = null;\n node.setAttribute('aria-label', node.innerText + this.localizer.getConstant('TemplateCell') +\n this.localizer.getConstant('ColumnHeader') + cell.column.headerText);\n return false;\n }\n return true;\n };\n /**\n * Function to invoke the custom formatter available in the column object.\n *\n * @param {Column} column - specifies the column\n * @param {Object} value - specifies the value\n * @param {Object} data - specifies the data\n * @returns {Object} returns the object\n */\n CellRenderer.prototype.invokeFormatter = function (column, value, data) {\n if (!isNullOrUndefined(column.formatter)) {\n if (doesImplementInterface(column.formatter, 'getValue')) {\n var formatter = column.formatter;\n value = new formatter().getValue(column, data);\n }\n else if (typeof column.formatter === 'function') {\n value = column.formatter(column, data);\n }\n else {\n value = column.formatter.getValue(column, data);\n }\n }\n return value;\n };\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attributes\n * @param {boolean} isExpand - specifies the boolean for expand\n * @param {boolean} isEdit - specifies the boolean for edit\n * @returns {Element} returns the element\n */\n CellRenderer.prototype.render = function (cell, data, attributes, isExpand, isEdit) {\n return this.refreshCell(cell, data, attributes, isEdit);\n };\n /**\n * Function to refresh the cell content based on Column object.\n *\n * @param {Element} td - specifies the element\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attribute\n * @returns {void}\n */\n CellRenderer.prototype.refreshTD = function (td, cell, data, attributes) {\n var isEdit = this.parent.editSettings.mode === 'Batch' && td.classList.contains('e-editedbatchcell');\n if (this.parent.isReact) {\n var cellIndex = td.cellIndex;\n var parentRow = td.parentElement;\n remove(td);\n var newTD = this.refreshCell(cell, data, attributes, isEdit);\n this.cloneAttributes(newTD, td);\n if (parentRow.cells.length !== cellIndex - 1) {\n parentRow.insertBefore(newTD, parentRow.cells[parseInt(cellIndex.toString(), 10)]);\n }\n else {\n parentRow.appendChild(newTD);\n }\n }\n else {\n var node = this.refreshCell(cell, data, attributes, isEdit);\n td.innerHTML = '';\n var arialabelText = node.getAttribute('aria-label');\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n arialabelText ? td.setAttribute('aria-label', arialabelText) : null;\n var elements = [].slice.call(node.childNodes);\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var elem = elements_1[_i];\n td.appendChild(elem);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n CellRenderer.prototype.cloneAttributes = function (target, source) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var attrs = source.attributes;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var i = attrs.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var attr;\n while (i--) {\n attr = attrs[parseInt(i.toString(), 10)];\n target.setAttribute(attr.name, attr.value);\n }\n };\n CellRenderer.prototype.refreshCell = function (cell, data, attributes, isEdit) {\n var _a;\n var node = this.element.cloneNode();\n var column = cell.column;\n var fData;\n if (cell.isForeignKey) {\n fData = cell.foreignKeyData[0] || (_a = {}, _a[column.foreignKeyValue] = column.format ? null : '', _a);\n }\n //Prepare innerHtml\n var innerHtml = this.getGui();\n var value = cell.isForeignKey ? this.getValue(column.foreignKeyValue, fData, column) :\n this.getValue(column.field, data, column);\n if ((column.type === 'date' || column.type === 'datetime') && !isNullOrUndefined(value)) {\n value = new Date(value);\n }\n if (column.type === 'dateonly' && !isNullOrUndefined(value) && typeof value === 'string') {\n var arr = value.split(/[^0-9.]/);\n value = new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10));\n }\n value = this.format(column, value, data);\n innerHtml = value.toString();\n if (column.type === 'boolean' && !column.displayAsCheckBox) {\n var localeStr = (value !== 'true' && value !== 'false') ? null : value === 'true' ? 'True' : 'False';\n innerHtml = localeStr ? this.localizer.getConstant(localeStr) : innerHtml;\n }\n var fromFormatter = this.invokeFormatter(column, value, data);\n innerHtml = !isNullOrUndefined(column.formatter) ? isNullOrUndefined(fromFormatter) ? '' : fromFormatter.toString() : innerHtml;\n if (this.evaluate(node, cell, data, attributes, fData, isEdit) && column.type !== 'checkbox') {\n this.appendHtml(node, this.parent.sanitize(innerHtml), column.getDomSetter ? column.getDomSetter() : 'innerHTML');\n }\n else if (column.type === 'checkbox') {\n node.classList.add(literals.gridChkBox);\n if (this.parent.selectionSettings.persistSelection) {\n value = value === 'true';\n }\n else {\n value = false;\n }\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: value, label: ' ' });\n if (this.parent.cssClass) {\n addClass([checkWrap], [this.parent.cssClass]);\n }\n this.rowChkBox.id = 'checkbox-' + cell.rowID;\n checkWrap.insertBefore(this.rowChkBox.cloneNode(), checkWrap.firstChild);\n node.appendChild(checkWrap);\n }\n if (this.parent.checkAllRows === 'Check' && this.parent.enableVirtualization) {\n cell.isSelected = true;\n }\n this.setAttributes(node, cell, attributes);\n if (column.type === 'boolean' && column.displayAsCheckBox) {\n var checked = isNaN(parseInt(value.toString(), 10)) ? value === 'true' : parseInt(value.toString(), 10) > 0;\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: checked, label: ' ' });\n node.innerHTML = '';\n node.classList.add('e-gridchkbox-cell');\n checkWrap.classList.add('e-checkbox-disabled');\n if (this.parent.cssClass) {\n addClass([checkWrap], [this.parent.cssClass]);\n }\n node.appendChild(checkWrap);\n }\n if (node.classList.contains('e-summarycell') && !data.key) {\n var uid = node.getAttribute('e-mappinguid');\n column = this.parent.getColumnByUid(uid);\n node.setAttribute('aria-label', innerHtml + this.localizer.getConstant('ColumnHeader') + cell.column.headerText);\n }\n if (this.parent.isFrozenGrid() && (!data || (data && !data.key))) {\n addStickyColumnPosition(this.parent, column, node);\n }\n return node;\n };\n /**\n * Function to specifies how the result content to be placed in the cell.\n *\n * @param {Element} node - specifies the node\n * @param {string|Element} innerHtml - specifies the innerHTML\n * @param {string} property - specifies the element\n * @returns {Element} returns the element\n */\n CellRenderer.prototype.appendHtml = function (node, innerHtml, property) {\n if (property === void 0) { property = 'innerHTML'; }\n node[\"\" + property] = innerHtml;\n return node;\n };\n /**\n * @param {HTMLElement} node - specifies the node\n * @param {cell} cell - specifies the cell\n * @param {Object} attributes - specifies the attributes\n * @returns {void}\n * @hidden\n */\n CellRenderer.prototype.setAttributes = function (node, cell, attributes) {\n var column = cell.column;\n this.buildAttributeFromCell(node, cell, column.type === 'checkbox');\n setStyleAndAttributes(node, attributes);\n setStyleAndAttributes(node, cell.attributes);\n if (column.customAttributes) {\n setStyleAndAttributes(node, column.customAttributes);\n }\n if (this.parent.rowRenderingMode === 'Vertical') {\n setStyleAndAttributes(node, { 'data-cell': column.headerText });\n }\n if (column.textAlign) {\n node.style.textAlign = column.textAlign;\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if (column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip')\n && !(this.parent.allowTextWrap && (this.parent.textWrapSettings.wrapMode === 'Content'\n || this.parent.textWrapSettings.wrapMode === 'Both'))) {\n if (column.type !== 'checkbox') {\n node.classList.add('e-ellipsistooltip');\n }\n }\n };\n CellRenderer.prototype.buildAttributeFromCell = function (node, cell, isCheckBoxType) {\n var attr = {};\n var prop = { 'colindex': literals.dataColIndex };\n var classes = [];\n if (cell.colSpan) {\n attr.colSpan = cell.colSpan;\n }\n if (cell.rowSpan) {\n attr.rowSpan = cell.rowSpan;\n }\n if (cell.isTemplate) {\n classes.push('e-templatecell');\n }\n if (cell.isSelected) {\n classes.push.apply(classes, ['e-selectionbackground', 'e-active']);\n if (isCheckBoxType) {\n node.querySelector('.e-frame').classList.add('e-check');\n }\n }\n if (cell.isColumnSelected) {\n classes.push.apply(classes, ['e-columnselection']);\n }\n if (cell.cellType === CellType.Header) {\n attr[prop.colindex] = cell.colIndex;\n attr[literals.ariaColIndex] = cell.colIndex + 1;\n }\n else if (!isNullOrUndefined(cell.index)) {\n attr[prop.colindex] = cell.index;\n attr[literals.ariaColIndex] = cell.index + 1;\n }\n if (!cell.visible) {\n classes.push('e-hide');\n }\n attr.class = classes;\n setStyleAndAttributes(node, attr);\n };\n CellRenderer.prototype.getValue = function (field, data, column) {\n return column.valueAccessor(field, data, column);\n };\n return CellRenderer;\n}());\nexport { CellRenderer };\n","/**\n * AriaService\n *\n * @hidden\n */\nvar AriaService = /** @class */ (function () {\n function AriaService() {\n }\n AriaService.prototype.setOptions = function (target, options) {\n var props = Object.keys(options);\n for (var i = 0; i < props.length; i++) {\n setStateAndProperties(target, config[props[parseInt(i.toString(), 10)]], options[props[parseInt(i.toString(), 10)]]);\n }\n };\n AriaService.prototype.setExpand = function (target, expand) {\n setStateAndProperties(target, config.expand, expand);\n };\n AriaService.prototype.setSort = function (target, direction) {\n setStateAndProperties(target, config.sort, direction, typeof direction === 'boolean');\n };\n AriaService.prototype.setBusy = function (target, isBusy) {\n setStateAndProperties(target, config.busy, isBusy);\n setStateAndProperties(target, config.invalid, null, true);\n };\n AriaService.prototype.setGrabbed = function (target, isGrabbed, remove) {\n setStateAndProperties(target, config.grabbed, isGrabbed, remove);\n };\n AriaService.prototype.setDropTarget = function (target, isTarget) {\n setStateAndProperties(target, config.dropeffect, 'copy', !isTarget);\n };\n return AriaService;\n}());\nexport { AriaService };\n/**\n * @param {HTMLElement} target - specifies the target\n * @param {string} attribute - specifies the attribute\n * @param {ValueType} value - specifies the value\n * @param {boolean} remove - specifies the boolean for remove\n * @returns {void}\n * @hidden\n */\nfunction setStateAndProperties(target, attribute, value, remove) {\n if (remove && target) {\n target.removeAttribute(attribute);\n return;\n }\n if (target) {\n target.setAttribute(attribute, value);\n }\n}\nvar config = {\n expand: 'aria-expanded',\n role: 'role',\n datarole: 'data-role',\n selected: 'aria-selected',\n multiselectable: 'aria-multiselectable',\n sort: 'aria-sort',\n busy: 'aria-busy',\n invalid: 'aria-invalid',\n grabbed: 'aria-grabbed',\n dropeffect: 'aria-dropeffect',\n haspopup: 'aria-haspopup',\n level: 'aria-level',\n colcount: 'aria-colcount',\n rowcount: 'aria-rowcount'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined, extend, addClass } from '@syncfusion/ej2-base';\nimport { attributes } from '@syncfusion/ej2-base';\nimport { setStyleAndAttributes, appendChildren, addStickyColumnPosition } from '../base/util';\nimport { CellRenderer } from './cell-renderer';\nimport { AriaService } from '../services/aria-service';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { headerCellInfo } from '../base/constant';\n/**\n * HeaderCellRenderer class which responsible for building header cell content.\n *\n * @hidden\n */\nvar HeaderCellRenderer = /** @class */ (function (_super) {\n __extends(HeaderCellRenderer, _super);\n function HeaderCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent\n .createElement('TH', { className: 'e-headercell', attrs: { tabindex: '-1', role: 'columnheader' } });\n _this.ariaService = new AriaService();\n _this.hTxtEle = _this.parent.createElement('span', { className: 'e-headertext' });\n _this.sortEle = _this.parent.createElement('div', { className: 'e-sortfilterdiv e-icons', attrs: { 'aria-hidden': 'true' } });\n _this.gui = _this.parent.createElement('div');\n _this.chkAllBox = _this.parent.createElement('input', { className: 'e-checkselectall', attrs: { 'type': 'checkbox', 'aria-label': _this.localizer.getConstant('SelectAllCheckbox') } });\n return _this;\n }\n /**\n * Function to return the wrapper for the TH content.\n *\n * @returns {string | Element} returns the element\n */\n HeaderCellRenderer.prototype.getGui = function () {\n return this.gui.cloneNode();\n };\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the column\n * @param {Object} data - specifies the data\n * @param {object} attributes - specifies the aattributes\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderCellRenderer.prototype.render = function (cell, data, attributes) {\n var node = this.element.cloneNode();\n var fltrMenuEle = this.parent.createElement('div', { className: 'e-filtermenudiv e-icons e-icon-filter', attrs: { 'aria-hidden': 'true' } });\n return this.prepareHeader(cell, node, fltrMenuEle);\n };\n /**\n * Function to refresh the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Element} node - specifies the noe\n * @returns {Element} returns the element\n */\n HeaderCellRenderer.prototype.refresh = function (cell, node) {\n this.clean(node);\n var fltrMenuEle = this.parent.createElement('div', { className: 'e-filtermenudiv e-icons e-icon-filter', attrs: { 'aria-hidden': 'true' } });\n return this.prepareHeader(cell, node, fltrMenuEle);\n };\n HeaderCellRenderer.prototype.clean = function (node) {\n node.innerHTML = '';\n };\n /* tslint:disable-next-line:max-func-body-length */\n HeaderCellRenderer.prototype.prepareHeader = function (cell, node, fltrMenuEle) {\n var column = cell.column;\n var ariaAttr = {};\n var elementDesc = '';\n //Prepare innerHtml\n var innerDIV = this.getGui();\n var hValueAccer;\n attributes(innerDIV, {\n 'e-mappinguid': column.uid,\n 'class': 'e-headercelldiv'\n });\n if (!isNullOrUndefined(column.headerValueAccessor)) {\n hValueAccer = this.getValue(column.headerText, column);\n }\n if (this.parent.allowSorting && column.allowSorting && !isNullOrUndefined(column.field)) {\n node.classList.add('e-sort-icon');\n }\n if (column.type !== 'checkbox') {\n var value = column.headerText;\n if (!isNullOrUndefined(hValueAccer)) {\n value = hValueAccer;\n }\n var headerText = this.hTxtEle.cloneNode();\n headerText[column.getDomSetter()] = this.parent.sanitize(value);\n innerDIV.appendChild(headerText);\n }\n else {\n column.editType = 'booleanedit';\n var checkAllWrap = createCheckBox(this.parent.createElement, false, { checked: false, label: ' ' });\n this.chkAllBox.id = 'checkbox-' + column.uid;\n checkAllWrap.insertBefore(this.chkAllBox.cloneNode(), checkAllWrap.firstChild);\n if (this.parent.cssClass) {\n addClass([checkAllWrap], [this.parent.cssClass]);\n }\n innerDIV.appendChild(checkAllWrap);\n innerDIV.classList.add('e-headerchkcelldiv');\n }\n this.buildAttributeFromCell(node, cell);\n this.appendHtml(node, innerDIV);\n node.appendChild(this.sortEle.cloneNode());\n if ((this.parent.allowFiltering && this.parent.filterSettings.type !== 'FilterBar') &&\n (column.allowFiltering && !isNullOrUndefined(column.field)) &&\n !(this.parent.showColumnMenu && column.showColumnMenu)) {\n attributes(fltrMenuEle, {\n 'e-mappinguid': 'e-flmenu-' + column.uid\n });\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('FilterDescription') : this.localizer.getConstant('FilterDescription');\n node.classList.add('e-fltr-icon');\n var matchFlColumns = [];\n if (this.parent.filterSettings.columns.length && this.parent.filterSettings.columns.length !== matchFlColumns.length) {\n var foreignColumn = this.parent.getForeignKeyColumns();\n for (var index = 0; index < this.parent.columns.length; index++) {\n for (var count = 0; count < this.parent.filterSettings.columns.length; count++) {\n if (this.parent.filterSettings.columns[parseInt(count.toString(), 10)].field === column.field\n || (foreignColumn.length\n && column.foreignKeyValue === this.parent.filterSettings.columns[parseInt(count.toString(), 10)].field)) {\n fltrMenuEle.classList.add('e-filtered');\n matchFlColumns.push(column.field);\n break;\n }\n }\n }\n }\n node.appendChild(fltrMenuEle.cloneNode());\n }\n if (cell.className) {\n node.classList.add(cell.className);\n }\n if (column.customAttributes) {\n setStyleAndAttributes(node, column.customAttributes);\n }\n if (this.parent.allowSorting && column.allowSorting) {\n ariaAttr.sort = 'none';\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('SortDescription') : this.localizer.getConstant('SortDescription');\n }\n if ((this.parent.allowGrouping && column.allowGrouping) || this.parent.allowReordering && column.allowReordering) {\n ariaAttr.grabbed = false;\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('GroupDescription') : this.localizer.getConstant('GroupDescription');\n }\n if (this.parent.showColumnMenu && column.type !== 'checkbox' && !column.template) {\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('ColumnMenuDescription') : this.localizer.getConstant('ColumnMenuDescription');\n }\n node = this.extendPrepareHeader(column, node);\n var result;\n var gridObj = this.parent;\n var colIndex = gridObj.getColumnIndexByField(column.field);\n if (!isNullOrUndefined(column.headerTemplate)) {\n //need to pass the template id for blazor headertemplate\n var headerTempID = gridObj.element.id + column.uid + 'headerTemplate';\n var str = 'isStringTemplate';\n var col = column;\n var isReactCompiler = this.parent.isReact && typeof (column.headerTemplate) !== 'string';\n var isReactChild_1 = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild_1) {\n var copied = { 'index': colIndex };\n node.firstElementChild.innerHTML = '';\n column.getHeaderTemplate()(extend(copied, col), gridObj, 'headerTemplate', headerTempID, this.parent[\"\" + str], null, node.firstElementChild);\n this.parent.renderTemplates();\n }\n else {\n result = column.getHeaderTemplate()(extend({ 'index': colIndex }, col), gridObj, 'headerTemplate', headerTempID, this.parent[\"\" + str], undefined, undefined, this.parent['root']);\n node.firstElementChild.innerHTML = '';\n appendChildren(node.firstElementChild, result);\n }\n }\n this.ariaService.setOptions(node, ariaAttr);\n if (!isNullOrUndefined(column.headerTextAlign) || !isNullOrUndefined(column.textAlign)) {\n var alignment = column.headerTextAlign || column.textAlign;\n innerDIV.style.textAlign = alignment;\n if (alignment === 'Right' || alignment === 'Left') {\n node.classList.add(alignment === 'Right' ? 'e-rightalign' : 'e-leftalign');\n }\n else if (alignment === 'Center') {\n node.classList.add('e-centeralign');\n }\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if ((column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip'))\n && !(gridObj.allowTextWrap && (gridObj.textWrapSettings.wrapMode === 'Header'\n || gridObj.textWrapSettings.wrapMode === 'Both'))) {\n if (column.type !== 'checkbox') {\n node.classList.add('e-ellipsistooltip');\n }\n }\n if (elementDesc) {\n var titleElem = (this.parent.createElement('span', { id: 'headerTitle-' + column.uid, innerHTML: elementDesc, attrs: { style: 'display:none' } }));\n node.appendChild(titleElem);\n node.setAttribute('aria-describedby', titleElem.id);\n }\n node.setAttribute('aria-rowspan', (!isNullOrUndefined(cell.rowSpan) ? cell.rowSpan : 1).toString());\n node.setAttribute('aria-colspan', '1');\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (((this.parent.isReact && this.parent.requireTemplateRef)\n || (isReactChild && this.parent.parentDetails.parentInstObj.requireTemplateRef))\n && !isNullOrUndefined(column.headerTemplate)) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_1 = this;\n thisRef_1.parent.renderTemplates(function () {\n thisRef_1.parent.trigger(headerCellInfo, { cell: cell, node: node });\n });\n }\n else {\n this.parent.trigger(headerCellInfo, { cell: cell, node: node });\n }\n if (this.parent.isFrozenGrid()) {\n addStickyColumnPosition(this.parent, column, node);\n }\n return node;\n };\n HeaderCellRenderer.prototype.getValue = function (field, column) {\n return column.headerValueAccessor(field, column);\n };\n HeaderCellRenderer.prototype.extendPrepareHeader = function (column, node) {\n if (this.parent.showColumnMenu && column.showColumnMenu && !isNullOrUndefined(column.field)) {\n var element = (this.parent.createElement('div', { className: 'e-icons e-columnmenu', attrs: { 'aria-hidden': 'true' } }));\n var matchFilteredColumns = [];\n if (this.parent.filterSettings.columns.length && this.parent.filterSettings.columns.length !== matchFilteredColumns.length) {\n for (var i = 0; i < this.parent.columns.length; i++) {\n for (var j = 0; j < this.parent.filterSettings.columns.length; j++) {\n if (this.parent.filterSettings.columns[parseInt(j.toString(), 10)].field === column.field) {\n element.classList.add('e-filtered');\n matchFilteredColumns.push(column.field);\n break;\n }\n }\n }\n }\n node.classList.add('e-fltr-icon');\n node.appendChild(element);\n }\n if (this.parent.allowResizing) {\n var handler = this.parent.createElement('div');\n handler.className = column.allowResizing ? 'e-rhandler e-rcursor' : 'e-rsuppress';\n node.appendChild(handler);\n }\n return node;\n };\n /**\n * Function to specifies how the result content to be placed in the cell.\n *\n * @param {Element} node - specifies the node\n * @param {string|Element} innerHtml - specifies the innerHtml\n * @returns {Element} returns the element\n */\n HeaderCellRenderer.prototype.appendHtml = function (node, innerHtml) {\n node.appendChild(innerHtml);\n return node;\n };\n return HeaderCellRenderer;\n}(CellRenderer));\nexport { HeaderCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { headerCellInfo } from '../base/constant';\nimport { setStyleAndAttributes, appendChildren, frozenDirection, isChildColumn, applyStickyLeftRightPosition } from '../base/util';\n/**\n * StackedHeaderCellRenderer class which responsible for building stacked header cell content.\n *\n * @hidden\n */\nvar StackedHeaderCellRenderer = /** @class */ (function (_super) {\n __extends(StackedHeaderCellRenderer, _super);\n function StackedHeaderCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', {\n className: 'e-headercell e-stackedheadercell', attrs: {\n tabindex: '-1', role: 'columnheader'\n }\n });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {object} attributes - specifies the attributes\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n StackedHeaderCellRenderer.prototype.render = function (cell, data, attributes) {\n var node = this.element.cloneNode();\n var div = this.parent.createElement('div', {\n className: 'e-stackedheadercelldiv',\n attrs: { 'e-mappinguid': cell.column.uid }\n });\n var column = cell.column;\n node.appendChild(div);\n if (!isNullOrUndefined(column.headerTemplate)) {\n appendChildren(div, column.getHeaderTemplate()(column, this.parent, 'headerTemplate', null, null, null, null, this.parent.root));\n }\n else {\n this.appendHtml(div, this.parent.sanitize(column.headerText), column.getDomSetter());\n }\n if (cell.column.toolTip) {\n node.setAttribute('title', cell.column.toolTip);\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if (column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip')) {\n node.classList.add('e-ellipsistooltip');\n }\n if (!isNullOrUndefined(cell.column.textAlign)) {\n div.style.textAlign = cell.column.textAlign;\n }\n if (cell.column.customAttributes) {\n setStyleAndAttributes(node, cell.column.customAttributes);\n }\n node.setAttribute('colspan', cell.colSpan.toString());\n node.setAttribute('aria-colspan', cell.colSpan.toString());\n node.setAttribute('aria-rowspan', '1');\n if (this.parent.allowResizing) {\n var handler = this.parent.createElement('div');\n handler.className = cell.column.allowResizing ? 'e-rhandler e-rcursor' : 'e-rsuppress';\n node.appendChild(handler);\n }\n if (cell.className) {\n node.classList.add(cell.className);\n }\n this.parent.trigger(headerCellInfo, { cell: cell, node: node });\n if (frozenDirection(column) === 'Left') {\n node.classList.add('e-leftfreeze');\n if (column.border === 'Left') {\n node.classList.add('e-freezeleftborder');\n }\n if (column.index === 0) {\n applyStickyLeftRightPosition(node, (this.parent.getIndentCount() * 30), this.parent.enableRtl, 'Left');\n }\n else {\n var cols = this.parent.getColumns();\n var width = this.parent.getIndentCount() * 30;\n for (var i = 0; i < cols.length; i++) {\n if (column.index < cols[parseInt(i.toString(), 10)].index) {\n break;\n }\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n applyStickyLeftRightPosition(node, width, this.parent.enableRtl, 'Left');\n }\n }\n else if (frozenDirection(column) === 'Right') {\n node.classList.add('e-rightfreeze');\n var cols = this.parent.getColumns();\n var width = this.parent.getFrozenMode() === 'Right' && this.parent.isRowDragable() ? 30 : 0;\n for (var i = cols.length - 1; i >= 0; i--) {\n if (isChildColumn(column, cols[parseInt(i.toString(), 10)].uid) || column.index > cols[parseInt(i.toString(), 10)].index) {\n break;\n }\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n applyStickyLeftRightPosition(node, width, this.parent.enableRtl, 'Right');\n if (column.border === 'Right') {\n node.classList.add('e-freezerightborder');\n }\n }\n else if (frozenDirection(column) === 'Fixed') {\n node.classList.add('e-fixedfreeze');\n var cols = this.parent.getColumns();\n var width = 0;\n if (this.parent.getVisibleFrozenLeftCount()) {\n width = this.parent.getIndentCount() * 30;\n }\n else if (this.parent.getFrozenMode() === 'Right') {\n width = this.parent.groupSettings.columns.length * 30;\n }\n for (var i = 0; i < cols.length; i++) {\n if (column.index > cols[parseInt(i.toString(), 10)].index) {\n if ((cols[parseInt(i.toString(), 10)].freeze === 'Left' || cols[parseInt(i.toString(), 10)].isFrozen) ||\n cols[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n }\n }\n applyStickyLeftRightPosition(node, width - 1, this.parent.enableRtl, 'Left');\n width = this.parent.getFrozenMode() === 'Right' && this.parent.isRowDragable() ? 30 : 0;\n for (var i = cols.length - 1; i >= 0; i--) {\n if (column.index < cols[parseInt(i.toString(), 10)].index) {\n if (isChildColumn(column, cols[parseInt(i.toString(), 10)].uid) ||\n column.index > cols[parseInt(i.toString(), 10)].index) {\n break;\n }\n if (cols[parseInt(i.toString(), 10)].freeze === 'Right' || cols[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n if (cols[parseInt(i.toString(), 10)].visible) {\n width += parseFloat(cols[parseInt(i.toString(), 10)].width.toString());\n }\n }\n }\n }\n applyStickyLeftRightPosition(node, width - 1, this.parent.enableRtl, 'Right');\n }\n else {\n node.classList.add('e-unfreeze');\n }\n return node;\n };\n return StackedHeaderCellRenderer;\n}(CellRenderer));\nexport { StackedHeaderCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { setStyleAndAttributes } from '../base/util';\nimport { CellRenderer } from './cell-renderer';\n/**\n * IndentCellRenderer class which responsible for building group indent cell.\n *\n * @hidden\n */\nvar IndentCellRenderer = /** @class */ (function (_super) {\n __extends(IndentCellRenderer, _super);\n function IndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', { className: 'e-indentcell' });\n return _this;\n }\n /**\n * Function to render the indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n IndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n setStyleAndAttributes(node, cell.attributes);\n return node;\n };\n return IndentCellRenderer;\n}(CellRenderer));\nexport { IndentCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { appendChildren, templateCompiler } from '../base/util';\nimport { CellType } from '../base/enum';\n/**\n * GroupCaptionCellRenderer class which responsible for building group caption cell.\n *\n * @hidden\n */\nvar GroupCaptionCellRenderer = /** @class */ (function (_super) {\n __extends(GroupCaptionCellRenderer, _super);\n function GroupCaptionCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.cellUid = 0;\n _this.element = _this.parent\n .createElement('TD', { className: 'e-groupcaption',\n attrs: { id: _this.parent.element.id + 'captioncell', tabindex: '-1' } });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the GroupedData\n * @returns {Element} returns the element\n */\n GroupCaptionCellRenderer.prototype.render = function (cell, data) {\n this.element.id = this.parent.element.id + 'captioncell' + this.cellUid++;\n var node = this.element.cloneNode();\n var gObj = this.parent;\n var column = cell.column;\n var domSetter = column.getDomSetter ? column.getDomSetter() : 'innerHTML';\n var result;\n var fKeyValue;\n var gTemplateValue;\n data.headerText = cell.column.headerText;\n if (cell.isForeignKey) {\n fKeyValue = this.format(cell.column, cell.column.valueAccessor('foreignKey', data, cell.column));\n }\n var value = cell.isForeignKey ? fKeyValue : cell.column.enableGroupByFormat ? data.key :\n this.format(cell.column, cell.column.valueAccessor('key', data, cell.column));\n for (var j = 0; j < gObj.aggregates.length; j++) {\n var _loop_1 = function (i) {\n if (gObj.getVisibleColumns()[0].field === gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)]\n .field && gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)].groupCaptionTemplate) {\n var gCaptionTemp = gObj.aggregates[parseInt(j.toString(), 10)]\n .columns[parseInt(i.toString(), 10)].groupCaptionTemplate;\n if (typeof gCaptionTemp === 'string' && gCaptionTemp.includes('$')) {\n gTemplateValue = gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)]\n .groupCaptionTemplate.split('$')[0] + data[gObj.getVisibleColumns()[0].field][gObj\n .aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)].type] +\n gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)]\n .groupCaptionTemplate.split('}')[1];\n }\n else {\n var column_1 = (gObj.aggregates[parseInt(j.toString(), 10)]\n .columns[parseInt(i.toString(), 10)]);\n var tempObj = column_1.getTemplate(CellType.CaptionSummary);\n var tempID = '';\n if (!isNullOrUndefined(tempObj)) {\n var tempValue_1 = tempObj.fn(data[column_1.columnName], this_1.parent, tempObj.property, tempID);\n if (this_1.parent.isReact && typeof column_1.groupCaptionTemplate !== 'string') {\n this_1.parent.renderTemplates(function () {\n if (tempValue_1 && tempValue_1.length) {\n if (!isNullOrUndefined(gObj.groupSettings.captionTemplate)) {\n node.appendChild(tempValue_1[0]);\n }\n else {\n node.innerText += ' ' + tempValue_1[0].textContent;\n }\n }\n });\n }\n else {\n if (tempValue_1 && tempValue_1.length) {\n if (!isNullOrUndefined(gObj.groupSettings.captionTemplate)) {\n gTemplateValue = tempValue_1;\n }\n else {\n gTemplateValue = tempValue_1[0].textContent;\n }\n }\n }\n }\n }\n return \"break\";\n }\n };\n var this_1 = this;\n for (var i = 0; i < gObj.aggregates[parseInt(j.toString(), 10)].columns.length; i++) {\n var state_1 = _loop_1(i);\n if (state_1 === \"break\")\n break;\n }\n }\n if (!isNullOrUndefined(gObj.groupSettings.captionTemplate)) {\n var isReactCompiler = this.parent.isReact && typeof (gObj.groupSettings.captionTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n var tempID = gObj.element.id + 'captionTemplate';\n templateCompiler(gObj.groupSettings.captionTemplate)(data, this.parent, 'captionTemplate', tempID, null, null, node);\n this.parent.renderTemplates();\n }\n else if (this.parent.isVue\n || (gObj.parentDetails && gObj.parentDetails.parentInstObj && gObj.parentDetails.parentInstObj.isVue)) {\n result = templateCompiler(gObj.groupSettings.captionTemplate)(data, this.parent, 'captionTemplate', null, null, null, null, gObj.root);\n }\n else {\n result = templateCompiler(gObj.groupSettings.captionTemplate)(data);\n }\n if (!isReactCompiler && !isReactChild) {\n appendChildren(node, result);\n if (gTemplateValue && gTemplateValue.length && gTemplateValue[0].textContent) {\n node.appendChild(gTemplateValue[0]);\n }\n }\n }\n else {\n if (gObj.groupSettings.enableLazyLoading) {\n node[\"\" + domSetter] = this.parent.sanitize(cell.column.headerText) + ': ' + this.parent.sanitize(value) +\n (gTemplateValue ? ' ' + gTemplateValue : '');\n }\n else {\n node[\"\" + domSetter] = this.parent.sanitize(cell.column.headerText) + ': ' + this.parent.sanitize(value) +\n ' - ' + data.count + ' ' + (data.count < 2 ? this.localizer.getConstant('Item') : this.localizer.getConstant('Items'))\n + (gTemplateValue ? ' ' + gTemplateValue : '');\n }\n }\n node.setAttribute('colspan', cell.colSpan.toString());\n node.setAttribute('aria-label', node.innerHTML + this.localizer.getConstant('GroupCaption'));\n node.setAttribute('title', node.textContent);\n return node;\n };\n return GroupCaptionCellRenderer;\n}(CellRenderer));\nexport { GroupCaptionCellRenderer };\n/**\n * GroupCaptionEmptyCellRenderer class which responsible for building group caption empty cell.\n *\n * @hidden\n */\nvar GroupCaptionEmptyCellRenderer = /** @class */ (function (_super) {\n __extends(GroupCaptionEmptyCellRenderer, _super);\n function GroupCaptionEmptyCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', { className: 'e-groupcaption' });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the Object\n * @param {string} data.field - Defines the field\n * @param {string} data.key - Defines the key\n * @param {number} data.count - Defines the count\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n GroupCaptionEmptyCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.innerHTML = ' ';\n node.setAttribute('colspan', cell.colSpan.toString());\n return node;\n };\n return GroupCaptionEmptyCellRenderer;\n}(CellRenderer));\nexport { GroupCaptionEmptyCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { IndentCellRenderer } from './indent-cell-renderer';\nimport { CellType } from '../base/enum';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n *\n * @hidden\n */\nvar ExpandCellRenderer = /** @class */ (function (_super) {\n __extends(ExpandCellRenderer, _super);\n function ExpandCellRenderer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Function to render the expand cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {string} data.field - Defines the field\n * @param {string} data.key - Defines the key\n * @param {Object} attr - specifies the attribute\n * @param {boolean} isExpand - specifies isexpand\n * @returns {Element} returns the element\n */\n ExpandCellRenderer.prototype.render = function (cell, data, attr, isExpand) {\n var node = this.element.cloneNode();\n node.setAttribute('ej-mappingname', data.field);\n node.setAttribute('ej-mappingvalue', data.key);\n node.setAttribute('aria-expanded', isExpand ? 'true' : 'false');\n node.setAttribute('tabindex', '-1');\n if (this.parent.infiniteScrollSettings && this.parent.infiniteScrollSettings.enableCache &&\n !this.parent.groupSettings.enableLazyLoading) {\n cell.cellType = CellType.Indent;\n node.className = isExpand ? 'e-recordplusexpand e-disablepointer' : 'e-recordpluscollapse e-disablepointer';\n }\n else {\n node.className = isExpand ? 'e-recordplusexpand' : 'e-recordpluscollapse';\n node.appendChild(this.parent.createElement('a', {\n className: isExpand ? 'e-icons e-gdiagonaldown e-icon-gdownarrow' : 'e-icons e-gnextforward e-icon-grightarrow',\n attrs: { href: '#', 'title': isExpand ? this.localizer.getConstant('Expanded') : this.localizer.getConstant('Collapsed') }\n }));\n }\n return node;\n };\n return ExpandCellRenderer;\n}(IndentCellRenderer));\nexport { ExpandCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { CellRenderer } from './cell-renderer';\n/**\n * HeaderIndentCellRenderer class which responsible for building header indent cell.\n *\n * @hidden\n */\nvar HeaderIndentCellRenderer = /** @class */ (function (_super) {\n __extends(HeaderIndentCellRenderer, _super);\n function HeaderIndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-grouptopleftcell' });\n return _this;\n }\n /**\n * Function to render the indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderIndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(this.parent.createElement('div', { className: 'e-headercelldiv e-emptycell', innerHTML: '' }));\n return node;\n };\n return HeaderIndentCellRenderer;\n}(CellRenderer));\nexport { HeaderIndentCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { CellRenderer } from './cell-renderer';\n/**\n * DetailHeaderIndentCellRenderer class which responsible for building detail header indent cell.\n *\n * @hidden\n */\nvar DetailHeaderIndentCellRenderer = /** @class */ (function (_super) {\n __extends(DetailHeaderIndentCellRenderer, _super);\n function DetailHeaderIndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-detailheadercell' });\n return _this;\n }\n /**\n * Function to render the detail indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DetailHeaderIndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(this.parent.createElement('div', { className: 'e-emptycell' }));\n return node;\n };\n return DetailHeaderIndentCellRenderer;\n}(CellRenderer));\nexport { DetailHeaderIndentCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n *\n * @hidden\n */\nvar DetailExpandCellRenderer = /** @class */ (function (_super) {\n __extends(DetailExpandCellRenderer, _super);\n function DetailExpandCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', {\n className: 'e-detailrowcollapse',\n attrs: { 'aria-expanded': 'false', tabindex: '-1' }\n });\n return _this;\n }\n /**\n * Function to render the detail expand cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attributes\n * @returns {Element} returns the element\n */\n DetailExpandCellRenderer.prototype.render = function (cell, data, attributes) {\n var node = this.element.cloneNode();\n if (attributes && !isNullOrUndefined(attributes['class'])) {\n node.className = '';\n node.className = attributes['class'];\n node.appendChild(this.parent.createElement('a', { className: 'e-icons e-dtdiagonaldown e-icon-gdownarrow', attrs: {\n href: '#', 'title': this.localizer.getConstant('Expanded')\n } }));\n }\n else {\n node.appendChild(this.parent.createElement('a', { className: 'e-icons e-dtdiagonalright e-icon-grightarrow', attrs: {\n href: '#', 'title': this.localizer.getConstant('Collapsed')\n } }));\n }\n if (cell.isSelected) {\n node.classList.add('e-selectionbackground', 'e-active');\n }\n return node;\n };\n return DetailExpandCellRenderer;\n}(CellRenderer));\nexport { DetailExpandCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { CellRenderer } from './cell-renderer';\nimport { applyStickyLeftRightPosition } from '../base/util';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n *\n * @hidden\n */\nvar RowDragDropRenderer = /** @class */ (function (_super) {\n __extends(RowDragDropRenderer, _super);\n function RowDragDropRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', {\n className: 'e-rowdragdrop e-rowdragdropcell',\n attrs: { tabindex: '-1', role: 'gridcell' }\n });\n return _this;\n }\n /**\n * Function to render the detail expand cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n RowDragDropRenderer.prototype.render = function (cell, data) {\n var nodeElement = this.element.cloneNode();\n nodeElement.appendChild(this.parent.createElement('div', {\n className: 'e-icons e-rowcelldrag e-dtdiagonalright e-icon-rowdragicon',\n attrs: { 'aria-hidden': 'true' }\n }));\n if (cell.isSelected) {\n nodeElement.classList.add('e-selectionbackground');\n nodeElement.classList.add('e-active');\n }\n if (this.parent.getVisibleFrozenRightCount() || this.parent.getVisibleFrozenLeftCount()) {\n nodeElement.classList.add('e-leftfreeze');\n var width = this.parent.getFrozenMode() === 'Right' ? 0 : this.parent.groupSettings.columns.length * 30;\n applyStickyLeftRightPosition(nodeElement, width, this.parent.enableRtl, this.parent.getFrozenMode() === 'Right' ? 'Right' : 'Left');\n }\n return nodeElement;\n };\n return RowDragDropRenderer;\n}(CellRenderer));\nexport { RowDragDropRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { createElement } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { applyStickyLeftRightPosition } from '../base/util';\n/**\n * DetailHeaderIndentCellRenderer class which responsible for building detail header indent cell.\n *\n * @hidden\n */\nvar RowDragDropHeaderRenderer = /** @class */ (function (_super) {\n __extends(RowDragDropHeaderRenderer, _super);\n function RowDragDropHeaderRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-rowdragheader' });\n return _this;\n }\n /**\n * Function to render the detail indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n RowDragDropHeaderRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(createElement('div', { className: 'e-emptycell' }));\n if (this.parent.getVisibleFrozenRightCount() || this.parent.getVisibleFrozenLeftCount()) {\n node.classList.add('e-leftfreeze');\n var width = this.parent.getFrozenMode() === 'Right' ? 0 : this.parent.groupSettings.columns.length * 30;\n applyStickyLeftRightPosition(node, width, this.parent.enableRtl, this.parent.getFrozenMode() === 'Right' ? 'Right' : 'Left');\n }\n return node;\n };\n return RowDragDropHeaderRenderer;\n}(CellRenderer));\nexport { RowDragDropHeaderRenderer };\n","import { remove, resetBlazorTemplate, blazorTemplates, getValue } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { DataManager, Query, Deferred, Predicate, DataUtil } from '@syncfusion/ej2-data';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { RenderType, CellType } from '../base/enum';\nimport { Data } from '../actions/data';\nimport { Column } from '../models/column';\nimport { Row } from '../models/row';\nimport { Cell } from '../models/cell';\nimport * as events from '../base/constant';\nimport { prepareColumns, setFormatter, isGroupAdaptive, getDatePredicate, getObject, clearReactVueTemplates } from '../base/util';\nimport { ContentRender } from '../renderer/content-renderer';\nimport { HeaderRender } from '../renderer/header-renderer';\nimport { CellRenderer } from '../renderer/cell-renderer';\nimport { HeaderCellRenderer } from '../renderer/header-cell-renderer';\nimport { StackedHeaderCellRenderer } from '../renderer/stacked-cell-renderer';\nimport { IndentCellRenderer } from '../renderer/indent-cell-renderer';\nimport { GroupCaptionCellRenderer, GroupCaptionEmptyCellRenderer } from '../renderer/caption-cell-renderer';\nimport { ExpandCellRenderer } from '../renderer/expand-cell-renderer';\nimport { HeaderIndentCellRenderer } from '../renderer/header-indent-renderer';\nimport { DetailHeaderIndentCellRenderer } from '../renderer/detail-header-indent-renderer';\nimport { DetailExpandCellRenderer } from '../renderer/detail-expand-cell-renderer';\nimport { RowDragDropRenderer } from './row-drag-drop-renderer';\nimport { RowDragDropHeaderRenderer } from '../renderer/row-drag-header-indent-render';\nimport * as literals from '../base/string-literals';\n/**\n * Content module is used to render grid content\n *\n * @hidden\n */\nvar Render = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} locator - specifies the serviceLocator\n */\n function Render(parent, locator) {\n this.emptyGrid = false;\n this.counter = 0;\n this.parent = parent;\n this.locator = locator;\n this.data = new Data(parent, locator);\n this.l10n = locator.getService('localization');\n this.ariaService = this.locator.getService('ariaService');\n this.renderer = this.locator.getService('rendererFactory');\n this.addEventListener();\n }\n /**\n * To initialize grid header, content and footer rendering\n *\n * @returns {void}\n */\n Render.prototype.render = function () {\n var gObj = this.parent;\n this.headerRenderer = this.renderer.getRenderer(RenderType.Header);\n this.contentRenderer = this.renderer.getRenderer(RenderType.Content);\n this.headerRenderer.renderPanel();\n this.contentRenderer.renderPanel();\n if (gObj.getColumns().length) {\n this.isLayoutRendered = true;\n this.headerRenderer.renderTable();\n this.contentRenderer.renderTable();\n this.emptyRow(false);\n }\n this.parent.scrollModule.setWidth();\n this.parent.scrollModule.setHeight();\n if (this.parent.height !== 'auto') {\n this.parent.scrollModule.setPadding();\n }\n this.refreshDataManager();\n };\n /**\n * Refresh the entire Grid.\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n */\n Render.prototype.refresh = function (e) {\n var _this = this;\n if (e === void 0) { e = { requestType: 'refresh' }; }\n var gObj = this.parent;\n gObj.notify(e.requestType + \"-begin\", e);\n gObj.trigger(events.actionBegin, e, function (args) {\n if (args === void 0) { args = { requestType: 'refresh' }; }\n if (args.cancel) {\n gObj.notify(events.cancelBegin, args);\n if (args.action === 'clearFilter' && _this.parent.filterSettings.type === 'Menu') {\n _this.parent.filterSettings.columns[_this.parent.filterModule.filterObjIndex] = _this.parent.filterModule.prevFilterObject;\n var iconClass = _this.parent.showColumnMenu && _this.parent.filterModule['column'].showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n var col = _this.parent.element.querySelector('[e-mappinguid=\"' + _this.parent.filterModule['column'].uid + '\"]').parentElement;\n var flIcon = col.querySelector(iconClass);\n if (!isNullOrUndefined(_this.parent.filterModule.prevFilterObject)) {\n flIcon.classList.add('e-filtered');\n }\n }\n if (args.action === 'clear-filter' && (_this.parent.filterSettings.type === 'CheckBox' || _this.parent.filterSettings.type === 'Excel')) {\n _this.parent.filterSettings.columns = _this.parent.filterModule.checkboxPrevFilterObject;\n }\n if (args.requestType === 'grouping') {\n // Remove the dropped column name from groupsettings.columns if args.cancel is true\n var index = gObj.groupSettings.columns.indexOf(args.columnName);\n if (index !== -1) {\n gObj.setProperties({ groupSettings: { Columns: gObj.groupSettings.columns.splice(index, 1) } }, true);\n gObj.setProperties({ sortSettings: { Columns: gObj.sortSettings.columns.splice(index, 1) } }, true);\n var column = gObj.getColumnByField(args.columnName);\n var headerCell = gObj.getColumnHeaderByField(column.field);\n column.visible = (!isNullOrUndefined(headerCell) && !headerCell.classList.contains('e-hide'));\n }\n }\n return;\n }\n if (gObj.allowSelection && (args.action === 'clearFilter' || args.action === 'clear-filter' ||\n (args.requestType === 'searching' && args.searchString === '') || args.action === 'add')) {\n gObj.selectionModule['rmtHdrChkbxClicked'] = false;\n }\n if (gObj.allowPaging && gObj.pageSettings.pageSizes && gObj.pagerModule.pagerObj.isAllPage &&\n (args.action === 'add' && args.requestType === 'save') && gObj.pagerModule.pagerObj.checkAll) {\n gObj.setProperties({ pageSettings: { pageSize: gObj.pageSettings.pageSize + 1 } }, true);\n }\n if (args.requestType === 'delete' && gObj.allowPaging) {\n var dataLength = args.data.length;\n var count = gObj.pageSettings.totalRecordsCount - dataLength;\n var currentViewData = gObj.getCurrentViewRecords().length;\n // eslint-disable-next-line max-len\n if ((!(currentViewData - dataLength) && count && ((gObj.pageSettings.currentPage - 1) * gObj.pageSettings.pageSize) === count) || (count && count <= dataLength)) {\n gObj.prevPageMoving = true;\n gObj.setProperties({\n pageSettings: {\n totalRecordsCount: count, currentPage: Math.ceil(count / gObj.pageSettings.pageSize)\n }\n }, true);\n gObj.pagerModule.pagerObj.totalRecordsCount = count;\n }\n }\n if (args.requestType === 'reorder' && _this.parent.dataSource && 'result' in _this.parent.dataSource) {\n _this.contentRenderer.refreshContentRows(args);\n }\n else if ((args.requestType === 'paging' || args.requestType === 'columnstate' || args.requestType === 'reorder')\n && _this.parent.groupSettings.enableLazyLoading && _this.parent.groupSettings.columns.length\n && (_this.parent.enableVirtualization ? _this.parent.lazyLoadRender :\n _this.parent.contentModule).getGroupCache()[_this.parent.pageSettings.currentPage]) {\n _this.contentRenderer.refreshContentRows(args);\n }\n else {\n _this.refreshDataManager(args);\n }\n });\n };\n /**\n * @returns {void}\n * @hidden\n */\n Render.prototype.resetTemplates = function () {\n var gObj = this.parent;\n var gridColumns = gObj.getColumns();\n if (gObj.detailTemplate) {\n var detailTemplateID = gObj.element.id + 'detailTemplate';\n blazorTemplates[\"\" + detailTemplateID] = [];\n resetBlazorTemplate(detailTemplateID, 'DetailTemplate');\n }\n if (gObj.groupSettings.captionTemplate) {\n resetBlazorTemplate(gObj.element.id + 'captionTemplate', 'CaptionTemplate');\n }\n if (gObj.rowTemplate) {\n resetBlazorTemplate(gObj.element.id + 'rowTemplate', 'RowTemplate');\n }\n if (gObj.toolbarTemplate) {\n resetBlazorTemplate(gObj.element.id + 'toolbarTemplate', 'ToolbarTemplate');\n }\n if (gObj.pageSettings.template) {\n resetBlazorTemplate(gObj.element.id + '_template', 'pageSettings');\n }\n for (var i = 0; i < gridColumns.length; i++) {\n if (gridColumns[parseInt(i.toString(), 10)].template) {\n blazorTemplates[gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid] = [];\n resetBlazorTemplate(gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid, 'Template');\n }\n if (gridColumns[parseInt(i.toString(), 10)].headerTemplate) {\n resetBlazorTemplate(gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid + 'headerTemplate', 'HeaderTemplate');\n }\n if (gridColumns[parseInt(i.toString(), 10)].filterTemplate) {\n resetBlazorTemplate(gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid + 'filterTemplate', 'FilterTemplate');\n }\n }\n var guid = 'guid';\n for (var k = 0; k < gObj.aggregates.length; k++) {\n for (var j = 0; j < gObj.aggregates[parseInt(k.toString(), 10)].columns.length; j++) {\n if (gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)].footerTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)][\"\" + guid] + 'footerTemplate';\n resetBlazorTemplate(tempID, 'FooterTemplate');\n }\n if (gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)].groupFooterTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)][\"\" + guid] + 'groupFooterTemplate';\n resetBlazorTemplate(tempID, 'GroupFooterTemplate');\n }\n if (gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)].groupCaptionTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)][\"\" + guid] + 'groupCaptionTemplate';\n resetBlazorTemplate(tempID, 'GroupCaptionTemplate');\n }\n }\n }\n };\n Render.prototype.refreshComplete = function (e) {\n this.parent.trigger(events.actionComplete, e);\n };\n /**\n * The function is used to refresh the dataManager\n *\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n */\n Render.prototype.refreshDataManager = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n var gObj = this.parent;\n var maskRow = (gObj.loadingIndicator.indicatorType === 'Shimmer' && args.requestType !== 'virtualscroll'\n && args.requestType !== 'infiniteScroll') || ((args.requestType === 'virtualscroll' || args.requestType === 'infiniteScroll')\n && gObj.enableVirtualMaskRow);\n if (args.requestType !== 'virtualscroll' && !args.isCaptionCollapse && !maskRow) {\n this.parent.showSpinner();\n }\n if (maskRow) {\n gObj.showMaskRow(args.requestType === 'virtualscroll' ? args.virtualInfo.sentinelInfo.axis\n : args.requestType === 'infiniteScroll' ? args.direction : undefined);\n }\n this.parent.notify(events.resetInfiniteBlocks, args);\n this.emptyGrid = false;\n var dataManager;\n var isFActon = this.isNeedForeignAction();\n this.ariaService.setBusy(this.parent.getContent().querySelector('.' + literals.content), true);\n if (isFActon) {\n var deffered = new Deferred();\n dataManager = this.getFData(deffered, args);\n }\n if (!dataManager) {\n if (gObj.allowPaging && !gObj.getDataModule().dataManager.dataSource.offline && gObj.pageSettings\n && gObj.pageSettings.pageSizes && gObj.pagerModule && gObj.pagerModule.pagerObj && gObj.pagerModule.pagerObj.isAllPage) {\n gObj.pagerModule.pagerObj.isAllPage = undefined;\n }\n dataManager = this.data.getData(args, this.data.generateQuery().requiresCount());\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n dataManager = dataManager.then(function (e) {\n var query = _this.data.generateQuery().requiresCount();\n if (_this.emptyGrid) {\n var def = new Deferred();\n def.resolve({ result: [], count: 0 });\n return def.promise;\n }\n return _this.data.getData(args, query);\n });\n }\n var foreignKeyColumns = this.parent.getForeignKeyColumns();\n var foreignKeyLength = foreignKeyColumns.length;\n if (this.parent.columnQueryMode === 'ExcludeHidden' && foreignKeyLength) {\n foreignKeyLength = foreignKeyColumns.filter(function (col) { return col.visible !== false; }).length;\n }\n if (foreignKeyLength && (!isFActon || this.parent.searchSettings.key.length)) {\n var deffered_1 = new Deferred();\n dataManager = dataManager.then(function (e) {\n _this.parent.notify(events.getForeignKeyData, { dataManager: dataManager, result: e, promise: deffered_1, action: args });\n return deffered_1.promise;\n });\n }\n if (this.parent.groupSettings.disablePageWiseAggregates && this.parent.groupSettings.columns.length) {\n dataManager = dataManager.then(function (e) { return _this.validateGroupRecords(e); });\n }\n dataManager.then(function (e) { return _this.dataManagerSuccess(e, args); })\n .catch(function (e) { return _this.dataManagerFailure(e, args); });\n };\n Render.prototype.getFData = function (deferred, args) {\n this.parent.notify(events.getForeignKeyData, { isComplex: true, promise: deferred, action: args });\n return deferred.promise;\n };\n Render.prototype.isNeedForeignAction = function () {\n var gObj = this.parent;\n return !!((gObj.allowFiltering && gObj.filterSettings.columns.length) ||\n (!isNullOrUndefined(gObj.searchSettings.key) && gObj.searchSettings.key.length)) && this.foreignKey(this.parent.getForeignKeyColumns());\n };\n Render.prototype.foreignKey = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n var fbool = false;\n fbool = _this.parent.filterSettings.columns.some(function (value) {\n return col.uid === value.uid;\n });\n return !!(fbool || _this.parent.searchSettings.key.length);\n });\n };\n Render.prototype.sendBulkRequest = function (args) {\n var _this = this;\n args.requestType = 'batchsave';\n var gObj = this.parent;\n if (gObj.allowPaging && gObj.pageSettings.pageSizes && gObj.pagerModule.pagerObj.isAllPage && gObj.pagerModule.pagerObj.checkAll) {\n var dataLength = args['changes'].addedRecords.length;\n if (dataLength) {\n gObj.setProperties({ pageSettings: { pageSize: gObj.pageSettings.pageSize + dataLength } }, true);\n }\n }\n if (gObj.allowPaging && (args.changes.addedRecords.length ||\n args.changes.deletedRecords.length ||\n args.changes.changedRecords.length) && gObj.pageSettings\n && gObj.pageSettings.pageSizes && gObj.pagerModule && gObj.pagerModule.pagerObj\n && !gObj.getDataModule().dataManager.dataSource.offline && gObj.pagerModule.pagerObj.isAllPage) {\n gObj.pagerModule.pagerObj.isAllPage = undefined;\n }\n var promise = this.data.saveChanges(args.changes, this.parent.getPrimaryKeyFieldNames()[0], args.original);\n var query = this.data.generateQuery().requiresCount();\n if (this.data.dataManager.dataSource.offline) {\n this.refreshDataManager({ requestType: 'batchsave' });\n return;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n promise.then(function (e) {\n _this.data.getData(args, query)\n .then(function (e) { return _this.dmSuccess(e, args); })\n .catch(function (e) { return _this.dmFailure(e, args); });\n })\n .catch(function (e) { return _this.dmFailure(e, args); });\n }\n };\n Render.prototype.dmSuccess = function (e, args) {\n this.dataManagerSuccess(e, args);\n };\n Render.prototype.dmFailure = function (e, args) {\n this.dataManagerFailure(e, args);\n };\n /**\n * Render empty row to Grid which is used at the time to represent to no records.\n *\n * @returns {void}\n * @hidden\n */\n Render.prototype.renderEmptyRow = function () {\n this.emptyRow(true);\n };\n Render.prototype.emptyRow = function (isTrigger) {\n var gObj = this.parent;\n var tbody = this.contentRenderer.getTable().querySelector(literals.tbody);\n if (!isNullOrUndefined(tbody)) {\n remove(tbody);\n }\n tbody = this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n var spanCount = gObj.allowRowDragAndDrop && isNullOrUndefined(gObj.rowDropSettings.targetID) ? 1 : 0;\n if (gObj.detailTemplate || gObj.childGrid) {\n ++spanCount;\n }\n var className = gObj.editSettings.showAddNewRow && gObj.editSettings.newRowPosition === 'Bottom' ?\n 'e-emptyrow e-show-added-row' : 'e-emptyrow';\n var tr = this.parent.createElement('tr', { className: className, attrs: { role: 'row' } });\n var td;\n if (gObj.emptyRecordTemplate) {\n var emptyRecordTemplateID = gObj.element.id + 'emptyRecordTemplate';\n td = this.parent.createElement('td', { attrs: { colspan: (gObj.getVisibleColumns().length +\n spanCount + gObj.groupSettings.columns.length).toString() } });\n if (gObj.isVue || (gObj.parentDetails && gObj.parentDetails.parentInstObj && gObj.parentDetails.parentInstObj.isVue)) {\n td.appendChild(gObj.getEmptyRecordTemplate()(gObj.dataSource, gObj, 'emptyRecordTemplate', emptyRecordTemplateID, undefined, undefined, undefined, this.parent['root'])[1]);\n }\n else {\n td.appendChild(gObj.getEmptyRecordTemplate()(gObj.dataSource, gObj, 'emptyRecordTemplate', emptyRecordTemplateID, undefined, undefined, undefined, this.parent['root'])[0]);\n }\n if (gObj.isReact) {\n this.parent.renderTemplates();\n }\n }\n else {\n td = this.parent.createElement('td', {\n innerHTML: this.l10n.getConstant('EmptyRecord'),\n attrs: { colspan: (gObj.getVisibleColumns().length + spanCount + (!isNullOrUndefined(gObj.groupSettings.columns) ? gObj.groupSettings.columns.length : 0)).toString() }\n });\n }\n if (gObj.isFrozenGrid()) {\n td.classList.add('e-leftfreeze');\n td.style.left = 0 + 'px';\n }\n if (gObj.frozenRows && gObj.element.querySelector('.e-frozenrow-border')) {\n this.parent.element.querySelector('.e-frozenrow-border').classList.add('e-frozenrow-empty');\n }\n tr.appendChild(td);\n tbody.appendChild(tr);\n this.contentRenderer.renderEmpty(tbody);\n if (isTrigger) {\n if (!this.parent.isInitialLoad) {\n this.parent.focusModule.setFirstFocusableTabIndex();\n }\n this.parent.trigger(events.dataBound, {});\n this.parent.notify(events.onEmpty, { rows: [new Row({ isDataRow: true, cells: [new Cell({ isDataCell: true, visible: true })] })] });\n if (gObj.editSettings.showAddNewRow) {\n gObj.addRecord();\n this.parent.notify(events.showAddNewRowFocus, {});\n }\n }\n };\n Render.prototype.dynamicColumnChange = function () {\n if (this.parent.getCurrentViewRecords().length) {\n this.updateColumnType(this.parent.getCurrentViewRecords()[0]);\n }\n };\n Render.prototype.updateColumnType = function (record) {\n var columns = this.parent.getColumns();\n var value;\n var cFormat = 'customFormat';\n var equalTo = 'equalTo';\n var data = record && record.items ? record.items[0] : record;\n var fmtr = this.locator.getService('valueFormatter');\n for (var i = 0, len = columns.length; i < len; i++) {\n value = getObject(columns[parseInt(i.toString(), 10)].field || '', data);\n if (!isNullOrUndefined(columns[parseInt(i.toString(), 10)][\"\" + cFormat])) {\n columns[parseInt(i.toString(), 10)].format = columns[parseInt(i.toString(), 10)][\"\" + cFormat];\n }\n if (!isNullOrUndefined(columns[parseInt(i.toString(), 10)].validationRules)\n && !isNullOrUndefined(columns[parseInt(i.toString(), 10)].validationRules[\"\" + equalTo])) {\n columns[parseInt(i.toString(), 10)].validationRules[\"\" + equalTo][0] = this.parent.element.id + columns[parseInt(i.toString(), 10)].validationRules[\"\" + equalTo][0];\n }\n if (columns[parseInt(i.toString(), 10)].isForeignColumn() && columns[parseInt(i.toString(), 10)].columnData) {\n value = getObject(columns[parseInt(i.toString(), 10)].foreignKeyValue || '', columns[parseInt(i.toString(), 10)].columnData[0]);\n }\n if (!isNullOrUndefined(value)) {\n this.isColTypeDef = true;\n if (!columns[parseInt(i.toString(), 10)].type) {\n columns[parseInt(i.toString(), 10)].type = value.getDay ? (value.getHours() > 0 || value.getMinutes() > 0 ||\n value.getSeconds() > 0 || value.getMilliseconds() > 0 ? 'datetime' : 'date') : typeof (value);\n }\n }\n else {\n columns[parseInt(i.toString(), 10)].type = columns[parseInt(i.toString(), 10)].type || null;\n }\n var valueFormatter = new ValueFormatter();\n if (columns[parseInt(i.toString(), 10)].format && (columns[parseInt(i.toString(), 10)].format.skeleton\n || (columns[parseInt(i.toString(), 10)].format.format &&\n typeof columns[parseInt(i.toString(), 10)].format.format === 'string'))) {\n columns[parseInt(i.toString(), 10)].setFormatter(valueFormatter.getFormatFunction(extend({}, columns[parseInt(i.toString(), 10)].format)));\n columns[parseInt(i.toString(), 10)].setParser(valueFormatter.getParserFunction(columns[parseInt(i.toString(), 10)].format));\n }\n if (typeof (columns[parseInt(i.toString(), 10)].format) === 'string') {\n setFormatter(this.locator, columns[parseInt(i.toString(), 10)]);\n }\n else if (!columns[parseInt(i.toString(), 10)].format && columns[parseInt(i.toString(), 10)].type === 'number') {\n columns[parseInt(i.toString(), 10)].setParser(fmtr.getParserFunction({ format: 'n2' }));\n }\n if (columns[parseInt(i.toString(), 10)].type === 'dateonly' && !columns[parseInt(i.toString(), 10)].format) {\n columns[parseInt(i.toString(), 10)].format = 'yMd';\n setFormatter(this.locator, columns[parseInt(i.toString(), 10)]);\n }\n }\n };\n /**\n * @param {ReturnType} e - specifies the return type\n * @param {NotifyArgs} args - specifies the Notifyargs\n * @returns {void}\n * @hidden\n */\n // tslint:disable-next-line:max-func-body-length\n Render.prototype.dataManagerSuccess = function (e, args) {\n var _this = this;\n var gObj = this.parent;\n this.contentRenderer = this.renderer.getRenderer(RenderType.Content);\n this.headerRenderer = this.renderer.getRenderer(RenderType.Header);\n e.actionArgs = args;\n var isInfiniteDelete = this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache &&\n !gObj.groupSettings.enableLazyLoading && (args.requestType === 'delete' || (args.requestType === 'save' &&\n this.parent.infiniteScrollModule.requestType === 'add' && !(gObj.sortSettings.columns.length ||\n gObj.filterSettings.columns.length || this.parent.groupSettings.columns.length || gObj.searchSettings.key)));\n // tslint:disable-next-line:max-func-body-length\n gObj.trigger(events.beforeDataBound, e, function (dataArgs) {\n if (dataArgs.cancel) {\n return;\n }\n dataArgs.result = isNullOrUndefined(dataArgs.result) ? [] : dataArgs.result;\n var len = Object.keys(dataArgs.result).length;\n if (_this.parent.isDestroyed) {\n return;\n }\n if ((!gObj.getColumns().length && !len) && !(gObj.columns.length && gObj.columns[0] instanceof Column)) {\n gObj.hideSpinner();\n return;\n }\n if (_this.isInfiniteEnd(args) && !len) {\n _this.parent.notify(events.infiniteEditHandler, { e: args, result: e.result, count: e.count, agg: e.aggregates });\n return;\n }\n _this.parent.isEdit = false;\n _this.parent.notify(events.editReset, {});\n _this.parent.notify(events.tooltipDestroy, {});\n if (args && !((args.requestType === 'infiniteScroll' || args.requestType === 'delete' || args.action === 'add') &&\n gObj.enableInfiniteScrolling)) {\n _this.parent.notify(events.commandColumnDestroy, { type: 'refreshCommandColumn' });\n }\n _this.contentRenderer.prevCurrentView = !isNullOrUndefined(_this.parent.currentViewData) && _this.parent.currentViewData.slice();\n gObj.currentViewData = dataArgs.result;\n gObj.notify(events.refreshInfiniteCurrentViewData, { args: args, data: dataArgs.result });\n if (dataArgs.count && !gObj.allowPaging && (gObj.enableVirtualization || gObj.enableInfiniteScrolling)) {\n gObj.totalDataRecordsCount = dataArgs.count;\n }\n if (!len && dataArgs.count && gObj.allowPaging && args && args.requestType !== 'delete') {\n if (_this.parent.groupSettings.enableLazyLoading\n && (args.requestType === 'grouping' || args.requestType === 'ungrouping')) {\n _this.parent.notify(events.groupComplete, args);\n }\n gObj.prevPageMoving = true;\n gObj.pageSettings.totalRecordsCount = dataArgs.count;\n if (args.requestType !== 'paging') {\n gObj.pageSettings.currentPage = Math.ceil(dataArgs.count / gObj.pageSettings.pageSize);\n }\n gObj.dataBind();\n return;\n }\n if ((!gObj.getColumns().length && len || !_this.isLayoutRendered) && !isGroupAdaptive(gObj)) {\n gObj.removeMaskRow();\n _this.updatesOnInitialRender(dataArgs);\n }\n if (!_this.isColTypeDef && gObj.getCurrentViewRecords()) {\n if (_this.data.dataManager.dataSource.offline && gObj.dataSource && gObj.dataSource.length) {\n _this.updateColumnType(gObj.dataSource[0]);\n }\n else {\n _this.updateColumnType(gObj.getCurrentViewRecords()[0]);\n }\n }\n if (!_this.parent.isInitialLoad && _this.parent.groupSettings.disablePageWiseAggregates &&\n !_this.parent.groupSettings.columns.length) {\n dataArgs.result = _this.parent.dataSource instanceof Array ? _this.parent.dataSource : _this.parent.currentViewData;\n }\n if ((_this.parent.isReact || _this.parent.isVue) && !isNullOrUndefined(args) && args.requestType !== 'infiniteScroll' && !args.isFrozen) {\n clearReactVueTemplates(_this.parent, ['footerTemplate']);\n }\n if (_this.parent.isAngular && _this.parent.allowGrouping && _this.parent.groupSettings.captionTemplate\n && !(!isNullOrUndefined(args) && args.requestType === 'infiniteScroll')) {\n _this.parent.destroyTemplate(['groupSettings_captionTemplate']);\n }\n _this.parent.notify(events.dataReady, extend({ count: dataArgs.count, result: dataArgs.result, aggregates: dataArgs.aggregates, loadSummaryOnEmpty: false }, args));\n if ((gObj.groupSettings.columns.length || (args && args.requestType === 'ungrouping'))\n && (args && args.requestType !== 'filtering')) {\n _this.headerRenderer.refreshUI();\n }\n if (len) {\n if (isGroupAdaptive(gObj)) {\n var content = 'content';\n args.scrollTop = { top: _this.contentRenderer[\"\" + content].scrollTop };\n }\n if (!isInfiniteDelete) {\n if (_this.parent.enableImmutableMode) {\n _this.contentRenderer.immutableModeRendering(args);\n }\n else {\n _this.contentRenderer.refreshContentRows(args);\n }\n }\n else {\n _this.parent.notify(events.infiniteEditHandler, { e: args, result: e.result, count: e.count, agg: e.aggregates });\n }\n }\n else {\n if (args && args.isCaptionCollapse) {\n return;\n }\n if (!gObj.getColumns().length) {\n gObj.element.innerHTML = '';\n alert(_this.l10n.getConstant('EmptyDataSourceError')); //ToDO: change this alert as dialog\n return;\n }\n _this.contentRenderer.setRowElements([]);\n _this.contentRenderer.setRowObjects([]);\n _this.ariaService.setBusy(_this.parent.getContent().querySelector('.' + literals.content), false);\n gObj.removeMaskRow();\n _this.renderEmptyRow();\n if (gObj.enableColumnVirtualization && !len) {\n _this.parent.notify(events.contentReady, { rows: gObj.getRowsObject(), args: {} });\n }\n if (args) {\n var action = (args.requestType || '').toLowerCase() + '-complete';\n _this.parent.notify(action, args);\n if (args.requestType === 'batchsave') {\n args.cancel = false;\n args.rows = [];\n args.isFrozen = !args.isFrozen;\n _this.parent.trigger(events.actionComplete, args);\n }\n }\n if (_this.parent.autoFit) {\n _this.parent.preventAdjustColumns();\n }\n _this.parent.hideSpinner();\n }\n _this.parent.notify(events.toolbarRefresh, {});\n _this.setRowCount(_this.parent.getCurrentViewRecords().length);\n if ('query' in e) {\n _this.parent.getDataModule().isQueryInvokedFromData = false;\n }\n });\n };\n /**\n * @param {object} e - specifies the object\n * @param {Object[]} e.result - specifies the result\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n * @hidden\n */\n Render.prototype.dataManagerFailure = function (e, args) {\n if (!isNullOrUndefined(this.parent.contentModule)) {\n this.ariaService.setOptions(this.parent.getContent().querySelector('.' + literals.content), { busy: false, invalid: true });\n this.setRowCount(1);\n }\n this.parent.trigger(events.actionFailure, { error: e });\n this.parent.hideSpinner();\n this.parent.removeMaskRow();\n if (args.requestType === 'save' || args.requestType === 'delete'\n || args.name === 'bulk-save') {\n return;\n }\n this.parent.currentViewData = [];\n this.renderEmptyRow();\n if (!this.parent.isInitialLoad) {\n this.parent.focusModule.setFirstFocusableTabIndex();\n }\n this.parent.log('actionfailure', { error: e });\n };\n Render.prototype.setRowCount = function (dataRowCount) {\n this.ariaService.setOptions(this.parent.element, {\n rowcount: dataRowCount ? dataRowCount.toString() : '1'\n });\n };\n Render.prototype.isInfiniteEnd = function (args) {\n return this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache && args.requestType === 'delete';\n };\n Render.prototype.updatesOnInitialRender = function (e) {\n this.isLayoutRendered = true;\n var isEmptyCol = false;\n if (this.parent.columns.length < 1) {\n this.buildColumns(e.result[0]);\n isEmptyCol = true;\n }\n prepareColumns(this.parent.columns, null, this.parent);\n if (isEmptyCol) {\n this.parent.notify(events.refreshSplitFrozenColumn, {});\n }\n this.headerRenderer.renderTable();\n this.contentRenderer.renderTable();\n this.parent.isAutoGen = true;\n this.parent.notify(events.autoCol, {});\n };\n Render.prototype.iterateComplexColumns = function (obj, field, split) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n var childKeys = typeof obj[keys[parseInt(i.toString(), 10)]] === 'object'\n && obj[keys[parseInt(i.toString(), 10)]] && !(obj[keys[parseInt(i.toString(), 10)]] instanceof Date) ?\n Object.keys(obj[keys[parseInt(i.toString(), 10)]]) : [];\n if (childKeys.length) {\n this.iterateComplexColumns(obj[keys[parseInt(i.toString(), 10)]], field + (keys[parseInt(i.toString(), 10)] + '.'), split);\n }\n else {\n split[this.counter] = field + keys[parseInt(i.toString(), 10)];\n this.counter++;\n }\n }\n };\n Render.prototype.buildColumns = function (record) {\n var cols = [];\n var complexCols = {};\n this.iterateComplexColumns(record, '', complexCols);\n var columns = Object.keys(complexCols).filter(function (e) { return complexCols[\"\" + e] !== 'BlazId'; }).\n map(function (field) { return complexCols[\"\" + field]; });\n for (var i = 0, len = columns.length; i < len; i++) {\n cols[parseInt(i.toString(), 10)] = { 'field': columns[parseInt(i.toString(), 10)] };\n if (this.parent.enableColumnVirtualization) {\n cols[parseInt(i.toString(), 10)].width = !isNullOrUndefined(cols[parseInt(i.toString(), 10)].width) ?\n cols[parseInt(i.toString(), 10)].width : 200;\n }\n }\n this.parent.setProperties({ 'columns': cols }, true);\n };\n Render.prototype.instantiateRenderer = function () {\n this.renderer.addRenderer(RenderType.Header, new HeaderRender(this.parent, this.locator));\n this.renderer.addRenderer(RenderType.Content, new ContentRender(this.parent, this.locator));\n var cellrender = this.locator.getService('cellRendererFactory');\n cellrender.addCellRenderer(CellType.Header, new HeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Data, new CellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.StackedHeader, new StackedHeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Indent, new IndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.GroupCaption, new GroupCaptionCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.GroupCaptionEmpty, new GroupCaptionEmptyCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Expand, new ExpandCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.HeaderIndent, new HeaderIndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.StackedHeader, new StackedHeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailHeader, new DetailHeaderIndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.RowDragHIcon, new RowDragDropHeaderRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailExpand, new DetailExpandCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailFooterIntent, new IndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.RowDragIcon, new RowDragDropRenderer(this.parent, this.locator));\n };\n Render.prototype.addEventListener = function () {\n var _this = this;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.initialLoad, this.instantiateRenderer, this);\n this.parent.on('refreshdataSource', this.dataManagerSuccess, this);\n this.parent.on(events.modelChanged, this.refresh, this);\n this.parent.on(events.refreshComplete, this.refreshComplete, this);\n this.parent.on(events.bulkSave, this.sendBulkRequest, this);\n this.parent.on(events.showEmptyGrid, function () { _this.emptyGrid = true; }, this);\n this.parent.on(events.autoCol, this.dynamicColumnChange, this);\n };\n /**\n * @param {ReturnType} e - specifies the Return type\n * @returns {Promise} returns the object\n * @hidden\n */\n Render.prototype.validateGroupRecords = function (e) {\n var _this = this;\n var index = e.result.length - 1;\n if (index < 0) {\n return Promise.resolve(e);\n }\n var group0 = e.result[0];\n var groupN = e.result[parseInt(index.toString(), 10)];\n var predicate = [];\n var addWhere = function (input) {\n var groups = [group0, groupN];\n for (var i = 0; i < groups.length; i++) {\n predicate.push(new Predicate('field', '==', groups[parseInt(i.toString(), 10)].field).and(_this.getPredicate('key', 'equal', groups[parseInt(i.toString(), 10)].key)));\n }\n input.where(Predicate.or(predicate));\n };\n var query = new Query();\n addWhere(query);\n var curDm = new DataManager(e.result);\n var curFilter = curDm.executeLocal(query);\n var newQuery = this.data.generateQuery(true);\n var rPredicate = [];\n if (this.data.isRemote()) {\n var groups = [group0, groupN];\n for (var i = 0; i < groups.length; i++) {\n rPredicate.push(this.getPredicate(groups[parseInt(i.toString(), 10)].field, 'equal', groups[parseInt(i.toString(), 10)].key));\n }\n newQuery.where(Predicate.or(rPredicate));\n }\n else {\n addWhere(newQuery);\n }\n var deferred = new Deferred();\n this.data.getData({}, newQuery).then(function (r) {\n _this.updateGroupInfo(curFilter, r.result);\n deferred.resolve(e);\n }).catch(function (e) { return deferred.reject(e); });\n return deferred.promise;\n };\n /**\n * @param {string} key - Defines the key\n * @param {string} operator - Defines the operator\n * @param {string | number | Date} value - Defines the value\n * @returns {Predicate} - Returns the predicate\n * @hidden */\n Render.prototype.getPredicate = function (key, operator, value) {\n if (value instanceof Date) {\n return getDatePredicate({ field: key, operator: operator, value: value });\n }\n return new Predicate(key, operator, value);\n };\n /**\n * @param {Object[]} current - Defines the current object\n * @param {Object[]} untouched - Defines the object needs to merge\n * @returns {Object[]} - Returns the updated group information\n * @hidden */\n Render.prototype.updateGroupInfo = function (current, untouched) {\n var dm = new DataManager(untouched);\n var elements = current;\n for (var i = 0; i < elements.length; i++) {\n var updatedGroup = dm.executeLocal(new Query()\n .where(new Predicate('field', '==', elements[parseInt(i.toString(), 10)].field).and(this.getPredicate('key', 'equal', elements[parseInt(i.toString(), 10)].key))))[0];\n if (!isNullOrUndefined(updatedGroup)) {\n elements[parseInt(i.toString(), 10)].count = updatedGroup.count;\n var itemGroup = elements[parseInt(i.toString(), 10)].items;\n var updatedGroupItem = updatedGroup.items;\n if (itemGroup.GroupGuid) {\n elements[parseInt(i.toString(), 10)].items =\n this.updateGroupInfo(elements[parseInt(i.toString(), 10)].items, updatedGroup.items);\n }\n var rows = this.parent.aggregates;\n for (var j = 0; j < rows.length; j++) {\n var row = rows[parseInt(j.toString(), 10)];\n for (var k = 0; k < row.columns.length; k++) {\n var column = row.columns[parseInt(k.toString(), 10)];\n var types = column.type instanceof Array ? (column.type) : [(column.type)];\n for (var l = 0; l < types.length; l++) {\n var key = column.field + ' - ' + types[parseInt(l.toString(), 10)].toLowerCase();\n var data = itemGroup.level ? updatedGroupItem.records : updatedGroup.items;\n var context = this.parent;\n if (types[parseInt(l.toString(), 10)] === 'Custom') {\n var data_1 = itemGroup.level ? updatedGroupItem : updatedGroup;\n var temp = column\n .customAggregate;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n elements[parseInt(i.toString(), 10)].aggregates[\"\" + key] = temp ? temp.call(context, data_1, row.columns[parseInt(k.toString(), 10)]) : '';\n }\n else {\n elements[parseInt(i.toString(), 10)].aggregates[\"\" + key] = DataUtil.aggregates[types[parseInt(l.toString(), 10)].toLowerCase()](data, row.columns[parseInt(k.toString(), 10)].field);\n }\n }\n }\n }\n }\n }\n return current;\n };\n return Render;\n}());\nexport { Render };\n","import { isNullOrUndefined, getEnumValue } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\n/**\n * CellRendererFactory\n *\n * @hidden\n */\nvar CellRendererFactory = /** @class */ (function () {\n function CellRendererFactory() {\n this.cellRenderMap = {};\n }\n CellRendererFactory.prototype.addCellRenderer = function (name, type) {\n name = typeof name === 'string' ? name : getEnumValue(CellType, name);\n if (isNullOrUndefined(this.cellRenderMap[\"\" + name])) {\n this.cellRenderMap[\"\" + name] = type;\n }\n };\n CellRendererFactory.prototype.getCellRenderer = function (name) {\n name = typeof name === 'string' ? name : getEnumValue(CellType, name);\n if (isNullOrUndefined(this.cellRenderMap[\"\" + name])) {\n // eslint-disable-next-line no-throw-literal\n throw \"The cellRenderer \" + name + \" is not found\";\n }\n else {\n return this.cellRenderMap[\"\" + name];\n }\n };\n return CellRendererFactory;\n}());\nexport { CellRendererFactory };\n","import { Dialog } from '@syncfusion/ej2-popups';\nimport { EventHandler, isNullOrUndefined, remove, Browser } from '@syncfusion/ej2-base';\nimport { parentsUntil, addBiggerDialog, addRemoveEventListener } from '../base/util';\nimport * as events from '../base/constant';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { ResponsiveDialogAction } from '../base/enum';\n/**\n *\n * The `ResponsiveDialogRenderer` module is used to render the responsive dialogs.\n */\nvar ResponsiveDialogRenderer = /** @class */ (function () {\n function ResponsiveDialogRenderer(parent, serviceLocator) {\n this.sortedCols = [];\n this.sortPredicate = [];\n /** @hidden */\n this.isCustomDialog = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n ResponsiveDialogRenderer.prototype.addEventListener = function () {\n this.evtHandlers = [{ event: events.filterDialogClose, handler: this.closeCustomDialog },\n { event: events.refreshCustomFilterOkBtn, handler: this.refreshCustomFilterOkBtn },\n { event: events.renderResponsiveCmenu, handler: this.renderResponsiveContextMenu },\n { event: events.filterCmenuSelect, handler: this.renderCustomFilterDiv },\n { event: events.customFilterClose, handler: this.customExFilterClose },\n { event: events.refreshCustomFilterClearBtn, handler: this.refreshCustomFilterClearBtn }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.onActionCompleteFn = this.editComplate.bind(this);\n this.parent.addEventListener(events.actionComplete, this.onActionCompleteFn);\n };\n ResponsiveDialogRenderer.prototype.customExFilterClose = function () {\n this.isCustomDlgRender = false;\n };\n ResponsiveDialogRenderer.prototype.renderCustomFilterDiv = function () {\n var header = this.customResponsiveDlg.element.querySelector('.e-dlg-header-content');\n var title = header.querySelector('.e-dlg-custom-header');\n var closeBtn = header.querySelector('.e-dlg-closeicon-btn');\n this.isCustomDlgRender = true;\n this.parent.filterModule.filterModule.closeDialog();\n this.saveBtn.element.style.display = '';\n this.refreshCustomFilterOkBtn({ disabled: false });\n this.backBtn.element.style.display = 'none';\n closeBtn.style.display = '';\n title.innerHTML = this.parent.localeObj.getConstant('CustomFilter');\n var content = this.customResponsiveDlg.element.querySelector('.e-dlg-content');\n this.customExcelFilterParent = this.parent.createElement('div', { className: 'e-xl-customfilterdiv e-default-filter' });\n content.appendChild(this.customExcelFilterParent);\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveContextMenu = function (args) {\n if (this.action === ResponsiveDialogAction.isFilter) {\n var content = this.customResponsiveDlg.element.querySelector('.e-dlg-content');\n var header = this.customResponsiveDlg.element.querySelector('.e-dlg-header-content');\n var closeBtn = header.querySelector('.e-dlg-closeicon-btn');\n var text = header.querySelector('.e-dlg-custom-header');\n if (args.isOpen) {\n content.firstChild.style.display = 'none';\n content.appendChild(args.target);\n closeBtn.style.display = 'none';\n this.saveBtn.element.style.display = 'none';\n this.filterClearBtn.element.style.display = 'none';\n text.innerHTML = args.header;\n var backBtn = this.parent.createElement('button');\n var span = this.parent.createElement('span', { className: 'e-btn-icon e-resfilterback e-icons' });\n backBtn.appendChild(span);\n this.backBtn = new Button({\n cssClass: this.parent.cssClass ? 'e-res-back-btn' + ' ' + this.parent.cssClass : 'e-res-back-btn'\n });\n this.backBtn.appendTo(backBtn);\n text.parentElement.insertBefore(backBtn, text);\n }\n else if (this.backBtn && !this.isCustomDlgRender) {\n content.firstChild.style.display = '';\n remove(this.backBtn.element);\n closeBtn.style.display = '';\n this.saveBtn.element.style.display = '';\n if (this.isFiltered) {\n this.filterClearBtn.element.style.display = '';\n }\n text.innerHTML = this.getHeaderTitle({ action: ResponsiveDialogAction.isFilter }, args.col);\n }\n }\n };\n ResponsiveDialogRenderer.prototype.refreshCustomFilterClearBtn = function (args) {\n if (this.filterClearBtn) {\n this.isFiltered = args.isFiltered;\n this.filterClearBtn.element.style.display = args.isFiltered ? '' : 'none';\n }\n };\n ResponsiveDialogRenderer.prototype.refreshCustomFilterOkBtn = function (args) {\n if (this.saveBtn) {\n this.saveBtn.disabled = args.disabled;\n }\n if (this.parent.columnChooserModule && this.parent.columnChooserModule.responsiveDialogRenderer.saveBtn) {\n this.parent.columnChooserModule.responsiveDialogRenderer.saveBtn.disabled = args.disabled;\n }\n };\n ResponsiveDialogRenderer.prototype.columnMenuResponsiveContent = function (str, locale, disabled) {\n var cDiv = this.parent.createElement('div', { className: 'e-responsivecoldiv e-responsive' + str.toLowerCase() + 'div' + (disabled ? ' e-disabled' : '') });\n var span = this.parent.createElement('span', { className: 'e-icons e-res' + str.toLowerCase() + '-icon e-btn-icon' });\n var icon = this.parent.createElement('span', { innerHTML: locale, className: 'e-rescolumn-menu e-res-header-text' });\n cDiv.appendChild(span);\n cDiv.appendChild(icon);\n this.customColumnDiv.appendChild(cDiv);\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveContent = function (col, column) {\n var _this = this;\n var gObj = this.parent;\n var isColumnChooser = this.action === ResponsiveDialogAction.isColumnChooser;\n if (col || isColumnChooser) {\n this.filterParent = this.parent.createElement('div', { className: (isColumnChooser ? 'e-maincolumnchooserdiv ' : '') + 'e-mainfilterdiv e-default-filter',\n id: (isColumnChooser ? 'columchooser' : col.uid) + '-main-filter' });\n return this.filterParent;\n }\n else {\n this.customColumnDiv = gObj.createElement('div', { className: 'columndiv columnmenudiv', styles: 'width: 100%' });\n if (this.parent.showColumnMenu && this.parent.rowRenderingMode === 'Horizontal' && this.action === ResponsiveDialogAction.isColMenu) {\n this.columnMenuResponsiveContent('AutoFitAll', gObj.localeObj.getConstant('AutoFitAll'));\n this.columnMenuResponsiveContent('AutoFit', gObj.localeObj.getConstant('AutoFit'));\n if (column.allowGrouping && gObj.allowGrouping) {\n this.columnMenuResponsiveContent('Group', gObj.localeObj.getConstant('Group'), gObj.groupSettings.columns.indexOf(column.field) >= 0);\n this.columnMenuResponsiveContent('UnGroup', gObj.localeObj.getConstant('Ungroup'), gObj.groupSettings.columns.indexOf(column.field) < 0);\n }\n if (column.allowSorting && gObj.allowSorting) {\n var direction = 'None';\n var sortColumns = this.parent.sortSettings.columns;\n for (var i = 0; i < sortColumns.length; i++) {\n if (sortColumns[parseInt(i.toString(), 10)].field === column.field) {\n direction = sortColumns[parseInt(i.toString(), 10)].direction;\n break;\n }\n }\n this.columnMenuResponsiveContent('ascending', gObj.localeObj.getConstant('SortAscending'), direction === 'Ascending');\n this.columnMenuResponsiveContent('descending', gObj.localeObj.getConstant('SortDescending'), direction === 'Descending');\n }\n if (gObj.showColumnChooser) {\n this.columnMenuResponsiveContent('Column', gObj.localeObj.getConstant('Columnchooser'));\n }\n if (column.allowFiltering && gObj.allowFiltering) {\n this.columnMenuResponsiveContent('Filter', gObj.localeObj.getConstant('FilterMenu'));\n }\n }\n else {\n var cols = gObj.getColumns();\n var sortBtnParent = gObj.createElement('div', { className: 'e-ressortbutton-parent' });\n var filteredCols = [];\n var isSort = this.action === ResponsiveDialogAction.isSort;\n var isFilter = this.action === ResponsiveDialogAction.isFilter;\n if (isFilter) {\n for (var i = 0; i < gObj.filterSettings.columns.length; i++) {\n filteredCols.push(gObj.filterSettings.columns[parseInt(i.toString(), 10)].field);\n }\n }\n for (var i = 0; i < cols.length; i++) {\n if (!cols[parseInt(i.toString(), 10)].visible || (!cols[parseInt(i.toString(), 10)].allowSorting && isSort)\n || (!cols[parseInt(i.toString(), 10)].allowFiltering && isFilter)) {\n continue;\n }\n var cDiv = gObj.createElement('div', { className: 'e-responsivecoldiv' });\n cDiv.setAttribute('data-e-mappingname', cols[parseInt(i.toString(), 10)].field);\n cDiv.setAttribute('data-e-mappinguid', cols[parseInt(i.toString(), 10)].uid);\n var span = gObj.createElement('span', { innerHTML: cols[parseInt(i.toString(), 10)].headerText, className: 'e-res-header-text' });\n cDiv.appendChild(span);\n this.customColumnDiv.appendChild(cDiv);\n if (isSort) {\n var fields = this.getSortedFieldsAndDirections('field');\n var index = fields.indexOf(cols[parseInt(i.toString(), 10)].field);\n var button = gObj.createElement('button', { id: gObj.element.id + cols[parseInt(i.toString(), 10)].field + 'sortbutton' });\n var clone = sortBtnParent.cloneNode();\n clone.appendChild(button);\n cDiv.appendChild(clone);\n var btnObj = new Button({\n cssClass: this.parent.cssClass ? 'e-ressortbutton' + ' ' + this.parent.cssClass : 'e-ressortbutton'\n });\n btnObj.appendTo(button);\n var buttonInnerText = void 0;\n if ((!isNullOrUndefined(this.parent.sortSettings.columns[parseInt(index.toString(), 10)]))) {\n buttonInnerText = (this.parent.sortSettings.columns[parseInt(index.toString(), 10)].direction === 'Ascending') ?\n this.parent.localeObj.getConstant('AscendingText') : this.parent.localeObj.getConstant('DescendingText');\n }\n button.innerHTML = index > -1 ? buttonInnerText : this.parent.localeObj.getConstant('NoneText');\n button.onclick = function (e) {\n _this.sortButtonClickHandler(e.target);\n };\n }\n if (isFilter && filteredCols.indexOf(cols[parseInt(i.toString(), 10)].field) > -1) {\n var divIcon = gObj.createElement('div', { className: 'e-icons e-res-icon e-filtersetdiv' });\n var iconSpan = gObj.createElement('span', { className: 'e-icons e-res-icon e-filterset' });\n iconSpan.setAttribute('colType', cols[parseInt(i.toString(), 10)].type);\n divIcon.appendChild(iconSpan);\n cDiv.appendChild(divIcon);\n }\n }\n }\n EventHandler.add(this.customColumnDiv, Browser.isDevice ? 'touchend' : 'click', this.customFilterColumnClickHandler, this);\n return this.customColumnDiv;\n }\n };\n ResponsiveDialogRenderer.prototype.getSortedFieldsAndDirections = function (name) {\n var fields = [];\n for (var i = 0; i < this.parent.sortSettings.columns.length; i++) {\n fields.push(this.parent.sortSettings.columns[parseInt(i.toString(), 10)][\"\" + name]);\n }\n return fields;\n };\n ResponsiveDialogRenderer.prototype.sortButtonClickHandler = function (target) {\n if (target) {\n var columndiv = parentsUntil(target, 'e-responsivecoldiv');\n var field = columndiv.getAttribute('data-e-mappingname');\n if (!this.parent.allowMultiSorting) {\n this.sortPredicate = [];\n this.sortedCols = [];\n this.isSortApplied = false;\n this.resetSortButtons(target);\n }\n var txt = target.textContent;\n var directionTxt = txt === this.parent.localeObj.getConstant('NoneText') ? this.parent.localeObj.getConstant('AscendingText')\n : txt === this.parent.localeObj.getConstant('AscendingText') ? this.parent.localeObj.getConstant('DescendingText')\n : this.parent.localeObj.getConstant('NoneText');\n var direction = directionTxt === this.parent.localeObj.getConstant('AscendingText') ? 'Ascending'\n : directionTxt === this.parent.localeObj.getConstant('DescendingText') ? 'Descending' : 'None';\n target.innerHTML = directionTxt;\n this.setSortedCols(field, direction);\n }\n };\n ResponsiveDialogRenderer.prototype.resetSortButtons = function (target) {\n var buttons = [].slice.call(this.customColumnDiv.getElementsByClassName('e-ressortbutton'));\n for (var i = 0; i < buttons.length; i++) {\n if (buttons[parseInt(i.toString(), 10)] !== target) {\n buttons[parseInt(i.toString(), 10)].innerHTML = 'None';\n }\n }\n };\n ResponsiveDialogRenderer.prototype.setSortedCols = function (field, direction) {\n var fields = this.getCurrentSortedFields();\n var index = fields.indexOf(field);\n if (this.parent.allowMultiSorting && index > -1) {\n this.sortedCols.splice(index, 1);\n this.sortPredicate.splice(index, 1);\n }\n this.isSortApplied = true;\n if (direction !== 'None') {\n this.sortedCols.push(field);\n this.sortPredicate.push({ field: field, direction: direction });\n }\n };\n ResponsiveDialogRenderer.prototype.getCurrentSortedFields = function () {\n var fields = [];\n for (var i = 0; i < this.sortedCols.length; i++) {\n fields.push(this.sortedCols[parseInt(i.toString(), 10)]);\n }\n return fields;\n };\n ResponsiveDialogRenderer.prototype.customFilterColumnClickHandler = function (e) {\n var gObj = this.parent;\n var target = e.target;\n if (parentsUntil(target, 'columnmenudiv') && this.action === ResponsiveDialogAction.isColMenu && !parentsUntil(target, 'e-disabled')) {\n var column = this.menuCol ? this.menuCol : this.filteredCol;\n if (parentsUntil(target, 'e-responsiveautofitalldiv')) {\n gObj.autoFitColumns([]);\n this.closeCustomFilter();\n }\n else if (parentsUntil(target, 'e-responsiveautofitdiv')) {\n gObj.autoFitColumns(column.field);\n this.closeCustomFilter();\n }\n else if (parentsUntil(target, 'e-responsivegroupdiv')) {\n gObj.groupColumn(column.field);\n this.closeCustomFilter();\n }\n else if (parentsUntil(target, 'e-responsiveungroupdiv')) {\n gObj.ungroupColumn(column.field);\n this.closeCustomFilter();\n }\n else if (parentsUntil(target, 'e-responsiveascendingdiv')) {\n gObj.sortColumn(column.field, 'Ascending');\n this.closeCustomFilter();\n }\n else if (parentsUntil(target, 'e-responsivedescendingdiv')) {\n gObj.sortColumn(column.field, 'Descending');\n this.closeCustomFilter();\n }\n else if (parentsUntil(target, 'e-responsivecolumndiv')) {\n gObj.notify(events.renderResponsiveChangeAction, { action: 5 });\n gObj.showResponsiveCustomColumnChooser();\n }\n else if (parentsUntil(target, 'e-responsivefilterdiv')) {\n gObj.notify(events.renderResponsiveChangeAction, { action: 3 });\n this.isRowResponsive = true;\n this.isCustomDialog = false;\n if (gObj.filterModule) {\n gObj.filterModule.responsiveDialogRenderer.showResponsiveDialog(column);\n }\n }\n e.preventDefault();\n }\n if (this.action !== ResponsiveDialogAction.isFilter) {\n return;\n }\n if (gObj.filterSettings.type !== 'FilterBar') {\n if (target.classList.contains('e-responsivecoldiv') || target.parentElement.classList.contains('e-responsivecoldiv')) {\n var field = target.getAttribute('data-e-mappingname');\n if (!field) {\n field = target.parentElement.getAttribute('data-e-mappingname');\n }\n if (field) {\n var col = gObj.getColumnByField(field);\n this.isRowResponsive = true;\n this.showResponsiveDialog(col);\n }\n }\n else if (target.classList.contains('e-filterset') || target.parentElement.classList.contains('e-filtersetdiv')) {\n var colDiv = parentsUntil(target, 'e-responsivecoldiv');\n if (colDiv) {\n var field = colDiv.getAttribute('data-e-mappingname');\n var col = gObj.getColumnByField(field);\n if (col.filter.type === 'Menu' || (!col.filter.type && gObj.filterSettings.type === 'Menu')) {\n this.isDialogClose = true;\n }\n this.parent.filterModule.filterModule.clearCustomFilter(col);\n this.removeCustomDlgFilterEle(target);\n }\n }\n }\n };\n /**\n * Function to show the responsive dialog\n *\n * @param {Column} col - specifies the filter column\n * @param {Column} column - specifies the menu column\n * @returns {void}\n */\n ResponsiveDialogRenderer.prototype.showResponsiveDialog = function (col, column) {\n if ((this.isCustomDialog && this.action === ResponsiveDialogAction.isFilter && !this.isRowResponsive) ||\n (column && this.action === ResponsiveDialogAction.isColMenu)) {\n this.menuCol = column;\n this.renderCustomFilterDialog(null, column);\n }\n else {\n this.filteredCol = col;\n this.renderResponsiveDialog(col);\n if (this.parent.enableAdaptiveUI && col) {\n this.parent.filterModule.setFilterModel(col);\n this.parent.filterModule.filterModule.openDialog(this.parent.filterModule.createOptions(col, undefined));\n }\n if (this.action === ResponsiveDialogAction.isColumnChooser) {\n this.parent.notify(events.renderResponsiveColumnChooserDiv, { action: 'open' });\n }\n if (this.action === ResponsiveDialogAction.isSort) {\n var args = {\n cancel: false, dialogObj: this.customResponsiveDlg, requestType: 'beforeOpenAptiveSortDialog'\n };\n this.parent.trigger(events.beforeOpenAdaptiveDialog, args);\n if (args.cancel) {\n return;\n }\n }\n this.customResponsiveDlg.show(true);\n this.customResponsiveDlg.element.style.maxHeight = '100%';\n this.setTopToChildDialog(this.customResponsiveDlg.element);\n if (this.parent.enableAdaptiveUI && this.parent.filterSettings && (this.parent.filterSettings.type === 'CheckBox'\n || this.parent.filterSettings.type === 'Excel') && this.parent.filterSettings.enableInfiniteScrolling\n && this.parent.filterSettings.loadingIndicator === 'Shimmer') {\n var filterBase = this.parent.filterSettings.type === 'CheckBox' ? this.parent.filterModule.filterModule.checkBoxBase : this.parent.filterModule.filterModule.excelFilterBase;\n filterBase.showMask();\n }\n }\n };\n ResponsiveDialogRenderer.prototype.setTopToChildDialog = function (dialogEle) {\n var child = dialogEle.querySelector('.e-dialog');\n if (child) {\n var top_1 = dialogEle.querySelector('.e-dlg-header-content').getBoundingClientRect().height;\n child.style.top = top_1 + 'px';\n }\n };\n ResponsiveDialogRenderer.prototype.renderCustomFilterDialog = function (col, column) {\n var gObj = this.parent;\n var isColMenu = this.action === ResponsiveDialogAction.isColMenu;\n if (this.action === ResponsiveDialogAction.isFilter && gObj.filterSettings.type === 'FilterBar') {\n return;\n }\n var colMenu = isColMenu ? 'e-customcolumnmenudiv ' : '';\n var outerDiv = this.parent.createElement('div', {\n id: gObj.element.id + (isColMenu ? 'customcolumnmenu' : 'customfilter'),\n className: this.parent.cssClass ? colMenu +\n 'e-customfilterdiv e-responsive-dialog ' + this.parent.cssClass : colMenu + 'e-customfilterdiv e-responsive-dialog'\n });\n this.parent.element.appendChild(outerDiv);\n this.customFilterDlg = this.getDialogOptions(col, true, null, column);\n var args = {\n cancel: false, dialogObj: this.customFilterDlg, requestType: 'beforeOpenAptiveFilterDialog'\n };\n this.parent.trigger(events.beforeOpenAdaptiveDialog, args);\n if (args.cancel) {\n return;\n }\n this.customFilterDlg.appendTo(outerDiv);\n this.customFilterDlg.show(true);\n this.customFilterDlg.element.style.maxHeight = '100%';\n };\n ResponsiveDialogRenderer.prototype.getDialogOptions = function (col, isCustomFilter, id, column) {\n var options = new Dialog({\n isModal: true,\n showCloseIcon: true,\n closeOnEscape: false,\n locale: this.parent.locale,\n target: this.parent.adaptiveDlgTarget ? this.parent.adaptiveDlgTarget : document.body,\n visible: false,\n enableRtl: this.parent.enableRtl,\n content: this.renderResponsiveContent(col, column),\n open: this.dialogOpen.bind(this),\n created: this.dialogCreated.bind(this),\n close: this.beforeDialogClose.bind(this),\n width: '100%',\n height: '100%',\n animationSettings: { effect: 'None' },\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n var isStringTemplate = 'isStringTemplate';\n options[\"\" + isStringTemplate] = true;\n if (isCustomFilter) {\n options.header = this.renderResponsiveHeader(col, undefined, true);\n var colMenu = this.action === ResponsiveDialogAction.isColMenu ? 'e-customcolumnmenu ' : '';\n options.cssClass = colMenu + 'e-customfilter';\n }\n else {\n options.header = this.renderResponsiveHeader(col);\n options.cssClass = this.parent.rowRenderingMode === 'Vertical' && this.action === ResponsiveDialogAction.isFilter\n ? 'e-res' + id + ' e-row-responsive-filter' : 'e-res' + id;\n }\n return options;\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveDialog = function (col) {\n var gObj = this.parent;\n if (this.action === ResponsiveDialogAction.isFilter && gObj.filterSettings.type === 'FilterBar') {\n return;\n }\n var id = this.action === ResponsiveDialogAction.isFilter ? 'filter' : 'sort';\n id = this.action === ResponsiveDialogAction.isColumnChooser ? 'columnchooser' : id;\n var outerDiv = this.parent.createElement('div', {\n id: gObj.element.id + 'responsive' + id,\n className: this.parent.cssClass ?\n 'e-res' + id + 'div e-responsive-dialog ' + this.parent.cssClass : 'e-res' + id + 'div e-responsive-dialog'\n });\n this.parent.element.appendChild(outerDiv);\n this.customResponsiveDlg = this.getDialogOptions(col, false, id);\n this.customResponsiveDlg.appendTo(outerDiv);\n };\n ResponsiveDialogRenderer.prototype.dialogCreated = function () {\n addBiggerDialog(this.parent);\n };\n ResponsiveDialogRenderer.prototype.dialogOpen = function () {\n if (this.action === ResponsiveDialogAction.isSort && this.parent.allowMultiSorting) {\n for (var i = 0; i < this.parent.sortSettings.columns.length; i++) {\n this.sortedCols.push(this.parent.sortSettings.columns[parseInt(i.toString(), 10)].field);\n var sortField = this.parent.sortSettings.columns[parseInt(i.toString(), 10)].field;\n var sortDirection = this.parent.sortSettings.columns[parseInt(i.toString(), 10)].direction;\n this.sortPredicate.push({ field: sortField, direction: sortDirection });\n }\n }\n };\n ResponsiveDialogRenderer.prototype.beforeDialogClose = function (args) {\n this.isDialogClose = args.element && !args.element.querySelector('.e-xl-customfilterdiv')\n && args.element.classList.contains('e-resfilterdiv');\n if (this.action === ResponsiveDialogAction.isFilter) {\n if (args.element.classList.contains('e-resfilterdiv')) {\n this.parent.filterModule.filterModule.closeResponsiveDialog(this.isCustomDlgRender);\n }\n else if (args.element.classList.contains('e-customfilterdiv')) {\n this.closeCustomFilter();\n }\n if (this.parent.rowRenderingMode === 'Horizontal' && this.parent.showColumnMenu) {\n this.parent.notify(events.renderResponsiveChangeAction, { action: 4 });\n var custom = document.querySelector('.e-resfilter');\n if (custom) {\n remove(custom);\n }\n }\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n this.closeCustomDialog();\n }\n else if (this.action === ResponsiveDialogAction.isColMenu) {\n this.closeCustomFilter();\n var custom = document.querySelector('.e-rescolummenu');\n if (custom) {\n remove(custom);\n }\n }\n else if (this.action === ResponsiveDialogAction.isColumnChooser) {\n this.parent.notify(events.renderResponsiveColumnChooserDiv, { action: 'clear' });\n var custom = document.querySelector('.e-rescolumnchooser');\n if (custom) {\n remove(custom);\n }\n if (this.parent.rowRenderingMode === 'Horizontal' && this.parent.showColumnMenu) {\n this.parent.notify(events.renderResponsiveChangeAction, { action: 4 });\n }\n this.isCustomDialog = false;\n this.isDialogClose = false;\n }\n this.parent.off(events.enterKeyHandler, this.keyHandler);\n };\n ResponsiveDialogRenderer.prototype.sortColumn = function () {\n if (!this.isSortApplied) {\n this.closeCustomDialog();\n return;\n }\n if (this.sortPredicate.length) {\n this.parent.setProperties({ sortSettings: { columns: [] } }, true);\n }\n for (var i = 0; i < this.sortPredicate.length; i++) {\n this.parent.sortColumn(this.sortPredicate[parseInt(i.toString(), 10)].field, this.sortPredicate[parseInt(i.toString(), 10)].direction, this.parent.allowMultiSorting);\n }\n if (!this.sortPredicate.length) {\n this.parent.clearSorting();\n }\n this.closeCustomDialog();\n };\n ResponsiveDialogRenderer.prototype.getHeaderTitle = function (args, col) {\n var gObj = this.parent;\n var title;\n if (this.action === ResponsiveDialogAction.isEdit) {\n title = gObj.localeObj.getConstant('EditFormTitle') + args.primaryKeyValue[0];\n }\n else if (this.action === ResponsiveDialogAction.isAdd) {\n title = gObj.localeObj.getConstant('AddFormTitle');\n }\n else if (this.action === ResponsiveDialogAction.isFilter) {\n title = col ? col.headerText || col.field : gObj.localeObj.getConstant('FilterButton');\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n title = gObj.localeObj.getConstant('Sort');\n }\n else if (this.action === ResponsiveDialogAction.isColMenu) {\n title = gObj.localeObj.getConstant('ColumnMenu');\n }\n else if (this.action === ResponsiveDialogAction.isColumnChooser) {\n title = gObj.localeObj.getConstant('ChooseColumns');\n }\n return title;\n };\n ResponsiveDialogRenderer.prototype.getDialogName = function (action) {\n var name;\n if (action === ResponsiveDialogAction.isAdd || action === ResponsiveDialogAction.isEdit) {\n name = 'dialogEdit_wrapper_title';\n }\n else if (action === ResponsiveDialogAction.isFilter) {\n name = 'responsive_filter_dialog_wrapper';\n }\n else if (action === ResponsiveDialogAction.isColumnChooser) {\n name = 'responsive_column_chooser_dialog_wrapper';\n }\n return name;\n };\n ResponsiveDialogRenderer.prototype.getButtonText = function (action) {\n var text;\n if (action === ResponsiveDialogAction.isAdd || action === ResponsiveDialogAction.isEdit) {\n text = 'Save';\n }\n else if (action === ResponsiveDialogAction.isFilter || this.action === ResponsiveDialogAction.isSort ||\n action === ResponsiveDialogAction.isColumnChooser || this.action === ResponsiveDialogAction.isColumnChooser) {\n text = 'OKButton';\n }\n return text;\n };\n /**\n * Function to render the responsive header\n *\n * @param {Column} col - specifies the column\n * @param {ResponsiveDialogArgs} args - specifies the responsive dialog arguments\n * @param {boolean} isCustomFilter - specifies whether it is custom filter or not\n * @returns {HTMLElement | string} returns the html element or string\n */\n ResponsiveDialogRenderer.prototype.renderResponsiveHeader = function (col, args, isCustomFilter) {\n var _this = this;\n var gObj = this.parent;\n gObj.on(events.enterKeyHandler, this.keyHandler, this);\n var id = gObj.element.id + this.getDialogName(this.action);\n var header = gObj.createElement('div', { className: 'e-res-custom-element' });\n var titleDiv = gObj.createElement('div', { className: 'e-dlg-custom-header', id: id });\n titleDiv.innerHTML = this.getHeaderTitle(args, col);\n header.appendChild(titleDiv);\n var saveBtn = gObj.createElement('button');\n if (!isCustomFilter) {\n this.saveBtn = new Button({\n cssClass: this.parent.cssClass ?\n 'e-primary e-flat e-res-apply-btn' + ' ' + this.parent.cssClass : 'e-primary e-flat e-res-apply-btn'\n });\n saveBtn.innerHTML = gObj.localeObj.getConstant(this.getButtonText(this.action));\n this.saveBtn.appendTo(saveBtn);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n saveBtn.onclick = function (e) {\n _this.dialogHdrBtnClickHandler();\n };\n }\n var isSort = this.action === ResponsiveDialogAction.isSort;\n var isFilter = this.action === ResponsiveDialogAction.isFilter;\n if (isFilter || isSort) {\n var id_1 = isSort ? 'sort' : 'filter';\n var clearBtn = gObj.createElement('button');\n this.filterClearBtn = new Button({\n cssClass: this.parent.cssClass ? 'e-primary e-flat e-res-' + id_1 + '-clear-btn' + ' ' + this.parent.cssClass\n : 'e-primary e-flat e-res-' + id_1 + '-clear-btn'\n });\n if (isFilter) {\n var span = gObj.createElement('span', { className: 'e-btn-icon e-icon-filter-clear e-icons' });\n clearBtn.appendChild(span);\n }\n else {\n clearBtn.innerHTML = gObj.localeObj.getConstant('Clear');\n }\n header.appendChild(clearBtn);\n this.filterClearBtn.appendTo(clearBtn);\n clearBtn.onclick = function (e) {\n if ((parentsUntil(e.target, 'e-customfilter'))) {\n _this.parent.filterModule.clearFiltering();\n _this.removeCustomDlgFilterEle();\n }\n else {\n if (isFilter) {\n _this.filterClear();\n }\n else {\n _this.resetSortButtons();\n _this.sortedCols = [];\n _this.sortPredicate = [];\n _this.isSortApplied = true;\n }\n }\n };\n header.appendChild(clearBtn);\n }\n if (!isCustomFilter) {\n header.appendChild(saveBtn);\n }\n return header;\n };\n ResponsiveDialogRenderer.prototype.filterClear = function () {\n this.parent.filterModule.filterModule.clearCustomFilter(this.filteredCol);\n this.parent.filterModule.filterModule.closeResponsiveDialog();\n };\n ResponsiveDialogRenderer.prototype.removeCustomFilterElement = function () {\n var elem = document.getElementById(this.parent.element.id + 'customcolumnmenu');\n if (elem) {\n remove(elem);\n var custom = document.querySelector('.e-customfilter');\n if (custom) {\n remove(custom);\n }\n }\n var custommenu = document.querySelector('.e-rescolumnchooser');\n if (custommenu) {\n remove(custommenu);\n }\n };\n ResponsiveDialogRenderer.prototype.dialogHdrBtnClickHandler = function () {\n if (this.action === ResponsiveDialogAction.isEdit || this.action === ResponsiveDialogAction.isAdd) {\n this.parent.endEdit();\n }\n else if (this.action === ResponsiveDialogAction.isFilter) {\n this.parent.filterModule.filterModule.applyCustomFilter({ col: this.filteredCol, isCustomFilter: this.isCustomDlgRender });\n this.removeCustomFilterElement();\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n this.sortColumn();\n this.removeCustomFilterElement();\n }\n else if (this.action === ResponsiveDialogAction.isColumnChooser) {\n this.parent.notify(events.renderResponsiveColumnChooserDiv, { action: 'confirm' });\n this.removeCustomFilterElement();\n this.isCustomDialog = false;\n this.isDialogClose = false;\n }\n };\n ResponsiveDialogRenderer.prototype.closeCustomDialog = function () {\n if (this.isCustomDlgRender) {\n var mainfilterdiv = this.customResponsiveDlg.element.querySelector('.e-mainfilterdiv');\n remove(mainfilterdiv);\n return;\n }\n this.isRowResponsive = false;\n this.isCustomDlgRender = false;\n this.destroyCustomFilterDialog();\n };\n ResponsiveDialogRenderer.prototype.destroyCustomFilterDialog = function () {\n if (!this.customResponsiveDlg) {\n return;\n }\n var elem = document.getElementById(this.customResponsiveDlg.element.id);\n if (this.customResponsiveDlg && !this.customResponsiveDlg.isDestroyed && elem) {\n this.customResponsiveDlg.destroy();\n remove(elem);\n }\n this.closeCustomFilter();\n if (this.action === ResponsiveDialogAction.isSort) {\n this.sortPredicate = [];\n this.sortedCols = [];\n this.isSortApplied = false;\n }\n };\n ResponsiveDialogRenderer.prototype.closeCustomFilter = function () {\n if (!this.isDialogClose && this.customFilterDlg) {\n var customEle = document.getElementById(this.customFilterDlg.element.id);\n if (this.customFilterDlg && !this.customFilterDlg.isDestroyed && customEle) {\n this.customFilterDlg.destroy();\n remove(customEle);\n }\n }\n this.isCustomDialog = false;\n this.isDialogClose = false;\n };\n ResponsiveDialogRenderer.prototype.removeCustomDlgFilterEle = function (target) {\n if (target) {\n if (target.parentElement.classList.contains('e-filtersetdiv')) {\n remove(target.parentElement);\n }\n else {\n remove(target);\n }\n }\n else {\n var child = this.customColumnDiv.children;\n for (var i = 0; i < child.length; i++) {\n target = child[parseInt(i.toString(), 10)].querySelector('.e-filtersetdiv');\n if (target) {\n remove(target);\n i--;\n }\n }\n }\n };\n ResponsiveDialogRenderer.prototype.keyHandler = function (e) {\n if (e.keyCode === 13 && ((this.action === ResponsiveDialogAction.isFilter\n && e.target.classList.contains('e-searchinput'))\n || (this.action === ResponsiveDialogAction.isEdit || this.action === ResponsiveDialogAction.isAdd))) {\n this.dialogHdrBtnClickHandler();\n }\n };\n ResponsiveDialogRenderer.prototype.editComplate = function (args) {\n if (args.requestType === 'save' || args.requestType === 'cancel') {\n this.parent.off(events.enterKeyHandler, this.keyHandler);\n }\n };\n ResponsiveDialogRenderer.prototype.removeEventListener = function () {\n if (this.customColumnDiv) {\n EventHandler.remove(this.customColumnDiv, Browser.isDevice ? 'touchend' : 'click', this.customFilterColumnClickHandler);\n }\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.parent.removeEventListener(events.actionComplete, this.onActionCompleteFn);\n };\n return ResponsiveDialogRenderer;\n}());\nexport { ResponsiveDialogRenderer };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { ResponsiveDialogRenderer } from '../renderer/responsive-dialog-renderer';\n/**\n * ServiceLocator\n *\n * @hidden\n */\nvar ServiceLocator = /** @class */ (function () {\n function ServiceLocator() {\n this.services = {};\n }\n ServiceLocator.prototype.register = function (name, type) {\n if (isNullOrUndefined(this.services[\"\" + name])) {\n this.services[\"\" + name] = type;\n }\n };\n ServiceLocator.prototype.getService = function (name) {\n if (isNullOrUndefined(this.services[\"\" + name])) {\n // eslint-disable-next-line no-throw-literal\n throw \"The service \" + name + \" is not registered\";\n }\n return this.services[\"\" + name];\n };\n ServiceLocator.prototype.registerAdaptiveService = function (type, isAdaptiveUI, action) {\n if (isAdaptiveUI) {\n type.responsiveDialogRenderer = new ResponsiveDialogRenderer(type.parent, type.serviceLocator);\n type.responsiveDialogRenderer.action = action;\n }\n else {\n if (type.responsiveDialogRenderer) {\n type.responsiveDialogRenderer.removeEventListener();\n type.responsiveDialogRenderer = undefined;\n }\n }\n };\n return ServiceLocator;\n}());\nexport { ServiceLocator };\n","import { isNullOrUndefined, getEnumValue } from '@syncfusion/ej2-base';\nimport { RenderType } from '../base/enum';\n/**\n * RendererFactory\n *\n * @hidden\n */\nvar RendererFactory = /** @class */ (function () {\n function RendererFactory() {\n this.rendererMap = {};\n }\n RendererFactory.prototype.addRenderer = function (name, type) {\n var rName = getEnumValue(RenderType, name);\n if (isNullOrUndefined(this.rendererMap[\"\" + rName])) {\n this.rendererMap[\"\" + rName] = type;\n }\n };\n RendererFactory.prototype.getRenderer = function (name) {\n var rName = getEnumValue(RenderType, name);\n if (isNullOrUndefined(this.rendererMap[\"\" + rName])) {\n // eslint-disable-next-line no-throw-literal\n throw \"The renderer \" + rName + \" is not found\";\n }\n else {\n return this.rendererMap[\"\" + rName];\n }\n };\n return RendererFactory;\n}());\nexport { RendererFactory };\n","import { isNullOrUndefined, addClass } from '@syncfusion/ej2-base';\nimport { formatUnit } from '@syncfusion/ej2-base';\nimport { columnWidthChanged, preventFrozenScrollRefresh } from '../base/constant';\nimport { Column } from '../models/column';\nimport { parentsUntil, ispercentageWidth, getScrollBarWidth } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * ColumnWidthService\n *\n * @hidden\n */\nvar ColumnWidthService = /** @class */ (function () {\n function ColumnWidthService(parent) {\n this.parent = parent;\n }\n ColumnWidthService.prototype.setWidthToColumns = function () {\n var i = 0;\n var indexes = this.parent.getColumnIndexesInView();\n var wFlag = true;\n var totalColumnsWidth = 0;\n if (this.parent.allowGrouping) {\n for (var len = this.parent.groupSettings.columns.length; i < len; i++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(i) === -1) {\n wFlag = false;\n continue;\n }\n this.setColumnWidth(new Column({ width: '30px' }), i);\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.setColumnWidth(new Column({ width: '30px' }), i);\n i++;\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n this.setColumnWidth(new Column({ width: '30px' }), i);\n i++;\n }\n var columns = this.parent.getColumns();\n for (var j = 0; j < columns.length; j++) {\n this.setColumnWidth(columns[parseInt(j.toString(), 10)], wFlag && this.parent.enableColumnVirtualization ? undefined : j + i);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n this.setColumnWidth(new Column({ width: '30px' }), this.parent.groupSettings.columns.length + columns.length);\n }\n totalColumnsWidth = this.getTableWidth(this.parent.getColumns());\n if (totalColumnsWidth !== 'auto') {\n if (this.parent.width !== 'auto' && this.parent.width.toString().indexOf('%') === -1) {\n this.setMinwidthBycalculation(totalColumnsWidth);\n }\n var maxWidthColumns = columns.filter(function (a) {\n return !isNullOrUndefined(a.maxWidth);\n });\n if (this.parent.allowResizing && this.parent.element.getBoundingClientRect().width > totalColumnsWidth &&\n maxWidthColumns.length === columns.length) {\n addClass([this.parent.getHeaderTable(), this.parent.getContentTable()], ['e-tableborder']);\n }\n }\n };\n ColumnWidthService.prototype.setMinwidthBycalculation = function (tWidth) {\n var _this = this;\n var difference = 0;\n var collection = this.parent.getColumns().filter(function (a) {\n if (_this.parent.allowResizing) {\n return (isNullOrUndefined(a.width) || a.width === 'auto') && isNullOrUndefined(a.maxWidth);\n }\n else {\n return isNullOrUndefined(a.width) || a.width === 'auto';\n }\n });\n if (collection.length) {\n if (!isNullOrUndefined(this.parent.width) && this.parent.width !== 'auto' &&\n typeof (this.parent.width) === 'string' && this.parent.width.indexOf('%') === -1) {\n difference = parseInt(this.parent.width, 10) - tWidth;\n }\n else {\n difference = this.parent.element.getBoundingClientRect().width - tWidth;\n }\n var tmWidth = 0;\n for (var _i = 0, collection_1 = collection; _i < collection_1.length; _i++) {\n var cols = collection_1[_i];\n tmWidth += !isNullOrUndefined(cols.minWidth) ?\n ((typeof cols.minWidth === 'string' ? parseInt(cols.minWidth, 10) : cols.minWidth)) : 0;\n }\n for (var i = 0; i < collection.length; i++) {\n if (tWidth === 0 && this.parent.allowResizing && this.isWidthUndefined() && (i !== collection.length - 1)) {\n this.setUndefinedColumnWidth(collection);\n }\n var index = this.parent.getColumnIndexByField(collection[parseInt(i.toString(), 10)].field) + this.parent.getIndentCount();\n if (tWidth !== 0 && difference < tmWidth) {\n this.setWidth(collection[parseInt(i.toString(), 10)].minWidth, index);\n }\n else if (tWidth !== 0 && difference > tmWidth) {\n this.setWidth('', index, true);\n }\n }\n }\n };\n ColumnWidthService.prototype.setUndefinedColumnWidth = function (collection) {\n for (var k = 0; k < collection.length; k++) {\n if (k !== collection.length - 1) {\n collection[parseInt(k.toString(), 10)].width = 200;\n this.setWidth(200, this.parent.getColumnIndexByField(collection[parseInt(k.toString(), 10)].field));\n }\n }\n };\n ColumnWidthService.prototype.setColumnWidth = function (column, index, module) {\n if (this.parent.getColumns().length < 1) {\n return;\n }\n var columnIndex = isNullOrUndefined(index) ? this.parent.getNormalizedColumnIndex(column.uid) : index;\n var cWidth = this.getWidth(column);\n var tgridWidth = this.getTableWidth(this.parent.getColumns());\n if (cWidth !== null) {\n this.setWidth(cWidth, columnIndex);\n if (this.parent.width !== 'auto' && this.parent.width.toString().indexOf('%') === -1 && tgridWidth !== 'auto') {\n this.setMinwidthBycalculation(tgridWidth);\n }\n if ((this.parent.allowResizing && module === 'resize') || (this.parent.getFrozenColumns() && this.parent.allowResizing)) {\n this.setWidthToTable();\n }\n this.parent.notify(columnWidthChanged, { index: columnIndex, width: cWidth, column: column, module: module });\n }\n };\n ColumnWidthService.prototype.setWidth = function (width, index, clear) {\n if (this.parent.groupSettings.columns.length > index && ispercentageWidth(this.parent)) {\n var elementWidth = this.parent.element.offsetWidth;\n width = (30 / elementWidth * 100).toFixed(1) + '%';\n }\n var header = this.parent.getHeaderTable();\n var content = this.parent.getContentTable();\n var fWidth = formatUnit(width);\n var headerCol = header.querySelector(literals.colGroup)\n .children[parseInt(index.toString(), 10)];\n if (headerCol && !clear) {\n headerCol.style.width = fWidth;\n }\n else if (headerCol && clear) {\n headerCol.style.width = '';\n }\n var contentCol = content.querySelector(literals.colGroup).children[parseInt(index.toString(), 10)];\n if (contentCol && !clear) {\n contentCol.style.width = fWidth;\n }\n else if (contentCol && clear) {\n contentCol.style.width = '';\n }\n if (!this.parent.enableColumnVirtualization && this.parent.isEdit) {\n var edit = this.parent.element.querySelectorAll('.e-table.e-inline-edit');\n var editTableCol = [];\n for (var i = 0; i < edit.length; i++) {\n if (parentsUntil(edit[parseInt(i.toString(), 10)], 'e-grid').id === this.parent.element.id) {\n for (var j = 0; j < edit[parseInt(i.toString(), 10)].querySelector('colgroup').children.length; j++) {\n editTableCol.push(edit[parseInt(i.toString(), 10)].querySelector('colgroup').children[parseInt(j.toString(), 10)]);\n }\n }\n }\n if (edit.length && editTableCol.length && editTableCol[parseInt(index.toString(), 10)]) {\n editTableCol[parseInt(index.toString(), 10)].style.width = fWidth;\n }\n }\n if (this.parent.isFrozenGrid() && this.parent.enableColumnVirtualization) {\n this.refreshFrozenScrollbar();\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n ColumnWidthService.prototype.refreshFrozenScrollbar = function () {\n var args = { cancel: false };\n this.parent.notify(preventFrozenScrollRefresh, args);\n if (args.cancel) {\n return;\n }\n var scrollWidth = getScrollBarWidth();\n var movableScrollbar = this.parent.element.querySelector('.e-movablescrollbar');\n var movableWidth = this.parent.getContent().firstElementChild.getBoundingClientRect().width;\n if (this.parent.enableColumnVirtualization) {\n var placeHolder = this.parent.getContent().querySelector('.e-virtualtrack');\n if (placeHolder) {\n movableWidth = placeHolder.scrollWidth;\n }\n }\n if (this.parent.height !== 'auto') {\n movableWidth = movableWidth + scrollWidth;\n }\n movableScrollbar.firstElementChild.style.width = movableWidth + 'px';\n };\n ColumnWidthService.prototype.getSiblingsHeight = function (element) {\n var previous = this.getHeightFromDirection(element, 'previous');\n var next = this.getHeightFromDirection(element, 'next');\n return previous + next;\n };\n ColumnWidthService.prototype.getHeightFromDirection = function (element, direction) {\n var sibling = element[direction + 'ElementSibling'];\n var result = 0;\n var classList = [literals.gridHeader, literals.gridFooter, 'e-groupdroparea', 'e-gridpager', 'e-toolbar', 'e-temp-toolbar'];\n while (sibling) {\n if (classList.some(function (value) { return sibling.classList.contains(value); })) {\n result += sibling.offsetHeight;\n }\n sibling = sibling[direction + 'ElementSibling'];\n }\n return result;\n };\n ColumnWidthService.prototype.isWidthUndefined = function () {\n var isWidUndefCount = this.parent.getColumns().filter(function (col) {\n return isNullOrUndefined(col.width) && isNullOrUndefined(col.minWidth);\n }).length;\n return (this.parent.getColumns().length === isWidUndefCount);\n };\n ColumnWidthService.prototype.getWidth = function (column) {\n if (this.parent.allowResizing && isNullOrUndefined(column.width)) {\n if (isNullOrUndefined(column.minWidth) && isNullOrUndefined(column.maxWidth)\n && !this.isWidthUndefined()) {\n column.width = 200;\n }\n else if (column.maxWidth) {\n column.width = column.maxWidth;\n }\n }\n if (!column.width) {\n return null;\n }\n var width = parseInt(column.width.toString(), 10);\n if (column.minWidth && (width < parseInt(column.minWidth.toString(), 10)\n || (column.width === 'auto' && isNullOrUndefined(column.maxWidth)))) {\n return column.minWidth;\n }\n else if (column.maxWidth && (column.width === 'auto' || width > parseInt(column.maxWidth.toString(), 10))) {\n return column.maxWidth;\n }\n else {\n return column.width;\n }\n };\n ColumnWidthService.prototype.getTableWidth = function (columns) {\n var tWidth = 0;\n var isAutoColumn = false;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n if (column.visible !== false) {\n var cWidth = this.getWidth(column);\n if (column.width === 'auto' || !column.width) {\n if (this.parent.allowResizing) {\n if (!column.maxWidth) {\n isAutoColumn = true;\n }\n }\n else {\n cWidth = 0;\n }\n }\n if (cWidth !== null) {\n tWidth += parseInt(cWidth.toString(), 10);\n }\n }\n }\n tWidth = isAutoColumn ? 'auto' : tWidth;\n return tWidth;\n };\n ColumnWidthService.prototype.setWidthToTable = function (isMaxWidth) {\n var tWidth = formatUnit(this.getTableWidth(this.parent.getColumns()));\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.setColumnWidth(new Column({ width: '30px' }));\n }\n tWidth = (this.isAutoResize() || tWidth === 'auto' || isMaxWidth) ? '100%' : tWidth;\n this.parent.getHeaderTable().style.width = tWidth;\n this.parent.getContentTable().style.width = tWidth;\n var edit = this.parent.element.querySelector('.e-table.e-inline-edit');\n if (edit) {\n edit.style.width = tWidth;\n }\n };\n ColumnWidthService.prototype.isAutoResize = function () {\n return this.parent.allowResizing && this.parent.resizeSettings.mode === 'Auto';\n };\n return ColumnWidthService;\n}());\nexport { ColumnWidthService };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { EventHandler, getValue, closest, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, extend, Browser } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport * as event from '../base/constant';\nimport { Row } from '../models/row';\nimport { RowModelGenerator } from './row-model-generator';\nimport { parentsUntil, addRemoveEventListener, findCellIndex } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * FocusStrategy class\n *\n * @hidden\n */\nvar FocusStrategy = /** @class */ (function () {\n function FocusStrategy(parent) {\n this.currentInfo = {};\n this.oneTime = true;\n this.swap = {};\n /** @hidden */\n this.isInfiniteScroll = false;\n /** @hidden */\n this.virtualSelectionInfo = {};\n this.forget = false;\n this.skipFocus = true;\n this.focusByClick = false;\n this.firstHeaderCellClick = false;\n this.prevIndexes = {};\n this.refMatrix = this.refreshMatrix(true);\n this.actions = ['downArrow', 'upArrow'];\n this.isVirtualScroll = false;\n this.groupedFrozenRow = 0;\n this.parent = parent;\n this.rowModelGen = new RowModelGenerator(this.parent);\n this.addEventListener();\n }\n FocusStrategy.prototype.focusCheck = function (e) {\n var target = e.target;\n this.focusByClick = true;\n this.firstHeaderCellClick = true;\n this.skipFocus = target.classList.contains('e-grid');\n };\n FocusStrategy.prototype.onFocus = function (e) {\n if (this.parent.isDestroyed || Browser.isDevice || this.parent.enableVirtualization\n || this.parent.element.querySelector('.e-masked-table') || (!this.parent.isInitialLoad && e\n && e.target === this.parent.element && this.parent.element.querySelector('.e-spin-show'))) {\n return;\n }\n this.setActive(!this.parent.enableHeaderFocus && this.parent.frozenRows === 0);\n if (!this.parent.enableHeaderFocus && !this.parent.getCurrentViewRecords().length && ((this.parent.editSettings.mode !== 'Batch')\n || (this.parent.editSettings.mode === 'Batch' && this.parent.editModule && !this.parent.editModule.getBatchChanges()[literals.addedRecords].length))) {\n this.getContent().matrix.\n generate(this.rowModelGen.generateRows({ rows: [new Row({ isDataRow: true })] }), this.getContent().selector, false);\n }\n var current = this.getContent().matrix.get(0, -1, [0, 1], null, this.getContent().validator());\n this.getContent().matrix.select(current[0], current[1]);\n if (this.skipFocus && !(e && e.target === this.parent.element)) {\n this.focus(e);\n this.skipFocus = false;\n }\n };\n FocusStrategy.prototype.passiveFocus = function (e) {\n if (this.parent.isDestroyed) {\n return;\n }\n var firstHeaderCell = this.parent.getHeaderContent().querySelector('.e-headercell:not(.e-hide)');\n if (e.target === firstHeaderCell && e.relatedTarget && !parentsUntil(e.relatedTarget, 'e-grid')\n && !this.firstHeaderCellClick) {\n var firstHeaderCellIndex = [0, 0];\n if (this.active.matrix.matrix[firstHeaderCellIndex[0]][firstHeaderCellIndex[1]] === 0) {\n firstHeaderCellIndex = findCellIndex(this.active.matrix.matrix, firstHeaderCellIndex, true);\n }\n this.active.matrix.current = firstHeaderCellIndex;\n this.currentInfo.element = e.target;\n this.currentInfo.elementToFocus = e.target;\n addClass([this.currentInfo.element], ['e-focused', 'e-focus']);\n }\n this.firstHeaderCellClick = false;\n if (e.target && e.target.classList.contains('e-detailcell')) {\n this.currentInfo.skipAction = false;\n addClass([this.currentInfo.element], ['e-focused', 'e-focus']);\n }\n };\n FocusStrategy.prototype.onBlur = function (e) {\n if (this.parent.allowPaging && this.parent.pagerModule.pagerObj.element.querySelector('.e-pagercontainer')) {\n this.parent.pagerModule.pagerObj.element.querySelector('.e-pagercontainer').removeAttribute('aria-hidden');\n }\n // The below boolean condition for gantt team focus fix.\n var isGantt = parentsUntil(e.target, 'e-gantt') && e.target.classList.contains('e-rowcell')\n && (!isNullOrUndefined(e.target.nextElementSibling)\n && e.target.nextElementSibling.classList.contains('e-rowcell')) ? true : false;\n if ((this.parent.isEdit || e && (!e.relatedTarget || closest(e.relatedTarget, '.e-grid'))\n && !(this.parent.element.classList.contains('e-childgrid') && !this.parent.element.matches(':focus-within')))\n && !(!isGantt && isNullOrUndefined(e.relatedTarget) && parseInt(e.target.getAttribute('data-colindex'), 10) === 0\n && parseInt(e.target.getAttribute('index'), 10) === 0) && !(!isGantt && isNullOrUndefined(e.relatedTarget)\n && !closest(document.activeElement, '.e-grid') && !isNullOrUndefined(e['sourceCapabilities']))) {\n return;\n }\n this.removeFocus();\n this.skipFocus = true;\n this.currentInfo.skipAction = false;\n this.setLastContentCellTabIndex();\n this.setFirstFocusableTabIndex();\n this.firstHeaderCellClick = false;\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.setFirstFocusableTabIndex = function () {\n var gObj = this.parent;\n gObj.element.tabIndex = -1;\n if (gObj.allowGrouping && gObj.groupSettings.showDropArea) {\n var groupModule = gObj.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n if (focusableGroupedItems.length > 0) {\n groupModule.element.tabIndex = -1;\n focusableGroupedItems[0].tabIndex = 0;\n }\n else {\n groupModule.element.tabIndex = 0;\n }\n return;\n }\n if (gObj.toolbar || gObj.toolbarTemplate) {\n var toolbarElement = gObj.toolbarModule.element;\n var focusableToolbarItems = this.parent.toolbarModule.getFocusableToolbarItems();\n if (focusableToolbarItems.length > 0 && focusableToolbarItems[0].querySelector('.e-toolbar-item-focus,.e-btn,.e-input')) {\n toolbarElement.tabIndex = -1;\n focusableToolbarItems[0].querySelector('.e-toolbar-item-focus,.e-btn,.e-input').tabIndex = 0;\n }\n else {\n toolbarElement.tabIndex = 0;\n }\n return;\n }\n if (gObj.getColumns().length) {\n var firstHeaderCell = gObj.getHeaderContent().querySelector('.e-headercell:not(.e-hide)');\n firstHeaderCell.tabIndex = 0;\n this.setActive(false);\n if (!isNullOrUndefined(this.active) && (isNullOrUndefined(this.active.target) || !this.active.target.classList.contains('e-columnmenu'))) {\n var firstHeaderCellIndex = [0, 0];\n if (this.active.matrix.matrix[firstHeaderCellIndex[0]][firstHeaderCellIndex[1]] === 0) {\n firstHeaderCellIndex = findCellIndex(this.active.matrix.matrix, firstHeaderCellIndex, true);\n }\n this.active.matrix.current = firstHeaderCellIndex;\n }\n return;\n }\n };\n FocusStrategy.prototype.setLastContentCellTabIndex = function () {\n var contentTable = this.parent.getContentTable();\n if (contentTable.rows[contentTable.rows.length - 1]) {\n var lastCell = contentTable.rows[contentTable.rows.length - 1].lastElementChild;\n lastCell.tabIndex = 0;\n }\n };\n FocusStrategy.prototype.onClick = function (e, force) {\n if (parentsUntil(e.target, 'e-filterbarcell') && (parentsUntil(e.target, 'e-multiselect') ||\n e.target.classList.contains('e-input-group-icon'))) {\n return;\n }\n var isContent = !isNullOrUndefined(closest(e.target, '.' + literals.gridContent));\n var isHeader = !isNullOrUndefined(closest(e.target, '.' + literals.gridHeader));\n isContent = isContent && isHeader ? !isContent : isContent;\n if (!isContent && isNullOrUndefined(closest(e.target, '.' + literals.gridHeader)) ||\n e.target.classList.contains(literals.content) ||\n (!isNullOrUndefined(closest(e.target, '.e-unboundcell')) && !force)) {\n return;\n }\n this.setActive(isContent);\n var beforeArgs = { cancel: false, byKey: false, byClick: !isNullOrUndefined(e.target), clickArgs: e };\n this.parent.notify(event.beforeCellFocused, beforeArgs);\n if (beforeArgs.cancel || (closest(e.target, '.e-inline-edit') && (!this.parent.editSettings.showAddNewRow &&\n (this.parent.editSettings.showAddNewRow && !this.parent.element.querySelector('.e-editedrow'))))) {\n return;\n }\n this.setActive(isContent);\n if (this.getContent()) {\n var returnVal = this.getContent().onClick(e, force);\n if (returnVal === false) {\n return;\n }\n this.focus();\n if (this.currentInfo.element.classList.contains('e-rowcell') && e.type && e.type === 'click') {\n addClass([this.currentInfo.element], ['e-focused', 'e-focus']);\n }\n }\n };\n FocusStrategy.prototype.handleFilterNavigation = function (e, inputSelector, buttonSelector) {\n if (e.target === document.querySelector(inputSelector) && e.key === 'Tab' && e.shiftKey) {\n e.preventDefault();\n document.querySelector(buttonSelector).focus();\n }\n else if (e.target === document.querySelector(buttonSelector) && e.key === 'Tab' && !e.shiftKey &&\n document.activeElement === document.querySelector(buttonSelector)) {\n e.preventDefault();\n document.querySelector(inputSelector).focus();\n }\n };\n FocusStrategy.prototype.onKeyPress = function (e) {\n if (this.parent.allowPaging) {\n var pagerElement = this.parent.pagerModule.pagerObj.element;\n var focusablePagerElements = this.parent.pagerModule.pagerObj.getFocusablePagerElements(pagerElement, []);\n if (this.parent.childGrid && !parentsUntil(e.target, 'e-gridpager') && this.allowToPaging(e) && focusablePagerElements.length) {\n focusablePagerElements[0].tabIndex = 0;\n }\n if (this.parent.pagerModule.pagerObj.checkPagerHasFocus()) {\n if (e.action === 'shiftTab' && focusablePagerElements.length && focusablePagerElements[0] === e.target) {\n this.setActive(true);\n var lastHeaderCellIndex = [this.active.matrix.matrix.length - 1,\n this.active.matrix.matrix[this.active.matrix.matrix.length - 1].length - 1];\n if (this.active.matrix.matrix[lastHeaderCellIndex[0]][lastHeaderCellIndex[1]] === 0) {\n lastHeaderCellIndex = findCellIndex(this.active.matrix.matrix, lastHeaderCellIndex, false);\n }\n this.active.matrix.current = this.parent.editSettings.mode === 'Batch' ?\n this.isValidBatchEditCell(lastHeaderCellIndex) ? lastHeaderCellIndex :\n this.findBatchEditCell(lastHeaderCellIndex, false) : lastHeaderCellIndex;\n e.preventDefault();\n this.focus(e);\n return;\n }\n if (!(e.action === 'tab' && this.parent.element.classList.contains('e-childgrid')\n && ((!this.parent.pageSettings.pageSizes && focusablePagerElements.length\n && focusablePagerElements[focusablePagerElements.length - 1] === e.target)\n || (this.parent.pagerModule.pagerObj.getDropDownPage() === e.target)))) {\n this.parent.pagerModule.pagerObj.changePagerFocus(e);\n return;\n }\n else {\n var parentCell = parentsUntil(this.parent.element, 'e-detailcell');\n removeClass([this.parent.element], ['e-focus']);\n removeClass([parentCell], ['e-focused']);\n parentCell.tabIndex = -1;\n }\n }\n if (this.parent.pagerModule.pagerObj.element.tabIndex === 0 && (e.keyCode === 38 || (e.shiftKey && e.keyCode === 9))) {\n e.preventDefault();\n this.focus(e);\n return;\n }\n else if (this.parent.pagerModule.pagerObj.element.tabIndex === 0 && e.keyCode === 9) {\n e.preventDefault();\n this.parent.pagerModule.pagerObj.setPagerFocus();\n return;\n }\n if (this.parent.pagerModule.pagerObj.checkFirstPagerFocus()) {\n var lastRow = this.getContent().matrix.rows;\n var lastColumn = this.getContent().matrix.columns;\n this.getContent().matrix.current = [lastRow, lastColumn];\n }\n }\n if (this.parent.filterSettings.type === 'Excel') {\n this.handleFilterNavigation(e, '.e-excelfilter .e-menu-item:not(.e-disabled)', '.e-excelfilter .e-footer-content button:nth-child(2)');\n }\n if (this.parent.filterSettings.type === 'CheckBox') {\n this.handleFilterNavigation(e, '.e-searchinput.e-input', '.e-checkboxfilter .e-footer-content button:nth-child(2)');\n }\n if (this.parent.filterSettings.type === 'Menu') {\n this.handleFilterNavigation(e, '.e-flmenu .e-input-group.e-popup-flmenu', '.e-flmenu .e-footer-content button:nth-child(2)');\n }\n if (this.skipOn(e)) {\n return;\n }\n if (e.target && parentsUntil(e.target, 'e-gridcontent')) {\n var rows = [].slice.call(this.parent.getContentTable().rows);\n var lastCell = rows[rows.length - 1].lastElementChild;\n if (e.target === lastCell) {\n this.setActive(true);\n this.setLastContentCellActive();\n }\n }\n if (e.action === 'shiftTab' && e.target && (e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea'))) {\n if (e.target === this.parent.element) {\n if (this.parent.element.classList.contains('e-childgrid')) {\n this.focusOutFromChildGrid(e);\n }\n return;\n }\n if (parentsUntil(e.target, 'e-groupdroparea')) {\n if (this.parent.element.classList.contains('e-childgrid')) {\n e.preventDefault();\n this.parent.element.focus();\n }\n return;\n }\n if (parentsUntil(e.target, 'e-toolbar')) {\n if (this.parent.allowGrouping && this.parent.groupSettings.showDropArea) {\n var groupModule = this.parent.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n e.preventDefault();\n if (focusableGroupedItems.length > 0) {\n focusableGroupedItems[focusableGroupedItems.length - 1].focus();\n }\n else {\n groupModule.element.focus();\n }\n }\n else if (this.parent.element.classList.contains('e-childgrid')) {\n e.preventDefault();\n this.parent.element.focus();\n }\n return;\n }\n }\n var focusFirstHeaderCell = false;\n if (e.action === 'tab' && e.target && (e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea'))) {\n if (this.parent.allowGrouping && this.parent.groupSettings.showDropArea\n && (e.target === this.parent.element || e.target.classList.contains('e-groupdroparea'))) {\n var groupModule = this.parent.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n if (focusableGroupedItems.length > 0) {\n e.preventDefault();\n focusableGroupedItems[0].focus();\n return;\n }\n if (!e.target.classList.contains('e-groupdroparea')) {\n e.preventDefault();\n groupModule.element.focus();\n return;\n }\n }\n if ((this.parent.toolbar || this.parent.toolbarTemplate) && (e.target === this.parent.element\n || parentsUntil(e.target, 'e-groupdroparea')\n || e.target.classList.contains('e-toolbar'))) {\n var toolbarElement = this.parent.toolbarModule.element;\n var focusableToolbarItems = this.parent.toolbarModule.getFocusableToolbarItems();\n if (focusableToolbarItems.length > 0) {\n e.preventDefault();\n focusableToolbarItems[0].querySelector('.e-toolbar-item-focus,.e-btn,.e-input').focus();\n return;\n }\n if (!e.target.classList.contains('e-toolbar')) {\n e.preventDefault();\n toolbarElement.focus();\n return;\n }\n }\n if (e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea')) {\n focusFirstHeaderCell = true;\n }\n }\n if (focusFirstHeaderCell) {\n if (this.parent.allowGrouping && !isNullOrUndefined(this.parent.groupSettings.columns) && this.parent.groupSettings.columns.length === this.parent.columns.length) {\n this.setActive(true);\n }\n else {\n this.setActive(false);\n }\n this.active.matrix.current = [0, -1];\n }\n this.activeKey = e.action;\n var beforeArgs = { cancel: false, byKey: true, byClick: false, keyArgs: e };\n this.parent.notify(event.beforeCellFocused, beforeArgs);\n if (beforeArgs.cancel) {\n return;\n }\n var bValue = this.getContent().matrix.current;\n var prevBatchValue = this.active && this.active.matrix.current ?\n [this.active.matrix.current[0], this.active.matrix.current[1]] : undefined;\n this.currentInfo.outline = true;\n var swapInfo = this.getContent().jump(e.action, bValue);\n this.swap = swapInfo;\n if (swapInfo.swap && !(this.parent.editSettings.mode === 'Batch'\n && (e.action === 'tab' || e.action === 'shiftTab'))) {\n this.setActive(!swapInfo.toHeader);\n this.getContent().matrix.current = this.getContent().getNextCurrent(bValue, swapInfo, this.active, e.action);\n this.prevIndexes = {};\n }\n this.setActiveByKey(e.action, this.getContent());\n var returnVal = this.content.lastIdxCell ? false : this.getContent().onKeyPress(e);\n if (e.target && parentsUntil(e.target, 'e-gridheader')) {\n if (e.action === 'tab' && bValue.toString() === this.active.matrix.current.toString()) {\n var nextHeaderCellIndex = findCellIndex(this.active.matrix.matrix, this.active.matrix.current, true);\n var lastHeaderCellIndex = [this.active.matrix.matrix.length - 1,\n this.active.matrix.matrix[this.active.matrix.matrix.length - 1].length - 1];\n if (this.active.matrix.matrix[lastHeaderCellIndex[0]][lastHeaderCellIndex[1]] === 0) {\n lastHeaderCellIndex = findCellIndex(this.active.matrix.matrix, lastHeaderCellIndex, false);\n }\n if (this.active.matrix.current.toString() === lastHeaderCellIndex.toString() && this.content.matrix.matrix.length) {\n returnVal = true;\n this.setActive(true);\n var firstContentCellIndex = [0, 0];\n if (this.parent.allowPaging && this.parent.pagerModule.pagerObj.element.querySelector('.e-pagercontainer')) {\n this.parent.pagerModule.pagerObj.element.querySelector('.e-pagercontainer').setAttribute('aria-hidden', 'true');\n }\n if (this.active.matrix.matrix[firstContentCellIndex[0]][firstContentCellIndex[1]] === 0) {\n firstContentCellIndex = findCellIndex(this.active.matrix.matrix, [0, 0], true);\n }\n this.active.matrix.current = this.parent.editSettings.mode === 'Batch' ?\n this.isValidBatchEditCell(firstContentCellIndex) ? firstContentCellIndex :\n this.findBatchEditCell(firstContentCellIndex, true) : firstContentCellIndex;\n }\n else if (this.active.matrix.current.toString() !== nextHeaderCellIndex.toString()) {\n this.active.matrix.current = nextHeaderCellIndex;\n }\n }\n if (e.action === 'shiftTab' && bValue.toString() === this.active.matrix.current.toString()) {\n var previousCellIndex = findCellIndex(this.active.matrix.matrix, this.active.matrix.current, false);\n if (previousCellIndex.toString() === this.active.matrix.current.toString()) {\n this.focusOutFromHeader(e);\n return;\n }\n if (this.active.matrix.current.toString() !== previousCellIndex.toString() && !returnVal) {\n returnVal = true;\n this.active.matrix.current = previousCellIndex;\n }\n }\n }\n if (e.target && parentsUntil(e.target, 'e-gridcontent')) {\n if (this.parent.allowPaging && this.parent.pagerModule.pagerObj.element.querySelector('.e-pagercontainer')) {\n this.parent.pagerModule.pagerObj.element.querySelector('.e-pagercontainer').removeAttribute('aria-hidden');\n }\n if (this.parent.editSettings.mode === 'Batch' && (e.action === 'tab' || e.action === 'shiftTab')) {\n this.active.matrix.current = this.findBatchEditCell(prevBatchValue, e.action === 'tab' ? true : false);\n if (e.action === 'tab' && prevBatchValue.toString() === this.active.matrix.current.toString()) {\n this.parent.editModule.editModule.addBatchRow = true;\n }\n }\n if (e.action === 'shiftTab' && bValue.toString() === this.active.matrix.current.toString()) {\n if (this.parent.allowGrouping && !isNullOrUndefined(this.parent.groupSettings.columns) && this.parent.groupSettings.columns.length === this.parent.columns.length) {\n this.focusOutFromHeader(e);\n return;\n }\n var firstContentCellIndex = [0, 0];\n if (this.active.matrix.matrix[firstContentCellIndex[0]][firstContentCellIndex[1]] === 0) {\n firstContentCellIndex = findCellIndex(this.active.matrix.matrix, [0, 0], true);\n }\n if (!returnVal && (firstContentCellIndex.toString() === this.active.matrix.current.toString()\n || (this.parent.editSettings.mode === 'Batch'\n && prevBatchValue.toString() === this.active.matrix.current.toString()))) {\n returnVal = true;\n this.setActive(false);\n this.setLastContentCellActive();\n }\n }\n }\n if (returnVal === false) {\n this.clearIndicator();\n if (e.action === 'shiftTab' && bValue.toString() === [0, 0].toString()) {\n this.parent.element.tabIndex = -1;\n }\n if (this.parent.allowPaging && !this.parent.pagerModule.pagerObj.checkPagerHasFocus() && this.allowToPaging(e)\n && bValue.toString() !== [0, 0].toString()) {\n e.preventDefault();\n if (e.keyCode === 40) {\n this.parent.pagerModule.pagerObj.setPagerContainerFocus();\n return;\n }\n else if (e.keyCode === 9) {\n this.parent.pagerModule.pagerObj.setPagerFocus();\n return;\n }\n }\n if (this.parent.element.classList.contains('e-childgrid')) {\n this.focusOutFromChildGrid(e);\n }\n return;\n }\n e.preventDefault();\n this.focus(e);\n };\n FocusStrategy.prototype.isValidBatchEditCell = function (cellIndex) {\n var cell = this.active.getTable().rows[cellIndex[0]].cells[cellIndex[1]];\n var tr = closest(cell, 'tr');\n var cellColIndex = parseInt(cell.getAttribute('data-colindex'), 10);\n var cellCol = this.parent.getColumns()[parseInt(cellColIndex.toString(), 10)];\n if (this.active.matrix.matrix[cellIndex[0]][cellIndex[1]] === 1\n && (!tr.classList.contains('e-row') || (tr.classList.contains('e-insertedrow') || !cellCol.isPrimaryKey) && cellCol.allowEditing)) {\n return true;\n }\n return false;\n };\n FocusStrategy.prototype.findBatchEditCell = function (currentCellIndex, next, limitRow) {\n var cellIndex = currentCellIndex;\n var tempCellIndex = currentCellIndex;\n var cellIndexObtain = false;\n while (!cellIndexObtain) {\n var prevTempCellIndex = tempCellIndex;\n tempCellIndex = findCellIndex(this.active.matrix.matrix, tempCellIndex, next);\n if ((prevTempCellIndex.toString() === tempCellIndex.toString())\n || (limitRow && prevTempCellIndex[0] !== tempCellIndex[0])) {\n cellIndexObtain = true;\n continue;\n }\n if (this.isValidBatchEditCell(tempCellIndex)) {\n cellIndex = tempCellIndex;\n cellIndexObtain = true;\n }\n }\n return cellIndex;\n };\n FocusStrategy.prototype.setLastContentCellActive = function () {\n var lastContentCellIndex = [this.active.matrix.matrix.length - 1,\n this.active.matrix.matrix[this.active.matrix.matrix.length - 1].length - 1];\n if (this.active.matrix.matrix[lastContentCellIndex[0]][lastContentCellIndex[1]] === 0) {\n lastContentCellIndex = findCellIndex(this.active.matrix.matrix, lastContentCellIndex, false);\n }\n this.active.matrix.current = lastContentCellIndex;\n };\n FocusStrategy.prototype.focusOutFromChildGrid = function (e) {\n var parentTable = parentsUntil(this.parent.element, 'e-table');\n var parentGrid = parentsUntil(parentTable, 'e-grid').ej2_instances[0];\n var parentCell = parentsUntil(this.parent.element, 'e-detailcell');\n var uid = parentsUntil(this.parent.element, 'e-detailrow').getAttribute('data-uid');\n var parentRows = [].slice.call(parentGrid.getContentTable().rows);\n var parentRowIndex = parentRows.map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n if (e.action === 'tab' && parentRowIndex >= parentRows.length - 1) {\n return;\n }\n removeClass([this.parent.element], ['e-focus']);\n removeClass([parentCell], ['e-focused']);\n parentCell.tabIndex = -1;\n e.preventDefault();\n var nextFocusCell;\n parentGrid.focusModule.removeFocus();\n if (e.action === 'shiftTab') {\n var previousRow = parentRows[parentRowIndex - 1];\n var rowCells = previousRow.cells;\n for (var i = rowCells.length - 1; i >= 0; i--) {\n nextFocusCell = rowCells[parseInt(i.toString(), 10)];\n if (!nextFocusCell.classList.contains('e-hide')) {\n parentGrid.focusModule.active.matrix.current = [parentRowIndex - 1, i];\n break;\n }\n }\n }\n else {\n nextFocusCell = parentRows[parentRowIndex + 1].cells[0];\n parentGrid.focusModule.active.matrix.current = [parentRowIndex + 1, 0];\n }\n parentGrid.focusModule.currentInfo.element = nextFocusCell;\n parentGrid.focusModule.currentInfo.elementToFocus = nextFocusCell;\n addClass([nextFocusCell], ['e-focused', 'e-focus']);\n nextFocusCell.tabIndex = 0;\n nextFocusCell.focus();\n };\n FocusStrategy.prototype.focusOutFromHeader = function (e) {\n this.removeFocus();\n if (this.parent.toolbar || this.parent.toolbarTemplate) {\n var toolbarElement = this.parent.toolbarModule.element;\n var focusableToolbarItems = this.parent.toolbarModule.getFocusableToolbarItems();\n e.preventDefault();\n if (focusableToolbarItems.length > 0) {\n focusableToolbarItems[focusableToolbarItems.length - 1].querySelector('.e-toolbar-item-focus,.e-btn,.e-input').focus();\n }\n else {\n toolbarElement.focus();\n }\n return;\n }\n if (this.parent.allowGrouping && this.parent.groupSettings.showDropArea) {\n var groupModule = this.parent.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n e.preventDefault();\n if (focusableGroupedItems.length > 0) {\n focusableGroupedItems[focusableGroupedItems.length - 1].focus();\n }\n else {\n groupModule.element.focus();\n }\n return;\n }\n if (this.parent.element.classList.contains('e-childgrid')) {\n e.preventDefault();\n this.parent.element.focus();\n }\n };\n FocusStrategy.prototype.allowToPaging = function (e) {\n if (this.parent.editSettings.mode === 'Batch' && this.parent.editSettings.allowAdding && e.keyCode !== 40) {\n return false;\n }\n return true;\n };\n FocusStrategy.prototype.skipOn = function (e) {\n var target = e.target;\n if (!target) {\n return false;\n }\n if (!this.parent.isEdit && target && target.closest('.e-unboundcell') && this.currentInfo.skipAction && ((e.action === 'shiftTab' &&\n this.commandColumnFocusElement(target.closest('.e-unboundcell'), false) === target) ||\n (e.action === 'tab' &&\n this.commandColumnFocusElement(target.closest('.e-unboundcell'), true) === target))) {\n return this.currentInfo.skipAction = false;\n }\n if (this.currentInfo.skipAction) {\n this.clearIndicator();\n return true;\n }\n if (['pageUp', 'pageDown', 'altDownArrow'].indexOf(e.action) > -1) {\n this.clearIndicator();\n return true;\n }\n if (this.parent.allowGrouping) {\n var focusableGroupedItems = this.parent.groupModule.getFocusableGroupedItems();\n if (parentsUntil(e.target, 'e-groupheadercell')\n && !((e.target === focusableGroupedItems[0] && e.action === 'shiftTab')\n || (e.target === focusableGroupedItems[focusableGroupedItems.length - 1] && e.action === 'tab'))) {\n return true;\n }\n }\n if (this.parent.toolbar || this.parent.toolbarTemplate) {\n var toolbarElement = this.parent.toolbarModule.element;\n var focusableToolbarItems = toolbarElement\n .querySelectorAll('.e-toolbar-item:not(.e-overlay):not(.e-hidden)');\n if (parentsUntil(e.target, 'e-toolbar-item')\n && !(focusableToolbarItems.length > 0 && ((parentsUntil(e.target, 'e-toolbar-item') === focusableToolbarItems[0] && e.action === 'shiftTab')\n || (parentsUntil(e.target, 'e-toolbar-item') === focusableToolbarItems[focusableToolbarItems.length - 1] && e.action === 'tab')))) {\n return true;\n }\n }\n var th = closest(target, 'th') && !closest(target, 'th').tabIndex;\n if (e.target.classList.contains('e-filterbaroperator') && (e.keyCode === 13 || e.keyCode === 27)) {\n var inputTarget = closest(e.target, '.e-filterbarcell');\n inputTarget.querySelector('input').focus();\n }\n var addNewRow = this.parent.editSettings.showAddNewRow && closest(document.activeElement, '.e-addedrow') !== null;\n if ((th && closest(document.activeElement, '.e-filterbarcell') !== null) || addNewRow) {\n this.removeFocus();\n }\n var filterCell = closest(document.activeElement, '.e-filterbarcell') !== null;\n if (this.parent.enableHeaderFocus && filterCell) {\n var matrix = this.active.matrix;\n var current = matrix.current;\n filterCell = matrix.matrix[current[0]].lastIndexOf(1) !== current[1];\n }\n if (this.parent.isEdit && (e.action === 'tab' || e.action === 'shiftTab') && this.parent.editSettings.mode === 'Normal'\n && !this.parent.editSettings.showAddNewRow && !isNullOrUndefined(parentsUntil(target, 'e-addedrow'))) {\n var inputElements = this.parent.editModule.formObj.element\n .querySelectorAll('input.e-field:not(.e-disabled),button:not(.e-hide)');\n var inputTarget = target.classList.contains('e-ddl') ? target.querySelector('input') : target;\n var firstEditCell = e.action === 'tab' && inputTarget === inputElements[inputElements.length - 1];\n var lastEditCell = e.action === 'shiftTab' && inputTarget === inputElements[0];\n if (firstEditCell || lastEditCell) {\n e.preventDefault();\n var focusElement = inputElements[firstEditCell ? 0 : inputElements.length - 1];\n focusElement = focusElement.parentElement.classList.contains('e-ddl') ? focusElement.parentElement : focusElement;\n focusElement.focus();\n }\n }\n return (e.action === 'delete'\n || (this.parent.editSettings.mode !== 'Batch' && ((this.parent.isEdit && (!this.parent.editSettings.showAddNewRow ||\n (this.parent.editSettings.showAddNewRow && ((!isNullOrUndefined(this.parent.element.querySelector('.e-editedrow')) ||\n (!isNullOrUndefined(parentsUntil(target, 'e-addedrow')) && !isNullOrUndefined(closest(e.target, 'input')) && !isNullOrUndefined(document.querySelector('.e-popup-open'))) ||\n (!isNullOrUndefined(parentsUntil(target, 'e-addedrow')) && (target && !target.querySelector('.e-cancel-icon')) &&\n !isNullOrUndefined(parentsUntil(target, 'e-unboundcell')))))))) || ['insert', 'f2'].indexOf(e.action) > -1))\n || ((filterCell && this.parent.enableHeaderFocus) || ((filterCell || addNewRow) && e.action !== 'tab' && e.action !== 'shiftTab') ||\n closest(document.activeElement, '#' + this.parent.element.id + '_searchbar') !== null\n && ['enter', 'leftArrow', 'rightArrow',\n 'shiftLeft', 'shiftRight', 'ctrlPlusA'].indexOf(e.action) > -1)\n || (closest(target, '.' + literals.gridContent) === null && closest(target, '.' + literals.gridHeader) === null\n && !(e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea')))\n || (e.action === 'space' && (!target.classList.contains(literals.gridChkBox) && closest(target, '.' + literals.gridChkBox) === null\n && closest(target, '.e-headerchkcelldiv') === null))) || closest(target, '.e-filter-popup') !== null;\n };\n FocusStrategy.prototype.focusVirtualElement = function (e) {\n var _this = this;\n if (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) {\n var data = { virtualData: {}, isAdd: false, isCancel: false };\n this.parent.notify(event.getVirtualData, data);\n var isKeyFocus = this.actions.some(function (value) { return value === _this.activeKey; });\n var isSelected = this.parent.contentModule ?\n this.parent.contentModule.selectedRowIndex > -1 : false;\n if (data.isAdd || Object.keys(data.virtualData).length || isKeyFocus || data.isCancel || isSelected) {\n this.parent.notify(event.resetVirtualFocus, { isCancel: false });\n data.isCancel = false;\n this.parent.contentModule.selectedRowIndex = -1;\n if (isKeyFocus) {\n this.activeKey = this.empty;\n this.parent.notify('virtaul-key-handler', e);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.currentInfo.elementToFocus.focus({ preventScroll: true });\n }\n else {\n if (this.isVirtualScroll || this.isInfiniteScroll) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.currentInfo.elementToFocus.focus({ preventScroll: true });\n }\n else {\n this.currentInfo.elementToFocus.focus();\n }\n }\n }\n this.isVirtualScroll = this.isInfiniteScroll = false;\n };\n FocusStrategy.prototype.getFocusedElement = function () {\n return this.currentInfo.elementToFocus;\n };\n FocusStrategy.prototype.getContent = function () {\n return this.active || this.content;\n };\n FocusStrategy.prototype.setActive = function (content) {\n this.active = content ? this.content : this.header;\n };\n FocusStrategy.prototype.setFocusedElement = function (element, e) {\n var _this = this;\n this.currentInfo.elementToFocus = element;\n setTimeout(function () {\n if (!isNullOrUndefined(_this.currentInfo.elementToFocus)) {\n if (_this.parent.enableVirtualization || _this.parent.enableInfiniteScrolling) {\n _this.focusVirtualElement(e);\n }\n else if (isNullOrUndefined(_this.parent.element.querySelector('.e-flmenu')) ||\n parentsUntil(document.activeElement, 'e-flmenu-valuediv') !== _this.parent.element.querySelector('.e-flmenu-valuediv')) {\n _this.currentInfo.elementToFocus.focus();\n }\n }\n }, 0);\n };\n FocusStrategy.prototype.focus = function (e) {\n this.parent.notify(event.virtaulCellFocus, e);\n this.removeFocus();\n this.addFocus(this.getContent().getFocusInfo(), e);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n FocusStrategy.prototype.removeFocus = function (e) {\n if (!this.currentInfo.element) {\n return;\n }\n if (this.parent.isReact && !this.parent.isEdit && this.currentInfo.element.classList.contains('e-rowcell')\n && !this.currentInfo.element.parentElement && !(this.parent.allowGrouping && !isNullOrUndefined(this.parent.groupSettings.columns) && this.parent.groupSettings.columns.length) &&\n this.parent.getRowByIndex(this.prevIndexes.rowIndex)) {\n var cellElem = this.parent.getCellFromIndex(this.prevIndexes.rowIndex, this.prevIndexes\n .cellIndex);\n this.currentInfo.element = cellElem ? cellElem : this.currentInfo.element;\n }\n removeClass([this.currentInfo.element, this.currentInfo.elementToFocus], ['e-focused', 'e-focus']);\n this.currentInfo.element.tabIndex = -1;\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.addOutline = function () {\n var info = this.getContent().getFocusInfo();\n if (info.element) {\n addClass([info.element], ['e-focused']);\n addClass([info.elementToFocus], ['e-focus']);\n }\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.focusHeader = function () {\n this.setActive(false);\n this.resetFocus();\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.focusContent = function () {\n this.setActive(true);\n this.resetFocus();\n };\n FocusStrategy.prototype.resetFocus = function () {\n var current = this.getContent().matrix.get(0, -1, [0, 1], null, this.getContent().validator());\n this.getContent().matrix.select(current[0], current[1]);\n this.focus();\n };\n FocusStrategy.prototype.addFocus = function (info, e) {\n this.currentInfo = info;\n this.currentInfo.outline = info.outline && (!isNullOrUndefined(e) || this.isVirtualScroll);\n if (this.isInfiniteScroll) {\n this.currentInfo.outline = true;\n }\n if (!info.element) {\n return;\n }\n var isFocused = info.elementToFocus.classList.contains('e-focus');\n if (isFocused) {\n return;\n }\n if (this.currentInfo.outline) {\n addClass([info.element], ['e-focused']);\n }\n addClass([info.elementToFocus], ['e-focus']);\n info.element.tabIndex = 0;\n if (!isFocused) {\n this.setFocusedElement(info.elementToFocus, e);\n }\n this.parent.notify(event.cellFocused, {\n element: info.elementToFocus,\n parent: info.element,\n indexes: this.getContent().matrix.current,\n byKey: !isNullOrUndefined(e),\n byClick: isNullOrUndefined(e),\n keyArgs: e,\n isJump: this.swap.swap,\n container: this.getContent().getInfo(e),\n outline: !isNullOrUndefined(e),\n swapInfo: this.swap\n });\n var _a = this.getContent().matrix.current, rowIndex = _a[0], cellIndex = _a[1];\n this.prevIndexes = { rowIndex: rowIndex, cellIndex: cellIndex };\n this.focusedColumnUid = this.parent.getColumnByIndex(cellIndex).uid;\n this.focusByClick = false;\n };\n FocusStrategy.prototype.refreshMatrix = function (content) {\n var _this = this;\n return function (e) {\n if (content && !_this.content) {\n _this.content = new ContentFocus(_this.parent);\n }\n if (!content && !_this.header) {\n _this.header = new HeaderFocus(_this.parent);\n }\n var cFocus = content ? _this.content : _this.header;\n var frozenRow = _this.parent.frozenRows;\n var batchLen = 0;\n if (frozenRow && _this.parent.editSettings.mode === 'Batch') {\n batchLen = _this.parent.getHeaderContent().querySelectorAll('.e-insertedrow').length +\n _this.parent.getHeaderContent().querySelectorAll('.e-hiddenrow').length;\n }\n if (!isNullOrUndefined(_this.parent.groupSettings.columns) && _this.parent.groupSettings.columns.length && frozenRow && content) {\n frozenRow = 0;\n for (var i = 0; i < e.rows.length; i++) {\n frozenRow++;\n if (e.rows[parseInt(i.toString(), 10)].index + 1 === _this.parent.frozenRows) {\n break;\n }\n }\n _this.groupedFrozenRow = frozenRow;\n }\n var rows = content ? e.rows.slice(frozenRow + batchLen) : e.rows;\n var updateRow = content ? e.rows.slice(0, frozenRow + batchLen) : e.rows;\n if (_this.parent.isCollapseStateEnabled() && content) {\n rows = rows.filter(function (x) { return x.visible !== false; });\n }\n var isRowTemplate = !isNullOrUndefined(_this.parent.rowTemplate);\n if (frozenRow && ((_this.parent.editSettings.mode === 'Batch' && content && (e.name === 'batchDelete' || e.name === 'batchAdd' ||\n e.name === 'batchCancel' || (e.args && (e.args.requestType === 'batchsave')))) ||\n (e.args && (e.args.requestType === 'delete' || e.args.requestType === 'save')))) {\n var matrixcs = _this.header.matrix.matrix;\n var hdrLen = _this.parent.headerModule.rows.length;\n matrixcs.splice(hdrLen, matrixcs.length - hdrLen);\n }\n var matrix = cFocus.matrix.generate(updateRow, cFocus.selector, isRowTemplate);\n cFocus.matrix.generate(rows, cFocus.selector, isRowTemplate);\n var isScroll = _this.parent.enableVirtualization || _this.parent.enableInfiniteScrolling;\n if ((_this.parent.editSettings.showAddNewRow && content && _this.header && _this.header.matrix) &&\n (!isScroll || (isScroll && _this.parent.isAddNewRow))) {\n var tempMatrix = _this.header.matrix.matrix;\n var lastRowHeaderIdx = _this.parent.allowFiltering && _this.parent.filterSettings.type === 'FilterBar' ? 2 : 1;\n cFocus.matrix.rows = _this.parent.frozenRows && _this.parent.editSettings.newRowPosition === 'Top' ?\n cFocus.matrix.rows : ++cFocus.matrix.rows;\n if (_this.parent.editSettings.newRowPosition === 'Top') {\n (_this.parent.frozenRows || isScroll ?\n matrix : cFocus.matrix.matrix).unshift(_this.refreshAddNewRowMatrix(tempMatrix[tempMatrix.length -\n lastRowHeaderIdx]));\n }\n else {\n cFocus.matrix.matrix.push(_this.refreshAddNewRowMatrix(tempMatrix[tempMatrix.length - lastRowHeaderIdx]));\n }\n _this.parent.isAddNewRow = false;\n }\n if (!(_this.parent.isFrozenGrid() && (e.args && (e.args.requestType === 'sorting'\n || e.args.requestType === 'batchsave' || e.args.requestType === 'paging'))) ||\n (frozenRow && _this.parent.editSettings.mode === 'Batch' && content && (e.name === 'batchDelete' || e.name === 'batchAdd' ||\n e.name === 'batchCancel' || e.args.requestType === 'batchsave'))) {\n cFocus.generateRows(updateRow, {\n matrix: matrix, handlerInstance: _this.header\n });\n }\n if (!Browser.isDevice && e && e.args) {\n if (!_this.focusByClick && e.args.requestType === 'paging' && !_this.parent.pagerModule.pagerObj.checkPagerHasFocus()) {\n _this.skipFocus = false;\n _this.parent.element.focus();\n }\n if (e.args.requestType === 'grouping') {\n _this.skipFocus = true;\n }\n }\n if (e && e.args && e.args.requestType === 'virtualscroll') {\n if (_this.currentInfo.uid) {\n var index_1;\n var bool = e.rows.some(function (row, i) {\n index_1 = i;\n return row.uid === _this.currentInfo.uid;\n });\n if (bool) {\n _this.content.matrix.current[0] = index_1;\n _this.content.matrix.current[1] = _this.parent.getColumnIndexByUid(_this.focusedColumnUid) || 0;\n var isGroup = _this.parent.allowGrouping && _this.parent.groupSettings.columns.length ? true : false;\n if (isGroup) {\n _this.content.matrix.current[1] = _this.prevIndexes.cellIndex;\n if (_this.virtualSelectionInfo.isPending) {\n _this.content.matrix.current[0] = _this.virtualSelectionInfo.direction === 'downArrow' ? _this.content.matrix.current[0] + 1\n : _this.content.matrix.current[0] - 1;\n }\n }\n var focusElement = _this.getContent().getFocusInfo().elementToFocus;\n if (focusElement) {\n var cellPosition = focusElement.getBoundingClientRect();\n var gridPosition = _this.parent.element.getBoundingClientRect();\n if ((cellPosition.top >= 0 && cellPosition.left >= 0 &&\n cellPosition.right <= Math.min(gridPosition.right, window.innerWidth ||\n document.documentElement.clientWidth) &&\n cellPosition.bottom <= Math.min(gridPosition.bottom, window.innerHeight ||\n document.documentElement.clientHeight)) || isGroup) {\n _this.isVirtualScroll = true;\n _this.focus(isGroup && _this.virtualSelectionInfo.isPending ?\n _this.virtualSelectionInfo.event : undefined);\n }\n }\n }\n }\n else if (e.args.focusElement && e.args.focusElement.classList.contains('e-filtertext')) {\n var focusElement = _this.parent.element.querySelector('#' + e.args.focusElement.id);\n if (focusElement) {\n focusElement.focus();\n }\n }\n _this.virtualSelectionInfo = {};\n }\n if (e && e.args && e.args.requestType === 'infiniteScroll') {\n _this.isInfiniteScroll = true;\n }\n };\n };\n FocusStrategy.prototype.refreshAddNewRowMatrix = function (matrix) {\n var cols = this.parent.getColumns();\n var indent = this.parent.getIndentCount();\n for (var i = indent; i < matrix.length - 1; i++) {\n if (cols[i - indent] && cols[i - indent].visible && cols[i - indent].allowEditing) {\n matrix[parseInt(i.toString(), 10)] = 1;\n }\n else {\n matrix[parseInt(i.toString(), 10)] = 0;\n }\n }\n return matrix;\n };\n FocusStrategy.prototype.addEventListener = function () {\n var _this = this;\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.add(this.parent.element, 'mousedown', this.focusCheck, this);\n EventHandler.add(this.parent.element, 'touchstart', this.focusCheck, this);\n EventHandler.add(this.parent.element, 'focus', this.onFocus, this);\n this.parent.element.addEventListener('focus', this.passiveHandler = function (e) { return _this.passiveFocus(e); }, true);\n EventHandler.add(this.parent.element, 'focusout', this.onBlur, this);\n this.evtHandlers = [{ event: event.keyPressed, handler: this.onKeyPress },\n { event: event.click, handler: this.onClick },\n { event: event.contentReady, handler: this.refMatrix },\n { event: event.partialRefresh, handler: this.refMatrix },\n { event: event.refreshExpandandCollapse, handler: this.refMatrix },\n { event: event.showAddNewRowFocus, handler: this.showAddNewRowFocus },\n { event: event.headerRefreshed, handler: this.refreshMatrix() },\n { event: event.closeEdit, handler: this.restoreFocus },\n { event: event.restoreFocus, handler: this.restoreFocus },\n { event: 'start-edit', handler: this.clearIndicator },\n { event: 'start-add', handler: this.clearIndicator },\n { event: 'sorting-complete', handler: this.restoreFocus },\n { event: 'filtering-complete', handler: this.filterfocus },\n { event: 'custom-filter-close', handler: this.filterfocus },\n { event: 'grouping-complete', handler: this.restoreFocusWithAction },\n { event: 'ungrouping-complete', handler: this.restoreFocusWithAction },\n { event: event.batchAdd, handler: this.refMatrix },\n { event: event.batchCancel, handler: this.refMatrix },\n { event: event.batchDelete, handler: this.refMatrix },\n { event: event.detailDataBound, handler: this.refMatrix },\n { event: event.onEmpty, handler: this.refMatrix },\n { event: event.cellFocused, handler: this.internalCellFocus }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n FocusStrategy.prototype.showAddNewRowFocus = function () {\n if (this.parent.editSettings.showAddNewRow) {\n var startIdx = this.parent.editSettings.newRowPosition === 'Top' ? 0 : this.content.matrix.matrix.length - 1;\n var startCellIdx = this.parent.getIndentCount();\n if (this.parent.editSettings.newRowPosition === 'Top' && (this.parent.frozenRows ||\n this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n var headrIdx = this.header.matrix.matrix.length - (this.groupedFrozenRow ?\n this.groupedFrozenRow : this.parent.frozenRows);\n startCellIdx = this.findNextCellFocus(this.header.matrix.matrix[headrIdx - 1], startCellIdx);\n this.header.matrix.current = [headrIdx - 1, startCellIdx];\n this.active = this.header;\n }\n else {\n startCellIdx = this.findNextCellFocus(this.content.matrix.matrix[parseInt(startIdx.toString(), 10)], startCellIdx);\n this.content.matrix.current = [startIdx, startCellIdx];\n this.active = this.content;\n }\n var addedrow = this.parent.element.querySelector('.e-addedrow');\n if (addedrow && addedrow.querySelectorAll('tr') &&\n addedrow.querySelector('tr').cells[parseInt(startCellIdx.toString(), 10)].querySelector('input')) {\n addedrow.querySelector('tr').cells[parseInt(startCellIdx.toString(), 10)].querySelector('input').select();\n }\n }\n };\n FocusStrategy.prototype.findNextCellFocus = function (matrix, cellIndex) {\n for (var i = cellIndex; i < matrix.length; i++) {\n if (matrix[parseInt(i.toString(), 10)] === 1) {\n return i;\n }\n }\n return cellIndex;\n };\n FocusStrategy.prototype.filterfocus = function () {\n if (this.parent.filterSettings.type !== 'FilterBar') {\n this.restoreFocus();\n }\n };\n FocusStrategy.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.remove(this.parent.element, 'mousedown', this.focusCheck);\n EventHandler.remove(this.parent.element, 'touchstart', this.focusCheck);\n EventHandler.remove(this.parent.element, 'focus', this.onFocus);\n EventHandler.remove(this.parent.element, 'focusout', this.onBlur);\n this.parent.element.removeEventListener('focus', this.passiveHandler, true);\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n FocusStrategy.prototype.destroy = function () {\n this.removeEventListener();\n };\n FocusStrategy.prototype.restoreFocus = function () {\n var groupModule = this.parent.groupModule;\n if (this.parent.allowGrouping && groupModule && (groupModule.groupSortFocus || groupModule.groupTextFocus)) {\n groupModule.groupSortFocus = false;\n groupModule.groupTextFocus = false;\n return;\n }\n this.firstHeaderCellClick = true;\n this.addFocus(this.getContent().getFocusInfo());\n };\n FocusStrategy.prototype.restoreFocusWithAction = function (e) {\n if (!this.parent.enableInfiniteScrolling) {\n var matrix = this.getContent().matrix;\n var current = matrix.current;\n switch (e.requestType) {\n case 'grouping':\n case 'ungrouping':\n current[1] = current.length &&\n !this.parent.groupSettings.showGroupedColumn && !isNullOrUndefined(matrix.matrix[current[0]]) ?\n matrix.matrix[current[0]].indexOf(1) : e.requestType === 'grouping' ? current[1] + 1 : current[1] - 1;\n break;\n }\n this.getContent().matrix.current = current;\n this.prevIndexes = { rowIndex: current[0], cellIndex: current[1] };\n var groupModule = this.parent.groupModule;\n if (this.parent.allowGrouping && groupModule && groupModule.groupCancelFocus) {\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n if (focusableGroupedItems.length) {\n if (focusableGroupedItems[0].parentElement.getAttribute('ej-mappingname') === e.columnName) {\n focusableGroupedItems[3].focus();\n }\n else {\n focusableGroupedItems[0].focus();\n }\n }\n else {\n groupModule.element.focus();\n }\n groupModule.groupCancelFocus = false;\n return;\n }\n this.addFocus(this.getContent().getFocusInfo());\n }\n };\n FocusStrategy.prototype.clearIndicator = function () {\n if (!this.currentInfo.element || !this.currentInfo.elementToFocus) {\n return;\n }\n removeClass([this.currentInfo.element, this.currentInfo.elementToFocus], ['e-focus', 'e-focused']);\n };\n FocusStrategy.prototype.getPrevIndexes = function () {\n var forget = this.forget;\n this.forget = false;\n return forget || !Object.keys(this.prevIndexes).length ? { rowIndex: null, cellIndex: null } : this.prevIndexes;\n };\n FocusStrategy.prototype.forgetPrevious = function () {\n this.forget = true;\n };\n FocusStrategy.prototype.setActiveByKey = function (action, active) {\n if (this.parent.frozenRows === 0) {\n return;\n }\n // eslint-disable-next-line prefer-const\n var info;\n var actions = {\n 'home': function () { return ({ toHeader: !info.isContent, toFrozen: true }); },\n 'end': function () { return ({ toHeader: !info.isContent, toFrozen: false }); },\n 'ctrlHome': function () { return ({ toHeader: true, toFrozen: false }); },\n 'ctrlEnd': function () { return ({ toHeader: false, toFrozen: false }); }\n };\n if (!(action in actions)) {\n return;\n }\n info = active.getInfo();\n var swap = actions[\"\" + action]();\n this.setActive(!swap.toHeader);\n this.getContent().matrix.current = active.matrix.current;\n };\n FocusStrategy.prototype.internalCellFocus = function (e) {\n if (!(e.byKey && e.container.isContent && ((e.keyArgs.action === 'enter' && e.parent.classList.contains('e-detailcell')) ||\n ((e.keyArgs.action === 'tab' || e.keyArgs.action === 'shiftTab') && e.parent.classList.contains('e-unboundcell'))))) {\n return;\n }\n this.clearIndicator();\n var focusEle;\n if (e.parent && e.parent.closest('.e-unboundcell') && e.keyArgs.action === 'shiftTab') {\n focusEle = this.commandColumnFocusElement(e.parent, true);\n }\n else {\n focusEle = this.getContent().getFocusable(this.getFocusedElement());\n }\n this.setFocusedElement(focusEle);\n this.currentInfo.skipAction = true;\n };\n FocusStrategy.prototype.commandColumnFocusElement = function (cell, isLast) {\n var commandButtons = cell.querySelectorAll('button:not(.e-hide)');\n return isLast ? commandButtons[commandButtons.length - 1] : commandButtons[0];\n };\n return FocusStrategy;\n}());\nexport { FocusStrategy };\n/**\n * Create matrix from row collection which act as mental model for cell navigation\n *\n * @hidden\n */\nvar Matrix = /** @class */ (function () {\n function Matrix() {\n this.matrix = [];\n this.current = [];\n }\n Matrix.prototype.set = function (rowIndex, columnIndex, allow) {\n rowIndex = Math.max(0, Math.min(rowIndex, this.rows));\n columnIndex = Math.max(0, Math.min(columnIndex, this.columns));\n this.matrix[parseInt(rowIndex.toString(), 10)] = this.matrix[parseInt(rowIndex.toString(), 10)] || [];\n this.matrix[parseInt(rowIndex.toString(), 10)][parseInt(columnIndex.toString(), 10)] = allow ? 1 : 0;\n };\n Matrix.prototype.get = function (rowIndex, columnIndex, navigator, action, validator) {\n var tmp = columnIndex;\n if (rowIndex + navigator[0] < 0) {\n return [rowIndex, columnIndex];\n }\n rowIndex = Math.max(0, Math.min(rowIndex + navigator[0], this.rows));\n var emptyTable = true;\n if (isNullOrUndefined(this.matrix[parseInt(rowIndex.toString(), 10)])) {\n return null;\n }\n columnIndex = Math.max(0, Math.min(columnIndex + navigator[1], this.matrix[parseInt(rowIndex.toString(), 10)].length - 1));\n if (tmp + navigator[1] > this.matrix[parseInt(rowIndex.toString(), 10)].length - 1\n && validator(rowIndex, columnIndex, action)) {\n return [rowIndex, tmp];\n }\n var first = this.first(this.matrix[parseInt(rowIndex.toString(), 10)], columnIndex, navigator, true, action);\n columnIndex = first === null ? tmp : first;\n var val = getValue(rowIndex + \".\" + columnIndex, this.matrix);\n if (rowIndex === this.rows && (action === 'downArrow' || action === 'enter')) {\n navigator[0] = -1;\n }\n if (first === null) {\n for (var i = 0; i < this.rows; i++) {\n if (this.matrix[parseInt(i.toString(), 10)].some(function (v) { return v === 1; })) {\n emptyTable = false;\n break;\n }\n }\n if (emptyTable) {\n rowIndex = this.current.length ? this.current[0] : 0;\n return [rowIndex, columnIndex];\n }\n }\n return this.inValid(val) || !validator(rowIndex, columnIndex, action) ?\n this.get(rowIndex, tmp, navigator, action, validator) : [rowIndex, columnIndex];\n };\n Matrix.prototype.first = function (vector, index, navigator, moveTo, action) {\n if (((index < 0 || index === vector.length) && this.inValid(vector[parseInt(index.toString(), 10)])\n && (action !== 'upArrow' && action !== 'downArrow')) || !vector.some(function (v) { return v === 1; })) {\n return null;\n }\n return !this.inValid(vector[parseInt(index.toString(), 10)]) ? index :\n this.first(vector, (['upArrow', 'downArrow', 'shiftUp', 'shiftDown'].indexOf(action) !== -1) ? moveTo ? 0 : ++index : index + navigator[1], navigator, false, action);\n };\n Matrix.prototype.select = function (rowIndex, columnIndex) {\n rowIndex = Math.max(0, Math.min(rowIndex, this.rows));\n columnIndex = Math.max(0, Math.min(columnIndex, this.matrix[parseInt(rowIndex.toString(), 10)].length - 1));\n this.current = [rowIndex, columnIndex];\n };\n Matrix.prototype.generate = function (rows, selector, isRowTemplate) {\n this.rows = rows.length - 1;\n this.matrix = [];\n for (var i = 0; i < rows.length; i++) {\n var cells = rows[parseInt(i.toString(), 10)].cells.filter(function (c) { return c.isSpanned !== true; });\n this.columns = Math.max(cells.length - 1, this.columns | 0);\n var incrementNumber = 0;\n for (var j = 0; j < cells.length; j++) {\n if (cells[parseInt(j.toString(), 10)].column && cells[parseInt(j.toString(), 10)].column.columns) {\n incrementNumber = this.columnsCount(cells[parseInt(j.toString(), 10)].column.columns, incrementNumber);\n }\n else {\n incrementNumber++;\n }\n this.set(i, j, rows[parseInt(i.toString(), 10)].visible === false ?\n false : selector(rows[parseInt(i.toString(), 10)], cells[parseInt(j.toString(), 10)], isRowTemplate));\n }\n this.columns = Math.max(incrementNumber - 1, this.columns | 0);\n }\n return this.matrix;\n };\n Matrix.prototype.columnsCount = function (rowColumns, currentColumnCount) {\n var columns = rowColumns;\n var incrementNumber = currentColumnCount;\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n incrementNumber = this.columnsCount(columns[parseInt(i.toString(), 10)].columns, incrementNumber);\n }\n else {\n incrementNumber++;\n }\n }\n return incrementNumber;\n };\n Matrix.prototype.inValid = function (value) {\n return value === 0 || value === undefined;\n };\n return Matrix;\n}());\nexport { Matrix };\n/**\n * @hidden\n */\nvar ContentFocus = /** @class */ (function () {\n function ContentFocus(parent) {\n var _this = this;\n this.matrix = new Matrix();\n this.lastIdxCell = false;\n this.parent = parent;\n this.keyActions = {\n 'rightArrow': [0, 1],\n 'tab': [0, 1],\n 'leftArrow': [0, -1],\n 'shiftTab': [0, -1],\n 'upArrow': [-1, 0],\n 'downArrow': [1, 0],\n 'shiftUp': [-1, 0],\n 'shiftDown': [1, 0],\n 'shiftRight': [0, 1],\n 'shiftLeft': [0, -1],\n 'enter': [1, 0],\n 'shiftEnter': [-1, 0]\n };\n this.indexesByKey = function (action) {\n var opt = {\n 'home': [_this.matrix.current[0], -1, 0, 1],\n 'end': [_this.matrix.current[0], _this.matrix.columns + 1, 0, -1],\n 'ctrlHome': [0, -1, 0, 1],\n 'ctrlEnd': [_this.matrix.rows, _this.matrix.columns + 1, 0, -1]\n };\n return opt[\"\" + action] || null;\n };\n }\n ContentFocus.prototype.getTable = function () {\n return (this.parent.getContentTable());\n };\n ContentFocus.prototype.onKeyPress = function (e) {\n var isMacLike = /(Mac)/i.test(navigator.platform);\n if (isMacLike && e.metaKey) {\n if (e.action === 'home') {\n e.action = 'ctrlHome';\n }\n else if (e.action === 'end') {\n e.action = 'ctrlEnd';\n }\n else if (['downArrow', 'upArrow', 'leftArrow', 'rightArrow'].indexOf(e.action) !== -1) {\n return;\n }\n }\n var navigators = this.keyActions[e.action];\n var current = this.getCurrentFromAction(e.action, navigators, e.action in this.keyActions, e);\n if (!current) {\n return;\n }\n if (((['tab', 'shiftTab'].indexOf(e.action) > -1 && this.matrix.current || []).toString() === current.toString())\n || (this.parent.allowPaging && !this.parent.pagerModule.pagerObj.checkPagerHasFocus()\n && this.matrix.current[0] === this.matrix.rows && ((this.parent.editSettings.mode === 'Batch'\n && this.parent.editSettings.allowAdding && e.keyCode === 40) || (e.keyCode === 40)))) {\n if (current.toString() === [this.matrix.rows, this.matrix.columns].toString() ||\n current.toString() === [0, 0].toString() || (this.matrix.current[0] === this.matrix.rows &&\n this.matrix.current.toString() === current.toString()) || (this.parent.allowGrouping &&\n this.parent.infiniteScrollSettings.enableCache && current.toString() === [0, 1].toString())) {\n return false;\n }\n else {\n current = this.editNextRow(current[0], current[1], e.action);\n }\n }\n this.matrix.select(current[0], current[1]);\n };\n ContentFocus.prototype.editNextRow = function (rowIndex, cellIndex, action) {\n var gObj = this.parent;\n var editNextRow = gObj.editSettings.allowNextRowEdit && (gObj.isEdit || gObj.isLastCellPrimaryKey);\n var visibleIndex = gObj.getColumnIndexByField(gObj.getVisibleColumns()[0].field);\n var row = this.getTable().rows[parseInt(rowIndex.toString(), 10)];\n var cell = gObj.editSettings.showAddNewRow && row.classList.contains('e-addedrow') ?\n (row.querySelectorAll('td:not(.e-editcell)'))[parseInt(cellIndex.toString(), 10)]\n : row.cells[parseInt(cellIndex.toString(), 10)];\n if (action === 'tab' && editNextRow) {\n rowIndex++;\n var index = (this.getTable().rows[parseInt(rowIndex.toString(), 10)].getElementsByClassName('e-indentcell').length +\n this.getTable().rows[parseInt(rowIndex.toString(), 10)].getElementsByClassName('e-detailrowcollapse').length);\n cellIndex = visibleIndex + index;\n }\n if (action === 'shiftTab' && editNextRow) {\n rowIndex--;\n cellIndex = gObj.getColumnIndexByField(gObj.getVisibleColumns()[gObj.getVisibleColumns().length - 1].field);\n }\n return !cell.classList.contains(literals.rowCell) && !cell.classList.contains('e-headercell') &&\n !cell.classList.contains('e-groupcaption') && !cell.classList.contains('e-filterbarcell') ?\n this.editNextRow(rowIndex, cellIndex, action) : [rowIndex, cellIndex];\n };\n ContentFocus.prototype.getCurrentFromAction = function (action, navigator, isPresent, e) {\n if (navigator === void 0) { navigator = [0, 0]; }\n if (!isPresent && !this.indexesByKey(action) || (this.matrix.current.length === 0)) {\n return null;\n }\n if (!this.shouldFocusChange(e)) {\n return this.matrix.current;\n }\n // eslint-disable-next-line\n var _a = this.indexesByKey(action) || this.matrix.current.concat(navigator), rowIndex = _a[0], cellIndex = _a[1], rN = _a[2], cN = _a[3];\n if (this.parent.allowGrouping && !isNullOrUndefined(this.parent.groupSettings.columns) && this.parent.groupSettings.columns.length && this.parent.aggregates.length && action === 'enter') {\n for (var i = rowIndex; i < this.matrix.matrix.length; i++) {\n var row = this.getTable().rows[i + 1];\n if (row && row.cells[parseInt(cellIndex.toString(), 10)] && row.cells[parseInt(cellIndex.toString(), 10)].classList.contains('e-rowcell')) {\n return [i + 1, cellIndex];\n }\n if (i === this.matrix.matrix.length - 1) {\n return [rowIndex, cellIndex];\n }\n }\n }\n if (action === 'ctrlEnd' || action === 'end') {\n var lastContentCellIndex = [this.matrix.matrix.length - 1,\n this.matrix.matrix[this.matrix.matrix.length - 1].length - 1];\n if (action === 'end') {\n lastContentCellIndex = [rowIndex, this.matrix.matrix[parseInt(rowIndex.toString(), 10)].length - 1];\n }\n if (this.matrix.matrix[lastContentCellIndex[0]][lastContentCellIndex[1]] === 0) {\n lastContentCellIndex = findCellIndex(this.matrix.matrix, lastContentCellIndex, false);\n }\n rowIndex = lastContentCellIndex[0];\n cellIndex = lastContentCellIndex[1] + 1;\n }\n var current = this.matrix.get(rowIndex, cellIndex, [rN, cN], action, this.validator());\n return current;\n };\n ContentFocus.prototype.onClick = function (e, force) {\n var target = e.target;\n this.target = target;\n target = (target.classList.contains(literals.rowCell) ? target : closest(target, 'td'));\n target = target ? target : closest(e.target, 'td.e-detailrowcollapse')\n || closest(e.target, 'td.e-detailrowexpand');\n target = closest(e.target, 'td.e-detailcell') ?\n isNullOrUndefined(closest(closest(e.target, '.e-grid'), 'td.e-detailcell')) ? null : target : target;\n target = target && closest(target, 'table').classList.contains(literals.table) ? target : null;\n if (!target) {\n return false;\n }\n var rowIdx = target.parentElement.rowIndex;\n if (this.parent.editSettings.showAddNewRow && parentsUntil(target, 'e-addedrow')) {\n rowIdx = parentsUntil(target, 'e-addedrow').rowIndex;\n }\n var _a = [rowIdx, target.cellIndex], rowIndex = _a[0], cellIndex = _a[1];\n var _b = this.matrix.current, oRowIndex = _b[0], oCellIndex = _b[1];\n var val = getValue(rowIndex + \".\" + cellIndex, this.matrix.matrix);\n if (this.matrix.inValid(val) || (!force && oRowIndex === rowIndex && oCellIndex === cellIndex) ||\n (!parentsUntil(e.target, literals.rowCell) && !parentsUntil(e.target, 'e-groupcaption')\n && !parentsUntil(e.target, 'e-recordpluscollapse') && !parentsUntil(e.target, 'e-recordplusexpand')\n && !parentsUntil(e.target, 'e-detailrowcollapse') && !parentsUntil(e.target, 'e-detailrowexpand')\n && !parentsUntil(e.target, 'e-templatecell'))) {\n return false;\n }\n this.matrix.select(rowIndex, cellIndex);\n };\n ContentFocus.prototype.getFocusInfo = function () {\n var info = {};\n var _a = this.matrix.current, _b = _a[0], rowIndex = _b === void 0 ? 0 : _b, _c = _a[1], cellIndex = _c === void 0 ? 0 : _c;\n this.matrix.current = [rowIndex, cellIndex];\n var row = this.getTable().rows[parseInt(rowIndex.toString(), 10)];\n info.element = !isNullOrUndefined(row) ? this.parent.editSettings.showAddNewRow && row.classList.contains('e-addedrow') ?\n (row.querySelectorAll('td:not(.e-editcell)'))[parseInt(cellIndex.toString(), 10)]\n : row.cells[parseInt(cellIndex.toString(), 10)] : null;\n if (!info.element) {\n return info;\n }\n info.elementToFocus = (!info.element.classList.contains('e-unboundcell') || (this.parent.editSettings.showAddNewRow &&\n info.element.classList.contains('e-unboundcell') && parentsUntil(info.element, 'e-addedrow'))) &&\n !info.element.classList.contains('e-detailcell') ? this.getFocusable(info.element) : info.element;\n info.elementToFocus = info.element.classList.contains('e-detailcell') && info.element.querySelector('.e-childgrid')\n ? info.element.querySelector('.e-childgrid') : info.elementToFocus;\n if (this.parent.editSettings.mode === 'Batch' && this.parent.isEdit && info.elementToFocus.tagName.toLowerCase() === 'input'\n && info.elementToFocus.classList.contains('e-dropdownlist')) {\n info.elementToFocus = info.elementToFocus.parentElement;\n }\n info.outline = true;\n info.uid = info.element.parentElement.getAttribute('data-uid');\n return info;\n };\n ContentFocus.prototype.getFocusable = function (element) {\n var query = 'button, [href], input:not([type=\"hidden\"]), select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n var isTemplate = !isNullOrUndefined(closest(element, '.e-templatecell'));\n if (this.parent.isEdit) {\n var commandCellQuery = this.parent.editSettings.showAddNewRow && parentsUntil(element, 'e-addedrow') ?\n ', button:not(.e-hide)' : '';\n query = 'input:not([type=\"hidden\"]), select:not([aria-hidden=\"true\"]), textarea' + commandCellQuery;\n }\n var child = [].slice.call(element.querySelectorAll(query));\n /* Select the first focusable child element\n * if no child found then select the cell itself.\n * if Grid is in editable state, check for editable control inside child.\n */\n return child.length ? isTemplate && child.length > 1 ? this.target ? this.target : element : child[0] : element;\n };\n ContentFocus.prototype.selector = function (row, cell, isRowTemplate) {\n var types = [CellType.Expand, CellType.GroupCaption, CellType.CaptionSummary, CellType.GroupSummary];\n return ((row.isDataRow && cell.visible && (cell.isDataCell || cell.isTemplate))\n || (row.isDataRow && cell.cellType === CellType.DetailExpand && isNullOrUndefined(cell.visible))\n || (!row.isDataRow && types.indexOf(cell.cellType) > -1\n && !((cell.cellType === CellType.GroupSummary || cell.cellType === CellType.CaptionSummary)\n && !(cell.isDataCell && cell.visible)))\n || (cell.column && cell.visible && cell.column.type === 'checkbox')\n || (cell.cellType === CellType.CommandColumn)\n || (row.isDataRow && isRowTemplate))\n && !(row.edit === 'delete' && row.isDirty);\n };\n ContentFocus.prototype.nextRowFocusValidate = function (index) {\n var lastIndex = index;\n for (var i = index, len = this.matrix.rows; i <= len; i++) {\n if (this.matrix.matrix[parseInt(index.toString(), 10)].indexOf(1) === -1) {\n index = index + 1;\n }\n else {\n return index;\n }\n }\n this.lastIdxCell = true;\n return lastIndex;\n };\n ContentFocus.prototype.previousRowFocusValidate = function (index) {\n var firstIndex = index;\n for (var i = index, len = 0; i >= len; i--) {\n if (this.matrix.matrix[parseInt(index.toString(), 10)].indexOf(1) === -1) {\n index = index - 1;\n if (index < 0) {\n this.lastIdxCell = true;\n return firstIndex;\n }\n }\n else {\n return index;\n }\n }\n return firstIndex;\n };\n ContentFocus.prototype.jump = function (action, current) {\n this.lastIdxCell = false;\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'shiftEnter';\n var headerSwap = (action === 'upArrow' || enterFrozen) && current[0] === 0;\n if (this.matrix.matrix[current[0]]) {\n if (action === 'tab' && this.matrix.matrix.length &&\n current[1] === this.matrix.matrix[current[0]].lastIndexOf(1) && this.matrix.matrix.length - 1 !== current[0]) {\n this.matrix.current[0] = this.nextRowFocusValidate(this.matrix.current[0] + 1);\n this.matrix.current[1] = -1;\n }\n }\n if (action === 'shiftTab' &&\n current[0] !== 0 && this.matrix.matrix[current[0]].indexOf(1) === current[1]) {\n this.matrix.current[0] = this.previousRowFocusValidate(this.matrix.current[0] - 1);\n this.matrix.current[1] = this.matrix.matrix[current[0]].length;\n }\n var isHeaderFocus = false;\n var row = parentsUntil(document.activeElement, 'e-addedrow') && this.parent.editSettings.showAddNewRow ?\n parentsUntil(document.activeElement, 'e-addedrow') : document.activeElement.parentElement;\n if ((this.parent.enableVirtualization || this.parent.infiniteScrollSettings.enableCache)\n && !isNullOrUndefined(row) && row.classList.contains(literals.row)) {\n var rowIndex = parseInt(row.getAttribute(literals.dataRowIndex), 10);\n isHeaderFocus = rowIndex > 0;\n }\n var info = {\n swap: !isHeaderFocus ? ((action === 'upArrow' || enterFrozen) && current[0] === 0) : false,\n toHeader: headerSwap\n };\n return info;\n };\n ContentFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current = [];\n if (action === 'rightArrow' || action === 'tab') {\n current[0] = previous[0];\n current[1] = -1;\n }\n if (action === 'downArrow' || action === 'enter') {\n current[0] = -1;\n current[1] = previous[1];\n }\n return current;\n };\n ContentFocus.prototype.generateRows = function (rows, optionals) {\n var _a;\n var matrix = optionals.matrix, handlerInstance = optionals.handlerInstance;\n var len = handlerInstance.matrix.matrix.length;\n var defaultLen = this.parent.allowFiltering && this.parent.filterSettings.type === 'FilterBar' ? len + 1 : len;\n handlerInstance.matrix.matrix = handlerInstance.matrix.matrix.slice(0, defaultLen); //Header matrix update.\n handlerInstance.matrix.rows = defaultLen;\n (_a = handlerInstance.matrix.matrix).push.apply(_a, matrix);\n handlerInstance.matrix.rows += matrix.length;\n };\n ContentFocus.prototype.getInfo = function (e) {\n var info = this.getFocusInfo();\n var _a = this.matrix.current, rIndex = _a[0], cIndex = _a[1];\n var isData = info.element.classList.contains(literals.rowCell);\n var isSelectable = isData || (e && e.action !== 'enter' && (info.element.classList.contains('e-detailrowcollapse')\n || info.element.classList.contains('e-detailrowexpand')));\n // eslint-disable-next-line\n var _b = [Math.min(parseInt(info.element.parentElement.getAttribute(literals.dataRowIndex), 10), rIndex),\n Math.min(parseInt(info.element.getAttribute(literals.dataColIndex), 10), cIndex)], rowIndex = _b[0], cellIndex = _b[1];\n if (this.parent.allowGrouping && this.parent.groupSettings.enableLazyLoading && isData) {\n rowIndex = this.parent.getDataRows().indexOf(info.element.parentElement);\n }\n if (this.parent.enableVirtualization && this.parent.groupSettings.columns.length) {\n rowIndex = rIndex;\n cellIndex = cIndex;\n }\n if (this.parent.editSettings.showAddNewRow && this.parent.editSettings.newRowPosition === 'Top' &&\n !this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling && e && e.action === 'downArrow') {\n rowIndex++;\n }\n return { isContent: true, isDataCell: isData, indexes: [rowIndex, cellIndex], isSelectable: isSelectable };\n };\n ContentFocus.prototype.validator = function () {\n var table = this.getTable();\n return function (rowIndex, cellIndex, action) {\n if (!isNullOrUndefined(table.rows[parseInt(rowIndex.toString(), 10)])) {\n var cell = void 0;\n cellIndex = table.querySelector('.e-emptyrow') ? 0 : cellIndex;\n if (table.rows[parseInt(rowIndex.toString(), 10)].cells[0].classList.contains('e-editcell')) {\n cell = table.rows[parseInt(rowIndex.toString(), 10)].cells[0].querySelectorAll('td')[parseInt(cellIndex.toString(), 10)];\n }\n else {\n cell = table.rows[parseInt(rowIndex.toString(), 10)].cells[parseInt(cellIndex.toString(), 10)];\n }\n var isCellWidth = cell.getBoundingClientRect().width !== 0;\n if (action === 'enter' || action === 'shiftEnter') {\n return isCellWidth && cell.classList.contains(literals.rowCell);\n }\n if ((action === 'shiftUp' || action === 'shiftDown') && cell.classList.contains(literals.rowCell)) {\n return isCellWidth;\n }\n else if (action !== 'shiftUp' && action !== 'shiftDown') {\n return isCellWidth;\n }\n }\n return false;\n };\n };\n ContentFocus.prototype.shouldFocusChange = function (e) {\n var _a = this.matrix.current, _b = _a[0], rIndex = _b === void 0 ? -1 : _b, _c = _a[1], cIndex = _c === void 0 ? -1 : _c;\n if (rIndex < 0 || cIndex < 0) {\n return true;\n }\n var cell = getValue(rIndex + \".cells.\" + cIndex, this.getTable().rows);\n if (!cell) {\n return true;\n }\n return e.action === 'enter' || e.action === 'shiftEnter' ?\n cell.classList.contains(literals.rowCell) && !cell.classList.contains('e-unboundcell')\n || cell.classList.contains('e-editedbatchcell') && !cell.classList.contains('e-detailcell') : true;\n };\n ContentFocus.prototype.getGridSeletion = function () {\n return this.parent.allowSelection && this.parent.selectionSettings.allowColumnSelection;\n };\n return ContentFocus;\n}());\nexport { ContentFocus };\n/**\n * @hidden\n */\nvar HeaderFocus = /** @class */ (function (_super) {\n __extends(HeaderFocus, _super);\n function HeaderFocus(parent) {\n return _super.call(this, parent) || this;\n }\n HeaderFocus.prototype.getTable = function () {\n return (this.parent.getHeaderTable());\n };\n HeaderFocus.prototype.onClick = function (e) {\n var target = e.target;\n this.target = target;\n target = (target.classList.contains('e-headercell') ? target : closest(target, 'th'));\n if (!target && (this.parent.frozenRows !== 0 || ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) &&\n this.parent.editSettings.showAddNewRow))) {\n target = (e.target.classList.contains(literals.rowCell) ? e.target :\n closest(e.target, 'td'));\n }\n if (e.target.classList.contains('e-columnheader') ||\n e.target.querySelector('.e-stackedheadercell')) {\n return false;\n }\n if (!target) {\n return;\n }\n var rowIdx = target.parentElement.rowIndex;\n if (this.parent.editSettings.showAddNewRow && parentsUntil(target, 'e-addedrow')) {\n rowIdx = parentsUntil(target, 'e-addedrow').rowIndex;\n }\n var _a = [rowIdx, target.cellIndex], rowIndex = _a[0], cellIndex = _a[1];\n var val = getValue(rowIndex + \".\" + cellIndex, this.matrix.matrix);\n if (this.matrix.inValid(val)) {\n return false;\n }\n this.matrix.select(rowIdx, target.cellIndex);\n };\n HeaderFocus.prototype.getFocusInfo = function () {\n var info = {};\n var _a = this.matrix.current, _b = _a[0], rowIndex = _b === void 0 ? 0 : _b, _c = _a[1], cellIndex = _c === void 0 ? 0 : _c;\n var row = this.getTable().rows[parseInt(rowIndex.toString(), 10)];\n info.element = !isNullOrUndefined(row) ? this.parent.editSettings.showAddNewRow && row.classList.contains('e-addedrow') ?\n (row.querySelectorAll('td:not(.e-editcell)'))[parseInt(cellIndex.toString(), 10)]\n : row.cells[parseInt(cellIndex.toString(), 10)] : null;\n if (!isNullOrUndefined(info.element)) {\n info.elementToFocus = this.getFocusable(info.element);\n info.outline = !info.element.classList.contains('e-filterbarcell');\n }\n return info;\n };\n HeaderFocus.prototype.selector = function (row, cell) {\n return (cell.visible && (cell.column.field !== undefined || cell.isTemplate || !isNullOrUndefined(cell.column.template)\n || !isNullOrUndefined(cell.column.commands))) || cell.column.type === 'checkbox' || cell.cellType === CellType.StackedHeader;\n };\n HeaderFocus.prototype.jump = function (action, current) {\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'enter';\n var isLastCell;\n var lastRow;\n if (this.parent.enableHeaderFocus && action === 'tab') {\n lastRow = this.matrix.matrix.length - 1 === current[0];\n isLastCell = current[1] === this.matrix.matrix[current[0]].lastIndexOf(1);\n if (isLastCell) {\n if (!lastRow) {\n this.matrix.current[0] = this.matrix.current[0] + 1;\n }\n else {\n this.matrix.current[0] = 0;\n }\n this.matrix.current[1] = -1;\n }\n }\n return {\n swap: ((action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1) ||\n (action === 'tab' && lastRow && isLastCell)\n };\n };\n HeaderFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current1 = [];\n if (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') {\n current1[0] = previous[0];\n current1[1] = -1;\n }\n if (action === 'upArrow' || action === 'shiftEnter') {\n current1[0] = this.matrix.matrix.length;\n current1[1] = previous[1];\n }\n return current1;\n };\n HeaderFocus.prototype.generateRows = function (rows) {\n var length = this.matrix.matrix.length;\n if (this.parent.allowFiltering && this.parent.filterSettings.type === 'FilterBar') {\n this.matrix.rows = ++this.matrix.rows;\n var cells = rows[0].cells;\n var incrementNumber = 0;\n for (var i = 0; i < cells.length; i++) {\n if (cells[parseInt(i.toString(), 10)].column && cells[parseInt(i.toString(), 10)].column.columns) {\n incrementNumber = this.checkFilterColumn(cells[parseInt(i.toString(), 10)].column.columns, length, incrementNumber);\n }\n else {\n this.matrix.set(length, incrementNumber, cells[parseInt(i.toString(), 10)].visible && cells[parseInt(i.toString(), 10)].column.allowFiltering !== false);\n incrementNumber++;\n }\n }\n }\n };\n HeaderFocus.prototype.checkFilterColumn = function (rowColumns, rowIndex, columnIndex) {\n var columns = rowColumns;\n var incrementNumber = columnIndex;\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n incrementNumber = this.checkFilterColumn(columns[parseInt(i.toString(), 10)].columns, rowIndex, incrementNumber);\n }\n else {\n this.matrix.set(rowIndex, incrementNumber, columns[parseInt(i.toString(), 10)].visible && columns[parseInt(i.toString(), 10)].allowFiltering !== false);\n incrementNumber++;\n }\n }\n return incrementNumber;\n };\n HeaderFocus.prototype.getInfo = function (e) {\n return extend(_super.prototype.getInfo.call(this, e), { isContent: false, isHeader: true });\n };\n HeaderFocus.prototype.validator = function () {\n return function () { return true; };\n };\n HeaderFocus.prototype.shouldFocusChange = function (e) {\n var _a = this.matrix.current, rowIndex = _a[0], columnIndex = _a[1];\n if (rowIndex < 0 || columnIndex < 0) {\n return true;\n }\n var cell = getValue(rowIndex + \".cells.\" + columnIndex, this.getTable().rows);\n if (!cell) {\n return true;\n }\n return e.action === 'enter' || e.action === 'altDownArrow' ? !cell.classList.contains('e-headercell') : true;\n };\n HeaderFocus.prototype.getHeaderType = function () {\n return 'HeaderFocus';\n };\n return HeaderFocus;\n}(ContentFocus));\nexport { HeaderFocus };\n/** @hidden */\nvar SearchBox = /** @class */ (function () {\n function SearchBox(searchBox, serviceLocator) {\n this.searchBox = searchBox;\n this.serviceLocator = serviceLocator;\n this.l10n = this.serviceLocator.getService('localization');\n }\n SearchBox.prototype.searchFocus = function (args) {\n args.target.parentElement.classList.add('e-input-focus');\n if (args.target.classList.contains('e-input') && args.target.classList.contains('e-search') && args.target.value) {\n var sIcon = args.target.parentElement.querySelector('.e-sicon');\n sIcon.classList.add('e-clear-icon');\n sIcon.setAttribute('title', this.l10n.getConstant('Clear'));\n (sIcon).style.cursor = 'pointer';\n }\n };\n SearchBox.prototype.searchBlur = function (args) {\n var relatedTarget = args.relatedTarget ? args.relatedTarget : null;\n if (relatedTarget && relatedTarget.classList.contains('e-sicon')) {\n if (relatedTarget.classList.contains('e-clear-icon')) {\n args.target.parentElement.classList.remove('e-input-focus');\n }\n }\n else {\n args.target.parentElement.classList.remove('e-input-focus');\n }\n if (args.target.classList.contains('e-search') && ((relatedTarget && !(relatedTarget.classList.contains('e-sicon e-clear-icon'))\n && !(relatedTarget.classList.contains('e-sicon'))) || isNullOrUndefined(relatedTarget))) {\n var sIcon = args.target.parentElement.querySelector('.e-sicon');\n sIcon.classList.remove('e-clear-icon');\n sIcon.removeAttribute('title');\n sIcon.style.cursor = 'default';\n }\n };\n SearchBox.prototype.wireEvent = function () {\n if (this.searchBox) {\n EventHandler.add(this.searchBox, 'focus', this.searchFocus, this);\n EventHandler.add(this.searchBox, 'blur', this.searchBlur, this);\n }\n };\n SearchBox.prototype.unWireEvent = function () {\n if (this.searchBox) {\n EventHandler.remove(this.searchBox, 'focus', this.searchFocus);\n EventHandler.remove(this.searchBox, 'blur', this.searchBlur);\n }\n };\n return SearchBox;\n}());\nexport { SearchBox };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the paging behavior of the Grid.\n */\nvar PageSettings = /** @class */ (function (_super) {\n __extends(PageSettings, _super);\n function PageSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(12)\n ], PageSettings.prototype, \"pageSize\", void 0);\n __decorate([\n Property(8)\n ], PageSettings.prototype, \"pageCount\", void 0);\n __decorate([\n Property(1)\n ], PageSettings.prototype, \"currentPage\", void 0);\n __decorate([\n Property()\n ], PageSettings.prototype, \"totalRecordsCount\", void 0);\n __decorate([\n Property(false)\n ], PageSettings.prototype, \"enableQueryString\", void 0);\n __decorate([\n Property(false)\n ], PageSettings.prototype, \"pageSizes\", void 0);\n __decorate([\n Property(null)\n ], PageSettings.prototype, \"template\", void 0);\n return PageSettings;\n}(ChildProperty));\nexport { PageSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the column chooser behavior of the Grid.\n */\nvar ColumnChooserSettings = /** @class */ (function (_super) {\n __extends(ColumnChooserSettings, _super);\n function ColumnChooserSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('startsWith')\n ], ColumnChooserSettings.prototype, \"operator\", void 0);\n __decorate([\n Property(false)\n ], ColumnChooserSettings.prototype, \"ignoreAccent\", void 0);\n return ColumnChooserSettings;\n}(ChildProperty));\nexport { ColumnChooserSettings };\n","import { Browser, EventHandler, createElement } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, isUndefined, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { remove, closest, select } from '@syncfusion/ej2-base';\nimport { Query, DataManager } from '@syncfusion/ej2-data';\nimport { setCssInGridPopUp, getPosition, isGroupAdaptive, addRemoveActiveClasses, removeAddCboxClasses, getCellFromRow } from '../base/util';\nimport { getCellsByTableName, parentsUntil, getScrollBarWidth } from '../base/util';\nimport * as events from '../base/constant';\nimport { RenderType } from '../base/enum';\nimport { iterateExtend, setChecked, isComplexField, getObject } from '../base/util';\nimport { addRemoveEventListener } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * The `Selection` module is used to handle cell and row selection.\n */\nvar Selection = /** @class */ (function () {\n /**\n * Constructor for the Grid selection module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {SelectionSettings} selectionSettings - specifies the selectionsettings\n * @param {ServiceLocator} locator - specifies the ServiceLocator\n * @hidden\n */\n function Selection(parent, selectionSettings, locator) {\n //Internal letiables\n /**\n * @hidden\n */\n this.selectedRowIndexes = [];\n /**\n * @hidden\n */\n this.selectedRowCellIndexes = [];\n /**\n * @hidden\n */\n this.selectedRecords = [];\n /**\n * @hidden\n */\n this.preventFocus = false;\n /**\n * @hidden\n */\n this.selectedColumnsIndexes = [];\n this.checkBoxState = false;\n this.isMultiShiftRequest = false;\n this.isMultiCtrlRequest = false;\n this.isMultiCtrlRequestCell = false;\n this.enableSelectMultiTouch = false;\n this.clearRowCheck = false;\n this.selectRowCheck = false;\n /**\n * @hidden\n */\n this.selectedRowState = {};\n this.unSelectedRowState = {};\n this.totalRecordsCount = 0;\n this.chkAllCollec = [];\n this.isCheckedOnAdd = false;\n this.persistSelectedData = [];\n this.deSelectedData = [];\n this.isHdrSelectAllClicked = false;\n this.needColumnSelection = false;\n this.isCancelDeSelect = false;\n this.isPreventCellSelect = false;\n this.disableUI = false;\n this.isPersisted = false;\n this.cmdKeyPressed = false;\n this.cellselected = false;\n this.isMultiSelection = false;\n this.isAddRowsToSelection = false;\n this.initialRowSelection = false;\n this.isPrevRowSelection = false;\n this.isKeyAction = false;\n this.isRowDragSelected = false;\n this.isPartialSelection = false;\n this.rmtHdrChkbxClicked = false;\n this.isCheckboxReset = false;\n this.isRowDeselect = false;\n /**\n * @hidden\n */\n this.autoFillRLselection = true;\n this.bottom = '0 0 2px 0';\n this.top = '2px 0 0 0';\n /* eslint-disable */\n this.right_bottom = '0 2px 2px 0';\n this.bottom_left = '0 0 2px 2px';\n this.top_right = '2px 2px 0 0';\n this.top_left = '2px 0 0 2px';\n this.top_bottom = '2px 0 2px 0';\n this.top_right_bottom = '2px 2px 2px 0';\n this.top_bottom_left = '2px 0 2px 2px';\n this.top_right_left = '2px 2px 0 2px';\n this.right_bottom_left = '0 2px 2px 2px';\n this.all_border = '2px';\n this.parent = parent;\n this.selectionSettings = selectionSettings;\n this.factory = locator.getService('rendererFactory');\n this.focus = locator.getService('focus');\n this.addEventListener();\n this.wireEvents();\n }\n Selection.prototype.initializeSelection = function () {\n this.parent.log('selection_key_missing');\n this.render();\n };\n /**\n * The function used to trigger onActionBegin\n *\n * @param {Object} args - specifies the args\n * @param {string} type - specifies the type\n * @returns {void}\n * @hidden\n */\n Selection.prototype.onActionBegin = function (args, type) {\n this.parent.trigger(type, this.fDataUpdate(args));\n };\n Selection.prototype.fDataUpdate = function (args) {\n if (!this.isMultiSelection && (!isNullOrUndefined(args.cellIndex) || !isNullOrUndefined(args.rowIndex))) {\n var rowObj = this.getRowObj(isNullOrUndefined(args.rowIndex) ? isNullOrUndefined(args.cellIndex) ?\n this.currentIndex : args.cellIndex.rowIndex : args.rowIndex);\n args.foreignKeyData = rowObj.foreignKeyData;\n }\n return args;\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {Object} args - specifies the args\n * @param {string} type - specifies the type\n * @returns {void}\n * @hidden\n */\n Selection.prototype.onActionComplete = function (args, type) {\n this.parent.trigger(type, this.fDataUpdate(args));\n this.isMultiSelection = false;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Selection.prototype.getModuleName = function () {\n return 'selection';\n };\n /**\n * To destroy the selection\n *\n * @returns {void}\n * @hidden\n */\n Selection.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.hidePopUp();\n this.clearSelection();\n this.destroyAutoFillElements();\n this.removeEventListener();\n this.unWireEvents();\n EventHandler.remove(this.parent.getContent(), 'mousedown', this.mouseDownHandler);\n EventHandler.remove(this.parent.getHeaderContent(), 'mousedown', this.mouseDownHandler);\n };\n Selection.prototype.isEditing = function () {\n return (this.parent.editSettings.mode === 'Normal' || (this.parent.editSettings.mode === 'Batch' && this.parent.editModule &&\n this.parent.editModule.formObj && !this.parent.editModule.formObj.validate())) &&\n (this.parent.isEdit && !this.parent.editSettings.showAddNewRow) && !this.parent.isPersistSelection;\n };\n Selection.prototype.getCurrentBatchRecordChanges = function () {\n var gObj = this.parent;\n if (gObj.editSettings.mode === 'Batch' && gObj.editModule) {\n var currentRecords = iterateExtend(this.parent.getCurrentViewRecords());\n currentRecords = gObj.editSettings.newRowPosition === 'Bottom' ?\n currentRecords.concat(this.parent.editModule.getBatchChanges()[literals.addedRecords]) :\n this.parent.editModule.getBatchChanges()[literals.addedRecords].concat(currentRecords);\n var deletedRecords = this.parent.editModule.getBatchChanges()[literals.deletedRecords];\n var primaryKey = this.parent.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < (deletedRecords.length); i++) {\n for (var j = 0; j < currentRecords.length; j++) {\n if (deletedRecords[parseInt(i.toString(), 10)][\"\" + primaryKey] === currentRecords[parseInt(j.toString(), 10)][\"\" + primaryKey]) {\n currentRecords.splice(j, 1);\n break;\n }\n }\n }\n return currentRecords;\n }\n else if (this.parent.enableVirtualization && this.parent.groupSettings.columns.length && !this.parent.isPersistSelection) {\n var selectedGroupedData = gObj.getCurrentViewRecords().filter(function (col) { return col['key'] === undefined; });\n return selectedGroupedData;\n }\n else {\n return gObj.getCurrentViewRecords();\n }\n };\n /**\n * Selects a row by the given index.\n *\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n Selection.prototype.selectRow = function (index, isToggle) {\n if (this.selectedRowIndexes.length && this.selectionSettings.enableSimpleMultiRowSelection) {\n this.addRowsToSelection([index]);\n return;\n }\n var gObj = this.parent;\n var selectedRow = gObj.getRowByIndex(index);\n var rowObj = selectedRow && gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid'));\n if (this.isPartialSelection && rowObj && rowObj.isDataRow && !rowObj.isSelectable) {\n return;\n }\n var selectData;\n var isRemoved = false;\n if (gObj.enableVirtualization && index > -1) {\n var e = { selectedIndex: index, isAvailable: true };\n this.parent.notify(events.selectVirtualRow, e);\n if (selectedRow && (gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid')))) {\n selectData = gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid')).data;\n }\n else {\n if (e.isAvailable && !gObj.selectionSettings.persistSelection) {\n var prevSelectedData = this.parent.getSelectedRecords();\n if (prevSelectedData.length > 0) {\n this.clearRowSelection();\n }\n }\n return;\n }\n }\n else {\n selectData = this.getRowObj(index).data;\n }\n if (!this.isRowType() || !selectedRow || this.isEditing()) {\n // if (this.isEditing()) {\n // gObj.selectedRowIndex = index;\n // }\n return;\n }\n var isRowSelected = selectedRow.hasAttribute('aria-selected');\n this.activeTarget();\n if (!isToggle || !this.selectedRowIndexes.length) {\n isToggle = false;\n }\n else {\n var isCheckboxModeResetOnRowClick = this.selectionSettings.checkboxMode === 'ResetOnRowClick';\n var isSelectionTypeMultiple = !this.parent.isCheckBoxSelection && this.selectionSettings.type === 'Multiple';\n if ((!isCheckboxModeResetOnRowClick && !isSelectionTypeMultiple) ||\n (this.selectedRowIndexes.length === 1 && (isCheckboxModeResetOnRowClick || isSelectionTypeMultiple))) {\n isToggle = !(this.isKeyAction && this.parent.isCheckBoxSelection) ? this.selectedRowIndexes.indexOf(index) !== -1 : false;\n }\n else {\n isToggle = false;\n }\n }\n this.isKeyAction = false;\n var args;\n var can = 'cancel';\n if (!isToggle) {\n args = {\n data: selectData, rowIndex: index, isCtrlPressed: this.isMultiCtrlRequest,\n isShiftPressed: this.isMultiShiftRequest, row: selectedRow,\n previousRow: gObj.getRowByIndex(this.prevRowIndex),\n previousRowIndex: this.prevRowIndex, target: this.actualTarget, cancel: false, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked\n };\n this.parent.trigger(events.rowSelecting, this.fDataUpdate(args), this.rowSelectingCallBack(args, isToggle, index, selectData, isRemoved, isRowSelected, can));\n }\n else {\n if (this.selectionSettings.checkboxMode !== 'ResetOnRowClick' && this.selectionSettings.persistSelection) {\n this.rowDeselect(events.rowDeselecting, [rowObj.index], [rowObj.data], [selectedRow], [rowObj.foreignKeyData], this.actualTarget);\n if (this.isCancelDeSelect) {\n return;\n }\n if (!this.parent.isCheckBoxSelection) {\n this.selectedRowIndexes = [];\n this.selectedRecords = [];\n this.isRowSelected = false;\n this.selectRowIndex(-1);\n }\n this.rowDeselect(events.rowDeselected, [rowObj.index], [rowObj.data], [selectedRow], [rowObj.foreignKeyData], this.actualTarget, undefined, undefined, undefined);\n }\n this.rowSelectingCallBack(args, isToggle, index, selectData, isRemoved, isRowSelected, can)(args);\n }\n };\n Selection.prototype.rowSelectingCallBack = function (args, isToggle, index, selectData, isRemoved, isRowSelected, can) {\n var _this = this;\n return function (args) {\n if (!isNullOrUndefined(args) && args[\"\" + can] === true) {\n _this.disableInteracted();\n return;\n }\n _this.index = index;\n _this.toggle = isToggle;\n _this.data = selectData;\n _this.removed = isRemoved;\n if (isRowSelected && _this.selectionSettings.persistSelection && !(_this.selectionSettings.checkboxMode === 'ResetOnRowClick')) {\n _this.clearSelectedRow(index);\n _this.selectRowCallBack();\n }\n else if (!isRowSelected && _this.selectionSettings.persistSelection &&\n _this.selectionSettings.checkboxMode !== 'ResetOnRowClick') {\n _this.selectRowCallBack();\n }\n if (_this.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n _this.isCheckboxReset = true;\n _this.clearSelection();\n }\n if (!_this.selectionSettings.persistSelection || _this.selectionSettings.checkboxMode === 'ResetOnRowClick' ||\n (!_this.parent.isCheckBoxSelection && _this.selectionSettings.persistSelection)) {\n _this.selectRowCheck = true;\n _this.clearRow();\n }\n };\n };\n Selection.prototype.selectRowCallBack = function () {\n var gObj = this.parent;\n var args;\n var index = this.index;\n var isToggle = this.toggle;\n var selectData = this.data;\n var isRemoved = this.removed;\n var selectedRow = gObj.getRowByIndex(index);\n if (!isToggle && !isRemoved) {\n if (this.selectedRowIndexes.indexOf(index) <= -1) {\n this.updateRowSelection(selectedRow, index);\n }\n this.selectRowIndex(index);\n }\n if (!isToggle) {\n args = {\n data: selectData, rowIndex: index,\n row: selectedRow, previousRow: gObj.getRowByIndex(this.prevRowIndex),\n previousRowIndex: this.prevRowIndex, target: this.actualTarget, isInteracted: this.isInteracted,\n isHeaderCheckBoxClicked: this.isHeaderCheckboxClicked, rowIndexes: index\n };\n this.onActionComplete(args, events.rowSelected);\n }\n this.isInteracted = false;\n this.updateRowProps(index);\n };\n /**\n * Selects a range of rows from start and end row indexes.\n *\n * @param {number} startIndex - Specifies the start row index.\n * @param {number} endIndex - Specifies the end row index.\n * @returns {void}\n */\n Selection.prototype.selectRowsByRange = function (startIndex, endIndex) {\n this.selectRows(this.getCollectionFromIndexes(startIndex, endIndex));\n this.selectRowIndex(endIndex);\n };\n Selection.prototype.selectedDataUpdate = function (selectedData, foreignKeyData, selectedRows, rowIndexes, selectableRowIndex) {\n for (var i = 0, len = rowIndexes.length; i < len; i++) {\n var currentRow = this.parent.getDataRows()[rowIndexes[parseInt(i.toString(), 10)]];\n if (this.parent.enableVirtualization) {\n currentRow = this.parent.getRowByIndex(rowIndexes[parseInt(i.toString(), 10)]);\n }\n var rowObj = this.getRowObj(currentRow);\n if (rowObj && rowObj.isDataRow && rowObj.isSelectable) {\n selectedData.push(rowObj.data);\n selectedRows.push(currentRow);\n foreignKeyData.push(rowObj.foreignKeyData);\n }\n else {\n if (this.isPartialSelection && selectableRowIndex) {\n selectableRowIndex.splice(selectableRowIndex.indexOf(rowIndexes[parseInt(i.toString(), 10)]), 1);\n }\n }\n }\n };\n /**\n * Selects a collection of rows by index.\n *\n * @param {number[]} rowIndexes - Specifies an array of row indexes.\n * @returns {void}\n */\n Selection.prototype.selectRows = function (rowIndexes) {\n var _this = this;\n var gObj = this.parent;\n var selectableRowIndex = rowIndexes.slice();\n var rowIndex = !this.isSingleSel() ? rowIndexes[0] : rowIndexes[rowIndexes.length - 1];\n this.isMultiSelection = true;\n var selectedRows = [];\n var foreignKeyData = [];\n var can = 'cancel';\n var selectedData = [];\n if (!this.isRowType() || this.isEditing()) {\n return;\n }\n this.selectedDataUpdate(selectedData, foreignKeyData, selectedRows, rowIndexes, selectableRowIndex);\n this.activeTarget();\n var args = {\n cancel: false,\n rowIndexes: selectableRowIndex, row: selectedRows, rowIndex: rowIndex, target: this.actualTarget,\n prevRow: gObj.getRows()[this.prevRowIndex], previousRowIndex: this.prevRowIndex,\n isInteracted: this.isInteracted, isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n data: selectedData, isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData\n };\n this.parent.trigger(events.rowSelecting, this.fDataUpdate(args), function (args) {\n if (!isNullOrUndefined(args) && args[\"\" + can] === true) {\n _this.disableInteracted();\n return;\n }\n if (!(gObj.allowRowDragAndDrop && _this.isDragged && _this.selectionSettings.persistSelection)) {\n _this.clearRow();\n }\n _this.selectRowIndex(selectableRowIndex.slice(-1)[0]);\n var selectRowFn = function (index, preventFocus) {\n _this.updateRowSelection(gObj.getRowByIndex(index), index, preventFocus);\n _this.updateRowProps(rowIndex);\n };\n if (!_this.isSingleSel()) {\n for (var _i = 0, selectableRowIndex_1 = selectableRowIndex; _i < selectableRowIndex_1.length; _i++) {\n var rowIdx = selectableRowIndex_1[_i];\n selectRowFn(rowIdx, gObj.enableVirtualization ? true : false);\n }\n }\n else {\n selectRowFn(rowIndex);\n }\n args = {\n rowIndexes: selectableRowIndex, row: selectedRows, rowIndex: rowIndex, target: _this.actualTarget,\n prevRow: gObj.getRows()[_this.prevRowIndex], previousRowIndex: _this.prevRowIndex,\n data: _this.getSelectedRecords(), isInteracted: _this.isInteracted,\n isHeaderCheckboxClicked: _this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData\n };\n if (_this.isRowSelected) {\n _this.onActionComplete(args, events.rowSelected);\n }\n _this.isInteracted = false;\n });\n };\n /**\n * Select rows with existing row selection by passing row indexes.\n *\n * @param {number} rowIndexes - Specifies the row indexes.\n * @returns {void}\n * @hidden\n */\n Selection.prototype.addRowsToSelection = function (rowIndexes) {\n var gObj = this.parent;\n var can = 'cancel';\n var target = this.target;\n this.isMultiSelection = true;\n var selectedRows = [];\n var foreignKeyData = [];\n var selectedData = [];\n var indexes = gObj.getSelectedRowIndexes().concat(rowIndexes);\n var selectedRow = !this.isSingleSel() ? gObj.getRowByIndex(rowIndexes[0]) :\n gObj.getRowByIndex(rowIndexes[rowIndexes.length - 1]);\n if ((!this.isRowType() || this.isEditing()) && !this.selectionSettings.checkboxOnly) {\n return;\n }\n var args;\n var checkboxColumn = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (this.isMultiCtrlRequest && !checkboxColumn.length) {\n this.selectedDataUpdate(selectedData, foreignKeyData, selectedRows, indexes);\n }\n for (var _i = 0, rowIndexes_1 = rowIndexes; _i < rowIndexes_1.length; _i++) {\n var rowIndex = rowIndexes_1[_i];\n var rowObj = this.getRowObj(rowIndex);\n var isUnSelected = this.selectedRowIndexes.indexOf(rowIndex) > -1;\n if (this.isPartialSelection && rowObj && rowObj.isDataRow && !rowObj.isSelectable) {\n continue;\n }\n this.selectRowIndex(rowIndex);\n if (isUnSelected && ((checkboxColumn.length ? true : this.selectionSettings.enableToggle) || this.isMultiCtrlRequest)) {\n this.isAddRowsToSelection = true;\n this.rowDeselect(events.rowDeselecting, [rowIndex], [rowObj.data], [selectedRow], [rowObj.foreignKeyData], target);\n if (this.isCancelDeSelect) {\n return;\n }\n this.selectedRowIndexes.splice(this.selectedRowIndexes.indexOf(rowIndex), 1);\n this.selectedRecords.splice(this.selectedRecords.indexOf(selectedRow), 1);\n this.selectRowIndex(this.selectedRowIndexes.length ? this.selectedRowIndexes[this.selectedRowIndexes.length - 1] : -1);\n selectedRow.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedRow, false, null, 'e-selectionbackground', 'e-active');\n this.rowDeselect(events.rowDeselected, [rowIndex], [rowObj.data], [selectedRow], [rowObj.foreignKeyData], target, undefined, undefined, undefined);\n this.isInteracted = false;\n this.isMultiSelection = false;\n this.isAddRowsToSelection = false;\n this.isHdrSelectAllClicked = false;\n }\n else {\n this.activeTarget();\n args = {\n cancel: false,\n data: selectedData.length ? selectedData : rowObj.data, rowIndex: rowIndex, row: selectedRows.length ? selectedRows :\n selectedRow, target: this.actualTarget, prevRow: gObj.getRows()[this.prevRowIndex],\n previousRowIndex: this.prevRowIndex, isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n foreignKeyData: foreignKeyData.length ? foreignKeyData : rowObj.foreignKeyData, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n this.parent.trigger(events.rowSelecting, this.fDataUpdate(args));\n if (!isNullOrUndefined(args) && args[\"\" + can] === true) {\n this.disableInteracted();\n return;\n }\n if (this.isSingleSel()) {\n this.clearRow();\n }\n this.updateRowSelection(selectedRow, rowIndex);\n }\n if (!isUnSelected) {\n args = {\n data: selectedData.length ? selectedData : rowObj.data, rowIndex: rowIndex, row: selectedRows.length ? selectedRows :\n selectedRow, target: this.actualTarget, prevRow: gObj.getRows()[this.prevRowIndex],\n previousRowIndex: this.prevRowIndex, foreignKeyData: foreignKeyData.length ? foreignKeyData : rowObj.foreignKeyData,\n isInteracted: this.isInteracted, isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n this.onActionComplete(args, events.rowSelected);\n }\n this.isInteracted = false;\n this.updateRowProps(rowIndex);\n if (this.isSingleSel()) {\n break;\n }\n }\n };\n Selection.prototype.getCollectionFromIndexes = function (startIndex, endIndex) {\n var indexes = [];\n // eslint-disable-next-line prefer-const\n var _a = (startIndex <= endIndex) ?\n { i: startIndex, max: endIndex } : { i: endIndex, max: startIndex }, i = _a.i, max = _a.max;\n for (; i <= max; i++) {\n indexes.push(i);\n }\n if (startIndex > endIndex) {\n indexes.reverse();\n }\n return indexes;\n };\n Selection.prototype.clearRow = function () {\n this.clearRowCheck = true;\n this.clearRowSelection();\n };\n Selection.prototype.clearRowCallBack = function () {\n if (this.isCancelDeSelect && this.parent.checkAllRows !== 'Check') {\n return;\n }\n this.selectedRowIndexes = [];\n this.selectedRecords = [];\n this.selectRowIndex(-1);\n if (this.isSingleSel() && this.parent.isPersistSelection) {\n this.selectedRowState = {};\n }\n };\n Selection.prototype.clearSelectedRow = function (index) {\n if (this.toggle) {\n var selectedEle = this.parent.getRowByIndex(index);\n if (!this.disableUI) {\n selectedEle.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedEle, false, true, 'e-selectionbackground', 'e-active');\n }\n this.removed = true;\n this.updatePersistCollection(selectedEle, false);\n this.updateCheckBoxes(selectedEle);\n this.selectedRowIndexes.splice(this.selectedRowIndexes.indexOf(index), 1);\n this.selectedRecords.splice(this.selectedRecords.indexOf(this.parent.getRowByIndex(index)), 1);\n }\n };\n Selection.prototype.updateRowProps = function (startIndex) {\n this.prevRowIndex = startIndex;\n this.isRowSelected = this.selectedRowIndexes.length && true;\n };\n Selection.prototype.getPkValue = function (pkField, data) {\n return pkField ? isComplexField(pkField) ? getObject(pkField, data) : data[\"\" + pkField] : data[\"\" + pkField];\n };\n Selection.prototype.updatePersistCollection = function (selectedRow, chkState) {\n var _this = this;\n if ((this.parent.isPersistSelection || this.parent.selectionSettings.persistSelection &&\n this.parent.getPrimaryKeyFieldNames().length > 0) && !isNullOrUndefined(selectedRow)) {\n if (!this.parent.isPersistSelection) {\n this.ensureCheckboxFieldSelection();\n }\n var rowObj = this.getRowObj(selectedRow);\n var pKey_1 = rowObj.data ? this.getPkValue(this.primaryKey, rowObj.data) : null;\n if (pKey_1 === null) {\n return;\n }\n rowObj.isSelected = chkState;\n if ((chkState && !this.isPartialSelection) || (this.isPartialSelection && rowObj.isSelectable && rowObj.isSelected)) {\n this.selectedRowState[\"\" + pKey_1] = chkState;\n delete (this.unSelectedRowState[\"\" + pKey_1]);\n if (!this.persistSelectedData.some(function (data) { return _this.getPkValue(_this.primaryKey, data) === pKey_1; })) {\n this.persistSelectedData.push(rowObj.data);\n }\n }\n else {\n this.updatePersistDelete(pKey_1);\n }\n }\n };\n Selection.prototype.updatePersistDelete = function (pKey, isPartialSelection) {\n var _this = this;\n delete (this.selectedRowState[\"\" + pKey]);\n if (this.rmtHdrChkbxClicked) {\n this.unSelectedRowState[\"\" + pKey] = true;\n }\n var index;\n var isPresent = this.persistSelectedData.some(function (data, i) {\n index = i;\n return _this.getPkValue(_this.primaryKey, data) === pKey;\n });\n if (isPresent) {\n this.persistSelectedData.splice(index, 1);\n if (isPartialSelection) {\n this.parent.partialSelectedRecords.splice(index, 1);\n }\n }\n };\n Selection.prototype.updateCheckBoxes = function (row, chkState, rowIndex) {\n if (!isNullOrUndefined(row)) {\n var chkBox = row.querySelector('.e-checkselect');\n if (!isNullOrUndefined(chkBox)) {\n removeAddCboxClasses(chkBox.nextElementSibling, chkState);\n setChecked(chkBox, chkState);\n if (isNullOrUndefined(this.checkedTarget) || (!isNullOrUndefined(this.checkedTarget)\n && !this.checkedTarget.classList.contains('e-checkselectall'))) {\n this.setCheckAllState(rowIndex);\n }\n }\n }\n };\n Selection.prototype.updateRowSelection = function (selectedRow, startIndex, preventFocus) {\n if (!selectedRow) {\n return;\n }\n if (this.selectedRowIndexes.indexOf(startIndex) === -1) {\n this.selectedRowIndexes.push(startIndex);\n this.selectedRecords.push(selectedRow);\n }\n selectedRow.setAttribute('aria-selected', 'true');\n this.updatePersistCollection(selectedRow, true);\n this.updateCheckBoxes(selectedRow, true);\n this.addRemoveClassesForRow(selectedRow, true, null, 'e-selectionbackground', 'e-active');\n if (!this.preventFocus) {\n var target = this.focus.getPrevIndexes().cellIndex ?\n selectedRow.cells[this.focus.getPrevIndexes().cellIndex] :\n selectedRow.querySelector('.e-selectionbackground:not(.e-hide):not(.e-detailrowcollapse):not(.e-detailrowexpand)');\n if (this.parent.contextMenuModule && this.mouseButton === 2) {\n target = this.parent.contextMenuModule.cell;\n }\n if (!target || preventFocus) {\n return;\n }\n this.focus.onClick({ target: target }, true);\n }\n };\n /**\n * Deselects the currently selected rows and cells.\n *\n * @returns {void}\n */\n Selection.prototype.clearSelection = function () {\n this.checkSelectAllClicked = true;\n if (this.selectionSettings.persistSelection && this.persistSelectedData.length) {\n this.deSelectedData = iterateExtend(this.persistSelectedData);\n }\n if (!this.parent.isPersistSelection || (this.parent.isPersistSelection && !this.parent.isEdit) ||\n (!isNullOrUndefined(this.checkedTarget) && this.checkedTarget.classList.contains('e-checkselectall'))) {\n var span = this.parent.element.querySelector('.e-gridpopup').querySelector('span');\n if (span.classList.contains('e-rowselect')) {\n span.classList.remove('e-spanclicked');\n }\n if (this.parent.isPersistSelection) {\n this.persistSelectedData = [];\n this.selectedRowState = {};\n }\n this.clearRowSelection();\n this.clearCellSelection();\n this.clearColumnSelection();\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n this.prevECIdxs = undefined;\n this.enableSelectMultiTouch = false;\n this.isInteracted = false;\n this.checkSelectAllClicked = false;\n this.isHdrSelectAllClicked = false;\n }\n };\n /**\n * Deselects the currently selected rows.\n *\n * @returns {void}\n */\n Selection.prototype.clearRowSelection = function () {\n var _this = this;\n if (this.isRowSelected) {\n var rows_1 = this.parent.getDataRows();\n var data_1 = [];\n var row_1 = [];\n var rowIndex_1 = [];\n var foreignKeyData_1 = [];\n var target_1 = this.target;\n this.isRowDeselect = true;\n for (var i = 0, len = this.selectedRowIndexes.length; i < len; i++) {\n var currentRow = this.parent.editSettings.mode === 'Batch' ?\n this.parent.getRows()[this.selectedRowIndexes[parseInt(i.toString(), 10)]]\n : this.parent.getDataRows()[this.selectedRowIndexes[parseInt(i.toString(), 10)]];\n var rowObj = this.getRowObj(currentRow);\n if (rowObj) {\n data_1.push(rowObj.data);\n row_1.push(currentRow);\n rowIndex_1.push(this.selectedRowIndexes[parseInt(i.toString(), 10)]);\n foreignKeyData_1.push(rowObj.foreignKeyData);\n }\n }\n if (this.selectionSettings.persistSelection && this.selectionSettings.checkboxMode !== 'ResetOnRowClick') {\n this.isRowClicked = this.checkSelectAllClicked ? true : false;\n }\n this.rowDeselect(events.rowDeselecting, rowIndex_1, data_1, row_1, foreignKeyData_1, target_1, null, function () {\n if (_this.isCancelDeSelect && (_this.isRowClicked || _this.checkSelectAllClicked || (_this.isInteracted &&\n !_this.parent.isPersistSelection))) {\n if (_this.parent.isPersistSelection) {\n if (_this.getCheckAllStatus(_this.parent.element.querySelector('.e-checkselectall')) === 'Intermediate') {\n for (var i = 0; i < _this.selectedRecords.length; i++) {\n _this.updatePersistCollection(_this.selectedRecords[parseInt(i.toString(), 10)], true);\n }\n }\n else {\n _this.parent.checkAllRows = 'Check';\n _this.updatePersistSelectedData(true);\n }\n }\n if (_this.clearRowCheck) {\n _this.clearRowCallBack();\n _this.clearRowCheck = false;\n if (_this.selectRowCheck) {\n _this.selectRowCallBack();\n _this.selectRowCheck = false;\n }\n }\n return;\n }\n var element = [].slice.call(rows_1.filter(function (record) { return record.hasAttribute('aria-selected'); }));\n for (var j = 0; j < element.length; j++) {\n if (!_this.disableUI) {\n element[parseInt(j.toString(), 10)].removeAttribute('aria-selected');\n _this.addRemoveClassesForRow(element[parseInt(j.toString(), 10)], false, true, 'e-selectionbackground', 'e-active');\n }\n // tslint:disable-next-line:align\n if (!_this.isPrevRowSelection) {\n _this.updatePersistCollection(element[parseInt(j.toString(), 10)], false);\n }\n _this.updateCheckBoxes(element[parseInt(j.toString(), 10)]);\n }\n _this.selectedRowIndexes = [];\n _this.selectedRecords = [];\n _this.isRowSelected = false;\n _this.selectRowIndex(-1);\n _this.isPrevRowSelection = false;\n _this.rowDeselect(events.rowDeselected, rowIndex_1, data_1, row_1, foreignKeyData_1, target_1, null, undefined, null);\n if (_this.clearRowCheck) {\n _this.clearRowCallBack();\n _this.clearRowCheck = false;\n if (_this.selectRowCheck) {\n _this.selectRowCallBack();\n _this.selectRowCheck = false;\n }\n }\n }, null);\n this.isRowDeselect = false;\n }\n else {\n if (this.clearRowCheck) {\n this.clearRowCallBack();\n this.clearRowCheck = false;\n if (this.selectRowCheck) {\n this.selectRowCallBack();\n this.selectRowCheck = false;\n }\n }\n }\n };\n Selection.prototype.rowDeselect = function (type, rowIndex, data, row, \n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n foreignKeyData, target, mRow, rowDeselectCallBack, frozenRightRow) {\n var _this = this;\n if ((this.selectionSettings.persistSelection && (this.isRowClicked || !this.isRowDeselect || this.checkSelectAllClicked || (this.focus['activeKey'] &&\n this.focus.currentInfo.element.classList.contains('e-gridchkbox') && this.focus['activeKey'] === 'space'))) ||\n !this.selectionSettings.persistSelection) {\n var cancl_1 = 'cancel';\n var isSingleDeSel = rowIndex.length === 1 && this.deSelectedData.length === 1;\n var rowDeselectObj = {\n rowIndex: rowIndex[0], data: this.selectionSettings.persistSelection && (this.parent.checkAllRows === 'Uncheck' &&\n !isSingleDeSel) && this.selectionSettings.checkboxMode !== 'ResetOnRowClick' ? this.deSelectedData : data,\n foreignKeyData: foreignKeyData, cancel: false, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked\n };\n if (type === 'rowDeselected') {\n delete rowDeselectObj.cancel;\n }\n var rowInString = 'row';\n var target_2 = 'target';\n var rowidx = 'rowIndex';\n var rowidxex = 'rowIndexes';\n var dataTxt = 'data';\n var foreignKey = 'foreignKeyData';\n rowDeselectObj[\"\" + rowInString] = row;\n rowDeselectObj[\"\" + target_2] = this.actualTarget;\n var isHeaderCheckBxClick = this.actualTarget && !isNullOrUndefined(closest(this.actualTarget, 'thead'));\n if (isHeaderCheckBxClick || rowIndex.length > 1) {\n rowDeselectObj[\"\" + rowidx] = rowIndex[0];\n rowDeselectObj[\"\" + rowidxex] = rowIndex;\n }\n else if (rowIndex.length === 1) {\n rowDeselectObj[\"\" + dataTxt] = rowDeselectObj[\"\" + dataTxt][0];\n rowDeselectObj[\"\" + rowInString] = rowDeselectObj[\"\" + rowInString][0];\n rowDeselectObj[\"\" + foreignKey] = rowDeselectObj[\"\" + foreignKey][0];\n if (this.isAddRowsToSelection) {\n rowDeselectObj[\"\" + rowidxex] = rowIndex;\n }\n }\n this.parent.trigger(type, rowDeselectObj, function (args) {\n _this.isCancelDeSelect = args[\"\" + cancl_1];\n if (!_this.isCancelDeSelect || (!_this.isRowClicked && !_this.isInteracted && !_this.checkSelectAllClicked)) {\n _this.updatePersistCollection(row[0], false);\n _this.updateCheckBoxes(row[0], undefined, rowIndex[0]);\n }\n if (rowDeselectCallBack !== undefined) {\n rowDeselectCallBack();\n }\n });\n }\n else if (this.selectionSettings.persistSelection && !this.isInteracted) {\n if (rowDeselectCallBack !== undefined) {\n rowDeselectCallBack();\n }\n }\n };\n Selection.prototype.getRowObj = function (row) {\n if (row === void 0) { row = this.currentIndex; }\n if (isNullOrUndefined(row)) {\n return {};\n }\n if (typeof row === 'number') {\n row = this.parent.getRowByIndex(row);\n }\n if (row) {\n return this.parent.getRowObjectFromUID(row.getAttribute('data-uid')) || {};\n }\n return {};\n };\n /**\n * Selects a cell by the given index.\n *\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n Selection.prototype.selectCell = function (cellIndex, isToggle) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var args;\n var selectedCell = gObj.getCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n this.currentIndex = cellIndex.rowIndex;\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (!this.isCellType() || !selectedCell || this.isEditing()) {\n return;\n }\n var isCellSelected = selectedCell.classList.contains('e-cellselectionbackground');\n isToggle = !isToggle ? isToggle : (!isUndefined(this.prevCIdxs) &&\n cellIndex.rowIndex === this.prevCIdxs.rowIndex && cellIndex.cellIndex === this.prevCIdxs.cellIndex &&\n isCellSelected);\n if (!isToggle) {\n args = {\n data: selectedData, cellIndex: cellIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ?\n this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined,\n cancel: false\n };\n var currentCell = 'currentCell';\n args[\"\" + currentCell] = selectedCell;\n var previousRowCellIndex = 'previousRowCellIndex';\n args[\"\" + previousRowCellIndex] = this.prevECIdxs;\n this.parent.trigger(events.cellSelecting, this.fDataUpdate(args), this.successCallBack(args, isToggle, cellIndex, selectedCell, selectedData));\n this.cellselected = true;\n }\n else {\n this.successCallBack(args, isToggle, cellIndex, selectedCell, selectedData)(args);\n }\n };\n Selection.prototype.successCallBack = function (cellSelectingArgs, isToggle, cellIndex, selectedCell, selectedData) {\n var _this = this;\n return function (cellSelectingArgs) {\n var cncl = 'cancel';\n var currentCell = 'currentCell';\n if (!isNullOrUndefined(cellSelectingArgs) && cellSelectingArgs[\"\" + cncl] === true) {\n return;\n }\n if (!isToggle) {\n cellSelectingArgs[\"\" + currentCell] = cellSelectingArgs[\"\" + currentCell] ? cellSelectingArgs[\"\" + currentCell] : selectedCell;\n }\n _this.clearCell();\n if (!isToggle) {\n _this.updateCellSelection(selectedCell, cellIndex.rowIndex, cellIndex.cellIndex);\n }\n if (!isToggle) {\n var args = {\n data: selectedData, cellIndex: cellIndex, currentCell: selectedCell,\n selectedRowCellIndex: _this.selectedRowCellIndexes,\n previousRowCell: _this.prevECIdxs ?\n _this.getCellIndex(_this.prevECIdxs.rowIndex, _this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n args[\"\" + previousRowCellIndex] = _this.prevECIdxs;\n _this.updateCellProps(cellIndex, cellIndex);\n _this.onActionComplete(args, events.cellSelected);\n }\n };\n };\n Selection.prototype.getCellIndex = function (rIdx, cIdx) {\n return this.parent.getCellFromIndex(rIdx, cIdx);\n };\n /**\n * Selects a range of cells from start and end indexes.\n *\n * @param {IIndex} startIndex - Specifies the row and column's start index.\n * @param {IIndex} endIndex - Specifies the row and column's end index.\n * @returns {void}\n */\n Selection.prototype.selectCellsByRange = function (startIndex, endIndex) {\n var _this = this;\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell = this.parent.isSpan ? getCellFromRow(this.parent, startIndex.rowIndex, startIndex.cellIndex) :\n gObj.getCellFromIndex(startIndex.rowIndex, startIndex.cellIndex);\n var min;\n var max;\n var stIndex = startIndex;\n var edIndex = endIndex = endIndex ? endIndex : startIndex;\n var cellIndexes;\n this.currentIndex = startIndex.rowIndex;\n var cncl = 'cancel';\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n var args = {\n data: selectedData, cellIndex: startIndex, currentCell: selectedCell,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n args[\"\" + previousRowCellIndex] = this.prevECIdxs;\n this.parent.trigger(events.cellSelecting, this.fDataUpdate(args), function (cellSelectingArgs) {\n if (!isNullOrUndefined(cellSelectingArgs) && cellSelectingArgs[\"\" + cncl] === true) {\n return;\n }\n _this.clearCell();\n if (startIndex.rowIndex > endIndex.rowIndex) {\n var temp = startIndex;\n startIndex = endIndex;\n endIndex = temp;\n }\n for (var i = startIndex.rowIndex; i <= endIndex.rowIndex; i++) {\n if (_this.selectionSettings.cellSelectionMode.indexOf('Box') < 0) {\n min = i === startIndex.rowIndex ? (startIndex.cellIndex) : 0;\n max = i === endIndex.rowIndex ? (endIndex.cellIndex) : _this.getLastColIndex(i);\n }\n else {\n min = startIndex.cellIndex;\n max = endIndex.cellIndex;\n }\n cellIndexes = [];\n for (var j = min < max ? min : max, len = min > max ? min : max; j <= len; j++) {\n selectedCell = _this.parent.isSpan ? getCellFromRow(gObj, i, j) : gObj.getCellFromIndex(i, j);\n if (!selectedCell) {\n continue;\n }\n cellIndexes.push(j);\n _this.updateCellSelection(selectedCell);\n _this.addAttribute(selectedCell);\n }\n _this.selectedRowCellIndexes.push({ rowIndex: i, cellIndexes: cellIndexes });\n }\n var cellSelectedArgs = {\n data: selectedData, cellIndex: edIndex, currentCell: gObj.getCellFromIndex(edIndex.rowIndex, edIndex.cellIndex),\n selectedRowCellIndex: _this.selectedRowCellIndexes,\n previousRowCell: _this.prevECIdxs ? _this.getCellIndex(_this.prevECIdxs.rowIndex, _this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n cellSelectedArgs[\"\" + previousRowCellIndex] = _this.prevECIdxs;\n if (!_this.isDragged) {\n _this.onActionComplete(cellSelectedArgs, events.cellSelected);\n _this.cellselected = true;\n }\n _this.updateCellProps(stIndex, edIndex);\n });\n };\n /**\n * Selects a collection of cells by row and column indexes.\n *\n * @param {ISelectedCell[]} rowCellIndexes - Specifies the row and column indexes.\n * @returns {void}\n */\n Selection.prototype.selectCells = function (rowCellIndexes) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell = gObj.getCellFromIndex(rowCellIndexes[0].rowIndex, rowCellIndexes[0].cellIndexes[0]);\n this.currentIndex = rowCellIndexes[0].rowIndex;\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n var cellSelectArgs = {\n data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n currentCell: selectedCell, isCtrlPressed: this.isMultiCtrlRequest,\n isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n cellSelectArgs[\"\" + previousRowCellIndex] = this.prevECIdxs;\n this.onActionBegin(cellSelectArgs, events.cellSelecting);\n for (var i = 0, len = rowCellIndexes.length; i < len; i++) {\n for (var j = 0, cellLen = rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes.length; j < cellLen; j++) {\n selectedCell = gObj.getCellFromIndex(rowCellIndexes[parseInt(i.toString(), 10)].rowIndex, rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]);\n if (!selectedCell) {\n continue;\n }\n this.updateCellSelection(selectedCell);\n this.addAttribute(selectedCell);\n this.addRowCellIndex({ rowIndex: rowCellIndexes[parseInt(i.toString(), 10)].rowIndex,\n cellIndex: rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)] });\n }\n }\n this.updateCellProps({ rowIndex: rowCellIndexes[0].rowIndex, cellIndex: rowCellIndexes[0].cellIndexes[0] }, { rowIndex: rowCellIndexes[0].rowIndex, cellIndex: rowCellIndexes[0].cellIndexes[0] });\n var cellSelectedArgs = {\n data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n currentCell: selectedCell, selectedRowCellIndex: this.selectedRowCellIndexes,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var prvRowCellIndex = 'previousRowCellIndex';\n cellSelectedArgs[\"\" + prvRowCellIndex] = this.prevECIdxs;\n this.onActionComplete(cellSelectedArgs, events.cellSelected);\n };\n /**\n * Select cells with existing cell selection by passing row and column index.\n *\n * @param {IIndex} cellIndexes - Defines the collection of row and column index.\n * @returns {void}\n * @hidden\n */\n Selection.prototype.addCellsToSelection = function (cellIndexes) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell;\n var index;\n this.currentIndex = cellIndexes[0].rowIndex;\n var cncl = 'cancel';\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n this.hideAutoFill();\n var rowObj;\n rowObj = gObj.getRowsObject()[cellIndexes[0].rowIndex];\n if (gObj.groupSettings.columns.length > 0) {\n rowObj = gObj.getRowObjectFromUID(this.target.parentElement.getAttribute('data-uid'));\n }\n var foreignKeyData = [];\n for (var _i = 0, cellIndexes_1 = cellIndexes; _i < cellIndexes_1.length; _i++) {\n var cellIndex = cellIndexes_1[_i];\n for (var i = 0, len = this.selectedRowCellIndexes.length; i < len; i++) {\n if (this.selectedRowCellIndexes[parseInt(i.toString(), 10)].rowIndex === cellIndex.rowIndex) {\n index = i;\n break;\n }\n }\n selectedCell = gObj.getCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n var idx = cellIndex.cellIndex;\n if (gObj.groupSettings.columns.length > 0) {\n foreignKeyData.push(rowObj.cells[idx + gObj.groupSettings.columns.length].foreignKeyData);\n }\n else {\n foreignKeyData.push(rowObj.cells[parseInt(idx.toString(), 10)].foreignKeyData);\n }\n var args = {\n cancel: false, data: selectedData, cellIndex: cellIndexes[0],\n isShiftPressed: this.isMultiShiftRequest,\n currentCell: selectedCell, isCtrlPressed: this.isMultiCtrlRequest,\n previousRowCell: this.prevECIdxs ?\n gObj.getCellFromIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var prvRowCellIndex = 'previousRowCellIndex';\n args[\"\" + prvRowCellIndex] = this.prevECIdxs;\n var isUnSelected = index > -1;\n if (isUnSelected) {\n var selectedCellIdx = this.selectedRowCellIndexes[parseInt(index.toString(), 10)].cellIndexes;\n if (selectedCellIdx.indexOf(cellIndex.cellIndex) > -1 || (this.selectionSettings.mode === 'Both' &&\n selectedCell.classList.contains('e-gridchkbox') && !selectedCell.getAttribute('aria-selected'))) {\n this.cellDeselect(events.cellDeselecting, [{ rowIndex: cellIndex.rowIndex, cellIndexes: [cellIndex.cellIndex] }], selectedData, [selectedCell], foreignKeyData);\n selectedCellIdx.splice(selectedCellIdx.indexOf(cellIndex.cellIndex), 1);\n if (selectedCellIdx.length === 0) {\n this.selectedRowCellIndexes.splice(index, 1);\n }\n selectedCell.classList.remove('e-cellselectionbackground');\n selectedCell.removeAttribute('aria-selected');\n this.cellDeselect(events.cellDeselected, [{ rowIndex: cellIndex.rowIndex, cellIndexes: [cellIndex.cellIndex] }], selectedData, [selectedCell], foreignKeyData);\n }\n else {\n isUnSelected = false;\n this.onActionBegin(args, events.cellSelecting);\n this.addRowCellIndex({ rowIndex: cellIndex.rowIndex, cellIndex: cellIndex.cellIndex });\n this.updateCellSelection(selectedCell);\n this.addAttribute(selectedCell);\n }\n }\n else {\n this.onActionBegin(args, events.cellSelecting);\n if (!isNullOrUndefined(args) && args[\"\" + cncl] === true) {\n return;\n }\n this.updateCellSelection(selectedCell, cellIndex.rowIndex, cellIndex.cellIndex);\n }\n if (!isUnSelected) {\n var cellSelectedArgs = {\n data: selectedData, cellIndex: cellIndexes[0], currentCell: selectedCell,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) :\n undefined, selectedRowCellIndex: this.selectedRowCellIndexes\n };\n cellSelectedArgs[\"\" + prvRowCellIndex] = this.prevECIdxs;\n this.onActionComplete(cellSelectedArgs, events.cellSelected);\n this.cellselected = true;\n }\n this.updateCellProps(cellIndex, cellIndex);\n }\n };\n Selection.prototype.getColIndex = function (rowIndex, index) {\n var col = this.parent.getColumnByIndex(index);\n var cells = getCellsByTableName(this.parent, col, rowIndex);\n if (cells) {\n for (var m = 0; m < cells.length; m++) {\n var colIndex = parseInt(cells[parseInt(m.toString(), 10)].getAttribute(literals.dataColIndex), 10);\n if (colIndex === index) {\n return m;\n }\n }\n }\n return -1;\n };\n Selection.prototype.getLastColIndex = function (rowIndex) {\n var cells = this.parent.getDataRows()[parseInt(rowIndex.toString(), 10)].querySelectorAll('td.e-rowcell');\n return parseInt(cells[cells.length - 1].getAttribute(literals.dataColIndex), 10);\n };\n Selection.prototype.clearCell = function () {\n this.clearCellSelection();\n };\n Selection.prototype.cellDeselect = function (type, cellIndexes, data, cells, foreignKeyData) {\n var cancl = 'cancel';\n if (cells && cells.length > 0) {\n for (var _i = 0, cells_1 = cells; _i < cells_1.length; _i++) {\n var cell = cells_1[_i];\n if (cell && cell.classList.contains(literals.gridChkBox)) {\n this.updateCheckBoxes(closest(cell, 'tr'));\n }\n }\n }\n var args = {\n cells: cells, data: data, cellIndexes: cellIndexes, foreignKeyData: foreignKeyData, cancel: false\n };\n this.parent.trigger(type, args);\n this.isPreventCellSelect = args[\"\" + cancl];\n };\n Selection.prototype.updateCellSelection = function (selectedCell, rowIndex, cellIndex) {\n if (!isNullOrUndefined(rowIndex)) {\n this.addRowCellIndex({ rowIndex: rowIndex, cellIndex: cellIndex });\n }\n selectedCell.classList.add('e-cellselectionbackground');\n if (selectedCell.classList.contains(literals.gridChkBox)) {\n this.updateCheckBoxes(closest(selectedCell, 'tr'), true);\n }\n this.addAttribute(selectedCell);\n };\n Selection.prototype.addAttribute = function (cell) {\n this.target = cell;\n if (!isNullOrUndefined(cell)) {\n cell.setAttribute('aria-selected', 'true');\n if (!this.preventFocus) {\n this.focus.onClick({ target: cell }, true);\n }\n }\n };\n Selection.prototype.updateCellProps = function (startIndex, endIndex) {\n this.prevCIdxs = startIndex;\n this.prevECIdxs = endIndex;\n this.isCellSelected = this.selectedRowCellIndexes.length && true;\n };\n Selection.prototype.addRowCellIndex = function (rowCellIndex) {\n var isRowAvail;\n var index;\n for (var i = 0, len = this.selectedRowCellIndexes.length; i < len; i++) {\n if (this.selectedRowCellIndexes[parseInt(i.toString(), 10)].rowIndex === rowCellIndex.rowIndex) {\n isRowAvail = true;\n index = i;\n break;\n }\n }\n if (isRowAvail) {\n if (this.selectedRowCellIndexes[parseInt(index.toString(), 10)].cellIndexes.indexOf(rowCellIndex.cellIndex) < 0) {\n this.selectedRowCellIndexes[parseInt(index.toString(), 10)].cellIndexes.push(rowCellIndex.cellIndex);\n }\n }\n else {\n this.selectedRowCellIndexes.push({ rowIndex: rowCellIndex.rowIndex, cellIndexes: [rowCellIndex.cellIndex] });\n }\n };\n /**\n * Deselects the currently selected cells.\n *\n * @returns {void}\n */\n Selection.prototype.clearCellSelection = function () {\n if (this.isCellSelected) {\n var gObj = this.parent;\n var selectedCells = this.getSelectedCellsElement();\n var rowCell = this.selectedRowCellIndexes;\n var data = [];\n var cells = [];\n var foreignKeyData = [];\n var currentViewData = this.getCurrentBatchRecordChanges();\n this.hideAutoFill();\n for (var i = 0, len = rowCell.length; i < len; i++) {\n data.push(currentViewData[rowCell[parseInt(i.toString(), 10)].rowIndex]);\n var rowObj = this.getRowObj(rowCell[parseInt(i.toString(), 10)].rowIndex);\n for (var j = 0, cLen = rowCell[parseInt(i.toString(), 10)].cellIndexes.length; j < cLen; j++) {\n if (rowObj.cells) {\n foreignKeyData.push(rowObj.cells[rowCell[parseInt(i.toString(), 10)]\n .cellIndexes[parseInt(j.toString(), 10)]].foreignKeyData);\n }\n cells.push(gObj.getCellFromIndex(rowCell[parseInt(i.toString(), 10)].rowIndex, rowCell[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]));\n }\n }\n this.cellDeselect(events.cellDeselecting, rowCell, data, cells, foreignKeyData);\n if (this.isPreventCellSelect === true) {\n return;\n }\n for (var i = 0, len = selectedCells.length; i < len; i++) {\n selectedCells[parseInt(i.toString(), 10)].classList.remove('e-cellselectionbackground');\n selectedCells[parseInt(i.toString(), 10)].removeAttribute('aria-selected');\n }\n if (this.bdrElement) {\n this.showHideBorders('none');\n }\n this.selectedRowCellIndexes = [];\n this.isCellSelected = false;\n if (!this.isDragged && this.cellselected) {\n this.cellDeselect(events.cellDeselected, rowCell, data, cells, foreignKeyData);\n }\n }\n };\n Selection.prototype.getSelectedCellsElement = function () {\n var gObj = this.parent;\n var rows = gObj.getDataRows();\n var cells = [];\n for (var i = 0, len = rows.length; i < len; i++) {\n cells = cells.concat([].slice.call(rows[parseInt(i.toString(), 10)].getElementsByClassName('e-cellselectionbackground')));\n }\n return cells;\n };\n Selection.prototype.mouseMoveHandler = function (e) {\n e.preventDefault();\n this.stopTimer();\n var gBRect = this.parent.element.getBoundingClientRect();\n var x1 = this.x;\n var y1 = this.y;\n var position = getPosition(e);\n var x2 = position.x - gBRect.left;\n var y2 = position.y - gBRect.top;\n var tmp;\n var target = closest(e.target, 'tr');\n this.isDragged = true;\n if (!this.isCellDrag) {\n if (!target) {\n target = closest(document.elementFromPoint(this.parent.element.offsetLeft + 2, e.clientY), 'tr');\n }\n if (x1 > x2) {\n tmp = x2;\n x2 = x1;\n x1 = tmp;\n }\n if (y1 > y2) {\n tmp = y2;\n y2 = y1;\n y1 = tmp;\n }\n this.element.style.left = x1 + 'px';\n this.element.style.top = y1 + 'px';\n this.element.style.width = x2 - x1 + 'px';\n this.element.style.height = y2 - y1 + 'px';\n }\n if (target && !e.ctrlKey && !e.shiftKey) {\n var rowIndex = parseInt(target.getAttribute(literals.dataRowIndex), 10);\n if (!this.isCellDrag) {\n this.hideAutoFill();\n this.selectRowsByRange(this.startDIndex, rowIndex);\n this.isRowDragSelected = true;\n }\n else {\n var td = parentsUntil(e.target, literals.rowCell);\n if (td) {\n this.startAFCell = this.startCell;\n this.endAFCell = parentsUntil(e.target, literals.rowCell);\n if (rowIndex > -1) {\n this.selectLikeExcel(e, rowIndex, parseInt(td.getAttribute(literals.dataColIndex), 10));\n }\n }\n }\n }\n if (!e.ctrlKey && !e.shiftKey && !this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling &&\n !this.parent.enableColumnVirtualization && !this.parent.groupSettings.columns.length && this.isCellDrag) {\n this.updateScrollPosition(e, position, this.parent.getContent());\n }\n };\n Selection.prototype.updateScrollPosition = function (mouseEvent, position, scrollElement) {\n var _this = this;\n var clientRect = scrollElement.getBoundingClientRect();\n if (clientRect.left >= position.x - 20 -\n (this.parent.enableRtl && this.parent.height !== 'auto' ? getScrollBarWidth() : 0)) {\n this.timer1 = window.setInterval(function () { _this.setScrollPosition(scrollElement.firstElementChild, _this.parent.enableRtl ? 'right' : 'left', mouseEvent); }, 200);\n }\n else if (clientRect.left + scrollElement.clientWidth - 20 -\n (!this.parent.enableRtl && this.parent.height !== 'auto' ? getScrollBarWidth() : 0) < position.x) {\n this.timer1 = window.setInterval(function () { _this.setScrollPosition(scrollElement.firstElementChild, _this.parent.enableRtl ? 'left' : 'right', mouseEvent); }, 200);\n }\n if (clientRect.top >= position.y - (this.parent.getRowHeight() * 0.5)) {\n this.timer2 = window.setInterval(function () { _this.setScrollPosition(scrollElement.firstElementChild, 'up', mouseEvent); }, 200);\n }\n else if (clientRect.top + scrollElement.clientHeight - (this.parent.getRowHeight() * 0.5) -\n (scrollElement.firstElementChild.scrollWidth > scrollElement.firstElementChild.offsetWidth ?\n getScrollBarWidth() : 0) <= position.y) {\n this.timer2 = window.setInterval(function () { _this.setScrollPosition(scrollElement.firstElementChild, 'down', mouseEvent); }, 200);\n }\n };\n Selection.prototype.stopTimer = function () {\n if (this.timer1) {\n window.clearInterval(this.timer1);\n this.timer1 = null;\n }\n if (this.timer2) {\n window.clearInterval(this.timer2);\n this.timer2 = null;\n }\n this.preventFocus = false;\n };\n Selection.prototype.setScrollPosition = function (scrollElement, direction, mouseEvent) {\n var rowIndex = -1;\n var columnIndex = -1;\n if (this.endAFCell || this.prevECIdxs) {\n rowIndex = this.endAFCell ? parseInt(this.endAFCell.getAttribute('index'), 10) : this.prevECIdxs.rowIndex;\n columnIndex = this.endAFCell ? parseInt(this.endAFCell.getAttribute('data-colindex'), 10) : this.prevECIdxs.cellIndex;\n }\n switch (direction) {\n case 'up':\n if (mouseEvent && closest(mouseEvent.target, '.e-headercontent')) {\n return;\n }\n if (this.isAutoFillSel && this.startAFCell && this.selectedRowCellIndexes.length &&\n ((this.selectedRowCellIndexes.length === 1 && this.startAFCell !== this.startCell) ||\n (this.selectedRowCellIndexes.length > 1 && this.startAFCell.getBoundingClientRect().top > 0))) {\n rowIndex = parseInt(this.startAFCell.getAttribute('index'), 10);\n }\n rowIndex -= 1;\n if (this.parent.frozenRows) {\n rowIndex += this.parent.frozenRows + 1;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n rowIndex < 1 ? scrollElement.scrollTop = 0 : scrollElement.scrollTop -= this.parent.getRowByIndex(rowIndex)\n .offsetHeight;\n break;\n case 'down':\n if (this.isAutoFillSel && this.startAFCell && this.startAFCell !== this.startCell) {\n rowIndex = parseInt(this.startAFCell.getAttribute('index'), 10);\n }\n if (rowIndex < this.parent.getRows().length - 1) {\n rowIndex += 1;\n if (this.isAutoFillSel && this.startAFCell && this.startAFCell !== this.startCell) {\n this.startAFCell = this.parent.getCellFromIndex(rowIndex, this.selectedRowCellIndexes[0].cellIndexes[0]);\n }\n scrollElement.scrollTop += this.parent.getRowByIndex(rowIndex).offsetHeight;\n }\n else {\n scrollElement.scrollTop = scrollElement.scrollHeight;\n }\n break;\n case 'left':\n if (columnIndex > 0 && rowIndex > -1) {\n if (this.isAutoFillSel && this.startAFCell && this.selectedRowCellIndexes.length &&\n ((this.selectedRowCellIndexes[0].cellIndexes.length > 0 && this.startAFCell !== this.startCell) ||\n (this.selectedRowCellIndexes[0].cellIndexes.length > 1 &&\n ((!this.parent.enableRtl && this.startAFCell.getBoundingClientRect().left > 0) || (this.parent.enableRtl &&\n this.startAFCell.getBoundingClientRect().left < this.parent.element.offsetWidth))))) {\n columnIndex = parseInt(this.startAFCell.getAttribute('data-colindex'), 10);\n }\n var nextElement_1 = this.findNextCell(scrollElement, direction, columnIndex, rowIndex);\n columnIndex = nextElement_1 ? parseInt(nextElement_1.getAttribute('data-colindex'), 10) : -1;\n if (this.parent.enableRtl && nextElement_1) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n columnIndex < 1 ? scrollElement.scrollLeft = scrollElement.scrollWidth :\n scrollElement.scrollLeft += nextElement_1.offsetWidth;\n }\n else if (nextElement_1) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n columnIndex < 1 ? scrollElement.scrollLeft = 0 : scrollElement.scrollLeft -= nextElement_1.offsetWidth;\n }\n }\n break;\n case 'right':\n if (this.isAutoFillSel && this.startAFCell && this.startAFCell !== this.startCell) {\n columnIndex = parseInt(this.startAFCell.getAttribute('data-colindex'), 10);\n }\n // eslint-disable-next-line no-case-declarations\n var currentElement = this.parent.getCellFromIndex(rowIndex, columnIndex);\n // eslint-disable-next-line no-case-declarations\n var nextElement = this.findNextCell(scrollElement, direction, columnIndex, rowIndex);\n if (nextElement && this.isAutoFillSel && this.startAFCell && this.startAFCell !== this.startCell) {\n this.startAFCell = this.parent.getCellFromIndex(this.selectedRowCellIndexes[0].rowIndex, parseInt(nextElement.getAttribute('data-colindex'), 10));\n }\n columnIndex = nextElement ? parseInt(nextElement.getAttribute('data-colindex'), 10) : -1;\n if (this.parent.enableRtl && nextElement) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n columnIndex < this.parent.columns.length - 1 ? scrollElement.scrollLeft -= currentElement.offsetWidth :\n scrollElement.scrollLeft = -scrollElement.scrollWidth;\n }\n else if (nextElement) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n columnIndex < this.parent.columns.length - 1 ? scrollElement.scrollLeft += currentElement.offsetWidth :\n scrollElement.scrollLeft = scrollElement.scrollWidth;\n }\n if (this.isAutoFillSel && (columnIndex === this.parent.columns.length - 1 || columnIndex === -1) &&\n this.startAFCell && this.endAFCell) {\n this.positionAFBorders();\n scrollElement.scrollLeft = this.parent.enableRtl ? -scrollElement.scrollWidth : scrollElement.scrollWidth;\n }\n break;\n }\n if (rowIndex > -1 && rowIndex < this.parent.getRows().length && columnIndex > -1) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var mouseEvent_1 = { target: this.parent.getCellFromIndex(rowIndex, columnIndex) };\n if (this.isAutoFillSel && mouseEvent_1.target.classList.contains('e-cellselectionbackground') &&\n ((direction === 'down' && parseInt(mouseEvent_1.target.getAttribute('index'), 10) === this.parent.getRows().length - 1) ||\n (direction === 'right' && parseInt(mouseEvent_1.target.getAttribute('data-colindex'), 10) === this.parent.columns.length - 1))) {\n return;\n }\n this.endAFCell = mouseEvent_1.target;\n this.preventFocus = true;\n this.selectLikeExcel(mouseEvent_1, rowIndex, columnIndex);\n }\n };\n Selection.prototype.findNextCell = function (scrollElement, direction, columnIndex, rowIndex) {\n var nextElement = this.parent.getCellFromIndex(rowIndex, direction === 'left' ? columnIndex - 1 : columnIndex + 1);\n if (nextElement && nextElement.classList.contains('e-hide')) {\n var siblingEles = nextElement.closest('tr').querySelectorAll('.e-rowcell:not(.e-hide)');\n var nextEleInd = Array.from(siblingEles).indexOf(nextElement.nextElementSibling);\n if (nextEleInd > 0 && nextEleInd < siblingEles.length - 1) {\n nextElement = siblingEles[nextEleInd + (direction === 'left' ? -1 : 1)];\n return nextElement;\n }\n else {\n scrollElement.scrollLeft = 0;\n return null;\n }\n }\n return nextElement;\n };\n Selection.prototype.selectLikeExcel = function (e, rowIndex, cellIndex) {\n if (!this.isAutoFillSel) {\n this.clearCellSelection();\n this.selectCellsByRange({ rowIndex: this.startDIndex, cellIndex: this.startDCellIndex }, { rowIndex: rowIndex, cellIndex: cellIndex });\n this.drawBorders();\n }\n else { //Autofill\n this.showAFBorders();\n this.selectLikeAutoFill(e);\n }\n };\n Selection.prototype.setFrozenBorders = function (parentEle, border, bdrStr) {\n var width = border.style.borderWidth.toString().split(' ');\n var strCell = ['', 'e-leftfreeze', 'e-unfreeze', 'e-leftfreeze', 'e-unfreeze', 'e-rightfreeze', 'e-rightfreeze'];\n var cells = [].slice.call(parentEle.querySelectorAll('.e-cellselectionbackground' + '.' + strCell[\"\" + bdrStr])).\n filter(function (ele) { return ele.style.display === ''; });\n var fixedCells = [].slice.call(parentEle.querySelectorAll('.e-cellselectionbackground.e-fixedfreeze')).\n filter(function (ele) { return ele.style.display === ''; });\n var isRtl = this.parent.enableRtl;\n if (cells.length) {\n var firstRowIdx = cells[0].getAttribute('index');\n var firstColIdx = cells[0].getAttribute('data-colindex');\n var lastRowIdx = cells[cells.length - 1].getAttribute('index');\n var lastColIdx = cells[cells.length - 1].getAttribute('data-colindex');\n for (var i = 0; i < cells.length; i++) {\n if (cells[parseInt(i.toString(), 10)].getAttribute('index') === firstRowIdx && (width.length === 1 || (width.length === 3\n && parseInt(width[0], 10) === 2) || (width.length === 4 && parseInt(width[0], 10) === 2))) {\n cells[parseInt(i.toString(), 10)].classList.add('e-xlsel-top-border');\n }\n if (cells[parseInt(i.toString(), 10)].getAttribute('data-colindex') === firstColIdx && (width.length === 1 ||\n (width.length === 3 && parseInt(width[1], 10) === 2) || (width.length === 4 && (((!isRtl &&\n parseInt(width[3], 10) === 2)) || (isRtl && parseInt(width[1], 10) === 2))))) {\n cells[parseInt(i.toString(), 10)].classList.add(isRtl ? 'e-xlsel-right-border' : 'e-xlsel-left-border');\n }\n if (cells[parseInt(i.toString(), 10)].getAttribute('index') === lastRowIdx && (width.length === 1 ||\n (width.length === 3 && parseInt(width[2], 10) === 2) || (width.length === 4 && parseInt(width[2], 10) === 2))) {\n cells[parseInt(i.toString(), 10)].classList.add('e-xlsel-bottom-border');\n }\n if (cells[parseInt(i.toString(), 10)].getAttribute('data-colindex') === lastColIdx && (width.length === 1 ||\n (width.length === 3 && parseInt(width[1], 10) === 2) || (width.length === 4 && ((!isRtl &&\n parseInt(width[1], 10) === 2)) || (isRtl && parseInt(width[3], 10) === 2)))) {\n cells[parseInt(i.toString(), 10)].classList.add(isRtl ? 'e-xlsel-left-border' : 'e-xlsel-right-border');\n }\n }\n }\n if (fixedCells.length) {\n var firstRowIdx = fixedCells[0].getAttribute('index');\n var firstColIdx = fixedCells[0].getAttribute('data-colindex');\n var lastRowIdx = fixedCells[fixedCells.length - 1].getAttribute('index');\n var lastColIdx = fixedCells[fixedCells.length - 1].getAttribute('data-colindex');\n for (var i = 0; i < fixedCells.length; i++) {\n var idx = fixedCells[parseInt(i.toString(), 10)].getAttribute('index');\n var colIdx = fixedCells[parseInt(i.toString(), 10)].getAttribute('data-colindex');\n if (idx === firstRowIdx &&\n ((!this.parent.getHeaderContent().querySelector('.e-cellselectionbackground.e-fixedfreeze')\n && parentsUntil(parentEle, 'e-content')) || !parentsUntil(parentEle, 'e-content'))) {\n fixedCells[parseInt(i.toString(), 10)].classList.add('e-xlsel-top-border');\n }\n if (idx === lastRowIdx &&\n ((!this.parent.getContent().querySelector('.e-cellselectionbackground.e-fixedfreeze')\n && parentsUntil(parentEle, 'e-headercontent')) || !parentsUntil(parentEle, 'e-headercontent'))) {\n fixedCells[parseInt(i.toString(), 10)].classList.add('e-xlsel-bottom-border');\n }\n var preCell = fixedCells[parseInt(i.toString(), 10)].parentElement.children[parseInt(colIdx, 10) - 1];\n if (colIdx === firstColIdx && (!preCell || (preCell && !preCell.classList.contains('e-cellselectionbackground')))) {\n fixedCells[parseInt(i.toString(), 10)].classList.add(isRtl ? 'e-xlsel-right-border' : 'e-xlsel-left-border');\n }\n var nextCell = fixedCells[parseInt(i.toString(), 10)].parentElement.children[parseInt(colIdx, 10) + 1];\n if (colIdx === lastColIdx && (!nextCell || (nextCell && !nextCell.classList.contains('e-cellselectionbackground')))) {\n fixedCells[parseInt(i.toString(), 10)].classList.add(isRtl ? 'e-xlsel-left-border' : 'e-xlsel-right-border');\n }\n }\n }\n };\n Selection.prototype.refreshFrozenBorders = function () {\n if (this.bdrElement) {\n this.setFrozenBorders(this.parent.getContentTable(), this.bdrElement, '1');\n if (this.parent.isFrozenGrid() && this.parent.getFrozenMode() === literals.leftRight) {\n this.setFrozenBorders(this.parent.getContentTable(), this.frcBdrElement, '5');\n }\n if (this.parent.frozenRows) {\n this.setFrozenBorders(this.parent.getHeaderTable(), this.fhBdrElement, '3');\n if (this.parent.isFrozenGrid() && this.parent.getFrozenMode() === literals.leftRight) {\n this.setFrozenBorders(this.parent.getHeaderTable(), this.frhBdrElement, '6');\n }\n }\n }\n };\n Selection.prototype.drawBorders = function () {\n if (this.selectionSettings.cellSelectionMode === 'BoxWithBorder' && this.selectedRowCellIndexes.length && !this.parent.isEdit) {\n this.parent.element.classList.add('e-enabledboxbdr');\n if (!this.bdrElement) {\n this.createBorders();\n }\n this.positionBorders();\n if (this.parent.isFrozenGrid()) {\n this.showHideBorders('none', true);\n this.refreshFrozenBorders();\n }\n }\n else {\n this.showHideBorders('none');\n }\n };\n Selection.prototype.isLastCell = function (cell) {\n var cells = [].slice.call(cell.parentElement.querySelectorAll('.e-rowcell:not(.e-hide)'));\n return cells[cells.length - 1] === cell;\n };\n Selection.prototype.isLastRow = function (cell) {\n var rows = [].slice.call(closest(cell, literals.tbody).querySelectorAll('.e-row:not(.e-hiddenrow)'));\n return cell.parentElement === rows[rows.length - 1];\n };\n Selection.prototype.isFirstRow = function (cell) {\n var rows = [].slice.call(closest(cell, literals.tbody).querySelectorAll('.e-row:not(.e-hiddenrow)'));\n return cell.parentElement === rows[0];\n };\n Selection.prototype.isFirstCell = function (cell) {\n var cells = [].slice.call(cell.parentElement.querySelectorAll('.e-rowcell:not(.e-hide)'));\n return cells[0] === cell;\n };\n Selection.prototype.setBorders = function (parentEle, border, bdrStr) {\n var cells = [].slice.call(parentEle.getElementsByClassName('e-cellselectionbackground')).\n filter(function (ele) { return ele.style.display === ''; });\n if (cells.length && this.parent.isFrozenGrid()) {\n var strCell = ['', 'e-leftfreeze', 'e-unfreeze', 'e-leftfreeze', 'e-unfreeze', 'e-rightfreeze', 'e-rightfreeze'];\n cells = [].slice.call(parentEle.querySelectorAll('.e-cellselectionbackground' + '.' + strCell[\"\" + bdrStr] + ':not(.e-hide)')).\n filter(function (ele) { return ele.style.display === ''; });\n }\n if (cells.length) {\n var isFrozen = this.parent.isFrozenGrid();\n var start = cells[0];\n var end = cells[cells.length - 1];\n var stOff = start.getBoundingClientRect();\n var endOff = end.getBoundingClientRect();\n var parentOff = start.offsetParent.getBoundingClientRect();\n if (start.offsetParent.classList.contains('e-content') || start.offsetParent.classList.contains('e-headercontent')) {\n parentOff = start.offsetParent.querySelector('table').getBoundingClientRect();\n }\n var rowHeight = !isFrozen && this.isLastRow(end) && (bdrStr === '1' || bdrStr === '2' || bdrStr === '5') ? 2 : 0;\n var topOffSet = 0;\n var leftOffset = isFrozen && (bdrStr === '2' || bdrStr === '4') && this.isFirstCell(start) ? 1 : 0;\n var rightOffset = ((this.parent.getFrozenMode() === 'Right' && (bdrStr === '1' || bdrStr === '3'))\n || (this.parent.getFrozenMode() === literals.leftRight && (bdrStr === '5' || bdrStr === '6')))\n && this.isFirstCell(start) ? 1 : 0;\n if (this.parent.enableRtl) {\n border.style.right = parentOff.right - stOff.right - leftOffset + 'px';\n border.style.width = stOff.right - endOff.left + leftOffset + 1 + 'px';\n }\n else {\n border.style.left = stOff.left - parentOff.left - leftOffset - rightOffset + 'px';\n border.style.width = endOff.right - stOff.left + leftOffset - rightOffset + 1 + 'px';\n }\n border.style.top = stOff.top - parentOff.top - topOffSet + 'px';\n border.style.height = endOff.top - stOff.top > 0 ?\n (endOff.top - parentOff.top + endOff.height + (isFrozen ? 0 : 1)) - (stOff.top - parentOff.top) - rowHeight + topOffSet + 'px' :\n endOff.height + topOffSet - rowHeight + (isFrozen ? 0 : 1) + 'px';\n this.selectDirection += bdrStr;\n }\n else {\n border.style.display = 'none';\n }\n };\n Selection.prototype.positionBorders = function () {\n this.updateStartEndCells();\n if (!this.startCell || !this.bdrElement || !this.selectedRowCellIndexes.length) {\n return;\n }\n this.selectDirection = '';\n this.showHideBorders('');\n this.setBorders(this.parent.getContentTable(), this.bdrElement, '1');\n if (this.parent.isFrozenGrid()) {\n this.setBorders(this.parent.getContentTable(), this.mcBdrElement, '2');\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.setBorders(this.parent.getContentTable(), this.frcBdrElement, '5');\n }\n }\n if (this.parent.frozenRows) {\n this.setBorders(this.parent.getHeaderTable(), this.fhBdrElement, '3');\n if (this.parent.isFrozenGrid()) {\n this.setBorders(this.parent.getHeaderTable(), this.mhBdrElement, '4');\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.setBorders(this.parent.getHeaderTable(), this.frhBdrElement, '6');\n }\n }\n }\n this.applyBorders(this.selectDirection);\n };\n /* eslint-enable */\n Selection.prototype.applyBothFrozenBorders = function (str) {\n var rtl = this.parent.enableRtl;\n switch (str.length) {\n case 6:\n {\n this.bdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mcBdrElement.style.borderWidth = this.bottom;\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.mhBdrElement.style.borderWidth = this.top;\n this.frcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.frhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n }\n break;\n case 4:\n {\n if (str.includes('1') && str.includes('2') && str.includes('3') && str.includes('4')) {\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n this.bdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n }\n if (str.includes('2') && str.includes('4') && str.includes('5') && str.includes('6')) {\n this.mcBdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.frcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.frhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n }\n }\n break;\n case 3:\n {\n this.bdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.mcBdrElement.style.borderWidth = this.top_bottom;\n this.frcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.mhBdrElement.style.borderWidth = this.top_bottom;\n this.frcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n }\n }\n break;\n case 2:\n {\n if (str.includes('1')) {\n this.mcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = this.top_right_left;\n }\n }\n if (str.includes('2')) {\n this.bdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.frcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n if (this.parent.frozenRows) {\n this.mhBdrElement.style.borderWidth = this.top_right_left;\n }\n }\n if (str.includes('3')) {\n this.mhBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n this.bdrElement.style.borderWidth = this.right_bottom_left;\n }\n if (str.includes('4')) {\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.frhBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n this.mcBdrElement.style.borderWidth = this.right_bottom_left;\n }\n if (str.includes('5')) {\n this.mcBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n if (this.parent.frozenRows) {\n this.frhBdrElement.style.borderWidth = this.top_right_left;\n }\n }\n if (str.includes('6')) {\n this.mhBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.frcBdrElement.style.borderWidth = this.right_bottom_left;\n }\n }\n break;\n default:\n this.bdrElement.style.borderWidth = this.all_border;\n this.mcBdrElement.style.borderWidth = this.all_border;\n this.frcBdrElement.style.borderWidth = this.all_border;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = this.all_border;\n this.mhBdrElement.style.borderWidth = this.all_border;\n this.frhBdrElement.style.borderWidth = this.all_border;\n }\n break;\n }\n };\n Selection.prototype.applyBorders = function (str) {\n var rtl = this.parent.enableRtl;\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.applyBothFrozenBorders(str);\n }\n else {\n switch (str.length) {\n case 4:\n {\n if (this.parent.getFrozenMode() === 'Right') {\n this.bdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.mcBdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.fhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n }\n else {\n this.bdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n }\n }\n break;\n case 2:\n {\n if (this.parent.getFrozenMode() === 'Right') {\n this.bdrElement.style.borderWidth = str.includes('2') ? rtl ? this.top_bottom_left\n : this.top_right_bottom : this.right_bottom_left;\n this.mcBdrElement.style.borderWidth = str.includes('1') ? rtl ? this.top_right_bottom\n : this.top_bottom_left : this.right_bottom_left;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = str.includes('1') ? this.top_right_left\n : rtl ? this.top_bottom_left : this.top_right_bottom;\n this.mhBdrElement.style.borderWidth = str.includes('2') ? this.top_right_left\n : rtl ? this.top_right_bottom : this.top_bottom_left;\n }\n }\n else {\n this.bdrElement.style.borderWidth = str.includes('2') ? rtl ? this.top_right_bottom\n : this.top_bottom_left : this.right_bottom_left;\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.borderWidth = str.includes('1') ? rtl ? this.top_bottom_left\n : this.top_right_bottom : this.right_bottom_left;\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = str.includes('1') ? this.top_right_left\n : rtl ? this.top_right_bottom : this.top_bottom_left;\n if (this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.borderWidth = str.includes('2') ? this.top_right_left\n : rtl ? this.top_bottom_left : this.top_right_bottom;\n }\n }\n }\n }\n break;\n default:\n this.bdrElement.style.borderWidth = this.all_border;\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.borderWidth = this.all_border;\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = this.all_border;\n if (this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.borderWidth = this.all_border;\n }\n }\n break;\n }\n }\n };\n Selection.prototype.createBorders = function () {\n if (!this.bdrElement) {\n this.bdrElement = this.parent.getContentTable().parentElement.appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_bdr',\n styles: 'width: 2px; border-width: 0;'\n }));\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement = this.parent.getContentTable().parentElement.appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_mcbdr',\n styles: 'height: 2px; border-width: 0;'\n }));\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frcBdrElement = this.parent.getContentTable().parentElement.appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_frcbdr',\n styles: 'height: 2px; border-width: 0;'\n }));\n }\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement = this.parent.getHeaderTable().parentElement.appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_fhbdr', styles: 'height: 2px;' }));\n }\n if (this.parent.frozenRows && this.parent.isFrozenGrid()) {\n this.mhBdrElement = this.parent.getHeaderTable().parentElement.appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_mhbdr', styles: 'height: 2px;' }));\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frhBdrElement = this.parent.getHeaderTable().parentElement.appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_frhbdr', styles: 'height: 2px;' }));\n }\n }\n }\n };\n Selection.prototype.showHideBorders = function (display, freeze) {\n if (this.bdrElement) {\n this.bdrElement.style.display = display;\n if (this.parent.isFrozenGrid()) {\n var parentEle = this.parent.getContentTable();\n removeClass(parentEle.querySelectorAll('.e-xlsel-top-border'), 'e-xlsel-top-border');\n removeClass(parentEle.querySelectorAll('.e-xlsel-left-border'), 'e-xlsel-left-border');\n removeClass(parentEle.querySelectorAll('.e-xlsel-right-border'), 'e-xlsel-right-border');\n removeClass(parentEle.querySelectorAll('.e-xlsel-bottom-border'), 'e-xlsel-bottom-border');\n if (!freeze) {\n this.mcBdrElement.style.display = display;\n }\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frcBdrElement.style.display = display;\n }\n }\n if (this.parent.frozenRows) {\n var parentEle = this.parent.getHeaderTable();\n removeClass(parentEle.querySelectorAll('.e-xlsel-top-border'), 'e-xlsel-top-border');\n removeClass(parentEle.querySelectorAll('.e-xlsel-left-border'), 'e-xlsel-left-border');\n removeClass(parentEle.querySelectorAll('.e-xlsel-right-border'), 'e-xlsel-right-border');\n removeClass(parentEle.querySelectorAll('.e-xlsel-bottom-border'), 'e-xlsel-bottom-border');\n this.fhBdrElement.style.display = display;\n }\n if (this.parent.frozenRows && this.parent.isFrozenGrid()) {\n if (!freeze) {\n this.mhBdrElement.style.display = display;\n }\n if (this.parent.getFrozenMode() === literals.leftRight) {\n this.frhBdrElement.style.display = display;\n }\n }\n }\n };\n Selection.prototype.drawAFBorders = function () {\n if (!this.bdrAFBottom) {\n this.createAFBorders();\n }\n this.positionAFBorders();\n };\n Selection.prototype.positionAFBorders = function () {\n if (!this.startCell || !this.bdrAFLeft) {\n return;\n }\n var stOff = this.startAFCell.getBoundingClientRect();\n var endOff = this.endAFCell.getBoundingClientRect();\n var top = endOff.top - stOff.top > 0 ? 1 : 0;\n var firstCellTop = endOff.top - stOff.top >= 0 && (parentsUntil(this.startAFCell, literals.movableContent) ||\n parentsUntil(this.startAFCell, 'e-frozencontent')) && this.isFirstRow(this.startAFCell) ? 1.5 : 0;\n var firstCellLeft = (parentsUntil(this.startAFCell, literals.movableContent) ||\n parentsUntil(this.startAFCell, literals.movableHeader)) && this.isFirstCell(this.startAFCell) ? 1 : 0;\n var rowHeight = this.isLastRow(this.endAFCell) && (parentsUntil(this.endAFCell, literals.movableContent) ||\n parentsUntil(this.endAFCell, 'e-frozencontent')) ? 2 : 0;\n var parentOff = this.startAFCell.offsetParent.getBoundingClientRect();\n var parentRect = this.parent.element.getBoundingClientRect();\n var sTop = this.startAFCell.offsetParent.parentElement.scrollTop;\n var sLeft = this.startAFCell.offsetParent.parentElement.scrollLeft;\n var scrollTop = sTop - this.startAFCell.offsetTop;\n var scrollLeft = sLeft - this.startAFCell.offsetLeft;\n var totalHeight = this.parent.element.clientHeight - getScrollBarWidth();\n if (this.parent.allowPaging) {\n totalHeight -= this.parent.element.querySelector('.e-pager').offsetHeight;\n }\n if (this.parent.aggregates.length) {\n totalHeight -= this.parent.getFooterContent().offsetHeight;\n }\n var totalWidth = this.parent.element.clientWidth - (this.parent.height !== 'auto' ? getScrollBarWidth() : 0);\n scrollTop = scrollTop > 0 ? Math.floor(scrollTop) - 1 : 0;\n scrollLeft = scrollLeft > 0 ? scrollLeft : 0;\n var left = stOff.left - parentRect.left;\n if (!this.parent.enableRtl) {\n this.bdrAFLeft.style.left = left - firstCellLeft + scrollLeft - 1 + 'px';\n this.bdrAFRight.style.left = endOff.left - parentRect.left - 2 + endOff.width + 'px';\n this.bdrAFRight.style.width = totalWidth <= parseInt(this.bdrAFRight.style.left, 10) ? '0px' : '2px';\n this.bdrAFTop.style.left = left + scrollLeft - 0.5 + 'px';\n this.bdrAFTop.style.width = parseInt(this.bdrAFRight.style.left, 10) - parseInt(this.bdrAFLeft.style.left, 10)\n - firstCellLeft + 1 + 'px';\n if (totalWidth <= (parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10))) {\n var leftRemove = (parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10)) - totalWidth;\n this.bdrAFTop.style.width = parseInt(this.bdrAFTop.style.width, 10) - leftRemove + 'px';\n }\n }\n else {\n var scrolloffSet = (parentsUntil(this.startAFCell, literals.movableContent) ||\n parentsUntil(this.startAFCell, literals.movableHeader)) ? stOff.right -\n this.startAFCell.offsetParent.parentElement.getBoundingClientRect().width -\n parentRect.left : 0;\n this.bdrAFLeft.style.right = parentRect.right - endOff.right - 2 + endOff.width + 'px';\n this.bdrAFLeft.style.width = totalWidth <= parseInt(this.bdrAFLeft.style.right, 10) ? '0px' : '2px';\n var borderAFRightValue = parentRect.right - stOff.right - firstCellLeft + scrolloffSet - 1;\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n borderAFRightValue > 0 ? this.bdrAFRight.style.right = borderAFRightValue + 'px' : this.bdrAFRight.style.right = '0px';\n this.bdrAFTop.style.left = endOff.left - parentRect.left - 0.5 + 'px';\n this.bdrAFTop.style.width = parseInt(this.bdrAFLeft.style.right, 10) - parseInt(this.bdrAFRight.style.right, 10)\n - firstCellLeft + 1 + 'px';\n if (parseInt(this.bdrAFTop.style.left, 10) < 0) {\n this.bdrAFTop.style.width = parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10) + 'px';\n if (this.parent.height !== 'auto' && getScrollBarWidth()) {\n this.bdrAFTop.style.left = getScrollBarWidth() + 'px';\n this.bdrAFTop.style.width = (parseInt(this.bdrAFTop.style.width, 10) - getScrollBarWidth()) + 'px';\n }\n else {\n this.bdrAFTop.style.left = '0px';\n }\n }\n }\n this.bdrAFLeft.style.top = stOff.top - parentRect.top - firstCellTop + scrollTop + 'px';\n this.bdrAFLeft.style.height = endOff.top - stOff.top > 0 ?\n (endOff.top - parentOff.top + endOff.height + 1) - (stOff.top - parentOff.top) + firstCellTop - rowHeight - scrollTop + 'px' :\n endOff.height + firstCellTop - rowHeight - scrollTop + 'px';\n this.bdrAFRight.style.top = this.bdrAFLeft.style.top;\n this.bdrAFRight.style.height = parseInt(this.bdrAFLeft.style.height, 10) + 'px';\n this.bdrAFTop.style.top = this.bdrAFRight.style.top;\n this.bdrAFBottom.style.left = this.bdrAFTop.style.left;\n this.bdrAFBottom.style.top = parseFloat(this.bdrAFLeft.style.top) + parseFloat(this.bdrAFLeft.style.height) - top - 1 + 'px';\n this.bdrAFBottom.style.width = totalHeight <= parseFloat(this.bdrAFBottom.style.top) ? '0px' : this.bdrAFTop.style.width;\n if (totalHeight <= (parseInt(this.bdrAFLeft.style.height, 10) + parseInt(this.bdrAFLeft.style.top, 10))) {\n var topRemove = parseInt(this.bdrAFLeft.style.height, 10) + parseInt(this.bdrAFLeft.style.top, 10) - totalHeight;\n this.bdrAFLeft.style.height = parseInt(this.bdrAFLeft.style.height, 10) - topRemove + 'px';\n this.bdrAFRight.style.height = parseInt(this.bdrAFLeft.style.height, 10) + 'px';\n }\n };\n Selection.prototype.createAFBorders = function () {\n if (!this.bdrAFLeft) {\n this.bdrAFLeft = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafleft', styles: 'width: 2px;' }));\n this.bdrAFRight = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafright', styles: 'width: 2px;' }));\n this.bdrAFBottom = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafbottom', styles: 'height: 2px;' }));\n this.bdrAFTop = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdraftop', styles: 'height: 2px;' }));\n }\n };\n Selection.prototype.destroyAutoFillElements = function () {\n if (this.bdrAFLeft) {\n this.bdrAFLeft.remove();\n this.bdrAFRight.remove();\n this.bdrAFBottom.remove();\n this.bdrAFTop.remove();\n this.bdrAFLeft = this.bdrAFRight = this.bdrAFBottom = this.bdrAFTop = null;\n }\n if (this.autofill) {\n this.autofill.remove();\n this.autofill = null;\n }\n };\n Selection.prototype.showAFBorders = function () {\n if (this.bdrAFLeft) {\n this.bdrAFLeft.style.display = '';\n this.bdrAFRight.style.display = '';\n this.bdrAFBottom.style.display = '';\n this.bdrAFTop.style.display = '';\n }\n };\n Selection.prototype.hideAFBorders = function () {\n if (this.bdrAFLeft) {\n this.bdrAFLeft.style.display = 'none';\n this.bdrAFRight.style.display = 'none';\n this.bdrAFBottom.style.display = 'none';\n this.bdrAFTop.style.display = 'none';\n }\n };\n Selection.prototype.updateValue = function (rIdx, cIdx, cell) {\n var args = this.createBeforeAutoFill(rIdx, cIdx, cell);\n if (!args.cancel) {\n var col = this.parent.getColumnByIndex(cIdx);\n if (this.parent.editModule && cell) {\n if (col.type === 'number') {\n this.parent.editModule.updateCell(rIdx, col.field, parseFloat(args.value));\n }\n else {\n this.parent.editModule.updateCell(rIdx, col.field, args.value);\n }\n }\n }\n };\n Selection.prototype.createBeforeAutoFill = function (rowIndex, colIndex, cell) {\n var col = this.parent.getColumnByIndex(colIndex);\n var args = {\n column: col,\n value: cell.innerText\n };\n this.parent.trigger(events.beforeAutoFill, args);\n return args;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Selection.prototype.getAutoFillCells = function (rowIndex, startCellIdx) {\n var cls = '.e-cellselectionbackground';\n var cells = [].slice.call(this.parent.getDataRows()[parseInt(rowIndex.toString(), 10)].querySelectorAll(cls));\n return cells;\n };\n Selection.prototype.selectLikeAutoFill = function (e, isApply) {\n var startrowIdx = parseInt(parentsUntil(this.startAFCell, literals.row).getAttribute(literals.dataRowIndex), 10);\n var startCellIdx = parseInt(this.startAFCell.getAttribute(literals.dataColIndex), 10);\n var endrowIdx = parseInt(parentsUntil(this.endAFCell, literals.row).getAttribute(literals.dataRowIndex), 10);\n var endCellIdx = parseInt(this.endAFCell.getAttribute(literals.dataColIndex), 10);\n var rowLen = this.selectedRowCellIndexes.length - 1;\n var colLen = this.selectedRowCellIndexes[0].cellIndexes.length - 1;\n switch (true) { //direction\n case !isApply && this.endAFCell.classList.contains('e-cellselectionbackground') &&\n !!parentsUntil(e.target, literals.rowCell):\n this.startAFCell = this.parent.getCellFromIndex(startrowIdx, startCellIdx);\n this.endAFCell = this.parent.getCellFromIndex(startrowIdx + rowLen, startCellIdx + colLen);\n this.drawAFBorders();\n break;\n case this.autoFillRLselection && startCellIdx + colLen < endCellIdx && //right\n endCellIdx - startCellIdx - colLen + 1 > endrowIdx - startrowIdx - rowLen // right bottom\n && endCellIdx - startCellIdx - colLen + 1 > startrowIdx - endrowIdx: //right top\n this.endAFCell = this.parent.getCellFromIndex(startrowIdx + rowLen, endCellIdx);\n endrowIdx = parseInt(parentsUntil(this.endAFCell, literals.row).getAttribute(literals.dataRowIndex), 10);\n endCellIdx = parseInt(this.endAFCell.getAttribute(literals.dataColIndex), 10);\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var cellIdx = parseInt(this.endCell.getAttribute(literals.dataColIndex), 10);\n for (var i = startrowIdx; i <= endrowIdx; i++) {\n var cells = this.getAutoFillCells(i, startCellIdx);\n var c = 0;\n for (var j = cellIdx + 1; j <= endCellIdx; j++) {\n if (c > colLen) {\n c = 0;\n }\n this.updateValue(i, j, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: startrowIdx, cellIndex: this.startCellIndex }, { rowIndex: endrowIdx, cellIndex: endCellIdx });\n }\n break;\n case this.autoFillRLselection && startCellIdx > endCellIdx && // left\n startCellIdx - endCellIdx + 1 > endrowIdx - startrowIdx - rowLen && //left top\n startCellIdx - endCellIdx + 1 > startrowIdx - endrowIdx: // left bottom\n this.startAFCell = this.parent.getCellFromIndex(startrowIdx, endCellIdx);\n this.endAFCell = this.endCell;\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n for (var i = startrowIdx; i <= startrowIdx + rowLen; i++) {\n var cells = this.getAutoFillCells(i, startCellIdx);\n cells.reverse();\n var c = 0;\n for (var j = this.startCellIndex - 1; j >= endCellIdx; j--) {\n if (c > colLen) {\n c = 0;\n }\n this.updateValue(i, j, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: startrowIdx, cellIndex: endCellIdx }, { rowIndex: startrowIdx + rowLen, cellIndex: this.startCellIndex + colLen });\n }\n break;\n case startrowIdx > endrowIdx: //up\n this.startAFCell = this.parent.getCellFromIndex(endrowIdx, startCellIdx);\n this.endAFCell = this.endCell;\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var trIdx = parseInt(this.endCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n var r = trIdx;\n for (var i = startrowIdx - 1; i >= endrowIdx; i--) {\n if (r === this.startIndex - 1) {\n r = trIdx;\n }\n var cells = this.getAutoFillCells(r, startCellIdx);\n var c = 0;\n r--;\n for (var j = this.startCellIndex; j <= this.startCellIndex + colLen; j++) {\n this.updateValue(i, j, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: endrowIdx, cellIndex: startCellIdx + colLen }, { rowIndex: startrowIdx + rowLen, cellIndex: startCellIdx });\n }\n break;\n default: //down\n this.endAFCell = this.parent.getCellFromIndex(endrowIdx, startCellIdx + colLen);\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var trIdx = parseInt(this.endCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n var r = this.startIndex;\n for (var i = trIdx + 1; i <= endrowIdx; i++) {\n if (r === trIdx + 1) {\n r = this.startIndex;\n }\n var cells = this.getAutoFillCells(r, startCellIdx);\n r++;\n var c = 0;\n for (var m = this.startCellIndex; m <= this.startCellIndex + colLen; m++) {\n this.updateValue(i, m, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: trIdx - rowLen, cellIndex: startCellIdx }, { rowIndex: endrowIdx, cellIndex: startCellIdx + colLen });\n }\n break;\n }\n };\n Selection.prototype.mouseUpHandler = function (e) {\n this.stopTimer();\n document.body.classList.remove('e-disableuserselect');\n if (this.element && !isNullOrUndefined(this.element.parentElement)) {\n remove(this.element);\n }\n if (this.isDragged && this.selectedRowCellIndexes.length === 1 && this.selectedRowCellIndexes[0].cellIndexes.length === 1) {\n this.mUPTarget = parentsUntil(e.target, literals.rowCell);\n }\n else {\n this.mUPTarget = null;\n }\n var closeRowCell = closest(e.target, '.e-rowcell');\n if (this.isDragged && !this.isAutoFillSel && this.selectionSettings.mode === 'Cell' &&\n closeRowCell && closeRowCell.classList.contains(literals.rowCell)) {\n var rowIndex = parseInt(closeRowCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n var cellIndex = parseInt(closeRowCell.getAttribute(literals.dataColIndex), 10);\n this.isDragged = false;\n this.clearCellSelection();\n this.selectCellsByRange({ rowIndex: this.startDIndex, cellIndex: this.startDCellIndex }, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isDragged = false;\n this.updateAutoFillPosition();\n if (this.isAutoFillSel) {\n this.preventFocus = true;\n var lastCell = parentsUntil(e.target, literals.rowCell);\n this.endAFCell = lastCell ? lastCell : this.endCell === this.endAFCell ? this.startAFCell : this.endAFCell;\n this.startAFCell = this.startCell;\n if (!isNullOrUndefined(this.endAFCell) && !isNullOrUndefined(this.startAFCell)) {\n this.updateStartCellsIndex();\n this.selectLikeAutoFill(e, true);\n this.updateAutoFillPosition();\n this.hideAFBorders();\n this.positionBorders();\n if (this.parent.isFrozenGrid()) {\n this.showHideBorders('none', true);\n this.refreshFrozenBorders();\n }\n if (this.parent.aggregates.length > 0) {\n this.parent.notify(events.refreshFooterRenderer, {});\n }\n }\n this.isAutoFillSel = false;\n this.preventFocus = false;\n }\n EventHandler.remove(this.parent.getContent(), 'mousemove', this.mouseMoveHandler);\n if (this.parent.frozenRows) {\n EventHandler.remove(this.parent.getHeaderContent(), 'mousemove', this.mouseMoveHandler);\n }\n EventHandler.remove(document, 'mouseup', this.mouseUpHandler);\n };\n Selection.prototype.hideAutoFill = function () {\n if (this.autofill) {\n this.autofill.style.display = 'none';\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Selection.prototype.updateAutoFillPosition = function () {\n if (this.parent.enableAutoFill && !this.parent.isEdit &&\n this.selectionSettings.cellSelectionMode.indexOf('Box') > -1 && !this.isRowType() && !this.isSingleSel()\n && this.selectedRowCellIndexes.length) {\n var index = parseInt(this.target.getAttribute(literals.dataColIndex), 10);\n var rindex = parseInt(this.target.getAttribute('index'), 10);\n var rowIndex = this.selectedRowCellIndexes[this.selectedRowCellIndexes.length - 1].rowIndex;\n var cells = this.getAutoFillCells(rowIndex, index).filter(function (ele) { return ele.style.display === ''; });\n var col = this.parent.getColumnByIndex(index);\n var isFrozenCol = col.getFreezeTableName() === 'movable';\n var isFrozenRow = rindex < this.parent.frozenRows;\n var isFrozenRight = this.parent.getFrozenMode() === literals.leftRight\n && col.getFreezeTableName() === literals.frozenRight;\n if (!select('#' + this.parent.element.id + '_autofill', parentsUntil(this.target, literals.table))) {\n if (select('#' + this.parent.element.id + '_autofill', this.parent.element)) {\n select('#' + this.parent.element.id + '_autofill', this.parent.element).remove();\n }\n this.autofill = createElement('div', { className: 'e-autofill', id: this.parent.element.id + '_autofill' });\n this.autofill.style.display = 'none';\n if (this.target.classList.contains('e-leftfreeze') || this.target.classList.contains('e-rightfreeze') ||\n this.target.classList.contains('e-fixedfreeze')) {\n this.autofill.classList.add('e-freeze-autofill');\n }\n if (!isFrozenRow) {\n if (!isFrozenCol) {\n this.parent.getContentTable().parentElement.appendChild(this.autofill);\n }\n else {\n this.parent.getContentTable().parentElement.appendChild(this.autofill);\n }\n }\n else {\n if (!isFrozenCol) {\n this.parent.getHeaderTable().parentElement.appendChild(this.autofill);\n }\n else {\n this.parent.getHeaderTable().parentElement.appendChild(this.autofill);\n }\n }\n if (isFrozenRight) {\n if (isFrozenRow) {\n this.parent.getHeaderTable().parentElement.appendChild(this.autofill);\n }\n else {\n this.parent.getContentTable().parentElement.appendChild(this.autofill);\n }\n }\n }\n var cell = cells[cells.length - 1];\n if (cell && cell.offsetParent) {\n var clientRect = cell.getBoundingClientRect();\n var parentOff = cell.offsetParent.getBoundingClientRect();\n if (cell.offsetParent.classList.contains('e-content') || cell.offsetParent.classList.contains('e-headercontent')) {\n parentOff = cell.offsetParent.querySelector('table').getBoundingClientRect();\n }\n var colWidth = this.isLastCell(cell) ? 4 : 0;\n var rowHeight = this.isLastRow(cell) ? 3 : 0;\n if (!this.parent.enableRtl) {\n this.autofill.style.left = clientRect.left - parentOff.left + clientRect.width - 4 - colWidth + 'px';\n }\n else {\n this.autofill.style.right = parentOff.right - clientRect.right + clientRect.width - 4 - colWidth + 'px';\n }\n this.autofill.style.top = clientRect.top - parentOff.top + clientRect.height - 5 - rowHeight + 'px';\n }\n this.autofill.style.display = '';\n }\n else {\n this.hideAutoFill();\n }\n };\n Selection.prototype.mouseDownHandler = function (e) {\n this.mouseButton = e.button;\n var target = e.target;\n var gObj = this.parent;\n var isDrag;\n var gridElement = parentsUntil(target, 'e-grid');\n if (gridElement && gridElement.id !== gObj.element.id || parentsUntil(target, literals.headerContent) && !this.parent.frozenRows ||\n parentsUntil(target, 'e-editedbatchcell') || parentsUntil(target, literals.editedRow)) {\n return;\n }\n if (e.shiftKey || e.ctrlKey) {\n e.preventDefault();\n }\n if (parentsUntil(target, literals.rowCell) && !e.shiftKey && !e.ctrlKey) {\n if (gObj.selectionSettings.cellSelectionMode.indexOf('Box') > -1 && !this.isRowType() && !this.isSingleSel()) {\n this.isCellDrag = true;\n isDrag = true;\n }\n else if (gObj.allowRowDragAndDrop && !gObj.isEdit && !this.parent.selectionSettings.checkboxOnly) {\n this.isRowDragSelected = false;\n if (!this.isRowType() || this.isSingleSel() || closest(target, 'td').classList.contains('e-selectionbackground')) {\n this.isDragged = false;\n return;\n }\n isDrag = true;\n this.element = this.parent.createElement('div', { className: 'e-griddragarea' });\n gObj.getContent().appendChild(this.element);\n }\n if (isDrag) {\n this.enableDrag(e, true);\n }\n }\n this.updateStartEndCells();\n if (target.classList.contains('e-autofill') || target.classList.contains('e-xlsel')) {\n this.isCellDrag = true;\n this.isAutoFillSel = true;\n this.enableDrag(e);\n }\n };\n Selection.prototype.updateStartEndCells = function () {\n var cells = [].slice.call(this.parent.element.getElementsByClassName('e-cellselectionbackground'));\n this.startCell = cells[0];\n this.endCell = cells[cells.length - 1];\n if (this.startCell) {\n this.startIndex = parseInt(this.startCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n this.startCellIndex = parseInt(parentsUntil(this.startCell, literals.rowCell).getAttribute(literals.dataColIndex), 10);\n }\n };\n Selection.prototype.updateStartCellsIndex = function () {\n if (this.startCell) {\n this.startIndex = parseInt(this.startCell.parentElement.getAttribute(literals.dataRowIndex), 10);\n this.startCellIndex = parseInt(parentsUntil(this.startCell, literals.rowCell).getAttribute(literals.dataColIndex), 10);\n }\n };\n Selection.prototype.enableDrag = function (e, isUpdate) {\n var gObj = this.parent;\n if (isUpdate) {\n var tr = closest(e.target, 'tr');\n this.startDIndex = parseInt(tr.getAttribute(literals.dataRowIndex), 10);\n this.startDCellIndex = parseInt(parentsUntil(e.target, literals.rowCell).getAttribute(literals.dataColIndex), 10);\n }\n document.body.classList.add('e-disableuserselect');\n var gBRect = gObj.element.getBoundingClientRect();\n var postion = getPosition(e);\n this.x = postion.x - gBRect.left;\n this.y = postion.y - gBRect.top;\n EventHandler.add(gObj.getContent(), 'mousemove', this.mouseMoveHandler, this);\n if (this.parent.frozenRows) {\n EventHandler.add(gObj.getHeaderContent(), 'mousemove', this.mouseMoveHandler, this);\n }\n EventHandler.add(document, 'mouseup', this.mouseUpHandler, this);\n };\n Selection.prototype.clearSelAfterRefresh = function (e) {\n var isInfiniteScroll = this.parent.enableInfiniteScrolling && e.requestType === 'infiniteScroll';\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection && !isInfiniteScroll) {\n this.clearSelection();\n }\n if ((e.requestType === 'virtualscroll' || isInfiniteScroll) && this.parent.isPersistSelection && this.isPartialSelection\n && this.isHdrSelectAllClicked) {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n var indexes = [];\n this.selectedRowState = {};\n this.persistSelectedData = [];\n for (var i = 0; i < rowObj.length; i++) {\n indexes.push(rowObj[parseInt(i.toString(), 10)].index);\n var pkValue = this.getPkValue(this.primaryKey, rowObj[parseInt(i.toString(), 10)].data);\n this.selectedRowState[\"\" + pkValue] = true;\n this.persistSelectedData.push(rowObj[parseInt(i.toString(), 10)].data);\n }\n this.selectedRowIndexes = indexes;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Selection.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.uiUpdate, handler: this.enableAfterRender },\n { event: events.initialEnd, handler: this.initializeSelection },\n { event: events.rowSelectionComplete, handler: this.onActionComplete },\n { event: events.cellSelectionComplete, handler: this.onActionComplete },\n { event: events.inBoundModelChanged, handler: this.onPropertyChanged },\n { event: events.cellFocused, handler: this.onCellFocused },\n { event: events.beforeFragAppend, handler: this.clearSelAfterRefresh },\n { event: events.columnPositionChanged, handler: this.columnPositionChanged },\n { event: events.contentReady, handler: this.initialEnd },\n { event: events.rowsRemoved, handler: this.rowsRemoved },\n { event: events.headerRefreshed, handler: this.refreshHeader },\n { event: events.destroyAutoFillElements, handler: this.destroyAutoFillElements },\n { event: events.destroy, handler: this.destroy }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.actionBeginFunction = this.actionBegin.bind(this);\n this.actionCompleteFunction = this.actionComplete.bind(this);\n this.parent.addEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunction);\n this.addEventListener_checkbox();\n };\n /**\n * @returns {void}\n * @hidden\n */\n Selection.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.remove(document, 'mouseup', this.mouseUpHandler);\n EventHandler.remove(this.parent.getContent(), 'mousedown', this.mouseDownHandler);\n EventHandler.remove(this.parent.getHeaderContent(), 'mousedown', this.mouseDownHandler);\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n this.parent.removeEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunction);\n this.removeEventListener_checkbox();\n this.parent.off(events.destroyAutoFillElements, this.destroyAutoFillElements);\n };\n Selection.prototype.wireEvents = function () {\n this.isMacOS = navigator.userAgent.indexOf('Mac OS') !== -1;\n if (this.isMacOS) {\n EventHandler.add(this.parent.element, 'keydown', this.keyDownHandler, this);\n EventHandler.add(this.parent.element, 'keyup', this.keyUpHandler, this);\n }\n else {\n if (!this.parent.allowKeyboard) {\n EventHandler.add(this.parent.element, 'keydown', this.keyDownHandler, this);\n }\n }\n };\n Selection.prototype.unWireEvents = function () {\n if (this.isMacOS) {\n EventHandler.remove(this.parent.element, 'keydown', this.keyDownHandler);\n EventHandler.remove(this.parent.element, 'keyup', this.keyUpHandler);\n }\n else {\n if (!this.parent.allowKeyboard) {\n EventHandler.remove(this.parent.element, 'keydown', this.keyDownHandler);\n }\n }\n };\n Selection.prototype.columnPositionChanged = function () {\n if (!this.parent.isPersistSelection) {\n this.clearSelection();\n }\n };\n Selection.prototype.refreshHeader = function () {\n this.setCheckAllState();\n };\n Selection.prototype.rowsRemoved = function (e) {\n for (var i = 0; i < e.records.length; i++) {\n var pkValue = this.getPkValue(this.primaryKey, e.records[parseInt(i.toString(), 10)]);\n delete (this.selectedRowState[\"\" + pkValue]);\n --this.totalRecordsCount;\n }\n this.setCheckAllState();\n };\n Selection.prototype.beforeFragAppend = function (e) {\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection) {\n this.clearSelection();\n }\n };\n Selection.prototype.getCheckAllBox = function () {\n return this.parent.getHeaderContent().querySelector('.e-checkselectall');\n };\n Selection.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n this.initPerisistSelection();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Selection.prototype.render = function (e) {\n EventHandler.add(this.parent.getContent(), 'mousedown', this.mouseDownHandler, this);\n EventHandler.add(this.parent.getHeaderContent(), 'mousedown', this.mouseDownHandler, this);\n };\n Selection.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n var gObj = this.parent;\n if (!isNullOrUndefined(e.properties.type)) {\n if (this.selectionSettings.type === 'Single') {\n gObj.element.removeAttribute('aria-multiselectable');\n if (this.selectedRowCellIndexes.length > 1) {\n this.clearCellSelection();\n this.prevCIdxs = undefined;\n }\n if (this.selectedRowIndexes.length > 1) {\n this.clearRowSelection();\n this.prevRowIndex = undefined;\n }\n if (this.selectedColumnsIndexes.length > 1) {\n this.clearColumnSelection();\n this.prevColIndex = undefined;\n }\n this.enableSelectMultiTouch = false;\n this.hidePopUp();\n }\n else if (this.selectionSettings.type === 'Multiple') {\n gObj.element.setAttribute('aria-multiselectable', 'true');\n }\n }\n if (!isNullOrUndefined(e.properties.mode) ||\n !isNullOrUndefined(e.properties.cellSelectionMode)) {\n this.clearSelection();\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n this.prevColIndex = undefined;\n }\n this.isPersisted = true;\n this.checkBoxSelectionChanged();\n this.isPersisted = false;\n if (!this.parent.isCheckBoxSelection) {\n this.initPerisistSelection();\n }\n var checkboxColumn = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length) {\n gObj.isCheckBoxSelection = !(this.selectionSettings.checkboxMode === 'ResetOnRowClick');\n }\n this.drawBorders();\n };\n Selection.prototype.hidePopUp = function () {\n if (this.parent.element.querySelector('.e-gridpopup').getElementsByClassName('e-rowselect').length) {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n };\n Selection.prototype.initialEnd = function () {\n if (!this.selectedRowIndexes.length) {\n this.parent.off(events.contentReady, this.initialEnd);\n this.selectRow(this.parent.selectedRowIndex);\n }\n };\n Selection.prototype.checkBoxSelectionChanged = function () {\n var gobj = this.parent;\n gobj.off(events.contentReady, this.checkBoxSelectionChanged);\n var checkboxColumn = gobj.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length > 0) {\n gobj.isCheckBoxSelection = true;\n this.chkField = checkboxColumn[0].field;\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n if (isNullOrUndefined(this.totalRecordsCount)) {\n this.totalRecordsCount = this.getCurrentBatchRecordChanges().length;\n }\n if (this.isSingleSel()) {\n gobj.selectionSettings.type = 'Multiple';\n gobj.dataBind();\n }\n else {\n this.initPerisistSelection();\n }\n }\n if (!gobj.isCheckBoxSelection && !this.isPersisted) {\n this.chkField = null;\n this.initPerisistSelection();\n }\n };\n Selection.prototype.initPerisistSelection = function () {\n var gobj = this.parent;\n if (this.parent.selectionSettings.persistSelection && this.parent.getPrimaryKeyFieldNames().length > 0) {\n gobj.isPersistSelection = true;\n this.ensureCheckboxFieldSelection();\n }\n else if (this.parent.getPrimaryKeyFieldNames().length > 0) {\n gobj.isPersistSelection = false;\n this.ensureCheckboxFieldSelection();\n }\n else {\n gobj.isPersistSelection = false;\n this.selectedRowState = {};\n }\n };\n Selection.prototype.ensureCheckboxFieldSelection = function () {\n var gobj = this.parent;\n this.primaryKey = this.parent.getPrimaryKeyFieldNames()[0];\n if (!gobj.enableVirtualization && this.chkField\n && ((gobj.isPersistSelection && Object.keys(this.selectedRowState).length === 0) ||\n !gobj.isPersistSelection)) {\n var data = this.parent.getDataModule();\n var query = new Query().where(this.chkField, 'equal', true);\n if (!query.params) {\n query.params = this.parent.query.params;\n }\n var dataManager = data.getData({}, query);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n this.parent.showSpinner();\n dataManager.then(function (e) {\n proxy_1.dataSuccess(e.result);\n proxy_1.refreshPersistSelection();\n proxy_1.parent.hideSpinner();\n });\n }\n };\n Selection.prototype.dataSuccess = function (res) {\n var data = (this.parent.getDataModule().isRemote() && !isNullOrUndefined(res['result'])) ? res['result'] : res;\n for (var i = 0; i < data.length; i++) {\n var pkValue = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (isNullOrUndefined(this.selectedRowState[\"\" + pkValue]) && data[parseInt(i.toString(), 10)][this.chkField]) {\n this.selectedRowState[\"\" + pkValue] = data[parseInt(i.toString(), 10)][this.chkField];\n }\n }\n this.persistSelectedData = data;\n };\n Selection.prototype.setRowSelection = function (state) {\n if (!(this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))) {\n if (state) {\n if (this.isPartialSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n for (var _i = 0, rowObj_1 = rowObj; _i < rowObj_1.length; _i++) {\n var row = rowObj_1[_i];\n this.selectedRowState[this.getPkValue(this.primaryKey, row.data)] = true;\n }\n }\n else {\n var selectedData = this.isPartialSelection ? this.parent.partialSelectedRecords : this.getData();\n if (this.parent.groupSettings.columns.length) {\n for (var _a = 0, _b = this.isPartialSelection ? selectedData : selectedData.records; _a < _b.length; _a++) {\n var data = _b[_a];\n this.selectedRowState[this.getPkValue(this.primaryKey, data)] = true;\n }\n }\n else {\n for (var _c = 0, selectedData_1 = selectedData; _c < selectedData_1.length; _c++) {\n var data = selectedData_1[_c];\n this.selectedRowState[this.getPkValue(this.primaryKey, data)] = true;\n }\n }\n }\n }\n else {\n this.selectedRowState = {};\n }\n // (this.getData()).forEach(function (data) {\n // this.selectedRowState[data[this.primaryKey]] = true;\n // })\n }\n else {\n if (state) {\n var selectedStateKeys = Object.keys(this.selectedRowState);\n var unSelectedRowStateKeys = Object.keys(this.unSelectedRowState);\n if (!this.isCheckboxReset) {\n var rowData = (this.parent.groupSettings.columns.length && this.parent.isPersistSelection) ?\n this.parent.currentViewData['records'] : this.parent.currentViewData;\n for (var _d = 0, rowData_1 = rowData; _d < rowData_1.length; _d++) {\n var data = rowData_1[_d];\n if (!isNullOrUndefined(data[this.primaryKey])) {\n var key = data[this.primaryKey].toString();\n if (selectedStateKeys.indexOf(key) === -1 && unSelectedRowStateKeys.indexOf(key) === -1) {\n this.selectedRowState[data[this.primaryKey]] = true;\n }\n }\n }\n }\n }\n else {\n this.selectedRowState = {};\n this.unSelectedRowState = {};\n this.rmtHdrChkbxClicked = false;\n }\n }\n };\n Selection.prototype.getData = function () {\n return this.parent.getDataModule().dataManager.executeLocal(this.parent.getDataModule().generateQuery(true));\n };\n Selection.prototype.getAvailableSelectedData = function () {\n var filteredSearchedSelectedData = new DataManager(this.persistSelectedData).executeLocal(this.parent.getDataModule().generateQuery(true));\n if (this.parent.groupSettings.columns.length && filteredSearchedSelectedData &&\n filteredSearchedSelectedData.records) {\n filteredSearchedSelectedData = filteredSearchedSelectedData.records.slice();\n }\n return filteredSearchedSelectedData;\n };\n Selection.prototype.refreshPersistSelection = function () {\n var rows = this.parent.getRows();\n this.totalRecordsCount = this.parent.getCurrentViewRecords().length;\n if (this.parent.allowPaging) {\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n if (!isNullOrUndefined(rows) && rows.length > 0 && (this.parent.isPersistSelection || this.chkField)) {\n var indexes = [];\n for (var j = 0; j < rows.length; j++) {\n var rowObj = this.getRowObj(rows[parseInt(j.toString(), 10)]);\n var pKey = rowObj ? rowObj.data ? this.getPkValue(this.primaryKey, rowObj.data) : null : null;\n if (pKey === null) {\n return;\n }\n if (this.isPartialSelection && !rowObj.isSelectable) {\n continue;\n }\n var checkState = void 0;\n var chkBox = rows[parseInt(j.toString(), 10)].querySelector('.e-checkselect');\n if (this.selectedRowState[\"\" + pKey] || (this.parent.checkAllRows === 'Check' && this.selectedRowState[\"\" + pKey] &&\n this.totalRecordsCount === Object.keys(this.selectedRowState).length && this.chkAllCollec.indexOf(pKey) < 0)\n || (this.parent.checkAllRows === 'Uncheck' && this.chkAllCollec.indexOf(pKey) > 0 && !this.parent.selectedRowIndex)\n || (this.parent.checkAllRows === 'Intermediate' && !isNullOrUndefined(this.chkField) && rowObj.data[this.chkField])) {\n indexes.push(parseInt(rows[parseInt(j.toString(), 10)].getAttribute(literals.dataRowIndex), 10));\n checkState = true;\n }\n else {\n checkState = false;\n if (this.checkedTarget !== chkBox && this.parent.isCheckBoxSelection && chkBox) {\n removeAddCboxClasses(chkBox.nextElementSibling, checkState);\n }\n }\n this.updatePersistCollection(rows[parseInt(j.toString(), 10)], checkState);\n }\n if (this.isSingleSel() && indexes.length > 0) {\n this.selectRow(indexes[0], true);\n }\n else {\n this.selectRows(indexes);\n }\n }\n if ((this.parent.isCheckBoxSelection || this.parent.selectionSettings.checkboxMode === 'ResetOnRowClick') && this.getCurrentBatchRecordChanges().length > 0) {\n this.setCheckAllState();\n }\n };\n Selection.prototype.actionBegin = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n var editChkBox = this.parent.element.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(editChkBox)) {\n var row = closest(editChkBox, '.' + literals.editedRow);\n if (row) {\n if (this.parent.editSettings.mode === 'Dialog') {\n row = this.parent.element.querySelector('.e-dlgeditrow');\n }\n var rowObj = this.getRowObj(row);\n if (!rowObj) {\n return;\n }\n this.selectedRowState[this.getPkValue(this.primaryKey, rowObj.data)] = rowObj.isSelected = editChkBox.checked;\n }\n else {\n this.isCheckedOnAdd = editChkBox.checked;\n }\n }\n }\n if (this.parent.isPersistSelection && this.isPartialSelection) {\n if (e.requestType === 'paging' && (this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))) {\n this.selectedRowIndexes = [];\n }\n if (e.requestType === 'filtering' || e.requestType === 'searching') {\n this.parent.partialSelectedRecords = [];\n this.parent.disableSelectedRecords = [];\n }\n }\n };\n Selection.prototype.actionComplete = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n if (e.action === 'add') {\n if (this.isCheckedOnAdd) {\n var rowObj = this.parent.getRowObjectFromUID(this.parent.getRows()[e.selectedRow].getAttribute('data-uid'));\n this.selectedRowState[this.getPkValue(this.primaryKey, rowObj.data)] = rowObj.isSelected = this.isCheckedOnAdd;\n }\n this.isHdrSelectAllClicked = false;\n this.setCheckAllState();\n }\n this.refreshPersistSelection();\n }\n if (e.requestType === 'delete' && this.parent.isPersistSelection) {\n var records = e.data;\n var data = records.slice();\n for (var i = 0; i < data.length; i++) {\n var pkValue = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (!isNullOrUndefined(pkValue)) {\n this.updatePersistDelete(pkValue, this.isPartialSelection);\n }\n }\n this.isHdrSelectAllClicked = false;\n this.setCheckAllState();\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n if (e.requestType === 'paging') {\n if (this.parent.isPersistSelection && this.isPartialSelection && this.isHdrSelectAllClicked) {\n var rows = this.parent.getRowsObject();\n var indexes = [];\n for (var i = 0; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)].isSelectable) {\n indexes.push(rows[parseInt(i.toString(), 10)].index);\n }\n }\n if (indexes.length) {\n this.selectRows(indexes);\n }\n }\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n this.prevECIdxs = undefined;\n }\n };\n Selection.prototype.onDataBound = function () {\n if (!this.parent.enableVirtualization && this.parent.isPersistSelection) {\n if (this.selectedRecords.length) {\n this.isPrevRowSelection = true;\n }\n }\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) && this.rmtHdrChkbxClicked) {\n if (this.parent.checkAllRows === 'Intermediate') {\n this.setRowSelection(true);\n }\n else if (this.parent.checkAllRows === 'Uncheck') {\n this.setRowSelection(false);\n }\n }\n if (this.parent.enableVirtualization) {\n this.setCheckAllState();\n }\n if (this.parent.isPersistSelection) {\n this.refreshPersistSelection();\n }\n this.initialRowSelection = this.isRowType() && this.parent.element.querySelectorAll('.e-selectionbackground') &&\n this.parent.getSelectedRows().length ? true : false;\n if (this.parent.isCheckBoxSelection && !this.initialRowSelection) {\n var totalRecords = this.parent.getRowsObject();\n var indexes = [];\n for (var i = 0; i < totalRecords.length; i++) {\n if (totalRecords[parseInt(i.toString(), 10)].isSelected) {\n indexes.push(i);\n }\n }\n if (indexes.length) {\n this.selectRows(indexes);\n }\n this.initialRowSelection = true;\n }\n };\n Selection.prototype.updatePersistSelectedData = function (checkState) {\n if (this.parent.isPersistSelection) {\n var rows = this.parent.getRows();\n for (var i = 0; i < rows.length; i++) {\n this.updatePersistCollection(rows[parseInt(i.toString(), 10)], checkState);\n }\n if (this.parent.checkAllRows === 'Uncheck') {\n this.setRowSelection(false);\n this.persistSelectedData = (this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))\n ? this.persistSelectedData : [];\n }\n else if (this.parent.checkAllRows === 'Check') {\n this.setRowSelection(true);\n this.persistSelectedData = !(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))\n && !this.isPartialSelection ?\n this.parent.groupSettings.columns.length ? this.getData().records.slice() :\n this.getData().slice() : this.persistSelectedData;\n }\n }\n };\n Selection.prototype.checkSelectAllAction = function (checkState) {\n var cRenderer = this.getRenderer();\n var editForm = this.parent.element.querySelector('.e-gridform');\n this.checkedTarget = this.getCheckAllBox();\n if (checkState && this.getCurrentBatchRecordChanges().length) {\n this.parent.checkAllRows = 'Check';\n this.updatePersistSelectedData(checkState);\n this.selectRowsByRange(cRenderer.getVirtualRowIndex(0), cRenderer.getVirtualRowIndex(this.getCurrentBatchRecordChanges().length - 1));\n }\n else {\n this.parent.checkAllRows = 'Uncheck';\n this.updatePersistSelectedData(checkState);\n this.clearSelection();\n }\n this.chkAllCollec = [];\n if (!isNullOrUndefined(editForm)) {\n var editChkBox = editForm.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(editChkBox)) {\n removeAddCboxClasses(editChkBox.nextElementSibling, checkState);\n }\n }\n };\n Selection.prototype.checkSelectAll = function (checkBox) {\n var _this = this;\n var stateStr = this.getCheckAllStatus(checkBox);\n var state = stateStr === 'Check';\n this.isHeaderCheckboxClicked = true;\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) && ((stateStr === 'Uncheck' || this.isCheckboxReset) ||\n (stateStr === 'Intermediate' && this.parent.isPersistSelection))) {\n this.rmtHdrChkbxClicked = true;\n }\n else {\n this.rmtHdrChkbxClicked = false;\n }\n if (this.rmtHdrChkbxClicked && this.isCheckboxReset) {\n this.unSelectedRowState = {};\n }\n this.isCheckboxReset = false;\n if (stateStr === 'Intermediate') {\n if (!this.chkField && !this.parent.isPersistSelection) {\n state = this.getCurrentBatchRecordChanges().some(function (data) {\n return _this.getPkValue(_this.primaryKey, data) in _this.selectedRowState;\n });\n }\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) && this.parent.isPersistSelection) {\n for (var i = 0; i < this.getCurrentBatchRecordChanges().length; i++) {\n if (!isNullOrUndefined(this.getPkValue(this.primaryKey, this.getCurrentBatchRecordChanges()[\"\" + i]))) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (Object.keys(this.selectedRowState).includes((this.getPkValue(this.primaryKey, this.getCurrentBatchRecordChanges()[\"\" + i])).toString())) {\n state = true;\n }\n else {\n state = false;\n break;\n }\n }\n }\n }\n }\n if (this.parent.isPersistSelection && this.parent.allowPaging) {\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n this.checkSelectAllAction(!state);\n this.target = null;\n if (this.getCurrentBatchRecordChanges().length > 0) {\n this.setCheckAllState();\n this.updateSelectedRowIndexes();\n }\n this.triggerChkChangeEvent(checkBox, !state);\n };\n Selection.prototype.getCheckAllStatus = function (ele) {\n var classes = ele ? ele.nextElementSibling.classList :\n this.getCheckAllBox().nextElementSibling.classList;\n var status;\n if (classes.contains('e-check')) {\n status = 'Check';\n }\n else if (classes.contains('e-uncheck')) {\n status = 'Uncheck';\n }\n else if (classes.contains('e-stop')) {\n status = 'Intermediate';\n }\n else {\n status = 'None';\n }\n return status;\n };\n Selection.prototype.checkSelect = function (checkBox) {\n var target = closest(this.checkedTarget, '.' + literals.rowCell);\n var gObj = this.parent;\n this.isMultiCtrlRequest = true;\n var rIndex = 0;\n this.isHeaderCheckboxClicked = false;\n if (isGroupAdaptive(gObj)) {\n var uid = target.parentElement.getAttribute('data-uid');\n if (this.parent.enableVirtualization && this.parent.groupSettings.columns.length) {\n rIndex = parseInt(target.parentElement.getAttribute(literals.dataRowIndex), 10);\n }\n else {\n rIndex = gObj.getRows().map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n }\n }\n else {\n rIndex = parseInt(target.parentElement.getAttribute(literals.dataRowIndex), 10);\n }\n if (this.parent.isPersistSelection && this.parent.element.getElementsByClassName(literals.addedRow).length > 0 &&\n this.parent.editSettings.newRowPosition === 'Top' && !this.parent.editSettings.showAddNewRow) {\n ++rIndex;\n }\n this.rowCellSelectionHandler(rIndex, parseInt(target.getAttribute(literals.dataColIndex), 10));\n this.moveIntoUncheckCollection(closest(target, '.' + literals.row));\n this.setCheckAllState();\n this.isMultiCtrlRequest = false;\n this.triggerChkChangeEvent(checkBox, checkBox.nextElementSibling.classList.contains('e-check'));\n };\n Selection.prototype.moveIntoUncheckCollection = function (row) {\n if (this.parent.checkAllRows === 'Check' || this.parent.checkAllRows === 'Uncheck') {\n var rowObj = this.getRowObj(row);\n var pKey = rowObj && rowObj.data ? this.getPkValue(this.primaryKey, rowObj.data) : null;\n if (!pKey) {\n return;\n }\n if (this.chkAllCollec.indexOf(pKey) < 0) {\n this.chkAllCollec.push(pKey);\n }\n else {\n this.chkAllCollec.splice(this.chkAllCollec.indexOf(pKey), 1);\n }\n }\n };\n Selection.prototype.triggerChkChangeEvent = function (checkBox, checkState) {\n this.parent.trigger(events.checkBoxChange, {\n checked: checkState, selectedRowIndexes: this.parent.getSelectedRowIndexes(),\n target: checkBox\n });\n if (!this.parent.isEdit) {\n this.checkedTarget = null;\n }\n };\n Selection.prototype.updateSelectedRowIndexes = function () {\n if (this.parent.isCheckBoxSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) &&\n this.isPartialSelection && !(this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))\n && this.parent.selectionSettings.persistSelection) {\n if (this.parent.checkAllRows !== 'Uncheck') {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n for (var _i = 0, rowObj_2 = rowObj; _i < rowObj_2.length; _i++) {\n var row = rowObj_2[_i];\n this.selectedRowIndexes.push(row.index);\n }\n }\n }\n if (this.parent.isCheckBoxSelection && this.parent.enableVirtualization && !this.isPartialSelection &&\n (this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))\n && !this.parent.isPersistSelection && this.parent.checkAllRows === 'Check') {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n if (rowObj.length !== this.selectedRowIndexes.length) {\n for (var _a = 0, rowObj_3 = rowObj; _a < rowObj_3.length; _a++) {\n var row = rowObj_3[_a];\n if (this.selectedRowIndexes.indexOf(row.index) <= -1) {\n this.selectedRowIndexes.push(row.index);\n }\n }\n }\n }\n };\n Selection.prototype.updateSelectedRowIndex = function (index) {\n if (this.parent.isCheckBoxSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !(this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))\n && !this.isPartialSelection) {\n if (this.parent.checkAllRows === 'Check') {\n this.selectedRowIndexes = [];\n var dataLength = this.parent.groupSettings.columns.length ? this.getData()['records'].length :\n this.getData().length;\n for (var data = 0; data < dataLength; data++) {\n this.selectedRowIndexes.push(data);\n }\n }\n else if (this.parent.checkAllRows === 'Uncheck') {\n this.selectedRowIndexes = [];\n }\n else {\n var row = this.parent.getRowByIndex(index);\n if (index && row && row.getAttribute('aria-selected') === 'false') {\n var selectedVal = this.selectedRowIndexes.indexOf(index);\n this.selectedRowIndexes.splice(selectedVal, 1);\n }\n }\n }\n };\n Selection.prototype.isAllSelected = function (count) {\n if (this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) {\n return this.getAvailableSelectedData().length === (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling\n ? this.parent.totalDataRecordsCount : this.totalRecordsCount);\n }\n else {\n if (this.isPartialSelection) {\n if (this.parent.allowPaging && this.parent.pageSettings.pageSize < this.parent.pageSettings.totalRecordsCount) {\n var data = this.parent.partialSelectedRecords;\n for (var i = 0; i < data.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (!this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n return true;\n }\n else {\n return this.isSelectAllRowCount(count);\n }\n }\n else {\n var data = (this.parent.groupSettings.columns.length) ? this.getData()['records'] : this.getData();\n for (var i = 0; i < data.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (!this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n return true;\n }\n }\n };\n Selection.prototype.someDataSelected = function () {\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))\n && (this.parent.searchSettings.key.length || this.parent.filterSettings.columns.length)) {\n var filteredSearchedSelectedData = this.getAvailableSelectedData();\n for (var i = 0; i < filteredSearchedSelectedData.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, filteredSearchedSelectedData[parseInt(i.toString(), 10)]);\n if (this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n }\n var data = this.isPartialSelection ? this.parent.partialSelectedRecords\n : (this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) ? [] : this.getData();\n for (var i = 0; i < data.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n return true;\n };\n Selection.prototype.setCheckAllState = function (index, isInteraction) {\n if (this.parent.isCheckBoxSelection || this.parent.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n var checkToSelectAll = false;\n var isFiltered = false;\n var checkedLen = Object.keys(this.selectedRowState).length;\n if (!this.parent.isPersistSelection) {\n checkedLen = this.selectedRowIndexes.length;\n this.totalRecordsCount = this.getCurrentBatchRecordChanges().length;\n }\n if (this.parent.isPersistSelection && !((this.parent.getDataModule().isRemote() ||\n (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) &&\n this.isPartialSelection)\n && (this.parent.searchSettings.key.length || this.parent.filterSettings.columns.length)) {\n isFiltered = true;\n checkToSelectAll = this.isAllSelected(checkedLen);\n }\n var input = this.getCheckAllBox();\n if (input) {\n var spanEle = input.nextElementSibling;\n removeClass([spanEle], ['e-check', 'e-stop', 'e-uncheck']);\n setChecked(input, false);\n input.indeterminate = false;\n var getRecord = this.parent.getDataModule().isRemote() ? [] :\n (this.parent.groupSettings.columns.length) ? this.getData()['records'] : this.getData();\n if ((checkToSelectAll && isFiltered && (this.parent.getDataModule().isRemote() ||\n (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result) ||\n getRecord.length)) || (!isFiltered && ((checkedLen === this.totalRecordsCount && this.totalRecordsCount\n && !this.isPartialSelection && (!(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))\n || this.parent.allowPaging)) ||\n (!this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling\n && this.isPartialSelection && (this.isSelectAllRowCount(checkedLen) || this.isHdrSelectAllClicked))\n || ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !this.parent.allowPaging && ((!(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) &&\n getRecord.length && checkedLen === getRecord.length) || ((this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) &&\n !this.isPartialSelection && ((checkedLen === this.parent.totalDataRecordsCount) || ((this.\n isSelectAllRowCount(checkedLen) || checkedLen === this.totalRecordsCount) && !this.parent.isPersistSelection))) ||\n (this.isPartialSelection && (this.isHdrSelectAllClicked || this.isSelectAllRowCount(checkedLen)))))\n || (checkedLen === this.totalRecordsCount && this.totalRecordsCount && !this.isPartialSelection &&\n !this.parent.allowPaging && !this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling)))) {\n addClass([spanEle], ['e-check']);\n setChecked(input, true);\n if (isInteraction) {\n this.getRenderer().setSelection(null, true, true);\n }\n this.parent.checkAllRows = 'Check';\n }\n else if (((!this.selectedRowIndexes.length && (!this.parent.enableVirtualization ||\n (!this.persistSelectedData.length && !isFiltered) || (isFiltered && this.someDataSelected())) ||\n checkedLen === 0 && this.getCurrentBatchRecordChanges().length === 0) && !this.parent.allowPaging) ||\n (this.parent.allowPaging && (checkedLen === 0 || (checkedLen && isFiltered && this.someDataSelected())))) {\n addClass([spanEle], ['e-uncheck']);\n if (isInteraction) {\n this.getRenderer().setSelection(null, false, true);\n }\n this.parent.checkAllRows = 'Uncheck';\n }\n else {\n addClass([spanEle], ['e-stop']);\n this.parent.checkAllRows = 'Intermediate';\n input.indeterminate = true;\n }\n if (checkedLen === 0 && this.getCurrentBatchRecordChanges().length === 0) {\n addClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n else {\n removeClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n if (this.isPartialSelection) {\n var rowCount = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; }).length;\n if (rowCount === 0 && spanEle.parentElement.querySelector('.e-frame').classList.contains('e-uncheck')) {\n addClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n else {\n removeClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n }\n if ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !this.parent.allowPaging && !(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))) {\n this.updateSelectedRowIndex(index);\n }\n }\n }\n };\n Selection.prototype.isSelectAllRowCount = function (count) {\n var rowCount = 0;\n var rowObj = this.parent.getRowsObject();\n if (this.parent.selectionSettings.persistSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n var dataLen = (this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) ?\n this.parent.totalDataRecordsCount : this.getData() && this.getData().length;\n if (dataLen === rowObj.length) {\n rowCount = rowObj.filter(function (e) { return e.isSelectable; }).length;\n return rowCount && count === rowCount;\n }\n else {\n return false;\n }\n }\n else {\n if (this.parent.allowPaging && this.parent.selectionSettings.persistSelection) {\n rowCount = this.parent.partialSelectedRecords.length + this.parent.disableSelectedRecords.length;\n if (rowCount === this.totalRecordsCount) {\n return this.parent.partialSelectedRecords.length && count === this.parent.partialSelectedRecords.length;\n }\n else {\n return false;\n }\n }\n else {\n rowCount = rowObj.filter(function (e) { return e.isSelectable; }).length;\n return rowCount && count === rowCount;\n }\n }\n };\n Selection.prototype.keyDownHandler = function (e) {\n // Below are keyCode for command key in MAC OS. Safari/Chrome(91-Left command, 93-Right Command), Opera(17), FireFox(224)\n if ((((Browser.info.name === 'chrome') || (Browser.info.name === 'safari')) && (e.keyCode === 91 || e.keyCode === 93)) ||\n (Browser.info.name === 'opera' && e.keyCode === 17) || (Browser.info.name === 'mozilla' && e.keyCode === 224)) {\n this.cmdKeyPressed = true;\n }\n var targetHeadCell = parentsUntil(e.target, 'e-headercell');\n var targetRowCell = parentsUntil(e.target, literals.rowCell);\n var isCheckBox = targetHeadCell ? targetHeadCell.children[0].classList.contains('e-headerchkcelldiv') :\n targetRowCell ? targetRowCell.classList.contains('e-gridchkbox') : false;\n if (isCheckBox && !this.parent.allowKeyboard && e.keyCode === 32) {\n e.preventDefault();\n }\n };\n Selection.prototype.keyUpHandler = function (e) {\n if ((((Browser.info.name === 'chrome') || (Browser.info.name === 'safari')) && (e.keyCode === 91 || e.keyCode === 93)) ||\n (Browser.info.name === 'opera' && e.keyCode === 17) || (Browser.info.name === 'mozilla' && e.keyCode === 224)) {\n this.cmdKeyPressed = false;\n }\n };\n Selection.prototype.clickHandler = function (e) {\n var target = e.target;\n this.actualTarget = target;\n if (!this.isAutoFillSel && !e.ctrlKey && !e.shiftKey) {\n this.startAFCell = this.endAFCell = null;\n }\n if (this.selectionSettings.persistSelection) {\n this.deSelectedData = iterateExtend(this.persistSelectedData);\n }\n if (parentsUntil(target, literals.row) || parentsUntil(target, 'e-headerchkcelldiv') ||\n (this.selectionSettings.allowColumnSelection && target.classList.contains('e-headercell'))) {\n this.isInteracted = true;\n }\n this.cmdKeyPressed = e.metaKey;\n this.isMultiCtrlRequest = e.ctrlKey || this.enableSelectMultiTouch ||\n (this.isMacOS && this.cmdKeyPressed);\n if (!this.parent.allowKeyboard) {\n this.isMultiShiftRequest = false;\n this.isMultiCtrlRequest = false;\n }\n else {\n this.isMultiShiftRequest = e.shiftKey;\n }\n this.isMultiCtrlRequestCell = this.isMultiCtrlRequest;\n this.popUpClickHandler(e);\n var chkSelect = false;\n this.preventFocus = true;\n var checkBox;\n var checkWrap = parentsUntil(target, 'e-checkbox-wrapper');\n this.checkSelectAllClicked = checkWrap && checkWrap.getElementsByClassName('e-checkselectall') ||\n (this.selectionSettings.persistSelection && parentsUntil(target, literals.row)) ? true : false;\n if (this.selectionSettings.persistSelection && this.isPartialSelection && parentsUntil(target, 'e-headerchkcelldiv')\n && !target.querySelector('.e-checkbox-disabled')) {\n this.isHdrSelectAllClicked = true;\n }\n if (checkWrap && checkWrap.querySelectorAll('.e-checkselect,.e-checkselectall').length > 0) {\n checkBox = checkWrap.querySelector('input[type=\"checkbox\"]');\n chkSelect = true;\n }\n this.drawBorders();\n this.updateAutoFillPosition();\n target = parentsUntil(target, literals.rowCell);\n if (this.parent.isReact && (target && !target.parentElement && target.classList.contains('e-rowcell'))) {\n target = this.parent.getCellFromIndex(parseInt(target.getAttribute('index'), 10), parseInt(target.getAttribute('data-colindex'), 10));\n }\n if (this.isRowDragSelected && isNullOrUndefined(target) && this.parent.allowRowDragAndDrop &&\n this.selectionSettings.persistSelection && this.checkSelectAllClicked) {\n this.isRowDragSelected = false;\n }\n if (((target && target.parentElement.classList.contains(literals.row) && !this.parent.selectionSettings.checkboxOnly) || chkSelect)\n && !this.isRowDragSelected) {\n if (this.parent.isCheckBoxSelection) {\n this.isMultiCtrlRequest = true;\n }\n this.target = target;\n if (!isNullOrUndefined(checkBox)) {\n this.checkedTarget = checkBox;\n if (checkBox.classList.contains('e-checkselectall')) {\n this.checkSelectAll(checkBox);\n }\n else {\n this.checkSelect(checkBox);\n }\n }\n else {\n var rIndex = 0;\n rIndex = parseInt(target.parentElement.getAttribute(literals.dataRowIndex), 10);\n if (this.parent.isPersistSelection && !this.parent.editSettings.showAddNewRow\n && this.parent.element.getElementsByClassName(literals.addedRow).length > 0) {\n ++rIndex;\n }\n if (!this.mUPTarget || !this.mUPTarget.isEqualNode(target)) {\n this.rowCellSelectionHandler(rIndex, parseInt(target.getAttribute(literals.dataColIndex), 10));\n }\n if (this.parent.isCheckBoxSelection) {\n this.moveIntoUncheckCollection(closest(target, '.' + literals.row));\n this.setCheckAllState();\n }\n }\n if (!this.parent.isCheckBoxSelection && Browser.isDevice && !this.isSingleSel()) {\n this.showPopup(e);\n }\n }\n else if (e.target.classList.contains('e-headercell') &&\n !e.target.classList.contains('e-stackedheadercell')) {\n var uid = e.target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid');\n this.headerSelectionHandler(this.parent.getColumnIndexByUid(uid));\n }\n this.isMultiCtrlRequest = false;\n this.isMultiCtrlRequestCell = this.isMultiCtrlRequest;\n this.isMultiShiftRequest = false;\n if (isNullOrUndefined(closest(e.target, '.e-unboundcell'))) {\n this.preventFocus = false;\n }\n };\n Selection.prototype.popUpClickHandler = function (e) {\n var target = e.target;\n if (closest(target, '.e-headercell') || e.target.classList.contains(literals.rowCell) ||\n closest(target, '.e-gridpopup')) {\n if (target.classList.contains('e-rowselect')) {\n if (!target.classList.contains('e-spanclicked')) {\n target.classList.add('e-spanclicked');\n this.enableSelectMultiTouch = true;\n }\n else {\n target.classList.remove('e-spanclicked');\n this.enableSelectMultiTouch = false;\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n }\n }\n else {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n };\n Selection.prototype.showPopup = function (e) {\n if (!this.selectionSettings.enableSimpleMultiRowSelection) {\n setCssInGridPopUp(this.parent.element.querySelector('.e-gridpopup'), e, 'e-rowselect e-icons e-icon-rowselect' +\n (!this.isSingleSel() && (this.selectedRecords.length > 1\n || this.selectedRowCellIndexes.length > 1) ? ' e-spanclicked' : ''));\n }\n };\n Selection.prototype.rowCellSelectionHandler = function (rowIndex, cellIndex) {\n if ((!this.isMultiCtrlRequest && !this.isMultiShiftRequest) || this.isSingleSel()) {\n if (!this.isDragged) {\n this.selectRow(rowIndex, this.selectionSettings.enableToggle);\n }\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, this.selectionSettings.enableToggle);\n if (this.selectedRowCellIndexes.length) {\n this.updateAutoFillPosition();\n }\n this.drawBorders();\n }\n else if (this.isMultiShiftRequest) {\n if (this.parent.isCheckBoxSelection || (!this.parent.isCheckBoxSelection &&\n !closest(this.target, '.' + literals.rowCell).classList.contains(literals.gridChkBox))) {\n this.selectRowsByRange(isUndefined(this.prevRowIndex) ? rowIndex : this.prevRowIndex, rowIndex);\n }\n else {\n this.addRowsToSelection([rowIndex]);\n }\n this.selectCellsByRange(isUndefined(this.prevCIdxs) ? { rowIndex: rowIndex, cellIndex: cellIndex } : this.prevCIdxs, { rowIndex: rowIndex, cellIndex: cellIndex });\n this.updateAutoFillPosition();\n this.drawBorders();\n }\n else {\n this.addRowsToSelection([rowIndex]);\n if (this.selectionSettings.mode === 'Both') {\n var checkboxColumn = this.parent.getColumns().find(function (col) { return col.type === 'checkbox'; });\n var checkboxColumnIndexCheck = checkboxColumn && checkboxColumn.index !== cellIndex;\n if (checkboxColumnIndexCheck && !this.isMultiCtrlRequestCell) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, this.selectionSettings.enableToggle);\n }\n else if (!checkboxColumn || checkboxColumnIndexCheck) {\n this.addCellsToSelection([{ rowIndex: rowIndex, cellIndex: cellIndex }]);\n }\n }\n else {\n this.addCellsToSelection([{ rowIndex: rowIndex, cellIndex: cellIndex }]);\n }\n this.showHideBorders('none');\n }\n this.isDragged = false;\n };\n Selection.prototype.onCellFocused = function (e) {\n if (this.parent.frozenRows && e.container.isHeader && e.byKey) {\n if (e.keyArgs.action === 'upArrow') {\n if (this.parent.allowFiltering) {\n e.isJump = e.element.tagName === 'INPUT' ? true : false;\n }\n else {\n e.isJump = e.element.tagName === 'TH' ? true : false;\n }\n }\n else {\n if (e.keyArgs.action === 'downArrow') {\n var rIdx = Number(e.element.parentElement.getAttribute(literals.dataRowIndex));\n e.isJump = rIdx === 0 ? true : false;\n }\n else {\n if (e.keyArgs.action === 'ctrlHome') {\n e.isJump = true;\n }\n }\n }\n }\n var clear = ((e.container.isHeader && e.isJump) ||\n (e.container.isContent && !e.container.isSelectable)) && !(e.byKey && e.keyArgs.action === 'space')\n && !(e.element.classList.contains('e-detailrowexpand') || e.element.classList.contains('e-detailrowcollapse'));\n var headerAction = (e.container.isHeader && e.element.tagName !== 'TD' && !closest(e.element, '.' + literals.rowCell))\n && !(e.byKey && e.keyArgs.action === 'space');\n if (!e.byKey || clear) {\n if (clear && !this.parent.isCheckBoxSelection) {\n this.clearSelection();\n }\n return;\n }\n var _a = e.container.isContent ? e.container.indexes : e.indexes, rowIndex = _a[0], cellIndex = _a[1];\n var prev = this.focus.getPrevIndexes();\n if (e.element.parentElement.querySelector('.e-rowcelldrag') || e.element.parentElement.querySelector('.e-dtdiagonalright')\n || e.element.parentElement.querySelector('.e-dtdiagonaldown')) {\n prev.cellIndex = prev.cellIndex - 1;\n }\n if (this.parent.frozenRows) {\n if (e.container.isHeader && (e.element.tagName === 'TD' || closest(e.element, '.' + literals.rowCell))) {\n var hdrLength = this.parent.getHeaderTable().querySelector('thead').childElementCount;\n if (this.parent.editSettings.showAddNewRow && this.parent.editSettings.newRowPosition === 'Top' &&\n e.keyArgs.action === 'upArrow') {\n hdrLength++;\n }\n rowIndex -= hdrLength;\n prev.rowIndex = !isNullOrUndefined(prev.rowIndex) ? prev.rowIndex - hdrLength : null;\n }\n else {\n rowIndex += this.parent.frozenRows;\n prev.rowIndex = prev.rowIndex === 0 || !isNullOrUndefined(prev.rowIndex) ? prev.rowIndex + this.parent.frozenRows : null;\n }\n }\n if (this.parent.enableInfiniteScrolling && this.parent.infiniteScrollSettings.enableCache) {\n rowIndex = parseInt(e.element.parentElement.getAttribute('data-rowindex'), 10);\n }\n if ((headerAction || (['ctrlPlusA', 'escape'].indexOf(e.keyArgs.action) === -1 &&\n e.keyArgs.action !== 'space' && rowIndex === prev.rowIndex && cellIndex === prev.cellIndex)) &&\n !this.selectionSettings.allowColumnSelection) {\n return;\n }\n if (this.parent.enableVirtualization && this.parent.allowGrouping && this.parent.groupSettings.columns.length) {\n rowIndex = parseInt(e.element.parentElement.getAttribute('data-rowindex'), 10);\n }\n if (this.parent.editSettings.showAddNewRow && this.parent.editSettings.newRowPosition === 'Top' &&\n (!this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling) && e.keyArgs.action === 'downArrow') {\n rowIndex--;\n }\n this.preventFocus = true;\n var columnIndex = this.getKeyColIndex(e);\n if (this.needColumnSelection) {\n cellIndex = columnIndex;\n }\n if (this.parent.element.classList.contains('e-gridcell-read') && (e.keyArgs.action === 'tab' || e.keyArgs.action === 'shiftTab'\n || e.keyArgs.action === 'rightArrow' || e.keyArgs.action === 'leftArrow')) {\n var targetLabel = this.target.getAttribute('aria-label');\n targetLabel = this.target.innerHTML + ' column header ' + this.parent.getColumnByIndex(cellIndex).field;\n this.target.setAttribute('aria-label', targetLabel);\n }\n switch (e.keyArgs.action) {\n case 'downArrow':\n case 'upArrow':\n case 'enter':\n case 'shiftEnter':\n this.target = e.element;\n this.isKeyAction = true;\n this.applyDownUpKey(rowIndex, cellIndex);\n break;\n case 'rightArrow':\n case 'leftArrow':\n this.applyRightLeftKey(rowIndex, cellIndex);\n break;\n case 'shiftDown':\n case 'shiftUp':\n this.shiftDownKey(rowIndex, cellIndex);\n break;\n case 'shiftLeft':\n case 'shiftRight':\n this.applyShiftLeftRightKey(rowIndex, cellIndex);\n break;\n case 'home':\n case 'end':\n cellIndex = e.keyArgs.action === 'end' ? this.getLastColIndex(rowIndex) : 0;\n this.applyHomeEndKey(rowIndex, cellIndex);\n break;\n case 'ctrlHome':\n case 'ctrlEnd':\n this.applyCtrlHomeEndKey(rowIndex, cellIndex);\n break;\n case 'escape':\n this.clearSelection();\n if (this.parent.clipboardModule) {\n window.navigator['clipboard'].writeText('');\n }\n break;\n case 'ctrlPlusA':\n this.ctrlPlusA();\n break;\n case 'space':\n this.applySpaceSelection(e.element);\n break;\n case 'tab':\n if (this.parent.editSettings.allowNextRowEdit) {\n this.selectRow(rowIndex);\n }\n break;\n }\n this.needColumnSelection = false;\n this.preventFocus = false;\n this.positionBorders();\n if (this.parent.isFrozenGrid()) {\n this.showHideBorders('none', true);\n this.refreshFrozenBorders();\n }\n this.updateAutoFillPosition();\n };\n Selection.prototype.getKeyColIndex = function (e) {\n var uid;\n var index = null;\n var stackedHeader = e.element.querySelector('.e-stackedheadercelldiv');\n if (this.selectionSettings.allowColumnSelection && parentsUntil(e.element, 'e-columnheader')) {\n this.needColumnSelection = e.container.isHeader ? true : false;\n if (stackedHeader) {\n if (e.keyArgs.action === 'rightArrow' || e.keyArgs.action === 'leftArrow') {\n return index;\n }\n uid = stackedHeader.getAttribute('e-mappinguid');\n var innerColumn = this.getstackedColumns(this.parent.getColumnByUid(uid).columns);\n var lastIndex = this.parent.getColumnIndexByUid(innerColumn[innerColumn.length - 1].uid);\n var firstIndex = this.parent.getColumnIndexByUid(innerColumn[0].uid);\n index = this.prevColIndex >= lastIndex ? firstIndex : lastIndex;\n }\n else {\n index = this.parent.getColumnIndexByUid(e.element\n .querySelector('.e-headercelldiv').getAttribute('e-mappinguid'));\n }\n }\n return index;\n };\n /**\n * Apply ctrl + A key selection\n *\n * @returns {void}\n * @hidden\n */\n Selection.prototype.ctrlPlusA = function () {\n if (this.isRowType() && !this.isSingleSel()) {\n var rowObj = this.parent.getRowsObject();\n this.selectRowsByRange(rowObj[0].index, rowObj[rowObj.length - 1].index);\n }\n if (this.isCellType() && !this.isSingleSel()) {\n this.selectCellsByRange({ rowIndex: 0, cellIndex: 0 }, { rowIndex: this.parent.getRows().length - 1, cellIndex: this.parent.getColumns().length - 1 });\n }\n };\n Selection.prototype.applySpaceSelection = function (target) {\n if (target.classList.contains('e-checkselectall')) {\n this.checkedTarget = target;\n this.checkSelectAll(this.checkedTarget);\n }\n else {\n if (target.classList.contains('e-checkselect')) {\n this.checkedTarget = target;\n this.checkSelect(this.checkedTarget);\n }\n }\n };\n Selection.prototype.applyDownUpKey = function (rowIndex, cellIndex) {\n var gObj = this.parent;\n if (this.parent.isCheckBoxSelection && this.parent.checkAllRows === 'Check' && !this.selectionSettings.persistSelection &&\n !this.selectionSettings.checkboxOnly) {\n this.checkSelectAllAction(false);\n this.checkedTarget = null;\n }\n if (this.isRowType() && !this.selectionSettings.checkboxOnly) {\n if (this.parent.frozenRows) {\n this.selectRow(rowIndex, true);\n this.applyUpDown(gObj.selectedRowIndex);\n }\n else {\n this.selectRow(rowIndex, true);\n this.applyUpDown(gObj.selectedRowIndex);\n }\n }\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumn(cellIndex);\n }\n };\n Selection.prototype.applyUpDown = function (rowIndex) {\n if (rowIndex < 0) {\n return;\n }\n if (!this.target) {\n this.target = this.parent.getRows()[0].children[this.parent.groupSettings.columns.length || 0];\n }\n var cIndex = parseInt(this.target.getAttribute(literals.dataColIndex), 10);\n var row = this.contentRenderer.getRowByIndex(rowIndex);\n if (row) {\n this.target = row.getElementsByClassName(literals.rowCell)[parseInt(cIndex.toString(), 10)];\n }\n this.addAttribute(this.target);\n if (this.parent.element.classList.contains('e-gridcell-read')) {\n var targetLabel = this.target.getAttribute('aria-label');\n targetLabel = this.target.innerHTML;\n this.target.setAttribute('aria-label', targetLabel);\n }\n };\n Selection.prototype.applyRightLeftKey = function (rowIndex, cellIndex) {\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumn(cellIndex);\n }\n else if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n this.addAttribute(this.target);\n }\n };\n Selection.prototype.applyHomeEndKey = function (rowIndex, cellIndex) {\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n else {\n this.addAttribute(this.parent.getCellFromIndex(rowIndex, cellIndex));\n }\n };\n /**\n * Apply shift+down key selection\n *\n * @param {number} rowIndex - specfies the rowIndex\n * @param {number} cellIndex - specifies the CellIndex\n * @returns {void}\n * @hidden\n */\n Selection.prototype.shiftDownKey = function (rowIndex, cellIndex) {\n this.isMultiShiftRequest = true;\n if (this.isRowType() && !this.isSingleSel()) {\n if (!isUndefined(this.prevRowIndex)) {\n this.selectRowsByRange(this.prevRowIndex, rowIndex);\n this.applyUpDown(rowIndex);\n }\n else if (this.isPartialSelection) {\n this.selectRow(rowIndex, true);\n }\n else {\n this.selectRow(0, true);\n }\n }\n if (this.isCellType() && !this.isSingleSel()) {\n this.selectCellsByRange(this.prevCIdxs || { rowIndex: 0, cellIndex: 0 }, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isMultiShiftRequest = false;\n };\n Selection.prototype.applyShiftLeftRightKey = function (rowIndex, cellIndex) {\n this.isMultiShiftRequest = true;\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumnsByRange(this.prevColIndex, cellIndex);\n }\n else {\n this.selectCellsByRange(this.prevCIdxs, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isMultiShiftRequest = false;\n };\n Selection.prototype.getstackedColumns = function (column) {\n var innerColumnIndexes = [];\n for (var i = 0, len = column.length; i < len; i++) {\n if (column[parseInt(i.toString(), 10)].columns) {\n this.getstackedColumns(column[parseInt(i.toString(), 10)].columns);\n }\n else {\n innerColumnIndexes.push(column[parseInt(i.toString(), 10)]);\n }\n }\n return innerColumnIndexes;\n };\n Selection.prototype.applyCtrlHomeEndKey = function (rowIndex, cellIndex) {\n if (this.isRowType()) {\n this.selectRow(rowIndex, true);\n this.addAttribute(this.parent.getCellFromIndex(rowIndex, cellIndex));\n }\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n };\n Selection.prototype.addRemoveClassesForRow = function (row, isAdd, clearAll) {\n var args = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n args[_i - 3] = arguments[_i];\n }\n if (row) {\n var cells = [].slice.call(row.getElementsByClassName(literals.rowCell));\n var detailIndentCell = row.querySelector('.e-detailrowcollapse') || row.querySelector('.e-detailrowexpand');\n var dragdropIndentCell = row.querySelector('.e-rowdragdrop');\n if (detailIndentCell) {\n cells.push(detailIndentCell);\n }\n if (dragdropIndentCell) {\n cells.push(dragdropIndentCell);\n }\n addRemoveActiveClasses.apply(void 0, [cells, isAdd].concat(args));\n }\n this.getRenderer().setSelection(row ? row.getAttribute('data-uid') : null, isAdd, clearAll);\n };\n Selection.prototype.isRowType = function () {\n return this.selectionSettings.mode === 'Row' || this.selectionSettings.mode === 'Both';\n };\n Selection.prototype.isCellType = function () {\n return this.selectionSettings.mode === 'Cell' || this.selectionSettings.mode === 'Both';\n };\n Selection.prototype.isSingleSel = function () {\n return this.selectionSettings.type === 'Single';\n };\n Selection.prototype.getRenderer = function () {\n if (isNullOrUndefined(this.contentRenderer)) {\n this.contentRenderer = this.factory.getRenderer(RenderType.Content);\n }\n return this.contentRenderer;\n };\n /**\n * Gets the collection of selected records.\n *\n * @returns {Object[]} returns the Object\n */\n Selection.prototype.getSelectedRecords = function () {\n var selectedData = [];\n if (!this.selectionSettings.persistSelection && this.selectedRecords.length) {\n selectedData = this.parent.getRowsObject().filter(function (row) { return row.isSelected; })\n .map(function (m) { return m.data; });\n }\n else {\n selectedData = this.persistSelectedData;\n }\n return selectedData;\n };\n /**\n * Select the column by passing start column index\n *\n * @param {number} index - specifies the index\n * @returns {void}\n */\n Selection.prototype.selectColumn = function (index) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[parseInt(index.toString(), 10)])) {\n return;\n }\n var column = gObj.getColumnByIndex(index);\n var selectedCol = gObj.getColumnHeaderByUid(column.uid);\n var isColSelected = selectedCol.classList.contains('e-columnselection');\n if ((!gObj.selectionSettings.allowColumnSelection)) {\n return;\n }\n var isMultiColumns = this.selectedColumnsIndexes.length > 1 &&\n this.selectedColumnsIndexes.indexOf(index) > -1;\n this.clearColDependency();\n if (!isColSelected || !this.selectionSettings.enableToggle || isMultiColumns) {\n var args = {\n columnIndex: index, headerCell: selectedCol,\n column: column,\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(args, events.columnSelecting);\n if (args.cancel) {\n this.disableInteracted();\n return;\n }\n if (!(gObj.selectionSettings.enableToggle && index === this.prevColIndex && isColSelected) || isMultiColumns) {\n this.updateColSelection(selectedCol, index);\n }\n var selectedArgs = {\n columnIndex: index, headerCell: selectedCol,\n column: column,\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, events.columnSelected);\n }\n this.updateColProps(index);\n };\n /**\n * Select the columns by passing start and end column index\n *\n * @param {number} startIndex - specifies the start index\n * @param {number} endIndex - specifies the end index\n * @returns {void}\n */\n Selection.prototype.selectColumnsByRange = function (startIndex, endIndex) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[parseInt(startIndex.toString(), 10)])) {\n return;\n }\n var indexes = [];\n if (gObj.selectionSettings.type === 'Single' || isNullOrUndefined(endIndex)) {\n indexes[0] = startIndex;\n }\n else {\n var min = startIndex < endIndex;\n for (var i = startIndex; min ? i <= endIndex : i >= endIndex; min ? i++ : i--) {\n indexes.push(i);\n }\n }\n this.selectColumns(indexes);\n };\n /**\n * Select the columns by passing column indexes\n *\n * @param {number[]} columnIndexes - specifies the columnIndexes\n * @returns {void}\n */\n Selection.prototype.selectColumns = function (columnIndexes) {\n var gObj = this.parent;\n var selectedCol = this.getselectedCols();\n if (gObj.selectionSettings.type === 'Single') {\n columnIndexes = [columnIndexes[0]];\n }\n if (!gObj.selectionSettings.allowColumnSelection) {\n return;\n }\n this.clearColDependency();\n var selectingArgs = {\n columnIndex: columnIndexes[0], headerCell: selectedCol,\n columnIndexes: columnIndexes,\n column: gObj.getColumnByIndex(columnIndexes[0]),\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(selectingArgs, events.columnSelecting);\n if (selectingArgs.cancel) {\n this.disableInteracted();\n return;\n }\n for (var i = 0, len = columnIndexes.length; i < len; i++) {\n this.updateColSelection(gObj.getColumnHeaderByUid(gObj.getColumnByIndex(columnIndexes[parseInt(i.toString(), 10)]).uid), columnIndexes[parseInt(i.toString(), 10)]);\n }\n selectedCol = this.getselectedCols();\n var selectedArgs = {\n columnIndex: columnIndexes[0], headerCell: selectedCol,\n columnIndexes: columnIndexes,\n column: gObj.getColumnByIndex(columnIndexes[0]),\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, events.columnSelected);\n this.updateColProps(columnIndexes[0]);\n };\n /**\n * Select the column with existing column by passing column index\n *\n * @param {number} startIndex - specifies the start index\n * @returns {void}\n */\n Selection.prototype.selectColumnWithExisting = function (startIndex) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[parseInt(startIndex.toString(), 10)])) {\n return;\n }\n var newCol = gObj.getColumnHeaderByUid(gObj.getColumnByIndex(startIndex).uid);\n var selectedCol = this.getselectedCols();\n if (gObj.selectionSettings.type === 'Single') {\n this.clearColDependency();\n }\n if (!gObj.selectionSettings.allowColumnSelection) {\n return;\n }\n if (this.selectedColumnsIndexes.indexOf(startIndex) > -1) {\n this.clearColumnSelection(startIndex);\n }\n else {\n var selectingArgs = {\n columnIndex: startIndex, headerCell: selectedCol,\n columnIndexes: this.selectedColumnsIndexes,\n column: gObj.getColumnByIndex(startIndex),\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(selectingArgs, events.columnSelecting);\n if (selectingArgs.cancel) {\n this.disableInteracted();\n return;\n }\n this.updateColSelection(newCol, startIndex);\n selectedCol = this.getselectedCols();\n var selectedArgs = {\n columnIndex: startIndex, headerCell: selectedCol,\n column: gObj.getColumnByIndex(startIndex),\n columnIndexes: this.selectedColumnsIndexes,\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, events.columnSelected);\n }\n this.updateColProps(startIndex);\n };\n /**\n * Clear the column selection\n *\n * @param {number} clearIndex - specifies the clearIndex\n * @returns {void}\n */\n Selection.prototype.clearColumnSelection = function (clearIndex) {\n if (this.isColumnSelected) {\n var gObj = this.parent;\n if (!isNullOrUndefined(clearIndex) && this.selectedColumnsIndexes.indexOf(clearIndex) === -1) {\n return;\n }\n var index = !isNullOrUndefined(clearIndex) ? clearIndex :\n this.selectedColumnsIndexes[this.selectedColumnsIndexes.length - 1];\n var column = gObj.getColumnByIndex(index);\n var selectedCol = gObj.getColumnHeaderByUid(column.uid);\n var deselectedArgs = {\n columnIndex: index, headerCell: selectedCol,\n columnIndexes: this.selectedColumnsIndexes,\n column: column,\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted\n };\n var isCanceled = this.columnDeselect(deselectedArgs, events.columnDeselecting);\n if (isCanceled) {\n this.disableInteracted();\n return;\n }\n var selectedHeader = !isNullOrUndefined(clearIndex) ? [selectedCol] :\n [].slice.call(gObj.getHeaderContent().getElementsByClassName('e-columnselection'));\n var selectedCells = this.getSelectedColumnCells(clearIndex);\n for (var i = 0, len = selectedHeader.length; i < len; i++) {\n addRemoveActiveClasses([selectedHeader[parseInt(i.toString(), 10)]], false, 'e-columnselection');\n }\n for (var i = 0, len = selectedCells.length; i < len; i++) {\n addRemoveActiveClasses([selectedCells[parseInt(i.toString(), 10)]], false, 'e-columnselection');\n }\n if (!isNullOrUndefined(clearIndex)) {\n this.selectedColumnsIndexes.splice(this.selectedColumnsIndexes.indexOf(clearIndex), 1);\n this.parent.getColumns()[parseInt(clearIndex.toString(), 10)].isSelected = false;\n }\n else {\n this.columnDeselect(deselectedArgs, events.columnDeselected);\n this.selectedColumnsIndexes = [];\n this.isColumnSelected = false;\n this.parent.getColumns().filter(function (col) { return col.isSelected = false; });\n }\n }\n };\n Selection.prototype.getselectedCols = function () {\n var gObj = this.parent;\n var selectedCol;\n if (this.selectedColumnsIndexes.length > 1) {\n selectedCol = [];\n for (var i = 0; i < this.selectedColumnsIndexes.length; i++) {\n (selectedCol).push(gObj.getColumnHeaderByUid(gObj.getColumnByIndex(this.selectedColumnsIndexes[parseInt(i.toString(), 10)]).uid));\n }\n }\n else {\n selectedCol = gObj.getColumnHeaderByUid(gObj.getColumnByIndex(this.selectedColumnsIndexes[0]).uid);\n }\n return selectedCol;\n };\n Selection.prototype.getSelectedColumnCells = function (clearIndex) {\n var gObj = this.parent;\n var isRowTemplate = !isNullOrUndefined(this.parent.rowTemplate);\n var rows = isRowTemplate ? gObj.getRows() : gObj.getDataRows();\n var seletedcells = [];\n var selectionString = !isNullOrUndefined(clearIndex) ? '[data-colindex=\"' + clearIndex + '\"]' : '.e-columnselection';\n for (var i = 0, len = rows.length; i < len; i++) {\n seletedcells = seletedcells.concat([].slice.call(rows[parseInt(i.toString(), 10)].querySelectorAll(selectionString)));\n }\n return seletedcells;\n };\n Selection.prototype.columnDeselect = function (args, event) {\n if (event === 'columnDeselected') {\n delete args.cancel;\n }\n this.onActionComplete(args, event);\n return args.cancel;\n };\n Selection.prototype.updateColProps = function (startIndex) {\n this.prevColIndex = startIndex;\n this.isColumnSelected = this.selectedColumnsIndexes.length && true;\n };\n Selection.prototype.clearColDependency = function () {\n this.clearColumnSelection();\n this.selectedColumnsIndexes = [];\n };\n Selection.prototype.updateColSelection = function (selectedCol, startIndex) {\n if (isNullOrUndefined(this.parent.getColumns()[parseInt(startIndex.toString(), 10)])) {\n return;\n }\n var isRowTemplate = !isNullOrUndefined(this.parent.rowTemplate);\n var rows = isRowTemplate ? this.parent.getRows() : this.parent.getDataRows();\n this.selectedColumnsIndexes.push(startIndex);\n this.parent.getColumns()[parseInt(startIndex.toString(), 10)].isSelected = true;\n startIndex = startIndex + this.parent.getIndentCount();\n addRemoveActiveClasses([selectedCol], true, 'e-columnselection');\n for (var j = 0, len = rows.length; j < len; j++) {\n if (rows[parseInt(j.toString(), 10)].classList.contains(literals.row)) {\n if ((rows[parseInt(j.toString(), 10)].classList.contains(literals.editedRow)\n || rows[parseInt(j.toString(), 10)].classList.contains(literals.addedRow))\n && this.parent.editSettings.mode === 'Normal'\n && !isNullOrUndefined(rows[parseInt(j.toString(), 10)].querySelector('tr').childNodes[parseInt(startIndex.toString(), 10)])) {\n addRemoveActiveClasses([rows[parseInt(j.toString(), 10)].querySelector('tr').childNodes[parseInt(startIndex.toString(), 10)]], true, 'e-columnselection');\n }\n else {\n if (this.parent.isSpan && this.parent.isFrozenGrid()) {\n var cells = rows[parseInt(j.toString(), 10)].querySelectorAll('.e-rowcell');\n for (var i = 0; i < cells.length; i++) {\n if (cells[parseInt(i.toString(), 10)].getAttribute('aria-colindex') === selectedCol.getAttribute('aria-colindex')) {\n addRemoveActiveClasses([cells[parseInt(i.toString(), 10)]], true, 'e-columnselection');\n }\n }\n }\n else if (!isNullOrUndefined(rows[parseInt(j.toString(), 10)].childNodes[parseInt(startIndex.toString(), 10)])) {\n addRemoveActiveClasses([rows[parseInt(j.toString(), 10)].childNodes[parseInt(startIndex.toString(), 10)]], true, 'e-columnselection');\n }\n }\n }\n }\n };\n Selection.prototype.headerSelectionHandler = function (colIndex) {\n if ((!this.isMultiCtrlRequest && !this.isMultiShiftRequest) || this.isSingleSel()) {\n this.selectColumn(colIndex);\n }\n else if (this.isMultiShiftRequest) {\n this.selectColumnsByRange(isUndefined(this.prevColIndex) ? colIndex : this.prevColIndex, colIndex);\n }\n else {\n this.selectColumnWithExisting(colIndex);\n }\n };\n // eslint-disable-next-line camelcase\n Selection.prototype.addEventListener_checkbox = function () {\n var _this = this;\n this.parent.on(events.dataReady, this.dataReady, this);\n this.onDataBoundFunction = this.onDataBound.bind(this);\n this.parent.addEventListener(events.dataBound, this.onDataBoundFunction);\n this.parent.on(events.refreshInfinitePersistSelection, this.onDataBoundFunction);\n this.parent.on(events.contentReady, this.checkBoxSelectionChanged, this);\n this.parent.on(events.beforeRefreshOnDataChange, this.initPerisistSelection, this);\n this.parent.on(events.onEmpty, this.setCheckAllForEmptyGrid, this);\n this.actionCompleteFunc = this.actionCompleteHandler.bind(this);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.on(events.click, this.clickHandler, this);\n this.resizeEndFn = function () {\n _this.updateAutoFillPosition();\n _this.drawBorders();\n };\n this.resizeEndFn.bind(this);\n this.parent.addEventListener(events.resizeStop, this.resizeEndFn);\n };\n // eslint-disable-next-line camelcase\n Selection.prototype.removeEventListener_checkbox = function () {\n this.parent.off(events.dataReady, this.dataReady);\n this.parent.removeEventListener(events.dataBound, this.onDataBoundFunction);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.off(events.refreshInfinitePersistSelection, this.onDataBoundFunction);\n this.parent.off(events.onEmpty, this.setCheckAllForEmptyGrid);\n this.parent.off(events.click, this.clickHandler);\n this.parent.removeEventListener(events.resizeStop, this.resizeEndFn);\n this.parent.off(events.beforeRefreshOnDataChange, this.initPerisistSelection);\n };\n Selection.prototype.setCheckAllForEmptyGrid = function () {\n var checkAllBox = this.getCheckAllBox();\n if (checkAllBox) {\n this.parent.isCheckBoxSelection = true;\n var spanEle = checkAllBox.nextElementSibling;\n removeClass([spanEle], ['e-check', 'e-stop', 'e-uncheck']);\n addClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n };\n Selection.prototype.dataReady = function (e) {\n this.isHeaderCheckboxClicked = false;\n var isInfinitecroll = this.parent.enableInfiniteScrolling && e.requestType === 'infiniteScroll';\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection && !isInfinitecroll) {\n this.disableUI = !this.parent.enableImmutableMode && !(e.requestType === 'save' && e['action'] === 'add');\n this.clearSelection();\n this.setCheckAllState();\n this.disableUI = false;\n }\n };\n Selection.prototype.actionCompleteHandler = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n this.refreshPersistSelection();\n }\n };\n Selection.prototype.selectRowIndex = function (index) {\n this.parent.isSelectedRowIndexUpdating = true;\n if ((isNullOrUndefined(this.parent.selectedRowIndex) || this.parent.selectedRowIndex === -1) || !this.parent.enablePersistence) {\n this.parent.selectedRowIndex = index;\n }\n else {\n this.parent.selectedRowIndex = -1;\n }\n };\n Selection.prototype.disableInteracted = function () {\n this.isInteracted = false;\n };\n Selection.prototype.activeTarget = function () {\n this.actualTarget = this.isInteracted ? this.actualTarget : null;\n };\n return Selection;\n}());\nexport { Selection };\n","import { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { isActionPrevent } from '../base/util';\n/**\n * The `Search` module is used to handle search action.\n */\nvar Search = /** @class */ (function () {\n /**\n * Constructor for Grid search module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function Search(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * Checks if the input string contains non-numeric characters.\n *\n * @param input The string to be checked for non-numeric characters.\n * @returns `true` if the input string contains non-numeric characters, `false` otherwise.\n */\n Search.prototype.hasNonNumericCharacters = function (searchString) {\n var decimalFound = false;\n for (var _i = 0, searchString_1 = searchString; _i < searchString_1.length; _i++) {\n var char = searchString_1[_i];\n if ((char < '0' || char > '9') && char !== '.') {\n return true;\n }\n if (char === '.') {\n if (decimalFound) {\n // If decimal is found more than once, it's not valid\n return true;\n }\n decimalFound = true;\n }\n }\n return false;\n };\n /**\n * Searches Grid records by given key.\n *\n * > You can customize the default search action by using [`searchSettings`](./searchsettings/).\n *\n * @param {string} searchString - Defines the key.\n * @returns {void}\n */\n Search.prototype.search = function (searchString) {\n var gObj = this.parent;\n searchString = isNullOrUndefined(searchString) ? '' : searchString;\n if (isActionPrevent(gObj)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.search, arg1: searchString });\n return;\n }\n if (searchString !== gObj.searchSettings.key) {\n // Check searchString is number and parseFloat to remove trailing zeros\n if (searchString !== '' && !this.hasNonNumericCharacters(searchString)) {\n if (searchString === '.') {\n gObj.searchSettings.key = searchString.toString();\n }\n else {\n gObj.searchSettings.key = parseFloat(searchString).toString();\n }\n }\n else {\n gObj.searchSettings.key = searchString.toString();\n }\n gObj.dataBind();\n }\n else if (this.refreshSearch) {\n gObj.refresh();\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Search.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(events.searchComplete, this.onSearchComplete, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.actionCompleteFunc = this.onActionComplete.bind(this);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.on(events.cancelBegin, this.cancelBeginEvent, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Search.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(events.searchComplete, this.onSearchComplete);\n this.parent.off(events.destroy, this.destroy);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.off(events.cancelBegin, this.cancelBeginEvent);\n };\n /**\n * To destroy the print\n *\n * @returns {void}\n * @hidden\n */\n Search.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @param {NotifyArgs} e - specfies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Search.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n if (!isNullOrUndefined(e.properties.key)) {\n this.parent.notify(events.modelChanged, {\n requestType: 'searching', type: events.actionBegin, searchString: this.parent.searchSettings.key\n });\n }\n else {\n this.parent.notify(events.modelChanged, {\n requestType: 'searching', type: events.actionBegin\n });\n }\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Search.prototype.onSearchComplete = function (e) {\n this.parent.trigger(events.actionComplete, extend(e, {\n searchString: this.parent.searchSettings.key, requestType: 'searching', type: events.actionComplete\n }));\n };\n /**\n * The function used to store the requestType\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Search.prototype.onActionComplete = function (e) {\n this.refreshSearch = e.requestType !== 'searching';\n };\n Search.prototype.cancelBeginEvent = function (e) {\n if (e.requestType === 'searching') {\n this.parent.setProperties({ searchSettings: { key: '' } }, true);\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Search.prototype.getModuleName = function () {\n return 'search';\n };\n return Search;\n}());\nexport { Search };\n","import { isNullOrUndefined, remove } from '@syncfusion/ej2-base';\nimport { iterateArrayOrObject, isGroupAdaptive, isActionPrevent, addRemoveEventListener } from '../base/util';\nimport { ColumnWidthService } from '../services/width-controller';\nimport * as events from '../base/constant';\n/**\n * The `ShowHide` module is used to control column visibility.\n */\nvar ShowHide = /** @class */ (function () {\n /**\n * Constructor for the show hide module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function ShowHide(parent) {\n this.colName = [];\n this.isShowHide = false;\n this.parent = parent;\n this.addEventListener();\n this.widthService = new ColumnWidthService(parent);\n }\n ShowHide.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.batchCancel, handler: this.batchChanges },\n { event: events.batchCnfrmDlgCancel, handler: this.resetColumnState }\n ];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n ShowHide.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n ShowHide.prototype.batchChanges = function () {\n if (this.isShowHide) {\n this.isShowHide = false;\n this.setVisible(this.colName, this.changedCol);\n this.changedCol = this.colName = [];\n }\n };\n /**\n * Shows a column by column name.\n *\n * @param {string|string[]} columnName - Defines a single or collection of column names to show.\n * @param {string} showBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n ShowHide.prototype.show = function (columnName, showBy) {\n var keys = this.getToggleFields(columnName);\n var columns = this.getColumns(keys, showBy);\n this.parent.notify(events.tooltipDestroy, { module: 'edit' });\n for (var i = 0; i < columns.length; i++) {\n columns[parseInt(i.toString(), 10)].visible = true;\n }\n this.setVisible(columns);\n };\n /**\n * Hides a column by column name.\n *\n * @param {string|string[]} columnName - Defines a single or collection of column names to hide.\n * @param {string} hideBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n ShowHide.prototype.hide = function (columnName, hideBy) {\n var keys = this.getToggleFields(columnName);\n var columns = this.getColumns(keys, hideBy);\n this.parent.notify(events.tooltipDestroy, { module: 'edit' });\n for (var i = 0; i < columns.length; i++) {\n columns[parseInt(i.toString(), 10)].visible = false;\n }\n this.setVisible(columns);\n };\n ShowHide.prototype.getToggleFields = function (key) {\n var finalized = [];\n if (typeof key === 'string') {\n finalized = [key];\n }\n else {\n finalized = key;\n }\n return finalized;\n };\n ShowHide.prototype.getColumns = function (keys, getKeyBy) {\n var _this = this;\n var columns = iterateArrayOrObject(keys, function (key) {\n return iterateArrayOrObject(_this.parent.columnModel, function (item) {\n if (item[\"\" + getKeyBy] === key) {\n return item;\n }\n return undefined;\n })[0];\n });\n return columns;\n };\n ShowHide.prototype.batchActionPrevent = function (columns, changedStateColumns) {\n if (changedStateColumns === void 0) { changedStateColumns = []; }\n if (isActionPrevent(this.parent)) {\n this.colName = columns;\n this.changedCol = changedStateColumns;\n this.parent.closeEdit();\n return false;\n }\n return true;\n };\n ShowHide.prototype.resetColumnState = function () {\n if (this.isShowHide) {\n for (var i = 0; i < this.colName.length; i++) {\n this.colName[parseInt(i.toString(), 10)].visible = !this.colName[parseInt(i.toString(), 10)].visible;\n }\n }\n };\n /**\n * Shows or hides columns by given column collection.\n *\n * @private\n * @param {Column[]} columns - Specifies the columns.\n * @param {Column[]} changedStateColumns - specifies the changedStateColumns\n * @returns {void}\n */\n ShowHide.prototype.setVisible = function (columns, changedStateColumns) {\n var _this = this;\n if (changedStateColumns === void 0) { changedStateColumns = []; }\n this.isShowHide = true;\n if (!this.batchActionPrevent(columns, changedStateColumns)) {\n return;\n }\n changedStateColumns = (changedStateColumns.length > 0) ? changedStateColumns : columns;\n var args = {\n requestType: 'columnstate',\n cancel: false,\n columns: changedStateColumns\n };\n var cancel = 'cancel';\n if (this.parent.enableInfiniteScrolling && this.parent.allowGrouping\n && this.parent.groupModule.groupSettings.columns.length > 0) {\n this.parent.contentModule.visibleRows = [];\n }\n this.parent.trigger(events.actionBegin, args, function (showHideArgs) {\n var currentViewCols = _this.parent.getColumns();\n columns = isNullOrUndefined(columns) ? currentViewCols : columns;\n if (showHideArgs[\"\" + cancel]) {\n _this.parent.notify(events.resetColumns, { showHideArgs: showHideArgs });\n if (columns.length > 0) {\n columns[0].visible = true;\n }\n return;\n }\n if (isGroupAdaptive(_this.parent)) {\n _this.parent.contentModule.emptyVcRows();\n }\n var addedRow = _this.parent.element.querySelector('.e-addedrow');\n if (_this.parent.editSettings.showAddNewRow && addedRow) {\n remove(addedRow);\n if (_this.parent.enableVirtualization || _this.parent.enableInfiniteScrolling) {\n _this.parent.isAddNewRow = true;\n }\n _this.parent.addNewRowFocus = true;\n _this.parent.isEdit = false;\n }\n if (_this.parent.allowSelection && _this.parent.getSelectedRecords().length &&\n !_this.parent.selectionSettings.persistSelection) {\n _this.parent.clearSelection();\n }\n if (_this.parent.enableColumnVirtualization) {\n var colsInCurrentView = columns.filter(function (col1) { return (currentViewCols.some(function (col2) { return col1.field === col2.field; })); });\n if (colsInCurrentView.length) {\n _this.parent.notify(events.columnVisibilityChanged, columns);\n }\n }\n else {\n if (_this.parent.isFrozenGrid() && columns.length) {\n _this.parent.notify(events.refreshFrozenPosition, { isModeChg: true });\n }\n _this.parent.notify(events.columnVisibilityChanged, columns);\n }\n var params = {\n requestType: 'columnstate',\n columns: changedStateColumns\n };\n _this.parent.trigger(events.actionComplete, params);\n var startAdd = !_this.parent.element.querySelector('.e-addedrow');\n if (_this.parent.editSettings.showAddNewRow && startAdd) {\n _this.parent.isEdit = false;\n _this.parent.addRecord();\n if (!(_this.parent.enableVirtualization || _this.parent.enableInfiniteScrolling)) {\n _this.parent.notify(events.showAddNewRowFocus, {});\n }\n }\n if (_this.parent.columnQueryMode !== 'All') {\n _this.parent.refresh();\n }\n });\n if (!this.parent.groupSettings.columns.length) {\n if (this.parent.autoFit) {\n this.parent.preventAdjustColumns();\n }\n else if (this.parent.allowResizing && this.parent.resizeSettings.mode === 'Normal') {\n var isMaxWidth = this.parent.getHeaderTable().style.width.indexOf('px') === -1;\n this.widthService.setWidthToTable(isMaxWidth);\n }\n }\n };\n return ShowHide;\n}());\nexport { ShowHide };\n","import { Browser, EventHandler } from '@syncfusion/ej2-base';\nimport { addClass, removeClass } from '@syncfusion/ej2-base';\nimport { formatUnit, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { getScrollBarWidth, getUpdateUsingRaf } from '../base/util';\nimport { scroll, contentReady, uiUpdate, onEmpty, headerRefreshed, textWrapRefresh, virtualScrollEdit, infiniteScrollHandler, closeFilterDialog } from '../base/constant';\nimport { lazyLoadScrollHandler, checkScrollReset } from '../base/constant';\nimport { ColumnWidthService } from '../services/width-controller';\nimport * as literals from '../base/string-literals';\nimport * as events from '../base/constant';\n/**\n * The `Scroll` module is used to handle scrolling behaviour.\n */\nvar Scroll = /** @class */ (function () {\n /**\n * Constructor for the Grid scrolling.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function Scroll(parent) {\n //To maintain scroll state on grid actions.\n this.previousValues = { top: 0, left: 0 };\n this.oneTimeReady = true;\n this.parent = parent;\n this.widthService = new ColumnWidthService(parent);\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Scroll.prototype.getModuleName = function () {\n return 'scroll';\n };\n /**\n * @param {boolean} uiupdate - specifies the uiupdate\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.setWidth = function (uiupdate) {\n this.parent.element.style.width = formatUnit(this.parent.width);\n if (uiupdate) {\n this.widthService.setWidthToColumns();\n }\n if (this.parent.toolbarModule && this.parent.toolbarModule.toolbar &&\n this.parent.toolbarModule.toolbar.element) {\n var tlbrElement = this.parent.toolbarModule.toolbar.element;\n var tlbrLeftElement = tlbrElement.querySelector('.e-toolbar-left');\n var tlbrCenterElement = tlbrElement.querySelector('.e-toolbar-center');\n var tlbrRightElement = tlbrElement.querySelector('.e-toolbar-right');\n var tlbrItems = tlbrElement.querySelector('.e-toolbar-items');\n var tlbrLeftWidth = tlbrLeftElement ? tlbrLeftElement.clientWidth : 0;\n var tlbrCenterWidth = tlbrCenterElement ? tlbrCenterElement.clientWidth : 0;\n var tlbrRightWidth = tlbrRightElement ? tlbrRightElement.clientWidth : 0;\n var tlbrItemsWidth = tlbrItems ? tlbrItems.clientWidth : 0;\n var tlbrWidth = tlbrElement ? tlbrElement.clientWidth : 0;\n if (!this.parent.enableAdaptiveUI || tlbrLeftWidth > tlbrWidth || tlbrCenterWidth > tlbrWidth || tlbrRightWidth > tlbrWidth ||\n tlbrItemsWidth > tlbrWidth) {\n this.parent.toolbarModule.toolbar.refreshOverflow();\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.setHeight = function () {\n var mHdrHeight = 0;\n var content = this.parent.getContent().querySelector('.' + literals.content);\n var height = this.parent.height;\n if (this.parent.enableColumnVirtualization && this.parent.isFrozenGrid() && this.parent.height !== 'auto'\n && this.parent.height.toString().indexOf('%') < 0) {\n height = parseInt(height, 10) - Scroll.getScrollBarWidth();\n }\n if (!this.parent.enableVirtualization && this.parent.frozenRows && this.parent.height !== 'auto') {\n var tbody = this.parent.getHeaderContent()\n .querySelector(literals.tbody + ':not(.e-masked-tbody)');\n mHdrHeight = tbody ? tbody.offsetHeight : 0;\n if (tbody && mHdrHeight) {\n var add = tbody.getElementsByClassName(literals.addedRow).length;\n var height_1 = add * this.parent.getRowHeight();\n mHdrHeight -= height_1;\n }\n else if (!this.parent.isInitialLoad && this.parent.loadingIndicator.indicatorType === 'Shimmer'\n && this.parent.getHeaderContent().querySelector('.e-masked-table')) {\n height = parseInt(height, 10) - (this.parent.frozenRows * this.parent.getRowHeight());\n }\n content.style.height = formatUnit(height - mHdrHeight);\n }\n else {\n content.style.height = formatUnit(height);\n }\n this.ensureOverflow(content);\n if (this.parent.isFrozenGrid()) {\n this.refresh();\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.setPadding = function () {\n var content = this.parent.getHeaderContent();\n var scrollWidth = Scroll.getScrollBarWidth() - this.getThreshold();\n var cssProps = this.getCssProperties();\n content.querySelector('.' + literals.headerContent).style[cssProps.border] = scrollWidth > 0 ? '1px' : '0px';\n content.style[cssProps.padding] = scrollWidth > 0 ? scrollWidth + 'px' : '0px';\n };\n /**\n * @param {boolean} rtl - specifies the rtl\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.removePadding = function (rtl) {\n var cssProps = this.getCssProperties(rtl);\n var hDiv = this.parent.getHeaderContent().querySelector('.' + literals.headerContent);\n hDiv.style[cssProps.border] = '';\n hDiv.parentElement.style[cssProps.padding] = '';\n var footerDiv = this.parent.getFooterContent();\n if (footerDiv && footerDiv.classList.contains('e-footerpadding')) {\n footerDiv.classList.remove('e-footerpadding');\n }\n };\n /**\n * Refresh makes the Grid adoptable with the height of parent container.\n *\n * > The [`height`](./#height) must be set to 100%.\n *\n * @returns {void}\n */\n Scroll.prototype.refresh = function () {\n if (this.parent.height !== '100%') {\n return;\n }\n var content = this.parent.getContent();\n this.parent.element.style.height = '100%';\n var height = this.widthService.getSiblingsHeight(content);\n content.style.height = 'calc(100% - ' + height + 'px)'; //Set the height to the '.' + literals.gridContent;\n };\n Scroll.prototype.getThreshold = function () {\n /* Some browsers places the scroller outside the content,\n * hence the padding should be adjusted.*/\n var appName = Browser.info.name;\n if (appName === 'mozilla') {\n return 0.5;\n }\n return 1;\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(onEmpty, this.wireEvents, this);\n this.parent.on(contentReady, this.wireEvents, this);\n this.parent.on(uiUpdate, this.onPropertyChanged, this);\n this.parent.on(textWrapRefresh, this.wireEvents, this);\n this.parent.on(headerRefreshed, this.setScrollLeft, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(onEmpty, this.wireEvents);\n this.parent.off(contentReady, this.wireEvents);\n this.parent.off(uiUpdate, this.onPropertyChanged);\n this.parent.off(textWrapRefresh, this.wireEvents);\n this.parent.off(headerRefreshed, this.setScrollLeft);\n this.unwireEvents();\n };\n Scroll.prototype.unwireEvents = function () {\n if (this.parent.frozenRows && this.header) {\n EventHandler.remove(this.header, 'touchstart pointerdown', this.setPageXY);\n EventHandler.remove(this.header, 'touchmove pointermove', this.onTouchScroll);\n }\n var mScrollBar = this.parent.getContent() ? this.parent.getContent().querySelector('.e-movablescrollbar') : null;\n if (this.parent.isFrozenGrid() && this.parent.enableColumnVirtualization) {\n if (mScrollBar) {\n EventHandler.remove(mScrollBar, 'scroll', this.onCustomScrollbarScroll);\n }\n if (this.content) {\n EventHandler.remove(this.content, 'scroll', this.onCustomScrollbarScroll);\n EventHandler.remove(this.content, 'touchstart pointerdown', this.setPageXY);\n if (!(/macintosh|ipad/.test(Browser.userAgent.toLowerCase()) && Browser.isDevice)) {\n EventHandler.remove(this.content, 'touchmove pointermove', this.onTouchScroll);\n }\n }\n if (this.header) {\n EventHandler.remove(this.header, 'scroll', this.onCustomScrollbarScroll);\n EventHandler.remove(this.header, 'touchstart pointerdown', this.setPageXY);\n EventHandler.remove(this.header, 'touchmove pointermove', this.onTouchScroll);\n }\n }\n if (this.content) {\n EventHandler.remove(this.content, 'scroll', this.contentScrollHandler);\n }\n if (this.header) {\n EventHandler.remove(this.header, 'scroll', this.headerScrollHandler);\n }\n this.contentScrollHandler = null;\n this.headerScrollHandler = null;\n if (this.parent.aggregates.length && this.parent.getFooterContent()) {\n EventHandler.remove(this.parent.getFooterContent().firstChild, 'scroll', this.onContentScroll);\n }\n };\n Scroll.prototype.setScrollLeft = function () {\n this.parent.getHeaderContent().querySelector('.' + literals.headerContent).scrollLeft = this.previousValues.left;\n };\n Scroll.prototype.onContentScroll = function (scrollTarget) {\n var _this = this;\n var element = scrollTarget;\n var isHeader = element.classList.contains(literals.headerContent);\n return function (e) {\n if (_this.content.querySelector(literals.tbody) === null || _this.parent.isPreventScrollEvent) {\n return;\n }\n var target = e.target;\n if (_this.parent.frozenRows) {\n if (_this.content.scrollTop > 0 && _this.parent.frozenRows) {\n addClass([_this.parent.element], 'e-top-shadow');\n }\n else {\n removeClass([_this.parent.element], 'e-top-shadow');\n }\n }\n if (_this.parent.element.querySelectorAll('.e-leftfreeze,.e-fixedfreeze,.e-rightfreeze').length) {\n var errorFreeze = _this.parent.getContent().querySelectorAll('.e-freezeerror:not([style*=\"display: none\"])');\n var errorFixed = _this.parent.getContent().querySelectorAll('.e-fixederror:not([style*=\"display: none\"])');\n if (target.scrollLeft !== 0 && _this.parent.getVisibleFrozenLeftCount()) {\n addClass([_this.parent.element], 'e-left-shadow');\n }\n else {\n removeClass([_this.parent.element], 'e-left-shadow');\n }\n var widthVal = Math.round((_this.parent.enableRtl ? target.scrollWidth + target.scrollLeft : target.scrollWidth -\n target.scrollLeft) + (_this.parent.height === 'auto' ? 0 : 1));\n if (widthVal === target.offsetWidth && _this.parent.getVisibleFrozenRightCount()) {\n removeClass([_this.parent.element], 'e-right-shadow');\n }\n else {\n addClass([_this.parent.element], 'e-right-shadow');\n }\n var rows = [].slice.call(_this.parent.getContent().querySelectorAll('.e-row:not(.e-hiddenrow)'));\n if (((rows.length === 1 && errorFreeze.length) ||\n (_this.parent.element.querySelector('.e-freeze-autofill:not([style*=\"display: none\"])')) ||\n errorFixed.length) && target.scrollLeft !== _this.previousValues.left) {\n target.scrollLeft = _this.previousValues.left;\n return;\n }\n if (rows.length !== 1 && (errorFreeze.length || errorFixed.length) && target.scrollTop !== _this.previousValues.top) {\n target.scrollTop = _this.previousValues.top;\n return;\n }\n }\n var left = target.scrollLeft;\n if (!isNullOrUndefined(_this.parent.infiniteScrollModule) && _this.parent.enableInfiniteScrolling && (!_this.parent.isEdit\n || (_this.parent.editSettings.showAddNewRow && !_this.parent.element.querySelector('.e-editedrow')))) {\n _this.parent.notify(infiniteScrollHandler, { target: e.target, isLeft: _this.previousValues.left !== left });\n }\n if (_this.parent.groupSettings.columns.length && _this.parent.groupSettings.enableLazyLoading) {\n var isDown = _this.previousValues.top < _this.parent.getContent().firstElementChild.scrollTop;\n _this.parent.notify(lazyLoadScrollHandler, { scrollDown: isDown });\n }\n _this.parent.notify(virtualScrollEdit, {});\n var isFooter = target.classList.contains('e-summarycontent');\n if (_this.previousValues.left === left) {\n _this.previousValues.top = !isHeader ? _this.previousValues.top : target.scrollTop;\n return;\n }\n _this.parent.notify(closeFilterDialog, e);\n element.scrollLeft = left;\n if (isFooter) {\n _this.header.scrollLeft = left;\n }\n _this.previousValues.left = left;\n _this.parent.notify(scroll, { left: left });\n };\n };\n Scroll.prototype.onCustomScrollbarScroll = function (cont, hdr) {\n var _this = this;\n var content = cont;\n var header = hdr;\n return function (e) {\n if (_this.content.querySelector(literals.tbody) === null) {\n return;\n }\n var target = e.target;\n var left = target.scrollLeft;\n if (_this.previousValues.left === left) {\n return;\n }\n content.scrollLeft = left;\n header.scrollLeft = left;\n _this.previousValues.left = left;\n _this.parent.notify(scroll, { left: left });\n if (_this.parent.isDestroyed) {\n return;\n }\n };\n };\n Scroll.prototype.onTouchScroll = function (scrollTarget) {\n var _this = this;\n var element = scrollTarget;\n return function (e) {\n if (e.pointerType === 'mouse') {\n return;\n }\n var isFrozen = _this.parent.isFrozenGrid();\n var pageXY = _this.getPointXY(e);\n var left = element.scrollLeft + (_this.pageXY.x - pageXY.x);\n var mHdr = _this.parent.getHeaderContent().querySelector('.' + literals.headerContent);\n var mCont = _this.parent.getContent().querySelector('.' + literals.content);\n if (_this.previousValues.left === left || (left < 0 || (mHdr.scrollWidth - mHdr.clientWidth) < left)) {\n return;\n }\n e.preventDefault();\n mHdr.scrollLeft = left;\n mCont.scrollLeft = left;\n if (isFrozen && _this.parent.enableColumnVirtualization) {\n var scrollBar = _this.parent.getContent().querySelector('.e-movablescrollbar');\n scrollBar.scrollLeft = left;\n }\n _this.pageXY.x = pageXY.x;\n _this.previousValues.left = left;\n };\n };\n Scroll.prototype.setPageXY = function () {\n var _this = this;\n return function (e) {\n if (e.pointerType === 'mouse') {\n return;\n }\n _this.pageXY = _this.getPointXY(e);\n };\n };\n Scroll.prototype.getPointXY = function (e) {\n var pageXY = { x: 0, y: 0 };\n if (e.touches && e.touches.length) {\n pageXY.x = e.touches[0].pageX;\n pageXY.y = e.touches[0].pageY;\n }\n else {\n pageXY.x = e.pageX;\n pageXY.y = e.pageY;\n }\n return pageXY;\n };\n Scroll.prototype.getScrollbleParent = function (node) {\n if (node === null) {\n return null;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parent = isNullOrUndefined(node.tagName) ? node.scrollingElement : node;\n var overflowY = document.defaultView.getComputedStyle(parent, null).overflowY;\n if (parent.scrollHeight > parent.clientHeight && overflowY !== 'hidden'\n && overflowY !== 'visible' || node.tagName === 'HTML' || node.tagName === 'BODY') {\n return node;\n }\n else {\n return this.getScrollbleParent(node.parentNode);\n }\n };\n /**\n * @param {boolean} isAdd - specifies whether adding/removing the event\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.addStickyListener = function (isAdd) {\n this.parentElement = this.getScrollbleParent(this.parent.element.parentElement);\n if (isAdd && this.parentElement) {\n this.eventElement = this.parentElement.tagName === 'HTML' || this.parentElement.tagName === 'BODY' ? document :\n this.parentElement;\n EventHandler.add(this.eventElement, 'scroll', this.makeStickyHeader, this);\n }\n else if (this.eventElement) {\n EventHandler.remove(this.eventElement, 'scroll', this.makeStickyHeader);\n this.eventElement = null;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.resizeFrozenRowBorder = function () {\n var div;\n if (!this.parent.element.querySelector('.e-frozenrow-border')) {\n div = this.parent.createElement('div', { className: 'e-frozenrow-border' });\n this.parent.element.insertBefore(div, this.parent.element.querySelector('.e-gridcontent'));\n }\n else {\n div = this.parent.element.querySelector('.e-frozenrow-border');\n }\n var scrollWidth = this.parent.height !== 'auto' ? Scroll.getScrollBarWidth() : 0;\n div.style.width = (this.parent.element.offsetWidth - scrollWidth) - 0.5 + 'px';\n };\n Scroll.prototype.wireEvents = function () {\n var _this = this;\n if (this.oneTimeReady) {\n var frzCols = this.parent.isFrozenGrid();\n this.content = this.parent.getContent().querySelector('.' + literals.content);\n this.header = this.parent.getHeaderContent().querySelector('.' + literals.headerContent);\n var mScrollBar = this.parent.getContent().querySelector('.e-movablescrollbar');\n if (this.parent.frozenRows && this.header && this.content) {\n EventHandler.add(this.header, 'touchstart pointerdown', this.setPageXY(), this);\n EventHandler.add(this.header, 'touchmove pointermove', this.onTouchScroll(this.content), this);\n }\n if (frzCols && mScrollBar && this.parent.enableColumnVirtualization) {\n EventHandler.add(mScrollBar, 'scroll', this.onCustomScrollbarScroll(this.content, this.header), this);\n EventHandler.add(this.content, 'scroll', this.onCustomScrollbarScroll(mScrollBar, this.header), this);\n EventHandler.add(this.header, 'scroll', this.onCustomScrollbarScroll(mScrollBar, this.content), this);\n EventHandler.add(this.header, 'touchstart pointerdown', this.setPageXY(), this);\n EventHandler.add(this.header, 'touchmove pointermove', this.onTouchScroll(this.content), this);\n EventHandler.add(this.content, 'touchstart pointerdown', this.setPageXY(), this);\n if (!(/macintosh|ipad/.test(Browser.userAgent.toLowerCase()) && Browser.isDevice)) {\n EventHandler.add(this.content, 'touchmove pointermove', this.onTouchScroll(this.header), this);\n }\n }\n this.contentScrollHandler = this.onContentScroll(this.header);\n this.headerScrollHandler = this.onContentScroll(this.content);\n EventHandler.add(this.content, 'scroll', this.contentScrollHandler, this);\n EventHandler.add(this.header, 'scroll', this.headerScrollHandler, this);\n if (this.parent.aggregates.length) {\n EventHandler.add(this.parent.getFooterContent().firstChild, 'scroll', this.onContentScroll(this.content), this);\n }\n if (this.parent.enableStickyHeader) {\n this.addStickyListener(true);\n }\n this.refresh();\n this.oneTimeReady = false;\n }\n var table = this.parent.getContentTable();\n var sLeft;\n var sHeight;\n var clientHeight;\n getUpdateUsingRaf(function () {\n sLeft = _this.header.scrollLeft;\n sHeight = table.scrollHeight;\n clientHeight = _this.parent.getContent().clientHeight;\n }, function () {\n var args = { cancel: false };\n _this.parent.notify(checkScrollReset, args);\n if (sHeight < clientHeight && _this.parent.height !== 'auto') {\n _this.setLastRowCell();\n }\n if (_this.parent.frozenRows) {\n _this.resizeFrozenRowBorder();\n }\n if (!_this.parent.enableVirtualization && !_this.parent.enableInfiniteScrolling) {\n if (!args.cancel) {\n _this.header.scrollLeft = _this.previousValues.left;\n _this.content.scrollLeft = _this.previousValues.left;\n _this.content.scrollTop = _this.previousValues.top;\n }\n }\n if (!_this.parent.enableColumnVirtualization) {\n _this.content.scrollLeft = sLeft;\n if (_this.parent.isFrozenGrid()) {\n _this.previousValues.left = sLeft;\n }\n }\n });\n this.parent.isPreventScrollEvent = false;\n };\n /**\n * @returns {void} returns void\n * @hidden\n */\n Scroll.prototype.setLastRowCell = function () {\n var table = this.parent.getContentTable();\n if (table.querySelector('tr:nth-last-child(2)')) {\n removeClass(table.querySelector('tr:nth-last-child(2)').querySelectorAll('td'), 'e-lastrowcell');\n if (this.parent.isSpan) {\n removeClass(table.querySelectorAll('.e-row-span-lastrowcell'), 'e-lastrowcell');\n }\n if (this.parent.editSettings.showAddNewRow && this.parent.editSettings.newRowPosition === 'Bottom') {\n addClass(table.querySelector('tr:nth-last-child(2)').querySelectorAll('td'), 'e-lastrowcell');\n }\n }\n addClass(table.querySelectorAll('tr:last-child td'), 'e-lastrowcell');\n if (this.parent.isSpan) {\n addClass(table.querySelectorAll('.e-row-span-lastrowcell'), 'e-lastrowcell');\n }\n };\n /**\n * @param {boolean} rtl - specifies the rtl\n * @returns {ScrollCss} returns the ScrollCss\n * @hidden\n */\n Scroll.prototype.getCssProperties = function (rtl) {\n var css = {};\n var enableRtl = isNullOrUndefined(rtl) ? this.parent.enableRtl : rtl;\n css.border = enableRtl ? 'borderLeftWidth' : 'borderRightWidth';\n css.padding = enableRtl ? 'paddingLeft' : 'paddingRight';\n return css;\n };\n Scroll.prototype.ensureOverflow = function (content) {\n content.style.overflowY = this.parent.height === 'auto' ? 'auto' : 'scroll';\n };\n Scroll.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n this.setPadding();\n this.oneTimeReady = true;\n if (this.parent.height === 'auto') {\n this.removePadding();\n }\n this.wireEvents();\n this.setHeight();\n var width = 'width';\n this.setWidth(!isNullOrUndefined(e.properties[\"\" + width]));\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.makeStickyHeader = function () {\n if (this.parent.enableStickyHeader && this.parent.element && this.parent.getContent()) {\n var contentRect = this.parent.getContent().getClientRects()[0];\n if (contentRect) {\n var headerEle = this.parent.getHeaderContent();\n var toolbarEle = this.parent.element.querySelector('.e-toolbar');\n var groupHeaderEle = this.parent.element.querySelector('.e-groupdroparea');\n var height = headerEle.offsetHeight + (toolbarEle ? toolbarEle.offsetHeight : 0) +\n (groupHeaderEle ? groupHeaderEle.offsetHeight : 0);\n var parentTop = this.parentElement.getClientRects()[0].top;\n var top_1 = contentRect.top - (parentTop < 0 ? 0 : parentTop);\n var left = contentRect.left;\n var colMenuEle = document.body.querySelector('#' + this.parent.element.id + '_columnmenu');\n if (top_1 < height && contentRect.bottom > 0) {\n headerEle.classList.add('e-sticky');\n var elemTop = 0;\n if (groupHeaderEle && this.parent.groupSettings.showDropArea) {\n this.setSticky(groupHeaderEle, elemTop, contentRect.width, left, true);\n elemTop += groupHeaderEle.getClientRects()[0].height;\n }\n if (toolbarEle) {\n this.setSticky(toolbarEle, elemTop, contentRect.width, left, true);\n elemTop += toolbarEle.getClientRects()[0].height;\n }\n this.setSticky(headerEle, elemTop, contentRect.width, left, true);\n if (!isNullOrUndefined(colMenuEle)) {\n colMenuEle.style.position = 'fixed';\n colMenuEle.style.top = height + 'px';\n }\n }\n else {\n if (headerEle.classList.contains('e-sticky')) {\n this.setSticky(headerEle, null, null, null, false);\n if (toolbarEle) {\n this.setSticky(toolbarEle, null, null, null, false);\n }\n if (groupHeaderEle) {\n this.setSticky(groupHeaderEle, null, null, null, false);\n }\n var ccDlg = this.parent.element.querySelector('.e-ccdlg');\n if (ccDlg) {\n ccDlg.classList.remove('e-sticky');\n }\n if (!isNullOrUndefined(colMenuEle)) {\n colMenuEle.style.position = 'absolute';\n var topStyle = contentRect.top - parentTop;\n colMenuEle.style.top = topStyle + 'px';\n }\n }\n }\n this.parent.notify(events.stickyScrollComplete, {});\n }\n }\n };\n Scroll.prototype.setSticky = function (ele, top, width, left, isAdd) {\n if (isAdd) {\n ele.classList.add('e-sticky');\n }\n else {\n ele.classList.remove('e-sticky');\n }\n ele.style.width = width != null ? width + 'px' : '';\n ele.style.top = top != null ? top + 'px' : '';\n ele.style.left = left !== null ? parseInt(ele.style.left, 10) !== left ? left + 'px' : ele.style.left : '';\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.removeEventListener();\n //Remove Dom event\n var cont = this.parent.getContent().querySelector('.' + literals.content);\n EventHandler.remove(cont, 'scroll', this.onContentScroll);\n if (this.parent.enableStickyHeader) {\n this.addStickyListener(false);\n }\n //Remove padding\n this.removePadding();\n removeClass([this.parent.getHeaderContent().querySelector('.' + literals.headerContent)], literals.headerContent);\n removeClass([cont], literals.content);\n //Remove height\n cont.style.height = '';\n //Remove width\n this.parent.element.style.width = '';\n };\n /**\n * Function to get the scrollbar width of the browser.\n *\n * @returns {number} return the width\n * @hidden\n */\n Scroll.getScrollBarWidth = function () {\n return getScrollBarWidth();\n };\n return Scroll;\n}());\nexport { Scroll };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { compile } from '@syncfusion/ej2-base';\nimport { getEnumValue } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { Property, Collection, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the Grid's aggregate column.\n */\nvar AggregateColumn = /** @class */ (function (_super) {\n __extends(AggregateColumn, _super);\n function AggregateColumn() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.templateFn = {};\n return _this;\n }\n /**\n * @param {Function} value - specifies the value\n * @returns {void}\n * @hidden\n */\n AggregateColumn.prototype.setFormatter = function (value) {\n this.formatFn = value;\n };\n /**\n * @returns {Function} returns the Function\n * @hidden\n */\n AggregateColumn.prototype.getFormatter = function () {\n return this.formatFn;\n };\n /**\n * @param {Object} helper - specifies the helper\n * @returns {void}\n * @hidden\n */\n AggregateColumn.prototype.setTemplate = function (helper) {\n if (helper === void 0) { helper = {}; }\n if (this.footerTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.Summary)] = { fn: compile(this.footerTemplate, helper),\n property: 'footerTemplate' };\n }\n if (this.groupFooterTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.GroupSummary)] = { fn: compile(this.groupFooterTemplate, helper),\n property: 'groupFooterTemplate' };\n }\n if (this.groupCaptionTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.CaptionSummary)] = { fn: compile(this.groupCaptionTemplate, helper),\n property: 'groupCaptionTemplate' };\n }\n };\n /**\n * @param {CellType} type - specifies the cell type\n * @returns {Object} returns the object\n * @hidden\n */\n AggregateColumn.prototype.getTemplate = function (type) {\n return this.templateFn[getEnumValue(CellType, type)];\n };\n /**\n * @param {Object} prop - returns the Object\n * @returns {void}\n * @hidden\n */\n AggregateColumn.prototype.setPropertiesSilent = function (prop) {\n this.setProperties(prop, true);\n };\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"columnName\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"format\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"groupFooterTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"groupCaptionTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"customAggregate\", void 0);\n return AggregateColumn;\n}(ChildProperty));\nexport { AggregateColumn };\n/**\n * Configures the aggregate rows.\n */\nvar AggregateRow = /** @class */ (function (_super) {\n __extends(AggregateRow, _super);\n function AggregateRow() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], AggregateColumn)\n ], AggregateRow.prototype, \"columns\", void 0);\n return AggregateRow;\n}(ChildProperty));\nexport { AggregateRow };\n","import { Browser, remove, EventHandler, isUndefined, closest, classList } from '@syncfusion/ej2-base';\nimport { parentsUntil, isGroupAdaptive } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * The `Clipboard` module is used to handle clipboard copy action.\n */\nvar Clipboard = /** @class */ (function () {\n /**\n * Constructor for the Grid clipboard module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n * @hidden\n */\n function Clipboard(parent, serviceLocator) {\n this.copyContent = '';\n this.isSelect = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n /**\n * @returns {void}\n * @hidden\n */\n Clipboard.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.contentReady, this.initialEnd, this);\n this.parent.on(events.keyPressed, this.keyDownHandler, this);\n this.parent.on(events.click, this.clickHandler, this);\n this.parent.on(events.onEmpty, this.initialEnd, this);\n EventHandler.add(this.parent.element, 'keydown', this.pasteHandler, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Clipboard.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.keyPressed, this.keyDownHandler);\n this.parent.off(events.contentReady, this.initialEnd);\n this.parent.off(events.click, this.clickHandler);\n this.parent.off(events.onEmpty, this.initialEnd);\n EventHandler.remove(this.parent.element, 'keydown', this.pasteHandler);\n };\n Clipboard.prototype.clickHandler = function (e) {\n var target = e.target;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n target = parentsUntil(target, 'e-rowcell');\n };\n Clipboard.prototype.pasteHandler = function (e) {\n var _this = this;\n var grid = this.parent;\n var isMacLike = /(Mac)/i.test(navigator.platform);\n var selectedRowCellIndexes = this.parent.getSelectedRowCellIndexes();\n if (e.keyCode === 67 && isMacLike && e.metaKey && !grid.isEdit) {\n this.copy();\n }\n if (selectedRowCellIndexes.length && e.keyCode === 86 && ((!isMacLike && e.ctrlKey) || (isMacLike && e.metaKey)) && !grid.isEdit) {\n var target = closest(document.activeElement, '.' + literals.rowCell);\n if (!this.clipBoardTextArea || !target || !grid.editSettings.allowEditing || grid.editSettings.mode !== 'Batch' ||\n grid.selectionSettings.mode !== 'Cell' || grid.selectionSettings.cellSelectionMode === 'Flow') {\n return;\n }\n this.activeElement = document.activeElement;\n var x_1 = window.scrollX;\n var y_1 = window.scrollY;\n this.clipBoardTextArea.focus();\n setTimeout(function () {\n _this.activeElement.focus();\n window.scrollTo(x_1, y_1);\n _this.paste(_this.clipBoardTextArea.value, selectedRowCellIndexes[0].rowIndex, selectedRowCellIndexes[0].cellIndexes[0]);\n }, isMacLike ? 100 : 10);\n }\n };\n /**\n * Paste data from clipboard to selected cells.\n *\n * @param {boolean} data - Specifies the date for paste.\n * @param {boolean} rowIndex - Specifies the row index.\n * @param {boolean} colIndex - Specifies the column index.\n * @returns {void}\n */\n Clipboard.prototype.paste = function (data, rowIndex, colIndex) {\n var grid = this.parent;\n var cIdx = colIndex;\n var rIdx = rowIndex;\n var col;\n var value;\n var isAvail;\n var rows = data.split('\\n');\n var cols;\n for (var r = 0; r < rows.length; r++) {\n cols = rows[parseInt(r.toString(), 10)].split('\\t');\n cIdx = colIndex;\n if ((r === rows.length - 1 && rows[parseInt(r.toString(), 10)] === '') || isUndefined(grid.getRowByIndex(rIdx))) {\n cIdx++;\n break;\n }\n for (var c = 0; c < cols.length; c++) {\n isAvail = grid.getCellFromIndex(rIdx, cIdx);\n if (!isAvail) {\n cIdx++;\n break;\n }\n col = grid.getColumnByIndex(cIdx);\n value = col.getParser() ? col.getParser()(cols[parseInt(c.toString(), 10)]) : cols[parseInt(c.toString(), 10)];\n if (col.allowEditing && !col.isPrimaryKey && !col.template) {\n var args = {\n column: col,\n data: value,\n rowIndex: rIdx\n };\n this.parent.trigger(events.beforePaste, args);\n rIdx = args.rowIndex;\n if (!args.cancel) {\n if (grid.editModule) {\n if (col.type === 'number') {\n this.parent.editModule.updateCell(rIdx, col.field, parseFloat(args.data));\n }\n else {\n grid.editModule.updateCell(rIdx, col.field, args.data);\n }\n }\n }\n }\n cIdx++;\n }\n rIdx++;\n }\n grid.selectionModule.selectCellsByRange({ rowIndex: rowIndex, cellIndex: colIndex }, { rowIndex: rIdx - 1, cellIndex: cIdx - 1 });\n var cell = this.parent.getCellFromIndex(rIdx - 1, cIdx - 1);\n if (cell) {\n classList(cell, ['e-focus', 'e-focused'], []);\n }\n this.clipBoardTextArea.value = '';\n };\n Clipboard.prototype.initialEnd = function () {\n this.l10n = this.serviceLocator.getService('localization');\n this.parent.off(events.contentReady, this.initialEnd);\n this.clipBoardTextArea = this.parent.createElement('textarea', {\n className: 'e-clipboard',\n styles: 'opacity: 0',\n attrs: { tabindex: '-1', 'aria-label': this.l10n.getConstant('ClipBoard') }\n });\n this.parent.element.appendChild(this.clipBoardTextArea);\n };\n Clipboard.prototype.keyDownHandler = function (e) {\n if (e.action === 'ctrlPlusC') {\n this.copy();\n }\n else if (e.action === 'ctrlShiftPlusH') {\n this.copy(true);\n }\n };\n Clipboard.prototype.setCopyData = function (withHeader) {\n if (window.getSelection().toString() === '') {\n this.clipBoardTextArea.value = this.copyContent = '';\n var rows = this.parent.getDataRows();\n if (this.parent.selectionSettings.mode !== 'Cell') {\n var selectedIndexes = this.parent.getSelectedRowIndexes().sort(function (a, b) { return a - b; });\n if (withHeader) {\n var headerTextArray = [];\n for (var i = 0; i < this.parent.getVisibleColumns().length; i++) {\n headerTextArray[parseInt(i.toString(), 10)] = this.parent\n .getVisibleColumns()[parseInt(i.toString(), 10)].headerText;\n }\n this.getCopyData(headerTextArray, false, '\\t', withHeader);\n this.copyContent += '\\n';\n }\n for (var i = 0; i < selectedIndexes.length; i++) {\n if (i > 0) {\n this.copyContent += '\\n';\n }\n var leftCols = [];\n var idx = selectedIndexes[parseInt(i.toString(), 10)];\n if (!isGroupAdaptive(this.parent) && (this.parent.enableVirtualization ||\n (this.parent.enableInfiniteScrolling && this.parent.infiniteScrollSettings.enableCache) ||\n (this.parent.groupSettings.columns.length && this.parent.groupSettings.enableLazyLoading))) {\n idx = rows.map(function (m) { return m.getAttribute('data-rowindex'); }).indexOf(selectedIndexes[parseInt(i.toString(), 10)].toString());\n }\n leftCols.push.apply(leftCols, [].slice.call(rows[parseInt(idx.toString(), 10)].querySelectorAll('.e-rowcell:not(.e-hide)')));\n this.getCopyData(leftCols, false, '\\t', withHeader);\n }\n }\n else {\n var obj = this.checkBoxSelection();\n if (obj.status) {\n if (withHeader) {\n var headers = [];\n for (var i = 0; i < obj.colIndexes.length; i++) {\n var colHeader = this.parent\n .getColumnHeaderByIndex(obj.colIndexes[parseInt(i.toString(), 10)]);\n if (!colHeader.classList.contains('e-hide')) {\n headers.push(colHeader);\n }\n }\n this.getCopyData(headers, false, '\\t', withHeader);\n this.copyContent += '\\n';\n }\n for (var i = 0; i < obj.rowIndexes.length; i++) {\n if (i > 0) {\n this.copyContent += '\\n';\n }\n var cells = [].slice.call(rows[obj.rowIndexes[parseInt(i.toString(), 10)]].\n querySelectorAll('.e-cellselectionbackground:not(.e-hide)'));\n this.getCopyData(cells, false, '\\t', withHeader);\n }\n }\n else {\n this.getCopyData([].slice.call(this.parent.element.getElementsByClassName('e-cellselectionbackground')), true, '\\n', withHeader);\n }\n }\n var args = {\n data: this.copyContent,\n cancel: false\n };\n this.parent.trigger(events.beforeCopy, args);\n if (args.cancel) {\n return;\n }\n this.clipBoardTextArea.value = this.copyContent = args.data;\n if (!Browser.userAgent.match(/ipad|ipod|iphone/i)) {\n this.clipBoardTextArea.select();\n }\n else {\n this.clipBoardTextArea.setSelectionRange(0, this.clipBoardTextArea.value.length);\n }\n this.isSelect = true;\n }\n };\n Clipboard.prototype.getCopyData = function (cells, isCell, splitKey, withHeader) {\n var isElement = typeof cells[0] !== 'string';\n for (var j = 0; j < cells.length; j++) {\n if (withHeader && isCell) {\n var colIdx = parseInt(cells[parseInt(j.toString(), 10)].getAttribute(literals.dataColIndex), 10);\n this.copyContent += this.parent.getColumns()[parseInt(colIdx.toString(), 10)].headerText + '\\n';\n }\n if (isElement) {\n if (!cells[parseInt(j.toString(), 10)].classList.contains('e-hide')) {\n this.copyContent += cells[parseInt(j.toString(), 10)].innerText;\n }\n }\n else {\n this.copyContent += cells[parseInt(j.toString(), 10)];\n }\n if (j < cells.length - 1) {\n this.copyContent += splitKey;\n }\n }\n };\n /**\n * Copy selected rows or cells data into clipboard.\n *\n * @returns {void}\n * @param {boolean} withHeader - Specifies whether the column header data need to be copied or not.\n */\n Clipboard.prototype.copy = function (withHeader) {\n if (document.queryCommandSupported('copy') && this.clipBoardTextArea) {\n this.setCopyData(withHeader);\n document.execCommand('copy');\n this.clipBoardTextArea.blur();\n }\n if (this.isSelect) {\n window.getSelection().removeAllRanges();\n this.isSelect = false;\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Clipboard.prototype.getModuleName = function () {\n return 'clipboard';\n };\n /**\n * To destroy the clipboard\n *\n * @returns {void}\n * @hidden\n */\n Clipboard.prototype.destroy = function () {\n this.removeEventListener();\n if (this.clipBoardTextArea) {\n remove(this.clipBoardTextArea);\n this.clipBoardTextArea = null;\n }\n };\n Clipboard.prototype.checkBoxSelection = function () {\n var gridObj = this.parent;\n var obj = { status: false };\n if (gridObj.selectionSettings.mode === 'Cell') {\n var rowCellIndxes = gridObj.getSelectedRowCellIndexes();\n var str = void 0;\n var rowIndexes = [];\n var i = void 0;\n for (i = 0; i < rowCellIndxes.length; i++) {\n if (rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.length) {\n rowIndexes.push(rowCellIndxes[parseInt(i.toString(), 10)].rowIndex);\n }\n if (rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.length) {\n if (!str) {\n str = JSON.stringify(rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.sort());\n }\n if (str !== JSON.stringify(rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.sort())) {\n break;\n }\n }\n }\n rowIndexes.sort(function (a, b) { return a - b; });\n if (i === rowCellIndxes.length) {\n obj = { status: true, rowIndexes: rowIndexes, colIndexes: rowCellIndxes[0].cellIndexes };\n }\n }\n return obj;\n };\n return Clipboard;\n}());\nexport { Clipboard };\n","/**\n *\n * `Logger` class\n */\nimport { isNullOrUndefined, L10n, isUndefined } from '@syncfusion/ej2-base';\nimport { DataUtil, DataManager } from '@syncfusion/ej2-data';\nvar BASE_DOC_URL = 'https://ej2.syncfusion.com/documentation/grid';\nvar DOC_URL = 'https://ej2.syncfusion.com/documentation/';\nvar WARNING = '[EJ2Grid.Warning]';\nvar ERROR = '[EJ2Grid.Error]';\nvar INFO = '[EJ2Grid.Info]';\nvar Logger = /** @class */ (function () {\n function Logger(parent) {\n this.parent = parent;\n this.parent.on('initial-end', this.patchadaptor, this);\n }\n Logger.prototype.getModuleName = function () {\n return 'logger';\n };\n Logger.prototype.log = function (types, args) {\n if (!(types instanceof Array)) {\n types = [types];\n }\n var type = types;\n for (var i = 0; i < type.length; i++) {\n var item = detailLists[type[parseInt(i.toString(), 10)]];\n var cOp = item.check(args, this.parent);\n if (cOp.success) {\n // eslint-disable-next-line no-console\n console[item.logType](item.generateMessage(args, this.parent, cOp.options));\n }\n }\n };\n Logger.prototype.patchadaptor = function () {\n var adaptor = this.parent.getDataModule().dataManager.adaptor;\n var original = adaptor.beforeSend;\n if (original) {\n adaptor.beforeSend = function (dm, request, settings) {\n original.call(adaptor, dm, request, settings);\n };\n }\n };\n Logger.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('initial-end', this.patchadaptor);\n };\n return Logger;\n}());\nexport { Logger };\nexport var detailLists = {\n // eslint-disable-next-line camelcase\n module_missing: {\n type: 'module_missing',\n logType: 'warn',\n check: function (args, parent) {\n var injected = parent.getInjectedModules().map(function (m) { return m.prototype.getModuleName(); });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var modules = parent.requiredModules().map(function (m) { return m.member; })\n .filter(function (name) { return injected.indexOf(name) === -1; });\n return { success: modules.filter(function (m) { return m !== 'resize'; }).length > 0, options: modules };\n },\n generateMessage: function (args, parent, modules) {\n modules = modules.filter(function (m) { return m !== 'resize'; })\n .reduce(function (prev, cur) { return prev + (\"* \" + cur + \"\\n\"); }, '');\n return WARNING + ': MODULES MISSING\\n' + 'The following modules are not injected:.\\n' +\n (\"\" + modules) +\n (\"Refer to \" + BASE_DOC_URL + \"/module.html for documentation on importing feature modules.\");\n }\n },\n // eslint-disable-next-line camelcase\n promise_enabled: {\n type: 'promise_enabled',\n logType: 'error',\n check: function () {\n return { success: typeof Promise === 'undefined' };\n },\n generateMessage: function () {\n return ERROR + ': PROMISE UNDEFINED\\n' +\n 'Promise object is not present in the global environment,' +\n 'please use polyfil to support Promise object in your environment.\\n' +\n (\"Refer to \" + DOC_URL + \"/base/browser.html?#required-polyfills for more information.\");\n }\n },\n // eslint-disable-next-line camelcase\n primary_column_missing: {\n type: 'primary_column_missing',\n logType: 'warn',\n check: function (args, parent) {\n return { success: parent.enableColumnVirtualization\n ? parent.getPrimaryKeyFieldNames().length === 0\n : parent.getColumns().filter(function (column) { return column.isPrimaryKey; }).length === 0 };\n },\n generateMessage: function () {\n return WARNING + ': PRIMARY KEY MISSING\\n' + 'Editing is enabled but primary key column is not specified.\\n' +\n (\"Refer to \" + BASE_DOC_URL + \"/api-column.html?#isprimarykey for documentation on providing primary key columns.\");\n }\n },\n // eslint-disable-next-line camelcase\n selection_key_missing: {\n type: 'selection_key_missing',\n logType: 'warn',\n check: function (args, parent) {\n return { success: parent.selectionSettings.persistSelection &&\n parent.getColumns().filter(function (column) { return column.isPrimaryKey; }).length === 0 };\n },\n generateMessage: function () {\n return WARNING + ': PRIMARY KEY MISSING\\n' +\n 'selectionSettings.persistSelection property is enabled. It requires one primary key column to persist selection.\\n' +\n (\"Refer to \" + BASE_DOC_URL + \"/api-column.html?#isprimarykey for documentation on providing primary key columns.\");\n }\n },\n actionfailure: {\n type: 'actionfailure',\n logType: 'error',\n check: function () {\n return { success: true };\n },\n generateMessage: function (args, parent) {\n var message = '';\n var formatError = formatErrorHandler(args, parent);\n var ajaxError = ajaxErrorHandler(args, parent);\n if (ajaxError !== '') {\n message = ajaxError;\n }\n else if (formatError !== '') {\n message = formatError;\n }\n else {\n message = args.error;\n }\n return WARNING + ': ' + message;\n }\n },\n // eslint-disable-next-line camelcase\n locale_missing: {\n type: 'locale_missing',\n logType: 'warn',\n check: function (args, parent) {\n var lObj = DataUtil.getObject(\"locale.\" + parent.locale + \".grid\", L10n);\n return { success: parent.locale !== 'en-US' && isNullOrUndefined(lObj) };\n },\n generateMessage: function (args, parent) {\n return WARNING + ': LOCALE CONFIG MISSING\\n' + (\"Locale configuration for '\" + parent.locale + \"' is not provided.\\n\") +\n (\"Refer to \" + BASE_DOC_URL + \"/globalization-and-localization.html?#localization \\n for documentation on setting locale configuration.\");\n }\n },\n limitation: {\n type: 'limitation',\n logType: 'warn',\n check: function (args, parent) {\n var name = args;\n var opt;\n switch (name) {\n case 'freeze':\n opt = {\n success: !isUndefined(parent.detailTemplate) || !isUndefined(parent.childGrid),\n options: { name: 'freeze' }\n };\n break;\n case 'virtualization':\n opt = {\n success: !isUndefined(parent.detailTemplate) || !isUndefined(parent.childGrid),\n options: { name: 'virtualization' }\n };\n break;\n default:\n opt = { success: false };\n break;\n }\n return opt;\n },\n generateMessage: function (args, parent, options) {\n var name = options.name;\n var opt;\n switch (name) {\n case 'freeze':\n opt = 'Frozen rows and columns do not support the following features:\\n' +\n '* Details Template\\n' +\n '* Hierarchy Grid\\n';\n break;\n case 'virtualization':\n opt = 'Virtualization does not support the following features.\\n' +\n '* Details Template.\\n' +\n '* Hierarchy Grid.\\n';\n break;\n default:\n opt = '';\n break;\n }\n return WARNING + (\": \" + name.toUpperCase() + \" LIMITATIONS\\n\") + opt;\n }\n },\n // eslint-disable-next-line camelcase\n check_datasource_columns: {\n type: 'check_datasource_columns',\n logType: 'warn',\n check: function (args, parent) {\n return { success: !(parent.columns.length ||\n (parent.dataSource instanceof DataManager) ||\n (!isNullOrUndefined(parent.dataSource) && parent.dataSource.length)) };\n },\n generateMessage: function () {\n return WARNING + ': GRID CONFIG MISSING\\n' + 'dataSource and columns are not provided in the grid. ' +\n 'At least one of either must be provided for grid configuration.\\n' +\n (\"Refer to \" + BASE_DOC_URL + \"/columns.html for documentation on configuring the grid data and columns.\");\n }\n },\n // eslint-disable-next-line camelcase\n virtual_height: {\n type: 'virtual_height',\n logType: 'error',\n check: function (args, parent) {\n return { success: isNullOrUndefined(parent.height) || parent.height === 'auto' };\n },\n generateMessage: function () {\n return ERROR + ': GRID HEIGHT MISSING \\n' + 'height property is required to use virtualization.\\n' +\n (\"Refer to \" + BASE_DOC_URL + \"/virtual.html for documentation on configuring the virtual grid.\");\n }\n },\n // eslint-disable-next-line camelcase\n grid_remote_edit: {\n type: 'grid_remote_edit',\n logType: 'error',\n check: function (args) {\n return { success: Array.isArray(args) || Array.isArray(args.result) };\n },\n generateMessage: function () {\n return ERROR + ': RETRUN VALUE MISSING \\n' +\n 'Remote service returns invalid data. \\n' +\n (\"Refer to \" + BASE_DOC_URL + \"/edit.html for documentation on configuring editing with remote data.\");\n }\n },\n // eslint-disable-next-line camelcase\n grid_sort_comparer: {\n type: 'grid_sort_comparer',\n logType: 'warn',\n check: function (args, parent) {\n return { success: parent.getDataModule().isRemote() };\n },\n generateMessage: function () {\n return WARNING + ': SORT COMPARER NOT WORKING \\n' + 'Sort comparer will not work with remote data.' +\n (\"Refer to \" + BASE_DOC_URL + \"/sorting/#custom-sort-comparer for documentation on using the sort comparer.\");\n }\n },\n // eslint-disable-next-line camelcase\n resize_min_max: {\n type: 'resize_min_max',\n logType: 'info',\n check: function (args) {\n return { success: (args.column.minWidth && args.column.minWidth >= args.width) ||\n (args.column.maxWidth && args.column.maxWidth <= args.width) };\n },\n generateMessage: function () {\n return INFO + ': RESIZING COLUMN REACHED MIN OR MAX \\n' + 'The column resizing width is at its min or max.';\n }\n },\n // eslint-disable-next-line camelcase\n action_disabled_column: {\n type: 'action_disabled_column',\n logType: 'info',\n check: function (args) {\n var success = true;\n var fn;\n switch (args.moduleName) {\n case 'reorder':\n if (isNullOrUndefined(args.destColumn)) {\n fn = \"reordering action is disabled for the \" + args.column.headerText + \" column\";\n }\n else {\n fn = \"reordering action is disabled for the \" + (args.column.allowReordering ?\n args.destColumn.headerText : args.column.headerText) + \" column\";\n }\n break;\n case 'group':\n fn = \"grouping action is disabled for the \" + args.columnName + \" column.\";\n break;\n case 'filter':\n fn = \"filtering action is disabled for the \" + args.columnName + \" column.\";\n break;\n case 'sort':\n fn = \"sorting action is disabled for the \" + args.columnName + \" column.\";\n break;\n }\n return { success: success, options: { fn: fn } };\n },\n generateMessage: function (args, parent, options) {\n return INFO + (\": ACTION DISABLED \\n \" + options.fn);\n }\n },\n // eslint-disable-next-line camelcase\n exporting_begin: {\n type: 'exporting_begin',\n logType: 'info',\n check: function (args) {\n return { success: true, options: { args: args } };\n },\n generateMessage: function (args, parent, options) {\n return INFO + (\": EXPORTING INPROGRESS \\n Grid \" + options.args + \"ing is in progress\");\n }\n },\n // eslint-disable-next-line camelcase\n exporting_complete: {\n type: 'exporting_complete',\n logType: 'info',\n check: function (args) {\n return { success: true, options: { args: args } };\n },\n generateMessage: function (args, parent, options) {\n return INFO + (\": EXPORTING COMPLETED \\n Grid \" + options.args + \"ing is complete\");\n }\n },\n // eslint-disable-next-line camelcase\n foreign_key_failure: {\n type: 'foreign_key_failure',\n logType: 'error',\n check: function () {\n return { success: true };\n },\n generateMessage: function () {\n return ERROR + ': FOREIGNKEY CONFIG \\n Grid foreign key column needs a valid data source/service.' +\n (\"Refer to \" + BASE_DOC_URL + \"/columns/#foreign-key-column for documentation on configuring foreign key columns.\");\n }\n },\n // eslint-disable-next-line camelcase\n initial_action: {\n type: 'initial_action',\n logType: 'error',\n check: function (args) {\n var success = true;\n var fn;\n switch (args.moduleName) {\n case 'group':\n fn = \"The \" + args.columnName + \" column is not available in the grid's column model.\" +\n 'Please provide a valid field name to group the column';\n break;\n case 'filter':\n fn = \"The \" + args.columnName + \" column is not available in the grid's column model.\" +\n 'Please provide a valid field name to filter the column.';\n break;\n case 'sort':\n fn = \"The \" + args.columnName + \" column is not available in the grid's column model.\" +\n 'Please provide a valid field name to sort the column.';\n break;\n }\n return { success: success, options: { fn: fn } };\n },\n generateMessage: function (args, parent, options) {\n return ERROR + (\": INITIAL ACTION FAILURE \\n \" + options.fn);\n }\n },\n // eslint-disable-next-line camelcase\n frozen_rows_columns: {\n type: 'frozen_rows_columns',\n logType: 'error',\n check: function (args, parent) {\n return { success: parent.getColumns().length <= parent.frozenColumns\n || (parent.currentViewData.length && parent.frozenRows >= parent.currentViewData.length) };\n },\n generateMessage: function (args, parent) {\n return ERROR + (\": OUT OF RANGE ERROR-\\n \" + (parent.getColumns().length <= parent.frozenColumns ? 'FROZEN COLUMNS,' : '')) +\n ((parent.frozenRows >= parent.currentViewData.length ? 'FROZEN ROWS' : '') + \" invalid\");\n }\n },\n // eslint-disable-next-line camelcase\n column_type_missing: {\n type: 'column_type_missing',\n logType: 'error',\n check: function (args) {\n return { success: isNullOrUndefined(args.column.type), options: args.column.headerText };\n },\n generateMessage: function (args, parent, options) {\n return ERROR + (\": COLUMN TYPE MISSING-\\n \" + options + \" column type was invalid or not defined.\") +\n (\"Please go through below help link: \" + DOC_URL + \"/grid/columns/#column-type\");\n }\n },\n // eslint-disable-next-line camelcase\n datasource_syntax_mismatch: {\n type: 'datasource_syntax_mismatch',\n logType: 'warn',\n check: function (args) {\n return { success: args.dataState.dataSource && !(args.dataState.dataSource instanceof DataManager ||\n 'result' in args.dataState.dataSource || args.dataState.dataSource instanceof Array) &&\n !(isNullOrUndefined(args.dataState.dataStateChange)) };\n },\n generateMessage: function () {\n return WARNING + ': DATASOURCE SYNTAX WARNING\\n' +\n 'DataSource should be in the form of {result: Object[], count: number}' +\n 'when dataStateChangeEvent used';\n }\n }\n};\nvar formatErrorHandler = function (args) {\n var error = args.error;\n if (error.indexOf && error.indexOf('Format options') !== 0) {\n return '';\n }\n return 'INVALID FORMAT\\n' +\n 'For more information, refer to the following documentation links:\\n' +\n (\"Number format: \" + DOC_URL + \"/common/internationalization#supported-format-string\\n\") +\n (\"Date format: \" + DOC_URL + \"/common/internationalization#manipulating-datetime\\n\") +\n (\"Message: \" + error);\n};\nvar ajaxErrorHandler = function (args) {\n var error = DataUtil.getObject('error.error', args);\n if (isNullOrUndefined(error)) {\n return '';\n }\n var jsonResult = '';\n try {\n jsonResult = JSON.parse(error.responseText);\n }\n catch (_a) {\n jsonResult = '';\n }\n return 'XMLHTTPREQUEST FAILED\\n' +\n (\"Url: \" + error.responseURL + \"\\n\") +\n (\"Status: \" + error.status + \" - \" + error.statusText + \"\\n\") +\n (\"\" + (jsonResult !== '' ? 'Message: ' + jsonResult : ''));\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { isNullOrUndefined, setValue, getValue, defaultCurrencyCode } from '@syncfusion/ej2-base';\nimport { Component, ChildProperty, Browser, closest, extend } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, append, remove, classList, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { Property, Collection, Complex, Event, NotifyPropertyChanges, L10n } from '@syncfusion/ej2-base';\nimport { EventHandler, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { DataManager, DataUtil, UrlAdaptor } from '@syncfusion/ej2-data';\nimport { createSpinner, hideSpinner, showSpinner, Tooltip } from '@syncfusion/ej2-popups';\nimport { iterateArrayOrObject, prepareColumns, parentsUntil, wrap, templateCompiler, isGroupAdaptive, refreshForeignData, getScrollBarWidth } from './util';\nimport { getRowHeight, setColumnIndex, Global, ispercentageWidth, getNumberFormat, getTransformValues } from './util';\nimport { setRowElements, resetRowIndex, compareChanges, getCellByColAndRowIndex, performComplexDataOperation } from './util';\nimport * as events from '../base/constant';\nimport { Render } from '../renderer/render';\nimport { Column } from '../models/column';\nimport { RenderType } from './enum';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { CellRenderer } from '../renderer/cell-renderer';\nimport { CellRendererFactory } from '../services/cell-render-factory';\nimport { ServiceLocator } from '../services/service-locator';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { RendererFactory } from '../services/renderer-factory';\nimport { ColumnWidthService } from '../services/width-controller';\nimport { AriaService } from '../services/aria-service';\nimport { FocusStrategy } from '../services/focus-strategy';\nimport { PageSettings } from '../models/page-settings';\nimport { ColumnChooserSettings } from '../models/column-chooser-settings';\nimport { Selection } from '../actions/selection';\nimport { Search } from '../actions/search';\nimport { ShowHide } from '../actions/show-hide';\nimport { Scroll } from '../actions/scroll';\nimport { Print } from '../actions/print';\nimport { AggregateRow } from '../models/aggregate';\nimport { Clipboard } from '../actions/clipboard';\nimport { Logger } from '../actions/logger';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport * as literals from '../base/string-literals';\nimport { HeaderCellRenderer } from '../renderer/header-cell-renderer';\n/**\n * Represents the field name and direction of sort column.\n */\nvar SortDescriptor = /** @class */ (function (_super) {\n __extends(SortDescriptor, _super);\n function SortDescriptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"direction\", void 0);\n __decorate([\n Property(false)\n ], SortDescriptor.prototype, \"isFromGroup\", void 0);\n return SortDescriptor;\n}(ChildProperty));\nexport { SortDescriptor };\n/**\n * Configures the sorting behavior of Grid.\n */\nvar SortSettings = /** @class */ (function (_super) {\n __extends(SortSettings, _super);\n function SortSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], SortDescriptor)\n ], SortSettings.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], SortSettings.prototype, \"allowUnsort\", void 0);\n return SortSettings;\n}(ChildProperty));\nexport { SortSettings };\n/**\n * Represents the predicate for the filter column.\n */\nvar Predicate = /** @class */ (function (_super) {\n __extends(Predicate, _super);\n function Predicate() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], Predicate.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"operator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"matchCase\", void 0);\n __decorate([\n Property(false)\n ], Predicate.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"predicate\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualFilterValue\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualOperator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"ejpredicate\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"uid\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"isForeignKey\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"condition\", void 0);\n return Predicate;\n}(ChildProperty));\nexport { Predicate };\n/**\n * Configures the infinite scroll behavior of Grid.\n */\nvar InfiniteScrollSettings = /** @class */ (function (_super) {\n __extends(InfiniteScrollSettings, _super);\n function InfiniteScrollSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], InfiniteScrollSettings.prototype, \"enableCache\", void 0);\n __decorate([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"maxBlocks\", void 0);\n __decorate([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"initialBlocks\", void 0);\n return InfiniteScrollSettings;\n}(ChildProperty));\nexport { InfiniteScrollSettings };\n/**\n * Configures the filtering behavior of the Grid.\n */\nvar FilterSettings = /** @class */ (function (_super) {\n __extends(FilterSettings, _super);\n function FilterSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], Predicate)\n ], FilterSettings.prototype, \"columns\", void 0);\n __decorate([\n Property('FilterBar')\n ], FilterSettings.prototype, \"type\", void 0);\n __decorate([\n Property('OnEnter')\n ], FilterSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], FilterSettings.prototype, \"showFilterBarStatus\", void 0);\n __decorate([\n Property(1500)\n ], FilterSettings.prototype, \"immediateModeDelay\", void 0);\n __decorate([\n Property()\n ], FilterSettings.prototype, \"operators\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"enableInfiniteScrolling\", void 0);\n __decorate([\n Property(50)\n ], FilterSettings.prototype, \"itemsCount\", void 0);\n __decorate([\n Property('Shimmer')\n ], FilterSettings.prototype, \"loadingIndicator\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"enableCaseSensitivity\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"showFilterBarOperator\", void 0);\n return FilterSettings;\n}(ChildProperty));\nexport { FilterSettings };\n/**\n * Configures the selection behavior of the Grid.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Row')\n ], SelectionSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('Flow')\n ], SelectionSettings.prototype, \"cellSelectionMode\", void 0);\n __decorate([\n Property('Single')\n ], SelectionSettings.prototype, \"type\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"checkboxOnly\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"persistSelection\", void 0);\n __decorate([\n Property('Default')\n ], SelectionSettings.prototype, \"checkboxMode\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"enableSimpleMultiRowSelection\", void 0);\n __decorate([\n Property(true)\n ], SelectionSettings.prototype, \"enableToggle\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"allowColumnSelection\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n/**\n * Configures the search behavior of the Grid.\n */\nvar SearchSettings = /** @class */ (function (_super) {\n __extends(SearchSettings, _super);\n function SearchSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property([])\n ], SearchSettings.prototype, \"fields\", void 0);\n __decorate([\n Property('')\n ], SearchSettings.prototype, \"key\", void 0);\n __decorate([\n Property('contains')\n ], SearchSettings.prototype, \"operator\", void 0);\n __decorate([\n Property(true)\n ], SearchSettings.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], SearchSettings.prototype, \"ignoreAccent\", void 0);\n return SearchSettings;\n}(ChildProperty));\nexport { SearchSettings };\n/**\n * Configures the row drop settings of the Grid.\n */\nvar RowDropSettings = /** @class */ (function (_super) {\n __extends(RowDropSettings, _super);\n function RowDropSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], RowDropSettings.prototype, \"targetID\", void 0);\n return RowDropSettings;\n}(ChildProperty));\nexport { RowDropSettings };\n/**\n * Configures the text wrap settings of the Grid.\n */\nvar TextWrapSettings = /** @class */ (function (_super) {\n __extends(TextWrapSettings, _super);\n function TextWrapSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Both')\n ], TextWrapSettings.prototype, \"wrapMode\", void 0);\n return TextWrapSettings;\n}(ChildProperty));\nexport { TextWrapSettings };\n/**\n * Configures the resize behavior of the Grid.\n */\nvar ResizeSettings = /** @class */ (function (_super) {\n __extends(ResizeSettings, _super);\n function ResizeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Normal')\n ], ResizeSettings.prototype, \"mode\", void 0);\n return ResizeSettings;\n}(ChildProperty));\nexport { ResizeSettings };\n/**\n * Configures the group behavior of the Grid.\n */\nvar GroupSettings = /** @class */ (function (_super) {\n __extends(GroupSettings, _super);\n function GroupSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], GroupSettings.prototype, \"showDropArea\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"allowReordering\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"showToggleButton\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"showGroupedColumn\", void 0);\n __decorate([\n Property(true)\n ], GroupSettings.prototype, \"showUngroupButton\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"disablePageWiseAggregates\", void 0);\n __decorate([\n Property([])\n ], GroupSettings.prototype, \"columns\", void 0);\n __decorate([\n Property()\n ], GroupSettings.prototype, \"captionTemplate\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"enableLazyLoading\", void 0);\n return GroupSettings;\n}(ChildProperty));\nexport { GroupSettings };\n/**\n * Configures the edit behavior of the Grid.\n */\nvar EditSettings = /** @class */ (function (_super) {\n __extends(EditSettings, _super);\n function EditSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowAdding\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowEditing\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowDeleting\", void 0);\n __decorate([\n Property('Normal')\n ], EditSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], EditSettings.prototype, \"allowEditOnDblClick\", void 0);\n __decorate([\n Property(true)\n ], EditSettings.prototype, \"showConfirmDialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"showDeleteConfirmDialog\", void 0);\n __decorate([\n Property()\n ], EditSettings.prototype, \"template\", void 0);\n __decorate([\n Property()\n ], EditSettings.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property()\n ], EditSettings.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property('Top')\n ], EditSettings.prototype, \"newRowPosition\", void 0);\n __decorate([\n Property({})\n ], EditSettings.prototype, \"dialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowNextRowEdit\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"showAddNewRow\", void 0);\n return EditSettings;\n}(ChildProperty));\nexport { EditSettings };\n/**\n * Configures the Loading Indicator of the Grid.\n */\nvar LoadingIndicator = /** @class */ (function (_super) {\n __extends(LoadingIndicator, _super);\n function LoadingIndicator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Spinner')\n ], LoadingIndicator.prototype, \"indicatorType\", void 0);\n return LoadingIndicator;\n}(ChildProperty));\nexport { LoadingIndicator };\n/**\n * Represents the Grid component.\n * ```html\n *
\n * \n * ```\n */\nvar Grid = /** @class */ (function (_super) {\n __extends(Grid, _super);\n /**\n * Constructor for creating the component\n *\n * @param {GridModel} options - specifies the options\n * @param {string | HTMLElement} element - specifies the element\n * @hidden\n */\n function Grid(options, element) {\n var _this_1 = _super.call(this, options, element) || this;\n _this_1.isPreventScrollEvent = false;\n _this_1.inViewIndexes = [];\n _this_1.keyA = false;\n _this_1.frozenRightCount = 0;\n _this_1.freezeColumnRefresh = true;\n _this_1.rightcount = 0;\n _this_1.frozenLeftCount = 0;\n _this_1.leftcount = 0;\n _this_1.tablesCount = 1;\n _this_1.movableCount = 0;\n _this_1.movablecount = 0;\n _this_1.fixedcount = 0;\n _this_1.fixedCount = 0;\n _this_1.visibleFrozenLeft = 0;\n _this_1.visibleFrozenFixed = 0;\n _this_1.isPreparedFrozenColumns = false;\n _this_1.visibleFrozenRight = 0;\n _this_1.visibleMovable = 0;\n _this_1.frozenLeftColumns = [];\n _this_1.frozenRightColumns = [];\n _this_1.movableColumns = [];\n _this_1.fixedColumns = [];\n _this_1.stackedLeft = [];\n _this_1.stackedRight = [];\n _this_1.stackedFixed = [];\n _this_1.stackedMovable = [];\n _this_1.stackedarrayLeft = [];\n _this_1.stackedarrayRight = [];\n _this_1.stackedarrayFixed = [];\n _this_1.stackedarrayMovable = [];\n _this_1.media = {};\n _this_1.autoFitColumnsResize = false;\n /** @hidden */\n _this_1.tableIndex = 0;\n _this_1.componentRefresh = Component.prototype.refresh;\n _this_1.isChangeDataSourceCall = false;\n _this_1.mergedColumns = false;\n /** @hidden */\n _this_1.isVirtualAdaptive = false;\n /** @hidden */\n /**\n * * If `requireTemplateRef` is set to false in the load event, then the template element can't be accessed in grid queryCellInfo, and rowDataBound events.\n * * By default, React's grid queryCellInfo and rowDataBound events allow access to the template element.\n * * Avoid accessing the template elements in the grid queryCellInfo and rowDataBound events to improve rendering performance by setting this value as false.\n *\n * @default true\n */\n _this_1.requireTemplateRef = true;\n /** @hidden */\n _this_1.vRows = [];\n /** @hidden */\n _this_1.vcRows = [];\n /** @hidden */\n _this_1.vGroupOffsets = {};\n /** @hidden */\n _this_1.rowUid = 0;\n /** @hidden */\n _this_1.translateX = 0;\n /** @hidden */\n _this_1.isManualRefresh = false;\n /** @hidden */\n _this_1.isAutoFitColumns = false;\n /** @hidden */\n _this_1.enableDeepCompare = false;\n /** @hidden */\n _this_1.totalDataRecordsCount = 0;\n /** @hidden */\n _this_1.disableSelectedRecords = [];\n /** @hidden */\n _this_1.partialSelectedRecords = [];\n /** @hidden */\n _this_1.isSpan = false;\n /** @hidden */\n _this_1.islazyloadRequest = false;\n /** @hidden */\n _this_1.isAddNewRow = false;\n /** @hidden */\n _this_1.addNewRowFocus = true;\n /** @hidden */\n _this_1.lockcolPositionCount = 0;\n /** @hidden */\n _this_1.prevPageMoving = false;\n /** @hidden */\n _this_1.pageTemplateChange = false;\n /** @hidden */\n _this_1.isAutoGen = false;\n /** @hidden */\n _this_1.isAutoGenerateColumns = false;\n /** @hidden */\n _this_1.pageRequireRefresh = true;\n _this_1.mediaBindInstance = {};\n /** @hidden */\n _this_1.commandDelIndex = undefined;\n /** @hidden */\n _this_1.asyncTimeOut = 50;\n /** @hidden */\n _this_1.isExportGrid = false;\n /** @hidden */\n _this_1.isWidgetsDestroyed = false;\n _this_1.enableLogger = false;\n _this_1.needsID = true;\n Grid_1.Inject(Selection);\n setValue('mergePersistData', _this_1.mergePersistGridData, _this_1);\n return _this_1;\n }\n Grid_1 = Grid;\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} returns the persist data\n */\n Grid.prototype.getPersistData = function () {\n var keyEntity = ['pageSettings', 'sortSettings',\n 'filterSettings', 'groupSettings', 'columns', 'searchSettings', 'selectedRowIndex', 'scrollPosition'];\n var ignoreOnPersist = {\n pageSettings: ['template', 'pageSizes', 'enableQueryString', 'totalRecordsCount', 'pageCount'],\n filterSettings: ['type', 'mode', 'showFilterBarStatus', 'immediateModeDelay', 'ignoreAccent'],\n groupSettings: ['showDropArea', 'showToggleButton', 'showGroupedColumn', 'showUngroupButton',\n 'disablePageWiseAggregates', 'hideCaptionCount'],\n searchSettings: ['fields', 'operator', 'ignoreCase'],\n sortSettings: [], columns: [], selectedRowIndex: [], scrollPosition: []\n };\n for (var i = 0; i < keyEntity.length; i++) {\n var currentObject = this[keyEntity[parseInt(i.toString(), 10)]];\n for (var _i = 0, _a = ignoreOnPersist[keyEntity[parseInt(i.toString(), 10)]]; _i < _a.length; _i++) {\n var val = _a[_i];\n delete currentObject[\"\" + val];\n }\n }\n var temp = this.pageSettings.template;\n var settings = Object.assign({ template: undefined }, this.pageSettings);\n this.setProperties({ pageSettings: settings }, true);\n var captionTemplateRef = this.groupSettings.captionTemplate;\n var isAngularCaptionTemplate = captionTemplateRef && this.isAngular;\n if (isAngularCaptionTemplate) {\n delete this.groupSettings['properties']['captionTemplate'];\n }\n this.pageTemplateChange = !isNullOrUndefined(this.pagerTemplate);\n var persistData = this.addOnPersist(keyEntity);\n settings.template = temp;\n this.setProperties({ pageSettings: settings }, true);\n if (isAngularCaptionTemplate) {\n this.groupSettings.captionTemplate = captionTemplateRef;\n }\n return persistData;\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} Returns the module Declaration\n * @hidden\n */\n Grid.prototype.requiredModules = function () {\n this.setFrozenCount();\n this.enableInfiniteAggrgate();\n var modules = [];\n if (this.isDestroyed) {\n return modules;\n }\n if (this.allowFiltering) {\n modules.push({\n member: 'filter',\n args: [this, this.filterSettings, this.serviceLocator],\n name: 'Filter'\n });\n }\n if (this.allowExcelExport) {\n modules.push({\n member: 'ExcelExport',\n args: [this, this.serviceLocator],\n name: 'ExcelExport'\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport',\n args: [this],\n name: 'PdfExport'\n });\n }\n if (this.allowSorting) {\n modules.push({\n member: 'sort',\n args: [this, this.sortSettings, this.sortedColumns, this.serviceLocator],\n name: 'Sort'\n });\n }\n if (this.allowPaging) {\n modules.push({\n member: 'pager',\n args: [this, this.pageSettings],\n name: 'Page'\n });\n }\n if (this.allowSelection) {\n modules.push({\n member: 'selection',\n args: [this, this.selectionSettings, this.serviceLocator],\n name: 'Selection'\n });\n }\n if (this.resizeCheck()) {\n modules.push({\n member: 'resize',\n args: [this],\n name: 'Resize'\n });\n }\n if (this.allowReordering) {\n modules.push({\n member: 'reorder',\n args: [this],\n name: 'Reorder'\n });\n }\n if (this.allowRowDragAndDrop) {\n modules.push({\n member: 'rowDragAndDrop',\n args: [this],\n name: 'RowDD'\n });\n }\n if (this.allowGrouping) {\n modules.push({\n member: 'group',\n args: [this, this.groupSettings, this.sortedColumns, this.serviceLocator],\n name: 'Group'\n });\n }\n if (this.aggregates.length) {\n modules.push({ member: 'aggregate', args: [this, this.serviceLocator], name: 'Aggregate' });\n }\n if (this.isDetail()) {\n modules.push({\n member: 'detailRow',\n args: [this, this.serviceLocator],\n name: 'DetailRow'\n });\n }\n if (this.toolbar || this.toolbarTemplate) {\n modules.push({\n member: 'toolbar',\n args: [this, this.serviceLocator],\n name: 'Toolbar'\n });\n }\n if (this.enableVirtualization || this.enableColumnVirtualization) {\n modules.push({\n member: 'virtualscroll',\n args: [this, this.serviceLocator],\n name: 'VirtualScroll'\n });\n }\n if (this.getFrozenColumns() || this.frozenRows || this.frozenRightCount || this.frozenLeftCount) {\n modules.push({ member: 'freeze', args: [this, this.serviceLocator], name: 'Freeze' });\n }\n if (!isNullOrUndefined(this.columns) && this.isCommandColumn(this.columns)) {\n modules.push({\n member: 'commandColumn',\n args: [this, this.serviceLocator],\n name: 'CommandColumn'\n });\n }\n if (this.editSettings.allowAdding || this.editSettings.allowDeleting || this.editSettings.allowEditing) {\n modules.push({\n member: 'edit',\n args: [this, this.serviceLocator],\n name: 'Edit'\n });\n }\n this.extendRequiredModules(modules);\n return modules;\n };\n Grid.prototype.extendRequiredModules = function (modules) {\n if (this.enableInfiniteScrolling) {\n modules.push({\n member: 'infiniteScroll',\n args: [this, this.serviceLocator],\n name: 'InfiniteScroll'\n });\n }\n if (this.groupSettings.enableLazyLoading) {\n modules.push({\n member: 'lazyLoadGroup',\n args: [this, this.serviceLocator],\n name: 'LazyLoadGroup'\n });\n }\n if (this.contextMenuItems) {\n modules.push({\n member: 'contextMenu',\n args: [this, this.serviceLocator],\n name: 'ContextMenu'\n });\n }\n if (this.showColumnMenu) {\n modules.push({\n member: 'columnMenu',\n args: [this, this.serviceLocator],\n name: 'ColumnMenu'\n });\n }\n if (this.showColumnChooser) {\n modules.push({\n member: 'columnChooser',\n args: [this, this.serviceLocator],\n name: 'ColumnChooser'\n });\n }\n if (!isNullOrUndefined(this.columns) && this.isForeignKeyEnabled(this.columns)) {\n modules.push({ member: 'foreignKey', args: [this, this.serviceLocator], name: 'ForeignKey' });\n }\n if (this.enableLogger) {\n modules.push({ member: 'logger', args: [this], name: 'Logger' });\n }\n };\n Grid.prototype.resizeCheck = function () {\n var autoFitColumns = this.getColumns().filter(function (c) { return c.autoFit === true; }).length ? true : false;\n if (!isNullOrUndefined(this.columnModel) && this.columnModel.length && !(this.columnModel[0] instanceof Column)) {\n this.columnModel = [];\n }\n var columnMenu = this.showColumnMenu && (!this.columnMenuItems || this.columnMenuItems\n .filter(function (c) { return c === 'AutoFit' || c === 'AutoFitAll'; }).length) ? true : false;\n var contextMenu = this.contextMenuItems && this.contextMenuItems\n .filter(function (c) { return c === 'AutoFit' || c === 'AutoFitAll'; }).length ? true : false;\n return this.allowResizing || this.autoFitColumnsResize || autoFitColumns || columnMenu || contextMenu;\n };\n /**\n * For internal use only - Initialize the event handler;\n *\n * @returns {void}\n * @private\n */\n Grid.prototype.preRender = function () {\n this.serviceLocator = new ServiceLocator;\n this.initProperties();\n this.initializeServices();\n };\n Grid.prototype.initProperties = function () {\n this.isInitial = true;\n this.sortedColumns = [];\n this.inViewIndexes = [];\n this.mediaCol = [];\n this.isInitialLoad = false;\n this.allowServerDataBinding = false;\n this.ignoreCollectionWatch = true;\n this.mergeCells = {};\n this.isEdit = false;\n this.checkAllRows = 'None';\n this.isCheckBoxSelection = false;\n this.isPersistSelection = false;\n this.componentRefresh = Component.prototype.refresh;\n this.freezeColumnRefresh = true;\n this.filterOperators = {\n contains: 'contains', endsWith: 'endswith', equal: 'equal', greaterThan: 'greaterthan', greaterThanOrEqual: 'greaterthanorequal',\n lessThan: 'lessthan', lessThanOrEqual: 'lessthanorequal', notEqual: 'notequal', startsWith: 'startswith', wildCard: 'wildcard',\n isNull: 'isnull', notNull: 'notnull', like: 'like'\n };\n this.defaultLocale = {\n EmptyRecord: 'No records to display',\n True: 'true',\n False: 'false',\n InvalidFilterMessage: 'Invalid Filter Data',\n GroupDropArea: 'Drag a column header here to group its column',\n UnGroup: 'Click here to ungroup',\n UnGroupButton: 'Click here to ungroup',\n GroupDisable: 'Grouping is disabled for this column',\n FilterbarTitle: '\\'s filter bar cell',\n EmptyDataSourceError: 'DataSource must not be empty at initial load since columns are generated from dataSource in AutoGenerate Column Grid',\n // Toolbar Items\n Add: 'Add',\n Edit: 'Edit',\n Cancel: 'Cancel',\n Update: 'Update',\n Delete: 'Delete',\n Print: 'Print',\n Pdfexport: 'PDF Export',\n Excelexport: 'Excel Export',\n Wordexport: 'Word Export',\n Csvexport: 'CSV Export',\n Search: 'Search',\n Columnchooser: 'Columns',\n Save: 'Save',\n Item: 'item',\n Items: 'items',\n EditOperationAlert: 'No records selected for edit operation',\n DeleteOperationAlert: 'No records selected for delete operation',\n SaveButton: 'Save',\n OKButton: 'OK',\n CancelButton: 'Cancel',\n EditFormTitle: 'Details of ',\n AddFormTitle: 'Add New Record',\n BatchSaveConfirm: 'Are you sure you want to save changes?',\n BatchSaveLostChanges: 'Unsaved changes will be lost. Are you sure you want to continue?',\n ConfirmDelete: 'Are you sure you want to Delete Record?',\n CancelEdit: 'Are you sure you want to Cancel the changes?',\n ChooseColumns: 'Choose Column',\n ColumnMenu: 'Column Menu',\n SearchColumns: 'search columns',\n Matchs: 'No matches found',\n FilterButton: 'Filter',\n ClearButton: 'Clear',\n StartsWith: 'Starts With',\n NotStartsWith: 'Does Not Start With',\n Like: 'Like',\n EndsWith: 'Ends With',\n NotEndsWith: 'Does Not End With',\n Contains: 'Contains',\n NotContains: 'Does Not Contain',\n IsNull: 'Null',\n NotNull: 'Not Null',\n IsEmpty: 'Empty',\n IsNotEmpty: 'Not Empty',\n Equal: 'Equal',\n NotEqual: 'Not Equal',\n LessThan: 'Less Than',\n LessThanOrEqual: 'Less Than Or Equal',\n GreaterThan: 'Greater Than',\n GreaterThanOrEqual: 'Greater Than Or Equal',\n ChooseDate: 'Choose a Date',\n EnterValue: 'Enter the value',\n Copy: 'Copy',\n Group: 'Group by this column',\n Ungroup: 'Ungroup by this column',\n GroupButton: 'Group button',\n UnGroupAria: 'ungroup button',\n GroupSeperator: 'Separator for the grouped columns',\n UnGroupIcon: 'ungroup the grouped column ',\n GroupedSortIcon: 'sort the grouped column ',\n GroupedDrag: 'Drag the grouped column',\n GroupCaption: ' is groupcaption cell',\n CheckBoxLabel: 'checkbox',\n SelectAllCheckbox: 'Select all checkbox',\n SelectRow: 'Select row',\n autoFitAll: 'Autofit all columns',\n autoFit: 'Autofit this column',\n AutoFitAll: 'Autofit all columns',\n AutoFit: 'Autofit this column',\n Export: 'Export',\n FirstPage: 'First Page',\n LastPage: 'Last Page',\n PreviousPage: 'Previous Page',\n NextPage: 'Next Page',\n SortAscending: 'Sort Ascending',\n SortDescending: 'Sort Descending',\n EditRecord: 'Edit Record',\n DeleteRecord: 'Delete Record',\n FilterMenu: 'Filter',\n SelectAll: 'Select All',\n AddCurrentSelection: 'Add current selection to filter',\n Blanks: 'Blanks',\n FilterTrue: 'True',\n FilterFalse: 'False',\n NoResult: 'No matches found',\n ClearFilter: 'Clear Filter',\n Clear: 'Clear',\n NumberFilter: 'Number Filters',\n TextFilter: 'Text Filters',\n DateFilter: 'Date Filters',\n DateTimeFilter: 'DateTime Filters',\n MatchCase: 'Match Case',\n Between: 'Between',\n CustomFilter: 'Custom Filter',\n CustomFilterPlaceHolder: 'Enter the value',\n CustomFilterDatePlaceHolder: 'Choose a date',\n AND: 'AND',\n OR: 'OR',\n ShowRowsWhere: 'Show rows where:',\n ToolbarMenuDialogARIA: 'Toolbar menu dialog',\n FilterMenuDialogARIA: 'Filter menu',\n ExcelFilterDialogARIA: 'Excel filter',\n CheckBoxFilterDialogARIA: 'Checkbox filter',\n DialogEditARIA: 'Edit dialog',\n ColumnMenuDialogARIA: 'Column menu dialog',\n CustomFilterDialogARIA: 'Customer filter dialog',\n SortAtoZ: 'Sort A to Z',\n SortZtoA: 'Sort Z to A',\n SortByOldest: 'Sort by Oldest',\n SortByNewest: 'Sort by Newest',\n SortSmallestToLargest: 'Sort Smallest to Largest',\n SortLargestToSmallest: 'Sort Largest to Smallest',\n Sort: 'Sort',\n FilterDescription: 'Press Alt Down to open filter Menu',\n SortDescription: 'Press Enter to sort',\n ColumnMenuDescription: 'Press Alt Down to open Column Menu',\n GroupDescription: 'Press Ctrl space to group',\n ColumnHeader: ' column header ',\n TemplateCell: ' is template cell',\n CommandColumnAria: 'is Command column column header ',\n DialogEdit: 'Dialog edit',\n ClipBoard: 'clipboard',\n AscendingText: 'Ascending',\n DescendingText: 'Descending',\n NoneText: 'None',\n Expanded: 'Expanded',\n Collapsed: 'Collapsed'\n };\n this.keyConfigs = {\n downArrow: 'downarrow',\n upArrow: 'uparrow',\n rightArrow: 'rightarrow',\n leftArrow: 'leftarrow',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n shiftRight: 'shift+rightarrow',\n shiftLeft: 'shift+leftarrow',\n home: 'home',\n end: 'end',\n escape: 'escape',\n ctrlHome: 'ctrl+home',\n ctrlEnd: 'ctrl+end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n ctrlAltPageUp: 'ctrl+alt+pageup',\n ctrlAltPageDown: 'ctrl+alt+pagedown',\n altPageUp: 'alt+pageup',\n altPageDown: 'alt+pagedown',\n altDownArrow: 'alt+downarrow',\n altUpArrow: 'alt+uparrow',\n ctrlDownArrow: 'ctrl+downarrow',\n ctrlUpArrow: 'ctrl+uparrow',\n ctrlPlusA: 'ctrl+A',\n ctrlPlusP: 'ctrl+P',\n insert: 'insert',\n delete: 'delete',\n f2: 'f2',\n enter: 'enter',\n ctrlEnter: 'ctrl+enter',\n shiftEnter: 'shift+enter',\n tab: 'tab',\n shiftTab: 'shift+tab',\n space: 'space',\n ctrlPlusC: 'ctrl+C',\n ctrlShiftPlusH: 'ctrl+shift+H',\n ctrlSpace: 'ctrl+space',\n ctrlLeftArrow: 'ctrl+leftarrow',\n ctrlRightArrow: 'ctrl+rightarrow'\n };\n };\n /**\n * For internal use only - To Initialize the component rendering.\n *\n * @returns {void}\n * @private\n */\n Grid.prototype.render = function () {\n this.log(['module_missing', 'promise_enabled', 'locale_missing', 'check_datasource_columns']);\n this.ariaService.setOptions(this.element, { role: 'grid' });\n createSpinner({ target: this.element, cssClass: this.cssClass ? this.cssClass : null }, this.createElement);\n this.renderModule = new Render(this, this.serviceLocator);\n this.searchModule = new Search(this);\n this.scrollModule = new Scroll(this);\n this.notify(events.initialLoad, {});\n if (this.pageSettings.enableQueryString) {\n var pageValue = new URL(window.location.href).searchParams.get('page');\n if (!isNullOrUndefined(pageValue) && window.location.href.indexOf('?page=') > 0) {\n var currentPageValue = parseInt(pageValue, 10);\n this.setProperties({ pageSettings: { currentPage: currentPageValue } }, true);\n this.pageSettings.currentPage = currentPageValue;\n }\n }\n if ((this.getDataModule().dataManager.dataSource.offline === true || this.getDataModule().dataManager.dataSource.url === undefined)\n && !(!isNullOrUndefined(this.dataSource) && this.dataSource.result)) {\n this.isVirtualAdaptive = true;\n }\n if (this.isReact) {\n var args = { requireTemplateRef: this.requireTemplateRef };\n this.trigger(events.load, args);\n if (!args.requireTemplateRef) {\n this.requireTemplateRef = args.requireTemplateRef;\n }\n }\n else {\n this.trigger(events.load);\n }\n prepareColumns(this.columns, this.enableColumnVirtualization, this);\n if (this.enableColumnVirtualization && this.isChangeDataSourceCall && this.columnModel) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n this.isPreparedFrozenColumns = true;\n if (this.enablePersistence) {\n this.notify(events.columnsPrepared, {});\n }\n this.getMediaColumns();\n setColumnIndex(this.columns);\n if (this.isFrozenGrid() && !this.mergedColumns) {\n this.setInitialFrozenColumnIndex(this.columns);\n }\n this.checkLockColumns(this.columns);\n this.getColumns();\n this.processModel();\n this.gridRender();\n this.wireEvents();\n this.addListener();\n this.updateDefaultCursor();\n this.updateStackedFilter();\n if (this.loadingIndicator.indicatorType === 'Spinner') {\n this.showSpinner();\n }\n this.notify(events.initialEnd, {});\n if (this.loadingIndicator.indicatorType === 'Shimmer') {\n this.refreshMaskRow();\n }\n if (this.refreshing) {\n this.trigger('created');\n }\n };\n Grid.prototype.setInitialFrozenColumnIndex = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n var column = columns[parseInt(i.toString(), 10)];\n column[\"\" + literals.initialFrozenColumnIndex] = column.index;\n if (column.columns) {\n this.setInitialFrozenColumnIndex(column.columns);\n }\n }\n };\n /**\n * By default, grid shows the spinner for all its actions. You can use this method to show spinner at your needed time.\n *\n * @returns {void}\n */\n Grid.prototype.showSpinner = function () {\n if (!this.isExportGrid) {\n showSpinner(this.element);\n }\n };\n /**\n * By default, grid shows the spinner for all its actions. You can use this method to show spinner at your needed time.\n *\n * @returns {void}\n */\n Grid.prototype.hideSpinner = function () {\n if (!this.isExportGrid) {\n hideSpinner(this.element);\n }\n };\n Grid.prototype.showMaskRow = function (axisDirection, dialogElement) {\n if (isNullOrUndefined(this.headerModule) || isNullOrUndefined(this.contentModule)) {\n return;\n }\n var gridHeader = this.getHeaderContent().firstChild;\n var gridContent = this.getContent().firstChild;\n var gridFooter = this.getFooterContent();\n if (dialogElement) {\n var dialogHolder = dialogElement.querySelector('.e-checkboxlist');\n var maskRowCount = Math.floor(dialogHolder.getBoundingClientRect().height / this.getRowHeight());\n var maskTemplate = '
'\n + '
'\n + this.getShimmerTemplate() + this.getShimmerTemplate() + '
';\n dialogHolder.innerHTML = '';\n for (var i = 0; i < maskRowCount; i++) {\n dialogHolder.innerHTML += maskTemplate;\n var maskSpan = [].slice.call(dialogHolder\n .querySelectorAll('.e-mask:not(.e-mask-checkbox-filter-intent):not(.e-mask-checkbox-filter-span-intent)'));\n maskSpan[0].classList.add('e-mask-checkbox-filter-intent');\n maskSpan[1].classList.add('e-mask-checkbox-filter-span-intent');\n }\n return;\n }\n if ((!this.enableRtl && !this.getHeaderContent().style.paddingRight)\n || (this.enableRtl && !this.getHeaderContent().style.paddingLeft)) {\n gridContent.style.overflowY = 'hidden';\n }\n if (!this.isInitialLoad && !this.getColumns().length) {\n var contentHeight = gridContent.getBoundingClientRect().height;\n var maskTableHeight = contentHeight === 0 ? this.allowPaging ? this.pageSettings.pageSize * this.getRowHeight()\n : window.innerHeight : contentHeight;\n var contentRowCount = Math.ceil(maskTableHeight / this.getRowHeight());\n if (this.rowRenderingMode !== 'Vertical') {\n this.headerMaskTable = this.createEmptyMaskTable(gridHeader, 1);\n }\n this.contentMaskTable = this.createEmptyMaskTable(gridContent, contentRowCount);\n return;\n }\n this.maskRowContentScroll = (this.enableVirtualization || this.enableColumnVirtualization) && axisDirection ? true : false;\n if (!this.contentMaskTable) {\n var content = gridContent;\n if (this.enableVirtualization || this.enableColumnVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n if (!isNullOrUndefined(content.querySelector('tbody'))) {\n this.contentMaskTable = this.createMaskTable(content, this.getContentMaskColumns(), axisDirection);\n }\n }\n if (!this.headerMaskTable && (this.isFrozenGrid() || (this.enableColumnVirtualization && axisDirection === 'X'))) {\n var content = gridHeader;\n if (this.enableColumnVirtualization && axisDirection === 'X') {\n content = content.querySelector('.e-virtualtable');\n }\n this.headerMaskTable = this.createMaskTable(content, this.getContentMaskColumns(), axisDirection);\n }\n if (gridFooter && gridFooter.querySelector('.e-summaryrow')) {\n var gridFooterContent = gridFooter.firstChild;\n if (!this.footerContentMaskTable) {\n var footerContent = gridFooterContent;\n this.footerContentMaskTable = this.createMaskTable(footerContent);\n }\n }\n if (!(this.enableVirtualization && axisDirection)) {\n EventHandler.add(gridContent, 'scroll', this.translateMaskRow, this);\n }\n };\n Grid.prototype.getContentMaskColumns = function () {\n return this.getColumns();\n };\n Grid.prototype.createEmptyMaskTable = function (maskElement, rowCount) {\n var table = this.createElement('table', { className: 'e-table e-masked-table' });\n var tbody = this.createElement('tbody', { className: 'e-masked-tbody' });\n var row = this.createElement('tr', { className: 'e-masked-row e-row', attrs: {\n style: 'height: ' + this.getRowHeight() + 'px;'\n } });\n var cell = this.createElement('td', { className: 'e-masked-cell e-rowcell' });\n cell.innerHTML = this.getShimmerTemplate();\n row.appendChild(cell);\n for (var i = 0; i < rowCount; i++) {\n tbody.appendChild(row.cloneNode(true));\n }\n table.appendChild(tbody);\n maskElement.appendChild(table);\n return table;\n };\n Grid.prototype.createMaskTable = function (element, columns, axisDirection) {\n var parentElement = element;\n var header = closest(parentElement, '.e-gridheader') ? true : false;\n var content = closest(parentElement, '.e-gridcontent') ? true : false;\n var footer = closest(parentElement, '.e-gridfooter') ? true : false;\n var gridContent = this.getContent().firstChild;\n var gridContentScrollHeight = gridContent.scrollHeight;\n var table = parentElement.querySelector('table');\n var maskTable = table.cloneNode();\n maskTable.removeAttribute('role');\n maskTable.removeAttribute('id');\n maskTable.style.position = 'absolute';\n maskTable.style.zIndex = '5';\n maskTable.style.width = table.getBoundingClientRect().width + 'px';\n if (header && !(this.enableColumnVirtualization && axisDirection === 'X')) {\n maskTable.style.transform = 'translate(0px,'\n + table.querySelector('thead').getBoundingClientRect().height + 'px)';\n }\n maskTable.setAttribute('class', 'e-table e-masked-table');\n var maskColgroup = table.querySelector('colgroup').cloneNode(true);\n maskColgroup.removeAttribute('id');\n maskColgroup.setAttribute('class', 'e-masked-colgroup');\n maskTable.appendChild(maskColgroup);\n if (header && this.enableColumnVirtualization && axisDirection === 'X') {\n var row = this.createMaskRow(maskColgroup, columns);\n if (this.isFrozenGrid()) {\n var frzTd = [].slice.call(row.querySelectorAll('.e-rowcell'));\n for (var i = 0; i < frzTd.length; i++) {\n if (i < this.frozenLeftCount) {\n if (this.frozenLeftCount - 1 === i) {\n frzTd[parseInt(i.toString(), 10)].classList.add('e-freezeleftborder');\n }\n frzTd[parseInt(i.toString(), 10)].classList.add('e-leftfreeze');\n frzTd[parseInt(i.toString(), 10)].setAttribute('data-colindex', i.toString());\n frzTd[parseInt(i.toString(), 10)].style.left = (columns[parseInt(i.toString(), 10)].valueX -\n this.translateX) + 'px';\n }\n else if ((frzTd.length - this.frozenRightCount) <= i && columns[parseInt(i.toString(), 10)]) {\n if ((frzTd.length - this.frozenRightCount) === i) {\n frzTd[parseInt(i.toString(), 10)].classList.add('e-freezerightborder');\n }\n frzTd[parseInt(i.toString(), 10)].classList.add('e-rightfreeze');\n frzTd[parseInt(i.toString(), 10)].setAttribute('data-colindex', i.toString());\n frzTd[parseInt(i.toString(), 10)].style.right = (this.translateX +\n columns[parseInt(i.toString(), 10)].valueX) + 'px';\n }\n }\n }\n var thead = table.querySelector('thead');\n var rows = [].slice.call(thead.querySelectorAll('tr'));\n var maskTHead = thead.cloneNode();\n maskTHead.removeAttribute('role');\n maskTHead.setAttribute('class', 'e-masked-thead');\n var rowCount = rows.length;\n for (var i = 0; i < rowCount; i++) {\n maskTHead.appendChild(row.cloneNode(true));\n maskTHead.childNodes[parseInt(i.toString(), 10)].style\n .height = rows[parseInt(i.toString(), 10)].getBoundingClientRect().height + 'px';\n }\n maskTable.appendChild(maskTHead);\n }\n var maskTBody = table.querySelector('tbody').cloneNode();\n maskTBody.removeAttribute('role');\n maskTBody.setAttribute('class', 'e-masked-tbody');\n var tbody = table.querySelector('tbody');\n if (content || header) {\n var rowCountElement = gridContent;\n var rowCount = Math.ceil(rowCountElement.getBoundingClientRect().height / this.getRowHeight());\n if (tbody.querySelector('.e-emptyrow') || !tbody.childNodes.length || (content && this.childGrid)) {\n var row = this.createMaskRow(maskColgroup, columns);\n var altRow = row.cloneNode(true);\n altRow.classList.add('e-altrow');\n for (var i = 0; i < rowCount; i++) {\n var altNumber = 1;\n maskTBody.appendChild((i + altNumber) % 2 === 0 ? altRow.cloneNode(true) : row.cloneNode(true));\n }\n }\n else {\n var rowsQuery = 'tr:not(.e-hide):not([style*=\"display:none\"]):not([style*=\"display: none\"])';\n var rows = [].slice.call(tbody.querySelectorAll(rowsQuery));\n var addEditRow = tbody.querySelector('.e-addedrow, .e-editedrow');\n var addEditRowIndex = void 0;\n if (addEditRow) {\n addEditRowIndex = rows.indexOf(addEditRow);\n if (this.isFrozenGrid() && this.enableColumnVirtualization) {\n var frzTd = [].slice.call(rows[addEditRowIndex + 1].querySelectorAll('.e-rowcell'));\n for (var i = 0; i < frzTd.length; i++) {\n if (i < this.frozenLeftCount) {\n frzTd[parseInt(i.toString(), 10)].classList.add('e-leftfreeze');\n frzTd[parseInt(i.toString(), 10)].setAttribute('data-colindex', i.toString());\n frzTd[parseInt(i.toString(), 10)].style.left = (columns[parseInt(i.toString(), 10)].valueX - this.translateX) + 'px';\n }\n else if ((frzTd.length - this.frozenRightCount) <= i && columns[parseInt(i.toString(), 10)]) {\n frzTd[parseInt(i.toString(), 10)].classList.add('e-rightfreeze');\n frzTd[parseInt(i.toString(), 10)].setAttribute('data-colindex', i.toString());\n frzTd[parseInt(i.toString(), 10)].style.right = (this.translateX +\n columns[parseInt(i.toString(), 10)].valueX) + 'px';\n }\n }\n }\n if (addEditRow.classList.contains('e-addedrow')) {\n rows.splice(addEditRowIndex, 2);\n }\n else {\n rows.splice(addEditRowIndex, 1);\n }\n }\n rowCount = (this.enableVirtualization || this.enableColumnVirtualization) && axisDirection ? rows.length\n : rowCount <= rows.length ? rowCount : rows.length;\n for (var i = 0; i < rowCount; i++) {\n maskTBody.appendChild(this.applyMaskRow(rows[parseInt(i.toString(), 10)].cloneNode(true), rows[parseInt(i.toString(), 10)].getBoundingClientRect().height));\n }\n if (addEditRow && addEditRow.classList.contains('e-editedrow') && addEditRowIndex < rowCount) {\n var addEditMaskRow = maskTBody.childNodes[parseInt(addEditRowIndex.toString(), 10)];\n addEditMaskRow.style.height = this.getRowHeight() + 'px';\n addEditMaskRow.classList.add('e-row');\n if (addEditRow.classList.contains('e-altrow')) {\n addEditMaskRow.classList.add('e-altrow');\n }\n }\n }\n }\n maskTable.appendChild(maskTBody);\n if (footer) {\n var tfoot = table.querySelector('tfoot');\n var maskTFoot = tfoot.cloneNode();\n maskTFoot.setAttribute('class', 'e-masked-tfoot');\n var rows = [].slice.call(tfoot.querySelectorAll('tr'));\n for (var i = 0; i < rows.length; i++) {\n maskTFoot.appendChild(this.applyMaskRow(rows[parseInt(i.toString(), 10)].cloneNode(true), rows[parseInt(i.toString(), 10)].getBoundingClientRect().height));\n }\n maskTable.appendChild(maskTFoot);\n }\n if (header && this.isFrozenGrid() && !this.enableColumnVirtualization) {\n this.getHeaderContent().querySelector('.' + literals.headerContent).style.position = 'relative';\n }\n parentElement.insertBefore(maskTable, parentElement.firstChild);\n if (content && !(this.enableVirtualization && axisDirection)) {\n var minScrollTop = gridContentScrollHeight - maskTable.getBoundingClientRect().height;\n minScrollTop = minScrollTop < 0 ? 0 : minScrollTop;\n var scrollTop = gridContent.scrollTop <= minScrollTop ? gridContent.scrollTop : minScrollTop;\n if (this.enableVirtualization) {\n scrollTop -= getTransformValues(closest(parentElement, '.e-virtualtable')).height;\n }\n maskTable.style.transform = 'translate(0px,' + scrollTop + 'px)';\n }\n return maskTable;\n };\n Grid.prototype.applyMaskRow = function (row, rowHeight) {\n var maskRow = row;\n maskRow.removeAttribute('role');\n maskRow.removeAttribute('aria-rowindex');\n maskRow.removeAttribute('data-rowindex');\n maskRow.removeAttribute('data-uid');\n maskRow.classList.add('e-masked-row');\n maskRow.style.height = rowHeight + 'px';\n var maskCells = [].slice.call(maskRow.childNodes);\n for (var i = 0; i < maskCells.length; i++) {\n var maskCell = maskCells[parseInt(i.toString(), 10)];\n var displayAsCheckBoxCell = maskCell.firstChild && maskCell.firstChild.classList\n && maskCell.firstChild.classList.contains('e-checkbox-wrapper');\n maskCell.removeAttribute('role');\n maskCell.removeAttribute('tabindex');\n maskCell.removeAttribute('aria-label');\n if (this.enableColumnVirtualization && maskCell.classList.contains('e-fixedfreeze')) {\n removeClass([maskCell], ['e-fixedfreeze', 'e-freezeleftborder', 'e-freezerightborder']);\n addClass([maskCell], ['e-unfreeze']);\n }\n if (!(this.enableColumnVirtualization && (maskCell.classList.contains('e-leftfreeze') ||\n maskCell.classList.contains('e-rightfreeze')))) {\n maskCell.removeAttribute('data-colindex');\n }\n maskCell.removeAttribute('aria-colindex');\n maskCell.removeAttribute('index');\n maskCell.removeAttribute('ej-mappingname');\n maskCell.removeAttribute('ej-mappingvalue');\n maskCell.removeAttribute('e-mappinguid');\n maskCell.removeAttribute('aria-expanded');\n maskCell.classList.add('e-masked-cell');\n maskCell.innerHTML = this.getShimmerTemplate();\n if (maskCell.classList.contains('e-recordplusexpand') || maskCell.classList.contains('e-recordpluscollapse')) {\n maskCell.firstChild.classList.add('e-mask-group-intent');\n }\n else if (maskCell.classList.contains('e-gridchkbox') || displayAsCheckBoxCell) {\n maskCell.firstChild.classList.add('e-mask-checkbox-intent');\n }\n else if (maskCell.classList.contains('e-rowdragdrop')) {\n maskCell.firstChild.classList.add('e-mask-drag-intent');\n }\n else if (maskCell.classList.contains('e-indentcell')) {\n maskCell.innerHTML = '';\n }\n }\n return maskRow;\n };\n Grid.prototype.createMaskRow = function (refColgroup, refColumns) {\n var colgroup = refColgroup;\n var columns = refColumns;\n var row = this.createElement('tr', { className: 'e-masked-row e-row' });\n if (this.rowRenderingMode !== 'Vertical') {\n row.style.height = this.getRowHeight() + 'px';\n }\n var td = this.createElement('td', { className: 'e-masked-cell e-rowcell' });\n for (var i = 0, colIndex = 0; i < colgroup.childNodes.length; i++) {\n var col = colgroup.childNodes[parseInt(i.toString(), 10)];\n var localTD = td.cloneNode();\n localTD.innerHTML = this.getShimmerTemplate();\n if (!(col.classList.contains('e-group-intent') || col.classList.contains('e-detail-intent')\n || col.classList.contains('e-drag-intent'))) {\n if (this.rowRenderingMode === 'Vertical' && columns[parseInt(colIndex.toString(), 10)]) {\n localTD.setAttribute('data-cell', columns[parseInt(colIndex.toString(), 10)].headerText ?\n columns[parseInt(colIndex.toString(), 10)].headerText : columns[parseInt(colIndex.toString(), 10)].field);\n }\n if (col.style.display === 'none') {\n localTD.classList.add('e-hide');\n }\n else {\n localTD.style.textAlign = columns[parseInt(colIndex.toString(), 10)]\n && columns[parseInt(colIndex.toString(), 10)].textAlign ?\n columns[parseInt(colIndex.toString(), 10)].textAlign.toLowerCase()\n : this.enableRtl ? 'right' : 'left';\n if (columns[parseInt(colIndex.toString(), 10)] && (columns[parseInt(colIndex.toString(), 10)].type === 'checkbox'\n || columns[parseInt(colIndex.toString(), 10)].displayAsCheckBox)) {\n localTD.firstChild.classList.add('e-mask-checkbox-intent');\n }\n }\n colIndex++;\n }\n else {\n if (col.classList.contains('e-group-intent')) {\n localTD.firstChild.classList.add('e-mask-group-intent');\n }\n else if (col.classList.contains('e-detail-intent')) {\n localTD.firstChild.classList.add('e-mask-detail-intent');\n }\n else if (col.classList.contains('e-drag-intent')) {\n localTD.firstChild.classList.add('e-mask-drag-intent');\n }\n }\n row.appendChild(localTD);\n }\n return row;\n };\n Grid.prototype.getShimmerTemplate = function () {\n if (this.maskRowContentScroll) {\n return '';\n }\n return '';\n };\n Grid.prototype.addShimmerEffect = function () {\n this.maskRowContentScroll = false;\n var maskSpan = [].slice.call(this.element.querySelectorAll('.e-mask:not(.e-shimmer-wave)'));\n for (var i = 0; i < maskSpan.length; i++) {\n if (maskSpan[parseInt(i.toString(), 10)]) {\n maskSpan[parseInt(i.toString(), 10)].classList.add('e-shimmer-wave');\n }\n }\n };\n Grid.prototype.translateMaskRow = function (e) {\n var target = e.target;\n var maskTables = target.querySelectorAll('.e-masked-table');\n for (var i = 0; i < maskTables.length; i++) {\n var maskTable = maskTables[parseInt(i.toString(), 10)];\n if (maskTable) {\n var minScrollTop = target.scrollHeight - maskTable.getBoundingClientRect().height;\n minScrollTop = minScrollTop < 0 ? 0 : minScrollTop;\n var scrollTop = target.scrollTop <= minScrollTop ? target.scrollTop : minScrollTop;\n if (this.enableVirtualization) {\n scrollTop -= getTransformValues(closest(maskTable, '.e-virtualtable')).height;\n }\n maskTable.style.transform = 'translate(0px,' + scrollTop + 'px)';\n }\n }\n };\n Grid.prototype.removeMaskRow = function () {\n if (!isNullOrUndefined(this.contentModule)) {\n var gridContent = this.getContent().firstChild;\n EventHandler.remove(gridContent, 'scroll', this.translateMaskRow);\n }\n if (this.headerMaskTable && this.isFrozenGrid() && !this.enableColumnVirtualization) {\n this.getHeaderContent().querySelector('.' + literals.headerContent).style.position = '';\n }\n var maskTables = [this.headerMaskTable,\n this.contentMaskTable, this.footerContentMaskTable];\n for (var i = 0; i < maskTables.length; i++) {\n var maskTable = maskTables[parseInt(i.toString(), 10)];\n if (maskTable) {\n remove(maskTable);\n }\n }\n this.headerMaskTable = null;\n this.contentMaskTable = null;\n this.footerContentMaskTable = null;\n };\n Grid.prototype.refreshMaskRow = function () {\n var gridContent = this.getContent().firstChild;\n if (!this.isInitialLoad && !this.getColumns().length) {\n return;\n }\n if (this.contentMaskTable && gridContent.querySelector('.e-masked-table')) {\n var content = gridContent;\n if (this.enableVirtualization) {\n content = content.querySelector('.e-virtualtable');\n }\n this.refreshMaskRowColgroupWidth(content);\n }\n };\n Grid.prototype.refreshMaskRowColgroupWidth = function (content) {\n var table = content.querySelector('table:not(.e-masked-table)');\n var colgroup = table.querySelector(literals.colGroup).cloneNode(true);\n var maskTable = content.querySelector('.e-masked-table');\n colgroup.removeAttribute('id');\n colgroup.setAttribute('class', 'e-masked-colgroup');\n for (var i = 0; i < colgroup.childNodes.length; i++) {\n colgroup.childNodes[parseInt(i.toString(), 10)].removeAttribute('class');\n }\n remove(maskTable.querySelector('.e-masked-colgroup'));\n maskTable.insertBefore(colgroup, maskTable.firstChild);\n maskTable.style.width = table.getBoundingClientRect().width + 'px';\n };\n Grid.prototype.updateStackedFilter = function () {\n if (this.allowFiltering && this.filterSettings.type === 'FilterBar' &&\n this.getHeaderContent().getElementsByClassName('e-stackedheadercell').length) {\n this.getHeaderContent().classList.add('e-stackedfilter');\n }\n else {\n this.getHeaderContent().classList.remove('e-stackedfilter');\n }\n };\n Grid.prototype.getMediaColumns = function () {\n if (!this.enableColumnVirtualization) {\n var gcol = this.getColumns();\n this.getShowHideService = this.serviceLocator.getService('showHideService');\n if (!isNullOrUndefined(gcol)) {\n for (var index = 0; index < gcol.length; index++) {\n if (!isNullOrUndefined(gcol[parseInt(index.toString(), 10)].hideAtMedia)\n && (isNullOrUndefined(gcol[parseInt(index.toString(), 10)].visible)\n || gcol[parseInt(index.toString(), 10)].visible)) {\n this.pushMediaColumn(gcol[parseInt(index.toString(), 10)], index);\n }\n }\n }\n }\n this.updateFrozenColumnsWidth();\n };\n Grid.prototype.pushMediaColumn = function (col, index) {\n this.mediaCol.push(col);\n this.media[col.uid] = window.matchMedia(col.hideAtMedia);\n this.mediaQueryUpdate(index, this.media[col.uid]);\n this.mediaBindInstance[parseInt(index.toString(), 10)] = this.mediaQueryUpdate.bind(this, index);\n this.media[col.uid].addListener(this.mediaBindInstance[parseInt(index.toString(), 10)]);\n };\n /**\n * @param {Column} col - specifies the column\n * @returns {void}\n * @hidden\n */\n Grid.prototype.updateMediaColumns = function (col) {\n if (!this.enableColumnVirtualization) {\n var index = this.getColumnIndexByUid(col.uid);\n for (var i = 0; i < this.mediaCol.length; i++) {\n if (col.uid === this.mediaCol[parseInt(i.toString(), 10)].uid) {\n this.mediaCol.splice(i, 1);\n return;\n }\n }\n this.pushMediaColumn(col, index);\n }\n };\n /**\n * @param {number} columnIndex - specifies the column index\n * @param {MediaQueryList} e - specifies the MediaQueryList\n * @returns {void}\n * @hidden\n */\n Grid.prototype.mediaQueryUpdate = function (columnIndex, e) {\n var col = this.getColumns()[parseInt(columnIndex.toString(), 10)];\n if (this.mediaCol.some(function (mediaColumn) { return mediaColumn.uid === col.uid; })) {\n col.visible = e.matches;\n if (this.isInitialLoad) {\n this.invokedFromMedia = true;\n if (col.visible) {\n this.showHider.show(col.headerText, 'headerText');\n }\n else {\n this.showHider.hide(col.headerText, 'headerText');\n }\n }\n }\n };\n Grid.prototype.refreshMediaCol = function () {\n this.isInitialLoad = true;\n var footerContent = this.element.querySelector('.' + literals.gridFooter);\n if (this.aggregates.length && this.element.scrollHeight > parseInt(this.height.toString(), 10) && footerContent) {\n addClass([footerContent], ['e-footerpadding']);\n }\n var checkboxColumn = this.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length === 0 || checkboxColumn.length && this.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n this.isCheckBoxSelection = false;\n }\n if (this.rowRenderingMode === 'Vertical') {\n if (this.enableHover) {\n this.setProperties({ enableAdaptiveUI: true, enableHover: false }, true);\n removeClass([this.element], 'e-gridhover');\n }\n }\n if (this.enableAdaptiveUI && this.scrollModule) {\n this.scrollModule.refresh();\n }\n if (this.isFrozenGrid() && this.isAutoGenerateColumns) {\n this.widthService.setWidthToColumns();\n this.isAutoGenerateColumns = false;\n }\n };\n Grid.prototype.removeMediaListener = function () {\n for (var i = 0; i < this.mediaCol.length; i++) {\n this.media[this.mediaCol[parseInt(i.toString(), 10)].uid]\n .removeListener(this.mediaBindInstance[this.mediaCol[parseInt(i.toString(), 10)].index]);\n }\n };\n /**\n * For internal use only - Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Grid.prototype.eventInitializer = function () {\n //eventInitializer\n };\n /**\n * Destroys the component (detaches/removes all event handlers, attributes, classes, and empties the component element).\n *\n * @function destroy\n * @returns {void}\n */\n Grid.prototype.destroy = function () {\n var gridElement = this.element;\n if (!gridElement) {\n return;\n }\n var hasGridChild = gridElement.querySelector('.' + literals.gridHeader) &&\n gridElement.querySelector('.' + literals.gridContent) ? true : false;\n if (hasGridChild) {\n this.unwireEvents();\n }\n this.removeListener();\n this.removeMediaListener();\n this.notify(events.destroy, {});\n this.destroyDependentModules();\n if (this.isReact) {\n this.destroyTemplate(['template']);\n }\n if (this.isVue) {\n this.destroyTemplate();\n }\n if (hasGridChild) {\n _super.prototype.destroy.call(this);\n }\n this.toolTipObj.destroy();\n if (this.isReact && !Browser.isIE) {\n this.element.innerHTML = '';\n }\n var modules = ['renderModule', 'headerModule', 'contentModule', 'valueFormatterService',\n 'serviceLocator', 'ariaService', 'keyboardModule', 'widthService', 'searchModule', 'showHider',\n 'scrollModule', 'printModule', 'clipboardModule', 'focusModule'];\n for (var i = 0; i < modules.length; i++) {\n if (this[modules[parseInt(i.toString(), 10)]]) {\n this[modules[parseInt(i.toString(), 10)]] = null;\n }\n }\n this.element.innerHTML = '';\n classList(this.element, [], ['e-rtl', 'e-gridhover', 'e-responsive', 'e-default', 'e-device', 'e-grid-min-height']);\n };\n Grid.prototype.destroyDependentModules = function () {\n var gridElement = this.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n this.scrollModule.destroy();\n this.keyboardModule.destroy();\n this.focusModule.destroy();\n this.clipboardModule.destroy();\n this.printModule.destroy();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Grid.prototype.getModuleName = function () {\n return 'grid';\n };\n Grid.prototype.enableBoxSelection = function () {\n if (this.enableAutoFill) {\n this.selectionSettings.cellSelectionMode = 'BoxWithBorder';\n this.element.classList.add('e-afenabled');\n }\n else {\n this.element.classList.remove('e-afenabled');\n this.notify(events.destroyAutoFillElements, {});\n }\n };\n Grid.prototype.setCSSClass = function (oldCSSClass) {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' '));\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {GridModel} newProp - Defines new properties\n * @param {GridModel} oldProp - Defines old properties\n * @returns {void}\n * @hidden\n */\n Grid.prototype.onPropertyChanged = function (newProp, oldProp) {\n var requireRefresh = false;\n var requireGridRefresh = false;\n var freezeRefresh = false;\n var checkCursor;\n var args = { requestType: 'refresh' };\n var childGridParent = null;\n var parentInstance = null;\n if (this.isDestroyed) {\n return;\n }\n this.log('module_missing');\n if (this.isEllipsisTooltip()) {\n this.toolTipObj.close();\n }\n var properties = Object.keys(newProp);\n if (properties.indexOf('columns') > -1) {\n if (this.enableColumnVirtualization) {\n this.columnModel = [];\n }\n this.updateColumnObject();\n requireGridRefresh = true;\n }\n for (var _i = 0, properties_1 = properties; _i < properties_1.length; _i++) {\n var prop = properties_1[_i];\n switch (prop) {\n case 'allowPaging':\n this.notify(events.uiUpdate, { module: 'pager', enable: this.allowPaging });\n requireRefresh = true;\n if (this.height === '100%') {\n this.scrollModule.refresh();\n }\n break;\n case 'pageSettings':\n if (this.pageTemplateChange) {\n this.pageTemplateChange = false;\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: newProp.pageSettings });\n break;\n }\n if (this.pagerModule && this.pagerModule.isCancel) {\n this.pagerModule.isCancel = false;\n return;\n }\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: newProp.pageSettings });\n if (isNullOrUndefined(newProp.pageSettings.currentPage) && isNullOrUndefined(newProp.pageSettings.pageSize)\n && isNullOrUndefined(newProp.pageSettings.totalRecordsCount)\n || !isNullOrUndefined(oldProp.pageSettings) &&\n ((newProp.pageSettings.currentPage !== oldProp.pageSettings.currentPage)\n && !this.enableColumnVirtualization && !this.enableVirtualization && this.pageRequireRefresh\n && this.pageSettings.totalRecordsCount <= this.pageSettings.pageSize)) {\n requireRefresh = true;\n }\n if (!this.pageRequireRefresh) {\n this.pageRequireRefresh = true;\n }\n if (this.pagerModule && this.pagerModule.isCancel) {\n this.pagerModule.isCancel = false;\n }\n break;\n case 'allowSorting':\n this.notify(events.uiUpdate, { module: 'sort', enable: this.allowSorting });\n requireRefresh = true;\n checkCursor = true;\n break;\n case 'allowFiltering':\n this.updateStackedFilter();\n this.notify(events.uiUpdate, { module: 'filter', enable: this.allowFiltering });\n requireRefresh = true;\n if (this.filterSettings.type !== 'FilterBar' || (this.editSettings.showAddNewRow && this.filterSettings.type === 'FilterBar')) {\n this.refreshHeader();\n }\n else {\n if (this.height === '100%') {\n this.scrollModule.refresh();\n }\n }\n break;\n case 'height':\n case 'width':\n this.notify(events.uiUpdate, { module: 'scroll', properties: { width: newProp.width, height: newProp.height } });\n if (this.allowPaging) {\n this.pagerModule.refresh();\n }\n break;\n case 'allowReordering':\n this.headerModule.refreshUI();\n checkCursor = true;\n break;\n case 'allowRowDragAndDrop':\n this.notify(events.uiUpdate, { module: 'rowDragAndDrop', enable: this.allowRowDragAndDrop });\n this.renderModule.refresh();\n this.headerModule.refreshUI();\n break;\n case 'allowSelection':\n this.notify(events.uiUpdate, { module: 'selection', enable: this.allowSelection });\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'enableAutoFill':\n if (this.selectionModule) {\n this.enableBoxSelection();\n this.selectionModule.updateAutoFillPosition();\n }\n break;\n case 'rowTemplate':\n this.rowTemplateFn = templateCompiler(this.rowTemplate);\n requireRefresh = true;\n break;\n case 'emptyRecordTemplate':\n this.emptyRecordTemplateFn = templateCompiler(this.emptyRecordTemplate);\n requireRefresh = true;\n break;\n case 'detailTemplate':\n this.detailTemplateFn = templateCompiler(this.detailTemplate);\n requireRefresh = true;\n break;\n case 'allowGrouping':\n this.notify(events.uiUpdate, { module: 'group', enable: this.allowGrouping });\n this.headerModule.refreshUI();\n requireRefresh = true;\n checkCursor = true;\n if (this.height === '100%') {\n this.scrollModule.refresh();\n }\n break;\n case 'enableInfiniteScrolling':\n case 'childGrid':\n requireRefresh = true;\n childGridParent = this.parentDetails ? document.querySelector(\"#\" + this.parentDetails.parentID) : null;\n parentInstance = childGridParent ? childGridParent.ej2_instances[0] : null;\n if (this.childGrid && parentInstance && isNullOrUndefined(parentInstance.childGrid.childGrid)) {\n var childGridObject = Object.assign({}, parentInstance.childGrid, { childGrid: newProp.childGrid });\n parentInstance.setProperties({ childGrid: childGridObject }, true);\n while (!isNullOrUndefined(parentInstance.parentDetails)) {\n var currentParent = document.querySelector(\"#\" + parentInstance.parentDetails.parentID);\n var currentParentInstance = currentParent ? currentParent.ej2_instances[0] : null;\n if (currentParentInstance) {\n var currentChildObject = Object.assign({}, currentParentInstance.childGrid);\n currentChildObject.childGrid = parentInstance.childGrid;\n currentParentInstance.setProperties({ childGrid: currentChildObject }, true);\n }\n parentInstance = currentParentInstance;\n }\n }\n this.headerModule.refreshUI();\n break;\n case 'toolbar':\n this.notify(events.uiUpdate, { module: 'toolbar' });\n if (this.height === '100%') {\n this.scrollModule.refresh();\n }\n break;\n case 'groupSettings':\n this.notify(events.inBoundModelChanged, {\n module: 'group', properties: newProp.groupSettings,\n oldProperties: oldProp.groupSettings\n });\n break;\n case 'aggregates':\n if (!this.aggregates.length && this.allowGrouping && this.groupSettings.columns.length) {\n requireRefresh = true;\n }\n this.notify(events.uiUpdate, { module: 'aggregate', properties: newProp });\n if (this.height === '100%') {\n this.scrollModule.refresh();\n }\n break;\n case 'frozenColumns':\n case 'frozenRows':\n case 'enableVirtualization':\n case 'enableColumnVirtualization':\n case 'currencyCode':\n case 'locale':\n if (this.isFrozenGrid()) {\n this.log('frozen_rows_columns');\n }\n freezeRefresh = true;\n requireGridRefresh = true;\n this.addNewRowFocus = true;\n break;\n case 'query':\n if (!this.getDataModule().isQueryInvokedFromData) {\n requireRefresh = true;\n }\n this.getDataModule().isQueryInvokedFromData = false;\n break;\n case 'autoFit':\n if (this.autoFit) {\n this.preventAdjustColumns();\n }\n else {\n this.restoreAdjustColumns();\n }\n break;\n default:\n this.extendedPropertyChange(prop, newProp, requireGridRefresh);\n }\n }\n if (checkCursor) {\n this.updateDefaultCursor();\n }\n if (requireGridRefresh) {\n if (freezeRefresh || this.getFrozenColumns() || this.frozenRows\n || (this.frozenLeftColumns.length || this.frozenRightColumns.length)) {\n this.freezeRefresh();\n }\n else {\n this.refresh();\n }\n }\n else if (requireRefresh) {\n this.notify(events.modelChanged, args);\n requireRefresh = false;\n this.maintainSelection(newProp.selectedRowIndex);\n }\n };\n Grid.prototype.extendedPropertyChange = function (prop, newProp, requireGridRefresh) {\n switch (prop) {\n case 'enableRtl':\n this.updateRTL();\n if (this.allowPaging) {\n this.element.querySelector('.e-gridpager').ej2_instances[0].enableRtl = newProp.enableRtl;\n this.element.querySelector('.e-gridpager').ej2_instances[0].dataBind();\n }\n if (this.height !== 'auto') {\n this.scrollModule.removePadding(!newProp.enableRtl);\n this.scrollModule.setPadding();\n }\n if (this.toolbar && this.toolbarModule) {\n this.toolbarModule.getToolbar().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.toolbarModule.getToolbar().ej2_instances[0].dataBind();\n }\n if (this.contextMenuItems && this.contextMenuModule) {\n this.contextMenuModule.getContextMenu().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.contextMenuModule.getContextMenu().ej2_instances[0].dataBind();\n }\n if (this.showColumnMenu && this.columnMenuModule && !this.enableAdaptiveUI) {\n this.columnMenuModule.getColumnMenu().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.columnMenuModule.getColumnMenu().ej2_instances[0].dataBind();\n }\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator) {\n this.refreshHeader();\n }\n this.notify(events.rtlUpdated, {});\n break;\n case 'enableAltRow':\n this.renderModule.refresh();\n break;\n case 'allowResizing':\n if (this.resizeModule) {\n this.resizeModule.render();\n }\n this.headerModule.refreshUI();\n this.updateResizeLines();\n break;\n case 'rowHeight':\n if (this.rowHeight) {\n addClass([this.element], 'e-grid-min-height');\n }\n else {\n removeClass([this.element], 'e-grid-min-height');\n }\n this.renderModule.refresh();\n this.headerModule.refreshUI();\n break;\n case 'gridLines':\n this.updateGridLines();\n break;\n case 'showColumnMenu':\n this.headerModule.refreshUI();\n this.notify(events.uiUpdate, { module: 'columnMenu', enable: true });\n break;\n case 'columnMenuItems':\n this.notify(events.uiUpdate, { module: 'columnMenu', enable: this.columnMenuItems });\n break;\n case 'contextMenuItems':\n this.notify(events.uiUpdate, { module: 'contextMenu', enable: this.contextMenuItems });\n break;\n case 'showColumnChooser':\n this.notify(events.uiUpdate, { module: 'columnChooser', enable: this.showColumnChooser });\n break;\n case 'filterSettings':\n this.updateStackedFilter();\n this.notify(events.inBoundModelChanged, { module: 'filter', properties: newProp.filterSettings });\n break;\n case 'searchSettings':\n this.notify(events.inBoundModelChanged, { module: 'search', properties: newProp.searchSettings });\n break;\n case 'sortSettings':\n this.notify(events.inBoundModelChanged, { module: 'sort' });\n break;\n case 'selectionSettings':\n this.notify(events.inBoundModelChanged, { module: 'selection', properties: newProp.selectionSettings });\n break;\n case 'editSettings':\n this.notify(events.inBoundModelChanged, { module: 'edit', properties: newProp.editSettings });\n break;\n case 'allowTextWrap':\n case 'textWrapSettings':\n if (this.allowTextWrap) {\n this.applyTextWrap();\n }\n else {\n this.removeTextWrap();\n }\n this.notify(events.freezeRender, { case: 'textwrap', isModeChg: (prop === 'textWrapSettings') });\n break;\n case 'dataSource':\n // eslint-disable-next-line no-case-declarations\n var pending_1 = this.getDataModule().getState();\n if (this.allowSelection && this.isPersistSelection && !(pending_1 && pending_1.isPending)) {\n this.clearSelection();\n }\n if (!isNullOrUndefined(this.dataSource) && this.dataSource.result) {\n this.isVirtualAdaptive = false;\n }\n if (Object.getPrototypeOf(newProp).deepWatch) {\n var pKeyField = this.getPrimaryKeyFieldNames()[0];\n for (var i = 0, props = Object.keys(newProp.dataSource); i < props.length; i++) {\n this.setRowData(getValue(pKeyField, this.dataSource[props[parseInt(i.toString(), 10)]]), this.dataSource[props[parseInt(i.toString(), 10)]]);\n }\n }\n else if (pending_1.isPending) {\n var gResult = !isNullOrUndefined(this.dataSource) ? this.dataSource.result : [];\n var names = (pending_1.group || []);\n if (names.length && !this.groupSettings.enableLazyLoading && !(gResult.length && gResult[0].field)) {\n for (var i = 0; i < names.length; i++) {\n gResult = DataUtil.group(gResult, names[parseInt(i.toString(), 10)], pending_1.aggregates || []);\n }\n }\n this.dataSource = {\n result: gResult, count: this.dataSource.count,\n aggregates: this.dataSource.aggregates\n };\n this.getDataModule().setState({});\n pending_1.resolver(this.dataSource);\n }\n else {\n if ((!isNullOrUndefined(this.dataSource) && this.dataSource.result\n && this.dataSource.count && this.groupSettings.columns.length)) {\n var gResult = this.dataSource.result;\n var names = this.groupSettings.columns;\n if (names.length && !(gResult.length && gResult[0].field)) {\n for (var i = 0; i < names.length; i++) {\n gResult = DataUtil.group(gResult, names[parseInt(i.toString(), 10)]);\n }\n }\n this.dataSource = {\n result: gResult, count: this.dataSource.count\n };\n }\n this.getDataModule().setState({ isDataChanged: false });\n this.notify(events.dataSourceModified, {});\n if (!requireGridRefresh) {\n this.renderModule.refresh();\n if (this.isCheckBoxSelection) {\n this.notify(events.beforeRefreshOnDataChange, {});\n }\n }\n }\n this.scrollRefresh();\n break;\n case 'enableHover':\n // eslint-disable-next-line no-case-declarations\n var action = newProp.enableHover ? addClass : removeClass;\n action([this.element], 'e-gridhover');\n break;\n case 'selectedRowIndex':\n if (!this.isSelectedRowIndexUpdating) {\n this.selectRow(newProp.selectedRowIndex);\n }\n this.isSelectedRowIndexUpdating = false;\n break;\n case 'resizeSettings':\n this.widthService.setWidthToTable();\n break;\n case 'enableAdaptiveUI':\n this.notify(events.setFullScreenDialog, {});\n break;\n case 'rowRenderingMode':\n this.enableVerticalRendering();\n this.notify(events.rowModeChange, {});\n this.refresh();\n break;\n case 'enableStickyHeader':\n this.scrollModule.addStickyListener(newProp.enableStickyHeader);\n break;\n }\n };\n Grid.prototype.maintainSelection = function (index) {\n var _this_1 = this;\n if (index !== -1) {\n var fn_1 = function () {\n _this_1.selectRow(index);\n _this_1.off(events.contentReady, fn_1);\n };\n this.on(events.contentReady, fn_1, this);\n }\n };\n /**\n * @param {Object} prop - Defines the property\n * @param {boolean} muteOnChange - Defines the mute on change\n * @returns {void}\n * @private\n */\n Grid.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n var filterSettings = 'filterSettings';\n if (prop[\"\" + filterSettings] && this.filterModule && muteOnChange) {\n this.filterModule.refreshFilter();\n }\n };\n /**\n * @hidden\n * @returns {number} - Returns the tables count\n */\n Grid.prototype.getTablesCount = function () {\n return this.tablesCount;\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.updateDefaultCursor = function () {\n var headerCells = [].slice.call(this.getHeaderContent().querySelectorAll('.e-headercell:not(.e-stackedheadercell)'));\n var stdHdrCell = [].slice.call(this.getHeaderContent().getElementsByClassName('e-stackedheadercell'));\n var cols = this.getColumns();\n for (var i = 0; i < headerCells.length; i++) {\n var cell = headerCells[parseInt(i.toString(), 10)];\n if (this.allowGrouping || this.allowReordering || this.allowSorting) {\n if (!cols[parseInt(i.toString(), 10)].allowReordering || !cols[parseInt(i.toString(), 10)].allowSorting\n || !cols[parseInt(i.toString(), 10)].allowGrouping) {\n cell.classList.add('e-defaultcursor');\n }\n else {\n cell.classList.add('e-mousepointer');\n }\n }\n }\n for (var count = 0; count < stdHdrCell.length; count++) {\n if (this.allowReordering) {\n stdHdrCell[parseInt(count.toString(), 10)].classList.add('e-mousepointer');\n }\n }\n };\n Grid.prototype.updateColumnModel = function (columns, isRecursion) {\n for (var i = 0, len = (!isNullOrUndefined(columns) ? columns.length : 0); i < len; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.updateColumnModel(columns[parseInt(i.toString(), 10)].columns, true);\n }\n else {\n this.columnModel.push(columns[parseInt(i.toString(), 10)]);\n }\n }\n if (isNullOrUndefined(isRecursion) || !isRecursion) {\n this.updateLockableColumns();\n }\n };\n Grid.prototype.getFrozenLeftCount = function () {\n return this.getFrozenColumns() || this.getFrozenLeftColumnsCount();\n };\n Grid.prototype.isFrozenGrid = function () {\n return this.getFrozenColumns() !== 0 || this.frozenLeftColumns.length !== 0 || this.frozenRightColumns.length !== 0 ||\n this.fixedColumns.length !== 0;\n };\n Grid.prototype.getFrozenMode = function () {\n return this.frozenName;\n };\n Grid.prototype.updateLockableColumns = function () {\n var cols = this.columnModel;\n var frozenCount = 0;\n var movableCount = 0;\n var frozenColumns = this.getFrozenColumns();\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].lockColumn) {\n if (i < frozenColumns) {\n cols.splice(frozenCount, 0, cols.splice(i, 1)[0]);\n frozenCount++;\n }\n else {\n cols.splice(frozenColumns + movableCount, 0, cols.splice(i, 1)[0]);\n movableCount++;\n }\n }\n }\n };\n Grid.prototype.checkLockColumns = function (cols) {\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].columns) {\n this.checkLockColumns(cols[parseInt(i.toString(), 10)].columns);\n }\n else if (cols[parseInt(i.toString(), 10)].lockColumn) {\n this.lockcolPositionCount++;\n }\n }\n };\n /**\n * @param {string} position - specifies position\n * @returns {number} returns the width\n * @hidden\n */\n Grid.prototype.leftrightColumnWidth = function (position) {\n var cols = position === 'left' ? this.getFrozenLeftColumns() : position === 'right' ? this.getFrozenRightColumns() : [];\n var width = 0;\n cols.filter(function (col) {\n if (col.visible) {\n width += parseInt(col.width.toString(), 10);\n }\n });\n return width;\n };\n /**\n * Gets the columns from the Grid.\n *\n * @param {boolean} isRefresh - Defines the boolean whether to refresh\n * @returns {Column[]} - returns the column\n */\n Grid.prototype.getColumns = function (isRefresh) {\n var _this_1 = this;\n var inview = this.inViewIndexes.map(function (v) { return v - _this_1.groupSettings.columns.length; }).filter(function (v) { return v > -1; });\n var vLen = inview.length;\n if (!this.enableColumnVirtualization || isNullOrUndefined(this.columnModel) || this.columnModel.length === 0 || isRefresh) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n var columns = vLen === 0 ? this.columnModel :\n this.columnModel.slice(inview[0], inview[vLen - 1] + 1);\n var left = [];\n var right = [];\n var movable = [];\n var isLeftRightFrozen = this.enableColumnVirtualization && this.isPreparedFrozenColumns && vLen === 0;\n if (isLeftRightFrozen) {\n this.frozenRightColumns = [];\n this.frozenLeftColumns = [];\n }\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].freeze === 'Left' || columns[parseInt(i.toString(), 10)].isFrozen) {\n left.push(columns[parseInt(i.toString(), 10)]);\n if (isLeftRightFrozen) {\n this.frozenLeftColumns.push(columns[parseInt(i.toString(), 10)]);\n }\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Right') {\n right.push(columns[parseInt(i.toString(), 10)]);\n if (isLeftRightFrozen) {\n this.frozenRightColumns.push(columns[parseInt(i.toString(), 10)]);\n }\n }\n else {\n movable.push(columns[parseInt(i.toString(), 10)]);\n }\n }\n if (this.enableColumnVirtualization && this.isFrozenGrid()) {\n if (this.frozenLeftColumns.length) {\n left = this.frozenLeftColumns;\n }\n if (this.frozenRightColumns.length) {\n right = this.frozenRightColumns;\n }\n }\n return left.concat(movable).concat(right);\n };\n /**\n * @private\n * @param {string} stackedHeader - Defines the stacked header\n * @param {Column[]} col - Defines the column\n * @returns {Column} Returns the Column\n */\n Grid.prototype.getStackedHeaderColumnByHeaderText = function (stackedHeader, col) {\n for (var i = 0; i < col.length; i++) {\n var individualColumn = col[parseInt(i.toString(), 10)];\n if (individualColumn.field === stackedHeader || individualColumn.headerText === stackedHeader) {\n this.stackedColumn = individualColumn;\n break;\n }\n else if (individualColumn.columns) {\n this.getStackedHeaderColumnByHeaderText(stackedHeader, individualColumn.columns);\n }\n }\n return this.stackedColumn;\n };\n /**\n * @private\n * @returns {number[]} Returns the column indexes\n */\n Grid.prototype.getColumnIndexesInView = function () {\n return this.inViewIndexes;\n };\n /**\n * @private\n * @returns {Query} - returns the query\n */\n Grid.prototype.getQuery = function () {\n return this.query;\n };\n /**\n * @private\n * @returns {object} - returns the locale constants\n */\n Grid.prototype.getLocaleConstants = function () {\n return this.defaultLocale;\n };\n /**\n * @param {number[]} indexes - specifies the indexes\n * @returns {void}\n * @private\n */\n Grid.prototype.setColumnIndexesInView = function (indexes) {\n this.inViewIndexes = indexes;\n };\n /**\n * Gets the visible columns from the Grid.\n *\n * @returns {Column[]} returns the column\n */\n Grid.prototype.getVisibleColumns = function () {\n return this.getCurrentVisibleColumns();\n };\n /**\n * Gets the header div of the Grid.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getHeaderContent = function () {\n return this.headerModule.getPanel();\n };\n /**\n * Sets the header div of the Grid to replace the old header.\n *\n * @param {Element} element - Specifies the Grid header.\n *\n * @returns {void}\n */\n Grid.prototype.setGridHeaderContent = function (element) {\n this.headerModule.setPanel(element);\n };\n /**\n * Gets the content table of the Grid.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getContentTable = function () {\n return this.contentModule.getTable();\n };\n /**\n * Sets the content table of the Grid to replace the old content table.\n *\n * @param {Element} element - Specifies the Grid content table.\n *\n * @returns {void}\n */\n Grid.prototype.setGridContentTable = function (element) {\n this.contentModule.setTable(element);\n };\n /**\n * Gets the content div of the Grid.\n *\n * @returns {Element} Returns the element\n */\n Grid.prototype.getContent = function () {\n return this.contentModule.getPanel();\n };\n /**\n * Sets the content div of the Grid to replace the old Grid content.\n *\n * @param {Element} element - Specifies the Grid content.\n *\n * @returns {void}\n */\n Grid.prototype.setGridContent = function (element) {\n this.contentModule.setPanel(element);\n };\n /**\n * Gets the header table element of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getHeaderTable = function () {\n return this.headerModule.getTable();\n };\n /**\n * Sets the header table of the Grid to replace the old one.\n *\n * @param {Element} element - Specifies the Grid header table.\n *\n * @returns {void}\n */\n Grid.prototype.setGridHeaderTable = function (element) {\n this.headerModule.setTable(element);\n };\n /**\n * Gets the footer div of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getFooterContent = function () {\n this.footerElement = this.element.getElementsByClassName(literals.gridFooter)[0];\n return this.footerElement;\n };\n /**\n * Gets the footer table element of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getFooterContentTable = function () {\n this.footerElement = this.element.getElementsByClassName(literals.gridFooter)[0];\n return this.footerElement.firstChild.firstChild;\n };\n /**\n * Gets the pager of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getPager = function () {\n return this.gridPager; //get element from pager\n };\n /**\n * Sets the pager of the Grid to replace the old pager.\n *\n * @param {Element} element - Specifies the Grid pager.\n *\n * @returns {void}\n */\n Grid.prototype.setGridPager = function (element) {\n this.gridPager = element;\n };\n /**\n * Gets a row by index.\n *\n * @param {number} index - Specifies the row index.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getRowByIndex = function (index) {\n if (this.enableVirtualization && this.groupSettings.enableLazyLoading) {\n return this.lazyLoadRender.getRowByIndex(index);\n }\n else {\n return this.contentModule.getRowByIndex(index);\n }\n };\n /**\n * Gets a movable tables row by index.\n *\n * @param {number} index - Specifies the row index.\n *\n * @returns {Element} returns the element\n\n */\n Grid.prototype.getMovableRowByIndex = function (index) {\n return this.contentModule.getRowByIndex(index);\n };\n /**\n * Gets a frozen tables row by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} returns the element\n\n */\n Grid.prototype.getFrozenRowByIndex = function (index) {\n return this.contentModule.getRowByIndex(index);\n };\n /**\n * Gets all the data rows of the Grid.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getRows = function () {\n return this.contentModule.getRowElements();\n };\n /**\n * Gets a frozen right tables row element by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} returns the element\n\n */\n Grid.prototype.getFrozenRightRowByIndex = function (index) {\n return this.contentModule.getRowByIndex(index);\n };\n /**\n * Get a row information based on cell\n *\n * @param {Element | EventTarget} target - specifies the element\n *\n * @returns {RowInfo} returns the row info\n */\n Grid.prototype.getRowInfo = function (target) {\n var ele = target;\n var args = { target: target };\n if (!isNullOrUndefined(target) && isNullOrUndefined(parentsUntil(ele, 'e-detailrowcollapse')\n && isNullOrUndefined(parentsUntil(ele, 'e-recordplusexpand')))) {\n var cell = closest(ele, '.' + literals.rowCell);\n if (!cell) {\n var row_1 = closest(ele, '.' + literals.row);\n if (!isNullOrUndefined(row_1) && !row_1.classList.contains('e-addedrow')) {\n var rowObj = this.getRowObjectFromUID(row_1.getAttribute('data-uid'));\n var rowIndex = parseInt(row_1.getAttribute(literals.dataRowIndex), 10);\n args = { row: row_1, rowData: rowObj.data, rowIndex: rowIndex };\n }\n return args;\n }\n var cellIndex = parseInt(cell.getAttribute(literals.dataColIndex), 10);\n var row_2 = closest(cell, '.' + literals.row);\n if (!isNullOrUndefined(cell) && !isNaN(cellIndex) && !isNullOrUndefined(row_2)) {\n var rowIndex = parseInt(row_2.getAttribute(literals.dataRowIndex), 10);\n var rows = this.contentModule.getRows();\n var index = cellIndex + this.getIndentCount();\n var rowsObject = rows.filter(function (r) { return r.uid === row_2.getAttribute('data-uid'); });\n var rowData = {};\n var column = void 0;\n if (Object.keys(rowsObject).length) {\n rowData = rowsObject[0].data;\n column = rowsObject[0].cells[parseInt(index.toString(), 10)].column;\n }\n args = { cell: cell, cellIndex: cellIndex, row: row_2, rowIndex: rowIndex, rowData: rowData, column: column, target: target };\n }\n }\n return args;\n };\n /**\n * Gets the Grid's movable content rows from frozen grid.\n *\n * @returns {Element[]} returns the element\n\n */\n Grid.prototype.getMovableRows = function () {\n return this.contentModule.getRowElements();\n };\n /**\n * Gets the Grid's frozen right content rows from frozen grid.\n *\n * @returns {Element[]} returns the element\n\n */\n Grid.prototype.getFrozenRightRows = function () {\n return this.contentModule.getRowElements();\n };\n /**\n * Gets all the Grid's data rows.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getDataRows = function () {\n return this.getAllDataRows();\n };\n /**\n * @param {boolean} includeAdd - specifies includeAdd\n * @returns {Element[]} returns the element\n * @hidden\n */\n Grid.prototype.getAllDataRows = function (includeAdd) {\n if (isNullOrUndefined(this.getContentTable().querySelector(literals.tbody))) {\n return [];\n }\n var tbody = this.getContentTable().querySelector(literals.tbody);\n var rows = [].slice.call(tbody.children);\n if (this.editSettings.showAddNewRow) {\n if (rows[0].classList.contains('e-addedrow')) {\n rows.shift();\n }\n else if (rows[rows.length - 1].classList.contains('e-addedrow')) {\n rows.pop();\n }\n }\n if (this.frozenRows) {\n var hdrTbody = this.getHeaderTable().querySelector(literals.tbody);\n var freezeRows = [].slice.call(hdrTbody.children);\n rows = this.addMovableRows(freezeRows, rows);\n if (this.editSettings.showAddNewRow && freezeRows[0].classList.contains('e-addedrow')) {\n freezeRows.shift();\n }\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * @param {HTMLElement[]} fRows - Defines the frozen Rows\n * @param {HTMLElement[]} mrows - Defines the movable Rows\n * @returns {HTMLElement[]} Returns the element\n * @hidden\n */\n Grid.prototype.addMovableRows = function (fRows, mrows) {\n for (var i = 0, len = mrows.length; i < len; i++) {\n fRows.push(mrows[parseInt(i.toString(), 10)]);\n }\n return fRows;\n };\n Grid.prototype.generateDataRows = function (rows, includAdd) {\n var dRows = [];\n for (var i = 0, len = rows.length; i < len; i++) {\n if (rows[parseInt(i.toString(), 10)].classList.contains(literals.row)\n && (!rows[parseInt(i.toString(), 10)].classList.contains('e-hiddenrow') || includAdd)) {\n if (this.isCollapseStateEnabled()) {\n dRows[parseInt(rows[parseInt(i.toString(), 10)].getAttribute('data-rowindex'), 10)] = rows[parseInt(i.toString(), 10)];\n }\n else {\n dRows.push(rows[parseInt(i.toString(), 10)]);\n }\n }\n }\n return dRows;\n };\n /**\n * Gets all the Grid's movable table data rows.\n *\n * @returns {Element[]} Returns the element\n\n */\n Grid.prototype.getMovableDataRows = function () {\n return this.getAllMovableDataRows();\n };\n /**\n * @param {boolean} includeAdd Defines the include add in boolean\n * @returns {Element[]} Returns the element\n\n * @hidden\n */\n Grid.prototype.getAllMovableDataRows = function (includeAdd) {\n return this.getAllDataRows(includeAdd);\n };\n /**\n * Gets all the Grid's frozen table data rows.\n *\n * @returns {Element[]} returns the element\n\n */\n Grid.prototype.getFrozenDataRows = function () {\n return this.getAllFrozenDataRows();\n };\n /**\n * @param {boolean} includeAdd Defines the include add in boolean\n * @returns {Element[]} Returns the element\n\n * @hidden\n */\n Grid.prototype.getAllFrozenDataRows = function (includeAdd) {\n return this.getAllDataRows(includeAdd);\n };\n /**\n * Gets all the Grid's frozen right table data rows.\n *\n * @returns {Element[]} Returns the Element\n\n */\n Grid.prototype.getFrozenRightDataRows = function () {\n return this.getAllFrozenRightDataRows();\n };\n /**\n * @param {boolean} includeAdd Defines the include add in boolean\n * @returns {Element[]} Returns the element\n\n * @hidden\n */\n Grid.prototype.getAllFrozenRightDataRows = function (includeAdd) {\n return this.getAllDataRows(includeAdd);\n };\n /**\n * Updates particular cell value based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n *\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {string } field - Specifies the field name which you want to update.\n * @param {string | number | boolean | Date} value - To update new value for the particular cell.\n *\n * @returns {void}\n */\n Grid.prototype.setCellValue = function (key, field, value) {\n var cells = 'cells';\n var rowData = 'data';\n var rowIdx = 'index';\n var rowuID = 'uid';\n var pkName = this.getPrimaryKeyFieldNames()[0];\n var cell = new CellRenderer(this, this.serviceLocator);\n var fieldIdx = this.getColumnIndexByField(field);\n var col = this.getColumnByField(field);\n var rowObjects = this.contentModule.getRows();\n var selectedRow = rowObjects.filter(function (r) {\n return getValue(pkName, r.data) === key;\n })[0];\n var tr = selectedRow ? this.element.querySelector('[data-uid=' + selectedRow[\"\" + rowuID] + ']') : null;\n if (!isNullOrUndefined(tr)) {\n if (typeof value === 'string') {\n value = this.sanitize(value);\n }\n setValue(field, value, selectedRow[\"\" + rowData]);\n var td = this.enableVirtualization ? tr.children[parseInt(fieldIdx.toString(), 10)]\n : this.getCellFromIndex(selectedRow[\"\" + rowIdx], fieldIdx);\n if (!isNullOrUndefined(td)) {\n var Idx = 0;\n if (this.groupSettings.columns.length) {\n fieldIdx = fieldIdx + this.groupSettings.columns.length;\n }\n if (this.childGrid || this.detailTemplate) {\n fieldIdx++;\n }\n if (this.isRowDragable()) {\n fieldIdx++;\n }\n var sRow = selectedRow[\"\" + cells][fieldIdx - Idx];\n cell.refreshTD(td, sRow, selectedRow[\"\" + rowData], { index: selectedRow[\"\" + rowIdx] });\n if (this.isReact) {\n td = this.enableVirtualization ? tr.children[parseInt(fieldIdx.toString(), 10)]\n : this.getCellFromIndex(selectedRow[\"\" + rowIdx], fieldIdx);\n }\n if (this.aggregates.length > 0) {\n this.notify(events.refreshFooterRenderer, {});\n if (this.groupSettings.columns.length > 0) {\n this.notify(events.groupAggregates, {});\n }\n }\n /* tslint:disable:no-string-literal */\n if (!isNullOrUndefined(selectedRow) && !isNullOrUndefined(selectedRow['changes'])) {\n selectedRow['changes'][\"\" + field] = value;\n }\n /* tslint:disable:no-string-literal */\n this.trigger(events.queryCellInfo, {\n cell: td, column: col, data: selectedRow[\"\" + rowData]\n });\n if (this.isReact && td.getAttribute('tabindex') === '0' && td.classList.contains('e-focused')) {\n td.focus();\n }\n }\n }\n else {\n return;\n }\n };\n /**\n * @param {string} columnUid - Defines column uid\n * @param {boolean} renderTemplates - Defines renderTemplates need to invoke\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshReactColumnTemplateByUid = function (columnUid, renderTemplates) {\n var _this_1 = this;\n if (this.isReact) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.clearTemplate(['columnTemplate'], undefined, function () {\n var isChildGrid = _this_1.childGrid && _this_1.element.querySelectorAll('.e-childgrid').length ? true : false;\n var rows = isChildGrid ? _this_1.getContentTable().querySelectorAll('.e-row') :\n _this_1.getDataRows();\n _this_1.refreshReactTemplateTD(rows, isChildGrid);\n if (renderTemplates) {\n _this_1.renderTemplates();\n }\n });\n }\n };\n /**\n * @param {Element[] | NodeListOf} rows - Defines the rows\n * @param {boolean} isChildGrid - Defines whether it is a Hierarchy Grid.\n * @param {boolean} isFrozen - Defines whether it is a Frozen Grid\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshReactTemplateTD = function (rows, isChildGrid, isFrozen) {\n var cells = 'cells';\n var rowIdx = 'index';\n var indent = this.getIndentCount();\n var childIndent = 0;\n var isChildRow = false;\n for (var j = 0; j < rows.length; j++) {\n var rowsObj = this.getRowObjectFromUID(rows[parseInt(j.toString(), 10)].getAttribute('data-uid'));\n if (isChildGrid && !rowsObj && parentsUntil(rows[parseInt(j.toString(), 10)], 'e-childgrid')) {\n var gridObj = parentsUntil(rows[parseInt(j.toString(), 10)], 'e-childgrid').ej2_instances[0];\n rowsObj = gridObj.getRowObjectFromUID(rows[parseInt(j.toString(), 10)].getAttribute('data-uid'));\n childIndent = gridObj.getIndentCount();\n isChildRow = true;\n }\n if (rowsObj && rowsObj.isDataRow && !isNullOrUndefined(rowsObj.index) &&\n !rows[parseInt(j.toString(), 10)].classList.contains('e-editedrow')) {\n for (var i = 0; i < rowsObj[\"\" + cells].length; i++) {\n var cell = rowsObj[\"\" + cells][parseInt(i.toString(), 10)];\n if (cell.isTemplate) {\n var cellRenderer = new CellRenderer(this, this.serviceLocator);\n var td = isChildGrid ? rows[parseInt(j.toString(), 10)]\n .children[cell.index + (isChildRow ? childIndent : indent)] : this.getCellFromIndex(j, isFrozen ? cell.index : i - indent);\n cellRenderer.refreshTD(td, cell, rowsObj.data, { index: rowsObj[\"\" + rowIdx] });\n }\n }\n }\n isChildRow = false;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshGroupCaptionFooterTemplate = function () {\n var isChildGrid = this.childGrid && this.element.querySelectorAll('.e-childgrid').length ? true : false;\n var rows = this.getContentTable().querySelectorAll('.e-groupcaptionrow, .e-groupfooterrow');\n for (var i = 0; i < rows.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var gridObj = this;\n var rowsObj = this.getRowObjectFromUID(rows[parseInt(i.toString(), 10)].getAttribute('data-uid'));\n if (isChildGrid && !rowsObj && parentsUntil(rows[parseInt(i.toString(), 10)], 'e-childgrid')) {\n gridObj = parentsUntil(rows[parseInt(i.toString(), 10)], 'e-childgrid').ej2_instances[0];\n rowsObj = gridObj.getRowObjectFromUID(rows[parseInt(i.toString(), 10)].getAttribute('data-uid'));\n }\n if (rowsObj) {\n var cells = rowsObj.cells.filter(function (cell) { return cell.isDataCell; });\n var args = { cells: cells, data: rowsObj.data, dataUid: rowsObj.uid };\n gridObj.notify(events.refreshAggregateCell, args);\n }\n }\n };\n /**\n * @param {string} columnUid - Defines column uid\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshReactHeaderTemplateByUid = function (columnUid) {\n if (this.isReact) {\n var cells = 'cells';\n var rowsObj = this.headerModule.rows;\n var cellIndex = this.getNormalizedColumnIndex(columnUid);\n var _loop_1 = function (j) {\n var cell = rowsObj[parseInt(j.toString(), 10)][\"\" + cells][parseInt(cellIndex.toString(), 10)];\n if (cell && cell.column.uid === columnUid) {\n var headerCellRenderer = new HeaderCellRenderer(this_1, this_1.serviceLocator);\n var td = parentsUntil(this_1.element.querySelectorAll('[e-mappinguid=' + columnUid + ']')[0], 'e-templatecell');\n headerCellRenderer.refresh(cell, td);\n var cols = this_1.sortSettings.columns;\n var columnIndex = cols.findIndex(function (col) {\n return col.field === cell\n .column.field;\n });\n if (columnIndex !== -1) {\n var header = this_1.getColumnHeaderByField(cell.column.field);\n this_1.ariaService.setSort(header, (cols[parseInt(columnIndex.toString(), 10)].direction).toLowerCase());\n if (cols.length > 1) {\n header.querySelector('.e-headercelldiv').insertBefore(this_1.createElement('span', { className: 'e-sortnumber', innerHTML: (columnIndex + 1).toString() }), header.querySelector('.e-headertext'));\n }\n var filterElement = header.querySelector('.e-sortfilterdiv');\n if (cols[parseInt(columnIndex.toString(), 10)].direction === 'Ascending') {\n classList(filterElement, ['e-ascending', 'e-icon-ascending'], []);\n }\n else {\n classList(filterElement, ['e-descending', 'e-icon-descending'], []);\n }\n }\n }\n };\n var this_1 = this;\n for (var j = 0; j < rowsObj.length; j++) {\n _loop_1(j);\n }\n }\n };\n /**\n * Updates and refresh the particular row values based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n *\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {Object} rowData - To update new data for the particular row.\n *\n * @returns {void}\n */\n Grid.prototype.setRowData = function (key, rowData) {\n var rowuID = 'uid';\n var rowObjects = this.contentModule.getRows();\n var pkName = this.getPrimaryKeyFieldNames()[0];\n if (this.groupSettings.columns.length > 0 && this.aggregates.length > 0) {\n rowObjects = rowObjects.filter(function (row) { return row.isDataRow; });\n }\n var selectedRow = rowObjects.filter(function (r) {\n return getValue(pkName, r.data) === key;\n })[0];\n var selectRowEle = selectedRow ? [].slice.call(this.element.querySelectorAll('[data-uid=' + selectedRow[\"\" + rowuID] + ']')) : undefined;\n if (!isNullOrUndefined(selectedRow) && selectRowEle.length) {\n selectedRow.changes = rowData;\n if (this.frozenRows) {\n var fRowTr = this.getRowsObject()[selectedRow.index];\n this.setFrozenRowData(fRowTr, rowData);\n }\n else {\n this.setFrozenRowData(selectedRow, rowData);\n }\n if (this.aggregates.length > 0) {\n this.notify(events.refreshFooterRenderer, {});\n if (this.groupSettings.columns.length > 0) {\n this.notify(events.groupAggregates, {});\n }\n }\n }\n else {\n return;\n }\n };\n Grid.prototype.setFrozenRowData = function (fTr, rowData) {\n var rowRenderer = new RowRenderer(this.serviceLocator, null, this);\n fTr.changes = rowData;\n refreshForeignData(fTr, this.getForeignKeyColumns(), fTr.changes);\n rowRenderer.refresh(fTr, this.getColumns(), true);\n };\n /**\n * Gets a cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n *\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getCellFromIndex = function (rowIndex, columnIndex) {\n var col = this.getColumnByIndex(columnIndex);\n return getCellByColAndRowIndex(this, col, rowIndex, columnIndex);\n };\n /**\n * Gets a movable table cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n *\n * @returns {Element} Returns the Element\n\n */\n Grid.prototype.getMovableCellFromIndex = function (rowIndex, columnIndex) {\n return this.getCellFromIndex(rowIndex, columnIndex);\n };\n /**\n * Gets a frozen right table cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @returns {Element} Returns the Element\n\n */\n Grid.prototype.getFrozenRightCellFromIndex = function (rowIndex, columnIndex) {\n return this.getCellFromIndex(rowIndex, columnIndex);\n };\n /**\n * Gets a column header by column index.\n *\n * @param {number} index - Specifies the column index.\n *\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getColumnHeaderByIndex = function (index) {\n return this.getHeaderTable().getElementsByClassName('e-headercell')[parseInt(index.toString(), 10)];\n };\n /**\n * Gets a movable column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n\n */\n Grid.prototype.getMovableColumnHeaderByIndex = function (index) {\n return this.getColumnHeaderByIndex(index);\n };\n /**\n * Gets a frozen right column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n\n */\n Grid.prototype.getFrozenRightColumnHeaderByIndex = function (index) {\n return this.getColumnHeaderByIndex(index);\n };\n /**\n * Gets a frozen left column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n\n */\n Grid.prototype.getFrozenLeftColumnHeaderByIndex = function (index) {\n return this.getColumnHeaderByIndex(index);\n };\n /**\n * @param {string} uid - Defines the uid\n * @returns {Row} Returns the row object\n * @hidden\n */\n Grid.prototype.getRowObjectFromUID = function (uid) {\n var rows = this.contentModule.getRows();\n var row = this.rowObject(rows, uid);\n if (isNullOrUndefined(row) && this.enableVirtualization && this.groupSettings.columns.length > 0) {\n row = this.rowObject(this.vRows, uid);\n return row;\n }\n return row;\n };\n Grid.prototype.rowObject = function (rows, uid) {\n if (rows) {\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n if (row.uid === uid) {\n return row;\n }\n }\n }\n return null;\n };\n /**\n * @hidden\n * @returns {Row[]} Returns the Row object\n */\n Grid.prototype.getRowsObject = function () {\n return this.contentModule.getRows();\n };\n /**\n * @hidden\n * @returns {Row[]} Returns the Row object\n\n */\n Grid.prototype.getMovableRowsObject = function () {\n return this.contentModule.getRows();\n };\n /**\n * @hidden\n * @returns {Row[]} Returns the Row object\n\n */\n Grid.prototype.getFrozenRightRowsObject = function () {\n return this.contentModule.getRows();\n };\n /**\n * Gets a column header by column name.\n *\n * @param {string} field - Specifies the column name.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getColumnHeaderByField = function (field) {\n var column = this.getColumnByField(field);\n return column ? this.getColumnHeaderByUid(column.uid) : undefined;\n };\n /**\n * Gets a column header by UID.\n *\n * @param {string} uid - Specifies the column uid.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getColumnHeaderByUid = function (uid) {\n var element = this.getHeaderContent().querySelector('[e-mappinguid=' + uid + ']');\n return element ? element.parentElement : undefined;\n };\n /**\n * @hidden\n * @param {number} index - Defines the index\n * @returns {Column} Returns the column\n */\n Grid.prototype.getColumnByIndex = function (index) {\n var column;\n this.getColumns().some(function (col, i) {\n column = col;\n return i === index;\n });\n return column;\n };\n /**\n * Gets a Column by column name.\n *\n * @param {string} field - Specifies the column name.\n *\n * @returns {Column} Returns the column\n */\n Grid.prototype.getColumnByField = function (field) {\n return iterateArrayOrObject(this.getColumns(), function (item) {\n if (item.field === field) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets a column index by column name.\n *\n * @param {string} field - Specifies the column name.\n *\n * @returns {number} Returns the index by field\n */\n Grid.prototype.getColumnIndexByField = function (field) {\n var cols = this.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].field === field) {\n return i;\n }\n }\n return -1;\n };\n /**\n * Gets a column by UID.\n *\n * @param {string} uid - Specifies the column UID.\n *\n * @returns {Column} Returns the column\n */\n Grid.prototype.getColumnByUid = function (uid) {\n return iterateArrayOrObject(this.getColumns().concat(this.getStackedColumns(this.columns)), function (item) {\n if (item.uid === uid) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * @param {Column[]} columns - Defines the columns\n * @param {Column[]} stackedColumn - Defines the stacked columns\n * @returns {Column[]} Returns the columns\n * @hidden\n */\n Grid.prototype.getStackedColumns = function (columns, stackedColumn) {\n if (stackedColumn === void 0) { stackedColumn = []; }\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n if (column.columns) {\n stackedColumn.push(column);\n this.getStackedColumns(column.columns, stackedColumn);\n }\n }\n return stackedColumn;\n };\n /**\n * Gets a column index by UID.\n *\n * @param {string} uid - Specifies the column UID.\n *\n * @returns {number} Returns the column by index\n */\n Grid.prototype.getColumnIndexByUid = function (uid) {\n var index = iterateArrayOrObject(this.getColumns(), function (item, index) {\n if (item.uid === uid) {\n return index;\n }\n return undefined;\n })[0];\n return !isNullOrUndefined(index) ? index : -1;\n };\n /**\n * Gets UID by column name.\n *\n * @param {string} field - Specifies the column name.\n *\n * @returns {string} Returns the column by field\n */\n Grid.prototype.getUidByColumnField = function (field) {\n return iterateArrayOrObject(this.getColumns(), function (item) {\n if (item.field === field) {\n return item.uid;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets column index by column uid value.\n *\n * @private\n * @param {string} uid - Specifies the column uid.\n * @returns {number} Returns the column by field\n */\n Grid.prototype.getNormalizedColumnIndex = function (uid) {\n var index = this.getColumnIndexByUid(uid);\n return index + this.getIndentCount();\n };\n /**\n * Gets indent cell count.\n *\n * @private\n * @returns {number} Returns the indent count\n */\n Grid.prototype.getIndentCount = function () {\n var index = 0;\n if (this.allowGrouping) {\n index += this.groupSettings.columns.length;\n }\n if (this.isDetail()) {\n index++;\n }\n if (this.isRowDragable() && isNullOrUndefined(this.rowDropSettings.targetID)) {\n index++;\n }\n /**\n * TODO: index normalization based on the stacked header, grouping and detailTemplate\n * and frozen should be handled here\n */\n return index;\n };\n /**\n * Gets the collection of column fields.\n *\n * @returns {string[]} Returns the Field names\n */\n Grid.prototype.getColumnFieldNames = function () {\n var columnNames = [];\n var column;\n for (var i = 0, len = this.getColumns().length; i < len; i++) {\n column = this.getColumns()[parseInt(i.toString(), 10)];\n if (column.visible) {\n columnNames.push(column.field);\n }\n }\n return columnNames;\n };\n /**\n * Gets a compiled row template.\n *\n * @returns {Function} Returns the row TEmplate\n * @private\n */\n Grid.prototype.getRowTemplate = function () {\n return this.rowTemplateFn;\n };\n /**\n * Gets a compiled empty Record template.\n *\n * @returns {Function} Returns the empty Record template\n * @private\n */\n Grid.prototype.getEmptyRecordTemplate = function () {\n return this.emptyRecordTemplateFn;\n };\n /**\n * Gets a compiled detail row template.\n *\n * @private\n * @returns {Function} Returns the Detail template\n */\n Grid.prototype.getDetailTemplate = function () {\n return this.detailTemplateFn;\n };\n /**\n * Gets a compiled detail row template.\n *\n * @private\n * @returns {Function}Returns the Edit template\n */\n Grid.prototype.getEditTemplate = function () {\n return this.editTemplateFn;\n };\n /**\n * Gets a compiled dialog edit header template.\n *\n * @private\n * @returns {Function} returns template function\n */\n Grid.prototype.getEditHeaderTemplate = function () {\n return this.editHeaderTemplateFn;\n };\n /**\n * Gets a compiled dialog edit footer template.\n *\n * @private\n * @returns {Function} Returns the Footer template\n */\n Grid.prototype.getEditFooterTemplate = function () {\n return this.editFooterTemplateFn;\n };\n /**\n * Get the names of the primary key columns of the Grid.\n *\n * @returns {string[]} Returns the field names\n */\n Grid.prototype.getPrimaryKeyFieldNames = function () {\n var keys = [];\n for (var k = 0; k < this.columnModel.length; k++) {\n if (this.columnModel[parseInt(k.toString(), 10)].isPrimaryKey) {\n keys.push(this.columnModel[parseInt(k.toString(), 10)].field);\n }\n }\n return keys;\n };\n /**\n * Refreshes the Grid header and content.\n *\n * @returns {void}\n */\n Grid.prototype.refresh = function () {\n if (!this.isDestroyed) {\n this.isManualRefresh = true;\n this.headerModule.refreshUI();\n this.updateStackedFilter();\n this.renderModule.refresh();\n }\n };\n /**\n * Refreshes the Grid header.\n *\n * @returns {void}\n */\n Grid.prototype.refreshHeader = function () {\n this.headerModule.refreshUI();\n };\n /**\n * Gets the collection of selected rows.\n *\n * @returns {Element[]} Returns the element\n */\n Grid.prototype.getSelectedRows = function () {\n return this.selectionModule ? this.selectionModule.selectedRecords : [];\n };\n /**\n * Gets the collection of selected row indexes.\n *\n * @returns {number[]} Returns the Selected row indexes\n */\n Grid.prototype.getSelectedRowIndexes = function () {\n return this.selectionModule ? this.selectionModule.selectedRowIndexes : [];\n };\n /**\n * Gets the collection of selected row and cell indexes.\n *\n * @returns {number[]} Returns the Selected row cell indexes\n */\n Grid.prototype.getSelectedRowCellIndexes = function () {\n return this.selectionModule ? this.selectionModule.selectedRowCellIndexes : [];\n };\n /**\n * Gets the collection of selected records.\n *\n * @returns {Object[]} Returns the selected records\n * @isGenericType true\n */\n Grid.prototype.getSelectedRecords = function () {\n return this.selectionModule ? this.selectionModule.getSelectedRecords() : [];\n };\n /**\n * Gets the collection of selected columns uid.\n *\n * @returns {string[]} Returns the selected column uid\n * @isGenericType true\n */\n Grid.prototype.getSelectedColumnsUid = function () {\n var _this_1 = this;\n var uid = [];\n if (this.selectionModule) {\n this.selectionModule.selectedColumnsIndexes.filter(function (i) { return uid.push(_this_1.getColumns()[parseInt(i.toString(), 10)].uid); });\n }\n return uid;\n };\n /**\n * Gets the data module.\n *\n * @returns {Data} Returns the data\n */\n Grid.prototype.getDataModule = function () {\n return this.renderModule.data;\n };\n /**\n * Shows a column by its column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} showBy - Defines the column key either as field name or header text.\n *\n * @returns {void}\n */\n Grid.prototype.showColumns = function (keys, showBy) {\n showBy = showBy ? showBy : 'headerText';\n this.showHider.show(keys, showBy);\n };\n /**\n * Hides a column by column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} hideBy - Defines the column key either as field name or header text.\n *\n * @returns {void}\n */\n Grid.prototype.hideColumns = function (keys, hideBy) {\n hideBy = hideBy ? hideBy : 'headerText';\n this.showHider.hide(keys, hideBy);\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen column\n */\n Grid.prototype.getFrozenColumns = function () {\n return this.frozenColumns + this.getFrozenCount(this.columns, 0, 0);\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Right column count\n */\n Grid.prototype.getFrozenRightColumnsCount = function () {\n return this.frozenRightCount || this.rightcount;\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Left column\n */\n Grid.prototype.getFrozenLeftColumnsCount = function () {\n return this.frozenLeftCount || this.leftcount;\n };\n /**\n * @hidden\n * @returns {number} Returns the movable column count\n */\n Grid.prototype.getMovableColumnsCount = function () {\n return this.movableCount || this.movablecount;\n };\n Grid.prototype.updateFrozenColumnsWidth = function () {\n if (this.isFrozenGrid() && !this.enableColumnVirtualization) {\n var gcol = this.getColumns();\n var isAutoWidth = true;\n var autoCol_1 = 0;\n var difference_1 = 0;\n var autoWidth_1 = 0;\n var isFrozenAuto = gcol.some(function (data) {\n return (data.freeze === 'Left' || data.freeze === 'Right'\n || data.freeze === 'Fixed' || data.isFrozen) && data.width === 'auto';\n });\n var _loop_2 = function (i) {\n var col = gcol[parseInt(i.toString(), 10)];\n if (isNullOrUndefined(col.width) && (col.freeze === 'Left' || col.freeze === 'Right' || col.freeze === 'Fixed' || col.isFrozen)) {\n col.width = Math.max(200, col.minWidth ? parseFloat(col.minWidth.toString()) : 0);\n if (!isNullOrUndefined(col.maxWidth) && parseFloat(col.maxWidth.toString()) < col.width) {\n col.width = col.maxWidth;\n }\n }\n if (col.width === 'auto' && isFrozenAuto) {\n var tWidth_1 = 0;\n if (isAutoWidth) {\n gcol.filter(function (cols) {\n if (cols.visible) {\n if (cols.width === 'auto') {\n autoCol_1++;\n }\n if (cols.width !== 'auto') {\n var width = !isNullOrUndefined(cols.width) ? parseFloat(cols.width.toString()) :\n Math.max(200, cols.minWidth ? parseFloat(cols.minWidth.toString()) : 0);\n tWidth_1 += width;\n }\n }\n });\n var gWidth = this_2.isPercentageWidthGrid() || this_2.width === 'auto' ? this_2.element.getBoundingClientRect().width :\n parseFloat(this_2.width.toString());\n difference_1 = this_2.height === 'auto' ? gWidth - tWidth_1 : ((gWidth - tWidth_1) - getScrollBarWidth());\n if (difference_1 < 0) {\n difference_1 = 0;\n }\n autoWidth_1 = parseFloat((difference_1 / autoCol_1).toString());\n gcol.filter(function (col) {\n if (col.visible) {\n if (col.minWidth && parseFloat(col.minWidth.toString()) > autoWidth_1) {\n difference_1 = difference_1 - parseFloat(col.minWidth.toString());\n autoCol_1--;\n }\n }\n });\n isAutoWidth = false;\n }\n if (col.minWidth && parseFloat(col.minWidth.toString()) > autoWidth_1) {\n col.width = parseFloat(col.minWidth.toString());\n }\n else {\n col.width = difference_1 / autoCol_1;\n }\n }\n };\n var this_2 = this;\n for (var i = 0; i < gcol.length; i++) {\n _loop_2(i);\n }\n }\n };\n Grid.prototype.refreshSplitFrozenColumn = function () {\n this.splitFrozenCount(this.columns);\n this.updateFrozenColumnsWidth();\n this.isAutoGenerateColumns = true;\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.setFrozenCount = function () {\n this.frozenLeftCount = this.frozenRightCount = this.movableCount = 0;\n this.visibleFrozenLeft = this.visibleFrozenRight = this.visibleMovable = 0;\n this.frozenLeftColumns = [];\n this.frozenRightColumns = [];\n this.movableColumns = [];\n this.fixedColumns = [];\n this.splitFrozenCount(this.columns);\n this.leftcount = this.frozenLeftCount;\n this.rightcount = this.frozenRightCount;\n this.movablecount = this.movableCount;\n // if (this.frozenColumns && (this.frozenLeftCount || this.frozenRightCount)) {\n // this.setProperties({ frozenColumns: 0 }, true);\n // }\n if (this.frozenLeftCount && !this.frozenRightCount) {\n this.frozenName = 'Left';\n }\n else if (this.frozenRightCount && !this.frozenLeftCount) {\n this.frozenName = 'Right';\n }\n else if (this.frozenLeftCount && this.frozenRightCount) {\n this.frozenName = 'Left-Right';\n }\n else if (this.frozenColumns || this.frozenRows) {\n this.frozenName = 'Left';\n }\n else {\n this.frozenName = undefined;\n }\n };\n /**\n * @hidden\n * @returns {number} Returns the visible Frozen left count\n */\n Grid.prototype.getVisibleFrozenLeftCount = function () {\n return this.visibleFrozenLeft;\n };\n /**\n * @hidden\n * @returns {number} Returns the visible Frozen Right count\n */\n Grid.prototype.getVisibleFrozenRightCount = function () {\n return this.visibleFrozenRight;\n };\n /**\n * @hidden\n * @returns {number} Returns the visible movable count\n */\n Grid.prototype.getVisibleMovableCount = function () {\n return this.visibleMovable;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n Grid.prototype.getFrozenRightColumns = function () {\n return this.frozenRightColumns;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n Grid.prototype.getFrozenLeftColumns = function () {\n return this.frozenLeftColumns;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n Grid.prototype.getMovableColumns = function () {\n return this.movableColumns;\n };\n Grid.prototype.splitStackedColumns = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.splitStackedColumns(columns[parseInt(i.toString(), 10)].columns);\n }\n else {\n if (columns[parseInt(i.toString(), 10)].freeze === 'Left' || columns[parseInt(i.toString(), 10)].isFrozen) {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenLeft++;\n }\n this.leftcount++;\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Right') {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenRight++;\n }\n this.rightcount++;\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenFixed++;\n }\n this.fixedcount++;\n }\n else {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleMovable++;\n }\n this.movablecount++;\n }\n }\n }\n };\n Grid.prototype.pushStackedColumns = function (columns, index, arr, col, stackedcol) {\n arr[parseInt(index.toString(), 10)] = col.headerText;\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n index = index + 1;\n this.pushStackedColumns(columns[parseInt(i.toString(), 10)].columns, index, arr, columns[parseInt(i.toString(), 10)], stackedcol);\n index = index - 1;\n }\n else {\n var stockCol = [];\n stockCol = arr.slice().slice(0, index + 1);\n if (columns[parseInt(i.toString(), 10)].freeze === 'Left' || columns[parseInt(i.toString(), 10)].isFrozen) {\n this.stackedLeft.push(stockCol);\n this.stackedarrayLeft.push(columns[parseInt(i.toString(), 10)]);\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Right') {\n this.stackedRight.push(stockCol);\n this.stackedarrayRight.push(columns[parseInt(i.toString(), 10)]);\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n this.stackedFixed.push(stockCol);\n this.stackedarrayFixed.push(columns[parseInt(i.toString(), 10)]);\n }\n else {\n this.stackedMovable.push(stockCol);\n this.stackedarrayMovable.push(columns[parseInt(i.toString(), 10)]);\n }\n }\n }\n };\n Grid.prototype.pushallcol = function (text, text1, col, columns, isTrue) {\n if (col.headerText === text1) {\n if (isTrue) {\n col.columns.push(columns);\n }\n else {\n col.columns.push({ headerText: text, columns: [] });\n }\n }\n else {\n if (col.columns && col.columns.length) {\n for (var i = 0; i < col.columns.length; i++) {\n this.pushallcol(text, text1, col.columns[parseInt(i.toString(), 10)], columns, isTrue);\n }\n }\n }\n };\n Grid.prototype.resetStackedColumns = function (headercol, gridcolumns, freeze) {\n var col = {};\n var tempHead = [];\n for (var i = 1; i <= headercol.length; i++) {\n var firstcol = headercol[i - 1];\n for (var j = 0; j < firstcol.length; j++) {\n if (!col.columns && i === 1) {\n col = { headerText: firstcol[parseInt(j.toString(), 10)], columns: [] };\n tempHead.push(firstcol[parseInt(j.toString(), 10)]);\n }\n else {\n if (tempHead.indexOf(firstcol[parseInt(j.toString(), 10)]) === -1) {\n this.pushallcol(firstcol[parseInt(j.toString(), 10)], firstcol[j - 1], col);\n tempHead.push(firstcol[parseInt(j.toString(), 10)]);\n }\n }\n if (j === firstcol.length - 1) {\n this.pushallcol(null, firstcol[parseInt(j.toString(), 10)], col, gridcolumns[i - 1], true);\n var count = 0;\n while (count !== headercol.length - 1 && i !== headercol.length) {\n if (firstcol.toString() === headercol[parseInt(i.toString(), 10)].toString()) {\n i++;\n this.pushallcol(null, firstcol[parseInt(j.toString(), 10)], col, gridcolumns[i - 1], true);\n }\n count++;\n }\n }\n }\n }\n if (freeze === 'Left') {\n this.frozenLeftColumns.push(col);\n }\n else if (freeze === 'Right') {\n this.frozenRightColumns.push(col);\n }\n else {\n this.movableColumns.push(col);\n }\n };\n Grid.prototype.splitFrozenCount = function (columns) {\n if (this.frozenColumns || (this.changedProperties && this.changedProperties.frozenColumns === 0)) {\n var cols = !this.enableColumnVirtualization || (this.enableColumnVirtualization && this.isPreparedFrozenColumns) ?\n this.enableColumnVirtualization && this.columnModel && this.columnModel.length ? this.columnModel :\n this.getColumns() : this.columns;\n if (!this.changedProperties || (this.changedProperties && !this.changedProperties.frozenColumns)) {\n for (var i = 0; i < cols.length; i++) {\n if (this.frozenColumns > i) {\n cols[parseInt(i.toString(), 10)].freeze = 'Left';\n }\n else if (cols[parseInt(i.toString(), 10)].freeze === 'Right' || cols[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n cols[parseInt(i.toString(), 10)].freeze = cols[parseInt(i.toString(), 10)].freeze;\n }\n else {\n cols[parseInt(i.toString(), 10)].freeze = undefined;\n }\n }\n }\n }\n for (var i = 0; i < (!isNullOrUndefined(columns) ? columns.length : 0); i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.leftcount = 0;\n this.rightcount = 0;\n this.movablecount = 0;\n this.fixedcount = 0;\n var arr = [];\n this.splitStackedColumns(columns[parseInt(i.toString(), 10)].columns);\n if (this.leftcount && !this.rightcount && !this.movablecount && !this.fixedcount) {\n this.frozenLeftCount += this.leftcount;\n this.frozenLeftColumns.push(columns[parseInt(i.toString(), 10)]);\n }\n else if (this.rightcount && !this.leftcount && !this.movablecount && !this.fixedcount) {\n this.frozenRightCount += this.rightcount;\n this.frozenRightColumns.push(columns[parseInt(i.toString(), 10)]);\n }\n else if (this.movablecount && !this.leftcount && !this.rightcount && !this.fixedcount) {\n this.movableCount += this.movablecount;\n this.movableColumns.push(columns[parseInt(i.toString(), 10)]);\n }\n else if (this.fixedcount && !this.leftcount && !this.rightcount && !this.movablecount) {\n this.fixedCount += this.fixedcount;\n this.fixedColumns.push(columns[parseInt(i.toString(), 10)]);\n this.movableCount += this.movablecount;\n this.movableColumns.push(columns[parseInt(i.toString(), 10)]);\n }\n else {\n this.frozenLeftCount += this.leftcount;\n this.frozenRightCount += this.rightcount;\n this.movableCount += this.movablecount;\n this.fixedCount += this.fixedcount;\n this.leftcount = 0;\n this.rightcount = 0;\n this.movablecount = 0;\n this.fixedcount = 0;\n this.stackedLeft = [];\n this.stackedRight = [];\n this.stackedFixed = [];\n this.stackedMovable = [];\n this.stackedarrayLeft = [];\n this.stackedarrayRight = [];\n this.stackedarrayFixed = [];\n this.stackedarrayMovable = [];\n this.pushStackedColumns(columns[parseInt(i.toString(), 10)].columns, 0, arr, columns[parseInt(i.toString(), 10)], { headerText: columns[parseInt(i.toString(), 10)].headerText, columns: [] });\n if (this.stackedarrayLeft.length) {\n this.resetStackedColumns(this.stackedLeft, this.stackedarrayLeft, 'Left');\n }\n if (this.stackedarrayRight.length) {\n this.resetStackedColumns(this.stackedRight, this.stackedarrayRight, 'Right');\n }\n if (this.stackedarrayFixed.length) {\n this.resetStackedColumns(this.stackedFixed, this.stackedarrayFixed, 'Fixed');\n }\n if (this.stackedarrayMovable.length) {\n this.resetStackedColumns(this.stackedMovable, this.stackedarrayMovable, 'Movable');\n }\n this.stackedLeft = [];\n this.stackedRight = [];\n this.stackedMovable = [];\n this.stackedFixed = [];\n this.stackedarrayLeft = [];\n this.stackedarrayRight = [];\n this.stackedarrayMovable = [];\n this.stackedarrayFixed = [];\n }\n }\n else {\n if (columns[parseInt(i.toString(), 10)].freeze === 'Right') {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenRight++;\n }\n this.frozenRightColumns.push(columns[parseInt(i.toString(), 10)]);\n this.frozenRightCount++;\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Left' || columns[parseInt(i.toString(), 10)].isFrozen) {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenLeft++;\n }\n this.frozenLeftColumns.push(columns[parseInt(i.toString(), 10)]);\n this.frozenLeftCount++;\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Fixed') {\n this.fixedColumns.push(columns[parseInt(i.toString(), 10)]);\n this.fixedCount++;\n this.movableColumns.push(columns[parseInt(i.toString(), 10)]);\n this.movableCount++;\n }\n else {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleMovable++;\n }\n this.movableColumns.push(columns[parseInt(i.toString(), 10)]);\n this.movableCount++;\n }\n }\n }\n if (this.frozenLeftColumns.length) {\n var cols = this.frozenLeftColumns[this.frozenLeftColumns.length - 1];\n this.removeBorder(this.frozenLeftColumns);\n this.frozenLeftBorderColumns(cols instanceof Column ? this.lastVisibleLeftCol(this.frozenLeftColumns) : cols);\n }\n if (this.frozenRightColumns.length) {\n var cols = this.frozenRightColumns[0];\n this.removeBorder(this.frozenRightColumns);\n this.frozenRightBorderColumns(cols instanceof Column ? this.firstVisibleRightCol(this.frozenRightColumns) : cols);\n }\n if ((this.frozenLeftColumns.length || this.frozenRightColumns.length) && this.freezeColumnRefresh) {\n var cols = (this.frozenLeftColumns.concat(this.movableColumns)).concat(this.frozenRightColumns);\n this.setProperties({ columns: cols }, true);\n this.freezeColumnRefresh = false;\n }\n };\n Grid.prototype.removeBorder = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns && columns[parseInt(i.toString(), 10)].columns.length) {\n if (columns[parseInt(i.toString(), 10)].border === 'Right' ||\n columns[parseInt(i.toString(), 10)].border === 'Left') {\n columns[parseInt(i.toString(), 10)].border = undefined;\n }\n this.removeBorder(columns[parseInt(i.toString(), 10)].columns);\n }\n else {\n if (columns[parseInt(i.toString(), 10)].border === 'Right' ||\n columns[parseInt(i.toString(), 10)].border === 'Left') {\n columns[parseInt(i.toString(), 10)].border = undefined;\n }\n }\n }\n };\n Grid.prototype.isVisibleColumns = function (column, arr) {\n if (column.columns && column.columns.length) {\n for (var i = 0; i < column.columns.length; i++) {\n this.isVisibleColumns(column.columns[parseInt(i.toString(), 10)], arr);\n if (column.columns[parseInt(i.toString(), 10)].visible &&\n isNullOrUndefined(column.columns[parseInt(i.toString(), 10)].columns) &&\n (!isNullOrUndefined(column.columns[parseInt(i.toString(), 10)].freeze) ||\n column.columns[parseInt(i.toString(), 10)].isFrozen)) {\n arr.push('true');\n }\n }\n }\n else {\n if (column.visible && (!isNullOrUndefined(column.freeze) || column.isFrozen)) {\n arr.push('true');\n }\n }\n };\n Grid.prototype.lastVisibleLeftCol = function (columns) {\n var column;\n for (var i = columns.length - 1; i >= 0; i--) {\n var arr = [];\n this.isVisibleColumns(columns[parseInt(i.toString(), 10)], arr);\n if (columns[parseInt(i.toString(), 10)].visible && arr.indexOf('true') !== -1) {\n column = columns[parseInt(i.toString(), 10)];\n break;\n }\n }\n return column;\n };\n Grid.prototype.firstVisibleRightCol = function (columns) {\n var column;\n for (var i = 0; i < columns.length; i++) {\n var arr = [];\n this.isVisibleColumns(columns[parseInt(i.toString(), 10)], arr);\n if (columns[parseInt(i.toString(), 10)].visible && arr.indexOf('true') !== -1) {\n column = columns[parseInt(i.toString(), 10)];\n break;\n }\n }\n return column;\n };\n Grid.prototype.frozenLeftBorderColumns = function (columns) {\n if (isNullOrUndefined(columns)) {\n return;\n }\n if (columns.columns && columns.columns.length) {\n columns.border = 'Left';\n var cols = columns.columns[columns.columns.length - 1];\n this.frozenLeftBorderColumns(cols instanceof Column && cols.columns ? this.lastVisibleLeftCol(columns.columns) : cols);\n }\n else {\n columns.border = 'Left';\n }\n };\n Grid.prototype.frozenRightBorderColumns = function (columns) {\n if (isNullOrUndefined(columns)) {\n return;\n }\n if (columns.columns && columns.columns.length) {\n columns.border = 'Right';\n var cols = columns.columns[0];\n this.frozenRightBorderColumns(cols instanceof Column && cols.columns ? this.firstVisibleRightCol(columns.columns) : cols);\n }\n else {\n columns.border = 'Right';\n }\n };\n /**\n * @hidden\n * @returns {number} Returns the visible frozen columns count\n */\n Grid.prototype.getVisibleFrozenColumns = function () {\n return this.getVisibleFrozenColumnsCount() + this.getVisibleFrozenCount(this.columns, 0);\n };\n /**\n * Get the current Filter operator and field.\n *\n * @returns {FilterUI} Returns the filter UI\n */\n Grid.prototype.getFilterUIInfo = function () {\n return this.filterModule ? this.filterModule.getFilterUIInfo() : {};\n };\n Grid.prototype.getVisibleFrozenColumnsCount = function () {\n var visibleFrozenColumns = 0;\n var columns = this.columnModel;\n for (var i = 0; i < this.frozenColumns; i++) {\n if (columns[parseInt(i.toString(), 10)].visible) {\n visibleFrozenColumns++;\n }\n }\n if ((this.frozenLeftCount || this.leftcount) || (this.frozenRightCount || this.rightcount)) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].visible && (columns[parseInt(i.toString(), 10)].freeze === 'Left'\n || columns[parseInt(i.toString(), 10)].freeze === 'Right')) {\n visibleFrozenColumns++;\n }\n }\n }\n return visibleFrozenColumns;\n };\n Grid.prototype.getVisibleFrozenCount = function (cols, cnt) {\n if ((!this.frozenLeftCount && !this.leftcount) && (!this.frozenRightCount || !this.rightcount)) {\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].columns) {\n cnt = this.getVisibleFrozenCount(cols[parseInt(i.toString(), 10)].columns, cnt);\n }\n else {\n if (cols[parseInt(i.toString(), 10)].isFrozen && cols[parseInt(i.toString(), 10)].visible) {\n cnt++;\n }\n }\n }\n }\n return cnt;\n };\n Grid.prototype.getFrozenCount = function (cols, cnt, index) {\n for (var i = 0, len = (!isNullOrUndefined(cols) ? cols.length : 0); i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].columns) {\n cnt = this.getFrozenCount(cols[parseInt(i.toString(), 10)].columns, cnt, index);\n }\n else {\n if (cols[parseInt(i.toString(), 10)].isFrozen && index > this.frozenColumns - 1) {\n cnt++;\n }\n index++;\n }\n }\n return cnt;\n };\n /**\n * Navigates to the specified target page.\n *\n * @param {number} pageNo - Defines the page number to navigate.\n *\n * @returns {void}\n */\n Grid.prototype.goToPage = function (pageNo) {\n if (this.pagerModule) {\n this.pagerModule.goToPage(pageNo);\n }\n };\n /**\n * Defines the text of external message.\n *\n * @param {string} message - Defines the message to update.\n *\n * @returns {void}\n */\n Grid.prototype.updateExternalMessage = function (message) {\n if (this.pagerModule && !this.pagerTemplate) {\n this.pagerModule.updateExternalMessage(message);\n }\n };\n /**\n * Sorts a column with the given options.\n *\n * @param {string} columnName - Defines the column name to be sorted.\n * @param {SortDirection} direction - Defines the direction of sorting field.\n * @param {boolean} isMultiSort - Specifies whether the previous sorted columns are to be maintained.\n *\n * @returns {void}\n */\n Grid.prototype.sortColumn = function (columnName, direction, isMultiSort) {\n if (this.sortModule) {\n this.sortModule.sortColumn(columnName, direction, isMultiSort);\n }\n };\n /**\n * Remove the existing columns along with the grid actions like sorting, filtering, searching, grouping, aggregate, etc., and grid will refresh with new columns based on the updated new data source.\n * > * If no columns are specified while changing the data source, then the columns are auto generated in the Grid based on the list of columns in the updated data source.\n *\n * @param {Object | DataManager | DataResult} dataSource - Assign the new datasource.\n * @param {Column[] | string[] | ColumnModel[]} columns - Defines columns.\n * @returns {void}\n *\n *\n * ```typescript\n * \n *
\n * \n * ```\n *\n */\n Grid.prototype.changeDataSource = function (dataSource, columns) {\n this.isChangeDataSourceCall = true;\n this.setProperties({ sortSettings: { columns: [] } }, true);\n this.setProperties({ filterSettings: { columns: [] } }, true);\n this.setProperties({ searchSettings: { key: '' } }, true);\n if (this.allowGrouping) {\n this.setProperties({ groupSettings: { columns: [] } }, true);\n }\n if (columns && columns.length) {\n this.setProperties({ columns: columns }, true);\n }\n if (dataSource) {\n if (isNullOrUndefined(columns)) {\n this.setProperties({ columns: [] }, true);\n }\n this.setProperties({ dataSource: dataSource }, true);\n }\n this.freezeRefresh();\n this.isChangeDataSourceCall = false;\n };\n /**\n * Clears all the sorted columns of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.clearSorting = function () {\n if (this.sortModule) {\n this.sortModule.clearSorting();\n }\n };\n /**\n * Remove sorted column by field name.\n *\n * @param {string} field - Defines the column field name to remove sort.\n * @returns {void}\n * @hidden\n */\n Grid.prototype.removeSortColumn = function (field) {\n if (this.sortModule) {\n this.sortModule.removeSortColumn(field);\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.clearGridActions = function () {\n this.setProperties({ sortSettings: { columns: [] } }, true);\n this.setProperties({ filterSettings: { columns: [] } }, true);\n this.setProperties({ searchSettings: { key: '' } }, true);\n if (this.allowGrouping) {\n this.setProperties({ groupSettings: { columns: [] } }, false);\n }\n else {\n this.freezeRefresh();\n }\n };\n /**\n * Filters grid row by column name with the given options.\n *\n * @param {string} fieldName - Defines the field name of the column.\n * @param {string} filterOperator - Defines the operator to filter records.\n * @param {string | number | Date | boolean} filterValue - Defines the value used to filter records.\n * @param {string} predicate - Defines the relationship between one filter query and another by using AND or OR predicate.\n * @param {boolean} matchCase - If match case is set to true, the grid filters the records with exact match. if false, it filters case\n * insensitive records (uppercase and lowercase letters treated the same).\n * @param {boolean} ignoreAccent - If ignoreAccent set to true,\n * then filter ignores the diacritic characters or accents while filtering.\n * @param {string} actualFilterValue - Defines the actual filter value for the filter column.\n * @param {string} actualOperator - Defines the actual filter operator for the filter column.\n *\n * @returns {void}\n */\n Grid.prototype.filterByColumn = function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator) {\n if (this.filterModule) {\n this.filterModule.filterByColumn(fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator);\n }\n };\n /**\n * Clears all the filtered rows of the Grid.\n *\n * @param {string[]} fields - Defines the Fields\n * @returns {void}\n */\n Grid.prototype.clearFiltering = function (fields) {\n if (this.filterModule) {\n this.filterModule.clearFiltering(fields);\n }\n };\n /**\n * Removes filtered column by field name.\n *\n * @param {string} field - Defines column field name to remove filter.\n * @param {boolean} isClearFilterBar - Specifies whether the filter bar value needs to be cleared.\n * @returns {void}\n * @hidden\n */\n Grid.prototype.removeFilteredColsByField = function (field, isClearFilterBar) {\n if (this.filterModule) {\n this.filterModule.removeFilteredColsByField(field, isClearFilterBar);\n }\n };\n /**\n * Selects a row by given index.\n *\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n *\n * @returns {void}\n */\n Grid.prototype.selectRow = function (index, isToggle) {\n if (this.selectionModule) {\n this.selectionModule.selectRow(index, isToggle);\n }\n };\n /**\n * Selects a collection of rows by indexes.\n *\n * @param {number[]} rowIndexes - Specifies the row indexes.\n *\n * @returns {void}\n */\n Grid.prototype.selectRows = function (rowIndexes) {\n if (this.selectionModule) {\n this.selectionModule.selectRows(rowIndexes);\n }\n };\n /**\n * Deselects the current selected rows and cells.\n *\n * @returns {void}\n */\n Grid.prototype.clearSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearSelection();\n }\n };\n /**\n * Selects a cell by the given index.\n *\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n *\n * @returns {void}\n */\n Grid.prototype.selectCell = function (cellIndex, isToggle) {\n if (this.selectionModule) {\n this.selectionModule.selectCell(cellIndex, isToggle);\n }\n };\n /**\n * Selects a range of cells from start and end indexes.\n *\n * @param {IIndex} startIndex - Specifies the row and column's start index.\n * @param {IIndex} endIndex - Specifies the row and column's end index.\n *\n * @returns {void}\n */\n Grid.prototype.selectCellsByRange = function (startIndex, endIndex) {\n this.selectionModule.selectCellsByRange(startIndex, endIndex);\n };\n /**\n * Searches Grid records using the given key.\n * You can customize the default search option by using the\n * [`searchSettings`](./#searchsettings/).\n *\n * @param {string} searchString - Defines the key.\n *\n * @returns {void}\n */\n Grid.prototype.search = function (searchString) {\n if (this.searchModule) {\n this.searchModule.search(searchString);\n }\n };\n /**\n * By default, prints all the pages of the Grid and hides the pager.\n * > You can customize print options using the\n * [`printMode`](./#printmode).\n *\n * @returns {void}\n */\n Grid.prototype.print = function () {\n if (this.printModule) {\n this.printModule.print();\n }\n };\n /**\n * Delete a record with Given options. If fieldname and data is not given then grid will delete the selected record.\n * > `editSettings.allowDeleting` should be true.\n *\n * @param {string} fieldname - Defines the primary key field, 'Name of the column'.\n * @param {Object} data - Defines the JSON data of the record to be deleted.\n * @returns {void}\n */\n Grid.prototype.deleteRecord = function (fieldname, data) {\n if (this.editModule) {\n this.editModule.deleteRecord(fieldname, data);\n }\n };\n /**\n * Starts edit the selected row. At least one row must be selected before invoking this method.\n * `editSettings.allowEditing` should be true.\n * {% codeBlock src='grid/startEdit/index.md' %}{% endcodeBlock %}\n *\n * @returns {void}\n */\n Grid.prototype.startEdit = function () {\n if (this.editModule) {\n this.editModule.startEdit();\n }\n };\n /**\n * If Grid is in editable state, you can save a record by invoking endEdit.\n *\n * @returns {void}\n */\n Grid.prototype.endEdit = function () {\n if (this.editModule) {\n this.editModule.endEdit();\n }\n };\n /**\n * Cancels edited state.\n *\n * @returns {void}\n */\n Grid.prototype.closeEdit = function () {\n if (this.editModule) {\n this.editModule.closeEdit();\n }\n };\n /**\n * Adds a new record to the Grid. Without passing parameters, it adds empty rows.\n * > `editSettings.allowEditing` should be true.\n *\n * @param {Object} data - Defines the new add record data.\n * @param {number} index - Defines the row index to be added\n * @returns {void}\n */\n Grid.prototype.addRecord = function (data, index) {\n if (this.editModule) {\n this.editModule.addRecord(data, index);\n }\n };\n /**\n * Delete any visible row by TR element.\n *\n * @param {HTMLTableRowElement} tr - Defines the table row element.\n * @returns {void}\n */\n Grid.prototype.deleteRow = function (tr) {\n if (this.editModule) {\n this.editModule.deleteRow(tr);\n }\n };\n /**\n * Changes a particular cell into edited state based on the row index and field name provided in the `batch` mode.\n *\n * @param {number} index - Defines row index to edit a particular cell.\n * @param {string} field - Defines the field name of the column to perform batch edit.\n *\n * @returns {void}\n */\n Grid.prototype.editCell = function (index, field) {\n if (this.editModule) {\n this.editModule.editCell(index, field);\n }\n };\n /**\n * Saves the cell that is currently edited. It does not save the value to the DataSource.\n *\n * @returns {void}\n * {% codeBlock src='grid/saveCell/index.md' %}{% endcodeBlock %}\n */\n Grid.prototype.saveCell = function () {\n if (this.editModule) {\n this.editModule.saveCell();\n }\n };\n /**\n * To update the specified cell by given value without changing into edited state.\n *\n * @param {number} rowIndex Defines the row index.\n * @param {string} field Defines the column field.\n * @param {string | number | boolean | Date} value - Defines the value to be changed.\n *\n * @returns {void}\n */\n Grid.prototype.updateCell = function (rowIndex, field, value) {\n if (this.editModule) {\n this.editModule.updateCell(rowIndex, field, value);\n }\n };\n /**\n * To update the specified row by given values without changing into edited state.\n *\n * {% codeBlock src='grid/updateRow/index.md' %}{% endcodeBlock %}\n *\n * @param {number} index Defines the row index.\n * @param {Object} data Defines the data object to be updated.\n *\n * @returns {void}\n */\n Grid.prototype.updateRow = function (index, data) {\n if (this.editModule) {\n this.editModule.updateRow(index, data);\n }\n };\n /**\n * Gets the added, edited,and deleted data before bulk save to the DataSource in batch mode.\n *\n * @returns {Object} Returns the batch changes\n */\n Grid.prototype.getBatchChanges = function () {\n if (this.editModule) {\n return this.editModule.getBatchChanges();\n }\n return {};\n };\n /**\n * Enables or disables ToolBar items.\n *\n * @param {string[]} items - Defines the collection of itemID of ToolBar items.\n * @param {boolean} isEnable - Defines the items to be enabled or disabled.\n *\n * @returns {void}\n */\n Grid.prototype.enableToolbarItems = function (items, isEnable) {\n if (this.toolbarModule) {\n this.toolbarModule.enableItems(items, isEnable);\n }\n };\n /**\n * Copy the selected rows or cells data into clipboard.\n *\n * @param {boolean} withHeader - Specifies whether the column header text needs to be copied along with rows or cells.\n * @returns {void}\n */\n Grid.prototype.copy = function (withHeader) {\n if (this.clipboardModule) {\n this.clipboardModule.copy(withHeader);\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.recalcIndentWidth = function () {\n var _this_1 = this;\n if (!this.getHeaderTable().querySelector('.e-emptycell')) {\n return;\n }\n if ((!this.groupSettings.columns.length && !this.isDetail() && !this.isRowDragable()) ||\n this.getHeaderTable().querySelector('.e-emptycell').getAttribute('indentRefreshed') ||\n !this.getContentTable()) {\n return;\n }\n var indentWidth = this.getHeaderTable().querySelector('.e-emptycell').parentElement.offsetWidth;\n var headerCol = [].slice.call(this.getHeaderTable().querySelector(literals.colGroup).childNodes);\n var contentCol = [].slice.call(this.getContentTable().querySelector(literals.colGroup).childNodes);\n var perPixel = indentWidth / 30;\n var i = this.getFrozenMode() === 'Right' ? this.groupSettings.columns.length + this.getColumns().length : 0;\n var parentOffset = this.element.offsetWidth;\n var applyWidth = function (index, width) {\n if (ispercentageWidth(_this_1)) {\n var newWidth = (width / parentOffset * 100).toFixed(1) + '%';\n headerCol[parseInt(index.toString(), 10)].style.width = newWidth;\n contentCol[parseInt(index.toString(), 10)].style.width = newWidth;\n }\n else {\n headerCol[parseInt(index.toString(), 10)].style.width = width + 'px';\n contentCol[parseInt(index.toString(), 10)].style.width = width + 'px';\n }\n _this_1.notify(events.columnWidthChanged, { index: index, width: width });\n };\n if (perPixel >= 1) {\n indentWidth = (30 / perPixel);\n }\n if (indentWidth < 1) {\n indentWidth = 1;\n }\n if (this.enableColumnVirtualization || this.isAutoGen || (this.columns.length === this.groupSettings.columns.length)) {\n indentWidth = 30;\n }\n while (i < this.groupSettings.columns.length) {\n applyWidth(i, indentWidth);\n i++;\n }\n if (this.isDetail()) {\n applyWidth(i, indentWidth);\n i++;\n }\n if (this.isRowDragable()) {\n applyWidth(i, indentWidth);\n }\n this.isAutoGen = false;\n this.getHeaderTable().querySelector('.e-emptycell').setAttribute('indentRefreshed', 'true');\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.resetIndentWidth = function () {\n if (this.isDestroyed) {\n return;\n }\n if (ispercentageWidth(this)) {\n this.getHeaderTable().querySelector('.e-emptycell').removeAttribute('indentRefreshed');\n this.widthService.setWidthToColumns();\n this.recalcIndentWidth();\n if (this.autoFit) {\n this.preventAdjustColumns();\n }\n }\n if ((this.width === 'auto' || typeof (this.width) === 'string' && this.width.indexOf('%') !== -1)\n && this.getColumns().filter(function (col) { return (!col.width || col.width === 'auto') && col.minWidth; }).length > 0) {\n var tgridWidth = this.widthService.getTableWidth(this.getColumns());\n if (this.allowResizing && tgridWidth !== 'auto') {\n this.widthService.setMinwidthBycalculation(tgridWidth);\n }\n }\n if (this.isFrozenGrid() && this.enableColumnVirtualization && this.widthService) {\n this.widthService.refreshFrozenScrollbar();\n }\n if (this.allowTextWrap && this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\n }\n if (this.frozenRows && this.scrollModule) {\n this.scrollModule.resizeFrozenRowBorder();\n }\n if (this.enableStickyHeader) {\n this.scrollModule.makeStickyHeader();\n }\n };\n /**\n * @hidden\n * @returns {boolean} Returns isRowDragable\n */\n Grid.prototype.isRowDragable = function () {\n return this.allowRowDragAndDrop && !this.rowDropSettings.targetID;\n };\n /**\n * Changes the Grid column positions by field names.\n *\n * @param {string} fromFName - Defines the origin field name.\n * @param {string} toFName - Defines the destination field name.\n *\n * @returns {void}\n */\n Grid.prototype.reorderColumns = function (fromFName, toFName) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumns(fromFName, toFName);\n }\n };\n /**\n * Changes the Grid column positions by field index. If you invoke reorderColumnByIndex multiple times,\n * then you won't get the same results every time.\n *\n * @param {number} fromIndex - Defines the origin field index.\n * @param {number} toIndex - Defines the destination field index.\n *\n * @returns {void}\n */\n Grid.prototype.reorderColumnByIndex = function (fromIndex, toIndex) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumnByIndex(fromIndex, toIndex);\n }\n };\n /**\n * Changes the Grid column positions by field index. If you invoke reorderColumnByTargetIndex multiple times,\n * then you will get the same results every time.\n *\n * @param {string} fieldName - Defines the field name.\n * @param {number} toIndex - Defines the destination field index.\n *\n * @returns {void}\n */\n Grid.prototype.reorderColumnByTargetIndex = function (fieldName, toIndex) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumnByTargetIndex(fieldName, toIndex);\n }\n };\n /**\n * Changes the Grid Row position with given indexes.\n *\n * @param {number} fromIndexes - Defines the origin Indexes.\n * @param {number} toIndex - Defines the destination Index.\n *\n * @returns {void}\n */\n Grid.prototype.reorderRows = function (fromIndexes, toIndex) {\n if (this.rowDragAndDropModule) {\n this.rowDragAndDropModule.reorderRows(fromIndexes, toIndex);\n }\n };\n /**\n * @param {ReturnType} e - Defines the Return type\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshDataSource = function (e) {\n this.notify('refreshdataSource', e);\n };\n /**\n * @param {boolean} enable -Defines the enable\n * @returns {void}\n * @hidden\n */\n Grid.prototype.disableRowDD = function (enable) {\n var headerTable = this.getHeaderTable();\n var contentTable = this.getContentTable();\n var headerRows = headerTable.querySelectorAll('th.e-rowdragheader, th.e-mastercell');\n var rows = this.getRows();\n var disValue = enable ? 'none' : '';\n setStyleAttribute(headerTable.querySelector(literals.colGroup).childNodes[0], { 'display': disValue });\n setStyleAttribute(contentTable.querySelector(literals.colGroup).childNodes[0], { 'display': disValue });\n for (var i = 0; i < this.getRows().length; i++) {\n var ele = rows[parseInt(i.toString(), 10)].firstElementChild;\n if (enable) {\n addClass([ele], 'e-hide');\n }\n else {\n removeClass([ele], ['e-hide']);\n }\n }\n for (var j = 0; j < headerTable.querySelectorAll('th.e-rowdragheader, th.e-mastercell').length; j++) {\n var ele = headerRows[parseInt(j.toString(), 10)];\n if (enable) {\n addClass([ele], 'e-hide');\n }\n else {\n removeClass([ele], ['e-hide']);\n }\n }\n };\n /**\n * Changes the column width to automatically fit its content to ensure that the width shows the content without wrapping/hiding.\n * > * This method ignores the hidden columns.\n * > * Uses the `autoFitColumns` method in the `dataBound` event to resize at initial rendering.\n * > * By specifying the start row index and end row index, providing the range within which the maximum width for that column should be considered when applying `autoFitColumns`.\n * > * The width of header rows is always calculated. If the width of a header row exceeds the specified range, its width will be allocated to the specific content rows.\n *\n * @param {string |string[]} fieldNames - Defines the column names.\n * @param {number} startRowIndex - Specifies the start index of the content row.\n * @param {number} endRowIndex - Specifies the end index of content row.\n * @returns {void}\n *\n *\n * ```typescript\n *
\n * \n * ```\n *\n */\n Grid.prototype.autoFitColumns = function (fieldNames, startRowIndex, endRowIndex) {\n var injectedModules = this.getInjectedModules();\n var resize = injectedModules.find(function (item) {\n if (typeof item === 'function' && !isNullOrUndefined(item.prototype)) {\n return item.prototype.getModuleName() === 'resize';\n }\n else {\n return item.name === 'Resize';\n }\n });\n if (!this.resizeModule && resize) {\n this.autoFitColumnsResize = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.injectModules();\n }\n if (this.resizeModule) {\n this.resizeModule.autoFitColumns(fieldNames, startRowIndex, endRowIndex);\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Grid.prototype.preventAdjustColumns = function () {\n if ((this.enableAdaptiveUI && this.rowRenderingMode === 'Vertical')\n || (this.allowResizing && this.resizeSettings.mode === 'Auto')) {\n return;\n }\n var columns = this.getColumns();\n var headerTable = this.getHeaderTable();\n var tableWidth = 0;\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].visible) {\n if (this.groupSettings.columns.length\n && this.groupSettings.columns.indexOf(columns[parseInt(i.toString(), 10)].field) > -1) {\n var headerCol = [].slice.call(headerTable.querySelector('colgroup')\n .querySelectorAll(':not(.e-group-intent):not(.e-detail-intent):not(.e-drag-intent)'));\n if (headerCol[parseInt(i.toString(), 10)].style.display === 'none') {\n continue;\n }\n }\n if (columns[parseInt(i.toString(), 10)].width) {\n tableWidth += parseFloat(columns[parseInt(i.toString(), 10)].width.toString());\n }\n else {\n tableWidth = 0;\n break;\n }\n }\n }\n if (tableWidth) {\n var percentageWidth = this.isPercentageWidthGrid();\n var unit = this.widthUnit(percentageWidth);\n var contentTable = this.getContentTable();\n if (this.groupSettings.columns.length || this.isDetail() || this.isRowDragable()) {\n var indentWidth = this.defaultIndentWidth(percentageWidth);\n var indentWidthUnitFormat = indentWidth.toString() + unit;\n var headerIndentCol = [].slice.call(headerTable.querySelector('colgroup')\n .querySelectorAll('.e-group-intent, .e-detail-intent, .e-drag-intent'));\n var contentIndentCol = [].slice.call(contentTable.querySelector('colgroup')\n .querySelectorAll('.e-group-intent, .e-detail-intent, .e-drag-intent'));\n for (var i = 0; i < headerIndentCol.length; i++) {\n headerIndentCol[parseInt(i.toString(), 10)].style.setProperty('width', indentWidthUnitFormat);\n contentIndentCol[parseInt(i.toString(), 10)].style.setProperty('width', indentWidthUnitFormat);\n tableWidth += indentWidth;\n }\n }\n if ((percentageWidth && tableWidth < 100)\n || (!percentageWidth && tableWidth < contentTable.parentElement.clientWidth)) {\n if (!isNullOrUndefined(contentTable.querySelector('.e-emptyrow'))) {\n addClass([headerTable], ['e-tableborder']);\n removeClass([contentTable], ['e-tableborder']);\n }\n else {\n addClass([headerTable, contentTable], ['e-tableborder']);\n }\n }\n var tableWidthUnitFormat = tableWidth.toString() + unit;\n headerTable.style.setProperty('width', tableWidthUnitFormat);\n contentTable.style.setProperty('width', tableWidthUnitFormat);\n }\n else {\n this.restoreAdjustColumns();\n }\n };\n Grid.prototype.restoreAdjustColumns = function () {\n if ((this.enableAdaptiveUI && this.rowRenderingMode === 'Vertical')\n || (this.allowResizing && this.resizeSettings.mode === 'Auto')) {\n return;\n }\n var headerTable = this.getHeaderTable();\n var contentTable = this.getContentTable();\n removeClass([headerTable, contentTable], ['e-tableborder']);\n headerTable.style.removeProperty('width');\n contentTable.style.removeProperty('width');\n if (this.groupSettings.columns.length || this.isDetail() || this.isRowDragable()) {\n var percentageWidth = this.isPercentageWidthGrid();\n var indentWidthUnitFormat_1 = this.defaultIndentWidth(percentageWidth).toString() + this.widthUnit(percentageWidth);\n var headerIndentCol = [].slice.call(headerTable.querySelector('colgroup')\n .querySelectorAll('.e-group-intent, .e-detail-intent, .e-drag-intent'));\n headerIndentCol.forEach(function (element) {\n element.style.setProperty('width', indentWidthUnitFormat_1);\n });\n headerTable.querySelector('.e-emptycell').removeAttribute('indentRefreshed');\n this.recalcIndentWidth();\n }\n };\n Grid.prototype.widthUnit = function (percentageWidth) {\n return percentageWidth ? '%' : 'px';\n };\n Grid.prototype.defaultIndentWidth = function (percentageWidth) {\n return percentageWidth ? parseFloat((30 / this.element.offsetWidth * 100).toFixed(1)) : 30;\n };\n Grid.prototype.isPercentageWidthGrid = function () {\n return this.getColumns()[0].width.toString().indexOf('%') > -1;\n };\n /**\n * @param {number} x - Defines the number\n * @param {number} y - Defines the number\n * @param {Element} target - Defines the Element\n * @returns {void}\n * @hidden\n */\n Grid.prototype.createColumnchooser = function (x, y, target) {\n if (this.columnChooserModule) {\n this.columnChooserModule.renderColumnChooser(x, y, target);\n }\n };\n Grid.prototype.initializeServices = function () {\n this.serviceLocator.register('widthService', this.widthService = new ColumnWidthService(this));\n this.serviceLocator.register('cellRendererFactory', new CellRendererFactory);\n this.serviceLocator.register('rendererFactory', new RendererFactory);\n this.serviceLocator.register('localization', this.localeObj = new L10n(this.getModuleName(), this.defaultLocale, this.locale));\n this.serviceLocator.register('valueFormatter', this.valueFormatterService = new ValueFormatter(this.locale));\n this.serviceLocator.register('showHideService', this.showHider = new ShowHide(this));\n this.serviceLocator.register('ariaService', this.ariaService = new AriaService());\n this.serviceLocator.register('focus', this.focusModule = new FocusStrategy(this));\n };\n Grid.prototype.processModel = function () {\n var gCols = this.groupSettings.columns;\n var sCols = this.sortSettings.columns;\n var flag;\n var j;\n if (this.allowGrouping) {\n var _loop_3 = function (i, len) {\n j = 0;\n for (var sLen = sCols.length; j < sLen; j++) {\n if (sCols[parseInt(j.toString(), 10)].field === gCols[parseInt(i.toString(), 10)]) {\n flag = true;\n break;\n }\n }\n if (!flag) {\n sCols.push({ field: gCols[parseInt(i.toString(), 10)], direction: 'Ascending', isFromGroup: true });\n }\n else {\n if (this_3.allowSorting) {\n this_3.sortedColumns.push(sCols[parseInt(j.toString(), 10)].field);\n }\n else {\n sCols[parseInt(j.toString(), 10)].direction = 'Ascending';\n }\n }\n if (!this_3.groupSettings.showGroupedColumn) {\n var column = this_3.enableColumnVirtualization ?\n this_3.columns.filter(function (c) { return c.field === gCols[parseInt(i.toString(), 10)]; })[0]\n : this_3.getColumnByField(gCols[parseInt(i.toString(), 10)]);\n if (column) {\n column.visible = false;\n }\n else {\n this_3.log('initial_action', { moduleName: 'group', columnName: gCols[parseInt(i.toString(), 10)] });\n }\n }\n };\n var this_3 = this;\n for (var i = 0, len = gCols.length; i < len; i++) {\n _loop_3(i, len);\n }\n }\n if (!gCols.length) {\n for (var i = 0; i < sCols.length; i++) {\n this.sortedColumns.push(sCols[parseInt(i.toString(), 10)].field);\n }\n }\n this.rowTemplateFn = templateCompiler(this.rowTemplate);\n this.emptyRecordTemplateFn = templateCompiler(this.emptyRecordTemplate);\n this.detailTemplateFn = templateCompiler(this.detailTemplate);\n this.editTemplateFn = templateCompiler(this.editSettings.template);\n this.editHeaderTemplateFn = templateCompiler(this.editSettings.headerTemplate);\n this.editFooterTemplateFn = templateCompiler(this.editSettings.footerTemplate);\n if (!isNullOrUndefined(this.parentDetails)) {\n var value = isNullOrUndefined(this.parentDetails.parentKeyFieldValue) ? 'undefined' :\n this.parentDetails.parentKeyFieldValue;\n this.query.where(this.queryString, 'equal', value, true);\n }\n this.initForeignColumn();\n };\n Grid.prototype.initForeignColumn = function () {\n if (this.isForeignKeyEnabled(this.getColumns())) {\n this.notify(events.initForeignKeyColumn, this.getForeignKeyColumns());\n }\n };\n Grid.prototype.enableVerticalRendering = function () {\n if (this.rowRenderingMode === 'Vertical') {\n this.element.classList.add('e-row-responsive');\n }\n else {\n this.element.classList.remove('e-row-responsive');\n }\n };\n Grid.prototype.gridRender = function () {\n var _a;\n this.updateRTL();\n if (this.rowRenderingMode === 'Vertical') {\n this.element.classList.add('e-row-responsive');\n }\n if (this.enableHover) {\n this.element.classList.add('e-gridhover');\n }\n if (Browser.isDevice) {\n this.element.classList.add('e-device');\n }\n if (this.rowHeight) {\n this.element.classList.add('e-grid-min-height');\n }\n if (this.cssClass) {\n if (this.cssClass.indexOf(' ') !== -1) {\n (_a = this.element.classList).add.apply(_a, this.cssClass.split(' '));\n }\n else {\n this.element.classList.add(this.cssClass);\n }\n }\n // If the below if statement is removed, then drag and drop between grids will not work in firefox browser.\n if (this.allowRowDragAndDrop && this.rowDropSettings.targetID && Browser.info.name === 'mozilla') {\n this.element.classList.add('e-disableuserselect');\n }\n if (this.editSettings.showAddNewRow && (this.enableVirtualization || this.enableInfiniteScrolling)) {\n this.editSettings.newRowPosition = 'Top';\n }\n classList(this.element, ['e-responsive', 'e-default'], []);\n var rendererFactory = this.serviceLocator.getService('rendererFactory');\n this.headerModule = rendererFactory.getRenderer(RenderType.Header);\n this.contentModule = rendererFactory.getRenderer(RenderType.Content);\n this.printModule = new Print(this, this.scrollModule);\n this.clipboardModule = new Clipboard(this, this.serviceLocator);\n this.renderModule.render();\n this.eventInitializer();\n this.createGridPopUpElement();\n this.widthService.setWidthToColumns();\n this.updateGridLines();\n this.applyTextWrap();\n this.createTooltip(); //for clip mode ellipsis\n this.enableBoxSelection();\n };\n Grid.prototype.dataReady = function () {\n this.scrollModule.setWidth();\n this.scrollModule.setHeight();\n if (this.height !== 'auto') {\n this.scrollModule.setPadding();\n }\n };\n Grid.prototype.updateRTL = function () {\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n else {\n this.element.classList.remove('e-rtl');\n }\n };\n Grid.prototype.createGridPopUpElement = function () {\n var popup = this.createElement('div', { className: 'e-gridpopup', styles: 'display:none;' });\n var content = this.createElement('div', { className: literals.content, attrs: { tabIndex: '-1' } });\n append([content, this.createElement('div', { className: 'e-uptail e-tail' })], popup);\n content.appendChild(this.createElement('span'));\n append([content, this.createElement('div', { className: 'e-downtail e-tail' })], popup);\n this.element.appendChild(popup);\n };\n Grid.prototype.updateGridLines = function () {\n classList(this.element, [], ['e-verticallines', 'e-horizontallines', 'e-hidelines', 'e-bothlines']);\n switch (this.gridLines) {\n case 'Horizontal':\n this.element.classList.add('e-horizontallines');\n break;\n case 'Vertical':\n this.element.classList.add('e-verticallines');\n break;\n case 'None':\n this.element.classList.add('e-hidelines');\n break;\n case 'Both':\n this.element.classList.add('e-bothlines');\n break;\n }\n this.updateResizeLines();\n };\n Grid.prototype.updateResizeLines = function () {\n if (this.allowResizing &&\n !(this.gridLines === 'Vertical' || this.gridLines === 'Both')) {\n this.element.classList.add('e-resize-lines');\n }\n else {\n this.element.classList.remove('e-resize-lines');\n }\n };\n /**\n * The function is used to apply text wrap\n *\n * @returns {void}\n * @hidden\n */\n Grid.prototype.applyTextWrap = function () {\n if (this.allowTextWrap) {\n var headerRows = [].slice.call(this.element.getElementsByClassName('e-columnheader'));\n switch (this.textWrapSettings.wrapMode) {\n case 'Header':\n wrap(this.element, false);\n wrap(this.getContent(), false);\n wrap(headerRows, true);\n break;\n case 'Content':\n wrap(this.getContent(), true);\n wrap(this.element, false);\n wrap(headerRows, false);\n break;\n default:\n wrap(this.element, true);\n wrap(this.getContent(), false);\n wrap(headerRows, false);\n }\n if (this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\n }\n }\n };\n /**\n * The function is used to remove text wrap\n *\n * @returns {void}\n * @hidden\n */\n Grid.prototype.removeTextWrap = function () {\n wrap(this.element, false);\n var headerRows = [].slice.call(this.element.getElementsByClassName('e-columnheader'));\n wrap(headerRows, false);\n wrap(this.getContent(), false);\n if (this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\n }\n };\n /**\n * The function is used to add Tooltip to the grid cell that has ellipsiswithtooltip clip mode.\n *\n * @returns {void}\n * @hidden\n */\n Grid.prototype.createTooltip = function () {\n this.toolTipObj = new Tooltip({\n opensOn: 'custom',\n content: '',\n cssClass: this.cssClass ? this.cssClass : null\n }, this.element);\n };\n /** @hidden\n * @returns {void}\n */\n Grid.prototype.freezeRefresh = function () {\n if (this.enableVirtualization || this.enableInfiniteScrolling) {\n this.pageSettings.currentPage = 1;\n }\n this.componentRefresh();\n };\n Grid.prototype.getTooltipStatus = function (element) {\n var headerTable = this.getHeaderTable();\n var headerDivTag = this.enableAdaptiveUI && this.rowRenderingMode === 'Vertical' ? 'e-gridcontent' : 'e-gridheader';\n var htable = this.createTable(headerTable, headerDivTag, 'header');\n var ctable = this.createTable(headerTable, headerDivTag, 'content');\n var table = element.classList.contains('e-headercell') ? htable : ctable;\n var ele = element.classList.contains('e-headercell') ? 'th' : 'tr';\n table.querySelector(ele).className = element.className;\n table.querySelector(ele).innerHTML = element.innerHTML;\n var width = table.querySelector(ele).getBoundingClientRect().width;\n document.body.removeChild(htable);\n document.body.removeChild(ctable);\n if ((width > element.getBoundingClientRect().width && !element.classList.contains('e-editedbatchcell')) ||\n (this.enableAdaptiveUI && this.rowRenderingMode === 'Vertical' &&\n width > (element.getBoundingClientRect().width * 0.55) - (this.height !== 'auto' ? 16 : 0))) {\n // 0.55 - defines the width of adaptive content cell, 16 - defines the scrollbar width\n return true;\n }\n return false;\n };\n Grid.prototype.mouseMoveHandler = function (e) {\n if (this.isEllipsisTooltip()) {\n var element = parentsUntil(e.target, 'e-ellipsistooltip');\n if (this.prevElement !== element || e.type === 'mouseout') {\n this.toolTipObj.close();\n }\n var tagName = e.target.tagName;\n var elemNames = ['A', 'BUTTON', 'INPUT'];\n if (element && e.type !== 'mouseout' && !(Browser.isDevice && elemNames.indexOf(tagName) !== -1)) {\n if (this.getTooltipStatus(element)) {\n var col = this.getColumns()[parseInt(element.getAttribute(literals.dataColIndex), 10)];\n var domSetter = col.disableHtmlEncode ? 'innerText' : 'innerHTML';\n var contentDiv = this.createElement('div');\n if (element.getElementsByClassName('e-headertext').length) {\n var innerElement = element.getElementsByClassName('e-headertext')[0];\n contentDiv[\"\" + domSetter] = this.sanitize(innerElement.innerText);\n this.toolTipObj.content = contentDiv;\n }\n else {\n contentDiv[\"\" + domSetter] = this.sanitize(element.innerText);\n this.toolTipObj.content = contentDiv;\n }\n this.prevElement = element;\n if (this.enableHtmlSanitizer) {\n this.toolTipObj.enableHtmlSanitizer = true;\n }\n if (col.disableHtmlEncode) {\n this.toolTipObj.enableHtmlParse = false;\n }\n this.toolTipObj['open'](element);\n }\n }\n }\n };\n Grid.prototype.isEllipsisTooltip = function () {\n var cols = this.getColumns();\n if (this.clipMode === 'EllipsisWithTooltip') {\n return true;\n }\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].clipMode === 'EllipsisWithTooltip') {\n return true;\n }\n }\n return false;\n };\n Grid.prototype.scrollHandler = function () {\n if (this.isEllipsisTooltip()) {\n this.toolTipObj.close();\n }\n };\n /**\n * To create table for ellipsiswithtooltip\n *\n * @param {Element} table - Defines the table\n * @param {string} tag - Defines the tag\n * @param {string} type - Defines the type\n * @returns {HTMLDivElement} Returns the HTML div ELement\n * @hidden\n */\n Grid.prototype.createTable = function (table, tag, type) {\n var myTableDiv = this.createElement('div');\n myTableDiv.className = this.element.className;\n myTableDiv.style.cssText = 'display: inline-block;visibility:hidden;position:absolute';\n var mySubDiv = this.createElement('div');\n mySubDiv.className = tag;\n var myTable = this.createElement('table');\n myTable.className = table.className;\n myTable.style.cssText = 'table-layout: auto;width: auto';\n var ele = (type === 'header') ? 'th' : 'td';\n var myTr = this.createElement('tr', { attrs: { role: 'row' } });\n var mytd = this.createElement(ele);\n myTr.appendChild(mytd);\n myTable.appendChild(myTr);\n mySubDiv.appendChild(myTable);\n myTableDiv.appendChild(mySubDiv);\n document.body.appendChild(myTableDiv);\n return myTableDiv;\n };\n Grid.prototype.onKeyPressed = function (e) {\n if (e.action === 'tab' || e.action === 'shiftTab') {\n this.toolTipObj.close();\n }\n };\n /**\n * Binding events to the element while component creation.\n *\n * @hidden\n * @returns {void}\n */\n Grid.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.mouseClickHandler, this);\n EventHandler.add(this.element, 'touchend', this.mouseClickHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n EventHandler.add(this.element, 'dblclick', this.dblClickHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyPressHandler, this);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.add(window, 'resize', this.resetIndentWidth, this);\n if (this.allowKeyboard) {\n this.element.tabIndex = this.element.tabIndex === -1 ? 0 : this.element.tabIndex;\n }\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n EventHandler.add(this.getContent().firstElementChild, 'scroll', this.scrollHandler, this);\n EventHandler.add(this.element, 'mouseover', this.mouseMoveHandler, this);\n EventHandler.add(this.element, 'mouseout', this.mouseMoveHandler, this);\n EventHandler.add(this.getContent(), 'touchstart', this.tapEvent, this);\n EventHandler.add(document.body, 'keydown', this.keyDownHandler, this);\n };\n /**\n * Unbinding events from the element while component destroy.\n *\n * @hidden\n * @returns {void}\n */\n Grid.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.mouseClickHandler);\n EventHandler.remove(this.element, 'touchend', this.mouseClickHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n EventHandler.remove(this.element, 'dblclick', this.dblClickHandler);\n EventHandler.remove(this.getContent().firstElementChild, 'scroll', this.scrollHandler);\n EventHandler.remove(this.element, 'mouseover', this.mouseMoveHandler);\n EventHandler.remove(this.element, 'mouseout', this.mouseMoveHandler);\n EventHandler.remove(this.element, 'keydown', this.keyPressHandler);\n EventHandler.remove(this.getContent(), 'touchstart', this.tapEvent);\n EventHandler.remove(document.body, 'keydown', this.keyDownHandler);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.remove(window, 'resize', this.resetIndentWidth);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.addListener = function () {\n if (this.isDestroyed) {\n return;\n }\n this.on(events.dataReady, this.dataReady, this);\n this.on(events.contentReady, this.recalcIndentWidth, this);\n this.on(events.headerRefreshed, this.recalcIndentWidth, this);\n this.on(events.refreshFrozenPosition, this.refreshFrozenPosition, this);\n this.on(events.refreshSplitFrozenColumn, this.refreshSplitFrozenColumn, this);\n this.dataBoundFunction = this.refreshMediaCol.bind(this);\n this.addEventListener(events.dataBound, this.dataBoundFunction);\n this.on(events.keyPressed, this.onKeyPressed, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.removeListener = function () {\n if (this.isDestroyed) {\n return;\n }\n this.off(events.dataReady, this.dataReady);\n this.off(events.contentReady, this.recalcIndentWidth);\n this.off(events.headerRefreshed, this.recalcIndentWidth);\n this.on(events.refreshFrozenPosition, this.refreshFrozenPosition, this);\n this.on(events.refreshSplitFrozenColumn, this.refreshSplitFrozenColumn, this);\n this.removeEventListener(events.dataBound, this.dataBoundFunction);\n this.off(events.keyPressed, this.onKeyPressed);\n };\n /**\n * Get current visible data of grid.\n *\n * @returns {Object[]} Returns the current view records\n *\n * @isGenericType true\n */\n Grid.prototype.getCurrentViewRecords = function () {\n if (isGroupAdaptive(this)) {\n return isNullOrUndefined(this.currentViewData.records) ?\n this.currentViewData : this.currentViewData.records;\n }\n if (this.groupSettings.enableLazyLoading) {\n return this.currentViewData;\n }\n return (this.allowGrouping && this.groupSettings.columns.length && this.currentViewData.length\n && this.currentViewData.records) ? this.currentViewData.records\n : this.currentViewData;\n };\n Grid.prototype.mouseClickHandler = function (e) {\n if (this.isChildGrid(e) || (parentsUntil(e.target, 'e-gridpopup') && e.touches) ||\n this.element.getElementsByClassName('e-cloneproperties').length || this.checkEdit(e)) {\n return;\n }\n if (((!this.allowRowDragAndDrop && (parentsUntil(e.target, literals.gridContent) ||\n e.target.tagName === 'TD')) || (parentsUntil(e.target, 'e-headercell') &&\n parentsUntil(e.target, 'e-headercell').querySelector('.e-checkselectall')) ||\n (!(this.allowGrouping || this.allowReordering) && parentsUntil(e.target, 'e-gridheader'))) &&\n e.touches) {\n return;\n }\n if (parentsUntil(e.target, 'e-gridheader') && this.allowRowDragAndDrop &&\n !(parentsUntil(e.target, 'e-filterbarcell')) && (e.target &&\n ['A', 'BUTTON', 'INPUT'].indexOf(e.target.tagName) === -1)) {\n e.preventDefault();\n }\n var args = this.getRowInfo(e.target);\n var cancel = 'cancel';\n args[\"\" + cancel] = false;\n var isDataRow = false;\n var tr = closest(e.target, 'tr');\n if (tr && tr.getAttribute('data-uid')) {\n var rowObj = this.getRowObjectFromUID(tr.getAttribute('data-uid'));\n isDataRow = rowObj ? rowObj.isDataRow : false;\n }\n if (isDataRow) {\n this.trigger(events.recordClick, args);\n }\n this.notify(events.click, e);\n };\n Grid.prototype.checkEdit = function (e) {\n var tr = parentsUntil(e.target, literals.row);\n var isEdit = this.editSettings.mode !== 'Batch' &&\n this.isEdit && tr && (tr.classList.contains(literals.editedRow) || (tr.classList.contains(literals.addedRow)) &&\n !this.editSettings.showAddNewRow);\n return !parentsUntil(e.target, 'e-unboundcelldiv') && (isEdit || (parentsUntil(e.target, literals.rowCell) &&\n parentsUntil(e.target, literals.rowCell).classList.contains('e-editedbatchcell')));\n };\n Grid.prototype.dblClickHandler = function (e) {\n var grid = parentsUntil(e.target, 'e-grid');\n if (isNullOrUndefined(grid) || grid.id !== this.element.id || closest(e.target, '.e-unboundcelldiv')) {\n return;\n }\n var dataRow = false;\n var tr = closest(e.target, 'tr');\n if (tr && tr.getAttribute('data-uid')) {\n var rowObj = this.getRowObjectFromUID(tr.getAttribute('data-uid'));\n dataRow = rowObj ? rowObj.isDataRow : false;\n }\n var args = this.getRowInfo(e.target);\n args.target = e.target;\n if (dataRow) {\n this.trigger(events.recordDoubleClick, args);\n }\n this.notify(events.dblclick, e);\n };\n Grid.prototype.focusOutHandler = function (e) {\n if (this.isChildGrid(e)) {\n return;\n }\n if (!parentsUntil(e.target, 'e-grid')) {\n this.element.querySelector('.e-gridpopup').style.display = 'None';\n }\n var filterClear = this.element.querySelector('.e-cancel:not(.e-hide)');\n if (filterClear && !filterClear.parentElement.classList.contains('e-tbar-btn')) {\n filterClear.classList.add('e-hide');\n }\n var relatedTarget = e.relatedTarget;\n var ariaOwns = relatedTarget ? relatedTarget.getAttribute('aria-owns') : null;\n if ((!relatedTarget || (!parentsUntil(relatedTarget, 'e-grid') &&\n (!isNullOrUndefined(ariaOwns) &&\n (ariaOwns)) !== e.target.getAttribute('aria-owns')))\n && !this.keyPress && this.isEdit && !Browser.isDevice) {\n if (this.editSettings.mode === 'Batch' && !(((parentsUntil(relatedTarget, 'e-ddl') || parentsUntil(relatedTarget, 'e-ddt')) &&\n (parentsUntil(relatedTarget, 'e-multi-select-list-wrapper') || parentsUntil(relatedTarget, 'e-input-filter'))) &&\n parentsUntil(relatedTarget, 'e-input-group')) && (parentsUntil(relatedTarget, 'e-uploader') || !(relatedTarget &&\n isNullOrUndefined(parentsUntil(relatedTarget, 'e-input-group'))))) {\n this.editModule.saveCell();\n this.notify(events.editNextValCell, {});\n }\n if (this.editSettings.mode === 'Normal' && !this.isWidgetsDestroyed) {\n this.editModule.editFormValidate();\n }\n }\n if (this.editSettings.showAddNewRow) {\n this.editModule.isShowAddedRowValidate = false;\n }\n this.keyPress = false;\n };\n Grid.prototype.isChildGrid = function (e) {\n var gridElement = parentsUntil(e.target, 'e-grid');\n if ((gridElement && gridElement.id !== this.element.id) || (parentsUntil(e.target, 'e-unboundcelldiv') &&\n isNullOrUndefined(gridElement))) {\n return true;\n }\n return false;\n };\n /**\n * @param {Object} persistedData - Defines the persisted data\n * @returns {void}\n * @hidden\n */\n Grid.prototype.mergePersistGridData = function (persistedData) {\n var data = this.getLocalData();\n if (!(isNullOrUndefined(data) || (data === '')) || !isNullOrUndefined(persistedData)) {\n var dataObj = !isNullOrUndefined(persistedData) ? persistedData : JSON.parse(data);\n if (this.enableVirtualization && dataObj.pageSettings) {\n dataObj.pageSettings.currentPage = 1;\n }\n var keys = Object.keys(dataObj);\n this.isProtectedOnChange = true;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if ((typeof this[\"\" + key] === 'object') && !isNullOrUndefined(this[\"\" + key])) {\n if (Array.isArray(this[\"\" + key]) && key === 'columns') {\n this.setFrozenCount();\n setColumnIndex(this[\"\" + key]);\n this.mergeColumns(dataObj[\"\" + key], this[\"\" + key]);\n this.mergedColumns = true;\n this[\"\" + key] = dataObj[\"\" + key];\n }\n else {\n extend(this[\"\" + key], dataObj[\"\" + key]);\n }\n }\n else {\n this[\"\" + key] = dataObj[\"\" + key];\n }\n }\n this.isProtectedOnChange = false;\n }\n };\n Grid.prototype.mergeColumns = function (storedColumn, columns) {\n var storedColumns = storedColumn;\n var isFrozenGrid = this.isFrozenGrid();\n var _loop_4 = function (i) {\n var localCol = columns.filter(function (tCol) { return isFrozenGrid ?\n tCol.index === storedColumns[parseInt(i.toString(), 10)][\"\" + literals.initialFrozenColumnIndex] :\n tCol.index === storedColumns[parseInt(i.toString(), 10)].index; })[0];\n if (!isNullOrUndefined(localCol)) {\n if (isFrozenGrid) {\n localCol = extend({}, localCol, {}, true);\n localCol.freeze = storedColumns[parseInt(i.toString(), 10)].freeze;\n }\n if (localCol.columns && localCol.columns.length) {\n this_4.mergeColumns(storedColumns[parseInt(i.toString(), 10)].columns, localCol.columns);\n storedColumns[parseInt(i.toString(), 10)] = extend(localCol, storedColumns[parseInt(i.toString(), 10)], {}, true);\n }\n else {\n storedColumns[parseInt(i.toString(), 10)] = extend(localCol, storedColumns[parseInt(i.toString(), 10)], {}, true);\n }\n }\n };\n var this_4 = this;\n for (var i = 0; i < storedColumns.length; i++) {\n _loop_4(i);\n }\n };\n /**\n * @hidden\n * @returns {boolean} Returns the isDetail\n */\n Grid.prototype.isDetail = function () {\n return !isNullOrUndefined(this.detailTemplate) || !isNullOrUndefined(this.childGrid);\n };\n Grid.prototype.isCommandColumn = function (columns) {\n var _this_1 = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this_1.isCommandColumn(col.columns);\n }\n return !!(col.commands || col.commandsTemplate);\n });\n };\n Grid.prototype.isForeignKeyEnabled = function (columns) {\n var _this_1 = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this_1.isForeignKeyEnabled(col.columns);\n }\n return !!(col.dataSource && col.foreignKeyValue);\n });\n };\n Grid.prototype.keyPressHandler = function (e) {\n var presskey = extend(e, { cancel: false });\n this.trigger('keyPressed', presskey);\n if (presskey.cancel === true) {\n e.stopImmediatePropagation();\n }\n };\n Grid.prototype.keyDownHandler = function (e) {\n if (e.altKey) {\n if (e.keyCode === 74) { //alt j\n if (this.keyA) { //alt A J\n this.notify(events.groupCollapse, { target: e.target, collapse: false });\n this.keyA = false;\n }\n else {\n if (this.focusModule && this.focusModule.currentInfo && this.focusModule.currentInfo.element) {\n removeClass([this.focusModule.currentInfo.element, this.focusModule.currentInfo.elementToFocus], ['e-focused', 'e-focus']);\n this.focusModule.currentInfo.element.tabIndex = -1;\n }\n if (!this.element.classList.contains('e-childgrid')) {\n this.element.focus();\n }\n }\n }\n if (e.keyCode === 87) { //alt w\n var focusModule = this.focusModule;\n if (focusModule) {\n if (!this.currentViewData.length) {\n return;\n }\n focusModule.focusContent();\n focusModule.addOutline();\n }\n }\n if (e.keyCode === 65) { //alt A\n this.keyA = true;\n }\n if (e.keyCode === 72 && this.keyA) { //alt A H\n this.notify(events.groupCollapse, { target: e.target, collapse: true });\n this.keyA = false;\n }\n }\n if (e.keyCode === 13) {\n this.notify(events.enterKeyHandler, e);\n }\n };\n Grid.prototype.keyActionHandler = function (e) {\n if (this.isChildGrid(e) ||\n ((this.isEdit && (!this.editSettings.showAddNewRow || (this.editSettings.showAddNewRow &&\n this.element.querySelector(literals.editedRow)))) && e.action !== 'escape' && e.action !== 'enter'\n && e.action !== 'shiftEnter' && e.action !== 'tab' && e.action !== 'shiftTab')) {\n return;\n }\n else {\n this.keyPress = true;\n }\n if (this.allowKeyboard) {\n if (e.action === 'ctrlPlusP') {\n e.preventDefault();\n this.print();\n }\n this.notify(events.keyPressed, e);\n }\n };\n /**\n * @param {Function[]} modules - Defines the modules\n * @returns {void}\n * @hidden\n */\n Grid.prototype.setInjectedModules = function (modules) {\n this.injectedModules = modules;\n };\n Grid.prototype.updateColumnObject = function () {\n prepareColumns(this.columns, this.enableColumnVirtualization, this);\n setColumnIndex(this.columns);\n this.initForeignColumn();\n this.notify(events.autoCol, {});\n };\n Grid.prototype.refreshFrozenPosition = function (obj) {\n if (obj && obj.isModeChg) {\n this.refreshColumns();\n this.notify(events.refreshResizePosition, {});\n }\n else {\n this.refreshColumns();\n }\n };\n /**\n * Gets the foreign columns from Grid.\n *\n * @returns {Column[]} Returns Foreign key column\n */\n Grid.prototype.getForeignKeyColumns = function () {\n return this.getColumns().filter(function (col) {\n return col.isForeignColumn();\n });\n };\n /**\n * @hidden\n * @returns {number} Returns row height\n */\n Grid.prototype.getRowHeight = function () {\n return this.rowHeight ? this.rowHeight : getRowHeight(this.element);\n };\n /**\n * Refreshes the Grid column changes.\n *\n * @returns {void}\n */\n Grid.prototype.refreshColumns = function () {\n this.freezeColumnRefresh = true;\n this.setFrozenCount();\n this.updateFrozenColumnsWidth();\n if (this.isFrozenGrid()) {\n this.isPreventScrollEvent = true;\n }\n this.updateColumnObject();\n this.checkLockColumns(this.getColumns());\n this.refresh();\n if (this.isFrozenGrid() && this.enableColumnVirtualization) {\n var left = this.getContent().querySelector('.e-movablescrollbar').scrollLeft;\n this.getHeaderContent().querySelector('.' + literals.headerContent).scrollLeft = left;\n this.getContent().querySelector('.' + literals.content).scrollLeft = left;\n }\n };\n /**\n * Export Grid data to Excel file(.xlsx).\n *\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {Workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise} Returns the excelexport\n */\n Grid.prototype.excelExport = function (excelExportProperties, isMultipleExport, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n workbook, isBlob) {\n if (this.exportGrids && this.exportGrids.length) {\n var gridIds = this.exportGrids.slice();\n return this.exportMultipleExcelGrids(gridIds, excelExportProperties, isMultipleExport, workbook, isBlob);\n }\n else {\n return this.excelExportModule ?\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, false, isBlob) : null;\n }\n };\n /**\n * Export Grid data to CSV file.\n *\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {Workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise} Returns csv export\n */\n Grid.prototype.csvExport = function (excelExportProperties, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isMultipleExport, workbook, isBlob) {\n return this.excelExportModule ?\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, true, isBlob) : null;\n };\n /**\n * Export Grid data to PDF document.\n *\n * @param {pdfExportProperties} pdfExportProperties - Defines the export properties of the Grid.\n * @param {isMultipleExport} isMultipleExport - Define to enable multiple export.\n * @param {pdfDoc} pdfDoc - Defined the Pdf Document if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n *\n * @returns {Promise} Returns pdfexport\n */\n Grid.prototype.pdfExport = function (pdfExportProperties, isMultipleExport, pdfDoc, isBlob) {\n if (this.exportGrids && this.exportGrids.length) {\n var gridIds = this.exportGrids.slice();\n return this.exportMultiplePdfGrids(gridIds, pdfExportProperties, isMultipleExport, pdfDoc, isBlob);\n }\n else {\n return this.pdfExportModule ? this.pdfExportModule.Map(this, pdfExportProperties, isMultipleExport, pdfDoc, isBlob) : null;\n }\n };\n Grid.prototype.exportMultiplePdfGrids = function (gridIds, pdfExportProperties, isMultipleExport, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n pdfDoc, isBlob) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var _this = this;\n if (gridIds.length !== 0) {\n var currentGridId = gridIds.shift();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentGridInstance = document.getElementById(currentGridId).ej2_instances[0];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var exportPromise = currentGridInstance.pdfExportModule ?\n currentGridInstance.pdfExportModule.Map(currentGridInstance, pdfExportProperties, isMultipleExport, pdfDoc, isBlob)\n : Promise.resolve();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return exportPromise.then(function (exportedGridResults) {\n isMultipleExport = gridIds.length === 1 ? false : true;\n return _this.exportMultiplePdfGrids(gridIds, pdfExportProperties, isMultipleExport, exportedGridResults, isBlob);\n });\n }\n return null;\n };\n Grid.prototype.exportMultipleExcelGrids = function (gridIds, excelExportProperties, isMultipleExport, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n workbook, isBlob) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var _this = this;\n if (gridIds.length !== 0) {\n var currentGridId = gridIds.shift();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentGridInstance = document.getElementById(currentGridId).ej2_instances[0];\n var exportPromise = currentGridInstance.excelExportModule ?\n currentGridInstance.excelExportModule.Map(currentGridInstance, excelExportProperties, isMultipleExport, workbook, false, isBlob) : null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return exportPromise.then(function (exportedGridResults) {\n isMultipleExport = gridIds.length === 1 ? false : true;\n return _this.exportMultipleExcelGrids(gridIds, excelExportProperties, isMultipleExport, exportedGridResults, isBlob);\n });\n }\n return null;\n };\n /**\n * Groups a column by column name.\n *\n * @param {string} columnName - Defines the column name to group.\n *\n * @returns {void}\n */\n Grid.prototype.groupColumn = function (columnName) {\n if (this.groupModule) {\n this.groupModule.groupColumn(columnName);\n }\n };\n /**\n * Expands all the grouped rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.groupExpandAll = function () {\n if (this.groupModule) {\n this.groupModule.expandAll();\n }\n };\n /**\n * Collapses all the grouped rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.groupCollapseAll = function () {\n if (this.groupModule) {\n this.groupModule.collapseAll();\n }\n };\n /**\n * Expands or collapses grouped rows by target element.\n *\n * @param {Element} target - Defines the target element of the grouped row.\n * @returns {void}\n */\n // public expandCollapseRows(target: Element): void {\n // if (this.groupModule) {\n // this.groupModule.expandCollapseRows(target);\n // }\n // }\n /**\n * Clears all the grouped columns of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.clearGrouping = function () {\n if (this.groupModule) {\n this.groupModule.clearGrouping();\n }\n };\n /**\n * Ungroups a column by column name.\n *\n * {% codeBlock src='grid/ungroupColumn/index.md' %}{% endcodeBlock %}\n *\n * @param {string} columnName - Defines the column name to ungroup.\n *\n * @returns {void}\n */\n Grid.prototype.ungroupColumn = function (columnName) {\n if (this.groupModule) {\n this.groupModule.ungroupColumn(columnName);\n }\n };\n /**\n * Column chooser can be displayed on screen by given position(X and Y axis).\n *\n * @param {number} x - Defines the X axis.\n * @param {number} y - Defines the Y axis.\n *\n * @returns {void}\n */\n Grid.prototype.openColumnChooser = function (x, y) {\n if (this.columnChooserModule) {\n this.columnChooserModule.openColumnChooser(x, y);\n }\n };\n Grid.prototype.scrollRefresh = function () {\n var _this_1 = this;\n var refresh = function () {\n _this_1.scrollModule.refresh();\n _this_1.off(events.contentReady, refresh);\n };\n this.on(events.contentReady, refresh, this);\n };\n /**\n * Collapses a detail row with the given target.\n *\n * @param {Element} target - Defines the expanded element to collapse.\n * @returns {void}\n */\n // public detailCollapse(target: number | Element): void {\n // if (this.detailRowModule) {\n // this.detailRowModule.collapse(target);\n // }\n // }\n /**\n * Collapses all the detail rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.detailCollapseAll = function () {\n if (this.detailRowModule) {\n this.detailRowModule.collapseAll();\n }\n };\n /**\n * Expands a detail row with the given target.\n *\n * @param {Element} target - Defines the collapsed element to expand.\n * @returns {void}\n */\n // public detailExpand(target: number | Element): void {\n // if (this.detailRowModule) {\n // this.detailRowModule.expand(target);\n // }\n // }\n /**\n * Expands all the detail rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.detailExpandAll = function () {\n if (this.detailRowModule) {\n this.detailRowModule.expandAll();\n }\n };\n /**\n * Deselects the currently selected cells.\n *\n * @returns {void}\n */\n Grid.prototype.clearCellSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearCellSelection();\n }\n };\n /**\n * Deselects the currently selected rows.\n *\n * @returns {void}\n */\n Grid.prototype.clearRowSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearRowSelection();\n }\n };\n /**\n * Selects a collection of cells by row and column indexes.\n *\n * @param {ISelectedCell[]} rowCellIndexes - Specifies the row and column indexes.\n *\n * @returns {void}\n */\n Grid.prototype.selectCells = function (rowCellIndexes) {\n if (this.selectionModule) {\n this.selectionModule.selectCells(rowCellIndexes);\n }\n };\n /**\n * Selects a range of rows from start and end row indexes.\n *\n * @param {number} startIndex - Specifies the start row index.\n * @param {number} endIndex - Specifies the end row index.\n *\n * @returns {void}\n */\n Grid.prototype.selectRowsByRange = function (startIndex, endIndex) {\n if (this.selectionModule) {\n this.selectionModule.selectRowsByRange(startIndex, endIndex);\n }\n };\n /**\n * @hidden\n * @returns {boolean} Returns whether context menu is open or not\n */\n Grid.prototype.isContextMenuOpen = function () {\n return this.contextMenuModule && this.contextMenuModule.isOpen;\n };\n /**\n * @param {Function} module - Defines the module\n * @returns {boolean} return the injected modules\n * @hidden\n */\n Grid.prototype.ensureModuleInjected = function (module) {\n return this.getInjectedModules().indexOf(module) >= 0;\n };\n /**\n * Destroys the given template reference.\n *\n * @param {string[]} propertyNames - Defines the collection of template name.\n * @param {any} index - specifies the index\n *\n * @returns {void}\n */\n // eslint-disable-next-line\n Grid.prototype.destroyTemplate = function (propertyNames, index) {\n this.clearTemplate(propertyNames, index);\n };\n /**\n * @param {string | string[]} type - Defines the type\n * @param {Object} args - Defines the arguments\n * @returns {void}\n * @hidden\n * @private\n */\n Grid.prototype.log = function (type, args) {\n var injectedModules = this.getInjectedModules();\n var logger = injectedModules.find(function (item) { return item.name === 'Logger'; });\n if (!logger) {\n Grid_1.Inject(Logger);\n this.enableLogger = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.injectModules();\n }\n // eslint-disable-next-line\n this.loggerModule ? this.loggerModule.log(type, args) : (function () { return 0; })();\n };\n /**\n * @param {Element} element - Defines the element\n * @returns {void}\n * @hidden\n */\n Grid.prototype.applyBiggerTheme = function (element) {\n if (this.element.classList.contains('e-bigger')) {\n element.classList.add('e-bigger');\n }\n };\n /**\n * @hidden\n * @returns {Object} Returns the previous row data\n */\n Grid.prototype.getPreviousRowData = function () {\n var previousRowData = this.getRowsObject()[this.getRows().length - 1].data;\n return previousRowData;\n };\n /**\n * Hides the scrollbar placeholder of Grid content when grid content is not overflown.\n *\n * @returns {void}\n */\n Grid.prototype.hideScroll = function () {\n var content = this.getContent().querySelector('.' + literals.content);\n if (content.scrollHeight <= content.clientHeight) {\n this.scrollModule.removePadding();\n content.style.overflowY = 'auto';\n }\n };\n /**\n * Get row index by primary key or row data.\n *\n * @param {string | Object} value - Defines the primary key value.\n *\n * @returns {number} Returns the index\n */\n Grid.prototype.getRowIndexByPrimaryKey = function (value) {\n var pkName = this.getPrimaryKeyFieldNames()[0];\n value = typeof value === 'object' ? value[\"\" + pkName] : value;\n var rows = this.getRowsObject();\n for (var i = 0; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)].isDetailRow || rows[parseInt(i.toString(), 10)].isCaptionRow) {\n continue;\n }\n var pKvalue = rows[parseInt(i.toString(), 10)].data[\"\" + pkName];\n if (pkName.split('.').length > 1) {\n pKvalue = performComplexDataOperation(pkName, rows[parseInt(i.toString(), 10)].data);\n }\n if (pKvalue === value) {\n return rows[parseInt(i.toString(), 10)].index;\n }\n }\n return -1;\n };\n /**\n * @param {string} field - Defines the field name\n * @param {boolean} isForeignKey - Defines the foreign key\n * @returns {Column} returns the column\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n Grid.prototype.grabColumnByFieldFromAllCols = function (field, isForeignKey) {\n var column;\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n var gCols = this.columnModel;\n for (var i = 0; i < gCols.length; i++) {\n if ((!isForeignKey && field === gCols[parseInt(i.toString(), 10)].field) ||\n (isForeignKey && gCols[parseInt(i.toString(), 10)].isForeignColumn() &&\n field === gCols[parseInt(i.toString(), 10)].foreignKeyValue)) {\n column = gCols[parseInt(i.toString(), 10)];\n break;\n }\n }\n return column;\n };\n /**\n * @param {string} uid - Defines the uid\n * @returns {Column} returns the column\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n Grid.prototype.grabColumnByUidFromAllCols = function (uid) {\n var column;\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n var gCols = this.columnModel;\n for (var i = 0; i < gCols.length; i++) {\n if (uid === gCols[parseInt(i.toString(), 10)].uid) {\n column = gCols[parseInt(i.toString(), 10)];\n }\n }\n return column;\n };\n /**\n * Get all filtered records from the Grid and it returns array of objects for the local dataSource, returns a promise object if the Grid has remote data.\n *\n * @returns {Object[] | Promise} Returns the filtered records\n */\n Grid.prototype.getFilteredRecords = function () {\n if ((this.allowFiltering && this.filterSettings.columns.length) || this.searchSettings.key.length) {\n var query = this.renderModule.data.generateQuery(true);\n if (this.dataSource && this.renderModule.data.isRemote() && this.dataSource instanceof DataManager) {\n return this.renderModule.data.getData(this.dataSource, query);\n }\n else {\n if (this.dataSource instanceof DataManager) {\n return this.dataSource.executeLocal(query);\n }\n else {\n return new DataManager(this.dataSource, query).executeLocal(query);\n }\n }\n }\n return [];\n };\n Grid.prototype.getUserAgent = function () {\n var userAgent = Browser.userAgent.toLowerCase();\n return /iphone|ipod|ipad|macintosh/.test(userAgent);\n };\n /**\n * @param {TouchEventArgs} e - Defines the TouchEventArgs\n * @returns {void}\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n // eslint-disable-next-line\n Grid.prototype.tapEvent = function (e) {\n if (this.getUserAgent()) {\n if (!Global.timer) {\n Global.timer = setTimeout(function () {\n Global.timer = null;\n }, 300);\n }\n else {\n clearTimeout(Global.timer);\n Global.timer = null;\n this.dblClickHandler(e);\n this.notify(events.doubleTap, e);\n }\n }\n };\n /**\n * @param {string} prefix - specifies the prefix\n * @returns {string} returns the row uid\n * @hidden\n */\n Grid.prototype.getRowUid = function (prefix) {\n return \"\" + prefix + this.rowUid++;\n };\n /**\n * @param {string} uid - specifies the uid\n * @returns {Element} returns the element\n * @hidden\n */\n Grid.prototype.getRowElementByUID = function (uid) {\n var rowEle;\n var rows = [];\n var cntRows = [].slice.call(this.getContent().querySelector(literals.tbody).children);\n if (this.frozenRows) {\n rows = [].slice.call(this.getHeaderContent().querySelector(literals.tbody).children);\n rows = rows.concat(cntRows);\n }\n else {\n rows = cntRows;\n }\n for (var _i = 0, rows_2 = rows; _i < rows_2.length; _i++) {\n var row = rows_2[_i];\n if (row.getAttribute('data-uid') === uid) {\n rowEle = row;\n break;\n }\n }\n return rowEle;\n };\n /**\n * Gets the hidden columns from the Grid.\n *\n * @returns {Column[]} Returns the Column\n */\n Grid.prototype.getHiddenColumns = function () {\n var cols = [];\n for (var _i = 0, _a = this.columnModel; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.visible === false) {\n cols.push(col);\n }\n }\n return cols;\n };\n /**\n * Calculates the page size by parent element height\n *\n * @param {number | string } containerHeight - specifies the container height\n * @returns {number} returns the page size\n */\n Grid.prototype.calculatePageSizeByParentHeight = function (containerHeight) {\n if (this.allowPaging) {\n if ((this.allowTextWrap && this.textWrapSettings.wrapMode === 'Header') || (!this.allowTextWrap)) {\n var pagesize = 0;\n if (containerHeight.indexOf('%') !== -1) {\n containerHeight = parseInt(containerHeight, 10) / 100 * this.element.clientHeight;\n }\n var nonContentHeight = this.getNoncontentHeight() + this.getRowHeight();\n if (containerHeight > nonContentHeight) {\n var contentHeight = 0;\n contentHeight = containerHeight - this.getNoncontentHeight();\n pagesize = (contentHeight / this.getRowHeight());\n }\n if (pagesize > 0) {\n return Math.floor(pagesize);\n }\n }\n }\n return 0;\n };\n Grid.prototype.getNoncontentHeight = function () {\n var height = 0;\n if (!isNullOrUndefined(this.getHeaderContent().clientHeight)) {\n height += this.getHeaderContent().clientHeight;\n }\n if (this.toolbar && !isNullOrUndefined(this.element.querySelector('.e-toolbar').clientHeight)) {\n height += this.element.querySelector('.e-toolbar').clientHeight;\n }\n if (this.allowPaging && !isNullOrUndefined(this.element.querySelector('.e-gridpager').clientHeight)) {\n height += this.element.querySelector('.e-gridpager').clientHeight;\n }\n if (this.showColumnChooser && !isNullOrUndefined(this.element.querySelector('.e-columnheader').clientHeight)) {\n height += this.element.querySelector('.e-columnheader').clientHeight;\n }\n if (this.allowGrouping && this.groupSettings.showDropArea && !isNullOrUndefined(this.element.querySelector('.e-groupdroparea').clientHeight)) {\n height += this.element.querySelector('.e-groupdroparea').clientHeight;\n }\n if (this.aggregates.length > 0 && !isNullOrUndefined(this.element.querySelector('.e-summaryrow').clientHeight)) {\n for (var i = 0; i < this.element.getElementsByClassName('e-summaryrow').length; i++) {\n height += this.element.getElementsByClassName('e-summaryrow')[parseInt(i.toString(), 10)].clientHeight;\n }\n }\n return height;\n };\n /**\n *To perform aggregate operation on a column.\n *\n * @param {AggregateColumnModel} summaryCol - Pass Aggregate Column details.\n * @param {Object} summaryData - Pass JSON Array for which its field values to be calculated.\n *\n * @returns {number} returns the summary values\n */\n Grid.prototype.getSummaryValues = function (summaryCol, summaryData) {\n return DataUtil.aggregates[summaryCol.type.toLowerCase()](summaryData, summaryCol.field);\n };\n /**\n * Sends a Post request to export Grid to Excel file in server side.\n *\n * @param {string} url - Pass Url for server side excel export action.\n *\n * @returns {void}\n */\n Grid.prototype.serverExcelExport = function (url) {\n this.isExcel = true;\n this.exportGrid(url);\n };\n /**\n * Sends a Post request to export Grid to Pdf file in server side.\n *\n * @param {string} url - Pass Url for server side pdf export action.\n *\n * @returns {void}\n */\n Grid.prototype.serverPdfExport = function (url) {\n this.isExcel = false;\n this.exportGrid(url);\n };\n /**\n * Sends a Post request to export Grid to CSV file in server side.\n *\n * @param {string} url - Pass Url for server side pdf export action.\n *\n * @returns {void}\n */\n Grid.prototype.serverCsvExport = function (url) {\n this.isExcel = true;\n this.exportGrid(url);\n };\n /**\n * @param {string} url - Defines exporting url\n * @returns {void}\n * @hidden\n */\n Grid.prototype.exportGrid = function (url) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var grid = this;\n var query = grid.getDataModule().generateQuery(true);\n var state = new UrlAdaptor().processQuery(new DataManager({ url: '' }), query);\n var queries = JSON.parse(state.data);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var gridModel = JSON.parse(this.addOnPersist(['allowGrouping', 'allowPaging', 'pageSettings', 'sortSettings', 'allowPdfExport', 'allowExcelExport', 'aggregates',\n 'filterSettings', 'groupSettings', 'columns', 'locale', 'searchSettings']));\n var include = ['field', 'headerText', 'type', 'format', 'visible', 'foreignKeyValue', 'foreignKeyField',\n 'template', 'index', 'width', 'textAlign', 'headerTextAlign', 'columns'];\n gridModel.filterSettings.columns = queries.where;\n gridModel.searchSettings.fields = queries.search && queries.search[0]['fields'] || [];\n gridModel.sortSettings.columns = queries.sorted;\n gridModel.columns = this.setHeaderText(gridModel.columns, include);\n var form = this.createElement('form', { id: 'ExportForm', styles: 'display:none;' });\n var gridInput = this.createElement('input', { id: 'gridInput', attrs: { name: 'gridModel' } });\n gridInput.value = JSON.stringify(gridModel);\n form.method = 'POST';\n form.action = url;\n form.appendChild(gridInput);\n document.body.appendChild(form);\n form.submit();\n form.remove();\n };\n /**\n * @param {Column[]} columns - Defines array of columns\n * @param {string[]} include - Defines array of sting\n * @returns {Column[]} returns array of columns\n * @hidden\n */\n Grid.prototype.setHeaderText = function (columns, include) {\n for (var i = 0; i < columns.length; i++) {\n var column = this.getColumnByUid(columns[parseInt(i.toString(), 10)].uid);\n columns[parseInt(i.toString(), 10)].headerText = column.headerText;\n if (!isNullOrUndefined(column.template)) {\n columns[parseInt(i.toString(), 10)].template = 'true';\n }\n if (columns[parseInt(i.toString(), 10)].format) {\n columns[parseInt(i.toString(), 10)].format = getNumberFormat(this.getFormat(columns[parseInt(i.toString(), 10)].format), columns[parseInt(i.toString(), 10)].type, this.isExcel, defaultCurrencyCode);\n }\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.setHeaderText(columns[parseInt(i.toString(), 10)].columns, include);\n }\n var keys = Object.keys(columns[parseInt(i.toString(), 10)]);\n for (var j = 0; j < keys.length; j++) {\n if (include.indexOf(keys[parseInt(j.toString(), 10)]) < 0) {\n delete columns[parseInt(i.toString(), 10)][keys[parseInt(j.toString(), 10)]];\n }\n }\n }\n return columns;\n };\n Grid.prototype.getFormat = function (format) {\n return typeof (format) === 'object' ? !isNullOrUndefined(format.format) ?\n format.format : format.skeleton : format;\n };\n /**\n * @hidden\n * @returns {boolean} returns the isCollapseStateEnabled\n */\n Grid.prototype.isCollapseStateEnabled = function () {\n var isExpanded = 'isExpanded';\n return this[\"\" + isExpanded] === false;\n };\n /**\n * @param {number} key - Defines the primary key value.\n * @param {Object} rowData - Defines the rowData\n * @returns {void}\n */\n Grid.prototype.updateRowValue = function (key, rowData) {\n var args = {\n requestType: 'save', data: rowData\n };\n this.showSpinner();\n this.notify(events.updateData, args);\n this.refresh();\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.setForeignKeyData = function () {\n this.dataBind();\n var colpending = this.getDataModule().getForeignKeyDataState();\n if (colpending.isPending) {\n this.getDataModule().setForeignKeyDataState({});\n colpending.resolver();\n }\n else {\n this.getDataModule().setForeignKeyDataState({ isDataChanged: false });\n if (this.contentModule || this.headerModule) {\n this.renderModule.render();\n }\n }\n };\n /**\n * @param {string} field - specifies the field\n * @returns {void}\n * @hidden\n */\n Grid.prototype.resetFilterDlgPosition = function (field) {\n var header = this.getColumnHeaderByField(field);\n if (header) {\n var target = header.querySelector('.e-filtermenudiv');\n var filterDlg = this.element.querySelector('.e-filter-popup');\n if (target && filterDlg) {\n var gClient = this.element.getBoundingClientRect();\n var fClient = target.getBoundingClientRect();\n if (filterDlg) {\n if ((filterDlg.offsetWidth + fClient.right) > gClient.right) {\n filterDlg.style.left = ((fClient.right - filterDlg.offsetWidth) - gClient.left).toString() + 'px';\n }\n else {\n filterDlg.style.left = (fClient.right - gClient.left).toString() + 'px';\n }\n }\n }\n }\n };\n /**\n * @param {any} callBack - specifies the callBack method\n * @returns {void}\n * @hidden\n */\n // eslint-disable-next-line\n Grid.prototype.renderTemplates = function (callBack) {\n var isReactChild = this.parentDetails && this.parentDetails.parentInstObj && this.parentDetails.parentInstObj.isReact;\n if (isReactChild && this['portals']) {\n this.parentDetails.parentInstObj['portals'] = this.parentDetails.parentInstObj['portals']\n .concat(this['portals']);\n this.parentDetails.parentInstObj.renderTemplates(callBack);\n this['portals'] = undefined;\n }\n else {\n var portals = 'portals';\n this.notify('reactTemplateRender', this[\"\" + portals]);\n this.renderReactTemplates(callBack);\n }\n };\n /**\n * Apply the changes to the Grid without refreshing the rows.\n *\n * @param {BatchChanges} changes - Defines changes to be updated.\n * @returns {void}\n */\n Grid.prototype.batchUpdate = function (changes) {\n this.processRowChanges(changes);\n };\n /**\n * Apply the changes to the Grid in one batch after 50ms without refreshing the rows.\n *\n * @param {BatchChanges} changes - Defines changes to be updated.\n * @returns {void}\n */\n Grid.prototype.batchAsyncUpdate = function (changes) {\n this.processBulkRowChanges(changes);\n };\n Grid.prototype.processBulkRowChanges = function (changes) {\n var _this_1 = this;\n if (!this.dataToBeUpdated) {\n this.dataToBeUpdated = Object.assign({ addedRecords: [], changedRecords: [], deletedRecords: [] }, changes);\n setTimeout(function () {\n _this_1.processRowChanges(_this_1.dataToBeUpdated);\n _this_1.dataToBeUpdated = null;\n }, this.asyncTimeOut);\n }\n else {\n var loopstring = [literals.addedRecords, literals.changedRecords, literals.deletedRecords];\n var keyField = this.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < loopstring.length; i++) {\n if (changes[loopstring[parseInt(i.toString(), 10)]]) {\n compareChanges(this, changes, loopstring[parseInt(i.toString(), 10)], keyField);\n }\n }\n }\n };\n Grid.prototype.processRowChanges = function (changes) {\n var _this_1 = this;\n var keyField = this.getPrimaryKeyFieldNames()[0];\n changes = Object.assign({ addedRecords: [], changedRecords: [], deletedRecords: [] }, changes);\n var promise = this.getDataModule().saveChanges(changes, keyField, {}, this.getDataModule().generateQuery().requiresCount());\n if (this.getDataModule().isRemote()) {\n promise.then(function () {\n _this_1.setNewData();\n });\n }\n else {\n this.setNewData();\n }\n };\n Grid.prototype.setNewData = function () {\n var _this_1 = this;\n var oldValues = JSON.parse(JSON.stringify(this.getCurrentViewRecords()));\n var getData = this.getDataModule().getData({}, this.getDataModule().generateQuery().requiresCount());\n getData.then(function (e) {\n _this_1.bulkRefresh(e.result, oldValues, e.count);\n });\n };\n Grid.prototype.deleteRowElement = function (row) {\n var tr = this.getRowElementByUID(row.uid);\n remove(tr);\n };\n Grid.prototype.bulkRefresh = function (result, oldValues, count) {\n var _this_1 = this;\n var rowObj = this.getRowsObject();\n var keyField = this.getPrimaryKeyFieldNames()[0];\n var _loop_5 = function (i) {\n if (!result.filter(function (e) { return e[\"\" + keyField] === rowObj[parseInt(i.toString(), 10)].data[\"\" + keyField]; }).length) {\n this_5.deleteRowElement(rowObj[parseInt(i.toString(), 10)]);\n rowObj.splice(i, 1);\n i--;\n }\n out_i_1 = i;\n };\n var this_5 = this, out_i_1;\n for (var i = 0; i < rowObj.length; i++) {\n _loop_5(i);\n i = out_i_1;\n }\n var _loop_6 = function (i) {\n var isRowExist;\n oldValues.filter(function (e) {\n if (e[\"\" + keyField] === result[parseInt(i.toString(), 10)][\"\" + keyField]) {\n if (e !== result[parseInt(i.toString(), 10)]) {\n _this_1.setRowData(result[parseInt(i.toString(), 10)][\"\" + keyField], result[parseInt(i.toString(), 10)]);\n }\n isRowExist = true;\n }\n });\n if (!isRowExist) {\n this_6.renderRowElement(result[parseInt(i.toString(), 10)], i);\n }\n };\n var this_6 = this;\n for (var i = 0; i < result.length; i++) {\n _loop_6(i);\n }\n this.currentViewData = result;\n var rows = [].slice.call(this.getContentTable().getElementsByClassName(literals.row));\n resetRowIndex(this, this.getRowsObject(), rows);\n setRowElements(this);\n if (this.allowPaging) {\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: { totalRecordsCount: count } });\n }\n };\n Grid.prototype.renderRowElement = function (data, index) {\n var row = new RowRenderer(this.serviceLocator, null, this);\n var model = new RowModelGenerator(this);\n var modelData = model.generateRows([data]);\n var tr = row.render(modelData[0], this.getColumns());\n this.addRowObject(modelData[0], index);\n var tbody = this.getContentTable().querySelector(literals.tbody);\n if (tbody.querySelector('.e-emptyrow')) {\n var emptyRow = tbody.querySelector('.e-emptyrow');\n emptyRow.parentNode.removeChild(emptyRow);\n if (this.frozenRows && this.element.querySelector('.e-frozenrow-empty')) {\n this.element.querySelector('.e-frozenrow-empty').classList.remove('e-frozenrow-empty');\n }\n }\n if (this.frozenRows && index < this.frozenRows) {\n tbody = this.getHeaderContent().querySelector(literals.tbody);\n }\n else {\n tbody = this.getContent().querySelector(literals.tbody);\n }\n tbody = this.getContent().querySelector(literals.tbody);\n tbody.appendChild(tr);\n };\n Grid.prototype.addRowObject = function (row, index) {\n this.getRowsObject().splice(index, 1, row);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.updateVisibleExpandCollapseRows = function () {\n var rows = this.getRowsObject();\n for (var i = 0, len = rows.length; i < len; i++) {\n if ((rows[parseInt(i.toString(), 10)].isDataRow || rows[parseInt(i.toString(), 10)].isAggregateRow)\n && this.getRowElementByUID(rows[parseInt(i.toString(), 10)].uid)\n && this.getRowElementByUID(rows[parseInt(i.toString(), 10)].uid).style.display === 'none') {\n rows[parseInt(i.toString(), 10)].visible = false;\n }\n else {\n rows[parseInt(i.toString(), 10)].visible = true;\n }\n }\n };\n /**\n * Method to sanitize any suspected untrusted strings and scripts before rendering them.\n *\n * @param {string} value - Specifies the html value to sanitize\n * @returns {string} Returns the sanitized html string\n * @hidden\n */\n Grid.prototype.sanitize = function (value) {\n if (this.enableHtmlSanitizer) {\n return SanitizeHtmlHelper.sanitize(value);\n }\n return value;\n };\n /**\n * @param {string | number} height - specifies the height\n * @returns {number | string} - specifies the height number\n * @hidden\n */\n Grid.prototype.getHeight = function (height) {\n if (!Number.isInteger(height) && height.indexOf('%') !== -1) {\n height = parseInt(height, 10) / 100 * this.element.clientHeight;\n }\n else if (!Number.isInteger(height) && this.height !== 'auto') {\n height = parseInt(height, 10);\n }\n else {\n height = this.height;\n }\n return height;\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right content\n\n */\n Grid.prototype.getFrozenRightContent = function () {\n return this.contentModule.getPanel();\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right header\n\n */\n Grid.prototype.getFrozenRightHeader = function () {\n return this.headerModule.getPanel();\n };\n /**\n * @hidden\n * @returns {Element} - returns movable header tbody\n\n */\n Grid.prototype.getMovableHeaderTbody = function () {\n return this.getHeaderContent().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns movable content tbody\n\n */\n Grid.prototype.getMovableContentTbody = function () {\n return this.getContent().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen header tbody\n\n */\n Grid.prototype.getFrozenHeaderTbody = function () {\n return this.getHeaderContent().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen left content tbody\n\n */\n Grid.prototype.getFrozenLeftContentTbody = function () {\n return this.getContent().querySelector(literals.tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right header tbody\n\n */\n Grid.prototype.getFrozenRightHeaderTbody = function () {\n return this.getHeaderContent().querySelector(literals.tbody);\n };\n /**\n * @returns {Element} returns frozen right content tbody\n\n * @hidden\n */\n Grid.prototype.getFrozenRightContentTbody = function () {\n return this.getContent().querySelector(literals.tbody);\n };\n /**\n * @param {boolean} isCustom - Defines custom filter dialog open\n * @returns {void}\n * @hidden\n */\n Grid.prototype.showResponsiveCustomFilter = function (isCustom) {\n if (this.filterModule) {\n this.filterModule.showCustomFilter(isCustom || this.rowRenderingMode === 'Vertical');\n }\n };\n /**\n * @param {boolean} isCustom - Defines custom sort dialog open\n * @returns {void}\n * @hidden\n */\n Grid.prototype.showResponsiveCustomSort = function (isCustom) {\n if (this.sortModule) {\n this.sortModule.showCustomSort(isCustom || this.rowRenderingMode === 'Vertical');\n }\n };\n /**\n * @param {boolean} isCustom - Defines custom column chooser dialog open\n * @returns {void}\n * @hidden\n */\n Grid.prototype.showResponsiveCustomColumnChooser = function (isCustom) {\n if (this.columnChooserModule) {\n this.columnChooserModule.showCustomColumnChooser(isCustom || this.rowRenderingMode === 'Vertical');\n }\n };\n /**\n * To manually show the vertical row mode filter dialog\n *\n * @returns {void}\n */\n Grid.prototype.showAdaptiveFilterDialog = function () {\n if (this.enableAdaptiveUI) {\n this.showResponsiveCustomFilter(true);\n }\n };\n /**\n * To manually show the vertical row sort filter dialog\n *\n * @returns {void}\n */\n Grid.prototype.showAdaptiveSortDialog = function () {\n if (this.enableAdaptiveUI) {\n this.showResponsiveCustomSort(true);\n }\n };\n /**\n * @param {boolean} isColVirtualization - Defines column virtualization\n * @returns {Column[]} returns array of column models\n * @hidden\n */\n Grid.prototype.getCurrentVisibleColumns = function (isColVirtualization) {\n var cols = [];\n var gridCols = isColVirtualization ? this.getColumns() : this.columnModel;\n for (var _i = 0, gridCols_1 = gridCols; _i < gridCols_1.length; _i++) {\n var col = gridCols_1[_i];\n if (col.visible) {\n cols.push(col);\n }\n }\n return cols;\n };\n Grid.prototype.enableInfiniteAggrgate = function () {\n if (this.enableInfiniteScrolling && this.groupSettings.columns.length && !this.groupSettings.disablePageWiseAggregates\n && !this.groupSettings.enableLazyLoading) {\n this.setProperties({ groupSettings: { disablePageWiseAggregates: true } }, true);\n }\n };\n var Grid_1;\n __decorate([\n Property([])\n ], Grid.prototype, \"currentViewData\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"parentDetails\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"showHider\", void 0);\n __decorate([\n Property([])\n ], Grid.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"enableAltRow\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"enableHover\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableAutoFill\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowKeyboard\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableStickyHeader\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowTextWrap\", void 0);\n __decorate([\n Complex({}, TextWrapSettings)\n ], Grid.prototype, \"textWrapSettings\", void 0);\n __decorate([\n Complex({}, ResizeSettings)\n ], Grid.prototype, \"resizeSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowPaging\", void 0);\n __decorate([\n Complex({}, PageSettings)\n ], Grid.prototype, \"pageSettings\", void 0);\n __decorate([\n Complex({}, LoadingIndicator)\n ], Grid.prototype, \"loadingIndicator\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"enableVirtualMaskRow\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableColumnVirtualization\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableInfiniteScrolling\", void 0);\n __decorate([\n Complex({}, SearchSettings)\n ], Grid.prototype, \"searchSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowSorting\", void 0);\n __decorate([\n Property('Ellipsis')\n ], Grid.prototype, \"clipMode\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowMultiSorting\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowExcelExport\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowPdfExport\", void 0);\n __decorate([\n Complex({}, SortSettings)\n ], Grid.prototype, \"sortSettings\", void 0);\n __decorate([\n Complex({}, InfiniteScrollSettings)\n ], Grid.prototype, \"infiniteScrollSettings\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowSelection\", void 0);\n __decorate([\n Property(-1)\n ], Grid.prototype, \"selectedRowIndex\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], Grid.prototype, \"selectionSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property('Horizontal')\n ], Grid.prototype, \"rowRenderingMode\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableAdaptiveUI\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowReordering\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowRowDragAndDrop\", void 0);\n __decorate([\n Complex({}, RowDropSettings)\n ], Grid.prototype, \"rowDropSettings\", void 0);\n __decorate([\n Complex({}, FilterSettings)\n ], Grid.prototype, \"filterSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowGrouping\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableImmutableMode\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"showColumnMenu\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"autoFit\", void 0);\n __decorate([\n Complex({}, GroupSettings)\n ], Grid.prototype, \"groupSettings\", void 0);\n __decorate([\n Complex({}, EditSettings)\n ], Grid.prototype, \"editSettings\", void 0);\n __decorate([\n Collection([], AggregateRow)\n ], Grid.prototype, \"aggregates\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"showColumnChooser\", void 0);\n __decorate([\n Complex({}, ColumnChooserSettings)\n ], Grid.prototype, \"columnChooserSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableHeaderFocus\", void 0);\n __decorate([\n Property('auto')\n ], Grid.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], Grid.prototype, \"width\", void 0);\n __decorate([\n Property('Default')\n ], Grid.prototype, \"gridLines\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"rowTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"emptyRecordTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"detailTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"childGrid\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"queryString\", void 0);\n __decorate([\n Property('AllPages')\n ], Grid.prototype, \"printMode\", void 0);\n __decorate([\n Property('Expanded')\n ], Grid.prototype, \"hierarchyPrintMode\", void 0);\n __decorate([\n Property([])\n ], Grid.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], Grid.prototype, \"rowHeight\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"query\", void 0);\n __decorate([\n Property('USD')\n ], Grid.prototype, \"currencyCode\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"exportGrids\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"toolbar\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"contextMenuItems\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"columnMenuItems\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"toolbarTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"pagerTemplate\", void 0);\n __decorate([\n Property(0)\n ], Grid.prototype, \"frozenRows\", void 0);\n __decorate([\n Property(0)\n ], Grid.prototype, \"frozenColumns\", void 0);\n __decorate([\n Property('')\n ], Grid.prototype, \"cssClass\", void 0);\n __decorate([\n Property('All')\n ], Grid.prototype, \"columnQueryMode\", void 0);\n __decorate([\n Property({})\n ], Grid.prototype, \"currentAction\", void 0);\n __decorate([\n Property('')\n ], Grid.prototype, \"ej2StatePersistenceVersion\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"queryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"headerCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"recordDoubleClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"recordClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDragStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDrag\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDrop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"printComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfAggregateQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelAggregateQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"exportDetailDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"exportDetailTemplate\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeExcelExport\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelExportComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePdfExport\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfExportComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDragStartHelper\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"detailDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDragStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDrag\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDrop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"toolbarClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeOpenColumnChooser\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeOpenAdaptiveDialog\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchAdd\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchDelete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchCancel\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchAdd\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchDelete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchSave\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beginEdit\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"commandClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellEdit\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSave\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSaved\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"keyPressed\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"contextMenuOpen\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"contextMenuClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnMenuOpen\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnMenuClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"checkBoxChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeCopy\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePaste\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeAutoFill\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDataStateChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataStateChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataSourceChanged\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"exportGroupCaption\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"lazyLoadGroupExpand\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"lazyLoadGroupCollapse\", void 0);\n Grid = Grid_1 = __decorate([\n NotifyPropertyChanges\n ], Grid);\n return Grid;\n}(Component));\nexport { Grid };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { Grid } from '@syncfusion/ej2-grids';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * `GridComponent` represents the react Grid.\n * ```tsx\n * \n * ```\n */\nvar GridComponent = /** @class */ (function (_super) {\n __extends(GridComponent, _super);\n function GridComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = true;\n _this.directivekeys = { 'columns': { 'column': { 'stackedColumns': 'stackedColumn' } }, 'aggregates': { 'aggregate': { 'aggregateColumns': 'aggregateColumn' } } };\n _this.statelessTemplateProps = null;\n _this.templateProps = [\"template\", \"headerTemplate\", \"commandsTemplate\", \"filter.itemTemplate\", \"editTemplate\", \"filterTemplate\"];\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n GridComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement('div', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return GridComponent;\n}(Grid));\nexport { GridComponent };\napplyMixins(GridComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { ComplexBase } from '@syncfusion/ej2-react-base';\n/**\n * `ColumnDirective` represent a column of the react Grid.\n * It must be contained in a Grid component(`GridComponent`).\n * ```tsx\n * \n * \n * \n * \n * \n * \n * ```\n */\nvar ColumnDirective = /** @class */ (function (_super) {\n __extends(ColumnDirective, _super);\n function ColumnDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ColumnDirective.moduleName = 'column';\n ColumnDirective.complexTemplate = { 'filter.itemTemplate': 'filter.itemTemplate' };\n return ColumnDirective;\n}(ComplexBase));\nexport { ColumnDirective };\nvar ColumnsDirective = /** @class */ (function (_super) {\n __extends(ColumnsDirective, _super);\n function ColumnsDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ColumnsDirective.propertyName = 'columns';\n ColumnsDirective.moduleName = 'columns';\n return ColumnsDirective;\n}(ComplexBase));\nexport { ColumnsDirective };\n","import React from \"react\";\r\nimport {\r\n ColumnDirective,\r\n ColumnsDirective,\r\n GridComponent,\r\n} from \"@syncfusion/ej2-react-grids\";\r\nimport \"./Component.css\";\r\n\r\nimport axiosClient from \"../Utils/axiosClient.js\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst Datagrid = () => {\r\n const [data, setData] = React.useState([]);\r\n const { t } = useTranslation();\r\n React.useEffect(() => {\r\n const fetchLastMessages = async () => {\r\n try {\r\n const response = await axiosClient.get(\r\n \"/webhook/Conversations/?$inlinecount=allpages&$orderby=timestamp%20desc&$skip=0&$top=5\"\r\n );\r\n\r\n if (response.status === 200) {\r\n const formattedData = response.data;\r\n setData(formattedData);\r\n }\r\n } catch (error) {}\r\n };\r\n fetchLastMessages();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\nexport default Datagrid;\r\n","import React, { useEffect } from \"react\";\r\nimport useTitle from \"../Hooks/useTitle\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst ForbiddenPage = () => {\r\n useTitle(\"Forbidden | Netileti\");\r\n useEffect(() => {\r\n const timer = setTimeout(() => {\r\n window.location.href = \"/login\";\r\n }, 5000);\r\n\r\n return () => clearTimeout(timer);\r\n }, []);\r\n const { t } = useTranslation();\r\n\r\n return (\r\n \r\n

403 - {t(\"Forbidden\")}

\r\n

{t(\"redirected\")}

\r\n \r\n );\r\n};\r\n\r\nexport default ForbiddenPage;\r\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, NotifyPropertyChanges, Property, ChildProperty, Collection, Event, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar PROGRESSVALUE = '--progress-value';\n/**\n * Defines the status of the step.\n */\nexport var StepStatus;\n(function (StepStatus) {\n /**\n * Shows the status of the step is not started.\n */\n StepStatus[\"NotStarted\"] = \"NotStarted\";\n /**\n * Shows the step is in progress.\n */\n StepStatus[\"InProgress\"] = \"InProgress\";\n /**\n * Shows the status of the step is completed.\n */\n StepStatus[\"Completed\"] = \"Completed\";\n})(StepStatus || (StepStatus = {}));\n/**\n * Specifies the steps of the Stepper.\n */\nvar Step = /** @class */ (function (_super) {\n __extends(Step, _super);\n function Step() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Step.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Step.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], Step.prototype, \"iconCss\", void 0);\n __decorate([\n Property(null)\n ], Step.prototype, \"isValid\", void 0);\n __decorate([\n Property('')\n ], Step.prototype, \"label\", void 0);\n __decorate([\n Property(false)\n ], Step.prototype, \"optional\", void 0);\n __decorate([\n Property(StepStatus.NotStarted)\n ], Step.prototype, \"status\", void 0);\n __decorate([\n Property('')\n ], Step.prototype, \"text\", void 0);\n return Step;\n}(ChildProperty));\nexport { Step };\n/**\n * Defines the orientation type of the Stepper.\n */\nexport var StepperOrientation;\n(function (StepperOrientation) {\n /**\n * Steps are displayed horizontally.\n */\n StepperOrientation[\"Horizontal\"] = \"Horizontal\";\n /**\n * Steps are displayed vertically.\n */\n StepperOrientation[\"Vertical\"] = \"Vertical\";\n})(StepperOrientation || (StepperOrientation = {}));\n/**\n * StepperBase component act as base class to the stepper component.\n */\nvar StepperBase = /** @class */ (function (_super) {\n __extends(StepperBase, _super);\n /**\n * * Constructor for Base class\n *\n * @param {StepperBaseModel} options - Specifies the Base model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function StepperBase(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * This method is abstract member of the Component.\n *\n * @private\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n StepperBase.prototype.preRender = function () {\n };\n /**\n * This method is abstract member of the Component.\n *\n * @private\n * @returns {string} - It returns the current module name.\n */\n StepperBase.prototype.getModuleName = function () {\n return 'stepperBase';\n };\n /**\n * This method is abstract member of the Component.\n *\n * @private\n * @returns {string} - It returns the persisted data.\n */\n StepperBase.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * This method is abstract member of the Component.\n *\n * @private\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n StepperBase.prototype.render = function () {\n };\n StepperBase.prototype.updateOrientaion = function (wrapper) {\n if (wrapper.classList.contains('e-horizontal') || wrapper.classList.contains('e-vertical')) {\n wrapper.classList.remove('e-horizontal', 'e-vertical');\n }\n if (!(isNullOrUndefined(this.orientation))) {\n wrapper.classList.add('e-' + this.orientation.toLocaleLowerCase());\n }\n };\n StepperBase.prototype.renderProgressBar = function (wrapper) {\n this.progressStep = this.createElement('div', { className: 'e-stepper-progressbar' });\n this.progressbar = this.createElement('div', { className: 'e-progressbar-value' });\n this.progressStep.appendChild(this.progressbar);\n wrapper.prepend(this.progressStep);\n this.progressbar.style.setProperty(PROGRESSVALUE, (0) + '%');\n var beforeLabel = (wrapper.querySelector('li').querySelector('.e-step-label-container'));\n if (wrapper.classList.contains('e-vertical')) {\n if (wrapper.classList.contains('e-label-bottom') || wrapper.classList.contains('e-label-top')) {\n var stepsContainer = (wrapper.querySelector('.e-stepper-steps'));\n this.progressStep.style.setProperty('--progress-position', (stepsContainer.offsetWidth / 2) + 'px');\n }\n else {\n this.progressStep.style.setProperty('--progress-position', ((this.progressBarPosition / 2) - 1) + 'px');\n }\n }\n if (beforeLabel && (beforeLabel.classList.contains('e-label-before'))) {\n this.progressStep.style.setProperty('--progress-position', (((this.progressBarPosition) - 1)) + 5 + 'px');\n }\n if (wrapper.classList.contains('e-horizontal')) {\n this.setProgressPosition(wrapper);\n }\n };\n StepperBase.prototype.setProgressPosition = function (wrapper, isResize) {\n var stepItemContainer = (wrapper.querySelector('.e-step-container'));\n var stepItemEle = stepItemContainer.firstElementChild;\n if (isResize !== true) {\n var topPos = 0;\n if (wrapper.classList.contains('e-label-before')) {\n topPos = (stepItemContainer.offsetParent.offsetHeight - (stepItemEle.offsetHeight / 2) - 1);\n }\n else {\n topPos = (stepItemEle.offsetHeight / 2);\n }\n this.progressStep.style.setProperty('--progress-top-position', topPos + 'px');\n }\n var lastEle = wrapper.querySelector('.e-stepper-steps').lastChild.firstChild;\n if (wrapper.classList.contains('e-rtl')) {\n var leftPost = ((stepItemEle.offsetLeft + stepItemEle.offsetWidth) - wrapper.querySelector('.e-stepper-steps').offsetWidth);\n this.progressStep.style.setProperty('--progress-left-position', Math.abs(leftPost) + 'px');\n this.progressStep.style.setProperty('--progress-bar-width', Math.abs(lastEle.offsetLeft - stepItemEle.offsetLeft) + 'px');\n }\n else {\n this.progressStep.style.setProperty('--progress-left-position', (stepItemEle.offsetLeft + 1) + 'px');\n this.progressStep.style.setProperty('--progress-bar-width', ((lastEle.offsetWidth + lastEle.offsetLeft - 2) - (stepItemEle.offsetLeft + 2)) + 'px');\n }\n };\n /**\n * This method is abstract member of the Component.\n *\n * @param {StepperBaseModel} newProp - Specifies new properties\n * @param {StepperBaseModel} oldProp - Specifies old properties\n * @private\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-empty-function, @typescript-eslint/no-unused-vars\n StepperBase.prototype.onPropertyChanged = function (newProp, oldProp) {\n };\n __decorate([\n Collection([], Step)\n ], StepperBase.prototype, \"steps\", void 0);\n __decorate([\n Property('')\n ], StepperBase.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], StepperBase.prototype, \"readOnly\", void 0);\n __decorate([\n Property(StepperOrientation.Horizontal)\n ], StepperBase.prototype, \"orientation\", void 0);\n __decorate([\n Event()\n ], StepperBase.prototype, \"created\", void 0);\n StepperBase = __decorate([\n NotifyPropertyChanges\n ], StepperBase);\n return StepperBase;\n}(Component));\nexport { StepperBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n///\nimport { attributes, NotifyPropertyChanges, L10n, append, isNullOrUndefined, getUniqueID, Complex, KeyboardEvents, ChildProperty, Property, EventHandler, Event, addClass, remove, removeClass, initializeCSPTemplate, select, compile } from '@syncfusion/ej2-base';\nimport { StepperBase, StepStatus } from '../stepper-base/stepper-base';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nvar ITEMCONTAINER = 'e-step-container';\nvar ITEMLIST = 'e-stepper-steps';\nvar ICONCSS = 'e-indicator';\nvar TEXTCSS = 'e-step-text-container';\nvar STEPLABEL = 'e-step-label-container';\nvar OPTIONAL = 'e-step-label-optional';\nvar SELECTED = 'e-step-selected';\nvar INPROGRESS = 'e-step-inprogress';\nvar NOTSTARTED = 'e-step-notstarted';\nvar FOCUS = 'e-step-focus';\nvar COMPLETED = 'e-step-completed';\nvar DISABLED = 'e-step-disabled';\nvar READONLY = 'e-stepper-readonly';\nvar PROGRESSVALUE = '--progress-value';\nvar RTL = 'e-rtl';\nvar TEMPLATE = 'e-step-template';\nvar LABELAFTER = 'e-label-after';\nvar LABELBEFORE = 'e-label-before';\nvar VERTICALSTEP = 'e-vertical';\nvar HORIZSTEP = 'e-horizontal';\nvar STEPICON = 'e-step-item';\nvar STEPTEXT = 'e-step-text';\nvar TEXT = 'e-text';\nvar STEPSLABEL = 'e-step-label';\nvar LABEL = 'e-label';\nvar STEPINDICATOR = 'e-step-type-indicator';\nvar LABELINDICATOR = 'e-step-type-label';\nvar INDICATORICON = 'e-step-indicator';\nvar STEPPERTOOLTIP = 'e-stepper-tooltip';\nvar STEPPERIPROGRESSTIP = 'e-step-inprogress-tip';\nvar LINEARSTEP = 'e-linear';\nvar PREVSTEP = 'e-previous';\nvar NEXTSTEP = 'e-next';\n/**\n * Defines the step progress animation of the Stepper.\n */\nvar StepperAnimationSettings = /** @class */ (function (_super) {\n __extends(StepperAnimationSettings, _super);\n function StepperAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], StepperAnimationSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(2000)\n ], StepperAnimationSettings.prototype, \"duration\", void 0);\n __decorate([\n Property(0)\n ], StepperAnimationSettings.prototype, \"delay\", void 0);\n return StepperAnimationSettings;\n}(ChildProperty));\nexport { StepperAnimationSettings };\n/**\n * Defines the label position in the Stepper.\n */\nexport var StepLabelPosition;\n(function (StepLabelPosition) {\n /**\n * Displays the label on top position regardless of the Stepper's orientation.\n */\n StepLabelPosition[\"Top\"] = \"Top\";\n /**\n * Displays the label on bottom position regardless of the Stepper's orientation.\n */\n StepLabelPosition[\"Bottom\"] = \"Bottom\";\n /**\n * Displays the label on left side regardless of the Stepper's orientation.\n */\n StepLabelPosition[\"Start\"] = \"Start\";\n /**\n * Displays the label on right side regardless of the Stepper's orientation.\n */\n StepLabelPosition[\"End\"] = \"End\";\n})(StepLabelPosition || (StepLabelPosition = {}));\n/**\n * Defines whether steps are display with only indicator, only labels or combination of both.\n */\nexport var StepType;\n(function (StepType) {\n /**\n * Steps are shown indicator with label defined.\n */\n StepType[\"Default\"] = \"Default\";\n /**\n * Steps are shown with only label.\n */\n StepType[\"Label\"] = \"Label\";\n /**\n * Steps are shown with only indicator.\n */\n StepType[\"Indicator\"] = \"Indicator\";\n})(StepType || (StepType = {}));\n/**\n * The Stepper component visualizes several steps and indicates the current progress by highlighting already completed steps.\n *\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar Stepper = /** @class */ (function (_super) {\n __extends(Stepper, _super);\n /**\n * * Constructor for creating the Stepper component.\n *\n * @param {StepperModel} options - Specifies the Stepper model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function Stepper(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.stepperItemElements = [];\n return _this;\n }\n Stepper.prototype.preRender = function () {\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n var localeText = { optional: 'Optional' };\n this.l10n = new L10n('stepper', localeText, this.locale);\n this.keyConfigs = {\n downarrow: 'downarrow',\n leftarrow: 'leftarrow',\n rightarrow: 'rightarrow',\n uparrow: 'uparrow',\n space: 'space',\n enter: 'enter',\n home: 'home',\n end: 'end',\n tab: 'tab',\n shiftTab: 'shift+tab',\n escape: 'escape'\n };\n this.tooltipOpen = false;\n };\n /**\n * To get component name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n Stepper.prototype.getModuleName = function () {\n return 'stepper';\n };\n Stepper.prototype.render = function () {\n this.initialize();\n this.navigationHandler(this.activeStep, null, false);\n this.updateStepperStatus(true);\n };\n Stepper.prototype.initialize = function () {\n var _this = this;\n this.element.setAttribute('aria-label', this.element.id);\n this.updatePosition();\n this.stepperItemList = this.createElement('ol', { className: ITEMLIST });\n this.updateOrientaion(this.element);\n this.updateStepType();\n this.element.appendChild(this.stepperItemList);\n if (this.cssClass) {\n addClass([this.element], this.cssClass.trim().split(' '));\n }\n if (this.readOnly) {\n this.element.classList.add(READONLY);\n }\n if (this.enableRtl) {\n this.element.classList.add(RTL);\n }\n this.wireEvents();\n this.updateTemplateFunction();\n this.renderItems();\n if (this.steps.length > 0) {\n if (this.steps.length > 1) {\n if (this.isAngular && this.template) {\n setTimeout(function () {\n _this.renderProgressBar(_this.element);\n });\n }\n else {\n this.renderProgressBar(this.element);\n }\n }\n this.checkValidStep();\n this.updateAnimation();\n this.updateTooltip();\n this.wireKeyboardEvent();\n }\n };\n Stepper.prototype.updatePosition = function () {\n this.progressBarPosition = this.beforeLabelWidth = this.textEleWidth = 0;\n };\n Stepper.prototype.renderDefault = function (index) {\n return (!this.steps[parseInt((index).toString(), 10)].iconCss && !this.steps[parseInt((index).toString(), 10)].text &&\n !this.steps[parseInt((index).toString(), 10)].label) ? true : false;\n };\n Stepper.prototype.updateAnimation = function () {\n var progressEle = this.element.querySelector('.e-progressbar-value');\n if (this.animation.enable) {\n if (this.animation.duration >= 0) {\n if (progressEle) {\n progressEle.style.setProperty('--duration', ((this.animation.duration) + 'ms'));\n }\n }\n if (this.animation.delay >= 0) {\n if (progressEle) {\n progressEle.style.setProperty('--delay', ((this.animation.delay) + 'ms'));\n }\n }\n }\n else {\n if (progressEle) {\n progressEle.style.setProperty('--delay', (0 + 'ms'));\n progressEle.style.setProperty('--duration', (0 + 'ms'));\n }\n }\n };\n Stepper.prototype.updateStepType = function () {\n if (!(isNullOrUndefined(this.stepType)) && (this.stepType.toLowerCase() === 'indicator' || this.stepType.toLowerCase() === 'label' || this.stepType.toLowerCase() === 'default')) {\n if (this.stepType.toLowerCase() !== 'default') {\n this.element.classList.add('e-step-type-' + this.stepType.toLowerCase());\n }\n if (((this.stepType.toLowerCase() === 'indicator' || 'label') && (this.labelContainer))) {\n this.clearLabelPosition();\n }\n }\n };\n Stepper.prototype.wireEvents = function () {\n var _this = this;\n EventHandler.add(window, 'resize', function () {\n if (_this.stepperItemList && _this.progressbar && _this.element.classList.contains(HORIZSTEP)) {\n _this.setProgressPosition(_this.element, true);\n }\n _this.navigateToStep(_this.activeStep, null, null, false);\n }, this);\n EventHandler.add(window, 'click', function () { _this.updateStepFocus(); }, this);\n };\n Stepper.prototype.unWireEvents = function () {\n var _this = this;\n EventHandler.remove(window, 'resize', function () {\n if (_this.stepperItemList && _this.progressbar && _this.element.classList.contains(HORIZSTEP)) {\n _this.setProgressPosition(_this.element, true);\n }\n });\n EventHandler.remove(window, 'click', function () { _this.updateStepFocus(); });\n };\n Stepper.prototype.updateStepFocus = function () {\n if (this.isKeyNavFocus) {\n this.isKeyNavFocus = false;\n var isFocus = this.element.querySelector('.' + FOCUS);\n if (isFocus) {\n isFocus.classList.remove(FOCUS);\n this.element.classList.remove('e-steps-focus');\n }\n }\n };\n Stepper.prototype.updateStepperStatus = function (isInitial) {\n for (var index = 0; index < this.steps.length; index++) {\n var item = this.steps[parseInt(index.toString(), 10)];\n var status_1 = item.status.toLowerCase();\n if (isInitial && this.activeStep === 0 && index === 0) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n item.status = StepStatus.InProgress;\n this.isProtectedOnChange = prevOnChange;\n }\n if (item && status_1 !== 'notstarted' && index === this.activeStep) {\n for (var i = 0; i < this.steps.length; i++) {\n var itemElement = this.stepperItemElements[parseInt(i.toString(), 10)];\n itemElement.classList.remove(SELECTED, INPROGRESS, COMPLETED, NOTSTARTED);\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n if (status_1 === 'completed') {\n this.updateStatusClass(i, index, itemElement);\n }\n else {\n this.updateStatusClass(i, index, itemElement, true);\n }\n this.isProtectedOnChange = prevOnChange;\n }\n }\n else if (item && status_1 !== 'notstarted' && index !== this.activeStep) {\n this.navigationHandler(this.activeStep, null, true);\n }\n }\n };\n Stepper.prototype.updateStatusClass = function (currentStep, index, ele, isInprogress) {\n var stepItem = this.steps[parseInt(currentStep.toString(), 10)];\n if (currentStep < index) {\n ele.classList.add(COMPLETED);\n stepItem.status = StepStatus.Completed;\n }\n else if (currentStep === index) {\n ele.classList.add(isInprogress ? INPROGRESS : COMPLETED, SELECTED);\n }\n else {\n ele.classList.add(NOTSTARTED);\n }\n };\n Stepper.prototype.renderItems = function () {\n var _this = this;\n for (var index = 0; index < this.steps.length; index++) {\n this.stepperItemContainer = this.createElement('li', { className: ITEMCONTAINER });\n this.stepperItemContainer.classList[(index === 0) ? 'add' : 'remove'](SELECTED, INPROGRESS);\n this.stepperItemContainer.classList[(index !== 0) ? 'add' : 'remove'](NOTSTARTED);\n if (this.element.classList.contains(HORIZSTEP)) {\n this.stepperItemContainer.style.setProperty('--max-width', 100 / this.steps.length + '%');\n }\n var stepSpan = this.createElement('span', { className: 'e-step' });\n var item = this.steps[parseInt(index.toString(), 10)];\n if (this.renderDefault(index) && (isNullOrUndefined(this.template) || this.template === '')) {\n var isIndicator = (!this.element.classList.contains('e-step-type-default') && this.stepType.toLowerCase() === 'indicator') ? true : false;\n if (isIndicator) {\n stepSpan.classList.add('e-icons', INDICATORICON);\n }\n if (!isIndicator && item.isValid == null) {\n stepSpan.classList.add('e-step-content');\n stepSpan.innerHTML = (index + 1).toString();\n }\n this.stepperItemContainer.appendChild(stepSpan);\n }\n else if (isNullOrUndefined(this.template) || this.template === '') {\n var isRender = true;\n if ((item.iconCss || (!item.iconCss && item.text && item.label)) && (((!item.text && !item.label) ||\n !this.element.classList.contains(LABELINDICATOR)))) {\n if (item.iconCss) {\n var itemIcon = item.iconCss.trim().split(' ');\n stepSpan.classList.add(ICONCSS);\n for (var i = 0; i < itemIcon.length; i++) {\n stepSpan.classList.add(itemIcon[parseInt(i.toString(), 10)]);\n }\n this.stepperItemContainer.classList.add(STEPICON);\n }\n else if (!item.iconCss && item.text && item.label) {\n stepSpan.classList.add(ICONCSS);\n stepSpan.innerHTML = item.text;\n this.stepperItemContainer.classList.add(STEPICON);\n }\n this.stepperItemContainer.appendChild(stepSpan);\n if ((this.element.classList.contains(HORIZSTEP) && (this.labelPosition.toLowerCase() === 'start' || this.labelPosition.toLowerCase() === 'end') && item.label) ||\n (this.element.classList.contains(VERTICALSTEP) && (this.labelPosition.toLowerCase() === 'top' || this.labelPosition.toLowerCase() === 'bottom') && item.label)) {\n this.element.classList.add('e-label-' + this.labelPosition.toLowerCase());\n var textSpan = this.createElement('span', { className: TEXTCSS + ' ' + TEXT });\n textSpan.innerText = item.label;\n this.stepperItemContainer.appendChild(textSpan);\n this.stepperItemContainer.classList.add(STEPTEXT);\n isRender = false;\n }\n }\n if (item.text && (!item.iconCss || !this.element.classList.contains(STEPINDICATOR)) && isRender &&\n !(item.iconCss && item.label)) {\n if ((!item.iconCss && this.element.classList.contains(STEPINDICATOR)) ||\n ((!item.iconCss || this.element.classList.contains(LABELINDICATOR)) && !item.label)) {\n if (!item.iconCss && !item.label) {\n this.element.classList.add('e-step-type-indicator');\n }\n this.checkValidState(item, stepSpan);\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n item.label = null;\n this.isProtectedOnChange = prevOnChange;\n }\n else {\n var textSpan = this.createElement('span', { className: TEXT });\n if (!item.label) {\n textSpan.innerText = item.text;\n textSpan.classList.add(TEXTCSS);\n this.stepperItemContainer.appendChild(textSpan);\n this.stepperItemContainer.classList.add(STEPTEXT);\n }\n if (item.label && this.element.classList.contains(LABELINDICATOR)) {\n textSpan.innerText = item.label;\n }\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n item.text = item.label ? null : item.text;\n this.isProtectedOnChange = prevOnChange;\n }\n }\n if (item.label && (!item.iconCss || !this.element.classList.contains(STEPINDICATOR)) && isRender) {\n if (!item.iconCss && !item.text && this.element.classList.contains(STEPINDICATOR)) {\n this.checkValidState(item, stepSpan, true);\n }\n else if ((!((this.element.classList.contains(LABELINDICATOR)) && item.text)) ||\n (this.element.classList.contains(LABELINDICATOR) && item.label)) {\n this.labelContainer = this.createElement('span', { className: STEPLABEL });\n var labelSpan = this.createElement('span', { className: LABEL });\n labelSpan.innerText = item.label;\n this.labelContainer.appendChild(labelSpan);\n this.stepperItemContainer.classList.add(STEPSLABEL);\n this.updateLabelPosition();\n if ((!item.iconCss && !item.text && !this.stepperItemContainer.classList.contains(STEPICON)) ||\n this.element.classList.contains(LABELINDICATOR)) {\n this.stepperItemContainer.classList.add('e-step-label-only');\n if (item.isValid !== null) {\n var iconSpan = this.createElement('span', { className: 'e-step-validation-icon e-icons' });\n this.labelContainer.appendChild(iconSpan);\n }\n }\n }\n }\n }\n if (item.optional) {\n var optionalSpan = this.createElement('span', { className: OPTIONAL });\n this.l10n.setLocale(this.locale);\n var optionalContent = this.l10n.getConstant('optional');\n optionalSpan.innerText = optionalContent;\n if (item.label && (this.labelContainer && ((this.element.classList.contains(LABELAFTER) && !this.stepperItemContainer.classList.contains('e-step-label-only'))\n || (this.element.classList.contains(HORIZSTEP) && this.element.classList.contains(LABELBEFORE) && !this.stepperItemContainer.classList.contains('e-step-label-only'))))\n || (this.element.classList.contains(VERTICALSTEP) && this.element.classList.contains(LABELBEFORE))) {\n this.labelContainer.appendChild(optionalSpan);\n }\n else {\n this.stepperItemContainer.appendChild(optionalSpan);\n }\n if (item.isValid !== null) {\n this.stepperItemContainer.classList.add(item.isValid ? 'e-step-valid' : 'e-step-error');\n }\n }\n if (item.cssClass) {\n addClass([this.stepperItemContainer], item.cssClass.trim().split(' '));\n }\n if (item.disabled) {\n this.stepperItemContainer.classList[item.disabled ? 'add' : 'remove'](DISABLED);\n attributes(this.stepperItemContainer, { 'tabindex': '-1', 'aria-disabled': 'true' });\n }\n if (item.isValid !== null) {\n if (item.isValid) {\n this.stepperItemContainer.classList.add('e-step-valid');\n }\n else {\n this.stepperItemContainer.classList.add('e-step-error');\n }\n }\n this.renderItemContent(index, false);\n if (this.stepperItemContainer.classList.contains(INPROGRESS)) {\n attributes(this.stepperItemContainer, { 'tabindex': '0', 'aria-current': 'true' });\n }\n else {\n attributes(this.stepperItemContainer, { 'tabindex': '-1' });\n }\n this.wireItemsEvents(this.stepperItemContainer, index);\n this.stepperItemElements.push(this.stepperItemContainer);\n var eventArgs = { element: this.stepperItemContainer, index: index };\n this.trigger('beforeStepRender', eventArgs, function (args) {\n _this.stepperItemList.appendChild(args.element);\n });\n if (this.isAngular && this.template) {\n setTimeout(function () {\n _this.calculateProgressBarPosition();\n });\n }\n else {\n this.calculateProgressBarPosition();\n }\n }\n if (this.element.classList.contains(VERTICALSTEP)) {\n if (this.element.classList.contains(LABELBEFORE)) {\n var listItems = this.stepperItemList.querySelectorAll('.' + LABEL);\n for (var i = 0; i < listItems.length; i++) {\n var labelEle = listItems[parseInt((i).toString(), 10)];\n labelEle.style.setProperty('--label-width', (this.beforeLabelWidth) + 5 + 'px');\n }\n }\n }\n };\n Stepper.prototype.calculateProgressBarPosition = function () {\n var isBeforeLabel = (this.element.classList.contains(LABELBEFORE)) ? true : false;\n var isStepVertical = (this.element.classList.contains(VERTICALSTEP)) ? true : false;\n if (isStepVertical) {\n var iconOnly = (this.stepperItemContainer.classList.contains(STEPICON) &&\n !this.stepperItemContainer.classList.contains(STEPTEXT) &&\n !this.stepperItemContainer.classList.contains(STEPSLABEL)) ? true : false;\n var textEle = (this.stepperItemContainer.querySelector('.' + TEXTCSS));\n if (textEle) {\n this.textEleWidth = this.textEleWidth < textEle.offsetWidth ? textEle.offsetWidth : this.textEleWidth;\n }\n if (isBeforeLabel) {\n var itemWidth = void 0;\n var labelWidth = this.stepperItemContainer.querySelector('.' + LABEL).offsetWidth + 15;\n if (this.beforeLabelWidth < labelWidth) {\n this.beforeLabelWidth = labelWidth;\n }\n if (this.element.querySelector('ol').lastChild.querySelector('.' + ICONCSS)) {\n itemWidth = (this.beforeLabelWidth + (this.stepperItemContainer.querySelector('.' + ICONCSS).offsetWidth / 2));\n }\n else if (this.stepperItemContainer.querySelector('.' + TEXTCSS)) {\n itemWidth = (this.beforeLabelWidth + (this.stepperItemContainer.querySelector('.' + TEXTCSS).offsetWidth / 2));\n }\n if (this.progressBarPosition < itemWidth) {\n this.progressBarPosition = itemWidth;\n }\n }\n else if (this.progressBarPosition < (iconOnly ? this.stepperItemContainer.offsetWidth : this.element.querySelector('ol').lastChild.firstChild.offsetWidth)) {\n this.progressBarPosition = iconOnly ? this.stepperItemContainer.offsetWidth : this.element.querySelector('ol').lastChild.firstChild.offsetWidth;\n }\n }\n };\n Stepper.prototype.checkValidState = function (item, stepSpan, isLabel) {\n if (item.isValid == null) {\n stepSpan.classList.add('e-step-content');\n if (isLabel) {\n stepSpan.innerHTML = item.label;\n }\n else {\n stepSpan.innerHTML = item.label ? item.label : item.text;\n }\n this.stepperItemContainer.appendChild(stepSpan);\n }\n else {\n stepSpan.classList.add(ICONCSS);\n this.stepperItemContainer.appendChild(stepSpan);\n this.stepperItemContainer.classList.add(STEPICON);\n }\n };\n Stepper.prototype.updateCurrentLabel = function () {\n var currentLabelPos;\n if (this.element.classList.contains(HORIZSTEP)) {\n currentLabelPos = this.labelPosition.toLowerCase() === 'top' ? 'before' : this.labelPosition.toLowerCase() === 'bottom' ? 'after' : this.labelPosition.toLowerCase();\n }\n else {\n currentLabelPos = this.labelPosition.toLowerCase() === 'start' ? 'before' : this.labelPosition.toLowerCase() === 'end' ? 'after' : this.labelPosition.toLowerCase();\n }\n return currentLabelPos;\n };\n Stepper.prototype.updateLabelPosition = function () {\n this.clearLabelPosition();\n this.labelContainer.classList.add('e-label-' + this.updateCurrentLabel());\n if (this.labelPosition.toLowerCase() === 'start' && this.orientation.toLowerCase() === 'vertical') {\n if (this.stepperItemContainer.firstChild) {\n this.stepperItemContainer.firstChild.before(this.labelContainer);\n }\n else {\n this.stepperItemContainer.appendChild(this.labelContainer);\n }\n }\n else {\n this.stepperItemContainer.appendChild(this.labelContainer);\n }\n this.element.classList.add('e-label-' + this.updateCurrentLabel());\n };\n Stepper.prototype.clearLabelPosition = function () {\n var removeCss = this.labelContainer.classList.value.match(/(e-label-[after|before]+)/g);\n if (removeCss) {\n removeClass([this.labelContainer], removeCss);\n removeClass([this.element], removeCss);\n }\n };\n Stepper.prototype.checkValidStep = function () {\n for (var index = 0; index < this.steps.length; index++) {\n var item = this.steps[parseInt(index.toString(), 10)];\n var itemElement = this.stepperItemElements[parseInt(index.toString(), 10)];\n if (item.isValid !== null) {\n var indicatorEle = void 0;\n var iconEle = void 0;\n if (this.element.classList.contains(STEPINDICATOR) && !item.iconCss) {\n indicatorEle = itemElement.querySelector('.' + ICONCSS);\n }\n else {\n iconEle = itemElement.querySelector('.' + ICONCSS);\n }\n if (!indicatorEle && this.element.classList.contains(STEPINDICATOR) && this.renderDefault(index)) {\n indicatorEle = itemElement.querySelector('.' + INDICATORICON);\n }\n var textLabelIcon = itemElement.querySelector('.e-step-validation-icon');\n var itemIcon = item.iconCss.trim().split(' ');\n var validStep = itemElement.classList.contains('e-step-valid');\n if (indicatorEle) {\n indicatorEle.classList.remove(INDICATORICON);\n if (indicatorEle.innerHTML !== '') {\n indicatorEle.innerHTML = '';\n }\n indicatorEle.classList.add('e-icons', validStep ? 'e-check' : 'e-circle-info', ICONCSS);\n }\n if (this.renderDefault(index) && !this.element.classList.contains(STEPINDICATOR)) {\n var stepSpan = itemElement.querySelector('.e-step');\n stepSpan.classList.add('e-icons', validStep ? 'e-check' : 'e-circle-info', ICONCSS);\n }\n if (iconEle) {\n if (iconEle.innerHTML !== '') {\n iconEle.innerHTML = '';\n }\n else if (itemIcon.length > 0) {\n for (var i = 0; i < itemIcon.length; i++) {\n iconEle.classList.remove(itemIcon[parseInt(i.toString(), 10)]);\n }\n }\n iconEle.classList.add('e-icons', validStep ? 'e-check' : 'e-circle-info');\n }\n if (textLabelIcon) {\n textLabelIcon.classList.add(validStep ? 'e-circle-check' : 'e-circle-info');\n if (this.element.classList.contains(VERTICALSTEP)) {\n var labelEle = itemElement.querySelector('.' + LABEL);\n var textEle = itemElement.querySelector('.' + TEXT);\n var itemWidth = textEle ? textEle.offsetWidth + textEle.getBoundingClientRect().left :\n labelEle.offsetWidth + labelEle.getBoundingClientRect().left;\n var validationIcon = itemElement.querySelector('.e-step-validation-icon');\n validationIcon.style.setProperty('--icon-position', (itemWidth + 20) + 'px');\n }\n }\n }\n }\n };\n Stepper.prototype.updateTooltip = function () {\n if (this.showTooltip) {\n this.tooltipObj = new Tooltip({\n target: '.e-step-container', windowCollision: true,\n opensOn: 'Custom', cssClass: this.cssClass ? (STEPPERTOOLTIP + ' ' + this.cssClass) : STEPPERTOOLTIP,\n position: 'TopCenter'\n });\n this.tooltipObj.appendTo(this.stepperItemList);\n }\n else {\n if (!isNullOrUndefined(this.tooltipObj)) {\n this.tooltipObj.destroy();\n this.tooltipObj = null;\n }\n }\n };\n Stepper.prototype.wireItemsEvents = function (itemElement, index) {\n var _this = this;\n EventHandler.add(itemElement, 'click', function (e) {\n if (_this.linear) {\n var linearModeValue = index - _this.activeStep;\n if (Math.abs(linearModeValue) === 1) {\n _this.stepClickHandler(index, e, itemElement);\n }\n }\n else {\n _this.stepClickHandler(index, e, itemElement);\n }\n }, this);\n EventHandler.add(itemElement, 'mouseover', function () { return _this.openStepperTooltip(index); }, this);\n EventHandler.add(itemElement, 'mouseleave', function () { return _this.closeStepperTooltip(); }, this);\n };\n Stepper.prototype.openStepperTooltip = function (index) {\n var currentStep = this.steps[parseInt(index.toString(), 10)];\n if (this.showTooltip && (currentStep.label || currentStep.text)) {\n if (!this.tooltipOpen) {\n this.updateTooltipContent(index);\n this.tooltipObj.open(this.stepperItemElements[parseInt((index).toString(), 10)]);\n if (this.stepType.toLocaleLowerCase() !== 'label' && ((this.stepType.toLocaleLowerCase() === 'indicator') ||\n (currentStep.label !== '' && currentStep.iconCss !== '') || (currentStep.label === null && currentStep.iconCss === '' && currentStep.text !== ''))) {\n var tooltipPopupClass = currentStep.status.toLowerCase() === 'inprogress' ?\n STEPPERTOOLTIP + \" \" + STEPPERIPROGRESSTIP + \" \" + (this.cssClass ? this.cssClass : '') : STEPPERTOOLTIP + \" \" + (this.cssClass ? this.cssClass : '');\n this.tooltipObj.setProperties({ cssClass: tooltipPopupClass.trim() });\n }\n this.tooltipOpen = true;\n }\n }\n };\n Stepper.prototype.closeStepperTooltip = function () {\n if (this.tooltipOpen) {\n this.tooltipObj.close();\n this.tooltipOpen = false;\n }\n };\n Stepper.prototype.updateTooltipContent = function (index) {\n if (this.showTooltip) {\n if (this.isReact) {\n this.clearTemplate(['stepperTooltipTemplate']);\n }\n var content = void 0;\n var currentStep = this.steps[parseInt(index.toString(), 10)];\n if (this.tooltipTemplate) {\n content = this.createElement('span', { className: 'e-stepper-tooltip-content' });\n var templateFunction = this.getTemplateFunction(this.tooltipTemplate);\n append(templateFunction({ value: currentStep }, this, 'stepperTooltipTemplate', (this.element.id + 'tooltipTemplate'), this.isStringTemplate), content);\n this.tooltipObj.setProperties({ content: content }, true);\n }\n else {\n var content_1 = currentStep.label ? currentStep.label : currentStep.text;\n this.tooltipObj.setProperties({ content: initializeCSPTemplate(function () { return content_1; }) }, true);\n }\n this.renderReactTemplates();\n }\n };\n Stepper.prototype.stepClickHandler = function (index, e, itemElement) {\n var clickEventArgs = {\n element: itemElement, event: e, previousStep: this.activeStep,\n activeStep: index\n };\n this.trigger('stepClick', clickEventArgs);\n this.navigateToStep(index, e, itemElement, true);\n };\n Stepper.prototype.updateTemplateFunction = function () {\n this.templateFunction = this.template ? this.getTemplateFunction(this.template) : null;\n };\n Stepper.prototype.renderItemContent = function (index, isrerender) {\n var listItems = this.stepperItemList.querySelectorAll('li');\n if (isrerender) {\n this.removeItemContent(listItems[parseInt((index).toString(), 10)]);\n }\n if (this.template) {\n if (isrerender) {\n listItems[parseInt((index).toString(), 10)].classList.add(TEMPLATE);\n }\n else {\n this.stepperItemContainer.classList.add(TEMPLATE);\n }\n var item = this.steps[parseInt(index.toString(), 10)];\n append(this.templateFunction({ step: item, currentStep: index }, this, 'stepperTemplate', (this.element.id + '_stepperTemplate'), this.isStringTemplate), isrerender ? listItems[parseInt((index).toString(), 10)] : this.stepperItemContainer);\n }\n this.renderReactTemplates();\n };\n Stepper.prototype.removeItemContent = function (ele) {\n ele.classList.remove(TEMPLATE);\n var firstChild = ele.firstElementChild;\n for (var i = 0; i < ele.childElementCount; i++) {\n firstChild.remove();\n }\n };\n Stepper.prototype.updateContent = function () {\n if (this.isReact) {\n this.clearTemplate(['stepperTemplate']);\n }\n for (var i = 0; i < this.steps.length; i++) {\n this.renderItemContent(i, true);\n }\n };\n /**\n * Gets template content based on the template property value.\n *\n * @param {string | Function} template - Template property value.\n * @returns {Function} - Return template function.\n * @hidden\n */\n Stepper.prototype.getTemplateFunction = function (template) {\n if (typeof template === 'string') {\n var content = '';\n try {\n var tempEle = select(template);\n if (tempEle) {\n //Return innerHTML incase of jsrenderer script else outerHTML\n content = tempEle.tagName === 'SCRIPT' ? tempEle.innerHTML : tempEle.outerHTML;\n }\n else {\n content = template;\n }\n }\n catch (e) {\n content = template;\n }\n return compile(content);\n }\n else {\n /* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n return compile(template);\n }\n };\n Stepper.prototype.navigateToStep = function (index, e, itemElement, isInteracted, isUpdated) {\n var _this = this;\n var eventArgs = {\n element: itemElement, event: e, isInteracted: isInteracted,\n previousStep: this.activeStep, activeStep: index, cancel: false\n };\n if (isUpdated !== false) {\n var previousStep_1 = this.activeStep;\n this.trigger('stepChanging', eventArgs, function (args) {\n if (args.cancel) {\n return;\n }\n _this.navigationHandler(index);\n var eventArgs = {\n element: itemElement, event: e, isInteracted: isInteracted,\n previousStep: previousStep_1, activeStep: _this.activeStep\n };\n _this.trigger('stepChanged', eventArgs);\n });\n }\n else {\n this.navigationHandler(index);\n }\n };\n Stepper.prototype.navigationHandler = function (index, stepStatus, isUpdated) {\n index = (index >= this.steps.length - 1) ? this.steps.length - 1 : index;\n var Itemslength = this.stepperItemElements.length;\n if (index >= 0 && index < Itemslength - 1) {\n index = this.stepperItemElements[parseInt(index.toString(), 10)].classList.contains(DISABLED) ? this.activeStep : index;\n }\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.activeStep = parseInt(index.toString(), 10);\n this.isProtectedOnChange = prevOnChange;\n for (var i = 0; i < this.steps.length; i++) {\n var itemElement = this.stepperItemElements[parseInt(i.toString(), 10)];\n var item = this.steps[parseInt(i.toString(), 10)];\n itemElement.classList.remove(SELECTED, INPROGRESS, COMPLETED, NOTSTARTED);\n if (i === this.activeStep) {\n itemElement.classList.add(SELECTED);\n }\n if (this.activeStep >= 0 && this.progressbar) {\n if (this.element.classList.contains(HORIZSTEP)) {\n if ((this.element.classList.contains(LABELBEFORE) || this.element.classList.contains(LABELAFTER)) &&\n !this.element.classList.contains(STEPINDICATOR) &&\n this.stepperItemElements[parseInt(this.activeStep.toString(), 10)].classList.contains(STEPICON)) {\n var progressPos = this.element.querySelector('.e-stepper-progressbar');\n var selectedEle = this.stepperItemElements[parseInt(this.activeStep.toString(), 10)]\n .firstChild;\n var value = this.activeStep === 0 ? 0 : (selectedEle.offsetLeft - progressPos.offsetLeft +\n (selectedEle.offsetWidth / 2)) / progressPos.offsetWidth * 100;\n if (this.element.classList.contains(RTL)) {\n value = (progressPos.getBoundingClientRect().right - selectedEle.getBoundingClientRect().right +\n (selectedEle.offsetWidth / 2)) / progressPos.offsetWidth * 100;\n this.progressbar.style.setProperty(PROGRESSVALUE, (value) + '%');\n }\n else {\n this.progressbar.style.setProperty(PROGRESSVALUE, (value) + '%');\n }\n }\n else {\n var totalLiWidth = 0;\n var activeLiWidth = 0;\n for (var j = 0; j < this.stepperItemElements.length; j++) {\n totalLiWidth = totalLiWidth + this.stepperItemElements[parseInt(j.toString(), 10)].offsetWidth;\n if (j <= this.activeStep) {\n if (j < this.activeStep) {\n activeLiWidth = activeLiWidth +\n this.stepperItemElements[parseInt(j.toString(), 10)].offsetWidth;\n }\n else if (j === this.activeStep && j !== 0) {\n activeLiWidth = activeLiWidth +\n (this.stepperItemElements[parseInt(j.toString(), 10)].offsetWidth / 2);\n }\n }\n }\n var spaceWidth = (this.stepperItemList.offsetWidth - totalLiWidth) /\n (this.stepperItemElements.length - 1);\n var progressValue = ((activeLiWidth + (spaceWidth * this.activeStep)) /\n this.stepperItemList.offsetWidth) * 100;\n this.progressbar.style.setProperty(PROGRESSVALUE, (progressValue) + '%');\n }\n }\n else {\n this.progressbar.style.setProperty(PROGRESSVALUE, ((100 / (this.steps.length - 1)) * index) + '%');\n }\n }\n else if (this.activeStep < 0 && this.progressbar) {\n this.progressbar.style.setProperty(PROGRESSVALUE, 0 + '%');\n }\n if (i === this.activeStep) {\n itemElement.classList.add(INPROGRESS);\n }\n else if (this.activeStep > 0 && i < this.activeStep) {\n itemElement.classList.add(COMPLETED);\n }\n else {\n itemElement.classList.add(NOTSTARTED);\n }\n if (itemElement.classList.contains(INPROGRESS)) {\n attributes(itemElement, { 'tabindex': '0', 'aria-current': 'true' });\n }\n else {\n attributes(itemElement, { 'tabindex': '-1', 'aria-current': 'false' });\n }\n var prevOnChange_1 = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n if (isUpdated !== false) {\n if (i < this.activeStep || (this.steps.length - 1 === this.activeStep && item.status.toLowerCase() === 'completed')) {\n item.status = StepStatus.Completed;\n }\n else if (i === this.activeStep) {\n item.status = StepStatus.InProgress;\n }\n else if (i > this.activeStep) {\n item.status = StepStatus.NotStarted;\n }\n if (stepStatus && this.activeStep === i) {\n item.status = stepStatus;\n }\n if (item.status.toLowerCase() === 'completed') {\n itemElement.classList.remove(SELECTED, INPROGRESS, NOTSTARTED);\n itemElement.classList.add(COMPLETED);\n }\n if (item.status.toLowerCase() === 'notstarted') {\n itemElement.classList.remove(SELECTED, INPROGRESS, COMPLETED);\n itemElement.classList.add(NOTSTARTED);\n }\n }\n this.isProtectedOnChange = prevOnChange_1;\n if (this.renderDefault(i) && this.element.classList.contains(STEPINDICATOR) && !itemElement.classList.contains('e-step-valid') && !itemElement.classList.contains('e-step-error')) {\n if (itemElement.classList.contains(COMPLETED)) {\n itemElement.firstChild.classList.remove('e-icons', 'e-step-indicator');\n itemElement.firstChild.classList.add(ICONCSS, 'e-icons', 'e-check');\n }\n else if (itemElement.classList.contains(INPROGRESS) || itemElement.classList.contains(NOTSTARTED)) {\n itemElement.firstChild.classList.remove(ICONCSS, 'e-icons', 'e-check');\n itemElement.firstChild.classList.add('e-icons', 'e-step-indicator');\n }\n }\n }\n this.updateStepInteractions();\n };\n Stepper.prototype.updateStepInteractions = function () {\n var _this = this;\n this.element.classList.toggle(LINEARSTEP, this.linear);\n this.stepperItemElements.forEach(function (step, index) {\n var isPreviousStep = (index === _this.activeStep - 1);\n var isNextStep = (index === _this.activeStep + 1);\n step.classList.toggle(PREVSTEP, isPreviousStep);\n step.classList.toggle(NEXTSTEP, isNextStep);\n });\n };\n Stepper.prototype.removeItemElements = function () {\n for (var i = 0; i < this.stepperItemElements.length; i++) {\n remove(this.stepperItemElements[parseInt(i.toString(), 10)]);\n }\n this.stepperItemElements = [];\n };\n /**\n * Move to next step from current step in Stepper.\n *\n * @returns {void}\n */\n Stepper.prototype.nextStep = function () {\n if (this.activeStep !== this.steps.length - 1) {\n this.navigateToStep(this.activeStep + 1, null, null, false);\n }\n };\n /**\n * Move to previous step from current step in Stepper.\n *\n * @returns {void}\n */\n Stepper.prototype.previousStep = function () {\n if (this.activeStep > 0) {\n this.navigateToStep(this.activeStep - 1, null, null, false);\n }\n };\n /**\n * Reset the state of the Stepper and move to the first step.\n *\n * @returns {void}\n */\n Stepper.prototype.reset = function () {\n if (this.activeStep === 0) {\n this.updateStepInteractions();\n }\n else {\n var isDisabled = this.stepperItemElements[0].classList.contains(DISABLED) ? true : false;\n this.navigateToStep(isDisabled ? -1 : 0, null, null, false);\n }\n };\n /**\n * Refreshes the position of the progress bar programmatically when the dimensions of the parent container are changed.\n *\n * @returns {void}\n */\n Stepper.prototype.refreshProgressbar = function () {\n if (this.stepperItemList && this.progressbar) {\n this.setProgressPosition(this.element);\n }\n this.navigateToStep(this.activeStep, null, null, false);\n };\n Stepper.prototype.updateElementClassArray = function () {\n var classArray = [RTL, READONLY, 'e-steps-focus', LABELAFTER, LABELBEFORE, 'e-label-top',\n 'e-label-bottom', 'e-label-start', 'e-label-end', STEPINDICATOR, LABELINDICATOR, VERTICALSTEP, HORIZSTEP, LINEARSTEP];\n removeClass([this.element], classArray);\n };\n /**\n * Destroy the stepper control.\n *\n * @returns {void}\n */\n Stepper.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.unWireEvents();\n // unwires the events and detach the li elements\n this.removeItemElements();\n this.clearTemplate();\n if (this.stepperItemList) {\n remove(this.stepperItemList);\n }\n this.stepperItemList = null;\n if (this.progressStep) {\n remove(this.progressStep);\n }\n this.progressStep = null;\n this.progressbar = null;\n this.progressBarPosition = null;\n this.stepperItemContainer = null;\n this.textContainer = null;\n this.labelContainer = null;\n this.updateElementClassArray();\n this.element.removeAttribute('aria-label');\n if (this.showTooltip) {\n this.tooltipObj.destroy();\n this.tooltipObj = null;\n }\n if (this.keyboardModuleStepper) {\n this.keyboardModuleStepper.destroy();\n }\n this.keyboardModuleStepper = null;\n };\n Stepper.prototype.wireKeyboardEvent = function () {\n this.keyboardModuleStepper = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n Stepper.prototype.keyActionHandler = function (e) {\n if (this.readOnly) {\n return;\n }\n switch (e.action) {\n case 'uparrow':\n case 'downarrow':\n case 'leftarrow':\n case 'rightarrow':\n case 'tab':\n case 'shiftTab':\n this.handleNavigation(this.enableRtl && this.element.classList.contains(HORIZSTEP) ? (e.action === 'leftarrow' || e.action === 'tab' || e.action === 'uparrow') : (e.action === 'rightarrow' || e.action === 'tab' || e.action === 'downarrow'), e);\n break;\n case 'space':\n case 'enter':\n case 'escape':\n this.handleNavigation(null, e);\n break;\n case 'home':\n case 'end':\n this.handleNavigation(null, e, this.enableRtl);\n break;\n }\n };\n Stepper.prototype.handleNavigation = function (isNextStep, e, isRTL) {\n this.isKeyNavFocus = true;\n this.element.classList.add('e-steps-focus');\n var focusedEle = this.element.querySelector('.' + FOCUS);\n if (!focusedEle) {\n focusedEle = this.element.querySelector('.' + SELECTED);\n }\n var stepItems = Array.prototype.slice.call(this.stepperItemList.children);\n var index = stepItems.indexOf(focusedEle);\n if (e.action === 'tab' || e.action === 'shiftTab' || e.action === 'downarrow' || e.action === 'uparrow' || e.action === 'space' || e.action === 'home' || e.action === 'end') {\n if ((e.action === 'tab' && index === stepItems.length - 1) || (e.action === 'shiftTab' && index === 0)) {\n if (focusedEle.classList.contains(FOCUS)) {\n this.updateStepFocus();\n return;\n }\n }\n else {\n e.preventDefault();\n }\n }\n if (e.action === 'escape') {\n stepItems[parseInt(index.toString(), 10)].classList.remove(FOCUS);\n this.element.classList.remove('e-steps-focus');\n }\n if (!(e.action === 'space' || e.action === 'enter')) {\n var prevIndex = index;\n index = isNextStep ? index + 1 : index - 1;\n while ((index >= 0 && index < stepItems.length) && stepItems[parseInt(index.toString(), 10)].classList.contains(DISABLED)) {\n index = isNextStep ? index + 1 : index - 1;\n }\n index = (index < 0) ? 0 : (index > stepItems.length - 1) ? stepItems.length - 1 : index;\n if (stepItems[parseInt(prevIndex.toString(), 10)].classList.contains(FOCUS)) {\n stepItems[parseInt(prevIndex.toString(), 10)].classList.remove(FOCUS);\n }\n if ((e.action === 'home' || e.action === 'end')) {\n if (e.action === 'home') {\n index = isRTL ? stepItems.length - 1 : 0;\n }\n else {\n index = isRTL ? 0 : stepItems.length - 1;\n }\n }\n if (index >= 0 && index < stepItems.length) {\n stepItems[parseInt(index.toString(), 10)].classList.add(FOCUS);\n }\n }\n else if ((e.action === 'space' || e.action === 'enter')) {\n var isupdateFocus = false;\n if (this.linear) {\n var linearModeValue = this.activeStep - index;\n if (Math.abs(linearModeValue) === 1) {\n this.navigateToStep(index, null, null, true);\n isupdateFocus = true;\n }\n }\n else {\n this.navigateToStep(index, null, null, true);\n isupdateFocus = true;\n }\n if (isupdateFocus) {\n this.updateStepFocus();\n this.stepperItemElements[index].focus();\n }\n }\n };\n Stepper.prototype.renderStepperItems = function (isUpdate, isStepType) {\n this.updateElementClassArray();\n this.removeItemElements();\n this.element.querySelector('.e-stepper-progressbar').remove();\n if (isUpdate) {\n this.updatePosition();\n }\n if (isStepType) {\n this.updateStepType();\n }\n if (this.readOnly && !this.element.classList.contains(READONLY)) {\n this.element.classList.add(READONLY);\n }\n if (this.enableRtl && !this.element.classList.contains(RTL)) {\n this.element.classList.add(RTL);\n }\n this.updateOrientaion(this.element);\n this.renderItems();\n this.renderProgressBar(this.element);\n this.checkValidStep();\n this.updateAnimation();\n this.navigateToStep(this.activeStep, null, this.stepperItemElements[this.activeStep], true);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {StepperModel} newProp - Specifies new properties\n * @param {StepperModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Stepper.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'steps': {\n if (!(newProp.steps instanceof Array && oldProp.steps instanceof Array)) {\n var stepCounts = Object.keys(newProp.steps);\n for (var i = 0; i < stepCounts.length; i++) {\n var index = parseInt(Object.keys(newProp.steps)[i], 10);\n var changedPropsCount = Object.keys(newProp.steps[index]).length;\n for (var j = 0; j < changedPropsCount; j++) {\n var property = Object.keys(newProp.steps[index])[j];\n if (property === 'status') {\n if (this.activeStep === index) {\n this.navigationHandler(index, newProp.steps[index].status);\n }\n else {\n this.steps[index].status = oldProp.steps[index].status;\n }\n }\n else {\n this.removeItemElements();\n this.renderItems();\n this.updateStepperStatus();\n }\n this.checkValidStep();\n }\n }\n }\n else {\n this.renderStepperItems(true, true);\n }\n break;\n }\n case 'orientation':\n this.updateOrientaion(this.element);\n this.renderStepperItems(true);\n break;\n case 'activeStep':\n this.activeStep = (newProp.activeStep > this.steps.length - 1 || newProp.activeStep < -1) ?\n oldProp.activeStep : this.activeStep;\n if (this.activeStep >= 0 && this.stepperItemElements[parseInt(this.activeStep.toString(), 10)]\n .classList.contains(DISABLED)) {\n this.activeStep = oldProp.activeStep;\n }\n if (this.linear) {\n var linearModeValue = oldProp.activeStep - this.activeStep;\n if (Math.abs(linearModeValue) === 1) {\n this.navigateToStep(this.activeStep, null, null, true);\n }\n }\n else {\n this.navigateToStep(this.activeStep, null, this.stepperItemElements[this.activeStep], true);\n }\n break;\n case 'enableRtl':\n this.element.classList[this.enableRtl ? 'add' : 'remove'](RTL);\n break;\n case 'readOnly':\n this.element.classList[this.readOnly ? 'add' : 'remove'](READONLY);\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.trim().split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.trim().split(' '));\n }\n if (this.tooltipObj) {\n this.tooltipObj.setProperties({ cssClass: this.cssClass ? (STEPPERTOOLTIP + ' ' + this.cssClass) : STEPPERTOOLTIP });\n }\n break;\n case 'labelPosition':\n this.renderStepperItems(true);\n break;\n case 'showTooltip':\n this.updateTooltip();\n break;\n case 'stepType':\n this.renderStepperItems(true, true);\n break;\n case 'template':\n this.updateTemplateFunction();\n this.updateContent();\n break;\n case 'animation':\n this.updateAnimation();\n break;\n case 'linear':\n this.updateStepInteractions();\n break;\n }\n }\n };\n __decorate([\n Property(0)\n ], Stepper.prototype, \"activeStep\", void 0);\n __decorate([\n Complex({}, StepperAnimationSettings)\n ], Stepper.prototype, \"animation\", void 0);\n __decorate([\n Property(false)\n ], Stepper.prototype, \"linear\", void 0);\n __decorate([\n Property(false)\n ], Stepper.prototype, \"showTooltip\", void 0);\n __decorate([\n Property('')\n ], Stepper.prototype, \"template\", void 0);\n __decorate([\n Property('')\n ], Stepper.prototype, \"tooltipTemplate\", void 0);\n __decorate([\n Property(StepLabelPosition.Bottom)\n ], Stepper.prototype, \"labelPosition\", void 0);\n __decorate([\n Property(StepType.Default)\n ], Stepper.prototype, \"stepType\", void 0);\n __decorate([\n Event()\n ], Stepper.prototype, \"stepChanged\", void 0);\n __decorate([\n Event()\n ], Stepper.prototype, \"stepChanging\", void 0);\n __decorate([\n Event()\n ], Stepper.prototype, \"stepClick\", void 0);\n __decorate([\n Event()\n ], Stepper.prototype, \"beforeStepRender\", void 0);\n Stepper = __decorate([\n NotifyPropertyChanges\n ], Stepper);\n return Stepper;\n}(StepperBase));\nexport { Stepper };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { Stepper } from '@syncfusion/ej2-navigations';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * `StepperComponent` represents the react Stepper Component.\n * ```ts\n * \n * ```\n */\nvar StepperComponent = /** @class */ (function (_super) {\n __extends(StepperComponent, _super);\n function StepperComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.directivekeys = { 'steps': 'step' };\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n StepperComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement('nav', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return StepperComponent;\n}(Stepper));\nexport { StepperComponent };\napplyMixins(StepperComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { ComplexBase } from '@syncfusion/ej2-react-base';\n/**\n * `StepDirective` represents a step of the React Stepper.\n * It must be contained in a Stepper component(`StepperComponent`).\n * ```tsx\n * \n * \n * \n * \n * \n * \n * ```\n */\nvar StepDirective = /** @class */ (function (_super) {\n __extends(StepDirective, _super);\n function StepDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n StepDirective.moduleName = 'step';\n return StepDirective;\n}(ComplexBase));\nexport { StepDirective };\nvar StepsDirective = /** @class */ (function (_super) {\n __extends(StepsDirective, _super);\n function StepsDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n StepsDirective.propertyName = 'steps';\n StepsDirective.moduleName = 'steps';\n return StepsDirective;\n}(ComplexBase));\nexport { StepsDirective };\n","import React, { useEffect, useState } from \"react\";\r\nimport {\r\n StepperComponent,\r\n StepsDirective,\r\n StepDirective,\r\n} from \"@syncfusion/ej2-react-navigations\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport axiosClient from \"../Utils/axiosClient\";\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport { isNullOrUndefined } from \"@syncfusion/ej2-base\";\r\n\r\nconst Stepper = () => {\r\n const [currentStep, setCurrentStep] = useState(0);\r\n\r\n const navigate = useNavigate();\r\n const { t } = useTranslation();\r\n\r\n useEffect(() => {\r\n const fetchSteps = async () => {\r\n try {\r\n const response = await axiosClient.get(\"/dashboard/Stepper\");\r\n let steps = 0;\r\n if ((await response.status) === 200) {\r\n const res = response.data;\r\n\r\n if (res.step1) steps = 1;\r\n if (!isNullOrUndefined(res.step2) && steps === 1) steps = 2;\r\n if (res.step3 > 0 && steps === 2) steps = 3;\r\n if (res.step4 > 0 && steps === 3) steps = 4;\r\n if (res.step5 > 0 && steps === 4) steps = 5;\r\n setCurrentStep(steps);\r\n }\r\n } catch (error) {}\r\n };\r\n fetchSteps();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n function getTooltipTemplate({ value }) {\r\n return (\r\n \r\n {value.text}\r\n \r\n );\r\n }\r\n function stepperIcon(val) {\r\n return currentStep > val ? \"e-icons e-check\" : \"e-icons e-circle-info\";\r\n }\r\n return (\r\n <>\r\n {currentStep !== 5 ? (\r\n {\r\n if (args.activeStep === 1 || args.activeStep === 2)\r\n navigate(`/settings`);\r\n else if (args.activeStep === 3) navigate(`/accounts`);\r\n else if (args.activeStep === 4) navigate(`/contacts`);\r\n else if (args.activeStep === 5) navigate(`/sendmessage`);\r\n else {\r\n }\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n <>\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default Stepper;\r\n","import React, { useContext, useEffect, useState } from \"react\";\nimport \"./Dashboard.css\";\nimport useTitle from \"../Hooks/useTitle\";\nimport ToastContext from \"../Context/toastContext\";\nimport axiosClient from \"../Utils/axiosClient\";\nimport { useTranslation } from \"react-i18next\";\nimport PieChart from \"../Components/PieChart\";\nimport LineChart from \"../Components/LineChart\";\nimport { createRoot } from \"react-dom/client\";\nimport GaugeChart from \"../Components/GaugeChart\";\nimport DashboardDatagrid from \"../Components/DashboardDatagrid\";\nimport ForbiddenPage from \"./ForbiddenPage\";\nimport Stepper from \"../Components/Stepper\";\nimport { useNavigate } from \"react-router-dom\";\n\nconst HomePage = () => {\n const [credit, setCredit] = useState([]);\n const [messageStat, setMessageStat] = useState([]);\n const [status, setStatus] = useState(null);\n const [remainPercentage, setRemainPercentage] = useState(null);\n const [usedPercentage, setUsedPercentage] = useState(null);\n\n const navigate = useNavigate();\n const { t } = useTranslation();\n const { showToast } = useContext(ToastContext);\n\n useTitle(`${t(\"Dashboard\")} | Netileti`);\n\n //row-01 credits\n const fetchCredit = async () => {\n try {\n const response = await axiosClient.get(\"/dashboard/credits\");\n\n if (response.status === 200) {\n let remainPercentage =\n (response.data.remain / response.data.total) * 100;\n let usedPercentage = 100 - remainPercentage;\n\n remainPercentage = parseFloat(remainPercentage.toFixed(1));\n usedPercentage = parseFloat(usedPercentage.toFixed(1));\n\n if (isNaN(remainPercentage)) remainPercentage = 0;\n if (isNaN(usedPercentage)) usedPercentage = 0;\n\n const formattedData = {\n total: new Intl.NumberFormat(navigator.language).format(\n response.data.total\n ),\n lastPurchase: new Intl.NumberFormat(navigator.language).format(\n response.data.lastPurchase\n ),\n used: new Intl.NumberFormat(navigator.language).format(\n response.data.used\n ),\n remain: new Intl.NumberFormat(navigator.language).format(\n response.data.remain\n ),\n };\n\n setRemainPercentage(remainPercentage);\n setUsedPercentage(usedPercentage);\n setCredit(formattedData);\n } else {\n showToast(\n `${t(\"Error\")}: ${response.statusText}`,\n \"Http status :\",\n response.status\n );\n setStatus(response.status);\n }\n } catch (error) {\n showToast(\n `${t(\"Failed to fetch data. Please try again.\")}`,\n `${t(\"Error\")}`\n );\n setStatus(error.status);\n }\n };\n\n //row-02 messages\n const fetchMessageStatuses = async () => {\n try {\n const response = await axiosClient.get(\"/dashboard/summary\");\n\n if (response.status === 200) {\n const formattedData = response.data;\n setMessageStat(formattedData);\n } else {\n showToast(\n `${t(\"Error\")}: ${response.statusText}`,\n \"Http status :\",\n response.status\n );\n }\n } catch (error) {\n showToast(\n `${t(\"Failed to fetch data. Please try again.\")}`,\n `${t(\"Error\")}`\n );\n setStatus(error.status);\n }\n };\n\n useEffect(() => {\n fetchCredit();\n fetchMessageStatuses();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {\n //pie chart\n const pieChartContainer = document.getElementById(\"pie-chart-container\");\n if (pieChartContainer) {\n pieChartContainer.innerHTML = \"\";\n const pieChartComponent = document.createElement(\"div\");\n pieChartContainer.appendChild(pieChartComponent);\n const root = createRoot(pieChartComponent);\n root.render();\n }\n\n //line chart\n const lineChartContainer = document.getElementById(\"line-chart-container\");\n if (lineChartContainer) {\n lineChartContainer.innerHTML = \"\";\n const lineChartComponent = document.createElement(\"div\");\n lineChartContainer.appendChild(lineChartComponent);\n const root = createRoot(lineChartComponent);\n root.render();\n }\n\n //gauge chart\n const gaugeChartContainer = document.getElementById(\n \"gauge-chart-container\"\n );\n if (gaugeChartContainer) {\n gaugeChartContainer.innerHTML = \"\";\n const gaugeChartComponent = document.createElement(\"div\");\n gaugeChartContainer.appendChild(gaugeChartComponent);\n const root = createRoot(gaugeChartComponent);\n root.render();\n }\n }, [messageStat]);\n\n const goLogin = () => {\n navigate(\"/login\");\n window.location.reload();\n };\n\n const messageStatStyle = { \"--card-bg-color\": \"#27ade1\" };\n\n let progressBarColor =\n usedPercentage > 85.0 ? \"red\" : usedPercentage >= 50.0 ? \"orange\" : \"green\";\n\n return (\n
\n {status === 401 ? (\n goLogin()\n ) : status === 403 ? (\n \n ) : (\n
\n
\n \n
\n\n {/* Credits Section */}\n
\n

{t(\"Credits\")}

\n
\n
\n
{t(\"Total\")}
\n
\n {credit?.total !== undefined ? credit.total : \" \"}\n
\n
\n
\n
{t(\"LastPurch\")}
\n
\n {credit?.lastPurchase !== undefined\n ? credit.lastPurchase\n : \" \"}\n
\n
\n
\n
{t(\"Used\")}
\n
\n {credit?.used !== undefined ? credit.used : \" \"}\n
\n
\n \n {usedPercentage}%\n
\n
\n
\n
\n
\n
\n
\n
\n
{t(\"Balance\")}
\n
\n {credit?.remain !== undefined ? credit.remain : \" \"}\n
\n
\n \n {remainPercentage}%\n
\n
\n
\n
\n
\n
\n
\n
\n
\n\n {/* Messages Section */}\n
\n

{t(\"Messages\")}

\n
\n
\n
{t(\"Today\")}
\n
\n {messageStat?.daily !== undefined ? messageStat.daily : \" \"}\n
\n
\n
\n
{t(\"Weekly\")}
\n
\n {messageStat?.weekly !== undefined ? messageStat.weekly : \" \"}\n
\n
\n
\n
{t(\"Monthly\")}
\n
\n {messageStat?.monthly !== undefined\n ? messageStat.monthly\n : \" \"}\n
\n
\n
\n
{t(\"Yearly\")}
\n
\n {messageStat?.yearly !== undefined ? messageStat.yearly : \" \"}\n
\n
\n
\n
\n\n {/* Charts Section */}\n
\n

{t(\"Analytics\")}

\n
\n
\n

{t(\"Message Statistics\")}

\n
\n
\n
\n

{t(\"Monthly Messages\")}

\n
\n
\n
\n

{t(\"Service Status\")}

\n
\n
\n
\n
\n\n {/* Recent Messages Section */}\n
\n

{t(\"Last Messages\")}

\n
\n \n
\n
\n \n )}\n \n );\n};\n\nexport default HomePage;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * `ButtonComponent` represents the react Button Component.\n * ```ts\n * \n * ```\n */\nvar ButtonComponent = /** @class */ (function (_super) {\n __extends(ButtonComponent, _super);\n function ButtonComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = true;\n _this.portals = [];\n return _this;\n }\n ButtonComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement('button', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return ButtonComponent;\n}(Button));\nexport { ButtonComponent };\napplyMixins(ButtonComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the React Dialog Component\n * ```html\n * \n * ```\n */\nvar DialogComponent = /** @class */ (function (_super) {\n __extends(DialogComponent, _super);\n function DialogComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.directivekeys = { 'buttons': 'dialogButton' };\n _this.statelessTemplateProps = [\"content\"];\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n DialogComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement('div', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return DialogComponent;\n}(Dialog));\nexport { DialogComponent };\napplyMixins(DialogComponent, [ComponentBase, React.Component]);\n","import React, { useContext, useRef, useState } from \"react\";\nimport \"./Page.css\";\nimport useTitle from \"../Hooks/useTitle\";\nimport { ButtonComponent } from \"@syncfusion/ej2-react-buttons\";\nimport { DialogComponent } from \"@syncfusion/ej2-react-popups\";\nimport { useTranslation } from \"react-i18next\";\nimport ToastContext from \"../Context/toastContext\";\nimport axiosClient from \"../Utils/axiosClient\";\n\nconst LoginPage = () => {\n const [email, setEmail] = useState(\"\");\n const [password, setPassword] = useState(\"\");\n const [isModalOpen, setModalOpen] = useState(false);\n\n const forgotPasswordEmailRef = useRef();\n let dialogRef;\n\n\n const { t } = useTranslation();\n const { showToast } = useContext(ToastContext);\n const baseUrl = process.env.REACT_APP_API_BASE_URL;\n\n useTitle(`${t(\"Login\")} | Netileti`);\n\n const loginClicked = async () => {\n try {\n const response = await fetch(`${baseUrl}/login`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ email, password }),\n });\n\n if (response.ok) {\n const data = await response.json();\n\n localStorage.setItem(\"accessToken\", data.accessToken);\n localStorage.setItem(\"refreshToken\", data.refreshToken);\n localStorage.setItem(\"userEmail\", email);\n const roleResponse = await fetch(\n `${baseUrl}/Users/GetUserRole/${email}`,\n {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n }\n );\n\n if (roleResponse.ok) {\n const data = await roleResponse.text();\n localStorage.setItem(\"userRole\", data);\n }\n\n window.location.href = \"/\";\n } else {\n console.error(\"Login failed\");\n showToast(`${t(\"Login failed\")}`, `${t(\"Error\")}`);\n }\n } catch (error) {\n showToast(`${t(\"Error\")} : ${error.message}`, `${t(\"Error\")}`);\n }\n };\n\n const openForgotPassModal = () => {\n if (forgotPasswordEmailRef.current) {\n forgotPasswordEmailRef.current.value = email;\n }\n setModalOpen(true);\n };\n\n const closeForgotPassModal = () => {\n setModalOpen(false);\n };\n\n const resetPasswordClicked = async () => {\n try {\n console.log(\"reset password clicked\");\n const enteredEmail = forgotPasswordEmailRef.current.value;\n const response = await axiosClient.post(\"/forgotPassword\", {\n email: enteredEmail,\n });\n\n if (response.status === 200) {\n //navigate(`/reset-password/${enteredEmail}`);\n closeForgotPassModal();\n showToast(`${t(\"mailSended\")}`, `${t(\"Success\")}`);\n } else {\n console.error(`${t(\"Password reset failed\")}`);\n showToast(`${t(\"Password reset failed\")}`, `${t(\"Error\")}`);\n }\n } catch (error) {\n showToast(`${t(\"Error\")} : ${error.message}`, `${t(\"Error\")}`);\n console.error(error);\n }\n };\n\n let buttons = [\n {\n buttonModel: {\n content: t(\"Reset Password\"),\n cssClass: \"e-flat\",\n isPrimary: true,\n },\n click: () => {\n resetPasswordClicked();\n },\n },\n {\n buttonModel: {\n content: t(\"Cancel\"),\n cssClass: \"e-flat\",\n },\n click: () => {\n closeForgotPassModal();\n },\n },\n ];\n\n return (\n
\n
\n
\n \"login-xl\"\n \"login-sm\"\n
\n
\n setEmail(e.target.value)}\n />\n setPassword(e.target.value)}\n />\n
\n \n (window.location.href = \"/contactus\")}\n >\n {t(\"message.unsubscribe.ctaText\")}\n \n \n \n \n {t(\"Forgot Password\")}\n \n \n
\n\n \n {t(\"Login\")}\n \n
\n
\n {/* Forgot Pass Modal */}\n \n
\n \n
\n \n
\n );\n};\n\nexport default LoginPage;\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { EventHandler } from '@syncfusion/ej2-base';\nimport { attributes, createElement, classList, append } from '@syncfusion/ej2-base';\n/**\n * `NumericContainer` module handles rendering and refreshing numeric container.\n */\nvar NumericContainer = /** @class */ (function () {\n /**\n * Constructor for numericContainer module\n *\n * @param {Pager} pagerModule - specifies the pagerModule\n * @hidden\n */\n function NumericContainer(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * The function is used to render numericContainer\n *\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.render = function () {\n this.pagerElement = this.pagerModule.element;\n this.renderNumericContainer();\n this.refreshNumericLinks();\n this.wireEvents();\n };\n /**\n * Refreshes the numeric container of Pager.\n *\n * @returns {void}\n */\n NumericContainer.prototype.refresh = function () {\n this.pagerModule.updateTotalPages();\n if (this.links.length) {\n this.updateLinksHtml();\n }\n this.refreshAriaAttrLabel();\n this.updateStyles();\n };\n /**\n * The function is used to refresh refreshNumericLinks\n *\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.refreshNumericLinks = function () {\n var link;\n var pagerObj = this.pagerModule;\n var div = pagerObj.element.querySelector('.e-numericcontainer');\n var frag = document.createDocumentFragment();\n div.innerHTML = '';\n for (var i = 1; i <= pagerObj.pageCount; i++) {\n link = createElement('a', {\n className: 'e-link e-numericitem e-spacing e-pager-default',\n attrs: { tabindex: '-1', 'aria-label': pagerObj.getLocalizedLabel('Page') + i + pagerObj.getLocalizedLabel('Of') +\n pagerObj.totalPages + pagerObj.getLocalizedLabel('Pages'), href: '#' }\n });\n if (pagerObj.currentPage === i) {\n classList(link, ['e-currentitem', 'e-active'], ['e-pager-default']);\n link.setAttribute('aria-current', 'page');\n }\n frag.appendChild(link);\n }\n div.appendChild(frag);\n this.links = [].slice.call(div.childNodes);\n };\n /**\n * Binding events to the element while component creation\n *\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.wireEvents = function () {\n EventHandler.add(this.pagerElement, 'click', this.clickHandler, this);\n EventHandler.add(this.pagerElement, 'auxclick', this.auxiliaryClickHandler, this);\n };\n /**\n * Unbinding events from the element while component destroy\n *\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.unwireEvents = function () {\n EventHandler.remove(this.pagerModule.element, 'click', this.clickHandler);\n EventHandler.remove(this.pagerModule.element, 'auxclick', this.auxiliaryClickHandler);\n };\n /**\n * To destroy the PagerMessage\n *\n * @function destroy\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.destroy = function () {\n this.unwireEvents();\n };\n NumericContainer.prototype.refreshAriaAttrLabel = function () {\n var pagerObj = this.pagerModule;\n var numericContainer = pagerObj.element.querySelector('.e-numericcontainer');\n var links = numericContainer.querySelectorAll('a');\n for (var i = 0; i < links.length; i++) {\n if (links[parseInt(i.toString(), 10)].hasAttribute('aria-label') && links[parseInt(i.toString(), 10)].hasAttribute('index')) {\n links[parseInt(i.toString(), 10)].setAttribute('aria-label', pagerObj.getLocalizedLabel('Page') + links[parseInt(i.toString(), 10)].getAttribute('index')\n + pagerObj.getLocalizedLabel('Of') + pagerObj.totalPages + pagerObj.getLocalizedLabel('Pages'));\n }\n }\n };\n NumericContainer.prototype.renderNumericContainer = function () {\n this.element = createElement('div', {\n className: 'e-pagercontainer', attrs: { 'role': 'navigation' }\n });\n this.renderFirstNPrev(this.element);\n this.renderPrevPagerSet(this.element);\n this.element.appendChild(createElement('div', { className: 'e-numericcontainer' }));\n this.renderNextPagerSet(this.element);\n this.renderNextNLast(this.element);\n this.pagerModule.element.appendChild(this.element);\n };\n NumericContainer.prototype.renderFirstNPrev = function (pagerContainer) {\n this.first = createElement('div', {\n className: 'e-first e-icons e-icon-first',\n attrs: {\n title: this.pagerModule.getLocalizedLabel('firstPageTooltip'),\n tabindex: '-1', role: 'button'\n }\n });\n this.prev = createElement('div', {\n className: 'e-prev e-icons e-icon-prev',\n attrs: {\n title: this.pagerModule.getLocalizedLabel('previousPageTooltip'),\n tabindex: '-1', role: 'button'\n }\n });\n append([this.first, this.prev], pagerContainer);\n };\n NumericContainer.prototype.renderPrevPagerSet = function (pagerContainer) {\n var prevPager = createElement('div');\n this.PP = createElement('a', {\n className: 'e-link e-pp e-spacing', innerHTML: '...',\n attrs: {\n title: this.pagerModule.getLocalizedLabel('previousPagerTooltip'),\n 'aria-label': this.pagerModule.getLocalizedLabel('previousPagerTooltip'),\n tabindex: '-1',\n href: '#'\n }\n });\n prevPager.appendChild(this.PP);\n pagerContainer.appendChild(prevPager);\n };\n NumericContainer.prototype.renderNextPagerSet = function (pagerContainer) {\n var nextPager = createElement('div');\n this.NP = createElement('a', {\n className: 'e-link e-np e-spacing',\n innerHTML: '...', attrs: {\n title: this.pagerModule.getLocalizedLabel('nextPagerTooltip'),\n 'aria-label': this.pagerModule.getLocalizedLabel('nextPagerTooltip'),\n tabindex: '-1',\n href: '#'\n }\n });\n nextPager.appendChild(this.NP);\n pagerContainer.appendChild(nextPager);\n };\n NumericContainer.prototype.renderNextNLast = function (pagerContainer) {\n this.next = createElement('div', {\n className: 'e-next e-icons e-icon-next',\n attrs: {\n title: this.pagerModule.getLocalizedLabel('nextPageTooltip'),\n tabindex: '-1', role: 'button'\n }\n });\n this.last = createElement('div', {\n className: 'e-last e-icons e-icon-last',\n attrs: {\n title: this.pagerModule.getLocalizedLabel('lastPageTooltip'),\n tabindex: '-1', role: 'button'\n }\n });\n append([this.next, this.last], pagerContainer);\n };\n NumericContainer.prototype.clickHandler = function (e) {\n var pagerObj = this.pagerModule;\n this.target = e.target;\n if (this.target.classList.contains('e-numericitem')) {\n e.preventDefault();\n }\n pagerObj.previousPageNo = pagerObj.currentPage;\n if (!this.target.classList.contains('e-disable') && !isNullOrUndefined(this.target.getAttribute('index'))) {\n pagerObj.currentPage = parseInt(this.target.getAttribute('index'), 10);\n this.pagerModule.isInteracted = true;\n pagerObj.dataBind();\n }\n return false;\n };\n NumericContainer.prototype.auxiliaryClickHandler = function (e) {\n this.target = e.target;\n if (this.target.classList.contains('e-numericitem') && (e.button === 1)) {\n e.preventDefault();\n }\n };\n NumericContainer.prototype.updateLinksHtml = function () {\n var pagerObj = this.pagerModule;\n var currentPageSet;\n var isLastSet;\n var pageNo;\n var numItems = this.pagerElement.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n pagerObj.currentPage = pagerObj.totalPages === 1 ? 1 : pagerObj.currentPage;\n if (pagerObj.currentPage > pagerObj.totalPages && pagerObj.totalPages) {\n pagerObj.currentPage = pagerObj.totalPages;\n }\n currentPageSet = parseInt((pagerObj.currentPage / pagerObj.pageCount).toString(), 10);\n if (pagerObj.currentPage % pagerObj.pageCount === 0 && currentPageSet > 0) {\n currentPageSet = currentPageSet - 1;\n }\n for (var i = 0; i < pagerObj.pageCount; i++) {\n if (pagerObj.isPagerResized) {\n var focusedItem = this.pagerElement.querySelector('.e-focus');\n var focusedorTarget = this.target ? this.target : focusedItem ? focusedItem : null;\n var prevFocused = false;\n var nextFocused = false;\n var firstFocused = false;\n var lastFocused = false;\n var numItemFocused = false;\n var npFocused = false;\n var ppFocused = false;\n if (focusedorTarget) {\n var classList_1 = focusedorTarget.classList;\n if (classList_1.contains('e-icons')) {\n switch (true) {\n case classList_1.contains('e-prev'):\n prevFocused = true;\n break;\n case classList_1.contains('e-next'):\n nextFocused = true;\n break;\n case classList_1.contains('e-first'):\n firstFocused = true;\n break;\n case classList_1.contains('e-last'):\n lastFocused = true;\n break;\n }\n }\n else if (classList_1.contains('e-numericitem')) {\n switch (true) {\n case classList_1.contains('e-np'):\n npFocused = true;\n break;\n case classList_1.contains('e-pp'):\n ppFocused = true;\n break;\n default:\n numItemFocused = classList_1.contains('e-numericitem');\n break;\n }\n }\n }\n isLastSet = lastFocused || (this.pagerModule.keyAction === 'End');\n numItems = this.pagerElement.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n var isPageAvailable = Array.from(numItems).some(function (item) { return parseInt(item.getAttribute('index'), 10) === pagerObj.currentPage; });\n //Setting pageNo to render based on key action or click action.\n if (firstFocused || this.pagerModule.keyAction === 'Home') {\n pageNo = 1 + i;\n }\n else if (lastFocused || this.pagerModule.keyAction === 'End') {\n pageNo = (currentPageSet * pagerObj.pageCount) + 1 + i;\n }\n else if (nextFocused || this.pagerModule.keyAction === 'ArrowRight' || prevFocused || this.pagerModule.keyAction === 'ArrowLeft') {\n if (isPageAvailable) {\n pageNo = parseInt(numItems[0].getAttribute('index'), 10) + i;\n }\n else if (prevFocused || this.pagerModule.keyAction === 'ArrowLeft') {\n pageNo = parseInt(this.PP.getAttribute('index'), 10) + i;\n }\n else {\n pageNo = pagerObj.currentPage + i;\n }\n }\n else if (npFocused || ppFocused) {\n pageNo = pagerObj.currentPage + i;\n }\n else if (numItemFocused) {\n pageNo = (parseInt(numItems[0].getAttribute('index'), 10) + i);\n }\n else {\n pageNo = (currentPageSet * pagerObj.pageCount) + 1 + i;\n }\n }\n else {\n pageNo = (currentPageSet * pagerObj.pageCount) + 1 + i;\n }\n if (pageNo <= pagerObj.totalPages) {\n this.links[parseInt(i.toString(), 10)].classList.remove('e-hide');\n this.links[parseInt(i.toString(), 10)].style.display = '';\n this.links[parseInt(i.toString(), 10)].setAttribute('index', pageNo.toString());\n this.links[parseInt(i.toString(), 10)].innerHTML = !pagerObj.customText ? pageNo.toString() : pagerObj.customText + pageNo;\n if (pagerObj.currentPage !== pageNo) {\n this.links[parseInt(i.toString(), 10)].classList.add('e-pager-default');\n }\n else {\n this.links[parseInt(i.toString(), 10)].classList.remove('e-pager-default');\n }\n }\n else {\n this.links[parseInt(i.toString(), 10)].innerHTML = !pagerObj.customText ? pageNo.toString() : pagerObj.customText + pageNo;\n this.links[parseInt(i.toString(), 10)].style.display = 'none';\n }\n classList(this.links[parseInt(i.toString(), 10)], [], ['e-currentitem', 'e-active']);\n this.links[parseInt(i.toString(), 10)].removeAttribute('aria-current');\n }\n attributes(this.first, {\n 'index': '1',\n 'title': this.pagerModule.getLocalizedLabel('firstPageTooltip')\n });\n attributes(this.pagerElement.querySelector('.e-mfirst'), {\n 'index': '1',\n 'title': this.pagerModule.getLocalizedLabel('firstPageTooltip')\n });\n attributes(this.last, {\n 'index': pagerObj.totalPages.toString(),\n 'title': this.pagerModule.getLocalizedLabel('lastPageTooltip')\n });\n attributes(this.pagerElement.querySelector('.e-mlast'), {\n 'index': pagerObj.totalPages.toString(),\n 'title': this.pagerModule.getLocalizedLabel('lastPageTooltip')\n });\n attributes(this.prev, {\n 'index': (pagerObj.currentPage - 1).toString(),\n 'title': this.pagerModule.getLocalizedLabel('previousPageTooltip')\n });\n attributes(this.pagerElement.querySelector('.e-mprev'), {\n 'index': (pagerObj.currentPage - 1).toString(),\n 'title': this.pagerModule.getLocalizedLabel('previousPageTooltip')\n });\n attributes(this.next, {\n 'index': (pagerObj.currentPage + 1).toString(),\n 'title': this.pagerModule.getLocalizedLabel('nextPageTooltip')\n });\n attributes(this.pagerElement.querySelector('.e-mnext'), {\n 'index': (pagerObj.currentPage + 1).toString(),\n 'title': this.pagerModule.getLocalizedLabel('nextPageTooltip')\n });\n var ppIndex = (this.pagerModule.isPagerResized && numItems.length)\n ? isLastSet\n ? parseInt(numItems[0].getAttribute('index'), 10) - pagerObj.avgNumItems\n : parseInt(numItems[0].getAttribute('index'), 10) - numItems.length\n : parseInt(this.links[0].getAttribute('index'), 10) - pagerObj.pageCount;\n attributes(this.PP, {\n 'index': ((ppIndex < 1) ? '1' : ppIndex.toString()),\n 'title': this.pagerModule.getLocalizedLabel('previousPagerTooltip'),\n 'aria-label': this.pagerModule.getLocalizedLabel('previousPagerTooltip')\n });\n var NPIndex = (this.pagerModule.isPagerResized && numItems.length)\n ? parseInt(numItems[numItems.length - 1].getAttribute('index'), 10)\n : parseInt(this.links[this.links.length - 1].getAttribute('index'), 10);\n attributes(this.NP, {\n 'index': (NPIndex + 1).toString(),\n 'title': this.pagerModule.getLocalizedLabel('nextPagerTooltip'),\n 'aria-label': this.pagerModule.getLocalizedLabel('nextPagerTooltip')\n });\n this.target = undefined;\n };\n NumericContainer.prototype.updateStyles = function () {\n var _this = this;\n this.updateFirstNPrevStyles();\n this.updatePrevPagerSetStyles();\n this.updateNextPagerSetStyles();\n this.updateNextNLastStyles();\n if (this.links.length) {\n var currentPageIndex = this.links.findIndex(function (link) { return link.getAttribute('index') === _this.pagerModule.currentPage.toString(); });\n var currentPage = (this.pagerModule.isPagerResized && currentPageIndex !== -1) ? currentPageIndex\n : ((this.pagerModule.currentPage - 1) % this.pagerModule.pageCount);\n classList(this.links[parseInt(currentPage.toString(), 10)], ['e-currentitem', 'e-active'], []);\n this.links[parseInt(currentPage.toString(), 10)].setAttribute('aria-current', 'page');\n }\n };\n NumericContainer.prototype.updateFirstNPrevStyles = function () {\n var firstPage = ['e-firstpage', 'e-pager-default'];\n var firstPageDisabled = ['e-firstpagedisabled', 'e-disable'];\n var prevPage = ['e-prevpage', 'e-pager-default'];\n var prevPageDisabled = ['e-prevpagedisabled', 'e-disable'];\n if (this.pagerModule.totalPages > 0 && this.pagerModule.currentPage > 1) {\n classList(this.prev, prevPage, prevPageDisabled);\n classList(this.first, firstPage, firstPageDisabled);\n classList(this.pagerElement.querySelector('.e-mfirst'), firstPage, firstPageDisabled);\n classList(this.pagerElement.querySelector('.e-mprev'), prevPage, prevPageDisabled);\n }\n else {\n classList(this.prev, prevPageDisabled, prevPage);\n classList(this.first, firstPageDisabled, firstPage);\n classList(this.pagerElement.querySelector('.e-mprev'), prevPageDisabled, prevPage);\n classList(this.pagerElement.querySelector('.e-mfirst'), firstPageDisabled, firstPage);\n }\n };\n NumericContainer.prototype.updatePrevPagerSetStyles = function () {\n if (this.pagerModule.currentPage > this.pagerModule.pageCount || (this.pagerModule.isPagerResized\n && this.links.findIndex(function (link) { return parseInt(link.getAttribute('index'), 10) === 1; }))) {\n classList(this.PP, ['e-numericitem', 'e-pager-default'], ['e-nextprevitemdisabled', 'e-disable']);\n }\n else {\n classList(this.PP, ['e-nextprevitemdisabled', 'e-disable'], ['e-numericitem', 'e-pager-default']);\n }\n };\n NumericContainer.prototype.updateNextPagerSetStyles = function () {\n var pagerObj = this.pagerModule;\n var firstPage = this.links[0].innerHTML.replace(pagerObj.customText, '');\n var numItems = this.pagerElement.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n if (!firstPage.length || !this.links.length || (parseInt(firstPage, 10) + pagerObj.pageCount > pagerObj.totalPages)\n || (pagerObj.isPagerResized && Array.from(numItems).some(function (item) { return parseInt(item.getAttribute('index'), 10) === pagerObj.totalPages; }))) {\n classList(this.NP, ['e-nextprevitemdisabled', 'e-disable'], ['e-numericitem', 'e-pager-default']);\n }\n else {\n classList(this.NP, ['e-numericitem', 'e-pager-default'], ['e-nextprevitemdisabled', 'e-disable']);\n }\n };\n NumericContainer.prototype.updateNextNLastStyles = function () {\n var lastPage = ['e-lastpage', 'e-pager-default'];\n var lastPageDisabled = ['e-lastpagedisabled', 'e-disable'];\n var nextPage = ['e-nextpage', 'e-pager-default'];\n var nextPageDisabled = ['e-nextpagedisabled', 'e-disable'];\n var pagerObj = this.pagerModule;\n if (pagerObj.currentPage === pagerObj.totalPages || pagerObj.totalRecordsCount === 0) {\n classList(this.last, lastPageDisabled, lastPage);\n classList(this.next, nextPageDisabled, nextPage);\n classList(this.pagerElement.querySelector('.e-mlast'), lastPageDisabled, lastPage);\n classList(this.pagerElement.querySelector('.e-mnext'), nextPageDisabled, nextPage);\n }\n else {\n classList(this.last, lastPage, lastPageDisabled);\n classList(this.next, nextPage, nextPageDisabled);\n classList(this.pagerElement.querySelector('.e-mlast'), lastPage, lastPageDisabled);\n classList(this.pagerElement.querySelector('.e-mnext'), nextPage, nextPageDisabled);\n }\n };\n return NumericContainer;\n}());\nexport { NumericContainer };\n","/* eslint-disable valid-jsdoc, jsdoc/require-jsdoc, jsdoc/require-returns, jsdoc/require-param */\nimport { createElement, attributes, addClass, removeClass, detach, classList } from '@syncfusion/ej2-base';\nimport { closest, formatUnit, isNullOrUndefined, remove } from '@syncfusion/ej2-base';\nvar CLASSNAMES = {\n RTL: 'e-rtl',\n DISABLE: 'e-disabled',\n INPUT: 'e-input',\n TEXTAREA: 'e-multi-line-input',\n INPUTGROUP: 'e-input-group',\n FLOATINPUT: 'e-float-input',\n FLOATLINE: 'e-float-line',\n FLOATTEXT: 'e-float-text',\n FLOATTEXTCONTENT: 'e-float-text-content',\n CLEARICON: 'e-clear-icon',\n CLEARICONHIDE: 'e-clear-icon-hide',\n LABELTOP: 'e-label-top',\n LABELBOTTOM: 'e-label-bottom',\n NOFLOATLABEL: 'e-no-float-label',\n INPUTCUSTOMTAG: 'e-input-custom-tag',\n FLOATCUSTOMTAG: 'e-float-custom-tag'\n};\n/**\n * Defines the constant attributes for the input element container.\n */\nexport var containerAttributes = ['title', 'style', 'class'];\n/**\n * Defines the constant focus class for the input element.\n */\nexport var TEXTBOX_FOCUS = 'e-input-focus';\n/**\n * Base for Input creation through util methods.\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var Input;\n(function (Input) {\n var privateInputObj = {\n container: null,\n buttons: [],\n clearButton: null\n };\n var floatType;\n var isBindClearAction = true;\n /**\n * Create a wrapper to input element with multiple span elements and set the basic properties to input based components.\n * ```\n * E.g : Input.createInput({ element: element, floatLabelType : \"Auto\", properties: { placeholder: 'Search' } });\n * ```\n *\n */\n function createInput(args, internalCreateElement) {\n args.element.__eventHandlers = {};\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var inputObject = { container: null, buttons: [], clearButton: null };\n floatType = args.floatLabelType;\n isBindClearAction = args.bindClearAction;\n if (isNullOrUndefined(args.floatLabelType) || args.floatLabelType === 'Never') {\n inputObject.container = createInputContainer(args, CLASSNAMES.INPUTGROUP, CLASSNAMES.INPUTCUSTOMTAG, 'span', makeElement);\n args.element.parentNode.insertBefore(inputObject.container, args.element);\n addClass([args.element], CLASSNAMES.INPUT);\n inputObject.container.appendChild(args.element);\n }\n else {\n createFloatingInput(args, inputObject, makeElement);\n }\n bindInitialEvent(args);\n if (!isNullOrUndefined(args.properties) && !isNullOrUndefined(args.properties.showClearButton) &&\n args.properties.showClearButton) {\n setClearButton(args.properties.showClearButton, args.element, inputObject, true, makeElement);\n inputObject.clearButton.setAttribute('role', 'button');\n if (inputObject.container.classList.contains(CLASSNAMES.FLOATINPUT)) {\n addClass([inputObject.container], CLASSNAMES.INPUTGROUP);\n }\n }\n if (!isNullOrUndefined(args.buttons)) {\n for (var i = 0; i < args.buttons.length; i++) {\n inputObject.buttons.push(appendSpan(args.buttons[i], inputObject.container, makeElement));\n }\n }\n if (!isNullOrUndefined(args.element) && args.element.tagName === 'TEXTAREA') {\n addClass([inputObject.container], CLASSNAMES.TEXTAREA);\n }\n validateInputType(inputObject.container, args.element);\n inputObject = setPropertyValue(args, inputObject);\n createSpanElement(inputObject.container, makeElement);\n privateInputObj = inputObject;\n return inputObject;\n }\n Input.createInput = createInput;\n function bindFocusEventHandler(args) {\n var parent = getParentNode(args.element);\n if (parent.classList.contains('e-input-group') || parent.classList.contains('e-outline') || parent.classList.contains('e-filled')) {\n parent.classList.add('e-input-focus');\n }\n if (args.floatLabelType !== 'Never') {\n setTimeout(function () {\n Input.calculateWidth(args.element, parent);\n }, 80);\n }\n }\n function bindBlurEventHandler(args) {\n var parent = getParentNode(args.element);\n if (parent.classList.contains('e-input-group') || parent.classList.contains('e-outline') || parent.classList.contains('e-filled')) {\n parent.classList.remove('e-input-focus');\n }\n if (args.floatLabelType !== 'Never') {\n setTimeout(function () {\n Input.calculateWidth(args.element, parent);\n }, 80);\n }\n }\n function bindInputEventHandler(args) {\n checkInputValue(args.floatLabelType, args.element);\n }\n function bindInitialEvent(args) {\n checkInputValue(args.floatLabelType, args.element);\n var focusHandler = function () { return bindFocusEventHandler(args); };\n var blurHandler = function () { return bindBlurEventHandler(args); };\n var inputHandler = function () { return bindInputEventHandler(args); };\n args.element.addEventListener('focus', focusHandler);\n args.element.addEventListener('blur', blurHandler);\n args.element.addEventListener('input', inputHandler);\n args.element.__eventHandlers['inputFocusHandler'] = { focusHandler: focusHandler };\n args.element.__eventHandlers['inputBlurHandler'] = { blurHandler: blurHandler };\n args.element.__eventHandlers['inputHandler'] = { inputHandler: inputHandler };\n }\n Input.bindInitialEvent = bindInitialEvent;\n function unbindInitialEvent(args) {\n if (!isNullOrUndefined(args.element)) {\n if (!isNullOrUndefined(args.element.__eventHandlers)) {\n if (!isNullOrUndefined(args.element.__eventHandlers['inputFocusHandler'])\n && !isNullOrUndefined(args.element.__eventHandlers['inputBlurHandler'])\n && !isNullOrUndefined(args.element.__eventHandlers['inputHandler'])) {\n var focusHandler_1 = args.element.__eventHandlers['inputFocusHandler'].focusHandler;\n var blurHandler_1 = args.element.__eventHandlers['inputBlurHandler'].blurHandler;\n var inputHandler_1 = args.element.__eventHandlers['inputHandler'].inputHandler;\n args.element.removeEventListener('focus', focusHandler_1);\n args.element.removeEventListener('blur', blurHandler_1);\n args.element.removeEventListener('input', inputHandler_1);\n // Clean up stored bound functions\n delete args.element.__eventHandlers['inputFocusHandler'];\n delete args.element.__eventHandlers['inputBlurHandler'];\n delete args.element.__eventHandlers['inputHandler'];\n }\n }\n }\n }\n function checkInputValue(floatLabelType, inputElement) {\n var inputValue = inputElement.value;\n var inputParent = inputElement.parentElement;\n var grandParent = inputParent && inputParent.parentElement;\n if (inputValue !== '' && !isNullOrUndefined(inputValue)) {\n if (inputParent && inputParent.classList.contains('e-input-group')) {\n inputParent.classList.add('e-valid-input');\n }\n else if (grandParent && grandParent.classList.contains('e-input-group')) {\n grandParent.classList.add('e-valid-input');\n }\n }\n else if (floatLabelType !== 'Always') {\n if (inputParent && inputParent.classList.contains('e-input-group')) {\n inputParent.classList.remove('e-valid-input');\n }\n else if (grandParent && grandParent.classList.contains('e-input-group')) {\n grandParent.classList.remove('e-valid-input');\n }\n }\n }\n function _focusFn() {\n var label = getParentNode(this).getElementsByClassName('e-float-text')[0];\n if (!isNullOrUndefined(label)) {\n addClass([label], CLASSNAMES.LABELTOP);\n if (label.classList.contains(CLASSNAMES.LABELBOTTOM)) {\n removeClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n }\n function _blurFn() {\n var parent = getParentNode(this);\n if ((parent.getElementsByTagName('textarea')[0]) ? parent.getElementsByTagName('textarea')[0].value === '' :\n parent.getElementsByTagName('input')[0].value === '') {\n var label = parent.getElementsByClassName('e-float-text')[0];\n if (!isNullOrUndefined(label)) {\n if (label.classList.contains(CLASSNAMES.LABELTOP)) {\n removeClass([label], CLASSNAMES.LABELTOP);\n }\n addClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n }\n function wireFloatingEvents(element) {\n element.addEventListener('focus', _focusFn);\n element.addEventListener('blur', _blurFn);\n }\n Input.wireFloatingEvents = wireFloatingEvents;\n function unwireFloatingEvents(element) {\n if (!isNullOrUndefined(element)) {\n element.removeEventListener('focus', _focusFn);\n element.removeEventListener('blur', _blurFn);\n }\n }\n function inputEventHandler(args) {\n validateLabel(args.element, args.floatLabelType);\n }\n function blurEventHandler(args) {\n validateLabel(args.element, args.floatLabelType);\n }\n function createFloatingInput(args, inputObject, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n if (args.floatLabelType === 'Auto') {\n wireFloatingEvents(args.element);\n }\n if (isNullOrUndefined(inputObject.container)) {\n inputObject.container = createInputContainer(args, CLASSNAMES.FLOATINPUT, CLASSNAMES.FLOATCUSTOMTAG, 'div', makeElement);\n inputObject.container.classList.add(CLASSNAMES.INPUTGROUP);\n if (args.element.parentNode) {\n args.element.parentNode.insertBefore(inputObject.container, args.element);\n }\n }\n else {\n if (!isNullOrUndefined(args.customTag)) {\n inputObject.container.classList.add(CLASSNAMES.FLOATCUSTOMTAG);\n }\n inputObject.container.classList.add(CLASSNAMES.FLOATINPUT);\n }\n var floatLinelement = makeElement('span', { className: CLASSNAMES.FLOATLINE });\n var floatLabelElement = makeElement('label', { className: CLASSNAMES.FLOATTEXT });\n if (!isNullOrUndefined(args.element.id) && args.element.id !== '') {\n floatLabelElement.id = 'label_' + args.element.id.replace(/ /g, '_');\n attributes(args.element, { 'aria-labelledby': floatLabelElement.id });\n }\n if (!isNullOrUndefined(args.element.placeholder) && args.element.placeholder !== '') {\n floatLabelElement.innerText = encodePlaceHolder(args.element.placeholder);\n args.element.removeAttribute('placeholder');\n }\n if (!isNullOrUndefined(args.properties) && !isNullOrUndefined(args.properties.placeholder) &&\n args.properties.placeholder !== '') {\n floatLabelElement.innerText = encodePlaceHolder(args.properties.placeholder);\n }\n if (!floatLabelElement.innerText) {\n inputObject.container.classList.add(CLASSNAMES.NOFLOATLABEL);\n }\n if (inputObject.container.classList.contains('e-float-icon-left')) {\n var inputWrap = inputObject.container.querySelector('.e-input-in-wrap');\n inputWrap.appendChild(args.element);\n inputWrap.appendChild(floatLinelement);\n inputWrap.appendChild(floatLabelElement);\n }\n else {\n inputObject.container.appendChild(args.element);\n inputObject.container.appendChild(floatLinelement);\n inputObject.container.appendChild(floatLabelElement);\n }\n updateLabelState(args.element.value, floatLabelElement);\n if (args.floatLabelType === 'Always') {\n if (floatLabelElement.classList.contains(CLASSNAMES.LABELBOTTOM)) {\n removeClass([floatLabelElement], CLASSNAMES.LABELBOTTOM);\n }\n addClass([floatLabelElement], CLASSNAMES.LABELTOP);\n }\n if (args.floatLabelType === 'Auto') {\n var inputFloatHandler = function () { return inputEventHandler(args); };\n var blurFloatHandler = function () { return blurEventHandler(args); };\n // Add event listeners using the defined functions\n args.element.addEventListener('input', inputFloatHandler);\n args.element.addEventListener('blur', blurFloatHandler);\n // Store the event handler functions to remove them later\n args.element.__eventHandlers['floatInputHandler'] = { inputFloatHandler: inputFloatHandler };\n args.element.__eventHandlers['floatBlurHandler'] = { blurFloatHandler: blurFloatHandler };\n }\n else {\n unWireFloatLabelEvents(args);\n }\n if (!isNullOrUndefined(args.element.getAttribute('id'))) {\n floatLabelElement.setAttribute('for', args.element.getAttribute('id'));\n }\n }\n function unWireFloatLabelEvents(args) {\n if (!isNullOrUndefined(args.element) &&\n !isNullOrUndefined(args.element.__eventHandlers)\n && !isNullOrUndefined(args.element.__eventHandlers['floatInputHandler'])\n && !isNullOrUndefined(args.element.__eventHandlers['floatBlurHandler'])) {\n var inputFloatHandler = args.element.__eventHandlers['floatInputHandler'].inputFloatHandler;\n var blurFloatHandler = args.element.__eventHandlers['floatBlurHandler'].blurFloatHandler;\n // Remove the event listeners using the defined functions\n args.element.removeEventListener('input', inputFloatHandler);\n args.element.removeEventListener('blur', blurFloatHandler);\n // Clean up stored event handler functions\n delete args.element.__eventHandlers['floatInputHandler'];\n delete args.element.__eventHandlers['floatBlurHandler'];\n }\n }\n function checkFloatLabelType(type, container) {\n if (type === 'Always' && container.classList.contains('e-outline')) {\n container.classList.add('e-valid-input');\n }\n }\n function setPropertyValue(args, inputObject) {\n if (!isNullOrUndefined(args.properties)) {\n for (var _i = 0, _a = Object.keys(args.properties); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n setCssClass(args.properties.cssClass, [inputObject.container]);\n checkFloatLabelType(args.floatLabelType, inputObject.container);\n break;\n case 'enabled':\n setEnabled(args.properties.enabled, args.element, args.floatLabelType, inputObject.container);\n break;\n case 'enableRtl':\n setEnableRtl(args.properties.enableRtl, [inputObject.container]);\n break;\n case 'placeholder':\n setPlaceholder(args.properties.placeholder, args.element);\n break;\n case 'readonly':\n setReadonly(args.properties.readonly, args.element);\n break;\n }\n }\n }\n return inputObject;\n }\n function updateIconState(value, button, readonly) {\n if (!isNullOrUndefined(button)) {\n if (value && !readonly) {\n removeClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n else {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n }\n }\n function updateLabelState(value, label, element) {\n if (element === void 0) { element = null; }\n if (value) {\n addClass([label], CLASSNAMES.LABELTOP);\n if (label.classList.contains(CLASSNAMES.LABELBOTTOM)) {\n removeClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n else {\n var isNotFocused = element != null ? element !== document.activeElement : true;\n if (isNotFocused) {\n if (label.classList.contains(CLASSNAMES.LABELTOP)) {\n removeClass([label], CLASSNAMES.LABELTOP);\n }\n addClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n }\n function getParentNode(element) {\n var parentNode = isNullOrUndefined(element.parentNode) ? element\n : element.parentNode;\n if (parentNode && parentNode.classList.contains('e-input-in-wrap')) {\n parentNode = parentNode.parentNode;\n }\n return parentNode;\n }\n /**\n * To create clear button.\n */\n function createClearButton(element, inputObject, initial, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var button = makeElement('span', { className: CLASSNAMES.CLEARICON });\n var container = inputObject.container;\n if (!isNullOrUndefined(initial)) {\n container.appendChild(button);\n }\n else {\n var baseElement = inputObject.container.classList.contains(CLASSNAMES.FLOATINPUT) ?\n inputObject.container.querySelector('.' + CLASSNAMES.FLOATTEXT) : element;\n baseElement.insertAdjacentElement('afterend', button);\n }\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n wireClearBtnEvents(element, button, container);\n button.setAttribute('aria-label', 'close');\n return button;\n }\n function clickHandler(event, element, button) {\n if (!(element.classList.contains(CLASSNAMES.DISABLE) || element.readOnly)) {\n event.preventDefault();\n if (element !== document.activeElement) {\n element.focus();\n }\n element.value = '';\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n }\n function inputHandler(element, button) {\n updateIconState(element.value, button);\n }\n function focusHandler(element, button) {\n updateIconState(element.value, button, element.readOnly);\n }\n function blurHandler(element, button) {\n setTimeout(function () {\n if (!isNullOrUndefined(button)) {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n button = !isNullOrUndefined(element) && element.classList.contains('e-combobox') ? null : button;\n }\n }, 200);\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n function wireClearBtnEvents(element, button, container) {\n if (isBindClearAction === undefined || isBindClearAction) {\n var clickHandlerEvent = function (e) { return clickHandler(e, element, button); };\n button.addEventListener('click', clickHandlerEvent);\n element.__eventHandlers['clearClickHandler'] = { clickHandlerEvent: clickHandlerEvent };\n }\n var inputHandlerEvent = function () { return inputHandler(element, button); };\n var focusHandlerEvent = function () { return focusHandler(element, button); };\n var blurHandlerEvent = function () { return blurHandler(element, button); };\n element.addEventListener('input', inputHandlerEvent);\n element.addEventListener('focus', focusHandlerEvent);\n element.addEventListener('blur', blurHandlerEvent);\n // Store the bound functions to remove them later\n element.__eventHandlers['clearInputHandler'] = { inputHandlerEvent: inputHandlerEvent };\n element.__eventHandlers['clearFocusHandler'] = { focusHandlerEvent: focusHandlerEvent };\n element.__eventHandlers['clearBlurHandler'] = { blurHandlerEvent: blurHandlerEvent };\n }\n Input.wireClearBtnEvents = wireClearBtnEvents;\n function unWireClearBtnEvents(element, button) {\n if (!isNullOrUndefined(element) &&\n !isNullOrUndefined(element.__eventHandlers)) {\n if (!isNullOrUndefined(element.__eventHandlers['clearClickHandler'])) {\n var clickHandlerEvent = element.__eventHandlers['clearClickHandler'].clickHandlerEvent;\n if (isBindClearAction === undefined || isBindClearAction) {\n if (!isNullOrUndefined(button)) {\n button.removeEventListener('click', clickHandlerEvent);\n }\n }\n delete element.__eventHandlers['clearClickHandler'];\n }\n if (!isNullOrUndefined(element.__eventHandlers['clearInputHandler'])\n && !isNullOrUndefined(element.__eventHandlers['clearFocusHandler'])\n && !isNullOrUndefined(element.__eventHandlers['clearBlurHandler'])) {\n var inputHandlerEvent = element.__eventHandlers['clearInputHandler'].inputHandlerEvent;\n var focusHandlerEvent = element.__eventHandlers['clearFocusHandler'].focusHandlerEvent;\n var blurHandlerEvent = element.__eventHandlers['clearBlurHandler'].blurHandlerEvent;\n element.removeEventListener('input', inputHandlerEvent);\n element.removeEventListener('focus', focusHandlerEvent);\n element.removeEventListener('blur', blurHandlerEvent);\n // Clean up stored Event functions\n delete element.__eventHandlers['clearInputHandler'];\n delete element.__eventHandlers['clearFocusHandler'];\n delete element.__eventHandlers['clearBlurHandler'];\n }\n }\n }\n function destroy(args, button) {\n if (button === void 0) { button = null; }\n unbindInitialEvent(args);\n if (args.floatLabelType === 'Auto') {\n unWireFloatLabelEvents(args);\n }\n if (args.properties.showClearButton) {\n unWireClearBtnEvents(args.element, button);\n }\n if (!isNullOrUndefined(args.buttons)) {\n _internalRipple(false, null, args.buttons);\n }\n unwireFloatingEvents(args.element);\n if (!isNullOrUndefined(args.element)) {\n delete args.element.__eventHandlers;\n if (args.element.classList.contains(CLASSNAMES.INPUT)) {\n args.element.classList.remove(CLASSNAMES.INPUT);\n }\n }\n privateInputObj = null;\n }\n Input.destroy = destroy;\n function validateLabel(element, floatLabelType) {\n var parent = getParentNode(element);\n if (parent.classList.contains(CLASSNAMES.FLOATINPUT) && floatLabelType === 'Auto') {\n var label = getParentNode(element).getElementsByClassName('e-float-text')[0];\n updateLabelState(element.value, label, element);\n }\n }\n /**\n * To create input box contianer.\n */\n function createInputContainer(args, className, tagClass, tag, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var container;\n if (!isNullOrUndefined(args.customTag)) {\n container = makeElement(args.customTag, { className: className });\n container.classList.add(tagClass);\n }\n else {\n container = makeElement(tag, { className: className });\n }\n container.classList.add('e-control-wrapper');\n return container;\n }\n function encodePlaceHolder(placeholder) {\n var result = '';\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n var spanEle = document.createElement('span');\n spanEle.innerHTML = '';\n var hiddenInput = (spanEle.children[0]);\n result = hiddenInput.placeholder;\n }\n return result;\n }\n /**\n * Sets the value to the input element.\n * ```\n * E.g : Input.setValue('content', element, \"Auto\", true );\n * ```\n *\n * @param {string} value - Specify the value of the input element.\n * @param {HTMLInputElement | HTMLTextAreaElement} element - The element on which the specified value is updated.\n * @param {string} floatLabelType - Specify the float label type of the input element.\n * @param {boolean} clearButton - Boolean value to specify whether the clear icon is enabled / disabled on the input.\n */\n function setValue(value, element, floatLabelType, clearButton) {\n element.value = value;\n if (floatLabelType !== 'Never') {\n calculateWidth(element, element.parentElement);\n }\n if ((!isNullOrUndefined(floatLabelType)) && floatLabelType === 'Auto') {\n validateLabel(element, floatLabelType);\n }\n if (!isNullOrUndefined(clearButton) && clearButton) {\n var parentElement = getParentNode(element);\n if (!isNullOrUndefined(parentElement)) {\n var button = parentElement.getElementsByClassName(CLASSNAMES.CLEARICON)[0];\n if (!isNullOrUndefined(button)) {\n if (element.value && !isNullOrUndefined(parentElement) && parentElement.classList.contains('e-input-focus')) {\n removeClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n else {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n }\n }\n }\n checkInputValue(floatLabelType, element);\n }\n Input.setValue = setValue;\n /**\n * Sets the single or multiple cssClass to wrapper of input element.\n * ```\n * E.g : Input.setCssClass('e-custom-class', [element]);\n * ```\n *\n * @param {string} cssClass - Css class names which are needed to add.\n * @param {Element[] | NodeList} elements - The elements which are needed to add / remove classes.\n * @param {string} oldClass\n * - Css class names which are needed to remove. If old classes are need to remove, can give this optional parameter.\n */\n function setCssClass(cssClass, elements, oldClass) {\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n removeClass(elements, oldClass.split(' '));\n }\n if (!isNullOrUndefined(cssClass) && cssClass !== '') {\n addClass(elements, cssClass.split(' '));\n }\n }\n Input.setCssClass = setCssClass;\n /**\n * Set the width to the placeholder when it overflows on the button such as spinbutton, clearbutton, icon etc\n * ```\n * E.g : Input.calculateWidth(element, container);\n * ```\n *\n * @param {any} element - Input element which is need to add.\n * @param {HTMLElement} container - The parent element which is need to get the label span to calculate width\n */\n function calculateWidth(element, container, moduleName) {\n if (moduleName !== 'multiselect' && !_isElementVisible(element)) {\n return;\n }\n var elementWidth = moduleName === 'multiselect' ? element : element.clientWidth - parseInt(getComputedStyle(element, null).getPropertyValue('padding-left'), 10);\n if (!isNullOrUndefined(container) && !isNullOrUndefined(container.getElementsByClassName('e-float-text-content')[0])) {\n if (container.getElementsByClassName('e-float-text-content')[0].classList.contains('e-float-text-overflow')) {\n container.getElementsByClassName('e-float-text-content')[0].classList.remove('e-float-text-overflow');\n }\n if (elementWidth < container.getElementsByClassName('e-float-text-content')[0].clientWidth || elementWidth === container.getElementsByClassName('e-float-text-content')[0].clientWidth) {\n container.getElementsByClassName('e-float-text-content')[0].classList.add('e-float-text-overflow');\n }\n }\n }\n Input.calculateWidth = calculateWidth;\n /**\n * Set the width to the wrapper of input element.\n * ```\n * E.g : Input.setWidth('200px', container);\n * ```\n *\n * @param {number | string} width - Width value which is need to add.\n * @param {HTMLElement} container - The element on which the width is need to add.\n */\n function setWidth(width, container) {\n if (typeof width === 'number') {\n container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n calculateWidth(container.firstChild, container);\n }\n Input.setWidth = setWidth;\n /**\n * Set the placeholder attribute to the input element.\n * ```\n * E.g : Input.setPlaceholder('Search here', element);\n * ```\n *\n * @param {string} placeholder - Placeholder value which is need to add.\n * @param {HTMLInputElement | HTMLTextAreaElement} element - The element on which the placeholder is need to add.\n */\n function setPlaceholder(placeholder, element) {\n placeholder = encodePlaceHolder(placeholder);\n var parentElement = getParentNode(element);\n if (parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n var floatTextContent = parentElement.getElementsByClassName('e-float-text-content')[0];\n if (floatTextContent && floatTextContent.children[0]) {\n floatTextContent.children[0].textContent = placeholder;\n }\n else {\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = placeholder;\n }\n parentElement.classList.remove(CLASSNAMES.NOFLOATLABEL);\n element.removeAttribute('placeholder');\n }\n else {\n parentElement.classList.add(CLASSNAMES.NOFLOATLABEL);\n var floatTextContent = parentElement.getElementsByClassName('e-float-text-content')[0];\n if (floatTextContent) {\n floatTextContent.children[0].textContent = '';\n }\n else {\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = '';\n }\n }\n }\n else {\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n attributes(element, { 'placeholder': placeholder });\n }\n else {\n element.removeAttribute('placeholder');\n }\n }\n }\n Input.setPlaceholder = setPlaceholder;\n /**\n * Set the read only attribute to the input element\n * ```\n * E.g : Input.setReadonly(true, element);\n * ```\n *\n * @param {boolean} isReadonly\n * - Boolean value to specify whether to set read only. Setting \"True\" value enables read only.\n * @param {HTMLInputElement | HTMLTextAreaElement} element\n * - The element which is need to enable read only.\n */\n function setReadonly(isReadonly, element, floatLabelType) {\n if (isReadonly) {\n attributes(element, { readonly: '' });\n }\n else {\n element.removeAttribute('readonly');\n }\n if (!isNullOrUndefined(floatLabelType)) {\n validateLabel(element, floatLabelType);\n }\n }\n Input.setReadonly = setReadonly;\n /**\n * Displays the element direction from right to left when its enabled.\n * ```\n * E.g : Input.setEnableRtl(true, [inputObj.container]);\n * ```\n *\n * @param {boolean} isRtl\n * - Boolean value to specify whether to set RTL. Setting \"True\" value enables the RTL mode.\n * @param {Element[] | NodeList} elements\n * - The elements that are needed to enable/disable RTL.\n */\n function setEnableRtl(isRtl, elements) {\n if (isRtl) {\n addClass(elements, CLASSNAMES.RTL);\n }\n else {\n removeClass(elements, CLASSNAMES.RTL);\n }\n }\n Input.setEnableRtl = setEnableRtl;\n /**\n * Enables or disables the given input element.\n * ```\n * E.g : Input.setEnabled(false, element);\n * ```\n *\n * @param {boolean} isEnable\n * - Boolean value to specify whether to enable or disable.\n * @param {HTMLInputElement | HTMLTextAreaElement} element\n * - Element to be enabled or disabled.\n */\n function setEnabled(isEnable, element, floatLabelType, inputContainer) {\n var disabledAttrs = { 'disabled': '', 'aria-disabled': 'true' };\n var considerWrapper = isNullOrUndefined(inputContainer) ? false : true;\n if (isEnable) {\n element.classList.remove(CLASSNAMES.DISABLE);\n removeAttributes(disabledAttrs, element);\n if (considerWrapper) {\n removeClass([inputContainer], CLASSNAMES.DISABLE);\n }\n }\n else {\n element.classList.add(CLASSNAMES.DISABLE);\n addAttributes(disabledAttrs, element);\n if (considerWrapper) {\n addClass([inputContainer], CLASSNAMES.DISABLE);\n }\n }\n if (!isNullOrUndefined(floatLabelType)) {\n validateLabel(element, floatLabelType);\n }\n }\n Input.setEnabled = setEnabled;\n function setClearButton(isClear, element, inputObject, initial, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n if (isClear) {\n inputObject.clearButton = createClearButton(element, inputObject, initial, makeElement);\n }\n else {\n remove(inputObject.clearButton);\n inputObject.clearButton = null;\n }\n }\n Input.setClearButton = setClearButton;\n /**\n * Removing the multiple attributes from the given element such as \"disabled\",\"id\" , etc.\n * ```\n * E.g : Input.removeAttributes({ 'disabled': 'disabled', 'aria-disabled': 'true' }, element);\n * ```\n *\n * @param {string} attrs\n * - Array of attributes which are need to removed from the element.\n * @param {HTMLInputElement | HTMLElement} element\n * - Element on which the attributes are needed to be removed.\n */\n function removeAttributes(attrs, element) {\n for (var _i = 0, _a = Object.keys(attrs); _i < _a.length; _i++) {\n var key = _a[_i];\n var parentElement = getParentNode(element);\n if (key === 'disabled') {\n element.classList.remove(CLASSNAMES.DISABLE);\n }\n if (key === 'disabled' && parentElement.classList.contains(CLASSNAMES.INPUTGROUP)) {\n parentElement.classList.remove(CLASSNAMES.DISABLE);\n }\n if (key === 'placeholder' && parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = '';\n }\n else {\n element.removeAttribute(key);\n }\n }\n }\n Input.removeAttributes = removeAttributes;\n /**\n * Adding the multiple attributes to the given element such as \"disabled\",\"id\" , etc.\n * ```\n * E.g : Input.addAttributes({ 'id': 'inputpopup' }, element);\n * ```\n *\n * @param {string} attrs\n * - Array of attributes which is added to element.\n * @param {HTMLInputElement | HTMLElement} element\n * - Element on which the attributes are needed to be added.\n */\n function addAttributes(attrs, element) {\n for (var _i = 0, _a = Object.keys(attrs); _i < _a.length; _i++) {\n var key = _a[_i];\n var parentElement = getParentNode(element);\n if (key === 'disabled') {\n element.classList.add(CLASSNAMES.DISABLE);\n }\n if (key === 'disabled' && parentElement.classList.contains(CLASSNAMES.INPUTGROUP)) {\n parentElement.classList.add(CLASSNAMES.DISABLE);\n }\n if (key === 'placeholder' && parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = attrs[\"\" + key];\n }\n else {\n element.setAttribute(key, attrs[\"\" + key]);\n }\n }\n }\n Input.addAttributes = addAttributes;\n function removeFloating(input) {\n var container = input.container;\n if (!isNullOrUndefined(container) && container.classList.contains(CLASSNAMES.FLOATINPUT)) {\n var inputEle = container.querySelector('textarea') ? container.querySelector('textarea') :\n container.querySelector('input');\n var placeholder = container.querySelector('.' + CLASSNAMES.FLOATTEXT).textContent;\n var clearButton = container.querySelector('.e-clear-icon') !== null;\n detach(container.querySelector('.' + CLASSNAMES.FLOATLINE));\n detach(container.querySelector('.' + CLASSNAMES.FLOATTEXT));\n classList(container, [CLASSNAMES.INPUTGROUP], [CLASSNAMES.FLOATINPUT]);\n unwireFloatingEvents(inputEle);\n attributes(inputEle, { 'placeholder': placeholder });\n inputEle.classList.add(CLASSNAMES.INPUT);\n if (!clearButton && inputEle.tagName === 'INPUT') {\n inputEle.removeAttribute('required');\n }\n }\n }\n Input.removeFloating = removeFloating;\n function addFloating(input, type, placeholder, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var container = closest(input, '.' + CLASSNAMES.INPUTGROUP);\n floatType = type;\n var customTag = container.tagName;\n customTag = customTag !== 'DIV' && customTag !== 'SPAN' ? customTag : null;\n var args = { element: input, floatLabelType: type,\n customTag: customTag, properties: { placeholder: placeholder } };\n if (type !== 'Never') {\n var iconEle = container.querySelector('.e-clear-icon');\n var inputObj = { container: container };\n input.classList.remove(CLASSNAMES.INPUT);\n createFloatingInput(args, inputObj, makeElement);\n createSpanElement(inputObj.container, makeElement);\n calculateWidth(args.element, inputObj.container);\n var isPrependIcon = container.classList.contains('e-float-icon-left');\n if (isNullOrUndefined(iconEle)) {\n if (isPrependIcon) {\n var inputWrap = container.querySelector('.e-input-in-wrap');\n iconEle = inputWrap.querySelector('.e-input-group-icon');\n }\n else {\n iconEle = container.querySelector('.e-input-group-icon');\n }\n }\n if (isNullOrUndefined(iconEle)) {\n if (isPrependIcon) {\n iconEle = container.querySelector('.e-input-group-icon');\n }\n }\n else {\n var floatLine = container.querySelector('.' + CLASSNAMES.FLOATLINE);\n var floatText = container.querySelector('.' + CLASSNAMES.FLOATTEXT);\n var wrapper = isPrependIcon ? container.querySelector('.e-input-in-wrap') : container;\n wrapper.insertBefore(input, iconEle);\n wrapper.insertBefore(floatLine, iconEle);\n wrapper.insertBefore(floatText, iconEle);\n }\n }\n else {\n unWireFloatLabelEvents(args);\n }\n checkFloatLabelType(type, input.parentElement);\n }\n Input.addFloating = addFloating;\n /**\n * Create the span inside the label and add the label text into the span textcontent\n * ```\n * E.g : Input.createSpanElement(inputObject, makeElement);\n * ```\n *\n * @param {Element} inputObject\n * - Element which is need to get the label\n * @param {createElementParams} makeElement\n * - Element which is need to create the span\n */\n function createSpanElement(inputObject, makeElement) {\n if (inputObject.classList.contains('e-outline') && inputObject.getElementsByClassName('e-float-text')[0]) {\n var labelSpanElement = makeElement('span', { className: CLASSNAMES.FLOATTEXTCONTENT });\n labelSpanElement.innerHTML = inputObject.getElementsByClassName('e-float-text')[0].innerHTML;\n inputObject.getElementsByClassName('e-float-text')[0].innerHTML = '';\n inputObject.getElementsByClassName('e-float-text')[0].appendChild(labelSpanElement);\n }\n }\n Input.createSpanElement = createSpanElement;\n /**\n * Enable or Disable the ripple effect on the icons inside the Input. Ripple effect is only applicable for material theme.\n * ```\n * E.g : Input.setRipple(true, [inputObjects]);\n * ```\n *\n * @param {boolean} isRipple\n * - Boolean value to specify whether to enable the ripple effect.\n * @param {InputObject[]} inputObj\n * - Specify the collection of input objects.\n */\n function setRipple(isRipple, inputObj) {\n for (var i = 0; i < inputObj.length; i++) {\n _internalRipple(isRipple, inputObj[parseInt(i.toString(), 10)].container);\n }\n }\n Input.setRipple = setRipple;\n function _internalRipple(isRipple, container, button) {\n var argsButton = [];\n argsButton.push(button);\n var buttons = isNullOrUndefined(button) ?\n container.querySelectorAll('.e-input-group-icon') : argsButton;\n if (isRipple && buttons.length > 0) {\n for (var index = 0; index < buttons.length; index++) {\n buttons[parseInt(index.toString(), 10)].addEventListener('mousedown', _onMouseDownRipple, false);\n buttons[parseInt(index.toString(), 10)].addEventListener('mouseup', _onMouseUpRipple, false);\n }\n }\n else if (buttons.length > 0) {\n for (var index = 0; index < buttons.length; index++) {\n buttons[parseInt(index.toString(), 10)].removeEventListener('mousedown', _onMouseDownRipple, this);\n buttons[parseInt(index.toString(), 10)].removeEventListener('mouseup', _onMouseUpRipple, this);\n }\n }\n }\n function _onMouseRipple(container, button) {\n if (!container.classList.contains('e-disabled') && !container.querySelector('input').readOnly) {\n button.classList.add('e-input-btn-ripple');\n }\n }\n function _isElementVisible(element) {\n if (!element) {\n return false;\n }\n // Check if the element or any of its parents are hidden using display: none\n var currentElement = element;\n while (currentElement && currentElement !== document.body) {\n var style = window.getComputedStyle(currentElement);\n if (style.display === 'none') {\n return false;\n }\n currentElement = currentElement.parentElement;\n }\n // If none of the elements have display: none, the element is considered visible\n return true;\n }\n function _onMouseDownRipple() {\n var ele = null || this;\n var parentEle = this.parentElement;\n while (!parentEle.classList.contains('e-input-group')) {\n parentEle = parentEle.parentElement;\n }\n _onMouseRipple(parentEle, ele);\n }\n function _onMouseUpRipple() {\n var ele = null || this;\n setTimeout(function () {\n ele.classList.remove('e-input-btn-ripple');\n }, 500);\n }\n function createIconEle(iconClass, makeElement) {\n var button = makeElement('span', { className: iconClass });\n button.classList.add('e-input-group-icon');\n return button;\n }\n /**\n * Creates a new span element with the given icons added and append it in container element.\n * ```\n * E.g : Input.addIcon('append', 'e-icon-spin', inputObj.container, inputElement);\n * ```\n *\n * @param {string} position - Specify the icon placement on the input.Possible values are append and prepend.\n * @param {string | string[]} icons - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param {HTMLElement} container - The container on which created span element is going to append.\n * @param {HTMLElement} input - The inputElement on which created span element is going to prepend.\n */\n function addIcon(position, icons, container, input, internalCreate) {\n var result = typeof (icons) === 'string' ? icons.split(',')\n : icons;\n if (position.toLowerCase() === 'append') {\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var icon = result_1[_i];\n appendSpan(icon, container, internalCreate);\n }\n }\n else {\n for (var _a = 0, result_2 = result; _a < result_2.length; _a++) {\n var icon = result_2[_a];\n prependSpan(icon, container, input, internalCreate);\n }\n }\n if (container.getElementsByClassName('e-input-group-icon')[0] && container.getElementsByClassName('e-float-text-overflow')[0]) {\n container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n }\n Input.addIcon = addIcon;\n /**\n * Creates a new span element with the given icons added and prepend it in input element.\n * ```\n * E.g : Input.prependSpan('e-icon-spin', inputObj.container, inputElement);\n * ```\n *\n * @param {string} iconClass - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param {HTMLElement} container - The container on which created span element is going to append.\n * @param {HTMLElement} inputElement - The inputElement on which created span element is going to prepend.\n */\n function prependSpan(iconClass, container, inputElement, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var button = createIconEle(iconClass, makeElement);\n container.classList.add('e-float-icon-left');\n var innerWrapper = container.querySelector('.e-input-in-wrap');\n if (isNullOrUndefined(innerWrapper)) {\n innerWrapper = makeElement('span', { className: 'e-input-in-wrap' });\n inputElement.parentNode.insertBefore(innerWrapper, inputElement);\n var result = container.querySelectorAll(inputElement.tagName + ' ~ *');\n innerWrapper.appendChild(inputElement);\n for (var i = 0; i < result.length; i++) {\n var element = result[parseInt(i.toString(), 10)];\n var parentElement = innerWrapper.parentElement;\n if (!(element.classList.contains('e-float-line')) || (!(parentElement && parentElement.classList.contains('e-filled')) && parentElement)) {\n innerWrapper.appendChild(element);\n }\n }\n }\n innerWrapper.parentNode.insertBefore(button, innerWrapper);\n _internalRipple(true, container, button);\n return button;\n }\n Input.prependSpan = prependSpan;\n /**\n * Creates a new span element with the given icons added and append it in container element.\n * ```\n * E.g : Input.appendSpan('e-icon-spin', inputObj.container);\n * ```\n *\n * @param {string} iconClass - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param {HTMLElement} container - The container on which created span element is going to append.\n */\n function appendSpan(iconClass, container, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var button = createIconEle(iconClass, makeElement);\n var wrap = (container.classList.contains('e-float-icon-left')) ? container.querySelector('.e-input-in-wrap') :\n container;\n wrap.appendChild(button);\n _internalRipple(true, container, button);\n return button;\n }\n Input.appendSpan = appendSpan;\n function validateInputType(containerElement, input) {\n if (input.type === 'hidden') {\n containerElement.classList.add('e-hidden');\n }\n else if (containerElement.classList.contains('e-hidden')) {\n containerElement.classList.remove('e-hidden');\n }\n }\n Input.validateInputType = validateInputType;\n function updateHTMLAttributesToElement(htmlAttributes, element) {\n if (!isNullOrUndefined(htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttributes.indexOf(key) < 0) {\n element.setAttribute(key, htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n Input.updateHTMLAttributesToElement = updateHTMLAttributesToElement;\n function updateCssClass(newClass, oldClass, container) {\n setCssClass(getInputValidClassList(newClass), [container], getInputValidClassList(oldClass));\n }\n Input.updateCssClass = updateCssClass;\n function getInputValidClassList(inputClassName) {\n var result = inputClassName;\n if (!isNullOrUndefined(inputClassName) && inputClassName !== '') {\n result = (inputClassName.replace(/\\s+/g, ' ')).trim();\n }\n return result;\n }\n Input.getInputValidClassList = getInputValidClassList;\n function updateHTMLAttributesToWrapper(htmlAttributes, container) {\n if (!isNullOrUndefined(htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttributes.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassValues = this.getInputValidClassList(htmlAttributes[\"\" + key]);\n if (updatedClassValues !== '') {\n addClass([container], updatedClassValues.split(' '));\n }\n }\n else if (key === 'style') {\n var setStyle = container.getAttribute(key);\n setStyle = !isNullOrUndefined(setStyle) ? (setStyle + htmlAttributes[\"\" + key]) :\n htmlAttributes[\"\" + key];\n container.setAttribute(key, setStyle);\n }\n else {\n container.setAttribute(key, htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n }\n Input.updateHTMLAttributesToWrapper = updateHTMLAttributesToWrapper;\n function isBlank(inputString) {\n return (!inputString || /^\\s*$/.test(inputString));\n }\n Input.isBlank = isBlank;\n})(Input || (Input = {}));\n/* eslint-enable valid-jsdoc, jsdoc/require-jsdoc, jsdoc/require-returns, jsdoc/require-param */\n","import { createElement, append } from '@syncfusion/ej2-base';\n/**\n * `PagerMessage` module is used to display pager information.\n */\nvar PagerMessage = /** @class */ (function () {\n /**\n * Constructor for externalMessage module\n *\n * @param {Pager} pagerModule - specifies the pager Module\n * @hidden\n */\n function PagerMessage(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * The function is used to render pager message\n *\n * @returns {void}\n * @hidden\n */\n PagerMessage.prototype.render = function () {\n var div = createElement('div', { className: 'e-parentmsgbar' });\n this.pageNoMsgElem = createElement('span', { className: 'e-pagenomsg', styles: 'textalign:right' });\n this.pageCountMsgElem = createElement('span', { className: 'e-pagecountmsg', styles: 'textalign:right' });\n append([this.pageNoMsgElem, this.pageCountMsgElem], div);\n this.pagerModule.element.appendChild(div);\n this.refresh();\n };\n /**\n * Refreshes the pager information.\n *\n * @returns {void}\n */\n PagerMessage.prototype.refresh = function () {\n var pagerObj = this.pagerModule;\n this.pageNoMsgElem.textContent = this.format(pagerObj.getLocalizedLabel('currentPageInfo'), [pagerObj.totalRecordsCount === 0 ? 0 :\n pagerObj.currentPage, pagerObj.totalPages || 0, pagerObj.totalRecordsCount || 0]) + ' ';\n this.pageCountMsgElem.textContent = this.format(pagerObj.getLocalizedLabel(pagerObj.totalRecordsCount <= 1 ? 'totalItemInfo' : 'totalItemsInfo'), [pagerObj.totalRecordsCount || 0, pagerObj.totalRecordsCount ? (pagerObj.pageSize * (pagerObj.currentPage - 1)) + 1 : 0,\n pagerObj.pageSize * pagerObj.currentPage > pagerObj.totalRecordsCount ? pagerObj.totalRecordsCount :\n pagerObj.pageSize * pagerObj.currentPage]);\n this.pageNoMsgElem.parentElement.classList.remove('e-hide');\n };\n /**\n * Hides the Pager information.\n *\n * @returns {void}\n */\n PagerMessage.prototype.hideMessage = function () {\n if (this.pageNoMsgElem) {\n this.pageNoMsgElem.style.display = 'none';\n }\n if (this.pageCountMsgElem) {\n this.pageCountMsgElem.style.display = 'none';\n }\n };\n /**\n * Shows the Pager information.\n *\n * @returns {void}\n */\n PagerMessage.prototype.showMessage = function () {\n if (!this.pageNoMsgElem) {\n this.render();\n }\n this.pageNoMsgElem.style.display = '';\n this.pageCountMsgElem.style.display = '';\n };\n /**\n * To destroy the PagerMessage\n *\n * @function destroy\n * @returns {void}\n * @hidden\n */\n PagerMessage.prototype.destroy = function () {\n //destroy\n };\n /**\n * To format the PagerMessage\n *\n * @function format\n * @param {string} str - specifies the string\n * @param {number[]} args - specifies the argument\n * @returns {string} returns the format string\n * @hidden\n */\n PagerMessage.prototype.format = function (str, args) {\n var regx;\n var regExp = RegExp;\n for (var i = 0; i < args.length; i++) {\n regx = new regExp('\\\\{' + (i) + '\\\\}', 'gm');\n str = str.replace(regx, args[parseInt(i.toString(), 10)].toLocaleString(this.pagerModule.locale));\n }\n return str;\n };\n return PagerMessage;\n}());\nexport { PagerMessage };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, L10n, Browser, addClass, removeClass, classList } from '@syncfusion/ej2-base';\nimport { createElement, compile as templateCompiler, EventHandler, extend } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Property, Event, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { NumericContainer } from './numeric-container';\nimport { PagerMessage } from './pager-message';\nimport { appendChildren, parentsUntil } from '../grid/base/util';\nimport * as events from '../grid/base/constant';\n/**\n * Represents the `Pager` component.\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Pager = /** @class */ (function (_super) {\n __extends(Pager, _super);\n /**\n * Constructor for creating the component.\n *\n * @param {PagerModel} options - specifies the options\n * @param {string} element - specifies the element\n * @param {string} parent - specifies the pager parent\n * @hidden\n */\n function Pager(options, element, parent) {\n var _this = _super.call(this, options, element) || this;\n /** @hidden */\n _this.hasParent = false;\n _this.checkAll = true;\n _this.pageRefresh = 'pager-refresh';\n _this.firstPagerFocus = false;\n /** @hidden */\n _this.isCancel = false;\n /** @hidden */\n _this.isInteracted = false;\n _this.parent = parent;\n return _this;\n }\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} returns the modules declaration\n * @hidden\n */\n Pager.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableExternalMessage) {\n modules.push({\n member: 'externalMessage',\n args: [this],\n name: 'ExternalMessage'\n });\n }\n if (this.checkpagesizes()) {\n modules.push({\n member: 'pagerdropdown',\n args: [this],\n name: 'PagerDropDown'\n });\n }\n return modules;\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @hidden\n */\n Pager.prototype.preRender = function () {\n //preRender\n this.defaultConstants = {\n currentPageInfo: '{0} of {1} pages',\n totalItemsInfo: '({0} items)',\n totalItemInfo: '({0} item)',\n firstPageTooltip: 'Go to first page',\n lastPageTooltip: 'Go to last page',\n nextPageTooltip: 'Go to next page',\n previousPageTooltip: 'Go to previous page',\n nextPagerTooltip: 'Go to next pager items',\n previousPagerTooltip: 'Go to previous pager items',\n pagerDropDown: 'Items per page',\n pagerAllDropDown: 'Items',\n CurrentPageInfo: '{0} of {1} pages',\n TotalItemsInfo: '({0} items)',\n FirstPageTooltip: 'Go to first page',\n LastPageTooltip: 'Go to last page',\n NextPageTooltip: 'Go to next page',\n PreviousPageTooltip: 'Go to previous page',\n NextPagerTooltip: 'Go to next pager items',\n PreviousPagerTooltip: 'Go to previous pager items',\n PagerDropDown: 'Items per page',\n PagerAllDropDown: 'Items',\n All: 'All',\n Container: 'Pager Container',\n Information: 'Pager Information',\n ExternalMsg: 'Pager external message',\n Page: 'Page ',\n Of: ' of ',\n Pages: ' Pages'\n };\n this.containerModule = new NumericContainer(this);\n this.pagerMessageModule = new PagerMessage(this);\n };\n /**\n * To Initialize the component rendering\n *\n * @returns {void}\n */\n Pager.prototype.render = function () {\n this.element.setAttribute('data-role', 'pager');\n this.element.setAttribute('tabindex', '-1');\n this.initLocalization();\n if (this.cssClass) {\n if (this.cssClass.indexOf(' ') !== -1) {\n addClass([this.element], this.cssClass.split(' '));\n }\n else {\n addClass([this.element], [this.cssClass]);\n }\n }\n if (!this.hasParent) {\n this.element.setAttribute('tabindex', '0');\n }\n if (this.enableQueryString) {\n var pageValue = new URL(window.location.href).searchParams.get('page');\n if (!isNullOrUndefined(pageValue) && window.location.href.indexOf('?page=') > 0) {\n var currentPageValue = parseInt(pageValue, 10);\n if (this.hasParent) {\n this.parent\n .setProperties({ pageSettings: { currentPage: currentPageValue } }, true);\n }\n this.currentPage = currentPageValue;\n }\n }\n if (this.template) {\n if (this.isReactTemplate()) {\n this.on(this.pageRefresh, this.pagerTemplate, this);\n this.notify(this.pageRefresh, {});\n }\n else {\n this.pagerTemplate();\n }\n }\n else {\n this.updateRTL();\n this.totalRecordsCount = this.totalRecordsCount || 0;\n this.renderFirstPrevDivForDevice();\n this.containerModule.render();\n if (this.enablePagerMessage) {\n this.pagerMessageModule.render();\n }\n this.renderNextLastDivForDevice();\n if (this.checkpagesizes() && this.pagerdropdownModule) {\n this.pagerdropdownModule.render();\n }\n this.addAriaLabel();\n if (this.enableExternalMessage && this.externalMessageModule) {\n this.externalMessageModule.render();\n }\n this.refresh();\n this.trigger('created', { 'currentPage': this.currentPage, 'totalRecordsCount': this.totalRecordsCount });\n }\n this.wireEvents();\n this.addListener();\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} returns the persist data\n * @hidden\n */\n Pager.prototype.getPersistData = function () {\n var keyEntity = ['currentPage', 'pageSize'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * To destroy the Pager component.\n *\n * @method destroy\n * @returns {void}\n */\n Pager.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (this.isReactTemplate()) {\n this.off(this.pageRefresh, this.pagerTemplate);\n if (!this.hasParent) {\n this.destroyTemplate(['pagerTemplate']);\n }\n }\n this.removeListener();\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n this.containerModule.destroy();\n this.pagerMessageModule.destroy();\n if (!this.isReactTemplate()) {\n this.element.innerHTML = '';\n }\n };\n /**\n * Destroys the given template reference.\n *\n * @param {string[]} propertyNames - Defines the collection of template name.\n * @param {any} index - Defines the index\n */\n // eslint-disable-next-line\n Pager.prototype.destroyTemplate = function (propertyNames, index) {\n this.clearTemplate(propertyNames, index);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Pager.prototype.getModuleName = function () {\n return 'pager';\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {PagerModel} newProp - specifies the new property\n * @param {PagerModel} oldProp - specifies the old propety\n * @returns {void}\n * @hidden\n */\n Pager.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.isDestroyed) {\n return;\n }\n if ((newProp.pageSize === this.getLocalizedLabel('All')) && oldProp.pageSize === this.totalRecordsCount) {\n this.pageSize = this.totalRecordsCount;\n return;\n }\n if (newProp.pageCount !== oldProp.pageCount) {\n this.containerModule.refreshNumericLinks();\n this.containerModule.refresh();\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'currentPage':\n if (this.checkGoToPage(newProp.currentPage, oldProp.currentPage)) {\n this.currentPageChanged(newProp, oldProp);\n }\n break;\n case 'pageSize':\n case 'totalRecordsCount':\n case 'customText':\n if (this.checkpagesizes() && this.pagerdropdownModule) {\n if (oldProp.pageSize !== newProp.pageSize) {\n this.currentPage = 1;\n }\n this.pagerdropdownModule.setDropDownValue('value', this.pageSize);\n }\n if (newProp.pageSize !== oldProp.pageSize) {\n this.pageSize = newProp.pageSize;\n this.currentPageChanged(newProp, oldProp);\n if (this.isCancel && this.hasParent) {\n this.parent\n .setProperties({ pageSettings: { pageSize: oldProp.pageSize } }, true);\n }\n }\n else {\n this.refresh();\n }\n break;\n case 'pageSizes':\n if (this.checkpagesizes() && this.pagerdropdownModule) {\n this.pagerdropdownModule.destroy();\n this.pagerdropdownModule.render();\n }\n this.refresh();\n break;\n case 'template':\n this.templateFn = this.compile(this.template);\n this.refresh();\n break;\n case 'locale':\n this.initLocalization();\n this.refresh();\n break;\n case 'enableExternalMessage':\n if (this.enableExternalMessage && this.externalMessageModule) {\n this.externalMessageModule.render();\n }\n break;\n case 'externalMessage':\n if (this.externalMessageModule) {\n this.externalMessageModule.refresh();\n }\n break;\n case 'enableRtl':\n this.updateRTL();\n break;\n case 'enablePagerMessage':\n if (this.enablePagerMessage) {\n this.pagerMessageModule.showMessage();\n }\n else {\n this.pagerMessageModule.hideMessage();\n }\n break;\n }\n }\n this.resizePager();\n };\n Pager.prototype.wireEvents = function () {\n if (!this.hasParent) {\n EventHandler.add(this.element, 'keydown', this.keyPressHandler, this);\n EventHandler.add(document.body, 'keydown', this.keyDownHandler, this);\n }\n EventHandler.add(this.element, 'focusin', this.onFocusIn, this);\n EventHandler.add(this.element, 'focusout', this.onFocusOut, this);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.add(window, 'resize', this.resizePager, this);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.add(window, 'load', this.resizePager, this);\n };\n Pager.prototype.unwireEvents = function () {\n if (!this.hasParent) {\n EventHandler.remove(this.element, 'keydown', this.keyPressHandler);\n EventHandler.remove(document.body, 'keydown', this.keyDownHandler);\n }\n EventHandler.remove(this.element, 'focusin', this.onFocusIn);\n EventHandler.remove(this.element, 'focusout', this.onFocusOut);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.remove(window, 'resize', this.resizePager);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.remove(window, 'load', this.resizePager);\n };\n Pager.prototype.onFocusIn = function (e) {\n var focusedTabIndexElement = this.getFocusedTabindexElement();\n if (isNullOrUndefined(focusedTabIndexElement)) {\n var target = e.target;\n var dropDownPage = this.getDropDownPage();\n if (!this.hasParent) {\n this.element.tabIndex = -1;\n }\n if (target === this.element && !this.hasParent) {\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n this.addFocus(focusablePagerElements[0], true);\n return;\n }\n if (target === this.element) {\n this.element.tabIndex = 0;\n return;\n }\n if (target !== dropDownPage && !target.classList.contains('e-disable')) {\n this.addFocus(target, true);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Pager.prototype.onFocusOut = function (e) {\n var focusedElement = this.getFocusedElement();\n var dropDownPage = this.getDropDownPage();\n if (!isNullOrUndefined(focusedElement)) {\n this.removeFocus(focusedElement, true);\n }\n if (this.pageSizes && dropDownPage && dropDownPage.classList.contains('e-input-focus')) {\n this.removeFocus(dropDownPage, true);\n }\n this.setTabIndexForFocusLastElement();\n if (!this.hasParent) {\n this.element.tabIndex = 0;\n }\n if (this.hasParent) {\n this.element.tabIndex = -1;\n }\n };\n Pager.prototype.keyDownHandler = function (e) {\n if (e.altKey) {\n if (e.keyCode === 74) {\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n if (focusablePagerElements.length > 0) {\n focusablePagerElements[0].focus();\n }\n }\n }\n };\n Pager.prototype.keyPressHandler = function (e) {\n var presskey = extend(e, { cancel: false });\n this.notify(events.keyPressed, presskey);\n if (presskey.cancel === true) {\n e.stopImmediatePropagation();\n }\n };\n Pager.prototype.addListener = function () {\n if (this.isDestroyed) {\n return;\n }\n if (!this.hasParent) {\n this.on(events.keyPressed, this.onKeyPress, this);\n }\n };\n Pager.prototype.removeListener = function () {\n if (this.isDestroyed) {\n return;\n }\n if (!this.hasParent) {\n this.off(events.keyPressed, this.onKeyPress);\n }\n };\n Pager.prototype.onKeyPress = function (e) {\n if (!this.hasParent) {\n if (this.checkPagerHasFocus()) {\n this.changePagerFocus(e);\n }\n else {\n e.preventDefault();\n this.setPagerFocus();\n }\n }\n };\n /**\n * @returns {boolean} - Return the true value if pager has focus\n * @hidden */\n Pager.prototype.checkPagerHasFocus = function () {\n return this.getFocusedTabindexElement() ? true : false;\n };\n /**\n * @returns {void}\n * @hidden */\n Pager.prototype.setPagerContainerFocus = function () {\n this.element.focus();\n };\n /**\n * @returns {void}\n * @hidden */\n Pager.prototype.setPagerFocus = function () {\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n if (focusablePagerElements.length > 0) {\n focusablePagerElements[0].focus();\n }\n };\n Pager.prototype.setPagerFocusForActiveElement = function () {\n var currentActivePage = this.getActiveElement();\n if (currentActivePage) {\n currentActivePage.focus();\n }\n };\n Pager.prototype.setTabIndexForFocusLastElement = function () {\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n var dropDownPage = this.getDropDownPage();\n if (this.pageSizes && dropDownPage && !isNullOrUndefined(dropDownPage.offsetParent)) {\n dropDownPage.tabIndex = 0;\n }\n else if (focusablePagerElements.length > 0) {\n focusablePagerElements[focusablePagerElements.length - 1].tabIndex = 0;\n }\n };\n /**\n * @param {KeyboardEventArgs} e - Keyboard Event Args\n * @returns {void}\n * @hidden */\n Pager.prototype.changePagerFocus = function (e) {\n this.keyAction = e.key;\n if (e.shiftKey && e.keyCode === 9) {\n this.changeFocusByShiftTab(e);\n }\n else if (e.keyCode === 9) {\n this.changeFocusByTab(e);\n }\n else if (e.keyCode === 13 || e.keyCode === 32) {\n this.navigateToPageByEnterOrSpace(e);\n }\n else if (e.keyCode === 37 || e.keyCode === 39 || e.keyCode === 35 || e.keyCode === 36) {\n this.navigateToPageByKey(e);\n }\n this.keyAction = '';\n };\n Pager.prototype.getFocusedTabindexElement = function () {\n var focusedTabIndexElement;\n var tabindexElements = this.element.querySelectorAll('[tabindex]:not([tabindex=\"-1\"])');\n for (var i = 0; i < tabindexElements.length; i++) {\n var element = tabindexElements[parseInt(i.toString(), 10)];\n if (element && (element.classList.contains('e-focused') || element.classList.contains('e-input-focus'))) {\n focusedTabIndexElement = element;\n break;\n }\n }\n return focusedTabIndexElement;\n };\n Pager.prototype.changeFocusByTab = function (e) {\n var currentItemPagerFocus = this.getFocusedTabindexElement();\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n var dropDownPage = this.getDropDownPage();\n if (focusablePagerElements.length > 0) {\n if (this.pageSizes && dropDownPage && currentItemPagerFocus === focusablePagerElements[focusablePagerElements.length - 1]) {\n dropDownPage.tabIndex = 0;\n }\n else {\n for (var i = 0; i < focusablePagerElements.length; i++) {\n if (currentItemPagerFocus === focusablePagerElements[parseInt(i.toString(), 10)]) {\n var incrementNumber = i + 1;\n if (incrementNumber < focusablePagerElements.length) {\n e.preventDefault();\n focusablePagerElements[parseInt(incrementNumber.toString(), 10)].focus();\n }\n break;\n }\n }\n }\n }\n };\n Pager.prototype.changeFocusByShiftTab = function (e) {\n var currentItemPagerFocus = this.getFocusedTabindexElement();\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n var dropDownPage = this.getDropDownPage();\n if (this.pageSizes && dropDownPage && dropDownPage.classList.contains('e-input-focus')) {\n dropDownPage.tabIndex = -1;\n this.addFocus(focusablePagerElements[focusablePagerElements.length - 1], true);\n }\n else if (focusablePagerElements.length > 0) {\n for (var i = 0; i < focusablePagerElements.length; i++) {\n if (currentItemPagerFocus === focusablePagerElements[parseInt(i.toString(), 10)]) {\n var decrementNumber = i - 1;\n if (decrementNumber >= 0) {\n e.preventDefault();\n focusablePagerElements[parseInt(decrementNumber.toString(), 10)].focus();\n }\n else if (this.hasParent) {\n var rows = this.parent.getRows();\n var lastRow = rows[rows.length - 1];\n var lastCell = lastRow.lastChild;\n e.preventDefault();\n lastCell.focus();\n this.firstPagerFocus = true;\n }\n break;\n }\n }\n }\n };\n /**\n * @returns {void}\n * @hidden */\n Pager.prototype.checkFirstPagerFocus = function () {\n if (this.firstPagerFocus) {\n this.firstPagerFocus = false;\n return true;\n }\n return false;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Pager.prototype.navigateToPageByEnterOrSpace = function (e) {\n var currentItemPagerFocus = this.getFocusedElement();\n if (currentItemPagerFocus) {\n this.goToPage(parseInt(currentItemPagerFocus.getAttribute('index'), 10));\n var currentActivePage = this.getActiveElement();\n var selectedClass = this.getClass(currentItemPagerFocus);\n var classElement = this.getElementByClass(selectedClass);\n if ((selectedClass === 'e-first' || selectedClass === 'e-prev' || selectedClass === 'e-next'\n || selectedClass === 'e-last' || selectedClass === 'e-pp' || selectedClass === 'e-np')\n && classElement && !classElement.classList.contains('e-disable')) {\n classElement.focus();\n }\n else if (this.checkFocusInAdaptiveMode(currentItemPagerFocus)) {\n this.changeFocusInAdaptiveMode(currentItemPagerFocus);\n }\n else {\n if (currentActivePage) {\n currentActivePage.focus();\n }\n }\n }\n };\n Pager.prototype.navigateToPageByKey = function (e) {\n var actionClass = e.keyCode === 37 ? '.e-prev' : e.keyCode === 39 ? '.e-next'\n : e.keyCode === 35 ? '.e-last' : e.keyCode === 36 ? '.e-first' : '';\n var pagingItem = this.element.querySelector(actionClass);\n var currentItemPagerFocus = this.getFocusedElement();\n if (!isNullOrUndefined(pagingItem) && pagingItem.hasAttribute('index')\n && !isNaN(parseInt(pagingItem.getAttribute('index'), 10))) {\n this.goToPage(parseInt(pagingItem.getAttribute('index'), 10));\n var currentActivePage = this.getActiveElement();\n if (this.checkFocusInAdaptiveMode(currentItemPagerFocus)) {\n this.changeFocusInAdaptiveMode(currentItemPagerFocus);\n }\n else {\n if (currentActivePage) {\n currentActivePage.focus();\n }\n }\n }\n };\n Pager.prototype.checkFocusInAdaptiveMode = function (element) {\n var selectedClass = this.getClass(element);\n return selectedClass === 'e-mfirst' || selectedClass === 'e-mprev' || selectedClass === 'e-mnext'\n || selectedClass === 'e-mlast' ? true : false;\n };\n Pager.prototype.changeFocusInAdaptiveMode = function (element) {\n var selectedClass = this.getClass(element);\n var classElement = this.getElementByClass(selectedClass);\n if (classElement && classElement.classList.contains('e-disable')) {\n if (selectedClass === 'e-mnext' || selectedClass === 'e-mlast') {\n var mPrev = this.element.querySelector('.e-mprev');\n mPrev.focus();\n }\n else {\n this.setPagerFocus();\n }\n }\n };\n Pager.prototype.removeTabindexLastElements = function () {\n var tabIndexElements = this.element.querySelectorAll('[tabindex]:not([tabindex=\"-1\"])');\n if (tabIndexElements.length > 1) {\n for (var i = 1; i < tabIndexElements.length; i++) {\n var element = tabIndexElements[parseInt(i.toString(), 10)];\n if (element) {\n element.tabIndex = -1;\n }\n }\n }\n };\n Pager.prototype.getActiveElement = function () {\n return this.element.querySelector('.e-active');\n };\n /**\n * @returns {Element} - Returns DropDown Page\n * @hidden */\n Pager.prototype.getDropDownPage = function () {\n var dropDownPageHolder = this.element.querySelector('.e-pagerdropdown');\n var dropDownPage;\n if (dropDownPageHolder) {\n dropDownPage = dropDownPageHolder.children[0];\n }\n return dropDownPage;\n };\n Pager.prototype.getFocusedElement = function () {\n return this.element.querySelector('.e-focused');\n };\n Pager.prototype.getClass = function (element) {\n var currentClass;\n var classList = ['e-mfirst', 'e-mprev', 'e-first', 'e-prev', 'e-pp',\n 'e-np', 'e-next', 'e-last', 'e-mnext', 'e-mlast'];\n for (var i = 0; i < classList.length; i++) {\n if (element && element.classList.contains(classList[parseInt(i.toString(), 10)])) {\n currentClass = classList[parseInt(i.toString(), 10)];\n return currentClass;\n }\n }\n return currentClass;\n };\n Pager.prototype.getElementByClass = function (className) {\n return this.element.querySelector('.' + className);\n };\n /**\n * @param {Element} element - Pager element\n * @param {Element[]} previousElements - Iterating pager element\n * @returns {Element[]} - Returns focusable pager element\n * @hidden */\n Pager.prototype.getFocusablePagerElements = function (element, previousElements) {\n var target = element;\n var targetChildrens = target.children;\n var pagerElements = previousElements;\n for (var i = 0; i < targetChildrens.length; i++) {\n var element_1 = targetChildrens[parseInt(i.toString(), 10)];\n if (element_1.children.length > 0 && !element_1.classList.contains('e-pagesizes')) {\n pagerElements = this.getFocusablePagerElements(element_1, pagerElements);\n }\n else {\n var tabindexElement = targetChildrens[parseInt(i.toString(), 10)];\n if (tabindexElement.hasAttribute('tabindex') && !element_1.classList.contains('e-disable')\n && element_1.style.display !== 'none'\n && !isNullOrUndefined(element_1.offsetParent)) {\n pagerElements.push(tabindexElement);\n }\n }\n }\n return pagerElements;\n };\n Pager.prototype.addFocus = function (element, addFocusClass) {\n if (!isNullOrUndefined(element)) {\n if (addFocusClass) {\n addClass([element], ['e-focused', 'e-focus']);\n }\n element.tabIndex = 0;\n }\n };\n Pager.prototype.removeFocus = function (element, removeFocusClass) {\n if (removeFocusClass) {\n removeClass([element], ['e-focused', 'e-focus']);\n }\n element.tabIndex = -1;\n };\n /**\n * Gets the localized label by locale keyword.\n *\n * @param {string} key - specifies the key\n * @returns {string} returns the localized label\n */\n Pager.prototype.getLocalizedLabel = function (key) {\n return this.localeObj.getConstant(key);\n };\n /**\n * Navigate to target page by given number.\n *\n * @param {number} pageNo - Defines page number.\n * @returns {void}\n */\n Pager.prototype.goToPage = function (pageNo) {\n if (this.checkGoToPage(pageNo)) {\n this.currentPage = pageNo;\n this.isInteracted = false;\n this.dataBind();\n }\n };\n /**\n * @param {number} pageSize - specifies the pagesize\n * @returns {void}\n * @hidden\n */\n Pager.prototype.setPageSize = function (pageSize) {\n this.pageSize = pageSize;\n this.dataBind();\n };\n Pager.prototype.checkpagesizes = function () {\n if (this.pageSizes === true || this.pageSizes.length) {\n return true;\n }\n return false;\n };\n Pager.prototype.checkGoToPage = function (newPageNo, oldPageNo) {\n if (newPageNo !== this.currentPage) {\n this.previousPageNo = this.currentPage;\n }\n if (!isNullOrUndefined(oldPageNo)) {\n this.previousPageNo = oldPageNo;\n }\n if (this.previousPageNo !== newPageNo && (newPageNo >= 1 && newPageNo <= this.totalPages)) {\n return true;\n }\n return false;\n };\n Pager.prototype.currentPageChanged = function (newProp, oldProp) {\n if (this.enableQueryString) {\n this.updateQueryString(this.currentPage);\n }\n if (newProp.currentPage !== oldProp.currentPage || newProp.pageSize !== oldProp.pageSize) {\n var args = {\n currentPage: this.currentPage,\n newProp: newProp, oldProp: oldProp, cancel: false, isInteracted: this.isInteracted\n };\n this.trigger('click', args);\n if (!args.cancel) {\n this.isCancel = false;\n this.refresh();\n }\n else {\n this.isCancel = true;\n if (oldProp && oldProp.pageSize) {\n this.setProperties({ pageSize: oldProp.pageSize }, true);\n if (this.pagerdropdownModule) {\n this.pagerdropdownModule.setDropDownValue('value', oldProp.pageSize);\n this.pagerdropdownModule['dropDownListObject'].text = oldProp.pageSize + '';\n }\n }\n }\n }\n };\n Pager.prototype.pagerTemplate = function () {\n if (this.isReactTemplate() && this.hasParent) {\n return;\n }\n var result;\n this.element.classList.add('e-pagertemplate');\n this.compile(this.template);\n var data = {\n currentPage: this.currentPage, pageSize: this.pageSize, pageCount: this.pageCount,\n totalRecordsCount: this.totalRecordsCount, totalPages: this.totalPages\n };\n var tempId = this.element.parentElement.id + '_template';\n if (this.isReactTemplate() && !this.isVue) {\n this.getPagerTemplate()(data, this, 'pagerTemplate', tempId, null, null, this.element);\n this.renderReactTemplates();\n }\n else {\n result = this.isVue ? this.getPagerTemplate()(data, this, 'pagerTemplate', null, null, null, null, this.root)\n : this.getPagerTemplate()(data);\n appendChildren(this.element, result);\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Pager.prototype.updateTotalPages = function () {\n this.totalPages = this.isAllPage ? 1 : (this.totalRecordsCount % this.pageSize === 0) ? (this.totalRecordsCount / this.pageSize) :\n (parseInt((this.totalRecordsCount / this.pageSize).toString(), 10) + 1);\n };\n /**\n * @returns {Function} returns the function\n * @hidden\n */\n Pager.prototype.getPagerTemplate = function () {\n return this.templateFn;\n };\n /**\n * @param {string | Function} template - specifies the template\n * @returns {Function} returns the function\n * @hidden\n */\n Pager.prototype.compile = function (template) {\n if (template) {\n try {\n if (typeof template === 'function') {\n this.templateFn = templateCompiler(template);\n }\n else {\n if (document.querySelectorAll(template).length) {\n this.templateFn = templateCompiler(document.querySelector(template).innerHTML.trim());\n }\n else {\n this.templateFn = templateCompiler(template);\n }\n }\n }\n catch (e) {\n this.templateFn = templateCompiler(template);\n }\n }\n return undefined;\n };\n /**\n * Refreshes page count, pager information and external message.\n *\n * @returns {void}\n */\n Pager.prototype.refresh = function () {\n if (this.template) {\n if (this.isReactTemplate()) {\n this.updateTotalPages();\n this.notify(this.pageRefresh, {});\n }\n else {\n this.element.innerHTML = '';\n this.updateTotalPages();\n this.pagerTemplate();\n }\n }\n else {\n this.updateRTL();\n var focusedTabIndexElement = this.getFocusedTabindexElement();\n this.containerModule.refresh();\n this.removeTabindexLastElements();\n if (focusedTabIndexElement && focusedTabIndexElement.classList.contains('e-disable')) {\n if (this.checkFocusInAdaptiveMode(focusedTabIndexElement)) {\n this.changeFocusInAdaptiveMode(focusedTabIndexElement);\n }\n else {\n this.setPagerFocusForActiveElement();\n }\n }\n if (this.enablePagerMessage) {\n this.pagerMessageModule.refresh();\n }\n if (this.pagerdropdownModule) {\n this.pagerdropdownModule.refresh();\n }\n if (this.enableExternalMessage && this.externalMessageModule) {\n this.externalMessageModule.refresh();\n }\n this.setTabIndexForFocusLastElement();\n this.resizePager();\n }\n };\n Pager.prototype.updateRTL = function () {\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n else {\n this.element.classList.remove('e-rtl');\n }\n };\n Pager.prototype.initLocalization = function () {\n this.localeObj = new L10n(this.getModuleName(), this.defaultConstants, this.locale);\n };\n Pager.prototype.updateQueryString = function (value) {\n var updatedUrl = this.getUpdatedURL(window.location.href, 'page', value.toString());\n window.history.pushState({ path: updatedUrl }, '', updatedUrl);\n };\n Pager.prototype.getUpdatedURL = function (uri, key, value) {\n var regExp = RegExp;\n var regx = new regExp('([?|&])' + key + '=.*?(&|#|$)', 'i');\n if (uri.match(regx)) {\n return uri.replace(regx, '$1' + key + '=' + value + '$2');\n }\n else {\n var hash = '';\n if (uri.indexOf('#') !== -1) {\n hash = uri.replace(/.*#/, '#');\n uri = uri.replace(/#.*/, '');\n }\n return uri + (uri.indexOf('?') !== -1 ? '&' : '?') + key + '=' + value + hash;\n }\n };\n Pager.prototype.renderFirstPrevDivForDevice = function () {\n this.element.appendChild(createElement('div', {\n className: 'e-mfirst e-icons e-icon-first',\n attrs: { title: this.getLocalizedLabel('firstPageTooltip'), tabindex: '-1' }\n }));\n this.element.appendChild(createElement('div', {\n className: 'e-mprev e-icons e-icon-prev',\n attrs: { title: this.getLocalizedLabel('previousPageTooltip'), tabindex: '-1' }\n }));\n };\n Pager.prototype.renderNextLastDivForDevice = function () {\n this.element.appendChild(createElement('div', {\n className: 'e-mnext e-icons e-icon-next',\n attrs: { title: this.getLocalizedLabel('nextPageTooltip'), tabindex: '-1' }\n }));\n this.element.appendChild(createElement('div', {\n className: 'e-mlast e-icons e-icon-last',\n attrs: { title: this.getLocalizedLabel('lastPageTooltip'), tabindex: '-1' }\n }));\n };\n Pager.prototype.addAriaLabel = function () {\n var classList = ['.e-mfirst', '.e-mprev', '.e-mnext', '.e-mlast'];\n if (!Browser.isDevice) {\n for (var i = 0; i < classList.length; i++) {\n var element = this.element.querySelector(classList[parseInt(i.toString(), 10)]);\n element.setAttribute('aria-label', element.getAttribute('title'));\n }\n }\n };\n Pager.prototype.isReactTemplate = function () {\n return (this.isReact || this.isVue) && this.template && typeof (this.template) !== 'string';\n };\n /**\n * Loop through all the inner elements of pager to calculate the required width for pager child elements.\n *\n * @returns {number} returns the actual width occupied by pager elements.\n */\n Pager.prototype.calculateActualWidth = function () {\n var pagerElements = this.element.querySelectorAll(\n /* tslint:disable-next-line:max-line-length */\n '.e-mfirst, .e-mprev, .e-icon-first, .e-icon-prev, .e-pp:not(.e-disable), .e-numericitem:not(.e-hide), .e-numericitem.e-active.e-hide, .e-np:not(.e-disable), .e-icon-next, .e-icon-last, .e-parentmsgbar, .e-mnext, .e-mlast, .e-pagerdropdown, .e-pagerconstant');\n var actualWidth = 0;\n for (var i = 0; i < pagerElements.length; i++) {\n if (getComputedStyle(pagerElements[parseInt(i.toString(), 10)]).display !== 'none') {\n actualWidth += pagerElements[parseInt(i.toString(), 10)].offsetWidth\n + parseFloat(getComputedStyle(pagerElements[parseInt(i.toString(), 10)]).marginLeft)\n + parseFloat(getComputedStyle(pagerElements[parseInt(i.toString(), 10)]).marginRight);\n }\n }\n var pagerContainer = this.element.querySelector('.e-pagercontainer');\n actualWidth += parseFloat(getComputedStyle(pagerContainer).marginLeft)\n + parseFloat(getComputedStyle(pagerContainer).marginRight);\n return actualWidth;\n };\n /**\n * Resize pager component by hiding pager component's numeric items based on total width available for pager.\n *\n * @returns {void}\n */\n Pager.prototype.resizePager = function () {\n var _this = this;\n var isStyleApplied = this.element.classList.contains('e-pager') ? getComputedStyle(this.element).getPropertyValue('border-style').includes('solid') : null;\n if (!(this.template) && isStyleApplied) {\n var pagerContainer = this.element.querySelector('.e-pagercontainer');\n var actualWidth = this.calculateActualWidth();\n var pagerWidth = this.element.clientWidth\n - parseFloat(getComputedStyle(this.element).paddingLeft)\n - parseFloat(getComputedStyle(this.element).paddingRight)\n - parseFloat(getComputedStyle(this.element).marginLeft)\n - parseFloat(getComputedStyle(this.element).marginRight);\n var numItems = pagerContainer.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n var hiddenNumItems = pagerContainer.querySelectorAll('.e-numericitem.e-hide:not([style*=\"display: none\"])');\n var hideFrom = numItems.length;\n var showFrom = 1;\n var bufferWidth = (!isNullOrUndefined(parentsUntil(this.element, 'e-bigger'))) ? 10 : 5;\n var NP = pagerContainer.querySelector('.e-np');\n var PP = pagerContainer.querySelector('.e-pp');\n var detailItems = this.element.querySelectorAll('.e-parentmsgbar:not(.e-hide):not([style*=\"display: none\"]), .e-pagesizes:not(.e-hide):not([style*=\"display: none\"])');\n var totDetailWidth_1 = 0;\n if (detailItems.length) {\n detailItems.forEach(function (item) {\n totDetailWidth_1 += item.offsetWidth;\n });\n this.averageDetailWidth = totDetailWidth_1 / detailItems.length;\n }\n var totalWidth = 0;\n /**\n * Loop to calculate average width of numeric item.\n */\n for (var i = 0; i < numItems.length; i++) {\n totalWidth += numItems[parseInt(i.toString(), 10)].offsetWidth\n + parseFloat(getComputedStyle(numItems[parseInt(i.toString(), 10)]).marginLeft)\n + parseFloat(getComputedStyle(numItems[parseInt(i.toString(), 10)]).marginRight);\n }\n var numericItemWidth = totalWidth / numItems.length;\n /**\n * Condition to hide numeric items when calculated actual width exceeds available pager space.\n */\n if (pagerWidth > 0 && (actualWidth >= (pagerWidth - (numericItemWidth ? numericItemWidth : 0)))) {\n this.isPagerResized = true;\n if (this.currentPage !== this.totalPages) {\n classList(NP, ['e-numericitem', 'e-pager-default'], ['e-nextprevitemdisabled', 'e-disable']);\n }\n actualWidth = this.calculateActualWidth();\n var diff = Math.abs((actualWidth) - pagerWidth);\n // To calculate number of numeric items need to be hidden.\n var numToHide = Math.ceil(diff / (numericItemWidth));\n numToHide = (numToHide === 0) ? 1 : (numToHide > numItems.length) ? (numItems.length - 1) : numToHide;\n for (var i = 1; i <= numToHide; i++) {\n var hideIndex = hideFrom - parseInt(i.toString(), 10);\n numItems = pagerContainer.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n if (this.currentPage !== 1 && ((parseInt(numItems[Math.abs(hideIndex)].getAttribute('index'), 10) === this.currentPage)\n || parseInt(numItems[numItems.length - 1].getAttribute('index'), 10) === this.currentPage)) {\n hideIndex = 0;\n classList(PP, ['e-numericitem', 'e-pager-default'], ['e-nextprevitemdisabled', 'e-disable']);\n }\n if (numItems[Math.abs(hideIndex)] && !(numItems[Math.abs(hideIndex)].classList.contains('e-currentitem'))) {\n numItems[Math.abs(hideIndex)].classList.add('e-hide');\n }\n }\n numItems = pagerContainer.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n // To hide Pager message elements when no more numeric items available to hide.\n if (numItems.length <= 1 && detailItems.length && window.innerWidth >= 768) {\n var pagerDetailItemsWidth = this.calculateActualWidth();\n if ((pagerDetailItemsWidth) > (pagerWidth - bufferWidth)) {\n var detailtoHide = Math.floor((pagerWidth - (pagerDetailItemsWidth - totDetailWidth_1))\n / this.averageDetailWidth);\n detailtoHide = detailItems.length - detailtoHide;\n for (var i = 0; i < (detailtoHide > detailItems.length ? detailItems.length : detailtoHide); i++) {\n detailItems[parseInt(i.toString(), 10)].classList.add('e-hide');\n }\n }\n }\n }\n /**\n * Condition to show numeric items when space availble in pager at dom.\n */\n else if (actualWidth < (pagerWidth) && hiddenNumItems.length) {\n var diff = Math.abs(pagerWidth - (actualWidth));\n var hiddenDetailItems = this.element.querySelectorAll('.e-parentmsgbar.e-hide, .e-pagesizes.e-hide');\n // To show Pager message elements.\n if (hiddenDetailItems.length && (diff > (this.averageDetailWidth + (this.averageDetailWidth / 4)))) {\n hiddenDetailItems[(hiddenDetailItems.length - 1)].classList.remove('e-hide');\n }\n if ((diff > (numericItemWidth * 2) && !hiddenDetailItems.length && window.innerWidth >= 768)) {\n // To calculate number of numeric items need to be shown.\n var numToShow = Math.floor((diff) / (numericItemWidth + bufferWidth));\n numToShow = (numToShow > hiddenNumItems.length) ? hiddenNumItems.length : (numToShow - 1);\n //Seggregating hidden num items as less index and greater index values than current page value.\n var lesserIndexItems = Array.from(hiddenNumItems).filter(function (item) { return parseInt(item.getAttribute('index'), 10) < _this.currentPage; }).sort(function (a, b) { return parseInt(b.getAttribute('index'), 10) - parseInt(a.getAttribute('index'), 10); });\n var greaterIndexItems = Array.from(hiddenNumItems).filter(function (item) { return parseInt(item.getAttribute('index'), 10) > _this.currentPage; });\n var showItems = (lesserIndexItems.length && lesserIndexItems)\n || (greaterIndexItems.length && greaterIndexItems);\n for (var i = 1; i <= numToShow; i++) {\n var showItem = showItems && showItems[Math.abs(showFrom - i)];\n if (showItem) {\n showItem.classList.remove('e-hide');\n if (showItem === showItems[showItems.length - 1]) {\n showItems = null;\n }\n }\n }\n }\n }\n numItems = pagerContainer.querySelectorAll('.e-numericitem:not(.e-hide):not([style*=\"display: none\"]):not(.e-np):not(.e-pp)');\n if (numItems.length) {\n if (parseInt(numItems[numItems.length - 1].getAttribute('index'), 10) === this.totalPages) {\n classList(NP, ['e-nextprevitemdisabled', 'e-disable'], ['e-numericitem', 'e-pager-default']);\n }\n if (parseInt(numItems[0].getAttribute('index'), 10) === 1) {\n classList(PP, ['e-nextprevitemdisabled', 'e-disable'], ['e-numericitem', 'e-pager-default']);\n }\n var isLastSet = Array.from(numItems).some(function (item) { return parseInt(item.getAttribute('index'), 10) === _this.totalPages; });\n var ppIndex = (parseInt(numItems[0].getAttribute('index'), 10) - (isLastSet ? this.avgNumItems : numItems.length));\n PP.setAttribute('index', (ppIndex < 1) ? '1' : ppIndex.toString());\n NP.setAttribute('index', (parseInt(numItems[numItems.length - 1].getAttribute('index'), 10) + 1).toString());\n this.avgNumItems = isLastSet ? this.avgNumItems : numItems.length;\n }\n /**\n * Condition to add adaptive class name and set pagermessage content with \"/\" when media query css has been applied.\n */\n if (((this.element.offsetWidth < 769) && window.getComputedStyle(this.element.querySelector('.e-mfirst')).getPropertyValue('display') !== 'none') && this.pageSizes) {\n this.element.querySelector('.e-pagesizes').classList.remove('e-hide');\n this.element.querySelector('.e-parentmsgbar').classList.remove('e-hide');\n this.element.classList.add('e-adaptive');\n this.element.querySelector('.e-pagenomsg').innerHTML = this.element.offsetWidth < 481 ? (this.currentPage + ' / ' + this.totalPages) : this.pagerMessageModule.format(this.getLocalizedLabel('currentPageInfo'), [this.totalRecordsCount === 0 ? 0 :\n this.currentPage, this.totalPages || 0, this.totalRecordsCount || 0]) + ' ';\n }\n else {\n this.element.classList.remove('e-adaptive');\n this.element.querySelector('.e-pagenomsg').innerHTML = this.pagerMessageModule.format(this.getLocalizedLabel('currentPageInfo'), [this.totalRecordsCount === 0 ? 0 :\n this.currentPage, this.totalPages || 0, this.totalRecordsCount || 0]) + ' ';\n }\n }\n };\n __decorate([\n Property(false)\n ], Pager.prototype, \"enableQueryString\", void 0);\n __decorate([\n Property(false)\n ], Pager.prototype, \"enableExternalMessage\", void 0);\n __decorate([\n Property(true)\n ], Pager.prototype, \"enablePagerMessage\", void 0);\n __decorate([\n Property(12)\n ], Pager.prototype, \"pageSize\", void 0);\n __decorate([\n Property(10)\n ], Pager.prototype, \"pageCount\", void 0);\n __decorate([\n Property(1)\n ], Pager.prototype, \"currentPage\", void 0);\n __decorate([\n Property()\n ], Pager.prototype, \"totalRecordsCount\", void 0);\n __decorate([\n Property()\n ], Pager.prototype, \"externalMessage\", void 0);\n __decorate([\n Property(false)\n ], Pager.prototype, \"pageSizes\", void 0);\n __decorate([\n Property()\n ], Pager.prototype, \"template\", void 0);\n __decorate([\n Property('')\n ], Pager.prototype, \"customText\", void 0);\n __decorate([\n Event()\n ], Pager.prototype, \"click\", void 0);\n __decorate([\n Property('')\n ], Pager.prototype, \"cssClass\", void 0);\n __decorate([\n Event()\n ], Pager.prototype, \"dropDownChanged\", void 0);\n __decorate([\n Event()\n ], Pager.prototype, \"created\", void 0);\n Pager = __decorate([\n NotifyPropertyChanges\n ], Pager);\n return Pager;\n}(Component));\nexport { Pager };\n","/**\n * IncrementalSearch module file\n */\nvar queryString = '';\nvar prevString = '';\nvar tempQueryString = '';\nvar matches = [];\nvar activeClass = 'e-active';\nvar prevElementId = '';\n/**\n * Search and focus the list item based on key code matches with list text content\n *\n * @param { number } keyCode - Specifies the key code which pressed on keyboard events.\n * @param { HTMLElement[]} items - Specifies an array of HTMLElement, from which matches find has done.\n * @param { number } selectedIndex - Specifies the selected item in list item, so that search will happen\n * after selected item otherwise it will do from initial.\n * @param { boolean } ignoreCase - Specifies the case consideration when search has done.\n * @param {string} elementId - Specifies the list element ID.\n * @returns {Element} Returns list item based on key code matches with list text content.\n */\nexport function incrementalSearch(keyCode, items, selectedIndex, ignoreCase, elementId, queryStringUpdated, currentValue, isVirtual, refresh) {\n if (!queryStringUpdated || queryString === '') {\n if (tempQueryString != '') {\n queryString = tempQueryString + String.fromCharCode(keyCode);\n tempQueryString = '';\n }\n else {\n queryString += String.fromCharCode(keyCode);\n }\n }\n else if (queryString == prevString) {\n tempQueryString = String.fromCharCode(keyCode);\n }\n if (isVirtual) {\n setTimeout(function () {\n tempQueryString = '';\n }, 700);\n setTimeout(function () {\n queryString = '';\n }, 3000);\n }\n else {\n setTimeout(function () {\n queryString = '';\n }, 1000);\n }\n var index;\n queryString = ignoreCase ? queryString.toLowerCase() : queryString;\n if (prevElementId === elementId && prevString === queryString && !refresh) {\n for (var i = 0; i < matches.length; i++) {\n if (matches[i].classList.contains(activeClass)) {\n index = i;\n break;\n }\n if (currentValue && matches[i].textContent.toLowerCase() === currentValue.toLowerCase()) {\n index = i;\n break;\n }\n }\n index = index + 1;\n if (isVirtual) {\n return matches[index] && matches.length - 1 != index ? matches[index] : matches[matches.length];\n }\n return matches[index] ? matches[index] : matches[0];\n }\n else {\n var listItems = items;\n var strLength = queryString.length;\n var text = void 0;\n var item = void 0;\n selectedIndex = selectedIndex ? selectedIndex + 1 : 0;\n var i = selectedIndex;\n matches = [];\n do {\n if (i === listItems.length) {\n i = -1;\n }\n if (i === -1) {\n index = 0;\n }\n else {\n index = i;\n }\n item = listItems[index];\n text = ignoreCase ? item.innerText.toLowerCase() : item.innerText;\n if (text.substr(0, strLength) === queryString) {\n matches.push(listItems[index]);\n }\n i++;\n } while (i !== selectedIndex);\n prevString = queryString;\n prevElementId = elementId;\n if (isVirtual) {\n var indexUpdated = false;\n for (var i_1 = 0; i_1 < matches.length; i_1++) {\n if (currentValue && matches[i_1].textContent.toLowerCase() === currentValue.toLowerCase()) {\n index = i_1;\n indexUpdated = true;\n break;\n }\n }\n if (currentValue && indexUpdated) {\n index = index + 1;\n }\n return matches[index] ? matches[index] : matches[0];\n }\n return matches[0];\n }\n}\n/**\n * Search the list item based on given input value matches with search type.\n *\n * @param {string} inputVal - Specifies the given input value.\n * @param {HTMLElement[]} items - Specifies the list items.\n * @param {SearchType} searchType - Specifies the filter type.\n * @param {boolean} ignoreCase - Specifies the case sensitive option for search operation.\n * @returns {Element | number} Returns the search matched items.\n */\nexport function Search(inputVal, items, searchType, ignoreCase, dataSource, fields, type) {\n var listItems = items;\n ignoreCase = ignoreCase !== undefined && ignoreCase !== null ? ignoreCase : true;\n var itemData = { item: null, index: null };\n if (inputVal && inputVal.length) {\n var strLength = inputVal.length;\n var queryStr = ignoreCase ? inputVal.toLocaleLowerCase() : inputVal;\n queryStr = escapeCharRegExp(queryStr);\n var _loop_1 = function (i, itemsData) {\n var item = itemsData[i];\n var text = void 0;\n var filterValue;\n if (items && dataSource) {\n var checkField_1 = item;\n var fieldValue_1 = fields.text.split('.');\n dataSource.filter(function (data) {\n Array.prototype.slice.call(fieldValue_1).forEach(function (value) {\n /* eslint-disable security/detect-object-injection */\n if (type === 'object' && (!data.isHeader && checkField_1.textContent.toString().indexOf(data[value]) !== -1) && checkField_1.getAttribute('data-value') === data[fields.value].toString() || type === 'string' && checkField_1.textContent.toString().indexOf(data) !== -1) {\n filterValue = type === 'object' ? data[value] : data;\n }\n });\n });\n }\n text = dataSource && filterValue ? (ignoreCase ? filterValue.toString().toLocaleLowerCase() : filterValue).replace(/^\\s+|\\s+$/g, '') : (ignoreCase ? item.textContent.toLocaleLowerCase() : item.textContent).replace(/^\\s+|\\s+$/g, '');\n /* eslint-disable security/detect-non-literal-regexp */\n if ((searchType === 'Equal' && text === queryStr) || (searchType === 'StartsWith' && text.substr(0, strLength) === queryStr) || (searchType === 'EndsWith' && text.substr(text.length - queryStr.length) === queryStr) || (searchType === 'Contains' && new RegExp(queryStr, \"g\").test(text))) {\n itemData.item = item;\n itemData.index = i;\n return { value: { item: item, index: i } };\n }\n };\n for (var i = 0, itemsData = listItems; i < itemsData.length; i++) {\n var state_1 = _loop_1(i, itemsData);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n return itemData;\n /* eslint-enable security/detect-non-literal-regexp */\n }\n return itemData;\n}\n/* eslint-enable security/detect-object-injection */\nexport function escapeCharRegExp(value) {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\nexport function resetIncrementalSearchValues(elementId) {\n if (prevElementId === elementId) {\n prevElementId = '';\n prevString = '';\n queryString = '';\n matches = [];\n }\n}\n","/* eslint-disable no-inner-declarations */\nimport { extend, merge, isNullOrUndefined, getValue, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { attributes, prepend, isVisible, append, addClass } from '@syncfusion/ej2-base';\nimport { compile } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nexport var cssClass = {\n li: 'e-list-item',\n ul: 'e-list-parent e-ul',\n group: 'e-list-group-item',\n icon: 'e-list-icon',\n text: 'e-list-text',\n check: 'e-list-check',\n checked: 'e-checked',\n selected: 'e-selected',\n expanded: 'e-expanded',\n textContent: 'e-text-content',\n hasChild: 'e-has-child',\n level: 'e-level',\n url: 'e-list-url',\n collapsible: 'e-icon-collapsible',\n disabled: 'e-disabled',\n image: 'e-list-img',\n iconWrapper: 'e-icon-wrapper',\n anchorWrap: 'e-anchor-wrap',\n navigable: 'e-navigable'\n};\n/**\n * Base List Generator\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var ListBase;\n(function (ListBase) {\n /**\n *\n * Default mapped fields.\n */\n ListBase.defaultMappedFields = {\n id: 'id',\n text: 'text',\n url: 'url',\n value: 'value',\n isChecked: 'isChecked',\n enabled: 'enabled',\n expanded: 'expanded',\n selected: 'selected',\n iconCss: 'iconCss',\n child: 'child',\n isVisible: 'isVisible',\n hasChildren: 'hasChildren',\n tooltip: 'tooltip',\n htmlAttributes: 'htmlAttributes',\n urlAttributes: 'urlAttributes',\n imageAttributes: 'imageAttributes',\n imageUrl: 'imageUrl',\n groupBy: null,\n sortBy: null\n };\n var defaultAriaAttributes = {\n level: 1,\n listRole: 'presentation',\n itemRole: 'presentation',\n groupItemRole: 'group',\n itemText: 'list-item',\n wrapperRole: 'presentation'\n };\n var defaultListBaseOptions = {\n showCheckBox: false,\n showIcon: false,\n enableHtmlSanitizer: false,\n expandCollapse: false,\n fields: ListBase.defaultMappedFields,\n ariaAttributes: defaultAriaAttributes,\n listClass: '',\n itemClass: '',\n processSubChild: false,\n sortOrder: 'None',\n template: null,\n groupTemplate: null,\n headerTemplate: null,\n expandIconClass: 'e-icon-collapsible',\n moduleName: 'list',\n expandIconPosition: 'Right',\n itemNavigable: false\n };\n /**\n * Function helps to created and return the UL Li element based on your data.\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} [options] - Specifies the list options that need to provide.\n *\n * @param {boolean} [isSingleLevel] - Specifies the list options that need to provide.\n *\n * @param {any} [componentInstance] - Specifies the list options that need to provide.\n *\n * @returns {createElement} createListFromJson - Specifies the list options that need to provide.\n */\n function createList(createElement, dataSource, options, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var type = typeofData(dataSource).typeof;\n if (type === 'string' || type === 'number') {\n return createListFromArray(createElement, dataSource, isSingleLevel, options, componentInstance);\n }\n else {\n return createListFromJson(createElement, dataSource, options, ariaAttributes.level, isSingleLevel, componentInstance);\n }\n }\n ListBase.createList = createList;\n /**\n * Function helps to created an element list based on string array input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {boolean} [isSingleLevel] - Specifies the list options that need to provide.\n *\n * @param {ListBaseOptions} [options] - Specifies the list options that need to provide.\n *\n * @param {any} [componentInstance] - Specifies the list options that need to provide.\n *\n * @returns {createElement} generateUL - returns the list options that need to provide.\n */\n function createListFromArray(createElement, dataSource, isSingleLevel, options, componentInstance) {\n var subChild = createListItemFromArray(createElement, dataSource, isSingleLevel, options, componentInstance);\n return generateUL(createElement, subChild, null, options);\n }\n ListBase.createListFromArray = createListFromArray;\n /**\n * Function helps to created an element list based on string array input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {boolean} [isSingleLevel] - Specifies the list options that need to provide.\n *\n * @param {ListBaseOptions} [options] - Specifies the list options that need to provide.\n *\n * @param {any} [componentInstance] - Specifies the list options that need to provide.\n *\n * @returns {HTMLElement[]} subChild - returns the list options that need to provide.\n */\n function createListItemFromArray(createElement, dataSource, isSingleLevel, options, componentInstance) {\n var subChild = [];\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n var id = generateId(); // generate id for drop-down-list option.\n for (var i = 0; i < dataSource.length; i++) {\n if (isNullOrUndefined(dataSource[i])) {\n continue;\n }\n var li = void 0;\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: dataSource[i],\n options: curOpt\n };\n curOpt.itemCreating(curData);\n }\n if (isSingleLevel) {\n li = generateSingleLevelLI(createElement, dataSource[i], undefined, null, null, [], null, id, i, options);\n }\n else {\n li = generateLI(createElement, dataSource[i], undefined, null, null, options, componentInstance);\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: dataSource[i],\n item: li,\n options: curOpt\n };\n curOpt.itemCreated(curData);\n }\n subChild.push(li);\n }\n return subChild;\n }\n ListBase.createListItemFromArray = createListItemFromArray;\n /**\n * Function helps to created an element list based on array of JSON input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} [options] - Specifies the list options that need to provide.\n *\n * @param {number} [level] - Specifies the list options that need to provide.\n *\n * @param {boolean} [isSingleLevel] - Specifies the list options that need to provide.\n *\n * @param {any} [componentInstance] - Specifies the list options that need to provide.\n *\n * @returns {HTMLElement[]} child - returns the list options that need to provide.\n */\n function createListItemFromJson(createElement, dataSource, options, level, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n var fields = (componentInstance &&\n (componentInstance.getModuleName() === 'listview' || componentInstance.getModuleName() === 'multiselect'))\n ? curOpt.fields : extend({}, ListBase.defaultMappedFields, curOpt.fields);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var id;\n var checkboxElement = [];\n if (level) {\n ariaAttributes.level = level;\n }\n var child = [];\n var li;\n var anchorElement;\n if (dataSource && dataSource.length && !isNullOrUndefined(typeofData(dataSource).item) &&\n !Object.prototype.hasOwnProperty.call(typeofData(dataSource).item, fields.id)) {\n id = generateId(); // generate id for drop-down-list option.\n }\n for (var i = 0; i < dataSource.length; i++) {\n var fieldData = getFieldValues(dataSource[i], fields);\n if (isNullOrUndefined(dataSource[i])) {\n continue;\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: fieldData[fields.text],\n options: curOpt,\n fields: fields\n };\n curOpt.itemCreating(curData);\n }\n var curItem = dataSource[i];\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n fieldData = getFieldValues(dataSource[i], fields);\n }\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.id) && !isNullOrUndefined(fieldData[fields.id])) {\n id = fieldData[fields.id];\n }\n var innerEle = [];\n if (curOpt.showCheckBox) {\n if (curOpt.itemNavigable && (fieldData[fields.url] || fieldData[fields.urlAttributes])) {\n checkboxElement.push(createElement('input', { className: cssClass.check, attrs: { type: 'checkbox' } }));\n }\n else {\n innerEle.push(createElement('input', { className: cssClass.check, attrs: { type: 'checkbox' } }));\n }\n }\n if (isSingleLevel === true) {\n if (curOpt.showIcon && Object.prototype.hasOwnProperty.call(fieldData, fields.iconCss)\n && !isNullOrUndefined(fieldData[fields.iconCss])) {\n innerEle.push(createElement('span', { className: cssClass.icon + ' ' + fieldData[fields.iconCss] }));\n }\n li = generateSingleLevelLI(createElement, curItem, fieldData, fields, curOpt.itemClass, innerEle, (Object.prototype.hasOwnProperty.call(curItem, 'isHeader') &&\n curItem.isHeader) ? true : false, id, i, options);\n anchorElement = li.querySelector('.' + cssClass.anchorWrap);\n if (curOpt.itemNavigable && checkboxElement.length) {\n prepend(checkboxElement, li.firstElementChild);\n }\n }\n else {\n li = generateLI(createElement, curItem, fieldData, fields, curOpt.itemClass, options, componentInstance);\n li.classList.add(cssClass.level + '-' + ariaAttributes.level);\n li.setAttribute('aria-level', ariaAttributes.level.toString());\n if (ariaAttributes.groupItemRole === 'presentation' || ariaAttributes.itemRole === 'presentation') {\n li.removeAttribute('aria-level');\n }\n anchorElement = li.querySelector('.' + cssClass.anchorWrap);\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.tooltip)) {\n var tooltipText = fieldData[fields.tooltip];\n if (options && options.enableHtmlSanitizer) {\n tooltipText = SanitizeHtmlHelper.sanitize(tooltipText);\n }\n else {\n var tooltipTextElement = createElement('span', { innerHTML: tooltipText });\n tooltipText = tooltipTextElement.innerText;\n tooltipTextElement = null;\n }\n li.setAttribute('title', tooltipText);\n }\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {\n var htmlAttributes = fieldData[fields.htmlAttributes];\n // Check if 'class' attribute is present and not an empty string\n if ('class' in htmlAttributes && typeof htmlAttributes['class'] === 'string' && htmlAttributes['class'].trim() === '') {\n delete htmlAttributes['class'];\n }\n setAttribute(li, htmlAttributes);\n }\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.enabled) && fieldData[fields.enabled] === false) {\n li.classList.add(cssClass.disabled);\n }\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.isVisible) && fieldData[fields.isVisible] === false) {\n li.style.display = 'none';\n }\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.imageUrl) && !isNullOrUndefined(fieldData[fields.imageUrl])\n && !curOpt.template) {\n var attr = { src: fieldData[fields.imageUrl], alt: !isNullOrUndefined(fieldData.name) ? ('Displaying ' + fieldData.name + ' Image') : 'Displaying Image' };\n merge(attr, fieldData[fields.imageAttributes]);\n var imageElemnt = createElement('img', { className: cssClass.image, attrs: attr });\n if (anchorElement) {\n anchorElement.insertAdjacentElement('afterbegin', imageElemnt);\n }\n else {\n prepend([imageElemnt], li.firstElementChild);\n }\n }\n if (curOpt.showIcon && Object.prototype.hasOwnProperty.call(fieldData, fields.iconCss) &&\n !isNullOrUndefined(fieldData[fields.iconCss]) && !curOpt.template) {\n var iconElement = createElement('div', { className: cssClass.icon + ' ' + fieldData[fields.iconCss] });\n if (anchorElement) {\n anchorElement.insertAdjacentElement('afterbegin', iconElement);\n }\n else {\n prepend([iconElement], li.firstElementChild);\n }\n }\n if (innerEle.length) {\n prepend(innerEle, li.firstElementChild);\n }\n if (curOpt.itemNavigable && checkboxElement.length) {\n prepend(checkboxElement, li.firstElementChild);\n }\n processSubChild(createElement, fieldData, fields, dataSource, curOpt, li, ariaAttributes.level);\n }\n if (anchorElement) {\n addClass([li], [cssClass.navigable]);\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: fieldData[fields.text],\n item: li,\n options: curOpt,\n fields: fields\n };\n curOpt.itemCreated(curData);\n }\n checkboxElement = [];\n child.push(li);\n }\n return child;\n }\n ListBase.createListItemFromJson = createListItemFromJson;\n /**\n * Function helps to created an element list based on array of JSON input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} [options] - Specifies the list options that need to provide.\n *\n * @param {number} [level] - Specifies the list options that need to provide.\n *\n * @param {boolean} [isSingleLevel] - Specifies the list options that need to provide.\n *\n * @param {any} [componentInstance] - Specifies the list options that need to provide.\n *\n * @returns {createElement} generateUL - Specifies the list options that need to provide.\n */\n function createListFromJson(createElement, dataSource, options, level, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var li = createListItemFromJson(createElement, dataSource, options, level, isSingleLevel, componentInstance);\n return generateUL(createElement, li, curOpt.listClass, options);\n }\n ListBase.createListFromJson = createListFromJson;\n /**\n * Return the next or previous visible element.\n *\n * @param {Element[]|NodeList} elementArray - An element array to find next or previous element.\n * @param {Element} element - An element to find next or previous after this element.\n * @param {boolean} [isPrevious] - Specify when the need get previous element from array.\n * @returns {Element|undefined} The next or previous visible element, or undefined if the element array is empty.\n */\n function getSiblingLI(elementArray, element, isPrevious) {\n cssClass = getModuleClass(defaultListBaseOptions.moduleName);\n if (!elementArray || !elementArray.length) {\n return void 0;\n }\n var siblingLI;\n var liIndex;\n var liCollections = Array.prototype.slice.call(elementArray);\n if (element) {\n liIndex = indexOf(element, liCollections);\n }\n else {\n liIndex = (isPrevious === true ? liCollections.length : -1);\n }\n siblingLI = liCollections[liIndex + (isPrevious === true ? -1 : 1)];\n while (siblingLI && (!isVisible(siblingLI) || siblingLI.classList.contains(cssClass.disabled))) {\n liIndex = liIndex + (isPrevious === true ? -1 : 1);\n siblingLI = liCollections[liIndex];\n }\n return siblingLI;\n }\n ListBase.getSiblingLI = getSiblingLI;\n /**\n * Return the index of the li element\n *\n * @param {Element} item - An element to find next or previous after this element.\n * @param {Element[]} elementArray - An element array to find index of given li.\n * @returns {number} - The index of the item in the element array, or undefined if either parameter is false.\n */\n function indexOf(item, elementArray) {\n if (!elementArray || !item) {\n return void 0;\n }\n else {\n var liCollections = elementArray;\n liCollections = Array.prototype.slice.call(elementArray);\n return liCollections.indexOf(item);\n }\n }\n ListBase.indexOf = indexOf;\n /**\n * Returns the grouped data from given dataSource.\n *\n * @param {{Object}[]} dataSource - The JSON data which is necessary to process.\n * @param {FieldsMapping} fields - Fields that are mapped from the data source.\n * @param {SortOrder} [sortOrder='None'] - Specifies final result sort order. Defaults to 'None'.\n * @returns {Object[]} - The grouped data.\n */\n function groupDataSource(dataSource, fields, sortOrder) {\n if (sortOrder === void 0) { sortOrder = 'None'; }\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n var cusQuery = new Query().group(curFields.groupBy);\n // need to remove once sorting issues fixed in DataManager\n cusQuery = addSorting(sortOrder, 'key', cusQuery);\n var ds = getDataSource(dataSource, cusQuery);\n dataSource = [];\n for (var j = 0; j < ds.length; j++) {\n var itemObj = ds[j].items;\n var grpItem = {};\n var hdr = 'isHeader';\n grpItem[curFields.text] = ds[j].key;\n grpItem[\"\" + hdr] = true;\n var newtext = curFields.text;\n if (newtext === 'id') {\n newtext = 'text';\n grpItem[\"\" + newtext] = ds[j].key;\n }\n grpItem._id = 'group-list-item-' + (ds[j].key ?\n ds[j].key.toString().trim() : 'undefined');\n grpItem.items = itemObj;\n dataSource.push(grpItem);\n for (var k = 0; k < itemObj.length; k++) {\n dataSource.push(itemObj[k]);\n }\n }\n return dataSource;\n }\n ListBase.groupDataSource = groupDataSource;\n /**\n * Returns a sorted query object.\n *\n * @param {SortOrder} sortOrder - Specifies that sort order.\n * @param {string} sortBy - Specifies sortBy fields.\n * @param {Query} query - Pass if any existing query.\n * @returns {Query} - The updated query object with sorting applied.\n */\n function addSorting(sortOrder, sortBy, query) {\n if (query === void 0) { query = new Query(); }\n if (sortOrder === 'Ascending') {\n query.sortBy(sortBy, 'ascending', true);\n }\n else if (sortOrder === 'Descending') {\n query.sortBy(sortBy, 'descending', true);\n }\n else {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[i].fn === 'onSortBy') {\n query.queries.splice(i, 1);\n }\n }\n }\n return query;\n }\n ListBase.addSorting = addSorting;\n /**\n * Return an array of JSON Data that processed based on queries.\n *\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n *\n * @param {Query} query - Specifies query that need to process.\n *\n * @returns {Object[]} - An array of objects representing the retrieved data.\n */\n function getDataSource(dataSource, query) {\n return new DataManager(dataSource)\n .executeLocal(query);\n }\n ListBase.getDataSource = getDataSource;\n /**\n * Created JSON data based the UL and LI element\n *\n * @param {HTMLElement|Element} element - UL element that need to convert as a JSON\n * @param {ListBaseOptions} [options] - Specifies ListBase option for fields.\n * @returns {Object[]} - An array of objects representing the JSON data.\n */\n function createJsonFromElement(element, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var fields = extend({}, ListBase.defaultMappedFields, curOpt.fields);\n var curEle = element.cloneNode(true);\n var jsonAr = [];\n curEle.classList.add('json-parent');\n var childs = curEle.querySelectorAll('.json-parent>li');\n curEle.classList.remove('json-parent');\n for (var i = 0; i < childs.length; i++) {\n var li = childs[i];\n var anchor = li.querySelector('a');\n var ul = li.querySelector('ul');\n var json = {};\n var childNodes = anchor ? anchor.childNodes : li.childNodes;\n var keys = Object.keys(childNodes);\n for (var i_1 = 0; i_1 < childNodes.length; i_1++) {\n if (!(childNodes[Number(keys[i_1])]).hasChildNodes()) {\n json[fields.text] = childNodes[Number(keys[i_1])].textContent;\n }\n }\n var attributes_1 = getAllAttributes(li);\n if (attributes_1.id) {\n json[fields.id] = attributes_1.id;\n delete attributes_1.id;\n }\n else {\n json[fields.id] = generateId();\n }\n if (Object.keys(attributes_1).length) {\n json[fields.htmlAttributes] = attributes_1;\n }\n if (anchor) {\n attributes_1 = getAllAttributes(anchor);\n if (Object.keys(attributes_1).length) {\n json[fields.urlAttributes] = attributes_1;\n }\n }\n if (ul) {\n json[fields.child] = createJsonFromElement(ul, options);\n }\n jsonAr.push(json);\n }\n return jsonAr;\n }\n ListBase.createJsonFromElement = createJsonFromElement;\n /**\n * Determines the type of data in an array of objects, strings, or numbers.\n *\n * @param {Object[] | string[] | number[]} data - The array containing objects, strings, or numbers.\n * @returns {{typeof: (string | null), item: (Object | string | number)}} - An object containing the type of data and the corresponding item.\n */\n function typeofData(data) {\n var match = { typeof: null, item: null };\n for (var i = 0; i < data.length; i++) {\n if (!isNullOrUndefined(data[i])) {\n return match = { typeof: typeof data[i], item: data[i] };\n }\n }\n return match;\n }\n /**\n * Sets attributes on an HTML element.\n *\n * @param {HTMLElement} element - The HTML element to set attributes on.\n * @param {Object.} elementAttributes - An object containing attribute names and their corresponding values.\n * @returns {void}\n */\n function setAttribute(element, elementAttributes) {\n var attr = {};\n merge(attr, elementAttributes);\n if (attr.class) {\n addClass([element], attr.class.split(' '));\n delete attr.class;\n }\n attributes(element, attr);\n }\n /**\n * Retrieves all attributes of an HTML element.\n *\n * @param {HTMLElement} element - The HTML element to retrieve attributes from.\n * @returns {Object.} - An object containing attribute names as keys and their corresponding values as values.\n */\n function getAllAttributes(element) {\n var attributes = {};\n var attr = element.attributes;\n for (var index = 0; index < attr.length; index++) {\n attributes[attr[index].nodeName] = attr[index].nodeValue;\n }\n return attributes;\n }\n /**\n * Created UL element from content template.\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n * @param {string} template - that need to convert and generate li element.\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n * @param {FieldsMapping} [fields] - Specifies fields for mapping the dataSource.\n * @param {ListBaseOptions} [options] - Specifies ListBase option for fields.\n * @param {any} [componentInstance] - Specifies component instance.\n * @returns {HTMLElement} - The generated LI element.\n */\n function renderContentTemplate(createElement, template, dataSource, fields, options, componentInstance) {\n cssClass = getModuleClass(defaultListBaseOptions.moduleName);\n var ulElement = createElement('ul', { className: cssClass.ul, attrs: { role: 'presentation' } });\n var curOpt = extend({}, defaultListBaseOptions, options);\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n var compiledString = compileTemplate(template);\n var liCollection = [];\n var value;\n var id = generateId(); // generate id for drop-down-list option.\n for (var i = 0; i < dataSource.length; i++) {\n var fieldData = getFieldValues(dataSource[i], curFields);\n var curItem = dataSource[i];\n var isHeader = curItem.isHeader;\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n value = curItem;\n }\n else {\n value = fieldData[curFields.value];\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: curItem,\n text: value,\n options: curOpt,\n fields: curFields\n };\n curOpt.itemCreating(curData);\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n fieldData = getFieldValues(dataSource[i], curFields);\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n value = curItem;\n }\n else {\n value = fieldData[curFields.value];\n }\n }\n var li = createElement('li', {\n id: id + '-' + i,\n className: isHeader ? cssClass.group : cssClass.li, attrs: { role: 'presentation' }\n });\n if (isHeader) {\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n li.innerText = curItem;\n }\n else {\n li.innerText = fieldData[curFields.text];\n }\n }\n else {\n var currentID = isHeader ? curOpt.groupTemplateID : curOpt.templateID;\n if (isHeader) {\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n var compiledElement = compiledString(curItem, componentInstance, 'headerTemplate', currentID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(curItem, componentInstance, 'headerTemplate', currentID, !!curOpt.isStringTemplate), li);\n }\n }\n else {\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n var compiledElement = compiledString(curItem, componentInstance, 'template', currentID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(curItem, componentInstance, 'template', currentID, !!curOpt.isStringTemplate), li);\n }\n }\n li.setAttribute('data-value', isNullOrUndefined(value) ? 'null' : value);\n li.setAttribute('role', 'option');\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: curItem,\n text: value,\n item: li,\n options: curOpt,\n fields: curFields\n };\n curOpt.itemCreated(curData);\n }\n liCollection.push(li);\n }\n append(liCollection, ulElement);\n return ulElement;\n }\n ListBase.renderContentTemplate = renderContentTemplate;\n /**\n * Created header items from group template.\n *\n * @param {string | Function} groupTemplate - that need to convert and generate li element.\n *\n * @param {{Object}[]} groupDataSource - Specifies local JSON data source.\n *\n * @param {FieldsMapping} fields - Specifies fields for mapping the dataSource.\n *\n * @param {Element[]} headerItems - Specifies ListBase header items.\n *\n * @param {ListBaseOptions} [options] - Optional ListBase options.\n *\n * @param {*} [componentInstance] - Optional component instance.\n *\n * @returns {Element[]} - An array of header elements with the rendered group template content.\n */\n function renderGroupTemplate(groupTemplate, \n // tslint:disable-next-line\n groupDataSource, fields, headerItems, options, componentInstance) {\n var compiledString = compileTemplate(groupTemplate);\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n var curOpt = extend({}, defaultListBaseOptions, options);\n var category = curFields.groupBy;\n for (var _i = 0, headerItems_1 = headerItems; _i < headerItems_1.length; _i++) {\n var header = headerItems_1[_i];\n var headerData = {};\n headerData[\"\" + category] = header.textContent;\n header.innerHTML = '';\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n var compiledElement = compiledString(headerData, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate, null, header);\n if (compiledElement) {\n append(compiledElement, header);\n }\n }\n else {\n append(compiledString(headerData, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate), header);\n }\n }\n return headerItems;\n }\n ListBase.renderGroupTemplate = renderGroupTemplate;\n /**\n * Generates a random hexadecimal ID string.\n *\n * @returns {string} - The generated ID string.\n */\n function generateId() {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n }\n ListBase.generateId = generateId;\n /**\n * Processes the sub-child elements and creates corresponding elements based on the provided field data and options.\n *\n * @param {Function} createElement - Function for creating elements.\n * @param {Object} fieldData - Field data containing sub-child information.\n * @param {FieldsMapping} fields - Field mappings.\n * @param {Object[]} ds - The data source array containing sub-child elements.\n * @param {ListBaseOptions} options - ListBase options.\n * @param {HTMLElement} element - The parent HTML element to append sub-child elements to.\n * @param {number} level - The level of the sub-child elements.\n * @returns {void}\n */\n function processSubChild(createElement, fieldData, fields, ds, options, element, level) {\n // Get SubList\n var subDS = fieldData[fields.child] || [];\n var hasChildren = fieldData[fields.hasChildren];\n //Create Sub child\n if (subDS.length) {\n hasChildren = true;\n element.classList.add(cssClass.hasChild);\n if (options.processSubChild) {\n var subLi = createListFromJson(createElement, subDS, options, ++level);\n element.appendChild(subLi);\n }\n }\n // Create expand and collapse node\n if (!!options.expandCollapse && hasChildren && !options.template) {\n element.firstElementChild.classList.add(cssClass.iconWrapper);\n var expandElement = options.expandIconPosition === 'Left' ? prepend : append;\n expandElement([createElement('div', { className: 'e-icons ' + options.expandIconClass })], element.querySelector('.' + cssClass.textContent));\n }\n }\n /**\n * Generates a single-level LI (list item) element based on the provided item and field data.\n *\n * @param {Function} createElement - Function for creating elements.\n * @param {string | Object | number} item - The item data.\n * @param {Object} fieldData - Field data mapped from the item.\n * @param {FieldsMapping} [fields] - Field mappings.\n * @param {string} [className] - Optional class name to add to the created LI element.\n * @param {HTMLElement[]} [innerElements] - Optional array of inner elements to append to the LI element.\n * @param {boolean} [grpLI] - Indicates if the LI element is a group item.\n * @param {string} [id] - The ID of the LI element.\n * @param {number} [index] - The index of the LI element.\n * @param {ListBaseOptions} [options] - Optional ListBase options.\n * @returns {HTMLElement} - The generated LI element.\n */\n function generateSingleLevelLI(createElement, item, fieldData, fields, className, innerElements, grpLI, id, index, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var text = item;\n var value = item;\n var dataSource;\n if (typeof item !== 'string' && typeof item !== 'number' && typeof item !== 'boolean') {\n dataSource = item;\n text = (typeof fieldData[fields.text] === 'boolean' || typeof fieldData[fields.text] === 'number') ?\n fieldData[fields.text] : (fieldData[fields.text] || '');\n value = fieldData[fields.value];\n }\n var elementID;\n if (!isNullOrUndefined(dataSource) && !isNullOrUndefined(fieldData[fields.id])\n && fieldData[fields.id] !== '') {\n elementID = id;\n }\n else {\n elementID = id + '-' + index;\n }\n var li = createElement('li', {\n className: (grpLI === true ? cssClass.group : cssClass.li) + ' ' + (isNullOrUndefined(className) ? '' : className),\n id: elementID, attrs: (ariaAttributes.groupItemRole !== '' && ariaAttributes.itemRole !== '' ?\n { role: (grpLI === true ? ariaAttributes.groupItemRole : ariaAttributes.itemRole) } : {})\n });\n if (dataSource && Object.prototype.hasOwnProperty.call(fieldData, fields.enabled) && fieldData[fields.enabled].toString() === 'false') {\n li.classList.add(cssClass.disabled);\n }\n if (grpLI) {\n li.innerText = text;\n }\n else {\n li.setAttribute('data-value', isNullOrUndefined(value) ? 'null' : value);\n li.setAttribute('role', 'option');\n if (dataSource && Object.prototype.hasOwnProperty.call(fieldData, fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {\n setAttribute(li, fieldData[fields.htmlAttributes]);\n }\n if (innerElements.length && !curOpt.itemNavigable) {\n append(innerElements, li);\n }\n if (dataSource && (fieldData[fields.url] || (fieldData[fields.urlAttributes] &&\n fieldData[fields.urlAttributes].href))) {\n li.appendChild(anchorTag(createElement, dataSource, fields, text, innerElements, curOpt.itemNavigable));\n }\n else {\n if (innerElements.length && curOpt.itemNavigable) {\n append(innerElements, li);\n }\n li.appendChild(document.createTextNode(text));\n }\n }\n return li;\n }\n /**\n * Returns a set of CSS class names based on the provided module name.\n *\n * @param {string} moduleName - The name of the module.\n * @returns {ClassList} - The CSS class names associated with the module.\n */\n function getModuleClass(moduleName) {\n var moduleClass;\n // eslint-disable-next-line\n return moduleClass = {\n li: \"e-\" + moduleName + \"-item\",\n ul: \"e-\" + moduleName + \"-parent e-ul\",\n group: \"e-\" + moduleName + \"-group-item\",\n icon: \"e-\" + moduleName + \"-icon\",\n text: \"e-\" + moduleName + \"-text\",\n check: \"e-\" + moduleName + \"-check\",\n checked: 'e-checked',\n selected: 'e-selected',\n expanded: 'e-expanded',\n textContent: 'e-text-content',\n hasChild: 'e-has-child',\n level: 'e-level',\n url: \"e-\" + moduleName + \"-url\",\n collapsible: 'e-icon-collapsible',\n disabled: 'e-disabled',\n image: \"e-\" + moduleName + \"-img\",\n iconWrapper: 'e-icon-wrapper',\n anchorWrap: 'e-anchor-wrap',\n navigable: 'e-navigable'\n };\n }\n /**\n * Creates an anchor tag () element based on the provided data source, fields, and text.\n *\n * @param {Function} createElement - Function for creating elements.\n * @param {object} dataSource - The data source containing URL-related fields.\n * @param {FieldsMapping} fields - Field mappings for the data source.\n * @param {string} text - The text content of the anchor tag.\n * @param {HTMLElement[]} innerElements - Optional array of inner elements to append to the anchor tag.\n * @param {boolean} isFullNavigation - Indicates whether the anchor tag should be for full navigation.\n * @returns {HTMLElement} The created anchor tag element.\n */\n function anchorTag(createElement, dataSource, fields, text, innerElements, isFullNavigation) {\n var fieldData = getFieldValues(dataSource, fields);\n var attr = { href: fieldData[fields.url] };\n if (Object.prototype.hasOwnProperty.call(fieldData, fields.urlAttributes) && fieldData[fields.urlAttributes]) {\n merge(attr, fieldData[fields.urlAttributes]);\n attr.href = fieldData[fields.url] ? fieldData[fields.url] :\n fieldData[fields.urlAttributes].href;\n }\n var anchorTag;\n if (!isFullNavigation) {\n anchorTag = createElement('a', { className: cssClass.text + ' ' + cssClass.url, innerHTML: text });\n }\n else {\n anchorTag = createElement('a', { className: cssClass.text + ' ' + cssClass.url });\n var anchorWrapper = createElement('div', { className: cssClass.anchorWrap });\n if (innerElements && innerElements.length) {\n append(innerElements, anchorWrapper);\n }\n anchorWrapper.appendChild(document.createTextNode(text));\n append([anchorWrapper], anchorTag);\n }\n setAttribute(anchorTag, attr);\n return anchorTag;\n }\n /**\n * Generates an LI element based on the provided item and field data.\n *\n * @param {Function} createElement - Function for creating elements.\n * @param {string | Object | number} item - The item data.\n * @param {Object} fieldData - Field data mapped from the item.\n * @param {FieldsMapping} fields - Field mappings.\n * @param {string} [className] - Optional class name to add to the created LI element.\n * @param {ListBaseOptions} [options] - Optional ListBase options.\n * @param {*} [componentInstance] - Optional component instance.\n * @returns {HTMLElement} - The generated LI element.\n */\n function generateLI(createElement, item, fieldData, fields, className, options, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var text = item;\n var uID;\n var grpLI;\n var dataSource;\n if (typeof item !== 'string' && typeof item !== 'number') {\n dataSource = item;\n text = fieldData[fields.text] || '';\n uID = (isNullOrUndefined(fieldData['_id'])) ? fieldData[fields.id] : fieldData['_id'];\n grpLI = (Object.prototype.hasOwnProperty.call(item, 'isHeader') && item.isHeader)\n ? true : false;\n }\n if (options && options.enableHtmlSanitizer) {\n // eslint-disable-next-line no-self-assign\n text = text;\n }\n var li = createElement('li', {\n className: (grpLI === true ? cssClass.group : cssClass.li) + ' ' + (isNullOrUndefined(className) ? '' : className),\n attrs: (ariaAttributes.groupItemRole !== '' && ariaAttributes.itemRole !== '' ?\n { role: (grpLI === true ? ariaAttributes.groupItemRole : ariaAttributes.itemRole) } : {})\n });\n if (!isNullOrUndefined(uID) === true) {\n li.setAttribute('data-uid', uID);\n }\n else {\n li.setAttribute('data-uid', generateId());\n }\n if (grpLI && options && options.groupTemplate) {\n var compiledString = compileTemplate(options.groupTemplate);\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n var compiledElement = compiledString(item, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(item, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate), li);\n }\n }\n else if (!grpLI && options && options.template) {\n var compiledString = compileTemplate(options.template);\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n var compiledElement = compiledString(item, componentInstance, 'template', curOpt.templateID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(item, componentInstance, 'template', curOpt.templateID, !!curOpt.isStringTemplate), li);\n }\n }\n else {\n var innerDiv = createElement('div', {\n className: cssClass.textContent,\n attrs: (ariaAttributes.wrapperRole !== '' ? { role: ariaAttributes.wrapperRole } : {})\n });\n if (dataSource && (fieldData[fields.url] || (fieldData[fields.urlAttributes] &&\n fieldData[fields.urlAttributes].href))) {\n innerDiv.appendChild(anchorTag(createElement, dataSource, fields, text, null, curOpt.itemNavigable));\n }\n else {\n var element = createElement('span', {\n className: cssClass.text,\n attrs: (ariaAttributes.itemText !== '' ? { role: ariaAttributes.itemText } : {})\n });\n if (options && options.enableHtmlSanitizer) {\n element.innerText = SanitizeHtmlHelper.sanitize(text);\n }\n else {\n element.innerHTML = text;\n }\n innerDiv.appendChild(element);\n }\n li.appendChild(innerDiv);\n }\n return li;\n }\n /**\n * Returns UL element based on the given LI element.\n *\n * @param {Function} createElement - Function for creating elements.\n *\n * @param {HTMLElement[]} liElement - Specifies array of LI element.\n *\n * @param {string} [className] - Specifies class name that need to be added in UL element.\n *\n * @param {ListBaseOptions} [options] - Specifies ListBase options.\n *\n * @returns {HTMLElement} - The created UL element.\n */\n function generateUL(createElement, liElement, className, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n cssClass = getModuleClass(curOpt.moduleName);\n var ulElement = createElement('ul', {\n className: cssClass.ul + ' ' + (isNullOrUndefined(className) ? '' : className),\n attrs: (ariaAttributes.listRole !== '' ? { role: ariaAttributes.listRole } : {})\n });\n append(liElement, ulElement);\n return ulElement;\n }\n ListBase.generateUL = generateUL;\n /**\n * Returns LI element with additional DIV tag based on the given LI element.\n *\n * @param {Function} createElement - Function for creating elements.\n *\n * @param {liElement} liElement - Specifies LI element.\n *\n * @param {string} [className] - Specifies class name that need to be added in created DIV element.\n *\n * @param {ListBaseOptions} [options] - Specifies ListBase options.\n *\n * @returns {HTMLElement} - The modified LI element.\n */\n function generateIcon(createElement, liElement, className, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n var expandElement = curOpt.expandIconPosition === 'Left' ? prepend : append;\n expandElement([createElement('div', {\n className: 'e-icons ' + curOpt.expandIconClass + ' ' +\n (isNullOrUndefined(className) ? '' : className)\n })], liElement.querySelector('.' + cssClass.textContent));\n return liElement;\n }\n ListBase.generateIcon = generateIcon;\n})(ListBase || (ListBase = {}));\n/**\n * Used to get dataSource item from complex data using fields.\n *\n * @param {Object} dataItem - Specifies an JSON or String data.\n *\n * @param {FieldsMapping} fields - Fields that are mapped from the dataSource.\n * @returns {Object|string|number} - The retrieved field values.\n */\nexport function getFieldValues(dataItem, fields) {\n var fieldData = {};\n if (isNullOrUndefined(dataItem) || typeof (dataItem) === 'string' || typeof (dataItem) === 'number'\n || !isNullOrUndefined(dataItem.isHeader)) {\n return dataItem;\n }\n else {\n for (var _i = 0, _a = Object.keys(fields); _i < _a.length; _i++) {\n var field = _a[_i];\n var dataField = fields[\"\" + field];\n var value = !isNullOrUndefined(dataField) &&\n typeof (dataField) === 'string' ? getValue(dataField, dataItem) : undefined;\n if (!isNullOrUndefined(value)) {\n fieldData[\"\" + dataField] = value;\n }\n }\n }\n return fieldData;\n}\n/**\n * Compiles a template string or function into a compiled function.\n *\n * @param {string | Function} template - The template string or function to compile.\n * @returns {Function | undefined} - The compiled function, or undefined if the input is false.\n */\nfunction compileTemplate(template) {\n if (template) {\n try {\n if (typeof template !== 'function' && document.querySelector(template)) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (e) {\n return compile(template);\n }\n }\n return undefined;\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, getUniqueID, formatUnit, NotifyPropertyChanges, Property, attributes, removeClass, addClass, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar cssClassName = {\n TEXTSHAPE: 'e-skeleton-text',\n CIRCLESHAPE: 'e-skeleton-circle',\n SQUARESHAPE: 'e-skeleton-square',\n RECTANGLESHAPE: 'e-skeleton-rectangle',\n WAVEEFFECT: 'e-shimmer-wave',\n PULSEEFFECT: 'e-shimmer-pulse',\n FADEEFFECT: 'e-shimmer-fade',\n VISIBLENONE: 'e-visible-none'\n};\n/**\n * Defines the shape of Skeleton.\n */\nexport var SkeletonType;\n(function (SkeletonType) {\n /**\n * Defines the skeleton shape as text.\n */\n SkeletonType[\"Text\"] = \"Text\";\n /**\n * Defines the skeleton shape as circle.\n */\n SkeletonType[\"Circle\"] = \"Circle\";\n /**\n * Defines the skeleton shape as square.\n */\n SkeletonType[\"Square\"] = \"Square\";\n /**\n * Defines the skeleton shape as rectangle.\n */\n SkeletonType[\"Rectangle\"] = \"Rectangle\";\n})(SkeletonType || (SkeletonType = {}));\n/**\n * Defines the animation effect of Skeleton.\n */\nexport var ShimmerEffect;\n(function (ShimmerEffect) {\n /**\n * Defines the animation as shimmer wave effect.\n */\n ShimmerEffect[\"Wave\"] = \"Wave\";\n /**\n * Defines the animation as fade effect.\n */\n ShimmerEffect[\"Fade\"] = \"Fade\";\n /**\n * Defines the animation as pulse effect.\n */\n ShimmerEffect[\"Pulse\"] = \"Pulse\";\n /**\n * Defines the animation as no effect.\n */\n ShimmerEffect[\"None\"] = \"None\";\n})(ShimmerEffect || (ShimmerEffect = {}));\n/**\n * The Shimmer is a placeholder that animates a shimmer effect to let users know that the page’s content is loading at the moment.\n * In other terms, it simulates the layout of page content while loading the actual content.\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Skeleton = /** @class */ (function (_super) {\n __extends(Skeleton, _super);\n /**\n * Constructor for creating Skeleton component.\n *\n * @param {SkeletonModel} options - Defines the model of Skeleton class.\n * @param {HTMLElement} element - Defines the target HTML element.\n */\n function Skeleton(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Get component module name.\n *\n * @returns {string} - Module name\n * @private\n */\n Skeleton.prototype.getModuleName = function () {\n return 'skeleton';\n };\n Skeleton.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n Skeleton.prototype.preRender = function () {\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n this.updateCssClass();\n attributes(this.element, { role: 'alert', 'aria-busy': 'true', 'aria-live': 'polite', 'aria-label': this.label });\n };\n /**\n * Method for initialize the component rendering.\n *\n * @returns {void}\n * @private\n */\n Skeleton.prototype.render = function () {\n this.initialize();\n };\n Skeleton.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n case 'height':\n this.updateDimension();\n break;\n case 'shape':\n this.updateShape();\n break;\n case 'shimmerEffect':\n this.updateEffect();\n break;\n case 'visible':\n this.updateVisibility();\n break;\n case 'label':\n this.element.setAttribute('aria-label', this.label);\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n this.updateCssClass();\n break;\n }\n }\n };\n /**\n * Method to destroys the Skeleton component.\n *\n * @returns {void}\n */\n Skeleton.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n var attrs = ['role', 'aria-live', 'aria-busy', 'aria-label'];\n var cssClass = [];\n if (this.cssClass) {\n cssClass = cssClass.concat(this.cssClass.split(' '));\n }\n for (var i = 0; i < attrs.length; i++) {\n this.element.removeAttribute(attrs[parseInt(i.toString(), 10)]);\n }\n cssClass = cssClass.concat(this.element.classList.value.match(/(e-skeleton-[^\\s]+)/g) || []);\n cssClass = cssClass.concat(this.element.classList.value.match(/(e-shimmer-[^\\s]+)/g) || []);\n removeClass([this.element], cssClass);\n };\n Skeleton.prototype.initialize = function () {\n this.updateShape();\n this.updateEffect();\n this.updateVisibility();\n };\n Skeleton.prototype.updateShape = function () {\n if (!(isNullOrUndefined(this.shape))) {\n var shapeCss = cssClassName[this.shape.toUpperCase() + 'SHAPE'];\n var removeCss = (this.element.classList.value.match(/(e-skeleton-[^\\s]+)/g) || []);\n this.updateDimension();\n if (removeCss) {\n removeClass([this.element], removeCss);\n }\n addClass([this.element], [shapeCss]);\n }\n };\n Skeleton.prototype.updateDimension = function () {\n var width = (!this.width && (['Text', 'Rectangle'].indexOf(this.shape) > -1)) ? '100%' : formatUnit(this.width);\n var height = ['Circle', 'Square'].indexOf(this.shape) > -1 ? width : formatUnit(this.height);\n this.element.style.width = width;\n this.element.style.height = height;\n };\n Skeleton.prototype.updateEffect = function () {\n var removeCss = (this.element.classList.value.match(/(e-shimmer-[^\\s]+)/g) || []);\n if (removeCss) {\n removeClass([this.element], removeCss);\n }\n if (!(isNullOrUndefined(this.shimmerEffect))) {\n addClass([this.element], [cssClassName[this.shimmerEffect.toUpperCase() + 'EFFECT']]);\n }\n };\n Skeleton.prototype.updateVisibility = function () {\n this.element.classList[this.visible ? 'remove' : 'add'](cssClassName.VISIBLENONE);\n };\n Skeleton.prototype.updateCssClass = function () {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n };\n __decorate([\n Property('')\n ], Skeleton.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Skeleton.prototype, \"height\", void 0);\n __decorate([\n Property(true)\n ], Skeleton.prototype, \"visible\", void 0);\n __decorate([\n Property('Text')\n ], Skeleton.prototype, \"shape\", void 0);\n __decorate([\n Property('Wave')\n ], Skeleton.prototype, \"shimmerEffect\", void 0);\n __decorate([\n Property('Loading...')\n ], Skeleton.prototype, \"label\", void 0);\n __decorate([\n Property('')\n ], Skeleton.prototype, \"cssClass\", void 0);\n Skeleton = __decorate([\n NotifyPropertyChanges\n ], Skeleton);\n return Skeleton;\n}(Component));\nexport { Skeleton };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, EventHandler, addClass, append, Property, Event, L10n, compile } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, extend, removeClass, prepend, isNullOrUndefined, detach, getValue } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, rippleEffect, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { DataManager, Query, DataUtil } from '@syncfusion/ej2-data';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { select, selectAll } from '@syncfusion/ej2-base';\nimport { Skeleton } from '@syncfusion/ej2-notifications';\nvar FieldSettings = /** @class */ (function (_super) {\n __extends(FieldSettings, _super);\n function FieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"groupBy\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"disabled\", void 0);\n return FieldSettings;\n}(ChildProperty));\nexport { FieldSettings };\nexport var dropDownBaseClasses = {\n root: 'e-dropdownbase',\n rtl: 'e-rtl',\n content: 'e-content',\n selected: 'e-active',\n hover: 'e-hover',\n noData: 'e-nodata',\n fixedHead: 'e-fixed-head',\n focus: 'e-item-focus',\n li: 'e-list-item',\n group: 'e-list-group-item',\n disabled: 'e-disabled',\n grouping: 'e-dd-group',\n virtualList: 'e-list-item e-virtual-list',\n};\nvar ITEMTEMPLATE_PROPERTY = 'ItemTemplate';\nvar DISPLAYTEMPLATE_PROPERTY = 'DisplayTemplate';\nvar SPINNERTEMPLATE_PROPERTY = 'SpinnerTemplate';\nvar VALUETEMPLATE_PROPERTY = 'ValueTemplate';\nvar GROUPTEMPLATE_PROPERTY = 'GroupTemplate';\nvar HEADERTEMPLATE_PROPERTY = 'HeaderTemplate';\nvar FOOTERTEMPLATE_PROPERTY = 'FooterTemplate';\nvar NORECORDSTEMPLATE_PROPERTY = 'NoRecordsTemplate';\nvar ACTIONFAILURETEMPLATE_PROPERTY = 'ActionFailureTemplate';\nvar HIDE_GROUPLIST = 'e-hide-group-header';\n/**\n * DropDownBase component will generate the list items based on given data and act as base class to drop-down related components\n */\nvar DropDownBase = /** @class */ (function (_super) {\n __extends(DropDownBase, _super);\n /**\n * * Constructor for DropDownBase class\n *\n * @param {DropDownBaseModel} options - Specifies the DropDownBase model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function DropDownBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.preventChange = false;\n _this.isPreventChange = false;\n _this.isDynamicDataChange = false;\n _this.addedNewItem = false;\n _this.isAddNewItemTemplate = false;\n _this.isRequesting = false;\n _this.isVirtualizationEnabled = false;\n _this.isCustomDataUpdated = false;\n _this.isAllowFiltering = false;\n _this.virtualizedItemsCount = 0;\n _this.isCheckBoxSelection = false;\n _this.totalItemCount = 0;\n _this.dataCount = 0;\n _this.remoteDataCount = -1;\n _this.isRemoteDataUpdated = false;\n _this.isIncrementalRequest = false;\n _this.itemCount = 30;\n _this.virtualListHeight = 0;\n _this.isVirtualScrolling = false;\n _this.isPreventScrollAction = false;\n _this.scrollPreStartIndex = 0;\n _this.isScrollActionTriggered = false;\n _this.previousStartIndex = 0;\n _this.isMouseScrollAction = false;\n _this.isKeyBoardAction = false;\n _this.isScrollChanged = false;\n _this.isUpwardScrolling = false;\n _this.startIndex = 0;\n _this.currentPageNumber = 0;\n _this.pageCount = 0;\n _this.isPreventKeyAction = false;\n _this.generatedDataObject = {};\n _this.skeletonCount = 32;\n _this.isVirtualTrackHeight = false;\n _this.virtualSelectAll = false;\n _this.incrementalQueryString = '';\n _this.incrementalEndIndex = 0;\n _this.incrementalStartIndex = 0;\n _this.incrementalPreQueryString = '';\n _this.isObjectCustomValue = false;\n _this.appendUncheckList = false;\n _this.getInitialData = false;\n _this.preventPopupOpen = true;\n _this.virtualSelectAllState = false;\n _this.CurrentEvent = null;\n _this.virtualListInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: 0,\n };\n _this.viewPortInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: 0,\n };\n _this.selectedValueInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: 0,\n };\n return _this;\n }\n DropDownBase.prototype.getPropObject = function (prop, newProp, oldProp) {\n var newProperty = new Object();\n var oldProperty = new Object();\n var propName = function (prop) {\n return prop;\n };\n newProperty[propName(prop)] = newProp[propName(prop)];\n oldProperty[propName(prop)] = oldProp[propName(prop)];\n var data = new Object();\n data.newProperty = newProperty;\n data.oldProperty = oldProperty;\n return data;\n };\n DropDownBase.prototype.getValueByText = function (text, ignoreCase, ignoreAccent) {\n var value = null;\n if (!isNullOrUndefined(this.listData)) {\n if (ignoreCase) {\n value = this.checkValueCase(text, true, ignoreAccent);\n }\n else {\n value = this.checkValueCase(text, false, ignoreAccent);\n }\n }\n return value;\n };\n DropDownBase.prototype.checkValueCase = function (text, ignoreCase, ignoreAccent, isTextByValue) {\n var _this = this;\n var value = null;\n if (isTextByValue) {\n value = text;\n }\n var dataSource = this.listData;\n var fields = this.fields;\n var type = this.typeOfData(dataSource).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (var _i = 0, dataSource_1 = dataSource; _i < dataSource_1.length; _i++) {\n var item = dataSource_1[_i];\n if (!isNullOrUndefined(item)) {\n if (ignoreAccent) {\n value = this.checkingAccent(String(item), text, ignoreCase);\n }\n else {\n if (ignoreCase) {\n if (this.checkIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n else {\n if (this.checkNonIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase, isTextByValue);\n }\n }\n }\n }\n }\n }\n else {\n if (ignoreCase) {\n dataSource.filter(function (item) {\n var itemValue = getValue(fields.value, item);\n if (!isNullOrUndefined(itemValue) && _this.checkIgnoreCase(getValue(fields.text, item).toString(), text)) {\n value = getValue(fields.value, item);\n }\n });\n }\n else {\n if (isTextByValue) {\n var compareValue_1 = null;\n compareValue_1 = value;\n dataSource.filter(function (item) {\n var itemValue = getValue(fields.value, item);\n if (!isNullOrUndefined(itemValue) && !isNullOrUndefined(value) && itemValue.toString() === compareValue_1.toString()) {\n value = getValue(fields.text, item);\n }\n });\n }\n else {\n dataSource.filter(function (item) {\n if (_this.checkNonIgnoreCase(getValue(fields.text, item), text)) {\n value = getValue(fields.value, item);\n }\n });\n }\n }\n }\n return value;\n };\n DropDownBase.prototype.checkingAccent = function (item, text, ignoreCase) {\n var dataItem = DataUtil.ignoreDiacritics(String(item));\n var textItem = DataUtil.ignoreDiacritics(text.toString());\n var value = null;\n if (ignoreCase) {\n if (this.checkIgnoreCase(dataItem, textItem)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n else {\n if (this.checkNonIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n return value;\n };\n DropDownBase.prototype.checkIgnoreCase = function (item, text) {\n return String(item).toLowerCase() === text.toString().toLowerCase() ? true : false;\n };\n DropDownBase.prototype.checkNonIgnoreCase = function (item, text) {\n return String(item) === text.toString() ? true : false;\n };\n DropDownBase.prototype.getItemValue = function (dataItem, typedText, ignoreCase, isTextByValue) {\n var value = null;\n var dataSource = this.listData;\n var type = this.typeOfData(dataSource).typeof;\n if (isTextByValue) {\n value = dataItem.toString();\n }\n else {\n if (ignoreCase) {\n value = type === 'string' ? String(dataItem) : this.getFormattedValue(String(dataItem));\n }\n else {\n value = type === 'string' ? typedText : this.getFormattedValue(typedText);\n }\n }\n return value;\n };\n DropDownBase.prototype.templateCompiler = function (baseTemplate) {\n var checkTemplate = false;\n if (typeof baseTemplate !== 'function' && baseTemplate) {\n try {\n checkTemplate = (selectAll(baseTemplate, document).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n DropDownBase.prototype.l10nUpdate = function (actionFailure) {\n var ele = this.getModuleName() === 'listbox' ? this.ulElement : this.list;\n if ((!isNullOrUndefined(this.noRecordsTemplate) && this.noRecordsTemplate !== 'No records found') || this.actionFailureTemplate !== 'Request failed') {\n var template = actionFailure ? this.actionFailureTemplate : this.noRecordsTemplate;\n var compiledString = void 0;\n var templateId = actionFailure ? this.actionFailureTemplateId : this.noRecordsTemplateId;\n ele.innerHTML = '';\n var tempaltecheck = this.templateCompiler(template);\n if (typeof template !== 'function' && tempaltecheck) {\n compiledString = compile(select(template, document).innerHTML.trim());\n }\n else {\n compiledString = compile(template);\n }\n var templateName = actionFailure ? 'actionFailureTemplate' : 'noRecordsTemplate';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var noDataElement = void 0;\n if ((this.isReact) && typeof template === 'function') {\n noDataElement = compiledString({}, this, templateName, templateId, this.isStringTemplate, null);\n }\n else {\n noDataElement = compiledString({}, this, templateName, templateId, this.isStringTemplate, null, ele);\n }\n if (noDataElement && noDataElement.length > 0) {\n for (var i = 0; i < noDataElement.length; i++) {\n if (this.getModuleName() === 'listbox' && templateName === 'noRecordsTemplate') {\n if (noDataElement[i].nodeName === '#text') {\n var liElem = this.createElement('li');\n liElem.textContent = noDataElement[i].textContent;\n liElem.classList.add('e-list-nrt');\n liElem.setAttribute('role', 'option');\n ele.appendChild(liElem);\n }\n else {\n noDataElement[i].classList.add('e-list-nr-template');\n ele.appendChild(noDataElement[i]);\n }\n }\n else {\n if (noDataElement[i] instanceof HTMLElement || ((noDataElement[i] instanceof Text) && (noDataElement[i]).textContent !== '')) {\n ele.appendChild(noDataElement[i]);\n }\n }\n }\n }\n this.renderReactTemplates();\n }\n else {\n var l10nLocale = { noRecordsTemplate: 'No records found', actionFailureTemplate: 'Request failed' };\n var componentLocale = new L10n(this.getLocaleName(), {}, this.locale);\n if (componentLocale.getConstant('actionFailureTemplate') !== '' || componentLocale.getConstant('noRecordsTemplate') !== '') {\n this.l10n = componentLocale;\n }\n else {\n this.l10n = new L10n(this.getModuleName() === 'listbox' ? 'listbox' :\n this.getModuleName() === 'mention' ? 'mention' : 'dropdowns', l10nLocale, this.locale);\n }\n var content = actionFailure ?\n this.l10n.getConstant('actionFailureTemplate') : this.l10n.getConstant('noRecordsTemplate');\n if (this.getModuleName() === 'listbox') {\n var liElem = this.createElement('li');\n liElem.textContent = content;\n ele.appendChild(liElem);\n liElem.classList.add('e-list-nrt');\n liElem.setAttribute('role', 'option');\n }\n else {\n if (!isNullOrUndefined(ele)) {\n ele.innerHTML = content;\n }\n }\n }\n };\n DropDownBase.prototype.checkAndResetCache = function () {\n if (this.isVirtualizationEnabled) {\n this.generatedDataObject = {};\n this.virtualItemStartIndex = this.virtualItemEndIndex = 0;\n this.viewPortInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: this.itemCount,\n };\n this.selectedValueInfo = null;\n }\n };\n DropDownBase.prototype.updateIncrementalInfo = function (startIndex, endIndex) {\n this.viewPortInfo.startIndex = startIndex;\n this.viewPortInfo.endIndex = endIndex;\n this.updateVirtualItemIndex();\n this.isIncrementalRequest = true;\n this.resetList(this.dataSource, this.fields, this.query);\n this.isIncrementalRequest = false;\n };\n DropDownBase.prototype.updateIncrementalView = function (startIndex, endIndex) {\n this.viewPortInfo.startIndex = startIndex;\n this.viewPortInfo.endIndex = endIndex;\n this.updateVirtualItemIndex();\n this.resetList(this.dataSource, this.fields, this.query);\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n };\n DropDownBase.prototype.updateVirtualItemIndex = function () {\n this.virtualItemStartIndex = this.viewPortInfo.startIndex;\n this.virtualItemEndIndex = this.viewPortInfo.endIndex;\n this.virtualListInfo = this.viewPortInfo;\n };\n DropDownBase.prototype.getFilteringSkeletonCount = function () {\n var currentSkeletonCount = this.skeletonCount;\n this.getSkeletonCount(true);\n this.skeletonCount = this.dataCount > this.itemCount * 2 ? this.skeletonCount : 0;\n var skeletonUpdated = true;\n if ((this.getModuleName() === 'autocomplete' || this.getModuleName() === 'multiselect') && (this.totalItemCount < (this.itemCount * 2))) {\n this.skeletonCount = 0;\n skeletonUpdated = false;\n }\n if (!this.list.classList.contains(dropDownBaseClasses.noData)) {\n var isSkeletonCountChange = currentSkeletonCount !== this.skeletonCount;\n if (currentSkeletonCount !== this.skeletonCount && skeletonUpdated) {\n this.UpdateSkeleton(true, Math.abs(currentSkeletonCount - this.skeletonCount));\n }\n else {\n this.UpdateSkeleton();\n }\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n if ((this.list.getElementsByClassName('e-virtual-ddl').length > 0)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n else if (!this.list.querySelector('.e-virtual-ddl') && this.skeletonCount > 0 && this.list.querySelector('.e-dropdownbase')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n this.list.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n if (this.list.getElementsByClassName('e-virtual-ddl-content').length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n }\n };\n DropDownBase.prototype.getSkeletonCount = function (retainSkeleton) {\n this.virtualListHeight = this.listContainerHeight != null ? parseInt(this.listContainerHeight, 10) : this.virtualListHeight;\n var actualCount = this.virtualListHeight > 0 ? Math.floor(this.virtualListHeight / this.listItemHeight) : 0;\n this.skeletonCount = actualCount * 4 < this.itemCount ? this.itemCount : actualCount * 4;\n this.itemCount = retainSkeleton ? this.itemCount : this.skeletonCount;\n this.virtualItemCount = this.itemCount;\n this.skeletonCount = Math.floor(this.skeletonCount / 2);\n };\n DropDownBase.prototype.GetVirtualTrackHeight = function () {\n var height = this.totalItemCount === this.viewPortInfo.endIndex ? this.totalItemCount * this.listItemHeight - this.itemCount * this.listItemHeight : this.totalItemCount * this.listItemHeight;\n height = this.isVirtualTrackHeight ? 0 : height;\n var heightDimension = \"height: \" + (height - this.itemCount * this.listItemHeight) + \"px;\";\n if ((this.getModuleName() === 'autocomplete' || this.getModuleName() === 'multiselect') && this.skeletonCount === 0) {\n return \"height: 0px;\";\n }\n return heightDimension;\n };\n DropDownBase.prototype.getTransformValues = function () {\n var translateY = this.viewPortInfo.startIndex * this.listItemHeight;\n translateY = translateY - (this.skeletonCount * this.listItemHeight);\n translateY = ((this.viewPortInfo.startIndex === 0 && this.listData && this.listData.length === 0) || this.skeletonCount === 0) ? 0 : translateY;\n var styleText = \"transform: translate(0px, \" + translateY + \"px);\";\n return styleText;\n };\n DropDownBase.prototype.UpdateSkeleton = function (isSkeletonCountChange, skeletonCount) {\n var isContainSkeleton = this.list.querySelector('.e-virtual-ddl-content');\n var isContainVirtualList = this.list.querySelector('.e-virtual-list');\n if (isContainSkeleton && (!isContainVirtualList || isSkeletonCountChange) && this.isVirtualizationEnabled) {\n var totalSkeletonCount = isSkeletonCountChange ? skeletonCount : this.skeletonCount;\n for (var i = 0; i < totalSkeletonCount; i++) {\n var liElement = this.createElement('li', { className: dropDownBaseClasses.virtualList, styles: 'overflow: inherit' });\n if (this.isVirtualizationEnabled && this.itemTemplate) {\n liElement.style.height = this.listItemHeight + 'px';\n }\n var skeleton = new Skeleton({\n shape: \"Text\",\n height: \"10px\",\n width: \"95%\",\n cssClass: \"e-skeleton-text\",\n });\n skeleton.appendTo(this.createElement('div'));\n liElement.appendChild(skeleton.element);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isContainSkeleton.firstChild && isContainSkeleton.firstChild.insertBefore(liElement, isContainSkeleton.firstChild.children[0]);\n }\n }\n };\n DropDownBase.prototype.getLocaleName = function () {\n return 'drop-down-base';\n };\n DropDownBase.prototype.getTextByValue = function (value) {\n var text = this.checkValueCase(value, false, false, true);\n return text;\n };\n DropDownBase.prototype.getFormattedValue = function (value) {\n if (this.listData && this.listData.length) {\n var item = void 0;\n if (this.properties.allowCustomValue && this.properties.value && this.properties.value instanceof Array && this.properties.value.length > 0) {\n item = this.typeOfData(this.properties.value);\n }\n else {\n item = this.typeOfData(this.listData);\n }\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), item.item) === 'number'\n || item.typeof === 'number') {\n return parseFloat(value);\n }\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), item.item) === 'boolean'\n || item.typeof === 'boolean') {\n return ((value === 'true') || ('' + value === 'true'));\n }\n }\n return value;\n };\n /**\n * Sets RTL to dropdownbase wrapper\n *\n * @returns {void}\n */\n DropDownBase.prototype.setEnableRtl = function () {\n if (!isNullOrUndefined(this.enableRtlElements)) {\n if (this.list) {\n this.enableRtlElements.push(this.list);\n }\n if (this.enableRtl) {\n addClass(this.enableRtlElements, dropDownBaseClasses.rtl);\n }\n else {\n removeClass(this.enableRtlElements, dropDownBaseClasses.rtl);\n }\n }\n };\n /**\n * Initialize the Component.\n *\n * @returns {void}\n */\n DropDownBase.prototype.initialize = function (e) {\n this.bindEvent = true;\n this.preventPopupOpen = true;\n this.actionFailureTemplateId = \"\" + this.element.id + ACTIONFAILURETEMPLATE_PROPERTY;\n if (this.element.tagName === 'UL') {\n var jsonElement = ListBase.createJsonFromElement(this.element);\n this.setProperties({ fields: { text: 'text', value: 'text' } }, true);\n this.resetList(jsonElement, this.fields);\n }\n else if (this.element.tagName === 'SELECT') {\n var dataSource = this.dataSource instanceof Array ? (this.dataSource.length > 0 ? true : false)\n : !isNullOrUndefined(this.dataSource) ? true : false;\n if (!dataSource) {\n this.renderItemsBySelect();\n }\n else if (this.isDynamicDataChange) {\n this.setListData(this.dataSource, this.fields, this.query);\n }\n }\n else {\n this.setListData(this.dataSource, this.fields, this.query, e);\n }\n };\n /**\n * Get the properties to be maintained in persisted state.\n *\n * @returns {string} Returns the persisted data of the component.\n */\n DropDownBase.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Sets the enabled state to DropDownBase.\n *\n * @param {string} value - Specifies the attribute values to add on the input element.\n * @returns {void}\n */\n DropDownBase.prototype.updateDataAttribute = function (value) {\n var invalidAttr = ['class', 'style', 'id', 'type', 'aria-expanded', 'aria-autocomplete', 'aria-readonly'];\n var attr = {};\n for (var a = 0; a < this.element.attributes.length; a++) {\n if (invalidAttr.indexOf(this.element.attributes[a].name) === -1 &&\n !(this.getModuleName() === 'dropdownlist' && this.element.attributes[a].name === 'readonly')) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n extend(attr, value, attr);\n this.setProperties({ htmlAttributes: attr }, true);\n };\n DropDownBase.prototype.renderItemsBySelect = function () {\n var element = this.element;\n var fields = { value: 'value', text: 'text' };\n var jsonElement = [];\n var group = element.querySelectorAll('select>optgroup');\n var option = element.querySelectorAll('select>option');\n this.getJSONfromOption(jsonElement, option, fields);\n if (group.length) {\n for (var i = 0; i < group.length; i++) {\n var item = group[i];\n var optionGroup = {};\n optionGroup[fields.text] = item.label;\n optionGroup.isHeader = true;\n var child = item.querySelectorAll('option');\n jsonElement.push(optionGroup);\n this.getJSONfromOption(jsonElement, child, fields);\n }\n element.querySelectorAll('select>option');\n }\n this.updateFields(fields.text, fields.value, this.fields.groupBy, this.fields.htmlAttributes, this.fields.iconCss, this.fields.disabled);\n this.resetList(jsonElement, fields);\n };\n DropDownBase.prototype.updateFields = function (text, value, groupBy, htmlAttributes, iconCss, disabled) {\n var field = {\n 'fields': {\n text: text,\n value: value,\n groupBy: !isNullOrUndefined(groupBy) ? groupBy : this.fields && this.fields.groupBy,\n htmlAttributes: !isNullOrUndefined(htmlAttributes) ? htmlAttributes : this.fields && this.fields.htmlAttributes,\n iconCss: !isNullOrUndefined(iconCss) ? iconCss : this.fields && this.fields.iconCss,\n disabled: !isNullOrUndefined(disabled) ? disabled : this.fields && this.fields.disabled\n }\n };\n this.setProperties(field, true);\n };\n DropDownBase.prototype.getJSONfromOption = function (items, options, fields) {\n for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {\n var option = options_1[_i];\n var json = {};\n json[fields.text] = option.innerText;\n json[fields.value] = !isNullOrUndefined(option.getAttribute(fields.value)) ?\n option.getAttribute(fields.value) : option.innerText;\n items.push(json);\n }\n };\n /**\n * Execute before render the list items\n *\n * @private\n * @returns {void}\n */\n DropDownBase.prototype.preRender = function () {\n // there is no event handler\n this.scrollTimer = -1;\n this.enableRtlElements = [];\n this.isRequested = false;\n this.isDataFetched = false;\n this.itemTemplateId = \"\" + this.element.id + ITEMTEMPLATE_PROPERTY;\n this.displayTemplateId = \"\" + this.element.id + DISPLAYTEMPLATE_PROPERTY;\n this.spinnerTemplateId = \"\" + this.element.id + SPINNERTEMPLATE_PROPERTY;\n this.valueTemplateId = \"\" + this.element.id + VALUETEMPLATE_PROPERTY;\n this.groupTemplateId = \"\" + this.element.id + GROUPTEMPLATE_PROPERTY;\n this.headerTemplateId = \"\" + this.element.id + HEADERTEMPLATE_PROPERTY;\n this.footerTemplateId = \"\" + this.element.id + FOOTERTEMPLATE_PROPERTY;\n this.noRecordsTemplateId = \"\" + this.element.id + NORECORDSTEMPLATE_PROPERTY;\n };\n /**\n * Creates the list items of DropDownBase component.\n *\n * @param {Object[] | string[] | number[] | DataManager | boolean[]} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @returns {void}\n */\n DropDownBase.prototype.setListData = function (dataSource, fields, query, event) {\n var _this = this;\n fields = fields ? fields : this.fields;\n var ulElement;\n this.isActive = true;\n var eventArgs = { cancel: false, data: dataSource, query: query };\n this.isPreventChange = this.isAngular && this.preventChange ? true : this.isPreventChange;\n if (!this.isRequesting) {\n this.trigger('actionBegin', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.isRequesting = true;\n _this.showSpinner();\n if (dataSource instanceof DataManager) {\n _this.isRequested = true;\n var isWhereExist_1 = false;\n if (_this.isDataFetched) {\n _this.emptyDataRequest(fields);\n return;\n }\n eventArgs.data.executeQuery(_this.getQuery(eventArgs.query)).then(function (e) {\n _this.isPreventChange = _this.isAngular && _this.preventChange ? true : _this.isPreventChange;\n var isReOrder = true;\n if (!_this.virtualSelectAll) {\n var newQuery = _this.getQuery(eventArgs.query);\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (newQuery.queries[queryElements].fn === 'onWhere') {\n isWhereExist_1 = true;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (_this.isVirtualizationEnabled && (e.count != 0 && e.count < (_this.itemCount * 2))) {\n if (newQuery) {\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (newQuery.queries[queryElements].fn === 'onTake') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n newQuery.queries[queryElements].e.nos = e.count;\n }\n if (_this.getModuleName() === 'multiselect' && (newQuery.queries[queryElements].e.condition == 'or' || newQuery.queries[queryElements].e.operator == 'equal')) {\n isReOrder = false;\n }\n }\n }\n }\n else {\n _this.isVirtualTrackHeight = false;\n if (newQuery) {\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (_this.getModuleName() === 'multiselect' && ((newQuery.queries[queryElements].e && newQuery.queries[queryElements].e.condition == 'or') || (newQuery.queries[queryElements].e && newQuery.queries[queryElements].e.operator == 'equal'))) {\n isReOrder = false;\n }\n }\n }\n }\n }\n if (isReOrder) {\n // eslint-disable @typescript-eslint/no-explicit-any\n _this.dataCount = _this.totalItemCount = e.count;\n }\n _this.trigger('actionComplete', e, function (e) {\n if (!e.cancel) {\n _this.isRequesting = false;\n var listItems = e.result;\n if (_this.isIncrementalRequest) {\n ulElement = _this.renderItems(listItems, fields);\n return;\n }\n if ((!_this.isVirtualizationEnabled && listItems.length === 0) || (_this.isVirtualizationEnabled && listItems.length === 0 && !isWhereExist_1)) {\n _this.isDataFetched = true;\n }\n if (!isWhereExist_1) {\n _this.remoteDataCount = e.count;\n }\n _this.dataCount = !_this.virtualSelectAll ? e.count : _this.dataCount;\n _this.totalItemCount = !_this.virtualSelectAll ? e.count : _this.totalItemCount;\n ulElement = _this.renderItems(listItems, fields);\n _this.appendUncheckList = false;\n _this.onActionComplete(ulElement, listItems, e);\n if (_this.groupTemplate) {\n _this.renderGroupTemplate(ulElement);\n }\n _this.isRequested = false;\n _this.bindChildItems(listItems, ulElement, fields, e);\n if (_this.getInitialData) {\n _this.setListData(dataSource, fields, query, event);\n _this.getInitialData = false;\n _this.preventPopupOpen = false;\n return;\n }\n if (_this.isVirtualizationEnabled && _this.setCurrentView) {\n _this.notify(\"setCurrentViewDataAsync\", {\n module: \"VirtualScroll\",\n });\n }\n if (_this.keyboardEvent != null) {\n _this.handleVirtualKeyboardActions(_this.keyboardEvent, _this.pageCount);\n }\n if (_this.isVirtualizationEnabled) {\n _this.getFilteringSkeletonCount();\n }\n if (_this.virtualSelectAll && _this.virtualSelectAllData) {\n _this.virtualSelectionAll(_this.virtualSelectAllState, _this.liCollections, _this.CurrentEvent);\n _this.virtualSelectAllState = false;\n _this.CurrentEvent = null;\n _this.virtualSelectAll = false;\n }\n }\n });\n }).catch(function (e) {\n _this.isRequested = false;\n _this.isRequesting = false;\n _this.onActionFailure(e);\n _this.hideSpinner();\n });\n }\n else {\n _this.isRequesting = false;\n var isReOrder = true;\n var listItems = void 0;\n if (_this.isVirtualizationEnabled && !_this.virtualGroupDataSource && _this.fields.groupBy) {\n var data = new DataManager(_this.dataSource).executeLocal(new Query().group(_this.fields.groupBy));\n _this.virtualGroupDataSource = data.records;\n }\n var dataManager = _this.isVirtualizationEnabled && _this.virtualGroupDataSource && !_this.isCustomDataUpdated ? new DataManager(_this.virtualGroupDataSource) : new DataManager(eventArgs.data);\n listItems = (_this.getQuery(eventArgs.query)).executeLocal(dataManager);\n if (!_this.virtualSelectAll) {\n var newQuery = _this.getQuery(eventArgs.query);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (_this.isVirtualizationEnabled && (listItems.count != 0 && listItems.count < (_this.itemCount * 2))) {\n if (newQuery) {\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (newQuery.queries[queryElements].fn === 'onTake') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n newQuery.queries[queryElements].e.nos = listItems.count;\n listItems = (newQuery).executeLocal(dataManager);\n }\n if (_this.getModuleName() === 'multiselect' && (newQuery.queries[queryElements].e.condition == 'or' || newQuery.queries[queryElements].e.operator == 'equal')) {\n isReOrder = false;\n }\n }\n if (isReOrder) {\n listItems = (newQuery).executeLocal(dataManager);\n _this.isVirtualTrackHeight = (!(_this.dataSource instanceof DataManager) && !_this.isCustomDataUpdated) ? true : false;\n }\n }\n }\n else {\n _this.isVirtualTrackHeight = false;\n if (newQuery) {\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (_this.getModuleName() === 'multiselect' && ((newQuery.queries[queryElements].e && newQuery.queries[queryElements].e.condition == 'or') || (newQuery.queries[queryElements].e && newQuery.queries[queryElements].e.operator == 'equal'))) {\n isReOrder = false;\n }\n }\n }\n }\n }\n if (isReOrder && (!(_this.dataSource instanceof DataManager) && !_this.isCustomDataUpdated) && !_this.virtualSelectAll) {\n // eslint-disable @typescript-eslint/no-explicit-any\n _this.dataCount = _this.totalItemCount = _this.virtualSelectAll ? listItems.length : listItems.count;\n }\n listItems = _this.isVirtualizationEnabled ? listItems.result : listItems;\n // eslint-enable @typescript-eslint/no-explicit-any\n var localDataArgs = { cancel: false, result: listItems };\n _this.isPreventChange = _this.isAngular && _this.preventChange ? true : _this.isPreventChange;\n _this.trigger('actionComplete', localDataArgs, function (localDataArgs) {\n if (_this.isIncrementalRequest) {\n ulElement = _this.renderItems(localDataArgs.result, fields);\n return;\n }\n if (!localDataArgs.cancel) {\n ulElement = _this.renderItems(localDataArgs.result, fields);\n _this.onActionComplete(ulElement, localDataArgs.result, event);\n if (_this.groupTemplate) {\n _this.renderGroupTemplate(ulElement);\n }\n _this.bindChildItems(localDataArgs.result, ulElement, fields);\n if (_this.getInitialData) {\n _this.getInitialData = false;\n _this.preventPopupOpen = false;\n return;\n }\n setTimeout(function () {\n if (_this.getModuleName() === 'multiselect' && _this.itemTemplate != null && (ulElement.childElementCount > 0 && (ulElement.children[0].childElementCount > 0 || (_this.fields.groupBy && ulElement.children[1] && ulElement.children[1].childElementCount > 0)))) {\n _this.updateDataList();\n }\n });\n }\n });\n }\n }\n });\n }\n };\n DropDownBase.prototype.handleVirtualKeyboardActions = function (e, pageCount) {\n // Used this method in component side.\n };\n DropDownBase.prototype.updatePopupState = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.virtualSelectionAll = function (state, li, event) {\n // Used this method in component side.\n };\n DropDownBase.prototype.updateRemoteData = function () {\n this.setListData(this.dataSource, this.fields, this.query);\n };\n DropDownBase.prototype.bindChildItems = function (listItems, ulElement, fields, e) {\n var _this = this;\n if (listItems.length >= 100 && this.getModuleName() === 'autocomplete') {\n setTimeout(function () {\n var childNode = _this.remainingItems(_this.sortedData, fields);\n append(childNode, ulElement);\n _this.liCollections = _this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n _this.updateListValues();\n _this.raiseDataBound(listItems, e);\n }, 0);\n }\n else {\n this.raiseDataBound(listItems, e);\n }\n };\n DropDownBase.prototype.isObjectInArray = function (objectToFind, array) {\n return array.some(function (item) {\n return Object.keys(objectToFind).every(function (key) {\n return item.hasOwnProperty(key) && item[key] === objectToFind[key];\n });\n });\n };\n DropDownBase.prototype.updateListValues = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.findListElement = function (list, findNode, attribute, value) {\n var liElement = null;\n if (list) {\n var listArr = [].slice.call(list.querySelectorAll(findNode));\n for (var index = 0; index < listArr.length; index++) {\n if (listArr[index].getAttribute(attribute) === (value + '')) {\n liElement = listArr[index];\n break;\n }\n }\n }\n return liElement;\n };\n DropDownBase.prototype.raiseDataBound = function (listItems, e) {\n this.hideSpinner();\n var dataBoundEventArgs = {\n items: listItems,\n e: e\n };\n this.trigger('dataBound', dataBoundEventArgs);\n };\n DropDownBase.prototype.remainingItems = function (dataSource, fields) {\n var spliceData = new DataManager(dataSource).executeLocal(new Query().skip(100));\n if (this.itemTemplate) {\n var listElements = this.templateListItem(spliceData, fields);\n return [].slice.call(listElements.childNodes);\n }\n var type = this.typeOfData(spliceData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n return ListBase.createListItemFromArray(this.createElement, spliceData, true, this.listOption(spliceData, fields), this);\n }\n return ListBase.createListItemFromJson(this.createElement, spliceData, this.listOption(spliceData, fields), 1, true, this);\n };\n DropDownBase.prototype.emptyDataRequest = function (fields) {\n var listItems = [];\n this.onActionComplete(this.renderItems(listItems, fields), listItems);\n this.isRequested = false;\n this.isRequesting = false;\n this.hideSpinner();\n };\n DropDownBase.prototype.showSpinner = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.hideSpinner = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.onActionFailure = function (e) {\n this.liCollections = [];\n this.trigger('actionFailure', e);\n this.l10nUpdate(true);\n if (!isNullOrUndefined(this.list)) {\n addClass([this.list], dropDownBaseClasses.noData);\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n DropDownBase.prototype.onActionComplete = function (ulElement, list, e) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n this.listData = list;\n if (this.isVirtualizationEnabled && !this.isCustomDataUpdated && !this.virtualSelectAll) {\n this.notify(\"setGeneratedData\", {\n module: \"VirtualScroll\",\n });\n }\n if (this.getModuleName() !== 'listbox') {\n ulElement.setAttribute('tabindex', '0');\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['itemTemplate', 'groupTemplate', 'actionFailureTemplate', 'noRecordsTemplate']);\n }\n if (!this.isVirtualizationEnabled) {\n this.fixedHeaderElement = isNullOrUndefined(this.fixedHeaderElement) ? this.fixedHeaderElement : null;\n }\n if (this.getModuleName() === 'multiselect' && this.properties.allowCustomValue && this.fields.groupBy) {\n for (var i = 0; i < ulElement.childElementCount; i++) {\n if (ulElement.children[i].classList.contains('e-list-group-item')) {\n if (isNullOrUndefined(ulElement.children[i].innerHTML) || ulElement.children[i].innerHTML == \"\") {\n addClass([ulElement.children[i]], HIDE_GROUPLIST);\n }\n }\n if (ulElement.children[0].classList.contains('e-hide-group-header')) {\n setStyleAttribute(ulElement.children[1], { zIndex: 11 });\n }\n }\n }\n if (!isNullOrUndefined(this.list)) {\n if (!this.isVirtualizationEnabled) {\n this.list.innerHTML = '';\n this.list.appendChild(ulElement);\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n this.postRender(this.list, list, this.bindEvent);\n }\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n DropDownBase.prototype.postRender = function (listElement, list, bindEvent) {\n if (this.fields.disabled) {\n var liCollections = listElement.querySelectorAll('.' + dropDownBaseClasses.li);\n for (var index = 0; index < liCollections.length; index++) {\n if (JSON.parse(JSON.stringify(this.listData[index]))[this.fields.disabled]) {\n this.disableListItem(liCollections[index]);\n }\n }\n }\n /* eslint-enable @typescript-eslint/no-unused-vars */\n var focusItem = this.fields.disabled ? listElement.querySelector('.' + dropDownBaseClasses.li + ':not(.e-disabled') : listElement.querySelector('.' + dropDownBaseClasses.li);\n var selectedItem = listElement.querySelector('.' + dropDownBaseClasses.selected);\n if (focusItem && !selectedItem) {\n focusItem.classList.add(dropDownBaseClasses.focus);\n }\n if (list.length <= 0) {\n this.l10nUpdate();\n addClass([listElement], dropDownBaseClasses.noData);\n }\n else {\n listElement.classList.remove(dropDownBaseClasses.noData);\n }\n };\n /**\n * Get the query to do the data operation before list item generation.\n *\n * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @returns {Query} Returns the query to do the data query operation.\n */\n DropDownBase.prototype.getQuery = function (query) {\n return query ? query : this.query ? this.query : new Query();\n };\n DropDownBase.prototype.updateVirtualizationProperties = function (itemCount, filtering, isCheckbox) {\n this.isVirtualizationEnabled = true;\n this.virtualizedItemsCount = itemCount;\n this.isAllowFiltering = filtering;\n this.isCheckBoxSelection = isCheckbox;\n };\n /**\n * To render the template content for group header element.\n *\n * @param {HTMLElement} listEle - Specifies the group list elements.\n * @returns {void}\n */\n DropDownBase.prototype.renderGroupTemplate = function (listEle) {\n if (this.fields.groupBy !== null && this.dataSource || this.element.querySelector('.' + dropDownBaseClasses.group)) {\n var dataSource = this.dataSource;\n var option = { groupTemplateID: this.groupTemplateId, isStringTemplate: this.isStringTemplate };\n var headerItems = listEle.querySelectorAll('.' + dropDownBaseClasses.group);\n var groupcheck = this.templateCompiler(this.groupTemplate);\n if (typeof this.groupTemplate !== 'function' && groupcheck) {\n var groupValue = select(this.groupTemplate, document).innerHTML.trim();\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var tempHeaders = ListBase.renderGroupTemplate(groupValue, dataSource, this.fields.properties, headerItems, option, this);\n //EJ2-55168- Group checkbox is not working with group template\n if (this.isGroupChecking) {\n for (var i = 0; i < tempHeaders.length; i++) {\n this.notify('addItem', { module: 'CheckBoxSelection', item: tempHeaders[i] });\n }\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var tempHeaders = ListBase.renderGroupTemplate(this.groupTemplate, dataSource, this.fields.properties, headerItems, option, this);\n //EJ2-55168- Group checkbox is not working with group template\n if (this.isGroupChecking) {\n for (var i = 0; i < tempHeaders.length; i++) {\n this.notify('addItem', { module: 'CheckBoxSelection', item: tempHeaders[i] });\n }\n }\n }\n this.renderReactTemplates();\n }\n };\n /**\n * To create the ul li list items\n *\n * @param {object []} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @returns {HTMLElement} Return the ul li list items.\n */\n DropDownBase.prototype.createListItems = function (dataSource, fields) {\n if (dataSource) {\n if (fields.groupBy || this.element.querySelector('optgroup')) {\n if (fields.groupBy) {\n if (this.sortOrder !== 'None') {\n dataSource = this.getSortedDataSource(dataSource);\n }\n dataSource = ListBase.groupDataSource(dataSource, fields.properties, this.sortOrder);\n }\n addClass([this.list], dropDownBaseClasses.grouping);\n }\n else {\n dataSource = this.getSortedDataSource(dataSource);\n }\n var options = this.listOption(dataSource, fields);\n var spliceData = (dataSource.length > 100) ?\n new DataManager(dataSource).executeLocal(new Query().take(100))\n : dataSource;\n this.sortedData = dataSource;\n return ListBase.createList(this.createElement, (this.getModuleName() === 'autocomplete') ? spliceData : dataSource, options, true, this);\n }\n return null;\n };\n DropDownBase.prototype.listOption = function (dataSource, fields) {\n var iconCss = isNullOrUndefined(fields.iconCss) ? false : true;\n var fieldValues = !isNullOrUndefined(fields.properties) ?\n fields.properties : fields;\n var options = (fields.text !== null || fields.value !== null) ? {\n fields: fieldValues,\n showIcon: iconCss, ariaAttributes: { groupItemRole: 'presentation' }\n } : { fields: { value: 'text' } };\n return extend({}, options, fields, true);\n };\n DropDownBase.prototype.setFloatingHeader = function (e) {\n if (!isNullOrUndefined(this.list) && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (isNullOrUndefined(this.fixedHeaderElement)) {\n this.fixedHeaderElement = this.createElement('div', { className: dropDownBaseClasses.fixedHead });\n if (!isNullOrUndefined(this.list) && !this.list.querySelector('li').classList.contains(dropDownBaseClasses.group)) {\n this.fixedHeaderElement.style.display = 'none';\n }\n if (!isNullOrUndefined(this.fixedHeaderElement) && !isNullOrUndefined(this.list)) {\n prepend([this.fixedHeaderElement], this.list);\n }\n this.setFixedHeader();\n }\n if (!isNullOrUndefined(this.fixedHeaderElement) && this.fixedHeaderElement.style.zIndex === '0') {\n this.setFixedHeader();\n }\n this.scrollStop(e);\n }\n };\n DropDownBase.prototype.scrollStop = function (e, isDownkey) {\n var target = !isNullOrUndefined(e) ? e.target : this.list;\n var liHeight = parseInt(getComputedStyle(this.getValidLi(), null).getPropertyValue('height'), 10);\n var topIndex = Math.round(target.scrollTop / liHeight);\n var liCollections = this.list.querySelectorAll('li' + ':not(.e-hide-listitem)');\n var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var count = 0;\n var isCount = false;\n for (var i = topIndex; i > -1; i--) {\n var index = this.isVirtualizationEnabled ? i + virtualListCount : i;\n if (this.isVirtualizationEnabled) {\n if (isCount) {\n count++;\n }\n if (this.fixedHeaderElement && this.updateGroupHeader(index, liCollections, target)) {\n break;\n }\n if (isDownkey) {\n if ((!isNullOrUndefined(liCollections[index]) && liCollections[index].classList.contains(dropDownBaseClasses.selected) && this.getModuleName() !== 'autocomplete') || (!isNullOrUndefined(liCollections[index]) && liCollections[index].classList.contains(dropDownBaseClasses.focus) && this.getModuleName() === 'autocomplete')) {\n count++;\n isCount = true;\n }\n }\n }\n else {\n if (this.updateGroupHeader(index, liCollections, target)) {\n break;\n }\n }\n }\n };\n DropDownBase.prototype.getPageCount = function (returnExactCount) {\n if (this.list) {\n var liHeight = this.list.classList.contains(dropDownBaseClasses.noData) ? null :\n getComputedStyle(this.getItems()[0], null).getPropertyValue('height');\n var pageCount = Math.round(this.list.getBoundingClientRect().height / parseInt(liHeight, 10));\n return returnExactCount ? pageCount : Math.round(pageCount);\n }\n else {\n return 0;\n }\n };\n DropDownBase.prototype.updateGroupHeader = function (index, liCollections, target) {\n if (!isNullOrUndefined(liCollections[index]) && liCollections[index].classList.contains(dropDownBaseClasses.group)) {\n this.updateGroupFixedHeader(liCollections[index], target);\n return true;\n }\n else {\n this.fixedHeaderElement.style.display = 'none';\n this.fixedHeaderElement.style.top = 'none';\n return false;\n }\n };\n DropDownBase.prototype.updateGroupFixedHeader = function (element, target) {\n if (this.fixedHeaderElement) {\n if (!isNullOrUndefined(element.innerHTML)) {\n this.fixedHeaderElement.innerHTML = element.innerHTML;\n }\n this.fixedHeaderElement.style.position = 'fixed';\n this.fixedHeaderElement.style.top = (this.list.parentElement.offsetTop + this.list.offsetTop) - window.scrollY + 'px';\n this.fixedHeaderElement.style.display = 'block';\n }\n };\n DropDownBase.prototype.getValidLi = function () {\n if (this.isVirtualizationEnabled) {\n return this.liCollections[0].classList.contains('e-virtual-list') ? this.liCollections[this.skeletonCount] : this.liCollections[0];\n }\n return this.liCollections[0];\n };\n /**\n * To render the list items\n *\n * @param {object[]} listData - Specifies the list of array of data.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @returns {HTMLElement} Return the list items.\n */\n DropDownBase.prototype.renderItems = function (listData, fields, isCheckBoxUpdate) {\n var ulElement;\n if (this.itemTemplate && listData) {\n var dataSource = listData;\n if (dataSource && fields.groupBy) {\n if (this.sortOrder !== 'None') {\n dataSource = this.getSortedDataSource(dataSource);\n }\n dataSource = ListBase.groupDataSource(dataSource, fields.properties, this.sortOrder);\n }\n else {\n dataSource = this.getSortedDataSource(dataSource);\n }\n this.sortedData = dataSource;\n var spliceData = (dataSource.length > 100) ?\n new DataManager(dataSource).executeLocal(new Query().take(100))\n : dataSource;\n ulElement = this.templateListItem((this.getModuleName() === 'autocomplete') ? spliceData : dataSource, fields);\n if (this.isVirtualizationEnabled) {\n var oldUlElement = this.list.querySelector('.e-list-parent');\n var virtualUlElement = this.list.querySelector('.e-virtual-ddl-content');\n if ((listData.length >= this.virtualizedItemsCount && oldUlElement && virtualUlElement) || (oldUlElement && virtualUlElement && this.isAllowFiltering) || (oldUlElement && virtualUlElement && this.getModuleName() === 'autocomplete')) {\n virtualUlElement.replaceChild(ulElement, oldUlElement);\n var reOrderList = this.list.querySelectorAll('.e-reorder');\n if (this.list.querySelector('.e-virtual-ddl-content') && reOrderList && reOrderList.length > 0 && !isCheckBoxUpdate) {\n this.list.querySelector('.e-virtual-ddl-content').removeChild(reOrderList[0]);\n }\n this.updateListElements(listData);\n }\n else if ((!virtualUlElement)) {\n this.list.innerHTML = '';\n this.createVirtualContent();\n this.list.querySelector('.e-virtual-ddl-content').appendChild(ulElement);\n this.updateListElements(listData);\n }\n }\n }\n else {\n if (this.getModuleName() === 'multiselect' && this.virtualSelectAll) {\n this.virtualSelectAllData = listData;\n listData = listData.slice(this.virtualItemStartIndex, this.virtualItemEndIndex);\n }\n ulElement = this.createListItems(listData, fields);\n if (this.isIncrementalRequest) {\n this.incrementalLiCollections = ulElement.querySelectorAll('.' + dropDownBaseClasses.li);\n this.incrementalUlElement = ulElement;\n this.incrementalListData = listData;\n return ulElement;\n }\n if (this.isVirtualizationEnabled) {\n var oldUlElement = this.list.querySelector('.e-list-parent' + ':not(.e-reorder)');\n var virtualUlElement = this.list.querySelector('.e-virtual-ddl-content');\n var isRemovedUlelement = false;\n if (!oldUlElement && this.list.querySelector('.e-list-parent' + '.e-reorder')) {\n oldUlElement = this.list.querySelector('.e-list-parent' + '.e-reorder');\n }\n if ((listData.length >= this.virtualizedItemsCount && oldUlElement && virtualUlElement) || (oldUlElement && virtualUlElement && this.isAllowFiltering) || (oldUlElement && virtualUlElement && (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'multiselect')) || isRemovedUlelement) {\n if (!this.appendUncheckList) {\n virtualUlElement.replaceChild(ulElement, oldUlElement);\n }\n else {\n virtualUlElement.appendChild(ulElement);\n }\n this.updateListElements(listData);\n }\n else if ((!virtualUlElement) || (!virtualUlElement.firstChild)) {\n this.list.innerHTML = '';\n this.createVirtualContent();\n this.list.querySelector('.e-virtual-ddl-content').appendChild(ulElement);\n this.updateListElements(listData);\n }\n }\n }\n return ulElement;\n };\n DropDownBase.prototype.createVirtualContent = function () {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n }));\n }\n };\n DropDownBase.prototype.updateListElements = function (listData) {\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n this.listData = listData;\n this.postRender(this.list, listData, this.bindEvent);\n };\n DropDownBase.prototype.templateListItem = function (dataSource, fields) {\n var option = this.listOption(dataSource, fields);\n option.templateID = this.itemTemplateId;\n option.isStringTemplate = this.isStringTemplate;\n var itemcheck = this.templateCompiler(this.itemTemplate);\n var ulElement;\n if (typeof this.itemTemplate !== 'function' && itemcheck) {\n var itemValue = select(this.itemTemplate, document).innerHTML.trim();\n ulElement = ListBase.renderContentTemplate(this.createElement, itemValue, dataSource, fields.properties, option, this);\n if (this.isVirtualizationEnabled && this.isReact) {\n this.renderReactTemplates();\n }\n return ulElement;\n }\n else {\n ulElement = ListBase.renderContentTemplate(this.createElement, this.itemTemplate, dataSource, fields.properties, option, this);\n if (this.isVirtualizationEnabled && this.isReact) {\n this.renderReactTemplates();\n }\n return ulElement;\n }\n };\n DropDownBase.prototype.typeOfData = function (items) {\n var item = { typeof: null, item: null };\n for (var i = 0; (!isNullOrUndefined(items) && i < items.length); i++) {\n if (!isNullOrUndefined(items[i])) {\n var listDataType = typeof (items[i]) === 'string' ||\n typeof (items[i]) === 'number' || typeof (items[i]) === 'boolean';\n var isNullData = listDataType ? isNullOrUndefined(items[i]) :\n isNullOrUndefined(getValue((this.fields.value ? this.fields.value : 'value'), items[i]));\n if (!isNullData) {\n return item = { typeof: typeof items[i], item: items[i] };\n }\n }\n }\n return item;\n };\n DropDownBase.prototype.setFixedHeader = function () {\n if (!isNullOrUndefined(this.list)) {\n this.list.parentElement.style.display = 'block';\n }\n var borderWidth = 0;\n if (this.list && this.list.parentElement) {\n borderWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-width'), 10);\n /*Shorthand property not working in Firefox for getComputedStyle method.\n Refer bug report https://bugzilla.mozilla.org/show_bug.cgi?id=137688\n Refer alternate solution https://stackoverflow.com/a/41696234/9133493*/\n if (isNaN(borderWidth)) {\n var borderTopWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-top-width'), 10);\n var borderBottomWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-bottom-width'), 10);\n var borderLeftWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-left-width'), 10);\n var borderRightWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-right-width'), 10);\n borderWidth = (borderTopWidth + borderBottomWidth + borderLeftWidth + borderRightWidth);\n }\n }\n if (!isNullOrUndefined(this.liCollections)) {\n var liWidth = this.getValidLi().offsetWidth - borderWidth;\n this.fixedHeaderElement.style.width = liWidth.toString() + 'px';\n }\n setStyleAttribute(this.fixedHeaderElement, { zIndex: 10 });\n var firstLi = this.ulElement.querySelector('.' + dropDownBaseClasses.group + ':not(.e-hide-listitem)');\n this.fixedHeaderElement.innerHTML = firstLi.innerHTML;\n };\n DropDownBase.prototype.getSortedDataSource = function (dataSource) {\n if (dataSource && this.sortOrder !== 'None') {\n var textField = this.fields.text ? this.fields.text : 'text';\n if (this.typeOfData(dataSource).typeof === 'string' || this.typeOfData(dataSource).typeof === 'number'\n || this.typeOfData(dataSource).typeof === 'boolean') {\n textField = '';\n }\n dataSource = ListBase.getDataSource(dataSource, ListBase.addSorting(this.sortOrder, textField));\n }\n return dataSource;\n };\n /**\n * Return the index of item which matched with given value in data source\n *\n * @param {string | number | boolean} value - Specifies given value.\n * @returns {number} Returns the index of the item.\n */\n DropDownBase.prototype.getIndexByValue = function (value) {\n var index;\n var listItems = [];\n if (this.fields.disabled && this.getModuleName() === 'multiselect' && this.liCollections) {\n listItems = this.liCollections;\n }\n else {\n listItems = this.getItems();\n }\n for (var i = 0; i < listItems.length; i++) {\n if (!isNullOrUndefined(value) && listItems[i].getAttribute('data-value') === value.toString()) {\n index = i;\n break;\n }\n }\n return index;\n };\n /**\n * Return the index of item which matched with given value in data source\n *\n * @param {string | number | boolean} value - Specifies given value.\n * @returns {number} Returns the index of the item.\n */\n DropDownBase.prototype.getIndexByValueFilter = function (value, ulElement) {\n var index;\n if (!ulElement) {\n return null;\n }\n var listItems = ulElement.querySelectorAll('li' + ':not(.e-list-group-item)');\n if (listItems) {\n for (var i = 0; i < listItems.length; i++) {\n if (!isNullOrUndefined(value) && listItems[i].getAttribute('data-value') === value.toString()) {\n index = i;\n break;\n }\n }\n }\n return index;\n };\n /**\n * To dispatch the event manually\n *\n * @param {HTMLElement} element - Specifies the element to dispatch the event.\n * @param {string} type - Specifies the name of the event.\n * @returns {void}\n */\n DropDownBase.prototype.dispatchEvent = function (element, type) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent(type, false, true);\n if (element) {\n element.dispatchEvent(evt);\n }\n };\n /**\n * To set the current fields\n *\n * @returns {void}\n */\n DropDownBase.prototype.setFields = function () {\n if (this.fields.value && !this.fields.text) {\n this.updateFields(this.fields.value, this.fields.value);\n }\n else if (!this.fields.value && this.fields.text) {\n this.updateFields(this.fields.text, this.fields.text);\n }\n else if (!this.fields.value && !this.fields.text) {\n this.updateFields('text', 'text');\n }\n };\n /**\n * reset the items list.\n *\n * @param {Object[] | string[] | number[] | DataManager | boolean[]} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @returns {void}\n */\n DropDownBase.prototype.resetList = function (dataSource, fields, query, e) {\n if (this.list) {\n if ((this.element.tagName === 'SELECT' && this.element.options.length > 0)\n || (this.element.tagName === 'UL' && this.element.childNodes.length > 0)) {\n var data = dataSource instanceof Array ? (dataSource.length > 0)\n : !isNullOrUndefined(dataSource);\n if (!data && this.selectData && this.selectData.length > 0) {\n dataSource = this.selectData;\n }\n }\n dataSource = this.getModuleName() === 'combobox' && this.selectData && dataSource instanceof Array && dataSource.length < this.selectData.length && this.addedNewItem ? this.selectData : dataSource;\n this.addedNewItem = false;\n this.setListData(dataSource, fields, query, e);\n }\n };\n DropDownBase.prototype.updateSelectElementData = function (isFiltering) {\n if ((isFiltering || this.isVirtualizationEnabled) && isNullOrUndefined(this.selectData) && this.listData && this.listData.length > 0) {\n this.selectData = this.listData;\n }\n };\n DropDownBase.prototype.updateSelection = function () {\n // This is for after added the item, need to update the selected index values.\n };\n DropDownBase.prototype.renderList = function () {\n // This is for render the list items.\n this.render();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateDataSource = function (props, oldProps) {\n this.resetList(this.dataSource);\n this.totalItemCount = this.dataSource instanceof DataManager ? this.dataSource.dataSource.json.length : 0;\n };\n DropDownBase.prototype.setUpdateInitial = function (props, newProp, oldProp) {\n this.isDataFetched = false;\n var updateData = {};\n for (var j = 0; props.length > j; j++) {\n if (newProp[props[j]] && props[j] === 'fields') {\n this.setFields();\n updateData[props[j]] = newProp[props[j]];\n }\n else if (newProp[props[j]]) {\n updateData[props[j]] = newProp[props[j]];\n }\n }\n if (Object.keys(updateData).length > 0) {\n if (Object.keys(updateData).indexOf('dataSource') === -1) {\n updateData.dataSource = this.dataSource;\n }\n this.updateDataSource(updateData, oldProp);\n }\n };\n /**\n * When property value changes happened, then onPropertyChanged method will execute the respective changes in this component.\n *\n * @param {DropDownBaseModel} newProp - Returns the dynamic property value of the component.\n * @param {DropDownBaseModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'dropdownbase') {\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n this.setUpdateInitial(['sortOrder', 'itemTemplate'], newProp);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'query':\n case 'sortOrder':\n case 'dataSource':\n case 'itemTemplate':\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'groupTemplate':\n this.renderGroupTemplate(this.list);\n if (this.ulElement && this.fixedHeaderElement) {\n var firstLi = this.ulElement.querySelector('.' + dropDownBaseClasses.group);\n this.fixedHeaderElement.innerHTML = firstLi.innerHTML;\n }\n break;\n case 'locale':\n if (this.list && (!isNullOrUndefined(this.liCollections) && this.liCollections.length === 0)) {\n this.l10nUpdate();\n }\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n this.setZIndex();\n break;\n }\n }\n };\n /**\n * Build and render the component\n *\n * @param {boolean} isEmptyData - Specifies the component to initialize with list data or not.\n * @private\n * @returns {void}\n */\n DropDownBase.prototype.render = function (e, isEmptyData) {\n if (this.getModuleName() === 'listbox') {\n this.list = this.createElement('div', { className: dropDownBaseClasses.content, attrs: { 'tabindex': '0' } });\n }\n else {\n this.list = this.createElement('div', { className: dropDownBaseClasses.content });\n }\n this.list.classList.add(dropDownBaseClasses.root);\n this.setFields();\n var rippleModel = { duration: 300, selector: '.' + dropDownBaseClasses.li };\n this.rippleFun = rippleEffect(this.list, rippleModel);\n var group = this.element.querySelector('select>optgroup');\n if ((this.fields.groupBy || !isNullOrUndefined(group)) && !this.isGroupChecking) {\n EventHandler.add(this.list, 'scroll', this.setFloatingHeader, this);\n EventHandler.add(document, 'scroll', this.updateGroupFixedHeader, this);\n }\n if (this.getModuleName() === 'dropdownbase') {\n if (this.element.getAttribute('tabindex')) {\n this.list.setAttribute('tabindex', this.element.getAttribute('tabindex'));\n }\n removeClass([this.element], dropDownBaseClasses.root);\n this.element.style.display = 'none';\n var wrapperElement = this.createElement('div');\n this.element.parentElement.insertBefore(wrapperElement, this.element);\n wrapperElement.appendChild(this.element);\n wrapperElement.appendChild(this.list);\n }\n this.setEnableRtl();\n if (!isEmptyData) {\n this.initialize(e);\n }\n };\n DropDownBase.prototype.removeScrollEvent = function () {\n if (this.list) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n }\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n DropDownBase.prototype.getModuleName = function () {\n return 'dropdownbase';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n */\n DropDownBase.prototype.getItems = function () {\n return this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Adds a new item to the popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n\n */\n DropDownBase.prototype.addItem = function (items, itemIndex) {\n if (!this.list || (this.list.textContent === this.noRecordsTemplate && this.getModuleName() !== 'listbox')) {\n this.renderList();\n }\n if (this.sortOrder !== 'None' && isNullOrUndefined(itemIndex)) {\n var newList = [].slice.call(this.listData);\n newList.push(items);\n newList = this.getSortedDataSource(newList);\n if (this.fields.groupBy) {\n newList = ListBase.groupDataSource(newList, this.fields.properties, this.sortOrder);\n itemIndex = newList.indexOf(items);\n }\n else {\n itemIndex = newList.indexOf(items);\n }\n }\n var itemsCount = this.getItems().length;\n var isListboxEmpty = itemsCount === 0;\n var selectedItemValue = this.list.querySelector('.' + dropDownBaseClasses.selected);\n items = (items instanceof Array ? items : [items]);\n var index;\n index = (isNullOrUndefined(itemIndex) || itemIndex < 0 || itemIndex > itemsCount - 1) ? itemsCount : itemIndex;\n var fields = this.fields;\n if (items && fields.groupBy) {\n items = ListBase.groupDataSource(items, fields.properties);\n }\n var liCollections = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[i];\n var isHeader = item.isHeader;\n var li = this.createElement('li', { className: isHeader ? dropDownBaseClasses.group : dropDownBaseClasses.li, id: 'option-add-' + i });\n var itemText = item instanceof Object ? getValue(fields.text, item) : item;\n if (isHeader) {\n li.innerText = itemText;\n }\n if (this.itemTemplate && !isHeader) {\n var itemCheck = this.templateCompiler(this.itemTemplate);\n var compiledString = typeof this.itemTemplate !== 'function' &&\n itemCheck ? compile(select(this.itemTemplate, document).innerHTML.trim()) : compile(this.itemTemplate);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var addItemTemplate = compiledString(item, this, 'itemTemplate', this.itemTemplateId, this.isStringTemplate, null, li);\n if (addItemTemplate) {\n append(addItemTemplate, li);\n }\n }\n else if (!isHeader) {\n li.appendChild(document.createTextNode(itemText));\n }\n li.setAttribute('data-value', item instanceof Object ? getValue(fields.value, item) : item);\n li.setAttribute('role', 'option');\n this.notify('addItem', { module: 'CheckBoxSelection', item: li });\n liCollections.push(li);\n if (this.getModuleName() === 'listbox') {\n if (item.disabled) {\n li.classList.add('e-disabled');\n }\n this.listData.splice(isListboxEmpty ? this.listData.length : index, 0, item);\n if (this.listData.length !== this.sortedData.length) {\n this.sortedData = this.listData;\n }\n }\n else {\n this.listData.push(item);\n }\n if (this.sortOrder === 'None' && isNullOrUndefined(itemIndex) && index === 0) {\n index = null;\n }\n if (this.getModuleName() === 'listbox') {\n this.updateActionCompleteData(li, item, isListboxEmpty ? null : index);\n isListboxEmpty = true;\n }\n else {\n this.updateActionCompleteData(li, item, index);\n }\n //Listbox event\n this.trigger('beforeItemRender', { element: li, item: item });\n }\n if (itemsCount === 0 && isNullOrUndefined(this.list.querySelector('ul'))) {\n if (!isNullOrUndefined(this.list)) {\n this.list.innerHTML = '';\n this.list.classList.remove(dropDownBaseClasses.noData);\n this.isAddNewItemTemplate = true;\n if (!isNullOrUndefined(this.ulElement)) {\n this.list.appendChild(this.ulElement);\n }\n }\n this.liCollections = liCollections;\n if (!isNullOrUndefined(liCollections) && !isNullOrUndefined(this.ulElement)) {\n append(liCollections, this.ulElement);\n }\n this.updateAddItemList(this.list, itemsCount);\n }\n else {\n if (this.getModuleName() === 'listbox' && itemsCount === 0) {\n this.ulElement.innerHTML = '';\n }\n var attr = [];\n for (var i = 0; i < items.length; i++) {\n var listGroupItem = this.ulElement.querySelectorAll('.e-list-group-item');\n for (var j = 0; j < listGroupItem.length; j++) {\n attr[j] = listGroupItem[j].innerText;\n }\n if (attr.indexOf(liCollections[i].innerText) > -1 && fields.groupBy) {\n for (var j = 0; j < listGroupItem.length; j++) {\n if (attr[j] === liCollections[i].innerText) {\n if (this.sortOrder === 'None') {\n this.ulElement.insertBefore(liCollections[i + 1], listGroupItem[j + 1]);\n }\n else {\n this.ulElement.insertBefore(liCollections[i + 1], this.ulElement.childNodes[itemIndex]);\n }\n i = i + 1;\n break;\n }\n }\n }\n else {\n if (this.liCollections[index] && this.liCollections[index].parentNode) {\n this.liCollections[index].parentNode.insertBefore(liCollections[i], this.liCollections[index]);\n }\n else {\n this.ulElement.appendChild(liCollections[i]);\n }\n }\n var tempLi = [].slice.call(this.liCollections);\n tempLi.splice(index, 0, liCollections[i]);\n this.liCollections = tempLi;\n index += 1;\n if (this.getModuleName() === 'multiselect') {\n this.updateDataList();\n }\n }\n }\n if (this.getModuleName() === 'listbox' && this.isReact) {\n this.renderReactTemplates();\n }\n if (selectedItemValue || itemIndex === 0) {\n this.updateSelection();\n }\n this.addedNewItem = true;\n };\n /**\n * Checks if the given HTML element is disabled.\n *\n * @param {HTMLElement} li - The HTML element to check.\n * @returns {boolean} - Returns true if the element is disabled, otherwise false.\n */\n DropDownBase.prototype.isDisabledElement = function (li) {\n if (li && li.classList.contains('e-disabled')) {\n return true;\n }\n return false;\n };\n /**\n * Checks whether the list item at the specified index is disabled.\n *\n * @param {number} index - The index of the list item to check.\n * @returns {boolean} True if the list item is disabled, false otherwise.\n */\n DropDownBase.prototype.isDisabledItemByIndex = function (index) {\n if (this.fields.disabled && this.liCollections) {\n return this.isDisabledElement(this.liCollections[index]);\n }\n return false;\n };\n /**\n * Disables the given list item.\n *\n * @param { HTMLLIElement } li - The list item to disable.\n * @returns {void}\n */\n DropDownBase.prototype.disableListItem = function (li) {\n li.classList.add('e-disabled');\n li.setAttribute('aria-disabled', 'true');\n li.setAttribute('aria-selected', 'false');\n };\n DropDownBase.prototype.validationAttribute = function (target, hidden) {\n var name = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n hidden.setAttribute('name', name);\n target.removeAttribute('name');\n var attributes = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes.length; i++) {\n if (!target.getAttribute(attributes[i])) {\n continue;\n }\n var attr = target.getAttribute(attributes[i]);\n hidden.setAttribute(attributes[i], attr);\n target.removeAttribute(attributes[i]);\n }\n };\n DropDownBase.prototype.setZIndex = function () {\n // this is for component wise\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateActionCompleteData = function (li, item, index) {\n // this is for ComboBox custom value\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateAddItemList = function (list, itemCount) {\n // this is for multiselect add item\n };\n DropDownBase.prototype.updateDataList = function () {\n // this is for multiselect update list items\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n */\n DropDownBase.prototype.getDataByValue = function (value) {\n if (!isNullOrUndefined(this.listData)) {\n var type = this.typeOfData(this.listData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (var _i = 0, _a = this.listData; _i < _a.length; _i++) {\n var item = _a[_i];\n if (!isNullOrUndefined(item) && item === value) {\n return item;\n }\n }\n }\n else {\n for (var _b = 0, _c = this.listData; _b < _c.length; _b++) {\n var item = _c[_b];\n if (!isNullOrUndefined(item) && getValue((this.fields.value ? this.fields.value : 'value'), item) === value) {\n return item;\n }\n }\n }\n }\n return null;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Removes the component from the DOM and detaches all its related event handlers. It also removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n DropDownBase.prototype.destroy = function () {\n if (document) {\n EventHandler.remove(document, 'scroll', this.updateGroupFixedHeader);\n if (document.body.contains(this.list)) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n if (!isNullOrUndefined(this.rippleFun)) {\n this.rippleFun();\n }\n detach(this.list);\n }\n }\n this.liCollections = null;\n this.ulElement = null;\n this.list = null;\n this.enableRtlElements = null;\n this.rippleFun = null;\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null, disabled: null }, FieldSettings)\n ], DropDownBase.prototype, \"fields\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], DropDownBase.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property('Request failed')\n ], DropDownBase.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property('None')\n ], DropDownBase.prototype, \"sortOrder\", void 0);\n __decorate([\n Property([])\n ], DropDownBase.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"query\", void 0);\n __decorate([\n Property('StartsWith')\n ], DropDownBase.prototype, \"filterType\", void 0);\n __decorate([\n Property(true)\n ], DropDownBase.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(1000)\n ], DropDownBase.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], DropDownBase.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], DropDownBase.prototype, \"locale\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"destroyed\", void 0);\n DropDownBase = __decorate([\n NotifyPropertyChanges\n ], DropDownBase);\n return DropDownBase;\n}(Component));\nexport { DropDownBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { EventHandler, Property, Event, compile, KeyboardEvents, append, select } from '@syncfusion/ej2-base';\nimport { attributes, isNullOrUndefined, getUniqueID, formatUnit, isUndefined, getValue } from '@syncfusion/ej2-base';\nimport { Animation, Browser, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, closest, prepend, detach, classList } from '@syncfusion/ej2-base';\nimport { Popup, isCollide, createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { incrementalSearch, resetIncrementalSearchValues } from '../common/incremental-search';\nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nimport { DataManager, Query, Predicate } from '@syncfusion/ej2-data';\n[];\n// don't use space in classnames\nexport var dropDownListClasses = {\n root: 'e-dropdownlist',\n hover: dropDownBaseClasses.hover,\n selected: dropDownBaseClasses.selected,\n rtl: dropDownBaseClasses.rtl,\n li: dropDownBaseClasses.li,\n disable: dropDownBaseClasses.disabled,\n base: dropDownBaseClasses.root,\n focus: dropDownBaseClasses.focus,\n content: dropDownBaseClasses.content,\n input: 'e-input-group',\n inputFocus: 'e-input-focus',\n icon: 'e-input-group-icon e-ddl-icon',\n iconAnimation: 'e-icon-anim',\n value: 'e-input-value',\n device: 'e-ddl-device',\n backIcon: 'e-input-group-icon e-back-icon e-icons',\n filterBarClearIcon: 'e-input-group-icon e-clear-icon e-icons',\n filterInput: 'e-input-filter',\n filterParent: 'e-filter-parent',\n mobileFilter: 'e-ddl-device-filter',\n footer: 'e-ddl-footer',\n header: 'e-ddl-header',\n clearIcon: 'e-clear-icon',\n clearIconHide: 'e-clear-icon-hide',\n popupFullScreen: 'e-popup-full-page',\n disableIcon: 'e-ddl-disable-icon',\n hiddenElement: 'e-ddl-hidden',\n virtualList: 'e-list-item e-virtual-list',\n};\nvar inputObject = {\n container: null,\n buttons: []\n};\n/**\n * The DropDownList component contains a list of predefined values from which you can\n * choose a single value.\n * ```html\n * \n * ```\n * ```typescript\n * let dropDownListObj:DropDownList = new DropDownList();\n * dropDownListObj.appendTo(\"#list\");\n * ```\n */\nvar DropDownList = /** @class */ (function (_super) {\n __extends(DropDownList, _super);\n /**\n * * Constructor for creating the DropDownList component.\n *\n * @param {DropDownListModel} options - Specifies the DropDownList model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function DropDownList(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isListSearched = false;\n _this.preventChange = false;\n _this.isTouched = false;\n _this.isFocused = false;\n _this.IsScrollerAtEnd = function () {\n return this.list && this.list.scrollTop + this.list.clientHeight >= this.list.scrollHeight;\n };\n return _this;\n }\n /**\n * Initialize the event handler.\n *\n * @private\n * @returns {void}\n */\n DropDownList.prototype.preRender = function () {\n this.valueTempElement = null;\n this.element.style.opacity = '0';\n this.initializeData();\n _super.prototype.preRender.call(this);\n this.activeIndex = this.index;\n this.queryString = '';\n };\n DropDownList.prototype.initializeData = function () {\n this.isPopupOpen = false;\n this.isDocumentClick = false;\n this.isInteracted = false;\n this.isFilterFocus = false;\n this.beforePopupOpen = false;\n this.initial = true;\n this.initialRemoteRender = false;\n this.isNotSearchList = false;\n this.isTyped = false;\n this.isSelected = false;\n this.preventFocus = false;\n this.preventAutoFill = false;\n this.isValidKey = false;\n this.typedString = '';\n this.isEscapeKey = false;\n this.isPreventBlur = false;\n this.isTabKey = false;\n this.actionCompleteData = { isUpdated: false };\n this.actionData = { isUpdated: false };\n this.prevSelectPoints = {};\n this.isSelectCustom = false;\n this.isDropDownClick = false;\n this.preventAltUp = false;\n this.isCustomFilter = false;\n this.isSecondClick = false;\n this.previousValue = null;\n this.keyConfigure = {\n tab: 'tab',\n enter: '13',\n escape: '27',\n end: '35',\n home: '36',\n down: '40',\n up: '38',\n pageUp: '33',\n pageDown: '34',\n open: 'alt+40',\n close: 'shift+tab',\n hide: 'alt+38',\n space: '32'\n };\n this.viewPortInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: this.itemCount,\n };\n };\n DropDownList.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ 'zIndex': this.zIndex });\n }\n };\n DropDownList.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableVirtualization) {\n modules.push({ args: [this], member: 'VirtualScroll' });\n }\n return modules;\n };\n DropDownList.prototype.renderList = function (e, isEmptyData) {\n _super.prototype.render.call(this, e, isEmptyData);\n if (!(this.dataSource instanceof DataManager)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n }\n if (this.enableVirtualization && this.isFiltering() && this.getModuleName() === 'combobox') {\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n }\n this.unWireListEvents();\n this.wireListEvents();\n };\n DropDownList.prototype.floatLabelChange = function () {\n if (this.getModuleName() === 'dropdownlist' && this.floatLabelType === 'Auto') {\n var floatElement = this.inputWrapper.container.querySelector('.e-float-text');\n if (this.inputElement.value !== '' || this.isInteracted) {\n classList(floatElement, ['e-label-top'], ['e-label-bottom']);\n }\n else {\n classList(floatElement, ['e-label-bottom'], ['e-label-top']);\n }\n }\n };\n DropDownList.prototype.resetHandler = function (e) {\n e.preventDefault();\n this.clearAll(e);\n if (this.enableVirtualization) {\n this.list.scrollTop = 0;\n this.virtualListInfo = null;\n this.previousStartIndex = 0;\n this.previousEndIndex = 0;\n }\n };\n DropDownList.prototype.resetFocusElement = function () {\n this.removeHover();\n this.removeSelection();\n this.removeFocus();\n this.list.scrollTop = 0;\n if (this.getModuleName() !== 'autocomplete' && !isNullOrUndefined(this.ulElement)) {\n var li = this.fields.disabled ? this.ulElement.querySelector('.' + dropDownListClasses.li + ':not(.e-disabled)') : this.ulElement.querySelector('.' + dropDownListClasses.li);\n if (this.enableVirtualization) {\n li = this.liCollections[this.skeletonCount];\n }\n if (li) {\n li.classList.add(dropDownListClasses.focus);\n }\n }\n };\n DropDownList.prototype.clearAll = function (e, properties) {\n this.previousItemData = (!isNullOrUndefined(this.itemData)) ? this.itemData : null;\n if (isNullOrUndefined(properties) || (!isNullOrUndefined(properties) &&\n (isNullOrUndefined(properties.dataSource) ||\n (!(properties.dataSource instanceof DataManager) && properties.dataSource.length === 0)))) {\n this.isActive = true;\n this.resetSelection(properties);\n }\n var dataItem = this.getItemData();\n if ((!this.allowObjectBinding && (this.previousValue === dataItem.value)) || (this.allowObjectBinding && this.previousValue && this.isObjectInArray(this.previousValue, [this.allowCustom ? this.value ? this.value : dataItem : dataItem.value ? this.getDataByValue(dataItem.value) : dataItem]))) {\n return;\n }\n this.onChangeEvent(e);\n this.checkAndResetCache();\n if (this.enableVirtualization) {\n this.updateInitialData();\n }\n };\n DropDownList.prototype.resetSelection = function (properties) {\n if (this.list) {\n if ((!isNullOrUndefined(properties) &&\n (isNullOrUndefined(properties.dataSource) ||\n (!(properties.dataSource instanceof DataManager) && properties.dataSource.length === 0)))) {\n this.selectedLI = null;\n this.actionCompleteData.isUpdated = false;\n this.actionCompleteData.ulElement = null;\n this.actionCompleteData.list = null;\n this.resetList(properties.dataSource);\n }\n else {\n if (this.allowFiltering && this.getModuleName() !== 'autocomplete'\n && !isNullOrUndefined(this.actionCompleteData.ulElement) && !isNullOrUndefined(this.actionCompleteData.list) &&\n this.actionCompleteData.list.length > 0) {\n this.onActionComplete(this.actionCompleteData.ulElement.cloneNode(true), this.actionCompleteData.list);\n }\n this.resetFocusElement();\n }\n }\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = '';\n }\n if (!isNullOrUndefined(this.inputElement)) {\n this.inputElement.value = '';\n }\n this.value = null;\n this.itemData = null;\n this.text = null;\n this.index = null;\n this.activeIndex = null;\n this.item = null;\n this.queryString = '';\n if (this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n this.valueTempElement = null;\n }\n this.setSelection(null, null);\n this.isSelectCustom = false;\n this.updateIconState();\n this.cloneElements();\n };\n DropDownList.prototype.setHTMLAttributes = function () {\n if (Object.keys(this.htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n if (htmlAttr === 'class') {\n var updatedClassValue = (this.htmlAttributes[\"\" + htmlAttr].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValue !== '') {\n addClass([this.inputWrapper.container], updatedClassValue.split(' '));\n }\n }\n else if (htmlAttr === 'disabled' && this.htmlAttributes[\"\" + htmlAttr] === 'disabled') {\n this.enabled = false;\n this.setEnable();\n }\n else if (htmlAttr === 'readonly' && !isNullOrUndefined(this.htmlAttributes[\"\" + htmlAttr])) {\n this.readonly = true;\n this.dataBind();\n }\n else if (htmlAttr === 'style') {\n this.inputWrapper.container.setAttribute('style', this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr === 'aria-label') {\n if ((this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') && !this.readonly) {\n this.inputElement.setAttribute('aria-label', this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (this.getModuleName() === 'dropdownlist') {\n this.inputWrapper.container.setAttribute('aria-label', this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n else {\n var defaultAttr = ['title', 'id', 'placeholder',\n 'role', 'autocomplete', 'autocapitalize', 'spellcheck', 'minlength', 'maxlength'];\n var validateAttr = ['name', 'required'];\n if (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') {\n defaultAttr.push('tabindex');\n }\n if (validateAttr.indexOf(htmlAttr) > -1 || htmlAttr.indexOf('data') === 0) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (defaultAttr.indexOf(htmlAttr) > -1) {\n if (htmlAttr === 'placeholder') {\n Input.setPlaceholder(this.htmlAttributes[\"\" + htmlAttr], this.inputElement);\n }\n else {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n else {\n this.inputWrapper.container.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n }\n }\n if (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') {\n this.inputWrapper.container.removeAttribute('tabindex');\n }\n };\n DropDownList.prototype.getAriaAttributes = function () {\n return {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'aria-expanded': 'false',\n 'aria-live': 'polite',\n 'aria-labelledby': this.hiddenElement.id\n };\n };\n DropDownList.prototype.setEnableRtl = function () {\n Input.setEnableRtl(this.enableRtl, [this.inputElement.parentElement]);\n if (this.popupObj) {\n this.popupObj.enableRtl = this.enableRtl;\n this.popupObj.dataBind();\n }\n };\n DropDownList.prototype.setEnable = function () {\n Input.setEnabled(this.enabled, this.inputElement);\n if (this.enabled) {\n removeClass([this.inputWrapper.container], dropDownListClasses.disable);\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.targetElement().setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.hidePopup();\n addClass([this.inputWrapper.container], dropDownListClasses.disable);\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.targetElement().tabIndex = -1;\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} Returns the persisted data of the component.\n */\n DropDownList.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n DropDownList.prototype.getLocaleName = function () {\n return 'drop-down-list';\n };\n DropDownList.prototype.preventTabIndex = function (element) {\n if (this.getModuleName() === 'dropdownlist') {\n element.tabIndex = -1;\n }\n };\n DropDownList.prototype.targetElement = function () {\n return !isNullOrUndefined(this.inputWrapper) ? this.inputWrapper.container : null;\n };\n DropDownList.prototype.getNgDirective = function () {\n return 'EJS-DROPDOWNLIST';\n };\n DropDownList.prototype.getElementByText = function (text) {\n return this.getElementByValue(this.getValueByText(text));\n };\n DropDownList.prototype.getElementByValue = function (value) {\n var item;\n var listItems = this.getItems();\n for (var _i = 0, listItems_1 = listItems; _i < listItems_1.length; _i++) {\n var liItem = listItems_1[_i];\n if (this.getFormattedValue(liItem.getAttribute('data-value')) === value) {\n item = liItem;\n break;\n }\n }\n return item;\n };\n DropDownList.prototype.initValue = function () {\n this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.itemCount;\n this.renderList();\n if (this.dataSource instanceof DataManager) {\n this.initialRemoteRender = true;\n }\n else {\n this.updateValues();\n }\n };\n /**\n * Checks if the given value is disabled.\n *\n * @param { string | number | boolean | object } value - The value to check for disablement. Can be a string, number, boolean, or object.\n * @returns { boolean } A boolean indicating whether the value is disabled.\n */\n DropDownList.prototype.isDisableItemValue = function (value) {\n if (typeof (value) === 'object') {\n var objectValue = JSON.parse(JSON.stringify(value))[this.fields.value];\n return this.isDisabledItemByIndex(this.getIndexByValue(objectValue));\n }\n return this.isDisabledItemByIndex(this.getIndexByValue(value));\n };\n DropDownList.prototype.updateValues = function () {\n if (this.fields.disabled) {\n if (this.value != null) {\n this.value = !this.isDisableItemValue(this.value) ? this.value : null;\n }\n if (this.text != null) {\n this.text = !this.isDisabledItemByIndex(this.getIndexByValue(this.getValueByText(this.text))) ? this.text : null;\n }\n if (this.index != null) {\n this.index = !this.isDisabledItemByIndex(this.index) ? this.index : null;\n this.activeIndex = this.index;\n }\n }\n this.selectedValueInfo = this.viewPortInfo;\n if (!isNullOrUndefined(this.value)) {\n var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue(((this.fields.value) ? this.fields.value : ''), this.value) : this.value;\n this.setSelection(this.getElementByValue(value), null);\n }\n else if (this.text && isNullOrUndefined(this.value)) {\n var element = this.getElementByText(this.text);\n if (isNullOrUndefined(element)) {\n this.setProperties({ text: null });\n return;\n }\n else {\n this.setSelection(element, null);\n }\n }\n else {\n this.setSelection(this.liCollections[this.activeIndex], null);\n }\n this.setHiddenValue();\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n DropDownList.prototype.onBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n var target = e.relatedTarget;\n var currentTarget = e.target;\n var isPreventBlur = this.isPreventBlur;\n this.isPreventBlur = false;\n //IE 11 - issue\n if (isPreventBlur && !this.isDocumentClick && this.isPopupOpen && (!isNullOrUndefined(currentTarget) ||\n !this.isFilterLayout() && isNullOrUndefined(target))) {\n if (this.getModuleName() === 'dropdownlist' && this.allowFiltering && this.isPopupOpen) {\n this.filterInput.focus();\n }\n else {\n this.targetElement().focus();\n }\n return;\n }\n if (this.isDocumentClick || (!isNullOrUndefined(this.popupObj)\n && document.body.contains(this.popupObj.element) &&\n this.popupObj.element.classList.contains(dropDownListClasses.mobileFilter))) {\n if (!this.beforePopupOpen) {\n this.isDocumentClick = false;\n }\n return;\n }\n if (((this.getModuleName() === 'dropdownlist' && !this.isFilterFocus && target !== this.inputElement)\n && (document.activeElement !== target || (document.activeElement === target &&\n currentTarget.classList.contains(dropDownListClasses.inputFocus)))) ||\n (isNullOrUndefined(target) && this.getModuleName() === 'dropdownlist' && this.allowFiltering &&\n currentTarget !== this.inputWrapper.container) || this.getModuleName() !== 'dropdownlist' &&\n !this.inputWrapper.container.contains(target) || this.isTabKey) {\n this.isDocumentClick = this.isPopupOpen ? true : false;\n this.focusOutAction(e);\n this.isTabKey = false;\n }\n if (this.isRequested && !this.isPopupOpen && !this.isPreventBlur) {\n this.isActive = false;\n this.beforePopupOpen = false;\n }\n this.isFocused = false;\n };\n DropDownList.prototype.focusOutAction = function (e) {\n this.isInteracted = false;\n this.focusOut(e);\n this.onFocusOut(e);\n };\n DropDownList.prototype.onFocusOut = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n this.floatLabelChange();\n this.dispatchEvent(this.hiddenElement, 'change');\n if (this.getModuleName() === 'dropdownlist' && this.element.tagName !== 'INPUT') {\n this.dispatchEvent(this.inputElement, 'blur');\n }\n if (this.inputWrapper.clearButton) {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n this.trigger('blur');\n };\n DropDownList.prototype.onFocus = function (e) {\n if (!this.isInteracted) {\n this.isInteracted = true;\n var args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n }\n this.updateIconState();\n this.isFocused = true;\n };\n DropDownList.prototype.resetValueHandler = function (e) {\n var formElement = closest(this.inputElement, 'form');\n if (formElement && e.target === formElement) {\n var val = (this.element.tagName === this.getNgDirective()) ? null : this.inputElement.getAttribute('value');\n this.text = val;\n }\n };\n DropDownList.prototype.wireEvent = function () {\n EventHandler.add(this.inputWrapper.container, 'mousedown', this.dropDownClick, this);\n EventHandler.add(this.inputWrapper.container, 'focus', this.focusIn, this);\n EventHandler.add(this.inputWrapper.container, 'keypress', this.onSearch, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n this.bindCommonEvent();\n };\n DropDownList.prototype.bindCommonEvent = function () {\n EventHandler.add(this.targetElement(), 'blur', this.onBlurHandler, this);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n if (!Browser.isDevice) {\n this.keyboardModule = new KeyboardEvents(this.targetElement(), {\n keyAction: this.keyActionHandler.bind(this), keyConfigs: this.keyConfigure, eventName: 'keydown'\n });\n }\n else {\n this.keyboardModule = new KeyboardEvents(this.targetElement(), {\n keyAction: this.mobileKeyActionHandler.bind(this), keyConfigs: this.keyConfigure, eventName: 'keydown'\n });\n }\n this.bindClearEvent();\n };\n DropDownList.prototype.windowResize = function () {\n if (this.isPopupOpen) {\n this.popupObj.refreshPosition(this.inputWrapper.container);\n }\n };\n DropDownList.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.resetHandler, this);\n }\n };\n DropDownList.prototype.unBindCommonEvent = function () {\n if (!isNullOrUndefined(this.inputWrapper) && this.targetElement()) {\n EventHandler.remove(this.targetElement(), 'blur', this.onBlurHandler);\n }\n var formElement = this.inputElement && closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n if (!Browser.isDevice) {\n this.keyboardModule.destroy();\n }\n if (this.showClearButton) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown', this.resetHandler);\n }\n };\n DropDownList.prototype.updateIconState = function () {\n if (this.showClearButton) {\n if (this.inputElement.value !== '' && !this.readonly) {\n removeClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n else {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n };\n /**\n * Event binding for list\n *\n * @returns {void}\n */\n DropDownList.prototype.wireListEvents = function () {\n if (!isNullOrUndefined(this.list)) {\n EventHandler.add(this.list, 'click', this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n }\n };\n DropDownList.prototype.onSearch = function (e) {\n if (e.charCode !== 32 && e.charCode !== 13) {\n if (this.list === undefined) {\n this.renderList();\n }\n this.searchKeyEvent = e;\n this.onServerIncrementalSearch(e);\n }\n };\n DropDownList.prototype.onServerIncrementalSearch = function (e) {\n if (!this.isRequested && !isNullOrUndefined(this.list) &&\n !isNullOrUndefined(this.list.querySelector('li')) && this.enabled && !this.readonly) {\n this.incrementalSearch(e);\n }\n };\n DropDownList.prototype.onMouseClick = function (e) {\n var target = e.target;\n this.keyboardEvent = null;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n if (!this.isValidLI(li) || this.isDisabledElement(li)) {\n return;\n }\n this.setSelection(li, e);\n if (Browser.isDevice && this.isFilterLayout()) {\n history.back();\n }\n else {\n var delay = 100;\n this.closePopup(delay, e);\n }\n };\n DropDownList.prototype.onMouseOver = function (e) {\n var currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n this.setHover(currentLi);\n };\n DropDownList.prototype.setHover = function (li) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.hover)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n };\n DropDownList.prototype.onMouseLeave = function () {\n this.removeHover();\n };\n DropDownList.prototype.removeHover = function () {\n if (this.list) {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.hover);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.hover);\n }\n }\n };\n DropDownList.prototype.isValidLI = function (li) {\n return (li && li.hasAttribute('role') && li.getAttribute('role') === 'option');\n };\n DropDownList.prototype.updateIncrementalItemIndex = function (startIndex, endIndex) {\n this.incrementalStartIndex = startIndex;\n this.incrementalEndIndex = endIndex;\n };\n DropDownList.prototype.incrementalSearch = function (e) {\n if (this.liCollections.length > 0) {\n if (this.enableVirtualization) {\n var updatingincrementalindex = false;\n var queryStringUpdated = false;\n var activeElement = this.ulElement.getElementsByClassName('e-active')[0];\n var currentValue = activeElement ? activeElement.textContent : null;\n if (this.incrementalQueryString == '') {\n this.incrementalQueryString = String.fromCharCode(e.charCode);\n this.incrementalPreQueryString = this.incrementalQueryString;\n }\n else if (String.fromCharCode(e.charCode).toLocaleLowerCase() == this.incrementalPreQueryString.toLocaleLowerCase()) {\n queryStringUpdated = true;\n }\n else {\n this.incrementalQueryString = String.fromCharCode(e.charCode);\n }\n if ((this.viewPortInfo.endIndex >= this.incrementalEndIndex && this.incrementalEndIndex <= this.totalItemCount) || this.incrementalEndIndex == 0) {\n updatingincrementalindex = true;\n this.incrementalStartIndex = this.incrementalEndIndex;\n if (this.incrementalEndIndex == 0) {\n this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n }\n else {\n this.incrementalEndIndex = this.incrementalEndIndex + 100 > this.totalItemCount ? this.totalItemCount : this.incrementalEndIndex + 100;\n }\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n }\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n var li = incrementalSearch(e.charCode, this.incrementalLiCollections, this.activeIndex, true, this.element.id, queryStringUpdated, currentValue, true);\n while (isNullOrUndefined(li) && this.incrementalEndIndex < this.totalItemCount) {\n this.updateIncrementalItemIndex(this.incrementalEndIndex, this.incrementalEndIndex + 100 > this.totalItemCount ? this.totalItemCount : this.incrementalEndIndex + 100);\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n li = incrementalSearch(e.charCode, this.incrementalLiCollections, 0, true, this.element.id, queryStringUpdated, currentValue, true, true);\n if (!isNullOrUndefined(li)) {\n break;\n }\n if (isNullOrUndefined(li) && this.incrementalEndIndex >= this.totalItemCount) {\n this.updateIncrementalItemIndex(0, 100 > this.totalItemCount ? this.totalItemCount : 100);\n break;\n }\n }\n if (isNullOrUndefined(li) && this.incrementalEndIndex >= this.totalItemCount) {\n this.updateIncrementalItemIndex(0, 100 > this.totalItemCount ? this.totalItemCount : 100);\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n li = incrementalSearch(e.charCode, this.incrementalLiCollections, 0, true, this.element.id, queryStringUpdated, currentValue, true, true);\n }\n var index = li && this.getIndexByValue(li.getAttribute('data-value'));\n if (!index) {\n for (var i = 0; i < this.incrementalLiCollections.length; i++) {\n if (!isNullOrUndefined(li) && !isNullOrUndefined(li.getAttribute('data-value')) && this.incrementalLiCollections[i].getAttribute('data-value') === li.getAttribute('data-value').toString()) {\n index = i;\n index = this.incrementalStartIndex + index;\n break;\n }\n }\n }\n else {\n index = index - this.skeletonCount;\n }\n if (index) {\n if ((!(this.viewPortInfo.startIndex >= index)) || (!(index >= this.viewPortInfo.endIndex))) {\n var startIndex = index - ((this.itemCount / 2) - 2) > 0 ? index - ((this.itemCount / 2) - 2) : 0;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : this.viewPortInfo.startIndex + this.itemCount;\n this.updateIncrementalView(startIndex, endIndex);\n }\n }\n if (!isNullOrUndefined(li)) {\n var index_1 = this.getIndexByValue(li.getAttribute('data-value')) - this.skeletonCount;\n if (index_1 > this.itemCount / 2) {\n var startIndex = this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) < this.totalItemCount ? this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) : this.totalItemCount;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : this.viewPortInfo.startIndex + this.itemCount;\n this.updateIncrementalView(startIndex, endIndex);\n }\n li = this.getElementByValue(li.getAttribute('data-value'));\n this.setSelection(li, e);\n this.setScrollPosition();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n if (this.enableVirtualization && !this.fields.groupBy) {\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.selectedLI.offsetTop + (this.virtualListInfo.startIndex * this.selectedLI.offsetHeight) : this.selectedLI.offsetTop;\n this.list.scrollTop = selectedLiOffsetTop - (this.list.querySelectorAll('.e-virtual-list').length * this.selectedLI.offsetHeight);\n }\n this.incrementalPreQueryString = this.incrementalQueryString;\n }\n else {\n this.updateIncrementalView(0, this.itemCount);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n this.list.scrollTop = 0;\n }\n }\n else {\n var li = void 0;\n if (this.fields.disabled) {\n var enableLiCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li + ':not(.e-disabled)');\n li = incrementalSearch(e.charCode, enableLiCollections, this.activeIndex, true, this.element.id);\n }\n else {\n li = incrementalSearch(e.charCode, this.liCollections, this.activeIndex, true, this.element.id);\n }\n if (!isNullOrUndefined(li)) {\n this.setSelection(li, e);\n this.setScrollPosition();\n }\n }\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n */\n DropDownList.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], dropDownListClasses.disableIcon);\n this.spinnerElement.innerHTML = '';\n this.spinnerElement = null;\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n */\n DropDownList.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = Browser.isDevice && !isNullOrUndefined(this.filterInputObj) && this.filterInputObj.buttons[1] ||\n !isNullOrUndefined(this.filterInputObj) && this.filterInputObj.buttons[0] || this.inputWrapper.buttons[0];\n addClass([this.spinnerElement], dropDownListClasses.disableIcon);\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n };\n DropDownList.prototype.keyActionHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.keyboardEvent = e;\n if (this.isPreventKeyAction && this.enableVirtualization) {\n e.preventDefault();\n }\n var preventAction = e.action === 'pageUp' || e.action === 'pageDown';\n var preventHomeEnd = this.getModuleName() !== 'dropdownlist' && (e.action === 'home' || e.action === 'end');\n this.isEscapeKey = e.action === 'escape';\n this.isTabKey = !this.isPopupOpen && e.action === 'tab';\n var isNavigation = (e.action === 'down' || e.action === 'up' || e.action === 'pageUp' || e.action === 'pageDown'\n || e.action === 'home' || e.action === 'end');\n if ((this.isEditTextBox() || preventAction || preventHomeEnd) && !this.isPopupOpen) {\n return;\n }\n if (!this.readonly) {\n var isTabAction = e.action === 'tab' || e.action === 'close';\n if (isNullOrUndefined(this.list) && !this.isRequested && !isTabAction && e.action !== 'escape') {\n this.searchKeyEvent = e;\n if (!this.enableVirtualization || (this.enableVirtualization && this.getModuleName() !== 'autocomplete' && e.type !== 'mousedown' && (e.keyCode === 40 || e.keyCode === 38))) {\n this.renderList(e);\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n }\n }\n if (isNullOrUndefined(this.list) || (!isNullOrUndefined(this.liCollections) &&\n isNavigation && this.liCollections.length === 0) || this.isRequested) {\n return;\n }\n if ((isTabAction && this.getModuleName() !== 'autocomplete') && this.isPopupOpen\n || e.action === 'escape') {\n e.preventDefault();\n }\n this.isSelected = e.action === 'escape' ? false : this.isSelected;\n this.isTyped = (isNavigation || e.action === 'escape') ? false : this.isTyped;\n switch (e.action) {\n case 'down':\n case 'up':\n this.updateUpDownAction(e);\n break;\n case 'pageUp':\n this.pageUpSelection(this.activeIndex - this.getPageCount(), e);\n e.preventDefault();\n break;\n case 'pageDown':\n this.pageDownSelection(this.activeIndex + this.getPageCount(), e);\n e.preventDefault();\n break;\n case 'home':\n this.isMouseScrollAction = true;\n this.updateHomeEndAction(e);\n break;\n case 'end':\n this.isMouseScrollAction = true;\n this.updateHomeEndAction(e);\n break;\n case 'space':\n if (this.getModuleName() === 'dropdownlist') {\n if (!this.beforePopupOpen) {\n this.showPopup();\n e.preventDefault();\n }\n }\n break;\n case 'open':\n this.showPopup(e);\n break;\n case 'hide':\n this.preventAltUp = this.isPopupOpen;\n this.hidePopup(e);\n this.focusDropDown(e);\n break;\n case 'enter':\n this.selectCurrentItem(e);\n break;\n case 'tab':\n this.selectCurrentValueOnTab(e);\n break;\n case 'escape':\n case 'close':\n if (this.isPopupOpen) {\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n break;\n }\n }\n };\n DropDownList.prototype.updateUpDownAction = function (e, isVirtualKeyAction) {\n if (this.fields.disabled && this.list && this.list.querySelectorAll('.e-list-item:not(.e-disabled)').length === 0) {\n return;\n }\n if (this.allowFiltering && !this.enableVirtualization && this.getModuleName() !== 'autocomplete') {\n var value_1 = this.getItemData().value;\n if (isNullOrUndefined(value_1)) {\n value_1 = 'null';\n }\n var filterIndex = this.getIndexByValue(value_1);\n if (!isNullOrUndefined(filterIndex)) {\n this.activeIndex = filterIndex;\n }\n }\n var focusEle = this.list.querySelector('.' + dropDownListClasses.focus);\n if (this.isSelectFocusItem(focusEle) && !isVirtualKeyAction) {\n this.setSelection(focusEle, e);\n if (this.enableVirtualization) {\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.selectedLI.offsetTop + (this.virtualListInfo.startIndex * this.selectedLI.offsetHeight) : this.selectedLI.offsetTop;\n if (this.fields.groupBy) {\n selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex == 0 ? this.selectedLI.offsetHeight - selectedLiOffsetTop : selectedLiOffsetTop - this.selectedLI.offsetHeight;\n }\n this.list.scrollTop = selectedLiOffsetTop - (this.list.querySelectorAll('.e-virtual-list').length * this.selectedLI.offsetHeight);\n }\n }\n else if (!isNullOrUndefined(this.liCollections)) {\n var virtualIndex = this.activeIndex;\n var index = e.action === 'down' ? this.activeIndex + 1 : this.activeIndex - 1;\n index = isVirtualKeyAction ? virtualIndex : index;\n var startIndex = 0;\n if (this.getModuleName() === 'autocomplete') {\n startIndex = e.action === 'down' && isNullOrUndefined(this.activeIndex) ? 0 : this.liCollections.length - 1;\n index = index < 0 ? this.liCollections.length - 1 : index === this.liCollections.length ? 0 : index;\n }\n var nextItem = void 0;\n if (this.getModuleName() !== 'autocomplete' || this.getModuleName() === 'autocomplete' && this.isPopupOpen) {\n if (!this.enableVirtualization) {\n nextItem = isNullOrUndefined(this.activeIndex) ? this.liCollections[startIndex]\n : this.liCollections[index];\n }\n else {\n if (!isVirtualKeyAction) {\n nextItem = isNullOrUndefined(this.activeIndex) ? this.liCollections[this.skeletonCount]\n : this.liCollections[index];\n nextItem = !isNullOrUndefined(nextItem) && !nextItem.classList.contains('e-virtual-list') ? nextItem : null;\n }\n else {\n if (this.getModuleName() === 'autocomplete') {\n var value = this.getFormattedValue(this.selectedLI.getAttribute('data-value'));\n nextItem = this.getElementByValue(value);\n }\n else {\n nextItem = this.getElementByValue(this.getItemData().value);\n }\n }\n }\n }\n if (!isNullOrUndefined(nextItem)) {\n var focusAtFirstElement = this.liCollections[this.skeletonCount] && this.liCollections[this.skeletonCount].classList.contains('e-item-focus');\n this.setSelection(nextItem, e);\n if (focusAtFirstElement && this.enableVirtualization && this.getModuleName() === 'autocomplete' && !isVirtualKeyAction) {\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.selectedLI.offsetTop + (this.virtualListInfo.startIndex * this.selectedLI.offsetHeight) : this.selectedLI.offsetTop;\n selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex == 0 && this.fields.groupBy ? this.selectedLI.offsetHeight - selectedLiOffsetTop : selectedLiOffsetTop - this.selectedLI.offsetHeight;\n this.list.scrollTop = selectedLiOffsetTop - (this.list.querySelectorAll('.e-virtual-list').length * this.selectedLI.offsetHeight);\n }\n }\n else if (this.enableVirtualization && !this.isPopupOpen && this.getModuleName() !== 'autocomplete' && ((this.viewPortInfo.endIndex !== this.totalItemCount && e.action === 'down') || (this.viewPortInfo.startIndex !== 0 && e.action === 'up'))) {\n if (e.action === 'down') {\n this.viewPortInfo.startIndex = (this.viewPortInfo.startIndex + this.itemCount) < (this.totalItemCount - this.itemCount) ? this.viewPortInfo.startIndex + this.itemCount : this.totalItemCount - this.itemCount;\n this.viewPortInfo.endIndex = this.viewPortInfo.startIndex + this.itemCount;\n this.updateVirtualItemIndex();\n this.isCustomFilter = this.getModuleName() === 'combobox' ? true : this.isCustomFilter;\n this.resetList(this.dataSource, this.fields, this.query);\n this.isCustomFilter = this.getModuleName() === 'combobox' ? false : this.isCustomFilter;\n var value_2 = this.liCollections[0].getAttribute('data-value') !== \"null\" ? this.getFormattedValue(this.liCollections[0].getAttribute('data-value')) : null;\n var selectedData = this.getDataByValue(value_2);\n if (selectedData) {\n this.itemData = selectedData;\n }\n }\n else if (e.action === 'up') {\n this.viewPortInfo.startIndex = (this.viewPortInfo.startIndex - this.itemCount) > 0 ? this.viewPortInfo.startIndex - this.itemCount : 0;\n this.viewPortInfo.endIndex = this.viewPortInfo.startIndex + this.itemCount;\n this.updateVirtualItemIndex();\n this.isCustomFilter = this.getModuleName() === 'combobox' ? true : this.isCustomFilter;\n this.resetList(this.dataSource, this.fields, this.query);\n this.isCustomFilter = this.getModuleName() === 'combobox' ? false : this.isCustomFilter;\n var value_3 = this.liCollections[this.liCollections.length - 1].getAttribute('data-value') !== \"null\" ? this.getFormattedValue(this.liCollections[this.liCollections.length - 1].getAttribute('data-value')) : null;\n var selectedData = this.getDataByValue(value_3);\n if (selectedData) {\n this.itemData = selectedData;\n }\n }\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n this.handleVirtualKeyboardActions(e, this.pageCount);\n }\n }\n if (this.allowFiltering && !this.enableVirtualization && this.getModuleName() !== 'autocomplete') {\n var value_4 = this.getItemData().value;\n var filterIndex = this.getIndexByValueFilter(value_4, this.actionCompleteData.ulElement);\n if (!isNullOrUndefined(filterIndex)) {\n this.activeIndex = filterIndex;\n }\n }\n if (this.allowFiltering && this.getModuleName() === 'dropdownlist' && this.filterInput) {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n }\n var itemIndex;\n for (var index = 0; index < this.liCollections.length; index++) {\n if (this.liCollections[index].classList.contains(dropDownListClasses.focus)\n || this.liCollections[index].classList.contains(dropDownListClasses.selected)) {\n itemIndex = index;\n break;\n }\n }\n if (itemIndex != null && this.isDisabledElement(this.liCollections[itemIndex])) {\n if (this.getModuleName() !== 'autocomplete') {\n if (this.liCollections.length - 1 === itemIndex && e.action === 'down') {\n e.action = 'up';\n }\n if (itemIndex === 0 && e.action === 'up') {\n e.action = 'down';\n }\n }\n this.updateUpDownAction(e);\n }\n e.preventDefault();\n };\n DropDownList.prototype.updateHomeEndAction = function (e, isVirtualKeyAction) {\n if (this.getModuleName() === 'dropdownlist') {\n var findLi = 0;\n if (e.action === 'home') {\n findLi = 0;\n if (this.enableVirtualization && this.isPopupOpen) {\n findLi = this.skeletonCount;\n }\n else if (this.enableVirtualization && !this.isPopupOpen && this.viewPortInfo.startIndex !== 0) {\n this.viewPortInfo.startIndex = 0;\n this.viewPortInfo.endIndex = this.itemCount;\n this.updateVirtualItemIndex();\n this.resetList(this.dataSource, this.fields, this.query);\n }\n }\n else {\n if (this.enableVirtualization && !this.isPopupOpen && this.viewPortInfo.endIndex !== this.totalItemCount) {\n this.viewPortInfo.startIndex = this.totalItemCount - this.itemCount;\n this.viewPortInfo.endIndex = this.totalItemCount;\n this.updateVirtualItemIndex();\n this.resetList(this.dataSource, this.fields, this.query);\n }\n findLi = this.getItems().length - 1;\n }\n e.preventDefault();\n if (this.activeIndex === findLi) {\n if (isVirtualKeyAction) {\n this.setSelection(this.liCollections[findLi], e);\n }\n return;\n }\n this.setSelection(this.liCollections[findLi], e);\n }\n };\n DropDownList.prototype.selectCurrentValueOnTab = function (e) {\n if (this.getModuleName() === 'autocomplete') {\n this.selectCurrentItem(e);\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n }\n };\n DropDownList.prototype.mobileKeyActionHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if ((this.isEditTextBox()) && !this.isPopupOpen) {\n return;\n }\n if (!this.readonly) {\n if (this.list === undefined && !this.isRequested) {\n this.searchKeyEvent = e;\n this.renderList();\n }\n if (isNullOrUndefined(this.list) || (!isNullOrUndefined(this.liCollections) &&\n this.liCollections.length === 0) || this.isRequested) {\n return;\n }\n if (e.action === 'enter') {\n this.selectCurrentItem(e);\n }\n }\n };\n DropDownList.prototype.handleVirtualKeyboardActions = function (e, pageCount) {\n switch (e.action) {\n case 'down':\n case 'up':\n if (this.itemData != null || this.getModuleName() === 'autocomplete') {\n this.updateUpDownAction(e, true);\n }\n break;\n case 'pageUp':\n this.activeIndex = this.getModuleName() === 'autocomplete' ? this.getIndexByValue(this.selectedLI.getAttribute('data-value')) + this.getPageCount() - 1 : this.getIndexByValue(this.previousValue);\n this.pageUpSelection(this.activeIndex - this.getPageCount(), e, true);\n e.preventDefault();\n break;\n case 'pageDown':\n this.activeIndex = this.getModuleName() === 'autocomplete' ? this.getIndexByValue(this.selectedLI.getAttribute('data-value')) - this.getPageCount() : this.getIndexByValue(this.previousValue);\n this.pageDownSelection(!isNullOrUndefined(this.activeIndex) ? (this.activeIndex + this.getPageCount()) : (2 * this.getPageCount()), e, true);\n e.preventDefault();\n break;\n case 'home':\n this.isMouseScrollAction = true;\n this.updateHomeEndAction(e, true);\n break;\n case 'end':\n this.isMouseScrollAction = true;\n this.updateHomeEndAction(e, true);\n break;\n }\n this.keyboardEvent = null;\n };\n DropDownList.prototype.selectCurrentItem = function (e) {\n if (this.isPopupOpen) {\n var li = this.list.querySelector('.' + dropDownListClasses.focus);\n if (this.isDisabledElement(li)) {\n return;\n }\n if (li) {\n this.setSelection(li, e);\n this.isTyped = false;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n else {\n this.showPopup();\n }\n };\n DropDownList.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n DropDownList.prototype.pageUpSelection = function (steps, event, isVirtualKeyAction) {\n var previousItem = steps >= 0 ? this.liCollections[steps + 1] : this.liCollections[0];\n if ((this.enableVirtualization && this.activeIndex == null)) {\n previousItem = (this.liCollections.length >= steps && steps >= 0) ? this.liCollections[steps + this.skeletonCount + 1] : this.liCollections[0];\n }\n if (!isNullOrUndefined(previousItem) && previousItem.classList.contains('e-virtual-list')) {\n previousItem = this.liCollections[this.skeletonCount];\n }\n this.PageUpDownSelection(previousItem, event);\n if (this.allowFiltering && this.getModuleName() === 'dropdownlist') {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n }\n };\n DropDownList.prototype.PageUpDownSelection = function (previousItem, event) {\n if (this.enableVirtualization) {\n if (!isNullOrUndefined(previousItem) && ((this.getModuleName() !== 'autocomplete' && !previousItem.classList.contains('e-active')) || (this.getModuleName() === 'autocomplete' && !previousItem.classList.contains('e-item-focus')))) {\n this.setSelection(previousItem, event);\n }\n }\n else {\n this.setSelection(previousItem, event);\n }\n };\n DropDownList.prototype.pageDownSelection = function (steps, event, isVirtualKeyAction) {\n var list = this.getItems();\n var previousItem = steps <= list.length ? this.liCollections[steps - 1] : this.liCollections[list.length - 1];\n if (this.enableVirtualization && this.skeletonCount > 0) {\n steps = this.getModuleName() === 'dropdownlist' && this.allowFiltering ? steps + 1 : steps;\n previousItem = steps < list.length ? this.liCollections[steps] : this.liCollections[list.length - 1];\n }\n if ((this.enableVirtualization && this.activeIndex == null)) {\n previousItem = steps <= list.length ? this.liCollections[steps + this.skeletonCount - 1] : this.liCollections[list.length - 1];\n }\n this.PageUpDownSelection(previousItem, event);\n if (this.allowFiltering && this.getModuleName() === 'dropdownlist') {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n }\n };\n DropDownList.prototype.unWireEvent = function () {\n if (!isNullOrUndefined(this.inputWrapper)) {\n EventHandler.remove(this.inputWrapper.container, 'mousedown', this.dropDownClick);\n EventHandler.remove(this.inputWrapper.container, 'keypress', this.onSearch);\n EventHandler.remove(this.inputWrapper.container, 'focus', this.focusIn);\n EventHandler.remove(window, 'resize', this.windowResize);\n }\n this.unBindCommonEvent();\n };\n /**\n * Event un binding for list items.\n *\n * @returns {void}\n */\n DropDownList.prototype.unWireListEvents = function () {\n if (this.list) {\n EventHandler.remove(this.list, 'click', this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n }\n };\n DropDownList.prototype.checkSelector = function (id) {\n return '[id=\"' + id.replace(/(:|\\.|\\[|\\]|,|=|@|\\\\|\\/|#)/g, '\\\\$1') + '\"]';\n };\n DropDownList.prototype.onDocumentClick = function (e) {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, this.checkSelector(this.popupObj.element.id))) &&\n !isNullOrUndefined(this.inputWrapper) && !this.inputWrapper.container.contains(e.target)) {\n if (this.inputWrapper.container.classList.contains(dropDownListClasses.inputFocus) || this.isPopupOpen) {\n this.isDocumentClick = true;\n var isActive = this.isRequested;\n if (this.getModuleName() === 'combobox' && this.isTyped) {\n this.isInteracted = false;\n }\n this.hidePopup(e);\n this.isInteracted = false;\n if (!isActive) {\n this.onFocusOut(e);\n this.inputWrapper.container.classList.remove(dropDownListClasses.inputFocus);\n }\n }\n }\n else if (target !== this.inputElement && !(this.allowFiltering && target === this.filterInput)\n && !(this.getModuleName() === 'combobox' &&\n !this.allowFiltering && Browser.isDevice && target === this.inputWrapper.buttons[0])) {\n this.isPreventBlur = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.targetElement() ||\n document.activeElement === this.filterInput);\n e.preventDefault();\n }\n };\n DropDownList.prototype.activeStateChange = function () {\n if (this.isDocumentClick) {\n this.hidePopup();\n this.onFocusOut();\n this.inputWrapper.container.classList.remove(dropDownListClasses.inputFocus);\n }\n };\n DropDownList.prototype.focusDropDown = function (e) {\n if (!this.initial && this.isFilterLayout()) {\n this.focusIn(e);\n }\n };\n DropDownList.prototype.dropDownClick = function (e) {\n if (e.which === 3 || e.button === 2) {\n return;\n }\n this.keyboardEvent = null;\n if (this.targetElement().classList.contains(dropDownListClasses.disable) || this.inputWrapper.clearButton === e.target) {\n return;\n }\n var target = e.target;\n if (target !== this.inputElement && !(this.allowFiltering && target === this.filterInput) && this.getModuleName() !== 'combobox') {\n e.preventDefault();\n }\n if (!this.readonly) {\n if (this.isPopupOpen) {\n this.hidePopup(e);\n if (this.isFilterLayout()) {\n this.focusDropDown(e);\n }\n }\n else {\n this.focusIn(e);\n this.floatLabelChange();\n this.queryString = this.inputElement.value.trim() === '' ? null : this.inputElement.value;\n this.isDropDownClick = true;\n this.showPopup(e);\n }\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n // eslint-disable-next-line max-len\n var duration = (this.element.tagName === this.getNgDirective() && this.itemTemplate) ? 500 : 100;\n if (!this.isSecondClick) {\n setTimeout(function () {\n proxy_1.cloneElements();\n proxy_1.isSecondClick = true;\n }, duration);\n }\n }\n else {\n this.focusIn(e);\n }\n };\n DropDownList.prototype.cloneElements = function () {\n if (this.list) {\n var ulElement = this.list.querySelector('ul');\n if (ulElement) {\n ulElement = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n this.actionCompleteData.ulElement = ulElement;\n }\n }\n };\n DropDownList.prototype.updateSelectedItem = function (li, e, preventSelect, isSelection) {\n var _this = this;\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n var value = li.getAttribute('data-value') !== null ? this.getFormattedValue(li.getAttribute('data-value')) : null;\n var selectedData = this.getDataByValue(value);\n if (!this.initial && !preventSelect && !isNullOrUndefined(e)) {\n var items = this.detachChanges(selectedData);\n this.isSelected = true;\n var eventArgs = {\n e: e,\n item: li,\n itemData: items,\n isInteracted: e ? true : false,\n cancel: false\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n li.classList.remove(dropDownBaseClasses.selected);\n }\n else {\n _this.selectEventCallback(li, e, preventSelect, selectedData, value);\n if (isSelection) {\n _this.setSelectOptions(li, e);\n }\n }\n });\n }\n else {\n this.selectEventCallback(li, e, preventSelect, selectedData, value);\n if (isSelection) {\n this.setSelectOptions(li, e);\n }\n }\n };\n DropDownList.prototype.selectEventCallback = function (li, e, preventSelect, selectedData, value) {\n this.previousItemData = (!isNullOrUndefined(this.itemData)) ? this.itemData : null;\n if (this.itemData != selectedData) {\n this.previousValue = (!isNullOrUndefined(this.itemData)) ? typeof this.itemData == \"object\" && !this.allowObjectBinding ? this.checkFieldValue(this.itemData, this.fields.value.split('.')) : this.itemData : null;\n }\n this.item = li;\n this.itemData = selectedData;\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (focusedItem) {\n removeClass([focusedItem], dropDownBaseClasses.focus);\n }\n li.setAttribute('aria-selected', 'true');\n if (isNullOrUndefined(value)) {\n value = 'null';\n }\n if (this.allowFiltering && !this.enableVirtualization && this.getModuleName() !== 'autocomplete') {\n var filterIndex = this.getIndexByValueFilter(value, this.actionCompleteData.ulElement);\n if (!isNullOrUndefined(filterIndex)) {\n this.activeIndex = filterIndex;\n }\n else {\n this.activeIndex = this.getIndexByValue(value);\n }\n }\n else {\n if (this.enableVirtualization && this.activeIndex == null && this.dataSource instanceof DataManager) {\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n }\n this.activeIndex = this.getIndexByValue(value);\n }\n };\n DropDownList.prototype.activeItem = function (li) {\n if (this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.selected)) {\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n li.setAttribute('aria-selected', 'true');\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownList.prototype.setValue = function (e) {\n var dataItem = this.getItemData();\n this.isTouched = !isNullOrUndefined(e);\n if (dataItem.value === null) {\n Input.setValue(null, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(dataItem.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n if (this.valueTemplate && this.itemData !== null) {\n this.setValueTemplate();\n }\n else if (!isNullOrUndefined(this.valueTempElement) && this.inputElement.previousSibling === this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n }\n if (!isNullOrUndefined(dataItem.value) && !this.enableVirtualization && this.allowFiltering) {\n this.activeIndex = this.getIndexByValueFilter(dataItem.value, this.actionCompleteData.ulElement);\n }\n var clearIcon = dropDownListClasses.clearIcon;\n var isFilterElement = this.isFiltering() && this.filterInput && (this.getModuleName() === 'combobox');\n var clearElement = isFilterElement && this.filterInput.parentElement.querySelector('.' + clearIcon);\n if (this.isFiltering() && clearElement) {\n clearElement.style.removeProperty('visibility');\n }\n if ((!this.allowObjectBinding && (this.previousValue === dataItem.value)) || (this.allowObjectBinding && (this.previousValue != null && this.isObjectInArray(this.previousValue, [this.allowCustom && this.isObjectCustomValue ? this.value ? this.value : dataItem : dataItem.value ? this.getDataByValue(dataItem.value) : dataItem])))) {\n this.isSelected = false;\n return true;\n }\n else {\n this.isSelected = !this.initial ? true : false;\n this.isSelectCustom = false;\n if (this.getModuleName() === 'dropdownlist') {\n this.updateIconState();\n }\n return false;\n }\n };\n DropDownList.prototype.setSelection = function (li, e) {\n if (this.isValidLI(li) && (!li.classList.contains(dropDownBaseClasses.selected) || (this.isPopupOpen && this.isSelected\n && li.classList.contains(dropDownBaseClasses.selected)))) {\n this.updateSelectedItem(li, e, false, true);\n }\n else {\n this.setSelectOptions(li, e);\n if (this.enableVirtualization && this.value) {\n var fields = (this.fields.value) ? this.fields.value : '';\n var currentValue = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n if (this.dataSource instanceof DataManager) {\n var getItem = new DataManager(this.virtualGroupDataSource).executeLocal(new Query().where(new Predicate(fields, 'equal', currentValue)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n var dataItem = this.getItemData();\n var value = this.allowObjectBinding ? this.getDataByValue(dataItem.value) : dataItem.value;\n if ((this.value === dataItem.value && this.text !== dataItem.text) || (this.value !== dataItem.value && this.text === dataItem.text)) {\n this.setProperties({ 'text': dataItem.text, 'value': value });\n }\n }\n }\n else {\n var getItem = new DataManager(this.dataSource).executeLocal(new Query().where(new Predicate(fields, 'equal', currentValue)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n var dataItem = this.getItemData();\n var value = this.allowObjectBinding ? this.getDataByValue(dataItem.value) : dataItem.value;\n if ((this.value === dataItem.value && this.text !== dataItem.text) || (this.value !== dataItem.value && this.text === dataItem.text)) {\n this.setProperties({ 'text': dataItem.text, 'value': value });\n }\n }\n }\n }\n }\n };\n DropDownList.prototype.setSelectOptions = function (li, e) {\n if (this.list) {\n this.removeHover();\n }\n this.previousSelectedLI = (!isNullOrUndefined(this.selectedLI)) ? this.selectedLI : null;\n this.selectedLI = li;\n if (this.setValue(e)) {\n return;\n }\n if ((!this.isPopupOpen && !isNullOrUndefined(li)) || (this.isPopupOpen && !isNullOrUndefined(e) &&\n (e.type !== 'keydown' || e.type === 'keydown' && e.action === 'enter'))) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n if (this.isPopupOpen && !isNullOrUndefined(this.selectedLI) && this.itemData !== null && (!e || e.type !== 'click')) {\n this.setScrollPosition(e);\n }\n if (Browser.info.name !== 'mozilla') {\n if (this.targetElement()) {\n attributes(this.targetElement(), { 'aria-describedby': this.inputElement.id !== '' ? this.inputElement.id : this.element.id });\n this.targetElement().removeAttribute('aria-live');\n }\n }\n if (this.isPopupOpen && !isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.targetElement(), { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (this.isPopupOpen && !isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(this.targetElement(), { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n };\n DropDownList.prototype.dropdownCompiler = function (dropdownTemplate) {\n var checkTemplate = false;\n if (typeof dropdownTemplate !== 'function' && dropdownTemplate) {\n try {\n checkTemplate = (document.querySelectorAll(dropdownTemplate).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n DropDownList.prototype.setValueTemplate = function () {\n var compiledString;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['valueTemplate']);\n if (this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n this.valueTempElement = null;\n }\n }\n if (!this.valueTempElement) {\n this.valueTempElement = this.createElement('span', { className: dropDownListClasses.value });\n this.inputElement.parentElement.insertBefore(this.valueTempElement, this.inputElement);\n this.inputElement.style.display = 'none';\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.valueTempElement.innerHTML = '';\n }\n var valuecheck = this.dropdownCompiler(this.valueTemplate);\n if (typeof this.valueTemplate !== 'function' && valuecheck) {\n compiledString = compile(document.querySelector(this.valueTemplate).innerHTML.trim());\n }\n else {\n compiledString = compile(this.valueTemplate);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var valueCompTemp = compiledString(this.itemData, this, 'valueTemplate', this.valueTemplateId, this.isStringTemplate, null, this.valueTempElement);\n if (valueCompTemp && valueCompTemp.length > 0) {\n append(valueCompTemp, this.valueTempElement);\n }\n this.renderReactTemplates();\n };\n DropDownList.prototype.removeSelection = function () {\n if (this.list) {\n var selectedItems = this.list.querySelectorAll('.' + dropDownBaseClasses.selected);\n if (selectedItems.length) {\n removeClass(selectedItems, dropDownBaseClasses.selected);\n selectedItems[0].removeAttribute('aria-selected');\n }\n }\n };\n DropDownList.prototype.getItemData = function () {\n var fields = this.fields;\n var dataItem = null;\n dataItem = this.itemData;\n var dataValue;\n var dataText;\n if (!isNullOrUndefined(dataItem)) {\n dataValue = getValue(fields.value, dataItem);\n dataText = getValue(fields.text, dataItem);\n }\n var value = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataValue : dataItem);\n var text = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataText : dataItem);\n return { value: value, text: text };\n };\n /**\n * To trigger the change event for list.\n *\n * @param {MouseEvent | KeyboardEvent | TouchEvent} eve - Specifies the event arguments.\n * @returns {void}\n */\n DropDownList.prototype.onChangeEvent = function (eve, isCustomValue) {\n var _this = this;\n var dataItem = this.getItemData();\n var index = this.isSelectCustom ? null : this.activeIndex;\n if (this.enableVirtualization) {\n var datas = this.dataSource instanceof DataManager ? this.virtualGroupDataSource : this.dataSource;\n if (dataItem.value && datas && datas.length > 0) {\n var foundIndex = datas.findIndex(function (data) {\n return !isNullOrUndefined(dataItem.value) && getValue(_this.fields.value, data) === dataItem.value;\n });\n if (foundIndex !== -1) {\n index = foundIndex;\n }\n }\n }\n var value = this.allowObjectBinding ? isCustomValue ? this.value : this.getDataByValue(dataItem.value) : dataItem.value;\n this.setProperties({ 'index': index, 'text': dataItem.text, 'value': value }, true);\n this.detachChangeEvent(eve);\n };\n DropDownList.prototype.detachChanges = function (value) {\n var items;\n if (typeof value === 'string' ||\n typeof value === 'boolean' ||\n typeof value === 'number') {\n items = Object.defineProperties({}, {\n value: {\n value: value,\n enumerable: true\n },\n text: {\n value: value,\n enumerable: true\n }\n });\n }\n else {\n items = value;\n }\n return items;\n };\n DropDownList.prototype.detachChangeEvent = function (eve) {\n this.isSelected = false;\n this.previousValue = this.value;\n this.activeIndex = this.enableVirtualization ? this.getIndexByValue(this.value) : this.index;\n this.typedString = !isNullOrUndefined(this.text) ? this.text : '';\n if (!this.initial) {\n var items = this.detachChanges(this.itemData);\n var preItems = void 0;\n if (typeof this.previousItemData === 'string' ||\n typeof this.previousItemData === 'boolean' ||\n typeof this.previousItemData === 'number') {\n preItems = Object.defineProperties({}, {\n value: {\n value: this.previousItemData,\n enumerable: true\n },\n text: {\n value: this.previousItemData,\n enumerable: true\n }\n });\n }\n else {\n preItems = this.previousItemData;\n }\n this.setHiddenValue();\n var eventArgs = {\n e: eve,\n item: this.item,\n itemData: items,\n previousItem: this.previousSelectedLI,\n previousItemData: preItems,\n isInteracted: eve ? true : false,\n value: this.value,\n element: this.element,\n event: eve\n };\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n }\n if ((isNullOrUndefined(this.value) || this.value === '') && this.floatLabelType !== 'Always') {\n removeClass([this.inputWrapper.container], 'e-valid-input');\n }\n };\n DropDownList.prototype.setHiddenValue = function () {\n if (!isNullOrUndefined(this.value)) {\n var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n if (this.hiddenElement.querySelector('option')) {\n var selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.textContent = this.text;\n selectedElement.setAttribute('value', value.toString());\n }\n else {\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = '';\n var selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.setAttribute('value', value.toString());\n }\n }\n }\n else {\n this.hiddenElement.innerHTML = '';\n }\n };\n /**\n * Filter bar implementation\n *\n * @param {KeyboardEventArgs} e - Specifies the event arguments.\n * @returns {void}\n */\n DropDownList.prototype.onFilterUp = function (e) {\n if (!(e.ctrlKey && e.keyCode === 86) && (this.isValidKey || e.keyCode === 40 || e.keyCode === 38)) {\n this.isValidKey = false;\n this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;\n switch (e.keyCode) {\n case 38: //up arrow\n case 40: //down arrow\n if (this.getModuleName() === 'autocomplete' && !this.isPopupOpen && !this.preventAltUp && !this.isRequested) {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else {\n this.preventAutoFill = false;\n }\n this.preventAltUp = false;\n if (this.getModuleName() === 'autocomplete' && !isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.targetElement(), { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n e.preventDefault();\n break;\n case 46: //delete\n case 8: //backspace\n this.typedString = this.filterInput.value;\n if (!this.isPopupOpen && this.typedString !== '' || this.isPopupOpen && this.queryString.length > 0) {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else if (this.typedString === '' && this.queryString === '' && this.getModuleName() !== 'autocomplete') {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else if (this.typedString === '') {\n if (this.list) {\n this.resetFocusElement();\n }\n this.activeIndex = null;\n if (this.getModuleName() !== 'dropdownlist') {\n this.preventAutoFill = true;\n this.searchLists(e);\n if (this.getModuleName() === 'autocomplete') {\n this.hidePopup();\n }\n }\n }\n e.preventDefault();\n break;\n default:\n if (this.isFiltering() && this.getModuleName() === 'combobox' && isNullOrUndefined(this.list)) {\n this.getInitialData = true;\n this.renderList();\n }\n this.typedString = this.filterInput.value;\n this.preventAutoFill = false;\n this.searchLists(e);\n if ((this.enableVirtualization && this.getModuleName() !== 'autocomplete') || (this.getModuleName() === 'autocomplete' && !(this.dataSource instanceof DataManager)) || (this.getModuleName() === 'autocomplete' && (this.dataSource instanceof DataManager) && this.totalItemCount != 0)) {\n this.getFilteringSkeletonCount();\n }\n break;\n }\n }\n else {\n this.isValidKey = false;\n }\n };\n DropDownList.prototype.onFilterDown = function (e) {\n switch (e.keyCode) {\n case 13: //enter\n break;\n case 40: //down arrow\n case 38: //up arrow\n this.queryString = this.filterInput.value;\n e.preventDefault();\n break;\n case 9: //tab\n if (this.isPopupOpen && this.getModuleName() !== 'autocomplete') {\n e.preventDefault();\n }\n break;\n default:\n this.prevSelectPoints = this.getSelectionPoints();\n this.queryString = this.filterInput.value;\n break;\n }\n };\n DropDownList.prototype.removeFillSelection = function () {\n if (this.isInteracted) {\n var selection = this.getSelectionPoints();\n this.inputElement.setSelectionRange(selection.end, selection.end);\n }\n };\n DropDownList.prototype.getQuery = function (query) {\n var filterQuery;\n if (!this.isCustomFilter && this.allowFiltering && this.filterInput) {\n filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var filterType = this.typedString === '' ? 'contains' : this.filterType;\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, this.typedString, this.ignoreCase, this.ignoreAccent);\n }\n else if (((this.getModuleName() !== 'combobox')) || (this.isFiltering() && this.getModuleName() === 'combobox' && this.typedString !== '')) {\n var fields = (this.fields.text) ? this.fields.text : '';\n filterQuery.where(fields, filterType, this.typedString, this.ignoreCase, this.ignoreAccent);\n }\n }\n else {\n filterQuery = (this.enableVirtualization && !isNullOrUndefined(this.customFilterQuery)) ? this.customFilterQuery.clone() : query ? query.clone() : this.query ? this.query.clone() : new Query();\n }\n if (this.enableVirtualization && this.viewPortInfo.endIndex != 0) {\n var takeValue = this.getTakeValue();\n var alreadySkipAdded = false;\n if (filterQuery) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onSkip') {\n alreadySkipAdded = true;\n break;\n }\n }\n }\n var queryTakeValue = 0;\n var querySkipValue = 0;\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements_1 = 0; queryElements_1 < filterQuery.queries.length; queryElements_1++) {\n if (filterQuery.queries[queryElements_1].fn === 'onSkip') {\n querySkipValue = filterQuery.queries[queryElements_1].e.nos;\n }\n if (filterQuery.queries[queryElements_1].fn === 'onTake') {\n queryTakeValue = takeValue <= filterQuery.queries[queryElements_1].e.nos ? filterQuery.queries[queryElements_1].e.nos : takeValue;\n }\n }\n }\n if (queryTakeValue <= 0 && this.query && this.query.queries.length > 0) {\n for (var queryElements_2 = 0; queryElements_2 < this.query.queries.length; queryElements_2++) {\n if (this.query.queries[queryElements_2].fn === 'onTake') {\n queryTakeValue = takeValue <= this.query.queries[queryElements_2].e.nos ? this.query.queries[queryElements_2].e.nos : takeValue;\n }\n }\n }\n var skipExists = false;\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements_3 = 0; queryElements_3 < filterQuery.queries.length; queryElements_3++) {\n if (filterQuery.queries[queryElements_3].fn === 'onSkip') {\n querySkipValue = filterQuery.queries[queryElements_3].e.nos;\n filterQuery.queries.splice(queryElements_3, 1);\n --queryElements_3;\n continue;\n }\n if (filterQuery.queries[queryElements_3].fn === 'onTake') {\n queryTakeValue = filterQuery.queries[queryElements_3].e.nos <= queryTakeValue ? queryTakeValue : filterQuery.queries[queryElements_3].e.nos;\n filterQuery.queries.splice(queryElements_3, 1);\n --queryElements_3;\n }\n }\n }\n if (!skipExists && (this.allowFiltering || !this.isPopupOpen || !alreadySkipAdded)) {\n if (querySkipValue > 0) {\n filterQuery.skip(querySkipValue);\n }\n else {\n filterQuery.skip(this.virtualItemStartIndex);\n }\n }\n if (this.isIncrementalRequest) {\n filterQuery.take(this.incrementalEndIndex);\n }\n else {\n if (queryTakeValue > 0) {\n filterQuery.take(queryTakeValue);\n }\n else {\n filterQuery.take(takeValue);\n }\n }\n filterQuery.requiresCount();\n }\n return filterQuery;\n };\n DropDownList.prototype.getSelectionPoints = function () {\n var input = this.inputElement;\n return { start: Math.abs(input.selectionStart), end: Math.abs(input.selectionEnd) };\n };\n DropDownList.prototype.searchLists = function (e) {\n var _this = this;\n this.isTyped = true;\n this.activeIndex = null;\n this.isListSearched = true;\n if (this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon)) {\n var clearElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n clearElement.style.visibility = this.filterInput.value === '' ? 'hidden' : 'visible';\n }\n this.isDataFetched = false;\n if (this.isFiltering()) {\n this.checkAndResetCache();\n this.isRequesting = false;\n var eventArgs_1 = {\n preventDefaultAction: false,\n text: this.filterInput.value,\n updateData: function (dataSource, query, fields) {\n if (eventArgs_1.cancel) {\n return;\n }\n _this.isCustomFilter = true;\n _this.customFilterQuery = query ? query.clone() : query;\n _this.filteringAction(dataSource, query, fields);\n },\n baseEventArgs: e,\n cancel: false\n };\n this.trigger('filtering', eventArgs_1, function (eventArgs) {\n if (!eventArgs.cancel && !_this.isCustomFilter && !eventArgs.preventDefaultAction) {\n _this.filteringAction(_this.dataSource, null, _this.fields);\n }\n });\n }\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n\n */\n DropDownList.prototype.filter = function (dataSource, query, fields) {\n this.isCustomFilter = true;\n this.filteringAction(dataSource, query, fields);\n };\n DropDownList.prototype.filteringAction = function (dataSource, query, fields) {\n if (!isNullOrUndefined(this.filterInput)) {\n this.beforePopupOpen = ((!this.isPopupOpen && this.getModuleName() === 'combobox' && this.filterInput.value === '') || this.getInitialData) ?\n false : true;\n var isNoData = this.list.classList.contains(dropDownBaseClasses.noData);\n if (this.filterInput.value.trim() === '' && !this.itemTemplate) {\n this.actionCompleteData.isUpdated = false;\n this.isTyped = false;\n if (!isNullOrUndefined(this.actionCompleteData.ulElement) && !isNullOrUndefined(this.actionCompleteData.list)) {\n if (this.enableVirtualization) {\n if (this.isFiltering()) {\n this.isPreventScrollAction = true;\n this.list.scrollTop = 0;\n this.previousStartIndex = 0;\n this.virtualListInfo = null;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n this.resetList(dataSource, fields, query);\n if (isNoData && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: this.getTransformValues()\n })).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n document.getElementsByClassName('e-popup')[0].querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n }\n }\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list);\n }\n this.isTyped = true;\n if (!isNullOrUndefined(this.itemData) && this.getModuleName() === 'dropdownlist') {\n this.focusIndexItem();\n this.setScrollPosition();\n }\n this.isNotSearchList = true;\n }\n else {\n this.isNotSearchList = false;\n query = (this.filterInput.value.trim() === '') ? null : query;\n if (this.enableVirtualization && this.isFiltering() && this.isTyped) {\n this.isPreventScrollAction = true;\n this.list.scrollTop = 0;\n this.previousStartIndex = 0;\n this.virtualListInfo = null;\n }\n this.resetList(dataSource, fields, query);\n if (this.getModuleName() === 'dropdownlist' && this.list.classList.contains(dropDownBaseClasses.noData)) {\n this.popupContentElement.setAttribute('role', 'status');\n this.popupContentElement.setAttribute('id', 'no-record');\n attributes(this.filterInputObj.container, { 'aria-activedescendant': 'no-record' });\n }\n if (this.enableVirtualization && isNoData && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: this.getTransformValues()\n })).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n document.getElementsByClassName('e-popup')[0].querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n }\n }\n if (this.enableVirtualization) {\n this.getFilteringSkeletonCount();\n }\n this.renderReactTemplates();\n }\n };\n DropDownList.prototype.setSearchBox = function (popupElement) {\n if (this.isFiltering()) {\n var parentElement = popupElement.querySelector('.' + dropDownListClasses.filterParent) ?\n popupElement.querySelector('.' + dropDownListClasses.filterParent) : this.createElement('span', {\n className: dropDownListClasses.filterParent\n });\n this.filterInput = this.createElement('input', {\n attrs: { type: 'text' },\n className: dropDownListClasses.filterInput\n });\n this.element.parentNode.insertBefore(this.filterInput, this.element);\n var backIcon = false;\n if (Browser.isDevice) {\n backIcon = true;\n }\n this.filterInputObj = Input.createInput({\n element: this.filterInput,\n buttons: backIcon ?\n [dropDownListClasses.backIcon, dropDownListClasses.filterBarClearIcon] : [dropDownListClasses.filterBarClearIcon],\n properties: { placeholder: this.filterBarPlaceholder }\n }, this.createElement);\n if (!isNullOrUndefined(this.cssClass)) {\n if (this.cssClass.split(' ').indexOf('e-outline') !== -1) {\n addClass([this.filterInputObj.container], 'e-outline');\n }\n else if (this.cssClass.split(' ').indexOf('e-filled') !== -1) {\n addClass([this.filterInputObj.container], 'e-filled');\n }\n }\n append([this.filterInputObj.container], parentElement);\n prepend([parentElement], popupElement);\n attributes(this.filterInput, {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'autocomplete': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n });\n this.clearIconElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n if (!Browser.isDevice && this.clearIconElement) {\n EventHandler.add(this.clearIconElement, 'click', this.clearText, this);\n this.clearIconElement.style.visibility = 'hidden';\n }\n if (!Browser.isDevice) {\n this.searchKeyModule = new KeyboardEvents(this.filterInput, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n }\n else {\n this.searchKeyModule = new KeyboardEvents(this.filterInput, {\n keyAction: this.mobileKeyActionHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n }\n EventHandler.add(this.filterInput, 'input', this.onInput, this);\n EventHandler.add(this.filterInput, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.filterInput, 'keydown', this.onFilterDown, this);\n EventHandler.add(this.filterInput, 'blur', this.onBlurHandler, this);\n EventHandler.add(this.filterInput, 'paste', this.pasteHandler, this);\n return this.filterInputObj;\n }\n else {\n return inputObject;\n }\n };\n DropDownList.prototype.onInput = function (e) {\n this.isValidKey = true;\n if (this.getModuleName() === 'combobox') {\n this.updateIconState();\n }\n // For filtering works in mobile firefox.\n if (Browser.isDevice && Browser.info.name === 'mozilla') {\n this.typedString = this.filterInput.value;\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n };\n DropDownList.prototype.pasteHandler = function (e) {\n var _this = this;\n setTimeout(function () {\n _this.typedString = _this.filterInput.value;\n _this.searchLists(e);\n });\n };\n DropDownList.prototype.onActionFailure = function (e) {\n _super.prototype.onActionFailure.call(this, e);\n if (this.beforePopupOpen) {\n this.renderPopup();\n }\n };\n DropDownList.prototype.getTakeValue = function () {\n return this.allowFiltering && this.getModuleName() === 'dropdownlist' && Browser.isDevice ? Math.round(window.outerHeight / this.listItemHeight) : this.itemCount;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownList.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n var _this = this;\n if (this.dataSource instanceof DataManager && !isNullOrUndefined(e) && !this.virtualGroupDataSource) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = e.count;\n }\n if (this.isNotSearchList && !this.enableVirtualization) {\n this.isNotSearchList = false;\n return;\n }\n if (this.getInitialData) {\n this.updateActionCompleteDataValues(ulElement, list);\n }\n if (!this.preventPopupOpen && this.getModuleName() === 'combobox') {\n this.beforePopupOpen = true;\n this.preventPopupOpen = true;\n }\n var tempItemCount = this.itemCount;\n if (this.isActive || !isNullOrUndefined(ulElement)) {\n var selectedItem = this.selectedLI ? this.selectedLI.cloneNode(true) : null;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n this.skeletonCount = this.totalItemCount != 0 && this.totalItemCount < (this.itemCount * 2) ? 0 : this.skeletonCount;\n this.updateSelectElementData(this.allowFiltering);\n if (this.isRequested && !isNullOrUndefined(this.searchKeyEvent) && this.searchKeyEvent.type === 'keydown') {\n this.isRequested = false;\n this.keyActionHandler(this.searchKeyEvent);\n this.searchKeyEvent = null;\n }\n if (this.isRequested && !isNullOrUndefined(this.searchKeyEvent)) {\n this.incrementalSearch(this.searchKeyEvent);\n this.searchKeyEvent = null;\n }\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n if (!isNullOrUndefined(ulElement)) {\n attributes(ulElement, { 'id': this.element.id + '_options', 'role': 'listbox', 'aria-hidden': 'false', 'aria-label': 'listbox' });\n }\n if (this.initialRemoteRender) {\n this.initial = true;\n this.activeIndex = this.index;\n this.initialRemoteRender = false;\n if (this.value && this.dataSource instanceof DataManager) {\n var checkField_1 = isNullOrUndefined(this.fields.value) ? this.fields.text : this.fields.value;\n var value_5 = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue(checkField_1, this.value) : this.value;\n var fieldValue_1 = this.fields.value.split('.');\n var checkVal = list.some(function (x) {\n return isNullOrUndefined(x[checkField_1]) && fieldValue_1.length > 1 ?\n _this.checkFieldValue(x, fieldValue_1) === value_5 : x[checkField_1] === value_5;\n });\n if (this.enableVirtualization && this.virtualGroupDataSource) {\n checkVal = this.virtualGroupDataSource.some(function (x) {\n return isNullOrUndefined(x[checkField_1]) && fieldValue_1.length > 1 ?\n _this.checkFieldValue(x, fieldValue_1) === value_5 : x[checkField_1] === value_5;\n });\n }\n if (!checkVal) {\n this.dataSource.executeQuery(this.getQuery(this.query).where(new Predicate(checkField_1, 'equal', value_5)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, list.length);\n _this.updateValues();\n }\n else {\n _this.updateValues();\n }\n });\n }\n else {\n this.updateValues();\n }\n }\n else {\n this.updateValues();\n }\n this.initial = false;\n }\n else if (this.getModuleName() === 'autocomplete' && this.value) {\n this.setInputValue();\n }\n if (this.getModuleName() !== 'autocomplete' && this.isFiltering() && !this.isTyped) {\n if (!this.actionCompleteData.isUpdated || ((!this.isCustomFilter\n && !this.isFilterFocus) || (isNullOrUndefined(this.itemData) && this.allowFiltering)\n && ((this.dataSource instanceof DataManager)\n || (!isNullOrUndefined(this.dataSource) && !isNullOrUndefined(this.dataSource.length) &&\n this.dataSource.length !== 0)))) {\n if (this.itemTemplate && this.element.tagName === 'EJS-COMBOBOX' && this.allowFiltering) {\n setTimeout(function () {\n _this.updateActionCompleteDataValues(ulElement, list);\n }, 0);\n }\n else {\n this.updateActionCompleteDataValues(ulElement, list);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((this.allowCustom || (this.allowFiltering && !this.isValueInList(list, this.value) && this.dataSource instanceof DataManager)) && !this.enableVirtualization) {\n this.addNewItem(list, selectedItem);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n else if ((this.allowCustom || (this.allowFiltering && this.isValueInList(list, this.value))) && !this.enableVirtualization) {\n this.addNewItem(list, selectedItem);\n }\n if (!isNullOrUndefined(this.itemData) || (isNullOrUndefined(this.itemData) && this.enableVirtualization)) {\n this.getSkeletonCount();\n this.skeletonCount = this.totalItemCount != 0 && this.totalItemCount < (this.itemCount * 2) ? 0 : this.skeletonCount;\n this.UpdateSkeleton();\n this.focusIndexItem();\n }\n if (this.enableVirtualization) {\n this.updateActionCompleteDataValues(ulElement, list);\n }\n }\n else if (this.enableVirtualization && this.getModuleName() !== 'autocomplete' && !this.isFiltering()) {\n var value = this.getItemData().value;\n this.activeIndex = this.getIndexByValue(value);\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.selectedLI = element;\n }\n else if (this.enableVirtualization && this.getModuleName() === 'autocomplete') {\n this.activeIndex = this.skeletonCount;\n }\n if (this.beforePopupOpen) {\n this.renderPopup(e);\n if (this.enableVirtualization) {\n if (!this.list.querySelector('.e-virtual-list')) {\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n }\n }\n if (this.enableVirtualization && tempItemCount != this.itemCount) {\n this.resetList(this.dataSource, this.fields);\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n DropDownList.prototype.isValueInList = function (list, valueToFind) {\n if (Array.isArray(list)) {\n for (var i = 0; i < list.length; i++) {\n if (list[i] === valueToFind) {\n return true;\n }\n }\n }\n else if (typeof list === 'object' && list !== null) {\n for (var key in list) {\n if (Object.prototype.hasOwnProperty.call(list, key) && list[key] === valueToFind) {\n return true;\n }\n }\n }\n return false;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n DropDownList.prototype.checkFieldValue = function (list, fieldValue) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var checkField = list;\n fieldValue.forEach(function (value) {\n checkField = checkField[value];\n });\n return checkField;\n };\n DropDownList.prototype.updateActionCompleteDataValues = function (ulElement, list) {\n this.actionCompleteData = { ulElement: ulElement.cloneNode(true), list: list, isUpdated: true };\n if (this.actionData.list !== this.actionCompleteData.list && this.actionCompleteData.ulElement && this.actionCompleteData.list) {\n this.actionData = this.actionCompleteData;\n }\n };\n DropDownList.prototype.addNewItem = function (listData, newElement) {\n var _this = this;\n if (!isNullOrUndefined(this.itemData) && !isNullOrUndefined(newElement)) {\n var value_6 = this.getItemData().value;\n var isExist = listData.some(function (data) {\n return (((typeof data === 'string' || typeof data === 'number') && data === value_6) ||\n (getValue(_this.fields.value, data) === value_6));\n });\n if (!isExist) {\n this.addItem(this.itemData);\n }\n }\n };\n DropDownList.prototype.updateActionCompleteData = function (li, item, index) {\n var _this = this;\n if (this.getModuleName() !== 'autocomplete' && this.actionCompleteData.ulElement) {\n if (this.itemTemplate && this.element.tagName === 'EJS-COMBOBOX' && this.allowFiltering) {\n setTimeout(function () {\n _this.actionCompleteDataUpdate(li, item, index);\n }, 0);\n }\n else {\n this.actionCompleteDataUpdate(li, item, index);\n }\n }\n };\n DropDownList.prototype.actionCompleteDataUpdate = function (li, item, index) {\n if (index !== null) {\n this.actionCompleteData.ulElement.\n insertBefore(li.cloneNode(true), this.actionCompleteData.ulElement.childNodes[index]);\n }\n else {\n this.actionCompleteData.ulElement.appendChild(li.cloneNode(true));\n }\n if (this.isFiltering() && this.actionCompleteData.list && this.actionCompleteData.list.indexOf(item) < 0) {\n this.actionCompleteData.list.push(item);\n }\n };\n DropDownList.prototype.focusIndexItem = function () {\n var value = this.getItemData().value;\n this.activeIndex = ((this.enableVirtualization && !isNullOrUndefined(value)) || !this.enableVirtualization) ? this.getIndexByValue(value) : this.activeIndex;\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.selectedLI = element;\n this.activeItem(element);\n if (!(this.enableVirtualization && isNullOrUndefined(element))) {\n this.removeFocus();\n }\n };\n DropDownList.prototype.updateSelection = function () {\n var selectedItem = this.list.querySelector('.' + dropDownBaseClasses.selected);\n if (selectedItem) {\n this.setProperties({ 'index': this.getIndexByValue(selectedItem.getAttribute('data-value')) });\n this.activeIndex = this.index;\n }\n else {\n this.removeFocus();\n this.list.querySelector('.' + dropDownBaseClasses.li).classList.add(dropDownListClasses.focus);\n }\n };\n DropDownList.prototype.updateSelectionList = function () {\n var selectedItem = this.list && this.list.querySelector('.' + 'e-active');\n if (!selectedItem && !isNullOrUndefined(this.value)) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n var findEle = this.findListElement(this.list, 'li', 'data-value', value);\n if (findEle) {\n findEle.classList.add('e-active');\n }\n }\n };\n DropDownList.prototype.removeFocus = function () {\n var highlightedItem = this.list.querySelectorAll('.' + dropDownListClasses.focus);\n if (highlightedItem && highlightedItem.length) {\n removeClass(highlightedItem, dropDownListClasses.focus);\n }\n };\n DropDownList.prototype.renderPopup = function (e) {\n var _this = this;\n if (this.popupObj && document.body.contains(this.popupObj.element)) {\n this.refreshPopup();\n return;\n }\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n var popupEle = _this.createElement('div', {\n id: _this.element.id + '_popup', className: 'e-ddl e-popup ' + (_this.cssClass !== null ? _this.cssClass : '')\n });\n popupEle.setAttribute('aria-label', _this.element.id);\n popupEle.setAttribute('role', 'dialog');\n var searchBox = _this.setSearchBox(popupEle);\n _this.listContainerHeight = _this.allowFiltering && _this.getModuleName() === 'dropdownlist' && Browser.isDevice ? formatUnit(Math.round(window.outerHeight).toString() + 'px') : formatUnit(_this.popupHeight);\n if (_this.headerTemplate) {\n _this.setHeaderTemplate(popupEle);\n }\n append([_this.list], popupEle);\n if (_this.footerTemplate) {\n _this.setFooterTemplate(popupEle);\n }\n document.body.appendChild(popupEle);\n popupEle.style.top = '0px';\n if (_this.enableVirtualization && _this.itemTemplate) {\n var listitems = popupEle.querySelectorAll('li.e-list-item:not(.e-virtual-list)');\n _this.listItemHeight = listitems.length > 0 ? Math.ceil(listitems[0].getBoundingClientRect().height) : 0;\n }\n if (_this.enableVirtualization && !_this.list.classList.contains(dropDownBaseClasses.noData)) {\n _this.getSkeletonCount();\n _this.skeletonCount = _this.totalItemCount < (_this.itemCount * 2) ? 0 : _this.skeletonCount;\n if (!_this.list.querySelector('.e-virtual-ddl-content')) {\n _this.list.appendChild(_this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: _this.getTransformValues()\n })).appendChild(_this.list.querySelector('.e-list-parent'));\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = _this.getTransformValues();\n }\n _this.UpdateSkeleton();\n _this.liCollections = _this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n _this.virtualItemCount = _this.itemCount;\n if (!_this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = _this.createElement('div', {\n id: _this.element.id + '_popup', className: 'e-virtual-ddl', styles: _this.GetVirtualTrackHeight()\n });\n popupEle.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.list.getElementsByClassName('e-virtual-ddl')[0].style = _this.GetVirtualTrackHeight();\n }\n }\n popupEle.style.visibility = 'hidden';\n if (_this.popupHeight !== 'auto') {\n _this.searchBoxHeight = 0;\n if (!isNullOrUndefined(searchBox.container) && _this.getModuleName() !== 'combobox' && _this.getModuleName() !== 'autocomplete') {\n _this.searchBoxHeight = (searchBox.container.parentElement).getBoundingClientRect().height;\n _this.listContainerHeight = (parseInt(_this.listContainerHeight, 10) - (_this.searchBoxHeight)).toString() + 'px';\n }\n if (_this.headerTemplate) {\n _this.header = _this.header ? _this.header : popupEle.querySelector('.e-ddl-header');\n var height = Math.round(_this.header.getBoundingClientRect().height);\n _this.listContainerHeight = (parseInt(_this.listContainerHeight, 10) - (height + _this.searchBoxHeight)).toString() + 'px';\n }\n if (_this.footerTemplate) {\n _this.footer = _this.footer ? _this.footer : popupEle.querySelector('.e-ddl-footer');\n var height = Math.round(_this.footer.getBoundingClientRect().height);\n _this.listContainerHeight = (parseInt(_this.listContainerHeight, 10) - (height + _this.searchBoxHeight)).toString() + 'px';\n }\n _this.list.style.maxHeight = (parseInt(_this.listContainerHeight, 10) - 2).toString() + 'px'; // due to box-sizing property\n popupEle.style.maxHeight = formatUnit(_this.popupHeight);\n }\n else {\n popupEle.style.height = 'auto';\n }\n var offsetValue = 0;\n var left = void 0;\n _this.isPreventScrollAction = true;\n if (!isNullOrUndefined(_this.selectedLI) && (!isNullOrUndefined(_this.activeIndex) && _this.activeIndex >= 0)) {\n _this.setScrollPosition();\n }\n else if (_this.enableVirtualization) {\n _this.setScrollPosition();\n }\n else {\n _this.list.scrollTop = 0;\n }\n if (Browser.isDevice && (!_this.allowFiltering && (_this.getModuleName() === 'dropdownlist' ||\n (_this.isDropDownClick && _this.getModuleName() === 'combobox')))) {\n offsetValue = _this.getOffsetValue(popupEle);\n var firstItem = _this.isEmptyList() ? _this.list : _this.liCollections[0];\n if (!isNullOrUndefined(_this.inputElement)) {\n left = -(parseInt(getComputedStyle(firstItem).textIndent, 10) -\n parseInt(getComputedStyle(_this.inputElement).paddingLeft, 10) +\n parseInt(getComputedStyle(_this.inputElement.parentElement).borderLeftWidth, 10));\n }\n }\n _this.createPopup(popupEle, offsetValue, left);\n _this.popupContentElement = _this.popupObj.element.querySelector('.e-content');\n _this.getFocusElement();\n _this.checkCollision(popupEle);\n if (Browser.isDevice) {\n if ((parseInt(_this.popupWidth.toString(), 10) > window.outerWidth) && !(_this.getModuleName() === 'dropdownlist' && _this.allowFiltering)) {\n _this.popupObj.element.classList.add('e-wide-popup');\n }\n _this.popupObj.element.classList.add(dropDownListClasses.device);\n if (_this.getModuleName() === 'dropdownlist' || (_this.getModuleName() === 'combobox'\n && !_this.allowFiltering && _this.isDropDownClick)) {\n _this.popupObj.collision = { X: 'fit', Y: 'fit' };\n }\n if (_this.isFilterLayout()) {\n _this.popupObj.element.classList.add(dropDownListClasses.mobileFilter);\n _this.popupObj.position = { X: 0, Y: 0 };\n _this.popupObj.dataBind();\n attributes(_this.popupObj.element, { style: 'left:0px;right:0px;top:0px;bottom:0px;' });\n addClass([document.body, _this.popupObj.element], dropDownListClasses.popupFullScreen);\n _this.setSearchBoxPosition();\n _this.backIconElement = searchBox.container.querySelector('.e-back-icon');\n _this.clearIconElement = searchBox.container.querySelector('.' + dropDownListClasses.clearIcon);\n EventHandler.add(_this.backIconElement, 'click', _this.clickOnBackIcon, _this);\n EventHandler.add(_this.clearIconElement, 'click', _this.clearText, _this);\n }\n }\n popupEle.style.visibility = 'visible';\n addClass([popupEle], 'e-popup-close');\n var scrollParentElements = _this.popupObj.getScrollableParent(_this.inputWrapper.container);\n for (var _i = 0, scrollParentElements_1 = scrollParentElements; _i < scrollParentElements_1.length; _i++) {\n var element = scrollParentElements_1[_i];\n EventHandler.add(element, 'scroll', _this.scrollHandler, _this);\n }\n if (!isNullOrUndefined(_this.list)) {\n _this.unWireListEvents();\n _this.wireListEvents();\n }\n _this.selectedElementID = _this.selectedLI ? _this.selectedLI.id : null;\n if (_this.enableVirtualization) {\n _this.notify(\"bindScrollEvent\", {\n module: \"VirtualScroll\",\n component: _this.getModuleName(),\n enable: _this.enableVirtualization,\n });\n setTimeout(function () {\n if (_this.value || _this.list.querySelector('.e-active')) {\n _this.updateSelectionList();\n if (_this.selectedValueInfo && _this.viewPortInfo && _this.viewPortInfo.offsets.top) {\n _this.list.scrollTop = _this.viewPortInfo.offsets.top;\n }\n else {\n _this.scrollBottom(true, true);\n }\n }\n }, 5);\n }\n attributes(_this.targetElement(), { 'aria-expanded': 'true', 'aria-owns': _this.element.id + '_popup', 'aria-controls': _this.element.id });\n if (_this.getModuleName() !== 'dropdownlist' && _this.list.classList.contains('e-nodata')) {\n attributes(_this.targetElement(), { 'aria-activedescendant': 'no-record' });\n _this.popupContentElement.setAttribute('role', 'status');\n _this.popupContentElement.setAttribute('id', 'no-record');\n }\n _this.inputElement.setAttribute('aria-expanded', 'true');\n _this.inputElement.setAttribute('aria-controls', _this.element.id + '_popup');\n var inputParent = _this.isFiltering() ? _this.filterInput.parentElement : _this.inputWrapper.container;\n addClass([inputParent], [dropDownListClasses.inputFocus]);\n var animModel = { name: 'FadeIn', duration: 100 };\n _this.beforePopupOpen = true;\n var popupInstance = _this.popupObj;\n var eventArgs = { popup: popupInstance, event: e, cancel: false, animation: animModel };\n _this.trigger('open', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (!isNullOrUndefined(_this.inputWrapper)) {\n addClass([_this.inputWrapper.container], [dropDownListClasses.iconAnimation]);\n }\n _this.renderReactTemplates();\n if (!isNullOrUndefined(_this.popupObj)) {\n _this.popupObj.show(new Animation(eventArgs.animation), (_this.zIndex === 1000) ? _this.element : null);\n }\n }\n else {\n _this.beforePopupOpen = false;\n _this.destroyPopup();\n }\n });\n }\n else {\n _this.beforePopupOpen = false;\n }\n });\n };\n DropDownList.prototype.checkCollision = function (popupEle) {\n if (!Browser.isDevice || (Browser.isDevice && !(this.getModuleName() === 'dropdownlist' || this.isDropDownClick))) {\n var collision = isCollide(popupEle);\n if (collision.length > 0) {\n popupEle.style.marginTop = -parseInt(getComputedStyle(popupEle).marginTop, 10) + 'px';\n }\n this.popupObj.resolveCollision();\n }\n };\n DropDownList.prototype.getOffsetValue = function (popupEle) {\n var popupStyles = getComputedStyle(popupEle);\n var borderTop = parseInt(popupStyles.borderTopWidth, 10);\n var borderBottom = parseInt(popupStyles.borderBottomWidth, 10);\n return this.setPopupPosition(borderTop + borderBottom);\n };\n DropDownList.prototype.createPopup = function (element, offsetValue, left) {\n var _this = this;\n this.popupObj = new Popup(element, {\n width: this.setWidth(), targetType: 'relative',\n relateTo: this.inputWrapper.container,\n collision: this.enableRtl ? { X: 'fit', Y: 'flip' } : { X: 'flip', Y: 'flip' }, offsetY: offsetValue,\n enableRtl: this.enableRtl, offsetX: left,\n position: this.enableRtl ? { X: 'right', Y: 'bottom' } : { X: 'left', Y: 'bottom' },\n zIndex: this.zIndex,\n close: function () {\n if (!_this.isDocumentClick) {\n _this.focusDropDown();\n }\n // eslint-disable-next-line\n if (_this.isReact) {\n _this.clearTemplate(['headerTemplate', 'footerTemplate']);\n }\n _this.isNotSearchList = false;\n _this.isDocumentClick = false;\n _this.destroyPopup();\n if (_this.isFiltering() && _this.actionCompleteData.list && _this.actionCompleteData.list[0]) {\n _this.isActive = true;\n if (_this.enableVirtualization) {\n _this.onActionComplete(_this.ulElement, _this.listData, null, true);\n }\n else {\n _this.onActionComplete(_this.actionCompleteData.ulElement, _this.actionCompleteData.list, null, true);\n }\n }\n },\n open: function () {\n EventHandler.add(document, 'mousedown', _this.onDocumentClick, _this);\n _this.isPopupOpen = true;\n var actionList = _this.actionCompleteData && _this.actionCompleteData.ulElement &&\n _this.actionCompleteData.ulElement.querySelector('li');\n var ulElement = _this.list.querySelector('ul li');\n if (!isNullOrUndefined(_this.ulElement) && !isNullOrUndefined(_this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(_this.targetElement(), { 'aria-activedescendant': _this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (!isNullOrUndefined(_this.ulElement) && !isNullOrUndefined(_this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(_this.targetElement(), { 'aria-activedescendant': _this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n if (_this.isFiltering() && _this.itemTemplate && (_this.element.tagName === _this.getNgDirective()) &&\n (actionList && ulElement && actionList.textContent !== ulElement.textContent) &&\n _this.element.tagName !== 'EJS-COMBOBOX') {\n _this.cloneElements();\n }\n if (_this.isFilterLayout()) {\n removeClass([_this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n _this.isFilterFocus = true;\n _this.filterInput.focus();\n if (_this.inputWrapper.clearButton) {\n addClass([_this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n _this.activeStateChange();\n },\n targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n };\n DropDownList.prototype.isEmptyList = function () {\n return !isNullOrUndefined(this.liCollections) && this.liCollections.length === 0;\n };\n DropDownList.prototype.getFocusElement = function () {\n // combo-box used this method\n };\n DropDownList.prototype.isFilterLayout = function () {\n return this.getModuleName() === 'dropdownlist' && this.allowFiltering;\n };\n DropDownList.prototype.scrollHandler = function () {\n if (Browser.isDevice && ((this.getModuleName() === 'dropdownlist' &&\n !this.isFilterLayout()) || (this.getModuleName() === 'combobox' && !this.allowFiltering && this.isDropDownClick))) {\n if (this.element && !(this.isElementInViewport(this.element))) {\n this.hidePopup();\n }\n }\n };\n DropDownList.prototype.isElementInViewport = function (element) {\n var elementRect = element.getBoundingClientRect();\n return (elementRect.top >= 0 && elementRect.left >= 0 && elementRect.bottom <= window.innerHeight && elementRect.right <= window.innerWidth);\n };\n ;\n DropDownList.prototype.setSearchBoxPosition = function () {\n var searchBoxHeight = this.filterInput.parentElement.getBoundingClientRect().height;\n this.popupObj.element.style.maxHeight = '100%';\n this.popupObj.element.style.width = '100%';\n this.list.style.maxHeight = (window.innerHeight - searchBoxHeight) + 'px';\n this.list.style.height = (window.innerHeight - searchBoxHeight) + 'px';\n var clearElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n detach(this.filterInput);\n clearElement.parentElement.insertBefore(this.filterInput, clearElement);\n };\n DropDownList.prototype.setPopupPosition = function (border) {\n var offsetValue;\n var popupOffset = border;\n var selectedLI = this.list.querySelector('.' + dropDownListClasses.focus) || this.selectedLI;\n var firstItem = this.isEmptyList() ? this.list : this.liCollections[0];\n var lastItem = this.isEmptyList() ? this.list : this.liCollections[this.getItems().length - 1];\n var liHeight = firstItem.getBoundingClientRect().height;\n this.listItemHeight = liHeight;\n var listHeight = this.list.offsetHeight / 2;\n var height = isNullOrUndefined(selectedLI) ? firstItem.offsetTop : selectedLI.offsetTop;\n var lastItemOffsetValue = lastItem.offsetTop;\n if (lastItemOffsetValue - listHeight < height && !isNullOrUndefined(this.liCollections) &&\n this.liCollections.length > 0 && !isNullOrUndefined(selectedLI)) {\n var count = this.list.offsetHeight / liHeight;\n var paddingBottom = parseInt(getComputedStyle(this.list).paddingBottom, 10);\n offsetValue = (count - (this.liCollections.length - this.activeIndex)) * liHeight - popupOffset + paddingBottom;\n this.list.scrollTop = selectedLI.offsetTop;\n }\n else if (height > listHeight && !this.enableVirtualization) {\n offsetValue = listHeight - liHeight / 2;\n this.list.scrollTop = height - listHeight + liHeight / 2;\n }\n else {\n offsetValue = height;\n }\n var inputHeight = this.inputWrapper.container.offsetHeight;\n offsetValue = offsetValue + liHeight + popupOffset - ((liHeight - inputHeight) / 2);\n return -offsetValue;\n };\n DropDownList.prototype.setWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.inputWrapper.container.offsetWidth * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n if (Browser.isDevice && (width.indexOf('px') > -1) && (!this.allowFiltering && (this.getModuleName() === 'dropdownlist' ||\n (this.isDropDownClick && this.getModuleName() === 'combobox')))) {\n var firstItem = this.isEmptyList() ? this.list : this.liCollections[0];\n width = (parseInt(width, 10) + (parseInt(getComputedStyle(firstItem).textIndent, 10) -\n parseInt(getComputedStyle(this.inputElement).paddingLeft, 10) +\n parseInt(getComputedStyle(this.inputElement.parentElement).borderLeftWidth, 10)) * 2) + 'px';\n }\n return width;\n };\n DropDownList.prototype.scrollBottom = function (isInitial, isInitialSelection, keyAction) {\n var _this = this;\n if (isInitialSelection === void 0) { isInitialSelection = false; }\n if (keyAction === void 0) { keyAction = null; }\n if (isNullOrUndefined(this.selectedLI) && this.enableVirtualization) {\n this.selectedLI = this.list.querySelector('.' + dropDownBaseClasses.li);\n if (!isNullOrUndefined(this.selectedLI) && this.selectedLI.classList.contains('e-virtual-list')) {\n this.selectedLI = this.liCollections[this.skeletonCount];\n }\n }\n if (!isNullOrUndefined(this.selectedLI)) {\n this.isUpwardScrolling = false;\n var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var lastElementValue = this.list.querySelector('li:last-of-type') ? this.list.querySelector('li:last-of-type').getAttribute('data-value') : null;\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.selectedLI.offsetTop + (this.virtualListInfo.startIndex * this.selectedLI.offsetHeight) : this.selectedLI.offsetTop;\n var currentOffset = this.list.offsetHeight;\n var nextBottom = selectedLiOffsetTop - (virtualListCount * this.selectedLI.offsetHeight) + this.selectedLI.offsetHeight - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n var isScrollerCHanged = false;\n var isScrollTopChanged = false;\n nextOffset = isInitial ? nextOffset + parseInt(getComputedStyle(this.list).paddingTop, 10) * 2 : nextOffset + parseInt(getComputedStyle(this.list).paddingTop, 10);\n var boxRange = selectedLiOffsetTop - (virtualListCount * this.selectedLI.offsetHeight) + this.selectedLI.offsetHeight - this.list.scrollTop;\n boxRange = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n boxRange - this.fixedHeaderElement.offsetHeight : boxRange;\n if (this.activeIndex === 0 && !this.enableVirtualization) {\n this.list.scrollTop = 0;\n isScrollerCHanged = this.isKeyBoardAction;\n }\n else if (nextBottom > currentOffset || !(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n var currentElementValue = this.selectedLI ? this.selectedLI.getAttribute('data-value') : null;\n var liCount = keyAction == \"pageDown\" ? this.getPageCount() - 2 : 1;\n if (!this.enableVirtualization || this.isKeyBoardAction || isInitialSelection) {\n if (this.isKeyBoardAction && this.enableVirtualization && lastElementValue && currentElementValue === lastElementValue && keyAction != \"end\" && !this.isVirtualScrolling) {\n this.isPreventKeyAction = true;\n if (this.enableVirtualization && this.itemTemplate) {\n this.list.scrollTop += nextOffset;\n }\n else {\n if (this.enableVirtualization) {\n liCount = keyAction == \"pageDown\" ? this.getPageCount() + 1 : liCount;\n }\n this.list.scrollTop += this.selectedLI.offsetHeight * liCount;\n }\n this.isPreventKeyAction = this.IsScrollerAtEnd() ? false : this.isPreventKeyAction;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n else if (this.enableVirtualization && keyAction == \"end\") {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n this.list.scrollTop = this.list.scrollHeight;\n }\n else {\n if (keyAction == \"pageDown\" && this.enableVirtualization && !this.isVirtualScrolling) {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n this.list.scrollTop = nextOffset;\n }\n }\n else {\n this.list.scrollTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.virtualListInfo.startIndex * this.listItemHeight : 0;\n }\n isScrollerCHanged = this.isKeyBoardAction;\n isScrollTopChanged = true;\n }\n this.isKeyBoardAction = isScrollerCHanged;\n if (this.enableVirtualization && this.fields.groupBy && this.fixedHeaderElement && (keyAction == \"down\")) {\n setTimeout(function () {\n _this.scrollStop(null, true);\n }, 100);\n }\n }\n };\n DropDownList.prototype.scrollTop = function (keyAction) {\n if (keyAction === void 0) { keyAction = null; }\n if (!isNullOrUndefined(this.selectedLI)) {\n var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var selectedLiOffsetTop = (this.virtualListInfo && this.virtualListInfo.startIndex) ? this.selectedLI.offsetTop + (this.virtualListInfo.startIndex * this.selectedLI.offsetHeight) : this.selectedLI.offsetTop;\n var nextOffset = selectedLiOffsetTop - (virtualListCount * this.selectedLI.offsetHeight) - this.list.scrollTop;\n var firstElementValue = this.list.querySelector('li.e-list-item:not(.e-virtual-list)') ? this.list.querySelector('li.e-list-item:not(.e-virtual-list)').getAttribute('data-value') : null;\n nextOffset = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n nextOffset - this.fixedHeaderElement.offsetHeight : nextOffset;\n var boxRange = (selectedLiOffsetTop - (virtualListCount * this.selectedLI.offsetHeight) + this.selectedLI.offsetHeight - this.list.scrollTop);\n var isPageUpKeyAction = this.enableVirtualization && this.getModuleName() === 'autocomplete' && nextOffset <= 0;\n if (this.activeIndex === 0 && !this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n else if (nextOffset < 0 || isPageUpKeyAction) {\n var currentElementValue = this.selectedLI ? this.selectedLI.getAttribute('data-value') : null;\n var liCount = keyAction == \"pageUp\" ? this.getPageCount() - 2 : 1;\n if (this.enableVirtualization) {\n liCount = keyAction == \"pageUp\" ? this.getPageCount() : liCount;\n }\n if (this.enableVirtualization && this.isKeyBoardAction && firstElementValue && currentElementValue === firstElementValue && keyAction != \"home\" && !this.isVirtualScrolling) {\n this.isUpwardScrolling = true;\n this.isPreventKeyAction = true;\n this.list.scrollTop -= this.selectedLI.offsetHeight * liCount;\n this.isPreventKeyAction = this.list.scrollTop != 0 ? this.isPreventKeyAction : false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n else if (this.enableVirtualization && keyAction == \"home\") {\n this.isPreventScrollAction = false;\n this.isPreventKeyAction = true;\n this.isKeyBoardAction = false;\n this.list.scrollTo(0, 0);\n }\n else {\n if (keyAction == \"pageUp\" && this.enableVirtualization && !this.isVirtualScrolling) {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n this.list.scrollTop = this.list.scrollTop + nextOffset;\n }\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = this.selectedLI.offsetTop - (this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n this.fixedHeaderElement.offsetHeight : 0);\n }\n }\n };\n DropDownList.prototype.isEditTextBox = function () {\n return false;\n };\n DropDownList.prototype.isFiltering = function () {\n return this.allowFiltering;\n };\n DropDownList.prototype.isPopupButton = function () {\n return true;\n };\n DropDownList.prototype.setScrollPosition = function (e) {\n this.isPreventScrollAction = true;\n if (!isNullOrUndefined(e)) {\n switch (e.action) {\n case 'pageDown':\n case 'down':\n case 'end':\n this.isKeyBoardAction = true;\n this.scrollBottom(false, false, e.action);\n break;\n default:\n this.isKeyBoardAction = e.action == 'up' || e.action == 'pageUp' || e.action == 'open';\n this.scrollTop(e.action);\n break;\n }\n }\n else {\n this.scrollBottom(true);\n }\n this.isKeyBoardAction = false;\n };\n DropDownList.prototype.clearText = function () {\n this.filterInput.value = this.typedString = '';\n this.searchLists(null);\n if (this.enableVirtualization) {\n this.list.scrollTop = 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n this.getSkeletonCount();\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl-content')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n }\n };\n DropDownList.prototype.setEleWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.inputWrapper.container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.inputWrapper.container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n DropDownList.prototype.closePopup = function (delay, e) {\n var _this = this;\n var isFilterValue = !isNullOrUndefined(this.filterInput) && !isNullOrUndefined(this.filterInput.value) && this.filterInput.value !== '';\n var typedString = this.getModuleName() === 'combobox' ? this.typedString : null;\n this.isTyped = false;\n this.isVirtualTrackHeight = false;\n if (!(this.popupObj && document.body.contains(this.popupObj.element) && this.beforePopupOpen)) {\n return;\n }\n this.keyboardEvent = null;\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n this.isActive = false;\n if (this.getModuleName() === 'dropdownlist') {\n Input.destroy({\n element: this.filterInput,\n floatLabelType: this.floatLabelType,\n properties: { placeholder: this.filterBarPlaceholder },\n buttons: this.clearIconElement,\n }, this.clearIconElement);\n }\n this.filterInputObj = null;\n this.isDropDownClick = false;\n this.preventAutoFill = false;\n var scrollableParentElements = this.popupObj.getScrollableParent(this.inputWrapper.container);\n for (var _i = 0, scrollableParentElements_1 = scrollableParentElements; _i < scrollableParentElements_1.length; _i++) {\n var element = scrollableParentElements_1[_i];\n EventHandler.remove(element, 'scroll', this.scrollHandler);\n }\n if (Browser.isDevice && this.isFilterLayout()) {\n removeClass([document.body, this.popupObj.element], dropDownListClasses.popupFullScreen);\n }\n if (this.isFilterLayout()) {\n if (!Browser.isDevice) {\n this.searchKeyModule.destroy();\n if (this.clearIconElement) {\n EventHandler.remove(this.clearIconElement, 'click', this.clearText);\n }\n }\n if (this.backIconElement) {\n EventHandler.remove(this.backIconElement, 'click', this.clickOnBackIcon);\n EventHandler.remove(this.clearIconElement, 'click', this.clearText);\n }\n if (!isNullOrUndefined(this.filterInput)) {\n EventHandler.remove(this.filterInput, 'input', this.onInput);\n EventHandler.remove(this.filterInput, 'keyup', this.onFilterUp);\n EventHandler.remove(this.filterInput, 'keydown', this.onFilterDown);\n EventHandler.remove(this.filterInput, 'blur', this.onBlurHandler);\n EventHandler.remove(this.filterInput, 'paste', this.pasteHandler);\n }\n if (this.allowFiltering && this.getModuleName() === 'dropdownlist') {\n this.filterInput.removeAttribute('aria-activedescendant');\n this.filterInput.removeAttribute('aria-disabled');\n this.filterInput.removeAttribute('role');\n this.filterInput.removeAttribute('autocomplete');\n this.filterInput.removeAttribute('autocapitalize');\n this.filterInput.removeAttribute('spellcheck');\n }\n this.filterInput = null;\n }\n attributes(this.targetElement(), { 'aria-expanded': 'false' });\n this.inputElement.setAttribute('aria-expanded', 'false');\n this.targetElement().removeAttribute('aria-owns');\n this.targetElement().removeAttribute('aria-activedescendant');\n this.inputWrapper.container.classList.remove(dropDownListClasses.iconAnimation);\n if (this.isFiltering()) {\n this.actionCompleteData.isUpdated = false;\n }\n if (this.enableVirtualization) {\n if ((this.value == null || this.isTyped)) {\n this.viewPortInfo.endIndex = this.viewPortInfo && this.viewPortInfo.endIndex > 0 ? this.viewPortInfo.endIndex : this.itemCount;\n if (this.getModuleName() === 'autocomplete' || (this.getModuleName() === 'dropdownlist' && !isNullOrUndefined(this.typedString) && this.typedString != \"\") || (this.getModuleName() === 'combobox' && this.allowFiltering && !isNullOrUndefined(this.typedString) && this.typedString != \"\")) {\n this.checkAndResetCache();\n }\n }\n else if (this.getModuleName() === 'autocomplete') {\n this.checkAndResetCache();\n }\n if ((this.getModuleName() === 'dropdownlist' || this.getModuleName() === 'combobox') && !(this.skeletonCount == 0)) {\n this.getSkeletonCount(true);\n }\n }\n this.beforePopupOpen = false;\n var animModel = {\n name: 'FadeOut',\n duration: 100,\n delay: delay ? delay : 0\n };\n var popupInstance = this.popupObj;\n var eventArgs = { popup: popupInstance, cancel: false, animation: animModel, event: e || null };\n this.trigger('close', eventArgs, function (eventArgs) {\n if (!isNullOrUndefined(_this.popupObj) &&\n !isNullOrUndefined(_this.popupObj.element.querySelector('.e-fixed-head'))) {\n var fixedHeader = _this.popupObj.element.querySelector('.e-fixed-head');\n fixedHeader.parentNode.removeChild(fixedHeader);\n _this.fixedHeaderElement = null;\n }\n if (!eventArgs.cancel) {\n if (_this.getModuleName() === 'autocomplete') {\n _this.rippleFun();\n }\n if (_this.isPopupOpen) {\n _this.popupObj.hide(new Animation(eventArgs.animation));\n }\n else {\n _this.destroyPopup();\n }\n }\n });\n if (Browser.isDevice && !eventArgs.cancel && this.popupObj.element.classList.contains('e-wide-popup')) {\n this.popupObj.element.classList.remove('e-wide-popup');\n }\n var dataSourceCount;\n if (this.dataSource instanceof DataManager) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataSourceCount = this.virtualGroupDataSource && this.virtualGroupDataSource.length ? this.virtualGroupDataSource.length : 0;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataSourceCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n }\n if (this.enableVirtualization && this.isFiltering() && isFilterValue && this.totalItemCount !== dataSourceCount) {\n this.updateInitialData();\n this.checkAndResetCache();\n }\n };\n DropDownList.prototype.updateInitialData = function () {\n var currentData = this.selectData;\n var ulElement = this.renderItems(currentData, this.fields);\n this.list.scrollTop = 0;\n this.virtualListInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: this.itemCount,\n };\n if (this.getModuleName() === 'combobox') {\n this.typedString = \"\";\n }\n this.previousStartIndex = 0;\n this.previousEndIndex = 0;\n if (this.dataSource instanceof DataManager) {\n if (this.remoteDataCount >= 0) {\n this.totalItemCount = this.dataCount = this.remoteDataCount;\n }\n else {\n this.resetList(this.dataSource);\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n if (this.getModuleName() !== 'autocomplete' && this.totalItemCount != 0 && this.totalItemCount > (this.itemCount * 2)) {\n this.getSkeletonCount();\n }\n this.UpdateSkeleton();\n this.listData = currentData;\n this.updateActionCompleteDataValues(ulElement, currentData);\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl-content')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n };\n DropDownList.prototype.destroyPopup = function () {\n this.isPopupOpen = false;\n this.isFilterFocus = false;\n this.inputElement.removeAttribute('aria-controls');\n if (this.popupObj) {\n this.popupObj.destroy();\n detach(this.popupObj.element);\n }\n };\n DropDownList.prototype.clickOnBackIcon = function () {\n this.hidePopup();\n this.focusIn();\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n DropDownList.prototype.render = function () {\n this.preselectedIndex = !isNullOrUndefined(this.index) ? this.index : null;\n if (this.element.tagName === 'INPUT') {\n this.inputElement = this.element;\n if (isNullOrUndefined(this.inputElement.getAttribute('role'))) {\n this.inputElement.setAttribute('role', 'combobox');\n }\n if (isNullOrUndefined(this.inputElement.getAttribute('type'))) {\n this.inputElement.setAttribute('type', 'text');\n }\n this.inputElement.setAttribute('aria-expanded', 'false');\n }\n else {\n this.inputElement = this.createElement('input', { attrs: { role: 'combobox', type: 'text' } });\n if (this.element.tagName !== this.getNgDirective()) {\n this.element.style.display = 'none';\n }\n this.element.parentElement.insertBefore(this.inputElement, this.element);\n this.preventTabIndex(this.inputElement);\n }\n var updatedCssClassValues = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n buttons: this.isPopupButton() ? [dropDownListClasses.icon] : null,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.getModuleName() === 'dropdownlist' ? true : this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValues,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n }\n }, this.createElement);\n if (this.element.tagName === this.getNgDirective()) {\n this.element.appendChild(this.inputWrapper.container);\n }\n else {\n this.inputElement.parentElement.insertBefore(this.element, this.inputElement);\n }\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'aria-label': this.getModuleName(), 'tabindex': '-1', 'class': dropDownListClasses.hiddenElement }\n });\n prepend([this.hiddenElement], this.inputWrapper.container);\n this.validationAttribute(this.element, this.hiddenElement);\n this.setReadOnly();\n this.setFields();\n this.inputWrapper.container.style.width = formatUnit(this.width);\n this.inputWrapper.container.classList.add('e-ddl');\n if (this.floatLabelType !== 'Never') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && this.inputWrapper.container.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n this.wireEvent();\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n var id = this.element.getAttribute('id') ? this.element.getAttribute('id') : getUniqueID('ej2_dropdownlist');\n this.element.id = id;\n this.hiddenElement.id = id + '_hidden';\n this.targetElement().setAttribute('tabindex', this.tabIndex);\n if ((this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') && !this.readonly) {\n this.inputElement.setAttribute('aria-label', this.getModuleName());\n }\n else if (this.getModuleName() === 'dropdownlist') {\n attributes(this.targetElement(), { 'aria-label': this.getModuleName() });\n this.inputElement.setAttribute('aria-label', this.getModuleName());\n this.inputElement.setAttribute('aria-expanded', 'false');\n }\n attributes(this.targetElement(), this.getAriaAttributes());\n this.updateDataAttribute(this.htmlAttributes);\n this.setHTMLAttributes();\n if (this.targetElement() === this.inputElement) {\n this.inputElement.removeAttribute('aria-labelledby');\n }\n if (this.value !== null || this.activeIndex !== null || this.text !== null) {\n if (this.enableVirtualization) {\n this.listItemHeight = this.getListHeight();\n this.getSkeletonCount();\n this.updateVirtualizationProperties(this.itemCount, this.allowFiltering);\n if (this.index !== null) {\n this.activeIndex = this.index + this.skeletonCount;\n }\n }\n this.initValue();\n this.selectedValueInfo = this.viewPortInfo;\n if (this.enableVirtualization) {\n this.activeIndex = this.activeIndex + this.skeletonCount;\n }\n }\n else if (this.element.tagName === 'SELECT' && this.element.options[0]) {\n var selectElement = this.element;\n this.value = this.allowObjectBinding ? this.getDataByValue(selectElement.options[selectElement.selectedIndex].value) : selectElement.options[selectElement.selectedIndex].value;\n this.text = isNullOrUndefined(this.value) ? null : selectElement.options[selectElement.selectedIndex].textContent;\n this.initValue();\n }\n this.setEnabled();\n this.preventTabIndex(this.element);\n if (!this.enabled) {\n this.targetElement().tabIndex = -1;\n }\n this.initial = false;\n this.element.style.opacity = '';\n this.inputElement.onselect = function (e) {\n e.stopImmediatePropagation();\n };\n this.inputElement.onchange = function (e) {\n e.stopImmediatePropagation();\n };\n if (this.element.hasAttribute('autofocus')) {\n this.focusIn();\n }\n if (!isNullOrUndefined(this.text)) {\n this.inputElement.setAttribute('value', this.text);\n }\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n var floatLabelElement = this.inputWrapper.container.getElementsByClassName('e-float-text')[0];\n if (!isNullOrUndefined(this.element.id) && this.element.id !== '' && !isNullOrUndefined(floatLabelElement)) {\n floatLabelElement.id = 'label_' + this.element.id.replace(/ /g, '_');\n attributes(this.inputElement, { 'aria-labelledby': floatLabelElement.id });\n }\n this.renderComplete();\n this.listItemHeight = this.getListHeight();\n this.getSkeletonCount();\n if (this.enableVirtualization) {\n this.updateVirtualizationProperties(this.itemCount, this.allowFiltering);\n }\n this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.viewPortInfo.startIndex > 0 ? this.viewPortInfo.endIndex : this.itemCount;\n };\n DropDownList.prototype.getListHeight = function () {\n var listParent = this.createElement('div', {\n className: 'e-dropdownbase'\n });\n var item = this.createElement('li', {\n className: 'e-list-item'\n });\n var listParentHeight = formatUnit(this.popupHeight);\n listParent.style.height = (parseInt(listParentHeight, 10)).toString() + 'px';\n listParent.appendChild(item);\n document.body.appendChild(listParent);\n this.virtualListHeight = listParent.getBoundingClientRect().height;\n var listItemHeight = Math.ceil(item.getBoundingClientRect().height);\n listParent.remove();\n return listItemHeight;\n };\n DropDownList.prototype.setFooterTemplate = function (popupEle) {\n var compiledString;\n if (this.footer) {\n if (this.isReact && typeof this.footerTemplate === 'function') {\n this.clearTemplate(['footerTemplate']);\n }\n else {\n this.footer.innerHTML = '';\n }\n }\n else {\n this.footer = this.createElement('div');\n addClass([this.footer], dropDownListClasses.footer);\n }\n var footercheck = this.dropdownCompiler(this.footerTemplate);\n if (typeof this.footerTemplate !== 'function' && footercheck) {\n compiledString = compile(select(this.footerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.footerTemplate);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var footerCompTemp = compiledString({}, this, 'footerTemplate', this.footerTemplateId, this.isStringTemplate, null, this.footer);\n if (footerCompTemp && footerCompTemp.length > 0) {\n append(footerCompTemp, this.footer);\n }\n append([this.footer], popupEle);\n };\n DropDownList.prototype.setHeaderTemplate = function (popupEle) {\n var compiledString;\n if (this.header) {\n this.header.innerHTML = '';\n }\n else {\n this.header = this.createElement('div');\n addClass([this.header], dropDownListClasses.header);\n }\n var headercheck = this.dropdownCompiler(this.headerTemplate);\n if (typeof this.headerTemplate !== 'function' && headercheck) {\n compiledString = compile(select(this.headerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.headerTemplate);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var headerCompTemp = compiledString({}, this, 'headerTemplate', this.headerTemplateId, this.isStringTemplate, null, this.header);\n if (headerCompTemp && headerCompTemp.length) {\n append(headerCompTemp, this.header);\n }\n var contentEle = popupEle.querySelector('div.e-content');\n popupEle.insertBefore(this.header, contentEle);\n };\n /**\n * Sets the enabled state to DropDownBase.\n *\n * @returns {void}\n */\n DropDownList.prototype.setEnabled = function () {\n this.element.setAttribute('aria-disabled', (this.enabled) ? 'false' : 'true');\n };\n DropDownList.prototype.setOldText = function (text) {\n this.text = text;\n };\n DropDownList.prototype.setOldValue = function (value) {\n this.value = value;\n };\n DropDownList.prototype.refreshPopup = function () {\n if (!isNullOrUndefined(this.popupObj) && document.body.contains(this.popupObj.element) &&\n ((this.allowFiltering && !(Browser.isDevice && this.isFilterLayout())) || this.getModuleName() === 'autocomplete')) {\n removeClass([this.popupObj.element], 'e-popup-close');\n this.popupObj.refreshPosition(this.inputWrapper.container);\n this.popupObj.resolveCollision();\n }\n };\n DropDownList.prototype.checkData = function (newProp) {\n if (newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource)) && this.itemTemplate && this.allowFiltering &&\n !(this.isListSearched && (newProp.dataSource instanceof DataManager))) {\n if (this.list && !(this.isReact)) {\n this.list.innerHTML = '';\n }\n else {\n this.list = null;\n }\n this.actionCompleteData = { ulElement: null, list: null, isUpdated: false };\n }\n this.isListSearched = false;\n var isChangeValue = Object.keys(newProp).indexOf('value') !== -1 && isNullOrUndefined(newProp.value);\n var isChangeText = Object.keys(newProp).indexOf('text') !== -1 && isNullOrUndefined(newProp.text);\n if (this.getModuleName() !== 'autocomplete' && this.allowFiltering && (isChangeValue || isChangeText)) {\n this.itemData = null;\n }\n if (this.allowFiltering && newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource))) {\n this.actionCompleteData = { ulElement: null, list: null, isUpdated: false };\n this.actionData = this.actionCompleteData;\n }\n else if (this.allowFiltering && newProp.query && !isNullOrUndefined(Object.keys(newProp.query))) {\n this.actionCompleteData = this.getModuleName() === 'combobox' ?\n { ulElement: null, list: null, isUpdated: false } : this.actionCompleteData;\n this.actionData = this.actionCompleteData;\n }\n };\n DropDownList.prototype.updateDataSource = function (props, oldProps) {\n if (this.inputElement.value !== '' || (!isNullOrUndefined(props) && (isNullOrUndefined(props.dataSource)\n || (!(props.dataSource instanceof DataManager) && props.dataSource.length === 0)))) {\n this.clearAll(null, props);\n }\n if ((this.fields.groupBy && props.fields) && !this.isGroupChecking && this.list) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n EventHandler.add(this.list, 'scroll', this.setFloatingHeader, this);\n }\n if (!(!isNullOrUndefined(props) && (isNullOrUndefined(props.dataSource)\n || (!(props.dataSource instanceof DataManager) && props.dataSource.length === 0))) || ((props.dataSource instanceof DataManager) || (!isNullOrUndefined(props) && Array.isArray(props.dataSource) && !isNullOrUndefined(oldProps) && Array.isArray(oldProps.dataSource) && props.dataSource.length !== oldProps.dataSource.length))) {\n this.typedString = '';\n this.resetList(this.dataSource);\n }\n if (!this.isCustomFilter && !this.isFilterFocus && document.activeElement !== this.filterInput) {\n this.checkCustomValue();\n }\n };\n DropDownList.prototype.checkCustomValue = function () {\n var currentValue = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n this.itemData = this.getDataByValue(currentValue);\n var dataItem = this.getItemData();\n var value = this.allowObjectBinding ? this.itemData : dataItem.value;\n var index = isNullOrUndefined(value) ? null : this.index;\n if (isNullOrUndefined(index) && (currentValue == value)) {\n this.setProperties({ 'text': dataItem.text, 'value': value });\n }\n else {\n this.setProperties({ 'text': dataItem.text, 'index': index, 'value': value });\n }\n };\n DropDownList.prototype.updateInputFields = function () {\n if (this.getModuleName() === 'dropdownlist') {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @private\n * @param {DropDownListModel} newProp - Returns the dynamic property value of the component.\n * @param {DropDownListModel} oldProp - Returns the previous previous value of the component.\n * @returns {void}\n */\n DropDownList.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!isNullOrUndefined(newProp.dataSource) && !this.isTouched && (isNullOrUndefined(newProp.value) && isNullOrUndefined(newProp.index)) && !isNullOrUndefined(this.preselectedIndex) && !isNullOrUndefined(this.index)) {\n newProp.index = this.index;\n }\n if (!isNullOrUndefined(newProp.value) || !isNullOrUndefined(newProp.index)) {\n this.isTouched = true;\n }\n if (this.getModuleName() === 'dropdownlist') {\n this.checkData(newProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n var _loop_1 = function (prop) {\n switch (prop) {\n case 'query':\n case 'dataSource':\n this_1.getSkeletonCount();\n this_1.checkAndResetCache();\n break;\n case 'htmlAttributes':\n this_1.setHTMLAttributes();\n break;\n case 'width':\n this_1.setEleWidth(newProp.width);\n Input.calculateWidth(this_1.inputElement, this_1.inputWrapper.container);\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this_1.inputElement);\n break;\n case 'filterBarPlaceholder':\n if (this_1.filterInput) {\n Input.setPlaceholder(newProp.filterBarPlaceholder, this_1.filterInput);\n }\n break;\n case 'readonly':\n if (this_1.getModuleName() !== 'dropdownlist') {\n Input.setReadonly(newProp.readonly, this_1.inputElement);\n }\n this_1.setReadOnly();\n break;\n case 'cssClass':\n this_1.setCssClass(newProp.cssClass, oldProp.cssClass);\n Input.calculateWidth(this_1.inputElement, this_1.inputWrapper.container);\n break;\n case 'enableRtl':\n this_1.setEnableRtl();\n break;\n case 'enabled':\n this_1.setEnable();\n break;\n case 'text':\n if (this_1.fields.disabled) {\n newProp.text = newProp.text && !this_1.isDisabledItemByIndex(this_1.getIndexByValue(this_1.getValueByText(newProp.text)))\n ? newProp.text : null;\n }\n if (newProp.text === null) {\n this_1.clearAll();\n break;\n }\n if (this_1.enableVirtualization) {\n this_1.updateValues();\n this_1.updateInputFields();\n this_1.notify(\"setCurrentViewDataAsync\", {\n module: \"VirtualScroll\",\n });\n break;\n }\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initialRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initialRemoteRender) {\n var li = this_1.getElementByText(newProp.text);\n if (!this_1.checkValidLi(li)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.text, oldProp.text, 'text');\n }\n else if (newProp.text && this_1.dataSource instanceof DataManager) {\n var listLength_1 = this_1.getItems().length;\n var checkField = isNullOrUndefined(this_1.fields.text) ? this_1.fields.value : this_1.fields.text;\n this_1.typedString = '';\n this_1.dataSource.executeQuery(this_1.getQuery(this_1.query).where(new Predicate(checkField, 'equal', newProp.text)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, listLength_1);\n _this.updateValues();\n }\n else {\n _this.setOldText(oldProp.text);\n }\n });\n }\n else if (this_1.getModuleName() === 'autocomplete') {\n this_1.setInputValue(newProp, oldProp);\n }\n else {\n this_1.setOldText(oldProp.text);\n }\n }\n this_1.updateInputFields();\n }\n break;\n case 'value':\n if (this_1.fields.disabled) {\n newProp.value = newProp.value != null && !this_1.isDisableItemValue(newProp.value) ? newProp.value : null;\n }\n if (newProp.value === null) {\n this_1.clearAll();\n break;\n }\n if (this_1.allowObjectBinding && !isNullOrUndefined(newProp.value) && !isNullOrUndefined(oldProp.value) && this_1.isObjectInArray(newProp.value, [oldProp.value])) {\n return { value: void 0 };\n }\n if (this_1.enableVirtualization) {\n this_1.updateValues();\n this_1.updateInputFields();\n this_1.notify(\"setCurrentViewDataAsync\", {\n module: \"VirtualScroll\",\n });\n this_1.preventChange = this_1.isAngular && this_1.preventChange ? !this_1.preventChange : this_1.preventChange;\n break;\n }\n this_1.notify('beforeValueChange', { newProp: newProp }); // gird component value type change\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initialRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initialRemoteRender) {\n var value = this_1.allowObjectBinding && !isNullOrUndefined(newProp.value) ? getValue((this_1.fields.value) ? this_1.fields.value : '', newProp.value) : newProp.value;\n var item = this_1.getElementByValue(value);\n if (!this_1.checkValidLi(item)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.value, oldProp.value, 'value');\n }\n else if (newProp.value && this_1.dataSource instanceof DataManager) {\n var listLength_2 = this_1.getItems().length;\n var checkField = isNullOrUndefined(this_1.fields.value) ? this_1.fields.text : this_1.fields.value;\n this_1.typedString = '';\n var value_7 = this_1.allowObjectBinding && !isNullOrUndefined(newProp.value) ? getValue(checkField, newProp.value) : newProp.value;\n this_1.dataSource.executeQuery(this_1.getQuery(this_1.query).where(new Predicate(checkField, 'equal', value_7)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, listLength_2);\n _this.updateValues();\n }\n else {\n _this.setOldValue(oldProp.value);\n }\n });\n }\n else if (this_1.getModuleName() === 'autocomplete') {\n this_1.setInputValue(newProp, oldProp);\n }\n else {\n this_1.setOldValue(oldProp.value);\n }\n }\n this_1.updateInputFields();\n this_1.preventChange = this_1.isAngular && this_1.preventChange ? !this_1.preventChange : this_1.preventChange;\n }\n break;\n case 'index':\n if (this_1.fields.disabled) {\n newProp.index = newProp.index != null && !this_1.isDisabledItemByIndex(newProp.index) ? newProp.index : null;\n }\n if (newProp.index === null) {\n this_1.clearAll();\n break;\n }\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initialRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initialRemoteRender && this_1.liCollections) {\n var element = this_1.liCollections[newProp.index];\n if (!this_1.checkValidLi(element)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.index, oldProp.index, 'index');\n }\n else {\n this_1.index = oldProp.index;\n }\n }\n this_1.updateInputFields();\n }\n break;\n case 'footerTemplate':\n if (this_1.popupObj) {\n this_1.setFooterTemplate(this_1.popupObj.element);\n }\n break;\n case 'headerTemplate':\n if (this_1.popupObj) {\n this_1.setHeaderTemplate(this_1.popupObj.element);\n }\n break;\n case 'valueTemplate':\n if (!isNullOrUndefined(this_1.itemData) && this_1.valueTemplate !== null) {\n this_1.setValueTemplate();\n }\n break;\n case 'allowFiltering':\n if (this_1.allowFiltering) {\n this_1.actionCompleteData = {\n ulElement: this_1.ulElement,\n list: this_1.listData, isUpdated: true\n };\n this_1.actionData = this_1.actionCompleteData;\n this_1.updateSelectElementData(this_1.allowFiltering);\n }\n break;\n case 'floatLabelType':\n Input.removeFloating(this_1.inputWrapper);\n Input.addFloating(this_1.inputElement, newProp.floatLabelType, this_1.placeholder, this_1.createElement);\n if (!isNullOrUndefined(this_1.inputWrapper.buttons[0]) && this_1.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0] && this_1.floatLabelType !== 'Never') {\n this_1.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'showClearButton':\n if (!this_1.inputWrapper.clearButton) {\n Input.setClearButton(newProp.showClearButton, this_1.inputElement, this_1.inputWrapper, null, this_1.createElement);\n this_1.bindClearEvent();\n }\n break;\n default:\n {\n // eslint-disable-next-line max-len\n var ddlProps = this_1.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this_1, ddlProps.newProperty, ddlProps.oldProperty);\n }\n break;\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n var state_1 = _loop_1(prop);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n };\n DropDownList.prototype.checkValidLi = function (element) {\n if (this.isValidLI(element)) {\n this.setSelection(element, null);\n return true;\n }\n return false;\n };\n DropDownList.prototype.setSelectionData = function (newProp, oldProp, prop) {\n var _this = this;\n var li;\n this.updateListValues = function () {\n if (prop === 'text') {\n li = _this.getElementByText(newProp);\n if (!_this.checkValidLi(li)) {\n _this.setOldText(oldProp);\n }\n }\n else if (prop === 'value') {\n var fields = (_this.fields.value) ? _this.fields.value : '';\n var value = _this.allowObjectBinding && !isNullOrUndefined(newProp) ? getValue(fields, newProp) : newProp;\n li = _this.getElementByValue(newProp);\n if (!_this.checkValidLi(li)) {\n _this.setOldValue(oldProp);\n }\n }\n else if (prop === 'index') {\n li = _this.liCollections[newProp];\n if (!_this.checkValidLi(li)) {\n _this.index = oldProp;\n }\n }\n };\n };\n DropDownList.prototype.updatePopupState = function () {\n if (this.beforePopupOpen) {\n this.beforePopupOpen = false;\n this.showPopup();\n }\n };\n DropDownList.prototype.setReadOnly = function () {\n if (this.readonly) {\n addClass([this.inputWrapper.container], ['e-readonly']);\n }\n else {\n removeClass([this.inputWrapper.container], ['e-readonly']);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n DropDownList.prototype.setInputValue = function (newProp, oldProp) {\n };\n DropDownList.prototype.setCssClass = function (newClass, oldClass) {\n if (!isNullOrUndefined(oldClass)) {\n oldClass = (oldClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newClass)) {\n newClass = (newClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newClass, [this.inputWrapper.container], oldClass);\n if (this.popupObj) {\n Input.setCssClass(newClass, [this.popupObj.element], oldClass);\n }\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n DropDownList.prototype.getModuleName = function () {\n return 'dropdownlist';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Opens the popup that displays the list of items.\n *\n * @returns {void}\n */\n DropDownList.prototype.showPopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n if (!this.enabled) {\n return;\n }\n this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;\n if (this.isReact && this.getModuleName() === 'combobox' && this.itemTemplate && this.isCustomFilter && this.isAddNewItemTemplate) {\n this.renderList();\n this.isAddNewItemTemplate = false;\n }\n if (this.isFiltering() && this.dataSource instanceof DataManager && (this.actionData.list !== this.actionCompleteData.list) &&\n this.actionData.list && this.actionData.ulElement) {\n this.actionCompleteData = this.actionData;\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list, null, true);\n }\n if (this.beforePopupOpen) {\n this.refreshPopup();\n return;\n }\n this.beforePopupOpen = true;\n if (this.isFiltering() && !this.isActive && this.actionCompleteData.list && this.actionCompleteData.list[0]) {\n this.isActive = true;\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list, null, true);\n }\n else if (isNullOrUndefined(this.list) || !isUndefined(this.list) && (this.list.classList.contains(dropDownBaseClasses.noData) ||\n this.list.querySelectorAll('.' + dropDownBaseClasses.li).length <= 0)) {\n if (this.isReact && this.isFiltering() && this.itemTemplate != null) {\n this.isSecondClick = false;\n }\n this.renderList(e);\n }\n if (this.enableVirtualization && this.listData && this.listData.length) {\n if (!isNullOrUndefined(this.value) && (this.getModuleName() === 'dropdownlist' || this.getModuleName() === 'combobox')) {\n this.removeHover();\n }\n if (!this.beforePopupOpen) {\n this.notify(\"setCurrentViewDataAsync\", {\n module: \"VirtualScroll\",\n });\n }\n }\n if (this.beforePopupOpen) {\n this.invokeRenderPopup(e);\n }\n if (this.enableVirtualization && !this.allowFiltering && this.selectedValueInfo != null && this.selectedValueInfo.startIndex > 0 && this.value != null) {\n this.notify(\"dataProcessAsync\", {\n module: \"VirtualScroll\",\n isOpen: true,\n });\n }\n };\n DropDownList.prototype.invokeRenderPopup = function (e) {\n if (Browser.isDevice && this.isFilterLayout()) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_2 = this;\n window.onpopstate = function () {\n proxy_2.hidePopup();\n };\n history.pushState({}, '');\n }\n if (!isNullOrUndefined(this.list) && (!isNullOrUndefined(this.list.children[0]) ||\n this.list.classList.contains(dropDownBaseClasses.noData))) {\n this.renderPopup(e);\n }\n };\n DropDownList.prototype.renderHightSearch = function () {\n // update high light search\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Hides the popup if it is in an open state.\n *\n * @returns {void}\n */\n DropDownList.prototype.hidePopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n if (this.isEscapeKey && this.getModuleName() === 'dropdownlist') {\n if (!isNullOrUndefined(this.inputElement)) {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.isEscapeKey = false;\n if (!isNullOrUndefined(this.index)) {\n var value = this.allowObjectBinding ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n var element = this.findListElement(this.ulElement, 'li', 'data-value', value);\n this.selectedLI = this.liCollections[this.index] || element;\n if (this.selectedLI) {\n this.updateSelectedItem(this.selectedLI, null, true);\n if (this.valueTemplate && this.itemData !== null) {\n this.setValueTemplate();\n }\n }\n }\n else {\n this.resetSelection();\n }\n }\n this.isVirtualTrackHeight = false;\n this.customFilterQuery = null;\n this.closePopup(0, e);\n var dataItem = this.getItemData();\n var isSelectVal = !isNullOrUndefined(this.selectedLI);\n if (isSelectVal && this.enableVirtualization && this.selectedLI.classList) {\n isSelectVal = this.selectedLI.classList.contains('e-active');\n }\n if (this.inputElement && this.inputElement.value.trim() === '' && !this.isInteracted && (this.isSelectCustom ||\n isSelectVal && this.inputElement.value !== dataItem.text)) {\n this.isSelectCustom = false;\n this.clearAll(e);\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Sets the focus on the component for interaction.\n *\n * @returns {void}\n */\n DropDownList.prototype.focusIn = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.targetElement().classList.contains(dropDownListClasses.disable)) {\n return;\n }\n var isFocused = false;\n if (this.preventFocus && Browser.isDevice) {\n this.inputWrapper.container.tabIndex = 1;\n this.inputWrapper.container.focus();\n this.preventFocus = false;\n isFocused = true;\n }\n if (!isFocused) {\n this.targetElement().focus();\n }\n addClass([this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n this.onFocus(e);\n if (this.floatLabelType !== 'Never') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n };\n /**\n * Moves the focus from the component if the component is already focused.\n *\n * @returns {void}\n */\n DropDownList.prototype.focusOut = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n if (!this.enabled) {\n return;\n }\n if (!this.enableVirtualization && (this.getModuleName() === 'combobox' || this.getModuleName() === 'autocomplete')) {\n this.isTyped = true;\n }\n this.hidePopup(e);\n if (this.targetElement()) {\n this.targetElement().blur();\n }\n removeClass([this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n if (this.floatLabelType !== 'Never') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n };\n /**\n * Method to disable specific item in the popup.\n *\n * @param {string | number | object | HTMLLIElement} item - Specifies the item to be disabled.\n * @returns {void}\n\n */\n DropDownList.prototype.disableItem = function (item) {\n if (this.fields.disabled) {\n if (!this.list) {\n this.renderList();\n }\n var itemIndex = -1;\n if (this.liCollections && this.liCollections.length > 0 && this.listData && this.fields.disabled) {\n if (typeof (item) === 'string') {\n itemIndex = this.getIndexByValue(item);\n }\n else if (typeof item === 'object') {\n if (item instanceof HTMLLIElement) {\n for (var index = 0; index < this.liCollections.length; index++) {\n if (this.liCollections[index] === item) {\n itemIndex = this.getIndexByValue(item.getAttribute('data-value'));\n break;\n }\n }\n }\n else {\n var value = JSON.parse(JSON.stringify(item))[this.fields.value];\n for (var index = 0; index < this.listData.length; index++) {\n if (JSON.parse(JSON.stringify(this.listData[index]))[this.fields.value] === value) {\n itemIndex = this.getIndexByValue(value);\n break;\n }\n }\n }\n }\n else {\n itemIndex = item;\n }\n var isValidIndex = itemIndex < this.liCollections.length && itemIndex > -1;\n if (isValidIndex && !(JSON.parse(JSON.stringify(this.listData[itemIndex]))[this.fields.disabled])) {\n var li = this.liCollections[itemIndex];\n if (li) {\n this.disableListItem(li);\n var parsedData = JSON.parse(JSON.stringify(this.listData[itemIndex]));\n parsedData[this.fields.disabled] = true;\n this.listData[itemIndex] = parsedData;\n this.dataSource = this.listData;\n if (li.classList.contains(dropDownListClasses.focus)) {\n this.removeFocus();\n }\n if (li.classList.contains(dropDownListClasses.selected)) {\n this.clear();\n }\n }\n }\n }\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n DropDownList.prototype.destroy = function () {\n this.isActive = false;\n if (this.showClearButton) {\n this.clearButton = document.getElementsByClassName('e-clear-icon')[0];\n }\n resetIncrementalSearchValues(this.element.id);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n this.hidePopup();\n if (this.popupObj) {\n this.popupObj.hide();\n }\n this.unWireEvent();\n if (this.list) {\n this.unWireListEvents();\n }\n if (this.element && !this.element.classList.contains('e-' + this.getModuleName())) {\n return;\n }\n if (this.inputElement) {\n var attrArray = ['readonly', 'aria-disabled', 'placeholder', 'aria-labelledby',\n 'aria-expanded', 'autocomplete', 'aria-readonly', 'autocapitalize',\n 'spellcheck', 'aria-autocomplete', 'aria-live', 'aria-describedby', 'aria-label'];\n for (var i = 0; i < attrArray.length; i++) {\n this.inputElement.removeAttribute(attrArray[i]);\n }\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n this.inputElement.classList.remove('e-input');\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.element.style.display = 'block';\n if (this.inputWrapper.container && this.inputWrapper.container.parentElement) {\n if (this.inputWrapper.container.parentElement.tagName === this.getNgDirective()) {\n detach(this.inputWrapper.container);\n }\n else {\n this.inputWrapper.container.parentElement.insertBefore(this.element, this.inputWrapper.container);\n detach(this.inputWrapper.container);\n }\n }\n delete this.hiddenElement;\n this.filterInput = null;\n this.keyboardModule = null;\n this.ulElement = null;\n this.list = null;\n this.clearIconElement = null;\n this.popupObj = null;\n this.popupContentElement = null;\n this.rippleFun = null;\n this.selectedLI = null;\n this.liCollections = null;\n this.item = null;\n this.footer = null;\n this.header = null;\n this.previousSelectedLI = null;\n this.valueTempElement = null;\n this.actionData.ulElement = null;\n if (this.inputElement && !isNullOrUndefined(this.inputElement.onchange)) {\n this.inputElement.onchange = null;\n }\n if (this.inputElement && !isNullOrUndefined(this.inputElement.onselect)) {\n this.inputElement.onselect = null;\n }\n Input.destroy({\n element: this.inputElement,\n floatLabelType: this.floatLabelType,\n properties: this.properties,\n buttons: this.inputWrapper.container.querySelectorAll('.e-input-group-icon')[0],\n }, this.clearButton);\n this.clearButton = null;\n this.inputElement = null;\n this.inputWrapper = null;\n _super.prototype.destroy.call(this);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n */\n DropDownList.prototype.getItems = function () {\n if (!this.list) {\n if (this.dataSource instanceof DataManager) {\n this.initialRemoteRender = true;\n }\n this.renderList();\n }\n return this.ulElement ? _super.prototype.getItems.call(this) : [];\n };\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n */\n DropDownList.prototype.getDataByValue = function (value) {\n return _super.prototype.getDataByValue.call(this, value);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Allows you to clear the selected values from the component.\n *\n * @returns {void}\n */\n DropDownList.prototype.clear = function () {\n this.value = null;\n };\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"cssClass\", void 0);\n __decorate([\n Property('100%')\n ], DropDownList.prototype, \"width\", void 0);\n __decorate([\n Property(true)\n ], DropDownList.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property('300px')\n ], DropDownList.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], DropDownList.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"placeholder\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property({})\n ], DropDownList.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"readonly\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"allowObjectBinding\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"index\", void 0);\n __decorate([\n Property('Never')\n ], DropDownList.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"showClearButton\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"focus\", void 0);\n DropDownList = __decorate([\n NotifyPropertyChanges\n ], DropDownList);\n return DropDownList;\n}(DropDownBase));\nexport { DropDownList };\n","import { createElement, remove } from '@syncfusion/ej2-base';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\n/**\n * `PagerDropDown` module handles selected pageSize from DropDownList.\n */\nvar PagerDropDown = /** @class */ (function () {\n /**\n * Constructor for pager module\n *\n * @param {Pager} pagerModule - specifies the pagermodule\n * @hidden\n */\n function PagerDropDown(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n * @hidden\n */\n PagerDropDown.prototype.getModuleName = function () {\n return 'pagerdropdown';\n };\n /**\n * The function is used to render pager dropdown\n *\n * @returns {void}\n * @hidden\n */\n PagerDropDown.prototype.render = function () {\n var pagerObj = this.pagerModule;\n this.pagerDropDownDiv = createElement('div', { className: 'e-pagesizes' });\n var dropDownDiv = createElement('div', { className: 'e-pagerdropdown' });\n var defaultTextDiv = createElement('div', { className: 'e-pagerconstant' });\n var input = createElement('input', { attrs: { type: 'text', tabindex: '-1' } });\n this.pagerCons = createElement('span', {\n className: 'e-constant', innerHTML: this.pagerModule.getLocalizedLabel('pagerDropDown')\n });\n dropDownDiv.appendChild(input);\n defaultTextDiv.appendChild(this.pagerCons);\n this.pagerDropDownDiv.appendChild(dropDownDiv);\n this.pagerDropDownDiv.appendChild(defaultTextDiv);\n this.pagerModule.element.appendChild(this.pagerDropDownDiv);\n var pageSizesModule = this.pagerModule.pageSizes;\n var pageSizesArray = (pageSizesModule.length ? this.convertValue(pageSizesModule) :\n [this.pagerModule.getLocalizedLabel('All'), '5', '10', '12', '20']);\n var defaultValue = this.pagerModule.pageSize;\n this.dropDownListObject = new DropDownList({\n dataSource: pageSizesArray,\n value: defaultValue.toString(),\n change: this.onChange.bind(this),\n placeholder: this.pagerModule.getLocalizedLabel('pagerDropDown'),\n cssClass: this.pagerModule.cssClass ? 'e-alldrop' + ' ' + this.pagerModule.cssClass : 'e-alldrop'\n });\n this.dropDownListObject.appendTo(input);\n if (pageSizesModule.length) {\n this.dropDownListObject.element.value = this.pagerModule.pageSize.toString();\n }\n pagerObj.pageSize = defaultValue;\n pagerObj.dataBind();\n pagerObj.trigger('dropDownChanged', { pageSize: defaultValue });\n this.addEventListener();\n };\n /**\n * For internal use only - Get the pagesize.\n *\n * @param {ChangeEventArgs} e - specifies the changeeventargs\n * @returns {void}\n * @private\n * @hidden\n */\n PagerDropDown.prototype.onChange = function (e) {\n if (this.dropDownListObject.value === this.pagerModule.getLocalizedLabel('All')) {\n this.pagerModule.pageSize = this.pagerModule.totalRecordsCount;\n this.pagerModule.isAllPage = true;\n this.refresh();\n e.value = this.pagerModule.pageSize;\n if (document.getElementsByClassName('e-popup-open e-alldrop').length) {\n document.getElementsByClassName('e-popup-open e-alldrop')[0].style.display = 'none';\n }\n }\n else {\n this.pagerModule.pageSize = parseInt(this.dropDownListObject.value, 10);\n this.pagerModule.isAllPage = false;\n if (this.pagerCons.innerHTML !== this.pagerModule.getLocalizedLabel('pagerDropDown')) {\n this.refresh();\n }\n }\n this.pagerModule.dataBind();\n if (!this.pagerModule.isCancel) {\n this.pagerModule.trigger('dropDownChanged', {\n pageSize: this.pagerModule.isAllPage ||\n (this.pagerModule.isAllPage === undefined && this.dropDownListObject.value === this.pagerModule.getLocalizedLabel('All')) ?\n this.pagerModule.totalRecordsCount : parseInt(this.dropDownListObject.value, 10)\n });\n }\n };\n PagerDropDown.prototype.refresh = function () {\n if (this.pagerCons) {\n if (this.isPageSizeAll(this.pagerModule.pageSize)) {\n this.pagerCons.innerHTML = this.pagerModule.getLocalizedLabel('pagerAllDropDown');\n this.pagerCons.parentElement.classList.add('e-page-all');\n }\n else {\n this.pagerCons.innerHTML = this.pagerModule.getLocalizedLabel('pagerDropDown');\n this.pagerCons.parentElement.classList.remove('e-page-all');\n }\n this.pagerDropDownDiv.classList.remove('e-hide');\n }\n };\n PagerDropDown.prototype.beforeValueChange = function (prop) {\n if (typeof prop.newProp.value === 'number') {\n var val = prop.newProp.value.toString();\n prop.newProp.value = val;\n }\n };\n PagerDropDown.prototype.convertValue = function (pageSizeValue) {\n var item = pageSizeValue;\n for (var i = 0; i < item.length; i++) {\n item[parseInt(i.toString(), 10)] = parseInt(item[parseInt(i.toString(), 10)], 10) ?\n item[parseInt(i.toString(), 10)].toString() : (this.pagerModule.getLocalizedLabel(item[parseInt(i.toString(), 10)]) !== '')\n ? this.pagerModule.getLocalizedLabel(item[parseInt(i.toString(), 10)]) : item[parseInt(i.toString(), 10)];\n }\n return item;\n };\n PagerDropDown.prototype.isPageSizeAll = function (value) {\n var pageSizeNum = typeof (value) === 'string' && value !== this.pagerModule.getLocalizedLabel('All') ?\n parseInt(value, 10) : value;\n if (pageSizeNum === this.pagerModule.totalRecordsCount || value === this.pagerModule.getLocalizedLabel('All')) {\n return true;\n }\n else {\n return false;\n }\n };\n PagerDropDown.prototype.setDropDownValue = function (prop, value) {\n if (this.dropDownListObject) {\n var isbeforeAll = this.pagerModule.isAllPage;\n this.pagerModule.isAllPage = this.isPageSizeAll(value);\n this.pagerModule.checkAll = (isbeforeAll && this.pagerModule.isAllPage) ? true : false;\n this.dropDownListObject[\"\" + prop] = this.pagerModule.isAllPage ? this.pagerModule.getLocalizedLabel('All') : value;\n }\n };\n PagerDropDown.prototype.addEventListener = function () {\n this.dropDownListObject.on('beforeValueChange', this.beforeValueChange, this);\n };\n PagerDropDown.prototype.removeEventListener = function () {\n this.dropDownListObject.off('beforeValueChange', this.beforeValueChange);\n };\n /**\n * To destroy the Pagerdropdown\n *\n * @param {string} args - specifies the arguments\n * @param {string} args.requestType - specfies the request type\n * @returns {void}\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n PagerDropDown.prototype.destroy = function (args) {\n if (this.dropDownListObject && !this.dropDownListObject.isDestroyed) {\n this.removeEventListener();\n this.dropDownListObject.destroy();\n remove(this.pagerDropDownDiv);\n }\n };\n return PagerDropDown;\n}());\nexport { PagerDropDown };\n","import { createElement, remove, isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * `ExternalMessage` module is used to display user provided message.\n */\nvar ExternalMessage = /** @class */ (function () {\n /**\n * Constructor for externalMessage module\n *\n * @param {Pager} pagerModule - specifies the pagermodule\n * @hidden\n */\n function ExternalMessage(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n ExternalMessage.prototype.getModuleName = function () {\n return 'externalMessage';\n };\n /**\n * The function is used to render pager externalMessage\n *\n * @returns {void}\n * @hidden\n */\n ExternalMessage.prototype.render = function () {\n this.element = createElement('div', { className: 'e-pagerexternalmsg', attrs: { 'aria-label': this.pagerModule.getLocalizedLabel('ExternalMsg') } });\n this.pagerModule.element.appendChild(this.element);\n this.refresh();\n };\n /**\n * Refreshes the external message of Pager.\n *\n * @returns {void}\n */\n ExternalMessage.prototype.refresh = function () {\n if (this.pagerModule.externalMessage && this.pagerModule.externalMessage.toString().length) {\n this.showMessage();\n this.element.innerHTML = this.pagerModule.externalMessage;\n }\n else {\n this.hideMessage();\n }\n };\n /**\n * Hides the external message of Pager.\n *\n * @returns {void}\n */\n ExternalMessage.prototype.hideMessage = function () {\n if (!isNullOrUndefined(this.element)) {\n this.element.style.display = 'none';\n }\n };\n /**\n * Shows the external message of the Pager.\n *\n * @returns {void}s\n */\n ExternalMessage.prototype.showMessage = function () {\n this.element.style.display = '';\n };\n /**\n * To destroy the PagerMessage\n *\n * @function destroy\n * @returns {void}\n * @hidden\n */\n ExternalMessage.prototype.destroy = function () {\n if (this.element && this.element.parentElement) {\n remove(this.element);\n }\n };\n return ExternalMessage;\n}());\nexport { ExternalMessage };\n","import { extend } from '@syncfusion/ej2-base';\nimport { remove, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Pager } from '../../pager/pager';\nimport { PagerDropDown } from '../../pager/pager-dropdown';\nimport { ExternalMessage } from '../../pager/external-message';\nimport { extend as gridExtend, getActualProperties, isActionPrevent, addRemoveEventListener, appendChildren } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * The `Page` module is used to render pager and handle paging action.\n */\nvar Page = /** @class */ (function () {\n /**\n * Constructor for the Grid paging module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {PageSettingsModel} pageSettings - specifies the PageSettingsModel\n * @hidden\n */\n function Page(parent, pageSettings) {\n this.isInitialRender = true;\n /** @hidden */\n this.isCancel = false;\n Pager.Inject(ExternalMessage, PagerDropDown);\n this.parent = parent;\n this.pageSettings = pageSettings;\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Page.prototype.getModuleName = function () {\n return 'pager';\n };\n /**\n * The function used to render pager from grid pageSettings\n *\n * @returns {void}\n * @hidden\n */\n Page.prototype.render = function () {\n var gObj = this.parent;\n this.pagerDestroy();\n if (!isNullOrUndefined(this.parent.pagerTemplate)) {\n this.pageSettings.template = this.parent.pagerTemplate;\n this.parent.pageTemplateChange = true;\n }\n this.element = this.parent.createElement('div', { className: 'e-gridpager' });\n var pagerObj = gridExtend({}, extend({}, getActualProperties(this.pageSettings)), {\n click: this.clickHandler.bind(this),\n dropDownChanged: this.onSelect.bind(this),\n enableRtl: gObj.enableRtl, locale: gObj.locale,\n created: this.addAriaAttr.bind(this)\n }, ['parentObj', 'propName']);\n pagerObj.cssClass = this.parent.cssClass ? this.parent.cssClass : '';\n this.pagerObj = new Pager(pagerObj, undefined, this.parent);\n this.pagerObj.root = gObj.root ? gObj.root : gObj;\n this.pagerObj.hasParent = true;\n this.pagerObj.on(events.pagerRefresh, this.renderReactPagerTemplate, this);\n this.pagerObj.allowServerDataBinding = false;\n };\n Page.prototype.onSelect = function (e) {\n this.pageSettings.pageSize = e.pageSize;\n if (!this.isInitialLoad) {\n this.pageSettings.currentPage = 1;\n }\n };\n Page.prototype.addAriaAttr = function () {\n if (!(this.pageSettings.template)) {\n var numericContainerNew = this.parent.createElement('div', { className: 'e-numericcontainer' });\n var pagerContainer = this.element.querySelector('.e-pagercontainer');\n var frag = document.createDocumentFragment();\n var numericContainer = this.element.querySelector('.e-numericcontainer');\n var links = numericContainer.querySelectorAll('a');\n for (var i = 0; i < links.length; i++) {\n if (this.parent.getContentTable()) {\n links[parseInt(i.toString(), 10)].setAttribute('aria-owns', this.parent.getContentTable().id + ' ' + (i + 1));\n }\n else {\n links[parseInt(i.toString(), 10)].setAttribute('aria-owns', this.parent.element.getAttribute('id') + '_content_table' + ' ' + (i + 1));\n }\n var numericContainerDiv = this.parent.createElement('div');\n numericContainerDiv.appendChild(links[parseInt(i.toString(), 10)]);\n frag.appendChild(numericContainerDiv);\n }\n numericContainerNew.appendChild(frag);\n pagerContainer.replaceChild(numericContainerNew, numericContainer);\n var classList = ['.e-mfirst', '.e-mprev', '.e-first', '.e-prev', '.e-next', '.e-last', '.e-mnext', '.e-mlast'];\n for (var j = 0; j < classList.length; j++) {\n var element = this.element.querySelector(classList[parseInt(j.toString(), 10)]);\n if (this.parent.getContentTable()) {\n element.setAttribute('aria-owns', this.parent.getContentTable().id + classList[parseInt(j.toString(), 10)].replace('.e-', ' '));\n }\n }\n }\n };\n Page.prototype.dataReady = function (e) {\n this.updateModel(e);\n };\n /**\n * Refreshes the page count, pager information, and external message.\n *\n * @returns {void}\n */\n Page.prototype.refresh = function () {\n this.pagerObj.refresh();\n };\n /**\n * Navigates to the target page according to the given number.\n *\n * @param {number} pageNo - Defines the page number to navigate.\n * @returns {void}\n */\n Page.prototype.goToPage = function (pageNo) {\n this.pagerObj.goToPage(pageNo);\n };\n /**\n * @param {number} pageSize - specifies the page size\n * @returns {void}\n * @hidden\n */\n Page.prototype.setPageSize = function (pageSize) {\n this.pagerObj.setPageSize(pageSize);\n };\n /**\n * The function used to update pageSettings model\n *\n * @param {NotifyArgs} e - specfies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Page.prototype.updateModel = function (e) {\n this.parent.pageSettings.totalRecordsCount = e.count;\n var isAddAction = (e.action === 'add' && e.requestType === 'save') || (e.requestType === 'batchsave');\n if (this.pagerObj.isAllPage && !isAddAction) {\n this.parent.pageSettings.pageSize = this.parent.pageSettings.totalRecordsCount;\n }\n if (isAddAction) {\n if (this.pagerObj.isAllPage && (e.count === this.pageSettings.pageSize)) {\n this.pagerObj.setProperties({ pageSize: e.count }, true);\n }\n }\n this.parent.dataBind();\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Page.prototype.onActionComplete = function (e) {\n this.parent.trigger(events.actionComplete, extend(e, {\n currentPage: this.parent.pageSettings.currentPage, requestType: 'paging',\n type: events.actionComplete\n }));\n };\n /**\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Page.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n var newProp = e.properties;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n this.pagerObj[\"\" + prop] = newProp[\"\" + prop];\n }\n this.pagerObj.dataBind();\n };\n Page.prototype.clickHandler = function (e) {\n var gObj = this.parent;\n if (this.isForceCancel || isActionPrevent(gObj) && !gObj.prevPageMoving && !this.isCancel) {\n if (!this.isForceCancel) {\n if (!isNullOrUndefined(e.newProp) && !isNullOrUndefined(e.newProp.pageSize)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.setPageSize, arg1: e.newProp.pageSize });\n this.pagerObj.setProperties({ pageSize: e.oldProp.pageSize }, true);\n this.parent.setProperties({ pageSettings: { pageSize: e.oldProp.pageSize } }, true);\n this.pagerObj.setProperties({\n currentPage: gObj.pageSettings.currentPage === this.pagerObj.currentPage ?\n this.pagerObj.previousPageNo : gObj.pageSettings.currentPage\n }, true);\n }\n else if (e.currentPage) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.goToPage, arg1: e.currentPage });\n this.pagerObj.currentPage = gObj.pageSettings.currentPage === this.pagerObj.currentPage ?\n this.pagerObj.previousPageNo : gObj.pageSettings.currentPage;\n }\n this.isForceCancel = true;\n this.pagerObj.dataBind();\n }\n else {\n this.isForceCancel = false;\n }\n e.cancel = true;\n return;\n }\n gObj.pageSettings.pageSize = this.pagerObj.pageSize;\n gObj.prevPageMoving = false;\n var prevPage = this.pageSettings.currentPage;\n var args = {\n cancel: false, requestType: 'paging', previousPage: prevPage,\n currentPage: e.currentPage, pageSize: gObj.pageSettings.pageSize, type: events.actionBegin\n };\n if (!this.isCancel) {\n this.pageSettings.currentPage = e.currentPage;\n this.parent.notify(events.modelChanged, args);\n gObj.pageRequireRefresh = false;\n }\n if (args.cancel) {\n e.cancel = true;\n this.parent.setProperties({ pageSettings: { currentPage: prevPage } }, true);\n this.pagerObj.setProperties({ currentPage: prevPage }, true);\n this.isCancel = true;\n return;\n }\n this.isCancel = false;\n this.parent.requestTypeAction = 'paging';\n };\n Page.prototype.keyPressHandler = function (e) {\n if (e.action in keyActions) {\n e.preventDefault();\n this.element.querySelector(keyActions[e.action]).click();\n }\n };\n /**\n * Defines the text of the external message.\n *\n * @param {string} message - Defines the message to update.\n * @returns {void}\n */\n Page.prototype.updateExternalMessage = function (message) {\n if (!this.pagerObj.enableExternalMessage) {\n this.pagerObj.enableExternalMessage = true;\n this.pagerObj.dataBind();\n }\n this.pagerObj.externalMessage = message;\n this.pagerObj.dataBind();\n };\n Page.prototype.appendToElement = function () {\n this.isInitialLoad = true;\n this.parent.element.appendChild(this.element);\n this.parent.setGridPager(this.element);\n this.pagerObj.isReact = this.parent.isReact;\n this.pagerObj.isVue = this.parent.isVue || (this.parent.parentDetails && this.parent.parentDetails.parentInstObj\n && this.parent.parentDetails.parentInstObj.isVue);\n this.pagerObj.appendTo(this.element);\n this.isInitialLoad = false;\n };\n Page.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n this.appendToElement();\n if (this.isReactTemplate()) {\n this.pagerObj.updateTotalPages();\n this.created();\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Page.prototype.addEventListener = function () {\n this.handlers = {\n load: this.render,\n end: this.appendToElement,\n ready: this.dataReady,\n complete: this.onActionComplete,\n updateLayout: this.enableAfterRender,\n inboundChange: this.onPropertyChanged,\n keyPress: this.keyPressHandler,\n created: this.created\n };\n if (this.parent.isDestroyed) {\n return;\n }\n if (this.parent.isReact || this.parent.isVue) {\n this.parent.addEventListener(literals.create, this.handlers.created.bind(this));\n }\n this.evtHandlers = [{ event: events.initialLoad, handler: this.handlers.load },\n { event: events.initialEnd, handler: this.handlers.end },\n { event: events.dataReady, handler: this.handlers.ready },\n { event: events.pageComplete, handler: this.handlers.complete },\n { event: events.uiUpdate, handler: this.handlers.updateLayout },\n { event: events.inBoundModelChanged, handler: this.handlers.inboundChange },\n { event: events.keyPressed, handler: this.handlers.keyPress },\n { event: events.destroy, handler: this.destroy }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n Page.prototype.created = function () {\n if (this.isInitialRender && this.isReactTemplate()) {\n this.isInitialRender = false;\n this.renderReactPagerTemplate();\n }\n };\n Page.prototype.isReactTemplate = function () {\n return (this.parent.isReact || this.parent.isVue) && this.pagerObj.template && typeof (this.pagerObj.template) !== 'string';\n };\n Page.prototype.renderReactPagerTemplate = function () {\n if (!this.isInitialRender && this.isReactTemplate()) {\n var result = void 0;\n this.parent.destroyTemplate(['pagerTemplate']);\n this.element.classList.add('e-pagertemplate');\n this.pagerObj.compile(this.pagerObj.template);\n var page = this.parent.pageSettings;\n var data = {\n currentPage: page.currentPage, pageSize: page.pageSize, pageCount: page.pageCount,\n totalRecordsCount: page.totalRecordsCount, totalPages: this.pagerObj.totalPages\n };\n var tempId = this.parent.id + '_pagertemplate';\n if (this.parent.isReact) {\n this.pagerObj.templateFn(data, this.parent, 'pagerTemplate', tempId, null, null, this.pagerObj.element);\n this.parent.renderTemplates();\n }\n else {\n result = this.pagerObj.templateFn(data, this.parent, 'pagerTemplate');\n appendChildren(this.pagerObj.element, result);\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Page.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n if (this.parent.isReact || this.parent.isVue) {\n this.parent.removeEventListener(literals.create, this.handlers.created);\n }\n this.parent.off(events.pagerRefresh, this.renderReactPagerTemplate);\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n /**\n * To destroy the pager\n *\n * @returns {void}\n * @hidden\n */\n Page.prototype.destroy = function () {\n this.removeEventListener();\n if (this.isReactTemplate()) {\n this.parent.destroyTemplate(['pagerTemplate']);\n }\n this.pagerObj.destroy();\n };\n Page.prototype.pagerDestroy = function () {\n if (this.pagerObj && !this.pagerObj.isDestroyed) {\n this.pagerObj.destroy();\n remove(this.element);\n }\n };\n return Page;\n}());\nexport { Page };\n/**\n * @hidden\n */\nvar keyActions = {\n pageUp: '.e-prev',\n pageDown: '.e-next',\n ctrlAltPageDown: '.e-last',\n ctrlAltPageUp: '.e-first',\n altPageUp: '.e-pp',\n altPageDown: '.e-np'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined, getValue, closest } from '@syncfusion/ej2-base';\nimport { attributes } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { appendChildren, addStickyColumnPosition } from '../base/util';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport * as events from '../base/constant';\n/**\n * FilterCellRenderer class which responsible for building filter cell.\n *\n * @hidden\n */\nvar FilterCellRenderer = /** @class */ (function (_super) {\n __extends(FilterCellRenderer, _super);\n function FilterCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-filterbarcell', attrs: { role: 'columnheader' } });\n return _this;\n }\n /**\n * Function to return the wrapper for the TH content.\n *\n * @returns {string} returns the gui\n */\n FilterCellRenderer.prototype.getGui = function () {\n return this.parent.createElement('div');\n };\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell\n * @param {Object} data\n */\n /* tslint:disable-next-line:max-func-body-length */\n FilterCellRenderer.prototype.render = function (cell, data) {\n var tr = this.parent.element.querySelector('.e-filterbar');\n var node = this.element.cloneNode();\n var innerDIV = this.getGui();\n var input;\n var column = cell.column;\n tr.appendChild(node);\n node.setAttribute('e-mappinguid', column.uid);\n if (column.filterTemplate) {\n var fltrData = {};\n if (data) {\n fltrData[column.field] = data[column.field];\n }\n var col = 'column';\n fltrData[\"\" + col] = column;\n if (column.visible) {\n var isReactCompiler = this.parent.isReact && typeof (column.filterTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var tempID = this.parent.element.id + column.uid + 'filterTemplate';\n if (isReactCompiler || isReactChild) {\n column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID, null, null, node);\n this.parent.renderTemplates();\n }\n else {\n var element = column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID, null, null, null, this.parent.root);\n appendChildren(node, element);\n }\n }\n else {\n node.classList.add('e-hide');\n }\n }\n else {\n if (column.type !== 'checkbox') {\n if ((isNullOrUndefined(column.allowFiltering) || column.allowFiltering) && !isNullOrUndefined(column.filterBarTemplate)) {\n node.classList.add('e-fltrtemp');\n attributes(innerDIV, {\n 'class': 'e-fltrtempdiv'\n });\n if (isNullOrUndefined(column.filterBarTemplate.create)) {\n input = this.parent.createElement('input', {\n id: column.field + '_filterBarcell', className: 'e-filterUi_input e-filtertext e-fltrTemp',\n attrs: { type: 'search', title: column.headerText }\n });\n innerDIV.appendChild(input);\n }\n else {\n var args = { column: column, node: Element };\n var temp = column.filterBarTemplate.create;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n input = temp(args);\n if (typeof input === 'string') {\n var div = this.parent.createElement('div');\n div.innerHTML = input;\n input = div.firstChild;\n }\n attributes(innerDIV, {\n class: 'e-filterUi_input e-filtertext e-fltrTemp',\n title: column.headerText,\n id: column.field + '_filterBarcell'\n });\n innerDIV.appendChild(input);\n }\n }\n else {\n attributes(innerDIV, {\n 'class': 'e-filterdiv e-fltrinputdiv'\n });\n input = this.parent.createElement('input', {\n id: column.field + '_filterBarcell', className: 'e-filtertext',\n attrs: {\n type: 'search', title: column.headerText + cell.attributes.title,\n value: data[cell.column.field] ? data[cell.column.field] : ''\n }\n });\n innerDIV.appendChild(input);\n var args = {\n element: input, floatLabelType: 'Never',\n properties: {\n enableRtl: this.parent.enableRtl, showClearButton: true, cssClass: this.parent.cssClass\n }\n };\n Input.createInput(args, this.parent.createElement);\n }\n //TODO: apply intial filtering\n if (column.allowFiltering === false || column.field === '' || isNullOrUndefined(column.field)) {\n input.setAttribute('disabled', 'true');\n input.classList.add('e-disable');\n }\n var clearIconElem = innerDIV.querySelector('.e-clear-icon');\n if (clearIconElem) {\n clearIconElem.setAttribute('title', this.parent.localeObj.getConstant('ClearButton'));\n }\n if (!column.visible) {\n node.classList.add('e-hide');\n }\n this.appendHtml(node, innerDIV);\n // render's the dropdownlist component if showFilterBarOperator sets to true\n if (this.parent.filterSettings.showFilterBarOperator && this.parent.filterSettings.type === 'FilterBar' &&\n !this.parent.isPrinting && isNullOrUndefined(column.filterTemplate) && isNullOrUndefined(column.filterBarTemplate)) {\n this.operatorIconRender(innerDIV, column, cell);\n }\n if ((isNullOrUndefined(column.allowFiltering) || column.allowFiltering) && !isNullOrUndefined(column.filterBarTemplate)) {\n var templateWrite = column.filterBarTemplate.write;\n var args = { element: input, column: column };\n if (typeof templateWrite === 'string') {\n templateWrite = getValue(templateWrite, window);\n }\n templateWrite.call(this, args);\n }\n }\n else {\n if (!column.visible) {\n node.classList.add('e-hide');\n }\n }\n }\n if (this.parent.isFrozenGrid()) {\n addStickyColumnPosition(this.parent, column, node);\n }\n return node;\n };\n /**\n * Function to specifies how the result content to be placed in the cell.\n *\n * @param {Element} node - specifies the node\n * @param {string|Element} innerHtml - specifies the innerHTML\n * @returns {Element} retruns the element\n */\n FilterCellRenderer.prototype.appendHtml = function (node, innerHtml) {\n node.appendChild(innerHtml);\n return node;\n };\n FilterCellRenderer.prototype.operatorIconRender = function (innerDIV, column, cell) {\n var gObj = this.parent;\n var operators;\n var fbicon = this.parent.createElement('input', {\n className: ' e-filterbaroperator e-icons e-icon-filter',\n id: cell.column.uid\n });\n innerDIV.querySelector('span').appendChild(fbicon);\n if (column.filter && column.filter.operator) {\n operators = column.filter.operator;\n }\n else if (gObj.filterSettings.columns.length) {\n for (var i = 0, a = gObj.filterSettings.columns; i < a.length; i++) {\n var col = a[parseInt(i.toString(), 10)];\n if (col.field === column.field) {\n operators = col.operator;\n break;\n }\n else {\n operators = 'equal';\n }\n }\n }\n else {\n operators = 'equal';\n }\n if (!isNullOrUndefined(gObj.filterModule.operators[column.field])) {\n operators = gObj.filterModule.operators[column.field];\n }\n this.dropOptr = new DropDownList({\n fields: { text: 'text', value: 'value' },\n popupHeight: 'auto',\n value: operators,\n width: '0px',\n enabled: column.allowFiltering,\n popupWidth: 'auto',\n enableRtl: this.parent.enableRtl,\n change: this.internalEvent.bind(this),\n beforeOpen: function () {\n var operator = gObj.filterModule.customOperators;\n this.dataSource = operator[gObj.getColumnByUid(this.element.id).type + 'Operator'];\n for (var i = 0; i < this.dataSource.length; i++) {\n if (column.filter && column.filter.operator && isNullOrUndefined(gObj.filterModule.operators[column.field]) &&\n this.dataSource[parseInt(i.toString(), 10)].value === column.filter.operator) {\n this.value = column.filter.operator;\n }\n }\n },\n cssClass: this.parent.cssClass ? 'e-popup-flbar' + ' ' + this.parent.cssClass : 'e-popup-flbar'\n });\n this.dropOptr.appendTo(fbicon);\n var spanElmt = closest(this.dropOptr.element, 'span');\n spanElmt.classList.add('e-filterbardropdown');\n spanElmt.removeAttribute('tabindex');\n };\n FilterCellRenderer.prototype.internalEvent = function (e) {\n var gObj = this.parent;\n var col = gObj.getColumnByUid(e.element.getAttribute('id'));\n e.column = col;\n gObj.filterModule.operators[col.field] = e.value;\n gObj.notify(events.getFilterBarOperator, e);\n };\n return FilterCellRenderer;\n}(CellRenderer));\nexport { FilterCellRenderer };\n","import { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Query, DataManager } from '@syncfusion/ej2-data';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * `filter operators` render boolean column.\n *\n * @hidden\n */\nvar FlMenuOptrUI = /** @class */ (function () {\n function FlMenuOptrUI(parent, customFltrOperators, serviceLocator, filterSettings) {\n this.ddOpen = this.dropDownOpen.bind(this);\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.filterSettings = filterSettings;\n this.customFilterOperators = customFltrOperators;\n if (this.parent) {\n this.parent.on(events.filterMenuClose, this.destroyDropDownList, this);\n this.parent.on(events.destroy, this.destroyDropDownList, this);\n }\n }\n /**\n * @param {Element} dlgConetntEle - specifies the content element\n * @param {Element} target - specifies the target\n * @param {Column} column - specifies the column\n * @param {Dialog} dlgObj - specifies the dialog\n * @param {Object[]} operator - specifies the operator list\n * @returns {void}\n * @hidden\n */\n // eslint-disable-next-line max-len\n FlMenuOptrUI.prototype.renderOperatorUI = function (dlgConetntEle, target, column, dlgObj, operator) {\n this.dialogObj = dlgObj;\n var optr = column.type + 'Operator';\n this.optrData = this.customOptr = !isNullOrUndefined(operator) ? operator :\n (!isNullOrUndefined(this.parent.filterSettings.operators) && !isNullOrUndefined(this.parent.filterSettings.operators[\"\" + optr])) ?\n this.parent.filterSettings.operators[\"\" + optr] : this.customFilterOperators[\"\" + optr];\n var dropDatasource = this.customOptr;\n var selectedValue = this.dropSelectedVal(column, optr);\n var optrDiv = this.parent.createElement('div', { className: 'e-flm_optrdiv' });\n dlgConetntEle.appendChild(optrDiv);\n var optrInput = this.parent.createElement('input', { id: column.uid + '-floptr' });\n optrDiv.appendChild(optrInput);\n this.dropOptr = new DropDownList({\n dataSource: dropDatasource,\n fields: { text: 'text', value: 'value' },\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n enableRtl: this.parent.enableRtl,\n text: selectedValue,\n // eslint-disable-next-line @typescript-eslint/tslint/config\n change: function () {\n var valInput = document.querySelector('.e-flmenu-valuediv').querySelector('input');\n if (this.value === 'isempty' || this.value === 'isnotempty' ||\n this.value === 'isnotnull' || this.value === 'isnull') {\n if (!isNullOrUndefined(valInput['ej2_instances'])) {\n valInput['ej2_instances'][0]['enabled'] = false;\n }\n else {\n valInput.setAttribute('disabled', 'true');\n }\n }\n else if (!isNullOrUndefined(valInput.getAttribute('disabled'))) {\n if (!isNullOrUndefined(valInput['ej2_instances'])) {\n valInput['ej2_instances'][0]['enabled'] = true;\n }\n else {\n valInput.removeAttribute('disabled');\n }\n }\n }\n });\n this.dropOptr.addEventListener(literals['open'], this.ddOpen);\n this.dropOptr.appendTo('#' + column.uid + '-floptr');\n };\n FlMenuOptrUI.prototype.renderResponsiveDropDownList = function (args) {\n args.popup.element.style.width = '100%';\n };\n FlMenuOptrUI.prototype.dropDownOpen = function (args) {\n args.popup.element.style.zIndex = (this.dialogObj.zIndex + 1).toString();\n if (this.parent.enableAdaptiveUI) {\n this.renderResponsiveDropDownList(args);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n FlMenuOptrUI.prototype.dropSelectedVal = function (col, optr) {\n var selValue = '';\n var columns = this.parent.filterSettings.columns;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n if (col.field === column.field || (col.isForeignColumn() && col.foreignKeyValue === column.field)) {\n var selectedField = new DataManager(this.optrData).executeLocal(new Query().where('value', 'equal', column.operator));\n selValue = !isNullOrUndefined(selectedField[0]) ? selectedField[0].text : '';\n }\n }\n if (selValue === '') { // rewuired or not\n if (col.filter.operator) {\n var optrLen = Object.keys(this.optrData).length;\n for (var i = 0; i < optrLen; i++) {\n if (this.optrData[parseInt(i.toString(), 10)].value === col.filter.operator) {\n selValue = this.optrData[parseInt(i.toString(), 10)].text;\n }\n }\n }\n else {\n selValue = this.optrData[0].text;\n }\n }\n return selValue;\n };\n /**\n * @returns {string} returns the operator\n * @hidden\n */\n FlMenuOptrUI.prototype.getFlOperator = function () {\n return this.dropOptr.value;\n };\n FlMenuOptrUI.prototype.destroyDropDownList = function () {\n if (this.dropOptr.isDestroyed) {\n return;\n }\n this.dropOptr.removeEventListener(literals['open'], this.ddOpen);\n this.dropOptr.destroy();\n this.parent.off(events.filterMenuClose, this.destroyDropDownList);\n this.parent.off(events.destroy, this.destroyDropDownList);\n };\n return FlMenuOptrUI;\n}());\nexport { FlMenuOptrUI };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { EventHandler, Property, Event, addClass, Browser, removeClass, detach } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, NotifyPropertyChanges, getValue, setValue } from '@syncfusion/ej2-base';\nimport { DropDownList, dropDownListClasses } from '../drop-down-list/drop-down-list';\nimport { Search } from '../common/incremental-search';\nimport { createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DataManager, Predicate, Query } from '@syncfusion/ej2-data';\nvar SPINNER_CLASS = 'e-atc-spinner-icon';\ndropDownListClasses.root = 'e-combobox';\nvar inputObject = {\n container: null,\n buttons: []\n};\n/**\n * The ComboBox component allows the user to type a value or choose an option from the list of predefined options.\n * ```html\n * \n * ```\n * ```typescript\n * let games:ComboBox = new ComboBox();\n * games.appendTo(\"#list\");\n * ```\n */\nvar ComboBox = /** @class */ (function (_super) {\n __extends(ComboBox, _super);\n /**\n * *Constructor for creating the component\n *\n * @param {ComboBoxModel} options - Specifies the ComboBox model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function ComboBox(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n ComboBox.prototype.preRender = function () {\n _super.prototype.preRender.call(this);\n };\n ComboBox.prototype.getLocaleName = function () {\n return 'combo-box';\n };\n ComboBox.prototype.wireEvent = function () {\n if (this.getModuleName() === 'combobox') {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.preventBlur, this);\n EventHandler.add(this.inputWrapper.container, 'blur', this.onBlurHandler, this);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0])) {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.dropDownClick, this);\n }\n EventHandler.add(this.inputElement, 'focus', this.targetFocus, this);\n if (!this.readonly) {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n EventHandler.add(this.inputElement, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.inputElement, 'keydown', this.onFilterDown, this);\n EventHandler.add(this.inputElement, 'paste', this.pasteHandler, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n }\n this.bindCommonEvent();\n };\n ComboBox.prototype.preventBlur = function (e) {\n if ((!this.allowFiltering && document.activeElement !== this.inputElement &&\n !document.activeElement.classList.contains(dropDownListClasses.input) && Browser.isDevice || !Browser.isDevice)) {\n e.preventDefault();\n }\n };\n ComboBox.prototype.onBlurHandler = function (e) {\n var inputValue = this.inputElement && this.inputElement.value === '' ?\n null : this.inputElement && this.inputElement.value;\n if (!isNullOrUndefined(this.listData) && !isNullOrUndefined(inputValue) && inputValue !== this.text) {\n this.customValue(e);\n }\n _super.prototype.onBlurHandler.call(this, e);\n };\n ComboBox.prototype.targetElement = function () {\n return this.inputElement;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.setOldText = function (text) {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.customValue();\n this.removeSelection();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.setOldValue = function (value) {\n if (this.allowCustom) {\n this.valueMuteChange(this.value);\n }\n else {\n this.valueMuteChange(null);\n }\n this.removeSelection();\n this.setHiddenValue();\n };\n ComboBox.prototype.valueMuteChange = function (value) {\n value = this.allowObjectBinding && !isNullOrUndefined(value) ? getValue((this.fields.value) ? this.fields.value : '', value) : value;\n var inputValue = isNullOrUndefined(value) ? null : value.toString();\n Input.setValue(inputValue, this.inputElement, this.floatLabelType, this.showClearButton);\n var changeData = {};\n if (this.allowObjectBinding) {\n value = this.getDataByValue(value);\n if (isNullOrUndefined(value)) {\n var fields_1 = this.fields;\n var isvalidTextField_1 = false;\n var isValidValue_1 = false;\n if (this.allowObjectBinding) {\n var keys = Object.keys(this.value);\n keys.forEach(function (key) {\n if (key === fields_1.value) {\n isValidValue_1 = true;\n return;\n }\n });\n keys.forEach(function (key) {\n if (key === fields_1.text) {\n isvalidTextField_1 = true;\n return;\n }\n });\n }\n changeData = {\n text: isValidValue_1 ? isvalidTextField_1 ? getValue(fields_1.text, this.value) : getValue(fields_1.value, this.value) : null,\n value: isValidValue_1 ? this.value : null,\n index: null\n };\n }\n }\n if (this.allowObjectBinding) {\n this.setProperties(changeData, true);\n }\n else {\n this.setProperties({ value: value, text: value, index: null }, true);\n }\n this.activeIndex = this.index;\n var fields = this.fields;\n var dataItem = {};\n dataItem[fields.text] = isNullOrUndefined(value) ? null : value.toString();\n dataItem[fields.value] = isNullOrUndefined(value) ? null : value.toString();\n this.itemData = dataItem;\n this.item = null;\n if ((!this.allowObjectBinding && (this.previousValue !== this.value)) || (this.allowObjectBinding && this.previousValue && this.value && !this.isObjectInArray(this.previousValue, [this.value]))) {\n this.detachChangeEvent(null);\n }\n };\n ComboBox.prototype.updateValues = function () {\n if (this.fields.disabled) {\n if (this.value != null) {\n this.value = !this.isDisableItemValue(this.value) ? this.value : null;\n }\n if (this.text != null) {\n this.text = !this.isDisabledItemByIndex(this.getIndexByValue(this.getValueByText(this.text))) ? this.text : null;\n }\n if (this.index != null) {\n this.index = !this.isDisabledItemByIndex(this.index) ? this.index : null;\n this.activeIndex = this.index;\n }\n }\n if (!isNullOrUndefined(this.value)) {\n var currentValue = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n var li = this.getElementByValue(currentValue);\n var doesItemExist = !isNullOrUndefined(li) ? true : false;\n if (this.enableVirtualization && this.value) {\n var fields = (this.fields.value) ? this.fields.value : '';\n var currentValue_1 = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n if (this.dataSource instanceof DataManager) {\n var getItem = new DataManager(this.virtualGroupDataSource).executeLocal(new Query().where(new Predicate(fields, 'equal', currentValue_1)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n doesItemExist = true;\n var dataItem = this.getItemData();\n var value = this.allowObjectBinding ? this.getDataByValue(dataItem.value) : dataItem.value;\n if ((this.value === dataItem.value && this.text !== dataItem.text) || (this.value !== dataItem.value && this.text === dataItem.text)) {\n this.setProperties({ 'text': dataItem.text, 'value': value });\n }\n }\n }\n else {\n var getItem = new DataManager(this.dataSource).executeLocal(new Query().where(new Predicate(fields, 'equal', currentValue_1)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n doesItemExist = true;\n var dataItem = this.getItemData();\n var value = this.allowObjectBinding ? this.getDataByValue(dataItem.value) : dataItem.value;\n if ((this.value === dataItem.value && this.text !== dataItem.text) || (this.value !== dataItem.value && this.text === dataItem.text)) {\n this.setProperties({ 'text': dataItem.text, 'value': value });\n }\n }\n }\n }\n if (li) {\n this.setSelection(li, null);\n }\n else if ((!this.enableVirtualization && this.allowCustom) || (this.allowCustom && this.enableVirtualization && !doesItemExist)) {\n this.valueMuteChange(this.value);\n }\n else if (!this.enableVirtualization || (this.enableVirtualization && !doesItemExist)) {\n this.valueMuteChange(null);\n }\n }\n else if (this.text && isNullOrUndefined(this.value)) {\n var li = this.getElementByText(this.text);\n if (li) {\n this.setSelection(li, null);\n }\n else {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.customValue();\n }\n }\n else {\n this.setSelection(this.liCollections[this.activeIndex], null);\n }\n this.setHiddenValue();\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n ComboBox.prototype.updateIconState = function () {\n if (this.showClearButton) {\n if (this.inputElement && this.inputElement.value !== '' && !this.readonly) {\n removeClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n else {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n };\n ComboBox.prototype.getAriaAttributes = function () {\n var ariaAttributes = {\n 'role': 'combobox',\n 'aria-autocomplete': 'both',\n 'aria-labelledby': this.hiddenElement.id,\n 'aria-expanded': 'false',\n 'aria-readonly': this.readonly.toString(),\n 'autocomplete': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n };\n return ariaAttributes;\n };\n ComboBox.prototype.searchLists = function (e) {\n this.isTyped = true;\n if (this.isFiltering()) {\n _super.prototype.searchLists.call(this, e);\n if (this.ulElement && this.filterInput.value.trim() === '') {\n this.setHoverList(this.ulElement.querySelector('.' + dropDownListClasses.li));\n }\n }\n else {\n if (this.ulElement && this.inputElement.value === '' && this.preventAutoFill) {\n this.setHoverList(this.ulElement.querySelector('.' + dropDownListClasses.li));\n }\n this.incrementalSearch(e);\n }\n };\n ComboBox.prototype.getNgDirective = function () {\n return 'EJS-COMBOBOX';\n };\n ComboBox.prototype.setSearchBox = function () {\n this.filterInput = this.inputElement;\n var searchBoxContainer = (this.isFiltering() || (this.isReact && this.getModuleName() === 'combobox')) ? this.inputWrapper : inputObject;\n return searchBoxContainer;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n var _this = this;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n if (this.isSelectCustom) {\n this.removeSelection();\n }\n if (!this.preventAutoFill && this.getModuleName() === 'combobox' && this.isTyped && !this.enableVirtualization) {\n setTimeout(function () {\n _this.inlineSearch();\n });\n }\n };\n ComboBox.prototype.getFocusElement = function () {\n var dataItem = this.isSelectCustom ? { text: '' } : this.getItemData();\n var selected = !isNullOrUndefined(this.list) ? this.list.querySelector('.' + dropDownListClasses.selected) : this.list;\n var isSelected = dataItem.text && dataItem.text.toString() === this.inputElement.value && !isNullOrUndefined(selected);\n if (isSelected) {\n return selected;\n }\n if ((Browser.isDevice && !this.isDropDownClick || !Browser.isDevice) &&\n !isNullOrUndefined(this.liCollections) && this.liCollections.length > 0) {\n var inputValue = this.inputElement.value;\n var dataSource = this.sortedData;\n var type = this.typeOfData(dataSource).typeof;\n var activeItem = Search(inputValue, this.liCollections, this.filterType, true, dataSource, this.fields, type);\n if (this.enableVirtualization && inputValue !== '' && this.getModuleName() !== 'autocomplete' && this.isTyped && !this.allowFiltering) {\n var updatingincrementalindex = false;\n if ((this.viewPortInfo.endIndex >= this.incrementalEndIndex && this.incrementalEndIndex <= this.totalItemCount) || this.incrementalEndIndex == 0) {\n updatingincrementalindex = true;\n this.incrementalStartIndex = this.incrementalEndIndex;\n if (this.incrementalEndIndex == 0) {\n this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n }\n else {\n this.incrementalEndIndex = this.incrementalEndIndex + 100 > this.totalItemCount ? this.totalItemCount : this.incrementalEndIndex + 100;\n }\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n }\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n activeItem = Search(inputValue, this.incrementalLiCollections, this.filterType, true, dataSource, this.fields, type);\n while (isNullOrUndefined(activeItem.item) && this.incrementalEndIndex < this.totalItemCount) {\n this.incrementalStartIndex = this.incrementalEndIndex;\n this.incrementalEndIndex = this.incrementalEndIndex + 100 > this.totalItemCount ? this.totalItemCount : this.incrementalEndIndex + 100;\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n activeItem = Search(inputValue, this.incrementalLiCollections, this.filterType, true, dataSource, this.fields, type);\n if (!isNullOrUndefined(activeItem)) {\n activeItem.index = activeItem.index + this.incrementalStartIndex;\n break;\n }\n if (isNullOrUndefined(activeItem) && this.incrementalEndIndex >= this.totalItemCount) {\n this.incrementalStartIndex = 0;\n this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n break;\n }\n }\n if (activeItem.index) {\n if ((!(this.viewPortInfo.startIndex >= activeItem.index)) || (!(activeItem.index >= this.viewPortInfo.endIndex))) {\n var startIndex = activeItem.index - ((this.itemCount / 2) - 2) > 0 ? activeItem.index - ((this.itemCount / 2) - 2) : 0;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : this.viewPortInfo.startIndex + this.itemCount;\n if (startIndex != this.viewPortInfo.startIndex) {\n this.updateIncrementalView(startIndex, endIndex);\n }\n }\n }\n if (!isNullOrUndefined(activeItem.item)) {\n var index_1 = this.getIndexByValue(activeItem.item.getAttribute('data-value')) - this.skeletonCount;\n if (index_1 > this.itemCount / 2) {\n var startIndex = this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) < this.totalItemCount ? this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) : this.totalItemCount;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : this.viewPortInfo.startIndex + this.itemCount;\n this.updateIncrementalView(startIndex, endIndex);\n }\n activeItem.item = this.getElementByValue(activeItem.item.getAttribute('data-value'));\n }\n else {\n this.updateIncrementalView(0, this.itemCount);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n this.list.scrollTop = 0;\n }\n if (activeItem && activeItem.item) {\n activeItem.item = this.getElementByValue(activeItem.item.getAttribute('data-value'));\n }\n }\n var activeElement = activeItem.item;\n if (!isNullOrUndefined(activeElement)) {\n var count = this.getIndexByValue(activeElement.getAttribute('data-value')) - 1;\n var height = parseInt(getComputedStyle(this.liCollections[0], null).getPropertyValue('height'), 10);\n if (!isNaN(height) && this.getModuleName() !== 'autocomplete') {\n this.removeFocus();\n var fixedHead = this.fields.groupBy ? this.liCollections[0].offsetHeight : 0;\n if (!this.enableVirtualization) {\n this.list.scrollTop = count * height + fixedHead;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n if (this.enableVirtualization && !this.fields.groupBy) {\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? activeElement.offsetTop + (this.virtualListInfo.startIndex * activeElement.offsetHeight) : activeElement.offsetTop;\n this.list.scrollTop = selectedLiOffsetTop - (this.list.querySelectorAll('.e-virtual-list').length * activeElement.offsetHeight);\n }\n }\n addClass([activeElement], dropDownListClasses.focus);\n }\n }\n else {\n if (this.isSelectCustom && this.inputElement.value.trim() !== '') {\n this.removeFocus();\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n }\n }\n return activeElement;\n }\n else {\n return null;\n }\n };\n ComboBox.prototype.setValue = function (e) {\n if ((e && e.type === 'keydown' && e.action === 'enter') || (e && e.type === 'click')) {\n this.removeFillSelection();\n }\n if (this.autofill && this.getModuleName() === 'combobox' && e && e.type === 'keydown' && e.action !== 'enter') {\n this.preventAutoFill = false;\n this.inlineSearch(e);\n return false;\n }\n else {\n return _super.prototype.setValue.call(this, e);\n }\n };\n ComboBox.prototype.checkCustomValue = function () {\n var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n this.itemData = this.getDataByValue(value);\n var dataItem = this.getItemData();\n var setValue = this.allowObjectBinding ? this.itemData : dataItem.value;\n if (!(this.allowCustom && isNullOrUndefined(dataItem.value) && isNullOrUndefined(dataItem.text))) {\n this.setProperties({ 'value': setValue }, !this.allowCustom);\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = (this.getModuleName() === 'autocomplete') ? (this.inputWrapper.buttons[0] ||\n this.inputWrapper.clearButton ||\n Input.appendSpan('e-input-group-icon ' + SPINNER_CLASS, this.inputWrapper.container, this.createElement)) :\n (this.inputWrapper.buttons[0] || this.inputWrapper.clearButton);\n addClass([this.spinnerElement], dropDownListClasses.disableIcon);\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], dropDownListClasses.disableIcon);\n if (this.spinnerElement.classList.contains(SPINNER_CLASS)) {\n detach(this.spinnerElement);\n }\n else {\n this.spinnerElement.innerHTML = '';\n }\n this.spinnerElement = null;\n }\n };\n ComboBox.prototype.setAutoFill = function (activeElement, isHover) {\n if (!isHover) {\n this.setHoverList(activeElement);\n }\n if (this.autofill && !this.preventAutoFill) {\n var currentValue = this.getTextByValue(activeElement.getAttribute('data-value')).toString();\n var currentFillValue = this.getFormattedValue(activeElement.getAttribute('data-value'));\n if (this.getModuleName() === 'combobox') {\n if (!this.isSelected && ((!this.allowObjectBinding && this.previousValue !== currentFillValue)) || (this.allowObjectBinding && this.previousValue && currentFillValue && !this.isObjectInArray(this.previousValue, [this.getDataByValue(currentFillValue)]))) {\n this.updateSelectedItem(activeElement, null);\n this.isSelected = true;\n this.previousValue = this.allowObjectBinding ? this.getDataByValue(this.getFormattedValue(activeElement.getAttribute('data-value'))) : this.getFormattedValue(activeElement.getAttribute('data-value'));\n }\n else {\n this.updateSelectedItem(activeElement, null, true);\n }\n }\n if (!this.isAndroidAutoFill(currentValue)) {\n this.setAutoFillSelection(currentValue, isHover);\n }\n }\n };\n ComboBox.prototype.isAndroidAutoFill = function (value) {\n if (Browser.isAndroid) {\n var currentPoints = this.getSelectionPoints();\n var prevEnd = this.prevSelectPoints.end;\n var curEnd = currentPoints.end;\n var prevStart = this.prevSelectPoints.start;\n var curStart = currentPoints.start;\n if (prevEnd !== 0 && ((prevEnd === value.length && prevStart === value.length) ||\n (prevStart > curStart && prevEnd > curEnd) || (prevEnd === curEnd && prevStart === curStart))) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n };\n ComboBox.prototype.clearAll = function (e, property) {\n if (isNullOrUndefined(property) || (!isNullOrUndefined(property) && isNullOrUndefined(property.dataSource))) {\n _super.prototype.clearAll.call(this, e);\n }\n if (this.isFiltering() && !isNullOrUndefined(e) && e.target === this.inputWrapper.clearButton) {\n this.searchLists(e);\n }\n };\n ComboBox.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n ComboBox.prototype.inlineSearch = function (e) {\n var isKeyNavigate = (e && (e.action === 'down' || e.action === 'up' ||\n e.action === 'home' || e.action === 'end' || e.action === 'pageUp' || e.action === 'pageDown'));\n var activeElement = isKeyNavigate ? this.liCollections[this.activeIndex] : this.getFocusElement();\n if (!isNullOrUndefined(activeElement)) {\n if (!isKeyNavigate) {\n var value = this.getFormattedValue(activeElement.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n this.activeIndex = !isNullOrUndefined(this.activeIndex) ? this.activeIndex : null;\n }\n this.preventAutoFill = this.inputElement.value === '' ? false : this.preventAutoFill;\n this.setAutoFill(activeElement, isKeyNavigate);\n }\n else if (!isNullOrUndefined(this.inputElement) && this.inputElement.value === '') {\n this.activeIndex = null;\n if (!isNullOrUndefined(this.list)) {\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n var focusItem = this.list.querySelector('.' + dropDownListClasses.li);\n this.setHoverList(focusItem);\n }\n }\n else {\n this.activeIndex = null;\n this.removeSelection();\n if (this.liCollections && this.liCollections.length > 0 && !this.isCustomFilter) {\n this.removeFocus();\n }\n }\n };\n ComboBox.prototype.incrementalSearch = function (e) {\n this.showPopup(e);\n if (!isNullOrUndefined(this.listData)) {\n this.inlineSearch(e);\n e.preventDefault();\n }\n };\n ComboBox.prototype.setAutoFillSelection = function (currentValue, isKeyNavigate) {\n if (isKeyNavigate === void 0) { isKeyNavigate = false; }\n var selection = this.getSelectionPoints();\n var value = this.inputElement.value.substr(0, selection.start);\n if (value && (value.toLowerCase() === currentValue.substr(0, selection.start).toLowerCase())) {\n var inputValue = value + currentValue.substr(value.length, currentValue.length);\n Input.setValue(inputValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.inputElement.setSelectionRange(selection.start, this.inputElement.value.length);\n }\n else if (isKeyNavigate) {\n Input.setValue(currentValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.inputElement.setSelectionRange(0, this.inputElement.value.length);\n }\n };\n ComboBox.prototype.getValueByText = function (text) {\n return _super.prototype.getValueByText.call(this, text, true, this.ignoreAccent);\n };\n ComboBox.prototype.unWireEvent = function () {\n if (this.getModuleName() === 'combobox') {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.preventBlur);\n EventHandler.remove(this.inputWrapper.container, 'blur', this.onBlurHandler);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0])) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.dropDownClick);\n }\n if (this.inputElement) {\n EventHandler.remove(this.inputElement, 'focus', this.targetFocus);\n if (!this.readonly) {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n EventHandler.remove(this.inputElement, 'keyup', this.onFilterUp);\n EventHandler.remove(this.inputElement, 'keydown', this.onFilterDown);\n EventHandler.remove(this.inputElement, 'paste', this.pasteHandler);\n EventHandler.remove(window, 'resize', this.windowResize);\n }\n }\n this.unBindCommonEvent();\n };\n ComboBox.prototype.setSelection = function (li, e) {\n _super.prototype.setSelection.call(this, li, e);\n if (!isNullOrUndefined(li) && !this.autofill && !this.isDropDownClick) {\n this.removeFocus();\n }\n };\n ComboBox.prototype.selectCurrentItem = function (e) {\n var li;\n if (this.isPopupOpen) {\n if (this.isSelected) {\n li = this.list.querySelector('.' + dropDownListClasses.selected);\n }\n else {\n li = this.list.querySelector('.' + dropDownListClasses.focus);\n }\n if (this.isDisabledElement(li)) {\n return;\n }\n if (li) {\n this.setSelection(li, e);\n this.isTyped = false;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n }\n if (e.action === 'enter' && this.inputElement.value.trim() === '') {\n this.clearAll(e);\n }\n else if (this.isTyped && !this.isSelected && isNullOrUndefined(li)) {\n this.customValue(e);\n }\n this.hidePopup(e);\n };\n ComboBox.prototype.setHoverList = function (li) {\n this.removeSelection();\n if (this.isValidLI(li) && !li.classList.contains(dropDownListClasses.selected)) {\n this.removeFocus();\n li.classList.add(dropDownListClasses.focus);\n }\n };\n ComboBox.prototype.targetFocus = function (e) {\n if (Browser.isDevice && !this.allowFiltering) {\n this.preventFocus = false;\n }\n this.onFocus(e);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n };\n ComboBox.prototype.dropDownClick = function (e) {\n e.preventDefault();\n if (Browser.isDevice && !this.isFiltering()) {\n this.preventFocus = true;\n }\n _super.prototype.dropDownClick.call(this, e);\n };\n ComboBox.prototype.customValue = function (e) {\n var _this = this;\n var value = this.getValueByText(this.inputElement.value);\n if (!this.allowCustom && this.inputElement.value !== '') {\n var previousValue = this.previousValue;\n var currentValue = this.value;\n value = this.allowObjectBinding ? this.getDataByValue(value) : value;\n this.setProperties({ value: value });\n if (isNullOrUndefined(this.value)) {\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n }\n var newValue = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n if (this.autofill && ((!this.allowObjectBinding && previousValue === this.value) || (this.allowObjectBinding && previousValue && this.isObjectInArray(previousValue, [this.value]))) && ((!this.allowObjectBinding && currentValue !== this.value) || (this.allowObjectBinding && currentValue && !this.isObjectInArray(currentValue, [this.value])))) {\n this.onChangeEvent(null);\n }\n }\n else if (this.inputElement.value.trim() !== '') {\n var previousValue_1 = this.value;\n if (isNullOrUndefined(value)) {\n var value_1 = this.inputElement.value === '' ? null : this.inputElement.value;\n // eslint-disable-next-line max-len\n var eventArgs = { text: value_1, item: {} };\n this.isObjectCustomValue = true;\n if (!this.initial) {\n this.trigger('customValueSpecifier', eventArgs, function (eventArgs) {\n _this.updateCustomValueCallback(value_1, eventArgs, previousValue_1, e);\n });\n }\n else {\n this.updateCustomValueCallback(value_1, eventArgs, previousValue_1);\n }\n }\n else {\n this.isSelectCustom = false;\n value = this.allowObjectBinding ? this.getDataByValue(value) : value;\n this.setProperties({ value: value });\n if ((!this.allowObjectBinding && previousValue_1 !== this.value) || (this.allowObjectBinding && previousValue_1 && this.value && !this.isObjectInArray(previousValue_1, [this.value]))) {\n this.onChangeEvent(e);\n }\n }\n }\n else if (this.allowCustom && this.isFocused) {\n this.isSelectCustom = true;\n }\n };\n ComboBox.prototype.updateCustomValueCallback = function (value, eventArgs, previousValue, e) {\n var _this = this;\n var fields = this.fields;\n var item = eventArgs.item;\n var dataItem = {};\n if (item && getValue(fields.text, item) && getValue(fields.value, item)) {\n dataItem = item;\n }\n else {\n setValue(fields.text, value, dataItem);\n setValue(fields.value, value, dataItem);\n }\n this.itemData = dataItem;\n var emptyObject = {};\n if (this.allowObjectBinding) {\n var keys = this.listData && this.listData.length > 0 ? Object.keys(this.listData[0]) : Object.keys(this.itemData);\n if ((!(this.listData && this.listData.length > 0)) && (this.getModuleName() === 'autocomplete' || (this.getModuleName() === 'combobox' && this.allowFiltering))) {\n keys = this.firstItem ? Object.keys(this.firstItem) : Object.keys(this.itemData);\n }\n // Create an empty object with predefined keys\n keys.forEach(function (key) {\n emptyObject[key] = ((key === fields.value) || (key === fields.text)) ? getValue(fields.value, _this.itemData) : null;\n });\n }\n var changeData = {\n text: getValue(fields.text, this.itemData),\n value: this.allowObjectBinding ? emptyObject : getValue(fields.value, this.itemData),\n index: null\n };\n this.setProperties(changeData, true);\n this.setSelection(null, null);\n this.isSelectCustom = true;\n this.isObjectCustomValue = false;\n if ((!this.allowObjectBinding && (previousValue !== this.value)) || (this.allowObjectBinding && ((previousValue == null && this.value !== null) || (previousValue && !this.isObjectInArray(previousValue, [this.value]))))) {\n this.onChangeEvent(e, true);\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {ComboBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {ComboBoxModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n ComboBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'combobox') {\n this.checkData(newProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp, oldProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n if (this.readonly) {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n EventHandler.remove(this.inputElement, 'keyup', this.onFilterUp);\n EventHandler.remove(this.inputElement, 'keydown', this.onFilterDown);\n }\n else {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n EventHandler.add(this.inputElement, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.inputElement, 'keydown', this.onFilterDown, this);\n }\n this.setReadOnly();\n break;\n case 'allowFiltering':\n this.setSearchBox();\n if (this.isFiltering() && this.getModuleName() === 'combobox' && isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this);\n }\n break;\n case 'allowCustom':\n break;\n default: {\n // eslint-disable-next-line max-len\n var comboProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, comboProps.newProperty, comboProps.oldProperty);\n if (this.isFiltering() && prop === 'dataSource' && isNullOrUndefined(this.list) && this.itemTemplate &&\n this.getModuleName() === 'combobox') {\n _super.prototype.renderList.call(this);\n }\n break;\n }\n }\n }\n };\n /**\n * To initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n ComboBox.prototype.render = function () {\n _super.prototype.render.call(this);\n this.setSearchBox();\n this.renderComplete();\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n ComboBox.prototype.getModuleName = function () {\n return 'combobox';\n };\n /**\n * Adds a new item to the combobox popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n\n */\n ComboBox.prototype.addItem = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n\n */\n ComboBox.prototype.filter = function (dataSource, query, fields) {\n _super.prototype.filter.call(this, dataSource, query, fields);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Opens the popup that displays the list of items.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.showPopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n _super.prototype.showPopup.call(this, e);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Hides the popup if it is in open state.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.hidePopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n var inputValue = this.inputElement && this.inputElement.value === '' ? null\n : this.inputElement && this.inputElement.value;\n if (!isNullOrUndefined(this.listData)) {\n var isEscape = this.isEscapeKey;\n if (this.isEscapeKey) {\n Input.setValue(this.typedString, this.inputElement, this.floatLabelType, this.showClearButton);\n this.isEscapeKey = false;\n }\n if (this.autofill) {\n this.removeFillSelection();\n }\n var dataItem = this.isSelectCustom ? { text: '' } : this.getItemData();\n var selected = !isNullOrUndefined(this.list) ? this.list.querySelector('.' + dropDownListClasses.selected) : null;\n if (this.inputElement && dataItem.text === this.inputElement.value && !isNullOrUndefined(selected)) {\n if (this.isSelected) {\n this.onChangeEvent(e);\n this.isSelectCustom = false;\n }\n _super.prototype.hidePopup.call(this, e);\n return;\n }\n if (this.getModuleName() === 'combobox' && this.inputElement.value.trim() !== '') {\n var dataSource = this.sortedData;\n var type = this.typeOfData(dataSource).typeof;\n var searchItem = Search(this.inputElement.value, this.liCollections, 'Equal', true, dataSource, this.fields, type);\n this.selectedLI = searchItem.item;\n if (isNullOrUndefined(searchItem.index)) {\n searchItem.index = Search(this.inputElement.value, this.liCollections, 'StartsWith', true, dataSource, this.fields, type).index;\n }\n this.activeIndex = searchItem.index;\n if (!isNullOrUndefined(this.selectedLI)) {\n this.updateSelectedItem(this.selectedLI, null, true);\n }\n else if (isEscape) {\n this.isSelectCustom = true;\n this.removeSelection();\n }\n }\n if (!this.isEscapeKey && this.isTyped && !this.isInteracted) {\n this.customValue(e);\n }\n }\n var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n if (isNullOrUndefined(this.listData) && this.allowCustom && !isNullOrUndefined(inputValue) && inputValue !== value) {\n this.customValue();\n }\n _super.prototype.hidePopup.call(this, e);\n };\n /**\n * Sets the focus to the component for interaction.\n *\n * @returns {void}\n */\n ComboBox.prototype.focusIn = function () {\n if (!this.enabled) {\n return;\n }\n if (Browser.isDevice && !this.isFiltering()) {\n this.preventFocus = true;\n }\n _super.prototype.focusIn.call(this);\n };\n /**\n * Allows you to clear the selected values from the component.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.clear = function () {\n this.value = null;\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Moves the focus from the component if the component is already focused.\n *\n * @returns {void}\n\n */\n ComboBox.prototype.focusOut = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n _super.prototype.focusOut.call(this, e);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n\n */\n ComboBox.prototype.getItems = function () {\n return _super.prototype.getItems.call(this);\n };\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n\n */\n ComboBox.prototype.getDataByValue = function (value) {\n return _super.prototype.getDataByValue.call(this, value);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n ComboBox.prototype.renderHightSearch = function () {\n // update high light search\n };\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"autofill\", void 0);\n __decorate([\n Property(true)\n ], ComboBox.prototype, \"allowCustom\", void 0);\n __decorate([\n Property({})\n ], ComboBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"index\", void 0);\n __decorate([\n Property(true)\n ], ComboBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"enableRtl\", void 0);\n __decorate([\n Event()\n ], ComboBox.prototype, \"customValueSpecifier\", void 0);\n __decorate([\n Event()\n ], ComboBox.prototype, \"filtering\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property('Never')\n ], ComboBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property('100%')\n ], ComboBox.prototype, \"width\", void 0);\n __decorate([\n Property('300px')\n ], ComboBox.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], ComboBox.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], ComboBox.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], ComboBox.prototype, \"allowObjectBinding\", void 0);\n ComboBox = __decorate([\n NotifyPropertyChanges\n ], ComboBox);\n return ComboBox;\n}(DropDownList));\nexport { ComboBox };\n","/**\n * Function helps to find which highlightSearch is to call based on your data.\n *\n * @param {HTMLElement} element - Specifies an li element.\n * @param {string} query - Specifies the string to be highlighted.\n * @param {boolean} ignoreCase - Specifies the ignoreCase option.\n * @param {HightLightType} type - Specifies the type of highlight.\n * @returns {void}\n */\nexport function highlightSearch(element, query, ignoreCase, type) {\n var isHtmlElement = /<[^>]*>/g.test(element.innerText);\n if (isHtmlElement) {\n element.innerText = element.innerText.replace(/[\\u00A0-\\u9999<>&]/g, function (match) { return \"&#\" + match.charCodeAt(0) + \";\"; });\n }\n if (query === '') {\n return;\n }\n else {\n var ignoreRegex = ignoreCase ? 'gim' : 'gm';\n // eslint-disable-next-line\n query = /^[a-zA-Z0-9- ]*$/.test(query) ? query : query.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n var replaceQuery = type === 'StartsWith' ? '^(' + query + ')' : type === 'EndsWith' ?\n '(' + query + ')$' : '(' + query + ')';\n // eslint-disable-next-line security/detect-non-literal-regexp\n findTextNode(element, new RegExp(replaceQuery, ignoreRegex));\n }\n}\n/* eslint-enable jsdoc/require-param, valid-jsdoc */\n/**\n *\n * @param {HTMLElement} element - Specifies the element.\n * @param {RegExp} pattern - Specifies the regex to match the searched text.\n * @returns {void}\n */\nfunction findTextNode(element, pattern) {\n for (var index = 0; element.childNodes && (index < element.childNodes.length); index++) {\n if (element.childNodes[index].nodeType === 3 && element.childNodes[index].textContent.trim() !== '') {\n var value = element.childNodes[index].nodeValue.trim().replace(pattern, '$1');\n element.childNodes[index].nodeValue = '';\n element.innerHTML = element.innerHTML.trim() + value;\n break;\n }\n else {\n findTextNode(element.childNodes[index], pattern);\n }\n }\n}\n/**\n * Function helps to remove highlighted element based on your data.\n *\n * @param {HTMLElement} content - Specifies an content element.\n * @returns {void}\n */\nexport function revertHighlightSearch(content) {\n var contentElement = content.querySelectorAll('.e-highlight');\n for (var i = contentElement.length - 1; i >= 0; i--) {\n var parent_1 = contentElement[i].parentNode;\n var text = document.createTextNode(contentElement[i].textContent);\n parent_1.replaceChild(text, contentElement[i]);\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { Property, EventHandler, isNullOrUndefined, detach, getValue } from '@syncfusion/ej2-base';\nimport { Event, Complex } from '@syncfusion/ej2-base';\nimport { removeClass, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { dropDownListClasses } from '../drop-down-list/drop-down-list';\nimport { ComboBox } from '../combo-box/combo-box';\nimport { highlightSearch, revertHighlightSearch } from '../common/highlight-search';\nimport { Search } from '../common/incremental-search';\nimport { FieldSettings } from '../drop-down-base/drop-down-base';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DataManager, Predicate, Query } from '@syncfusion/ej2-data';\ndropDownListClasses.root = 'e-autocomplete';\ndropDownListClasses.icon = 'e-input-group-icon e-ddl-icon e-search-icon';\n/**\n * The AutoComplete component provides the matched suggestion list when type into the input,\n * from which the user can select one.\n * ```html\n * \n * ```\n * ```typescript\n * let atcObj:AutoComplete = new AutoComplete();\n * atcObj.appendTo(\"#list\");\n * ```\n */\nvar AutoComplete = /** @class */ (function (_super) {\n __extends(AutoComplete, _super);\n /**\n * * Constructor for creating the widget\n *\n * @param {AutoCompleteModel} options - Specifies the AutoComplete model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function AutoComplete(options, element) {\n var _this_1 = _super.call(this, options, element) || this;\n _this_1.isFiltered = false;\n _this_1.searchList = false;\n return _this_1;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.preRender = function () {\n _super.prototype.preRender.call(this);\n };\n AutoComplete.prototype.getLocaleName = function () {\n return 'auto-complete';\n };\n AutoComplete.prototype.getNgDirective = function () {\n return 'EJS-AUTOCOMPLETE';\n };\n AutoComplete.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var value = this.allowObjectBinding && !isNullOrUndefined(this.value) ? getValue((this.fields.value) ? this.fields.value : '', this.value) : this.value;\n var filterType = (this.queryString === '' && !isNullOrUndefined(value)) ? 'equal' : this.filterType;\n var queryString = (this.queryString === '' && !isNullOrUndefined(value)) ? value : this.queryString;\n if (this.isFiltered) {\n if ((this.enableVirtualization && !isNullOrUndefined(this.customFilterQuery))) {\n filterQuery = this.customFilterQuery.clone();\n }\n else if (!this.enableVirtualization) {\n return filterQuery;\n }\n }\n if (this.queryString !== null && this.queryString !== '') {\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n var mapping = !isNullOrUndefined(this.fields.value) ? this.fields.value : '';\n filterQuery.where(mapping, filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n }\n if (!isNullOrUndefined(this.suggestionCount) && !this.enableVirtualization) {\n // Since defualt value of suggestioncount is 20, checked the condition\n if (this.suggestionCount !== 20) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n filterQuery.queries.splice(queryElements, 1);\n }\n }\n }\n filterQuery.take(this.suggestionCount);\n }\n if (this.enableVirtualization) {\n var queryTakeValue = 0;\n var querySkipValue = 0;\n var takeValue = this.getTakeValue();\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onSkip') {\n querySkipValue = filterQuery.queries[queryElements].e.nos;\n }\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n queryTakeValue = takeValue <= filterQuery.queries[queryElements].e.nos ? filterQuery.queries[queryElements].e.nos : takeValue;\n }\n }\n }\n if (queryTakeValue <= 0 && this.query && this.query.queries.length > 0) {\n for (var queryElements = 0; queryElements < this.query.queries.length; queryElements++) {\n if (this.query.queries[queryElements].fn === 'onTake') {\n queryTakeValue = takeValue <= this.query.queries[queryElements].e.nos ? this.query.queries[queryElements].e.nos : takeValue;\n }\n }\n }\n if (filterQuery && filterQuery.queries.length > 0) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onSkip') {\n querySkipValue = filterQuery.queries[queryElements].e.nos;\n filterQuery.queries.splice(queryElements, 1);\n --queryElements;\n continue;\n }\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n queryTakeValue = filterQuery.queries[queryElements].e.nos <= queryTakeValue ? queryTakeValue : filterQuery.queries[queryElements].e.nos;\n filterQuery.queries.splice(queryElements, 1);\n --queryElements;\n }\n }\n }\n if (querySkipValue > 0 && this.virtualItemStartIndex <= querySkipValue) {\n filterQuery.skip(querySkipValue);\n }\n else {\n filterQuery.skip(this.virtualItemStartIndex);\n }\n if (queryTakeValue > 0 && takeValue <= queryTakeValue) {\n filterQuery.take(queryTakeValue);\n }\n else {\n filterQuery.take(takeValue);\n }\n filterQuery.requiresCount();\n }\n return filterQuery;\n };\n AutoComplete.prototype.searchLists = function (e) {\n var _this_1 = this;\n this.isTyped = true;\n this.isDataFetched = this.isSelectCustom = false;\n this.firstItem = this.dataSource && this.dataSource.length > 0 ? this.dataSource[0] : null;\n this.checkAndResetCache();\n if (isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this, e, true);\n }\n this.queryString = this.filterInput.value;\n if (e.type !== 'mousedown' && (e.keyCode === 40 || e.keyCode === 38)) {\n this.queryString = this.queryString === '' ? null : this.queryString;\n this.beforePopupOpen = true;\n this.resetList(this.dataSource, this.fields, null, e);\n return;\n }\n this.isSelected = false;\n this.activeIndex = null;\n this.isRequesting = false;\n var eventArgs = {\n preventDefaultAction: false,\n text: this.filterInput.value,\n updateData: function (dataSource, query, fields) {\n if (eventArgs.cancel) {\n return;\n }\n _this_1.isFiltered = true;\n _this_1.customFilterQuery = query;\n _this_1.filterAction(dataSource, query, fields);\n },\n cancel: false\n };\n this.trigger('filtering', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel && !_this_1.isFiltered && !eventArgs.preventDefaultAction) {\n _this_1.searchList = true;\n _this_1.filterAction(_this_1.dataSource, null, _this_1.fields, e);\n }\n });\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n\n */\n AutoComplete.prototype.filter = function (dataSource, query, fields) {\n this.isFiltered = true;\n this.filterAction(dataSource, query, fields);\n };\n AutoComplete.prototype.filterAction = function (dataSource, query, fields, e) {\n this.beforePopupOpen = true;\n var isNoDataElement = this.list.classList.contains('e-nodata');\n if (this.queryString !== '' && (this.queryString.length >= this.minLength)) {\n if (this.enableVirtualization && this.isFiltering() && this.isTyped) {\n this.isPreventScrollAction = true;\n this.list.scrollTop = 0;\n this.previousStartIndex = 0;\n this.virtualListInfo = null;\n }\n this.resetList(dataSource, fields, query, e);\n if (this.enableVirtualization && isNoDataElement && !this.list.classList.contains('e-nodata')) {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: this.getTransformValues()\n })).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n document.getElementsByClassName('e-popup')[0].querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n }\n if ((this.getModuleName() === 'autocomplete' && !(this.dataSource instanceof DataManager)) || (this.getModuleName() === 'autocomplete' && (this.dataSource instanceof DataManager) && this.totalItemCount != 0)) {\n this.getFilteringSkeletonCount();\n }\n }\n else {\n this.hidePopup(e);\n this.beforePopupOpen = false;\n }\n this.renderReactTemplates();\n };\n AutoComplete.prototype.clearAll = function (e, property) {\n if (isNullOrUndefined(property) || (!isNullOrUndefined(property) && isNullOrUndefined(property.dataSource))) {\n _super.prototype.clearAll.call(this, e);\n this.checkAndResetCache();\n }\n if (this.beforePopupOpen) {\n this.hidePopup();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n AutoComplete.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n if (!this.enableVirtualization) {\n this.fixedHeaderElement = null;\n }\n if ((this.getModuleName() === 'autocomplete' && !(this.dataSource instanceof DataManager)) || (this.getModuleName() === 'autocomplete' && (this.dataSource instanceof DataManager) && this.totalItemCount != 0)) {\n this.getFilteringSkeletonCount();\n }\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n var item = this.list.querySelector('.' + dropDownListClasses.li);\n if (!isNullOrUndefined(item)) {\n removeClass([item], dropDownListClasses.focus);\n }\n this.postBackAction();\n };\n AutoComplete.prototype.postBackAction = function () {\n if (this.autofill && !isNullOrUndefined(this.liCollections[0]) && this.searchList) {\n var items = [this.liCollections[0]];\n var dataSource = this.listData;\n var type = this.typeOfData(dataSource).typeof;\n var searchItem = Search(this.inputElement.value, items, 'StartsWith', this.ignoreCase, dataSource, this.fields, type);\n this.searchList = false;\n if (!isNullOrUndefined(searchItem.item)) {\n _super.prototype.setAutoFill.call(this, this.liCollections[0], true);\n }\n }\n };\n AutoComplete.prototype.setSelection = function (li, e) {\n if (!this.isValidLI(li)) {\n this.selectedLI = li;\n return;\n }\n if (!isNullOrUndefined(e) && e.type === 'keydown' && e.action !== 'enter'\n && e.action !== 'tab' && this.isValidLI(li)) {\n var value = this.getFormattedValue(li.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n this.setHoverList(li);\n this.selectedLI = li;\n this.setScrollPosition(e);\n if (this.autofill && this.isPopupOpen) {\n this.preventAutoFill = false;\n var isKeyNavigate = (e && e.action === 'down' || e.action === 'up' ||\n e.action === 'home' || e.action === 'end' || e.action === 'pageUp' || e.action === 'pageDown');\n _super.prototype.setAutoFill.call(this, li, isKeyNavigate);\n }\n }\n else {\n _super.prototype.setSelection.call(this, li, e);\n }\n };\n AutoComplete.prototype.listOption = function (dataSource, fieldsSettings) {\n var _this_1 = this;\n var fields = _super.prototype.listOption.call(this, dataSource, fieldsSettings);\n if (isNullOrUndefined(fields.itemCreated)) {\n fields.itemCreated = function (e) {\n if (_this_1.highlight) {\n if (_this_1.element.tagName === _this_1.getNgDirective() && _this_1.itemTemplate) {\n setTimeout(function () {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }, 0);\n }\n else {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }\n }\n };\n }\n else {\n var itemCreated_1 = fields.itemCreated;\n fields.itemCreated = function (e) {\n if (_this_1.highlight) {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }\n itemCreated_1.apply(_this_1, [e]);\n };\n }\n return fields;\n };\n AutoComplete.prototype.isFiltering = function () {\n return true;\n };\n AutoComplete.prototype.renderPopup = function (e) {\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n _super.prototype.renderPopup.call(this, e);\n };\n AutoComplete.prototype.isEditTextBox = function () {\n return false;\n };\n AutoComplete.prototype.isPopupButton = function () {\n return this.showPopupButton;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n AutoComplete.prototype.isSelectFocusItem = function (element) {\n return false;\n };\n AutoComplete.prototype.setInputValue = function (newProp, oldProp) {\n var oldValue = oldProp && oldProp.text ? oldProp.text : oldProp ? oldProp.value : oldProp;\n var value = newProp && newProp.text ? newProp.text : newProp && newProp.value ? newProp.value : this.value;\n if (this.allowObjectBinding) {\n oldValue = !isNullOrUndefined(oldValue) ? getValue((this.fields.value) ? this.fields.value : '', oldValue) : oldValue;\n value = !isNullOrUndefined(value) ? getValue((this.fields.value) ? this.fields.value : '', value) : value;\n }\n if (value && this.typedString === '' && !this.allowCustom && !(this.dataSource instanceof DataManager)) {\n var checkFields_1_1 = this.typeOfData(this.dataSource).typeof === 'string' ? '' : this.fields.value;\n var listLength_1 = this.getItems().length;\n var query = new Query();\n var _this_2 = this;\n new DataManager(this.dataSource).executeQuery(query.where(new Predicate(checkFields_1_1, 'equal', value)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this_2.value = checkFields_1_1 !== '' ? _this_2.allowObjectBinding ? e.result[0] : e.result[0][_this_2.fields.value].toString() : e.result[0].toString();\n _this_2.addItem(e.result, listLength_1);\n _this_2.updateValues();\n }\n else {\n newProp && newProp.text ? _this_2.setOldText(oldValue) : newProp && newProp.value ? _this_2.setOldValue(oldValue) : _this_2.updateValues();\n }\n });\n }\n else if (newProp) {\n newProp.text ? this.setOldText(oldValue) : this.setOldValue(oldValue);\n }\n };\n /**\n * Search the entered text and show it in the suggestion list if available.\n *\n * @returns {void}\n\n */\n AutoComplete.prototype.showPopup = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.beforePopupOpen) {\n this.refreshPopup();\n return;\n }\n this.beforePopupOpen = true;\n this.preventAutoFill = true;\n if (isNullOrUndefined(this.list)) {\n this.renderList(e);\n }\n else {\n this.resetList(this.dataSource, this.fields, null, e);\n }\n };\n /**\n * Hides the popup if it is in open state.\n *\n * @returns {void}\n */\n AutoComplete.prototype.hidePopup = function (e) {\n _super.prototype.hidePopup.call(this, e);\n this.activeIndex = null;\n this.virtualListInfo = this.viewPortInfo;\n this.previousStartIndex = this.viewPortInfo.startIndex;\n this.startIndex = this.viewPortInfo.startIndex;\n this.previousEndIndex = this.viewPortInfo.endIndex;\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {AutoCompleteModel} newProp - Returns the dynamic property value of the component.\n * @param {AutoCompleteModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'autocomplete') {\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'showPopupButton':\n if (this.showPopupButton) {\n var button = Input.appendSpan(dropDownListClasses.icon, this.inputWrapper.container, this.createElement);\n this.inputWrapper.buttons[0] = button;\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n if (this.inputWrapper && this.inputWrapper.buttons && this.inputWrapper.buttons[0]) {\n EventHandler.add(this.inputWrapper.buttons[0], 'click', this.dropDownClick, this);\n }\n }\n else {\n detach(this.inputWrapper.buttons[0]);\n this.inputWrapper.buttons[0] = null;\n }\n break;\n default: {\n // eslint-disable-next-line max-len\n var atcProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, atcProps.newProperty, atcProps.oldProperty);\n break;\n }\n }\n }\n };\n AutoComplete.prototype.renderHightSearch = function () {\n if (this.highlight) {\n for (var i = 0; i < this.liCollections.length; i++) {\n var isHighlight = this.ulElement.querySelector('.e-active');\n if (!isHighlight) {\n revertHighlightSearch(this.liCollections[i]);\n highlightSearch(this.liCollections[i], this.queryString, this.ignoreCase, this.filterType);\n }\n isHighlight = null;\n }\n }\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n AutoComplete.prototype.getModuleName = function () {\n return 'autocomplete';\n };\n /**\n * To initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.render = function () {\n _super.prototype.render.call(this);\n };\n __decorate([\n Complex({ value: null, iconCss: null, groupBy: null, disabled: null }, FieldSettings)\n ], AutoComplete.prototype, \"fields\", void 0);\n __decorate([\n Property(true)\n ], AutoComplete.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"showPopupButton\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"highlight\", void 0);\n __decorate([\n Property(20)\n ], AutoComplete.prototype, \"suggestionCount\", void 0);\n __decorate([\n Property({})\n ], AutoComplete.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"query\", void 0);\n __decorate([\n Property(1)\n ], AutoComplete.prototype, \"minLength\", void 0);\n __decorate([\n Property('Contains')\n ], AutoComplete.prototype, \"filterType\", void 0);\n __decorate([\n Event()\n ], AutoComplete.prototype, \"filtering\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"index\", void 0);\n __decorate([\n Property('Never')\n ], AutoComplete.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property(false)\n ], AutoComplete.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(null)\n ], AutoComplete.prototype, \"text\", void 0);\n AutoComplete = __decorate([\n NotifyPropertyChanges\n ], AutoComplete);\n return AutoComplete;\n}(ComboBox));\nexport { AutoComplete };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { EventHandler, Property, Internationalization, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, Animation, Browser } from '@syncfusion/ej2-base';\nimport { cldrData, L10n, Component, getDefaultDateObject, rippleEffect, Event } from '@syncfusion/ej2-base';\nimport { remove, addClass, detach, removeClass, closest, append, attributes, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit, getValue, extend, getUniqueID, ChildProperty } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { ListBase } from '@syncfusion/ej2-lists';\nvar WRAPPERCLASS = 'e-time-wrapper';\nvar POPUP = 'e-popup';\nvar ERROR = 'e-error';\nvar POPUPDIMENSION = '240px';\nvar DAY = new Date().getDate();\nvar MONTH = new Date().getMonth();\nvar YEAR = new Date().getFullYear();\nvar ROOT = 'e-timepicker';\nvar LIBRARY = 'e-lib';\nvar CONTROL = 'e-control';\nvar CONTENT = 'e-content';\nvar SELECTED = 'e-active';\nvar HOVER = 'e-hover';\nvar NAVIGATION = 'e-navigation';\nvar DISABLED = 'e-disabled';\nvar ICONANIMATION = 'e-icon-anim';\nvar FOCUS = 'e-input-focus';\nvar LISTCLASS = 'e-list-item';\nvar HALFPOSITION = 2;\nvar ANIMATIONDURATION = 50;\nvar OVERFLOW = 'e-time-overflow';\nvar OFFSETVAL = 4;\nvar EDITABLE = 'e-non-edit';\nvar wrapperAttributes = ['title', 'class', 'style'];\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var TimePickerBase;\n(function (TimePickerBase) {\n // eslint-disable-next-line max-len, jsdoc/require-jsdoc\n function createListItems(createdEl, min, max, globalize, timeFormat, step) {\n var formatOptions;\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: timeFormat, type: 'time' };\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n formatOptions = { format: timeFormat, type: 'time', calendar: 'islamic' };\n }\n var start;\n var interval = step * 60000;\n var listItems = [];\n var timeCollections = [];\n start = +(min.setMilliseconds(0));\n var end = +(max.setMilliseconds(0));\n while (end >= start) {\n timeCollections.push(start);\n listItems.push(globalize.formatDate(new Date(start), { format: timeFormat, type: 'time' }));\n start += interval;\n }\n var listTag = ListBase.createList(createdEl, listItems, null, true);\n return { collection: timeCollections, list: listTag };\n }\n TimePickerBase.createListItems = createListItems;\n})(TimePickerBase || (TimePickerBase = {}));\nvar TimeMaskPlaceholder = /** @class */ (function (_super) {\n __extends(TimeMaskPlaceholder, _super);\n function TimeMaskPlaceholder() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('day')\n ], TimeMaskPlaceholder.prototype, \"day\", void 0);\n __decorate([\n Property('month')\n ], TimeMaskPlaceholder.prototype, \"month\", void 0);\n __decorate([\n Property('year')\n ], TimeMaskPlaceholder.prototype, \"year\", void 0);\n __decorate([\n Property('day of the week')\n ], TimeMaskPlaceholder.prototype, \"dayOfTheWeek\", void 0);\n __decorate([\n Property('hour')\n ], TimeMaskPlaceholder.prototype, \"hour\", void 0);\n __decorate([\n Property('minute')\n ], TimeMaskPlaceholder.prototype, \"minute\", void 0);\n __decorate([\n Property('second')\n ], TimeMaskPlaceholder.prototype, \"second\", void 0);\n return TimeMaskPlaceholder;\n}(ChildProperty));\nexport { TimeMaskPlaceholder };\n/**\n * TimePicker is an intuitive interface component which provides an options to select a time value\n * from popup list or to set a desired time value.\n * ```\n * \n * \n * ```\n */\nvar TimePicker = /** @class */ (function (_super) {\n __extends(TimePicker, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {TimePickerModel} options - Specifies the TimePicker model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function TimePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.liCollections = [];\n _this.timeCollections = [];\n _this.disableItemCollection = [];\n _this.invalidValueString = null;\n _this.preventChange = false;\n _this.maskedDateValue = '';\n _this.moduleName = _this.getModuleName();\n _this.timeOptions = options;\n return _this;\n }\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n TimePicker.prototype.preRender = function () {\n this.keyConfigure = {\n enter: 'enter',\n escape: 'escape',\n end: 'end',\n tab: 'tab',\n home: 'home',\n down: 'downarrow',\n up: 'uparrow',\n left: 'leftarrow',\n right: 'rightarrow',\n open: 'alt+downarrow',\n close: 'alt+uparrow'\n };\n this.cloneElement = this.element.cloneNode(true);\n removeClass([this.cloneElement], [ROOT, CONTROL, LIBRARY]);\n this.inputElement = this.element;\n this.angularTag = null;\n this.formElement = closest(this.element, 'form');\n if (this.element.tagName === 'EJS-TIMEPICKER') {\n this.angularTag = this.element.tagName;\n this.inputElement = this.createElement('input');\n this.element.appendChild(this.inputElement);\n }\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n this.openPopupEventArgs = {\n appendTo: document.body\n };\n };\n // element creation\n TimePicker.prototype.render = function () {\n this.initialize();\n this.createInputElement();\n this.updateHtmlAttributeToWrapper();\n this.setTimeAllowEdit();\n this.setEnable();\n this.validateInterval();\n this.bindEvents();\n this.validateDisable();\n this.setTimeZone();\n this.setValue(this.getFormattedValue(this.value));\n if (this.enableMask && !this.value && this.maskedDateValue && (this.floatLabelType === 'Always' || !this.floatLabelType || !this.placeholder)) {\n this.updateInputValue(this.maskedDateValue);\n this.checkErrorState(this.maskedDateValue);\n }\n this.anchor = this.inputElement;\n this.inputElement.setAttribute('value', this.inputElement.value);\n this.inputEleValue = this.getDateObject(this.inputElement.value);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n };\n TimePicker.prototype.setTimeZone = function () {\n if (!isNullOrUndefined(this.serverTimezoneOffset) && this.value) {\n var clientTimeZoneDiff = new Date().getTimezoneOffset() / 60;\n var serverTimezoneDiff = this.serverTimezoneOffset;\n var timeZoneDiff = serverTimezoneDiff + clientTimeZoneDiff;\n timeZoneDiff = this.isDayLightSaving() ? timeZoneDiff-- : timeZoneDiff;\n this.value = new Date((this.value).getTime() + (timeZoneDiff * 60 * 60 * 1000));\n }\n };\n TimePicker.prototype.isDayLightSaving = function () {\n var firstOffset = new Date(this.value.getFullYear(), 0, 1).getTimezoneOffset();\n var secondOffset = new Date(this.value.getFullYear(), 6, 1).getTimezoneOffset();\n return (this.value.getTimezoneOffset() < Math.max(firstOffset, secondOffset));\n };\n TimePicker.prototype.setTimeAllowEdit = function () {\n if (this.allowEdit) {\n if (!this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n else {\n attributes(this.inputElement, { 'readonly': '' });\n }\n this.clearIconState();\n };\n TimePicker.prototype.clearIconState = function () {\n if (!this.allowEdit && this.inputWrapper && !this.readonly) {\n if (this.inputElement.value === '') {\n removeClass([this.inputWrapper.container], [EDITABLE]);\n }\n else {\n addClass([this.inputWrapper.container], [EDITABLE]);\n }\n }\n else if (this.inputWrapper) {\n removeClass([this.inputWrapper.container], [EDITABLE]);\n }\n };\n TimePicker.prototype.validateDisable = function () {\n this.setMinMax(this.initMin, this.initMax);\n if (!isNullOrUndefined(this.value)) {\n this.popupCreation();\n this.popupObj.destroy();\n this.popupWrapper = this.popupObj = null;\n }\n if ((!isNaN(+this.value) && this.value !== null)) {\n if (!this.valueIsDisable(this.value)) {\n //disable value given in value property so reset the date based on current date\n if (this.strictMode) {\n this.resetState();\n }\n this.initValue = null;\n this.initMax = this.getDateObject(this.initMax);\n this.initMin = this.getDateObject(this.initMin);\n this.timeCollections = this.liCollections = [];\n this.setMinMax(this.initMin, this.initMax);\n }\n }\n };\n TimePicker.prototype.validationAttribute = function (target, input) {\n var name = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n input.setAttribute('name', name);\n target.removeAttribute('name');\n var attributes = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes.length; i++) {\n if (isNullOrUndefined(target.getAttribute(attributes[i]))) {\n continue;\n }\n var attr = target.getAttribute(attributes[i]);\n input.setAttribute(attributes[i], attr);\n target.removeAttribute(attributes[i]);\n }\n };\n TimePicker.prototype.initialize = function () {\n this.globalize = new Internationalization(this.locale);\n this.defaultCulture = new Internationalization('en');\n this.checkTimeFormat();\n this.checkInvalidValue(this.value);\n // persist the value property.\n this.setProperties({ value: this.checkDateValue(new Date(this.checkInValue(this.value))) }, true);\n this.setProperties({ min: this.checkDateValue(new Date(this.checkInValue(this.min))) }, true);\n this.setProperties({ max: this.checkDateValue(new Date(this.checkInValue(this.max))) }, true);\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkInValue(this.scrollTo))) }, true);\n if (this.angularTag !== null) {\n this.validationAttribute(this.element, this.inputElement);\n }\n this.updateHtmlAttributeToElement();\n this.checkAttributes(false); //check the input element attributes\n var localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('timepicker', localeText, this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n this.initValue = this.checkDateValue(this.value);\n this.initMin = this.checkDateValue(this.min);\n this.initMax = this.checkDateValue(this.max);\n this.isNavigate = this.isPreventBlur = this.isTextSelected = false;\n this.activeIndex = this.valueWithMinutes = this.prevDate = null;\n if (!isNullOrUndefined(this.element.getAttribute('id'))) {\n if (this.angularTag !== null) {\n this.inputElement.id = this.element.getAttribute('id') + '_input';\n }\n }\n else {\n //for angular case\n this.element.id = getUniqueID('ej2_timepicker');\n if (this.angularTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n if (isNullOrUndefined(this.inputElement.getAttribute('name'))) {\n attributes(this.inputElement, { 'name': this.element.id });\n }\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n };\n TimePicker.prototype.checkTimeFormat = function () {\n if (this.format) {\n if (typeof this.format === 'string') {\n this.formatString = this.format;\n }\n else if (!isNullOrUndefined(this.format.skeleton) && this.format.skeleton !== '') {\n var skeletonString = this.format.skeleton;\n this.formatString = this.globalize.getDatePattern({ type: 'time', skeleton: skeletonString });\n }\n else {\n this.formatString = this.globalize.getDatePattern({ type: 'time', skeleton: 'short' });\n }\n }\n else {\n this.formatString = null;\n }\n };\n TimePicker.prototype.checkDateValue = function (value) {\n return (!isNullOrUndefined(value) && value instanceof Date && !isNaN(+value)) ? value : null;\n };\n TimePicker.prototype.createInputElement = function () {\n if (this.fullScreenMode && Browser.isDevice) {\n this.cssClass += ' ' + 'e-popup-expand';\n }\n var updatedCssClassesValue = this.cssClass;\n var isBindClearAction = this.enableMask ? false : true;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassesValue = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n bindClearAction: isBindClearAction,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassesValue,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n },\n buttons: [' e-input-group-icon e-time-icon e-icons']\n }, this.createElement);\n this.inputWrapper.container.style.width = this.setWidth(this.width);\n attributes(this.inputElement, {\n 'aria-autocomplete': 'list', 'tabindex': '0',\n 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false',\n 'aria-disabled': 'false', 'aria-invalid': 'false'\n });\n if (!this.isNullOrEmpty(this.inputStyle)) {\n Input.addAttributes({ 'style': this.inputStyle }, this.inputElement);\n }\n addClass([this.inputWrapper.container], WRAPPERCLASS);\n };\n TimePicker.prototype.getCldrDateTimeFormat = function () {\n var culture = new Internationalization(this.locale);\n var cldrTime;\n var dateFormat = culture.getDatePattern({ skeleton: 'yMd' });\n if (this.isNullOrEmpty(this.formatString)) {\n cldrTime = dateFormat + ' ' + this.cldrFormat('time');\n }\n else {\n cldrTime = this.formatString;\n }\n return cldrTime;\n };\n TimePicker.prototype.checkInvalidValue = function (value) {\n var isInvalid = false;\n if (typeof value !== 'object' && !isNullOrUndefined(value)) {\n var valueString = value;\n if (typeof valueString === 'string') {\n valueString = valueString.trim();\n }\n var valueExpression = null;\n var valueExp = null;\n if (typeof value === 'number') {\n valueString = value.toString();\n }\n else if (typeof value === 'string') {\n if (!(/^[a-zA-Z0-9- ]*$/).test(value)) {\n valueExpression = this.setCurrentDate(this.getDateObject(value));\n if (isNullOrUndefined(valueExpression)) {\n valueExpression = this.checkDateValue(this.globalize.parseDate(valueString, {\n format: this.getCldrDateTimeFormat(), type: 'datetime'\n }));\n if (isNullOrUndefined(valueExpression)) {\n valueExpression = this.checkDateValue(this.globalize.parseDate(valueString, {\n format: this.formatString, type: 'dateTime', skeleton: 'yMd'\n }));\n }\n }\n }\n }\n valueExp = this.globalize.parseDate(valueString, {\n format: this.getCldrDateTimeFormat(), type: 'datetime'\n });\n valueExpression = (!isNullOrUndefined(valueExp) && valueExp instanceof Date && !isNaN(+valueExp)) ? valueExp : null;\n if (isNullOrUndefined(valueExpression) && valueString.replace(/\\s/g, '').length) {\n var extISOString = null;\n var basicISOString = null;\n // eslint-disable-next-line\n extISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n // eslint-disable-next-line\n basicISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n if ((!extISOString.test(valueString) && !basicISOString.test(valueString))\n || ((/^[a-zA-Z0-9- ]*$/).test(value)) || isNaN(+new Date('' + valueString))) {\n isInvalid = true;\n }\n else {\n valueExpression = new Date('' + valueString);\n }\n }\n if (isInvalid) {\n if (!this.strictMode) {\n this.invalidValueString = valueString;\n }\n this.setProperties({ value: null }, true);\n this.initValue = null;\n }\n else {\n this.setProperties({ value: valueExpression }, true);\n this.initValue = this.value;\n }\n }\n };\n TimePicker.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableMask) {\n modules.push({ args: [this], member: 'MaskedDateTime' });\n }\n return modules;\n };\n TimePicker.prototype.cldrFormat = function (type) {\n var cldrDateTimeString;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrDateTimeString = (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrDateTimeString = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n return cldrDateTimeString;\n };\n // destroy function\n TimePicker.prototype.destroy = function () {\n this.hide();\n if (this.showClearButton) {\n this.clearButton = document.getElementsByClassName('e-clear-icon')[0];\n }\n this.unBindEvents();\n var ariaAttribute = {\n 'aria-autocomplete': 'list', 'tabindex': '0',\n 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false',\n 'aria-disabled': 'true', 'aria-invalid': 'false'\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttribute, this.inputElement);\n if (this.angularTag === null) {\n this.inputWrapper.container.parentElement.appendChild(this.inputElement);\n }\n if (!isNullOrUndefined(this.cloneElement.getAttribute('tabindex'))) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.removeAttribute('tabindex');\n }\n this.ensureInputAttribute();\n this.enableElement([this.inputElement]);\n this.inputElement.classList.remove('e-input');\n if (isNullOrUndefined(this.cloneElement.getAttribute('disabled'))) {\n Input.setEnabled(true, this.inputElement, this.floatLabelType);\n }\n }\n if (this.inputWrapper.container) {\n detach(this.inputWrapper.container);\n }\n this.inputWrapper = this.popupWrapper = this.cloneElement = undefined;\n this.liCollections = this.timeCollections = this.disableItemCollection = [];\n if (!isNullOrUndefined(this.rippleFn)) {\n this.rippleFn();\n }\n Input.destroy({\n element: this.inputElement,\n floatLabelType: this.floatLabelType,\n properties: this.properties\n }, this.clearButton);\n _super.prototype.destroy.call(this);\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n this.rippleFn = null;\n this.openPopupEventArgs = null;\n this.selectedElement = null;\n this.listTag = null;\n this.liCollections = null;\n };\n TimePicker.prototype.ensureInputAttribute = function () {\n var propertyList = [];\n for (var i = 0; i < this.inputElement.attributes.length; i++) {\n propertyList[i] = this.inputElement.attributes[i].name;\n }\n for (var i = 0; i < propertyList.length; i++) {\n if (!isNullOrUndefined(this.cloneElement.getAttribute(propertyList[i]))) {\n this.inputElement.setAttribute(propertyList[i], this.cloneElement.getAttribute(propertyList[i]));\n if (propertyList[i].toLowerCase() === 'value') {\n this.inputElement.value = this.cloneElement.getAttribute(propertyList[i]);\n }\n }\n else {\n this.inputElement.removeAttribute(propertyList[i]);\n if (propertyList[i].toLowerCase() === 'value') {\n this.inputElement.value = '';\n }\n }\n }\n };\n //popup creation\n TimePicker.prototype.popupCreation = function () {\n this.popupWrapper = this.createElement('div', {\n className: ROOT + ' ' + POPUP,\n attrs: { 'id': this.element.id + '_popup', 'style': 'visibility:hidden' }\n });\n this.popupWrapper.setAttribute('aria-label', this.element.id);\n this.popupWrapper.setAttribute('role', 'dialog');\n if (!isNullOrUndefined(this.cssClass)) {\n this.popupWrapper.className += ' ' + this.cssClass;\n }\n if (!isNullOrUndefined(this.step) && this.step > 0) {\n this.generateList();\n append([this.listWrapper], this.popupWrapper);\n }\n this.addSelection();\n this.renderPopup();\n detach(this.popupWrapper);\n };\n TimePicker.prototype.getPopupHeight = function () {\n var height = parseInt(POPUPDIMENSION, 10);\n var popupHeight = this.popupWrapper.getBoundingClientRect().height;\n return popupHeight > height ? height : popupHeight;\n };\n TimePicker.prototype.generateList = function () {\n this.createListItems();\n this.wireListEvents();\n var rippleModel = { duration: 300, selector: '.' + LISTCLASS };\n this.rippleFn = rippleEffect(this.listWrapper, rippleModel);\n this.liCollections = this.listWrapper.querySelectorAll('.' + LISTCLASS);\n };\n TimePicker.prototype.renderPopup = function () {\n var _this = this;\n this.containerStyle = this.inputWrapper.container.getBoundingClientRect();\n this.popupObj = new Popup(this.popupWrapper, {\n width: this.setPopupWidth(this.width),\n zIndex: this.zIndex,\n targetType: 'relative',\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : { X: 'left', Y: 'bottom' },\n collision: Browser.isDevice ? { X: 'fit', Y: 'fit' } : { X: 'flip', Y: 'flip' },\n enableRtl: this.enableRtl,\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n offsetY: OFFSETVAL,\n open: function () {\n _this.popupWrapper.style.visibility = 'visible';\n addClass([_this.inputWrapper.buttons[0]], SELECTED);\n }, close: function () {\n removeClass([_this.inputWrapper.buttons[0]], SELECTED);\n _this.unWireListEvents();\n _this.inputElement.removeAttribute('aria-activedescendant');\n remove(_this.popupObj.element);\n _this.popupObj.destroy();\n _this.popupWrapper.innerHTML = '';\n _this.listWrapper = _this.popupWrapper = _this.listTag = undefined;\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n if (!Browser.isDevice) {\n this.popupObj.collision = { X: 'none', Y: 'flip' };\n }\n if (Browser.isDevice && this.fullScreenMode) {\n this.popupObj.element.style.maxHeight = '100%';\n this.popupObj.element.style.width = '100%';\n }\n else {\n this.popupObj.element.style.maxHeight = POPUPDIMENSION;\n }\n if (Browser.isDevice && this.fullScreenMode) {\n var modelHeader = this.createElement('div', { className: 'e-model-header' });\n var modelTitleSpan = this.createElement('span', { className: 'e-model-title' });\n modelTitleSpan.textContent = 'Select time';\n var modelCloseIcon = this.createElement('span', { className: 'e-popup-close' });\n EventHandler.add(modelCloseIcon, 'mousedown touchstart', this.timePopupCloseHandler, this);\n modelHeader.appendChild(modelCloseIcon);\n modelHeader.appendChild(modelTitleSpan);\n this.popupWrapper.insertBefore(modelHeader, this.popupWrapper.firstElementChild);\n }\n };\n TimePicker.prototype.timePopupCloseHandler = function (e) {\n this.hide();\n };\n //util function\n TimePicker.prototype.getFormattedValue = function (value) {\n if (isNullOrUndefined(this.checkDateValue(value))) {\n return null;\n }\n else {\n return this.globalize.formatDate(value, { skeleton: 'medium', type: 'time' });\n }\n };\n TimePicker.prototype.getDateObject = function (text) {\n if (!this.isNullOrEmpty(text)) {\n var dateValue = this.createDateObj(text);\n var value = !this.isNullOrEmpty(this.initValue);\n if (this.checkDateValue(dateValue)) {\n var date = value ? this.initValue.getDate() : DAY;\n var month = value ? this.initValue.getMonth() : MONTH;\n var year = value ? this.initValue.getFullYear() : YEAR;\n return new Date(year, month, date, dateValue.getHours(), dateValue.getMinutes(), dateValue.getSeconds());\n }\n }\n return null;\n };\n TimePicker.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttributes.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassesValue = (this.htmlAttributes[\"\" + key].replace(/\\s+/g, ' ')).trim();\n if (updatedClassesValue !== '') {\n addClass([this.inputWrapper.container], updatedClassesValue.split(' '));\n }\n }\n else if (key === 'style') {\n var timeStyle = this.inputWrapper.container.getAttribute(key);\n timeStyle = !isNullOrUndefined(timeStyle) ? (timeStyle + this.htmlAttributes[\"\" + key]) :\n this.htmlAttributes[\"\" + key];\n this.inputWrapper.container.setAttribute(key, timeStyle);\n }\n else {\n this.inputWrapper.container.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n };\n TimePicker.prototype.updateHtmlAttributeToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttributes.indexOf(key) < 0) {\n this.inputElement.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n TimePicker.prototype.updateCssClass = function (cssClassNew, cssClassOld) {\n if (!isNullOrUndefined(cssClassOld)) {\n cssClassOld = (cssClassOld.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(cssClassNew)) {\n cssClassNew = (cssClassNew.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(cssClassNew, [this.inputWrapper.container], cssClassOld);\n if (this.popupWrapper) {\n Input.setCssClass(cssClassNew, [this.popupWrapper], cssClassOld);\n }\n };\n TimePicker.prototype.removeErrorClass = function () {\n removeClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'false' });\n };\n TimePicker.prototype.checkErrorState = function (val) {\n var value = this.getDateObject(val);\n if ((this.validateState(value) && !this.invalidValueString) ||\n (this.enableMask && this.inputElement.value === this.maskedDateValue)) {\n this.removeErrorClass();\n }\n else {\n addClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'true' });\n }\n };\n TimePicker.prototype.validateInterval = function () {\n if (!isNullOrUndefined(this.step) && this.step > 0) {\n this.enableElement([this.inputWrapper.buttons[0]]);\n }\n else {\n this.disableTimeIcon();\n }\n };\n TimePicker.prototype.disableTimeIcon = function () {\n this.disableElement([this.inputWrapper.buttons[0]]);\n this.hide();\n };\n TimePicker.prototype.disableElement = function (element) {\n addClass(element, DISABLED);\n };\n TimePicker.prototype.enableElement = function (element) {\n removeClass(element, DISABLED);\n };\n TimePicker.prototype.selectInputText = function () {\n this.inputElement.setSelectionRange(0, (this.inputElement).value.length);\n };\n TimePicker.prototype.setCursorToEnd = function () {\n this.inputElement.setSelectionRange((this.inputElement).value.length, (this.inputElement).value.length);\n };\n TimePicker.prototype.getMeridianText = function () {\n var meridian;\n if (this.locale === 'en' || this.locale === 'en-US') {\n meridian = getValue('dayPeriods.format.wide', getDefaultDateObject());\n }\n else {\n var gregorianFormat = '.dates.calendars.gregorian.dayPeriods.format.abbreviated';\n var mainVal = 'main.';\n meridian = getValue(mainVal + '' + this.locale + gregorianFormat, cldrData);\n }\n return meridian;\n };\n TimePicker.prototype.getCursorSelection = function () {\n var input = (this.inputElement);\n var start = 0;\n var end = 0;\n if (!isNaN(input.selectionStart)) {\n start = input.selectionStart;\n end = input.selectionEnd;\n }\n return { start: Math.abs(start), end: Math.abs(end) };\n };\n TimePicker.prototype.getActiveElement = function () {\n if (!isNullOrUndefined(this.popupWrapper)) {\n return this.popupWrapper.querySelectorAll('.' + SELECTED);\n }\n else {\n return null;\n }\n };\n TimePicker.prototype.isNullOrEmpty = function (value) {\n if (isNullOrUndefined(value) || (typeof value === 'string' && value.trim() === '')) {\n return true;\n }\n else {\n return false;\n }\n };\n TimePicker.prototype.setWidth = function (width) {\n if (typeof width === 'number') {\n width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n width = (width.match(/px|%|em/)) ? width : formatUnit(width);\n }\n else {\n width = '100%';\n }\n return width;\n };\n TimePicker.prototype.setPopupWidth = function (width) {\n width = this.setWidth(width);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.containerStyle.width * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n TimePicker.prototype.setScrollPosition = function () {\n var element = this.selectedElement;\n if (!isNullOrUndefined(element)) {\n this.findScrollTop(element);\n }\n else if (this.popupWrapper && this.checkDateValue(this.scrollTo)) {\n this.setScrollTo();\n }\n };\n TimePicker.prototype.findScrollTop = function (element) {\n var listHeight = this.getPopupHeight();\n var nextEle = element.nextElementSibling;\n var height = nextEle ? nextEle.offsetTop : element.offsetTop;\n var liHeight = element.getBoundingClientRect().height;\n if ((height + element.offsetTop) > listHeight) {\n this.popupWrapper.scrollTop = nextEle ? (height - (listHeight / HALFPOSITION + liHeight / HALFPOSITION)) : height;\n }\n else {\n this.popupWrapper.scrollTop = 0;\n }\n };\n TimePicker.prototype.setScrollTo = function () {\n var element;\n if (!isNullOrUndefined(this.popupWrapper)) {\n var items = this.popupWrapper.querySelectorAll('.' + LISTCLASS);\n if (items.length) {\n var initialTime = this.timeCollections[0];\n var scrollTime = this.getDateObject(this.checkDateValue(this.scrollTo)).getTime();\n element = items[Math.round((scrollTime - initialTime) / (this.step * 60000))];\n }\n }\n else {\n this.popupWrapper.scrollTop = 0;\n }\n if (!isNullOrUndefined(element)) {\n this.findScrollTop(element);\n }\n else {\n this.popupWrapper.scrollTop = 0;\n }\n };\n TimePicker.prototype.getText = function () {\n return (isNullOrUndefined(this.checkDateValue(this.value))) ? '' : this.getValue(this.value);\n };\n TimePicker.prototype.getValue = function (value) {\n return (isNullOrUndefined(this.checkDateValue(value))) ? null : this.globalize.formatDate(value, {\n format: this.cldrTimeFormat(), type: 'time'\n });\n };\n TimePicker.prototype.cldrDateFormat = function () {\n var cldrDate;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrDate = (getValue('dateFormats.short', getDefaultDateObject()));\n }\n else {\n cldrDate = (this.getCultureDateObject(cldrData, '' + this.locale));\n }\n return cldrDate;\n };\n TimePicker.prototype.cldrTimeFormat = function () {\n var cldrTime;\n if (this.isNullOrEmpty(this.formatString)) {\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrTime = (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrTime = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n }\n else {\n cldrTime = this.formatString;\n }\n return cldrTime;\n };\n TimePicker.prototype.dateToNumeric = function () {\n var cldrTime;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrTime = (getValue('timeFormats.medium', getDefaultDateObject()));\n }\n else {\n cldrTime = (getValue('main.' + '' + this.locale + '.dates.calendars.gregorian.timeFormats.medium', cldrData));\n }\n return cldrTime;\n };\n TimePicker.prototype.getExactDateTime = function (value) {\n if (isNullOrUndefined(this.checkDateValue(value))) {\n return null;\n }\n else {\n return this.globalize.formatDate(value, { format: this.dateToNumeric(), type: 'time' });\n }\n };\n TimePicker.prototype.setValue = function (value) {\n var time = this.checkValue(value);\n if (!this.strictMode && !this.validateState(time)) {\n if (this.checkDateValue(this.valueWithMinutes) === null) {\n this.initValue = this.valueWithMinutes = null;\n }\n this.validateMinMax(this.value, this.min, this.max);\n }\n else {\n if (this.isNullOrEmpty(time)) {\n this.initValue = null;\n this.validateMinMax(this.value, this.min, this.max);\n }\n else {\n this.initValue = this.compareFormatChange(time);\n }\n }\n this.updateInput(true, this.initValue);\n };\n TimePicker.prototype.compareFormatChange = function (value) {\n if (isNullOrUndefined(value)) {\n return null;\n }\n return (value !== this.getText()) ? this.getDateObject(value) : this.getDateObject(this.value);\n };\n TimePicker.prototype.updatePlaceHolder = function () {\n Input.setPlaceholder(this.l10n.getConstant('placeholder'), this.inputElement);\n };\n //event related functions\n TimePicker.prototype.updateInputValue = function (value) {\n Input.setValue(value, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n TimePicker.prototype.preventEventBubbling = function (e) {\n e.preventDefault();\n this.interopAdaptor.invokeMethodAsync('OnTimeIconClick');\n };\n TimePicker.prototype.popupHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (Browser.isDevice) {\n this.inputElement.setAttribute('readonly', '');\n }\n e.preventDefault();\n if (this.isPopupOpen()) {\n this.closePopup(0, e);\n }\n else {\n this.inputElement.focus();\n this.show(e);\n }\n };\n TimePicker.prototype.mouseDownHandler = function () {\n if (!this.enabled) {\n return;\n }\n if (!this.readonly) {\n this.inputElement.setSelectionRange(0, 0);\n EventHandler.add(this.inputElement, 'mouseup', this.mouseUpHandler, this);\n }\n };\n TimePicker.prototype.mouseUpHandler = function (event) {\n if (!this.readonly) {\n event.preventDefault();\n if (this.enableMask) {\n event.preventDefault();\n this.notify('setMaskSelection', {\n module: 'MaskedDateTime'\n });\n return;\n }\n else {\n EventHandler.remove(this.inputElement, 'mouseup', this.mouseUpHandler);\n var curPos = this.getCursorSelection();\n if (!(curPos.start === 0 && curPos.end === this.inputElement.value.length)) {\n if (this.inputElement.value.length > 0) {\n this.cursorDetails = this.focusSelection();\n }\n this.inputElement.setSelectionRange(this.cursorDetails.start, this.cursorDetails.end);\n }\n }\n }\n };\n TimePicker.prototype.focusSelection = function () {\n var regex = new RegExp('^[a-zA-Z0-9]+$');\n var split = this.inputElement.value.split('');\n split.push(' ');\n var curPos = this.getCursorSelection();\n var start = 0;\n var end = 0;\n var isSeparator = false;\n if (!this.isTextSelected) {\n for (var i = 0; i < split.length; i++) {\n if (!regex.test(split[i])) {\n end = i;\n isSeparator = true;\n }\n if (isSeparator) {\n if (curPos.start >= start && curPos.end <= end) {\n // eslint-disable-next-line no-self-assign\n end = end;\n this.isTextSelected = true;\n break;\n }\n else {\n start = i + 1;\n isSeparator = false;\n }\n }\n }\n }\n else {\n start = curPos.start;\n end = curPos.end;\n this.isTextSelected = false;\n }\n return { start: start, end: end };\n };\n TimePicker.prototype.inputHandler = function (event) {\n if (!this.readonly && this.enabled) {\n if (!((event.action === 'right' || event.action === 'left' || event.action === 'tab') || ((event.action === 'home' || event.action === 'end' || event.action === 'up' || event.action === 'down') && !this.isPopupOpen() && !this.enableMask))) {\n event.preventDefault();\n }\n switch (event.action) {\n case 'home':\n case 'end':\n case 'up':\n case 'down':\n if (!this.isPopupOpen()) {\n this.popupCreation();\n this.popupObj.destroy();\n this.popupObj = this.popupWrapper = null;\n }\n if (this.enableMask && !this.readonly && !this.isPopupOpen()) {\n event.preventDefault();\n this.notify('keyDownHandler', {\n module: 'MaskedDateTime',\n e: event\n });\n }\n if (this.isPopupOpen()) {\n this.keyHandler(event);\n }\n break;\n case 'enter':\n if (this.isNavigate) {\n this.selectedElement = this.liCollections[this.activeIndex];\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n this.updateValue(this.valueWithMinutes, event);\n }\n else {\n this.updateValue(this.inputElement.value, event);\n }\n this.hide();\n this.isNavigate = false;\n if (this.isPopupOpen()) {\n event.stopPropagation();\n }\n break;\n case 'open':\n this.show(event);\n break;\n case 'escape':\n this.updateInputValue(this.objToString(this.value));\n if (this.enableMask) {\n if (!this.value) {\n this.updateInputValue(this.maskedDateValue);\n }\n this.createMask();\n }\n this.previousState(this.value);\n this.hide();\n break;\n case 'close':\n this.hide();\n break;\n case 'right':\n case 'left':\n case 'tab':\n case 'shiftTab':\n if (!this.isPopupOpen() && this.enableMask && !this.readonly) {\n if ((this.inputElement.selectionStart === 0 && this.inputElement.selectionEnd === this.inputElement.value.length) ||\n (this.inputElement.selectionEnd !== this.inputElement.value.length && event.action === 'tab') ||\n (this.inputElement.selectionStart !== 0 && event.action === 'shiftTab') || (event.action === 'left' || event.action === 'right')) {\n event.preventDefault();\n }\n this.notify('keyDownHandler', { module: 'MaskedDateTime',\n e: event\n });\n }\n break;\n default:\n this.isNavigate = false;\n break;\n }\n }\n };\n TimePicker.prototype.onMouseClick = function (event) {\n var target = event.target;\n var li = this.selectedElement = closest(target, '.' + LISTCLASS);\n this.setSelection(li, event);\n if (li && li.classList.contains(LISTCLASS)) {\n this.hide();\n }\n };\n TimePicker.prototype.closePopup = function (delay, e) {\n var _this = this;\n if (this.isPopupOpen() && this.popupWrapper) {\n var args = {\n popup: this.popupObj,\n event: e || null,\n cancel: false,\n name: 'open'\n };\n removeClass([document.body], OVERFLOW);\n this.trigger('close', args, function (args) {\n if (!args.cancel) {\n var animModel = {\n name: 'FadeOut',\n duration: ANIMATIONDURATION,\n delay: delay ? delay : 0\n };\n _this.popupObj.hide(new Animation(animModel));\n removeClass([_this.inputWrapper.container], [ICONANIMATION]);\n attributes(_this.inputElement, { 'aria-expanded': 'false' });\n _this.inputElement.removeAttribute('aria-owns');\n _this.inputElement.removeAttribute('aria-controls');\n _this.inputElement.removeAttribute('aria-activedescendant');\n EventHandler.remove(document, 'mousedown touchstart', _this.documentClickHandler);\n }\n if (Browser.isDevice && _this.modal) {\n _this.modal.style.display = 'none';\n _this.modal.outerHTML = '';\n _this.modal = null;\n }\n if (Browser.isDevice) {\n if (!isNullOrUndefined(_this.mobileTimePopupWrap)) {\n _this.mobileTimePopupWrap.remove();\n _this.mobileTimePopupWrap = null;\n }\n }\n if (Browser.isDevice && _this.allowEdit && !_this.readonly) {\n _this.inputElement.removeAttribute('readonly');\n }\n });\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n };\n TimePicker.prototype.disposeServerPopup = function () {\n if (this.popupWrapper) {\n this.popupWrapper.style.visibility = 'hidden';\n this.popupWrapper.style.top = '-9999px';\n this.popupWrapper.style.left = '-9999px';\n this.popupWrapper.style.width = '0px';\n this.popupWrapper.style.height = '0px';\n }\n };\n TimePicker.prototype.checkValueChange = function (event, isNavigation) {\n if (!this.strictMode && !this.validateState(this.valueWithMinutes)) {\n if (this.checkDateValue(this.valueWithMinutes) === null) {\n this.initValue = this.valueWithMinutes = null;\n }\n this.setProperties({ value: this.compareFormatChange(this.inputElement.value) }, true);\n this.initValue = this.valueWithMinutes = this.compareFormatChange(this.inputElement.value);\n this.prevValue = this.inputElement.value;\n if (+this.prevDate !== +this.value) {\n this.changeEvent(event);\n }\n }\n else {\n if (!isNavigation) {\n if ((this.prevValue !== this.inputElement.value) || isNullOrUndefined(this.checkDateValue(this.value))) {\n this.valueProcess(event, this.compareFormatChange(this.inputElement.value));\n }\n }\n else {\n var value = this.getDateObject(new Date(this.timeCollections[this.activeIndex]));\n if (+this.prevDate !== +value) {\n this.valueProcess(event, value);\n }\n }\n }\n };\n TimePicker.prototype.onMouseOver = function (event) {\n var currentLi = closest(event.target, '.' + LISTCLASS);\n this.setHover(currentLi, HOVER);\n };\n TimePicker.prototype.setHover = function (li, className) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(className)) {\n this.removeHover(className);\n addClass([li], className);\n if (className === NAVIGATION) {\n li.setAttribute('aria-selected', 'true');\n }\n }\n };\n TimePicker.prototype.setSelection = function (li, event) {\n if (this.isValidLI(li)) {\n this.checkValue(li.getAttribute('data-value'));\n if (this.enableMask) {\n this.createMask();\n }\n this.selectedElement = li;\n this.activeIndex = Array.prototype.slice.call(this.liCollections).indexOf(li);\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n addClass([this.selectedElement], SELECTED);\n this.selectedElement.setAttribute('aria-selected', 'true');\n this.checkValueChange(event, true);\n }\n };\n TimePicker.prototype.onMouseLeave = function () {\n this.removeHover(HOVER);\n };\n TimePicker.prototype.scrollHandler = function () {\n if (this.getModuleName() === 'timepicker' && Browser.isDevice) {\n return;\n }\n else {\n this.hide();\n }\n };\n TimePicker.prototype.setMinMax = function (minVal, maxVal) {\n if (isNullOrUndefined(this.checkDateValue(minVal))) {\n this.initMin = this.getDateObject('12:00:00 AM');\n }\n if (isNullOrUndefined(this.checkDateValue(maxVal))) {\n this.initMax = this.getDateObject('11:59:59 PM');\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TimePicker.prototype.validateMinMax = function (dateVal, minVal, maxVal) {\n var value = dateVal instanceof Date ? dateVal : this.getDateObject(dateVal);\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n dateVal = this.strictOperation(this.initMin, this.initMax, dateVal, value);\n }\n else if (+(this.createDateObj(this.getFormattedValue(this.initMin))) >\n +(this.createDateObj(this.getFormattedValue(this.initMax)))) {\n this.disableTimeIcon();\n }\n if (this.strictMode) {\n dateVal = this.valueIsDisable(dateVal) ? dateVal : null;\n }\n this.checkErrorState(dateVal);\n return dateVal;\n };\n TimePicker.prototype.valueIsDisable = function (value) {\n if (this.disableItemCollection.length > 0) {\n if (this.disableItemCollection.length === this.timeCollections.length) {\n return false;\n }\n var time = value instanceof Date ? this.objToString(value) : value;\n for (var index = 0; index < this.disableItemCollection.length; index++) {\n if (time === this.disableItemCollection[index]) {\n return false;\n }\n }\n }\n return true;\n };\n TimePicker.prototype.validateState = function (val) {\n if (!this.strictMode) {\n if (this.valueIsDisable(val)) {\n var value = typeof val === 'string' ? this.setCurrentDate(this.getDateObject(val)) :\n this.setCurrentDate(this.getDateObject(val));\n var maxValue = this.setCurrentDate(this.getDateObject(this.initMax));\n var minValue = this.setCurrentDate(this.getDateObject(this.initMin));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n if ((+(value) > +(maxValue)) || (+(value) < +(minValue))) {\n return false;\n }\n }\n else {\n if ((+(maxValue) < +(minValue)) || this.inputElement.value !== '') {\n return false;\n }\n }\n }\n else {\n return false;\n }\n }\n return true;\n };\n TimePicker.prototype.strictOperation = function (minimum, maximum, dateVal, val) {\n var maxValue = this.createDateObj(this.getFormattedValue(maximum));\n var minValue = this.createDateObj(this.getFormattedValue(minimum));\n var value = this.createDateObj(this.getFormattedValue(val));\n if (this.strictMode) {\n if (+minValue > +maxValue) {\n this.disableTimeIcon();\n this.initValue = this.getDateObject(maxValue);\n this.updateInputValue(this.getValue(this.initValue));\n if (this.enableMask) {\n this.createMask();\n }\n return this.inputElement.value;\n }\n else if (+minValue >= +value) {\n return this.getDateObject(minValue);\n }\n else if (+value >= +maxValue || +minValue === +maxValue) {\n return this.getDateObject(maxValue);\n }\n }\n else {\n if (+minValue > +maxValue) {\n this.disableTimeIcon();\n if (!isNaN(+this.createDateObj(dateVal))) {\n return dateVal;\n }\n }\n }\n return dateVal;\n };\n TimePicker.prototype.bindEvents = function () {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.popupHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.inputBlurHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.inputFocusHandler, this);\n EventHandler.add(this.inputElement, 'change', this.inputChangeHandler, this);\n EventHandler.add(this.inputElement, 'input', this.inputEventHandler, this);\n if (this.enableMask) {\n EventHandler.add(this.inputElement, 'keydown', this.keydownHandler, this);\n }\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.clearHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n if (!Browser.isDevice) {\n this.keyConfigure = extend(this.keyConfigure, this.keyConfigs);\n this.inputEvent = new KeyboardEvents(this.inputWrapper.container, {\n keyAction: this.inputHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n if (this.showClearButton && this.inputElement) {\n EventHandler.add(this.inputElement, 'mousedown', this.mouseDownHandler, this);\n }\n }\n };\n TimePicker.prototype.keydownHandler = function (e) {\n switch (e.code) {\n case 'Delete':\n if (this.enableMask && !this.popupObj && !this.readonly) {\n this.notify('keyDownHandler', {\n module: 'MaskedDateTime',\n e: e\n });\n }\n break;\n default:\n break;\n }\n };\n TimePicker.prototype.formResetHandler = function () {\n if (!this.enabled) {\n return;\n }\n if (!this.inputElement.disabled) {\n var timeValue = this.inputElement.getAttribute('value');\n var val = this.checkDateValue(this.inputEleValue);\n if (this.element.tagName === 'EJS-TIMEPICKER') {\n val = null;\n timeValue = '';\n this.inputElement.setAttribute('value', '');\n }\n this.setProperties({ value: val }, true);\n this.prevDate = this.value;\n this.valueWithMinutes = this.value;\n this.initValue = this.value;\n if (this.inputElement) {\n this.updateInputValue(timeValue);\n if (this.enableMask) {\n if (!timeValue) {\n this.updateInputValue(this.maskedDateValue);\n }\n this.createMask();\n }\n this.checkErrorState(timeValue);\n this.prevValue = this.inputElement.value;\n }\n }\n };\n TimePicker.prototype.inputChangeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.stopPropagation();\n };\n TimePicker.prototype.inputEventHandler = function () {\n if (this.enableMask) {\n this.notify('inputHandler', {\n module: 'MaskedDateTime'\n });\n }\n };\n TimePicker.prototype.unBindEvents = function () {\n if (this.inputWrapper) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown touchstart', this.popupHandler);\n }\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n EventHandler.remove(this.inputElement, 'change', this.inputChangeHandler);\n EventHandler.remove(this.inputElement, 'input', this.inputEventHandler);\n if (this.inputEvent) {\n this.inputEvent.destroy();\n }\n EventHandler.remove(this.inputElement, 'mousedown touchstart', this.mouseDownHandler);\n if (this.showClearButton && !isNullOrUndefined(this.inputWrapper) && !isNullOrUndefined(this.inputWrapper.clearButton)) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown touchstart', this.clearHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n };\n TimePicker.prototype.bindClearEvent = function () {\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.clearHandler, this);\n }\n };\n TimePicker.prototype.raiseClearedEvent = function (e) {\n var clearedArgs = {\n event: e\n };\n this.trigger('cleared', clearedArgs);\n };\n TimePicker.prototype.clearHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.preventDefault();\n if (!isNullOrUndefined(this.value)) {\n this.clear(e);\n }\n else {\n this.resetState();\n this.raiseClearedEvent(e);\n }\n if (this.popupWrapper) {\n this.popupWrapper.scrollTop = 0;\n }\n if (this.enableMask) {\n this.notify('clearHandler', {\n module: 'MaskedDateTime'\n });\n }\n if (closest(this.element, 'form')) {\n var element = this.element;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n TimePicker.prototype.clear = function (event) {\n this.setProperties({ value: null }, true);\n this.initValue = null;\n this.resetState();\n this.raiseClearedEvent(event);\n this.changeEvent(event);\n };\n TimePicker.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.zIndex = this.zIndex;\n this.popupObj.dataBind();\n }\n };\n TimePicker.prototype.checkAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['step', 'disabled', 'readonly', 'style', 'name', 'value', 'min', 'max', 'placeholder'];\n var value;\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'style':\n this.inputStyle = this.inputElement.getAttribute(prop);\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.inputElement.getAttribute(prop) === 'readonly' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'name':\n this.inputElement.setAttribute('name', this.inputElement.getAttribute(prop));\n break;\n case 'step':\n this.step = parseInt(this.inputElement.getAttribute(prop), 10);\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !isDynamic);\n }\n break;\n case 'min':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['min'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.setProperties({ min: value }, !isDynamic);\n }\n }\n break;\n case 'max':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['max'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.setProperties({ max: value }, !isDynamic);\n }\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['value'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.initValue = value;\n this.updateInput(false, this.initValue);\n this.setProperties({ value: value }, !isDynamic);\n }\n }\n break;\n }\n }\n }\n };\n TimePicker.prototype.setCurrentDate = function (value) {\n if (isNullOrUndefined(this.checkDateValue(value))) {\n return null;\n }\n return new Date(YEAR, MONTH, DAY, value.getHours(), value.getMinutes(), value.getSeconds());\n };\n TimePicker.prototype.getTextFormat = function () {\n var time = 0;\n if (this.cldrTimeFormat().split(' ')[0] === 'a' || this.cldrTimeFormat().indexOf('a') === 0) {\n time = 1;\n }\n else if (this.cldrTimeFormat().indexOf('a') < 0) {\n var strArray = this.cldrTimeFormat().split(' ');\n for (var i = 0; i < strArray.length; i++) {\n if (strArray[i].toLowerCase().indexOf('h') >= 0) {\n time = i;\n break;\n }\n }\n }\n return time;\n };\n TimePicker.prototype.updateValue = function (value, event) {\n var val;\n if (this.isNullOrEmpty(value)) {\n this.resetState();\n }\n else {\n val = this.checkValue(value);\n if (this.strictMode) {\n // this case set previous value to the text box when set invalid date\n var inputVal = (val === null && value.trim().length > 0) ?\n this.previousState(this.prevDate) : this.inputElement.value;\n this.updateInputValue(inputVal);\n if (this.enableMask) {\n if (!inputVal) {\n this.updateInputValue(this.maskedDateValue);\n }\n if (isNullOrUndefined(val) && value !== this.maskedDateValue) {\n this.createMask();\n }\n if (isNullOrUndefined(val) && value === this.maskedDateValue) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n }\n }\n this.checkValueChange(event, typeof value === 'string' ? false : true);\n };\n TimePicker.prototype.previousState = function (date) {\n var value = this.getDateObject(date);\n for (var i = 0; i < this.timeCollections.length; i++) {\n if (+value === this.timeCollections[i]) {\n this.activeIndex = i;\n this.selectedElement = this.liCollections[i];\n this.valueWithMinutes = new Date(this.timeCollections[i]);\n break;\n }\n }\n return this.getValue(date);\n };\n TimePicker.prototype.resetState = function () {\n this.removeSelection();\n Input.setValue('', this.inputElement, this.floatLabelType, false);\n this.valueWithMinutes = this.activeIndex = null;\n if (!this.strictMode) {\n this.checkErrorState(null);\n }\n };\n TimePicker.prototype.objToString = function (val) {\n if (isNullOrUndefined(this.checkDateValue(val))) {\n return null;\n }\n else {\n return this.globalize.formatDate(val, { format: this.cldrTimeFormat(), type: 'time' });\n }\n };\n TimePicker.prototype.checkValue = function (value) {\n if (!this.isNullOrEmpty(value)) {\n var date = value instanceof Date ? value : this.getDateObject(value);\n return this.validateValue(date, value);\n }\n this.resetState();\n return this.valueWithMinutes = null;\n };\n TimePicker.prototype.validateValue = function (date, value) {\n var time;\n var val = this.validateMinMax(value, this.min, this.max);\n var newval = this.getDateObject(val);\n if (this.getFormattedValue(newval) !== this.getFormattedValue(this.value)) {\n this.valueWithMinutes = isNullOrUndefined(newval) ? null : newval;\n time = this.objToString(this.valueWithMinutes);\n }\n else {\n if (this.strictMode) {\n //for strict mode case, when value not present within a range. Reset the nearest range value.\n date = newval;\n }\n this.valueWithMinutes = this.checkDateValue(date);\n time = this.objToString(this.valueWithMinutes);\n }\n if (!this.strictMode && isNullOrUndefined(time)) {\n var value_1 = val.trim().length > 0 ? val : '';\n this.updateInputValue(value_1);\n if (this.enableMask) {\n if (!value_1) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n }\n else {\n this.updateInputValue(time);\n if (this.enableMask) {\n if (time === '') {\n this.updateInputValue(this.maskedDateValue);\n }\n if (isNullOrUndefined(time) && value !== this.maskedDateValue) {\n this.createMask();\n }\n if (isNullOrUndefined(time) && value === this.maskedDateValue) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n }\n return time;\n };\n TimePicker.prototype.createMask = function () {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n };\n TimePicker.prototype.findNextElement = function (event) {\n var textVal = (this.inputElement).value;\n var value = isNullOrUndefined(this.valueWithMinutes) ? this.createDateObj(textVal) :\n this.getDateObject(this.valueWithMinutes);\n var timeVal = null;\n var count = this.liCollections.length;\n var collections = this.timeCollections;\n if (!isNullOrUndefined(this.checkDateValue(value)) || !isNullOrUndefined(this.activeIndex)) {\n if (event.action === 'home') {\n var index = this.validLiElement(0);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n }\n else if (event.action === 'end') {\n var index = this.validLiElement(collections.length - 1, true);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n }\n else {\n if (event.action === 'down') {\n for (var i = 0; i < count; i++) {\n if (+value < this.timeCollections[i]) {\n var index = this.validLiElement(i);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n else if (i === count - 1) {\n var index = this.validLiElement(0);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n }\n }\n else {\n for (var i = count - 1; i >= 0; i--) {\n if (+value > this.timeCollections[i]) {\n var index = this.validLiElement(i, true);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n else if (i === 0) {\n var index = this.validLiElement(count - 1);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n }\n }\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.elementValue(isNullOrUndefined(timeVal) ? null : new Date(timeVal));\n }\n else {\n this.selectNextItem(event);\n }\n };\n TimePicker.prototype.selectNextItem = function (event) {\n var index = this.validLiElement(0, event.action === 'down' ? false : true);\n this.activeIndex = index;\n this.selectedElement = this.liCollections[index];\n this.elementValue(new Date(this.timeCollections[index]));\n };\n TimePicker.prototype.elementValue = function (value) {\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.checkValue(value);\n }\n };\n TimePicker.prototype.validLiElement = function (index, backward) {\n var elementIndex = null;\n var items = isNullOrUndefined(this.popupWrapper) ? this.liCollections :\n this.popupWrapper.querySelectorAll('.' + LISTCLASS);\n var isCheck = true;\n if (items.length) {\n if (backward) {\n for (var i = index; i >= 0; i--) {\n if (!items[i].classList.contains(DISABLED)) {\n elementIndex = i;\n break;\n }\n else if (i === 0) {\n if (isCheck) {\n index = i = items.length;\n isCheck = false;\n }\n }\n }\n }\n else {\n for (var i = index; i <= items.length - 1; i++) {\n if (!items[i].classList.contains(DISABLED)) {\n elementIndex = i;\n break;\n }\n else if (i === items.length - 1) {\n if (isCheck) {\n index = i = -1;\n isCheck = false;\n }\n }\n }\n }\n }\n return elementIndex;\n };\n TimePicker.prototype.keyHandler = function (event) {\n if (isNullOrUndefined(this.step) || this.step <= 0 || !isNullOrUndefined(this.inputWrapper)\n && this.inputWrapper.buttons[0].classList.contains(DISABLED)) {\n return;\n }\n var count = this.timeCollections.length;\n if (isNullOrUndefined(this.getActiveElement()) || this.getActiveElement().length === 0) {\n if (this.liCollections.length > 0) {\n if (isNullOrUndefined(this.value) && isNullOrUndefined(this.activeIndex)) {\n var index = this.validLiElement(0, event.action === 'down' ? false : true);\n this.activeIndex = index;\n this.selectedElement = this.liCollections[index];\n this.elementValue(new Date(this.timeCollections[index]));\n }\n else {\n this.findNextElement(event);\n }\n }\n else {\n this.findNextElement(event);\n }\n }\n else {\n var nextItem = void 0;\n if ((event.keyCode >= 37) && (event.keyCode <= 40)) {\n var index = (event.keyCode === 40 || event.keyCode === 39) ? ++this.activeIndex : --this.activeIndex;\n this.activeIndex = index = this.activeIndex === (count) ? 0 : this.activeIndex;\n this.activeIndex = index = this.activeIndex < 0 ? (count - 1) : this.activeIndex;\n this.activeIndex = index = this.validLiElement(this.activeIndex, (event.keyCode === 40 || event.keyCode === 39) ?\n false : true);\n nextItem = isNullOrUndefined(this.timeCollections[index]) ?\n this.timeCollections[0] : this.timeCollections[index];\n }\n else if (event.action === 'home') {\n var index = this.validLiElement(0);\n this.activeIndex = index;\n nextItem = this.timeCollections[index];\n }\n else if (event.action === 'end') {\n var index = this.validLiElement(count - 1, true);\n this.activeIndex = index;\n nextItem = this.timeCollections[index];\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.elementValue(new Date(nextItem));\n }\n this.isNavigate = true;\n this.setHover(this.selectedElement, NAVIGATION);\n this.setActiveDescendant();\n if (this.enableMask) {\n this.selectInputText();\n }\n if (this.isPopupOpen() && this.selectedElement !== null && (!event || event.type !== 'click')) {\n this.setScrollPosition();\n }\n };\n TimePicker.prototype.getCultureTimeObject = function (ld, c) {\n return getValue('main.' + c + '.dates.calendars.gregorian.timeFormats.short', ld);\n };\n TimePicker.prototype.getCultureDateObject = function (ld, c) {\n return getValue('main.' + c + '.dates.calendars.gregorian.dateFormats.short', ld);\n };\n TimePicker.prototype.wireListEvents = function () {\n EventHandler.add(this.listWrapper, 'click', this.onMouseClick, this);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n };\n TimePicker.prototype.unWireListEvents = function () {\n if (this.listWrapper) {\n EventHandler.remove(this.listWrapper, 'click', this.onMouseClick);\n if (!Browser.isDevice) {\n EventHandler.remove(this.listWrapper, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.listWrapper, 'mouseout', this.onMouseLeave);\n }\n }\n };\n TimePicker.prototype.valueProcess = function (event, value) {\n var result = (isNullOrUndefined(this.checkDateValue(value))) ? null : value;\n if (+this.prevDate !== +result) {\n this.initValue = result;\n this.changeEvent(event);\n }\n };\n TimePicker.prototype.changeEvent = function (e) {\n this.addSelection();\n this.updateInput(true, this.initValue);\n var eventArgs = {\n event: (e || null),\n value: this.value,\n text: (this.inputElement).value,\n isInteracted: !isNullOrUndefined(e),\n element: this.element\n };\n eventArgs.value = this.valueWithMinutes || this.getDateObject(this.inputElement.value);\n this.prevDate = this.valueWithMinutes || this.getDateObject(this.inputElement.value);\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n this.invalidValueString = null;\n this.checkErrorState(this.value);\n };\n TimePicker.prototype.updateInput = function (isUpdate, date) {\n if (isUpdate) {\n this.prevValue = this.getValue(this.prevDate);\n }\n this.prevDate = this.valueWithMinutes = date;\n if ((typeof date !== 'number') || (this.value && +new Date(+this.value).setMilliseconds(0)) !== +date) {\n this.setProperties({ value: date }, true);\n if (this.enableMask && this.value) {\n this.createMask();\n }\n }\n if (!this.strictMode && isNullOrUndefined(this.value) && this.invalidValueString) {\n this.checkErrorState(this.invalidValueString);\n this.updateInputValue(this.invalidValueString);\n }\n this.clearIconState();\n };\n TimePicker.prototype.setActiveDescendant = function () {\n if (!isNullOrUndefined(this.selectedElement) && this.value) {\n attributes(this.inputElement, { 'aria-activedescendant': this.selectedElement.getAttribute('id') });\n }\n else {\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n };\n TimePicker.prototype.removeSelection = function () {\n this.removeHover(HOVER);\n if (!isNullOrUndefined(this.popupWrapper)) {\n var items = this.popupWrapper.querySelectorAll('.' + SELECTED);\n if (items.length) {\n removeClass(items, SELECTED);\n items[0].removeAttribute('aria-selected');\n }\n }\n };\n TimePicker.prototype.removeHover = function (className) {\n var hoveredItem = this.getHoverItem(className);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, className);\n if (className === NAVIGATION) {\n hoveredItem[0].removeAttribute('aria-selected');\n }\n }\n };\n TimePicker.prototype.getHoverItem = function (className) {\n var hoveredItem;\n if (!isNullOrUndefined(this.popupWrapper)) {\n hoveredItem = this.popupWrapper.querySelectorAll('.' + className);\n }\n return hoveredItem;\n };\n TimePicker.prototype.setActiveClass = function () {\n if (!isNullOrUndefined(this.popupWrapper)) {\n var items = this.popupWrapper.querySelectorAll('.' + LISTCLASS);\n if (items.length) {\n for (var i = 0; i < items.length; i++) {\n if ((this.timeCollections[i] === +this.getDateObject(this.valueWithMinutes))) {\n items[i].setAttribute('aria-selected', 'true');\n this.selectedElement = items[i];\n this.activeIndex = i;\n break;\n }\n }\n }\n }\n };\n TimePicker.prototype.addSelection = function () {\n this.selectedElement = null;\n this.removeSelection();\n this.setActiveClass();\n if (!isNullOrUndefined(this.selectedElement)) {\n addClass([this.selectedElement], SELECTED);\n this.selectedElement.setAttribute('aria-selected', 'true');\n }\n };\n TimePicker.prototype.isValidLI = function (li) {\n return (li && li.classList.contains(LISTCLASS) && !li.classList.contains(DISABLED));\n };\n TimePicker.prototype.createDateObj = function (val) {\n var formatStr = null;\n var today = this.globalize.formatDate(new Date(), { format: formatStr, skeleton: 'short', type: 'date' });\n var value = null;\n if (typeof val === 'string') {\n if (val.toUpperCase().indexOf('AM') > -1 || val.toUpperCase().indexOf('PM') > -1) {\n today = this.defaultCulture.formatDate(new Date(), { format: formatStr, skeleton: 'short', type: 'date' });\n value = isNaN(+new Date(today + ' ' + val)) ? null : new Date(new Date(today + ' ' + val).setMilliseconds(0));\n if (isNullOrUndefined(value)) {\n value = this.timeParse(today, val);\n }\n }\n else {\n value = this.timeParse(today, val);\n }\n }\n else if (val instanceof Date) {\n value = val;\n }\n return value;\n };\n TimePicker.prototype.timeParse = function (today, val) {\n var value;\n value = this.globalize.parseDate(today + ' ' + val, {\n format: this.cldrDateFormat() + ' ' + this.cldrTimeFormat(), type: 'datetime'\n });\n value = isNullOrUndefined(value) ? this.globalize.parseDate(today + ' ' + val, {\n format: this.cldrDateFormat() + ' ' + this.dateToNumeric(), type: 'datetime'\n }) : value;\n value = isNullOrUndefined(value) ? value : new Date(value.setMilliseconds(0));\n return value;\n };\n TimePicker.prototype.createListItems = function () {\n var _this = this;\n this.listWrapper = this.createElement('div', { className: CONTENT, attrs: { 'tabindex': '-1' } });\n var start;\n var interval = this.step * 60000;\n var listItems = [];\n this.timeCollections = [];\n this.disableItemCollection = [];\n start = +(this.getDateObject(this.initMin).setMilliseconds(0));\n var end = +(this.getDateObject(this.initMax).setMilliseconds(0));\n while (end >= start) {\n this.timeCollections.push(start);\n listItems.push(this.globalize.formatDate(new Date(start), { format: this.cldrTimeFormat(), type: 'time' }));\n start += interval;\n }\n var listBaseOptions = {\n itemCreated: function (args) {\n var eventArgs = {\n element: args.item,\n text: args.text, value: _this.getDateObject(args.text), isDisabled: false\n };\n _this.trigger('itemRender', eventArgs, function (eventArgs) {\n if (eventArgs.isDisabled) {\n eventArgs.element.classList.add(DISABLED);\n }\n if (eventArgs.element.classList.contains(DISABLED)) {\n _this.disableItemCollection.push(eventArgs.element.getAttribute('data-value'));\n }\n });\n }\n };\n this.listTag = ListBase.createList(this.createElement, listItems, listBaseOptions, true);\n attributes(this.listTag, { 'role': 'listbox', 'aria-hidden': 'false', 'id': this.element.id + '_options', 'tabindex': '0' });\n append([this.listTag], this.listWrapper);\n };\n TimePicker.prototype.documentClickHandler = function (event) {\n var target = event.target;\n if ((!isNullOrUndefined(this.popupObj) && !isNullOrUndefined(this.inputWrapper) && (this.inputWrapper.container.contains(target) && event.type !== 'mousedown' ||\n (this.popupObj.element && this.popupObj.element.contains(target)))) && event.type !== 'touchstart') {\n event.preventDefault();\n }\n if (!(closest(target, '[id=\"' + this.popupObj.element.id + '\"]')) && target !== this.inputElement\n && target !== (this.inputWrapper && this.inputWrapper.buttons[0]) &&\n target !== (this.inputWrapper && this.inputWrapper.clearButton) &&\n target !== (this.inputWrapper && this.inputWrapper.container)\n && (!target.classList.contains('e-dlg-overlay'))) {\n if (this.isPopupOpen()) {\n this.hide();\n this.focusOut();\n }\n }\n else if (target !== this.inputElement) {\n if (!Browser.isDevice) {\n this.isPreventBlur = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.inputElement)\n && (target === this.popupWrapper);\n }\n }\n };\n TimePicker.prototype.setEnableRtl = function () {\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n if (this.popupObj) {\n this.popupObj.enableRtl = this.enableRtl;\n this.popupObj.dataBind();\n }\n };\n TimePicker.prototype.setEnable = function () {\n Input.setEnabled(this.enabled, this.inputElement, this.floatLabelType);\n if (this.enabled) {\n removeClass([this.inputWrapper.container], DISABLED);\n attributes(this.inputElement, { 'aria-disabled': 'false' });\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.hide();\n addClass([this.inputWrapper.container], DISABLED);\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n this.inputElement.tabIndex = -1;\n }\n };\n TimePicker.prototype.getProperty = function (date, val) {\n if (val === 'min') {\n this.initMin = this.checkDateValue(new Date(this.checkInValue(date.min)));\n this.setProperties({ min: this.initMin }, true);\n }\n else {\n this.initMax = this.checkDateValue(new Date(this.checkInValue(date.max)));\n this.setProperties({ max: this.initMax }, true);\n }\n if (this.inputElement.value === '') {\n this.validateMinMax(this.value, this.min, this.max);\n }\n else {\n this.checkValue(this.inputElement.value);\n }\n this.checkValueChange(null, false);\n };\n TimePicker.prototype.inputBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n // IE popup closing issue when click over the scrollbar\n if (this.isPreventBlur && this.isPopupOpen()) {\n this.inputElement.focus();\n return;\n }\n this.closePopup(0, e);\n if (this.enableMask && this.maskedDateValue && this.placeholder && this.floatLabelType !== 'Always') {\n if (this.inputElement.value === this.maskedDateValue && !this.value && (this.floatLabelType === 'Auto' || this.floatLabelType === 'Never' || this.placeholder)) {\n this.updateInputValue('');\n }\n }\n removeClass([this.inputWrapper.container], [FOCUS]);\n if (this.getText() !== this.inputElement.value) {\n this.updateValue((this.inputElement).value, e);\n }\n else if (this.inputElement.value.trim().length === 0) {\n this.resetState();\n }\n this.cursorDetails = null;\n this.isNavigate = false;\n if (this.inputElement.value === '') {\n this.invalidValueString = null;\n }\n var blurArguments = {\n model: this\n };\n this.trigger('blur', blurArguments);\n };\n /**\n * Focuses out the TimePicker textbox element.\n *\n * @returns {void}\n */\n TimePicker.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement) {\n this.inputElement.blur();\n removeClass([this.inputWrapper.container], [FOCUS]);\n var blurArguments = {\n model: this\n };\n this.trigger('blur', blurArguments);\n }\n };\n TimePicker.prototype.isPopupOpen = function () {\n if (this.popupWrapper && this.popupWrapper.classList.contains('' + ROOT)) {\n return true;\n }\n return false;\n };\n TimePicker.prototype.inputFocusHandler = function () {\n if (!this.enabled) {\n return;\n }\n var focusArguments = {\n model: this\n };\n if (!this.readonly && !Browser.isDevice && !this.enableMask) {\n this.selectInputText();\n }\n if (this.enableMask && !this.inputElement.value && this.placeholder) {\n if (this.maskedDateValue && !this.value && (this.floatLabelType === 'Auto' || this.floatLabelType === 'Never' || this.placeholder)) {\n this.updateInputValue(this.maskedDateValue);\n this.inputElement.selectionStart = 0;\n this.inputElement.selectionEnd = this.inputElement.value.length;\n }\n }\n this.trigger('focus', focusArguments);\n this.clearIconState();\n if (this.openOnFocus) {\n this.show();\n }\n };\n /**\n * Focused the TimePicker textbox element.\n *\n * @returns {void}\n */\n TimePicker.prototype.focusIn = function () {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n }\n };\n /**\n * Hides the TimePicker popup.\n *\n * @returns {void}\n\n */\n TimePicker.prototype.hide = function () {\n this.closePopup(100, null);\n this.clearIconState();\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Opens the popup to show the list items.\n *\n * @returns {void}\n\n */\n TimePicker.prototype.show = function (event) {\n var _this = this;\n if ((this.enabled && this.readonly) || !this.enabled || this.popupWrapper) {\n return;\n }\n else {\n this.popupCreation();\n if (Browser.isDevice && this.listWrapper) {\n this.modal = this.createElement('div');\n this.modal.className = '' + ROOT + ' e-time-modal';\n document.body.className += ' ' + OVERFLOW;\n document.body.appendChild(this.modal);\n }\n if (Browser.isDevice) {\n this.mobileTimePopupWrap = this.createElement('div', { className: 'e-timepicker-mob-popup-wrap' });\n document.body.appendChild(this.mobileTimePopupWrap);\n }\n this.openPopupEventArgs = {\n popup: this.popupObj || null,\n cancel: false,\n event: event || null,\n name: 'open',\n appendTo: Browser.isDevice ? this.mobileTimePopupWrap : document.body\n };\n var eventArgs = this.openPopupEventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.openPopupEventArgs = eventArgs;\n if (!_this.openPopupEventArgs.cancel && !_this.inputWrapper.buttons[0].classList.contains(DISABLED)) {\n _this.openPopupEventArgs.appendTo.appendChild(_this.popupWrapper);\n _this.popupAlignment(_this.openPopupEventArgs);\n _this.setScrollPosition();\n if (!Browser.isDevice) {\n _this.inputElement.focus();\n }\n var openAnimation = {\n name: 'FadeIn',\n duration: ANIMATIONDURATION\n };\n _this.popupObj.refreshPosition(_this.anchor);\n if (_this.zIndex === 1000) {\n _this.popupObj.show(new Animation(openAnimation), _this.element);\n }\n else {\n _this.popupObj.show(new Animation(openAnimation), null);\n }\n _this.setActiveDescendant();\n attributes(_this.inputElement, { 'aria-expanded': 'true' });\n attributes(_this.inputElement, { 'aria-owns': _this.inputElement.id + '_options' });\n attributes(_this.inputElement, { 'aria-controls': _this.inputElement.id });\n addClass([_this.inputWrapper.container], FOCUS);\n EventHandler.add(document, 'mousedown touchstart', _this.documentClickHandler, _this);\n _this.setOverlayIndex(_this.mobileTimePopupWrap, _this.popupObj.element, _this.modal, Browser.isDevice);\n }\n else {\n _this.popupObj.destroy();\n _this.popupWrapper = _this.listTag = undefined;\n _this.liCollections = _this.timeCollections = _this.disableItemCollection = [];\n _this.popupObj = null;\n }\n });\n if (Browser.isDevice) {\n var dlgOverlay = this.createElement('div', { className: 'e-dlg-overlay' });\n dlgOverlay.style.zIndex = (this.zIndex - 1).toString();\n this.mobileTimePopupWrap.appendChild(dlgOverlay);\n }\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n TimePicker.prototype.setOverlayIndex = function (popupWrapper, timePopupElement, modal, isDevice) {\n if (isDevice && !isNullOrUndefined(timePopupElement) && !isNullOrUndefined(modal) && !isNullOrUndefined(popupWrapper)) {\n var index = parseInt(timePopupElement.style.zIndex, 10) ? parseInt(timePopupElement.style.zIndex, 10) : 1000;\n modal.style.zIndex = (index - 1).toString();\n popupWrapper.style.zIndex = index.toString();\n }\n };\n TimePicker.prototype.formatValues = function (type) {\n var value;\n if (typeof type === 'number') {\n value = formatUnit(type);\n }\n else if (typeof type === 'string') {\n value = (type.match(/px|%|em/)) ? type : isNaN(parseInt(type, 10)) ? type : formatUnit(type);\n }\n return value;\n };\n TimePicker.prototype.popupAlignment = function (args) {\n args.popup.position.X = this.formatValues(args.popup.position.X);\n args.popup.position.Y = this.formatValues(args.popup.position.Y);\n if (!isNaN(parseFloat(args.popup.position.X)) || !isNaN(parseFloat(args.popup.position.Y))) {\n this.popupObj.relateTo = this.anchor = document.body;\n this.popupObj.targetType = 'container';\n }\n if (!isNaN(parseFloat(args.popup.position.X))) {\n this.popupObj.offsetX = parseFloat(args.popup.position.X);\n }\n if (!isNaN(parseFloat(args.popup.position.Y))) {\n this.popupObj.offsetY = parseFloat(args.popup.position.Y);\n }\n if (!Browser.isDevice) {\n switch (args.popup.position.X) {\n case 'left':\n break;\n case 'right':\n args.popup.offsetX = this.containerStyle.width;\n break;\n case 'center':\n args.popup.offsetX = -(this.containerStyle.width / 2);\n break;\n }\n switch (args.popup.position.Y) {\n case 'top':\n break;\n case 'bottom':\n break;\n case 'center':\n args.popup.offsetY = -(this.containerStyle.height / 2);\n break;\n }\n if (args.popup.position.X === 'center' && args.popup.position.Y === 'center') {\n this.popupObj.relateTo = this.inputWrapper.container;\n this.anchor = this.inputElement;\n this.popupObj.targetType = 'relative';\n }\n }\n else {\n if (args.popup.position.X === 'center' && args.popup.position.Y === 'center') {\n this.popupObj.relateTo = this.anchor = document.body;\n this.popupObj.offsetY = 0;\n this.popupObj.targetType = 'container';\n this.popupObj.collision = { X: 'fit', Y: 'fit' };\n }\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string}\n */\n TimePicker.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * To get component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n TimePicker.prototype.getModuleName = function () {\n return 'timepicker';\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TimePickerModel} newProp - Returns the dynamic property value of the component.\n * @param {TimePickerModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n TimePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputElement);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement, this.floatLabelType);\n if (this.readonly) {\n this.hide();\n }\n this.setTimeAllowEdit();\n break;\n case 'enabled':\n this.setProperties({ enabled: newProp.enabled }, true);\n this.setEnable();\n break;\n case 'allowEdit':\n this.setTimeAllowEdit();\n break;\n case 'enableRtl':\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n this.setEnableRtl();\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n this.setZIndex();\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkAttributes(true);\n break;\n case 'min':\n case 'max':\n this.getProperty(newProp, prop);\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.inputElement, this.inputWrapper);\n this.bindClearEvent();\n break;\n case 'locale':\n this.setProperties({ locale: newProp.locale }, true);\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n if (this.timeOptions && this.timeOptions.placeholder == null) {\n this.updatePlaceHolder();\n }\n this.setValue(this.value);\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'width':\n setStyleAttribute(this.inputWrapper.container, { 'width': this.setWidth(newProp.width) });\n this.containerStyle = this.inputWrapper.container.getBoundingClientRect();\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'format':\n this.setProperties({ format: newProp.format }, true);\n this.checkTimeFormat();\n this.setValue(this.value);\n if (this.enableMask) {\n this.createMask();\n if (!this.value) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n break;\n case 'value':\n this.invalidValueString = null;\n this.checkInvalidValue(newProp.value);\n newProp.value = this.value;\n if (!this.invalidValueString) {\n if (typeof newProp.value === 'string') {\n this.setProperties({ value: this.checkDateValue(new Date(newProp.value)) }, true);\n newProp.value = this.value;\n }\n else {\n if ((newProp.value && +new Date(+newProp.value).setMilliseconds(0)) !== +this.value) {\n newProp.value = this.checkDateValue(new Date('' + newProp.value));\n }\n }\n this.initValue = newProp.value;\n newProp.value = this.compareFormatChange(this.checkValue(newProp.value));\n }\n else {\n this.updateInputValue(this.invalidValueString);\n this.checkErrorState(this.invalidValueString);\n }\n if (this.enableMask && isNullOrUndefined(newProp.value)) {\n this.updateInputValue(this.maskedDateValue);\n this.checkErrorState(this.maskedDateValue);\n }\n this.checkValueChange(null, false);\n if (this.isPopupOpen()) {\n this.setScrollPosition();\n }\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'strictMode':\n this.invalidValueString = null;\n if (newProp.strictMode) {\n this.checkErrorState(null);\n }\n this.setProperties({ strictMode: newProp.strictMode }, true);\n this.checkValue((this.inputElement).value);\n this.checkValueChange(null, false);\n break;\n case 'scrollTo':\n if (this.checkDateValue(new Date(this.checkInValue(newProp.scrollTo)))) {\n if (this.popupWrapper) {\n this.setScrollTo();\n }\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkInValue(newProp.scrollTo))) }, true);\n }\n else {\n this.setProperties({ scrollTo: null }, true);\n }\n break;\n case 'enableMask':\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n this.updateInputValue(this.maskedDateValue);\n }\n else {\n if (this.inputElement.value === this.maskedDateValue) {\n this.updateInputValue('');\n }\n }\n break;\n }\n }\n };\n TimePicker.prototype.checkInValue = function (inValue) {\n if (inValue instanceof Date) {\n return (inValue.toUTCString());\n }\n else {\n return ('' + inValue);\n }\n };\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"strictMode\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"format\", void 0);\n __decorate([\n Property(true)\n ], TimePicker.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"fullScreenMode\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"readonly\", void 0);\n __decorate([\n Property({})\n ], TimePicker.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('Never')\n ], TimePicker.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"placeholder\", void 0);\n __decorate([\n Property(1000)\n ], TimePicker.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(true)\n ], TimePicker.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(30)\n ], TimePicker.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"scrollTo\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"min\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"max\", void 0);\n __decorate([\n Property(true)\n ], TimePicker.prototype, \"allowEdit\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"openOnFocus\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"enableMask\", void 0);\n __decorate([\n Property({ day: 'day', month: 'month', year: 'year', hour: 'hour', minute: 'minute', second: 'second', dayOfTheWeek: 'day of the week' })\n ], TimePicker.prototype, \"maskPlaceholder\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"itemRender\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"cleared\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"focus\", void 0);\n TimePicker = __decorate([\n NotifyPropertyChanges\n ], TimePicker);\n return TimePicker;\n}(Component));\nexport { TimePicker };\n/* eslint-enable @typescript-eslint/no-explicit-any */\n","import { AutoComplete } from '@syncfusion/ej2-dropdowns';\nimport { DataManager, Query, Predicate } from '@syncfusion/ej2-data';\nimport { Browser, isNullOrUndefined, extend, getValue } from '@syncfusion/ej2-base';\nimport { getZIndexCalcualtion, eventPromise } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\n/**\n * `string filterui` render string column.\n *\n * @hidden\n */\nvar StringFilterUI = /** @class */ (function () {\n function StringFilterUI(parent, serviceLocator, filterSettings) {\n this.parent = parent;\n this.serLocator = serviceLocator;\n this.filterSettings = filterSettings;\n if (this.parent) {\n this.parent.on(events.filterMenuClose, this.destroy, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n }\n StringFilterUI.prototype.create = function (args) {\n this.instance = this.parent.createElement('input', { className: 'e-flmenu-input', id: 'strui-' + args.column.uid });\n args.target.appendChild(this.instance);\n this.dialogObj = args.dialogObj;\n this.processDataOperation(args);\n };\n StringFilterUI.prototype.processDataOperation = function (args) {\n var _this = this;\n if (args.column.isForeignColumn()) {\n this.parent.getDataModule().dataManager.executeQuery(this.parent.getDataModule().generateQuery(true))\n .then(function (result) { _this.getAutoCompleteOptions(args, result); });\n return;\n }\n this.getAutoCompleteOptions(args);\n };\n StringFilterUI.prototype.getAutoCompleteOptions = function (args, result) {\n var isForeignColumn = args.column.isForeignColumn();\n var foreignColumnQuery;\n if (isForeignColumn) {\n var filteredData = CheckBoxFilterBase.getDistinct(result.result, args.column.field)\n .records || [];\n var filterQuery = void 0;\n for (var i = 0; i < filteredData.length; i++) {\n if (filterQuery) {\n filterQuery = filterQuery.or(args.column.field, 'contains', filteredData[parseInt(i.toString(), 10)][args.column.field], this.parent\n .filterSettings.enableCaseSensitivity, this.parent.filterSettings.ignoreAccent);\n }\n else {\n filterQuery = new Predicate(args.column.field, 'contains', filteredData[parseInt(i.toString(), 10)][args.column.field], this.parent\n .filterSettings.enableCaseSensitivity, this.parent.filterSettings.ignoreAccent);\n }\n }\n foreignColumnQuery = new Query().where(filterQuery);\n foreignColumnQuery.params = this.parent.query.params;\n }\n var dataSource = isForeignColumn ? args.column.dataSource : this.parent.dataSource;\n var fields = { value: isForeignColumn ? args.column.foreignKeyValue : args.column.field };\n var autoComplete = new AutoComplete(extend({\n dataSource: dataSource instanceof DataManager ? dataSource : new DataManager(dataSource),\n fields: fields,\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n query: isForeignColumn ? foreignColumnQuery : this.parent.getDataModule().generateQuery(true, true),\n sortOrder: 'Ascending',\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n autofill: true,\n placeholder: args.localizeText.getConstant('EnterValue'),\n actionBegin: function () {\n if (this.query.queries.length && this.query.queries[0].fn === 'onWhere' && this.query.queries[0].e\n && this.query.queries[0].e.predicates) {\n for (var i = 0; i < this.query.queries[0].e.predicates.length; i++) {\n if (this.properties.fields.value === this.query.queries[0].e.predicates[\"\" + i].field) {\n this.query.queries[0].e.predicates.splice(i, 1);\n i = i - 1;\n }\n }\n if (!this.query.queries[0].e.predicates.length) {\n this.query.queries.splice(0, 1);\n }\n }\n }\n }, args.column.filter.params));\n this.acFocus = this.focus(autoComplete, args);\n this.acComplete = this.actionComplete(autoComplete);\n this.acOpen = this.openPopup.bind(this);\n autoComplete.addEventListener(literals.focus, this.acFocus);\n autoComplete.addEventListener(literals['open'], this.acOpen);\n autoComplete.addEventListener(events.actionComplete, this.acComplete);\n if (dataSource && 'result' in dataSource) {\n var query = this.parent.getQuery ? this.parent.getQuery().clone() : new Query();\n var defObj = eventPromise({ requestType: 'stringfilterrequest' }, query);\n this.parent.trigger(events.dataStateChange, defObj.state);\n var def = defObj.deffered;\n def.promise.then(function (e) {\n autoComplete.dataSource = new DataManager(e);\n });\n }\n this.actObj = autoComplete;\n this.actObj.appendTo(this.instance);\n if (isForeignColumn) {\n this.parent.filterModule.filterModule.afterRenderFilterUI();\n }\n };\n StringFilterUI.prototype.write = function (args) {\n if (args.filteredValue !== '' && !isNullOrUndefined(args.filteredValue)) {\n var struiObj = document.querySelector('#strui-' + args.column.uid).ej2_instances[0];\n struiObj.value = args.filteredValue;\n }\n };\n StringFilterUI.prototype.read = function (element, column, filterOptr, filterObj) {\n var actuiObj = document.querySelector('#strui-' + column.uid).ej2_instances[0];\n if (Browser.isDevice) {\n actuiObj.hidePopup();\n actuiObj.focusOut();\n }\n var filterValue = actuiObj.value;\n if (isNullOrUndefined(filterValue) || filterValue === '') {\n filterValue = null;\n }\n filterObj.filterByColumn(column.field, filterOptr, filterValue, 'and', this.parent.filterSettings.enableCaseSensitivity);\n };\n StringFilterUI.prototype.openPopup = function (args) {\n getZIndexCalcualtion(args, this.dialogObj);\n };\n StringFilterUI.prototype.focus = function (actObj, args) {\n return function () {\n actObj.filterType = args.getOptrInstance.getFlOperator();\n };\n };\n StringFilterUI.prototype.actionComplete = function (actObj) {\n return function (e) {\n e.result = e.result.filter(function (obj, index, arr) {\n return arr.map(function (mapObj) {\n return (getValue(actObj.fields.value, mapObj));\n }).indexOf(getValue((actObj.fields.value), obj)) === index;\n });\n };\n };\n StringFilterUI.prototype.destroy = function () {\n if (!this.actObj || this.actObj.isDestroyed) {\n return;\n }\n this.actObj.removeEventListener(literals.focus, this.acFocus);\n this.actObj.removeEventListener(literals['open'], this.acOpen);\n this.actObj.removeEventListener(events.actionComplete, this.acComplete);\n this.actObj.destroy();\n this.parent.off(events.filterMenuClose, this.destroy);\n this.parent.off(events.destroy, this.destroy);\n };\n return StringFilterUI;\n}());\nexport { StringFilterUI };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, EventHandler, Property, Event, Browser, L10n, getUniqueID } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { attributes, addClass, removeClass, detach, closest } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, getValue, formatUnit, setValue, merge } from '@syncfusion/ej2-base';\nimport { Internationalization, getNumericObject } from '@syncfusion/ej2-base';\nimport { Input } from '../input/input';\nvar ROOT = 'e-control-wrapper e-numeric';\nvar SPINICON = 'e-input-group-icon';\nvar SPINUP = 'e-spin-up';\nvar SPINDOWN = 'e-spin-down';\nvar ERROR = 'e-error';\nvar INCREMENT = 'increment';\nvar DECREMENT = 'decrement';\nvar INTREGEXP = new RegExp('^(-)?(\\\\d*)$');\nvar DECIMALSEPARATOR = '.';\nvar COMPONENT = 'e-numerictextbox';\nvar CONTROL = 'e-control';\nvar NUMERIC_FOCUS = 'e-input-focus';\nvar HIDDENELEMENT = 'e-numeric-hidden';\nvar wrapperAttributes = ['title', 'style', 'class'];\nvar selectionTimeOut = 0;\n/**\n * Represents the NumericTextBox component that allows the user to enter only numeric values.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar NumericTextBox = /** @class */ (function (_super) {\n __extends(NumericTextBox, _super);\n /**\n *\n * @param {NumericTextBoxModel} options - Specifies the NumericTextBox model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function NumericTextBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.preventChange = false;\n _this.isDynamicChange = false;\n _this.numericOptions = options;\n return _this;\n }\n NumericTextBox.prototype.preRender = function () {\n this.isPrevFocused = false;\n this.decimalSeparator = '.';\n // eslint-disable-next-line no-useless-escape\n this.intRegExp = new RegExp('/^(-)?(\\d*)$/');\n this.isCalled = false;\n var ejInstance = getValue('ej2_instances', this.element);\n this.cloneElement = this.element.cloneNode(true);\n removeClass([this.cloneElement], [CONTROL, COMPONENT, 'e-lib']);\n this.angularTagName = null;\n this.formEle = closest(this.element, 'form');\n if (this.element.tagName === 'EJS-NUMERICTEXTBOX') {\n this.angularTagName = this.element.tagName;\n var input = this.createElement('input');\n var index = 0;\n for (index; index < this.element.attributes.length; index++) {\n var attributeName = this.element.attributes[index].nodeName;\n if (attributeName !== 'id' && attributeName !== 'class') {\n input.setAttribute(this.element.attributes[index].nodeName, this.element.attributes[index].nodeValue);\n input.innerHTML = this.element.innerHTML;\n }\n else if (attributeName === 'class') {\n input.setAttribute(attributeName, this.element.className.split(' ').filter(function (item) { return item.indexOf('ng-') !== 0; }).join(' '));\n }\n }\n if (this.element.hasAttribute('name')) {\n this.element.removeAttribute('name');\n }\n this.element.classList.remove('e-control', 'e-numerictextbox');\n this.element.appendChild(input);\n this.element = input;\n setValue('ej2_instances', ejInstance, this.element);\n }\n attributes(this.element, { 'role': 'spinbutton', 'tabindex': '0', 'autocomplete': 'off' });\n var localeText = {\n incrementTitle: 'Increment value', decrementTitle: 'Decrement value', placeholder: this.placeholder\n };\n this.l10n = new L10n('numerictextbox', localeText, this.locale);\n if (this.l10n.getConstant('placeholder') !== '') {\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n }\n if (!this.element.hasAttribute('id')) {\n this.element.setAttribute('id', getUniqueID('numerictextbox'));\n }\n this.isValidState = true;\n this.inputStyle = null;\n this.inputName = null;\n this.cultureInfo = {};\n this.initCultureInfo();\n this.initCultureFunc();\n this.prevValue = this.value;\n this.updateHTMLAttrToElement();\n this.checkAttributes(false);\n if (this.formEle) {\n this.inputEleValue = this.value;\n }\n this.validateMinMax();\n this.validateStep();\n if (this.placeholder === null) {\n this.updatePlaceholder();\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n NumericTextBox.prototype.render = function () {\n if (this.element.tagName.toLowerCase() === 'input') {\n this.createWrapper();\n if (this.showSpinButton) {\n this.spinBtnCreation();\n }\n this.setElementWidth(this.width);\n if (!this.container.classList.contains('e-input-group')) {\n this.container.classList.add('e-input-group');\n }\n this.changeValue(this.value === null || isNaN(this.value) ?\n null : this.strictMode ? this.trimValue(this.value) : this.value);\n this.wireEvents();\n if (this.value !== null && !isNaN(this.value)) {\n if (this.decimals) {\n this.setProperties({ value: this.roundNumber(this.value, this.decimals) }, true);\n }\n }\n if (this.element.getAttribute('value') || this.value) {\n this.element.setAttribute('value', this.element.value);\n this.hiddenInput.setAttribute('value', this.hiddenInput.value);\n }\n this.elementPrevValue = this.element.value;\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n if (!this.element.hasAttribute('aria-labelledby') && !this.element.hasAttribute('placeholder')) {\n this.element.setAttribute('aria-label', 'numerictextbox');\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n }\n };\n NumericTextBox.prototype.checkAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['value', 'min', 'max', 'step', 'disabled', 'readonly', 'style', 'name', 'placeholder'];\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.element.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.element.getAttribute(prop) === 'disabled' || this.element.getAttribute(prop) === ''\n || this.element.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.element.getAttribute(prop) === 'readonly' || this.element.getAttribute(prop) === ''\n || this.element.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.element.placeholder }, !isDynamic);\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['value'] === undefined)) || isDynamic) {\n var setNumber = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n this.setProperties(setValue(prop, setNumber, {}), !isDynamic);\n }\n break;\n case 'min':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['min'] === undefined)) || isDynamic) {\n var minValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (minValue !== null && !isNaN(minValue)) {\n this.setProperties(setValue(prop, minValue, {}), !isDynamic);\n }\n }\n break;\n case 'max':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['max'] === undefined)) || isDynamic) {\n var maxValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (maxValue !== null && !isNaN(maxValue)) {\n this.setProperties(setValue(prop, maxValue, {}), !isDynamic);\n }\n }\n break;\n case 'step':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['step'] === undefined)) || isDynamic) {\n var stepValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (stepValue !== null && !isNaN(stepValue)) {\n this.setProperties(setValue(prop, stepValue, {}), !isDynamic);\n }\n }\n break;\n case 'style':\n this.inputStyle = this.element.getAttribute(prop);\n break;\n case 'name':\n this.inputName = this.element.getAttribute(prop);\n break;\n default:\n {\n var value = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if ((value !== null && !isNaN(value)) || (prop === 'value')) {\n this.setProperties(setValue(prop, value, {}), true);\n }\n }\n break;\n }\n }\n }\n };\n NumericTextBox.prototype.updatePlaceholder = function () {\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n };\n NumericTextBox.prototype.initCultureFunc = function () {\n this.instance = new Internationalization(this.locale);\n };\n NumericTextBox.prototype.initCultureInfo = function () {\n this.cultureInfo.format = this.format;\n if (getValue('currency', this) !== null) {\n setValue('currency', this.currency, this.cultureInfo);\n this.setProperties({ currencyCode: this.currency }, true);\n }\n };\n /* Wrapper creation */\n NumericTextBox.prototype.createWrapper = function () {\n var updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = this.getNumericValidClassList(this.cssClass);\n }\n var inputObj = Input.createInput({\n element: this.element,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValue,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton,\n enabled: this.enabled\n }\n }, this.createElement);\n this.inputWrapper = inputObj;\n this.container = inputObj.container;\n this.container.setAttribute('class', ROOT + ' ' + this.container.getAttribute('class'));\n this.updateHTMLAttrToWrapper();\n if (this.readonly) {\n attributes(this.element, { 'aria-readonly': 'true' });\n }\n this.hiddenInput = (this.createElement('input', { attrs: { type: 'text',\n 'validateHidden': 'true', 'aria-label': 'hidden', 'class': HIDDENELEMENT } }));\n this.inputName = this.inputName !== null ? this.inputName : this.element.id;\n this.element.removeAttribute('name');\n if (this.isAngular && this.angularTagName === 'EJS-NUMERICTEXTBOX' && this.cloneElement.id.length > 0) {\n attributes(this.hiddenInput, { 'name': this.cloneElement.id });\n }\n else {\n attributes(this.hiddenInput, { 'name': this.inputName });\n }\n this.container.insertBefore(this.hiddenInput, this.container.childNodes[1]);\n this.updateDataAttribute(false);\n if (this.inputStyle !== null) {\n attributes(this.container, { 'style': this.inputStyle });\n }\n };\n NumericTextBox.prototype.updateDataAttribute = function (isDynamic) {\n var attr = {};\n if (!isDynamic) {\n for (var a = 0; a < this.element.attributes.length; a++) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n else {\n attr = this.htmlAttributes;\n }\n for (var _i = 0, _a = Object.keys(attr); _i < _a.length; _i++) {\n var key = _a[_i];\n if (key.indexOf('data') === 0) {\n this.hiddenInput.setAttribute(key, attr[\"\" + key]);\n }\n }\n };\n NumericTextBox.prototype.updateHTMLAttrToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (wrapperAttributes.indexOf(pro) < 0) {\n this.element.setAttribute(pro, this.htmlAttributes[\"\" + pro]);\n }\n }\n }\n };\n NumericTextBox.prototype.updateCssClass = function (newClass, oldClass) {\n Input.setCssClass(this.getNumericValidClassList(newClass), [this.container], this.getNumericValidClassList(oldClass));\n };\n NumericTextBox.prototype.getNumericValidClassList = function (numericClassName) {\n var result = numericClassName;\n if (!isNullOrUndefined(numericClassName) && numericClassName !== '') {\n result = (numericClassName.replace(/\\s+/g, ' ')).trim();\n }\n return result;\n };\n NumericTextBox.prototype.updateHTMLAttrToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (wrapperAttributes.indexOf(pro) > -1) {\n if (pro === 'class') {\n var updatedClassValue = this.getNumericValidClassList(this.htmlAttributes[\"\" + pro]);\n if (updatedClassValue !== '') {\n addClass([this.container], updatedClassValue.split(' '));\n }\n }\n else if (pro === 'style') {\n var numericStyle = this.container.getAttribute(pro);\n numericStyle = !isNullOrUndefined(numericStyle) ? (numericStyle + this.htmlAttributes[\"\" + pro]) :\n this.htmlAttributes[\"\" + pro];\n this.container.setAttribute(pro, numericStyle);\n }\n else {\n this.container.setAttribute(pro, this.htmlAttributes[\"\" + pro]);\n }\n }\n }\n }\n };\n NumericTextBox.prototype.setElementWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n /* Spinner creation */\n NumericTextBox.prototype.spinBtnCreation = function () {\n this.spinDown = Input.appendSpan(SPINICON + ' ' + SPINDOWN, this.container, this.createElement);\n attributes(this.spinDown, {\n 'title': this.l10n.getConstant('decrementTitle')\n });\n this.spinUp = Input.appendSpan(SPINICON + ' ' + SPINUP, this.container, this.createElement);\n attributes(this.spinUp, {\n 'title': this.l10n.getConstant('incrementTitle')\n });\n this.wireSpinBtnEvents();\n };\n NumericTextBox.prototype.validateMinMax = function () {\n if (!(typeof (this.min) === 'number' && !isNaN(this.min))) {\n this.setProperties({ min: -(Number.MAX_VALUE) }, true);\n }\n if (!(typeof (this.max) === 'number' && !isNaN(this.max))) {\n this.setProperties({ max: Number.MAX_VALUE }, true);\n }\n if (this.decimals !== null) {\n if (this.min !== -(Number.MAX_VALUE)) {\n this.setProperties({ min: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.min)) }, true);\n }\n if (this.max !== (Number.MAX_VALUE)) {\n this.setProperties({ max: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.max)) }, true);\n }\n }\n this.setProperties({ min: this.min > this.max ? this.max : this.min }, true);\n if (this.min !== -(Number.MAX_VALUE)) {\n attributes(this.element, { 'aria-valuemin': this.min.toString() });\n }\n if (this.max !== (Number.MAX_VALUE)) {\n attributes(this.element, { 'aria-valuemax': this.max.toString() });\n }\n };\n NumericTextBox.prototype.formattedValue = function (decimals, value) {\n return this.instance.getNumberFormat({\n maximumFractionDigits: decimals,\n minimumFractionDigits: decimals, useGrouping: false\n })(value);\n };\n NumericTextBox.prototype.validateStep = function () {\n if (this.decimals !== null) {\n this.setProperties({ step: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.step)) }, true);\n }\n };\n NumericTextBox.prototype.action = function (operation, event) {\n this.isInteract = true;\n var value = this.isFocused ? this.instance.getNumberParser({ format: 'n' })(this.element.value) : this.value;\n this.changeValue(this.performAction(value, this.step, operation));\n this.raiseChangeEvent(event);\n };\n NumericTextBox.prototype.checkErrorClass = function () {\n if (this.isValidState) {\n removeClass([this.container], ERROR);\n }\n else {\n addClass([this.container], ERROR);\n }\n attributes(this.element, { 'aria-invalid': this.isValidState ? 'false' : 'true' });\n };\n NumericTextBox.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n };\n NumericTextBox.prototype.resetHandler = function (e) {\n e.preventDefault();\n if (!(this.inputWrapper.clearButton.classList.contains('e-clear-icon-hide')) || this.inputWrapper.container.classList.contains('e-static-clear')) {\n this.clear(e);\n }\n this.isInteract = true;\n this.raiseChangeEvent(e);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n NumericTextBox.prototype.clear = function (event) {\n this.setProperties({ value: null }, true);\n this.setElementValue('');\n this.hiddenInput.value = '';\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.resetFormHandler = function () {\n if (this.element.tagName === 'EJS-NUMERICTEXTBOX') {\n this.updateValue(null);\n }\n else {\n this.updateValue(this.inputEleValue);\n }\n };\n NumericTextBox.prototype.setSpinButton = function () {\n if (!isNullOrUndefined(this.spinDown)) {\n attributes(this.spinDown, {\n 'title': this.l10n.getConstant('decrementTitle'),\n 'aria-label': this.l10n.getConstant('decrementTitle')\n });\n }\n if (!isNullOrUndefined(this.spinUp)) {\n attributes(this.spinUp, {\n 'title': this.l10n.getConstant('incrementTitle'),\n 'aria-label': this.l10n.getConstant('incrementTitle')\n });\n }\n };\n NumericTextBox.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'blur', this.focusOutHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyDownHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'input', this.inputHandler, this);\n EventHandler.add(this.element, 'keypress', this.keyPressHandler, this);\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n EventHandler.add(this.element, 'paste', this.pasteHandler, this);\n if (this.enabled) {\n this.bindClearEvent();\n if (this.formEle) {\n EventHandler.add(this.formEle, 'reset', this.resetFormHandler, this);\n }\n }\n };\n NumericTextBox.prototype.wireSpinBtnEvents = function () {\n /* bind spin button events */\n EventHandler.add(this.spinUp, Browser.touchStartEvent, this.mouseDownOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchStartEvent, this.mouseDownOnSpinner, this);\n EventHandler.add(this.spinUp, Browser.touchEndEvent, this.mouseUpOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchEndEvent, this.mouseUpOnSpinner, this);\n EventHandler.add(this.spinUp, Browser.touchMoveEvent, this.touchMoveOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchMoveEvent, this.touchMoveOnSpinner, this);\n };\n NumericTextBox.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'blur', this.focusOutHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n EventHandler.remove(this.element, 'input', this.inputHandler);\n EventHandler.remove(this.element, 'keydown', this.keyDownHandler);\n EventHandler.remove(this.element, 'keypress', this.keyPressHandler);\n EventHandler.remove(this.element, 'change', this.changeHandler);\n EventHandler.remove(this.element, 'paste', this.pasteHandler);\n if (this.formEle) {\n EventHandler.remove(this.formEle, 'reset', this.resetFormHandler);\n }\n };\n NumericTextBox.prototype.unwireSpinBtnEvents = function () {\n /* unbind spin button events */\n EventHandler.remove(this.spinUp, Browser.touchStartEvent, this.mouseDownOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchStartEvent, this.mouseDownOnSpinner);\n EventHandler.remove(this.spinUp, Browser.touchEndEvent, this.mouseUpOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchEndEvent, this.mouseUpOnSpinner);\n EventHandler.remove(this.spinUp, Browser.touchMoveEvent, this.touchMoveOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchMoveEvent, this.touchMoveOnSpinner);\n };\n NumericTextBox.prototype.changeHandler = function (event) {\n event.stopPropagation();\n if (!this.element.value.length) {\n this.setProperties({ value: null }, true);\n }\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput, event);\n };\n NumericTextBox.prototype.raiseChangeEvent = function (event) {\n this.inputValue = (isNullOrUndefined(this.inputValue) || isNaN(this.inputValue)) ? null : this.inputValue;\n if (this.prevValue !== this.value || this.prevValue !== this.inputValue) {\n var eventArgs = {};\n this.changeEventArgs = { value: this.value, previousValue: this.prevValue, isInteracted: this.isInteract,\n isInteraction: this.isInteract, event: event };\n if (event) {\n this.changeEventArgs.event = event;\n }\n if (this.changeEventArgs.event === undefined) {\n this.changeEventArgs.isInteracted = false;\n this.changeEventArgs.isInteraction = false;\n }\n merge(eventArgs, this.changeEventArgs);\n this.prevValue = this.value;\n this.isInteract = false;\n this.elementPrevValue = this.element.value;\n this.preventChange = false;\n this.trigger('change', eventArgs);\n }\n };\n NumericTextBox.prototype.pasteHandler = function () {\n var _this = this;\n if (!this.enabled || this.readonly) {\n return;\n }\n var beforeUpdate = this.element.value;\n setTimeout(function () {\n if (!_this.numericRegex().test(_this.element.value)) {\n _this.setElementValue(beforeUpdate);\n }\n });\n };\n NumericTextBox.prototype.preventHandler = function () {\n var _this = this;\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n setTimeout(function () {\n if (_this.element.selectionStart > 0) {\n var currentPos = _this.element.selectionStart;\n var prevPos = _this.element.selectionStart - 1;\n var start = 0;\n var valArray = _this.element.value.split('');\n var numericObject = getNumericObject(_this.locale);\n var decimalSeparator = getValue('decimal', numericObject);\n var ignoreKeyCode = decimalSeparator.charCodeAt(0);\n if (_this.element.value[prevPos] === ' ' && _this.element.selectionStart > 0 && !iOS) {\n if (isNullOrUndefined(_this.prevVal)) {\n _this.element.value = _this.element.value.trim();\n }\n else if (prevPos !== 0) {\n _this.element.value = _this.prevVal;\n }\n else if (prevPos === 0) {\n _this.element.value = _this.element.value.trim();\n }\n _this.element.setSelectionRange(prevPos, prevPos);\n }\n else if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1])) &&\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) !== 45) {\n if ((valArray.indexOf(_this.element.value[_this.element.selectionStart - 1]) !==\n valArray.lastIndexOf(_this.element.value[_this.element.selectionStart - 1]) &&\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) === ignoreKeyCode) ||\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) !== ignoreKeyCode) {\n _this.element.value = _this.element.value.substring(0, prevPos) +\n _this.element.value.substring(currentPos, _this.element.value.length);\n _this.element.setSelectionRange(prevPos, prevPos);\n if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1])) && _this.element.selectionStart > 0\n && _this.element.value.length) {\n _this.preventHandler();\n }\n }\n }\n else if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 2])) && _this.element.selectionStart > 1 &&\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) !== 45) {\n if ((valArray.indexOf(_this.element.value[_this.element.selectionStart - 2]) !==\n valArray.lastIndexOf(_this.element.value[_this.element.selectionStart - 2]) &&\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) === ignoreKeyCode) ||\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) !== ignoreKeyCode) {\n _this.element.setSelectionRange(prevPos, prevPos);\n _this.nextEle = _this.element.value[_this.element.selectionStart];\n _this.cursorPosChanged = true;\n _this.preventHandler();\n }\n }\n if (_this.cursorPosChanged === true && _this.element.value[_this.element.selectionStart] === _this.nextEle &&\n isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1]))) {\n _this.element.setSelectionRange(_this.element.selectionStart + 1, _this.element.selectionStart + 1);\n _this.cursorPosChanged = false;\n _this.nextEle = null;\n }\n if (_this.element.value.trim() === '') {\n _this.element.setSelectionRange(start, start);\n }\n if (_this.element.selectionStart > 0) {\n if ((_this.element.value[_this.element.selectionStart - 1].charCodeAt(0) === 45) && _this.element.selectionStart > 1) {\n if (!isNullOrUndefined(_this.prevVal)) {\n _this.element.value = _this.prevVal;\n }\n _this.element.setSelectionRange(_this.element.selectionStart, _this.element.selectionStart);\n }\n if (_this.element.value[_this.element.selectionStart - 1] === decimalSeparator &&\n _this.decimals === 0 &&\n _this.validateDecimalOnType) {\n _this.element.value = _this.element.value.substring(0, prevPos) +\n _this.element.value.substring(currentPos, _this.element.value.length);\n }\n }\n _this.prevVal = _this.element.value;\n }\n });\n };\n NumericTextBox.prototype.keyUpHandler = function () {\n if (!this.enabled || this.readonly) {\n return;\n }\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n if (!iOS && Browser.isDevice) {\n this.preventHandler();\n }\n var parseValue = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n parseValue = parseValue === null || isNaN(parseValue) ? null : parseValue;\n this.hiddenInput.value = parseValue || parseValue === 0 ? parseValue.toString() : null;\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.inputHandler = function (event) {\n var numerictextboxObj = null || this;\n if (!this.enabled || this.readonly) {\n return;\n }\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n var fireFox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\n if ((fireFox || iOS) && Browser.isDevice) {\n this.preventHandler();\n }\n /* istanbul ignore next */\n if (this.isAngular\n && this.element.value !== getValue('decimal', getNumericObject(this.locale))\n && this.element.value !== getValue('minusSign', getNumericObject(this.locale))) {\n var parsedValue = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n parsedValue = isNaN(parsedValue) ? null : parsedValue;\n numerictextboxObj.localChange({ value: parsedValue });\n this.preventChange = true;\n }\n if (this.isVue) {\n var current = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n var previous = this.instance.getNumberParser({ format: 'n' })(this.elementPrevValue);\n //EJ2-54963-if type \".\" or \".0\" or \"-.0\" it converts to \"0\" automatically when binding v-model\n var nonZeroRegex = new RegExp('[^0-9]+$');\n if (nonZeroRegex.test(this.element.value) ||\n ((this.elementPrevValue.indexOf('.') !== -1 || this.elementPrevValue.indexOf('-') !== -1) &&\n this.element.value[this.element.value.length - 1] === '0')) {\n current = this.value;\n }\n var eventArgs = {\n event: event,\n value: (current === null || isNaN(current) ? null : current),\n previousValue: (previous === null || isNaN(previous) ? null : previous)\n };\n this.preventChange = true;\n this.elementPrevValue = this.element.value;\n this.trigger('input', eventArgs);\n }\n };\n NumericTextBox.prototype.keyDownHandler = function (event) {\n if (!this.readonly) {\n switch (event.keyCode) {\n case 38:\n event.preventDefault();\n this.action(INCREMENT, event);\n break;\n case 40:\n event.preventDefault();\n this.action(DECREMENT, event);\n break;\n default: break;\n }\n }\n };\n NumericTextBox.prototype.performAction = function (value, step, operation) {\n if (value === null || isNaN(value)) {\n value = 0;\n }\n var updatedValue = operation === INCREMENT ? value + step : value - step;\n updatedValue = this.correctRounding(value, step, updatedValue);\n return this.strictMode ? this.trimValue(updatedValue) : updatedValue;\n };\n NumericTextBox.prototype.correctRounding = function (value, step, result) {\n var floatExp = new RegExp('[,.](.*)');\n var floatValue = floatExp.test(value.toString());\n var floatStep = floatExp.test(step.toString());\n if (floatValue || floatStep) {\n var valueCount = floatValue ? floatExp.exec(value.toString())[0].length : 0;\n var stepCount = floatStep ? floatExp.exec(step.toString())[0].length : 0;\n var max = Math.max(valueCount, stepCount);\n return value = this.roundValue(result, max);\n }\n return result;\n };\n NumericTextBox.prototype.roundValue = function (result, precision) {\n precision = precision || 0;\n var divide = Math.pow(10, precision);\n return result *= divide, result = Math.round(result) / divide;\n };\n NumericTextBox.prototype.updateValue = function (value, event) {\n if (event) {\n this.isInteract = true;\n }\n if (value !== null && !isNaN(value)) {\n if (this.decimals) {\n value = this.roundNumber(value, this.decimals);\n }\n }\n this.inputValue = value;\n this.changeValue(value === null || isNaN(value) ? null : this.strictMode ? this.trimValue(value) : value);\n /* istanbul ignore next */\n if (!this.isDynamicChange) {\n this.raiseChangeEvent(event);\n }\n };\n NumericTextBox.prototype.updateCurrency = function (prop, propVal) {\n setValue(prop, propVal, this.cultureInfo);\n this.updateValue(this.value);\n };\n NumericTextBox.prototype.changeValue = function (value) {\n if (!(value || value === 0)) {\n value = null;\n this.setProperties({ value: value }, true);\n }\n else {\n var numberOfDecimals = this.getNumberOfDecimals(value);\n this.setProperties({ value: this.roundNumber(value, numberOfDecimals) }, true);\n }\n this.modifyText();\n if (!this.strictMode) {\n this.validateState();\n }\n };\n NumericTextBox.prototype.modifyText = function () {\n if (this.value || this.value === 0) {\n var value = this.formatNumber();\n var elementValue = this.isFocused ? value : this.instance.getNumberFormat(this.cultureInfo)(this.value);\n this.setElementValue(elementValue);\n attributes(this.element, { 'aria-valuenow': value });\n this.hiddenInput.value = this.value.toString();\n if (this.value !== null && this.serverDecimalSeparator) {\n this.hiddenInput.value = this.hiddenInput.value.replace('.', this.serverDecimalSeparator);\n }\n }\n else {\n this.setElementValue('');\n this.element.removeAttribute('aria-valuenow');\n this.hiddenInput.value = null;\n }\n };\n NumericTextBox.prototype.setElementValue = function (val, element) {\n Input.setValue(val, (element ? element : this.element), this.floatLabelType, this.showClearButton);\n };\n NumericTextBox.prototype.validateState = function () {\n this.isValidState = true;\n if (this.value || this.value === 0) {\n this.isValidState = !(this.value > this.max || this.value < this.min);\n }\n this.checkErrorClass();\n };\n NumericTextBox.prototype.getNumberOfDecimals = function (value) {\n var numberOfDecimals;\n // eslint-disable-next-line no-useless-escape\n var EXPREGEXP = new RegExp('[eE][\\-+]?([0-9]+)');\n var valueString = value.toString();\n if (EXPREGEXP.test(valueString)) {\n var result = EXPREGEXP.exec(valueString);\n if (!isNullOrUndefined(result)) {\n valueString = value.toFixed(Math.min(parseInt(result[1], 10), 20));\n }\n }\n var decimalPart = valueString.split('.')[1];\n numberOfDecimals = !decimalPart || !decimalPart.length ? 0 : decimalPart.length;\n if (this.decimals !== null) {\n numberOfDecimals = numberOfDecimals < this.decimals ? numberOfDecimals : this.decimals;\n }\n return numberOfDecimals;\n };\n NumericTextBox.prototype.formatNumber = function () {\n var numberOfDecimals = this.getNumberOfDecimals(this.value);\n return this.instance.getNumberFormat({\n maximumFractionDigits: numberOfDecimals,\n minimumFractionDigits: numberOfDecimals, useGrouping: false\n })(this.value);\n };\n NumericTextBox.prototype.trimValue = function (value) {\n if (value > this.max) {\n return this.max;\n }\n if (value < this.min) {\n return this.min;\n }\n return value;\n };\n NumericTextBox.prototype.roundNumber = function (value, precision) {\n var result = value;\n var decimals = precision || 0;\n var result1 = result.toString().split('e');\n result = Math.round(Number(result1[0] + 'e' + (result1[1] ? (Number(result1[1]) + decimals) : decimals)));\n var result2 = result.toString().split('e');\n result = Number(result2[0] + 'e' + (result2[1] ? (Number(result2[1]) - decimals) : -decimals));\n return Number(result.toFixed(decimals));\n };\n NumericTextBox.prototype.cancelEvent = function (event) {\n event.preventDefault();\n return false;\n };\n NumericTextBox.prototype.keyPressHandler = function (event) {\n if (!this.enabled || this.readonly) {\n return true;\n }\n if (!Browser.isDevice && Browser.info.version === '11.0' && event.keyCode === 13) {\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput, event);\n return true;\n }\n if (event.which === 0 || event.metaKey || event.ctrlKey || event.keyCode === 8 || event.keyCode === 13) {\n return true;\n }\n var currentChar = String.fromCharCode(event.which);\n var decimalSeparator = getValue('decimal', getNumericObject(this.locale));\n var isAlterNumPadDecimalChar = event.code === 'NumpadDecimal' && currentChar !== decimalSeparator;\n //EJ2-59813-replace the culture decimal separator value with numberpad decimal separator value when culture decimal separator and numberpad decimal separator are different\n if (isAlterNumPadDecimalChar) {\n currentChar = decimalSeparator;\n }\n var text = this.element.value;\n text = text.substring(0, this.element.selectionStart) + currentChar + text.substring(this.element.selectionEnd);\n if (!this.numericRegex().test(text)) {\n event.preventDefault();\n event.stopPropagation();\n return false;\n }\n else {\n //EJ2-59813-update the numberpad decimal separator and update the cursor position\n if (isAlterNumPadDecimalChar) {\n var start = this.element.selectionStart + 1;\n this.element.value = text;\n this.element.setSelectionRange(start, start);\n event.preventDefault();\n event.stopPropagation();\n }\n return true;\n }\n };\n NumericTextBox.prototype.numericRegex = function () {\n var numericObject = getNumericObject(this.locale);\n var decimalSeparator = getValue('decimal', numericObject);\n var fractionRule = '*';\n if (decimalSeparator === DECIMALSEPARATOR) {\n decimalSeparator = '\\\\' + decimalSeparator;\n }\n if (this.decimals === 0 && this.validateDecimalOnType) {\n return INTREGEXP;\n }\n if (this.decimals && this.validateDecimalOnType) {\n fractionRule = '{0,' + this.decimals + '}';\n }\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n return new RegExp('^(-)?(((\\\\d+(' + decimalSeparator + '\\\\d' + fractionRule +\n ')?)|(' + decimalSeparator + '\\\\d' + fractionRule + ')))?$');\n };\n NumericTextBox.prototype.mouseWheel = function (event) {\n event.preventDefault();\n var delta;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var rawEvent = event;\n if (rawEvent.wheelDelta) {\n delta = rawEvent.wheelDelta / 120;\n }\n else if (rawEvent.detail) {\n delta = -rawEvent.detail / 3;\n }\n if (delta > 0) {\n this.action(INCREMENT, event);\n }\n else if (delta < 0) {\n this.action(DECREMENT, event);\n }\n this.cancelEvent(event);\n };\n NumericTextBox.prototype.focusHandler = function (event) {\n var _this = this;\n clearTimeout(selectionTimeOut);\n this.focusEventArgs = { event: event, value: this.value, container: this.container };\n this.trigger('focus', this.focusEventArgs);\n if (!this.enabled || this.readonly) {\n return;\n }\n this.isFocused = true;\n removeClass([this.container], ERROR);\n this.prevValue = this.value;\n if ((this.value || this.value === 0)) {\n var formatValue_1 = this.formatNumber();\n this.setElementValue(formatValue_1);\n if (!this.isPrevFocused) {\n if (!Browser.isDevice && Browser.info.version === '11.0') {\n this.element.setSelectionRange(0, formatValue_1.length);\n }\n else {\n var delay = (Browser.isDevice && Browser.isIos) ? 600 : 0;\n selectionTimeOut = setTimeout(function () {\n _this.element.setSelectionRange(0, formatValue_1.length);\n }, delay);\n }\n }\n }\n if (!Browser.isDevice) {\n EventHandler.add(this.element, 'mousewheel DOMMouseScroll', this.mouseWheel, this);\n }\n };\n NumericTextBox.prototype.focusOutHandler = function (event) {\n var _this = this;\n this.blurEventArgs = { event: event, value: this.value, container: this.container };\n this.trigger('blur', this.blurEventArgs);\n if (!this.enabled || this.readonly) {\n return;\n }\n if (this.isPrevFocused) {\n event.preventDefault();\n if (Browser.isDevice) {\n var value_1 = this.element.value;\n this.element.focus();\n this.isPrevFocused = false;\n var ele_1 = this.element;\n setTimeout(function () {\n _this.setElementValue(value_1, ele_1);\n }, 200);\n }\n }\n else {\n this.isFocused = false;\n if (!this.element.value.length) {\n this.setProperties({ value: null }, true);\n }\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput);\n if (!Browser.isDevice) {\n EventHandler.remove(this.element, 'mousewheel DOMMouseScroll', this.mouseWheel);\n }\n }\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var focusEvent = document.createEvent('FocusEvent');\n focusEvent.initEvent('focusout', false, true);\n element.dispatchEvent(focusEvent);\n }\n };\n NumericTextBox.prototype.mouseDownOnSpinner = function (event) {\n var _this = this;\n if (this.isFocused) {\n this.isPrevFocused = true;\n event.preventDefault();\n }\n if (!this.getElementData(event)) {\n return;\n }\n this.getElementData(event);\n var target = event.currentTarget;\n var action = (target.classList.contains(SPINUP)) ? INCREMENT : DECREMENT;\n EventHandler.add(target, 'mouseleave', this.mouseUpClick, this);\n this.timeOut = setInterval(function () {\n _this.isCalled = true;\n _this.action(action, event);\n }, 150);\n EventHandler.add(document, 'mouseup', this.mouseUpClick, this);\n };\n NumericTextBox.prototype.touchMoveOnSpinner = function (event) {\n var target;\n if (event.type === 'touchmove') {\n var touchEvent = event.touches;\n target = touchEvent.length && document.elementFromPoint(touchEvent[0].pageX, touchEvent[0].pageY);\n }\n else {\n target = document.elementFromPoint(event.clientX, event.clientY);\n }\n if (!(target.classList.contains(SPINICON))) {\n clearInterval(this.timeOut);\n }\n };\n NumericTextBox.prototype.mouseUpOnSpinner = function (event) {\n this.prevValue = this.value;\n if (this.isPrevFocused) {\n this.element.focus();\n if (!Browser.isDevice) {\n this.isPrevFocused = false;\n }\n }\n if (!Browser.isDevice) {\n event.preventDefault();\n }\n if (!this.getElementData(event)) {\n return;\n }\n var target = event.currentTarget;\n var action = (target.classList.contains(SPINUP)) ? INCREMENT : DECREMENT;\n EventHandler.remove(target, 'mouseleave', this.mouseUpClick);\n if (!this.isCalled) {\n this.action(action, event);\n }\n this.isCalled = false;\n EventHandler.remove(document, 'mouseup', this.mouseUpClick);\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.getElementData = function (event) {\n if ((event.which && event.which === 3) || (event.button && event.button === 2)\n || !this.enabled || this.readonly) {\n return false;\n }\n clearInterval(this.timeOut);\n return true;\n };\n NumericTextBox.prototype.floatLabelTypeUpdate = function () {\n Input.removeFloating(this.inputWrapper);\n var hiddenInput = this.hiddenInput;\n this.hiddenInput.remove();\n Input.addFloating(this.element, this.floatLabelType, this.placeholder, this.createElement);\n this.container.insertBefore(hiddenInput, this.container.childNodes[1]);\n };\n NumericTextBox.prototype.mouseUpClick = function (event) {\n event.stopPropagation();\n clearInterval(this.timeOut);\n this.isCalled = false;\n if (this.spinUp) {\n EventHandler.remove(this.spinUp, 'mouseleave', this.mouseUpClick);\n }\n if (this.spinDown) {\n EventHandler.remove(this.spinDown, 'mouseleave', this.mouseUpClick);\n }\n };\n /**\n * Increments the NumericTextBox value with the specified step value.\n *\n * @param {number} step - Specifies the value used to increment the NumericTextBox value.\n * if its not given then numeric value will be incremented based on the step property value.\n * @returns {void}\n */\n NumericTextBox.prototype.increment = function (step) {\n if (step === void 0) { step = this.step; }\n this.isInteract = false;\n this.changeValue(this.performAction(this.value, step, INCREMENT));\n this.raiseChangeEvent();\n };\n /**\n * Decrements the NumericTextBox value with specified step value.\n *\n * @param {number} step - Specifies the value used to decrement the NumericTextBox value.\n * if its not given then numeric value will be decremented based on the step property value.\n * @returns {void}\n */\n NumericTextBox.prototype.decrement = function (step) {\n if (step === void 0) { step = this.step; }\n this.isInteract = false;\n this.changeValue(this.performAction(this.value, step, DECREMENT));\n this.raiseChangeEvent();\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also it maintains the initial input element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n NumericTextBox.prototype.destroy = function () {\n this.unwireEvents();\n if (this.showClearButton) {\n this.clearButton = document.getElementsByClassName('e-clear-icon')[0];\n }\n detach(this.hiddenInput);\n if (this.showSpinButton) {\n this.unwireSpinBtnEvents();\n detach(this.spinUp);\n detach(this.spinDown);\n }\n var attrArray = ['aria-labelledby', 'role', 'autocomplete', 'aria-readonly',\n 'aria-disabled', 'autocapitalize', 'spellcheck', 'aria-autocomplete', 'tabindex',\n 'aria-valuemin', 'aria-valuemax', 'aria-valuenow', 'aria-invalid'];\n for (var i = 0; i < attrArray.length; i++) {\n this.element.removeAttribute(attrArray[i]);\n }\n this.element.classList.remove('e-input');\n this.container.insertAdjacentElement('afterend', this.element);\n detach(this.container);\n this.spinUp = null;\n this.spinDown = null;\n this.container = null;\n this.hiddenInput = null;\n this.changeEventArgs = null;\n this.blurEventArgs = null;\n this.focusEventArgs = null;\n this.inputWrapper = null;\n Input.destroy({\n element: this.element,\n floatLabelType: this.floatLabelType,\n properties: this.properties\n }, this.clearButton);\n _super.prototype.destroy.call(this);\n };\n /**\n * Returns the value of NumericTextBox with the format applied to the NumericTextBox.\n *\n * @returns {string} - Returns the formatted value of the NumericTextBox.\n */\n NumericTextBox.prototype.getText = function () {\n return this.element.value;\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n NumericTextBox.prototype.focusIn = function () {\n if (document.activeElement !== this.element && this.enabled) {\n this.element.focus();\n addClass([this.container], [NUMERIC_FOCUS]);\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n NumericTextBox.prototype.focusOut = function () {\n if (document.activeElement === this.element && this.enabled) {\n this.element.blur();\n removeClass([this.container], [NUMERIC_FOCUS]);\n }\n };\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n * @returns {string} - Returns the persisted data.\n */\n NumericTextBox.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Calls internally if any of the property value is changed.\n *\n * @param {NumericTextBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {NumericTextBoxModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n NumericTextBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n this.setElementWidth(newProp.width);\n Input.calculateWidth(this.element, this.container);\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enabled':\n Input.setEnabled(newProp.enabled, this.element);\n this.bindClearEvent();\n break;\n case 'enableRtl':\n Input.setEnableRtl(newProp.enableRtl, [this.container]);\n break;\n case 'readonly':\n Input.setReadonly(newProp.readonly, this.element);\n if (this.readonly) {\n attributes(this.element, { 'aria-readonly': 'true' });\n }\n else {\n this.element.removeAttribute('aria-readonly');\n }\n break;\n case 'htmlAttributes':\n this.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n this.updateDataAttribute(true);\n this.checkAttributes(true);\n Input.validateInputType(this.container, this.element);\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.element);\n Input.calculateWidth(this.element, this.container);\n break;\n case 'step':\n this.step = newProp.step;\n this.validateStep();\n break;\n case 'showSpinButton':\n this.updateSpinButton(newProp);\n break;\n case 'showClearButton':\n this.updateClearButton(newProp);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n this.floatLabelTypeUpdate();\n break;\n case 'value':\n this.isDynamicChange = (this.isAngular || this.isVue) && this.preventChange;\n this.updateValue(newProp.value);\n if (this.isDynamicChange) {\n this.preventChange = false;\n this.isDynamicChange = false;\n }\n break;\n case 'min':\n case 'max':\n setValue(prop, getValue(prop, newProp), this);\n this.validateMinMax();\n this.updateValue(this.value);\n break;\n case 'strictMode':\n this.strictMode = newProp.strictMode;\n this.updateValue(this.value);\n this.validateState();\n break;\n case 'locale':\n this.initCultureFunc();\n this.l10n.setLocale(this.locale);\n this.setSpinButton();\n this.updatePlaceholder();\n Input.setPlaceholder(this.placeholder, this.element);\n this.updateValue(this.value);\n break;\n case 'currency':\n {\n var propVal = getValue(prop, newProp);\n this.setProperties({ currencyCode: propVal }, true);\n this.updateCurrency(prop, propVal);\n }\n break;\n case 'currencyCode':\n {\n var propValue = getValue(prop, newProp);\n this.setProperties({ currency: propValue }, true);\n this.updateCurrency('currency', propValue);\n }\n break;\n case 'format':\n setValue(prop, getValue(prop, newProp), this);\n this.initCultureInfo();\n this.updateValue(this.value);\n break;\n case 'decimals':\n this.decimals = newProp.decimals;\n this.updateValue(this.value);\n }\n }\n };\n NumericTextBox.prototype.updateClearButton = function (newProp) {\n Input.setClearButton(newProp.showClearButton, this.element, this.inputWrapper, undefined, this.createElement);\n this.bindClearEvent();\n };\n NumericTextBox.prototype.updateSpinButton = function (newProp) {\n if (newProp.showSpinButton) {\n this.spinBtnCreation();\n }\n else {\n detach(this.spinUp);\n detach(this.spinDown);\n }\n };\n /**\n * Gets the component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n NumericTextBox.prototype.getModuleName = function () {\n return 'numerictextbox';\n };\n __decorate([\n Property('')\n ], NumericTextBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"value\", void 0);\n __decorate([\n Property(-(Number.MAX_VALUE))\n ], NumericTextBox.prototype, \"min\", void 0);\n __decorate([\n Property(Number.MAX_VALUE)\n ], NumericTextBox.prototype, \"max\", void 0);\n __decorate([\n Property(1)\n ], NumericTextBox.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property({})\n ], NumericTextBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"showSpinButton\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property('n2')\n ], NumericTextBox.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"decimals\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"currency\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"currencyCode\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"strictMode\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"validateDecimalOnType\", void 0);\n __decorate([\n Property('Never')\n ], NumericTextBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"blur\", void 0);\n NumericTextBox = __decorate([\n NotifyPropertyChanges\n ], NumericTextBox);\n return NumericTextBox;\n}(Component));\nexport { NumericTextBox };\n","import { NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { extend, isUndefined } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\n/**\n * `numberfilterui` render number column.\n *\n * @hidden\n */\nvar NumberFilterUI = /** @class */ (function () {\n function NumberFilterUI(parent, serviceLocator, filterSettings) {\n this.filterSettings = filterSettings;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n if (this.parent) {\n this.parent.on(events.filterMenuClose, this.destroy, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n }\n NumberFilterUI.prototype.keyEventHandler = function (args) {\n if (args.keyCode === 13 || args.keyCode === 9) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent('change', false, true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dispatchEvent(evt);\n }\n };\n NumberFilterUI.prototype.create = function (args) {\n this.instance = this.parent.createElement('input', { className: 'e-flmenu-input', id: 'numberui-' + args.column.uid });\n args.target.appendChild(this.instance);\n this.numericTxtObj = new NumericTextBox(extend({\n format: typeof (args.column.format) === 'string' || isUndefined(args.column.format) ? args.column.format :\n args.column.format.format,\n locale: this.parent.locale,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n placeholder: args.localizeText.getConstant('EnterValue'),\n enableRtl: this.parent.enableRtl\n }, args.column.filter.params));\n this.numericTxtObj.appendTo(this.instance);\n };\n NumberFilterUI.prototype.write = function (args) {\n var numberuiObj = document.querySelector('#numberui-' + args.column.uid).ej2_instances[0];\n numberuiObj.element.addEventListener('keydown', this.keyEventHandler);\n numberuiObj.value = args.filteredValue;\n };\n NumberFilterUI.prototype.read = function (element, column, filterOptr, filterObj) {\n var numberuiObj = document.querySelector('#numberui-' + column.uid).ej2_instances[0];\n var filterValue = numberuiObj.value;\n filterObj.filterByColumn(column.field, filterOptr, filterValue, 'and', true);\n };\n NumberFilterUI.prototype.destroy = function () {\n if (!this.numericTxtObj || this.numericTxtObj.isDestroyed) {\n return;\n }\n this.numericTxtObj.destroy();\n this.parent.off(events.filterMenuClose, this.destroy);\n this.parent.off(events.destroy, this.destroy);\n };\n return NumberFilterUI;\n}());\nexport { NumberFilterUI };\n","import { getZIndexCalcualtion } from '../base/util';\nimport { Query, DataManager, DataUtil } from '@syncfusion/ej2-data';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * `boolfilterui` render boolean column.\n *\n * @hidden\n */\nvar BooleanFilterUI = /** @class */ (function () {\n function BooleanFilterUI(parent, serviceLocator, filterSettings) {\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.filterSettings = filterSettings;\n if (this.parent) {\n this.parent.on(events.filterMenuClose, this.destroy, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n }\n BooleanFilterUI.prototype.create = function (args) {\n var isForeignColumn = args.column.isForeignColumn();\n var dataSource = isForeignColumn ? args.column.dataSource : this.parent.dataSource;\n var fields = isForeignColumn ? args.column.foreignKeyValue : args.column.field;\n this.elem = this.parent.createElement('input', { className: 'e-flmenu-input', id: 'bool-ui-' + args.column.uid });\n args.target.appendChild(this.elem);\n this.dialogObj = args.dialogObj;\n this.dropInstance = new DropDownList(extend({\n dataSource: dataSource instanceof DataManager ?\n dataSource : new DataManager(dataSource),\n query: new Query().select(fields),\n fields: { text: fields, value: fields },\n placeholder: args.localizeText.getConstant('SelectValue'),\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl\n }, args.column.filter.params));\n this.ddOpen = this.openPopup.bind(this);\n this.ddComplete = this.actionComplete(fields);\n this.dropInstance.addEventListener(literals['open'], this.ddOpen);\n this.dropInstance.addEventListener(events.actionComplete, this.ddComplete);\n this.dropInstance.appendTo(this.elem);\n };\n BooleanFilterUI.prototype.write = function (args) {\n var drpuiObj = document.querySelector('#bool-ui-' + args.column.uid).ej2_instances[0];\n if (!isNullOrUndefined(args.filteredValue)) {\n drpuiObj.value = args.filteredValue;\n }\n };\n BooleanFilterUI.prototype.read = function (element, column, filterOptr, filterObj) {\n var drpuiObj = document.querySelector('#bool-ui-' + column.uid).ej2_instances[0];\n var filterValue = (drpuiObj.value);\n filterObj.filterByColumn(column.field, filterOptr, filterValue, 'and', false);\n };\n BooleanFilterUI.prototype.openPopup = function (args) {\n getZIndexCalcualtion(args, this.dialogObj);\n };\n BooleanFilterUI.prototype.actionComplete = function (fields) {\n return function (e) {\n e.result = DataUtil.distinct(e.result, fields, true);\n };\n };\n BooleanFilterUI.prototype.destroy = function () {\n if (!this.dropInstance || this.dropInstance.isDestroyed) {\n return;\n }\n this.dropInstance.removeEventListener(literals['open'], this.ddOpen);\n this.dropInstance.removeEventListener(events.actionComplete, this.ddComplete);\n this.dropInstance.destroy();\n this.parent.off(events.filterMenuClose, this.destroy);\n this.parent.off(events.destroy, this.destroy);\n };\n return BooleanFilterUI;\n}());\nexport { BooleanFilterUI };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-unused-expressions */\nimport { Component, EventHandler, Internationalization } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, L10n } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { cldrData, getDefaultDateObject, rippleEffect } from '@syncfusion/ej2-base';\nimport { removeClass, detach, closest, addClass, attributes } from '@syncfusion/ej2-base';\nimport { getValue, getUniqueID, extend, Browser } from '@syncfusion/ej2-base';\nimport { Property, Event, isNullOrUndefined, throwError } from '@syncfusion/ej2-base';\n//class constant defination.\nvar OTHERMONTH = 'e-other-month';\nvar OTHERDECADE = 'e-other-year';\nvar ROOT = 'e-calendar';\nvar DEVICE = 'e-device';\nvar HEADER = 'e-header';\nvar RTL = 'e-rtl';\nvar CONTENT = 'e-content';\nvar CONTENTTABLE = 'e-calendar-content-table';\nvar YEAR = 'e-year';\nvar MONTH = 'e-month';\nvar DECADE = 'e-decade';\nvar ICON = 'e-icons';\nvar PREVICON = 'e-prev';\nvar NEXTICON = 'e-next';\nvar PREVSPAN = 'e-date-icon-prev';\nvar NEXTSPAN = 'e-date-icon-next ';\nvar ICONCONTAINER = 'e-icon-container';\nvar DISABLED = 'e-disabled';\nvar OVERLAY = 'e-overlay';\nvar WEEKEND = 'e-weekend';\nvar WEEKNUMBER = 'e-week-number';\nvar SELECTED = 'e-selected';\nvar FOCUSEDDATE = 'e-focused-date';\nvar FOCUSEDCELL = 'e-focused-cell';\nvar OTHERMONTHROW = 'e-month-hide';\nvar TODAY = 'e-today';\nvar TITLE = 'e-title';\nvar LINK = 'e-day';\nvar CELL = 'e-cell';\nvar WEEKHEADER = 'e-week-header';\nvar ZOOMIN = 'e-zoomin';\nvar FOOTER = 'e-footer-container';\nvar BTN = 'e-btn';\nvar FLAT = 'e-flat';\nvar CSS = 'e-css';\nvar PRIMARY = 'e-primary';\nvar DAYHEADERLONG = 'e-calendar-day-header-lg';\nvar dayMilliSeconds = 86400000;\nvar minutesMilliSeconds = 60000;\n/**\n *\n * @private\n */\nvar CalendarBase = /** @class */ (function (_super) {\n __extends(CalendarBase, _super);\n /**\n * Initialized new instance of Calendar Class.\n * Constructor for creating the widget\n *\n * @param {CalendarBaseModel} options - Specifies the CalendarBase model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function CalendarBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.effect = '';\n _this.isPopupClicked = false;\n _this.isDateSelected = true;\n _this.isTodayClicked = false;\n _this.preventChange = false;\n _this.previousDates = false;\n return _this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n CalendarBase.prototype.render = function () {\n this.rangeValidation(this.min, this.max);\n this.calendarEleCopy = this.element.cloneNode(true);\n if (this.calendarMode === 'Islamic') {\n if (+(this.min.setSeconds(0)) === +new Date(1900, 0, 1, 0, 0, 0)) {\n this.min = new Date(1944, 2, 18);\n }\n if (+this.max === +new Date(2099, 11, 31)) {\n this.max = new Date(2069, 10, 16);\n }\n }\n this.globalize = new Internationalization(this.locale);\n if (isNullOrUndefined(this.firstDayOfWeek) || this.firstDayOfWeek > 6 || this.firstDayOfWeek < 0) {\n this.setProperties({ firstDayOfWeek: this.globalize.getFirstDayOfWeek() }, true);\n }\n this.todayDisabled = false;\n this.todayDate = new Date(new Date().setHours(0, 0, 0, 0));\n if (this.getModuleName() === 'calendar') {\n this.element.classList.add(ROOT);\n if (this.enableRtl) {\n this.element.classList.add(RTL);\n }\n if (Browser.isDevice) {\n this.element.classList.add(DEVICE);\n }\n attributes(this.element, {\n 'data-role': 'calendar'\n });\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.calendarElement = this.createElement('div');\n this.calendarElement.classList.add(ROOT);\n if (this.enableRtl) {\n this.calendarElement.classList.add(RTL);\n }\n if (Browser.isDevice) {\n this.calendarElement.classList.add(DEVICE);\n }\n attributes(this.calendarElement, {\n 'data-role': 'calendar'\n });\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.createHeader();\n this.createContent();\n this.wireEvents();\n };\n CalendarBase.prototype.rangeValidation = function (min, max) {\n if (isNullOrUndefined(min)) {\n this.setProperties({ min: new Date(1900, 0, 1) }, true);\n }\n if (isNullOrUndefined(max)) {\n this.setProperties({ max: new Date(2099, 11, 31) }, true);\n }\n };\n CalendarBase.prototype.getDefaultKeyConfig = function () {\n this.defaultKeyConfigs = {\n controlUp: 'ctrl+38',\n controlDown: 'ctrl+40',\n moveDown: 'downarrow',\n moveUp: 'uparrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n select: 'enter',\n home: 'home',\n end: 'end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n shiftPageUp: 'shift+pageup',\n shiftPageDown: 'shift+pagedown',\n controlHome: 'ctrl+home',\n controlEnd: 'ctrl+end',\n altUpArrow: 'alt+uparrow',\n spacebar: 'space',\n altRightArrow: 'alt+rightarrow',\n altLeftArrow: 'alt+leftarrow'\n };\n return this.defaultKeyConfigs;\n };\n CalendarBase.prototype.validateDate = function (value) {\n this.setProperties({ min: this.checkDateValue(new Date(this.checkValue(this.min))) }, true);\n this.setProperties({ max: this.checkDateValue(new Date(this.checkValue(this.max))) }, true);\n this.currentDate = this.currentDate ? this.currentDate : new Date(new Date().setHours(0, 0, 0, 0));\n if (!isNullOrUndefined(value) && this.min <= this.max && value >= this.min && value <= this.max) {\n this.currentDate = new Date(this.checkValue(value));\n }\n };\n CalendarBase.prototype.setOverlayIndex = function (popupWrapper, popupElement, modal, isDevice) {\n if (isDevice && !isNullOrUndefined(popupElement) && !isNullOrUndefined(modal) && !isNullOrUndefined(popupWrapper)) {\n var index = parseInt(popupElement.style.zIndex, 10) ? parseInt(popupElement.style.zIndex, 10) : 1000;\n modal.style.zIndex = (index - 1).toString();\n popupWrapper.style.zIndex = index.toString();\n }\n };\n CalendarBase.prototype.minMaxUpdate = function (value) {\n if (!(+this.min <= +this.max)) {\n this.setProperties({ min: this.min }, true);\n addClass([this.element], OVERLAY);\n }\n else {\n removeClass([this.element], OVERLAY);\n }\n this.min = isNullOrUndefined(this.min) || !(+this.min) ? this.min = new Date(1900, 0, 1) : this.min;\n this.max = isNullOrUndefined(this.max) || !(+this.max) ? this.max = new Date(2099, 11, 31) : this.max;\n if (+this.min <= +this.max && value && +value <= +this.max && +value >= +this.min) {\n this.currentDate = new Date(this.checkValue(value));\n }\n else {\n if (+this.min <= +this.max && !value && +this.currentDate > +this.max) {\n this.currentDate = new Date(this.checkValue(this.max));\n }\n else {\n if (+this.currentDate < +this.min) {\n this.currentDate = new Date(this.checkValue(this.min));\n }\n }\n }\n };\n CalendarBase.prototype.createHeader = function () {\n var ariaPrevAttrs = {\n 'aria-disabled': 'false',\n 'aria-label': 'previous month'\n };\n var ariaNextAttrs = {\n 'aria-disabled': 'false',\n 'aria-label': 'next month'\n };\n var ariaTitleAttrs = {\n 'aria-atomic': 'true', 'aria-live': 'assertive', 'aria-label': 'title'\n };\n var tabIndexAttr = { 'tabindex': '0' };\n this.headerElement = this.createElement('div', { className: HEADER });\n var iconContainer = this.createElement('div', { className: ICONCONTAINER });\n this.previousIcon = this.createElement('button', { className: '' + PREVICON, attrs: { type: 'button' } });\n rippleEffect(this.previousIcon, {\n duration: 400,\n selector: '.e-prev',\n isCenterRipple: true\n });\n attributes(this.previousIcon, ariaPrevAttrs);\n attributes(this.previousIcon, tabIndexAttr);\n this.nextIcon = this.createElement('button', { className: '' + NEXTICON, attrs: { type: 'button' } });\n rippleEffect(this.nextIcon, {\n selector: '.e-next',\n duration: 400,\n isCenterRipple: true\n });\n if (this.getModuleName() === 'daterangepicker') {\n attributes(this.previousIcon, { tabIndex: '-1' });\n attributes(this.nextIcon, { tabIndex: '-1' });\n }\n attributes(this.nextIcon, ariaNextAttrs);\n attributes(this.nextIcon, tabIndexAttr);\n this.headerTitleElement = this.createElement('div', { className: '' + LINK + ' ' + TITLE });\n attributes(this.headerTitleElement, ariaTitleAttrs);\n attributes(this.headerTitleElement, tabIndexAttr);\n this.headerElement.appendChild(this.headerTitleElement);\n this.previousIcon.appendChild(this.createElement('span', { className: '' + PREVSPAN + ' ' + ICON }));\n this.nextIcon.appendChild(this.createElement('span', { className: '' + NEXTSPAN + ' ' + ICON }));\n iconContainer.appendChild(this.previousIcon);\n iconContainer.appendChild(this.nextIcon);\n this.headerElement.appendChild(iconContainer);\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.headerElement);\n }\n else {\n this.calendarElement.appendChild(this.headerElement);\n }\n this.adjustLongHeaderSize();\n };\n CalendarBase.prototype.createContent = function () {\n this.contentElement = this.createElement('div', { className: CONTENT });\n this.table = this.createElement('table', { attrs: { 'class': CONTENTTABLE, 'tabIndex': '0', 'role': 'grid', 'aria-activedescendant': '', 'aria-labelledby': this.element.id } });\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.contentElement);\n }\n else {\n this.calendarElement.appendChild(this.contentElement);\n }\n this.contentElement.appendChild(this.table);\n this.createContentHeader();\n this.createContentBody();\n if (this.showTodayButton) {\n this.createContentFooter();\n }\n if (this.getModuleName() !== 'daterangepicker') {\n EventHandler.add(this.table, 'focus', this.addContentFocus, this);\n EventHandler.add(this.table, 'blur', this.removeContentFocus, this);\n }\n };\n CalendarBase.prototype.addContentFocus = function (args) {\n var focusedDate = this.tableBodyElement.querySelector('tr td.e-focused-date');\n var selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n if (!isNullOrUndefined(selectedDate)) {\n selectedDate.classList.add(FOCUSEDCELL);\n }\n else if (!isNullOrUndefined(focusedDate)) {\n focusedDate.classList.add(FOCUSEDCELL);\n }\n };\n CalendarBase.prototype.removeContentFocus = function (args) {\n var focusedDate = !isNullOrUndefined(this.tableBodyElement) ? this.tableBodyElement.querySelector('tr td.e-focused-date') : null;\n var selectedDate = !isNullOrUndefined(this.tableBodyElement) ? this.tableBodyElement.querySelector('tr td.e-selected') : null;\n if (!isNullOrUndefined(selectedDate)) {\n selectedDate.classList.remove(FOCUSEDCELL);\n }\n else if (!isNullOrUndefined(focusedDate)) {\n focusedDate.classList.remove(FOCUSEDCELL);\n }\n };\n CalendarBase.prototype.getCultureValues = function () {\n var culShortNames = [];\n var cldrObj;\n var dayFormat = 'days.stand-alone.' + this.dayHeaderFormat.toLowerCase();\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrObj = (getValue(dayFormat, getDefaultDateObject()));\n }\n else {\n cldrObj = (this.getCultureObjects(cldrData, '' + this.locale));\n }\n if (!isNullOrUndefined(cldrObj)) {\n for (var _i = 0, _a = Object.keys(cldrObj); _i < _a.length; _i++) {\n var obj = _a[_i];\n culShortNames.push(getValue(obj, cldrObj));\n }\n }\n return culShortNames;\n };\n CalendarBase.prototype.toCapitalize = function (text) {\n return !isNullOrUndefined(text) && text.length ? text[0].toUpperCase() + text.slice(1) : text;\n };\n CalendarBase.prototype.createContentHeader = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content .e-week-header')[0])) {\n detach(this.element.querySelectorAll('.e-content .e-week-header')[0]);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content .e-week-header')[0])) {\n detach(this.calendarElement.querySelectorAll('.e-content .e-week-header')[0]);\n }\n }\n var daysCount = 6;\n var html = '';\n if (this.firstDayOfWeek > 6 || this.firstDayOfWeek < 0) {\n this.setProperties({ firstDayOfWeek: 0 }, true);\n }\n this.tableHeadElement = this.createElement('thead', { className: WEEKHEADER });\n if (this.weekNumber) {\n html += '';\n if (this.getModuleName() === 'calendar') {\n addClass([this.element], '' + WEEKNUMBER);\n }\n else {\n addClass([this.calendarElement], '' + WEEKNUMBER);\n }\n }\n var shortNames = this.getCultureValues().length > 0 &&\n this.getCultureValues() ? this.shiftArray(((this.getCultureValues().length > 0 &&\n this.getCultureValues())), this.firstDayOfWeek) : null;\n if (!isNullOrUndefined(shortNames)) {\n for (var days = 0; days <= daysCount; days++) {\n html += '' + this.toCapitalize(shortNames[days]) + '';\n }\n }\n html = '' + html + '';\n this.tableHeadElement.innerHTML = html;\n this.table.appendChild(this.tableHeadElement);\n };\n CalendarBase.prototype.createContentBody = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content tbody')[0])) {\n detach(this.element.querySelectorAll('.e-content tbody')[0]);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content tbody')[0])) {\n detach(this.calendarElement.querySelectorAll('.e-content tbody')[0]);\n }\n }\n switch (this.start) {\n case 'Year':\n this.renderYears();\n break;\n case 'Decade':\n this.renderDecades();\n break;\n default:\n this.renderMonths();\n }\n };\n CalendarBase.prototype.updateFooter = function () {\n this.todayElement.textContent = this.l10.getConstant('today');\n this.todayElement.setAttribute('aria-label', this.l10.getConstant('today'));\n this.todayElement.setAttribute('tabindex', '0');\n };\n CalendarBase.prototype.createContentFooter = function () {\n if (this.showTodayButton) {\n var minimum = new Date(+this.min);\n var maximum = new Date(+this.max);\n var l10nLocale = { today: 'Today' };\n this.globalize = new Internationalization(this.locale);\n this.l10 = new L10n(this.getModuleName(), l10nLocale, this.locale);\n this.todayElement = this.createElement('button', { attrs: { role: 'button' } });\n rippleEffect(this.todayElement);\n this.updateFooter();\n addClass([this.todayElement], [BTN, TODAY, FLAT, PRIMARY, CSS]);\n if ((!(+new Date(minimum.setHours(0, 0, 0, 0)) <= +this.todayDate &&\n +this.todayDate <= +new Date(maximum.setHours(0, 0, 0, 0)))) || (this.todayDisabled)) {\n addClass([this.todayElement], DISABLED);\n }\n this.footer = this.createElement('div', { className: FOOTER });\n this.footer.appendChild(this.todayElement);\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.footer);\n }\n if (this.getModuleName() === 'datepicker') {\n this.calendarElement.appendChild(this.footer);\n }\n if (this.getModuleName() === 'datetimepicker') {\n this.calendarElement.appendChild(this.footer);\n }\n if (!this.todayElement.classList.contains(DISABLED)) {\n EventHandler.add(this.todayElement, 'click', this.todayButtonClick, this);\n }\n }\n };\n CalendarBase.prototype.wireEvents = function (id, ref, keyConfig, moduleName) {\n EventHandler.add(this.headerTitleElement, 'click', this.navigateTitle, this);\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n if (this.getModuleName() === 'calendar') {\n this.keyboardModule = new KeyboardEvents(this.element, {\n eventName: 'keydown',\n keyAction: this.keyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n else {\n this.keyboardModule = new KeyboardEvents(this.calendarElement, {\n eventName: 'keydown',\n keyAction: this.keyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n };\n CalendarBase.prototype.dateWireEvents = function (id, ref, keyConfig, moduleName) {\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, keyConfig);\n this.serverModuleName = moduleName;\n };\n CalendarBase.prototype.todayButtonClick = function (e, value, isCustomDate) {\n if (this.showTodayButton) {\n if (this.currentView() === this.depth) {\n this.effect = '';\n }\n else {\n this.effect = 'e-zoomin';\n }\n if (this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.navigateTo(this.depth, new Date(this.checkValue(value)), isCustomDate);\n }\n else {\n this.navigateTo('Month', new Date(this.checkValue(value)), isCustomDate);\n }\n }\n };\n CalendarBase.prototype.resetCalendar = function () {\n this.calendarElement && detach(this.calendarElement);\n this.tableBodyElement && detach(this.tableBodyElement);\n this.table && detach(this.table);\n this.tableHeadElement && detach(this.tableHeadElement);\n this.nextIcon && detach(this.nextIcon);\n this.previousIcon && detach(this.previousIcon);\n this.footer && detach(this.footer);\n this.todayElement = null;\n this.renderDayCellArgs = null;\n this.calendarElement = this.tableBodyElement = this.footer = this.tableHeadElement =\n this.nextIcon = this.previousIcon = this.table = null;\n };\n CalendarBase.prototype.keyActionHandle = function (e, value, multiSelection) {\n if (this.calendarElement === null && e.action === 'escape') {\n return;\n }\n var focusedDate = this.tableBodyElement.querySelector('tr td.e-focused-date');\n var selectedDate;\n if (multiSelection) {\n if (!isNullOrUndefined(focusedDate) && +value === parseInt(focusedDate.getAttribute('id').split('_')[0], 10)) {\n selectedDate = focusedDate;\n }\n else {\n selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n }\n }\n else {\n selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n }\n var view = this.getViewNumber(this.currentView());\n var depthValue = this.getViewNumber(this.depth);\n var levelRestrict = (view === depthValue && this.getViewNumber(this.start) >= depthValue);\n this.effect = '';\n switch (e.action) {\n case 'moveLeft':\n if (this.getModuleName() !== 'daterangepicker' && !isNullOrUndefined(e.target) &&\n e.target.classList.length > 0 && e.target.classList.contains(CONTENTTABLE)) {\n this.keyboardNavigate(-1, view, e, this.max, this.min);\n e.preventDefault();\n }\n break;\n case 'moveRight':\n if (this.getModuleName() !== 'daterangepicker' && !isNullOrUndefined(e.target) &&\n e.target.classList.length > 0 && e.target.classList.contains(CONTENTTABLE)) {\n this.keyboardNavigate(1, view, e, this.max, this.min);\n e.preventDefault();\n }\n break;\n case 'moveUp':\n if (this.getModuleName() !== 'daterangepicker' && !isNullOrUndefined(e.target) &&\n e.target.classList.length > 0 && e.target.classList.contains(CONTENTTABLE)) {\n if (view === 0) {\n this.keyboardNavigate(-7, view, e, this.max, this.min); // move the current date to the previous seven days.\n }\n else {\n this.keyboardNavigate(-4, view, e, this.max, this.min); // move the current year to the previous four days.\n }\n e.preventDefault();\n }\n break;\n case 'moveDown':\n if (this.getModuleName() !== 'daterangepicker' && !isNullOrUndefined(e.target) &&\n e.target.classList.length > 0 && e.target.classList.contains(CONTENTTABLE)) {\n if (view === 0) {\n this.keyboardNavigate(7, view, e, this.max, this.min);\n }\n else {\n this.keyboardNavigate(4, view, e, this.max, this.min);\n }\n e.preventDefault();\n }\n break;\n case 'select':\n if (e.target === this.headerTitleElement) {\n this.navigateTitle(e);\n }\n else if (e.target === this.previousIcon && !e.target.className.includes(DISABLED)) {\n this.navigatePrevious(e);\n }\n else if (e.target === this.nextIcon && !e.target.className.includes(DISABLED)) {\n this.navigateNext(e);\n }\n else if (e.target === this.todayElement && !e.target.className.includes(DISABLED)) {\n this.todayButtonClick(e, value);\n if (this.getModuleName() === 'datepicker' || this.getModuleName() === 'datetimepicker') {\n this.element.focus();\n }\n }\n else {\n var element = !isNullOrUndefined(focusedDate) ? focusedDate : selectedDate;\n if (!isNullOrUndefined(element) && !element.classList.contains(DISABLED)) {\n if (levelRestrict) {\n // eslint-disable-next-line radix\n var d = new Date(parseInt('' + (element).id, 0));\n this.selectDate(e, d, (element));\n if (this.getModuleName() === 'datepicker' || this.getModuleName() === 'datetimepicker') {\n this.element.focus();\n }\n }\n else {\n if (!e.target.className.includes(DISABLED)) {\n this.contentClick(null, --view, (element), value);\n }\n }\n }\n }\n break;\n case 'controlUp':\n this.title();\n e.preventDefault();\n break;\n case 'controlDown':\n if (!isNullOrUndefined(focusedDate) && !levelRestrict || !isNullOrUndefined(selectedDate) && !levelRestrict) {\n this.contentClick(null, --view, (focusedDate || selectedDate), value);\n }\n e.preventDefault();\n break;\n case 'home':\n this.currentDate = this.firstDay(this.currentDate);\n detach(this.tableBodyElement);\n if (view === 0) {\n this.renderMonths(e);\n }\n else if (view === 1) {\n this.renderYears(e);\n }\n else {\n this.renderDecades(e);\n }\n e.preventDefault();\n break;\n case 'end':\n this.currentDate = this.lastDay(this.currentDate, view);\n detach(this.tableBodyElement);\n if (view === 0) {\n this.renderMonths(e);\n }\n else if (view === 1) {\n this.renderYears(e);\n }\n else {\n this.renderDecades(e);\n }\n e.preventDefault();\n break;\n case 'pageUp':\n this.addMonths(this.currentDate, -1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'pageDown':\n this.addMonths(this.currentDate, 1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'shiftPageUp':\n this.addYears(this.currentDate, -1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'shiftPageDown':\n this.addYears(this.currentDate, 1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'controlHome':\n this.navigateTo('Month', new Date(this.currentDate.getFullYear(), 0, 1));\n e.preventDefault();\n break;\n case 'controlEnd':\n this.navigateTo('Month', new Date(this.currentDate.getFullYear(), 11, 31));\n e.preventDefault();\n break;\n case 'tab':\n if ((this.getModuleName() === 'datepicker' || this.getModuleName() === 'datetimepicker') && e.target === this.todayElement) {\n e.preventDefault();\n if (this.isAngular) {\n this.inputElement.focus();\n }\n else {\n this.element.focus();\n }\n this.hide();\n }\n break;\n case 'shiftTab':\n if ((this.getModuleName() === 'datepicker' || this.getModuleName() === 'datetimepicker') && e.target === this.headerTitleElement) {\n e.preventDefault();\n this.element.focus();\n this.hide();\n }\n break;\n case 'escape':\n if ((this.getModuleName() === 'datepicker' || this.getModuleName() === 'datetimepicker') && (e.target === this.headerTitleElement || e.target === this.previousIcon || e.target === this.nextIcon || e.target === this.todayElement)) {\n this.hide();\n }\n break;\n }\n };\n CalendarBase.prototype.keyboardNavigate = function (number, currentView, e, max, min) {\n var date = new Date(this.checkValue(this.currentDate));\n switch (currentView) {\n case 2:\n this.addYears(this.currentDate, number);\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderDecades(e);\n }\n else {\n this.currentDate = date;\n }\n break;\n case 1:\n this.addMonths(this.currentDate, number);\n if (this.calendarMode === 'Gregorian') {\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n else {\n this.currentDate = date;\n }\n }\n else {\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n else {\n this.currentDate = date;\n }\n }\n break;\n case 0:\n this.addDay(this.currentDate, number, e, max, min);\n if (this.isMinMaxRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderMonths(e);\n }\n else {\n this.currentDate = date;\n }\n break;\n }\n };\n /**\n * Initialize the event handler\n *\n * @param {Date} value - Specifies value of date.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.preRender = function (value) {\n var _this = this;\n this.navigatePreviousHandler = this.navigatePrevious.bind(this);\n this.navigateNextHandler = this.navigateNext.bind(this);\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.navigateHandler = function (e) {\n _this.triggerNavigate(e);\n };\n };\n CalendarBase.prototype.minMaxDate = function (localDate) {\n var currentDate = new Date(new Date(+localDate).setHours(0, 0, 0, 0));\n var minDate = new Date(new Date(+this.min).setHours(0, 0, 0, 0));\n var maxDate = new Date(new Date(+this.max).setHours(0, 0, 0, 0));\n if (+currentDate === +minDate || +currentDate === +maxDate) {\n if (+localDate < +this.min) {\n localDate = new Date(+this.min);\n }\n if (+localDate > +this.max) {\n localDate = new Date(+this.max);\n }\n }\n return localDate;\n };\n CalendarBase.prototype.renderMonths = function (e, value, isCustomDate) {\n var numCells = this.weekNumber ? 8 : 7;\n var tdEles;\n if (this.calendarMode === 'Gregorian') {\n tdEles = this.renderDays(this.currentDate, value, null, null, isCustomDate, e);\n }\n else {\n tdEles = this.islamicModule.islamicRenderDays(this.currentDate, value);\n }\n this.createContentHeader();\n if (this.calendarMode === 'Gregorian') {\n this.renderTemplate(tdEles, numCells, MONTH, e, value);\n }\n else {\n this.islamicModule.islamicRenderTemplate(tdEles, numCells, MONTH, e, value);\n }\n };\n CalendarBase.prototype.renderDays = function (currentDate, value, multiSelection, values, isTodayDate, e) {\n var tdEles = [];\n var cellsCount = 42;\n var todayDate = isTodayDate ? new Date(+currentDate) : this.getDate(new Date(), this.timezone);\n var localDate = new Date(this.checkValue(currentDate));\n var minMaxDate;\n var currentMonth = localDate.getMonth();\n this.titleUpdate(currentDate, 'days');\n var d = localDate;\n localDate = new Date(d.getFullYear(), d.getMonth(), 0, d.getHours(), d.getMinutes(), d.getSeconds(), d.getMilliseconds());\n while (localDate.getDay() !== this.firstDayOfWeek) {\n this.setStartDate(localDate, -1 * dayMilliSeconds);\n }\n for (var day = 0; day < cellsCount; ++day) {\n var weekEle = this.createElement('td', { className: CELL });\n var weekAnchor = this.createElement('span');\n if (day % 7 === 0 && this.weekNumber) {\n // 6 days are added to get Last day of the week and 3 days are added to get middle day of the week.\n var numberOfDays = this.weekRule === 'FirstDay' ? 6 : (this.weekRule === 'FirstFourDayWeek' ? 3 : 0);\n var finalDate = new Date(localDate.getFullYear(), localDate.getMonth(), (localDate.getDate() + numberOfDays));\n weekAnchor.textContent = '' + this.getWeek(finalDate);\n weekEle.appendChild(weekAnchor);\n addClass([weekEle], '' + WEEKNUMBER);\n tdEles.push(weekEle);\n }\n minMaxDate = new Date(+localDate);\n localDate = this.minMaxDate(localDate);\n var dateFormatOptions = { type: 'dateTime', skeleton: 'full' };\n var date = this.globalize.parseDate(this.globalize.formatDate(localDate, dateFormatOptions), dateFormatOptions);\n var tdEle = this.dayCell(localDate);\n var title = this.globalize.formatDate(localDate, { type: 'date', skeleton: 'full' });\n var dayLink = this.createElement('span');\n dayLink.textContent = this.globalize.formatDate(localDate, { format: 'd', type: 'date', skeleton: 'yMd' });\n var disabled = (this.min > localDate) || (this.max < localDate);\n if (disabled) {\n addClass([tdEle], DISABLED);\n addClass([tdEle], OVERLAY);\n }\n else {\n dayLink.setAttribute('title', '' + title);\n }\n if (currentMonth !== localDate.getMonth()) {\n addClass([tdEle], OTHERMONTH);\n dayLink.setAttribute('aria-disabled', 'true');\n }\n if (localDate.getDay() === 0 || localDate.getDay() === 6) {\n addClass([tdEle], WEEKEND);\n }\n tdEle.appendChild(dayLink);\n this.renderDayCellArgs = {\n date: localDate,\n isDisabled: false,\n element: tdEle,\n isOutOfRange: disabled\n };\n var argument = this.renderDayCellArgs;\n this.renderDayCellEvent(argument);\n if (argument.isDisabled) {\n var selectDate = new Date(this.checkValue(value));\n var argsDate = new Date(this.checkValue(argument.date));\n if (multiSelection) {\n if (!isNullOrUndefined(values) && values.length > 0) {\n for (var index = 0; index < values.length; index++) {\n var localDateString = +new Date(this.globalize.formatDate(argument.date, { type: 'date', skeleton: 'yMd' }));\n var tempDateString = +new Date(this.globalize.formatDate(values[index], { type: 'date', skeleton: 'yMd' }));\n if (localDateString === tempDateString) {\n values.splice(index, 1);\n index = -1;\n }\n }\n }\n }\n else if (selectDate && +selectDate === +argsDate) {\n this.setProperties({ value: null }, true);\n }\n }\n if (this.renderDayCellArgs.isDisabled && !tdEle.classList.contains(SELECTED)) {\n addClass([tdEle], DISABLED);\n addClass([tdEle], OVERLAY);\n dayLink.setAttribute('aria-disabled', 'true');\n if (+this.renderDayCellArgs.date === +this.todayDate) {\n this.todayDisabled = true;\n }\n }\n var otherMnthBool = tdEle.classList.contains(OTHERMONTH);\n var disabledCls = tdEle.classList.contains(DISABLED);\n if (!disabledCls) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n }\n // to set the value as null while setting the disabled date onProperty change.\n // if (args.isDisabled && +this.value === +args.date) {\n // this.setProperties({ value: null }, true);\n // }\n var currentTarget = void 0;\n if (!isNullOrUndefined(e) && e.type === 'click') {\n currentTarget = e.currentTarget;\n }\n if (multiSelection && !isNullOrUndefined(values) && !disabledCls) {\n for (var tempValue = 0; tempValue < values.length; tempValue++) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var formatOptions = { format: null, type: 'date', skeleton: 'short', calendar: type };\n var localDateString = this.globalize.formatDate(localDate, formatOptions);\n var tempDateString = this.globalize.formatDate(values[tempValue], formatOptions);\n if ((localDateString === tempDateString && this.getDateVal(localDate, values[tempValue]))\n || (this.getDateVal(localDate, value))) {\n addClass([tdEle], SELECTED);\n }\n if (!isNullOrUndefined(currentTarget) && currentTarget.innerText === tdEle.innerText &&\n this.previousDates && tdEle.classList.contains(SELECTED) && currentTarget.classList.contains(SELECTED)) {\n removeClass([tdEle], SELECTED);\n this.previousDates = false;\n var copyValues = this.copyValues(values);\n for (var i = 0; i < copyValues.length; i++) {\n var type_1 = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var formatOptions_1 = { format: null, type: 'date', skeleton: 'short', calendar: type_1 };\n var localDateString_1 = this.globalize.formatDate(date, formatOptions_1);\n var tempDateString_1 = this.globalize.formatDate(copyValues[i], formatOptions_1);\n if (localDateString_1 === tempDateString_1) {\n var index = copyValues.indexOf(copyValues[i]);\n copyValues.splice(index, 1);\n values.splice(index, 1);\n }\n }\n this.setProperties({ values: copyValues }, true);\n }\n else {\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n }\n }\n if (values.length <= 0) {\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n }\n }\n else if (!disabledCls && this.getDateVal(localDate, value)) {\n addClass([tdEle], SELECTED);\n }\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n if (!isNullOrUndefined(date) && date.getFullYear() === todayDate.getFullYear() && date.getMonth() === todayDate.getMonth()\n && date.getDate() === todayDate.getDate()) {\n addClass([tdEle], TODAY);\n }\n tdEles.push(this.renderDayCellArgs.element);\n localDate = new Date(+minMaxDate);\n this.addDay(localDate, 1, null, this.max, this.min);\n }\n return tdEles;\n };\n CalendarBase.prototype.updateFocus = function (otherMonth, disabled, localDate, tableElement, currentDate) {\n if (currentDate.getDate() === localDate.getDate() && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n else {\n // eslint-disable-next-line radix\n if (currentDate >= this.max && parseInt(tableElement.id, 0) === +this.max && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n // eslint-disable-next-line radix\n if (currentDate <= this.min && parseInt(tableElement.id, 0) === +this.min && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n }\n };\n CalendarBase.prototype.renderYears = function (e, value) {\n this.removeTableHeadElement();\n var numCells = 4;\n var tdEles = [];\n var valueUtil = isNullOrUndefined(value);\n var curDate = new Date(this.checkValue(this.currentDate));\n var mon = curDate.getMonth();\n var yr = curDate.getFullYear();\n var localDate = curDate;\n var curYrs = localDate.getFullYear();\n var minYr = new Date(this.checkValue(this.min)).getFullYear();\n var minMonth = new Date(this.checkValue(this.min)).getMonth();\n var maxYr = new Date(this.checkValue(this.max)).getFullYear();\n var maxMonth = new Date(this.checkValue(this.max)).getMonth();\n localDate.setMonth(0);\n this.titleUpdate(this.currentDate, 'months');\n localDate.setDate(1);\n for (var month = 0; month < 12; ++month) {\n var tdEle = this.dayCell(localDate);\n var dayLink = this.createElement('span');\n var localMonth = (value && (value).getMonth() === localDate.getMonth());\n var select = (value && (value).getFullYear() === yr && localMonth);\n var title = this.globalize.formatDate(localDate, { type: 'date', format: 'MMM y' });\n dayLink.textContent = this.toCapitalize(this.globalize.formatDate(localDate, {\n format: null, type: 'dateTime', skeleton: 'MMM'\n }));\n if ((this.min && (curYrs < minYr || (month < minMonth && curYrs === minYr))) || (this.max && (curYrs > maxYr || (month > maxMonth && curYrs >= maxYr)))) {\n addClass([tdEle], DISABLED);\n }\n else if (!valueUtil && select) {\n addClass([tdEle], SELECTED);\n }\n else {\n if (localDate.getMonth() === mon && this.currentDate.getMonth() === mon) {\n addClass([tdEle], FOCUSEDDATE);\n }\n }\n localDate.setDate(1);\n localDate.setMonth(localDate.getMonth() + 1);\n if (!tdEle.classList.contains(DISABLED)) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n dayLink.setAttribute('title', '' + title);\n }\n tdEle.appendChild(dayLink);\n tdEles.push(tdEle);\n }\n this.renderTemplate(tdEles, numCells, YEAR, e, value);\n };\n CalendarBase.prototype.renderDecades = function (e, value) {\n this.removeTableHeadElement();\n var numCells = 4;\n var yearCell = 12;\n var tdEles = [];\n var localDate = new Date(this.checkValue(this.currentDate));\n localDate.setMonth(0);\n localDate.setDate(1);\n var localYr = localDate.getFullYear();\n var startYr = new Date(localDate.setFullYear((localYr - localYr % 10)));\n var endYr = new Date(localDate.setFullYear((localYr - localYr % 10 + (10 - 1))));\n var startFullYr = startYr.getFullYear();\n var endFullYr = endYr.getFullYear();\n var startHdrYr = this.globalize.formatDate(startYr, {\n format: null, type: 'dateTime', skeleton: 'y'\n });\n var endHdrYr = this.globalize.formatDate(endYr, { format: null, type: 'dateTime', skeleton: 'y' });\n this.headerTitleElement.textContent = startHdrYr + ' - ' + (endHdrYr);\n var start = new Date(localYr - (localYr % 10) - 1, 0, 1);\n var startYear = start.getFullYear();\n for (var rowIterator = 0; rowIterator < yearCell; ++rowIterator) {\n var year = startYear + rowIterator;\n localDate.setFullYear(year);\n var tdEle = this.dayCell(localDate);\n var dayLink = this.createElement('span');\n dayLink.textContent = this.globalize.formatDate(localDate, {\n format: null, type: 'dateTime', skeleton: 'y'\n });\n if ((year < startFullYr) || (year > endFullYr)) {\n addClass([tdEle], OTHERDECADE);\n dayLink.setAttribute('aria-disabled', 'true');\n if (!isNullOrUndefined(value) && localDate.getFullYear() === (value).getFullYear()) {\n addClass([tdEle], SELECTED);\n }\n if (year < new Date(this.checkValue(this.min)).getFullYear() ||\n year > new Date(this.checkValue(this.max)).getFullYear()) {\n addClass([tdEle], DISABLED);\n }\n }\n else if (year < new Date(this.checkValue(this.min)).getFullYear() ||\n year > new Date(this.checkValue(this.max)).getFullYear()) {\n addClass([tdEle], DISABLED);\n }\n else if (!isNullOrUndefined(value) && localDate.getFullYear() === (value).getFullYear()) {\n addClass([tdEle], SELECTED);\n }\n else {\n if (localDate.getFullYear() === this.currentDate.getFullYear() && !tdEle.classList.contains(DISABLED)) {\n addClass([tdEle], FOCUSEDDATE);\n }\n }\n if (!tdEle.classList.contains(DISABLED)) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n dayLink.setAttribute('title', '' + dayLink.textContent);\n }\n tdEle.appendChild(dayLink);\n tdEles.push(tdEle);\n }\n this.renderTemplate(tdEles, numCells, 'e-decade', e, value);\n };\n CalendarBase.prototype.dayCell = function (localDate) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var dateFormatOptions = { skeleton: 'full', type: 'dateTime', calendar: type };\n var date = this.globalize.parseDate(this.globalize.formatDate(localDate, dateFormatOptions), dateFormatOptions);\n var value;\n if (!isNullOrUndefined(date)) {\n value = date.valueOf();\n }\n var attrs = {\n className: CELL, attrs: { 'id': '' + getUniqueID('' + value), 'aria-selected': 'false' }\n };\n return this.createElement('td', attrs);\n };\n CalendarBase.prototype.firstDay = function (date) {\n var collection = this.currentView() !== 'Decade' ? this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERMONTH + '') :\n this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERDECADE + '');\n if (collection.length) {\n for (var i = 0; i < collection.length; i++) {\n if (!collection[i].classList.contains(DISABLED)) {\n // eslint-disable-next-line radix\n date = new Date(parseInt(collection[i].id, 0));\n break;\n }\n }\n }\n return date;\n };\n CalendarBase.prototype.lastDay = function (date, view) {\n var lastDate = new Date(date.getFullYear(), date.getMonth() + 1, 0);\n if (view !== 2) {\n var timeOffset = Math.abs(lastDate.getTimezoneOffset() - this.firstDay(date).getTimezoneOffset());\n if (timeOffset) {\n lastDate.setHours(this.firstDay(date).getHours() + (timeOffset / 60));\n }\n return this.findLastDay(lastDate);\n }\n else {\n return this.findLastDay(this.firstDay(lastDate));\n }\n };\n CalendarBase.prototype.checkDateValue = function (value) {\n return (!isNullOrUndefined(value) && value instanceof Date && !isNaN(+value)) ? value : null;\n };\n CalendarBase.prototype.findLastDay = function (date) {\n var collection = this.currentView() === 'Decade' ? this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERDECADE + '') :\n this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERMONTH + '');\n if (collection.length) {\n for (var i = collection.length - 1; i >= 0; i--) {\n if (!collection[i].classList.contains(DISABLED)) {\n // eslint-disable-next-line radix\n date = new Date(parseInt(collection[i].id, 0));\n break;\n }\n }\n }\n return date;\n };\n CalendarBase.prototype.removeTableHeadElement = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content table thead')[0])) {\n detach(this.tableHeadElement);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content table thead')[0])) {\n detach(this.tableHeadElement);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.renderTemplate = function (elements, count, classNm, e, value) {\n var view = this.getViewNumber(this.currentView());\n var trEle;\n this.tableBodyElement = this.createElement('tbody');\n this.table.appendChild(this.tableBodyElement);\n removeClass([this.contentElement, this.headerElement], [MONTH, DECADE, YEAR]);\n addClass([this.contentElement, this.headerElement], [classNm]);\n var weekNumCell = 41;\n var numberCell = 35;\n var otherMonthCell = 6;\n var row = count;\n var rowIterator = 0;\n for (var dayCell = 0; dayCell < elements.length / count; ++dayCell) {\n trEle = this.createElement('tr');\n for (rowIterator = 0 + rowIterator; rowIterator < row; rowIterator++) {\n if (!elements[rowIterator].classList.contains('e-week-number') && !isNullOrUndefined(elements[rowIterator].children[0])) {\n addClass([elements[rowIterator].children[0]], [LINK]);\n rippleEffect(elements[rowIterator].children[0], {\n duration: 600,\n isCenterRipple: true\n });\n }\n trEle.appendChild(elements[rowIterator]);\n if (this.weekNumber && rowIterator === otherMonthCell + 1 && elements[otherMonthCell + 1].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n if (!this.weekNumber && rowIterator === otherMonthCell && elements[otherMonthCell].\n classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n if (this.weekNumber) {\n if (rowIterator === weekNumCell && elements[weekNumCell].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n }\n else {\n if (rowIterator === numberCell && elements[numberCell].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n }\n }\n row = row + count;\n rowIterator = rowIterator + 0;\n this.tableBodyElement.appendChild(trEle);\n }\n this.table.querySelector('tbody').className = this.effect;\n if (this.calendarMode === 'Gregorian') {\n this.iconHandler();\n }\n else {\n this.islamicModule.islamicIconHandler();\n }\n if (view !== this.getViewNumber(this.currentView()) || (view === 0 && view !== this.getViewNumber(this.currentView()))) {\n this.navigateHandler(e);\n }\n this.setAriaActiveDescendant();\n };\n CalendarBase.prototype.clickHandler = function (e, value) {\n this.clickEventEmitter(e);\n var eve = e.currentTarget;\n var view = this.getViewNumber(this.currentView());\n if (eve.classList.contains(OTHERMONTH)) {\n this.contentClick(e, 0, null, value);\n }\n else if (view === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.contentClick(e, 1, null, value);\n }\n else if (2 === view) {\n this.contentClick(e, 1, null, value);\n }\n else if (!eve.classList.contains(OTHERMONTH) && view === 0) {\n this.selectDate(e, this.getIdValue(e, null), null);\n }\n else {\n this.contentClick(e, 0, eve, value);\n }\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n // Content click event handler required for extended components\n CalendarBase.prototype.clickEventEmitter = function (e) {\n e.preventDefault();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.contentClick = function (e, view, element, value) {\n var currentView = this.getViewNumber(this.currentView());\n var d = this.getIdValue(e, element);\n switch (view) {\n case 0:\n if (currentView === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n detach(this.tableBodyElement);\n this.currentDate = d;\n this.effect = ZOOMIN;\n this.renderMonths(e);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n this.currentDate.setMonth(d.getMonth());\n if (d.getMonth() > 0 && this.currentDate.getMonth() !== d.getMonth()) {\n this.currentDate.setDate(0);\n }\n this.currentDate.setFullYear(d.getFullYear());\n }\n else {\n this.currentDate = d;\n }\n this.effect = ZOOMIN;\n detach(this.tableBodyElement);\n this.renderMonths(e);\n }\n break;\n case 1:\n if (currentView === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.selectDate(e, d, null);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n this.currentDate.setFullYear(d.getFullYear());\n }\n else {\n this.islamicPreviousHeader = this.headerElement.textContent;\n var islamicDate = this.islamicModule.getIslamicDate(d);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year, islamicDate.month, 1);\n }\n this.effect = ZOOMIN;\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n }\n };\n CalendarBase.prototype.switchView = function (view, e, multiSelection, isCustomDate) {\n switch (view) {\n case 0:\n detach(this.tableBodyElement);\n this.renderMonths(e, null, isCustomDate);\n break;\n case 1:\n detach(this.tableBodyElement);\n this.renderYears(e);\n break;\n case 2:\n detach(this.tableBodyElement);\n this.renderDecades(e);\n }\n };\n /**\n * To get component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n CalendarBase.prototype.getModuleName = function () {\n return 'calendar';\n };\n /**\n *\n * @returns {void}\n\n */\n CalendarBase.prototype.requiredModules = function () {\n var modules = [];\n if (this.calendarMode === 'Islamic') {\n modules.push({ args: [this], member: 'islamic', name: 'Islamic' });\n }\n return modules;\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string}\n */\n CalendarBase.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Called internally if any of the property value changed.\n *\n * @param {CalendarBaseModel} newProp - Returns the dynamic property value of the component.\n * @param {CalendarBaseModel} oldProp - Returns the previous property value of the component.\n * @param {boolean} multiSelection - - Specifies whether multiple date selection is enabled or not.\n * @param {Date[]} values - Specifies the dates.\n * @returns {void}\n * @private\n */\n CalendarBase.prototype.onPropertyChanged = function (newProp, oldProp, multiSelection, values) {\n this.effect = '';\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'enableRtl':\n if (newProp.enableRtl) {\n if (this.getModuleName() === 'calendar') {\n this.element.classList.add('e-rtl');\n }\n else {\n this.calendarElement.classList.add('e-rtl');\n }\n }\n else {\n if (this.getModuleName() === 'calendar') {\n this.element.classList.remove('e-rtl');\n }\n else {\n this.calendarElement.classList.remove('e-rtl');\n }\n }\n break;\n case 'dayHeaderFormat':\n this.getCultureValues();\n if (this.getModuleName() !== 'datepicker') {\n this.createContentHeader();\n }\n else if (this.calendarElement) {\n this.createContentHeader();\n }\n this.adjustLongHeaderSize();\n break;\n case 'min':\n case 'max':\n this.rangeValidation(this.min, this.max);\n if (prop === 'min') {\n this.setProperties({ min: this.checkDateValue(new Date(this.checkValue(newProp.min))) }, true);\n }\n else {\n this.setProperties({ max: this.checkDateValue(new Date(this.checkValue(newProp.max))) }, true);\n }\n this.setProperties({ start: this.currentView() }, true);\n if (this.tableBodyElement) {\n detach(this.tableBodyElement);\n }\n this.minMaxUpdate();\n if (multiSelection) {\n this.validateValues(multiSelection, values);\n }\n if (this.getModuleName() !== 'datepicker') {\n this.createContentBody();\n }\n else if (this.calendarElement) {\n this.createContentBody();\n }\n if ((this.todayDate < this.min || this.max < this.todayDate) && (this.footer) && (this.todayElement)) {\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = null;\n this.createContentFooter();\n }\n else {\n if ((this.footer) && (this.todayElement) && this.todayElement.classList.contains('e-disabled')) {\n removeClass([this.todayElement], DISABLED);\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = null;\n this.createContentFooter();\n }\n }\n break;\n case 'start':\n case 'depth':\n case 'weekNumber':\n case 'firstDayOfWeek':\n case 'weekRule':\n this.checkView();\n if (this.getModuleName() !== 'datepicker') {\n this.createContentHeader();\n this.createContentBody();\n }\n else if (this.calendarElement) {\n this.createContentHeader();\n this.createContentBody();\n }\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n if (this.getModuleName() !== 'datepicker') {\n this.createContentHeader();\n this.createContentBody();\n }\n else if (this.calendarElement) {\n this.createContentHeader();\n this.createContentBody();\n }\n if (this.getModuleName() === 'calendar') {\n var l10nLocale = { today: 'Today' };\n this.l10 = new L10n(this.getModuleName(), l10nLocale, this.locale);\n }\n this.l10.setLocale(this.locale);\n if (this.showTodayButton) {\n this.updateFooter();\n }\n break;\n case 'showTodayButton':\n if (newProp.showTodayButton) {\n this.createContentFooter();\n }\n else {\n if (!isNullOrUndefined(this.todayElement) && !isNullOrUndefined(this.footer)) {\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = undefined;\n }\n }\n this.setProperties({ showTodayButton: newProp.showTodayButton }, true);\n break;\n }\n }\n };\n /**\n * values property updated with considered disabled dates of the calendar.\n *\n * @param {boolean} multiSelection - Specifies whether multiple date selection is enabled.\n * @param {Date[]} values - Specifies the dates to validate.\n * @returns {void}\n */\n CalendarBase.prototype.validateValues = function (multiSelection, values) {\n if (multiSelection && !isNullOrUndefined(values) && values.length > 0) {\n var copyValues = this.copyValues(values);\n for (var skipIndex = 0; skipIndex < copyValues.length; skipIndex++) {\n var tempValue = copyValues[skipIndex];\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var tempValueString = void 0;\n if (this.calendarMode === 'Gregorian') {\n tempValueString = this.globalize.formatDate(tempValue, { type: 'date', skeleton: 'yMd' });\n }\n else {\n tempValueString = this.globalize.formatDate(tempValue, { type: 'dateTime', skeleton: 'full', calendar: 'islamic' });\n }\n var minFormatOption = { type: 'date', skeleton: 'yMd', calendar: type };\n var minStringValue = this.globalize.formatDate(this.min, minFormatOption);\n var minString = minStringValue;\n var maxFormatOption = { type: 'date', skeleton: 'yMd', calendar: type };\n var maxStringValue = this.globalize.formatDate(this.max, maxFormatOption);\n var maxString = maxStringValue;\n if (+new Date(tempValueString) < +new Date(minString) ||\n +new Date(tempValueString) > +new Date(maxString)) {\n copyValues.splice(skipIndex, 1);\n skipIndex = -1;\n }\n }\n this.setProperties({ values: copyValues }, true);\n }\n };\n CalendarBase.prototype.setValueUpdate = function () {\n if (!isNullOrUndefined(this.tableBodyElement)) {\n detach(this.tableBodyElement);\n this.setProperties({ start: this.currentView() }, true);\n this.createContentBody();\n }\n };\n CalendarBase.prototype.copyValues = function (values) {\n var copyValues = [];\n if (!isNullOrUndefined(values) && values.length > 0) {\n for (var index = 0; index < values.length; index++) {\n copyValues.push(new Date(+values[index]));\n }\n }\n return copyValues;\n };\n CalendarBase.prototype.titleUpdate = function (date, view) {\n var globalize = new Internationalization(this.locale);\n var dayFormatOptions;\n var monthFormatOptions;\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n if (this.calendarMode === 'Gregorian') {\n dayFormatOptions = globalize.formatDate(date, { type: 'dateTime', skeleton: 'yMMMM', calendar: type });\n monthFormatOptions = globalize.formatDate(date, {\n format: null, type: 'dateTime', skeleton: 'y', calendar: type\n });\n }\n else {\n dayFormatOptions = globalize.formatDate(date, { type: 'dateTime', format: 'MMMM y', calendar: type });\n monthFormatOptions = globalize.formatDate(date, { type: 'dateTime', format: 'y', calendar: type });\n }\n switch (view) {\n case 'days':\n this.headerTitleElement.textContent = this.toCapitalize(dayFormatOptions);\n break;\n case 'months':\n this.headerTitleElement.textContent = monthFormatOptions;\n }\n };\n CalendarBase.prototype.setActiveDescendant = function () {\n var id;\n var focusedEle = this.tableBodyElement.querySelector('tr td.e-focused-date');\n var selectedEle = this.tableBodyElement.querySelector('tr td.e-selected');\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var title;\n var view = this.currentView();\n if (view === 'Month') {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: 'full', calendar: type });\n }\n else if (view === 'Year') {\n if (type !== 'islamic') {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: 'yMMMM', calendar: type });\n }\n else {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: 'GyMMM', calendar: type });\n }\n }\n else {\n title = this.globalize.formatDate(this.currentDate, {\n format: null, type: 'date', skeleton: 'y', calendar: type\n });\n }\n if (selectedEle || focusedEle) {\n if (!isNullOrUndefined(selectedEle)) {\n selectedEle.setAttribute('aria-selected', 'true');\n }\n (focusedEle || selectedEle).setAttribute('aria-label', title);\n id = (focusedEle || selectedEle).getAttribute('id');\n }\n return id;\n };\n CalendarBase.prototype.iconHandler = function () {\n new Date(this.checkValue(this.currentDate)).setDate(1);\n switch (this.currentView()) {\n case 'Month':\n this.previousIconHandler(this.compareMonth(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareMonth(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n break;\n case 'Year':\n this.previousIconHandler(this.compareYear(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareYear(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n break;\n case 'Decade':\n this.previousIconHandler(this.compareDecade(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareDecade(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n }\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n CalendarBase.prototype.destroy = function () {\n if (this.getModuleName() === 'calendar' && this.element) {\n removeClass([this.element], [ROOT]);\n }\n else {\n if (this.calendarElement && this.element) {\n removeClass([this.element], [ROOT]);\n }\n }\n if (this.getModuleName() === 'calendar' && this.element) {\n if (!isNullOrUndefined(this.headerTitleElement)) {\n EventHandler.remove(this.headerTitleElement, 'click', this.navigateTitle);\n }\n if (this.todayElement) {\n EventHandler.remove(this.todayElement, 'click', this.todayButtonClick);\n }\n this.previousIconHandler(true);\n this.nextIconHandler(true);\n this.keyboardModule.destroy();\n this.element.removeAttribute('data-role');\n if (!isNullOrUndefined(this.calendarEleCopy.getAttribute('tabindex'))) {\n this.element.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.element.removeAttribute('tabindex');\n }\n }\n if (this.element) {\n this.element.innerHTML = '';\n }\n this.todayElement = null;\n this.tableBodyElement = null;\n this.todayButtonEvent = null;\n this.renderDayCellArgs = null;\n this.headerElement = null;\n this.nextIcon = null;\n this.table = null;\n this.tableHeadElement = null;\n this.previousIcon = null;\n this.headerTitleElement = null;\n this.footer = null;\n this.contentElement = null;\n _super.prototype.destroy.call(this);\n };\n CalendarBase.prototype.title = function (e) {\n var currentView = this.getViewNumber(this.currentView());\n this.effect = ZOOMIN;\n this.switchView(++currentView, e);\n };\n CalendarBase.prototype.getViewNumber = function (stringVal) {\n if (stringVal === 'Month') {\n return 0;\n }\n else if (stringVal === 'Year') {\n return 1;\n }\n else {\n return 2;\n }\n };\n CalendarBase.prototype.navigateTitle = function (e) {\n e.preventDefault();\n this.title(e);\n };\n CalendarBase.prototype.previous = function () {\n this.effect = '';\n var currentView = this.getViewNumber(this.currentView());\n switch (this.currentView()) {\n case 'Month':\n this.addMonths(this.currentDate, -1);\n this.switchView(currentView);\n break;\n case 'Year':\n this.addYears(this.currentDate, -1);\n this.switchView(currentView);\n break;\n case 'Decade':\n this.addYears(this.currentDate, -10);\n this.switchView(currentView);\n break;\n }\n };\n CalendarBase.prototype.navigatePrevious = function (e) {\n !Browser.isDevice && e.preventDefault();\n if (this.calendarMode === 'Gregorian') {\n this.previous();\n }\n else {\n this.islamicModule.islamicPrevious();\n }\n this.triggerNavigate(e);\n };\n CalendarBase.prototype.next = function () {\n this.effect = '';\n var currentView = this.getViewNumber(this.currentView());\n switch (this.currentView()) {\n case 'Month':\n this.addMonths(this.currentDate, 1);\n this.switchView(currentView);\n break;\n case 'Year':\n this.addYears(this.currentDate, 1);\n this.switchView(currentView);\n break;\n case 'Decade':\n this.addYears(this.currentDate, 10);\n this.switchView(currentView);\n break;\n }\n };\n CalendarBase.prototype.navigateNext = function (eve) {\n !Browser.isDevice && eve.preventDefault();\n if (this.calendarMode === 'Gregorian') {\n this.next();\n }\n else {\n this.islamicModule.islamicNext();\n }\n this.triggerNavigate(eve);\n };\n /**\n * This method is used to navigate to the month/year/decade view of the Calendar.\n *\n * @param {string} view - Specifies the view of the Calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @param {boolean} isCustomDate - Specifies whether the calendar is rendered with custom today date or not.\n * @returns {void}\n */\n CalendarBase.prototype.navigateTo = function (view, date, isCustomDate) {\n if (+date >= +this.min && +date <= +this.max) {\n this.currentDate = date;\n }\n if (+date <= +this.min) {\n this.currentDate = new Date(this.checkValue(this.min));\n }\n if (+date >= +this.max) {\n this.currentDate = new Date(this.checkValue(this.max));\n }\n if ((this.getViewNumber(this.depth) >= this.getViewNumber(view))) {\n if ((this.getViewNumber(this.depth) <= this.getViewNumber(this.start))\n || this.getViewNumber(this.depth) === this.getViewNumber(view)) {\n view = this.depth;\n }\n }\n this.switchView(this.getViewNumber(view), null, null, isCustomDate);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the Calendar.\n *\n * @returns {string}\n */\n CalendarBase.prototype.currentView = function () {\n if (!isNullOrUndefined(this.contentElement) && this.contentElement.classList.contains(YEAR)) {\n return 'Year';\n }\n else if (!isNullOrUndefined(this.contentElement) && this.contentElement.classList.contains(DECADE)) {\n return 'Decade';\n }\n else {\n return 'Month';\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n CalendarBase.prototype.getDateVal = function (date, value) {\n return (!isNullOrUndefined(value) && date.getDate() === (value).getDate()\n && date.getMonth() === (value).getMonth() && date.getFullYear() === (value).getFullYear());\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.getCultureObjects = function (ld, c) {\n var gregorianFormat = '.dates.calendars.gregorian.days.format.' + this.dayHeaderFormat.toLowerCase();\n var islamicFormat = '.dates.calendars.islamic.days.format.' + this.dayHeaderFormat.toLowerCase();\n var mainVal = 'main.';\n if (this.calendarMode === 'Gregorian') {\n return getValue(mainVal + '' + this.locale + gregorianFormat, ld);\n }\n else {\n return getValue('main.' + '' + this.locale + islamicFormat, ld);\n }\n };\n CalendarBase.prototype.getWeek = function (d) {\n var currentDate = new Date(this.checkValue(d)).valueOf();\n var date = new Date(d.getFullYear(), 0, 1).valueOf();\n return Math.ceil((((currentDate - date) + dayMilliSeconds) / dayMilliSeconds) / 7);\n };\n CalendarBase.prototype.setStartDate = function (date, time) {\n var tzOffset = date.getTimezoneOffset();\n var d = new Date(date.getTime() + time);\n var tzOffsetDiff = d.getTimezoneOffset() - tzOffset;\n date.setTime(d.getTime() + tzOffsetDiff * minutesMilliSeconds);\n };\n CalendarBase.prototype.addMonths = function (date, i) {\n if (this.calendarMode === 'Gregorian') {\n var day = date.getDate();\n date.setDate(1);\n date.setMonth(date.getMonth() + i);\n date.setDate(Math.min(day, this.getMaxDays(date)));\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(date);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year, (islamicDate.month) + i, 1);\n }\n };\n CalendarBase.prototype.addYears = function (date, i) {\n if (this.calendarMode === 'Gregorian') {\n var day = date.getDate();\n date.setDate(1);\n date.setFullYear(date.getFullYear() + i);\n date.setDate(Math.min(day, this.getMaxDays(date)));\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(date);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year + i, (islamicDate.month), 1);\n }\n };\n CalendarBase.prototype.getIdValue = function (e, element) {\n var eve;\n if (e) {\n eve = e.currentTarget;\n }\n else {\n eve = element;\n }\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var dateFormatOptions = { type: 'dateTime', skeleton: 'full', calendar: type };\n // eslint-disable-next-line radix\n var dateString = this.globalize.formatDate(new Date(parseInt('' + eve.getAttribute('id'), 0)), dateFormatOptions);\n var date = this.globalize.parseDate(dateString, dateFormatOptions);\n var value = date.valueOf() - date.valueOf() % 1000;\n return new Date(value);\n //return this.globalize.parseDate(dateString, dateFormatOptions);\n };\n CalendarBase.prototype.adjustLongHeaderSize = function () {\n removeClass([this.element], DAYHEADERLONG);\n if (this.dayHeaderFormat === 'Wide') {\n addClass([this.getModuleName() === 'calendar' ? this.element : this.calendarElement], DAYHEADERLONG);\n }\n };\n CalendarBase.prototype.selectDate = function (e, date, node, multiSelection, values) {\n var element = node || e.currentTarget;\n this.isDateSelected = false;\n if (this.currentView() === 'Decade') {\n this.setDateDecade(this.currentDate, date.getFullYear());\n }\n else if (this.currentView() === 'Year') {\n this.setDateYear(this.currentDate, date);\n }\n else {\n if (multiSelection && !this.checkPresentDate(date, values)) {\n var copyValues = this.copyValues(values);\n if (!isNullOrUndefined(values) && copyValues.length > 0) {\n copyValues.push(new Date(this.checkValue(date)));\n this.setProperties({ values: copyValues }, true);\n this.setProperties({ value: values[values.length - 1] }, true);\n }\n else {\n this.setProperties({ values: [new Date(this.checkValue(date))] }, true);\n }\n }\n else {\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n }\n this.currentDate = new Date(this.checkValue(date));\n }\n var tableBodyElement = closest(element, '.' + ROOT);\n if (isNullOrUndefined(tableBodyElement)) {\n tableBodyElement = this.tableBodyElement;\n }\n if (!multiSelection && !isNullOrUndefined(tableBodyElement.querySelector('.' + SELECTED))) {\n removeClass([tableBodyElement.querySelector('.' + SELECTED)], SELECTED);\n }\n if (!multiSelection && !isNullOrUndefined(tableBodyElement.querySelector('.' + FOCUSEDDATE))) {\n removeClass([tableBodyElement.querySelector('.' + FOCUSEDDATE)], FOCUSEDDATE);\n }\n if (!multiSelection && !isNullOrUndefined(tableBodyElement.querySelector('.' + FOCUSEDCELL))) {\n removeClass([tableBodyElement.querySelector('.' + FOCUSEDCELL)], FOCUSEDCELL);\n }\n if (multiSelection) {\n var copyValues = this.copyValues(values);\n var collection = Array.prototype.slice.call(this.tableBodyElement.querySelectorAll('td'));\n for (var index = 0; index < collection.length; index++) {\n var tempElement = tableBodyElement.querySelectorAll('td' + '.' + FOCUSEDDATE)[0];\n var selectedElement = tableBodyElement.querySelectorAll('td' + '.' + SELECTED)[0];\n if (collection[index] === tempElement) {\n removeClass([collection[index]], FOCUSEDDATE);\n }\n if (collection[index] === selectedElement &&\n !this.checkPresentDate(new Date(parseInt(selectedElement.getAttribute('id').split('_')[0], 10)), values)) {\n removeClass([collection[index]], SELECTED);\n }\n }\n if (element.classList.contains(SELECTED)) {\n removeClass([element], SELECTED);\n for (var i = 0; i < copyValues.length; i++) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var formatOptions = { format: null, type: 'date', skeleton: 'short', calendar: type };\n var localDateString = this.globalize.formatDate(date, formatOptions);\n var tempDateString = this.globalize.formatDate(copyValues[i], formatOptions);\n if (localDateString === tempDateString) {\n var index = copyValues.indexOf(copyValues[i]);\n copyValues.splice(index, 1);\n addClass([element], FOCUSEDDATE);\n }\n }\n this.setProperties({ values: copyValues }, true);\n }\n else {\n addClass([element], SELECTED);\n }\n }\n else {\n addClass([element], SELECTED);\n }\n this.isDateSelected = true;\n };\n CalendarBase.prototype.checkPresentDate = function (dates, values) {\n var previousValue = false;\n if (!isNullOrUndefined(values)) {\n for (var checkPrevious = 0; checkPrevious < values.length; checkPrevious++) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var localDateString = this.globalize.formatDate(dates, {\n format: null, type: 'date', skeleton: 'short', calendar: type\n });\n var tempDateString = this.globalize.formatDate(values[checkPrevious], {\n format: null, type: 'date', skeleton: 'short', calendar: type\n });\n if (localDateString === tempDateString) {\n previousValue = true;\n }\n }\n }\n return previousValue;\n };\n CalendarBase.prototype.setAriaActiveDescendant = function () {\n attributes(this.table, {\n 'aria-activedescendant': '' + this.setActiveDescendant()\n });\n };\n CalendarBase.prototype.previousIconHandler = function (disabled) {\n if (disabled) {\n if (!isNullOrUndefined(this.previousIcon)) {\n EventHandler.remove(this.previousIcon, 'click', this.navigatePreviousHandler);\n addClass([this.previousIcon], '' + DISABLED);\n addClass([this.previousIcon], '' + OVERLAY);\n this.previousIcon.setAttribute('aria-disabled', 'true');\n }\n }\n else {\n EventHandler.add(this.previousIcon, 'click', this.navigatePreviousHandler);\n removeClass([this.previousIcon], '' + DISABLED);\n removeClass([this.previousIcon], '' + OVERLAY);\n this.previousIcon.setAttribute('aria-disabled', 'false');\n }\n };\n CalendarBase.prototype.renderDayCellEvent = function (args) {\n extend(this.renderDayCellArgs, { name: 'renderDayCell' });\n this.trigger('renderDayCell', args);\n };\n CalendarBase.prototype.navigatedEvent = function (eve) {\n extend(this.navigatedArgs, { name: 'navigated', event: eve });\n this.trigger('navigated', this.navigatedArgs);\n };\n CalendarBase.prototype.triggerNavigate = function (event) {\n this.navigatedArgs = { view: this.currentView(), date: this.currentDate };\n this.navigatedEvent(event);\n };\n CalendarBase.prototype.nextIconHandler = function (disabled) {\n if (disabled) {\n if (!isNullOrUndefined(this.previousIcon)) {\n EventHandler.remove(this.nextIcon, 'click', this.navigateNextHandler);\n addClass([this.nextIcon], DISABLED);\n addClass([this.nextIcon], OVERLAY);\n this.nextIcon.setAttribute('aria-disabled', 'true');\n }\n }\n else {\n EventHandler.add(this.nextIcon, 'click', this.navigateNextHandler);\n removeClass([this.nextIcon], DISABLED);\n removeClass([this.nextIcon], OVERLAY);\n this.nextIcon.setAttribute('aria-disabled', 'false');\n }\n };\n CalendarBase.prototype.compare = function (startDate, endDate, modifier) {\n var start = endDate.getFullYear();\n var end;\n var result;\n end = start;\n result = 0;\n if (modifier) {\n start = start - start % modifier;\n end = start - start % modifier + modifier - 1;\n }\n if (startDate.getFullYear() > end) {\n result = 1;\n }\n else if (startDate.getFullYear() < start) {\n result = -1;\n }\n return result;\n };\n CalendarBase.prototype.isMinMaxRange = function (date) {\n return +date >= +this.min && +date <= +this.max;\n };\n CalendarBase.prototype.isMonthYearRange = function (date) {\n if (this.calendarMode === 'Gregorian') {\n return date.getMonth() >= this.min.getMonth()\n && date.getFullYear() >= this.min.getFullYear()\n && date.getMonth() <= this.max.getMonth()\n && date.getFullYear() <= this.max.getFullYear();\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(date);\n return islamicDate.month >= (this.islamicModule.getIslamicDate(new Date(1944, 1, 18))).month\n && islamicDate.year >= (this.islamicModule.getIslamicDate(new Date(1944, 1, 18))).year\n && islamicDate.month <= (this.islamicModule.getIslamicDate(new Date(2069, 1, 16))).month\n && islamicDate.year <= (this.islamicModule.getIslamicDate(new Date(2069, 1, 16))).year;\n }\n };\n CalendarBase.prototype.compareYear = function (start, end) {\n return this.compare(start, end, 0);\n };\n CalendarBase.prototype.compareDecade = function (start, end) {\n return this.compare(start, end, 10);\n };\n CalendarBase.prototype.shiftArray = function (array, i) {\n return array.slice(i).concat(array.slice(0, i));\n };\n CalendarBase.prototype.addDay = function (date, i, e, max, min) {\n var column = i;\n var value = new Date(+date);\n if (!isNullOrUndefined(this.tableBodyElement) && !isNullOrUndefined(e)) {\n while (this.findNextTD(new Date(+date), column, max, min)) {\n column += i;\n }\n var rangeValue = new Date(value.setDate(value.getDate() + column));\n column = (+rangeValue > +max || +rangeValue < +min) ? column === i ? i - i : i : column;\n }\n date.setDate(date.getDate() + column);\n };\n CalendarBase.prototype.findNextTD = function (date, column, max, min) {\n var value = new Date(date.setDate(date.getDate() + column));\n var collection = [];\n var isDisabled = false;\n if ((!isNullOrUndefined(value) && value.getMonth()) === (!isNullOrUndefined(this.currentDate) && this.currentDate.getMonth())) {\n var tdEles = void 0;\n if (this.calendarMode === 'Gregorian') {\n tdEles = this.renderDays(value);\n }\n else {\n tdEles = this.islamicModule.islamicRenderDays(this.currentDate, value);\n }\n collection = tdEles.filter(function (element) {\n return element.classList.contains(DISABLED);\n });\n }\n else {\n collection = this.tableBodyElement.querySelectorAll('td.' + DISABLED);\n }\n if (+value <= (+(max)) && +value >= (+(min))) {\n if (collection.length) {\n for (var i = 0; i < collection.length; i++) {\n // eslint-disable-next-line radix\n isDisabled = (+value === +new Date(parseInt(collection[i].id, 0))) ? true : false;\n if (isDisabled) {\n break;\n }\n }\n }\n }\n return isDisabled;\n };\n CalendarBase.prototype.getMaxDays = function (d) {\n var date;\n var tmpDate = new Date(this.checkValue(d));\n date = 28;\n var month = tmpDate.getMonth();\n while (tmpDate.getMonth() === month) {\n ++date;\n tmpDate.setDate(date);\n }\n return date - 1;\n };\n CalendarBase.prototype.setDateDecade = function (date, year) {\n date.setFullYear(year);\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n };\n CalendarBase.prototype.setDateYear = function (date, value) {\n date.setFullYear(value.getFullYear(), value.getMonth(), date.getDate());\n if (value.getMonth() !== date.getMonth()) {\n date.setDate(0);\n this.currentDate = new Date(this.checkValue(value));\n }\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n };\n CalendarBase.prototype.compareMonth = function (start, end) {\n var result;\n if (start.getFullYear() > end.getFullYear()) {\n result = 1;\n }\n else if (start.getFullYear() < end.getFullYear()) {\n result = -1;\n }\n else {\n result = start.getMonth() === end.getMonth() ? 0 : start.getMonth() > end.getMonth() ? 1 : -1;\n }\n return result;\n };\n CalendarBase.prototype.checkValue = function (inValue) {\n if (inValue instanceof Date) {\n return (inValue.toUTCString());\n }\n else {\n return ('' + inValue);\n }\n };\n CalendarBase.prototype.checkView = function () {\n if (this.start !== 'Decade' && this.start !== 'Year') {\n this.setProperties({ start: 'Month' }, true);\n }\n if (this.depth !== 'Decade' && this.depth !== 'Year') {\n this.setProperties({ depth: 'Month' }, true);\n }\n if (this.getViewNumber(this.depth) > this.getViewNumber(this.start)) {\n this.setProperties({ depth: 'Month' }, true);\n }\n };\n CalendarBase.prototype.getDate = function (date, timezone) {\n if (timezone) {\n date = new Date(date.toLocaleString('en-US', { timeZone: timezone }));\n }\n return date;\n };\n __decorate([\n Property(new Date(1900, 0, 1))\n ], CalendarBase.prototype, \"min\", void 0);\n __decorate([\n Property(true)\n ], CalendarBase.prototype, \"enabled\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"cssClass\", void 0);\n __decorate([\n Property(new Date(2099, 11, 31))\n ], CalendarBase.prototype, \"max\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"firstDayOfWeek\", void 0);\n __decorate([\n Property('Gregorian')\n ], CalendarBase.prototype, \"calendarMode\", void 0);\n __decorate([\n Property('Month')\n ], CalendarBase.prototype, \"start\", void 0);\n __decorate([\n Property('Month')\n ], CalendarBase.prototype, \"depth\", void 0);\n __decorate([\n Property(false)\n ], CalendarBase.prototype, \"weekNumber\", void 0);\n __decorate([\n Property('FirstDay')\n ], CalendarBase.prototype, \"weekRule\", void 0);\n __decorate([\n Property(true)\n ], CalendarBase.prototype, \"showTodayButton\", void 0);\n __decorate([\n Property('Short')\n ], CalendarBase.prototype, \"dayHeaderFormat\", void 0);\n __decorate([\n Property(false)\n ], CalendarBase.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"navigated\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"renderDayCell\", void 0);\n CalendarBase = __decorate([\n NotifyPropertyChanges\n ], CalendarBase);\n return CalendarBase;\n}(Component));\nexport { CalendarBase };\n/**\n * Represents the Calendar component that allows the user to select a date.\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Calendar = /** @class */ (function (_super) {\n __extends(Calendar, _super);\n /**\n * Initialized new instance of Calendar Class.\n * Constructor for creating the widget\n *\n * @param {CalendarModel} options - Specifies the Calendar model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function Calendar(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n Calendar.prototype.render = function () {\n if (this.calendarMode === 'Islamic' && this.islamicModule === undefined) {\n throwError('Requires the injectable Islamic modules to render Calendar in Islamic mode');\n }\n if (this.isMultiSelection && typeof this.values === 'object' && !isNullOrUndefined(this.values) && this.values.length > 0) {\n var tempValues = [];\n var copyValues = [];\n for (var limit = 0; limit < this.values.length; limit++) {\n if (tempValues.indexOf(+this.values[limit]) === -1) {\n tempValues.push(+this.values[limit]);\n copyValues.push(this.values[limit]);\n }\n }\n this.setProperties({ values: copyValues }, true);\n for (var index = 0; index < this.values.length; index++) {\n if (!this.checkDateValue(this.values[index])) {\n if (typeof (this.values[index]) === 'string' && this.checkDateValue(new Date(this.checkValue(this.values[index])))) {\n var copyDate = new Date(this.checkValue(this.values[index]));\n this.values.splice(index, 1);\n this.values.splice(index, 0, copyDate);\n }\n else {\n this.values.splice(index, 1);\n }\n }\n }\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n this.previousValues = this.values.length;\n }\n this.validateDate();\n this.minMaxUpdate();\n if (this.getModuleName() === 'calendar') {\n this.setEnable(this.enabled);\n this.setClass(this.cssClass);\n }\n _super.prototype.render.call(this);\n if (this.getModuleName() === 'calendar') {\n var form = closest(this.element, 'form');\n if (form) {\n EventHandler.add(form, 'reset', this.formResetHandler.bind(this));\n }\n this.setTimeZone(this.serverTimezoneOffset);\n }\n this.renderComplete();\n };\n Calendar.prototype.setEnable = function (enable) {\n if (!enable) {\n addClass([this.element], DISABLED);\n }\n else {\n removeClass([this.element], DISABLED);\n }\n };\n Calendar.prototype.setClass = function (newCssClass, oldCssClass) {\n if (!isNullOrUndefined(oldCssClass)) {\n oldCssClass = (oldCssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newCssClass)) {\n newCssClass = (newCssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(oldCssClass) && oldCssClass !== '') {\n removeClass([this.element], oldCssClass.split(' '));\n }\n if (!isNullOrUndefined(newCssClass)) {\n addClass([this.element], newCssClass.split(' '));\n }\n };\n Calendar.prototype.isDayLightSaving = function () {\n var secondOffset = new Date(this.value.getFullYear(), 6, 1).getTimezoneOffset();\n var firstOffset = new Date(this.value.getFullYear(), 0, 1).getTimezoneOffset();\n return (this.value.getTimezoneOffset() < Math.max(firstOffset, secondOffset));\n };\n Calendar.prototype.setTimeZone = function (offsetValue) {\n if (!isNullOrUndefined(this.serverTimezoneOffset) && this.value) {\n var serverTimezoneDiff = offsetValue;\n var clientTimeZoneDiff = new Date().getTimezoneOffset() / 60;\n var timeZoneDiff = serverTimezoneDiff + clientTimeZoneDiff;\n timeZoneDiff = this.isDayLightSaving() ? timeZoneDiff-- : timeZoneDiff;\n this.value = new Date(this.value.getTime() + (timeZoneDiff * 60 * 60 * 1000));\n }\n };\n Calendar.prototype.formResetHandler = function () {\n this.setProperties({ value: null }, true);\n };\n Calendar.prototype.validateDate = function () {\n if (typeof this.value === 'string') {\n this.setProperties({ value: this.checkDateValue(new Date(this.checkValue(this.value))) }, true); // persist the value property.\n }\n _super.prototype.validateDate.call(this, this.value);\n if (!isNullOrUndefined(this.value) && this.min <= this.max && this.value >= this.min && this.value <= this.max) {\n this.currentDate = new Date(this.checkValue(this.value));\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: null }, true);\n }\n };\n Calendar.prototype.minMaxUpdate = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.value) && this.value <= this.min && this.min <= this.max) {\n this.setProperties({ value: this.min }, true);\n this.changedArgs = { value: this.value };\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value >= this.max && this.min <= this.max) {\n this.setProperties({ value: this.max }, true);\n this.changedArgs = { value: this.value };\n }\n }\n }\n if (this.getModuleName() !== 'calendar' && !isNullOrUndefined(this.value)) {\n if (!isNullOrUndefined(this.value) && this.value < this.min && this.min <= this.max) {\n _super.prototype.minMaxUpdate.call(this, this.min);\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value > this.max && this.min <= this.max) {\n _super.prototype.minMaxUpdate.call(this, this.max);\n }\n }\n }\n else {\n _super.prototype.minMaxUpdate.call(this, this.value);\n }\n };\n Calendar.prototype.generateTodayVal = function (value) {\n var tempValue = new Date();\n if (!isNullOrUndefined(this.timezone)) {\n tempValue = _super.prototype.getDate.call(this, tempValue, this.timezone);\n }\n if (value && isNullOrUndefined(this.timezone)) {\n tempValue.setHours(value.getHours());\n tempValue.setMinutes(value.getMinutes());\n tempValue.setSeconds(value.getSeconds());\n tempValue.setMilliseconds(value.getMilliseconds());\n }\n else {\n tempValue = new Date(tempValue.getFullYear(), tempValue.getMonth(), tempValue.getDate(), 0, 0, 0, 0);\n }\n return tempValue;\n };\n Calendar.prototype.todayButtonClick = function (e) {\n if (this.showTodayButton) {\n var tempValue = this.generateTodayVal(this.value);\n this.setProperties({ value: tempValue }, true);\n this.isTodayClicked = true;\n this.todayButtonEvent = e;\n if (this.isMultiSelection) {\n var copyValues = this.copyValues(this.values);\n if (!_super.prototype.checkPresentDate.call(this, tempValue, this.values)) {\n copyValues.push(tempValue);\n this.setProperties({ values: copyValues });\n }\n }\n _super.prototype.todayButtonClick.call(this, e, new Date(+this.value));\n }\n };\n Calendar.prototype.keyActionHandle = function (e) {\n _super.prototype.keyActionHandle.call(this, e, this.value, this.isMultiSelection);\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Calendar.prototype.preRender = function () {\n var _this = this;\n this.changeHandler = function (e) {\n _this.triggerChange(e);\n };\n this.checkView();\n _super.prototype.preRender.call(this, this.value);\n };\n /**\n * @returns {void}\n\n */\n Calendar.prototype.createContent = function () {\n this.previousDate = this.value;\n this.previousDateTime = this.value;\n _super.prototype.createContent.call(this);\n };\n Calendar.prototype.minMaxDate = function (localDate) {\n return _super.prototype.minMaxDate.call(this, localDate);\n };\n Calendar.prototype.renderMonths = function (e, value, isCustomDate) {\n _super.prototype.renderMonths.call(this, e, this.value, isCustomDate);\n };\n Calendar.prototype.renderDays = function (currentDate, value, isMultiSelect, values, isCustomDate, e) {\n var tempDays = _super.prototype.renderDays.call(this, currentDate, this.value, this.isMultiSelection, this.values, isCustomDate, e);\n if (this.isMultiSelection) {\n _super.prototype.validateValues.call(this, this.isMultiSelection, this.values);\n }\n return tempDays;\n };\n Calendar.prototype.renderYears = function (e) {\n if (this.calendarMode === 'Gregorian') {\n _super.prototype.renderYears.call(this, e, this.value);\n }\n else {\n this.islamicModule.islamicRenderYears(e, this.value);\n }\n };\n Calendar.prototype.renderDecades = function (e) {\n if (this.calendarMode === 'Gregorian') {\n _super.prototype.renderDecades.call(this, e, this.value);\n }\n else {\n this.islamicModule.islamicRenderDecade(e, this.value);\n }\n };\n Calendar.prototype.renderTemplate = function (elements, count, classNm, e) {\n if (this.calendarMode === 'Gregorian') {\n _super.prototype.renderTemplate.call(this, elements, count, classNm, e, this.value);\n }\n else {\n this.islamicModule.islamicRenderTemplate(elements, count, classNm, e, this.value);\n }\n this.changedArgs = { value: this.value, values: this.values };\n e && e.type === 'click' && e.currentTarget.classList.contains(OTHERMONTH) ? this.changeHandler(e) : this.changeHandler();\n };\n Calendar.prototype.clickHandler = function (e) {\n var eve = e.currentTarget;\n this.isPopupClicked = true;\n if (eve.classList.contains(OTHERMONTH)) {\n if (this.isMultiSelection) {\n var copyValues = this.copyValues(this.values);\n if (copyValues.toString().indexOf(this.getIdValue(e, null).toString()) === -1) {\n copyValues.push(this.getIdValue(e, null));\n this.setProperties({ values: copyValues }, true);\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n else {\n this.previousDates = true;\n }\n }\n else {\n this.setProperties({ value: this.getIdValue(e, null) }, true);\n }\n }\n var storeView = this.currentView();\n _super.prototype.clickHandler.call(this, e, this.value);\n if (this.isMultiSelection && this.currentDate !== this.value &&\n !isNullOrUndefined(this.tableBodyElement.querySelectorAll('.' + FOCUSEDDATE)[0]) && storeView === 'Year') {\n this.tableBodyElement.querySelectorAll('.' + FOCUSEDDATE)[0].classList.remove(FOCUSEDDATE);\n }\n };\n Calendar.prototype.switchView = function (view, e, isMultiSelection, isCustomDate) {\n _super.prototype.switchView.call(this, view, e, this.isMultiSelection, isCustomDate);\n };\n /**\n * To get component name\n *\n * @returns {string} Return the component name.\n * @private\n */\n Calendar.prototype.getModuleName = function () {\n _super.prototype.getModuleName.call(this);\n return 'calendar';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string}\n */\n Calendar.prototype.getPersistData = function () {\n _super.prototype.getPersistData.call(this);\n var keyEntity = ['value', 'values'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Called internally if any of the property value changed.\n *\n * @param {CalendarModel} newProp - Returns the dynamic property value of the component.\n * @param {CalendarModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n Calendar.prototype.onPropertyChanged = function (newProp, oldProp) {\n this.effect = '';\n this.rangeValidation(this.min, this.max);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n if (this.isDateSelected) {\n if (typeof newProp.value === 'string') {\n this.setProperties({ value: new Date(this.checkValue(newProp.value)) }, true);\n }\n else {\n newProp.value = new Date(this.checkValue(newProp.value));\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: oldProp.value }, true);\n }\n this.update();\n }\n break;\n case 'values':\n if (this.isDateSelected) {\n if (typeof newProp.values === 'string' || typeof newProp.values === 'number') {\n this.setProperties({ values: null }, true);\n }\n else {\n var copyValues = this.copyValues(this.values);\n for (var index = 0; index < copyValues.length; index++) {\n var tempDate = copyValues[index];\n if (this.checkDateValue(tempDate) && !_super.prototype.checkPresentDate.call(this, tempDate, copyValues)) {\n copyValues.push(tempDate);\n }\n }\n this.setProperties({ values: copyValues }, true);\n if (this.values.length > 0) {\n this.setProperties({ value: newProp.values[newProp.values.length - 1] }, true);\n }\n }\n this.validateValues(this.isMultiSelection, this.values);\n this.update();\n }\n break;\n case 'isMultiSelection':\n if (this.isDateSelected) {\n this.setProperties({ isMultiSelection: newProp.isMultiSelection }, true);\n this.update();\n }\n break;\n case 'enabled':\n this.setEnable(this.enabled);\n break;\n case 'cssClass':\n if (this.getModuleName() === 'calendar') {\n this.setClass(newProp.cssClass, oldProp.cssClass);\n }\n break;\n default:\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp, this.isMultiSelection, this.values);\n }\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n Calendar.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.getModuleName() === 'calendar') {\n this.changedArgs = null;\n var form = closest(this.element, 'form');\n if (form) {\n EventHandler.remove(form, 'reset', this.formResetHandler.bind(this));\n }\n }\n };\n /**\n * This method is used to navigate to the month/year/decade view of the Calendar.\n *\n * @param {string} view - Specifies the view of the Calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @param {boolean} isCustomDate - Specifies whether the calendar is rendered with custom today date or not.\n * @returns {void}\n\n */\n Calendar.prototype.navigateTo = function (view, date, isCustomDate) {\n this.minMaxUpdate();\n _super.prototype.navigateTo.call(this, view, date, isCustomDate);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the Calendar.\n *\n * @returns {string}\n\n */\n Calendar.prototype.currentView = function () {\n return _super.prototype.currentView.call(this);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * This method is used to add the single or multiple dates to the values property of the Calendar.\n *\n * @param {Date | Date[]} dates - Specifies the date or dates to be added to the values property of the Calendar.\n * @returns {void}\n\n */\n Calendar.prototype.addDate = function (dates) {\n if (typeof dates !== 'string' && typeof dates !== 'number') {\n var copyValues = this.copyValues(this.values);\n if (typeof dates === 'object' && (dates).length > 0) {\n var tempDates = dates;\n for (var i = 0; i < tempDates.length; i++) {\n if (this.checkDateValue(tempDates[i]) && !_super.prototype.checkPresentDate.call(this, tempDates[i], copyValues)) {\n if (!isNullOrUndefined(copyValues) && copyValues.length > 0) {\n copyValues.push(tempDates[i]);\n }\n else {\n copyValues = [new Date(+tempDates[i])];\n }\n }\n }\n }\n else {\n if (this.checkDateValue(dates) && !_super.prototype.checkPresentDate.call(this, dates, copyValues)) {\n if (!isNullOrUndefined(copyValues) && copyValues.length > 0) {\n copyValues.push((dates));\n }\n else {\n copyValues = [new Date(+dates)];\n }\n }\n }\n this.setProperties({ values: copyValues }, true);\n if (this.isMultiSelection) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.validateValues(this.isMultiSelection, copyValues);\n this.update();\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler();\n }\n };\n /**\n * This method is used to remove the single or multiple dates from the values property of the Calendar.\n *\n * @param {Date | Date[]} dates - Specifies the date or dates which need to be removed from the values property of the Calendar.\n * @returns {void}\n\n */\n Calendar.prototype.removeDate = function (dates) {\n if (typeof dates !== 'string' && typeof dates !== 'number' && !isNullOrUndefined(this.values) && this.values.length > 0) {\n var copyValues = this.copyValues(this.values);\n if (typeof dates === 'object' && ((dates).length > 0)) {\n var tempDates = dates;\n for (var index = 0; index < tempDates.length; index++) {\n for (var i = 0; i < copyValues.length; i++) {\n if (+copyValues[i] === +tempDates[index]) {\n copyValues.splice(i, 1);\n }\n }\n }\n }\n else {\n for (var i = 0; i < copyValues.length; i++) {\n if (+copyValues[i] === +dates) {\n copyValues.splice(i, 1);\n }\n }\n }\n this.setProperties({ values: copyValues }, false);\n this.update();\n if (this.isMultiSelection) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler();\n }\n };\n /**\n * To set custom today date in calendar\n *\n * @param {Date} date - Specifies date value to be set.\n * @private\n * @returns {void}\n */\n Calendar.prototype.setTodayDate = function (date) {\n var todayDate = new Date(+date);\n this.setProperties({ value: todayDate }, true);\n _super.prototype.todayButtonClick.call(this, null, todayDate, true);\n };\n Calendar.prototype.update = function () {\n this.validateDate();\n this.minMaxUpdate();\n _super.prototype.setValueUpdate.call(this);\n };\n Calendar.prototype.selectDate = function (e, date, element) {\n _super.prototype.selectDate.call(this, e, date, element, this.isMultiSelection, this.values);\n if (this.isMultiSelection && !isNullOrUndefined(this.values) && this.values.length > 0) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler(e);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Calendar.prototype.changeEvent = function (e) {\n if ((this.value && this.value.valueOf()) !== (this.previousDate && +this.previousDate.valueOf())\n || this.isMultiSelection) {\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', this.changedArgs);\n }\n this.previousDate = new Date(+this.value);\n }\n };\n Calendar.prototype.triggerChange = function (e) {\n if (!isNullOrUndefined(this.todayButtonEvent) && this.isTodayClicked) {\n e = this.todayButtonEvent;\n this.isTodayClicked = false;\n }\n this.changedArgs.event = e || null;\n this.changedArgs.isInteracted = !isNullOrUndefined(e);\n if (!isNullOrUndefined(this.value)) {\n this.setProperties({ value: this.value }, true);\n }\n if (!this.isMultiSelection && +this.value !== Number.NaN && (!isNullOrUndefined(this.value) &&\n !isNullOrUndefined(this.previousDate) || this.previousDate === null\n && !isNaN(+this.value))) {\n this.changeEvent(e);\n }\n else if (!isNullOrUndefined(this.values) && this.previousValues !== this.values.length) {\n this.changeEvent(e);\n this.previousValues = this.values.length;\n }\n };\n __decorate([\n Property(null)\n ], Calendar.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], Calendar.prototype, \"values\", void 0);\n __decorate([\n Property(false)\n ], Calendar.prototype, \"isMultiSelection\", void 0);\n __decorate([\n Event()\n ], Calendar.prototype, \"change\", void 0);\n Calendar = __decorate([\n NotifyPropertyChanges\n ], Calendar);\n return Calendar;\n}(CalendarBase));\nexport { Calendar };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { EventHandler, Property, Internationalization, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, Animation, Event, extend, L10n, Browser, formatUnit } from '@syncfusion/ej2-base';\nimport { detach, addClass, removeClass, closest, attributes, Touch } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, setValue, getUniqueID } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { Calendar } from '../calendar/calendar';\n//class constant defination\nvar DATEWRAPPER = 'e-date-wrapper';\nvar ROOT = 'e-datepicker';\nvar LIBRARY = 'e-lib';\nvar CONTROL = 'e-control';\nvar POPUPWRAPPER = 'e-popup-wrapper';\nvar INPUTWRAPPER = 'e-input-group-icon';\nvar POPUP = 'e-popup';\nvar INPUTCONTAINER = 'e-input-group';\nvar INPUTFOCUS = 'e-input-focus';\nvar INPUTROOT = 'e-input';\nvar ERROR = 'e-error';\nvar ACTIVE = 'e-active';\nvar OVERFLOW = 'e-date-overflow';\nvar DATEICON = 'e-date-icon';\nvar CLEARICON = 'e-clear-icon';\nvar ICONS = 'e-icons';\nvar OPENDURATION = 300;\nvar OFFSETVALUE = 4;\nvar SELECTED = 'e-selected';\nvar FOCUSEDDATE = 'e-focused-date';\nvar NONEDIT = 'e-non-edit';\nvar containerAttr = ['title', 'class', 'style'];\n/**\n * Represents the DatePicker component that allows user to select\n * or enter a date value.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar DatePicker = /** @class */ (function (_super) {\n __extends(DatePicker, _super);\n /**\n * Constructor for creating the widget.\n *\n * @param {DatePickerModel} options - Specifies the DatePicker model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function DatePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isDateIconClicked = false;\n _this.isAltKeyPressed = false;\n _this.isInteracted = true;\n _this.invalidValueString = null;\n _this.checkPreviousValue = null;\n _this.maskedDateValue = '';\n _this.preventChange = false;\n _this.isIconClicked = false;\n _this.isDynamicValueChanged = false;\n _this.moduleName = _this.getModuleName();\n _this.isFocused = false;\n _this.isBlur = false;\n _this.isKeyAction = false;\n _this.datepickerOptions = options;\n return _this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n DatePicker.prototype.render = function () {\n this.initialize();\n this.bindEvents();\n if (this.floatLabelType !== 'Never') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n this.setTimeZone(this.serverTimezoneOffset);\n };\n DatePicker.prototype.setTimeZone = function (offsetValue) {\n if (!isNullOrUndefined(this.serverTimezoneOffset) && this.value) {\n var clientTimeZoneDiff = new Date().getTimezoneOffset() / 60;\n var serverTimezoneDiff = offsetValue;\n var timeZoneDiff = serverTimezoneDiff + clientTimeZoneDiff;\n timeZoneDiff = this.isDayLightSaving() ? timeZoneDiff-- : timeZoneDiff;\n this.value = new Date((this.value).getTime() + (timeZoneDiff * 60 * 60 * 1000));\n this.updateInput();\n }\n };\n DatePicker.prototype.isDayLightSaving = function () {\n var firstOffset = new Date(this.value.getFullYear(), 0, 1).getTimezoneOffset();\n var secondOffset = new Date(this.value.getFullYear(), 6, 1).getTimezoneOffset();\n return (this.value.getTimezoneOffset() < Math.max(firstOffset, secondOffset));\n };\n DatePicker.prototype.setAllowEdit = function () {\n if (this.allowEdit) {\n if (!this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n else {\n attributes(this.inputElement, { 'readonly': '' });\n }\n this.updateIconState();\n };\n DatePicker.prototype.updateIconState = function () {\n if (!this.allowEdit && this.inputWrapper && !this.readonly) {\n if (this.inputElement.value === '') {\n removeClass([this.inputWrapper.container], [NONEDIT]);\n }\n else {\n addClass([this.inputWrapper.container], [NONEDIT]);\n }\n }\n else if (this.inputWrapper) {\n removeClass([this.inputWrapper.container], [NONEDIT]);\n }\n };\n DatePicker.prototype.initialize = function () {\n this.checkInvalidValue(this.value);\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n this.createInput();\n this.updateHtmlAttributeToWrapper();\n this.setAllowEdit();\n if (this.enableMask && !this.value && this.maskedDateValue && (this.floatLabelType === 'Always' || !this.floatLabelType || !this.placeholder)) {\n this.updateInput(true);\n this.updateInputValue(this.maskedDateValue);\n }\n else if (!this.enableMask) {\n this.updateInput(true);\n }\n this.previousElementValue = this.inputElement.value;\n this.previousDate = !isNullOrUndefined(this.value) ? new Date(+this.value) : null;\n this.inputElement.setAttribute('value', this.inputElement.value);\n this.inputValueCopy = this.value;\n };\n DatePicker.prototype.createInput = function () {\n var ariaAttrs = {\n 'aria-atomic': 'true', 'aria-expanded': 'false',\n 'role': 'combobox', 'autocomplete': 'off', 'autocorrect': 'off',\n 'autocapitalize': 'off', 'spellcheck': 'false', 'aria-invalid': 'false', 'aria-label': this.getModuleName()\n };\n if (this.getModuleName() === 'datepicker') {\n var l10nLocale = { placeholder: this.placeholder };\n this.globalize = new Internationalization(this.locale);\n this.l10n = new L10n('datepicker', l10nLocale, this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n }\n if (this.fullScreenMode && Browser.isDevice) {\n this.cssClass += ' ' + 'e-popup-expand';\n }\n var updatedCssClassValues = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n var isBindClearAction = this.enableMask ? false : true;\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n floatLabelType: this.floatLabelType,\n bindClearAction: isBindClearAction,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValues,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n },\n buttons: [INPUTWRAPPER + ' ' + DATEICON + ' ' + ICONS]\n }, this.createElement);\n this.setWidth(this.width);\n if (this.inputElement.name !== '') {\n this.inputElement.setAttribute('name', '' + this.inputElement.getAttribute('name'));\n }\n else {\n this.inputElement.setAttribute('name', '' + this.element.id);\n }\n attributes(this.inputElement, ariaAttrs);\n if (!this.enabled) {\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.inputElement.tabIndex = -1;\n }\n else {\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n Input.addAttributes({ 'aria-label': 'select', 'role': 'button' }, this.inputWrapper.buttons[0]);\n addClass([this.inputWrapper.container], DATEWRAPPER);\n };\n DatePicker.prototype.updateInput = function (isDynamic, isBlur) {\n if (isDynamic === void 0) { isDynamic = false; }\n if (isBlur === void 0) { isBlur = false; }\n var formatOptions;\n if (this.value && !this.isCalendar()) {\n this.disabledDates(isDynamic, isBlur);\n }\n if (isNaN(+new Date(this.checkValue(this.value)))) {\n this.setProperties({ value: null }, true);\n }\n if (this.strictMode) {\n //calls the Calendar processDate protected method to update the date value according to the strictMode true behaviour.\n _super.prototype.validateDate.call(this);\n this.minMaxUpdates();\n _super.prototype.minMaxUpdate.call(this);\n }\n if (!isNullOrUndefined(this.value)) {\n var dateValue = this.value;\n var dateString = void 0;\n var tempFormat = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n dateString = this.globalize.formatDate(this.value, {\n format: tempFormat, type: 'dateTime', skeleton: 'yMd'\n });\n }\n else {\n dateString = this.globalize.formatDate(this.value, {\n format: tempFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n dateString = this.globalize.formatDate(this.value, formatOptions);\n }\n if ((+dateValue <= +this.max) && (+dateValue >= +this.min)) {\n this.updateInputValue(dateString);\n }\n else {\n var value = (+dateValue >= +this.max || !+this.value) || (!+this.value || +dateValue <= +this.min);\n if (!this.strictMode && value) {\n this.updateInputValue(dateString);\n }\n }\n }\n if (isNullOrUndefined(this.value) && this.strictMode) {\n if (!this.enableMask) {\n this.updateInputValue('');\n }\n else {\n this.updateInputValue(this.maskedDateValue);\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n }\n if (!this.strictMode && isNullOrUndefined(this.value) && this.invalidValueString) {\n this.updateInputValue(this.invalidValueString);\n }\n this.changedArgs = { value: this.value };\n this.errorClass();\n this.updateIconState();\n };\n DatePicker.prototype.minMaxUpdates = function () {\n if (!isNullOrUndefined(this.value) && this.value < this.min && this.min <= this.max && this.strictMode) {\n this.setProperties({ value: this.min }, true);\n this.changedArgs = { value: this.value };\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value > this.max && this.min <= this.max && this.strictMode) {\n this.setProperties({ value: this.max }, true);\n this.changedArgs = { value: this.value };\n }\n }\n };\n DatePicker.prototype.checkStringValue = function (val) {\n var returnDate = null;\n var formatOptions = null;\n var formatDateTime = null;\n if (this.getModuleName() === 'datetimepicker') {\n var culture = new Internationalization(this.locale);\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime' };\n }\n else {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime', calendar: 'islamic' };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n returnDate = this.checkDateValue(this.globalize.parseDate(val, formatOptions));\n if (isNullOrUndefined(returnDate) && (this.getModuleName() === 'datetimepicker')) {\n returnDate = this.checkDateValue(this.globalize.parseDate(val, formatDateTime));\n }\n return returnDate;\n };\n DatePicker.prototype.checkInvalidValue = function (value) {\n if (!(value instanceof Date) && !isNullOrUndefined(value)) {\n var valueDate = null;\n var valueString = value;\n if (typeof value === 'number') {\n valueString = value.toString();\n }\n var formatOptions = null;\n var formatDateTime = null;\n if (this.getModuleName() === 'datetimepicker') {\n var culture = new Internationalization(this.locale);\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime' };\n }\n else {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime', calendar: 'islamic' };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n var invalid = false;\n if (typeof valueString !== 'string') {\n valueString = null;\n invalid = true;\n }\n else {\n if (typeof valueString === 'string') {\n valueString = valueString.trim();\n }\n valueDate = this.checkStringValue(valueString);\n if (!valueDate) {\n var extISOString = null;\n var basicISOString = null;\n // eslint-disable-next-line\n extISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n // eslint-disable-next-line\n basicISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n if ((!extISOString.test(valueString) && !basicISOString.test(valueString))\n || (/^[a-zA-Z0-9- ]*$/).test(valueString) || isNaN(+new Date(this.checkValue(valueString)))) {\n invalid = true;\n }\n else {\n valueDate = new Date(valueString);\n }\n }\n }\n if (invalid) {\n if (!this.strictMode) {\n this.invalidValueString = valueString;\n }\n this.setProperties({ value: null }, true);\n }\n else {\n this.setProperties({ value: valueDate }, true);\n }\n }\n };\n DatePicker.prototype.bindInputEvent = function () {\n if (!isNullOrUndefined(this.formatString) || this.enableMask) {\n if (this.enableMask || this.formatString.indexOf('y') === -1) {\n EventHandler.add(this.inputElement, 'input', this.inputHandler, this);\n }\n else {\n EventHandler.remove(this.inputElement, 'input', this.inputHandler);\n }\n }\n };\n DatePicker.prototype.bindEvents = function () {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.dateIconHandler, this);\n EventHandler.add(this.inputElement, 'mouseup', this.mouseUpHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.inputFocusHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.inputBlurHandler, this);\n EventHandler.add(this.inputElement, 'keyup', this.keyupHandler, this);\n if (this.enableMask) {\n EventHandler.add(this.inputElement, 'keydown', this.keydownHandler, this);\n }\n this.bindInputEvent();\n // To prevent the twice triggering.\n EventHandler.add(this.inputElement, 'change', this.inputChangeHandler, this);\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.resetFormHandler, this);\n }\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.keyboardModules = new KeyboardEvents(this.inputElement, {\n eventName: 'keydown',\n keyAction: this.inputKeyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n };\n DatePicker.prototype.keydownHandler = function (e) {\n switch (e.code) {\n case 'ArrowLeft':\n case 'ArrowRight':\n case 'ArrowUp':\n case 'ArrowDown':\n case 'Home':\n case 'End':\n case 'Delete':\n if (this.enableMask && !this.popupObj && !this.readonly) {\n if (e.code !== 'Delete') {\n e.preventDefault();\n }\n this.notify('keyDownHandler', {\n module: 'MaskedDateTime',\n e: e\n });\n }\n break;\n default:\n break;\n }\n };\n DatePicker.prototype.unBindEvents = function () {\n if (!isNullOrUndefined(this.inputWrapper)) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.dateIconHandler);\n }\n EventHandler.remove(this.inputElement, 'mouseup', this.mouseUpHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'change', this.inputChangeHandler);\n EventHandler.remove(this.inputElement, 'keyup', this.keyupHandler);\n if (this.enableMask) {\n EventHandler.remove(this.inputElement, 'keydown', this.keydownHandler);\n }\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.resetFormHandler);\n }\n };\n DatePicker.prototype.resetFormHandler = function () {\n if (!this.enabled) {\n return;\n }\n if (!this.inputElement.disabled) {\n var value = this.inputElement.getAttribute('value');\n if (this.element.tagName === 'EJS-DATEPICKER' || this.element.tagName === 'EJS-DATETIMEPICKER') {\n value = '';\n this.inputValueCopy = null;\n this.inputElement.setAttribute('value', '');\n }\n this.setProperties({ value: this.inputValueCopy }, true);\n this.restoreValue();\n if (this.inputElement) {\n this.updateInputValue(value);\n this.errorClass();\n }\n }\n };\n DatePicker.prototype.restoreValue = function () {\n this.currentDate = this.value ? this.value : new Date();\n this.previousDate = this.value;\n this.previousElementValue = (isNullOrUndefined(this.inputValueCopy)) ? '' :\n this.globalize.formatDate(this.inputValueCopy, {\n format: this.formatString, type: 'dateTime', skeleton: 'yMd'\n });\n };\n DatePicker.prototype.inputChangeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.stopPropagation();\n };\n DatePicker.prototype.bindClearEvent = function () {\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n };\n DatePicker.prototype.resetHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.preventDefault();\n this.clear(e);\n };\n DatePicker.prototype.mouseUpHandler = function (e) {\n if (this.enableMask) {\n e.preventDefault();\n this.notify('setMaskSelection', {\n module: 'MaskedDateTime'\n });\n }\n };\n DatePicker.prototype.clear = function (event) {\n this.setProperties({ value: null }, true);\n if (!this.enableMask) {\n this.updateInputValue('');\n }\n var clearedArgs = {\n event: event\n };\n this.trigger('cleared', clearedArgs);\n this.invalidValueString = '';\n this.updateInput();\n this.popupUpdate();\n this.changeEvent(event);\n if (this.enableMask) {\n this.notify('clearHandler', {\n module: 'MaskedDateTime'\n });\n }\n if (closest(this.element, 'form')) {\n var element = this.element;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n DatePicker.prototype.preventEventBubbling = function (e) {\n e.preventDefault();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('OnDateIconClick');\n };\n DatePicker.prototype.updateInputValue = function (value) {\n Input.setValue(value, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n DatePicker.prototype.dateIconHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.isIconClicked = true;\n if (Browser.isDevice) {\n this.inputElement.setAttribute('readonly', '');\n this.inputElement.blur();\n }\n e.preventDefault();\n if (!this.readonly) {\n if (this.isCalendar()) {\n this.hide(e);\n }\n else {\n this.isDateIconClicked = true;\n this.show(null, e);\n if (this.getModuleName() === 'datetimepicker') {\n this.inputElement.focus();\n }\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n addClass(this.inputWrapper.buttons, ACTIVE);\n }\n }\n this.isIconClicked = false;\n };\n DatePicker.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (!isNullOrUndefined(this.htmlAttributes[\"\" + key])) {\n if (containerAttr.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassValues = (this.htmlAttributes[\"\" + key].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValues !== '') {\n addClass([this.inputWrapper.container], updatedClassValues.split(' '));\n }\n }\n else if (key === 'style') {\n var setStyle = this.inputWrapper.container.getAttribute(key);\n if (!isNullOrUndefined(setStyle)) {\n if (setStyle.charAt(setStyle.length - 1) === ';') {\n setStyle = setStyle + this.htmlAttributes[\"\" + key];\n }\n else {\n setStyle = setStyle + ';' + this.htmlAttributes[\"\" + key];\n }\n }\n else {\n setStyle = this.htmlAttributes[\"\" + key];\n }\n this.inputWrapper.container.setAttribute(key, setStyle);\n }\n else {\n this.inputWrapper.container.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n }\n };\n DatePicker.prototype.updateHtmlAttributeToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttr.indexOf(key) < 0) {\n this.inputElement.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n DatePicker.prototype.updateCssClass = function (newCssClass, oldCssClass) {\n if (!isNullOrUndefined(oldCssClass)) {\n oldCssClass = (oldCssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newCssClass)) {\n newCssClass = (newCssClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newCssClass, [this.inputWrapper.container], oldCssClass);\n if (this.popupWrapper) {\n Input.setCssClass(newCssClass, [this.popupWrapper], oldCssClass);\n }\n };\n DatePicker.prototype.calendarKeyActionHandle = function (e) {\n switch (e.action) {\n case 'escape':\n if (this.isCalendar()) {\n this.hide(e);\n }\n else {\n this.inputWrapper.container.children[this.index].blur();\n }\n break;\n case 'enter':\n if (!this.isCalendar()) {\n this.show(null, e);\n }\n else {\n if (+this.value !== +this.currentDate && !this.isCalendar()) {\n this.inputWrapper.container.children[this.index].focus();\n }\n }\n if (this.getModuleName() === 'datetimepicker') {\n this.inputElement.focus();\n }\n break;\n }\n };\n DatePicker.prototype.inputFocusHandler = function () {\n this.isFocused = true;\n if (!this.enabled) {\n return;\n }\n if (this.enableMask && !this.inputElement.value && this.placeholder) {\n if (this.maskedDateValue && !this.value && (this.floatLabelType === 'Auto' || this.floatLabelType === 'Never' || this.placeholder)) {\n this.updateInputValue(this.maskedDateValue);\n this.inputElement.selectionStart = 0;\n this.inputElement.selectionEnd = this.inputElement.value.length;\n }\n }\n var focusArguments = {\n model: this\n };\n this.isDateIconClicked = false;\n this.trigger('focus', focusArguments);\n this.updateIconState();\n if (this.openOnFocus && !this.isIconClicked) {\n this.show();\n }\n };\n DatePicker.prototype.inputHandler = function () {\n this.isPopupClicked = false;\n if (this.enableMask) {\n this.notify('inputHandler', {\n module: 'MaskedDateTime'\n });\n }\n };\n DatePicker.prototype.inputBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.strictModeUpdate();\n if (this.inputElement.value === '' && isNullOrUndefined(this.value)) {\n this.invalidValueString = null;\n this.updateInputValue('');\n }\n this.isBlur = true;\n this.updateInput(false, true);\n this.isBlur = false;\n this.popupUpdate();\n this.changeTrigger(e);\n if (this.enableMask && this.maskedDateValue && this.placeholder && this.floatLabelType !== 'Always') {\n if (this.inputElement.value === this.maskedDateValue && !this.value && (this.floatLabelType === 'Auto' || this.floatLabelType === 'Never' || this.placeholder)) {\n this.updateInputValue('');\n }\n }\n this.errorClass();\n if (this.isCalendar() && document.activeElement === this.inputElement) {\n this.hide(e);\n }\n if (this.getModuleName() === 'datepicker') {\n var blurArguments = {\n model: this\n };\n this.trigger('blur', blurArguments);\n }\n if (this.isCalendar()) {\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.calendarKeyboardModules = new KeyboardEvents(this.calendarElement.children[1].firstElementChild, {\n eventName: 'keydown',\n keyAction: this.calendarKeyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n this.isPopupClicked = false;\n };\n DatePicker.prototype.documentHandler = function (e) {\n if ((!isNullOrUndefined(this.popupObj) && !isNullOrUndefined(this.inputWrapper) && (this.inputWrapper.container.contains(e.target) && e.type !== 'mousedown' ||\n (this.popupObj.element && this.popupObj.element.contains(e.target)))) && e.type !== 'touchstart') {\n e.preventDefault();\n }\n var target = e.target;\n if (!(closest(target, '.e-datepicker.e-popup-wrapper')) && !isNullOrUndefined(this.inputWrapper)\n && !(closest(target, '.' + INPUTCONTAINER) === this.inputWrapper.container)\n && (!target.classList.contains('e-day'))\n && (!target.classList.contains('e-dlg-overlay'))) {\n this.hide(e);\n this.focusOut();\n }\n else if (closest(target, '.e-datepicker.e-popup-wrapper')) {\n // Fix for close the popup when select the previously selected value.\n if (target.classList.contains('e-day')\n && !isNullOrUndefined(e.target.parentElement)\n && e.target.parentElement.classList.contains('e-selected')\n && closest(target, '.e-content')\n && closest(target, '.e-content').classList.contains('e-' + this.depth.toLowerCase())) {\n this.hide(e);\n }\n else if (closest(target, '.e-footer-container')\n && target.classList.contains('e-today')\n && target.classList.contains('e-btn')\n && (+new Date(+this.value) === +_super.prototype.generateTodayVal.call(this, this.value))) {\n this.hide(e);\n }\n }\n };\n DatePicker.prototype.inputKeyActionHandle = function (e) {\n var clickedView = this.currentView();\n switch (e.action) {\n case 'altUpArrow':\n this.isAltKeyPressed = false;\n this.hide(e);\n this.inputElement.focus();\n break;\n case 'altDownArrow':\n this.isAltKeyPressed = true;\n this.strictModeUpdate();\n this.updateInput();\n this.changeTrigger(e);\n if (this.getModuleName() === 'datepicker') {\n this.show(null, e);\n }\n break;\n case 'escape':\n this.hide(e);\n break;\n case 'enter':\n this.strictModeUpdate();\n this.updateInput();\n this.popupUpdate();\n this.changeTrigger(e);\n this.errorClass();\n if (!this.isCalendar() && document.activeElement === this.inputElement) {\n this.hide(e);\n }\n if (this.isCalendar()) {\n e.preventDefault();\n e.stopPropagation();\n }\n break;\n case 'tab':\n case 'shiftTab':\n {\n var start = this.inputElement.selectionStart;\n var end = this.inputElement.selectionEnd;\n if (this.enableMask && !this.popupObj && !this.readonly) {\n var length_1 = this.inputElement.value.length;\n if ((start === 0 && end === length_1) || (end !== length_1 && e.action === 'tab') || (start !== 0 && e.action === 'shiftTab')) {\n e.preventDefault();\n }\n this.notify('keyDownHandler', {\n module: 'MaskedDateTime',\n e: e\n });\n start = this.inputElement.selectionStart;\n end = this.inputElement.selectionEnd;\n }\n this.strictModeUpdate();\n this.updateInput();\n this.popupUpdate();\n this.changeTrigger(e);\n this.errorClass();\n if (this.enableMask) {\n this.inputElement.selectionStart = start;\n this.inputElement.selectionEnd = end;\n }\n if (e.action === 'tab' && e.target === this.inputElement && this.isCalendar() && document.activeElement === this.inputElement) {\n e.preventDefault();\n this.headerTitleElement.focus();\n }\n if (e.action === 'shiftTab' && e.target === this.inputElement && this.isCalendar() && document.activeElement === this.inputElement) {\n this.hide(e);\n }\n break;\n }\n default:\n this.defaultAction(e);\n // Fix for close the popup when select the previously selected value.\n if (e.action === 'select' && clickedView === this.depth) {\n this.hide(e);\n }\n }\n };\n DatePicker.prototype.defaultAction = function (e) {\n this.previousDate = ((!isNullOrUndefined(this.value) && new Date(+this.value)) || null);\n if (this.isCalendar()) {\n _super.prototype.keyActionHandle.call(this, e);\n if (this.isCalendar()) {\n attributes(this.inputElement, {\n 'aria-activedescendant': '' + this.setActiveDescendant()\n });\n }\n }\n };\n DatePicker.prototype.popupUpdate = function () {\n if ((isNullOrUndefined(this.value)) && (!isNullOrUndefined(this.previousDate)) ||\n (((this.getModuleName() !== 'datetimepicker') && (+this.value !== +this.previousDate)) || ((this.getModuleName() === 'datetimepicker') && (+this.value !== +this.previousDateTime)))) {\n if (this.popupObj) {\n if (this.popupObj.element.querySelectorAll('.' + SELECTED).length > 0) {\n removeClass(this.popupObj.element.querySelectorAll('.' + SELECTED), [SELECTED]);\n }\n }\n if (!isNullOrUndefined(this.value)) {\n if ((+this.value >= +this.min) && (+this.value <= +this.max)) {\n var targetdate = new Date(this.checkValue(this.value));\n _super.prototype.navigateTo.call(this, 'Month', targetdate);\n }\n }\n }\n };\n DatePicker.prototype.strictModeUpdate = function () {\n var format;\n var pattern = /^y/;\n var charPattern = /[^a-zA-Z]/;\n var formatOptions;\n if (this.getModuleName() === 'datetimepicker') {\n format = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n }\n else if (!pattern.test(this.formatString) || charPattern.test(this.formatString)) {\n format = isNullOrUndefined(this.formatString) ? this.formatString : this.formatString.replace('dd', 'd');\n }\n if (!isNullOrUndefined(format)) {\n var len = format.split('M').length - 1;\n if (len < 3) {\n format = format.replace('MM', 'M');\n }\n }\n else {\n format = this.formatString;\n }\n var dateOptions;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n dateOptions = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd'\n };\n }\n else {\n dateOptions = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: format, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: format, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n dateOptions = formatOptions;\n }\n var date;\n if (typeof this.inputElement.value === 'string') {\n this.inputElement.value = this.inputElement.value.trim();\n }\n if ((this.getModuleName() === 'datetimepicker')) {\n if (this.checkDateValue(this.globalize.parseDate(this.inputElement.value, dateOptions))) {\n var modifiedValue = this.inputElement.value.replace(/(am|pm|Am|aM|pM|Pm)/g, function (match) { return match.toLocaleUpperCase(); });\n date = this.globalize.parseDate(modifiedValue, dateOptions);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: format, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: format, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.parseDate(this.inputElement.value, formatOptions);\n }\n }\n else {\n date = this.globalize.parseDate(this.inputElement.value, dateOptions);\n date = (!isNullOrUndefined(date) && isNaN(+date)) ? null : date;\n if (!isNullOrUndefined(this.formatString) && this.inputElement.value !== '' && this.strictMode) {\n if ((this.isPopupClicked || (!this.isPopupClicked && this.inputElement.value === this.previousElementValue))\n && this.formatString.indexOf('y') === -1) {\n date.setFullYear(this.value.getFullYear());\n }\n }\n }\n // EJ2-35061 - To prevent change event from triggering twice when using strictmode and format property\n if ((this.getModuleName() === 'datepicker') && (this.value && !isNaN(+this.value)) && date) {\n date.setHours(this.value.getHours(), this.value.getMinutes(), this.value.getSeconds(), this.value.getMilliseconds());\n }\n if (this.strictMode && date) {\n this.updateInputValue(this.globalize.formatDate(date, dateOptions));\n if (this.inputElement.value !== this.previousElementValue) {\n this.setProperties({ value: date }, true);\n }\n }\n else if (!this.strictMode) {\n if (this.inputElement.value !== this.previousElementValue) {\n this.setProperties({ value: date }, true);\n }\n }\n if (this.strictMode && !date && this.inputElement.value === (this.enableMask ? this.maskedDateValue : '')) {\n this.setProperties({ value: null }, true);\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: null }, true);\n }\n if (isNullOrUndefined(this.value)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n };\n DatePicker.prototype.createCalendar = function () {\n var _this = this;\n this.popupWrapper = this.createElement('div', { className: '' + ROOT + ' ' + POPUPWRAPPER, id: this.inputElement.id + '_options' });\n this.popupWrapper.setAttribute('aria-label', this.element.id);\n this.popupWrapper.setAttribute('role', 'dialog');\n if (!isNullOrUndefined(this.cssClass)) {\n this.popupWrapper.className += ' ' + this.cssClass;\n }\n if (Browser.isDevice) {\n this.modelHeader();\n this.modal = this.createElement('div');\n this.modal.className = '' + ROOT + ' e-date-modal';\n document.body.className += ' ' + OVERFLOW;\n this.modal.style.display = 'block';\n document.body.appendChild(this.modal);\n }\n //this.calendarElement represent the Calendar object from the Calendar class.\n this.calendarElement.querySelector('table tbody').className = '';\n this.popupObj = new Popup(this.popupWrapper, {\n content: this.calendarElement,\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : (this.enableRtl ? { X: 'right', Y: 'bottom' } : { X: 'left', Y: 'bottom' }),\n offsetY: OFFSETVALUE,\n targetType: 'container',\n enableRtl: this.enableRtl,\n zIndex: this.zIndex,\n collision: Browser.isDevice ? { X: 'fit', Y: 'fit' } : (this.enableRtl ? { X: 'fit', Y: 'flip' } : { X: 'flip', Y: 'flip' }),\n open: function () {\n if (Browser.isDevice && _this.fullScreenMode) {\n _this.iconRight = parseInt(window.getComputedStyle(_this.calendarElement.querySelector('.e-header.e-month .e-prev')).marginRight, 10) > 16 ? true : false;\n _this.touchModule = new Touch(_this.calendarElement.querySelector('.e-content.e-month'), {\n swipe: _this.CalendarSwipeHandler.bind(_this)\n });\n EventHandler.add(_this.calendarElement.querySelector('.e-content.e-month'), 'touchstart', _this.TouchStartHandler, _this);\n }\n if (_this.getModuleName() !== 'datetimepicker') {\n if (document.activeElement !== _this.inputElement) {\n _this.defaultKeyConfigs = extend(_this.defaultKeyConfigs, _this.keyConfigs);\n _this.calendarElement.children[1].firstElementChild.focus();\n _this.calendarKeyboardModules = new KeyboardEvents(_this.calendarElement.children[1].firstElementChild, {\n eventName: 'keydown',\n keyAction: _this.calendarKeyActionHandle.bind(_this),\n keyConfigs: _this.defaultKeyConfigs\n });\n _this.calendarKeyboardModules = new KeyboardEvents(_this.inputWrapper.container.children[_this.index], {\n eventName: 'keydown',\n keyAction: _this.calendarKeyActionHandle.bind(_this),\n keyConfigs: _this.defaultKeyConfigs\n });\n }\n }\n }, close: function () {\n if (_this.isDateIconClicked) {\n _this.inputWrapper.container.children[_this.index].focus();\n }\n if (_this.value) {\n _this.disabledDates();\n }\n if (_this.popupObj) {\n _this.popupObj.destroy();\n }\n _this.resetCalendar();\n detach(_this.popupWrapper);\n _this.popupObj = _this.popupWrapper = null;\n _this.preventArgs = null;\n _this.calendarKeyboardModules = null;\n _this.setAriaAttributes();\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n this.popupObj.element.className += ' ' + this.cssClass;\n this.setAriaAttributes();\n };\n DatePicker.prototype.CalendarSwipeHandler = function (e) {\n var direction = 0;\n if (this.iconRight) {\n switch (e.swipeDirection) {\n case 'Left':\n direction = 1;\n break;\n case 'Right':\n direction = -1;\n break;\n default:\n break;\n }\n }\n else {\n switch (e.swipeDirection) {\n case 'Up':\n direction = 1;\n break;\n case 'Down':\n direction = -1;\n break;\n default:\n break;\n }\n }\n if (this.touchStart) {\n if (direction === 1) {\n this.navigateNext(e);\n }\n else if (direction === -1) {\n this.navigatePrevious(e);\n }\n this.touchStart = false;\n }\n };\n DatePicker.prototype.TouchStartHandler = function (e) {\n this.touchStart = true;\n };\n DatePicker.prototype.setAriaDisabled = function () {\n if (!this.enabled) {\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.inputElement.tabIndex = -1;\n }\n else {\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n };\n DatePicker.prototype.modelHeader = function () {\n var dateOptions;\n var modelHeader = this.createElement('div', { className: 'e-model-header' });\n var yearHeading = this.createElement('h1', { className: 'e-model-year' });\n var h2 = this.createElement('div');\n var daySpan = this.createElement('span', { className: 'e-model-day' });\n var monthSpan = this.createElement('span', { className: 'e-model-month' });\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: 'y', skeleton: 'dateTime' };\n }\n else {\n dateOptions = { format: 'y', skeleton: 'dateTime', calendar: 'islamic' };\n }\n yearHeading.textContent = '' + this.globalize.formatDate(this.value || new Date(), dateOptions);\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: 'E', skeleton: 'dateTime' };\n }\n else {\n dateOptions = { format: 'E', skeleton: 'dateTime', calendar: 'islamic' };\n }\n daySpan.textContent = '' + this.globalize.formatDate(this.value || new Date(), dateOptions) + ', ';\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: 'MMM d', skeleton: 'dateTime' };\n }\n else {\n dateOptions = { format: 'MMM d', skeleton: 'dateTime', calendar: 'islamic' };\n }\n monthSpan.textContent = '' + this.globalize.formatDate(this.value || new Date(), dateOptions);\n if (this.fullScreenMode) {\n var modelCloseIcon = this.createElement('span', { className: 'e-popup-close' });\n EventHandler.add(modelCloseIcon, 'mousedown touchstart', this.modelCloseHandler, this);\n var modelTodayButton = this.calendarElement.querySelector('button.e-today');\n h2.classList.add('e-day-wrapper');\n modelTodayButton.classList.add('e-outline');\n modelHeader.appendChild(modelCloseIcon);\n modelHeader.appendChild(modelTodayButton);\n }\n if (!this.fullScreenMode) {\n modelHeader.appendChild(yearHeading);\n }\n h2.appendChild(daySpan);\n h2.appendChild(monthSpan);\n modelHeader.appendChild(h2);\n this.calendarElement.insertBefore(modelHeader, this.calendarElement.firstElementChild);\n };\n DatePicker.prototype.modelCloseHandler = function (e) {\n this.hide();\n };\n DatePicker.prototype.changeTrigger = function (event) {\n if (this.inputElement.value !== this.previousElementValue) {\n if (((this.previousDate && this.previousDate.valueOf()) !== (this.value && this.value.valueOf()))) {\n if (this.isDynamicValueChanged && this.isCalendar()) {\n this.popupUpdate();\n }\n this.changedArgs.value = this.value;\n this.changedArgs.event = event || null;\n this.changedArgs.element = this.element;\n this.changedArgs.isInteracted = !isNullOrUndefined(event);\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', this.changedArgs);\n }\n this.previousElementValue = this.inputElement.value;\n this.previousDate = !isNaN(+new Date(this.checkValue(this.value))) ? new Date(this.checkValue(this.value)) : null;\n this.isInteracted = true;\n }\n }\n this.isKeyAction = false;\n };\n DatePicker.prototype.navigatedEvent = function () {\n this.trigger('navigated', this.navigatedArgs);\n };\n DatePicker.prototype.keyupHandler = function (e) {\n this.isKeyAction = (this.inputElement.value !== this.previousElementValue) ? true : false;\n };\n DatePicker.prototype.changeEvent = function (event) {\n if (!this.isIconClicked && !(this.isBlur || this.isKeyAction)) {\n this.selectCalendar(event);\n }\n if (((this.previousDate && this.previousDate.valueOf()) !== (this.value && this.value.valueOf()))) {\n this.changedArgs.event = event ? event : null;\n this.changedArgs.element = this.element;\n this.changedArgs.isInteracted = this.isInteracted;\n if (!this.isDynamicValueChanged) {\n this.trigger('change', this.changedArgs);\n }\n this.previousDate = this.value && new Date(+this.value);\n if (!this.isDynamicValueChanged) {\n this.hide(event);\n }\n this.previousElementValue = this.inputElement.value;\n this.errorClass();\n }\n else if (event) {\n this.hide(event);\n }\n this.isKeyAction = false;\n };\n DatePicker.prototype.requiredModules = function () {\n var modules = [];\n if (this.calendarMode === 'Islamic') {\n modules.push({ args: [this], member: 'islamic', name: 'Islamic' });\n }\n if (this.enableMask) {\n modules.push({ args: [this], member: 'MaskedDateTime' });\n }\n return modules;\n };\n DatePicker.prototype.selectCalendar = function (e) {\n var date;\n var tempFormat;\n var formatOptions;\n if (this.getModuleName() === 'datetimepicker') {\n tempFormat = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n }\n else {\n tempFormat = this.formatString;\n }\n if (this.value) {\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: tempFormat, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: tempFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.formatDate(this.changedArgs.value, formatOptions);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.formatDate(this.changedArgs.value, formatOptions);\n }\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n }\n if (!isNullOrUndefined(date)) {\n this.updateInputValue(date);\n if (this.enableMask) {\n this.notify('setMaskSelection', {\n module: 'MaskedDateTime'\n });\n }\n }\n };\n DatePicker.prototype.isCalendar = function () {\n if (this.popupWrapper && this.popupWrapper.classList.contains('' + POPUPWRAPPER)) {\n return true;\n }\n return false;\n };\n DatePicker.prototype.setWidth = function (width) {\n if (typeof width === 'number') {\n this.inputWrapper.container.style.width = formatUnit(this.width);\n }\n else if (typeof width === 'string') {\n this.inputWrapper.container.style.width = (width.match(/px|%|em/)) ? (this.width) : (formatUnit(this.width));\n }\n else {\n this.inputWrapper.container.style.width = '100%';\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Shows the Calendar.\n *\n * @returns {void}\n\n */\n DatePicker.prototype.show = function (type, e) {\n var _this = this;\n if ((this.enabled && this.readonly) || !this.enabled || this.popupObj) {\n return;\n }\n else {\n var prevent_1 = true;\n var outOfRange = void 0;\n if (!isNullOrUndefined(this.value) && !(+this.value >= +new Date(this.checkValue(this.min))\n && +this.value <= +new Date(this.checkValue(this.max)))) {\n outOfRange = new Date(this.checkValue(this.value));\n this.setProperties({ 'value': null }, true);\n }\n else {\n outOfRange = this.value || null;\n }\n if (!this.isCalendar()) {\n _super.prototype.render.call(this);\n this.setProperties({ 'value': outOfRange || null }, true);\n this.previousDate = outOfRange;\n this.createCalendar();\n }\n if (Browser.isDevice) {\n this.mobilePopupWrapper = this.createElement('div', { className: 'e-datepick-mob-popup-wrap' });\n document.body.appendChild(this.mobilePopupWrapper);\n }\n this.preventArgs = {\n preventDefault: function () {\n prevent_1 = false;\n },\n popup: this.popupObj,\n event: e || null,\n cancel: false,\n appendTo: Browser.isDevice ? this.mobilePopupWrapper : document.body\n };\n var eventArgs = this.preventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.preventArgs = eventArgs;\n if (prevent_1 && !_this.preventArgs.cancel) {\n addClass(_this.inputWrapper.buttons, ACTIVE);\n _this.preventArgs.appendTo.appendChild(_this.popupWrapper);\n _this.popupObj.refreshPosition(_this.inputElement);\n var openAnimation = {\n name: 'FadeIn',\n duration: Browser.isDevice ? 0 : OPENDURATION\n };\n if (_this.zIndex === 1000) {\n _this.popupObj.show(new Animation(openAnimation), _this.element);\n }\n else {\n _this.popupObj.show(new Animation(openAnimation), null);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _super.prototype.setOverlayIndex.call(_this, _this.mobilePopupWrapper, _this.popupObj.element, _this.modal, Browser.isDevice);\n _this.setAriaAttributes();\n }\n else {\n _this.popupObj.destroy();\n _this.popupWrapper = _this.popupObj = null;\n }\n if (!isNullOrUndefined(_this.inputElement) && _this.inputElement.value === '') {\n if (!isNullOrUndefined(_this.tableBodyElement) && _this.tableBodyElement.querySelectorAll('td.e-selected').length > 0) {\n addClass([_this.tableBodyElement.querySelector('td.e-selected')], FOCUSEDDATE);\n removeClass(_this.tableBodyElement.querySelectorAll('td.e-selected'), SELECTED);\n }\n }\n EventHandler.add(document, 'mousedown touchstart', _this.documentHandler, _this);\n });\n if (Browser.isDevice) {\n var dlgOverlay = this.createElement('div', { className: 'e-dlg-overlay' });\n dlgOverlay.style.zIndex = (this.zIndex - 1).toString();\n this.mobilePopupWrapper.appendChild(dlgOverlay);\n }\n }\n };\n /**\n * Hide the Calendar.\n *\n * @returns {void}\n\n */\n DatePicker.prototype.hide = function (event) {\n var _this = this;\n if (!isNullOrUndefined(this.popupWrapper)) {\n var prevent_2 = true;\n this.preventArgs = {\n preventDefault: function () {\n prevent_2 = false;\n },\n popup: this.popupObj,\n event: event || null,\n cancel: false\n };\n removeClass(this.inputWrapper.buttons, ACTIVE);\n removeClass([document.body], OVERFLOW);\n var eventArgs = this.preventArgs;\n if (this.isCalendar()) {\n this.trigger('close', eventArgs, function (eventArgs) {\n _this.closeEventCallback(prevent_2, eventArgs);\n });\n }\n else {\n this.closeEventCallback(prevent_2, eventArgs);\n }\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n DatePicker.prototype.closeEventCallback = function (prevent, eventArgs) {\n this.preventArgs = eventArgs;\n if (this.isCalendar() && (prevent && !this.preventArgs.cancel)) {\n this.popupObj.hide();\n this.isAltKeyPressed = false;\n this.keyboardModule.destroy();\n removeClass(this.inputWrapper.buttons, ACTIVE);\n }\n this.setAriaAttributes();\n if (Browser.isDevice && this.modal) {\n this.modal.style.display = 'none';\n this.modal.outerHTML = '';\n this.modal = null;\n }\n if (Browser.isDevice) {\n if (!isNullOrUndefined(this.mobilePopupWrapper) &&\n (prevent && (isNullOrUndefined(this.preventArgs) || !this.preventArgs.cancel))) {\n this.mobilePopupWrapper.remove();\n this.mobilePopupWrapper = null;\n }\n }\n EventHandler.remove(document, 'mousedown touchstart', this.documentHandler);\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n };\n /* eslint-disable jsdoc/require-param */\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DatePicker.prototype.focusIn = function (triggerEvent) {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n };\n /* eslint-enable jsdoc/require-param */\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n DatePicker.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement) {\n removeClass([this.inputWrapper.container], [INPUTFOCUS]);\n this.inputElement.blur();\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the DatePicker.\n *\n * @returns {string}\n\n */\n DatePicker.prototype.currentView = function () {\n var currentView;\n if (this.calendarElement) {\n // calls the Calendar currentView public method\n currentView = _super.prototype.currentView.call(this);\n }\n return currentView;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Navigates to specified month or year or decade view of the DatePicker.\n *\n * @param {string} view - Specifies the view of the calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @returns {void}\n\n */\n DatePicker.prototype.navigateTo = function (view, date) {\n if (this.calendarElement) {\n // calls the Calendar navigateTo public method\n _super.prototype.navigateTo.call(this, view, date);\n }\n };\n /**\n * To destroy the widget.\n *\n * @returns {void}\n */\n DatePicker.prototype.destroy = function () {\n this.unBindEvents();\n if (this.showClearButton) {\n this.clearButton = document.getElementsByClassName('e-clear-icon')[0];\n }\n this.hide(null);\n _super.prototype.destroy.call(this);\n Input.destroy({\n element: this.inputElement,\n floatLabelType: this.floatLabelType,\n properties: this.properties\n }, this.clearButton);\n if (!isNullOrUndefined(this.keyboardModules)) {\n this.keyboardModules.destroy();\n }\n if (this.popupObj && this.popupObj.element.classList.contains(POPUP)) {\n _super.prototype.destroy.call(this);\n }\n var ariaAttrs = {\n 'aria-atomic': 'true', 'aria-disabled': 'true',\n 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false', 'aria-label': this.getModuleName()\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttrs, this.inputElement);\n if (!isNullOrUndefined(this.inputElementCopy.getAttribute('tabindex'))) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.removeAttribute('tabindex');\n }\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n this.ensureInputAttribute();\n }\n if (this.isCalendar()) {\n if (this.popupWrapper) {\n detach(this.popupWrapper);\n }\n this.popupObj = this.popupWrapper = null;\n this.keyboardModule.destroy();\n }\n if (this.ngTag === null) {\n if (this.inputElement) {\n if (!isNullOrUndefined(this.inputWrapper)) {\n this.inputWrapper.container.insertAdjacentElement('afterend', this.inputElement);\n }\n removeClass([this.inputElement], [INPUTROOT]);\n }\n removeClass([this.element], [ROOT]);\n if (!isNullOrUndefined(this.inputWrapper)) {\n detach(this.inputWrapper.container);\n }\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.resetFormHandler);\n }\n this.inputWrapper = null;\n this.keyboardModules = null;\n };\n DatePicker.prototype.ensureInputAttribute = function () {\n var prop = [];\n for (var i = 0; i < this.inputElement.attributes.length; i++) {\n prop[i] = this.inputElement.attributes[i].name;\n }\n for (var i = 0; i < prop.length; i++) {\n if (isNullOrUndefined(this.inputElementCopy.getAttribute(prop[i]))) {\n if (prop[i].toLowerCase() === 'value') {\n this.inputElement.value = '';\n }\n this.inputElement.removeAttribute(prop[i]);\n }\n else {\n if (prop[i].toLowerCase() === 'value') {\n this.inputElement.value = this.inputElementCopy.getAttribute(prop[i]);\n }\n this.inputElement.setAttribute(prop[i], this.inputElementCopy.getAttribute(prop[i]));\n }\n }\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n DatePicker.prototype.preRender = function () {\n this.inputElementCopy = this.element.cloneNode(true);\n removeClass([this.inputElementCopy], [ROOT, CONTROL, LIBRARY]);\n this.inputElement = this.element;\n this.formElement = closest(this.inputElement, 'form');\n this.index = this.showClearButton ? 2 : 1;\n this.ngTag = null;\n if (this.element.tagName === 'EJS-DATEPICKER' || this.element.tagName === 'EJS-DATETIMEPICKER') {\n this.ngTag = this.element.tagName;\n this.inputElement = this.createElement('input');\n this.element.appendChild(this.inputElement);\n }\n if (this.element.getAttribute('id')) {\n if (this.ngTag !== null) {\n this.inputElement.id = this.element.getAttribute('id') + '_input';\n }\n }\n else {\n if (this.getModuleName() === 'datetimepicker') {\n this.element.id = getUniqueID('ej2-datetimepicker');\n if (this.ngTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n else {\n this.element.id = getUniqueID('ej2-datepicker');\n if (this.ngTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n }\n if (this.ngTag !== null) {\n this.validationAttribute(this.element, this.inputElement);\n }\n this.updateHtmlAttributeToElement();\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.checkHtmlAttributes(false);\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n _super.prototype.preRender.call(this);\n };\n DatePicker.prototype.getDefaultKeyConfig = function () {\n this.defaultKeyConfigs = {\n altUpArrow: 'alt+uparrow',\n altDownArrow: 'alt+downarrow',\n escape: 'escape',\n enter: 'enter',\n controlUp: 'ctrl+38',\n controlDown: 'ctrl+40',\n moveDown: 'downarrow',\n moveUp: 'uparrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n select: 'enter',\n home: 'home',\n end: 'end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n shiftPageUp: 'shift+pageup',\n shiftPageDown: 'shift+pagedown',\n controlHome: 'ctrl+home',\n controlEnd: 'ctrl+end',\n shiftTab: 'shift+tab',\n tab: 'tab'\n };\n return this.defaultKeyConfigs;\n };\n DatePicker.prototype.validationAttribute = function (target, inputElement) {\n var nameAttribute = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n inputElement.setAttribute('name', nameAttribute);\n target.removeAttribute('name');\n var attribute = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attribute.length; i++) {\n if (isNullOrUndefined(target.getAttribute(attribute[i]))) {\n continue;\n }\n var attr = target.getAttribute(attribute[i]);\n inputElement.setAttribute(attribute[i], attr);\n target.removeAttribute(attribute[i]);\n }\n };\n DatePicker.prototype.checkFormat = function () {\n var culture = new Internationalization(this.locale);\n if (this.format) {\n if (typeof this.format === 'string') {\n this.formatString = this.format;\n }\n else if (this.format.skeleton !== '' && !isNullOrUndefined(this.format.skeleton)) {\n var skeletonString = this.format.skeleton;\n if (this.getModuleName() === 'datetimepicker') {\n this.formatString = culture.getDatePattern({ skeleton: skeletonString, type: 'dateTime' });\n }\n else {\n this.formatString = culture.getDatePattern({ skeleton: skeletonString, type: 'date' });\n }\n }\n else {\n if (this.getModuleName() === 'datetimepicker') {\n this.formatString = this.dateTimeFormat;\n }\n else {\n this.formatString = null;\n }\n }\n }\n else {\n this.formatString = null;\n }\n };\n DatePicker.prototype.checkHtmlAttributes = function (dynamic) {\n this.globalize = new Internationalization(this.locale);\n this.checkFormat();\n this.checkView();\n var attributes = dynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['value', 'min', 'max', 'disabled', 'readonly', 'style', 'name', 'placeholder', 'type'];\n var options;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n options = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd'\n };\n }\n else {\n options = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n options = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n options = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['enabled'] === undefined)) || dynamic)) {\n var enabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' ||\n this.inputElement.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !dynamic);\n }\n break;\n case 'readonly':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['readonly'] === undefined)) || dynamic)) {\n var readonly = this.inputElement.getAttribute(prop) === 'readonly' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !dynamic);\n }\n break;\n case 'placeholder':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['placeholder'] === undefined)) || dynamic)) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !dynamic);\n }\n break;\n case 'style':\n this.inputElement.setAttribute('style', '' + this.inputElement.getAttribute(prop));\n break;\n case 'name':\n this.inputElement.setAttribute('name', '' + this.inputElement.getAttribute(prop));\n break;\n case 'value':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['value'] === undefined)) || dynamic)) {\n var value = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(value, options), {}), !dynamic);\n }\n break;\n case 'min':\n if ((+this.min === +new Date(1900, 0, 1)) || dynamic) {\n var min = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(min, options), {}), !dynamic);\n }\n break;\n case 'max':\n if ((+this.max === +new Date(2099, 11, 31)) || dynamic) {\n var max = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(max, options), {}), !dynamic);\n }\n break;\n case 'type':\n if (this.inputElement.getAttribute(prop) !== 'text') {\n this.inputElement.setAttribute('type', 'text');\n }\n break;\n }\n }\n }\n };\n /**\n * To get component name.\n *\n * @returns {string} Returns the component name.\n * @private\n */\n DatePicker.prototype.getModuleName = function () {\n return 'datepicker';\n };\n DatePicker.prototype.disabledDates = function (isDynamic, isBlur) {\n if (isDynamic === void 0) { isDynamic = false; }\n if (isBlur === void 0) { isBlur = false; }\n var formatOptions;\n var globalize;\n var valueCopy = this.checkDateValue(this.value) ? new Date(+this.value) : new Date(this.checkValue(this.value));\n var previousValCopy = this.previousDate;\n //calls the Calendar render method to check the disabled dates through renderDayCell event and update the input value accordingly.\n this.minMaxUpdates();\n if (!isDynamic || (isDynamic && !isNullOrUndefined(this.renderDayCell))) {\n _super.prototype.render.call(this);\n }\n this.previousDate = previousValCopy;\n var date = valueCopy && +(valueCopy);\n var dateIdString = '*[id^=\"/id\"]'.replace('/id', '' + date);\n if (!this.strictMode) {\n if (typeof this.value === 'string' || ((typeof this.value === 'object') && (+this.value) !== (+valueCopy))) {\n this.setProperties({ value: valueCopy }, true);\n }\n }\n if (!isNullOrUndefined(this.calendarElement) && !isNullOrUndefined(this.calendarElement.querySelectorAll(dateIdString)[0])) {\n if (this.calendarElement.querySelectorAll(dateIdString)[0].classList.contains('e-disabled')) {\n if (!this.strictMode) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n }\n }\n var inputVal;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n globalize = this.globalize.formatDate(valueCopy, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd'\n });\n }\n else {\n globalize = this.globalize.formatDate(valueCopy, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n inputVal = globalize;\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n inputVal = this.globalize.formatDate(valueCopy, formatOptions);\n }\n if (!this.popupObj) {\n this.updateInputValue(inputVal);\n if (this.enableMask) {\n this.updateInputValue(this.maskedDateValue);\n this.notify('createMask', {\n module: 'MaskedDateTime', isBlur: isBlur\n });\n }\n }\n };\n DatePicker.prototype.setAriaAttributes = function () {\n if (this.isCalendar()) {\n Input.addAttributes({ 'aria-expanded': 'true' }, this.inputElement);\n attributes(this.inputElement, { 'aria-owns': this.inputElement.id + '_options' });\n attributes(this.inputElement, { 'aria-controls': this.inputElement.id });\n if (this.value) {\n attributes(this.inputElement, { 'aria-activedescendant': '' + this.setActiveDescendant() });\n }\n }\n else {\n Input.addAttributes({ 'aria-expanded': 'false' }, this.inputElement);\n this.inputElement.removeAttribute('aria-owns');\n this.inputElement.removeAttribute('aria-controls');\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n };\n DatePicker.prototype.errorClass = function () {\n var dateIdString = '*[id^=\"/id\"]'.replace('/id', '' + (+this.value));\n var isDisabledDate = this.calendarElement &&\n this.calendarElement.querySelectorAll(dateIdString)[0] &&\n this.calendarElement.querySelectorAll(dateIdString)[0].classList.contains('e-disabled');\n if ((!isNullOrUndefined(this.value) && !isNullOrUndefined(this.min) &&\n !isNullOrUndefined(this.max) && !(new Date(this.value).setMilliseconds(0) >= new Date(this.min).setMilliseconds(0)\n && new Date(this.value).setMilliseconds(0) <= new Date(this.max).setMilliseconds(0)))\n || (!this.strictMode && this.inputElement.value !== '' && this.inputElement.value !== this.maskedDateValue && isNullOrUndefined(this.value) || isDisabledDate)) {\n addClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'true' });\n }\n else if (!isNullOrUndefined(this.inputWrapper)) {\n removeClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'false' });\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {DatePickerModel} newProp - Returns the dynamic property value of the component.\n * @param {DatePickerModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n DatePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n var openPopup = ['blur', 'change', 'cleared', 'close', 'created', 'destroyed', 'focus', 'navigated', 'open', 'renderDayCell'];\n if (openPopup.indexOf(prop) > 0 && this.isReact) {\n this.isDynamicValueChanged = true;\n }\n switch (prop) {\n case 'value':\n this.isDynamicValueChanged = true;\n this.isInteracted = false;\n this.invalidValueString = null;\n this.checkInvalidValue(newProp.value);\n newProp.value = this.value;\n this.previousElementValue = this.inputElement.value;\n if (isNullOrUndefined(this.value)) {\n if (this.enableMask) {\n this.updateInputValue(this.maskedDateValue);\n }\n else {\n this.updateInputValue('');\n }\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n this.updateInput(true);\n if (+this.previousDate !== +this.value) {\n this.changeTrigger(null);\n }\n this.isInteracted = true;\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'format':\n this.checkFormat();\n this.bindInputEvent();\n this.updateInput();\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n if (!this.value) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n break;\n case 'allowEdit':\n this.setAllowEdit();\n break;\n case 'placeholder':\n Input.setPlaceholder(this.placeholder, this.inputElement);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.inputElement);\n this.setAriaDisabled();\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkHtmlAttributes(true);\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n if (this.datepickerOptions && this.datepickerOptions.placeholder == null) {\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.placeholder, this.inputElement);\n }\n this.updateInput();\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n break;\n case 'start':\n case 'depth':\n this.checkView();\n if (this.calendarElement) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n }\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.inputElement, this.inputWrapper);\n this.bindClearEvent();\n this.index = this.showClearButton ? 2 : 1;\n break;\n case 'strictMode':\n this.invalidValueString = null;\n this.updateInput();\n break;\n case 'width':\n this.setWidth(newProp.width);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'enableMask':\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n this.updateInputValue(this.maskedDateValue);\n this.bindInputEvent();\n }\n else {\n if (this.inputElement.value === this.maskedDateValue) {\n this.updateInputValue('');\n }\n }\n break;\n default:\n if (this.calendarElement && this.isCalendar()) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n }\n break;\n }\n if (!this.isDynamicValueChanged) {\n this.hide(null);\n }\n this.isDynamicValueChanged = false;\n }\n };\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"strictMode\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"format\", void 0);\n __decorate([\n Property(true)\n ], DatePicker.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"fullScreenMode\", void 0);\n __decorate([\n Property({})\n ], DatePicker.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"values\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"isMultiSelection\", void 0);\n __decorate([\n Property(true)\n ], DatePicker.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(true)\n ], DatePicker.prototype, \"allowEdit\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(1000)\n ], DatePicker.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"placeholder\", void 0);\n __decorate([\n Property('Never')\n ], DatePicker.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"openOnFocus\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"enableMask\", void 0);\n __decorate([\n Property({ day: 'day', month: 'month', year: 'year', hour: 'hour', minute: 'minute', second: 'second', dayOfTheWeek: 'day of the week' })\n ], DatePicker.prototype, \"maskPlaceholder\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"cleared\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"destroyed\", void 0);\n DatePicker = __decorate([\n NotifyPropertyChanges\n ], DatePicker);\n return DatePicker;\n}(Calendar));\nexport { DatePicker };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n///\nimport { EventHandler, Internationalization, Property, NotifyPropertyChanges, Browser } from '@syncfusion/ej2-base';\nimport { Animation, Event, cldrData, getDefaultDateObject, detach } from '@syncfusion/ej2-base';\nimport { createElement, remove, addClass, L10n, removeClass, closest, append, attributes } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, isNullOrUndefined, formatUnit, getValue, rippleEffect } from '@syncfusion/ej2-base';\nimport { extend } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DatePicker } from '../datepicker/datepicker';\nimport { TimePickerBase } from '../timepicker/timepicker';\n//class constant defination\nvar DATEWRAPPER = 'e-date-wrapper';\nvar DATEPICKERROOT = 'e-datepicker';\nvar DATETIMEWRAPPER = 'e-datetime-wrapper';\nvar DAY = new Date().getDate();\nvar MONTH = new Date().getMonth();\nvar YEAR = new Date().getFullYear();\nvar HOUR = new Date().getHours();\nvar MINUTE = new Date().getMinutes();\nvar SECOND = new Date().getSeconds();\nvar MILLISECOND = new Date().getMilliseconds();\nvar ROOT = 'e-datetimepicker';\nvar DATETIMEPOPUPWRAPPER = 'e-datetimepopup-wrapper';\nvar INPUTWRAPPER = 'e-input-group-icon';\nvar POPUP = 'e-popup';\nvar TIMEICON = 'e-time-icon';\nvar INPUTFOCUS = 'e-input-focus';\nvar POPUPDIMENSION = '250px';\nvar ICONANIMATION = 'e-icon-anim';\nvar DISABLED = 'e-disabled';\nvar ERROR = 'e-error';\nvar CONTENT = 'e-content';\nvar NAVIGATION = 'e-navigation';\nvar ACTIVE = 'e-active';\nvar HOVER = 'e-hover';\nvar ICONS = 'e-icons';\nvar HALFPOSITION = 2;\nvar LISTCLASS = 'e-list-item';\nvar ANIMATIONDURATION = 100;\nvar OVERFLOW = 'e-time-overflow';\n/**\n * Represents the DateTimePicker component that allows user to select\n * or enter a date time value.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar DateTimePicker = /** @class */ (function (_super) {\n __extends(DateTimePicker, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {DateTimePickerModel} options - Specifies the DateTimePicker model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function DateTimePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.valueWithMinutes = null;\n _this.scrollInvoked = false;\n _this.moduleName = _this.getModuleName();\n _this.formatRegex = /dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yyy|yy|y|'[^']*'|'[^']*'/g;\n _this.dateFormatString = '';\n _this.dateTimeOptions = options;\n return _this;\n }\n DateTimePicker.prototype.focusHandler = function () {\n if (!this.enabled) {\n return;\n }\n addClass([this.inputWrapper.container], INPUTFOCUS);\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n DateTimePicker.prototype.focusIn = function () {\n _super.prototype.focusIn.call(this);\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n DateTimePicker.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement) {\n this.inputElement.blur();\n removeClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n };\n DateTimePicker.prototype.blurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n // IE popup closing issue when click over the scrollbar\n if (this.isTimePopupOpen() && this.isPreventBlur) {\n this.inputElement.focus();\n return;\n }\n removeClass([this.inputWrapper.container], INPUTFOCUS);\n var blurArguments = {\n model: this\n };\n if (this.isTimePopupOpen()) {\n this.hide(e);\n }\n this.trigger('blur', blurArguments);\n };\n /**\n * To destroy the widget.\n *\n * @returns {void}\n */\n DateTimePicker.prototype.destroy = function () {\n if (this.showClearButton) {\n this.clearButton = document.getElementsByClassName('e-clear-icon')[0];\n }\n this.hide(null);\n if (this.popupObject && this.popupObject.element.classList.contains(POPUP)) {\n this.popupObject.destroy();\n detach(this.dateTimeWrapper);\n this.dateTimeWrapper = undefined;\n this.liCollections = this.timeCollections = [];\n if (!isNullOrUndefined(this.rippleFn)) {\n this.rippleFn();\n }\n }\n var ariaAttribute = {\n 'aria-live': 'assertive', 'aria-atomic': 'true', 'aria-invalid': 'false',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false',\n 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off'\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttribute, this.inputElement);\n }\n if (this.isCalendar()) {\n if (this.popupWrapper) {\n detach(this.popupWrapper);\n }\n this.popupObject = this.popupWrapper = null;\n this.keyboardHandler.destroy();\n }\n this.unBindInputEvents();\n this.liCollections = null;\n this.rippleFn = null;\n this.selectedElement = null;\n this.listTag = null;\n this.timeIcon = null;\n this.popupObject = null;\n this.preventArgs = null;\n this.keyboardModule = null;\n Input.destroy({\n element: this.inputElement,\n floatLabelType: this.floatLabelType,\n properties: this.properties\n }, this.clearButton);\n _super.prototype.destroy.call(this);\n };\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n DateTimePicker.prototype.render = function () {\n this.timekeyConfigure = {\n enter: 'enter',\n escape: 'escape',\n end: 'end',\n tab: 'tab',\n home: 'home',\n down: 'downarrow',\n up: 'uparrow',\n left: 'leftarrow',\n right: 'rightarrow',\n open: 'alt+downarrow',\n close: 'alt+uparrow'\n };\n this.valueWithMinutes = null;\n this.previousDateTime = null;\n this.isPreventBlur = false;\n this.cloneElement = this.element.cloneNode(true);\n this.dateTimeFormat = this.cldrDateTimeFormat();\n this.initValue = this.value;\n if (typeof (this.min) === 'string') {\n this.min = this.checkDateValue(new Date(this.min));\n }\n if (typeof (this.max) === 'string') {\n this.max = this.checkDateValue(new Date(this.max));\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n _super.prototype.updateHtmlAttributeToElement.call(this);\n this.checkAttributes(false);\n var localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('datetimepicker', localeText, this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n _super.prototype.render.call(this);\n this.createInputElement();\n _super.prototype.updateHtmlAttributeToWrapper.call(this);\n this.bindInputEvents();\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n this.setValue(true);\n if (this.enableMask && !this.value && this.maskedDateValue && (this.floatLabelType === 'Always' || !this.floatLabelType || !this.placeholder)) {\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkValue(this.scrollTo))) }, true);\n this.previousDateTime = this.value && new Date(+this.value);\n if (this.element.tagName === 'EJS-DATETIMEPICKER') {\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n if (!this.enabled) {\n this.inputElement.tabIndex = -1;\n }\n }\n if (this.floatLabelType !== 'Never') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-date-time-icon');\n }\n this.renderComplete();\n };\n DateTimePicker.prototype.setValue = function (isDynamic) {\n if (isDynamic === void 0) { isDynamic = false; }\n this.initValue = this.validateMinMaxRange(this.value);\n if (!this.strictMode && this.isDateObject(this.initValue)) {\n var value = this.validateMinMaxRange(this.initValue);\n Input.setValue(this.getFormattedValue(value), this.inputElement, this.floatLabelType, this.showClearButton);\n this.setProperties({ value: value }, true);\n }\n else {\n if (isNullOrUndefined(this.value)) {\n this.initValue = null;\n this.setProperties({ value: null }, true);\n }\n }\n this.valueWithMinutes = this.value;\n _super.prototype.updateInput.call(this, isDynamic);\n };\n DateTimePicker.prototype.validateMinMaxRange = function (value) {\n var result = value;\n if (this.isDateObject(value)) {\n result = this.validateValue(value);\n }\n else {\n if (+this.min > +this.max) {\n this.disablePopupButton(true);\n }\n }\n this.checkValidState(result);\n return result;\n };\n DateTimePicker.prototype.checkValidState = function (value) {\n this.isValidState = true;\n if (!this.strictMode) {\n if ((+(value) > +(this.max)) || (+(value) < +(this.min))) {\n this.isValidState = false;\n }\n }\n this.checkErrorState();\n };\n DateTimePicker.prototype.checkErrorState = function () {\n if (this.isValidState) {\n removeClass([this.inputWrapper.container], ERROR);\n }\n else {\n addClass([this.inputWrapper.container], ERROR);\n }\n attributes(this.inputElement, { 'aria-invalid': this.isValidState ? 'false' : 'true' });\n };\n DateTimePicker.prototype.validateValue = function (value) {\n var dateVal = value;\n if (this.strictMode) {\n if (+this.min > +this.max) {\n this.disablePopupButton(true);\n dateVal = this.max;\n }\n else if (+value < +this.min) {\n dateVal = this.min;\n }\n else if (+value > +this.max) {\n dateVal = this.max;\n }\n }\n else {\n if (+this.min > +this.max) {\n this.disablePopupButton(true);\n dateVal = value;\n }\n }\n return dateVal;\n };\n DateTimePicker.prototype.disablePopupButton = function (isDisable) {\n if (isDisable) {\n addClass([this.inputWrapper.buttons[0], this.timeIcon], DISABLED);\n this.hide();\n }\n else {\n removeClass([this.inputWrapper.buttons[0], this.timeIcon], DISABLED);\n }\n };\n DateTimePicker.prototype.getFormattedValue = function (value) {\n var dateOptions;\n if (!isNullOrUndefined(value)) {\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: this.cldrDateTimeFormat(), type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n dateOptions = { format: this.cldrDateTimeFormat(), type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n return this.globalize.formatDate(value, dateOptions);\n }\n else {\n return null;\n }\n };\n DateTimePicker.prototype.isDateObject = function (value) {\n return (!isNullOrUndefined(value) && !isNaN(+value)) ? true : false;\n };\n DateTimePicker.prototype.createInputElement = function () {\n removeClass([this.inputElement], DATEPICKERROOT);\n removeClass([this.inputWrapper.container], DATEWRAPPER);\n addClass([this.inputWrapper.container], DATETIMEWRAPPER);\n addClass([this.inputElement], ROOT);\n this.renderTimeIcon();\n };\n DateTimePicker.prototype.renderTimeIcon = function () {\n this.timeIcon = Input.appendSpan(INPUTWRAPPER + ' ' + TIMEICON + ' ' + ICONS, this.inputWrapper.container);\n };\n DateTimePicker.prototype.bindInputEvents = function () {\n EventHandler.add(this.timeIcon, 'mousedown', this.timeHandler, this);\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.dateHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.blurHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.focusHandler, this);\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.keyboardHandler = new KeyboardEvents(this.inputElement, {\n eventName: 'keydown',\n keyAction: this.inputKeyAction.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n };\n DateTimePicker.prototype.unBindInputEvents = function () {\n EventHandler.remove(this.timeIcon, 'mousedown touchstart', this.timeHandler);\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown touchstart', this.dateHandler);\n if (this.inputElement) {\n EventHandler.remove(this.inputElement, 'blur', this.blurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.focusHandler);\n }\n if (this.keyboardHandler) {\n this.keyboardHandler.destroy();\n }\n };\n DateTimePicker.prototype.cldrTimeFormat = function () {\n var cldrTime;\n if (this.isNullOrEmpty(this.timeFormat)) {\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrTime = (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrTime = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n }\n else {\n cldrTime = this.timeFormat;\n }\n return cldrTime;\n };\n DateTimePicker.prototype.cldrDateTimeFormat = function () {\n var cldrTime;\n var culture = new Internationalization(this.locale);\n var dateFormat = culture.getDatePattern({ skeleton: 'yMd' });\n if (this.isNullOrEmpty(this.formatString)) {\n cldrTime = dateFormat + ' ' + this.getCldrFormat('time');\n }\n else {\n cldrTime = this.formatString;\n }\n return cldrTime;\n };\n DateTimePicker.prototype.getCldrFormat = function (type) {\n var cldrDateTime;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrDateTime = (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrDateTime = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n return cldrDateTime;\n };\n DateTimePicker.prototype.isNullOrEmpty = function (value) {\n if (isNullOrUndefined(value) || (typeof value === 'string' && value.trim() === '')) {\n return true;\n }\n else {\n return false;\n }\n };\n DateTimePicker.prototype.getCultureTimeObject = function (ld, c) {\n if (this.calendarMode === 'Gregorian') {\n return getValue('main.' + '' + this.locale + '.dates.calendars.gregorian.timeFormats.short', ld);\n }\n else {\n return getValue('main.' + '' + this.locale + '.dates.calendars.islamic.timeFormats.short', ld);\n }\n };\n DateTimePicker.prototype.timeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.isIconClicked = true;\n if (Browser.isDevice) {\n this.inputElement.setAttribute('readonly', '');\n }\n if (e.currentTarget === this.timeIcon) {\n e.preventDefault();\n }\n if (this.enabled && !this.readonly) {\n if (this.isDatePopupOpen()) {\n _super.prototype.hide.call(this, e);\n }\n if (this.isTimePopupOpen()) {\n this.closePopup(e);\n }\n else {\n this.inputElement.focus();\n this.popupCreation('time', e);\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n }\n this.isIconClicked = false;\n };\n DateTimePicker.prototype.dateHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (e.currentTarget === this.inputWrapper.buttons[0]) {\n e.preventDefault();\n }\n if (this.enabled && !this.readonly) {\n if (this.isTimePopupOpen()) {\n this.closePopup(e);\n }\n if (!isNullOrUndefined(this.popupWrapper)) {\n this.popupCreation('date', e);\n }\n }\n };\n DateTimePicker.prototype.show = function (type, e) {\n if ((this.enabled && this.readonly) || !this.enabled) {\n return;\n }\n else {\n if (type === 'time' && !this.dateTimeWrapper) {\n if (this.isDatePopupOpen()) {\n this.hide(e);\n }\n this.popupCreation('time', e);\n }\n else if (!this.popupObj) {\n if (this.isTimePopupOpen()) {\n this.hide(e);\n }\n _super.prototype.show.call(this);\n this.popupCreation('date', e);\n }\n }\n };\n DateTimePicker.prototype.toggle = function (e) {\n if (this.isDatePopupOpen()) {\n _super.prototype.hide.call(this, e);\n this.show('time', null);\n }\n else if (this.isTimePopupOpen()) {\n this.hide(e);\n _super.prototype.show.call(this, null, e);\n this.popupCreation('date', null);\n }\n else {\n this.show(null, e);\n }\n };\n DateTimePicker.prototype.listCreation = function () {\n var dateObject;\n if (this.calendarMode === 'Gregorian') {\n this.cldrDateTimeFormat().replace(this.formatRegex, this.TimePopupFormat());\n if (this.dateFormatString === '') {\n this.dateFormatString = this.cldrDateTimeFormat();\n }\n dateObject = this.globalize.parseDate(this.inputElement.value, {\n format: this.dateFormatString, type: 'datetime'\n });\n }\n else {\n dateObject = this.globalize.parseDate(this.inputElement.value, {\n format: this.cldrDateTimeFormat(), type: 'datetime', calendar: 'islamic'\n });\n }\n var value = isNullOrUndefined(this.value) ? this.inputElement.value !== '' ?\n dateObject : new Date() : this.value;\n this.valueWithMinutes = value;\n this.listWrapper = createElement('div', { className: CONTENT, attrs: { 'tabindex': '0' } });\n var min = this.startTime(value);\n var max = this.endTime(value);\n var listDetails = TimePickerBase.createListItems(this.createElement, min, max, this.globalize, this.cldrTimeFormat(), this.step);\n this.timeCollections = listDetails.collection;\n this.listTag = listDetails.list;\n attributes(this.listTag, { 'role': 'listbox', 'aria-hidden': 'false', 'id': this.element.id + '_options' });\n append([listDetails.list], this.listWrapper);\n this.wireTimeListEvents();\n var rippleModel = { duration: 300, selector: '.' + LISTCLASS };\n this.rippleFn = rippleEffect(this.listWrapper, rippleModel);\n this.liCollections = this.listWrapper.querySelectorAll('.' + LISTCLASS);\n };\n DateTimePicker.prototype.popupCreation = function (type, e) {\n if (Browser.isDevice) {\n this.element.setAttribute('readonly', 'readonly');\n }\n if (type === 'date') {\n if (!this.readonly && this.popupWrapper) {\n addClass([this.popupWrapper], DATETIMEPOPUPWRAPPER);\n attributes(this.popupWrapper, { 'id': this.element.id + '_options' });\n }\n }\n else {\n if (!this.readonly) {\n this.dateTimeWrapper = createElement('div', {\n className: ROOT + ' ' + POPUP,\n attrs: { 'id': this.element.id + '_timepopup', 'style': 'visibility:hidden ; display:block' }\n });\n if (!isNullOrUndefined(this.cssClass)) {\n this.dateTimeWrapper.className += ' ' + this.cssClass;\n }\n if (!isNullOrUndefined(this.step) && this.step > 0) {\n this.listCreation();\n append([this.listWrapper], this.dateTimeWrapper);\n }\n document.body.appendChild(this.dateTimeWrapper);\n this.addTimeSelection();\n this.renderPopup();\n this.setTimeScrollPosition();\n this.openPopup(e);\n if (!Browser.isDevice || (Browser.isDevice && !this.fullScreenMode)) {\n this.popupObject.refreshPosition(this.inputElement);\n }\n if (Browser.isDevice && this.fullScreenMode) {\n this.dateTimeWrapper.style.left = '0px';\n }\n }\n }\n };\n DateTimePicker.prototype.openPopup = function (e) {\n var _this = this;\n this.preventArgs = {\n cancel: false,\n popup: this.popupObject,\n event: e || null\n };\n var eventArgs = this.preventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.preventArgs = eventArgs;\n if (!_this.preventArgs.cancel && !_this.readonly) {\n var openAnimation = {\n name: 'FadeIn',\n duration: ANIMATIONDURATION\n };\n if (_this.zIndex === 1000) {\n _this.popupObject.show(new Animation(openAnimation), _this.element);\n }\n else {\n _this.popupObject.show(new Animation(openAnimation), null);\n }\n addClass([_this.inputWrapper.container], [ICONANIMATION]);\n attributes(_this.inputElement, { 'aria-expanded': 'true' });\n attributes(_this.inputElement, { 'aria-owns': _this.inputElement.id + '_options' });\n attributes(_this.inputElement, { 'aria-controls': _this.inputElement.id });\n EventHandler.add(document, 'mousedown touchstart', _this.documentClickHandler, _this);\n }\n });\n };\n DateTimePicker.prototype.documentClickHandler = function (event) {\n var target = event.target;\n if ((!isNullOrUndefined(this.popupObject) && (this.inputWrapper.container.contains(target) && event.type !== 'mousedown' ||\n (this.popupObject.element && this.popupObject.element.contains(target)))) && event.type !== 'touchstart') {\n event.preventDefault();\n }\n if (!(closest(target, '[id=\"' + (this.popupObject && this.popupObject.element.id + '\"]'))) && target !== this.inputElement\n && target !== this.timeIcon && !isNullOrUndefined(this.inputWrapper) && target !== this.inputWrapper.container && !target.classList.contains('e-dlg-overlay')) {\n if (this.isTimePopupOpen()) {\n this.hide(event);\n this.focusOut();\n }\n }\n else if (target !== this.inputElement) {\n if (!Browser.isDevice) {\n this.isPreventBlur = ((document.activeElement === this.inputElement) && (Browser.isIE || Browser.info.name === 'edge')\n && target === this.popupObject.element);\n }\n }\n };\n DateTimePicker.prototype.isTimePopupOpen = function () {\n return (this.dateTimeWrapper && this.dateTimeWrapper.classList.contains('' + ROOT)) ? true : false;\n };\n DateTimePicker.prototype.isDatePopupOpen = function () {\n return (this.popupWrapper && this.popupWrapper.classList.contains('' + DATETIMEPOPUPWRAPPER)) ? true : false;\n };\n DateTimePicker.prototype.renderPopup = function () {\n var _this = this;\n this.containerStyle = this.inputWrapper.container.getBoundingClientRect();\n if (Browser.isDevice) {\n this.timeModal = createElement('div');\n this.timeModal.className = '' + ROOT + ' e-time-modal';\n document.body.className += ' ' + OVERFLOW;\n this.timeModal.style.display = 'block';\n document.body.appendChild(this.timeModal);\n }\n if (Browser.isDevice) {\n this.modelWrapper = createElement('div', { className: 'e-datetime-mob-popup-wrap' });\n this.modelWrapper.appendChild(this.dateTimeWrapper);\n var dlgOverlay = createElement('div', { className: 'e-dlg-overlay' });\n dlgOverlay.style.zIndex = (this.zIndex - 1).toString();\n this.modelWrapper.appendChild(dlgOverlay);\n document.body.appendChild(this.modelWrapper);\n }\n var offset = 4;\n this.popupObject = new Popup(this.dateTimeWrapper, {\n width: this.setPopupWidth(),\n zIndex: this.zIndex,\n targetType: 'container',\n collision: Browser.isDevice ? { X: 'fit', Y: 'fit' } : { X: 'flip', Y: 'flip' },\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : { X: 'left', Y: 'bottom' },\n enableRtl: this.enableRtl,\n offsetY: offset,\n open: function () {\n _this.dateTimeWrapper.style.visibility = 'visible';\n addClass([_this.timeIcon], ACTIVE);\n if (!Browser.isDevice) {\n _this.timekeyConfigure = extend(_this.timekeyConfigure, _this.keyConfigs);\n _this.inputEvent = new KeyboardEvents(_this.inputWrapper.container, {\n keyAction: _this.timeKeyActionHandle.bind(_this),\n keyConfigs: _this.timekeyConfigure,\n eventName: 'keydown'\n });\n }\n }, close: function () {\n removeClass([_this.timeIcon], ACTIVE);\n _this.unWireTimeListEvents();\n _this.inputElement.removeAttribute('aria-activedescendant');\n remove(_this.popupObject.element);\n _this.popupObject.destroy();\n _this.dateTimeWrapper.innerHTML = '';\n if (_this.modelWrapper) {\n remove(_this.modelWrapper);\n }\n _this.listWrapper = _this.dateTimeWrapper = undefined;\n if (_this.inputEvent) {\n _this.inputEvent.destroy();\n }\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n if (Browser.isDevice && this.fullScreenMode) {\n this.popupObject.element.style.maxHeight = '100%';\n this.popupObject.element.style.width = '100%';\n }\n else {\n this.popupObject.element.style.maxHeight = POPUPDIMENSION;\n }\n if (Browser.isDevice && this.fullScreenMode) {\n var modelHeader = this.createElement('div', { className: 'e-model-header' });\n var modelTitleSpan = this.createElement('span', { className: 'e-model-title' });\n modelTitleSpan.textContent = 'Select time';\n var modelCloseIcon = this.createElement('span', { className: 'e-popup-close' });\n EventHandler.add(modelCloseIcon, 'mousedown touchstart', this.dateTimeCloseHandler, this);\n modelHeader.appendChild(modelCloseIcon);\n modelHeader.appendChild(modelTitleSpan);\n this.dateTimeWrapper.insertBefore(modelHeader, this.dateTimeWrapper.firstElementChild);\n }\n };\n DateTimePicker.prototype.dateTimeCloseHandler = function (e) {\n this.hide();\n };\n DateTimePicker.prototype.setDimension = function (width) {\n if (typeof width === 'number') {\n width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n // eslint-disable-next-line no-self-assign\n width = width;\n }\n else {\n width = '100%';\n }\n return width;\n };\n DateTimePicker.prototype.setPopupWidth = function () {\n var width = this.setDimension(this.width);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.containerStyle.width * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n DateTimePicker.prototype.wireTimeListEvents = function () {\n EventHandler.add(this.listWrapper, 'click', this.onMouseClick, this);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n };\n DateTimePicker.prototype.unWireTimeListEvents = function () {\n if (this.listWrapper) {\n EventHandler.remove(this.listWrapper, 'click', this.onMouseClick);\n EventHandler.remove(document, 'mousedown touchstart', this.documentClickHandler);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n }\n };\n DateTimePicker.prototype.onMouseOver = function (event) {\n var currentLi = closest(event.target, '.' + LISTCLASS);\n this.setTimeHover(currentLi, HOVER);\n };\n DateTimePicker.prototype.onMouseLeave = function () {\n this.removeTimeHover(HOVER);\n };\n DateTimePicker.prototype.setTimeHover = function (li, className) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(className)) {\n this.removeTimeHover(className);\n addClass([li], className);\n }\n };\n DateTimePicker.prototype.getPopupHeight = function () {\n var height = parseInt(POPUPDIMENSION, 10);\n var popupHeight = this.dateTimeWrapper.getBoundingClientRect().height;\n if (Browser.isDevice && this.fullScreenMode) {\n return popupHeight;\n }\n else {\n return popupHeight > height ? height : popupHeight;\n }\n };\n DateTimePicker.prototype.changeEvent = function (e) {\n _super.prototype.changeEvent.call(this, e);\n if ((this.value && this.value.valueOf()) !== (this.previousDateTime && +this.previousDateTime.valueOf())) {\n this.valueWithMinutes = this.value;\n this.setInputValue('date');\n this.previousDateTime = this.value && new Date(+this.value);\n }\n };\n DateTimePicker.prototype.updateValue = function (e) {\n this.setInputValue('time');\n if (+this.previousDateTime !== +this.value) {\n this.changedArgs = {\n value: this.value, event: e || null,\n isInteracted: !isNullOrUndefined(e),\n element: this.element\n };\n this.addTimeSelection();\n this.trigger('change', this.changedArgs);\n this.previousDateTime = this.previousDate = this.value;\n }\n };\n DateTimePicker.prototype.setTimeScrollPosition = function () {\n var popupElement = this.selectedElement;\n if (!isNullOrUndefined(popupElement)) {\n this.findScrollTop(popupElement);\n }\n else if (this.dateTimeWrapper && this.checkDateValue(this.scrollTo)) {\n this.setScrollTo();\n }\n };\n DateTimePicker.prototype.findScrollTop = function (element) {\n var listHeight = this.getPopupHeight();\n var nextElement = element.nextElementSibling;\n var height = nextElement ? nextElement.offsetTop : element.offsetTop;\n var lineHeight = element.getBoundingClientRect().height;\n if ((height + element.offsetTop) > listHeight) {\n if (Browser.isDevice && this.fullScreenMode) {\n var listContent = this.dateTimeWrapper.querySelector('.e-content');\n listContent.scrollTop = nextElement ? (height - (listHeight / HALFPOSITION + lineHeight / HALFPOSITION)) : height;\n }\n else {\n this.dateTimeWrapper.scrollTop = nextElement ? (height - (listHeight / HALFPOSITION + lineHeight / HALFPOSITION)) : height;\n }\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n };\n DateTimePicker.prototype.setScrollTo = function () {\n var element;\n var items = this.dateTimeWrapper.querySelectorAll('.' + LISTCLASS);\n if (items.length >= 0) {\n this.scrollInvoked = true;\n var initialTime = this.timeCollections[0];\n var scrollTime = this.getDateObject(this.checkDateValue(this.scrollTo)).getTime();\n element = items[Math.round((scrollTime - initialTime) / (this.step * 60000))];\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n if (!isNullOrUndefined(element)) {\n this.findScrollTop(element);\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n };\n DateTimePicker.prototype.setInputValue = function (type) {\n if (type === 'date') {\n this.inputElement.value = this.previousElementValue = this.getFormattedValue(this.getFullDateTime());\n this.setProperties({ value: this.getFullDateTime() }, true);\n }\n else {\n var tempVal = this.getFormattedValue(new Date(this.timeCollections[this.activeIndex]));\n Input.setValue(tempVal, this.inputElement, this.floatLabelType, this.showClearButton);\n this.previousElementValue = this.inputElement.value;\n this.setProperties({ value: new Date(this.timeCollections[this.activeIndex]) }, true);\n if (this.enableMask) {\n this.createMask();\n }\n }\n this.updateIconState();\n };\n DateTimePicker.prototype.getFullDateTime = function () {\n var value = null;\n if (this.isDateObject(this.valueWithMinutes)) {\n value = this.combineDateTime(this.valueWithMinutes);\n }\n else {\n value = this.previousDate;\n }\n return this.validateMinMaxRange(value);\n };\n DateTimePicker.prototype.createMask = function () {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n };\n DateTimePicker.prototype.combineDateTime = function (value) {\n if (this.isDateObject(value)) {\n var day = this.previousDate.getDate();\n var month = this.previousDate.getMonth();\n var year = this.previousDate.getFullYear();\n var hour = value.getHours();\n var minutes = value.getMinutes();\n var seconds = value.getSeconds();\n return new Date(year, month, day, hour, minutes, seconds);\n }\n else {\n return this.previousDate;\n }\n };\n DateTimePicker.prototype.onMouseClick = function (event) {\n var target = event.target;\n var li = this.selectedElement = closest(target, '.' + LISTCLASS);\n if (li && li.classList.contains(LISTCLASS)) {\n this.timeValue = li.getAttribute('data-value');\n this.hide(event);\n }\n this.setSelection(li, event);\n };\n DateTimePicker.prototype.setSelection = function (li, event) {\n if (this.isValidLI(li) && !li.classList.contains(ACTIVE)) {\n this.selectedElement = li;\n var index = Array.prototype.slice.call(this.liCollections).indexOf(li);\n this.activeIndex = index;\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n addClass([this.selectedElement], ACTIVE);\n this.selectedElement.setAttribute('aria-selected', 'true');\n this.updateValue(event);\n }\n };\n DateTimePicker.prototype.setTimeActiveClass = function () {\n var collections = isNullOrUndefined(this.dateTimeWrapper) ? this.listWrapper : this.dateTimeWrapper;\n if (!isNullOrUndefined(collections)) {\n var items = collections.querySelectorAll('.' + LISTCLASS);\n if (items.length) {\n for (var i = 0; i < items.length; i++) {\n if (this.timeCollections[i] === +(this.valueWithMinutes)) {\n items[i].setAttribute('aria-selected', 'true');\n this.selectedElement = items[i];\n this.activeIndex = i;\n this.setTimeActiveDescendant();\n break;\n }\n }\n }\n }\n };\n DateTimePicker.prototype.setTimeActiveDescendant = function () {\n if (!isNullOrUndefined(this.selectedElement) && this.value) {\n attributes(this.inputElement, { 'aria-activedescendant': this.selectedElement.getAttribute('id') });\n }\n else {\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n };\n DateTimePicker.prototype.addTimeSelection = function () {\n this.selectedElement = null;\n this.removeTimeSelection();\n this.setTimeActiveClass();\n if (!isNullOrUndefined(this.selectedElement)) {\n addClass([this.selectedElement], ACTIVE);\n this.selectedElement.setAttribute('aria-selected', 'true');\n }\n };\n DateTimePicker.prototype.removeTimeSelection = function () {\n this.removeTimeHover(HOVER);\n if (!isNullOrUndefined(this.dateTimeWrapper)) {\n var items = this.dateTimeWrapper.querySelectorAll('.' + ACTIVE);\n if (items.length) {\n removeClass(items, ACTIVE);\n items[0].removeAttribute('aria-selected');\n }\n }\n };\n DateTimePicker.prototype.removeTimeHover = function (className) {\n var hoveredItem = this.getTimeHoverItem(className);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, className);\n }\n };\n DateTimePicker.prototype.getTimeHoverItem = function (className) {\n var collections = isNullOrUndefined(this.dateTimeWrapper) ? this.listWrapper : this.dateTimeWrapper;\n var hoveredItem;\n if (!isNullOrUndefined(collections)) {\n hoveredItem = collections.querySelectorAll('.' + className);\n }\n return hoveredItem;\n };\n DateTimePicker.prototype.isValidLI = function (li) {\n return (li && li.classList.contains(LISTCLASS) && !li.classList.contains(DISABLED));\n };\n DateTimePicker.prototype.calculateStartEnd = function (value, range, method) {\n var day = value.getDate();\n var month = value.getMonth();\n var year = value.getFullYear();\n var hours = value.getHours();\n var minutes = value.getMinutes();\n var seconds = value.getSeconds();\n var milliseconds = value.getMilliseconds();\n if (range) {\n if (method === 'starttime') {\n return new Date(year, month, day, 0, 0, 0);\n }\n else {\n return new Date(year, month, day, 23, 59, 59);\n }\n }\n else {\n return new Date(year, month, day, hours, minutes, seconds, milliseconds);\n }\n };\n DateTimePicker.prototype.startTime = function (date) {\n var tempStartValue;\n var start;\n var tempMin = this.min;\n var value = date === null ? new Date() : date;\n if ((+value.getDate() === +tempMin.getDate() && +value.getMonth() === +tempMin.getMonth() &&\n +value.getFullYear() === +tempMin.getFullYear()) || ((+new Date(value.getFullYear(), value.getMonth(), value.getDate())) <=\n +new Date(tempMin.getFullYear(), tempMin.getMonth(), tempMin.getDate()))) {\n start = false;\n tempStartValue = this.min;\n }\n else if (+value < +this.max && +value > +this.min) {\n start = true;\n tempStartValue = value;\n }\n else if (+value >= +this.max) {\n start = true;\n tempStartValue = this.max;\n }\n return this.calculateStartEnd(tempStartValue, start, 'starttime');\n };\n DateTimePicker.prototype.TimePopupFormat = function () {\n var format = '';\n var formatCount = 0;\n var proxy = null || this;\n /**\n * Formats the value specifier.\n *\n * @param {string} formattext - The format text.\n * @returns {string} The formatted value specifier.\n */\n function formatValueSpecifier(formattext) {\n switch (formattext) {\n case 'd':\n case 'dd':\n case 'ddd':\n case 'dddd':\n case 'M':\n case 'MM':\n case 'MMM':\n case 'MMMM':\n case 'y':\n case 'yy':\n case 'yyy':\n case 'yyyy':\n if (format === '') {\n format = format + formattext;\n }\n else {\n format = format + '/' + formattext;\n }\n formatCount = formatCount + 1;\n break;\n }\n if (formatCount > 2) {\n proxy.dateFormatString = format;\n }\n return format;\n }\n return formatValueSpecifier;\n };\n DateTimePicker.prototype.endTime = function (date) {\n var tempEndValue;\n var end;\n var tempMax = this.max;\n var value = date === null ? new Date() : date;\n if ((+value.getDate() === +tempMax.getDate() && +value.getMonth() === +tempMax.getMonth() &&\n +value.getFullYear() === +tempMax.getFullYear()) || (+new Date(value.getUTCFullYear(), value.getMonth(), value.getDate()) >=\n +new Date(tempMax.getFullYear(), tempMax.getMonth(), tempMax.getDate()))) {\n end = false;\n tempEndValue = this.max;\n }\n else if (+value < +this.max && +value > +this.min) {\n end = true;\n tempEndValue = value;\n }\n else if (+value <= +this.min) {\n end = true;\n tempEndValue = this.min;\n }\n return this.calculateStartEnd(tempEndValue, end, 'endtime');\n };\n DateTimePicker.prototype.hide = function (e) {\n var _this = this;\n if (this.popupObj || this.dateTimeWrapper) {\n this.preventArgs = {\n cancel: false,\n popup: this.popupObj || this.popupObject,\n event: e || null\n };\n var eventArgs = this.preventArgs;\n if (isNullOrUndefined(this.popupObj)) {\n this.trigger('close', eventArgs, function (eventArgs) {\n _this.dateTimeCloseEventCallback(e, eventArgs);\n });\n }\n else {\n this.dateTimeCloseEventCallback(e, eventArgs);\n }\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n }\n };\n DateTimePicker.prototype.dateTimeCloseEventCallback = function (e, eventArgs) {\n this.preventArgs = eventArgs;\n if (!this.preventArgs.cancel) {\n if (this.isDatePopupOpen()) {\n _super.prototype.hide.call(this, e);\n }\n else if (this.isTimePopupOpen()) {\n this.closePopup(e);\n removeClass([document.body], OVERFLOW);\n if (Browser.isDevice && this.timeModal) {\n this.timeModal.style.display = 'none';\n this.timeModal.outerHTML = '';\n this.timeModal = null;\n }\n this.setTimeActiveDescendant();\n }\n }\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DateTimePicker.prototype.closePopup = function (e) {\n if (this.isTimePopupOpen() && this.popupObject) {\n var animModel = {\n name: 'FadeOut',\n duration: ANIMATIONDURATION,\n delay: 0\n };\n this.popupObject.hide(new Animation(animModel));\n this.inputWrapper.container.classList.remove(ICONANIMATION);\n attributes(this.inputElement, { 'aria-expanded': 'false' });\n this.inputElement.removeAttribute('aria-owns');\n this.inputElement.removeAttribute('aria-controls');\n EventHandler.remove(document, 'mousedown touchstart', this.documentClickHandler);\n }\n };\n DateTimePicker.prototype.preRender = function () {\n this.checkFormat();\n this.dateTimeFormat = this.cldrDateTimeFormat();\n _super.prototype.preRender.call(this);\n removeClass([this.inputElementCopy], [ROOT]);\n };\n DateTimePicker.prototype.getProperty = function (date, val) {\n if (val === 'min') {\n this.setProperties({ min: this.validateValue(date.min) }, true);\n }\n else {\n this.setProperties({ max: this.validateValue(date.max) }, true);\n }\n };\n DateTimePicker.prototype.checkAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['style', 'name', 'step', 'disabled', 'readonly', 'value', 'min', 'max', 'placeholder', 'type'];\n var value;\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'name':\n this.inputElement.setAttribute('name', this.inputElement.getAttribute(prop));\n break;\n case 'step':\n this.step = parseInt(this.inputElement.getAttribute(prop), 10);\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' ||\n this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !isDynamic);\n }\n break;\n case 'min':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['min'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ min: value }, !isDynamic);\n }\n }\n break;\n case 'disabled':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === 'true' ||\n this.inputElement.getAttribute(prop) === '' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['value'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ value: value }, !isDynamic);\n }\n }\n break;\n case 'max':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['max'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ max: value }, !isDynamic);\n }\n }\n break;\n }\n }\n }\n };\n DateTimePicker.prototype.requiredModules = function () {\n var modules = [];\n if (this.calendarMode === 'Islamic') {\n modules.push({ args: [this], member: 'islamic', name: 'Islamic' });\n }\n if (this.enableMask) {\n modules.push(this.maskedDateModule());\n }\n return modules;\n };\n DateTimePicker.prototype.maskedDateModule = function () {\n var modules = { args: [this], member: 'MaskedDateTime' };\n return modules;\n };\n DateTimePicker.prototype.getTimeActiveElement = function () {\n if (!isNullOrUndefined(this.dateTimeWrapper)) {\n return this.dateTimeWrapper.querySelectorAll('.' + ACTIVE);\n }\n else {\n return null;\n }\n };\n DateTimePicker.prototype.createDateObj = function (val) {\n return val instanceof Date ? val : null;\n };\n DateTimePicker.prototype.getDateObject = function (text) {\n if (!this.isNullOrEmpty(text)) {\n var dateValue = this.createDateObj(text);\n var value = this.valueWithMinutes;\n var status_1 = !isNullOrUndefined(value);\n if (this.checkDateValue(dateValue)) {\n var date = status_1 ? value.getDate() : DAY;\n var month = status_1 ? value.getMonth() : MONTH;\n var year = status_1 ? value.getFullYear() : YEAR;\n var hour = status_1 ? value.getHours() : HOUR;\n var minute = status_1 ? value.getMinutes() : MINUTE;\n var second = status_1 ? value.getSeconds() : SECOND;\n var millisecond = status_1 ? value.getMilliseconds() : MILLISECOND;\n if (!this.scrollInvoked) {\n return new Date(year, month, date, hour, minute, second, millisecond);\n }\n else {\n this.scrollInvoked = false;\n return new Date(year, month, date, dateValue.getHours(), dateValue.getMinutes(), dateValue.getSeconds(), dateValue.getMilliseconds());\n }\n }\n }\n return null;\n };\n DateTimePicker.prototype.findNextTimeElement = function (event) {\n var textVal = (this.inputElement).value;\n var value = isNullOrUndefined(this.valueWithMinutes) ? this.createDateObj(textVal) :\n this.getDateObject(this.valueWithMinutes);\n var dateTimeVal = null;\n var listCount = this.liCollections.length;\n if (!isNullOrUndefined(this.activeIndex) || !isNullOrUndefined(this.checkDateValue(value))) {\n if (event.action === 'home') {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[0])));\n this.activeIndex = 0;\n }\n else if (event.action === 'end') {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[this.timeCollections.length - 1])));\n this.activeIndex = this.timeCollections.length - 1;\n }\n else {\n if (event.action === 'down') {\n for (var i = 0; i < listCount; i++) {\n if (+value < this.timeCollections[i]) {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[i])));\n this.activeIndex = i;\n break;\n }\n }\n }\n else {\n for (var i = listCount - 1; i >= 0; i--) {\n if (+value > this.timeCollections[i]) {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[i])));\n this.activeIndex = i;\n break;\n }\n }\n }\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.timeElementValue(isNullOrUndefined(dateTimeVal) ? null : new Date(dateTimeVal));\n }\n };\n DateTimePicker.prototype.setTimeValue = function (date, value) {\n var dateString;\n var time;\n var val = this.validateMinMaxRange(value);\n var newval = this.createDateObj(val);\n if (this.getFormattedValue(newval) !== (!isNullOrUndefined(this.value) ? this.getFormattedValue(this.value) : null)) {\n this.valueWithMinutes = isNullOrUndefined(newval) ? null : newval;\n time = new Date(+this.valueWithMinutes);\n }\n else {\n if (this.strictMode) {\n //for strict mode case, when value not present within a range. Reset the nearest range value.\n date = newval;\n }\n this.valueWithMinutes = this.checkDateValue(date);\n time = new Date(+this.valueWithMinutes);\n }\n if (this.calendarMode === 'Gregorian') {\n dateString = this.globalize.formatDate(time, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.cldrDateTimeFormat(),\n type: 'dateTime', skeleton: 'yMd'\n });\n }\n else {\n dateString = this.globalize.formatDate(time, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.cldrDateTimeFormat(),\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n if (!this.strictMode && isNullOrUndefined(time)) {\n Input.setValue(dateString, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(dateString, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n return time;\n };\n DateTimePicker.prototype.timeElementValue = function (value) {\n if (!isNullOrUndefined(this.checkDateValue(value)) && !this.isNullOrEmpty(value)) {\n var date = value instanceof Date ? value : this.getDateObject(value);\n return this.setTimeValue(date, value);\n }\n return null;\n };\n DateTimePicker.prototype.timeKeyHandler = function (event) {\n if (isNullOrUndefined(this.step) || this.step <= 0) {\n return;\n }\n var listCount = this.timeCollections.length;\n if (isNullOrUndefined(this.getTimeActiveElement()) || this.getTimeActiveElement().length === 0) {\n if (this.liCollections.length > 0) {\n if (isNullOrUndefined(this.value) && isNullOrUndefined(this.activeIndex)) {\n this.activeIndex = 0;\n this.selectedElement = this.liCollections[0];\n this.timeElementValue(new Date(this.timeCollections[0]));\n }\n else {\n this.findNextTimeElement(event);\n }\n }\n }\n else {\n var nextItemValue = void 0;\n if ((event.keyCode >= 37) && (event.keyCode <= 40)) {\n var index = (event.keyCode === 40 || event.keyCode === 39) ? ++this.activeIndex : --this.activeIndex;\n this.activeIndex = index = this.activeIndex === (listCount) ? 0 : this.activeIndex;\n this.activeIndex = index = this.activeIndex < 0 ? (listCount - 1) : this.activeIndex;\n nextItemValue = isNullOrUndefined(this.timeCollections[index]) ?\n this.timeCollections[0] : this.timeCollections[index];\n }\n else if (event.action === 'home') {\n this.activeIndex = 0;\n nextItemValue = this.timeCollections[0];\n }\n else if (event.action === 'end') {\n this.activeIndex = listCount - 1;\n nextItemValue = this.timeCollections[listCount - 1];\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.timeElementValue(new Date(nextItemValue));\n }\n this.isNavigate = true;\n this.setTimeHover(this.selectedElement, NAVIGATION);\n this.setTimeActiveDescendant();\n if (this.isTimePopupOpen() && this.selectedElement !== null && (!event || event.type !== 'click')) {\n this.setTimeScrollPosition();\n }\n };\n DateTimePicker.prototype.timeKeyActionHandle = function (event) {\n if (this.enabled) {\n if (event.action !== 'right' && event.action !== 'left' && event.action !== 'tab') {\n event.preventDefault();\n }\n switch (event.action) {\n case 'up':\n case 'down':\n case 'home':\n case 'end':\n this.timeKeyHandler(event);\n break;\n case 'enter':\n if (this.isNavigate) {\n this.selectedElement = this.liCollections[this.activeIndex];\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n this.setInputValue('time');\n if (+this.previousDateTime !== +this.value) {\n this.changedArgs.value = this.value;\n this.addTimeSelection();\n this.previousDateTime = this.value;\n }\n }\n else {\n this.updateValue(event);\n }\n this.hide(event);\n addClass([this.inputWrapper.container], INPUTFOCUS);\n this.isNavigate = false;\n event.stopPropagation();\n break;\n case 'escape':\n this.hide(event);\n break;\n default:\n this.isNavigate = false;\n break;\n }\n }\n };\n DateTimePicker.prototype.inputKeyAction = function (event) {\n switch (event.action) {\n case 'altDownArrow':\n this.strictModeUpdate();\n this.updateInput();\n this.toggle(event);\n break;\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {DateTimePickerModel} newProp - Returns the dynamic property value of the component.\n * @param {DateTimePickerModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n\n */\n DateTimePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n var openPopup = ['blur', 'change', 'cleared', 'close', 'created', 'destroyed', 'focus', 'navigated', 'open', 'renderDayCell'];\n if (openPopup.indexOf(prop) > 0 && this.isReact) {\n this.isDynamicValueChanged = true;\n }\n switch (prop) {\n case 'value':\n this.isDynamicValueChanged = true;\n this.invalidValueString = null;\n this.checkInvalidValue(newProp.value);\n newProp.value = this.value;\n newProp.value = this.validateValue(newProp.value);\n if (this.enableMask) {\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(this.getFormattedValue(newProp.value), this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.valueWithMinutes = newProp.value;\n this.setProperties({ value: newProp.value }, true);\n if (this.popupObj) {\n this.popupUpdate();\n }\n this.previousDateTime = new Date(this.inputElement.value);\n this.updateInput();\n this.changeTrigger(null);\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n if (this.enableMask && this.value) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'min':\n case 'max':\n this.getProperty(newProp, prop);\n this.updateInput();\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n break;\n case 'cssClass':\n if (!isNullOrUndefined(oldProp.cssClass)) {\n oldProp.cssClass = (oldProp.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newProp.cssClass)) {\n newProp.cssClass = (newProp.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newProp.cssClass, [this.inputWrapper.container], oldProp.cssClass);\n if (this.dateTimeWrapper) {\n Input.setCssClass(newProp.cssClass, [this.dateTimeWrapper], oldProp.cssClass);\n }\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n if (this.dateTimeOptions && this.dateTimeOptions.placeholder == null) {\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.l10n.getConstant('placeholder'), this.inputElement);\n }\n this.dateTimeFormat = this.cldrDateTimeFormat();\n _super.prototype.updateInput.call(this);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkAttributes(true);\n break;\n case 'format':\n this.setProperties({ format: newProp.format }, true);\n this.checkFormat();\n this.dateTimeFormat = this.formatString;\n this.setValue();\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n if (!this.value) {\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n }\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputElement);\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.inputElement);\n if (this.enabled) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.tabIndex = -1;\n }\n break;\n case 'strictMode':\n this.invalidValueString = null;\n this.updateInput();\n break;\n case 'width':\n this.setWidth(newProp.width);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-date-time-icon');\n }\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-date-time-icon');\n }\n break;\n case 'scrollTo':\n if (this.checkDateValue(new Date(this.checkValue(newProp.scrollTo)))) {\n if (this.dateTimeWrapper) {\n this.setScrollTo();\n }\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkValue(newProp.scrollTo))) }, true);\n }\n else {\n this.setProperties({ scrollTo: null }, true);\n }\n break;\n case 'enableMask':\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n if (this.inputElement.value === this.maskedDateValue) {\n this.maskedDateValue = '';\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n }\n break;\n default:\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n break;\n }\n if (!this.isDynamicValueChanged) {\n this.hide(null);\n }\n this.isDynamicValueChanged = false;\n }\n };\n /**\n * To get component name.\n *\n * @returns {string} Returns the component name.\n * @private\n */\n DateTimePicker.prototype.getModuleName = function () {\n return 'datetimepicker';\n };\n DateTimePicker.prototype.restoreValue = function () {\n this.previousDateTime = this.previousDate;\n this.currentDate = this.value ? this.value : new Date();\n this.valueWithMinutes = this.value;\n this.previousDate = this.value;\n this.previousElementValue = this.previousElementValue = (isNullOrUndefined(this.inputValueCopy)) ? '' :\n this.getFormattedValue(this.inputValueCopy);\n };\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"timeFormat\", void 0);\n __decorate([\n Property(30)\n ], DateTimePicker.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"scrollTo\", void 0);\n __decorate([\n Property(1000)\n ], DateTimePicker.prototype, \"zIndex\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property({})\n ], DateTimePicker.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(true)\n ], DateTimePicker.prototype, \"allowEdit\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"isMultiSelection\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"values\", void 0);\n __decorate([\n Property(true)\n ], DateTimePicker.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"placeholder\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"strictMode\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"fullScreenMode\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Property(new Date(1900, 0, 1))\n ], DateTimePicker.prototype, \"min\", void 0);\n __decorate([\n Property(new Date(2099, 11, 31))\n ], DateTimePicker.prototype, \"max\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"firstDayOfWeek\", void 0);\n __decorate([\n Property('Gregorian')\n ], DateTimePicker.prototype, \"calendarMode\", void 0);\n __decorate([\n Property('Month')\n ], DateTimePicker.prototype, \"start\", void 0);\n __decorate([\n Property('Month')\n ], DateTimePicker.prototype, \"depth\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"weekNumber\", void 0);\n __decorate([\n Property(true)\n ], DateTimePicker.prototype, \"showTodayButton\", void 0);\n __decorate([\n Property('Short')\n ], DateTimePicker.prototype, \"dayHeaderFormat\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"openOnFocus\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"enableMask\", void 0);\n __decorate([\n Property({ day: 'day', month: 'month', year: 'year', hour: 'hour', minute: 'minute', second: 'second', dayOfTheWeek: 'day of the week' })\n ], DateTimePicker.prototype, \"maskPlaceholder\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"cleared\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"destroyed\", void 0);\n DateTimePicker = __decorate([\n NotifyPropertyChanges\n ], DateTimePicker);\n return DateTimePicker;\n}(DatePicker));\nexport { DateTimePicker };\n","import { DatePicker, DateTimePicker } from '@syncfusion/ej2-calendars';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { getCustomDateFormat } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * `datefilterui` render date column.\n *\n * @hidden\n */\nvar DateFilterUI = /** @class */ (function () {\n function DateFilterUI(parent, serviceLocator, filterSettings) {\n this.dpOpen = this.openPopup.bind(this);\n this.parent = parent;\n this.locator = serviceLocator;\n this.fltrSettings = filterSettings;\n if (this.parent) {\n this.parent.on(events.filterMenuClose, this.destroy, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n }\n DateFilterUI.prototype.create = function (args) {\n var format = getCustomDateFormat(args.column.format, args.column.type);\n this.dialogObj = args.dialogObj;\n this.inputElem = this.parent.createElement('input', { className: 'e-flmenu-input', id: 'dateui-' + args.column.uid });\n args.target.appendChild(this.inputElem);\n if (args.column.type === 'date' || args.column.type === 'dateonly') {\n this.datePickerObj = new DatePicker(extend({\n format: format,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n placeholder: args.localizeText.getConstant('ChooseDate'),\n width: '100%',\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl\n }, args.column.filter.params));\n }\n else if (args.column.type === 'datetime') {\n this.datePickerObj = new DateTimePicker(extend({\n format: format,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n placeholder: args.localizeText.getConstant('ChooseDate'),\n width: '100%',\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl\n }, args.column.filter.params));\n }\n this.datePickerObj.addEventListener(literals['open'], this.dpOpen);\n this.datePickerObj.appendTo(this.inputElem);\n };\n DateFilterUI.prototype.write = function (args) {\n var dateuiObj = document.querySelector('#dateui-' + args.column.uid).ej2_instances[0];\n dateuiObj.value = !isNullOrUndefined(args.filteredValue) ? new Date(args.filteredValue) : null;\n };\n DateFilterUI.prototype.read = function (element, column, filterOptr, filterObj) {\n var dateuiObj = document.querySelector('#dateui-' + column.uid).ej2_instances[0];\n var filterValue = dateuiObj.value;\n filterValue = isNullOrUndefined(filterValue) ? null : filterValue;\n filterObj.filterByColumn(column.field, filterOptr, filterValue, 'and', true);\n };\n DateFilterUI.prototype.openPopup = function (args) {\n args.popup.element.style.zIndex = (this.dialogObj.zIndex + 1).toString();\n };\n DateFilterUI.prototype.destroy = function () {\n this.parent.off(events.filterMenuClose, this.destroy);\n this.parent.off(events.destroy, this.destroy);\n if (isNullOrUndefined(this.datePickerObj) || this.datePickerObj.isDestroyed) {\n return;\n }\n this.datePickerObj.removeEventListener(literals['open'], this.dpOpen);\n this.datePickerObj.destroy();\n };\n return DateFilterUI;\n}());\nexport { DateFilterUI };\n","import { isNullOrUndefined, getValue, remove } from '@syncfusion/ej2-base';\nimport { Browser } from '@syncfusion/ej2-base';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { FlMenuOptrUI } from './filter-menu-operator';\nimport { StringFilterUI } from './string-filter-ui';\nimport { NumberFilterUI } from './number-filter-ui';\nimport { BooleanFilterUI } from './boolean-filter-ui';\nimport { DateFilterUI } from './date-filter-ui';\nimport { getFilterMenuPostion, parentsUntil, appendChildren } from '../base/util';\nimport * as events from '../base/constant';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\n/**\n * `filter menu` render boolean column.\n *\n * @hidden\n */\nvar FilterMenuRenderer = /** @class */ (function () {\n function FilterMenuRenderer(parent, filterSettings, serviceLocator, customFltrOperators, fltrObj) {\n this.isDialogOpen = false;\n this.maxHeight = '350px';\n this.isMenuCheck = false;\n this.colTypes = {\n 'string': StringFilterUI, 'number': NumberFilterUI, 'date': DateFilterUI, 'dateonly': DateFilterUI, 'boolean': BooleanFilterUI, 'datetime': DateFilterUI\n };\n this.parent = parent;\n this.filterSettings = filterSettings;\n this.serviceLocator = serviceLocator;\n this.customFilterOperators = customFltrOperators;\n this.filterObj = fltrObj;\n this.flMuiObj = new FlMenuOptrUI(this.parent, this.customFilterOperators, this.serviceLocator);\n this.l10n = this.serviceLocator.getService('localization');\n this.menuFilterBase = new CheckBoxFilterBase(parent);\n }\n FilterMenuRenderer.prototype.clearCustomFilter = function (col) {\n this.clearBtnClick(col);\n };\n FilterMenuRenderer.prototype.applyCustomFilter = function (args) {\n this.filterBtnClick(args.col);\n };\n FilterMenuRenderer.prototype.openDialog = function (args) {\n this.options = args;\n this.col = this.parent.getColumnByField(args.field);\n if (isNullOrUndefined(this.col.filter) || (isNullOrUndefined(this.col.filter.type) || this.col.filter.type === 'Menu')) { ///\n this.renderDlgContent(args.target, this.col);\n }\n };\n FilterMenuRenderer.prototype.closeDialog = function (target) {\n var _this = this;\n if (!this.dlgObj) {\n return;\n }\n var elem = document.getElementById(this.dlgObj.element.id);\n if (this.dlgObj && !this.dlgObj.isDestroyed && elem) {\n var argument = { cancel: false, column: this.col, target: target, element: elem };\n this.parent.notify(events.filterMenuClose, argument);\n if (argument.cancel) {\n return;\n }\n this.isDialogOpen = false;\n if (this.isMenuCheck) {\n this.menuFilterBase.unWireEvents();\n this.parent.off(events.cBoxFltrComplete, this.actionComplete);\n this.isMenuCheck = false;\n }\n if ((this.parent.isReact || this.parent.isVue) && this.col.filterTemplate && this.col.filterTemplate instanceof Function) {\n this.parent.clearTemplate(['filterTemplate'], undefined, function () {\n _this.dlgObj.destroy();\n });\n }\n else {\n this.dlgObj.destroy();\n remove(elem);\n }\n }\n this.parent.notify(events.filterDialogClose, {});\n };\n FilterMenuRenderer.prototype.renderDlgContent = function (target, column) {\n var args = {\n requestType: events.filterBeforeOpen,\n columnName: column.field, columnType: column.type\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.trigger(events.actionBegin, args);\n var mainDiv = this.parent.createElement('div', { className: 'e-flmenu-maindiv', id: column.uid + '-flmenu' });\n this.dlgDiv = this.parent.createElement('div', { className: 'e-flmenu', id: column.uid + '-flmdlg' });\n this.dlgDiv.setAttribute('aria-label', this.l10n.getConstant('FilterMenuDialogARIA'));\n if (this.parent.enableAdaptiveUI) {\n var responsiveCnt = document.querySelector('.e-resfilter > .e-dlg-content > .e-mainfilterdiv');\n responsiveCnt.appendChild(this.dlgDiv);\n }\n else {\n this.parent.element.appendChild(this.dlgDiv);\n }\n this.dlgObj = new Dialog({\n showCloseIcon: false,\n closeOnEscape: false,\n locale: this.parent.locale,\n visible: false,\n enableRtl: this.parent.enableRtl,\n created: this.dialogCreated.bind(this, target, column),\n position: this.parent.element.classList.contains('e-device') ? { X: 'center', Y: 'center' } : { X: '', Y: '' },\n target: this.parent.element.classList.contains('e-device') ? document.body : this.parent.element,\n buttons: [{\n click: this.filterBtnClick.bind(this, column),\n buttonModel: {\n content: this.l10n.getConstant('FilterButton'), isPrimary: true,\n cssClass: this.parent.cssClass ? 'e-flmenu-okbtn' + ' ' + this.parent.cssClass : 'e-flmenu-okbtn'\n }\n },\n {\n click: this.clearBtnClick.bind(this, column),\n buttonModel: { content: this.l10n.getConstant('ClearButton'),\n cssClass: this.parent.cssClass ? 'e-flmenu-cancelbtn' + ' ' + this.parent.cssClass : 'e-flmenu-cancelbtn' }\n }],\n content: mainDiv,\n width: (!isNullOrUndefined(parentsUntil(target, 'e-bigger'))) || this.parent.element.classList.contains('e-device') ? 260 : 250,\n animationSettings: { effect: 'None' },\n cssClass: this.parent.cssClass ? 'e-filter-popup' + ' ' + this.parent.cssClass : 'e-filter-popup'\n });\n var isStringTemplate = 'isStringTemplate';\n this.dlgObj[\"\" + isStringTemplate] = true;\n this.renderResponsiveDialog();\n this.dlgObj.appendTo(this.dlgDiv);\n };\n FilterMenuRenderer.prototype.renderResponsiveDialog = function () {\n var gObj = this.parent;\n if (gObj.enableAdaptiveUI) {\n this.dlgObj.position = { X: '', Y: '' };\n this.dlgObj.target = document.querySelector('.e-resfilter > .e-dlg-content > .e-mainfilterdiv');\n this.dlgObj.width = '100%';\n this.dlgObj.isModal = false;\n this.dlgObj.buttons = [{}];\n }\n };\n FilterMenuRenderer.prototype.dialogCreated = function (target, column) {\n if (!Browser.isDevice && target) {\n getFilterMenuPostion(target, this.dlgObj);\n }\n this.currentDialogCreatedColumn = column;\n this.renderFilterUI(target, column);\n if (!(column.isForeignColumn() && !(!isNullOrUndefined(column.filter) && !isNullOrUndefined(column.filter.ui)\n && !isNullOrUndefined(column.filter.ui.create)))) {\n this.afterRenderFilterUI();\n }\n var isReactCompiler = this.parent.isReact && typeof (column.filterTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (!isNullOrUndefined(column.filterTemplate) && !(isReactCompiler || isReactChild)) {\n this.dlgDiv.querySelector('.e-flmenu-valuediv').firstElementChild.focus();\n this.dlgDiv.querySelector('.e-flmenu-valuediv').firstElementChild.classList.add('e-input-focus');\n }\n else if (!isNullOrUndefined(this.dlgDiv.querySelector('.e-flmenu-input'))) {\n this.dlgDiv.querySelector('.e-flmenu-input').focus();\n this.dlgDiv.querySelector('.e-flmenu-input').parentElement.classList.add('e-input-focus');\n }\n };\n /**\n * Function to notify filterDialogCreated and trigger actionComplete\n *\n * @returns {void}\n * @hidden\n */\n FilterMenuRenderer.prototype.afterRenderFilterUI = function () {\n var column = this.currentDialogCreatedColumn;\n if (column.showColumnMenu) {\n this.parent.notify(events.filterDialogCreated, {});\n }\n if (this.parent.enableAdaptiveUI) {\n this.dlgObj.element.style.left = '0px';\n this.dlgObj.element.style.maxHeight = 'none';\n }\n else {\n this.dlgObj.element.style.maxHeight = this.maxHeight;\n }\n this.dlgObj.show();\n var optrInput = this.dlgObj.element.querySelector('.e-flm_optrdiv').querySelector('input');\n var valInput = this.dlgObj.element.querySelector('.e-flmenu-valuediv').querySelector('input');\n if (optrInput.value === 'Empty' || optrInput.value === 'Not Empty' ||\n optrInput.value === 'Null' || optrInput.value === 'Not Null') {\n if (!isNullOrUndefined(valInput['ej2_instances'])) {\n valInput['ej2_instances'][0]['enabled'] = false;\n }\n else {\n valInput.setAttribute('disabled', 'true');\n }\n }\n else if (!isNullOrUndefined(valInput && valInput.getAttribute('disabled'))) {\n if (!isNullOrUndefined(valInput['ej2_instances'])) {\n valInput['ej2_instances'][0]['enabled'] = true;\n }\n else {\n valInput.removeAttribute('disabled');\n }\n }\n if (!column.filterTemplate) {\n this.writeMethod(column, this.dlgObj.element.querySelector('#' + column.uid + '-flmenu'));\n }\n var args = {\n requestType: events.filterAfterOpen,\n columnName: column.field, columnType: column.type\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.isDialogOpen = true;\n if (!this.isMenuCheck) {\n this.parent.trigger(events.actionComplete, args);\n }\n };\n FilterMenuRenderer.prototype.renderFilterUI = function (target, col) {\n var dlgConetntEle = this.dlgObj.element.querySelector('.e-flmenu-maindiv');\n this.parent.log('column_type_missing', { column: col });\n this.renderOperatorUI(dlgConetntEle, target, col);\n this.renderFlValueUI(dlgConetntEle, target, col);\n };\n FilterMenuRenderer.prototype.renderOperatorUI = function (dlgConetntEle, target, column) {\n this.flMuiObj.renderOperatorUI(dlgConetntEle, target, column, this.dlgObj, this.filterObj.menuOperator);\n };\n FilterMenuRenderer.prototype.renderFlValueUI = function (dlgConetntEle, target, column) {\n var valueDiv = this.parent.createElement('div', { className: 'e-flmenu-valuediv' });\n var fObj = this.filterObj;\n dlgConetntEle.appendChild(valueDiv);\n var instanceofFilterUI = new this.colTypes[column.type](this.parent, this.serviceLocator, this.parent.filterSettings);\n if (column.filterTemplate) {\n var fltrData = {};\n var valueInString = 'value';\n fltrData[column.field] = fltrData[\"\" + valueInString] = fObj.values[column.field];\n if (column.foreignKeyValue) {\n fltrData[column.foreignKeyValue] = fObj.values[column.field];\n fltrData[column.field] = undefined;\n }\n var col = 'column';\n fltrData[\"\" + col] = column;\n var isReactCompiler = this.parent.isReact && typeof (column.filterTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var tempID = this.parent.element.id + column.uid + 'filterTemplate';\n if (isReactCompiler || isReactChild) {\n column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID, null, null, valueDiv);\n this.parent.renderTemplates();\n }\n else {\n var compElement = column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID, null, null, null, this.parent.root);\n appendChildren(valueDiv, compElement);\n }\n if (this.isMenuCheck) {\n this.menuFilterBase.cBox = this.dlgObj.element.querySelector('.e-checkboxlist.e-fields');\n this.menuFilterBase.wireEvents();\n this.parent.on(events.cBoxFltrComplete, this.actionComplete, this);\n this.menuFilterBase.getAllData();\n }\n }\n else {\n if (!isNullOrUndefined(column.filter) && !isNullOrUndefined(column.filter.ui)\n && !isNullOrUndefined(column.filter.ui.create)) {\n var temp = column.filter.ui.create;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n temp({\n column: column, target: valueDiv,\n getOptrInstance: this.flMuiObj, dialogObj: this.dlgObj\n });\n }\n else {\n instanceofFilterUI.create({\n column: column, target: valueDiv,\n getOptrInstance: this.flMuiObj, localizeText: this.l10n, dialogObj: this.dlgObj\n });\n }\n }\n };\n FilterMenuRenderer.prototype.writeMethod = function (col, dlgContentEle) {\n var flValue;\n var target = dlgContentEle.querySelector('.e-flmenu-valinput');\n var instanceofFilterUI = new this.colTypes[col.type](this.parent, this.serviceLocator, this.parent.filterSettings);\n var columns = this.filterSettings.columns;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n if (col.uid === column.uid) {\n flValue = column.value;\n }\n }\n if (!isNullOrUndefined(col.filter) && !isNullOrUndefined(col.filter.ui)\n && !isNullOrUndefined(col.filter.ui.write)) {\n var temp = col.filter.ui.write;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n temp({ column: col, target: target, parent: this.parent, filteredValue: flValue });\n }\n else {\n instanceofFilterUI.write({ column: col, target: target, parent: this.parent, filteredValue: flValue });\n }\n };\n FilterMenuRenderer.prototype.filterBtnClick = function (col) {\n var flValue;\n var targ = this.dlgObj.element.querySelector('.e-flmenu-valuediv input');\n var flOptrValue = this.flMuiObj.getFlOperator();\n var instanceofFilterUI = new this.colTypes[col.type](this.parent, this.serviceLocator, this.parent.filterSettings);\n if (col.filterTemplate) {\n var element = this.dlgDiv.querySelector('.e-flmenu-valuediv');\n var fltrValue = void 0;\n if (element.children[0].value) {\n fltrValue = element.children[0].value;\n }\n else {\n if (!isNullOrUndefined(element.children[0].ej2_instances)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fltrValue = (this.parent.isAngular ? element.children[0] :\n element.querySelector('input')).ej2_instances[0].value;\n }\n else {\n var eControl = element.querySelector('.e-control');\n if (!isNullOrUndefined(eControl)) {\n fltrValue = col.type === 'boolean' ? eControl.checked :\n !isNullOrUndefined(eControl.ej2_instances) ?\n eControl.ej2_instances[0].value :\n eControl.value;\n }\n }\n }\n this.filterObj.filterByColumn(col.field, flOptrValue, fltrValue);\n }\n else {\n if (!isNullOrUndefined(col.filter) &&\n !isNullOrUndefined(col.filter.ui) && !isNullOrUndefined(col.filter.ui.read)) {\n var temp = col.filter.ui.read;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n // eslint-disable-next-line\n flValue = temp({ element: targ, column: col, operator: flOptrValue, fltrObj: this.filterObj });\n }\n else {\n instanceofFilterUI.read(targ, col, flOptrValue, this.filterObj);\n }\n }\n this.closeDialog();\n if (this.parent.showColumnMenu) {\n this.parent.notify(events.afterFilterColumnMenuClose, {});\n }\n };\n FilterMenuRenderer.prototype.closeResponsiveDialog = function () {\n this.closeDialog();\n };\n FilterMenuRenderer.prototype.clearBtnClick = function (column) {\n this.filterObj.removeFilteredColsByField(column.field);\n this.closeDialog();\n };\n FilterMenuRenderer.prototype.destroy = function () {\n this.closeDialog();\n };\n /**\n * @returns {FilterUI} returns the filterUI\n * @hidden\n */\n FilterMenuRenderer.prototype.getFilterUIInfo = function () {\n return { field: this.col.field, operator: this.flMuiObj.getFlOperator() };\n };\n FilterMenuRenderer.prototype.renderCheckBoxMenu = function () {\n this.isMenuCheck = true;\n this.menuFilterBase.updateModel(this.options);\n this.menuFilterBase.getAndSetChkElem(this.options);\n this.dlgObj.buttons = [{\n click: this.menuFilterBase.btnClick.bind(this.menuFilterBase),\n buttonModel: {\n content: this.menuFilterBase.getLocalizedLabel('FilterButton'),\n cssClass: 'e-primary', isPrimary: true\n }\n },\n {\n click: this.menuFilterBase.btnClick.bind(this.menuFilterBase),\n buttonModel: { cssClass: 'e-flat', content: this.menuFilterBase.getLocalizedLabel('ClearButton') }\n }];\n this.menuFilterBase.dialogObj = this.dlgObj;\n this.menuFilterBase.dlg = this.dlgObj.element;\n this.menuFilterBase.dlg.classList.add('e-menucheckbox');\n this.menuFilterBase.dlg.classList.remove('e-checkboxfilter');\n this.maxHeight = '800px';\n return this.menuFilterBase.sBox.innerHTML;\n };\n FilterMenuRenderer.prototype.actionComplete = function (args) {\n if (this.isMenuCheck) {\n this.parent.trigger(events.actionComplete, args);\n }\n };\n return FilterMenuRenderer;\n}());\nexport { FilterMenuRenderer };\n","import * as events from '../base/constant';\nimport { isActionPrevent } from '../base/util';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\n/**\n * @hidden\n * `CheckBoxFilter` module is used to handle filtering action.\n */\nvar CheckBoxFilter = /** @class */ (function () {\n /**\n * Constructor for checkbox filtering module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {FilterSettings} filterSettings - specifies the filtersettings\n * @param {ServiceLocator} serviceLocator - specifies the ServiceLocator\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n function CheckBoxFilter(parent, filterSettings, serviceLocator) {\n this.parent = parent;\n this.isresetFocus = true;\n this.checkBoxBase = new CheckBoxFilterBase(parent);\n this.addEventListener();\n }\n /**\n * To destroy the check box filter.\n *\n * @returns {void}\n * @hidden\n */\n CheckBoxFilter.prototype.destroy = function () {\n this.removeEventListener();\n this.checkBoxBase.closeDialog();\n };\n CheckBoxFilter.prototype.openDialog = function (options) {\n this.checkBoxBase.openDialog(options);\n this.parent.log('column_type_missing', { column: options.column });\n };\n CheckBoxFilter.prototype.closeDialog = function () {\n this.destroy();\n if (this.isresetFocus) {\n this.parent.notify(events.restoreFocus, {});\n }\n };\n CheckBoxFilter.prototype.closeResponsiveDialog = function () {\n this.checkBoxBase.closeDialog();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name\n * @private\n */\n CheckBoxFilter.prototype.getModuleName = function () {\n return 'checkboxFilter';\n };\n CheckBoxFilter.prototype.actionBegin = function (args) {\n this.parent.trigger(events.actionBegin, args);\n };\n CheckBoxFilter.prototype.actionComplete = function (args) {\n this.parent.trigger(events.actionComplete, args);\n };\n CheckBoxFilter.prototype.actionPrevent = function (args) {\n if (isActionPrevent(this.parent)) {\n this.parent.notify(events.preventBatch, args);\n args.cancel = true;\n }\n };\n CheckBoxFilter.prototype.clearCustomFilter = function (col) {\n this.checkBoxBase.clearFilter(col);\n };\n CheckBoxFilter.prototype.applyCustomFilter = function () {\n this.checkBoxBase.fltrBtnHandler();\n this.checkBoxBase.closeDialog();\n };\n CheckBoxFilter.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.cBoxFltrBegin, this.actionBegin, this);\n this.parent.on(events.cBoxFltrComplete, this.actionComplete, this);\n this.parent.on(events.fltrPrevent, this.actionPrevent, this);\n };\n CheckBoxFilter.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.cBoxFltrBegin, this.actionBegin);\n this.parent.off(events.cBoxFltrComplete, this.actionComplete);\n this.parent.off(events.fltrPrevent, this.actionPrevent);\n };\n return CheckBoxFilter;\n}());\nexport { CheckBoxFilter };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, rippleEffect, NotifyPropertyChanges, Property, closest, setValue } from '@syncfusion/ej2-base';\nimport { addClass, getInstance, getUniqueID, isRippleEnabled, removeClass, attributes, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { detach, Event, EventHandler, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { wrapperInitialize, rippleMouseHandler } from './../common/common';\nvar LABEL = 'e-label';\nvar RIPPLE = 'e-ripple-container';\nvar RTL = 'e-rtl';\nvar WRAPPER = 'e-radio-wrapper';\nvar ATTRIBUTES = ['title', 'class', 'style', 'disabled', 'readonly', 'name', 'value', 'id'];\n/**\n * The RadioButton is a graphical user interface element that allows you to select one option from the choices.\n * It contains checked and unchecked states.\n * ```html\n * \n * \n * ```\n */\nvar RadioButton = /** @class */ (function (_super) {\n __extends(RadioButton, _super);\n /**\n * Constructor for creating the widget\n *\n * @private\n * @param {RadioButtonModel} options - Specifies Radio button model\n * @param {string | HTMLInputElement} element - Specifies target element\n */\n function RadioButton(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isFocused = false;\n return _this;\n }\n RadioButton_1 = RadioButton;\n RadioButton.prototype.changeHandler = function (event) {\n this.checked = true;\n this.dataBind();\n var value = this.element.getAttribute('value');\n value = this.isVue && value ? this.element.value : this.value;\n var type = typeof this.value;\n if (this.isVue && type === 'boolean') {\n value = value === 'true' ? true : false;\n }\n this.trigger('change', { value: value, event: event });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isAngular) {\n event.stopPropagation();\n }\n };\n RadioButton.prototype.updateChange = function () {\n var input;\n var instance;\n var radioGrp = this.getRadioGroup();\n for (var i = 0; i < radioGrp.length; i++) {\n input = radioGrp[i];\n if (input !== this.element) {\n instance = getInstance(input, RadioButton_1);\n instance.checked = false;\n if (this.tagName === 'EJS-RADIOBUTTON') {\n instance.angularValue = this.value;\n }\n }\n }\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n RadioButton.prototype.destroy = function () {\n var _this = this;\n var radioWrap = this.wrapper;\n _super.prototype.destroy.call(this);\n if (radioWrap) {\n if (!this.disabled) {\n this.unWireEvents();\n }\n if (this.tagName === 'INPUT') {\n if (radioWrap.parentNode) {\n radioWrap.parentNode.insertBefore(this.element, radioWrap);\n }\n detach(radioWrap);\n this.element.checked = false;\n ['name', 'value', 'disabled'].forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n }\n else {\n ['role', 'aria-checked', 'class'].forEach(function (key) {\n radioWrap.removeAttribute(key);\n });\n radioWrap.innerHTML = '';\n this.element = this.wrapper;\n if (this.refreshing) {\n ['e-control', 'e-radio', 'e-lib'].forEach(function (key) {\n _this.element.classList.add(key);\n });\n setValue('ej2_instances', [this], this.element);\n }\n }\n }\n };\n RadioButton.prototype.focusHandler = function () {\n this.isFocused = true;\n };\n RadioButton.prototype.focusOutHandler = function () {\n var label = this.getLabel();\n if (label) {\n label.classList.remove('e-focus');\n }\n };\n RadioButton.prototype.getModuleName = function () {\n return 'radio';\n };\n /**\n * To get the value of selected radio button in a group.\n *\n * @method getSelectedValue\n * @returns {string} - Selected Value\n */\n RadioButton.prototype.getSelectedValue = function () {\n var input;\n var radioGrp = this.getRadioGroup();\n for (var i = 0, len = radioGrp.length; i < len; i++) {\n input = radioGrp[i];\n if (input.checked) {\n return input.value;\n }\n }\n return '';\n };\n RadioButton.prototype.getRadioGroup = function () {\n return document.querySelectorAll('input.e-radio[name=\"' + this.element.getAttribute('name') + '\"]');\n };\n /**\n * Gets the properties to be maintained in the persistence state.\n *\n * @private\n * @returns {string} - Persist Data\n */\n RadioButton.prototype.getPersistData = function () {\n return this.addOnPersist(['checked']);\n };\n RadioButton.prototype.getWrapper = function () {\n if (this.element.parentElement) {\n return this.element.parentElement;\n }\n else {\n return null;\n }\n };\n RadioButton.prototype.getLabel = function () {\n if (this.element.nextElementSibling) {\n return this.element.nextElementSibling;\n }\n else {\n return null;\n }\n };\n RadioButton.prototype.initialize = function () {\n if (isNullOrUndefined(this.initialCheckedValue)) {\n this.initialCheckedValue = this.checked;\n }\n this.initWrapper();\n this.updateHtmlAttribute();\n if (this.name) {\n this.element.setAttribute('name', this.name);\n }\n var value = this.element.getAttribute('value');\n var type = typeof this.value;\n if (this.isVue && type === 'boolean') {\n value = value === 'true' ? true : false;\n }\n if (this.isVue ? this.value && type !== 'boolean' && !value : this.value) {\n this.element.setAttribute('value', this.value);\n }\n if (this.checked) {\n this.element.checked = true;\n }\n if (this.disabled) {\n this.setDisabled();\n }\n };\n RadioButton.prototype.initWrapper = function () {\n var rippleSpan;\n var wrapper = this.element.parentElement;\n if (!wrapper.classList.contains(WRAPPER)) {\n wrapper = this.createElement('div', { className: WRAPPER });\n if (this.element.parentNode) {\n this.element.parentNode.insertBefore(wrapper, this.element);\n }\n }\n var label = this.createElement('label', { attrs: { for: this.element.id } });\n wrapper.appendChild(this.element);\n wrapper.appendChild(label);\n if (isRippleEnabled) {\n rippleSpan = this.createElement('span', { className: (RIPPLE) });\n label.appendChild(rippleSpan);\n rippleEffect(rippleSpan, {\n duration: 400,\n isCenterRipple: true\n });\n }\n wrapper.classList.add('e-wrapper');\n if (this.enableRtl) {\n label.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.label) {\n this.setText(this.label);\n }\n };\n RadioButton.prototype.keyUpHandler = function () {\n if (this.isFocused) {\n this.getLabel().classList.add('e-focus');\n }\n };\n RadioButton.prototype.labelMouseDownHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE)[0];\n rippleMouseHandler(e, rippleSpan);\n };\n RadioButton.prototype.labelMouseLeaveHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = rippleElem.length - 1; i > 0; i--) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n RadioButton.prototype.labelMouseUpHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = rippleElem.length - 1; i > 0; i--) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n RadioButton.prototype.formResetHandler = function () {\n this.checked = this.initialCheckedValue;\n if (this.initialCheckedValue) {\n attributes(this.element, { 'checked': 'true' });\n }\n };\n /**\n * Called internally if any of the property value changes.\n *\n * @private\n * @param {RadioButtonModel} newProp - Specifies New Properties\n * @param {RadioButtonModel} oldProp - Specifies Old Properties\n * @returns {void}\n */\n RadioButton.prototype.onPropertyChanged = function (newProp, oldProp) {\n var wrap = this.getWrapper();\n var label = this.getLabel();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'checked':\n if (newProp.checked) {\n this.updateChange();\n }\n this.element.checked = newProp.checked;\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.setDisabled();\n this.unWireEvents();\n }\n else {\n this.element.disabled = false;\n this.wireEvents();\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrap], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrap], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n label.classList.add(RTL);\n }\n else {\n label.classList.remove(RTL);\n }\n break;\n case 'label':\n this.setText(newProp.label);\n break;\n case 'labelPosition':\n if (newProp.labelPosition === 'Before') {\n label.classList.add('e-right');\n }\n else {\n label.classList.remove('e-right');\n }\n break;\n case 'name':\n this.element.setAttribute('name', newProp.name);\n break;\n case 'value':\n // eslint-disable-next-line no-case-declarations\n var type = typeof this.htmlAttributes.value;\n if (!isNullOrUndefined(this.htmlAttributes) && (this.htmlAttributes.value || type === 'boolean' && !this.htmlAttributes.value)) {\n break;\n }\n this.element.setAttribute('value', newProp.value);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttribute();\n break;\n }\n }\n };\n /**\n * Initialize checked Property, Angular and React and Unique ID support.\n *\n * @private\n * @returns {void}\n */\n RadioButton.prototype.preRender = function () {\n var element = this.element;\n this.formElement = closest(this.element, 'form');\n this.tagName = this.element.tagName;\n element = wrapperInitialize(this.createElement, 'EJS-RADIOBUTTON', 'radio', element, WRAPPER, 'radio');\n this.element = element;\n if (this.element.getAttribute('type') !== 'radio') {\n this.element.setAttribute('type', 'radio');\n }\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n if (this.tagName === 'EJS-RADIOBUTTON') {\n var formControlName = this.element.getAttribute('formcontrolname');\n if (formControlName) {\n this.setProperties({ 'name': formControlName }, true);\n this.element.setAttribute('name', formControlName);\n }\n }\n };\n /**\n * Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n RadioButton.prototype.render = function () {\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.renderComplete();\n this.wrapper = this.getWrapper();\n };\n RadioButton.prototype.setDisabled = function () {\n this.element.disabled = true;\n };\n RadioButton.prototype.setText = function (text) {\n var label = this.getLabel();\n var textLabel = label.getElementsByClassName(LABEL)[0];\n if (textLabel) {\n textLabel.textContent = text;\n }\n else {\n text = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(text) : text;\n textLabel = this.createElement('span', { className: LABEL, innerHTML: text });\n label.appendChild(textLabel);\n }\n if (this.labelPosition === 'Before') {\n this.getLabel().classList.add('e-right');\n }\n else {\n this.getLabel().classList.remove('e-right');\n }\n };\n RadioButton.prototype.updateHtmlAttribute = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n var wrapper = this.element.parentElement;\n if (ATTRIBUTES.indexOf(key) > -1) {\n if (key === 'class') {\n addClass([wrapper], this.htmlAttributes[\"\" + key].replace(/\\s+/g, ' ').trim().split(' '));\n }\n else if (key === 'title' || key === 'style') {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else {\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n else {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n RadioButton.prototype.unWireEvents = function () {\n var label = this.wrapper;\n EventHandler.remove(this.element, 'change', this.changeHandler);\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n var rippleLabel = label.getElementsByTagName('label')[0];\n if (rippleLabel) {\n EventHandler.remove(rippleLabel, 'mousedown', this.labelMouseDownHandler);\n EventHandler.remove(rippleLabel, 'mouseup', this.labelMouseUpHandler);\n EventHandler.remove(rippleLabel, 'mouseleave', this.labelMouseLeaveHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n };\n RadioButton.prototype.wireEvents = function () {\n var label = this.getLabel();\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n var rippleLabel = label.getElementsByClassName(LABEL)[0];\n if (rippleLabel) {\n EventHandler.add(rippleLabel, 'mousedown', this.labelMouseDownHandler, this);\n EventHandler.add(rippleLabel, 'mouseup', this.labelMouseUpHandler, this);\n EventHandler.add(rippleLabel, 'mouseleave', this.labelMouseLeaveHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n };\n /**\n * Click the RadioButton element\n * its native method\n *\n * @public\n * @returns {void}\n */\n RadioButton.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to RadioButton\n * its native method\n *\n * @public\n * @returns {void}\n */\n RadioButton.prototype.focusIn = function () {\n this.element.focus();\n };\n var RadioButton_1;\n __decorate([\n Event()\n ], RadioButton.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RadioButton.prototype, \"created\", void 0);\n __decorate([\n Property(false)\n ], RadioButton.prototype, \"checked\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], RadioButton.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"label\", void 0);\n __decorate([\n Property('After')\n ], RadioButton.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"value\", void 0);\n __decorate([\n Property(true)\n ], RadioButton.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property({})\n ], RadioButton.prototype, \"htmlAttributes\", void 0);\n RadioButton = RadioButton_1 = __decorate([\n NotifyPropertyChanges\n ], RadioButton);\n return RadioButton;\n}(Component));\nexport { RadioButton };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, NotifyPropertyChanges, Property, setValue } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, isNullOrUndefined, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { addClass, detach, getUniqueID, isRippleEnabled, removeClass, rippleEffect, closest } from '@syncfusion/ej2-base';\nimport { wrapperInitialize, rippleMouseHandler, setHiddenInput } from './../common/common';\nvar CHECK = 'e-check';\nvar DISABLED = 'e-checkbox-disabled';\nvar FRAME = 'e-frame';\nvar INDETERMINATE = 'e-stop';\nvar LABEL = 'e-label';\nvar RIPPLE = 'e-ripple-container';\nvar RIPPLECHECK = 'e-ripple-check';\nvar RIPPLEINDETERMINATE = 'e-ripple-stop';\nvar RTL = 'e-rtl';\nvar WRAPPER = 'e-checkbox-wrapper';\nvar containerAttr = ['title', 'class', 'style', 'disabled', 'readonly', 'name', 'value', 'id', 'tabindex'];\n/**\n * The CheckBox is a graphical user interface element that allows you to select one or more options from the choices.\n * It contains checked, unchecked, and indeterminate states.\n * ```html\n * \n * \n * ```\n */\nvar CheckBox = /** @class */ (function (_super) {\n __extends(CheckBox, _super);\n /**\n * Constructor for creating the widget\n *\n * @private\n * @param {CheckBoxModel} options - Specifies checkbox model\n * @param {string | HTMLInputElement} element - Specifies target element\n */\n function CheckBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isFocused = false;\n _this.isMouseClick = false;\n _this.clickTriggered = false;\n _this.validCheck = true;\n return _this;\n }\n CheckBox.prototype.changeState = function (state, isInitialize) {\n var wrapper = this.getWrapper();\n var rippleSpan = null;\n var frameSpan = null;\n if (wrapper) {\n frameSpan = wrapper.getElementsByClassName(FRAME)[0];\n if (isRippleEnabled) {\n rippleSpan = wrapper.getElementsByClassName(RIPPLE)[0];\n }\n }\n if (state === 'check') {\n if (frameSpan) {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n }\n if (rippleSpan) {\n rippleSpan.classList.remove(RIPPLEINDETERMINATE);\n rippleSpan.classList.add(RIPPLECHECK);\n }\n this.element.checked = true;\n if ((this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) && this.validCheck && !isInitialize) {\n this.element.checked = false;\n this.validCheck = false;\n }\n else if (this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) {\n this.validCheck = true;\n }\n }\n else if (state === 'uncheck') {\n if (frameSpan) {\n removeClass([frameSpan], [CHECK, INDETERMINATE]);\n }\n if (rippleSpan) {\n removeClass([rippleSpan], [RIPPLECHECK, RIPPLEINDETERMINATE]);\n }\n this.element.checked = false;\n if ((this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) && this.validCheck && !isInitialize) {\n this.element.checked = true;\n this.validCheck = false;\n }\n else if (this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) {\n this.validCheck = true;\n }\n }\n else {\n if (frameSpan) {\n frameSpan.classList.remove(CHECK);\n frameSpan.classList.add(INDETERMINATE);\n }\n if (rippleSpan) {\n rippleSpan.classList.remove(RIPPLECHECK);\n rippleSpan.classList.add(RIPPLEINDETERMINATE);\n }\n this.element.indeterminate = true;\n this.indeterminate = true;\n }\n };\n CheckBox.prototype.clickHandler = function (event) {\n if (event.target.tagName === 'INPUT' && this.clickTriggered) {\n if (this.isVue) {\n this.changeState(this.checked ? 'check' : 'uncheck');\n }\n this.clickTriggered = false;\n return;\n }\n if (event.target.tagName === 'SPAN' || event.target.tagName === 'LABEL' ||\n closest(event.target, '.e-label')) {\n this.clickTriggered = true;\n }\n if (this.isMouseClick) {\n this.focusOutHandler();\n this.isMouseClick = false;\n }\n if (this.indeterminate) {\n this.changeState(this.checked ? 'check' : 'uncheck');\n this.indeterminate = false;\n this.element.indeterminate = false;\n }\n else if (this.checked) {\n this.changeState('uncheck');\n this.checked = false;\n }\n else {\n this.changeState('check');\n this.checked = true;\n }\n var changeEventArgs = { checked: this.updateVueArrayModel(false), event: event };\n this.trigger('change', changeEventArgs);\n event.stopPropagation();\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n CheckBox.prototype.destroy = function () {\n var _this = this;\n var wrapper = this.getWrapper();\n _super.prototype.destroy.call(this);\n if (this.wrapper) {\n wrapper = this.wrapper;\n if (!this.disabled) {\n this.unWireEvents();\n }\n if (this.tagName === 'INPUT') {\n if (this.getWrapper() && wrapper.parentNode) {\n wrapper.parentNode.insertBefore(this.element, wrapper);\n }\n detach(wrapper);\n this.element.checked = false;\n if (this.indeterminate) {\n this.element.indeterminate = false;\n }\n ['name', 'value', 'disabled'].forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n }\n else {\n ['class'].forEach(function (key) {\n wrapper.removeAttribute(key);\n });\n wrapper.innerHTML = '';\n this.element = wrapper;\n if (this.refreshing) {\n ['e-control', 'e-checkbox', 'e-lib'].forEach(function (key) {\n _this.element.classList.add(key);\n });\n setValue('ej2_instances', [this], this.element);\n }\n }\n }\n };\n CheckBox.prototype.focusHandler = function () {\n this.isFocused = true;\n };\n CheckBox.prototype.focusOutHandler = function () {\n var wrapper = this.getWrapper();\n if (wrapper) {\n wrapper.classList.remove('e-focus');\n }\n this.isFocused = false;\n };\n /**\n * Gets the module name.\n *\n * @private\n * @returns {string} - Module Name\n */\n CheckBox.prototype.getModuleName = function () {\n return 'checkbox';\n };\n /**\n * Gets the properties to be maintained in the persistence state.\n *\n * @private\n * @returns {string} - Persist Data\n */\n CheckBox.prototype.getPersistData = function () {\n return this.addOnPersist(['checked', 'indeterminate']);\n };\n CheckBox.prototype.getWrapper = function () {\n if (this.element && this.element.parentElement) {\n return this.element.parentElement.parentElement;\n }\n else {\n return null;\n }\n };\n CheckBox.prototype.getLabel = function () {\n if (this.element) {\n return this.element.parentElement;\n }\n else {\n return null;\n }\n };\n CheckBox.prototype.initialize = function () {\n if (isNullOrUndefined(this.initialCheckedValue)) {\n this.initialCheckedValue = this.checked;\n }\n if (this.name) {\n this.element.setAttribute('name', this.name);\n }\n if (this.value) {\n this.element.setAttribute('value', this.value);\n if (this.isVue && typeof this.value === 'boolean' && this.value === true) {\n this.setProperties({ 'checked': true }, true);\n }\n }\n if (this.checked) {\n this.changeState('check', true);\n }\n if (this.indeterminate) {\n this.changeState();\n }\n if (this.disabled) {\n this.setDisabled();\n }\n };\n CheckBox.prototype.initWrapper = function () {\n var wrapper = this.element.parentElement;\n if (!wrapper.classList.contains(WRAPPER)) {\n wrapper = this.createElement('div', {\n className: WRAPPER\n });\n if (this.element.parentNode) {\n this.element.parentNode.insertBefore(wrapper, this.element);\n }\n }\n var label = this.createElement('label', { attrs: { for: this.element.id } });\n var frameSpan = this.createElement('span', { className: 'e-icons ' + FRAME });\n wrapper.classList.add('e-wrapper');\n if (this.enableRtl) {\n wrapper.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n wrapper.appendChild(label);\n label.appendChild(this.element);\n setHiddenInput(this, label);\n label.appendChild(frameSpan);\n if (isRippleEnabled) {\n var rippleSpan = this.createElement('span', { className: RIPPLE });\n if (this.labelPosition === 'Before') {\n label.appendChild(rippleSpan);\n }\n else {\n label.insertBefore(rippleSpan, frameSpan);\n }\n rippleEffect(rippleSpan, { duration: 400, isCenterRipple: true });\n }\n if (this.label) {\n this.setText(this.label);\n }\n };\n CheckBox.prototype.keyUpHandler = function () {\n if (this.isFocused) {\n this.getWrapper().classList.add('e-focus');\n }\n };\n CheckBox.prototype.labelMouseDownHandler = function (e) {\n this.isMouseClick = true;\n var rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n rippleMouseHandler(e, rippleSpan);\n };\n CheckBox.prototype.labelMouseLeaveHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = rippleElem.length - 1; i > 0; i--) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n CheckBox.prototype.labelMouseUpHandler = function (e) {\n this.isMouseClick = true;\n var rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = 0; i < rippleElem.length - 1; i++) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n /**\n * Called internally if any of the property value changes.\n *\n * @private\n * @param {CheckBoxModel} newProp - Specifies new Properties\n * @param {CheckBoxModel} oldProp - Specifies old Properties\n *\n * @returns {void}\n */\n CheckBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n var wrapper = this.getWrapper();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'checked':\n this.indeterminate = false;\n this.element.indeterminate = false;\n this.changeState(newProp.checked ? 'check' : 'uncheck');\n break;\n case 'indeterminate':\n if (newProp.indeterminate) {\n this.changeState();\n }\n else {\n this.element.indeterminate = false;\n this.changeState(this.checked ? 'check' : 'uncheck');\n }\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.setDisabled();\n this.wrapper = this.getWrapper();\n this.unWireEvents();\n }\n else {\n this.element.disabled = false;\n wrapper.classList.remove(DISABLED);\n wrapper.setAttribute('aria-disabled', 'false');\n this.wireEvents();\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrapper], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrapper], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n wrapper.classList.add(RTL);\n }\n else {\n wrapper.classList.remove(RTL);\n }\n break;\n case 'label':\n this.setText(newProp.label);\n break;\n case 'labelPosition': {\n var label = wrapper.getElementsByClassName(LABEL)[0];\n var labelWrap = wrapper.getElementsByTagName('label')[0];\n detach(label);\n if (newProp.labelPosition === 'After') {\n labelWrap.appendChild(label);\n }\n else {\n labelWrap.insertBefore(label, wrapper.getElementsByClassName(FRAME)[0]);\n }\n break;\n }\n case 'name':\n this.element.setAttribute('name', newProp.name);\n break;\n case 'value':\n if (this.isVue && typeof newProp.value === 'object') {\n break;\n }\n this.element.setAttribute('value', newProp.value);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToWrapper();\n break;\n }\n }\n };\n /**\n * Initialize Angular, React and Unique ID support.\n *\n * @private\n * @returns {void}\n */\n CheckBox.prototype.preRender = function () {\n var element = this.element;\n this.tagName = this.element.tagName;\n element = wrapperInitialize(this.createElement, 'EJS-CHECKBOX', 'checkbox', element, WRAPPER, 'checkbox');\n this.element = element;\n if (this.element.getAttribute('type') !== 'checkbox') {\n this.element.setAttribute('type', 'checkbox');\n }\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n };\n /**\n * Initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n CheckBox.prototype.render = function () {\n this.initWrapper();\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.updateHtmlAttributeToWrapper();\n this.updateVueArrayModel(true);\n this.renderComplete();\n this.wrapper = this.getWrapper();\n };\n CheckBox.prototype.setDisabled = function () {\n var wrapper = this.getWrapper();\n this.element.disabled = true;\n wrapper.classList.add(DISABLED);\n wrapper.setAttribute('aria-disabled', 'true');\n };\n CheckBox.prototype.setText = function (text) {\n var wrapper = this.getWrapper();\n if (!wrapper) {\n return;\n }\n var label = wrapper.getElementsByClassName(LABEL)[0];\n if (label) {\n label.innerHTML = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(text) : text;\n }\n else {\n text = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(text) : text;\n label = this.createElement('span', { className: LABEL, innerHTML: text });\n var labelWrap = wrapper.getElementsByTagName('label')[0];\n if (this.labelPosition === 'Before') {\n labelWrap.insertBefore(label, wrapper.getElementsByClassName(FRAME)[0]);\n }\n else {\n labelWrap.appendChild(label);\n }\n }\n };\n CheckBox.prototype.changeHandler = function (e) {\n e.stopPropagation();\n };\n CheckBox.prototype.formResetHandler = function () {\n this.checked = this.initialCheckedValue;\n this.element.checked = this.initialCheckedValue;\n };\n CheckBox.prototype.unWireEvents = function () {\n var wrapper = this.wrapper;\n if (wrapper) {\n EventHandler.remove(wrapper, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n }\n var label = wrapper.getElementsByTagName('label')[0];\n if (label) {\n EventHandler.remove(label, 'mousedown', this.labelMouseDownHandler);\n EventHandler.remove(label, 'mouseup', this.labelMouseUpHandler);\n EventHandler.remove(label, 'mouseleave', this.labelMouseLeaveHandler);\n }\n var formElem = closest(this.element, 'form');\n if (formElem) {\n EventHandler.remove(formElem, 'reset', this.formResetHandler);\n }\n if (this.tagName === 'EJS-CHECKBOX') {\n EventHandler.remove(this.element, 'change', this.changeHandler);\n }\n };\n CheckBox.prototype.wireEvents = function () {\n var wrapper = this.getWrapper();\n EventHandler.add(wrapper, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n var label = wrapper.getElementsByTagName('label')[0];\n EventHandler.add(label, 'mousedown', this.labelMouseDownHandler, this);\n EventHandler.add(label, 'mouseup', this.labelMouseUpHandler, this);\n EventHandler.add(label, 'mouseleave', this.labelMouseLeaveHandler, this);\n var formElem = closest(this.element, 'form');\n if (formElem) {\n EventHandler.add(formElem, 'reset', this.formResetHandler, this);\n }\n if (this.tagName === 'EJS-CHECKBOX') {\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n }\n };\n CheckBox.prototype.updateVueArrayModel = function (init) {\n if (this.isVue && typeof this.value === 'object') {\n var value = this.element.value;\n if (value && this.value) {\n if (init) {\n for (var i = 0; i < this.value.length; i++) {\n if (value === this.value[i]) {\n this.changeState('check');\n this.setProperties({ 'checked': true }, true);\n }\n }\n }\n else {\n var index = this.value.indexOf(value);\n if (this.checked) {\n if (index < 0) {\n this.value.push(value);\n }\n }\n else {\n if (index > -1) {\n this.value.splice(index, 1);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return this.value;\n }\n }\n }\n return this.validCheck ? this.element.checked : !this.element.checked;\n };\n CheckBox.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n var wrapper = this.getWrapper();\n if (containerAttr.indexOf(key) > -1) {\n if (key === 'class') {\n addClass([wrapper], this.htmlAttributes[\"\" + key].split(' '));\n }\n else if (key === 'title') {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else if (key === 'style') {\n var frameSpan = this.getWrapper().getElementsByClassName(FRAME)[0];\n frameSpan.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else if (key === 'disabled') {\n if (this.htmlAttributes[\"\" + key] === 'true') {\n this.setDisabled();\n }\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else {\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n else {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n /**\n * Click the CheckBox element\n * its native method\n *\n * @public\n * @returns {void}\n */\n CheckBox.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to CheckBox\n * its native method\n *\n * @public\n * @returns {void}\n */\n CheckBox.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([\n Event()\n ], CheckBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], CheckBox.prototype, \"created\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"checked\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"disabled\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"indeterminate\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"label\", void 0);\n __decorate([\n Property('After')\n ], CheckBox.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"value\", void 0);\n __decorate([\n Property(true)\n ], CheckBox.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property({})\n ], CheckBox.prototype, \"htmlAttributes\", void 0);\n CheckBox = __decorate([\n NotifyPropertyChanges\n ], CheckBox);\n return CheckBox;\n}(Component));\nexport { CheckBox };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Touch, Component, EventHandler, selectAll, getUniqueID } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Property, Browser, detach } from '@syncfusion/ej2-base';\nimport { classList, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar CLS_ROOT = 'e-hscroll';\nvar CLS_RTL = 'e-rtl';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_HSCROLLBAR = 'e-hscroll-bar';\nvar CLS_HSCROLLCON = 'e-hscroll-content';\nvar CLS_NAVARROW = 'e-nav-arrow';\nvar CLS_NAVRIGHTARROW = 'e-nav-right-arrow';\nvar CLS_NAVLEFTARROW = 'e-nav-left-arrow';\nvar CLS_HSCROLLNAV = 'e-scroll-nav';\nvar CLS_HSCROLLNAVRIGHT = 'e-scroll-right-nav';\nvar CLS_HSCROLLNAVLEFT = 'e-scroll-left-nav';\nvar CLS_DEVICE = 'e-scroll-device';\nvar CLS_OVERLAY = 'e-scroll-overlay';\nvar CLS_RIGHTOVERLAY = 'e-scroll-right-overlay';\nvar CLS_LEFTOVERLAY = 'e-scroll-left-overlay';\nvar OVERLAY_MAXWID = 40;\n/**\n * HScroll module is introduces horizontal scroller when content exceeds the current viewing area.\n * It can be useful for the components like Toolbar, Tab which needs horizontal scrolling alone.\n * Hidden content can be view by touch moving or icon click.\n * ```html\n *
\n * \n * ```\n */\nvar HScroll = /** @class */ (function (_super) {\n __extends(HScroll, _super);\n /**\n * Initializes a new instance of the HScroll class.\n *\n * @param {HScrollModel} options - Specifies HScroll model properties as options.\n * @param {string | HTMLElement} element - Specifies the element for which horizontal scrolling applies.\n */\n function HScroll(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n HScroll.prototype.preRender = function () {\n this.browser = Browser.info.name;\n this.browserCheck = this.browser === 'mozilla';\n this.isDevice = Browser.isDevice;\n this.customStep = true;\n var element = this.element;\n this.ieCheck = this.browser === 'edge' || this.browser === 'msie';\n this.initialize();\n if (element.id === '') {\n element.id = getUniqueID('hscroll');\n this.uniqueId = true;\n }\n element.style.display = 'block';\n if (this.enableRtl) {\n element.classList.add(CLS_RTL);\n }\n };\n /**\n * To Initialize the horizontal scroll rendering\n *\n * @private\n * @returns {void}\n */\n HScroll.prototype.render = function () {\n this.touchModule = new Touch(this.element, { scroll: this.touchHandler.bind(this), swipe: this.swipeHandler.bind(this) });\n EventHandler.add(this.scrollEle, 'scroll', this.scrollHandler, this);\n if (!this.isDevice) {\n this.createNavIcon(this.element);\n }\n else {\n this.element.classList.add(CLS_DEVICE);\n this.createOverlay(this.element);\n }\n this.setScrollState();\n };\n HScroll.prototype.setScrollState = function () {\n if (isNullOrUndefined(this.scrollStep) || this.scrollStep < 0) {\n this.scrollStep = this.scrollEle.offsetWidth;\n this.customStep = false;\n }\n else {\n this.customStep = true;\n }\n };\n HScroll.prototype.initialize = function () {\n var scrollEle = this.createElement('div', { className: CLS_HSCROLLCON });\n var scrollDiv = this.createElement('div', { className: CLS_HSCROLLBAR });\n scrollDiv.setAttribute('tabindex', '-1');\n var ele = this.element;\n var innerEle = [].slice.call(ele.children);\n for (var _i = 0, innerEle_1 = innerEle; _i < innerEle_1.length; _i++) {\n var ele_1 = innerEle_1[_i];\n scrollEle.appendChild(ele_1);\n }\n scrollDiv.appendChild(scrollEle);\n ele.appendChild(scrollDiv);\n scrollDiv.style.overflowX = 'hidden';\n this.scrollEle = scrollDiv;\n this.scrollItems = scrollEle;\n };\n HScroll.prototype.getPersistData = function () {\n var keyEntity = ['scrollStep'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n HScroll.prototype.getModuleName = function () {\n return 'hScroll';\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n HScroll.prototype.destroy = function () {\n var ele = this.element;\n ele.style.display = '';\n ele.classList.remove(CLS_ROOT);\n ele.classList.remove(CLS_DEVICE);\n ele.classList.remove(CLS_RTL);\n var nav = selectAll('.e-' + ele.id + '_nav.' + CLS_HSCROLLNAV, ele);\n var overlay = selectAll('.' + CLS_OVERLAY, ele);\n [].slice.call(overlay).forEach(function (ele) {\n detach(ele);\n });\n for (var _i = 0, _a = [].slice.call(this.scrollItems.children); _i < _a.length; _i++) {\n var elem = _a[_i];\n ele.appendChild(elem);\n }\n if (this.uniqueId) {\n this.element.removeAttribute('id');\n }\n detach(this.scrollEle);\n if (nav.length > 0) {\n detach(nav[0]);\n if (!isNullOrUndefined(nav[1])) {\n detach(nav[1]);\n }\n }\n EventHandler.remove(this.scrollEle, 'scroll', this.scrollHandler);\n this.touchModule.destroy();\n this.touchModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Specifies the value to disable/enable the HScroll component.\n * When set to `true` , the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, HScroll will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n HScroll.prototype.disable = function (value) {\n var navEles = selectAll('.e-scroll-nav:not(.' + CLS_DISABLE + ')', this.element);\n if (value) {\n this.element.classList.add(CLS_DISABLE);\n }\n else {\n this.element.classList.remove(CLS_DISABLE);\n }\n [].slice.call(navEles).forEach(function (el) {\n el.setAttribute('tabindex', !value ? '0' : '-1');\n });\n };\n HScroll.prototype.createOverlay = function (element) {\n var id = element.id.concat('_nav');\n var rightOverlayEle = this.createElement('div', { className: CLS_OVERLAY + ' ' + CLS_RIGHTOVERLAY });\n var clsRight = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVRIGHT);\n var rightEle = this.createElement('div', { id: id.concat('_right'), className: clsRight });\n var navItem = this.createElement('div', { className: CLS_NAVRIGHTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n rightEle.appendChild(navItem);\n var leftEle = this.createElement('div', { className: CLS_OVERLAY + ' ' + CLS_LEFTOVERLAY });\n if (this.ieCheck) {\n rightEle.classList.add('e-ie-align');\n }\n element.appendChild(rightOverlayEle);\n element.appendChild(rightEle);\n element.insertBefore(leftEle, element.firstChild);\n this.eventBinding([rightEle]);\n };\n HScroll.prototype.createNavIcon = function (element) {\n var id = element.id.concat('_nav');\n var clsRight = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVRIGHT);\n var rightAttributes = { 'role': 'button', 'id': id.concat('_right'), 'aria-label': 'Scroll right' };\n var nav = this.createElement('div', { className: clsRight, attrs: rightAttributes });\n nav.setAttribute('aria-disabled', 'false');\n var navItem = this.createElement('div', { className: CLS_NAVRIGHTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n var clsLeft = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVLEFT);\n var leftAttributes = { 'role': 'button', 'id': id.concat('_left'), 'aria-label': 'Scroll left' };\n var navEle = this.createElement('div', { className: clsLeft + ' ' + CLS_DISABLE, attrs: leftAttributes });\n navEle.setAttribute('aria-disabled', 'true');\n var navLeftItem = this.createElement('div', { className: CLS_NAVLEFTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n navEle.appendChild(navLeftItem);\n nav.appendChild(navItem);\n element.appendChild(nav);\n element.insertBefore(navEle, element.firstChild);\n if (this.ieCheck) {\n nav.classList.add('e-ie-align');\n navEle.classList.add('e-ie-align');\n }\n this.eventBinding([nav, navEle]);\n };\n HScroll.prototype.onKeyPress = function (e) {\n var _this = this;\n if (e.key === 'Enter') {\n var timeoutFun_1 = function () {\n _this.keyTimeout = true;\n _this.eleScrolling(10, e.target, true);\n };\n this.keyTimer = window.setTimeout(function () {\n timeoutFun_1();\n }, 100);\n }\n };\n HScroll.prototype.onKeyUp = function (e) {\n if (e.key !== 'Enter') {\n return;\n }\n if (this.keyTimeout) {\n this.keyTimeout = false;\n }\n else {\n e.target.click();\n }\n clearTimeout(this.keyTimer);\n };\n HScroll.prototype.eventBinding = function (ele) {\n var _this = this;\n [].slice.call(ele).forEach(function (el) {\n new Touch(el, { tapHold: _this.tabHoldHandler.bind(_this), tapHoldThreshold: 500 });\n el.addEventListener('keydown', _this.onKeyPress.bind(_this));\n el.addEventListener('keyup', _this.onKeyUp.bind(_this));\n el.addEventListener('mouseup', _this.repeatScroll.bind(_this));\n el.addEventListener('touchend', _this.repeatScroll.bind(_this));\n el.addEventListener('contextmenu', function (e) {\n e.preventDefault();\n });\n EventHandler.add(el, 'click', _this.clickEventHandler, _this);\n });\n };\n HScroll.prototype.repeatScroll = function () {\n clearInterval(this.timeout);\n };\n HScroll.prototype.tabHoldHandler = function (e) {\n var _this = this;\n var trgt = e.originalEvent.target;\n trgt = this.contains(trgt, CLS_HSCROLLNAV) ? trgt.firstElementChild : trgt;\n var scrollDis = 10;\n var timeoutFun = function () {\n _this.eleScrolling(scrollDis, trgt, true);\n };\n this.timeout = window.setInterval(function () {\n timeoutFun();\n }, 50);\n };\n HScroll.prototype.contains = function (ele, className) {\n return ele.classList.contains(className);\n };\n HScroll.prototype.eleScrolling = function (scrollDis, trgt, isContinuous) {\n var rootEle = this.element;\n var classList = trgt.classList;\n if (classList.contains(CLS_HSCROLLNAV)) {\n classList = trgt.querySelector('.' + CLS_NAVARROW).classList;\n }\n if (this.contains(rootEle, CLS_RTL) && this.browserCheck) {\n scrollDis = -scrollDis;\n }\n if ((!this.contains(rootEle, CLS_RTL) || this.browserCheck) || this.ieCheck) {\n if (classList.contains(CLS_NAVRIGHTARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n }\n else {\n if (classList.contains(CLS_NAVLEFTARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n }\n };\n HScroll.prototype.clickEventHandler = function (e) {\n this.eleScrolling(this.scrollStep, e.target, false);\n };\n HScroll.prototype.swipeHandler = function (e) {\n var swipeEle = this.scrollEle;\n var distance;\n if (e.velocity <= 1) {\n distance = e.distanceX / (e.velocity * 10);\n }\n else {\n distance = e.distanceX / e.velocity;\n }\n var start = 0.5;\n var animate = function () {\n var step = Math.sin(start);\n if (step <= 0) {\n window.cancelAnimationFrame(step);\n }\n else {\n if (e.swipeDirection === 'Left') {\n swipeEle.scrollLeft += distance * step;\n }\n else if (e.swipeDirection === 'Right') {\n swipeEle.scrollLeft -= distance * step;\n }\n start -= 0.5;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n HScroll.prototype.scrollUpdating = function (scrollVal, action) {\n if (action === 'add') {\n this.scrollEle.scrollLeft += scrollVal;\n }\n else {\n this.scrollEle.scrollLeft -= scrollVal;\n }\n if (this.enableRtl && this.scrollEle.scrollLeft > 0) {\n this.scrollEle.scrollLeft = 0;\n }\n };\n HScroll.prototype.frameScrollRequest = function (scrollVal, action, isContinuous) {\n var _this = this;\n var step = 10;\n if (isContinuous) {\n this.scrollUpdating(scrollVal, action);\n return;\n }\n if (!this.customStep) {\n [].slice.call(selectAll('.' + CLS_OVERLAY, this.element)).forEach(function (el) {\n scrollVal -= el.offsetWidth;\n });\n }\n var animate = function () {\n var scrollValue;\n var scrollStep;\n if (_this.contains(_this.element, CLS_RTL) && _this.browserCheck) {\n scrollValue = -scrollVal;\n scrollStep = -step;\n }\n else {\n scrollValue = scrollVal;\n scrollStep = step;\n }\n if (scrollValue < step) {\n window.cancelAnimationFrame(scrollStep);\n }\n else {\n _this.scrollUpdating(scrollStep, action);\n scrollVal -= scrollStep;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n HScroll.prototype.touchHandler = function (e) {\n var ele = this.scrollEle;\n var distance = e.distanceX;\n if ((this.ieCheck) && this.contains(this.element, CLS_RTL)) {\n distance = -distance;\n }\n if (e.scrollDirection === 'Left') {\n ele.scrollLeft = ele.scrollLeft + distance;\n }\n else if (e.scrollDirection === 'Right') {\n ele.scrollLeft = ele.scrollLeft - distance;\n }\n };\n HScroll.prototype.arrowDisabling = function (addDisable, removeDisable) {\n if (this.isDevice) {\n var arrowEle = isNullOrUndefined(addDisable) ? removeDisable : addDisable;\n var arrowIcon = arrowEle.querySelector('.' + CLS_NAVARROW);\n if (isNullOrUndefined(addDisable)) {\n classList(arrowIcon, [CLS_NAVRIGHTARROW], [CLS_NAVLEFTARROW]);\n }\n else {\n classList(arrowIcon, [CLS_NAVLEFTARROW], [CLS_NAVRIGHTARROW]);\n }\n }\n else if (addDisable && removeDisable) {\n addDisable.classList.add(CLS_DISABLE);\n addDisable.setAttribute('aria-disabled', 'true');\n addDisable.removeAttribute('tabindex');\n removeDisable.classList.remove(CLS_DISABLE);\n removeDisable.setAttribute('aria-disabled', 'false');\n removeDisable.setAttribute('tabindex', '0');\n }\n this.repeatScroll();\n };\n HScroll.prototype.scrollHandler = function (e) {\n var target = e.target;\n var width = target.offsetWidth;\n var rootEle = this.element;\n var navLeftEle = this.element.querySelector('.' + CLS_HSCROLLNAVLEFT);\n var navRightEle = this.element.querySelector('.' + CLS_HSCROLLNAVRIGHT);\n var leftOverlay = this.element.querySelector('.' + CLS_LEFTOVERLAY);\n var rightOverlay = this.element.querySelector('.' + CLS_RIGHTOVERLAY);\n var scrollLeft = target.scrollLeft;\n if (scrollLeft <= 0) {\n scrollLeft = -scrollLeft;\n }\n if (this.isDevice) {\n if (this.enableRtl && !(this.browserCheck || this.ieCheck)) {\n leftOverlay = this.element.querySelector('.' + CLS_RIGHTOVERLAY);\n rightOverlay = this.element.querySelector('.' + CLS_LEFTOVERLAY);\n }\n if (scrollLeft < OVERLAY_MAXWID) {\n leftOverlay.style.width = scrollLeft + 'px';\n }\n else {\n leftOverlay.style.width = '40px';\n }\n if ((target.scrollWidth - Math.ceil(width + scrollLeft)) < OVERLAY_MAXWID) {\n rightOverlay.style.width = (target.scrollWidth - Math.ceil(width + scrollLeft)) + 'px';\n }\n else {\n rightOverlay.style.width = '40px';\n }\n }\n if (scrollLeft === 0) {\n this.arrowDisabling(navLeftEle, navRightEle);\n }\n else if (Math.ceil(width + scrollLeft + .1) >= target.scrollWidth) {\n this.arrowDisabling(navRightEle, navLeftEle);\n }\n else {\n var disEle = this.element.querySelector('.' + CLS_HSCROLLNAV + '.' + CLS_DISABLE);\n if (disEle) {\n disEle.classList.remove(CLS_DISABLE);\n disEle.setAttribute('aria-disabled', 'false');\n disEle.setAttribute('tabindex', '0');\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of property that changed.\n *\n * @param {HScrollModel} newProp - It contains the new value of data.\n * @param {HScrollModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n HScroll.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'scrollStep':\n this.setScrollState();\n break;\n case 'enableRtl':\n newProp.enableRtl ? this.element.classList.add(CLS_RTL) : this.element.classList.remove(CLS_RTL);\n break;\n }\n }\n };\n __decorate([\n Property(null)\n ], HScroll.prototype, \"scrollStep\", void 0);\n HScroll = __decorate([\n NotifyPropertyChanges\n ], HScroll);\n return HScroll;\n}(Component));\nexport { HScroll };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Touch, Component, EventHandler, selectAll, getUniqueID, removeClass } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Property, Browser, detach, createElement as buildTag } from '@syncfusion/ej2-base';\nimport { classList, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar CLS_ROOT = 'e-vscroll';\nvar CLS_RTL = 'e-rtl';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_VSCROLLBAR = 'e-vscroll-bar';\nvar CLS_VSCROLLCON = 'e-vscroll-content';\nvar CLS_NAVARROW = 'e-nav-arrow';\nvar CLS_NAVUPARROW = 'e-nav-up-arrow';\nvar CLS_NAVDOWNARROW = 'e-nav-down-arrow';\nvar CLS_VSCROLLNAV = 'e-scroll-nav';\nvar CLS_VSCROLLNAVUP = 'e-scroll-up-nav';\nvar CLS_VSCROLLNAVDOWN = 'e-scroll-down-nav';\nvar CLS_DEVICE = 'e-scroll-device';\nvar CLS_OVERLAY = 'e-scroll-overlay';\nvar CLS_UPOVERLAY = 'e-scroll-up-overlay';\nvar CLS_DOWNOVERLAY = 'e-scroll-down-overlay';\nvar OVERLAY_MAXWID = 40;\n/**\n * VScroll module is introduces vertical scroller when content exceeds the current viewing area.\n * It can be useful for the components like Toolbar, Tab which needs vertical scrolling alone.\n * Hidden content can be view by touch moving or icon click.\n * ```html\n *
\n * \n * ```\n */\nvar VScroll = /** @class */ (function (_super) {\n __extends(VScroll, _super);\n /**\n * Initializes a new instance of the VScroll class.\n *\n * @param {VScrollModel} options - Specifies VScroll model properties as options.\n * @param {string | HTMLElement} element - Specifies the element for which vertical scrolling applies.\n */\n function VScroll(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n VScroll.prototype.preRender = function () {\n this.browser = Browser.info.name;\n this.browserCheck = this.browser === 'mozilla';\n this.isDevice = Browser.isDevice;\n this.customStep = true;\n var ele = this.element;\n this.ieCheck = this.browser === 'edge' || this.browser === 'msie';\n this.initialize();\n if (ele.id === '') {\n ele.id = getUniqueID('vscroll');\n this.uniqueId = true;\n }\n ele.style.display = 'block';\n if (this.enableRtl) {\n ele.classList.add(CLS_RTL);\n }\n };\n /**\n * To Initialize the vertical scroll rendering\n *\n * @private\n * @returns {void}\n */\n VScroll.prototype.render = function () {\n this.touchModule = new Touch(this.element, { scroll: this.touchHandler.bind(this), swipe: this.swipeHandler.bind(this) });\n EventHandler.add(this.scrollEle, 'scroll', this.scrollEventHandler, this);\n if (!this.isDevice) {\n this.createNavIcon(this.element);\n }\n else {\n this.element.classList.add(CLS_DEVICE);\n this.createOverlayElement(this.element);\n }\n this.setScrollState();\n EventHandler.add(this.element, 'wheel', this.wheelEventHandler, this);\n };\n VScroll.prototype.setScrollState = function () {\n if (isNullOrUndefined(this.scrollStep) || this.scrollStep < 0) {\n this.scrollStep = this.scrollEle.offsetHeight;\n this.customStep = false;\n }\n else {\n this.customStep = true;\n }\n };\n VScroll.prototype.initialize = function () {\n var scrollCnt = buildTag('div', { className: CLS_VSCROLLCON });\n var scrollBar = buildTag('div', { className: CLS_VSCROLLBAR });\n scrollBar.setAttribute('tabindex', '-1');\n var ele = this.element;\n var innerEle = [].slice.call(ele.children);\n for (var _i = 0, innerEle_1 = innerEle; _i < innerEle_1.length; _i++) {\n var ele_1 = innerEle_1[_i];\n scrollCnt.appendChild(ele_1);\n }\n scrollBar.appendChild(scrollCnt);\n ele.appendChild(scrollBar);\n scrollBar.style.overflow = 'hidden';\n this.scrollEle = scrollBar;\n this.scrollItems = scrollCnt;\n };\n VScroll.prototype.getPersistData = function () {\n var keyEntity = ['scrollStep'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n VScroll.prototype.getModuleName = function () {\n return 'vScroll';\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n VScroll.prototype.destroy = function () {\n var el = this.element;\n el.style.display = '';\n removeClass([this.element], [CLS_ROOT, CLS_DEVICE, CLS_RTL]);\n var navs = selectAll('.e-' + el.id + '_nav.' + CLS_VSCROLLNAV, el);\n var overlays = selectAll('.' + CLS_OVERLAY, el);\n [].slice.call(overlays).forEach(function (ele) {\n detach(ele);\n });\n for (var _i = 0, _a = [].slice.call(this.scrollItems.children); _i < _a.length; _i++) {\n var elem = _a[_i];\n el.appendChild(elem);\n }\n if (this.uniqueId) {\n this.element.removeAttribute('id');\n }\n detach(this.scrollEle);\n if (navs.length > 0) {\n detach(navs[0]);\n if (!isNullOrUndefined(navs[1])) {\n detach(navs[1]);\n }\n }\n EventHandler.remove(this.scrollEle, 'scroll', this.scrollEventHandler);\n this.touchModule.destroy();\n this.touchModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Specifies the value to disable/enable the VScroll component.\n * When set to `true` , the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, VScroll will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n VScroll.prototype.disable = function (value) {\n var navEle = selectAll('.e-scroll-nav:not(.' + CLS_DISABLE + ')', this.element);\n if (value) {\n this.element.classList.add(CLS_DISABLE);\n }\n else {\n this.element.classList.remove(CLS_DISABLE);\n }\n [].slice.call(navEle).forEach(function (el) {\n el.setAttribute('tabindex', !value ? '0' : '-1');\n });\n };\n VScroll.prototype.createOverlayElement = function (element) {\n var id = element.id.concat('_nav');\n var downOverlayEle = buildTag('div', { className: CLS_OVERLAY + ' ' + CLS_DOWNOVERLAY });\n var clsDown = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVDOWN);\n var downEle = buildTag('div', { id: id.concat('down'), className: clsDown });\n var navItem = buildTag('div', { className: CLS_NAVDOWNARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n downEle.appendChild(navItem);\n var upEle = buildTag('div', { className: CLS_OVERLAY + ' ' + CLS_UPOVERLAY });\n if (this.ieCheck) {\n downEle.classList.add('e-ie-align');\n }\n element.appendChild(downOverlayEle);\n element.appendChild(downEle);\n element.insertBefore(upEle, element.firstChild);\n this.eventBinding([downEle]);\n };\n VScroll.prototype.createNavIcon = function (element) {\n var id = element.id.concat('_nav');\n var clsDown = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVDOWN);\n var nav = buildTag('div', { id: id.concat('_down'), className: clsDown });\n nav.setAttribute('aria-disabled', 'false');\n var navItem = buildTag('div', { className: CLS_NAVDOWNARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n var clsUp = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVUP);\n var navElement = buildTag('div', { id: id.concat('_up'), className: clsUp + ' ' + CLS_DISABLE });\n navElement.setAttribute('aria-disabled', 'true');\n var navUpItem = buildTag('div', { className: CLS_NAVUPARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n navElement.appendChild(navUpItem);\n nav.appendChild(navItem);\n nav.setAttribute('tabindex', '0');\n element.appendChild(nav);\n element.insertBefore(navElement, element.firstChild);\n if (this.ieCheck) {\n nav.classList.add('e-ie-align');\n navElement.classList.add('e-ie-align');\n }\n this.eventBinding([nav, navElement]);\n };\n VScroll.prototype.onKeyPress = function (ev) {\n var _this = this;\n if (ev.key === 'Enter') {\n var timeoutFun_1 = function () {\n _this.keyTimeout = true;\n _this.eleScrolling(10, ev.target, true);\n };\n this.keyTimer = window.setTimeout(function () {\n timeoutFun_1();\n }, 100);\n }\n };\n VScroll.prototype.onKeyUp = function (ev) {\n if (ev.key !== 'Enter') {\n return;\n }\n if (this.keyTimeout) {\n this.keyTimeout = false;\n }\n else {\n ev.target.click();\n }\n clearTimeout(this.keyTimer);\n };\n VScroll.prototype.eventBinding = function (element) {\n var _this = this;\n [].slice.call(element).forEach(function (ele) {\n new Touch(ele, { tapHold: _this.tabHoldHandler.bind(_this), tapHoldThreshold: 500 });\n ele.addEventListener('keydown', _this.onKeyPress.bind(_this));\n ele.addEventListener('keyup', _this.onKeyUp.bind(_this));\n ele.addEventListener('mouseup', _this.repeatScroll.bind(_this));\n ele.addEventListener('touchend', _this.repeatScroll.bind(_this));\n ele.addEventListener('contextmenu', function (e) {\n e.preventDefault();\n });\n EventHandler.add(ele, 'click', _this.clickEventHandler, _this);\n });\n };\n VScroll.prototype.repeatScroll = function () {\n clearInterval(this.timeout);\n };\n VScroll.prototype.tabHoldHandler = function (ev) {\n var _this = this;\n var trgt = ev.originalEvent.target;\n trgt = this.contains(trgt, CLS_VSCROLLNAV) ? trgt.firstElementChild : trgt;\n var scrollDistance = 10;\n var timeoutFun = function () {\n _this.eleScrolling(scrollDistance, trgt, true);\n };\n this.timeout = window.setInterval(function () {\n timeoutFun();\n }, 50);\n };\n VScroll.prototype.contains = function (element, className) {\n return element.classList.contains(className);\n };\n VScroll.prototype.eleScrolling = function (scrollDis, trgt, isContinuous) {\n var classList = trgt.classList;\n if (classList.contains(CLS_VSCROLLNAV)) {\n classList = trgt.querySelector('.' + CLS_NAVARROW).classList;\n }\n if (classList.contains(CLS_NAVDOWNARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else if (classList.contains(CLS_NAVUPARROW)) {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n };\n VScroll.prototype.clickEventHandler = function (event) {\n this.eleScrolling(this.scrollStep, event.target, false);\n };\n VScroll.prototype.wheelEventHandler = function (e) {\n e.preventDefault();\n this.frameScrollRequest(this.scrollStep, (e.deltaY > 0 ? 'add' : ''), false);\n };\n VScroll.prototype.swipeHandler = function (e) {\n var swipeElement = this.scrollEle;\n var distance;\n if (e.velocity <= 1) {\n distance = e.distanceY / (e.velocity * 10);\n }\n else {\n distance = e.distanceY / e.velocity;\n }\n var start = 0.5;\n var animate = function () {\n var step = Math.sin(start);\n if (step <= 0) {\n window.cancelAnimationFrame(step);\n }\n else {\n if (e.swipeDirection === 'Up') {\n swipeElement.scrollTop += distance * step;\n }\n else if (e.swipeDirection === 'Down') {\n swipeElement.scrollTop -= distance * step;\n }\n start -= 0.02;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n VScroll.prototype.scrollUpdating = function (scrollVal, action) {\n if (action === 'add') {\n this.scrollEle.scrollTop += scrollVal;\n }\n else {\n this.scrollEle.scrollTop -= scrollVal;\n }\n };\n VScroll.prototype.frameScrollRequest = function (scrollValue, action, isContinuous) {\n var _this = this;\n var step = 10;\n if (isContinuous) {\n this.scrollUpdating(scrollValue, action);\n return;\n }\n if (!this.customStep) {\n [].slice.call(selectAll('.' + CLS_OVERLAY, this.element)).forEach(function (el) {\n scrollValue -= el.offsetHeight;\n });\n }\n var animate = function () {\n if (scrollValue < step) {\n window.cancelAnimationFrame(step);\n }\n else {\n _this.scrollUpdating(step, action);\n scrollValue -= step;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n VScroll.prototype.touchHandler = function (e) {\n var el = this.scrollEle;\n var distance = e.distanceY;\n if (e.scrollDirection === 'Up') {\n el.scrollTop = el.scrollTop + distance;\n }\n else if (e.scrollDirection === 'Down') {\n el.scrollTop = el.scrollTop - distance;\n }\n };\n VScroll.prototype.arrowDisabling = function (addDisableCls, removeDisableCls) {\n if (this.isDevice) {\n var arrowEle = isNullOrUndefined(addDisableCls) ? removeDisableCls : addDisableCls;\n var arrowIcon = arrowEle.querySelector('.' + CLS_NAVARROW);\n if (isNullOrUndefined(addDisableCls)) {\n classList(arrowIcon, [CLS_NAVDOWNARROW], [CLS_NAVUPARROW]);\n }\n else {\n classList(arrowIcon, [CLS_NAVUPARROW], [CLS_NAVDOWNARROW]);\n }\n }\n else {\n addDisableCls.classList.add(CLS_DISABLE);\n addDisableCls.setAttribute('aria-disabled', 'true');\n addDisableCls.removeAttribute('tabindex');\n removeDisableCls.classList.remove(CLS_DISABLE);\n removeDisableCls.setAttribute('aria-disabled', 'false');\n removeDisableCls.setAttribute('tabindex', '0');\n }\n this.repeatScroll();\n };\n VScroll.prototype.scrollEventHandler = function (e) {\n var target = e.target;\n var height = target.offsetHeight;\n var navUpEle = this.element.querySelector('.' + CLS_VSCROLLNAVUP);\n var navDownEle = this.element.querySelector('.' + CLS_VSCROLLNAVDOWN);\n var upOverlay = this.element.querySelector('.' + CLS_UPOVERLAY);\n var downOverlay = this.element.querySelector('.' + CLS_DOWNOVERLAY);\n var scrollTop = target.scrollTop;\n if (scrollTop <= 0) {\n scrollTop = -scrollTop;\n }\n if (this.isDevice) {\n if (scrollTop < OVERLAY_MAXWID) {\n upOverlay.style.height = scrollTop + 'px';\n }\n else {\n upOverlay.style.height = '40px';\n }\n if ((target.scrollHeight - Math.ceil(height + scrollTop)) < OVERLAY_MAXWID) {\n downOverlay.style.height = (target.scrollHeight - Math.ceil(height + scrollTop)) + 'px';\n }\n else {\n downOverlay.style.height = '40px';\n }\n }\n if (scrollTop === 0) {\n this.arrowDisabling(navUpEle, navDownEle);\n }\n else if (Math.ceil(height + scrollTop + .1) >= target.scrollHeight) {\n this.arrowDisabling(navDownEle, navUpEle);\n }\n else {\n var disEle = this.element.querySelector('.' + CLS_VSCROLLNAV + '.' + CLS_DISABLE);\n if (disEle) {\n disEle.classList.remove(CLS_DISABLE);\n disEle.setAttribute('aria-disabled', 'false');\n disEle.setAttribute('tabindex', '0');\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of property that changed.\n *\n * @param {VScrollModel} newProp - It contains the new value of data.\n * @param {VScrollModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n VScroll.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'scrollStep':\n this.setScrollState();\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.element.classList.add(CLS_RTL);\n }\n else {\n this.element.classList.remove(CLS_RTL);\n }\n break;\n }\n }\n };\n __decorate([\n Property(null)\n ], VScroll.prototype, \"scrollStep\", void 0);\n VScroll = __decorate([\n NotifyPropertyChanges\n ], VScroll);\n return VScroll;\n}(Component));\nexport { VScroll };\n","import { select, detach } from '@syncfusion/ej2-base';\nimport { VScroll } from './v-scroll';\nimport { HScroll } from './h-scroll';\n/**\n * Used to add scroll in menu.\n *\n * @param {createElementType} createElement - Specifies the create element model\n * @param {HTMLElement} container - Specifies the element container\n * @param {HTMLElement} content - Specifies the content element\n * @param {string} scrollType - Specifies the scroll type\n * @param {boolean} enableRtl - Specifies the enable RTL property\n * @param {boolean} offset - Specifies the offset value\n * @returns {HTMLElement} - Element\n * @hidden\n */\nexport function addScrolling(createElement, container, content, scrollType, enableRtl, offset) {\n var containerOffset;\n var contentOffset;\n var parentElem = container.parentElement;\n if (scrollType === 'vscroll') {\n containerOffset = offset || container.getBoundingClientRect().height;\n contentOffset = content.getBoundingClientRect().height;\n }\n else {\n containerOffset = container.getBoundingClientRect().width;\n contentOffset = content.getBoundingClientRect().width;\n }\n if (containerOffset < contentOffset) {\n return createScrollbar(createElement, container, content, scrollType, enableRtl, offset);\n }\n else if (parentElem) {\n var width = parentElem.getBoundingClientRect().width;\n if (width < containerOffset && scrollType === 'hscroll') {\n contentOffset = width;\n container.style.maxWidth = width + 'px';\n return createScrollbar(createElement, container, content, scrollType, enableRtl, offset);\n }\n return content;\n }\n else {\n return content;\n }\n}\n/**\n * Used to create scroll bar in menu.\n *\n * @param {createElementType} createElement - Specifies the create element model\n * @param {HTMLElement} container - Specifies the element container\n * @param {HTMLElement} content - Specifies the content element\n * @param {string} scrollType - Specifies the scroll type\n * @param {boolean} enableRtl - Specifies the enable RTL property\n * @param {boolean} offset - Specifies the offset value\n * @returns {HTMLElement} - Element\n * @hidden\n */\nfunction createScrollbar(createElement, container, content, scrollType, enableRtl, offset) {\n var scrollEle = createElement('div', { className: 'e-menu-' + scrollType });\n container.appendChild(scrollEle);\n scrollEle.appendChild(content);\n if (offset) {\n scrollEle.style.overflow = 'hidden';\n scrollEle.style.height = offset + 'px';\n }\n else {\n scrollEle.style.maxHeight = container.style.maxHeight;\n container.style.overflow = 'hidden';\n }\n var scrollObj;\n if (scrollType === 'vscroll') {\n scrollObj = new VScroll({ enableRtl: enableRtl }, scrollEle);\n scrollObj.scrollStep = select('.e-' + scrollType + '-bar', container).offsetHeight / 2;\n }\n else {\n scrollObj = new HScroll({ enableRtl: enableRtl }, scrollEle);\n scrollObj.scrollStep = select('.e-' + scrollType + '-bar', container).offsetWidth;\n }\n return scrollEle;\n}\n/**\n * Used to destroy the scroll option.\n *\n * @param {VScroll | HScroll} scrollObj - Specifies the scroller object\n * @param {Element} element - Specifies the element\n * @param {HTMLElement} skipEle - Specifies the skip element\n * @returns {void}\n * @hidden\n */\nexport function destroyScroll(scrollObj, element, skipEle) {\n if (scrollObj) {\n var menu = select('.e-menu-parent', element);\n if (menu) {\n if (!skipEle || skipEle === menu) {\n scrollObj.destroy();\n element.parentElement.appendChild(menu);\n detach(element);\n }\n }\n else {\n scrollObj.destroy();\n detach(element);\n }\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, ChildProperty, NotifyPropertyChanges, isBlazor } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, KeyboardEvents, Touch } from '@syncfusion/ej2-base';\nimport { Animation } from '@syncfusion/ej2-base';\nimport { Browser, Collection, setValue, getValue, getUniqueID, getInstance, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { select, selectAll, closest, detach, append, rippleEffect, isVisible, Complex, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { getZindexPartial, calculatePosition, isCollide, fit, Popup } from '@syncfusion/ej2-popups';\nimport { SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { getScrollableParent } from '@syncfusion/ej2-popups';\nimport { HScroll } from '../common/h-scroll';\nimport { VScroll } from '../common/v-scroll';\nimport { addScrolling, destroyScroll } from '../common/menu-scroll';\nvar ENTER = 'enter';\nvar ESCAPE = 'escape';\nvar FOCUSED = 'e-focused';\nvar HEADER = 'e-menu-header';\nvar SELECTED = 'e-selected';\nvar SEPARATOR = 'e-separator';\nvar UPARROW = 'uparrow';\nvar DOWNARROW = 'downarrow';\nvar LEFTARROW = 'leftarrow';\nvar RIGHTARROW = 'rightarrow';\nvar HOME = 'home';\nvar END = 'end';\nvar TAB = 'tab';\nvar CARET = 'e-caret';\nvar ITEM = 'e-menu-item';\nvar DISABLED = 'e-disabled';\nvar HIDE = 'e-menu-hide';\nvar ICONS = 'e-icons';\nvar RTL = 'e-rtl';\nvar POPUP = 'e-menu-popup';\nvar TEMPLATE_PROPERTY = 'Template';\n/**\n * Configures the field options of the Menu.\n */\nvar FieldSettings = /** @class */ (function (_super) {\n __extends(FieldSettings, _super);\n function FieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('id')\n ], FieldSettings.prototype, \"itemId\", void 0);\n __decorate([\n Property('parentId')\n ], FieldSettings.prototype, \"parentId\", void 0);\n __decorate([\n Property('text')\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property('iconCss')\n ], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property('url')\n ], FieldSettings.prototype, \"url\", void 0);\n __decorate([\n Property('separator')\n ], FieldSettings.prototype, \"separator\", void 0);\n __decorate([\n Property('items')\n ], FieldSettings.prototype, \"children\", void 0);\n return FieldSettings;\n}(ChildProperty));\nexport { FieldSettings };\n/**\n * Specifies menu items.\n */\nvar MenuItem = /** @class */ (function (_super) {\n __extends(MenuItem, _super);\n function MenuItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], MenuItem.prototype, \"iconCss\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"id\", void 0);\n __decorate([\n Property(false)\n ], MenuItem.prototype, \"separator\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], MenuItem.prototype, \"items\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], MenuItem.prototype, \"url\", void 0);\n return MenuItem;\n}(ChildProperty));\nexport { MenuItem };\n/**\n * Animation configuration settings.\n */\nvar MenuAnimationSettings = /** @class */ (function (_super) {\n __extends(MenuAnimationSettings, _super);\n function MenuAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('SlideDown')\n ], MenuAnimationSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(400)\n ], MenuAnimationSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], MenuAnimationSettings.prototype, \"easing\", void 0);\n return MenuAnimationSettings;\n}(ChildProperty));\nexport { MenuAnimationSettings };\n/**\n * Base class for Menu and ContextMenu components.\n *\n * @private\n */\nvar MenuBase = /** @class */ (function (_super) {\n __extends(MenuBase, _super);\n /**\n * Constructor for creating the widget.\n *\n * @private\n * @param {MenuBaseModel} options - Specifies the menu base model\n * @param {string | HTMLUListElement} element - Specifies the element\n */\n function MenuBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.navIdx = [];\n _this.animation = new Animation({});\n _this.isTapHold = false;\n _this.tempItem = [];\n _this.showSubMenuOn = 'Auto';\n return _this;\n }\n /**\n * Initialized third party configuration settings.\n *\n * @private\n * @returns {void}\n */\n MenuBase.prototype.preRender = function () {\n if (!this.isMenu) {\n var ul = void 0;\n if (this.element.tagName === 'EJS-CONTEXTMENU') {\n ul = this.createElement('ul', {\n id: getUniqueID(this.getModuleName()), className: 'e-control e-lib e-' + this.getModuleName()\n });\n var ejInst = getValue('ej2_instances', this.element);\n removeClass([this.element], ['e-control', 'e-lib', 'e-' + this.getModuleName()]);\n this.clonedElement = this.element;\n this.element = ul;\n setValue('ej2_instances', ejInst, this.element);\n }\n else {\n ul = this.createElement('ul', { id: getUniqueID(this.getModuleName()) });\n append([].slice.call(this.element.cloneNode(true).children), ul);\n var refEle = this.element.nextElementSibling;\n if (refEle) {\n this.element.parentElement.insertBefore(ul, refEle);\n }\n else {\n this.element.parentElement.appendChild(ul);\n }\n this.clonedElement = ul;\n }\n this.clonedElement.style.display = 'none';\n }\n if (this.element.tagName === 'EJS-MENU') {\n var ele = this.element;\n var ejInstance = getValue('ej2_instances', ele);\n var ul = this.createElement('ul');\n var wrapper = this.createElement('EJS-MENU', { className: 'e-' + this.getModuleName() + '-wrapper' });\n for (var idx = 0, len = ele.attributes.length; idx < len; idx++) {\n ul.setAttribute(ele.attributes[idx].nodeName, ele.attributes[idx].nodeValue);\n }\n ele.parentNode.insertBefore(wrapper, ele);\n detach(ele);\n ele = ul;\n wrapper.appendChild(ele);\n setValue('ej2_instances', ejInstance, ele);\n this.clonedElement = wrapper;\n this.element = ele;\n if (!this.element.id) {\n this.element.id = getUniqueID(this.getModuleName());\n }\n }\n };\n /**\n * Initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n MenuBase.prototype.render = function () {\n var _this = this;\n this.initialize();\n this.renderItems();\n this.wireEvents();\n this.renderComplete();\n var wrapper = this.getWrapper();\n // eslint-disable-next-line\n if (this.template && this.enableScrolling && (this.isReact || this.isAngular)) {\n requestAnimationFrame(function () {\n addScrolling(_this.createElement, wrapper, _this.element, 'hscroll', _this.enableRtl);\n });\n }\n };\n MenuBase.prototype.initialize = function () {\n var wrapper = this.getWrapper();\n if (!wrapper) {\n wrapper = this.createElement('div', { className: 'e-' + this.getModuleName() + '-wrapper' });\n if (this.isMenu) {\n this.element.parentElement.insertBefore(wrapper, this.element);\n }\n else {\n document.body.appendChild(wrapper);\n }\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.enableRtl) {\n wrapper.classList.add(RTL);\n }\n wrapper.appendChild(this.element);\n if (this.isMenu && this.hamburgerMode) {\n if (!this.target) {\n this.createHeaderContainer(wrapper);\n }\n }\n this.defaultOption = this.showItemOnClick;\n };\n MenuBase.prototype.renderItems = function () {\n if (!this.items.length) {\n var items = ListBase.createJsonFromElement(this.element, { fields: { child: 'items' } });\n this.setProperties({ items: items }, true);\n if (isBlazor() && !this.isMenu) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n }\n var ul = this.createItems(this.items);\n append(Array.prototype.slice.call(ul.children), this.element);\n this.element.classList.add('e-menu-parent');\n if (this.isMenu) {\n if (!this.hamburgerMode && this.element.classList.contains('e-vertical')) {\n this.setBlankIconStyle(this.element);\n }\n if (this.enableScrolling) {\n var wrapper = this.getWrapper();\n if (this.element.classList.contains('e-vertical')) {\n addScrolling(this.createElement, wrapper, this.element, 'vscroll', this.enableRtl);\n }\n else {\n addScrolling(this.createElement, wrapper, this.element, 'hscroll', this.enableRtl);\n }\n }\n }\n else {\n this.element.parentElement.setAttribute('role', 'dialog');\n this.element.parentElement.setAttribute('aria-label', 'context menu');\n }\n };\n MenuBase.prototype.wireEvents = function () {\n var wrapper = this.getWrapper();\n if (this.target) {\n var target = void 0;\n var targetElems = selectAll(this.target);\n for (var i = 0, len = targetElems.length; i < len; i++) {\n target = targetElems[i];\n if (this.isMenu) {\n EventHandler.add(target, 'click', this.menuHeaderClickHandler, this);\n }\n else {\n if (Browser.isIos) {\n new Touch(target, { tapHold: this.touchHandler.bind(this) });\n }\n else {\n EventHandler.add(target, 'contextmenu', this.cmenuHandler, this);\n }\n }\n }\n this.targetElement = target;\n if (!this.isMenu) {\n EventHandler.add(this.targetElement, 'scroll', this.scrollHandler, this);\n for (var _i = 0, _a = getScrollableParent(this.targetElement); _i < _a.length; _i++) {\n var parent_1 = _a[_i];\n EventHandler.add(parent_1, 'scroll', this.scrollHandler, this);\n }\n }\n }\n if (!Browser.isDevice) {\n this.delegateMoverHandler = this.moverHandler.bind(this);\n this.delegateMouseDownHandler = this.mouseDownHandler.bind(this);\n EventHandler.add(this.isMenu ? document : wrapper, 'mouseover', this.delegateMoverHandler, this);\n EventHandler.add(document, 'mousedown', this.delegateMouseDownHandler, this);\n }\n this.delegateClickHandler = this.clickHandler.bind(this);\n EventHandler.add(document, 'click', this.delegateClickHandler, this);\n this.wireKeyboardEvent(wrapper);\n this.rippleFn = rippleEffect(wrapper, { selector: '.' + ITEM });\n };\n MenuBase.prototype.wireKeyboardEvent = function (element) {\n var keyConfigs = {\n downarrow: DOWNARROW,\n uparrow: UPARROW,\n enter: ENTER,\n leftarrow: LEFTARROW,\n rightarrow: RIGHTARROW,\n escape: ESCAPE\n };\n if (this.isMenu) {\n keyConfigs.home = HOME;\n keyConfigs.end = END;\n keyConfigs.tab = TAB;\n }\n new KeyboardEvents(element, {\n keyAction: this.keyBoardHandler.bind(this),\n keyConfigs: keyConfigs\n });\n };\n MenuBase.prototype.mouseDownHandler = function (e) {\n if (closest(e.target, '.e-' + this.getModuleName() + '-wrapper') !== this.getWrapper()\n && (!closest(e.target, '.e-' + this.getModuleName() + '-popup'))) {\n this.closeMenu(this.isMenu ? null : this.navIdx.length, e);\n }\n };\n MenuBase.prototype.keyHandler = function (e) {\n if (e.keyCode === 38 || e.keyCode === 40) {\n if (e.target && (e.target.classList.contains('e-contextmenu') || e.target.classList.contains('e-menu-item'))) {\n e.preventDefault();\n }\n }\n };\n MenuBase.prototype.keyBoardHandler = function (e) {\n var actionName = '';\n var trgt = e.target;\n var actionNeeded = this.isMenu && !this.hamburgerMode && !this.element.classList.contains('e-vertical')\n && this.navIdx.length < 1;\n e.preventDefault();\n if (this.enableScrolling && e.keyCode === 13 && trgt.classList.contains('e-scroll-nav')) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [closest(trgt, '.e-' + this.getModuleName() + '-wrapper')]);\n }\n if (actionNeeded) {\n switch (e.action) {\n case RIGHTARROW:\n actionName = RIGHTARROW;\n e.action = DOWNARROW;\n break;\n case LEFTARROW:\n actionName = LEFTARROW;\n e.action = UPARROW;\n break;\n case DOWNARROW:\n actionName = DOWNARROW;\n e.action = RIGHTARROW;\n break;\n case UPARROW:\n actionName = UPARROW;\n e.action = '';\n break;\n }\n }\n else if (this.enableRtl) {\n switch (e.action) {\n case LEFTARROW:\n actionNeeded = true;\n actionName = LEFTARROW;\n e.action = RIGHTARROW;\n break;\n case RIGHTARROW:\n actionNeeded = true;\n actionName = RIGHTARROW;\n e.action = LEFTARROW;\n break;\n }\n }\n switch (e.action) {\n case DOWNARROW:\n case UPARROW:\n case END:\n case HOME:\n case TAB:\n this.upDownKeyHandler(e);\n break;\n case RIGHTARROW:\n this.rightEnterKeyHandler(e);\n break;\n case LEFTARROW:\n this.leftEscKeyHandler(e);\n break;\n case ENTER:\n if (this.hamburgerMode && trgt.tagName === 'SPAN' && trgt.classList.contains('e-menu-icon')) {\n this.menuHeaderClickHandler(e);\n }\n else {\n this.rightEnterKeyHandler(e);\n }\n break;\n case ESCAPE:\n this.leftEscKeyHandler(e);\n break;\n }\n if (actionNeeded) {\n e.action = actionName;\n }\n };\n MenuBase.prototype.upDownKeyHandler = function (e) {\n var cul = this.getUlByNavIdx();\n var defaultIdx = (e.action === DOWNARROW || e.action === HOME || e.action === TAB) ? 0 : cul.childElementCount - 1;\n var fliIdx = defaultIdx;\n var fli = this.getLIByClass(cul, FOCUSED);\n if (fli) {\n if (e.action !== END && e.action !== HOME) {\n fliIdx = this.getIdx(cul, fli);\n }\n fli.classList.remove(FOCUSED);\n if (e.action !== END && e.action !== HOME) {\n if (e.action === DOWNARROW) {\n fliIdx++;\n }\n else {\n fliIdx--;\n }\n if (fliIdx === (e.action === DOWNARROW ? cul.childElementCount : -1)) {\n fliIdx = defaultIdx;\n }\n }\n }\n var cli = cul.children[fliIdx];\n fliIdx = this.isValidLI(cli, fliIdx, e.action);\n cul.children[fliIdx].classList.add(FOCUSED);\n cul.children[fliIdx].focus();\n };\n MenuBase.prototype.isValidLI = function (cli, index, action) {\n var cul = this.getUlByNavIdx();\n var defaultIdx = (action === DOWNARROW || action === HOME || action === TAB) ? 0 : cul.childElementCount - 1;\n if (cli.classList.contains(SEPARATOR) || cli.classList.contains(DISABLED) || cli.classList.contains(HIDE)) {\n if (action === DOWNARROW && index === cul.childElementCount - 1) {\n index = defaultIdx;\n }\n else if (action === UPARROW && index === 0) {\n index = defaultIdx;\n }\n else if ((action === DOWNARROW) || (action === RIGHTARROW)) {\n index++;\n }\n else if (action === 'tab' && cli.classList.contains(SEPARATOR)) {\n index++;\n }\n else {\n index--;\n }\n }\n cli = cul.children[index];\n if (cli && (cli.classList.contains(SEPARATOR) || cli.classList.contains(DISABLED) || cli.classList.contains(HIDE))) {\n index = this.isValidLI(cli, index, action);\n }\n return index;\n };\n MenuBase.prototype.getUlByNavIdx = function (navIdxLen) {\n var _this = this;\n if (navIdxLen === void 0) { navIdxLen = this.navIdx.length; }\n if (this.isMenu) {\n var popup = [this.getWrapper()].concat([].slice.call(selectAll('.' + POPUP)))[navIdxLen];\n var popups_1 = [];\n var allPopup = selectAll('.' + POPUP);\n allPopup.forEach(function (elem) {\n if (_this.element.id === elem.id.split('-')[2] || elem.id.split('-')[2] + '-' + elem.id.split('-')[3]) {\n popups_1.push(elem);\n }\n });\n popup = [this.getWrapper()].concat([].slice.call(popups_1))[navIdxLen];\n return isNullOrUndefined(popup) ? null : select('.e-menu-parent', popup);\n }\n else {\n if (!document.body.contains(this.element) && navIdxLen === 0) {\n return null;\n }\n return this.getWrapper().children[navIdxLen];\n }\n };\n MenuBase.prototype.rightEnterKeyHandler = function (e) {\n var eventArgs;\n var cul = this.getUlByNavIdx();\n var fli = this.getLIByClass(cul, FOCUSED);\n if (fli) {\n var fliIdx = this.getIdx(cul, fli);\n var navIdx = this.navIdx.concat(fliIdx);\n var item = this.getItem(navIdx);\n if (item.items.length) {\n this.navIdx.push(fliIdx);\n this.keyType = 'right';\n this.action = e.action;\n this.openMenu(fli, item, -1, -1, e);\n }\n else {\n if (e.action === ENTER) {\n if (this.isMenu && this.navIdx.length === 0) {\n this.removeLIStateByClass([SELECTED], [this.getWrapper()]);\n }\n else {\n fli.classList.remove(FOCUSED);\n }\n fli.classList.add(SELECTED);\n eventArgs = { element: fli, item: item, event: e };\n this.trigger('select', eventArgs);\n var aEle = fli.querySelector('.e-menu-url');\n if (item.url && aEle) {\n switch (aEle.getAttribute('target')) {\n case '_blank':\n window.open(item.url, '_blank');\n break;\n case '_parent':\n window.parent.location.href = item.url;\n break;\n default:\n window.location.href = item.url;\n }\n }\n this.closeMenu(null, e);\n var sli = this.getLIByClass(this.getUlByNavIdx(), SELECTED);\n if (sli) {\n sli.classList.add(FOCUSED);\n sli.focus();\n }\n }\n }\n }\n };\n MenuBase.prototype.leftEscKeyHandler = function (e) {\n if (this.navIdx.length) {\n this.keyType = 'left';\n this.closeMenu(this.navIdx.length, e);\n }\n else {\n if (e.action === ESCAPE) {\n this.closeMenu(null, e);\n }\n }\n };\n MenuBase.prototype.scrollHandler = function (e) {\n this.closeMenu(null, e);\n };\n MenuBase.prototype.touchHandler = function (e) {\n this.isTapHold = true;\n this.cmenuHandler(e.originalEvent);\n };\n MenuBase.prototype.cmenuHandler = function (e) {\n e.preventDefault();\n this.currentTarget = e.target;\n this.isCMenu = true;\n this.pageX = e.changedTouches ? e.changedTouches[0].pageX + 1 : e.pageX + 1;\n this.pageY = e.changedTouches ? e.changedTouches[0].pageY + 1 : e.pageY + 1;\n this.closeMenu(null, e);\n if (this.isCMenu) {\n if (this.canOpen(e.target)) {\n this.openMenu(null, null, this.pageY, this.pageX, e);\n }\n this.isCMenu = false;\n }\n };\n // eslint:disable-next-line:max-func-body-length\n MenuBase.prototype.closeMenu = function (ulIndex, e, isIterated) {\n var _this = this;\n if (ulIndex === void 0) { ulIndex = 0; }\n if (e === void 0) { e = null; }\n if (this.isMenuVisible()) {\n var sli = void 0;\n var item_1;\n var wrapper_1 = this.getWrapper();\n var beforeCloseArgs = void 0;\n var items_1;\n var popups = this.getPopups();\n var isClose = false;\n var cnt = this.isMenu ? popups.length + 1 : wrapper_1.childElementCount;\n var ul_1 = this.isMenu && cnt !== 1 ? select('.e-ul', popups[cnt - 2])\n : selectAll('.e-menu-parent', wrapper_1)[cnt - 1];\n if (this.isMenu && ul_1.classList.contains('e-menu')) {\n sli = this.getLIByClass(ul_1, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n isClose = true;\n }\n if (!isClose) {\n var liElem_1 = e && e.target && this.getLI(e.target);\n if (liElem_1) {\n this.cli = liElem_1;\n }\n else {\n this.cli = ul_1.children[0];\n }\n item_1 = this.navIdx.length ? this.getItem(this.navIdx) : null;\n items_1 = item_1 ? item_1.items : this.items;\n beforeCloseArgs = { element: ul_1, parentItem: item_1, items: items_1, event: e, cancel: false, isFocused: true };\n this.trigger('beforeClose', beforeCloseArgs, function (observedCloseArgs) {\n var popupEle;\n var closeArgs;\n var popupId = '';\n var popupObj;\n var isOpen = !observedCloseArgs.cancel;\n if (isOpen || _this.isCMenu) {\n if (_this.isMenu) {\n popupEle = closest(ul_1, '.' + POPUP);\n if (_this.hamburgerMode) {\n popupEle.parentElement.style.minHeight = '';\n closest(ul_1, '.e-menu-item').setAttribute('aria-expanded', 'false');\n }\n _this.unWireKeyboardEvent(popupEle);\n destroyScroll(getInstance(popupEle.children[0], VScroll), popupEle.children[0]);\n popupObj = getInstance(popupEle, Popup);\n popupObj.hide();\n popupId = popupEle.id;\n popupObj.destroy();\n detach(popupEle);\n }\n else {\n _this.isContextMenuClosed = false;\n _this.toggleAnimation(ul_1, false);\n }\n closeArgs = { element: ul_1, parentItem: item_1, items: items_1 };\n _this.trigger('onClose', closeArgs);\n _this.navIdx.pop();\n if (_this.navIdx.length === 0 && e && e.type === 'keyup') {\n _this.showSubMenu = false;\n }\n if (!_this.isMenu) {\n EventHandler.remove(ul_1, 'keydown', _this.keyHandler);\n if (_this.keyType === 'right') {\n _this.keyType = '';\n }\n }\n }\n _this.updateReactTemplate();\n var trgtliId;\n var closedLi;\n var trgtLi;\n var trgtpopUp = _this.getWrapper() && _this.getUlByNavIdx();\n if (_this.isCMenu) {\n if (_this.canOpen(e.target)) {\n _this.openMenu(null, null, _this.pageY, _this.pageX, e);\n }\n _this.isCMenu = false;\n }\n if (_this.isMenu && trgtpopUp && popupId.length) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var regExp = RegExp;\n trgtliId = new regExp('(.*)-ej2menu-' + _this.element.id + '-popup').exec(popupId)[1];\n closedLi = trgtpopUp.querySelector('[id=\"' + trgtliId + '\"]');\n trgtLi = (liElem_1 && trgtpopUp.querySelector('[id=\"' + liElem_1.id + '\"]'));\n }\n else if (trgtpopUp) {\n closedLi = trgtpopUp.querySelector('.e-menu-item.e-selected');\n trgtLi = (liElem_1 && trgtpopUp.querySelector('[id=\"' + liElem_1.id + '\"]'));\n }\n var submenus = liElem_1 && liElem_1.querySelectorAll('.e-menu-item');\n if (isOpen && _this.hamburgerMode && ulIndex && !(submenus.length)) {\n _this.afterCloseMenu(e);\n }\n else if (isOpen && !_this.hamburgerMode && closedLi && !trgtLi && _this.keyType !== 'left' && (_this.navIdx.length || !_this.isMenu && _this.navIdx.length === 0)) {\n var ele = (e && (e.target.classList.contains('e-vscroll') || e.target.classList.contains('e-scroll-nav')))\n ? closest(e.target, '.e-menu-wrapper') : null;\n if (ele) {\n ele = ele.querySelector('.e-menu-item');\n if (_this.showItemOnClick || (ele && _this.getIndex(ele.id, true).length <= _this.navIdx.length)) {\n _this.closeMenu(_this.navIdx[_this.navIdx.length - 1], e, true);\n }\n }\n else {\n if (!(e && e.target.classList.contains('e-nav-arrow'))) {\n _this.closeMenu(_this.navIdx[_this.navIdx.length - 1], e);\n }\n }\n }\n else if (isOpen && !isIterated && !ulIndex && ((_this.hamburgerMode && _this.navIdx.length) ||\n _this.navIdx.length === 1 && liElem_1 && trgtpopUp !== liElem_1.parentElement)) {\n _this.closeMenu(null, e);\n }\n else if (isOpen && isNullOrUndefined(ulIndex) && _this.navIdx.length) {\n _this.closeMenu(null, e);\n }\n else if (isOpen && !_this.isMenu && !ulIndex && _this.navIdx.length === 0 &&\n !_this.isMenusClosed && !_this.isCmenuHover) {\n _this.isMenusClosed = true;\n _this.closeMenu(0, e);\n }\n else if (isOpen && _this.isMenu && e && e.target &&\n _this.navIdx.length !== 0 && closest(e.target, '.e-menu-parent.e-control')) {\n _this.closeMenu(0, e);\n }\n else if (isOpen && !_this.isMenu && selectAll('.e-menu-parent', wrapper_1)[ulIndex - 1] && e.which === 3) {\n _this.closeMenu(null, e);\n }\n else {\n if (isOpen && (_this.keyType === 'right' || _this.keyType === 'click')) {\n _this.afterCloseMenu(e);\n }\n else {\n var cul = _this.getUlByNavIdx();\n var sli_1 = _this.getLIByClass(cul, SELECTED);\n if (sli_1) {\n sli_1.setAttribute('aria-expanded', 'false');\n sli_1.classList.remove(SELECTED);\n if (observedCloseArgs.isFocused && liElem_1 || _this.keyType === 'left') {\n sli_1.classList.add(FOCUSED);\n if (!e.target || !e.target.classList.contains('e-edit-template')) {\n sli_1.focus();\n }\n }\n }\n if (!isOpen && _this.hamburgerMode && liElem_1 && liElem_1.getAttribute('aria-expanded') === 'false' &&\n liElem_1.getAttribute('aria-haspopup') === 'true') {\n if (closest(liElem_1, '.e-menu-parent.e-control')) {\n _this.navIdx = [];\n }\n else {\n _this.navIdx.pop();\n }\n _this.navIdx.push(_this.cliIdx);\n var item_2 = _this.getItem(_this.navIdx);\n liElem_1.setAttribute('aria-expanded', 'true');\n _this.openMenu(liElem_1, item_2, -1, -1, e);\n }\n }\n if (_this.navIdx.length < 1) {\n if (_this.showSubMenuOn === 'Hover' || _this.showSubMenuOn === 'Click') {\n _this.showItemOnClick = _this.defaultOption;\n _this.showSubMenuOn = 'Auto';\n }\n }\n }\n _this.removeStateWrapper();\n });\n }\n }\n };\n MenuBase.prototype.updateReactTemplate = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact && this.template && this.navIdx.length === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var portals = this.portals.splice(0, this.items.length);\n this.clearTemplate(['template']);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.portals = portals;\n this.renderReactTemplates();\n }\n };\n MenuBase.prototype.getMenuItemModel = function (item, level) {\n if (isNullOrUndefined(item)) {\n return null;\n }\n if (isNullOrUndefined(level)) {\n level = 0;\n }\n var fields = this.getFields(level);\n return { text: item[fields.text], id: item[fields.id], items: item[fields.child], separator: item[fields.separator],\n iconCss: item[fields.iconCss], url: item[fields.url] };\n };\n MenuBase.prototype.getPopups = function () {\n var _this = this;\n var popups = [];\n [].slice.call(document.querySelectorAll('.' + POPUP)).forEach(function (elem) {\n if (!isNullOrUndefined(elem.querySelector('.' + ITEM)) && _this.getIndex(elem.querySelector('.' + ITEM).id, true).length) {\n popups.push(elem);\n }\n });\n return popups;\n };\n MenuBase.prototype.isMenuVisible = function () {\n return (this.navIdx.length > 0 || (this.element.classList.contains('e-contextmenu') && isVisible(this.element).valueOf()));\n };\n MenuBase.prototype.canOpen = function (target) {\n var canOpen = true;\n if (this.filter) {\n canOpen = false;\n var filter = this.filter.split(' ');\n for (var i = 0, len = filter.length; i < len; i++) {\n if (closest(target, '.' + filter[i])) {\n canOpen = true;\n break;\n }\n }\n }\n return canOpen;\n };\n MenuBase.prototype.openMenu = function (li, item, top, left, e, target) {\n var _this = this;\n if (top === void 0) { top = 0; }\n if (left === void 0) { left = 0; }\n if (e === void 0) { e = null; }\n if (target === void 0) { target = this.targetElement; }\n var wrapper = this.getWrapper();\n this.lItem = li;\n var elemId = this.element.id !== '' ? this.element.id : 'menu';\n this.isMenusClosed = false;\n if (isNullOrUndefined(top)) {\n top = -1;\n }\n if (isNullOrUndefined(left)) {\n left = -1;\n }\n if (li) {\n this.uList = this.createItems(item[this.getField('children', this.navIdx.length - 1)]);\n if (!this.isMenu && Browser.isDevice) {\n wrapper.lastChild.style.display = 'none';\n var data = {\n text: item[this.getField('text')].toString(), iconCss: ICONS + ' e-previous'\n };\n var hdata = new MenuItem(this.items[0], 'items', data, true);\n var hli = this.createItems([hdata]).children[0];\n hli.classList.add(HEADER);\n this.uList.insertBefore(hli, this.uList.children[0]);\n }\n if (this.isMenu) {\n this.popupWrapper = this.createElement('div', {\n className: 'e-' + this.getModuleName() + '-wrapper ' + POPUP, id: li.id + '-ej2menu-' + elemId + '-popup'\n });\n if (this.hamburgerMode) {\n top = li.offsetHeight;\n li.appendChild(this.popupWrapper);\n }\n else {\n document.body.appendChild(this.popupWrapper);\n }\n this.isNestedOrVertical = this.element.classList.contains('e-vertical') || this.navIdx.length !== 1;\n this.popupObj = this.generatePopup(this.popupWrapper, this.uList, li, this.isNestedOrVertical);\n if (this.template) {\n this.renderReactTemplates();\n }\n if (this.hamburgerMode) {\n this.calculateIndentSize(this.uList, li);\n }\n else {\n if (this.cssClass) {\n addClass([this.popupWrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n this.popupObj.hide();\n }\n if (!this.hamburgerMode && !this.showItemOnClick && this.hoverDelay) {\n window.clearInterval(this.timer);\n this.timer = window.setTimeout(function () { _this.triggerBeforeOpen(li, _this.uList, item, e, 0, 0, 'menu'); }, this.hoverDelay);\n }\n else {\n this.triggerBeforeOpen(li, this.uList, item, e, 0, 0, 'menu');\n }\n }\n else {\n this.uList.style.zIndex = this.element.style.zIndex;\n wrapper.appendChild(this.uList);\n if (!this.showItemOnClick && this.hoverDelay) {\n window.clearInterval(this.timer);\n this.timer = window.setTimeout(function () { _this.triggerBeforeOpen(li, _this.uList, item, e, top, left, 'none'); }, this.hoverDelay);\n }\n else {\n this.triggerBeforeOpen(li, this.uList, item, e, top, left, 'none');\n }\n }\n }\n else {\n this.uList = this.element;\n this.uList.style.zIndex = getZindexPartial(target ? target : this.element).toString();\n if (isNullOrUndefined(e)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var ev = document.createEvent('MouseEvents');\n ev.initEvent('click', true, false);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var targetEvent = this.copyObject(ev, {});\n targetEvent.target = targetEvent.srcElement = target;\n targetEvent.currentTarget = target;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.triggerBeforeOpen(li, this.uList, item, targetEvent, top, left, 'none');\n }\n else {\n this.triggerBeforeOpen(li, this.uList, item, e, top, left, 'none');\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n MenuBase.prototype.copyObject = function (source, destination) {\n // eslint-disable-next-line guard-for-in\n for (var prop in source) {\n destination[\"\" + prop] = source[\"\" + prop];\n }\n return destination;\n };\n MenuBase.prototype.calculateIndentSize = function (ul, li) {\n var liStyle = getComputedStyle(li);\n var liIndent = parseInt(liStyle.textIndent, 10);\n if (this.navIdx.length < 2 && !li.classList.contains('e-blankicon')) {\n liIndent *= 2;\n }\n else {\n liIndent += (liIndent / 4);\n }\n ul.style.textIndent = liIndent + 'px';\n var blankIconElem = ul.querySelectorAll('.e-blankicon');\n if (blankIconElem && blankIconElem.length) {\n var menuIconElem = ul.querySelector('.e-menu-icon');\n var menuIconElemStyle = getComputedStyle(menuIconElem);\n var blankIconIndent = (parseInt(menuIconElemStyle.marginRight, 10) + menuIconElem.offsetWidth + liIndent);\n for (var i = 0; i < blankIconElem.length; i++) {\n blankIconElem[i].style.textIndent = blankIconIndent + 'px';\n }\n }\n };\n MenuBase.prototype.generatePopup = function (popupWrapper, ul, li, isNestedOrVertical) {\n var _this = this;\n var popupObj = new Popup(popupWrapper, {\n actionOnScroll: this.hamburgerMode ? 'none' : 'reposition',\n relateTo: li,\n collision: this.hamburgerMode ? { X: 'none', Y: 'none' } : { X: isNestedOrVertical ||\n this.enableRtl ? 'none' : 'flip', Y: 'fit' },\n position: (isNestedOrVertical && !this.hamburgerMode) ? { X: 'right', Y: 'top' } : { X: 'left', Y: 'bottom' },\n targetType: 'relative',\n enableRtl: this.enableRtl,\n content: ul,\n open: function () {\n var scrollEle = select('.e-menu-vscroll', popupObj.element);\n if (scrollEle) {\n scrollEle.style.height = 'inherit';\n scrollEle.style.maxHeight = '';\n }\n var ul = select('.e-ul', popupObj.element);\n popupObj.element.style.maxHeight = '';\n ul.focus();\n _this.triggerOpen(ul);\n }\n });\n return popupObj;\n };\n MenuBase.prototype.createHeaderContainer = function (wrapper) {\n wrapper = wrapper || this.getWrapper();\n var spanElem = this.createElement('span', { className: 'e-' + this.getModuleName() + '-header' });\n var tempTitle = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(this.title) : this.title;\n var spanTitle = this.createElement('span', {\n className: 'e-' + this.getModuleName() + '-title', innerHTML: tempTitle\n });\n var spanIcon = this.createElement('span', {\n className: 'e-icons e-' + this.getModuleName() + '-icon', attrs: { 'tabindex': '0' }\n });\n spanElem.appendChild(spanTitle);\n spanElem.appendChild(spanIcon);\n wrapper.insertBefore(spanElem, this.element);\n };\n MenuBase.prototype.openHamburgerMenu = function (e) {\n if (this.hamburgerMode) {\n this.triggerBeforeOpen(null, this.element, null, e, 0, 0, 'hamburger');\n }\n };\n MenuBase.prototype.closeHamburgerMenu = function (e) {\n var _this = this;\n var beforeCloseArgs = { element: this.element, parentItem: null, event: e,\n items: this.items, cancel: false };\n this.trigger('beforeClose', beforeCloseArgs, function (observedHamburgerCloseArgs) {\n if (!observedHamburgerCloseArgs.cancel) {\n _this.closeMenu(null, e);\n _this.element.classList.add('e-hide-menu');\n _this.trigger('onClose', { element: _this.element, parentItem: null, items: _this.items });\n }\n });\n };\n MenuBase.prototype.callFit = function (element, x, y, top, left) {\n return fit(element, null, { X: x, Y: y }, { top: top, left: left });\n };\n MenuBase.prototype.triggerBeforeOpen = function (li, ul, item, e, top, left, type) {\n var _this = this;\n var items = li ? item[this.getField('children', this.navIdx.length - 1)] : this.items;\n var eventArgs = {\n element: ul, items: items, parentItem: item, event: e, cancel: false, top: top, left: left, showSubMenuOn: 'Auto'\n };\n var menuType = type;\n this.trigger('beforeOpen', eventArgs, function (observedOpenArgs) {\n switch (menuType) {\n case 'menu':\n if (!_this.hamburgerMode) {\n if (observedOpenArgs.showSubMenuOn !== 'Auto') {\n _this.showItemOnClick = !_this.defaultOption;\n _this.showSubMenuOn = observedOpenArgs.showSubMenuOn;\n }\n _this.top = observedOpenArgs.top;\n _this.left = observedOpenArgs.left;\n }\n _this.popupWrapper.style.display = 'block';\n if (!_this.hamburgerMode) {\n _this.popupWrapper.style.maxHeight = _this.popupWrapper.getBoundingClientRect().height + 'px';\n if (_this.enableScrolling) {\n addScrolling(_this.createElement, _this.popupWrapper, _this.uList, 'vscroll', _this.enableRtl);\n }\n _this.checkScrollOffset(e);\n }\n if (!_this.hamburgerMode && !_this.left && !_this.top) {\n _this.popupObj.refreshPosition(_this.lItem, true);\n _this.left = parseInt(_this.popupWrapper.style.left, 10);\n _this.top = parseInt(_this.popupWrapper.style.top, 10);\n if (_this.enableRtl) {\n _this.left =\n _this.isNestedOrVertical ? _this.left - _this.popupWrapper.offsetWidth - _this.lItem.parentElement.offsetWidth + 2\n : _this.left - _this.popupWrapper.offsetWidth + _this.lItem.offsetWidth;\n }\n // eslint-disable-next-line\n if (_this.template && (_this.isReact || _this.isAngular)) {\n requestAnimationFrame(function () {\n _this.collision();\n _this.popupWrapper.style.display = '';\n });\n }\n else {\n _this.collision();\n _this.popupWrapper.style.display = '';\n }\n }\n else {\n _this.popupObj.collision = { X: 'none', Y: 'none' };\n _this.popupWrapper.style.display = '';\n }\n break;\n case 'none':\n _this.top = observedOpenArgs.top;\n _this.left = observedOpenArgs.left;\n _this.isContextMenuClosed = true;\n break;\n case 'hamburger':\n if (!observedOpenArgs.cancel) {\n _this.element.classList.remove('e-hide-menu');\n _this.triggerOpen(_this.element);\n }\n break;\n }\n if (menuType !== 'hamburger') {\n if (observedOpenArgs.cancel) {\n if (_this.isMenu) {\n _this.popupObj.destroy();\n detach(_this.popupWrapper);\n }\n else if (ul.className.indexOf('e-ul') > -1) {\n detach(ul);\n }\n _this.navIdx.pop();\n }\n else {\n if (_this.isMenu) {\n if (_this.hamburgerMode) {\n _this.popupWrapper.style.top = _this.top + 'px';\n _this.popupWrapper.style.left = 0 + 'px';\n _this.toggleAnimation(_this.popupWrapper);\n }\n else {\n _this.setBlankIconStyle(_this.popupWrapper);\n _this.wireKeyboardEvent(_this.popupWrapper);\n rippleEffect(_this.popupWrapper, { selector: '.' + ITEM });\n _this.popupWrapper.style.left = _this.left + 'px';\n _this.popupWrapper.style.top = _this.top + 'px';\n var animationOptions = _this.animationSettings.effect !== 'None' ? {\n name: _this.animationSettings.effect, duration: _this.animationSettings.duration,\n timingFunction: _this.animationSettings.easing\n } : null;\n _this.popupObj.show(animationOptions, _this.lItem);\n }\n }\n else {\n _this.setBlankIconStyle(_this.uList);\n _this.setPosition(_this.lItem, _this.uList, _this.top, _this.left);\n _this.toggleAnimation(_this.uList);\n }\n }\n }\n if (_this.keyType === 'right') {\n var cul = _this.getUlByNavIdx();\n li.classList.remove(FOCUSED);\n if (_this.isMenu && _this.navIdx.length === 1) {\n _this.removeLIStateByClass([SELECTED], [_this.getWrapper()]);\n }\n li.classList.add(SELECTED);\n if (_this.action === ENTER) {\n var eventArgs_1 = { element: li, item: item, event: e };\n _this.trigger('select', eventArgs_1);\n }\n li.focus();\n cul = _this.getUlByNavIdx();\n var index = _this.isValidLI(cul.children[0], 0, _this.action);\n cul.children[index].classList.add(FOCUSED);\n cul.children[index].focus();\n }\n });\n };\n MenuBase.prototype.collision = function () {\n var collide;\n collide = isCollide(this.popupWrapper, null, this.left, this.top);\n if ((this.isNestedOrVertical || this.enableRtl) && (collide.indexOf('right') > -1\n || collide.indexOf('left') > -1)) {\n this.popupObj.collision.X = 'none';\n var offWidth = closest(this.lItem, '.e-' + this.getModuleName() + '-wrapper').offsetWidth;\n this.left =\n this.enableRtl ? calculatePosition(this.lItem, this.isNestedOrVertical ? 'right' : 'left', 'top').left\n : this.left - this.popupWrapper.offsetWidth - offWidth + 2;\n }\n collide = isCollide(this.popupWrapper, null, this.left, this.top);\n if (collide.indexOf('left') > -1 || collide.indexOf('right') > -1) {\n this.left = this.callFit(this.popupWrapper, true, false, this.top, this.left).left;\n }\n this.popupWrapper.style.left = this.left + 'px';\n };\n MenuBase.prototype.setBlankIconStyle = function (menu) {\n var blankIconList = [].slice.call(menu.getElementsByClassName('e-blankicon'));\n if (!blankIconList.length) {\n return;\n }\n var iconLi = menu.querySelector('.e-menu-item:not(.e-blankicon):not(.e-separator)');\n if (!iconLi) {\n return;\n }\n var icon = iconLi.querySelector('.e-menu-icon');\n if (!icon) {\n return;\n }\n var cssProp = this.enableRtl ? { padding: 'paddingRight', margin: 'marginLeft' } :\n { padding: 'paddingLeft', margin: 'marginRight' };\n var iconCssProps = getComputedStyle(icon);\n var iconSize = parseInt(iconCssProps.fontSize, 10);\n if (!!parseInt(iconCssProps.width, 10) && parseInt(iconCssProps.width, 10) > iconSize) {\n iconSize = parseInt(iconCssProps.width, 10);\n }\n // eslint:disable\n var size = iconSize + parseInt(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n iconCssProps[cssProp.margin], 10) + parseInt(getComputedStyle(iconLi)[cssProp.padding], 10) + \"px\";\n blankIconList.forEach(function (li) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n li.style[cssProp.padding] = size;\n });\n // eslint:enable\n };\n MenuBase.prototype.checkScrollOffset = function (e) {\n var wrapper = this.getWrapper();\n if (wrapper.children[0].classList.contains('e-menu-hscroll') && this.navIdx.length === 1) {\n var trgt = isNullOrUndefined(e) ? this.element : closest(e.target, '.' + ITEM);\n var offsetEle = select('.e-hscroll-bar', wrapper);\n if (offsetEle.scrollLeft > trgt.offsetLeft) {\n offsetEle.scrollLeft -= (offsetEle.scrollLeft - trgt.offsetLeft);\n }\n var offsetLeft = offsetEle.scrollLeft + offsetEle.offsetWidth;\n var offsetRight = trgt.offsetLeft + trgt.offsetWidth;\n if (offsetLeft < offsetRight) {\n offsetEle.scrollLeft += (offsetRight - offsetLeft);\n }\n }\n };\n MenuBase.prototype.setPosition = function (li, ul, top, left) {\n var px = 'px';\n this.toggleVisiblity(ul);\n if (ul === this.element || (left > -1 && top > -1)) {\n var collide = isCollide(ul, null, left, top);\n if (collide.indexOf('right') > -1) {\n left = left - ul.offsetWidth;\n }\n if (collide.indexOf('bottom') > -1) {\n var offset = this.callFit(ul, false, true, top, left);\n top = offset.top - 20;\n if (top < 0) {\n var newTop = (pageYOffset + document.documentElement.clientHeight) - ul.getBoundingClientRect().height;\n if (newTop > -1) {\n top = newTop;\n }\n }\n }\n collide = isCollide(ul, null, left, top);\n if (collide.indexOf('left') > -1) {\n var offset = this.callFit(ul, true, false, top, left);\n left = offset.left;\n }\n }\n else {\n if (Browser.isDevice) {\n top = Number(this.element.style.top.replace(px, ''));\n left = Number(this.element.style.left.replace(px, ''));\n }\n else {\n var x = this.enableRtl ? 'left' : 'right';\n var offset = calculatePosition(li, x, 'top');\n top = offset.top;\n left = offset.left;\n var collide = isCollide(ul, null, this.enableRtl ? left - ul.offsetWidth : left, top);\n var xCollision = collide.indexOf('left') > -1 || collide.indexOf('right') > -1;\n if (xCollision) {\n offset = calculatePosition(li, this.enableRtl ? 'right' : 'left', 'top');\n left = offset.left;\n }\n if (this.enableRtl || xCollision) {\n left = (this.enableRtl && xCollision) ? left : left - ul.offsetWidth;\n }\n if (collide.indexOf('bottom') > -1) {\n offset = this.callFit(ul, false, true, top, left);\n top = offset.top;\n }\n }\n }\n this.toggleVisiblity(ul, false);\n ul.style.top = top + px;\n ul.style.left = left + px;\n };\n MenuBase.prototype.toggleVisiblity = function (ul, isVisible) {\n if (isVisible === void 0) { isVisible = true; }\n ul.style.visibility = isVisible ? 'hidden' : '';\n ul.style.display = isVisible ? 'block' : 'none';\n };\n MenuBase.prototype.createItems = function (items) {\n var _this = this;\n var level = this.navIdx ? this.navIdx.length : 0;\n var fields = this.getFields(level);\n var showIcon = this.hasField(items, this.getField('iconCss', level));\n var listBaseOptions = {\n showIcon: showIcon,\n moduleName: 'menu',\n fields: fields,\n template: this.template,\n itemNavigable: true,\n itemCreating: function (args) {\n if (!args.curData[args.fields[fields.id]]) {\n args.curData[args.fields[fields.id]] = getUniqueID('menuitem');\n }\n if (isNullOrUndefined(args.curData.htmlAttributes)) {\n args.curData.htmlAttributes = {};\n }\n if (Browser.isIE) {\n args.curData.htmlAttributes.role = 'menuitem';\n args.curData.htmlAttributes.tabindex = '-1';\n }\n else {\n Object.assign(args.curData.htmlAttributes, { role: 'menuitem', tabindex: '-1' });\n }\n if (_this.isMenu && !args.curData[_this.getField('separator', level)]) {\n args.curData.htmlAttributes['aria-label'] = args.curData[args.fields.text] ?\n args.curData[args.fields.text] : args.curData[args.fields.id];\n }\n if (args.curData[args.fields[fields.iconCss]] === '') {\n args.curData[args.fields[fields.iconCss]] = null;\n }\n },\n itemCreated: function (args) {\n if (args.curData[_this.getField('separator', level)]) {\n args.item.classList.add(SEPARATOR);\n args.item.setAttribute('role', 'separator');\n }\n if (showIcon && !args.curData[args.fields.iconCss]\n && !args.curData[_this.getField('separator', level)]) {\n args.item.classList.add('e-blankicon');\n }\n if (args.curData[args.fields.child]\n && args.curData[args.fields.child].length) {\n var span = _this.createElement('span', { className: ICONS + ' ' + CARET });\n args.item.appendChild(span);\n args.item.setAttribute('aria-haspopup', 'true');\n args.item.setAttribute('aria-expanded', 'false');\n args.item.classList.add('e-menu-caret-icon');\n }\n if (_this.isMenu && _this.template) {\n args.item.setAttribute('id', args.curData[args.fields.id].toString());\n args.item.removeAttribute('data-uid');\n if (args.item.classList.contains('e-level-1')) {\n args.item.classList.remove('e-level-1');\n }\n if (args.item.classList.contains('e-has-child')) {\n args.item.classList.remove('e-has-child');\n }\n args.item.removeAttribute('aria-level');\n }\n var eventArgs = { item: args.curData, element: args.item };\n _this.trigger('beforeItemRender', eventArgs);\n }\n };\n this.setProperties({ 'items': this.items }, true);\n if (this.isMenu) {\n listBaseOptions.templateID = this.element.id + TEMPLATE_PROPERTY;\n }\n var ul = ListBase.createList(this.createElement, items, listBaseOptions, !this.template, this);\n ul.setAttribute('tabindex', '0');\n if (this.isMenu) {\n ul.setAttribute('role', 'menu');\n }\n else {\n ul.setAttribute('role', 'menubar');\n }\n return ul;\n };\n MenuBase.prototype.moverHandler = function (e) {\n var trgt = e.target;\n this.liTrgt = trgt;\n if (!this.isMenu) {\n this.isCmenuHover = true;\n }\n var cli = this.getLI(trgt);\n var wrapper = cli ? closest(cli, '.e-' + this.getModuleName() + '-wrapper') : this.getWrapper();\n var hdrWrapper = this.getWrapper();\n var regex = new RegExp('-ej2menu-(.*)-popup');\n var ulId;\n var isDifferentElem = false;\n if (!wrapper) {\n return;\n }\n if (wrapper.id !== '') {\n ulId = regex.exec(wrapper.id)[1];\n }\n else {\n ulId = wrapper.querySelector('ul').id;\n }\n if (ulId !== this.element.id) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [this.getWrapper()]);\n if (this.navIdx.length) {\n isDifferentElem = true;\n }\n else {\n return;\n }\n }\n if (cli && closest(cli, '.e-' + this.getModuleName() + '-wrapper') && !isDifferentElem) {\n this.removeLIStateByClass([FOCUSED], this.isMenu ? [wrapper].concat(this.getPopups()) : [wrapper]);\n this.removeLIStateByClass([FOCUSED], this.isMenu ? [hdrWrapper].concat(this.getPopups()) : [hdrWrapper]);\n cli.classList.add(FOCUSED);\n if (!this.showItemOnClick) {\n this.clickHandler(e);\n }\n }\n else if (this.isMenu && this.showItemOnClick && !isDifferentElem) {\n this.removeLIStateByClass([FOCUSED], [wrapper].concat(this.getPopups()));\n }\n if (this.isMenu) {\n if (!this.showItemOnClick && (trgt.parentElement !== wrapper && !closest(trgt, '.e-' + this.getModuleName() + '-popup'))\n && (!cli || (cli && !this.getIndex(cli.id, true).length)) && this.showSubMenuOn !== 'Hover') {\n this.removeLIStateByClass([FOCUSED], [wrapper]);\n if (this.navIdx.length) {\n this.isClosed = true;\n this.closeMenu(null, e);\n }\n }\n else if (isDifferentElem && !this.showItemOnClick) {\n if (this.navIdx.length) {\n this.isClosed = true;\n this.closeMenu(null, e);\n }\n }\n if (!this.isClosed) {\n this.removeStateWrapper();\n }\n this.isClosed = false;\n }\n if (!this.isMenu) {\n this.isCmenuHover = false;\n }\n };\n MenuBase.prototype.removeStateWrapper = function () {\n if (this.liTrgt) {\n var wrapper = closest(this.liTrgt, '.e-menu-vscroll');\n if (this.liTrgt.tagName === 'DIV' && wrapper) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [wrapper]);\n }\n }\n };\n MenuBase.prototype.removeLIStateByClass = function (classList, element) {\n var li;\n var _loop_1 = function (i) {\n classList.forEach(function (className) {\n li = select('.' + className, element[i]);\n if (li) {\n li.classList.remove(className);\n }\n });\n };\n for (var i = 0; i < element.length; i++) {\n _loop_1(i);\n }\n };\n MenuBase.prototype.getField = function (propName, level) {\n if (level === void 0) { level = 0; }\n var fieldName = this.fields[\"\" + propName];\n return typeof fieldName === 'string' ? fieldName :\n (!fieldName[level] ? fieldName[fieldName.length - 1].toString()\n : fieldName[level].toString());\n };\n MenuBase.prototype.getFields = function (level) {\n if (level === void 0) { level = 0; }\n return {\n id: this.getField('itemId', level),\n iconCss: this.getField('iconCss', level),\n text: this.getField('text', level),\n url: this.getField('url', level),\n child: this.getField('children', level),\n separator: this.getField('separator', level)\n };\n };\n MenuBase.prototype.hasField = function (items, field) {\n for (var i = 0, len = items.length; i < len; i++) {\n if (items[i][\"\" + field]) {\n return true;\n }\n }\n return false;\n };\n MenuBase.prototype.menuHeaderClickHandler = function (e) {\n var menuWrapper = closest(e.target, '.e-menu-wrapper');\n if (menuWrapper && menuWrapper.querySelector('ul.e-menu-parent').id !== this.element.id) {\n return;\n }\n if (this.element.className.indexOf('e-hide-menu') > -1) {\n this.openHamburgerMenu(e);\n }\n else {\n this.closeHamburgerMenu(e);\n }\n };\n MenuBase.prototype.clickHandler = function (e) {\n this.isTapHold = this.isTapHold ? false : this.isTapHold;\n var wrapper = this.getWrapper();\n var trgt = e.target;\n var cli = this.cli = this.getLI(trgt);\n var regex = new RegExp('-ej2menu-(.*)-popup');\n var cliWrapper = cli ? closest(cli, '.e-' + this.getModuleName() + '-wrapper') : null;\n var isInstLI = cli && cliWrapper && (this.isMenu ? this.getIndex(cli.id, true).length > 0\n : wrapper.firstElementChild.id === cliWrapper.firstElementChild.id);\n if (Browser.isDevice && this.isMenu) {\n this.removeLIStateByClass([FOCUSED], [wrapper].concat(this.getPopups()));\n this.mouseDownHandler(e);\n }\n if (cli && cliWrapper && this.isMenu) {\n var cliWrapperId = cliWrapper.id ? regex.exec(cliWrapper.id)[1] : cliWrapper.querySelector('.e-menu-parent').id;\n if (this.element.id !== cliWrapperId) {\n return;\n }\n }\n if (isInstLI && e.type === 'click' && !cli.classList.contains(HEADER)) {\n this.setLISelected(cli);\n var navIdx = this.getIndex(cli.id, true);\n var item = this.getItem(navIdx);\n var eventArgs = { element: cli, item: item, event: e };\n this.trigger('select', eventArgs);\n }\n if (isInstLI && (e.type === 'mouseover' || Browser.isDevice || this.showItemOnClick)) {\n var ul = void 0;\n if (cli.classList.contains(HEADER)) {\n ul = wrapper.children[this.navIdx.length - 1];\n this.toggleAnimation(ul);\n var sli = this.getLIByClass(ul, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n detach(cli.parentNode);\n this.navIdx.pop();\n }\n else {\n if (!cli.classList.contains(SEPARATOR)) {\n this.showSubMenu = true;\n var cul = cli.parentNode;\n if (isNullOrUndefined(cul)) {\n return;\n }\n this.cliIdx = this.getIdx(cul, cli);\n if (this.isMenu || !Browser.isDevice) {\n var culIdx = this.isMenu ? Array.prototype.indexOf.call([wrapper].concat(this.getPopups()), closest(cul, '.' + 'e-' + this.getModuleName() + '-wrapper'))\n : this.getIdx(wrapper, cul);\n if (this.navIdx[culIdx] === this.cliIdx) {\n this.showSubMenu = false;\n }\n if (culIdx !== this.navIdx.length && (e.type !== 'mouseover' || this.showSubMenu)) {\n var sli = this.getLIByClass(cul, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n this.isClosed = true;\n this.keyType = 'click';\n if (this.showItemOnClick) {\n this.setLISelected(cli);\n if (!this.isMenu) {\n this.isCmenuHover = true;\n }\n }\n this.closeMenu(culIdx + 1, e);\n if (this.showItemOnClick) {\n this.setLISelected(cli);\n if (!this.isMenu) {\n this.isCmenuHover = false;\n }\n }\n }\n }\n if (!this.isClosed) {\n this.afterCloseMenu(e);\n }\n this.isClosed = false;\n }\n }\n }\n else {\n if (this.isMenu && trgt.tagName === 'DIV' && this.navIdx.length && closest(trgt, '.e-menu-vscroll')) {\n var popupEle = closest(trgt, '.' + POPUP);\n var cIdx = Array.prototype.indexOf.call(this.getPopups(), popupEle) + 1;\n if (cIdx < this.navIdx.length) {\n this.closeMenu(cIdx + 1, e);\n if (popupEle) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [popupEle]);\n }\n }\n }\n else if (this.isMenu && this.hamburgerMode && trgt.tagName === 'SPAN'\n && trgt.classList.contains('e-menu-icon')) {\n this.menuHeaderClickHandler(e);\n }\n else {\n if (trgt.tagName !== 'UL' || (this.isMenu ? trgt.parentElement.classList.contains('e-menu-wrapper') &&\n !this.getIndex(trgt.querySelector('.' + ITEM).id, true).length : trgt.parentElement !== wrapper)) {\n if (!cli) {\n this.removeLIStateByClass([SELECTED], [wrapper]);\n }\n if (!cli || !cli.querySelector('.' + CARET)) {\n if (navigator.platform.toUpperCase().indexOf('MAC') < 0 || (navigator.platform.toUpperCase().indexOf('MAC') >= 0 && !e.ctrlKey)) {\n this.closeMenu(null, e);\n }\n }\n }\n }\n }\n };\n MenuBase.prototype.afterCloseMenu = function (e) {\n if (isNullOrUndefined(e)) {\n return;\n }\n var isHeader;\n if (this.showSubMenu) {\n if (this.showItemOnClick && this.navIdx.length === 0) {\n isHeader = closest(e.target, '.e-menu-parent.e-control');\n }\n else {\n isHeader = closest(this.element, '.e-menu-parent.e-control');\n }\n var idx = this.navIdx.concat(this.cliIdx);\n var item = this.getItem(idx);\n if (item && item[this.getField('children', idx.length - 1)] &&\n item[this.getField('children', idx.length - 1)].length) {\n if (e.type === 'mouseover' || (Browser.isDevice && this.isMenu)) {\n this.setLISelected(this.cli);\n }\n if ((!this.hamburgerMode && isHeader) || (this.hamburgerMode && this.cli.getAttribute('aria-expanded') === 'false')) {\n this.cli.setAttribute('aria-expanded', 'true');\n this.navIdx.push(this.cliIdx);\n this.openMenu(this.cli, item, null, null, e);\n }\n }\n else {\n if (e.type !== 'mouseover') {\n this.closeMenu(null, e);\n }\n }\n if (!isHeader) {\n var cul = this.getUlByNavIdx();\n var sli = this.getLIByClass(cul, SELECTED);\n if (sli) {\n sli.setAttribute('aria-expanded', 'false');\n sli.classList.remove(SELECTED);\n }\n }\n }\n this.keyType = '';\n };\n MenuBase.prototype.setLISelected = function (li) {\n var sli = this.getLIByClass(li.parentElement, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n if (!this.isMenu) {\n li.classList.remove(FOCUSED);\n }\n li.classList.add(SELECTED);\n };\n MenuBase.prototype.getLIByClass = function (ul, classname) {\n if (ul && ul.children) {\n for (var i = 0, len = ul.children.length; i < len; i++) {\n if (ul.children[i].classList.contains(classname)) {\n return ul.children[i];\n }\n }\n }\n return null;\n };\n /**\n * This method is used to get the index of the menu item in the Menu based on the argument.\n *\n * @param {MenuItem | string} item - item be passed to get the index | id to be passed to get the item index.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.getItemIndex = function (item, isUniqueId) {\n var idx;\n if (typeof item === 'string') {\n idx = item;\n }\n else {\n idx = item.id;\n }\n var isText = (isUniqueId === false) ? false : true;\n var navIdx = this.getIndex(idx, isText);\n return navIdx;\n };\n /**\n * This method is used to set the menu item in the Menu based on the argument.\n *\n * @param {MenuItem} item - item need to be updated.\n * @param {string} id - id / text to be passed to update the item.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.setItem = function (item, id, isUniqueId) {\n var idx;\n if (isUniqueId) {\n idx = id ? id : item.id;\n }\n else {\n idx = id ? id : item.text;\n }\n var navIdx = this.getIndex(idx, isUniqueId);\n var newItem = this.getItem(navIdx);\n Object.assign(newItem, item);\n };\n MenuBase.prototype.getItem = function (navIdx) {\n navIdx = navIdx.slice();\n var idx = navIdx.pop();\n var items = this.getItems(navIdx);\n return items[idx];\n };\n MenuBase.prototype.getItems = function (navIdx) {\n var items = this.items;\n for (var i = 0; i < navIdx.length; i++) {\n items = items[navIdx[i]][this.getField('children', i)];\n }\n return items;\n };\n MenuBase.prototype.setItems = function (newItems, navIdx) {\n var items = this.getItems(navIdx);\n items.splice(0, items.length);\n for (var i = 0; i < newItems.length; i++) {\n items.splice(i, 0, newItems[i]);\n }\n };\n MenuBase.prototype.getIdx = function (ul, li, skipHdr) {\n if (skipHdr === void 0) { skipHdr = true; }\n var idx = Array.prototype.indexOf.call(ul.children, li);\n if (skipHdr && ul.children[0].classList.contains(HEADER)) {\n idx--;\n }\n return idx;\n };\n MenuBase.prototype.getLI = function (elem) {\n if (elem.tagName === 'LI' && elem.classList.contains('e-menu-item')) {\n return elem;\n }\n return closest(elem, 'li.e-menu-item');\n };\n MenuBase.prototype.updateItemsByNavIdx = function () {\n var items = this.items;\n var count = 0;\n for (var index = 0; index < this.navIdx.length; index++) {\n items = items[index].items;\n if (!items) {\n break;\n }\n count++;\n var ul = this.getUlByNavIdx(count);\n if (!ul) {\n break;\n }\n this.updateItem(ul, items);\n }\n };\n MenuBase.prototype.removeChildElement = function (elem) {\n while (elem.firstElementChild) {\n elem.removeChild(elem.firstElementChild);\n }\n return elem;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @private\n * @param {MenuBaseModel} newProp - Specifies the new properties\n * @param {MenuBaseModel} oldProp - Specifies the old properties\n * @returns {void}\n */\n MenuBase.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n var wrapper = this.getWrapper();\n var _loop_2 = function (prop) {\n switch (prop) {\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrapper], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrapper], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (this_1.enableRtl) {\n wrapper.classList.add(RTL);\n }\n else {\n wrapper.classList.remove(RTL);\n }\n break;\n case 'showItemOnClick':\n this_1.unWireEvents();\n this_1.showItemOnClick = newProp.showItemOnClick;\n this_1.wireEvents();\n break;\n case 'enableScrolling':\n if (newProp.enableScrolling) {\n var ul_2;\n if (this_1.element.classList.contains('e-vertical')) {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'vscroll', this_1.enableRtl);\n }\n else {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'hscroll', this_1.enableRtl);\n }\n this_1.getPopups().forEach(function (wrapper) {\n ul_2 = select('.e-ul', wrapper);\n addScrolling(_this.createElement, wrapper, ul_2, 'vscroll', _this.enableRtl);\n });\n }\n else {\n var ul_3 = wrapper.children[0];\n if (this_1.element.classList.contains('e-vertical')) {\n destroyScroll(getInstance(ul_3, VScroll), ul_3);\n }\n else {\n destroyScroll(getInstance(ul_3, HScroll), ul_3);\n }\n wrapper.style.overflow = '';\n wrapper.appendChild(this_1.element);\n this_1.getPopups().forEach(function (wrapper) {\n ul_3 = wrapper.children[0];\n destroyScroll(getInstance(ul_3, VScroll), ul_3);\n wrapper.style.overflow = '';\n });\n }\n break;\n case 'items': {\n var idx = void 0;\n var navIdx = void 0;\n var item = void 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this_1.isReact && this_1.template) {\n this_1.clearTemplate(['template']);\n }\n if (!Object.keys(oldProp.items).length) {\n this_1.updateItem(this_1.element, this_1.items);\n if (this_1.enableScrolling && this_1.element.parentElement.classList.contains('e-custom-scroll')) {\n if (this_1.element.classList.contains('e-vertical')) {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'vscroll', this_1.enableRtl);\n }\n else {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'hscroll', this_1.enableRtl);\n }\n }\n if (!this_1.hamburgerMode) {\n for (var i = 1, count = wrapper.childElementCount; i < count; i++) {\n detach(wrapper.lastElementChild);\n }\n }\n this_1.navIdx = [];\n }\n else {\n var keys = Object.keys(newProp.items);\n for (var i = 0; i < keys.length; i++) {\n navIdx = this_1.getChangedItemIndex(newProp, [], Number(keys[i]));\n if (navIdx.length <= this_1.getWrapper().children.length) {\n idx = navIdx.pop();\n item = this_1.getItems(navIdx);\n this_1.insertAfter([item[idx]], item[idx].text);\n this_1.removeItem(item, navIdx, idx);\n this_1.setItems(item, navIdx);\n }\n navIdx.length = 0;\n }\n }\n break;\n }\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n _loop_2(prop);\n }\n };\n MenuBase.prototype.updateItem = function (ul, items) {\n if (isBlazor() && !this.isMenu) {\n ul = this.removeChildElement(ul);\n }\n else {\n if (this.enableScrolling) {\n var wrapper1 = this.getWrapper();\n var ul1 = wrapper1.children[0];\n if (this.element.classList.contains('e-vertical')) {\n destroyScroll(getInstance(ul1, VScroll), ul1);\n }\n else {\n destroyScroll(getInstance(ul1, HScroll), ul1);\n }\n }\n ul.innerHTML = '';\n }\n var lis = [].slice.call(this.createItems(items).children);\n lis.forEach(function (li) {\n ul.appendChild(li);\n });\n };\n MenuBase.prototype.getChangedItemIndex = function (newProp, index, idx) {\n index.push(idx);\n var key = Object.keys(newProp.items[idx]).pop();\n if (key === 'items') {\n var item = newProp.items[idx];\n var popStr = Object.keys(item.items).pop();\n if (popStr) {\n this.getChangedItemIndex(item, index, Number(popStr));\n }\n }\n else {\n if (key === 'isParentArray' && index.length > 1) {\n index.pop();\n }\n }\n return index;\n };\n MenuBase.prototype.removeItem = function (item, navIdx, idx) {\n item.splice(idx, 1);\n var uls = this.getWrapper().children;\n if (navIdx.length < uls.length) {\n detach(uls[navIdx.length].children[idx]);\n }\n };\n /**\n * Used to unwire the bind events.\n *\n * @private\n * @param {string} targetSelctor - Specifies the target selector\n * @returns {void}\n */\n MenuBase.prototype.unWireEvents = function (targetSelctor) {\n if (targetSelctor === void 0) { targetSelctor = this.target; }\n var wrapper = this.getWrapper();\n if (targetSelctor) {\n var target = void 0;\n var touchModule = void 0;\n var targetElems = selectAll(targetSelctor);\n for (var i = 0, len = targetElems.length; i < len; i++) {\n target = targetElems[i];\n if (this.isMenu) {\n EventHandler.remove(target, 'click', this.menuHeaderClickHandler);\n }\n else {\n if (Browser.isIos) {\n touchModule = getInstance(target, Touch);\n if (touchModule) {\n touchModule.destroy();\n }\n }\n else {\n EventHandler.remove(target, 'contextmenu', this.cmenuHandler);\n }\n }\n }\n if (!this.isMenu) {\n EventHandler.remove(this.targetElement, 'scroll', this.scrollHandler);\n for (var _i = 0, _a = getScrollableParent(this.targetElement); _i < _a.length; _i++) {\n var parent_2 = _a[_i];\n EventHandler.remove(parent_2, 'scroll', this.scrollHandler);\n }\n }\n }\n if (!Browser.isDevice) {\n EventHandler.remove(this.isMenu ? document : wrapper, 'mouseover', this.delegateMoverHandler);\n EventHandler.remove(document, 'mousedown', this.delegateMouseDownHandler);\n }\n EventHandler.remove(document, 'click', this.delegateClickHandler);\n this.unWireKeyboardEvent(wrapper);\n this.rippleFn();\n };\n MenuBase.prototype.unWireKeyboardEvent = function (element) {\n var keyboardModule = getInstance(element, KeyboardEvents);\n if (keyboardModule) {\n keyboardModule.destroy();\n }\n };\n MenuBase.prototype.toggleAnimation = function (ul, isMenuOpen) {\n var _this = this;\n if (isMenuOpen === void 0) { isMenuOpen = true; }\n var pUlHeight;\n var pElement;\n if (this.animationSettings.effect === 'None' || !isMenuOpen) {\n this.end(ul, isMenuOpen);\n }\n else {\n this.animation.animate(ul, {\n name: this.animationSettings.effect,\n duration: this.animationSettings.duration,\n timingFunction: this.animationSettings.easing,\n begin: function (options) {\n if (_this.hamburgerMode) {\n pElement = options.element.parentElement;\n options.element.style.position = 'absolute';\n pUlHeight = pElement.offsetHeight;\n options.element.style.maxHeight = options.element.offsetHeight + 'px';\n pElement.style.maxHeight = '';\n }\n else {\n options.element.style.display = 'block';\n options.element.style.maxHeight = options.element.getBoundingClientRect().height + 'px';\n }\n },\n progress: function (options) {\n if (_this.hamburgerMode) {\n pElement.style.minHeight = (pUlHeight + options.element.offsetHeight) + 'px';\n }\n },\n end: function (options) {\n if (_this.hamburgerMode) {\n options.element.style.position = '';\n options.element.style.maxHeight = '';\n pElement.style.minHeight = '';\n options.element.style.top = 0 + 'px';\n options.element.children[0].focus();\n _this.triggerOpen(options.element.children[0]);\n }\n else {\n _this.end(options.element, isMenuOpen);\n }\n }\n });\n }\n };\n MenuBase.prototype.triggerOpen = function (ul) {\n var item = this.navIdx.length ? this.getItem(this.navIdx) : null;\n var eventArgs = {\n element: ul, parentItem: item, items: item ? item.items : this.items\n };\n this.trigger('onOpen', eventArgs);\n if (!this.isMenu) {\n EventHandler.add(ul, 'keydown', this.keyHandler, this);\n }\n };\n MenuBase.prototype.end = function (ul, isMenuOpen) {\n if (isMenuOpen && (this.isMenu || (!this.isMenu && this.isContextMenuClosed))) {\n if (this.isMenu || !Browser.isDevice) {\n ul.style.display = 'block';\n }\n ul.style.maxHeight = '';\n this.triggerOpen(ul);\n if (ul.querySelector('.' + FOCUSED)) {\n ul.querySelector('.' + FOCUSED).focus();\n }\n else {\n var ele = this.getWrapper().children[this.getIdx(this.getWrapper(), ul) - 1];\n if (this.currentTarget) {\n if (!(this.currentTarget.classList.contains('e-numerictextbox') || this.currentTarget.classList.contains('e-textbox') || this.currentTarget.tagName === 'INPUT')) {\n if (ele) {\n ele.querySelector('.' + SELECTED).focus();\n }\n else {\n this.element.focus();\n }\n }\n }\n else {\n if (ele) {\n ele.querySelector('.' + SELECTED).focus();\n }\n else {\n this.element.focus();\n }\n }\n }\n }\n else {\n if (ul === this.element) {\n var fli = this.getLIByClass(this.element, FOCUSED);\n if (fli) {\n fli.classList.remove(FOCUSED);\n }\n var sli = this.getLIByClass(this.element, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n ul.style.display = 'none';\n }\n else {\n detach(ul);\n }\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n MenuBase.prototype.getPersistData = function () {\n return '';\n };\n /**\n * Get wrapper element.\n *\n * @returns {Element} - Wrapper element\n * @private\n */\n MenuBase.prototype.getWrapper = function () {\n return closest(this.element, '.e-' + this.getModuleName() + '-wrapper');\n };\n MenuBase.prototype.getIndex = function (data, isUniqueId, items, nIndex, isCallBack, level) {\n if (items === void 0) { items = this.items; }\n if (nIndex === void 0) { nIndex = []; }\n if (isCallBack === void 0) { isCallBack = false; }\n if (level === void 0) { level = 0; }\n var item;\n level = isCallBack ? level + 1 : 0;\n for (var i = 0, len = items.length; i < len; i++) {\n item = items[i];\n if ((isUniqueId ? item[this.getField('itemId', level)] : item[this.getField('text', level)]) === data) {\n nIndex.push(i);\n break;\n }\n else if (item[this.getField('children', level)]\n && item[this.getField('children', level)].length) {\n nIndex = this.getIndex(data, isUniqueId, item[this.getField('children', level)], nIndex, true, level);\n if (nIndex[nIndex.length - 1] === -1) {\n if (i !== len - 1) {\n nIndex.pop();\n }\n }\n else {\n nIndex.unshift(i);\n break;\n }\n }\n else {\n if (i === len - 1) {\n nIndex.push(-1);\n }\n }\n }\n return (!isCallBack && nIndex[0] === -1) ? [] : nIndex;\n };\n /**\n * This method is used to enable or disable the menu items in the Menu based on the items and enable argument.\n *\n * @param {string[]} items - Text items that needs to be enabled/disabled.\n * @param {boolean} enable - Set `true`/`false` to enable/disable the list items.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.enableItems = function (items, enable, isUniqueId) {\n if (enable === void 0) { enable = true; }\n var ul;\n var idx;\n var navIdx;\n var disabled = DISABLED;\n var skipItem;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n if (this.navIdx.length) {\n if (navIdx.length !== 1) {\n skipItem = false;\n for (var i_1 = 0, len = navIdx.length - 1; i_1 < len; i_1++) {\n if (navIdx[i_1] !== this.navIdx[i_1]) {\n skipItem = true;\n break;\n }\n }\n if (skipItem) {\n continue;\n }\n }\n }\n else {\n if (navIdx.length !== 1) {\n continue;\n }\n }\n idx = navIdx.pop();\n ul = this.getUlByNavIdx(navIdx.length);\n if (ul && !isNullOrUndefined(idx)) {\n if (enable) {\n if (this.isMenu) {\n ul.children[idx].classList.remove(disabled);\n ul.children[idx].removeAttribute('aria-disabled');\n }\n else {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[idx + 1].classList.remove(disabled);\n }\n else {\n ul.children[idx].classList.remove(disabled);\n }\n }\n }\n else {\n if (this.isMenu) {\n ul.children[idx].classList.add(disabled);\n ul.children[idx].setAttribute('aria-disabled', 'true');\n }\n else {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[idx + 1].classList.add(disabled);\n }\n else {\n ul.children[idx].classList.add(disabled);\n }\n }\n }\n }\n }\n };\n /**\n * This method is used to show the menu items in the Menu based on the items text.\n *\n * @param {string[]} items - Text items that needs to be shown.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.showItems = function (items, isUniqueId) {\n this.showHideItems(items, false, isUniqueId);\n };\n /**\n * This method is used to hide the menu items in the Menu based on the items text.\n *\n * @param {string[]} items - Text items that needs to be hidden.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.hideItems = function (items, isUniqueId) {\n this.showHideItems(items, true, isUniqueId);\n };\n MenuBase.prototype.showHideItems = function (items, ishide, isUniqueId) {\n var ul;\n var index;\n var navIdx;\n var item;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n index = navIdx.pop();\n ul = this.getUlByNavIdx(navIdx.length);\n item = this.getItems(navIdx);\n if (ul) {\n var validUl = isUniqueId ? ul.children[index].id : item[index].text.toString();\n if (ishide && validUl === items[i]) {\n ul.children[index].classList.add(HIDE);\n }\n else if (!ishide && validUl === items[i]) {\n ul.children[index].classList.remove(HIDE);\n }\n }\n }\n };\n /**\n * It is used to remove the menu items from the Menu based on the items text.\n *\n * @param {string[]} items Text items that needs to be removed.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.removeItems = function (items, isUniqueId) {\n var idx;\n var navIdx;\n var iitems;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n idx = navIdx.pop();\n iitems = this.getItems(navIdx);\n if (!isNullOrUndefined(idx)) {\n this.removeItem(iitems, navIdx, idx);\n }\n }\n };\n /**\n * It is used to insert the menu items after the specified menu item text.\n *\n * @param {MenuItemModel[]} items - Items that needs to be inserted.\n * @param {string} text - Text item after that the element to be inserted.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.insertAfter = function (items, text, isUniqueId) {\n this.insertItems(items, text, isUniqueId);\n };\n /**\n * It is used to insert the menu items before the specified menu item text.\n *\n * @param {MenuItemModel[]} items - Items that needs to be inserted.\n * @param {string} text - Text item before that the element to be inserted.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.insertBefore = function (items, text, isUniqueId) {\n this.insertItems(items, text, isUniqueId, false);\n };\n MenuBase.prototype.insertItems = function (items, text, isUniqueId, isAfter) {\n if (isAfter === void 0) { isAfter = true; }\n var li;\n var idx;\n var navIdx;\n var iitems;\n var menuitem;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(text, isUniqueId);\n idx = navIdx.pop();\n iitems = this.getItems(navIdx);\n menuitem = new MenuItem(iitems[0], 'items', items[i], true);\n iitems.splice(isAfter ? idx + 1 : idx, 0, menuitem);\n var uls = this.isMenu ? [this.getWrapper()].concat(this.getPopups()) : [].slice.call(this.getWrapper().children);\n if (!isNullOrUndefined(idx) && navIdx.length < uls.length) {\n idx = isAfter ? idx + 1 : idx;\n li = this.createItems(iitems).children[idx];\n var ul = this.isMenu ? select('.e-menu-parent', uls[navIdx.length]) : uls[navIdx.length];\n ul.insertBefore(li, ul.children[idx]);\n }\n }\n };\n MenuBase.prototype.removeAttributes = function () {\n var _this = this;\n ['top', 'left', 'display', 'z-index'].forEach(function (key) {\n _this.element.style.removeProperty(key);\n });\n ['role', 'tabindex', 'class', 'style'].forEach(function (key) {\n if (key === 'class' && _this.element.classList.contains('e-menu-parent')) {\n _this.element.classList.remove('e-menu-parent');\n }\n if (['class', 'style'].indexOf(key) === -1 || !_this.element.getAttribute(key)) {\n _this.element.removeAttribute(key);\n }\n if (_this.isMenu && key === 'class' && _this.element.classList.contains('e-vertical')) {\n _this.element.classList.remove('e-vertical');\n }\n });\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n MenuBase.prototype.destroy = function () {\n var wrapper = this.getWrapper();\n if (wrapper) {\n this.unWireEvents();\n if (!this.isMenu) {\n this.clonedElement.style.display = '';\n if (this.clonedElement.tagName === 'EJS-CONTEXTMENU') {\n addClass([this.clonedElement], ['e-control', 'e-lib', 'e-' + this.getModuleName()]);\n this.element = this.clonedElement;\n }\n else {\n if (this.refreshing && this.clonedElement.childElementCount && this.clonedElement.children[0].tagName === 'LI') {\n this.setProperties({ 'items': [] }, true);\n }\n if (document.getElementById(this.clonedElement.id)) {\n var refEle = this.clonedElement.nextElementSibling;\n if (refEle && refEle !== wrapper) {\n this.clonedElement.parentElement.insertBefore(this.element, refEle);\n }\n else {\n this.clonedElement.parentElement.appendChild(this.element);\n }\n if (isBlazor() && !this.isMenu) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n append([].slice.call(this.clonedElement.children), this.element);\n detach(this.clonedElement);\n this.removeAttributes();\n }\n }\n this.clonedElement = null;\n }\n else {\n this.closeMenu();\n if (isBlazor() && !this.isMenu) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n this.removeAttributes();\n wrapper.parentNode.insertBefore(this.element, wrapper);\n this.clonedElement = null;\n }\n if (this.isMenu && this.clonedElement) {\n detach(this.element);\n wrapper.style.display = '';\n wrapper.classList.remove('e-' + this.getModuleName() + '-wrapper');\n wrapper.removeAttribute('data-ripple');\n }\n else {\n detach(wrapper);\n }\n _super.prototype.destroy.call(this);\n if (this.template) {\n this.clearTemplate(['template']);\n }\n }\n this.rippleFn = null;\n };\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeItemRender\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"onOpen\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"onClose\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], MenuBase.prototype, \"created\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"cssClass\", void 0);\n __decorate([\n Property(0)\n ], MenuBase.prototype, \"hoverDelay\", void 0);\n __decorate([\n Property(false)\n ], MenuBase.prototype, \"showItemOnClick\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], MenuBase.prototype, \"filter\", void 0);\n __decorate([\n Property(null)\n ], MenuBase.prototype, \"template\", void 0);\n __decorate([\n Property(false)\n ], MenuBase.prototype, \"enableScrolling\", void 0);\n __decorate([\n Property(true)\n ], MenuBase.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Complex({ itemId: 'id', text: 'text', parentId: 'parentId', iconCss: 'iconCss', url: 'url', separator: 'separator', children: 'items' }, FieldSettings)\n ], MenuBase.prototype, \"fields\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], MenuBase.prototype, \"items\", void 0);\n __decorate([\n Complex({ duration: 400, easing: 'ease', effect: 'SlideDown' }, MenuAnimationSettings)\n ], MenuBase.prototype, \"animationSettings\", void 0);\n MenuBase = __decorate([\n NotifyPropertyChanges\n ], MenuBase);\n return MenuBase;\n}(Component));\nexport { MenuBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { selectAll, select, createElement, Base, detach } from '@syncfusion/ej2-base';\nimport { extend, isNullOrUndefined, EventHandler } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, Event, onIntlChange } from '@syncfusion/ej2-base';\nimport { Internationalization, L10n } from '@syncfusion/ej2-base';\n/**\n * global declarations\n */\nexport var regex = {\n /* eslint-disable no-useless-escape */\n EMAIL: new RegExp('^[A-Za-z0-9._%+-]{1,}@[A-Za-z0-9._%+-]{1,}([.]{1}[a-zA-Z0-9]{2,}' +\n '|[.]{1}[a-zA-Z0-9]{2,4}[.]{1}[a-zA-Z0-9]{2,4})$'),\n /* eslint-disable-next-line security/detect-unsafe-regex */\n URL: /^(?:http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:/?#[\\]@!\\$&'\\(\\)\\*\\+,;=.]+$/m,\n DATE_ISO: new RegExp('^([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$'),\n DIGITS: new RegExp('^[0-9]*$'),\n PHONE: new RegExp('^[+]?[0-9]{9,13}$'),\n CREDITCARD: new RegExp('^\\\\d{13,16}$')\n /* eslint-enable no-useless-escape */\n};\n/**\n * ErrorOption values\n *\n * @private\n */\nexport var ErrorOption;\n(function (ErrorOption) {\n /**\n * Defines the error message.\n */\n ErrorOption[ErrorOption[\"Message\"] = 0] = \"Message\";\n /**\n * Defines the error element type.\n */\n ErrorOption[ErrorOption[\"Label\"] = 1] = \"Label\";\n})(ErrorOption || (ErrorOption = {}));\n/**\n * FormValidator class enables you to validate the form fields based on your defined rules\n * ```html\n * \n * \n * \n * \n * \n * ```\n */\nvar FormValidator = /** @class */ (function (_super) {\n __extends(FormValidator, _super);\n /**\n * Initializes the FormValidator.\n *\n * @param {string | HTMLFormElement} element - Specifies the element to render as component.\n * @param {FormValidatorModel} options - Specifies the FormValidator model.\n * @private\n */\n function FormValidator(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.validated = [];\n _this.errorRules = [];\n _this.allowSubmit = false;\n _this.required = 'required';\n _this.infoElement = null;\n _this.inputElement = null;\n _this.selectQuery = 'input:not([type=reset]):not([type=button]), select, textarea';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.localyMessage = {};\n /**\n * Specifies the default messages for validation rules.\n *\n * @default { List of validation message }\n */\n _this.defaultMessages = {\n required: 'This field is required.',\n email: 'Please enter a valid email address.',\n url: 'Please enter a valid URL.',\n date: 'Please enter a valid date.',\n dateIso: 'Please enter a valid date ( ISO ).',\n creditcard: 'Please enter valid card number',\n number: 'Please enter a valid number.',\n digits: 'Please enter only digits.',\n maxLength: 'Please enter no more than {0} characters.',\n minLength: 'Please enter at least {0} characters.',\n rangeLength: 'Please enter a value between {0} and {1} characters long.',\n range: 'Please enter a value between {0} and {1}.',\n max: 'Please enter a value less than or equal to {0}.',\n min: 'Please enter a value greater than or equal to {0}.',\n regex: 'Please enter a correct value.',\n tel: 'Please enter a valid phone number.',\n pattern: 'Please enter a correct pattern value.',\n equalTo: 'Please enter the valid match text'\n };\n if (typeof _this.rules === 'undefined') {\n _this.rules = {};\n }\n _this.l10n = new L10n('formValidator', _this.defaultMessages, _this.locale);\n if (_this.locale) {\n _this.localeFunc();\n }\n onIntlChange.on('notifyExternalChange', _this.afterLocalization, _this);\n element = typeof element === 'string' ? select(element, document) : element;\n // Set novalidate to prevent default HTML5 form validation\n if (_this.element != null) {\n _this.element.setAttribute('novalidate', '');\n _this.inputElements = selectAll(_this.selectQuery, _this.element);\n _this.createHTML5Rules();\n _this.wireEvents();\n }\n else {\n return undefined;\n }\n return _this;\n }\n FormValidator_1 = FormValidator;\n /* eslint-enable @typescript-eslint/no-explicit-any */\n /**\n * Add validation rules to the corresponding input element based on `name` attribute.\n *\n * @param {string} name `name` of form field.\n * @param {Object} rules Validation rules for the corresponding element.\n * @returns {void}\n */\n FormValidator.prototype.addRules = function (name, rules) {\n if (name) {\n // eslint-disable-next-line no-prototype-builtins\n if (this.rules.hasOwnProperty(name)) {\n extend(this.rules[\"\" + name], rules, {});\n }\n else {\n this.rules[\"\" + name] = rules;\n }\n }\n };\n /**\n * Remove validation to the corresponding field based on name attribute.\n * When no parameter is passed, remove all the validations in the form.\n *\n * @param {string} name Input name attribute value.\n * @param {string[]} rules List of validation rules need to be remove from the corresponding element.\n * @returns {void}\n */\n FormValidator.prototype.removeRules = function (name, rules) {\n if (!name && !rules) {\n this.rules = {};\n }\n else if (this.rules[\"\" + name] && !rules) {\n delete this.rules[\"\" + name];\n }\n else if (!isNullOrUndefined(this.rules[\"\" + name] && rules)) {\n for (var i = 0; i < rules.length; i++) {\n delete this.rules[\"\" + name][rules[parseInt(i.toString(), 10)]];\n }\n }\n else {\n return;\n }\n };\n /**\n * Validate the current form values using defined rules.\n * Returns `true` when the form is valid otherwise `false`\n *\n * @param {string} selected - Optional parameter to validate specified element.\n * @returns {boolean} - Returns form validation status.\n */\n FormValidator.prototype.validate = function (selected) {\n var rules = Object.keys(this.rules);\n if (selected && rules.length) {\n this.validateRules(selected);\n //filter the selected element it don't have any valid input element\n return rules.indexOf(selected) !== -1 && this.errorRules.filter(function (data) {\n return data.name === selected;\n }).length === 0;\n }\n else {\n this.errorRules = [];\n for (var _i = 0, rules_1 = rules; _i < rules_1.length; _i++) {\n var name_1 = rules_1[_i];\n this.validateRules(name_1);\n }\n return this.errorRules.length === 0;\n }\n };\n /**\n * Reset the value of all the fields in form.\n *\n * @returns {void}\n */\n FormValidator.prototype.reset = function () {\n this.element.reset();\n this.clearForm();\n };\n /**\n * Get input element by name.\n *\n * @param {string} name - Input element name attribute value.\n * @returns {HTMLInputElement} - Returns the input element.\n */\n FormValidator.prototype.getInputElement = function (name) {\n this.inputElement = (select('[name=\"' + name + '\"]', this.element));\n return this.inputElement;\n };\n /**\n * Destroy the form validator object and error elements.\n *\n * @returns {void}\n */\n FormValidator.prototype.destroy = function () {\n this.reset();\n this.unwireEvents();\n this.rules = {};\n var elements = selectAll('.' + this.errorClass + ', .' + this.validClass, this.element);\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var element = elements_1[_i];\n detach(element);\n }\n _super.prototype.destroy.call(this);\n this.infoElement = null;\n onIntlChange.off('notifyExternalChange', this.afterLocalization);\n };\n /**\n * @param {FormValidatorModel} newProp - Returns the dynamic property value of the component.\n * @param {FormValidatorModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n FormValidator.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'locale':\n this.localeFunc();\n break;\n }\n }\n };\n /**\n * @private\n * @returns {void}\n */\n FormValidator.prototype.localeFunc = function () {\n for (var _i = 0, _a = Object.keys(this.defaultMessages); _i < _a.length; _i++) {\n var key = _a[_i];\n this.l10n.setLocale(this.locale);\n var value = this.l10n.getConstant(key);\n this.localyMessage[\"\" + key] = value;\n }\n };\n /**\n * @private\n * @returns {string} - Returns the component name.\n */\n FormValidator.prototype.getModuleName = function () {\n return 'formvalidator';\n };\n /**\n * @param {any} args - Specifies the culture name.\n * @returns {void}\n * @private\n */\n FormValidator.prototype.afterLocalization = function (args) {\n this.locale = args.locale;\n this.localeFunc();\n };\n /**\n * Allows you to refresh the form validator base events to the elements inside the form.\n *\n * @returns {void}\n */\n FormValidator.prototype.refresh = function () {\n this.unwireEvents();\n this.inputElements = selectAll(this.selectQuery, this.element);\n this.wireEvents();\n };\n FormValidator.prototype.clearForm = function () {\n this.errorRules = [];\n this.validated = [];\n var elements = selectAll(this.selectQuery, this.element);\n for (var _i = 0, elements_2 = elements; _i < elements_2.length; _i++) {\n var element = elements_2[_i];\n var input = element;\n input.removeAttribute('aria-invalid');\n var inputParent = input.parentElement;\n var grandParent = inputParent.parentElement;\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') ||\n (input.classList.contains('e-input') && inputParent.classList.contains('e-input-group'))) {\n inputParent.classList.remove(this.errorClass);\n }\n else if ((grandParent != null) && (grandParent.classList.contains('e-control-wrapper') ||\n grandParent.classList.contains('e-wrapper'))) {\n grandParent.classList.remove(this.errorClass);\n }\n else {\n input.classList.remove(this.errorClass);\n }\n if (input.name.length > 0) {\n this.getInputElement(input.name);\n this.getErrorElement(input.name);\n this.hideMessage(input.name);\n }\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') ||\n (input.classList.contains('e-input') && inputParent.classList.contains('e-input-group'))) {\n inputParent.classList.remove(this.validClass);\n }\n else if ((grandParent != null) && (grandParent.classList.contains('e-control-wrapper') ||\n grandParent.classList.contains('e-wrapper'))) {\n grandParent.classList.remove(this.validClass);\n }\n else {\n input.classList.remove(this.validClass);\n }\n }\n };\n FormValidator.prototype.createHTML5Rules = function () {\n var defRules = ['required', 'validateHidden', 'regex', 'rangeLength', 'maxLength', 'minLength', 'dateIso', 'digits',\n 'pattern', 'data-val-required', 'type', 'data-validation', 'min', 'max', 'range', 'equalTo', 'data-val-minlength-min',\n 'data-val-equalto-other', 'data-val-maxlength-max', 'data-val-range-min', 'data-val-regex-pattern', 'data-val-length-max',\n 'data-val-creditcard', 'data-val-phone'];\n var acceptedTypes = ['hidden', 'email', 'url', 'date', 'number', 'tel'];\n for (var _i = 0, _a = (this.inputElements); _i < _a.length; _i++) {\n var input = _a[_i];\n // Default attribute rules\n var allRule = {};\n for (var _b = 0, defRules_1 = defRules; _b < defRules_1.length; _b++) {\n var rule = defRules_1[_b];\n if (input.getAttribute(rule) !== null) {\n switch (rule) {\n case 'required':\n this.defRule(input, allRule, rule, input.required);\n break;\n case 'data-validation':\n rule = input.getAttribute(rule);\n this.defRule(input, allRule, rule, true);\n break;\n case 'type':\n if (acceptedTypes.indexOf(input.type) !== -1) {\n this.defRule(input, allRule, input.type, true);\n }\n break;\n case 'rangeLength':\n case 'range':\n this.defRule(input, allRule, rule, JSON.parse(input.getAttribute(rule)));\n break;\n case 'equalTo':\n {\n var id = input.getAttribute(rule);\n this.defRule(input, allRule, rule, id);\n }\n break;\n default:\n if (input.getAttribute('data-val') === 'true') {\n this.annotationRule(input, allRule, rule, input.getAttribute(rule));\n }\n else {\n this.defRule(input, allRule, rule, input.getAttribute(rule));\n }\n }\n }\n }\n //adding pattern type validation\n if (Object.keys(allRule).length !== 0) {\n this.addRules(input.name, allRule);\n }\n }\n };\n FormValidator.prototype.annotationRule = function (input, ruleCon, ruleName, value) {\n var annotationRule = ruleName.split('-');\n var rulesList = ['required', 'creditcard', 'phone', 'maxlength', 'minlength', 'range', 'regex', 'equalto'];\n var ruleFirstName = annotationRule[annotationRule.length - 1];\n var ruleSecondName = annotationRule[annotationRule.length - 2];\n if (rulesList.indexOf(ruleFirstName) !== -1) {\n switch (ruleFirstName) {\n case 'required':\n this.defRule(input, ruleCon, 'required', value);\n break;\n case 'creditcard':\n this.defRule(input, ruleCon, 'creditcard', value);\n break;\n case 'phone':\n this.defRule(input, ruleCon, 'tel', value);\n break;\n }\n }\n else if (rulesList.indexOf(ruleSecondName) !== -1) {\n switch (ruleSecondName) {\n case 'maxlength':\n this.defRule(input, ruleCon, 'maxLength', value);\n break;\n case 'minlength':\n this.defRule(input, ruleCon, 'minLength', value);\n break;\n case 'range':\n {\n var minvalue = input.getAttribute('data-val-range-min');\n var maxvalue = input.getAttribute('data-val-range-max');\n this.defRule(input, ruleCon, 'range', [minvalue, maxvalue]);\n }\n break;\n case 'equalto':\n {\n var id = input.getAttribute(ruleName).split('.');\n this.defRule(input, ruleCon, 'equalTo', id[id.length - 1]);\n }\n break;\n case 'regex':\n this.defRule(input, ruleCon, 'regex', value);\n break;\n }\n }\n };\n FormValidator.prototype.defRule = function (input, ruleCon, ruleName, value) {\n var message = input.getAttribute('data-' + ruleName + '-message');\n var annotationMessage = input.getAttribute('data-val-' + ruleName);\n var customMessage;\n if (this.rules[input.name] && ruleName !== 'validateHidden' && ruleName !== 'hidden') {\n this.getInputElement(input.name);\n customMessage = this.getErrorMessage(this.rules[input.name][\"\" + ruleName], ruleName);\n }\n if (message) {\n value = [value, message];\n }\n else if (annotationMessage) {\n value = [value, annotationMessage];\n }\n else if (customMessage) {\n value = [value, customMessage];\n }\n ruleCon[\"\" + ruleName] = value;\n };\n // Wire events to the form elements\n FormValidator.prototype.wireEvents = function () {\n for (var _i = 0, _a = (this.inputElements); _i < _a.length; _i++) {\n var input = _a[_i];\n if (FormValidator_1.isCheckable(input)) {\n EventHandler.add(input, 'click', this.clickHandler, this);\n }\n else if (input.tagName === 'SELECT') {\n EventHandler.add(input, 'change', this.changeHandler, this);\n }\n else {\n EventHandler.add(input, 'focusout', this.focusOutHandler, this);\n EventHandler.add(input, 'keyup', this.keyUpHandler, this);\n }\n }\n EventHandler.add(this.element, 'submit', this.submitHandler, this);\n EventHandler.add(this.element, 'reset', this.resetHandler, this);\n };\n // UnWire events to the form elements\n FormValidator.prototype.unwireEvents = function () {\n for (var _i = 0, _a = (this.inputElements); _i < _a.length; _i++) {\n var input = _a[_i];\n EventHandler.clearEvents(input);\n }\n EventHandler.remove(this.element, 'submit', this.submitHandler);\n EventHandler.remove(this.element, 'reset', this.resetHandler);\n };\n // Handle input element focusout event\n FormValidator.prototype.focusOutHandler = function (e) {\n this.trigger('focusout', e);\n //FormValidator.triggerCallback(this.focusout, e);\n var element = e.target;\n if (this.rules[element.name]) {\n if (this.rules[element.name][this.required] || element.value.length > 0) {\n this.validate(element.name);\n }\n else if (this.validated.indexOf(element.name) === -1) {\n this.validated.push(element.name);\n }\n }\n };\n // Handle input element keyup event\n FormValidator.prototype.keyUpHandler = function (e) {\n this.trigger('keyup', e);\n var element = e.target;\n // List of keys need to prevent while validation\n var excludeKeys = [16, 17, 18, 20, 35, 36, 37, 38, 39, 40, 45, 144, 225];\n if (e.which === 9 && (!this.rules[element.name] || (this.rules[element.name] && !this.rules[element.name][this.required]))) {\n return;\n }\n if (this.validated.indexOf(element.name) !== -1 && this.rules[element.name] && excludeKeys.indexOf(e.which) === -1) {\n this.validate(element.name);\n }\n };\n // Handle input click event\n FormValidator.prototype.clickHandler = function (e) {\n this.trigger('click', e);\n var element = e.target;\n // If element type is not submit allow validation\n if (element.type !== 'submit') {\n this.validate(element.name);\n }\n else if (element.getAttribute('formnovalidate') !== null) {\n // Prevent form validation, if submit button has formnovalidate attribute\n this.allowSubmit = true;\n }\n };\n // Handle input change event\n FormValidator.prototype.changeHandler = function (e) {\n this.trigger('change', e);\n var element = e.target;\n this.validate(element.name);\n };\n // Handle form submit event\n FormValidator.prototype.submitHandler = function (e) {\n this.trigger('submit', e);\n //FormValidator.triggerCallback(this.submit, e);\n // Prevent form submit if validation failed\n if (!this.allowSubmit && !this.validate()) {\n e.preventDefault();\n }\n else {\n this.allowSubmit = false;\n }\n };\n // Handle form reset\n FormValidator.prototype.resetHandler = function () {\n this.clearForm();\n };\n // Validate each rule based on input element name\n FormValidator.prototype.validateRules = function (name) {\n if (!this.rules[\"\" + name]) {\n return;\n }\n var rules = Object.keys(this.rules[\"\" + name]);\n var hiddenType = false;\n var validateHiddenType = false;\n var vhPos = rules.indexOf('validateHidden');\n var hPos = rules.indexOf('hidden');\n this.getInputElement(name);\n if (hPos !== -1) {\n hiddenType = true;\n }\n if (vhPos !== -1) {\n validateHiddenType = true;\n }\n if (!hiddenType || (hiddenType && validateHiddenType)) {\n if (vhPos !== -1) {\n rules.splice(vhPos, 1);\n }\n if (hPos !== -1) {\n rules.splice((hPos - 1), 1);\n }\n this.getErrorElement(name);\n for (var _i = 0, rules_2 = rules; _i < rules_2.length; _i++) {\n var rule = rules_2[_i];\n var errorMessage = this.getErrorMessage(this.rules[\"\" + name][\"\" + rule], rule);\n var errorRule = { name: name, message: errorMessage };\n var eventArgs = {\n inputName: name,\n element: this.inputElement,\n message: errorMessage\n };\n if (!this.isValid(name, rule) && !this.inputElement.classList.contains(this.ignore)) {\n this.removeErrorRules(name);\n this.errorRules.push(errorRule);\n // Set aria attributes to invalid elements\n this.inputElement.setAttribute('aria-invalid', 'true');\n this.inputElement.setAttribute('aria-describedby', this.inputElement.id + '-info');\n var inputParent = this.inputElement.parentElement;\n var grandParent = inputParent.parentElement;\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') ||\n (this.inputElement.classList.contains('e-input') && inputParent.classList.contains('e-input-group'))) {\n inputParent.classList.add(this.errorClass);\n inputParent.classList.remove(this.validClass);\n }\n else if ((grandParent != null) && (grandParent.classList.contains('e-control-wrapper') ||\n grandParent.classList.contains('e-wrapper'))) {\n grandParent.classList.add(this.errorClass);\n grandParent.classList.remove(this.validClass);\n }\n else {\n this.inputElement.classList.add(this.errorClass);\n this.inputElement.classList.remove(this.validClass);\n }\n if (!this.infoElement) {\n this.createErrorElement(name, errorRule.message, this.inputElement);\n }\n else {\n this.showMessage(errorRule);\n }\n eventArgs.errorElement = this.infoElement;\n eventArgs.status = 'failure';\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') ||\n (this.inputElement.classList.contains('e-input') && inputParent.classList.contains('e-input-group'))) {\n inputParent.classList.add(this.errorClass);\n inputParent.classList.remove(this.validClass);\n }\n else if ((grandParent != null) && (grandParent.classList.contains('e-control-wrapper') ||\n grandParent.classList.contains('e-wrapper'))) {\n grandParent.classList.add(this.errorClass);\n grandParent.classList.remove(this.validClass);\n }\n else {\n this.inputElement.classList.add(this.errorClass);\n this.inputElement.classList.remove(this.validClass);\n }\n this.optionalValidationStatus(name, eventArgs);\n this.trigger('validationComplete', eventArgs);\n // Set aria-required to required rule elements\n if (rule === 'required') {\n this.inputElement.setAttribute('aria-required', 'true');\n }\n break;\n }\n else {\n this.hideMessage(name);\n eventArgs.status = 'success';\n this.trigger('validationComplete', eventArgs);\n }\n }\n }\n else {\n return;\n }\n };\n // Update the optional validation status\n FormValidator.prototype.optionalValidationStatus = function (name, refer) {\n if (!this.rules[\"\" + name][this.required] && !this.inputElement.value.length && !isNullOrUndefined(this.infoElement)) {\n this.infoElement.innerHTML = this.inputElement.value;\n this.infoElement.setAttribute('aria-invalid', 'false');\n refer.status = '';\n this.hideMessage(name);\n }\n };\n // Check the input element whether it's value satisfy the validation rule or not\n FormValidator.prototype.isValid = function (name, rule) {\n var params = this.rules[\"\" + name][\"\" + rule];\n var param = (params instanceof Array && typeof params[1] === 'string') ? params[0] : params;\n var currentRule = this.rules[\"\" + name][\"\" + rule];\n var dateFormat = ((rule === 'min' || rule === 'max') && this.rules[\"\" + name].date && typeof (this.rules[\"\" + name].date) === 'string') ? this.rules[\"\" + name].date : null;\n var args = { value: this.inputElement.value, param: param, element: this.inputElement, formElement: this.element, format: dateFormat };\n this.trigger('validationBegin', args);\n if (!args.param && rule === 'required') {\n return true;\n }\n if (currentRule && typeof currentRule[0] === 'function') {\n var fn = currentRule[0];\n return fn.call(this, { element: this.inputElement, value: this.inputElement.value });\n }\n else if (FormValidator_1.isCheckable(this.inputElement)) {\n if (rule !== 'required') {\n return true;\n }\n return selectAll('input[name=\"' + name + '\"]:checked', this.element).length > 0;\n }\n else {\n return FormValidator_1.checkValidator[\"\" + rule](args);\n }\n };\n // Return default error message or custom error message\n FormValidator.prototype.getErrorMessage = function (ruleValue, rule) {\n var message = this.inputElement.getAttribute('data-' + rule + '-message') ?\n this.inputElement.getAttribute('data-' + rule + '-message') :\n (ruleValue instanceof Array && typeof ruleValue[1] === 'string') ? ruleValue[1] :\n (Object.keys(this.localyMessage).length !== 0) ? this.localyMessage[\"\" + rule] : this.defaultMessages[\"\" + rule];\n var formats = message.match(/{(\\d)}/g);\n if (!isNullOrUndefined(formats)) {\n for (var i = 0; i < formats.length; i++) {\n var value = ruleValue instanceof Array ? ruleValue[parseInt(i.toString(), 10)] : ruleValue;\n message = message.replace(formats[parseInt(i.toString(), 10)], value);\n }\n }\n return message;\n };\n // Create error element based on name and error message\n FormValidator.prototype.createErrorElement = function (name, message, input) {\n var errorElement = createElement(this.errorElement, {\n className: this.errorClass,\n innerHTML: message,\n attrs: { for: name }\n });\n // Create message design if errorOption is message\n if (this.errorOption === ErrorOption.Message) {\n errorElement.classList.remove(this.errorClass);\n errorElement.classList.add('e-message');\n errorElement = createElement(this.errorContainer, { className: this.errorClass, innerHTML: errorElement.outerHTML });\n }\n errorElement.id = this.inputElement.name + '-info';\n // Append error message into MVC error message element\n if (this.element.querySelector('[data-valmsg-for=\"' + input.id + '\"]')) {\n this.element.querySelector('[data-valmsg-for=\"' + input.id + '\"]').appendChild(errorElement);\n }\n else if (input.hasAttribute('data-msg-containerid') === true) {\n // Append error message into custom div element\n var containerId = input.getAttribute('data-msg-containerid');\n var divElement = select('#' + containerId, this.element);\n divElement.appendChild(errorElement);\n }\n else if (this.customPlacement != null) {\n // Call custom placement function if customPlacement is not null\n this.customPlacement.call(this, this.inputElement, errorElement);\n }\n else {\n var inputParent = this.inputElement.parentElement;\n var grandParent = inputParent.parentElement;\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper')) {\n grandParent.insertBefore(errorElement, inputParent.nextSibling);\n }\n else if (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper')) {\n grandParent.parentElement.insertBefore(errorElement, grandParent.nextSibling);\n }\n else {\n inputParent.insertBefore(errorElement, this.inputElement.nextSibling);\n }\n }\n errorElement.style.display = 'block';\n this.getErrorElement(name);\n this.validated.push(name);\n this.checkRequired(name);\n };\n // Get error element by name\n FormValidator.prototype.getErrorElement = function (name) {\n this.infoElement = select(this.errorElement + '.' + this.errorClass, this.inputElement.parentElement);\n if (!this.infoElement) {\n this.infoElement = select(this.errorElement + '.' + this.errorClass + '[for=\"' + name + '\"]', this.element);\n }\n return this.infoElement;\n };\n // Remove existing rule from errorRules object\n FormValidator.prototype.removeErrorRules = function (name) {\n for (var i = 0; i < this.errorRules.length; i++) {\n var rule = this.errorRules[parseInt(i.toString(), 10)];\n if (rule.name === name) {\n this.errorRules.splice(i, 1);\n }\n }\n };\n // Show error message to the input element\n FormValidator.prototype.showMessage = function (errorRule) {\n this.infoElement.style.display = 'block';\n this.infoElement.innerHTML = errorRule.message;\n this.checkRequired(errorRule.name);\n };\n // Hide error message based on input name\n FormValidator.prototype.hideMessage = function (name) {\n if (this.infoElement) {\n this.infoElement.style.display = 'none';\n this.removeErrorRules(name);\n var inputParent = this.inputElement.parentElement;\n var grandParent = inputParent.parentElement;\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') ||\n (this.inputElement.classList.contains('e-input') && inputParent.classList.contains('e-input-group'))) {\n inputParent.classList.add(this.validClass);\n inputParent.classList.remove(this.errorClass);\n }\n else if ((grandParent != null) && (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper'))) {\n grandParent.classList.add(this.validClass);\n grandParent.classList.remove(this.errorClass);\n }\n else {\n this.inputElement.classList.add(this.validClass);\n this.inputElement.classList.remove(this.errorClass);\n }\n this.inputElement.setAttribute('aria-invalid', 'false');\n }\n };\n // Check whether the input element have required rule and its value is not empty\n FormValidator.prototype.checkRequired = function (name) {\n if (!this.rules[\"\" + name][this.required] && !this.inputElement.value.length && !isNullOrUndefined(this.infoElement)) {\n this.infoElement.innerHTML = this.inputElement.value;\n this.infoElement.setAttribute('aria-invalid', 'false');\n this.hideMessage(name);\n }\n };\n // Return boolean result if the input have checkable or submit types\n FormValidator.isCheckable = function (input) {\n var inputType = input.getAttribute('type');\n return inputType && (inputType === 'checkbox' || inputType === 'radio' || inputType === 'submit');\n };\n var FormValidator_1;\n // List of function to validate the rules\n FormValidator.checkValidator = {\n required: function (option) {\n return !isNaN(Date.parse(option.value)) ? !isNaN(new Date(option.value).getTime()) : option.value.toString().length > 0;\n },\n email: function (option) {\n return regex.EMAIL.test(option.value);\n },\n url: function (option) {\n return regex.URL.test(option.value);\n },\n dateIso: function (option) {\n return regex.DATE_ISO.test(option.value);\n },\n tel: function (option) {\n return regex.PHONE.test(option.value);\n },\n creditcard: function (option) {\n return regex.CREDITCARD.test(option.value);\n },\n number: function (option) {\n return !isNaN(Number(option.value)) && option.value.indexOf(' ') === -1;\n },\n digits: function (option) {\n return regex.DIGITS.test(option.value);\n },\n maxLength: function (option) {\n return option.value.length <= Number(option.param);\n },\n minLength: function (option) {\n return option.value.length >= Number(option.param);\n },\n rangeLength: function (option) {\n var param = option.param;\n return option.value.length >= param[0] && option.value.length <= param[1];\n },\n range: function (option) {\n var param = option.param;\n return !isNaN(Number(option.value)) && Number(option.value) >= param[0] && Number(option.value) <= param[1];\n },\n date: function (option) {\n if (!isNullOrUndefined(option.param) && (typeof (option.param) === 'string' && option.param !== '')) {\n var globalize = new Internationalization;\n var dateOptions = { format: option.param.toString(), type: 'dateTime', skeleton: 'yMd' };\n var dateValue = globalize.parseDate(option.value, dateOptions);\n return (!isNullOrUndefined(dateValue) && dateValue instanceof Date && !isNaN(+dateValue));\n }\n else {\n return !isNaN(new Date(option.value).getTime());\n }\n },\n max: function (option) {\n if (!isNaN(Number(option.value))) {\n // Maximum rule validation for number\n return +option.value <= +option.param;\n }\n // Maximum rule validation for date\n if (option.format && option.format !== '') {\n var globalize = new Internationalization;\n var dateOptions = { format: option.format.toString(), type: 'dateTime', skeleton: 'yMd' };\n var dateValue = globalize.parseDate(option.value, dateOptions);\n var maxValue = (typeof (option.param) === 'string') ? globalize.parseDate(JSON.parse(JSON.stringify(option.param)), dateOptions) : option.param;\n return new Date(dateValue).getTime() <= new Date(maxValue).getTime();\n }\n else {\n return new Date(option.value).getTime() <= new Date(JSON.parse(JSON.stringify(option.param))).getTime();\n }\n },\n min: function (option) {\n if (!isNaN(Number(option.value))) {\n // Minimum rule validation for number\n return +option.value >= +option.param;\n }\n else if ((option.value).indexOf(',') !== -1) {\n var uNum = (option.value).replace(/,/g, '');\n return parseFloat(uNum) >= Number(option.param); // Convert option.param to a number\n }\n else {\n // Minimum rule validation for date\n if (option.format && option.format !== '') {\n var globalize = new Internationalization;\n var dateOptions = { format: option.format.toString(), type: 'dateTime', skeleton: 'yMd' };\n var dateValue = globalize.parseDate(option.value, dateOptions);\n var minValue = (typeof (option.param) === 'string') ? globalize.parseDate(JSON.parse(JSON.stringify(option.param)), dateOptions) : option.param;\n return new Date(dateValue).getTime() >= new Date(minValue).getTime();\n }\n else {\n return new Date(option.value).getTime() >= new Date(JSON.parse(JSON.stringify(option.param))).getTime();\n }\n }\n },\n regex: function (option) {\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n return new RegExp(option.param).test(option.value);\n },\n equalTo: function (option) {\n var compareTo = option.formElement.querySelector('#' + option.param);\n option.param = compareTo.value;\n return option.param === option.value;\n }\n };\n __decorate([\n Property('')\n ], FormValidator.prototype, \"locale\", void 0);\n __decorate([\n Property('e-hidden')\n ], FormValidator.prototype, \"ignore\", void 0);\n __decorate([\n Property()\n ], FormValidator.prototype, \"rules\", void 0);\n __decorate([\n Property('e-error')\n ], FormValidator.prototype, \"errorClass\", void 0);\n __decorate([\n Property('e-valid')\n ], FormValidator.prototype, \"validClass\", void 0);\n __decorate([\n Property('label')\n ], FormValidator.prototype, \"errorElement\", void 0);\n __decorate([\n Property('div')\n ], FormValidator.prototype, \"errorContainer\", void 0);\n __decorate([\n Property(ErrorOption.Label)\n ], FormValidator.prototype, \"errorOption\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"focusout\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"keyup\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"submit\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"validationBegin\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"validationComplete\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"customPlacement\", void 0);\n FormValidator = FormValidator_1 = __decorate([\n NotifyPropertyChanges\n ], FormValidator);\n return FormValidator;\n}(Base));\nexport { FormValidator };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/triple-slash-reference */\n/// \nimport { attributes, getUniqueID, Collection, NotifyPropertyChanges, Property } from '@syncfusion/ej2-base';\nimport { getZindexPartial } from '@syncfusion/ej2-popups';\nimport { MenuBase, MenuItem } from '../common/menu-base';\n/**\n * The ContextMenu is a graphical user interface that appears on the user right click/touch hold operation.\n * ```html\n *
\n *
    \n * ```\n * ```typescript\n * \n * ```\n */\nvar ContextMenu = /** @class */ (function (_super) {\n __extends(ContextMenu, _super);\n /**\n * Constructor for creating the widget.\n *\n * @private\n * @param {ContextMenuModel} options - Specifies the context menu model\n * @param {string} element - Specifies the element\n */\n function ContextMenu(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * For internal use only - prerender processing.\n *\n * @private\n * @returns {void}\n */\n ContextMenu.prototype.preRender = function () {\n this.isMenu = false;\n this.element.id = this.element.id || getUniqueID('ej2-contextmenu');\n _super.prototype.preRender.call(this);\n };\n ContextMenu.prototype.initialize = function () {\n _super.prototype.initialize.call(this);\n attributes(this.element, { 'role': 'menubar', 'tabindex': '0' });\n this.element.style.zIndex = getZindexPartial(this.element).toString();\n };\n /**\n * This method is used to open the ContextMenu in specified position.\n *\n * @param {number} top - To specify ContextMenu vertical positioning.\n * @param {number} left - To specify ContextMenu horizontal positioning.\n * @param {HTMLElement} target - To calculate z-index for ContextMenu based upon the specified target.\n * @function open\n * @returns {void}\n */\n ContextMenu.prototype.open = function (top, left, target) {\n _super.prototype.openMenu.call(this, null, null, top, left, null, target);\n };\n /**\n * Closes the ContextMenu if it is opened.\n *\n * @function close\n * @returns {void}\n */\n ContextMenu.prototype.close = function () {\n _super.prototype.closeMenu.call(this);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @private\n * @param {ContextMenuModel} newProp - Specifies new properties\n * @param {ContextMenuModel} oldProp - Specifies old properties\n * @returns {void}\n */\n ContextMenu.prototype.onPropertyChanged = function (newProp, oldProp) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'filter':\n this.close();\n this.filter = newProp.filter;\n break;\n case 'target':\n this.unWireEvents(oldProp.target);\n this.wireEvents();\n break;\n }\n }\n };\n /**\n * Get module name.\n *\n * @returns {string} - Module Name\n * @private\n */\n ContextMenu.prototype.getModuleName = function () {\n return 'contextmenu';\n };\n __decorate([\n Property('')\n ], ContextMenu.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], ContextMenu.prototype, \"filter\", void 0);\n __decorate([\n Collection([], MenuItem)\n ], ContextMenu.prototype, \"items\", void 0);\n ContextMenu = __decorate([\n NotifyPropertyChanges\n ], ContextMenu);\n return ContextMenu;\n}(MenuBase));\nexport { ContextMenu };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { EventHandler, remove, Browser } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Query, DataManager, Predicate } from '@syncfusion/ej2-data';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { DropDownList, AutoComplete } from '@syncfusion/ej2-dropdowns';\nimport { NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { RadioButton, CheckBox } from '@syncfusion/ej2-buttons';\nimport { distinctStringValues, isComplexField, getComplexFieldID, getCustomDateFormat, applyBiggerTheme, performComplexDataOperation, registerEventHandlers, removeEventHandlers, clearReactVueTemplates } from '../base/util';\nimport { DatePicker, DateTimePicker } from '@syncfusion/ej2-calendars';\nimport { parentsUntil, appendChildren, extend, eventPromise } from '../base/util';\nimport * as events from '../base/constant';\nimport { ContextMenu } from '@syncfusion/ej2-navigations';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\nimport * as literals from '../base/string-literals';\n/**\n * @hidden\n * `ExcelFilter` module is used to handle filtering action.\n */\nvar ExcelFilterBase = /** @class */ (function (_super) {\n __extends(ExcelFilterBase, _super);\n /**\n * Constructor for excel filtering module\n *\n * @param {IXLFilter} parent - parent details\n * @param {Object} customFltrOperators - operator details\n * @hidden\n */\n function ExcelFilterBase(parent, customFltrOperators) {\n var _this = _super.call(this, parent) || this;\n _this.childRefs = [];\n _this.eventHandlers = {};\n _this.isDevice = false;\n _this.focusedMenuItem = null;\n _this.customFilterOperators = customFltrOperators;\n _this.isExcel = true;\n return _this;\n }\n ExcelFilterBase.prototype.getCMenuDS = function (type, operator) {\n var options = {\n number: ['Equal', 'NotEqual', '', 'LessThan', 'LessThanOrEqual', 'GreaterThan',\n 'GreaterThanOrEqual', 'Between', '', 'CustomFilter'],\n string: ['Equal', 'NotEqual', '', 'StartsWith', 'EndsWith', '', 'Contains', 'NotContains', '', 'CustomFilter']\n };\n options.date = options.number;\n options.datetime = options.number;\n options.dateonly = options.number;\n var model = [];\n for (var i = 0; i < options[\"\" + type].length; i++) {\n if (options[\"\" + type][parseInt(i.toString(), 10)].length) {\n if (operator) {\n model.push({\n text: this.getLocalizedLabel(options[\"\" + type][parseInt(i.toString(), 10)]) + '...',\n iconCss: 'e-icons e-icon-check ' + (operator === options[\"\" + type][parseInt(i.toString(), 10)].toLowerCase() ? '' : 'e-emptyicon')\n });\n }\n else {\n model.push({\n text: this.getLocalizedLabel(options[\"\" + type][parseInt(i.toString(), 10)]) + '...'\n });\n }\n }\n else {\n model.push({ separator: true });\n }\n }\n return model;\n };\n /**\n * To destroy the filter bar.\n *\n * @returns {void}\n * @hidden\n */\n ExcelFilterBase.prototype.destroy = function () {\n if (this.dlg) {\n this.unwireExEvents();\n _super.prototype.closeDialog.call(this);\n }\n if (!this.isDevice && this.menuObj) {\n var li = this.menuObj.element.querySelector('li.e-focused');\n if (!(li && parentsUntil(li, 'e-excel-menu'))) {\n this.destroyCMenu();\n }\n }\n if (this.dlgObj && !this.dlgObj.isDestroyed) {\n this.removeDialog();\n }\n };\n ExcelFilterBase.prototype.createMenu = function (type, isFiltered, isCheckIcon, eleOptions) {\n var options = { string: 'TextFilter', date: 'DateFilter', dateonly: 'DateFilter', datetime: 'DateTimeFilter', number: 'NumberFilter' };\n this.menu = this.parent.createElement('div', { className: 'e-contextmenu-wrapper' });\n if (this.parent.enableRtl) {\n this.menu.classList.add('e-rtl');\n }\n else {\n this.menu.classList.remove('e-rtl');\n }\n if (this.parent.cssClass) {\n this.menu.classList.add(this.parent.cssClass);\n }\n var ul = this.parent.createElement('ul');\n var icon = isFiltered ? 'e-excl-filter-icon e-filtered' : 'e-excl-filter-icon';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.parent.allowSorting && this.parent.getModuleName() === 'grid'\n && !this.options.isResponsiveFilter) {\n var hdrele = this.parent.getColumnHeaderByUid(eleOptions.uid).getAttribute('aria-sort');\n var colIsSort = this.parent.getColumnByField(eleOptions.field).allowSorting;\n var isAsc = (!colIsSort || hdrele === 'ascending') ? 'e-disabled e-excel-ascending' : 'e-excel-ascending';\n var isDesc = (!colIsSort || hdrele === 'descending') ? 'e-disabled e-excel-descending' : 'e-excel-descending';\n var ascName = (type === 'string') ? this.getLocalizedLabel('SortAtoZ') : (type === 'datetime' || type === 'date') ?\n this.getLocalizedLabel('SortByOldest') : this.getLocalizedLabel('SortSmallestToLargest');\n var descName = (type === 'string') ? this.getLocalizedLabel('SortZtoA') : (type === 'datetime' || type === 'date') ?\n this.getLocalizedLabel('SortByNewest') : this.getLocalizedLabel('SortLargestToSmallest');\n ul.appendChild(this.createMenuElem(ascName, isAsc, 'e-sortascending'));\n ul.appendChild(this.createMenuElem(descName, isDesc, 'e-sortdescending'));\n var separator = this.parent.createElement('li', { className: 'e-separator e-menu-item e-excel-separator' });\n ul.appendChild(separator);\n }\n if (!this.options.isResponsiveFilter) {\n ul.appendChild(this.createMenuElem(this.getLocalizedLabel('ClearFilter'), isFiltered ? '' : 'e-disabled', icon));\n }\n if (type !== 'boolean') {\n ul.appendChild(this.createMenuElem(this.getLocalizedLabel(options[\"\" + type]), 'e-submenu', isCheckIcon && this.ensureTextFilter() ? 'e-icon-check' : icon + ' e-emptyicon', true));\n }\n this.menu.appendChild(ul);\n this.parent.notify(events.beforeFltrcMenuOpen, { element: this.menu });\n this.parent.notify(events.refreshCustomFilterClearBtn, { isFiltered: isFiltered });\n };\n ExcelFilterBase.prototype.createMenuElem = function (val, className, iconName, isSubMenu) {\n var li = this.parent.createElement('li', { className: className + ' e-menu-item' });\n li.innerHTML = val;\n li.tabIndex = li.classList.contains('e-disabled') ? -1 : 0;\n li.insertBefore(this.parent.createElement('span', { className: 'e-menu-icon e-icons ' + iconName, attrs: { 'aria-hidden': 'true' } }), li.firstChild);\n if (isSubMenu) {\n li.appendChild(this.parent.createElement('span', { className: 'e-icons e-caret' }));\n }\n return li;\n };\n ExcelFilterBase.prototype.wireExEvents = function () {\n if (!Browser.isDevice) {\n EventHandler.add(this.dlg, 'mouseover', this.hoverHandler, this);\n }\n EventHandler.add(this.dlg, 'click', this.clickExHandler, this);\n EventHandler.add(this.dlg, 'keyup', this.keyUp, this);\n EventHandler.add(this.dlg, 'keydown', this.keyDown, this);\n };\n ExcelFilterBase.prototype.unwireExEvents = function () {\n if (!Browser.isDevice) {\n EventHandler.remove(this.dlg, 'mouseover', this.hoverHandler);\n }\n EventHandler.remove(this.dlg, 'click', this.clickExHandler);\n EventHandler.remove(this.dlg, 'keyup', this.keyUp);\n EventHandler.remove(this.dlg, 'keydown', this.keyDown);\n };\n ExcelFilterBase.prototype.clickExHandler = function (e) {\n var options = { string: 'TextFilter', date: 'DateFilter', datetime: 'DateTimeFilter', number: 'NumberFilter' };\n var menuItem = parentsUntil(e.target, 'e-menu-item');\n if (menuItem) {\n if (this.getLocalizedLabel('ClearFilter') === menuItem.innerText.trim()) {\n this.clearFilter();\n this.closeDialog();\n }\n else if ((this.options.isResponsiveFilter || Browser.isDevice)\n && this.getLocalizedLabel(options[this.options.type]) === menuItem.innerText.trim()) {\n this.hoverHandler(e);\n }\n }\n };\n ExcelFilterBase.prototype.focusNextOrPrevElement = function (e, focusableElements, focusClassName) {\n var nextIndex = (e.key === 'ArrowUp' || (e.key === 'Tab' && e.shiftKey)) ? focusableElements.indexOf(document.activeElement) - 1\n : focusableElements.indexOf(document.activeElement) + 1;\n var nextElement = focusableElements[((nextIndex + focusableElements.length) % focusableElements.length)];\n // Set focus on the next / previous element\n if (nextElement) {\n nextElement.focus();\n var focusClass = nextElement.classList.contains('e-chk-hidden') ? 'e-chkfocus' : focusClassName;\n var target = nextElement.classList.contains('e-chk-hidden') ? parentsUntil(nextElement, 'e-ftrchk') : parentsUntil(nextElement, 'e-menu-item');\n this.excelSetFocus(target, focusClass);\n }\n };\n ExcelFilterBase.prototype.keyUp = function (e) {\n if ((e.key === 'Tab' && e.shiftKey) || e.key === 'Tab') {\n var focusClass = e.target.classList.contains('e-chk-hidden') ? 'e-chkfocus' : 'e-menufocus';\n var target = e.target.classList.contains('e-menu-item')\n ? parentsUntil(e.target, 'e-menu-item') : parentsUntil(e.target, 'e-ftrchk');\n this.excelSetFocus(target, focusClass);\n }\n else if ((e.key === 'ArrowUp' || e.key === 'ArrowDown') && !e.altKey) {\n e.preventDefault();\n var focusableElements = Array.from(this.dlg.querySelectorAll('input, button, [tabindex]:not([tabindex=\"-1\"]), .e-menu-item:not(.e-disabled):not(.e-separator)'));\n this.focusNextOrPrevElement(e, focusableElements, 'e-menufocus');\n }\n else if ((e.key === 'Enter' || e.code === 'ArrowRight') && e.target.classList.contains('e-menu-item')) {\n e.preventDefault();\n e.target.click();\n if (e.target.classList.contains('e-submenu')) {\n this.hoverHandler(e);\n this.menuObj.element.querySelector('.e-menu-item').focus();\n this.excelSetFocus(parentsUntil(this.menuObj.element.querySelector('.e-menu-item'), 'e-menu-item'), 'e-focused');\n this.focusedMenuItem = this.menuObj.element.querySelector('.e-menu-item');\n }\n }\n };\n ExcelFilterBase.prototype.keyDown = function (e) {\n //prevented up and down arrow key press default functionality to prevent the browser scroll when performing keyboard navigation in excel filter element.\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n }\n };\n ExcelFilterBase.prototype.excelSetFocus = function (elem, className) {\n var prevElem = this.cmenu.querySelector('.' + className);\n if (prevElem) {\n prevElem.classList.remove(className);\n }\n if (elem) {\n elem.classList.add(className);\n }\n };\n ExcelFilterBase.prototype.destroyCMenu = function () {\n this.isCMenuOpen = false;\n if (this.menuObj && !this.menuObj.isDestroyed) {\n this.menuObj.destroy();\n EventHandler.remove(this.menuObj.element, 'keydown', this.contextKeyDownHandler);\n remove(this.cmenu);\n this.parent.notify(events.renderResponsiveCmenu, { target: null, header: '', isOpen: false, col: this.options.column });\n }\n };\n ExcelFilterBase.prototype.hoverHandler = function (e) {\n if (this.options.isResponsiveFilter && e.type === 'mouseover') {\n return;\n }\n var target = e.target.querySelector('.e-contextmenu');\n var li = parentsUntil(e.target, 'e-menu-item');\n var focused = this.menu.querySelector('.e-focused');\n var isSubMenu;\n if (focused) {\n focused.classList.remove('e-focused');\n }\n if (li) {\n li.classList.add('e-focused');\n isSubMenu = li.classList.contains('e-submenu');\n }\n if (target) {\n return;\n }\n if (!isSubMenu) {\n var submenu = this.menu.querySelector('.e-submenu');\n if (!isNullOrUndefined(submenu)) {\n submenu.classList.remove('e-selected');\n }\n this.destroyCMenu();\n }\n var selectedMenu = this.ensureTextFilter();\n if (!this.isCMenuOpen && isSubMenu) {\n li.classList.add('e-selected');\n this.isCMenuOpen = true;\n var menuOptions = {\n items: this.getCMenuDS(this.options.type, selectedMenu ? selectedMenu.replace(/\\s/g, '') : undefined),\n select: this.selectHandler.bind(this),\n onClose: this.destroyCMenu.bind(this),\n enableRtl: this.parent.enableRtl,\n animationSettings: { effect: 'None' },\n beforeClose: this.preventClose.bind(this),\n cssClass: this.options.isResponsiveFilter && this.parent.cssClass ?\n 'e-res-contextmenu-wrapper' + ' ' + this.parent.cssClass : this.options.isResponsiveFilter ?\n 'e-res-contextmenu-wrapper' : this.parent.cssClass ? this.parent.cssClass : ''\n };\n this.parent.element.appendChild(this.cmenu);\n this.menuObj = new ContextMenu(menuOptions, this.cmenu);\n EventHandler.add(this.menuObj.element, 'keydown', this.contextKeyDownHandler, this);\n var client = this.menu.querySelector('.e-submenu').getBoundingClientRect();\n var pos = { top: 0, left: 0 };\n if (this.options.isResponsiveFilter) {\n var options = { string: 'TextFilter', date: 'DateFilter', datetime: 'DateTimeFilter', number: 'NumberFilter' };\n var content = document.querySelector('.e-responsive-dialog > .e-dlg-header-content');\n var height = content.offsetHeight + 4;\n this.menuObj.element.style.height = 'calc(100% - ' + height + 'px)';\n this.menuObj['open'](height, 0, document.body);\n var header = this.getLocalizedLabel(options[this.options.type]);\n this.parent.notify(events.renderResponsiveCmenu, {\n target: this.menuObj.element.parentElement, header: header, isOpen: true\n });\n }\n else {\n if (Browser.isDevice) {\n this.isDevice = true;\n var contextRect = this.getContextBounds();\n pos.top = (window.innerHeight - contextRect.height) / 2;\n pos.left = (window.innerWidth - contextRect.width) / 2;\n this.closeDialog();\n this.isDevice = false;\n }\n else {\n pos.top = Browser.isIE ? window.pageYOffset + client.top : window.scrollY + client.top;\n pos.left = this.getCMenuYPosition(this.dlg);\n }\n this.menuObj['open'](pos.top, pos.left, e.target);\n }\n applyBiggerTheme(this.parent.element, this.menuObj.element.parentElement);\n }\n };\n ExcelFilterBase.prototype.contextKeyDownHandler = function (e) {\n if ((e.key === 'Tab' && e.shiftKey) || e.key === 'Tab') {\n e.preventDefault();\n var focusableElements = Array.from(this.menuObj.element.querySelectorAll('[tabindex]:not([tabindex=\"-1\"]), .e-menu-item:not(.e-disabled):not(.e-separator)'));\n // Focus the next / previous context menu item\n this.focusNextOrPrevElement(e, focusableElements, 'e-focused');\n }\n else if (e.key === 'ArrowLeft' || e.key === 'Escape') {\n e.preventDefault();\n this.menuObj.close();\n this.focusedMenuItem = null;\n document.querySelector('.e-submenu.e-menu-item').classList.remove('e-selected');\n document.querySelector('.e-submenu.e-menu-item').focus();\n }\n };\n ExcelFilterBase.prototype.ensureTextFilter = function () {\n var selectedMenu;\n var predicates = this.existingPredicate[this.options.field];\n if (predicates && predicates.length === 2) {\n if (predicates[0].operator === 'greaterthanorequal' && predicates[1].operator === 'lessthanorequal') {\n selectedMenu = 'between';\n }\n else {\n selectedMenu = 'customfilter';\n }\n }\n else {\n if (predicates && predicates.length === 1) {\n this.optrData = this.customFilterOperators[this.options.type + 'Operator'];\n selectedMenu = predicates[0].operator;\n }\n }\n return selectedMenu;\n };\n ExcelFilterBase.prototype.preventClose = function (args) {\n if (this.options && this.options.isResponsiveFilter && args.event) {\n var target = args.event.target;\n var isFilterBack = target.classList.contains('e-resfilterback')\n || target.classList.contains('e-res-back-btn') || target.classList.contains('e-menu-item');\n args.cancel = !isFilterBack;\n }\n else {\n if (args.event instanceof MouseEvent && args.event.target.classList.contains('e-submenu')) {\n args.cancel = true;\n }\n }\n };\n ExcelFilterBase.prototype.getContextBounds = function () {\n this.menuObj.element.style.display = 'block';\n return this.menuObj.element.getBoundingClientRect();\n };\n ExcelFilterBase.prototype.getCMenuYPosition = function (target) {\n var contextWidth = this.getContextBounds().width;\n var targetPosition = target.getBoundingClientRect();\n var leftPos = targetPosition.right + contextWidth - this.parent.element.clientWidth;\n var targetBorder = target.offsetWidth - target.clientWidth;\n targetBorder = targetBorder ? targetBorder + 1 : 0;\n return (leftPos < 1) ? (targetPosition.right + 1 - targetBorder) : (targetPosition.left - contextWidth - 1 + targetBorder);\n };\n ExcelFilterBase.prototype.openDialog = function (options) {\n var _this = this;\n this.updateModel(options);\n this.getAndSetChkElem(options);\n this.showDialog(options);\n if (options.cancel) {\n return;\n }\n this.dialogObj.dataBind();\n var filterLength = (this.existingPredicate[options.field] && this.existingPredicate[options.field].length) ||\n this.options.filteredColumns.filter(function (col) {\n return _this.options.field === col.field;\n }).length;\n this.createMenu(options.type, filterLength > 0, (filterLength === 1 || filterLength === 2), options);\n this.dlg.insertBefore(this.menu, this.dlg.firstChild);\n this.dlg.classList.add('e-excelfilter');\n if (this.parent.enableRtl) {\n this.dlg.classList.add('e-rtl');\n }\n this.dlg.classList.remove('e-checkboxfilter');\n this.cmenu = this.parent.createElement('ul', { className: 'e-excel-menu' });\n var menuItems = this.dlg.querySelectorAll('.e-menu-item');\n menuItems.forEach(function (menuItem) {\n if (menuItem.scrollWidth > menuItem.clientWidth) {\n menuItem.setAttribute('title', menuItem.textContent);\n }\n });\n if (options.column.showColumnMenu) {\n this.parent.notify(events.filterDialogCreated, {});\n }\n this.wireExEvents();\n };\n ExcelFilterBase.prototype.closeDialog = function () {\n this.destroy();\n };\n ExcelFilterBase.prototype.selectHandler = function (e) {\n if (e.item) {\n this.parent.notify(events.filterCmenuSelect, {});\n this.menuItem = e.item;\n this.closeDialog();\n this.renderDialogue(e);\n }\n };\n /**\n * @hidden\n * @param {MenuEventArgs} e - event args\n * @returns {void}\n */\n ExcelFilterBase.prototype.renderDialogue = function (e) {\n var _this = this;\n var target = e ? e.element : undefined;\n var column = this.options.field;\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var mainDiv = this.parent.createElement('div', {\n className: 'e-xlfl-maindiv',\n id: isComplex ? complexFieldName + '-xlflmenu' : column + '-xlflmenu'\n });\n this.dlgDiv = this.parent.createElement('div', {\n className: 'e-xlflmenu',\n id: isComplex ? complexFieldName + '-xlfldlg' : column + '-xlfldlg'\n });\n if (this.options.isResponsiveFilter) {\n var responsiveCnt = document.querySelector('.e-resfilter > .e-dlg-content > .e-xl-customfilterdiv');\n responsiveCnt.appendChild(this.dlgDiv);\n }\n else {\n this.parent.element.appendChild(this.dlgDiv);\n }\n this.dlgObj = new Dialog({\n header: this.getLocalizedLabel('CustomFilter'),\n isModal: true,\n overlayClick: this.removeDialog.bind(this),\n showCloseIcon: true,\n locale: this.parent.locale,\n closeOnEscape: true,\n target: document.body,\n // target: this.parent.element,\n visible: false,\n enableRtl: this.parent.enableRtl,\n open: function () {\n var rows = [].slice.call(_this.dlgObj.element.querySelectorAll('table.e-xlfl-table tr.e-xlfl-fields'));\n for (var i = 0; i < rows.length; i++) {\n var valInput = rows[i].children[1].querySelector('.e-control');\n var dropDownList = rows[i]\n .querySelector('.e-dropdownlist.e-control')['ej2_instances'][0];\n if (dropDownList.value === 'isempty' || dropDownList.value === 'isnotempty' ||\n dropDownList.value === 'isnull' || dropDownList.value === 'isnotnull') {\n valInput['ej2_instances'][0]['enabled'] = false;\n }\n else if (valInput && !isNullOrUndefined(valInput.getAttribute('disabled'))) {\n valInput['ej2_instances'][0]['enabled'] = true;\n }\n }\n var row = _this.dlgObj.element.querySelector('table.e-xlfl-table>tr');\n if (_this.options.column.filterTemplate) {\n var templateField_1 = isComplexField(_this.options.column.field) ?\n getComplexFieldID(_this.options.column.field) : _this.options.column.field;\n var isReactCompiler = _this.parent.isReact && typeof (_this.options.column.filterTemplate) !== 'string';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var isReactChild = _this.parent.parentDetails && _this.parent.parentDetails.parentInstObj &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n _this.parent.renderTemplates(function () {\n row.querySelector('#' + templateField_1 + '-xlfl-frstvalue').focus();\n });\n }\n else {\n row.querySelector('#' + templateField_1 + '-xlfl-frstvalue').focus();\n }\n }\n else {\n //(row.cells[1].querySelector('input:not([type=hidden])') as HTMLElement).focus();\n }\n },\n close: this.removeDialog.bind(this),\n created: this.createdDialog.bind(this, target, column),\n buttons: [{\n click: this.filterBtnClick.bind(this, column),\n buttonModel: {\n content: this.getLocalizedLabel('OKButton'), isPrimary: true,\n cssClass: this.parent.cssClass ? 'e-xlfl-okbtn' + ' ' + this.parent.cssClass : 'e-xlfl-okbtn'\n }\n },\n {\n click: this.removeDialog.bind(this),\n buttonModel: { content: this.getLocalizedLabel('CancelButton'),\n cssClass: this.parent.cssClass ? 'e-xlfl-cancelbtn' + ' ' + this.parent.cssClass : 'e-xlfl-cancelbtn' }\n }],\n content: mainDiv,\n width: 430,\n animationSettings: { effect: 'None' },\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n var isStringTemplate = 'isStringTemplate';\n this.dlgObj[\"\" + isStringTemplate] = true;\n this.renderResponsiveDialog();\n this.dlgDiv.setAttribute('aria-label', this.getLocalizedLabel('CustomFilterDialogARIA'));\n this.childRefs.unshift(this.dlgObj);\n this.dlgObj.appendTo(this.dlgDiv);\n };\n ExcelFilterBase.prototype.renderResponsiveDialog = function () {\n if (this.options.isResponsiveFilter) {\n var rowResponsiveDlg = document.querySelector('.e-row-responsive-filter');\n if (rowResponsiveDlg) {\n rowResponsiveDlg.classList.remove('e-row-responsive-filter');\n }\n this.dlgObj.buttons = [{}];\n this.dlgObj.header = undefined;\n this.dlgObj.position = { X: '', Y: '' };\n this.dlgObj.target = document.querySelector('.e-resfilter > .e-dlg-content > .e-xl-customfilterdiv');\n this.dlgObj.width = '100%';\n this.dlgObj.isModal = false;\n this.dlgObj.showCloseIcon = false;\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n ExcelFilterBase.prototype.removeDialog = function () {\n this.parent.notify(events.customFilterClose, {});\n if ((this.parent.isReact || this.parent.isVue) && this.parent.destroyTemplate !== undefined) {\n clearReactVueTemplates(this.parent, ['filterTemplate']);\n }\n this.removeObjects(this.childRefs);\n remove(this.dlgDiv);\n this.parent.notify(events.filterDialogClose, {});\n };\n ExcelFilterBase.prototype.createdDialog = function (target, column) {\n this.renderCustomFilter(target, column);\n this.dlgObj.element.style.left = '0px';\n if (!this.options.isResponsiveFilter) {\n this.dlgObj.element.style.top = '0px';\n }\n else {\n var content = document.querySelector('.e-responsive-dialog > .e-dlg-header-content');\n var height = content.offsetHeight + 4;\n this.dlgObj.element.style.top = height + 'px';\n }\n if (!this.options.isResponsiveFilter && Browser.isDevice && window.innerWidth < 440) {\n this.dlgObj.element.style.width = '90%';\n }\n this.parent.notify(events.beforeCustomFilterOpen, { column: column, dialog: this.dialogObj });\n this.dlgObj.show();\n applyBiggerTheme(this.parent.element, this.dlgObj.element.parentElement);\n };\n ExcelFilterBase.prototype.renderCustomFilter = function (target, column) {\n var dlgConetntEle = this.dlgObj.element.querySelector('.e-xlfl-maindiv');\n var dlgFields = this.parent.createElement('div', { innerHTML: this.getLocalizedLabel('ShowRowsWhere'), className: 'e-xlfl-dlgfields' });\n dlgConetntEle.appendChild(dlgFields);\n //column name\n var fieldSet = this.parent.createElement('div', { innerHTML: this.options.displayName, className: 'e-xlfl-fieldset' });\n dlgConetntEle.appendChild(fieldSet);\n this.renderFilterUI(column, dlgConetntEle);\n };\n /**\n * @hidden\n * @param {string} col - Defines column details\n * @returns {void}\n */\n ExcelFilterBase.prototype.filterBtnClick = function (col) {\n var isComplex = !isNullOrUndefined(col) && isComplexField(col);\n var complexFieldName = !isNullOrUndefined(col) && getComplexFieldID(col);\n var colValue = isComplex ? complexFieldName : col;\n var fValue = this.dlgDiv.querySelector('#' + colValue + '-xlfl-frstvalue').ej2_instances[0];\n var fOperator = this.dlgDiv.querySelector('#' + colValue + '-xlfl-frstoptr').ej2_instances[0];\n var sValue = this.dlgDiv.querySelector('#' + colValue + '-xlfl-secndvalue').ej2_instances[0];\n var sOperator = this.dlgDiv.querySelector('#' + colValue + '-xlfl-secndoptr').ej2_instances[0];\n var checkBoxValue;\n if (this.options.type === 'string') {\n var checkBox = this.dlgDiv.querySelector('#' + colValue + '-xlflmtcase').ej2_instances[0];\n checkBoxValue = checkBox.checked;\n }\n var andRadio = this.dlgDiv.querySelector('#' + colValue + 'e-xlfl-frstpredicate').ej2_instances[0];\n var predicate = (andRadio.checked ? 'and' : 'or');\n if (sValue.value === null) {\n predicate = 'or';\n }\n this.filterByColumn(this.options.field, fOperator.value, fValue.value, predicate, checkBoxValue, this.options.ignoreAccent, sOperator.value, sValue.value);\n this.removeDialog();\n };\n /**\n * @hidden\n * Filters grid row by column name with given options.\n *\n * @param {string} fieldName - Defines the field name of the filter column.\n * @param {string} firstOperator - Defines the first operator by how to filter records.\n * @param {string | number | Date | boolean} firstValue - Defines the first value which is used to filter records.\n * @param {string} predicate - Defines the relationship between one filter query with another by using AND or OR predicate.\n * @param {boolean} matchCase - If ignore case set to true, then filter records with exact match or else\n * filter records with case insensitive(uppercase and lowercase letters treated as same).\n * @param {boolean} ignoreAccent - If ignoreAccent set to true, then ignores the diacritic characters or accents when filtering.\n * @param {string} secondOperator - Defines the second operator by how to filter records.\n * @param {string | number | Date | boolean} secondValue - Defines the first value which is used to filter records.\n * @returns {void}\n */\n ExcelFilterBase.prototype.filterByColumn = function (fieldName, firstOperator, firstValue, predicate, matchCase, ignoreAccent, secondOperator, secondValue) {\n var col = this.parent.getColumnByField ? this.parent.getColumnByField(fieldName) : this.options.column;\n var field = this.isForeignColumn(col) ? col.foreignKeyValue : fieldName;\n var fColl = [];\n var mPredicate;\n var arg = {\n instance: this, handler: this.filterByColumn, arg1: fieldName, arg2: firstOperator, arg3: firstValue, arg4: predicate,\n arg5: matchCase, arg6: ignoreAccent, arg7: secondOperator, arg8: secondValue, cancel: false\n };\n this.parent.notify(events.fltrPrevent, arg);\n if (arg.cancel) {\n return;\n }\n fColl.push({\n field: field,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: firstOperator,\n value: arg.arg3,\n type: this.options.type\n });\n mPredicate = new Predicate(field, firstOperator.toLowerCase(), arg.arg3, !matchCase, ignoreAccent);\n if (!isNullOrUndefined(secondValue) && !isNullOrUndefined(secondOperator)) {\n fColl.push({\n field: field,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: secondOperator,\n value: arg.arg8,\n type: this.options.type\n });\n mPredicate = mPredicate[\"\" + predicate](field, secondOperator.toLowerCase(), secondValue, !matchCase, ignoreAccent);\n }\n var args = {\n action: 'filtering', filterCollection: fColl, field: this.options.field,\n ejpredicate: mPredicate, actualPredicate: fColl\n };\n if (this.isForeignColumn(col)) {\n this.foreignKeyFilter(args, fColl, mPredicate);\n }\n else {\n this.options.handler(args);\n }\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderOperatorUI = function (column, table, elementID, predicates, isFirst) {\n var fieldElement = this.parent.createElement('tr', { className: 'e-xlfl-fields', attrs: { role: 'row' } });\n table.appendChild(fieldElement);\n var xlfloptr = this.parent.createElement('td', { className: 'e-xlfl-optr' });\n fieldElement.appendChild(xlfloptr);\n var optrDiv = this.parent.createElement('div', { className: 'e-xlfl-optrdiv' });\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var optrInput = this.parent\n .createElement('input', { id: isComplex ? complexFieldName + elementID : column + elementID });\n optrDiv.appendChild(optrInput);\n xlfloptr.appendChild(optrDiv);\n var optr = this.options.type + 'Operator';\n var dropDatasource = this.customFilterOperators[\"\" + optr];\n this.optrData = dropDatasource;\n var selectedValue = this.dropSelectedVal(this.options.column, predicates, isFirst);\n //Trailing three dots are sliced.\n var menuText = '';\n if (this.menuItem) {\n menuText = this.menuItem.text.slice(0, -3);\n if (menuText !== this.getLocalizedLabel('CustomFilter')) {\n selectedValue = isFirst ? menuText : undefined;\n }\n if (menuText === this.getLocalizedLabel('Between')) {\n selectedValue = this.getLocalizedLabel(isFirst ? 'GreaterThanOrEqual' : 'LessThanOrEqual');\n }\n }\n var col = this.options.column;\n var dropOptr = new DropDownList(extend({\n dataSource: dropDatasource,\n fields: { text: 'text', value: 'value' },\n text: selectedValue,\n enableRtl: this.parent.enableRtl,\n cssClass: this.parent.cssClass ? this.parent.cssClass : null\n }, col.filter.params));\n this.childRefs.unshift(dropOptr);\n var evt = { 'open': this.dropDownOpen.bind(this), 'change': this.dropDownValueChange.bind(this) };\n registerEventHandlers(optrInput.id, [literals.open, literals.change], evt, this);\n dropOptr.addEventListener(literals['open'], this.eventHandlers[optrInput.id][literals.open]);\n dropOptr.addEventListener(literals.change, this.eventHandlers[optrInput.id][literals.change]);\n dropOptr.appendTo(optrInput);\n var operator = this.getSelectedValue(selectedValue);\n return { fieldElement: fieldElement, operator: operator };\n };\n ExcelFilterBase.prototype.removeHandlersFromComponent = function (component) {\n if (component.element.classList.contains('e-dropdownlist')) {\n removeEventHandlers(component, [literals.open, literals.change], this);\n }\n else if (component.element.classList.contains('e-autocomplete')) {\n removeEventHandlers(component, [events.actionComplete, literals.focus], this);\n }\n };\n ExcelFilterBase.prototype.dropDownOpen = function (args) {\n args.popup.element.style.zIndex = (this.dialogObj.zIndex + 1).toString();\n };\n ExcelFilterBase.prototype.dropDownValueChange = function (args) {\n if (args.element.id.includes('-xlfl-frstoptr')) {\n this.firstOperator = args.value.toString();\n }\n else {\n this.secondOperator = args.value.toString();\n }\n var valInput = args.element.closest('.e-xlfl-fields').children[1].querySelector('.e-control');\n var dropDownList = args.element['ej2_instances'][0];\n if (dropDownList.value === 'isempty' || dropDownList.value === 'isnotempty' ||\n dropDownList.value === 'isnull' || dropDownList.value === 'isnotnull') {\n valInput['ej2_instances'][0]['enabled'] = false;\n }\n else if (!isNullOrUndefined(valInput.getAttribute('disabled'))) {\n valInput['ej2_instances'][0]['enabled'] = true;\n }\n };\n /**\n * @hidden\n * @returns {FilterUI} returns filter UI\n */\n ExcelFilterBase.prototype.getFilterUIInfo = function () {\n return { firstOperator: this.firstOperator, secondOperator: this.secondOperator, field: this.options.field };\n };\n ExcelFilterBase.prototype.getSelectedValue = function (text) {\n var selectedField = new DataManager(this.optrData).executeLocal(new Query().where('text', 'equal', text));\n return !isNullOrUndefined(selectedField[0]) ? selectedField[0].value : '';\n };\n ExcelFilterBase.prototype.dropSelectedVal = function (col, predicates, isFirst) {\n var operator;\n if (predicates && predicates.length > 0) {\n operator = predicates.length === 2 ?\n (isFirst ? predicates[0].operator : predicates[1].operator) :\n (isFirst ? predicates[0].operator : undefined);\n }\n else if (isFirst && col.type === 'string' && !col.filter.operator) {\n operator = 'startswith';\n }\n else {\n operator = isFirst ? col.filter.operator || 'equal' : undefined;\n }\n return this.getSelectedText(operator);\n };\n ExcelFilterBase.prototype.getSelectedText = function (operator) {\n var selectedField = new DataManager(this.optrData).executeLocal(new Query().where('value', 'equal', operator));\n return !isNullOrUndefined(selectedField[0]) ? selectedField[0].text : '';\n };\n ExcelFilterBase.prototype.renderFilterUI = function (column, dlgConetntEle) {\n var predicates = this.existingPredicate[\"\" + column];\n var table = this.parent.createElement('table', { className: 'e-xlfl-table', attrs: { role: 'grid' } });\n dlgConetntEle.appendChild(table);\n var colGroup = this.parent.createElement(literals.colGroup);\n colGroup.innerHTML = '';\n table.appendChild(colGroup);\n //Renders first dropdown\n var optr = this.renderOperatorUI(column, table, '-xlfl-frstoptr', predicates, true);\n this.firstOperator = optr.operator;\n //Renders first value\n this.renderFlValueUI(column, optr, '-xlfl-frstvalue', predicates, true);\n var predicate = this.parent.createElement('tr', { className: 'e-xlfl-predicate', attrs: { role: 'row' } });\n table.appendChild(predicate);\n //Renders first radion button\n this.renderRadioButton(column, predicate, predicates);\n //Renders second dropdown\n optr = this.renderOperatorUI(column, table, '-xlfl-secndoptr', predicates, false);\n this.secondOperator = optr.operator;\n //Renders second text box\n this.renderFlValueUI(column, optr, '-xlfl-secndvalue', predicates, false);\n };\n ExcelFilterBase.prototype.renderRadioButton = function (column, tr, predicates) {\n var td = this.parent.createElement('td', { className: 'e-xlfl-radio', attrs: { 'colSpan': '2' } });\n tr.appendChild(td);\n var radioDiv = this.parent\n .createElement('div', { className: 'e-xlfl-radiodiv', attrs: { 'style': 'display: inline-block' } });\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var frstpredicate = this.parent.createElement('input', { id: isComplex ? complexFieldName + 'e-xlfl-frstpredicate' : column + 'e-xlfl-frstpredicate', attrs: { 'type': 'radio' } });\n var secndpredicate = this.parent.createElement('input', { id: isComplex ? complexFieldName + 'e-xlfl-secndpredicate' : column + 'e-xlfl-secndpredicate', attrs: { 'type': 'radio' } });\n //appends into div\n radioDiv.appendChild(frstpredicate);\n radioDiv.appendChild(secndpredicate);\n td.appendChild(radioDiv);\n if (this.options.type === 'string') {\n this.renderMatchCase(column, tr, td, '-xlflmtcase', predicates);\n }\n // Initialize AND RadioButton component.\n var andRadio = new RadioButton({\n label: this.getLocalizedLabel('AND'),\n name: 'default', checked: true,\n enableRtl: this.parent.enableRtl,\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n this.childRefs.unshift(andRadio);\n // Initialize OR RadioButton component.\n var orRadio = new RadioButton({\n label: this.getLocalizedLabel('OR'),\n name: 'default',\n enableRtl: this.parent.enableRtl,\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n this.childRefs.unshift(orRadio);\n var flValue = predicates && predicates.length === 2 ? predicates[1].predicate : 'and';\n if (flValue === 'and') {\n andRadio.checked = true;\n orRadio.checked = false;\n }\n else {\n orRadio.checked = true;\n andRadio.checked = false;\n }\n // Render initialized RadioButton.\n andRadio.appendTo(frstpredicate);\n orRadio.appendTo(secndpredicate);\n andRadio.element.nextElementSibling.classList.add('e-xlfl-radio-and');\n orRadio.element.nextElementSibling.classList.add('e-xlfl-radio-or');\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ExcelFilterBase.prototype.removeObjects = function (elements) {\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var obj = elements_1[_i];\n if (obj && !obj.isDestroyed) {\n this.removeHandlersFromComponent(obj);\n obj.destroy();\n }\n }\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderFlValueUI = function (column, optr, elementId, predicates, isFirst) {\n var value = this.parent.createElement('td', { className: 'e-xlfl-value' });\n optr.fieldElement.appendChild(value);\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var valueDiv = this.parent.createElement('div', { className: 'e-xlfl-valuediv' });\n var isFilteredCol = this.options.filteredColumns.some(function (col) { return column === col.field; });\n var fltrPredicates = this.options.filteredColumns.filter(function (col) { return col.field === column; });\n if (this.options.column.filterTemplate) {\n var data = {};\n var columnObj = this.options.column;\n if (isFilteredCol && elementId) {\n data = this.getExcelFilterData(elementId, data, columnObj, predicates, fltrPredicates);\n }\n var isReactCompiler = this.parent.isReact && typeof (this.options.column.filterTemplate) !== 'string';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.parent.parentDetails.parentInstObj.isReact;\n var tempID = this.parent.element.id + columnObj.uid + 'filterTemplate';\n if (isReactCompiler || isReactChild) {\n this.options.column.getFilterTemplate()(data, this.parent, 'filterTemplate', tempID, null, null, valueDiv);\n }\n else {\n var element = this.options.column.getFilterTemplate()(data, this.parent, 'filterTemplate', tempID, null, null, null, this.parent.root);\n appendChildren(valueDiv, element);\n }\n if (isReactCompiler || isReactChild) {\n this.parent.renderTemplates(function () {\n valueDiv.querySelector('input').id = isComplex ? complexFieldName + elementId : column + elementId;\n value.appendChild(valueDiv);\n });\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (this.parent.isAngular ? valueDiv.children[0] : valueDiv.querySelector('input')).id = isComplex ?\n complexFieldName + elementId : column + elementId;\n value.appendChild(valueDiv);\n }\n }\n else {\n var valueInput = this.parent\n .createElement('input', { id: isComplex ? complexFieldName + elementId : column + elementId });\n valueDiv.appendChild(valueInput);\n value.appendChild(valueDiv);\n var flValue = void 0;\n var predicate = void 0;\n if (predicates && predicates.length > 0) {\n predicate = predicates.length === 2 ?\n (isFirst ? predicates[0] : predicates[1]) :\n (isFirst ? predicates[0] : undefined);\n flValue = (predicate && predicate.operator === optr.operator) ? predicate.value : undefined;\n if (isNullOrUndefined(flValue)) {\n flValue = undefined;\n }\n }\n var types = {\n 'string': this.renderAutoComplete.bind(this),\n 'number': this.renderNumericTextBox.bind(this),\n 'date': this.renderDate.bind(this),\n 'dateonly': this.renderDate.bind(this),\n 'datetime': this.renderDateTime.bind(this)\n };\n types[this.options.type](this.options, column, valueInput, flValue, this.parent.enableRtl);\n }\n };\n ExcelFilterBase.prototype.getExcelFilterData = function (elementId, data, columnObj, predicates, fltrPredicates) {\n var predIndex = elementId === '-xlfl-frstvalue' ? 0 : 1;\n if (elementId === '-xlfl-frstvalue' || fltrPredicates.length > 1) {\n data = { column: predicates instanceof Array ? predicates[parseInt(predIndex.toString(), 10)] : predicates };\n var indx = this.options.column.columnData && fltrPredicates.length > 1 ?\n (this.options.column.columnData.length === 1 ? 0 : 1) : predIndex;\n data[this.options.field] = columnObj.foreignKeyValue ?\n this.options.column.columnData[parseInt(indx.toString(), 10)][columnObj.foreignKeyValue] :\n fltrPredicates[parseInt(indx.toString(), 10)].value;\n if (this.options.foreignKeyValue) {\n data[this.options.foreignKeyValue] = this.options.column\n .columnData[parseInt(indx.toString(), 10)][columnObj.foreignKeyValue];\n }\n }\n return data;\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderMatchCase = function (column, tr, matchCase, elementId, predicates) {\n var matchCaseDiv = this.parent.createElement('div', { className: 'e-xlfl-matchcasediv', attrs: { 'style': 'display: inline-block' } });\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var matchCaseInput = this.parent.createElement('input', { id: isComplex ? complexFieldName + elementId : column + elementId, attrs: { 'type': 'checkbox' } });\n matchCaseDiv.appendChild(matchCaseInput);\n matchCase.appendChild(matchCaseDiv);\n var flValue = predicates && predicates.length > 0 ?\n (predicates && predicates.length === 2 ? predicates[1].matchCase : predicates[0].matchCase) :\n false;\n // Initialize Match Case check box.\n var checkbox = new CheckBox({\n label: this.getLocalizedLabel('MatchCase'),\n enableRtl: this.parent.enableRtl, checked: flValue,\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n this.childRefs.unshift(checkbox);\n // Render initialized CheckBox.\n checkbox.appendTo(matchCaseInput);\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderDate = function (options, column, inputValue, fValue, isRtl) {\n var format = getCustomDateFormat(options.format, options.type) || options.format;\n var datePicker = new DatePicker(extend({\n format: format,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n placeholder: this.getLocalizedLabel('CustomFilterDatePlaceHolder'),\n width: '100%',\n enableRtl: isRtl,\n value: new Date(fValue),\n locale: this.parent.locale\n }, options.column.filter.params));\n this.childRefs.unshift(datePicker);\n datePicker.appendTo(inputValue);\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderDateTime = function (options, column, inputValue, fValue, isRtl) {\n var format = getCustomDateFormat(options.format, options.type);\n var dateTimePicker = new DateTimePicker(extend({\n format: format,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n placeholder: this.getLocalizedLabel('CustomFilterDatePlaceHolder'),\n width: '100%',\n enableRtl: isRtl,\n value: new Date(fValue),\n locale: this.parent.locale\n }, options.column.filter.params));\n this.childRefs.unshift(dateTimePicker);\n dateTimePicker.appendTo(inputValue);\n };\n ExcelFilterBase.prototype.completeAction = function (e) {\n e.result = distinctStringValues(e.result);\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderNumericTextBox = function (options, column, inputValue, fValue, isRtl) {\n var numericTextBox = new NumericTextBox(extend({\n format: options.format,\n placeholder: this.getLocalizedLabel('CustomFilterPlaceHolder'),\n enableRtl: isRtl,\n value: fValue,\n locale: this.parent.locale,\n cssClass: this.parent.cssClass ? this.parent.cssClass : null\n }, options.column.filter.params));\n this.childRefs.unshift(numericTextBox);\n numericTextBox.appendTo(inputValue);\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderAutoComplete = function (options, column, inputValue, fValue, isRtl) {\n var colObj = this.options.column;\n var isForeignColumn = this.isForeignColumn(colObj);\n var dataSource = isForeignColumn ? colObj.dataSource : options.dataSource;\n var fields = { value: isForeignColumn ? colObj.foreignKeyValue : column };\n var actObj = new AutoComplete(extend({\n dataSource: dataSource instanceof DataManager ? dataSource : new DataManager(dataSource),\n fields: fields,\n query: this.getQuery(),\n sortOrder: 'Ascending',\n locale: this.parent.locale,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n autofill: true,\n placeholder: this.getLocalizedLabel('CustomFilterPlaceHolder'),\n enableRtl: isRtl,\n text: fValue\n }, colObj.filter.params));\n if (dataSource && 'result' in dataSource) {\n var defObj = eventPromise({ requestType: 'stringfilterrequest' }, this.getQuery());\n this.parent.trigger(events.dataStateChange, defObj.state);\n var def = defObj.deffered;\n def.promise.then(function (e) {\n actObj.dataSource = new DataManager(e);\n });\n }\n this.childRefs.unshift(actObj);\n var evt = { 'actionComplete': this.acActionComplete(actObj, column), 'focus': this.acFocus(actObj, column, options, inputValue) };\n registerEventHandlers(inputValue.id, [events.actionComplete, literals.focus], evt, this);\n actObj.addEventListener(literals.focus, this.eventHandlers[inputValue.id][literals.focus]);\n actObj.addEventListener(events.actionComplete, this.eventHandlers[inputValue.id][events.actionComplete]);\n actObj.appendTo(inputValue);\n };\n ExcelFilterBase.prototype.acActionComplete = function (actObj, column) {\n return function (e) {\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n e.result = e.result.filter(function (obj, index, arr) {\n return arr.map(function (mapObject) {\n return isComplex ? performComplexDataOperation(actObj.fields.value, mapObject)\n : mapObject[actObj.fields.value];\n }).indexOf(isComplex ? performComplexDataOperation(actObj.fields.value, obj) :\n obj[actObj.fields.value]) === index;\n });\n };\n };\n ExcelFilterBase.prototype.acFocus = function (actObj, column, options, inputValue) {\n var _this = this;\n return function () {\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var columnvalue = isComplex ? complexFieldName : column;\n actObj.filterType = _this.dlgDiv.querySelector('#' + columnvalue +\n (inputValue.id === (columnvalue + '-xlfl-frstvalue') ?\n '-xlfl-frstoptr' :\n '-xlfl-secndoptr')).ej2_instances[0].value;\n actObj.ignoreCase = options.type === 'string' ?\n !_this.dlgDiv.querySelector('#' + columnvalue + '-xlflmtcase').ej2_instances[0].checked :\n true;\n actObj.filterType = !isNullOrUndefined(actObj.filterType) ? actObj.filterType :\n 'equal';\n };\n };\n return ExcelFilterBase;\n}(CheckBoxFilterBase));\nexport { ExcelFilterBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { ExcelFilterBase } from '../common/excel-filter-base';\nimport { CheckBoxFilter } from './checkbox-filter';\nimport * as events from '../base/constant';\n/**\n * @hidden\n * `ExcelFilter` module is used to handle filtering action.\n */\nvar ExcelFilter = /** @class */ (function (_super) {\n __extends(ExcelFilter, _super);\n /**\n * Constructor for excelbox filtering module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {FilterSettings} filterSettings - specifies the Filtersettings\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n * @param {object} customFltrOperators - specifies the customFltrOperators\n * @hidden\n */\n function ExcelFilter(parent, filterSettings, serviceLocator, customFltrOperators) {\n var _this = _super.call(this, parent, filterSettings, serviceLocator) || this;\n _this.parent = parent;\n _this.isresetFocus = true;\n _this.excelFilterBase = new ExcelFilterBase(parent, customFltrOperators);\n return _this;\n }\n /**\n * To destroy the excel filter.\n *\n * @returns {void}\n * @hidden\n */\n ExcelFilter.prototype.destroy = function () {\n this.excelFilterBase.closeDialog();\n };\n ExcelFilter.prototype.openDialog = function (options) {\n this.excelFilterBase.openDialog(options);\n };\n ExcelFilter.prototype.closeDialog = function () {\n this.excelFilterBase.closeDialog();\n if (this.isresetFocus) {\n this.parent.notify(events.restoreFocus, {});\n }\n };\n ExcelFilter.prototype.clearCustomFilter = function (col) {\n this.excelFilterBase.clearFilter(col);\n };\n ExcelFilter.prototype.closeResponsiveDialog = function (isCustomFilter) {\n if (isCustomFilter) {\n this.excelFilterBase.removeDialog();\n }\n else {\n this.closeDialog();\n }\n };\n ExcelFilter.prototype.applyCustomFilter = function (args) {\n if (!args.isCustomFilter) {\n this.excelFilterBase.fltrBtnHandler();\n this.excelFilterBase.closeDialog();\n }\n else {\n this.excelFilterBase.filterBtnClick(args.col.field);\n }\n };\n ExcelFilter.prototype.filterByColumn = function (fieldName, firstOperator, firstValue, predicate, matchCase, ignoreAccent, secondOperator, secondValue) {\n this.excelFilterBase.filterByColumn(fieldName, firstOperator, firstValue, predicate, matchCase, ignoreAccent, secondOperator, secondValue);\n };\n /**\n * @returns {FilterUI} returns the filterUI\n * @hidden\n */\n ExcelFilter.prototype.getFilterUIInfo = function () {\n return this.excelFilterBase.getFilterUIInfo();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n ExcelFilter.prototype.getModuleName = function () {\n return 'excelFilter';\n };\n return ExcelFilter;\n}(CheckBoxFilter));\nexport { ExcelFilter };\n","import { EventHandler, isNullOrUndefined, extend, closest, getValue, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { getActualPropFromColl, isActionPrevent, getColumnByForeignKeyValue } from '../base/util';\nimport { remove, matches } from '@syncfusion/ej2-base';\nimport { DataUtil, Query, DataManager } from '@syncfusion/ej2-data';\nimport * as events from '../base/constant';\nimport { CellType, ResponsiveDialogAction } from '../base/enum';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { Cell } from '../models/cell';\nimport { Row } from '../models/row';\nimport { FilterCellRenderer } from '../renderer/filter-cell-renderer';\nimport { parentsUntil, addFixedColumnBorder, applyStickyLeftRightPosition } from '../base/util';\nimport { FilterMenuRenderer } from '../renderer/filter-menu-renderer';\nimport { CheckBoxFilter } from '../actions/checkbox-filter';\nimport { ExcelFilter } from '../actions/excel-filter';\nimport * as literals from '../base/string-literals';\nimport { Input } from '@syncfusion/ej2-inputs';\n/**\n *\n * The `Filter` module is used to handle filtering action.\n */\nvar Filter = /** @class */ (function () {\n /**\n * Constructor for Grid filtering module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {FilterSettings} filterSettings - specifies the filterSettings\n * @param {ServiceLocator} serviceLocator - specifes the serviceLocator\n * @hidden\n */\n function Filter(parent, filterSettings, serviceLocator) {\n this.predicate = 'and';\n this.contentRefresh = true;\n this.filterByMethod = true;\n this.refresh = true;\n this.values = {};\n this.operators = {};\n this.cellText = {};\n this.nextFlMenuOpen = '';\n this.type = { 'Menu': FilterMenuRenderer, 'CheckBox': CheckBoxFilter, 'Excel': ExcelFilter };\n /** @hidden */\n this.filterOperators = {\n contains: 'contains', endsWith: 'endswith', equal: 'equal', greaterThan: 'greaterthan', greaterThanOrEqual: 'greaterthanorequal',\n lessThan: 'lessthan', lessThanOrEqual: 'lessthanorequal', notEqual: 'notequal', startsWith: 'startswith', wildCard: 'wildcard',\n isNull: 'isnull', notNull: 'notnull', like: 'like'\n };\n this.fltrDlgDetails = { field: '', isOpen: false };\n /** @hidden */\n this.skipNumberInput = ['=', ' ', '!'];\n this.skipStringInput = ['>', '<', '='];\n this.actualPredicate = {};\n this.parent = parent;\n this.filterSettings = filterSettings;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n this.setFullScreenDialog();\n }\n /**\n * To render filter bar when filtering enabled.\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Filter.prototype.render = function (e) {\n if (DataUtil.getObject('args.isFrozen', e)) {\n return;\n }\n var gObj = this.parent;\n this.l10n = this.serviceLocator.getService('localization');\n this.getLocalizedCustomOperators();\n if (this.parent.filterSettings.type === 'FilterBar') {\n if (gObj.columns.length) {\n var fltrElem = this.parent.element.querySelector('.e-filterbar');\n if (fltrElem) {\n remove(fltrElem);\n }\n var rowRenderer = new RowRenderer(this.serviceLocator, CellType.Filter, gObj);\n var cellrender = this.serviceLocator.getService('cellRendererFactory');\n cellrender.addCellRenderer(CellType.Filter, new FilterCellRenderer(this.parent, this.serviceLocator));\n this.valueFormatter = this.serviceLocator.getService('valueFormatter');\n rowRenderer.element = this.parent.createElement('tr', { className: 'e-filterbar', attrs: { role: 'row' } });\n var row = this.generateRow();\n row.data = this.values;\n this.parent.getHeaderContent().querySelector('thead:not(.e-masked-thead)').appendChild(rowRenderer.element);\n var rowdrag = this.parent.element.querySelector('.e-rowdragheader');\n this.element = rowRenderer.render(row, gObj.getColumns(), null, null, rowRenderer.element);\n if (this.element.querySelectorAll('.e-leftfreeze').length &&\n (this.element.querySelectorAll('.e-indentcell').length || this.element.querySelectorAll('.e-grouptopleftcell').length)) {\n var td = this.element.querySelectorAll('.e-indentcell, .e-grouptopleftcell');\n for (var i = 0; i < td.length; i++) {\n td[parseInt(i.toString(), 10)].classList.add('e-leftfreeze');\n applyStickyLeftRightPosition(td[parseInt(i.toString(), 10)], i * 30, this.parent.enableRtl, 'Left');\n }\n }\n addFixedColumnBorder(this.element);\n var detail = this.element.querySelector('.e-detailheadercell');\n if (detail) {\n detail.className = 'e-filterbarcell e-mastercell';\n }\n if (rowdrag) {\n if (rowdrag.classList.contains('e-leftfreeze')) {\n rowdrag.className = 'e-dragheadercell e-mastercell e-leftfreeze';\n }\n else {\n rowdrag.className = 'e-filterbarcell e-mastercell';\n }\n }\n var gCells = [].slice.call(this.element.getElementsByClassName('e-grouptopleftcell'));\n if (gCells.length) {\n gCells[gCells.length - 1].classList.add('e-lastgrouptopleftcell');\n }\n this.wireEvents();\n this.parent.notify(events.freezeRender, { case: 'filter' });\n }\n }\n };\n /**\n * To show the responsive custom filter dialog\n *\n * @param {boolean} enable - specifes dialog open\n * @returns {void}\n * @hidden\n */\n Filter.prototype.showCustomFilter = function (enable) {\n this.responsiveDialogRenderer.isCustomDialog = enable;\n this.responsiveDialogRenderer.showResponsiveDialog(this.column);\n };\n Filter.prototype.renderResponsiveChangeAction = function (args) {\n this.responsiveDialogRenderer.action = args.action;\n };\n /**\n * To create the filter module.\n *\n * @param {Column} col - specifies the filtering column name\n * @returns {void}\n * @hidden\n */\n Filter.prototype.setFilterModel = function (col) {\n var type = col.filter.type || this.parent.filterSettings.type;\n this.filterModule = new this.type[\"\" + type](this.parent, this.parent.filterSettings, this.serviceLocator, this.customOperators, this);\n };\n /**\n * To destroy the filter bar.\n *\n * @returns {void}\n * @hidden\n */\n Filter.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n if (this.filterModule) {\n this.filterModule.destroy();\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.parent.refreshing && (this.parent.isDestroyed || !this.parent.allowFiltering)) {\n this.filterSettings.columns = [];\n }\n this.updateFilterMsg();\n this.removeEventListener();\n this.unWireEvents();\n if (this.filterSettings.type === 'FilterBar' && !this.parent.isDestroyed) {\n if (this.filterSettings.showFilterBarOperator) {\n var dropdownlist = [].slice.call(this.element.getElementsByClassName('e-filterbaroperator'));\n for (var i = 0; i < dropdownlist.length; i++) {\n if (dropdownlist[parseInt(i.toString(), 10)].ej2_instances[0]) {\n dropdownlist[parseInt(i.toString(), 10)].ej2_instances[0].destroy();\n }\n }\n }\n this.parent.getColumns().map(function (column) {\n if (column.filterBarTemplate && !isNullOrUndefined(column.filterBarTemplate.destroy)) {\n var destroyFn = column.filterBarTemplate.destroy;\n if (typeof destroyFn === 'string') {\n destroyFn = getValue(destroyFn, window);\n }\n destroyFn();\n }\n });\n }\n if (this.element) {\n if (this.element.parentElement) {\n remove(this.element);\n }\n var filterBarElement = this.parent.getHeaderContent().querySelector('.e-filterbar');\n if (filterBarElement) {\n remove(filterBarElement);\n }\n }\n };\n Filter.prototype.setFullScreenDialog = function () {\n if (this.serviceLocator) {\n this.serviceLocator.registerAdaptiveService(this, this.parent.enableAdaptiveUI, ResponsiveDialogAction.isFilter);\n }\n };\n Filter.prototype.generateRow = function () {\n var options = {};\n var row = new Row(options);\n row.cells = this.generateCells();\n return row;\n };\n Filter.prototype.generateCells = function () {\n //TODO: generate dummy column for group, detail, stacked row here for filtering;\n var cells = [];\n if (this.parent.allowGrouping) {\n for (var c = 0, len = this.parent.groupSettings.columns.length; c < len; c++) {\n cells.push(this.generateCell({}, CellType.HeaderIndent));\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n cells.push(this.generateCell({}, CellType.DetailHeader));\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n for (var _i = 0, _a = this.parent.getColumns(); _i < _a.length; _i++) {\n var dummy = _a[_i];\n cells.push(this.generateCell(dummy));\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n return cells;\n };\n Filter.prototype.generateCell = function (column, cellType) {\n var opt = {\n 'visible': column.visible,\n 'isDataCell': false,\n 'rowId': '',\n 'column': column,\n 'cellType': cellType ? cellType : CellType.Filter,\n 'attributes': { title: this.l10n.getConstant('FilterbarTitle') }\n };\n return new Cell(opt);\n };\n /**\n * To update filterSettings when applying filter.\n *\n * @returns {void}\n * @hidden\n */\n Filter.prototype.updateModel = function () {\n var col = this.column.isForeignColumn() ? this.parent.getColumnByUid(this.column.uid) :\n this.parent.getColumnByField(this.fieldName);\n this.filterObjIndex = this.getFilteredColsIndexByField(col);\n this.prevFilterObject = this.filterSettings.columns[this.filterObjIndex];\n var arrayVal = Array.isArray(this.value) ? this.value : [this.value];\n var moduleName = this.parent.dataSource.adaptor && this.parent.dataSource.adaptor.getModuleName ? this.parent.dataSource.adaptor.getModuleName() : undefined;\n for (var i = 0, len = arrayVal.length; i < len; i++) {\n var field = col.isForeignColumn() ? col.foreignKeyValue : this.fieldName;\n var isMenuNotEqual = this.operator === 'notequal';\n this.currentFilterObject = {\n field: field, uid: col.uid, isForeignKey: col.isForeignColumn(), operator: this.operator,\n value: arrayVal[parseInt(i.toString(), 10)], predicate: this.predicate,\n matchCase: this.matchCase, ignoreAccent: this.ignoreAccent, actualFilterValue: {}, actualOperator: {}\n };\n var index = this.getFilteredColsIndexByField(col);\n if (index > -1 && !Array.isArray(this.value)) {\n this.filterSettings.columns[parseInt(index.toString(), 10)] = this.currentFilterObject;\n }\n else {\n this.filterSettings.columns.push(this.currentFilterObject);\n }\n if (!this.column.isForeignColumn() && isNullOrUndefined(this.value) && (this.operator === 'equal' ||\n this.operator === 'notequal') && (moduleName !== 'ODataAdaptor' && moduleName !== 'ODataV4Adaptor')) {\n for (var i_1 = 0; i_1 < this.filterSettings.columns.length; i_1++) {\n if (this.filterSettings.columns[\"\" + i_1].field === field &&\n (this.filterSettings.columns[\"\" + i_1].operator === 'equal' || this.filterSettings.columns[\"\" + i_1].operator === 'notequal')\n && isNullOrUndefined(this.filterSettings.columns[\"\" + i_1].value)) {\n this.filterSettings.columns.splice(i_1, 1);\n i_1 = i_1 - 1;\n }\n }\n if (col.type === 'string') {\n this.filterSettings.columns.push({\n field: field, ignoreAccent: this.ignoreAccent, matchCase: this.matchCase,\n operator: this.operator, predicate: isMenuNotEqual ? 'and' : 'or', value: ''\n });\n }\n this.filterSettings.columns.push({\n field: field, ignoreAccent: this.ignoreAccent, matchCase: this.matchCase,\n operator: this.operator, predicate: isMenuNotEqual ? 'and' : 'or', value: undefined\n });\n this.filterSettings.columns.push({\n field: field, ignoreAccent: this.ignoreAccent, matchCase: this.matchCase,\n operator: this.operator, predicate: isMenuNotEqual ? 'and' : 'or', value: null\n });\n }\n }\n // eslint-disable-next-line no-self-assign\n this.filterSettings.columns = this.filterSettings.columns;\n this.parent.dataBind();\n };\n Filter.prototype.getFilteredColsIndexByField = function (col) {\n var cols = this.filterSettings.columns;\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].uid === col.uid || (col.isForeignColumn()\n && this.parent.getColumnByUid(col.uid).field === col.foreignKeyValue)) {\n return i;\n }\n }\n return -1;\n };\n /**\n * To trigger action complete event.\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Filter.prototype.onActionComplete = function (e) {\n var args = !this.isRemove ? {\n currentFilterObject: this.currentFilterObject,\n /* tslint:disable:no-string-literal */\n currentFilteringColumn: !isNullOrUndefined(this.column) ? this.column.field : undefined,\n /* tslint:enable:no-string-literal */\n columns: this.filterSettings.columns, requestType: 'filtering', type: events.actionComplete\n } : {\n requestType: 'filtering', type: events.actionComplete\n };\n this.parent.trigger(events.actionComplete, extend(e, args));\n this.isRemove = false;\n };\n Filter.prototype.wireEvents = function () {\n EventHandler.add(this.parent.getHeaderContent(), 'keyup', this.keyUpHandlerImmediate, this);\n };\n Filter.prototype.unWireEvents = function () {\n EventHandler.remove(this.parent.getHeaderContent(), 'keyup', this.keyUpHandlerImmediate);\n };\n Filter.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.parent.getHeaderTable().classList.add('e-sortfilter');\n this.render();\n }\n };\n Filter.prototype.refreshFilterValue = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!isNullOrUndefined(this.parent.modelObserver.boundedEvents)) {\n this.parent.removeEventListener(events.beforeDataBound, this.refreshFilterValueFn);\n }\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.columns.length &&\n !this.parent.getCurrentViewRecords().length) {\n this.initialEnd();\n }\n };\n Filter.prototype.initialEnd = function () {\n this.parent.off(events.contentReady, this.initialEnd);\n if (this.parent.getColumns().length && this.filterSettings.columns.length) {\n var gObj = this.parent;\n this.contentRefresh = false;\n this.initialLoad = true;\n for (var _i = 0, _a = gObj.filterSettings.columns; _i < _a.length; _i++) {\n var col = _a[_i];\n this.filterByColumn(col.field, col.operator, col.value, col.predicate, col.matchCase, col.ignoreAccent, col.actualFilterValue, col.actualOperator, col.isForeignKey);\n }\n this.initialLoad = false;\n this.updateFilterMsg();\n this.contentRefresh = true;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Filter.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.setFullScreenDialog, this.setFullScreenDialog, this);\n this.parent.on(events.uiUpdate, this.enableAfterRender, this);\n this.parent.on(events.filterComplete, this.onActionComplete, this);\n this.parent.on(events.inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(events.keyPressed, this.keyUpHandler, this);\n this.parent.on(events.columnPositionChanged, this.columnPositionChanged, this);\n this.parent.on(events.headerRefreshed, this.render, this);\n this.parent.on(events.contentReady, this.initialEnd, this);\n this.parent.on(events.filterMenuClose, this.filterMenuClose, this);\n this.parent.on(events.renderResponsiveChangeAction, this.renderResponsiveChangeAction, this);\n this.docClickHandler = this.clickHandler.bind(this);\n EventHandler.add(document, 'click', this.docClickHandler, this);\n EventHandler.add(this.parent.element, 'mousedown', this.refreshClearIcon, this);\n this.parent.on(events.filterOpen, this.columnMenuFilter, this);\n this.parent.on(events.click, this.filterIconClickHandler, this);\n this.parent.on('persist-data-changed', this.initialEnd, this);\n this.parent.on(events.closeFilterDialog, this.clickHandler, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.refreshFilterValueFn = this.refreshFilterValue.bind(this);\n this.parent.addEventListener(events.beforeDataBound, this.refreshFilterValueFn);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Filter.prototype.removeEventListener = function () {\n EventHandler.remove(document, 'click', this.docClickHandler);\n EventHandler.remove(this.parent.element, 'mousedown', this.refreshClearIcon);\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.setFullScreenDialog, this.setFullScreenDialog);\n this.parent.off(events.uiUpdate, this.enableAfterRender);\n this.parent.off(events.filterComplete, this.onActionComplete);\n this.parent.off(events.inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(events.keyPressed, this.keyUpHandler);\n this.parent.off(events.columnPositionChanged, this.columnPositionChanged);\n this.parent.off(events.headerRefreshed, this.render);\n this.parent.off(events.filterOpen, this.columnMenuFilter);\n this.parent.off(events.filterMenuClose, this.filterMenuClose);\n this.parent.off(events.renderResponsiveChangeAction, this.renderResponsiveChangeAction);\n this.parent.off(events.click, this.filterIconClickHandler);\n this.parent.off(events.closeFilterDialog, this.clickHandler);\n this.parent.off(events.destroy, this.destroy);\n };\n Filter.prototype.refreshClearIcon = function (e) {\n if (this.parent.allowFiltering && this.parent.filterSettings.type === 'FilterBar' &&\n e.target.closest('th') && e.target.closest('th').classList.contains('e-filterbarcell') &&\n e.target.classList.contains('e-clear-icon')) {\n var targetText = e.target.previousElementSibling;\n Input.setValue(null, targetText, 'Never', true);\n if (this.filterSettings.mode === 'Immediate') {\n this.removeFilteredColsByField(targetText.id.slice(0, -14)); //Length of _filterBarcell = 14\n }\n }\n };\n Filter.prototype.filterMenuClose = function () {\n this.fltrDlgDetails.isOpen = false;\n };\n /**\n * Filters the Grid row by fieldName, filterOperator, and filterValue.\n *\n * @param {string} fieldName - Defines the field name of the filter column.\n * @param {string} filterOperator - Defines the operator to filter records.\n * @param {string | number | Date | boolean} filterValue - Defines the value which is used to filter records.\n * @param {string} predicate - Defines the relationship of one filter query with another by using AND or OR predicate.\n * @param {boolean} matchCase - If match case is set to true, then the filter records\n * the exact match or
    filters records that are case insensitive (uppercase and lowercase letters treated the same).\n * @param {boolean} ignoreAccent - If ignoreAccent set to true, then filter ignores the diacritic characters or accents while filtering.\n * @param {string} actualFilterValue - Defines the actual filter value for the filter column.\n * @param {string} actualOperator - Defines the actual filter operator for the filter column.\n * @param {boolean} isForeignColumn - Defines whether it is a foreign key column.\n * @returns {void}\n */\n Filter.prototype.filterByColumn = function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator, isForeignColumn) {\n var _this = this;\n var gObj = this.parent;\n var filterCell;\n if (typeof filterValue === 'string') {\n filterValue = SanitizeHtmlHelper.sanitize(filterValue);\n }\n this.column = gObj.grabColumnByFieldFromAllCols(fieldName, isForeignColumn);\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator\n && isNullOrUndefined(this.column.filterBarTemplate) && isNullOrUndefined(this.column.filterTemplate)) {\n filterOperator = this.getOperatorName(fieldName);\n }\n if (filterOperator === 'like' && filterValue && filterValue.indexOf('%') === -1) {\n filterValue = '%' + filterValue + '%';\n }\n if (!this.column) {\n return;\n }\n if (this.filterSettings.type === 'FilterBar') {\n filterCell = gObj.getHeaderContent().querySelector('[id=\\'' + this.column.field + '_filterBarcell\\']');\n }\n if (!isNullOrUndefined(this.column.allowFiltering) && !this.column.allowFiltering) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), columnName: this.column.headerText });\n return;\n }\n if (isActionPrevent(gObj)) {\n gObj.notify(events.preventBatch, {\n instance: this, handler: this.filterByColumn, arg1: fieldName, arg2: filterOperator, arg3: filterValue, arg4: predicate,\n arg5: matchCase, arg6: ignoreAccent, arg7: actualFilterValue, arg8: actualOperator\n });\n return;\n }\n this.predicate = predicate ? predicate : Array.isArray(filterValue) ? 'or' : 'and';\n this.value = filterValue;\n this.matchCase = matchCase || false;\n this.ignoreAccent = this.ignoreAccent = !isNullOrUndefined(ignoreAccent) ? ignoreAccent : this.parent.filterSettings.ignoreAccent;\n this.fieldName = fieldName;\n this.operator = filterOperator;\n filterValue = !isNullOrUndefined(filterValue) ? filterValue.toString() : filterValue;\n if (filterValue === '') {\n filterValue = null;\n }\n if (this.column.type === 'number' || this.column.type === 'date') {\n this.matchCase = true;\n }\n if (filterCell && this.filterSettings.type === 'FilterBar') {\n if ((filterValue && filterValue.length < 1) || (!this.filterByMethod &&\n this.checkForSkipInput(this.column, filterValue))) {\n this.filterStatusMsg = (filterValue && filterValue.length < 1) ? '' : this.l10n.getConstant('InvalidFilterMessage');\n this.updateFilterMsg();\n return;\n }\n if (filterCell.value !== filterValue) {\n filterCell.value = filterValue;\n }\n }\n if (!isNullOrUndefined(this.column.format)) {\n this.applyColumnFormat(filterValue);\n if (this.initialLoad && this.filterSettings.type === 'FilterBar') {\n filterCell.value = this.values[this.column.field];\n }\n }\n else {\n this.values[this.column.field] = filterValue; //this line should be above updateModel\n }\n var predObj = {\n field: this.fieldName,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: this.operator,\n value: this.value,\n type: this.column.type\n };\n var filterColumn = this.parent.filterSettings.columns.filter(function (fColumn) {\n return (fColumn.field === _this.fieldName);\n });\n if (filterColumn.length > 1 && !isNullOrUndefined(this.actualPredicate[this.fieldName])) {\n this.actualPredicate[this.fieldName].push(predObj);\n }\n else {\n this.actualPredicate[this.fieldName] = [predObj];\n }\n if (this.checkAlreadyColFiltered(this.column.field)) {\n return;\n }\n this.updateModel();\n };\n Filter.prototype.applyColumnFormat = function (filterValue) {\n var _this = this;\n var getFlvalue = (this.column.type === 'date' || this.column.type === 'datetime' || this.column.type === 'dateonly') ?\n new Date(filterValue) : parseFloat(filterValue);\n if ((this.column.type === 'date' || this.column.type === 'datetime' || this.column.type === 'dateonly') && filterValue &&\n Array.isArray(this.value) && filterValue.split(',').length > 1) {\n this.values[this.column.field] = ((filterValue).split(',')).map(function (val) {\n if (val === '') {\n val = null;\n }\n return _this.setFormatForFlColumn(new Date(val), _this.column);\n });\n }\n else {\n this.values[this.column.field] = this.setFormatForFlColumn(getFlvalue, this.column);\n }\n };\n // To skip the second time request to server while applying initial filtering - EJ2-44361\n Filter.prototype.skipUid = function (col) {\n var flag = true;\n var colLen = Object.keys((col));\n for (var i = 0; i < colLen.length; i++) {\n var key = Object.keys(col[colLen[parseInt(i.toString(), 10)]]);\n if (key.length === 1 && key[0] === 'uid') {\n flag = false;\n }\n }\n return flag;\n };\n Filter.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n for (var _i = 0, _a = Object.keys(e.properties); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'columns':\n // eslint-disable-next-line no-case-declarations\n var col = 'columns';\n // eslint-disable-next-line no-case-declarations\n var args = {\n currentFilterObject: this.currentFilterObject, currentFilteringColumn: this.column ?\n this.column.field : undefined, action: 'filter', columns: this.filterSettings.columns,\n requestType: 'filtering', type: events.actionBegin, cancel: false\n };\n if (this.contentRefresh && this.skipUid(e.properties[\"\" + col])) {\n this.parent.notify(events.modelChanged, args);\n if (args.cancel) {\n if ((this.filterSettings.type === 'CheckBox' || this.filterSettings.type === 'Excel')) {\n this.filterSettings.columns = (this.actualData.length <= 1) ? this.checkboxPrevFilterObject :\n this.checkboxFilterObject;\n this.actualPredicate[this.column.field] = this.filterSettings.columns;\n var col_1 = this.parent.getColumnByField(this.column.field);\n var iconClass = this.parent.showColumnMenu && col_1.showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n var filterIconElement = this.parent.getColumnHeaderByField(this.column.field)\n .querySelector(iconClass);\n if (this.checkboxPrevFilterObject.length === 0) {\n filterIconElement.classList.remove('e-filtered');\n }\n else {\n filterIconElement.classList.add('e-filtered');\n }\n }\n else {\n if (isNullOrUndefined(this.prevFilterObject)) {\n this.filterSettings.columns.splice(this.filterSettings.columns.length - 1, 1);\n }\n else {\n this.filterSettings.columns[this.filterObjIndex] = this.prevFilterObject;\n }\n }\n return;\n }\n this.updateFilterIcon();\n this.refreshFilterSettings();\n this.updateFilterMsg();\n this.updateFilter();\n }\n break;\n case 'showFilterBarStatus':\n if (e.properties[\"\" + prop]) {\n this.updateFilterMsg();\n }\n else if (this.parent.allowPaging) {\n this.parent.updateExternalMessage('');\n }\n break;\n case 'showFilterBarOperator':\n case 'type':\n this.parent.refreshHeader();\n this.refreshFilterSettings();\n if (this.parent.height === '100%') {\n this.parent.scrollModule.refresh();\n }\n break;\n }\n }\n };\n Filter.prototype.refreshFilterSettings = function () {\n if (this.filterSettings.type === 'FilterBar') {\n for (var i = 0; i < this.filterSettings.columns.length; i++) {\n this.column = this.parent.grabColumnByUidFromAllCols(this.filterSettings.columns[parseInt(i.toString(), 10)].uid);\n var filterValue = this.filterSettings.columns[parseInt(i.toString(), 10)].value;\n filterValue = !isNullOrUndefined(filterValue) && filterValue.toString();\n if (!isNullOrUndefined(this.column.format)) {\n this.applyColumnFormat(filterValue);\n }\n else {\n var key = this.filterSettings.columns[parseInt(i.toString(), 10)].field;\n this.values[\"\" + key] = this.filterSettings.columns[parseInt(i.toString(), 10)].value;\n }\n var filterElement = this.getFilterBarElement(this.column.field);\n if (filterElement) {\n if (this.cellText[this.filterSettings.columns[parseInt(i.toString(), 10)].field] !== ''\n && !isNullOrUndefined(this.cellText[this.filterSettings.columns[parseInt(i.toString(), 10)].field])) {\n filterElement.value = this.cellText[this.column.field];\n }\n else {\n filterElement.value = this.filterSettings.columns[parseInt(i.toString(), 10)].value;\n }\n }\n }\n if (this.filterSettings.columns.length === 0) {\n var col = this.parent.getColumns();\n for (var i = 0; i < col.length; i++) {\n var filterElement = this.getFilterBarElement(col[parseInt(i.toString(), 10)].field);\n if (filterElement && filterElement.value !== '') {\n filterElement.value = '';\n delete this.values[col[parseInt(i.toString(), 10)].field];\n }\n }\n }\n }\n };\n Filter.prototype.updateFilterIcon = function () {\n if (this.filterSettings.columns.length === 0 && this.parent.element.querySelector('.e-filtered')) {\n var fltrIconElement = [].slice.call(this.parent.element.getElementsByClassName('e-filtered'));\n for (var i = 0, len = fltrIconElement.length; i < len; i++) {\n fltrIconElement[parseInt(i.toString(), 10)].classList.remove('e-filtered');\n }\n }\n };\n Filter.prototype.getFilterBarElement = function (col) {\n var selector = '[id=\\'' + col + '_filterBarcell\\']';\n var filterElement;\n if (selector && !isNullOrUndefined(this.element)) {\n filterElement = this.element.querySelector(selector);\n }\n return filterElement;\n };\n /**\n * @private\n * @returns {void}\n */\n Filter.prototype.refreshFilter = function () {\n this.refreshFilterSettings();\n this.updateFilterMsg();\n };\n /**\n * Clears all the filtered rows of the Grid.\n *\n * @param {string[]} fields - returns the fields\n * @returns {void}\n */\n Filter.prototype.clearFiltering = function (fields) {\n var _this = this;\n var cols = getActualPropFromColl(this.filterSettings.columns);\n if (!isNullOrUndefined(fields)) {\n this.refresh = false;\n fields.forEach(function (field) { _this.removeFilteredColsByField(field, false); });\n this.parent.setProperties({ filterSettings: { columns: this.filterSettings.columns } }, true);\n this.parent.renderModule.refresh();\n this.refresh = true;\n return;\n }\n if (isActionPrevent(this.parent)) {\n this.parent.notify(events.preventBatch, { instance: this, handler: this.clearFiltering });\n return;\n }\n for (var i = 0; i < cols.length; i++) {\n cols[parseInt(i.toString(), 10)].uid = cols[parseInt(i.toString(), 10)].uid\n || this.parent.getColumnByField(cols[parseInt(i.toString(), 10)].field).uid;\n }\n var colUid = cols.map(function (f) { return f.uid; });\n var filteredcols = colUid.filter(function (item, pos) { return colUid.indexOf(item) === pos; });\n this.refresh = false;\n for (var i = 0, len = filteredcols.length; i < len; i++) {\n this.removeFilteredColsByField(this.parent.getColumnByUid(filteredcols[parseInt(i.toString(), 10)]).field, false);\n }\n this.refresh = true;\n if (filteredcols.length) {\n this.parent.renderModule.refresh();\n }\n if (this.parent.filterSettings.columns.length === 0 && this.parent.element.querySelector('.e-filtered')) {\n var fltrElement = [].slice.call(this.parent.element.getElementsByClassName('e-filtered'));\n for (var i = 0, len = fltrElement.length; i < len; i++) {\n fltrElement[0].classList.remove('e-filtered');\n }\n }\n this.isRemove = true;\n this.filterStatusMsg = '';\n this.updateFilterMsg();\n };\n Filter.prototype.checkAlreadyColFiltered = function (field) {\n var columns = this.filterSettings.columns;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var col = columns_1[_i];\n if (col.field === field && this.parent.filterSettings.type === 'Menu' &&\n (col.type === 'date' || col.type === 'datetime')) {\n return (this.checkDateColumnValue(col.value, this.value) &&\n col.operator === this.operator && col.predicate === this.predicate);\n }\n else if (col.field === field && col.value === this.value &&\n col.operator === this.operator && col.predicate === this.predicate) {\n return true;\n }\n }\n return false;\n };\n Filter.prototype.checkDateColumnValue = function (colDate, filterDate) {\n if (isNullOrUndefined(colDate) && isNullOrUndefined(filterDate)) {\n return true;\n }\n else if (colDate instanceof Date && filterDate instanceof Date) {\n return colDate.getTime() === filterDate.getTime();\n }\n return false;\n };\n Filter.prototype.columnMenuFilter = function (args) {\n this.column = args.col;\n var ele = closest(args.target, '#' + args.id);\n if (args.isClose && !ele) {\n this.filterModule.closeDialog();\n }\n else if (ele) {\n this.filterDialogOpen(this.column, args.target);\n }\n };\n Filter.prototype.filterDialogOpen = function (col, target, left, top) {\n if (this.filterModule) {\n this.filterModule.isresetFocus = false;\n this.filterModule.closeDialog();\n }\n this.setFilterModel(col);\n this.filterModule.openDialog(this.createOptions(col, target, left, top));\n };\n /**\n * Create filter dialog options\n *\n * @param {Column} col - Filtering column detail.\n * @param {Element} target - Filter dialog target.\n * @param {number} left - Filter dialog left position.\n * @param {number} top - Filter dialog top position.\n * @returns {Object} returns the created dialog options\n * @hidden\n */\n Filter.prototype.createOptions = function (col, target, left, top) {\n var gObj = this.parent;\n var dataSource = col.filter.dataSource || gObj.dataSource && 'result' in gObj.dataSource ? gObj.dataSource :\n gObj.getDataModule().dataManager;\n var type = col.filter.type || this.parent.filterSettings.type;\n var options = {\n type: col.type, field: col.field, displayName: col.headerText,\n dataSource: dataSource, format: col.format, height: 800, columns: gObj.getColumns(),\n filteredColumns: gObj.filterSettings.columns, target: target, dataManager: gObj.getDataModule().dataManager,\n formatFn: col.getFormatter(), ignoreAccent: gObj.filterSettings.ignoreAccent,\n parserFn: col.getParser(), query: gObj.query, template: col.getFilterItemTemplate(),\n hideSearchbox: isNullOrUndefined(col.filter.hideSearchbox) ? false : col.filter.hideSearchbox,\n handler: this.filterHandler.bind(this), localizedStrings: gObj.getLocaleConstants(),\n position: { X: left, Y: top }, column: col, foreignKeyValue: col.foreignKeyValue,\n actualPredicate: this.actualPredicate, localeObj: gObj.localeObj,\n isRemote: gObj.getDataModule().isRemote(), allowCaseSensitive: this.filterSettings.enableCaseSensitivity,\n isResponsiveFilter: this.parent.enableAdaptiveUI,\n operator: this.actualPredicate[col.field] && type === 'Menu' ? this.actualPredicate[col.field][0].operator : 'equal',\n parentTotalDataCount: gObj.getDataModule().isRemote() && gObj.allowPaging ? gObj.pagerModule.pagerObj.totalRecordsCount :\n gObj.getDataModule().isRemote() ? gObj.totalDataRecordsCount : gObj.getFilteredRecords().length,\n parentCurrentViewDataCount: gObj.currentViewData.length,\n parentFilteredLocalRecords: !gObj.getDataModule().isRemote() ? gObj.getFilteredRecords() : []\n };\n return options;\n };\n /**\n * Removes filtered column by field name.\n *\n * @param {string} field - Defines column field name to remove filter.\n * @param {boolean} isClearFilterBar - Specifies whether the filter bar value needs to be cleared.\n * @returns {void}\n * @hidden\n */\n Filter.prototype.removeFilteredColsByField = function (field, isClearFilterBar) {\n var fCell;\n var cols = this.filterSettings.columns;\n if (isActionPrevent(this.parent)) {\n var args = { instance: this, handler: this.removeFilteredColsByField, arg1: field, arg2: isClearFilterBar };\n this.parent.notify(events.preventBatch, args);\n return;\n }\n var colUid = cols.map(function (f) { return f.uid; });\n var filteredColsUid = colUid.filter(function (item, pos) { return colUid.indexOf(item) === pos; });\n if (!isNullOrUndefined(this.column)) {\n var col = this.column.isForeignColumn() ? this.parent.getColumnByUid(this.column.uid) :\n this.parent.getColumnByField(field);\n this.filterObjIndex = this.getFilteredColsIndexByField(col);\n this.prevFilterObject = this.filterSettings.columns[this.filterObjIndex];\n }\n var _loop_1 = function (i, len) {\n cols[parseInt(i.toString(), 10)].uid = cols[parseInt(i.toString(), 10)].uid\n || this_1.parent.getColumnByField(cols[parseInt(i.toString(), 10)].field).uid;\n var len_1 = cols.length;\n var column = this_1.parent.grabColumnByUidFromAllCols(filteredColsUid[parseInt(i.toString(), 10)]);\n if (column.field === field || (column.field === column.foreignKeyValue && column.isForeignColumn())) {\n var currentPred = this_1.filterSettings.columns.filter(function (e) {\n return e.uid === column.uid;\n })[0];\n if (this_1.filterSettings.type === 'FilterBar' && !isClearFilterBar) {\n var selector = '[id=\\'' + column.field + '_filterBarcell\\']';\n fCell = this_1.parent.getHeaderContent().querySelector(selector);\n if (fCell) {\n fCell.value = '';\n delete this_1.values[\"\" + field];\n }\n }\n while (len_1--) {\n if (cols[parseInt(len_1.toString(), 10)].uid === column.uid) {\n cols.splice(len_1, 1);\n }\n }\n var fltrElement = this_1.parent.getColumnHeaderByField(column.field);\n if (this_1.filterSettings.type !== 'FilterBar' || this_1.parent.showColumnMenu) {\n var iconClass = this_1.parent.showColumnMenu && column.showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n fltrElement.querySelector(iconClass).classList.remove('e-filtered');\n }\n this_1.isRemove = true;\n if (this_1.actualPredicate[\"\" + field]) {\n delete this_1.actualPredicate[\"\" + field];\n }\n if (this_1.values[\"\" + field]) {\n delete this_1.values[\"\" + field];\n }\n if (this_1.refresh) {\n this_1.parent.notify(events.modelChanged, {\n requestType: 'filtering', type: events.actionBegin, currentFilterObject: currentPred,\n currentFilterColumn: column, action: 'clearFilter'\n });\n }\n return \"break\";\n }\n };\n var this_1 = this;\n for (var i = 0, len = filteredColsUid.length; i < len; i++) {\n var state_1 = _loop_1(i, len);\n if (state_1 === \"break\")\n break;\n }\n this.updateFilterMsg();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Filter.prototype.getModuleName = function () {\n return 'filter';\n };\n Filter.prototype.keyUpHandlerImmediate = function (e) {\n if (e.keyCode !== 13) {\n this.keyUpHandler(e);\n }\n };\n Filter.prototype.keyUpHandler = function (e) {\n var gObj = this.parent;\n var target = e.target;\n if (target && matches(target, '.e-filterbar input')) {\n var closeHeaderEle = closest(target, 'th.e-filterbarcell');\n this.column = gObj.getColumnByUid(closeHeaderEle.getAttribute('e-mappinguid'));\n if (!this.column) {\n return;\n }\n if (e.action === 'altDownArrow' && this.parent.filterSettings.showFilterBarOperator) {\n var dropDownListInput = closest(target, 'span').querySelector('.e-filterbaroperator');\n dropDownListInput.ej2_instances[0].showPopup();\n dropDownListInput.focus();\n }\n if ((this.filterSettings.mode === 'Immediate' || (e.keyCode === 13 &&\n !e.target.classList.contains('e-filterbaroperator')))\n && e.keyCode !== 9 && !this.column.filterTemplate) {\n this.value = target.value.trim();\n this.processFilter(e);\n }\n }\n if (e.action === 'altDownArrow' && this.filterSettings.type !== 'FilterBar' && !parentsUntil(e.target, 'e-toolbar')\n && isNullOrUndefined(this.parent.element.querySelector('.e-filter-popup'))) {\n var element = gObj.focusModule.currentInfo.element;\n if (element && element.classList.contains('e-headercell')) {\n var column = gObj.getColumnByUid(element.firstElementChild.getAttribute('e-mappinguid'));\n this.openMenuByField(column.field);\n this.parent.focusModule.clearIndicator();\n }\n }\n if (e.action === 'escape' && this.filterSettings.type === 'Menu' && this.filterModule) {\n this.filterModule.closeDialog();\n gObj.notify(events.restoreFocus, {});\n }\n };\n Filter.prototype.updateCrossIcon = function (element) {\n if (element.value.length) {\n element.nextElementSibling.classList.remove('e-hide');\n }\n };\n Filter.prototype.updateFilterMsg = function () {\n if (this.filterSettings.type === 'FilterBar') {\n var gObj = this.parent;\n var getFormatFlValue = void 0;\n var columns = this.filterSettings.columns;\n var column = void 0;\n if (!this.filterSettings.showFilterBarStatus) {\n return;\n }\n if (columns.length > 0 && this.filterStatusMsg !== this.l10n.getConstant('InvalidFilterMessage')) {\n this.filterStatusMsg = '';\n for (var index = 0; index < columns.length; index++) {\n column = gObj.grabColumnByUidFromAllCols(columns[parseInt(index.toString(), 10)].uid)\n || gObj.grabColumnByFieldFromAllCols(columns[parseInt(index.toString(), 10)]\n .field, columns[parseInt(index.toString(), 10)].isForeignKey);\n if (index) {\n this.filterStatusMsg += ' && ';\n }\n if (!isNullOrUndefined(column.format)) {\n var flValue = (column.type === 'date' || column.type === 'datetime' || column.type === 'dateonly') ?\n this.valueFormatter.fromView(this.values[column.field], column.getParser(), (column.type === 'dateonly' ? 'date' : column.type)) :\n this.values[column.field];\n if (!(column.type === 'date' || column.type === 'datetime' || column.type === 'dateonly')) {\n var formater = this.serviceLocator.getService('valueFormatter');\n getFormatFlValue = formater.toView(flValue, column.getParser()).toString();\n }\n else {\n getFormatFlValue = this.setFormatForFlColumn(flValue, column);\n }\n this.filterStatusMsg += column.headerText + ': ' + getFormatFlValue;\n }\n else {\n this.filterStatusMsg += column.headerText + ': ' + this.values[column.field];\n }\n }\n }\n if (gObj.allowPaging) {\n gObj.updateExternalMessage(this.filterStatusMsg);\n if (this.parent.height === '100%') {\n this.parent.scrollModule.refresh();\n }\n }\n //TODO: virtual paging\n this.filterStatusMsg = '';\n }\n };\n Filter.prototype.setFormatForFlColumn = function (value, column) {\n var formater = this.serviceLocator.getService('valueFormatter');\n return formater.toView(value, column.getFormatter()).toString();\n };\n Filter.prototype.checkForSkipInput = function (column, value) {\n var isSkip;\n if (column.type === 'number') {\n if (DataUtil.operatorSymbols[\"\" + value] || this.skipNumberInput.indexOf(value) > -1) {\n isSkip = true;\n }\n }\n else if (column.type === 'string') {\n for (var _i = 0, value_1 = value; _i < value_1.length; _i++) {\n var val = value_1[_i];\n if (this.skipStringInput.indexOf(val) > -1) {\n isSkip = true;\n }\n }\n }\n return isSkip;\n };\n Filter.prototype.processFilter = function (e) {\n this.stopTimer();\n this.startTimer(e);\n };\n Filter.prototype.startTimer = function (e) {\n var _this = this;\n this.timer = window.setInterval(function () { _this.onTimerTick(); }, e.keyCode === 13 ? 0 : this.filterSettings.immediateModeDelay);\n };\n Filter.prototype.stopTimer = function () {\n window.clearInterval(this.timer);\n };\n Filter.prototype.onTimerTick = function () {\n var selector = '[id=\\'' + this.column.field + '_filterBarcell\\']';\n var filterElement = this.element.querySelector(selector);\n if (!filterElement) {\n filterElement = this.parent.getHeaderContent().querySelector(selector);\n }\n var filterValue;\n this.cellText[this.column.field] = filterElement.value;\n this.stopTimer();\n if (!isNullOrUndefined(this.column.filterBarTemplate)) {\n var templateRead = this.column.filterBarTemplate.read;\n if (typeof templateRead === 'string') {\n templateRead = getValue(templateRead, window);\n }\n if (!isNullOrUndefined(templateRead)) {\n this.value = templateRead.call(this, filterElement);\n }\n }\n else {\n filterValue = JSON.parse(JSON.stringify(filterElement.value));\n }\n if (isNullOrUndefined(this.value) || this.value === '') {\n this.removeFilteredColsByField(this.column.field);\n return;\n }\n this.validateFilterValue(this.value);\n this.filterByMethod = false;\n this.filterByColumn(this.column.field, this.operator, this.value, this.predicate, this.filterSettings.enableCaseSensitivity, this.ignoreAccent, this.column.isForeignColumn());\n this.filterByMethod = true;\n filterElement.value = filterValue;\n this.updateFilterMsg();\n };\n Filter.prototype.validateFilterValue = function (value) {\n var skipInput;\n var index;\n this.matchCase = this.filterSettings.enableCaseSensitivity;\n switch (this.column.type) {\n case 'number':\n if (this.column.filter.operator) {\n this.operator = this.column.filter.operator;\n }\n else {\n this.operator = this.filterOperators.equal;\n }\n skipInput = ['>', '<', '=', '!'];\n for (var i = 0; i < value.length; i++) {\n if (skipInput.indexOf(value[parseInt(i.toString(), 10)]) > -1) {\n index = i;\n break;\n }\n }\n this.getOperator(value.substring(index));\n if (index !== 0) {\n this.value = value.substring(0, index);\n }\n if (this.value !== '' && value.length >= 1) {\n this.value = this.valueFormatter.fromView(this.value, this.column.getParser(), this.column.type);\n }\n if (isNaN(this.value)) {\n this.filterStatusMsg = this.l10n.getConstant('InvalidFilterMessage');\n }\n break;\n case 'date':\n case 'datetime':\n this.operator = this.filterOperators.equal;\n if (this.value !== '' && !(this.value instanceof Date)) {\n this.getOperator(value);\n this.value = this.valueFormatter.fromView(this.value, this.column.getParser(), this.column.type);\n if (isNullOrUndefined(this.value)) {\n this.filterStatusMsg = this.l10n.getConstant('InvalidFilterMessage');\n }\n }\n break;\n case 'string':\n this.matchCase = false;\n if (this.column.filter.operator) {\n this.operator = this.column.filter.operator;\n }\n else {\n if (value.indexOf('*') !== -1 || value.indexOf('?') !== -1 || value.indexOf('%3f') !== -1) {\n this.operator = this.filterOperators.wildCard;\n }\n else if (value.indexOf('%') !== -1) {\n this.operator = this.filterOperators.like;\n }\n else {\n this.operator = this.filterOperators.startsWith;\n }\n }\n break;\n case 'boolean':\n if (value.toLowerCase() === 'true' || value === '1') {\n this.value = true;\n }\n else if (value.toLowerCase() === 'false' || value === '0') {\n this.value = false;\n }\n else if (value.length) {\n this.filterStatusMsg = this.l10n.getConstant('InvalidFilterMessage');\n }\n this.operator = this.filterOperators.equal;\n break;\n default:\n if (this.column.filter.operator) {\n this.operator = this.column.filter.operator;\n }\n else {\n this.operator = this.filterOperators.equal;\n }\n }\n };\n Filter.prototype.getOperator = function (value) {\n var singleOp = value.charAt(0);\n var multipleOp = value.slice(0, 2);\n var operators = extend({ '=': this.filterOperators.equal, '!': this.filterOperators.notEqual }, DataUtil.operatorSymbols);\n // eslint-disable-next-line no-prototype-builtins\n if (operators.hasOwnProperty(singleOp) || operators.hasOwnProperty(multipleOp)) {\n this.operator = operators[\"\" + singleOp];\n this.value = value.substring(1);\n if (!this.operator) {\n this.operator = operators[\"\" + multipleOp];\n this.value = value.substring(2);\n }\n }\n if (this.operator === this.filterOperators.lessThan || this.operator === this.filterOperators.greaterThan) {\n if (this.value.charAt(0) === '=') {\n this.operator = this.operator + 'orequal';\n this.value = this.value.substring(1);\n }\n }\n };\n Filter.prototype.columnPositionChanged = function () {\n if (this.parent.filterSettings.type !== 'FilterBar') {\n return;\n }\n };\n Filter.prototype.getLocalizedCustomOperators = function () {\n var numOptr = [\n { value: 'equal', text: this.l10n.getConstant('Equal') },\n { value: 'greaterthan', text: this.l10n.getConstant('GreaterThan') },\n { value: 'greaterthanorequal', text: this.l10n.getConstant('GreaterThanOrEqual') },\n { value: 'lessthan', text: this.l10n.getConstant('LessThan') },\n { value: 'lessthanorequal', text: this.l10n.getConstant('LessThanOrEqual') },\n { value: 'notequal', text: this.l10n.getConstant('NotEqual') },\n { value: 'isnull', text: this.l10n.getConstant('IsNull') },\n { value: 'isnotnull', text: this.l10n.getConstant('NotNull') }\n ];\n this.customOperators = {\n stringOperator: [\n { value: 'startswith', text: this.l10n.getConstant('StartsWith') },\n { value: 'endswith', text: this.l10n.getConstant('EndsWith') },\n { value: 'contains', text: this.l10n.getConstant('Contains') },\n { value: 'equal', text: this.l10n.getConstant('Equal') },\n { value: 'isempty', text: this.l10n.getConstant('IsEmpty') },\n { value: 'doesnotstartwith', text: this.l10n.getConstant('NotStartsWith') },\n { value: 'doesnotendwith', text: this.l10n.getConstant('NotEndsWith') },\n { value: 'doesnotcontain', text: this.l10n.getConstant('NotContains') },\n { value: 'notequal', text: this.l10n.getConstant('NotEqual') },\n { value: 'isnotempty', text: this.l10n.getConstant('IsNotEmpty') },\n { value: 'like', text: this.l10n.getConstant('Like') }\n ],\n numberOperator: numOptr,\n dateOperator: numOptr,\n datetimeOperator: numOptr,\n dateonlyOperator: numOptr,\n booleanOperator: [\n { value: 'equal', text: this.l10n.getConstant('Equal') },\n { value: 'notequal', text: this.l10n.getConstant('NotEqual') }\n ]\n };\n };\n /**\n * @param {string} field - specifies the field name\n * @returns {void}\n * @hidden\n */\n Filter.prototype.openMenuByField = function (field) {\n var gObj = this.parent;\n if (gObj.enableAdaptiveUI) {\n this.showCustomFilter(false);\n return;\n }\n var column = gObj.getColumnByField(field);\n var header = gObj.getColumnHeaderByField(field);\n var target = header.querySelector('.e-filtermenudiv');\n if (!target) {\n return;\n }\n var gClient = gObj.element.getBoundingClientRect();\n var fClient = target.getBoundingClientRect();\n this.filterDialogOpen(column, target, fClient.right - gClient.left, fClient.bottom - gClient.top);\n };\n Filter.prototype.filterIconClickHandler = function (e) {\n var target = e.target;\n if (target.classList.contains('e-filtermenudiv') && (this.parent.filterSettings.type === 'Menu' ||\n this.parent.filterSettings.type === 'CheckBox' || this.parent.filterSettings.type === 'Excel')) {\n var gObj = this.parent;\n var col = gObj.getColumnByUid(parentsUntil(target, 'e-headercell').firstElementChild.getAttribute('e-mappinguid'));\n this.column = col;\n if (this.fltrDlgDetails.field === col.field && this.fltrDlgDetails.isOpen) {\n return;\n }\n if (this.filterModule) {\n this.filterModule.closeDialog();\n }\n this.fltrDlgDetails = { field: col.field, isOpen: true };\n this.openMenuByField(col.field);\n }\n };\n Filter.prototype.clickHandler = function (e) {\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator) {\n if (parentsUntil(e.target, 'e-filterbarcell') &&\n e.target.classList.contains('e-input-group-icon')) {\n var filterOperatorElement = closest(e.target, 'div').\n querySelector('.e-filterbaroperator');\n if (filterOperatorElement) {\n filterOperatorElement.focus();\n }\n else {\n e.target.focus();\n }\n }\n if (e.target.classList.contains('e-list-item')) {\n var inputId = document.querySelector('.e-popup-open').getAttribute('id').replace('_popup', '');\n if (inputId.indexOf('grid-column') !== -1) {\n closest(document.getElementById(inputId), 'div').querySelector('.e-filtertext').focus();\n }\n }\n }\n if (this.filterSettings.mode === 'Immediate' || this.parent.filterSettings.type === 'Menu' ||\n this.parent.filterSettings.type === 'CheckBox' || this.parent.filterSettings.type === 'Excel') {\n var target = e.target;\n var datepickerEle = target.classList.contains('e-day'); // due to datepicker popup cause\n var dialog = parentsUntil(this.parent.element, 'e-dialog');\n var hasDialog = false;\n var popupEle = parentsUntil(target, 'e-popup');\n var hasDialogClosed = this.parent.element.classList.contains('e-device') ? document.querySelector('.e-filter-popup')\n : this.parent.element.querySelector('.e-filter-popup');\n if (dialog && popupEle) {\n hasDialog = dialog.id === popupEle.id;\n }\n if ((this.filterModule && hasDialogClosed && (parentsUntil(target, 'e-excel-ascending') ||\n parentsUntil(target, 'e-excel-descending')))) {\n this.filterModule.closeDialog(target);\n }\n if (parentsUntil(target, 'e-filter-popup') || target.classList.contains('e-filtermenudiv')) {\n return;\n }\n else if (this.filterModule && !parentsUntil(target, 'e-date-overflow') && (!parentsUntil(target, 'e-popup-wrapper')\n && (!closest(target, '.e-filter-item.e-menu-item'))) && !datepickerEle\n && !(parentsUntil(target, 'e-search-wrapper') && !hasDialogClosed)) {\n if ((hasDialog && (!parentsUntil(target, 'e-filter-popup'))\n && (!parentsUntil(target, 'e-popup-flmenu'))) || (!popupEle && hasDialogClosed)) {\n this.filterModule.isresetFocus = parentsUntil(target, 'e-grid') &&\n parentsUntil(target, 'e-grid').id === this.parent.element.id && !(parentsUntil(target, 'e-search-wrapper')\n && hasDialogClosed);\n this.filterModule.closeDialog(target);\n }\n }\n }\n };\n Filter.prototype.filterHandler = function (args) {\n this.actualPredicate[args.field] = args.actualPredicate;\n this.actualData = Object.keys(this.actualPredicate);\n var dataManager = new DataManager(this.filterSettings.columns);\n var query = new Query().where('field', this.filterOperators.equal, args.field);\n this.checkboxFilterObject = dataManager.dataSource.json;\n this.checkboxPrevFilterObject = dataManager.executeLocal(query);\n for (var i = 0; i < this.checkboxPrevFilterObject.length; i++) {\n var index = -1;\n for (var j = 0; j < this.filterSettings.columns.length; j++) {\n if (this.checkboxPrevFilterObject[parseInt(i.toString(), 10)].field ===\n this.filterSettings.columns[parseInt(j.toString(), 10)].field) {\n index = j;\n break;\n }\n }\n if (index !== -1) {\n this.filterSettings.columns.splice(index, 1);\n }\n }\n if (this.values[args.field]) {\n delete this.values[args.field];\n }\n var col = this.parent.getColumnByField(args.field);\n var iconClass = this.parent.showColumnMenu && col.showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n var filterIconElement = this.parent.getColumnHeaderByField(args.field).querySelector(iconClass);\n if (args.action === 'filtering') {\n this.filterSettings.columns = this.filterSettings.columns.concat(args.filterCollection);\n if (this.filterSettings.columns.length && filterIconElement) {\n filterIconElement.classList.add('e-filtered');\n }\n }\n else {\n if (filterIconElement) {\n filterIconElement.classList.remove('e-filtered');\n }\n args.requestType = 'filtering';\n this.parent.renderModule.refresh(args); //hot-fix onpropertychanged not working for object { array }\n }\n this.parent.dataBind();\n };\n Filter.prototype.updateFilter = function () {\n var cols = this.filterSettings.columns;\n this.actualPredicate = {};\n for (var i = 0; i < cols.length; i++) {\n this.column = this.parent.getColumnByField(cols[parseInt(i.toString(), 10)].field) ||\n getColumnByForeignKeyValue(cols[parseInt(i.toString(), 10)].field, this.parent.getForeignKeyColumns());\n var fieldName = cols[parseInt(i.toString(), 10)].field;\n if (!this.parent.getColumnByField(cols[parseInt(i.toString(), 10)].field)) {\n fieldName = getColumnByForeignKeyValue(cols[parseInt(i.toString(), 10)].field, this.parent.getForeignKeyColumns()).field;\n }\n this.refreshFilterIcon(fieldName, cols[parseInt(i.toString(), 10)].operator, cols[parseInt(i.toString(), 10)].value, cols[parseInt(i.toString(), 10)].type, cols[parseInt(i.toString(), 10)].predicate, cols[parseInt(i.toString(), 10)].matchCase, cols[parseInt(i.toString(), 10)].ignoreAccent, cols[parseInt(i.toString(), 10)].uid);\n }\n };\n Filter.prototype.refreshFilterIcon = function (fieldName, operator, value, type, predicate, matchCase, ignoreAccent, uid) {\n var obj = {\n field: fieldName,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: operator,\n value: value,\n type: type\n };\n if (this.actualPredicate[\"\" + fieldName]) {\n this.actualPredicate[\"\" + fieldName].push(obj);\n }\n else {\n this.actualPredicate[\"\" + fieldName] = [obj];\n }\n var field = uid ? this.parent.grabColumnByUidFromAllCols(uid).field : fieldName;\n this.addFilteredClass(field);\n };\n Filter.prototype.addFilteredClass = function (fieldName) {\n var filterIconElement;\n var col = this.parent.getColumnByField(fieldName);\n if (this.parent.showColumnMenu && col.showColumnMenu) {\n filterIconElement = this.parent.getColumnHeaderByField(fieldName).querySelector('.e-columnmenu');\n }\n else if (col) {\n filterIconElement = this.parent.getColumnHeaderByField(fieldName).querySelector('.e-icon-filter');\n }\n if (filterIconElement) {\n filterIconElement.classList.add('e-filtered');\n }\n };\n /**\n * @hidden\n * @returns {FilterUI} returns the FilterUI\n */\n Filter.prototype.getFilterUIInfo = function () {\n return this.filterModule ? this.filterModule.getFilterUIInfo() : {};\n };\n /**\n * @param {string} field - specifies the field name\n * @returns {string} returns the operator name\n * @hidden\n */\n Filter.prototype.getOperatorName = function (field) {\n return document.getElementById(this.parent.getColumnByField(field).uid).ej2_instances[0].value;\n };\n /**\n * Renders checkbox items in Menu filter dialog.\n *\n * @returns {void}\n */\n Filter.prototype.renderCheckboxOnFilterMenu = function () {\n return this.filterModule.renderCheckBoxMenu();\n };\n return Filter;\n}());\nexport { Filter };\n","import { Browser } from '@syncfusion/ej2-base';\nimport { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { closest, classList } from '@syncfusion/ej2-base';\nimport { ResponsiveDialogAction } from '../base/enum';\nimport { setCssInGridPopUp, getActualPropFromColl, isActionPrevent, iterateExtend, parentsUntil } from '../base/util';\nimport { addRemoveEventListener } from '../base/util';\nimport * as events from '../base/constant';\nimport { AriaService } from '../services/aria-service';\nimport * as literals from '../base/string-literals';\n/**\n *\n * The `Sort` module is used to handle sorting action.\n */\nvar Sort = /** @class */ (function () {\n /**\n * Constructor for Grid sorting module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {SortSettings} sortSettings - specifies the SortSettings\n * @param {string[]} sortedColumns - specifies the string\n * @param {ServiceLocator} locator - specifies the ServiceLocator\n * @hidden\n */\n function Sort(parent, sortSettings, sortedColumns, locator) {\n this.contentRefresh = true;\n this.isModelChanged = true;\n this.aria = new AriaService();\n this.currentTarget = null;\n this.parent = parent;\n this.sortSettings = sortSettings;\n this.sortedColumns = sortedColumns;\n this.serviceLocator = locator;\n this.focus = locator.getService('focus');\n this.addEventListener();\n this.setFullScreenDialog();\n }\n /**\n * The function used to update sortSettings\n *\n * @returns {void}\n * @hidden\n */\n Sort.prototype.updateModel = function () {\n var sortedColumn = { field: this.columnName, direction: this.direction };\n var index;\n var gCols = this.parent.groupSettings.columns;\n var flag = false;\n if (!this.isMultiSort) {\n if (!gCols.length) {\n this.sortSettings.columns = [sortedColumn];\n }\n else {\n var sortedCols = [];\n for (var i = 0, len = gCols.length; i < len; i++) {\n index = this.getSortedColsIndexByField(gCols[parseInt(i.toString(), 10)], sortedCols);\n if (this.columnName === gCols[parseInt(i.toString(), 10)]) {\n flag = true;\n sortedCols.push(sortedColumn);\n }\n else {\n var sCol = this.getSortColumnFromField(gCols[parseInt(i.toString(), 10)]);\n sortedCols.push({ field: sCol.field, direction: sCol.direction, isFromGroup: sCol.isFromGroup });\n }\n }\n if (!flag) {\n sortedCols.push(sortedColumn);\n }\n this.sortSettings.columns = sortedCols;\n }\n }\n else {\n index = this.getSortedColsIndexByField(this.columnName);\n if (index > -1) {\n this.sortSettings.columns.splice(index, 1);\n }\n this.sortSettings.columns.push(sortedColumn);\n // eslint-disable-next-line no-self-assign\n this.sortSettings.columns = this.sortSettings.columns;\n }\n this.parent.dataBind();\n this.lastSortedCol = this.columnName;\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Sort.prototype.onActionComplete = function (e) {\n var args = !this.isRemove ? {\n columnName: this.columnName, direction: this.direction, requestType: 'sorting', type: events.actionComplete\n } : { requestType: 'sorting', type: events.actionComplete };\n this.isRemove = false;\n this.parent.trigger(events.actionComplete, extend(e, args));\n };\n /**\n * Sorts a column with the given options.\n *\n * @param {string} columnName - Defines the column name to sort.\n * @param {SortDirection} direction - Defines the direction of sorting field.\n * @param {boolean} isMultiSort - Specifies whether the previously sorted columns are to be maintained.\n * @returns {void}\n */\n Sort.prototype.sortColumn = function (columnName, direction, isMultiSort) {\n var gObj = this.parent;\n if (this.parent.getColumnByField(columnName).allowSorting === false || this.parent.isContextMenuOpen()) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), columnName: columnName });\n return;\n }\n if (!gObj.allowMultiSorting) {\n isMultiSort = gObj.allowMultiSorting;\n }\n if (this.isActionPrevent()) {\n gObj.notify(events.preventBatch, {\n instance: this, handler: this.sortColumn,\n arg1: columnName, arg2: direction, arg3: isMultiSort\n });\n return;\n }\n this.backupSettings();\n this.columnName = columnName;\n this.direction = direction;\n this.isMultiSort = isMultiSort;\n this.removeSortIcons();\n this.updateSortedCols(columnName, isMultiSort);\n this.updateModel();\n };\n Sort.prototype.setFullScreenDialog = function () {\n if (this.serviceLocator) {\n this.serviceLocator.registerAdaptiveService(this, this.parent.enableAdaptiveUI, ResponsiveDialogAction.isSort);\n }\n };\n Sort.prototype.backupSettings = function () {\n this.lastSortedCols = iterateExtend(this.sortSettings.columns);\n this.lastCols = this.sortedColumns;\n };\n Sort.prototype.restoreSettings = function () {\n this.isModelChanged = false;\n this.isMultiSort = true;\n this.parent.setProperties({ sortSettings: { columns: this.lastSortedCols } }, true);\n //this.parent.sortSettings.columns = this.lastSortedCols;\n this.sortedColumns = this.lastCols;\n this.isModelChanged = true;\n };\n Sort.prototype.updateSortedCols = function (columnName, isMultiSort) {\n if (!isMultiSort) {\n if (this.parent.allowGrouping) {\n for (var i = 0, len = this.sortedColumns.length; i < len; i++) {\n if (this.parent.groupSettings.columns.indexOf(this.sortedColumns[parseInt(i.toString(), 10)]) < 0) {\n this.sortedColumns.splice(i, 1);\n len--;\n i--;\n }\n }\n }\n else {\n this.sortedColumns.splice(0, this.sortedColumns.length);\n }\n }\n if (this.sortedColumns.indexOf(columnName) < 0) {\n this.sortedColumns.push(columnName);\n }\n };\n /**\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Sort.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n if (this.contentRefresh) {\n var args = this.sortSettings.columns.length ? {\n columnName: this.columnName, direction: this.direction, requestType: 'sorting',\n type: events.actionBegin, target: this.currentTarget, cancel: false\n } : {\n requestType: 'sorting', type: events.actionBegin, cancel: false,\n target: this.currentTarget\n };\n this.parent.notify(events.modelChanged, args);\n }\n this.refreshSortSettings();\n this.removeSortIcons();\n this.addSortIcons();\n };\n Sort.prototype.refreshSortSettings = function () {\n this.sortedColumns.length = 0;\n var sortColumns = this.sortSettings.columns;\n for (var i = 0; i < sortColumns.length; i++) {\n if (!sortColumns[parseInt(i.toString(), 10)].isFromGroup) {\n this.sortedColumns.push(sortColumns[parseInt(i.toString(), 10)].field);\n }\n }\n };\n /**\n * Clears all the sorted columns of the Grid.\n *\n * @returns {void}\n */\n Sort.prototype.clearSorting = function () {\n var cols = getActualPropFromColl(this.sortSettings.columns);\n if (this.isActionPrevent()) {\n this.parent.notify(events.preventBatch, { instance: this, handler: this.clearSorting });\n return;\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n this.removeSortColumn(cols[parseInt(i.toString(), 10)].field);\n }\n };\n Sort.prototype.isActionPrevent = function () {\n return isActionPrevent(this.parent);\n };\n /**\n * Remove sorted column by field name.\n *\n * @param {string} field - Defines the column field name to remove sort.\n * @returns {void}\n * @hidden\n */\n Sort.prototype.removeSortColumn = function (field) {\n var gObj = this.parent;\n var cols = this.sortSettings.columns;\n if (cols.length === 0 && this.sortedColumns.indexOf(field) < 0) {\n return;\n }\n if (this.isActionPrevent()) {\n this.parent.notify(events.preventBatch, { instance: this, handler: this.removeSortColumn, arg1: field });\n return;\n }\n this.backupSettings();\n this.removeSortIcons();\n var args = { requestType: 'sorting', type: events.actionBegin, target: this.currentTarget };\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].field === field) {\n if (gObj.allowGrouping && gObj.groupSettings.columns.indexOf(cols[parseInt(i.toString(), 10)].field) > -1) {\n continue;\n }\n this.sortedColumns.splice(this.sortedColumns.indexOf(cols[parseInt(i.toString(), 10)].field), 1);\n cols.splice(i, 1);\n this.isRemove = true;\n if (this.isModelChanged) {\n this.parent.notify(events.modelChanged, args);\n }\n break;\n }\n }\n if (!args.cancel) {\n this.addSortIcons();\n }\n };\n Sort.prototype.getSortedColsIndexByField = function (field, sortedColumns) {\n var cols = sortedColumns ? sortedColumns : this.sortSettings.columns;\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].field === field) {\n return i;\n }\n }\n return -1;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Sort.prototype.getModuleName = function () {\n return 'sort';\n };\n Sort.prototype.initialEnd = function () {\n this.parent.off(events.contentReady, this.initialEnd);\n if (this.parent.getColumns().length && this.sortSettings.columns.length) {\n var gObj = this.parent;\n this.contentRefresh = false;\n this.isMultiSort = this.sortSettings.columns.length > 1;\n for (var _i = 0, _a = gObj.sortSettings.columns.slice(); _i < _a.length; _i++) {\n var col = _a[_i];\n if (this.sortedColumns.indexOf(col.field) > -1) {\n this.sortColumn(col.field, col.direction, true);\n }\n }\n this.isMultiSort = false;\n this.contentRefresh = true;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Sort.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.setFullScreenDialog, handler: this.setFullScreenDialog },\n { event: events.renderResponsiveChangeAction, handler: this.renderResponsiveChangeAction },\n { event: events.contentReady, handler: this.initialEnd },\n { event: events.sortComplete, handler: this.onActionComplete },\n { event: events.inBoundModelChanged, handler: this.onPropertyChanged },\n { event: events.click, handler: this.clickHandler },\n { event: events.headerRefreshed, handler: this.refreshSortIcons },\n { event: events.keyPressed, handler: this.keyPressed },\n { event: events.cancelBegin, handler: this.cancelBeginEvent },\n { event: events.destroy, handler: this.destroy }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Sort.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n /**\n * To destroy the sorting\n *\n * @returns {void}\n * @hidden\n */\n Sort.prototype.destroy = function () {\n this.isModelChanged = false;\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + literals.gridHeader) && !gridElement.querySelector('.' + literals.gridContent))) {\n return;\n }\n if (this.parent.element.querySelector('.e-gridpopup').getElementsByClassName('e-sortdirect').length) {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.parent.refreshing && (this.parent.isDestroyed || !this.parent.allowSorting)) {\n this.clearSorting();\n }\n this.isModelChanged = true;\n this.removeEventListener();\n };\n Sort.prototype.cancelBeginEvent = function (e) {\n if (e.requestType === 'sorting') {\n this.restoreSettings();\n this.refreshSortIcons();\n this.isMultiSort = true;\n }\n };\n Sort.prototype.clickHandler = function (e) {\n var gObj = this.parent;\n this.currentTarget = null;\n this.popUpClickHandler(e);\n var target = closest(e.target, '.e-headercell');\n if (target && !e.target.classList.contains('e-grptogglebtn') &&\n !(target.classList.contains('e-resized')) &&\n !e.target.classList.contains('e-rhandler') &&\n !e.target.classList.contains('e-columnmenu') &&\n !e.target.classList.contains('e-filtermenudiv') &&\n !parentsUntil(e.target, 'e-stackedheadercell') &&\n !(gObj.allowSelection && gObj.selectionSettings.allowColumnSelection &&\n e.target.classList.contains('e-headercell'))) {\n var gObj_1 = this.parent;\n var colObj = gObj_1.getColumnByUid(target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid'));\n if (colObj.type !== 'checkbox') {\n this.initiateSort(target, e, colObj);\n if (Browser.isDevice) {\n this.showPopUp(e);\n }\n }\n }\n if (target) {\n target.classList.remove('e-resized');\n }\n if (parentsUntil(e.target, 'e-excel-ascending') ||\n parentsUntil(e.target, 'e-excel-descending')) {\n var colUid = closest(e.target, '.e-filter-popup').getAttribute('uid');\n var direction = isNullOrUndefined(parentsUntil(e.target, 'e-excel-descending')) ?\n 'Ascending' : 'Descending';\n this.sortColumn(gObj.getColumnByUid(colUid).field, direction, false);\n }\n };\n Sort.prototype.keyPressed = function (e) {\n var ele = e.target;\n if (!this.parent.isEdit && (e.action === 'enter' || e.action === 'ctrlEnter' || e.action === 'shiftEnter')\n && closest(ele, '.e-headercell')) {\n var target = this.focus.getFocusedElement();\n if (isNullOrUndefined(target) || !target.classList.contains('e-headercell')\n || !target.querySelector('.e-headercelldiv')) {\n return;\n }\n var col = this.parent.getColumnByUid(target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid'));\n this.initiateSort(target, e, col);\n }\n };\n Sort.prototype.initiateSort = function (target, e, column) {\n var gObj = this.parent;\n var field = column.field;\n this.currentTarget = e.target;\n var direction = !target.getElementsByClassName('e-ascending').length ? 'Ascending' :\n 'Descending';\n this.isMultiSort = e.ctrlKey || this.enableSortMultiTouch ||\n (navigator.userAgent.indexOf('Mac OS') !== -1 && e.metaKey);\n if (e.shiftKey || (this.sortSettings.allowUnsort && target.getElementsByClassName('e-descending').length)\n && !(gObj.groupSettings.columns.indexOf(field) > -1)) {\n this.removeSortColumn(field);\n }\n else {\n this.sortColumn(field, direction, this.isMultiSort);\n }\n };\n Sort.prototype.showPopUp = function (e) {\n var target = closest(e.target, '.e-headercell');\n if (this.parent.allowMultiSorting && (!isNullOrUndefined(target) || this.parent.isContextMenuOpen())) {\n setCssInGridPopUp(this.parent.element.querySelector('.e-gridpopup'), e, 'e-sortdirect e-icons e-icon-sortdirect' + (this.sortedColumns.length > 1 ? ' e-spanclicked' : ''));\n }\n };\n Sort.prototype.popUpClickHandler = function (e) {\n var target = e.target;\n if (closest(target, '.e-headercell') || e.target.classList.contains(literals.rowCell) ||\n closest(target, '.e-gridpopup')) {\n if (target.classList.contains('e-sortdirect')) {\n if (!target.classList.contains('e-spanclicked')) {\n target.classList.add('e-spanclicked');\n this.enableSortMultiTouch = true;\n }\n else {\n target.classList.remove('e-spanclicked');\n this.enableSortMultiTouch = false;\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n }\n }\n else {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n };\n Sort.prototype.addSortIcons = function () {\n var gObj = this.parent;\n var header;\n var filterElement;\n var cols = this.sortSettings.columns;\n var fieldNames = this.parent.getColumns().map(function (c) { return c.field; });\n for (var i = 0, len = cols.length; i < len; i++) {\n header = gObj.getColumnHeaderByField(cols[parseInt(i.toString(), 10)].field);\n if (fieldNames.indexOf(cols[parseInt(i.toString(), 10)].field) === -1 || isNullOrUndefined(header)) {\n continue;\n }\n this.aria.setSort(header, (cols[parseInt(i.toString(), 10)].direction).toLowerCase());\n if (cols.length > 1) {\n header.querySelector('.e-headercelldiv').insertBefore(this.parent.createElement('span', { className: 'e-sortnumber', innerHTML: (i + 1).toString() }), header.querySelector('.e-headertext'));\n }\n filterElement = header.querySelector('.e-sortfilterdiv');\n if (cols[parseInt(i.toString(), 10)].direction === 'Ascending') {\n classList(filterElement, ['e-ascending', 'e-icon-ascending'], []);\n }\n else {\n classList(filterElement, ['e-descending', 'e-icon-descending'], []);\n }\n }\n };\n Sort.prototype.removeSortIcons = function (position) {\n var gObj = this.parent;\n var header;\n var cols = this.sortSettings.columns;\n var fieldNames = this.parent.getColumns().map(function (c) { return c.field; });\n for (var i = position ? position : 0, len = !isNullOrUndefined(position) ? position + 1 : cols.length; i < len; i++) {\n header = gObj.getColumnHeaderByField(cols[parseInt(i.toString(), 10)].field);\n if (isNullOrUndefined(header) || (gObj.allowGrouping\n && gObj.groupSettings.columns.indexOf(cols[parseInt(i.toString(), 10)].field) > -1\n && !header.querySelector('.e-sortfilterdiv'))) {\n continue;\n }\n if (fieldNames.indexOf(cols[parseInt(i.toString(), 10)].field) === -1) {\n continue;\n }\n this.aria.setSort(header, 'none');\n classList(header.querySelector('.e-sortfilterdiv'), [], ['e-descending', 'e-icon-descending', 'e-ascending', 'e-icon-ascending']);\n if (header.querySelector('.e-sortnumber')) {\n header.querySelector('.e-headercelldiv').removeChild(header.querySelector('.e-sortnumber'));\n }\n }\n };\n Sort.prototype.getSortColumnFromField = function (field) {\n for (var i = 0, len = this.sortSettings.columns.length; i < len; i++) {\n if (this.sortSettings.columns[parseInt(i.toString(), 10)].field === field) {\n return this.sortSettings.columns[parseInt(i.toString(), 10)];\n }\n }\n return false;\n };\n Sort.prototype.updateAriaAttr = function () {\n var fieldNames = this.parent.getColumns().map(function (c) { return c.field; });\n for (var _i = 0, _a = this.sortedColumns; _i < _a.length; _i++) {\n var col = _a[_i];\n if (fieldNames.indexOf(col) === -1) {\n continue;\n }\n var header = this.parent.getColumnHeaderByField(col);\n this.aria.setSort(header, this.getSortColumnFromField(col).direction);\n }\n };\n Sort.prototype.refreshSortIcons = function () {\n this.removeSortIcons();\n this.isMultiSort = true;\n this.removeSortIcons();\n this.addSortIcons();\n this.isMultiSort = false;\n this.updateAriaAttr();\n };\n Sort.prototype.renderResponsiveChangeAction = function (args) {\n this.responsiveDialogRenderer.action = args.action;\n };\n /**\n * To show the responsive custom sort dialog\n *\n * @param {boolean} enable - specifes dialog open\n * @returns {void}\n * @hidden\n */\n Sort.prototype.showCustomSort = function (enable) {\n this.responsiveDialogRenderer.isCustomDialog = enable;\n this.responsiveDialogRenderer.showResponsiveDialog();\n };\n return Sort;\n}());\nexport { Sort };\n","import { classList, addClass, removeClass, isNullOrUndefined, Browser } from '@syncfusion/ej2-base';\nimport { Query, DataManager } from '@syncfusion/ej2-data';\nimport { EventHandler, closest } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { Dialog, calculateRelativeBasedPosition } from '@syncfusion/ej2-popups';\nimport { createCboxWithWrap, toogleCheckbox, parentsUntil, removeAddCboxClasses, setChecked } from '../base/util';\nimport { ResponsiveDialogAction } from '../base/enum';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { SearchBox } from '../services/focus-strategy';\nimport * as literals from '../base/string-literals';\n/**\n * The `ColumnChooser` module is used to show or hide columns dynamically.\n */\nvar ColumnChooser = /** @class */ (function () {\n /**\n * Constructor for the Grid ColumnChooser module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n * @hidden\n */\n function ColumnChooser(parent, serviceLocator) {\n this.filterColumns = [];\n this.showColumn = [];\n this.hideColumn = [];\n this.changedColumns = [];\n this.unchangedColumns = [];\n this.isDlgOpen = false;\n this.isColumnChooserOpen = false;\n this.initialOpenDlg = true;\n this.stateChangeColumns = [];\n this.changedStateColumns = [];\n this.isInitialOpen = false;\n this.isCustomizeOpenCC = false;\n this.searchOperator = 'startswith';\n this.prevShowedCols = [];\n this.hideDialogFunction = this.hideDialog.bind(this);\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n this.cBoxTrue = createCheckBox(this.parent.createElement, false, { checked: true, label: ' ' });\n this.cBoxFalse = createCheckBox(this.parent.createElement, false, { checked: false, label: ' ' });\n this.cBoxTrue.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden e-cc e-cc-chbox', attrs: { type: 'checkbox' }\n }), this.cBoxTrue.firstChild);\n this.cBoxFalse.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden e-cc e-cc-chbox', attrs: { 'type': 'checkbox' }\n }), this.cBoxFalse.firstChild);\n this.cBoxFalse.querySelector('.e-frame').classList.add('e-uncheck');\n if (this.parent.enableRtl) {\n addClass([this.cBoxTrue, this.cBoxFalse], ['e-rtl']);\n }\n if (this.parent.cssClass) {\n if (this.parent.cssClass.indexOf(' ') !== -1) {\n addClass([this.cBoxTrue, this.cBoxFalse], this.parent.cssClass.split(' '));\n }\n else {\n addClass([this.cBoxTrue, this.cBoxFalse], [this.parent.cssClass]);\n }\n }\n if (this.parent.enableAdaptiveUI) {\n this.setFullScreenDialog();\n }\n }\n ColumnChooser.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement.querySelector('.' + literals.gridContent) && (!gridElement.querySelector('.' + literals.gridHeader)) || !gridElement) {\n return;\n }\n this.removeEventListener();\n this.unWireEvents();\n if (!isNullOrUndefined(this.dlgObj) && this.dlgObj.element && !this.dlgObj.isDestroyed) {\n this.dlgObj.destroy();\n }\n };\n ColumnChooser.prototype.setFullScreenDialog = function () {\n if (this.serviceLocator) {\n this.serviceLocator.registerAdaptiveService(this, this.parent.enableAdaptiveUI, ResponsiveDialogAction.isColumnChooser);\n }\n };\n ColumnChooser.prototype.rtlUpdate = function () {\n if (!isNullOrUndefined(this.innerDiv)) {\n if (this.parent.enableRtl) {\n addClass([].slice.call(this.innerDiv.getElementsByClassName('e-checkbox-wrapper')), ['e-rtl']);\n }\n else {\n removeClass([].slice.call(this.innerDiv.getElementsByClassName('e-checkbox-wrapper')), ['e-rtl']);\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n ColumnChooser.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.add(document, 'click', this.clickHandler, this);\n this.parent.on(events.uiUpdate, this.enableAfterRenderEle, this);\n this.parent.on(events.initialEnd, this.render, this);\n this.parent.addEventListener(events.dataBound, this.hideDialogFunction);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.rtlUpdated, this.rtlUpdate, this);\n this.parent.on(events.resetColumns, this.onResetColumns, this);\n if (this.parent.enableAdaptiveUI) {\n this.parent.on(events.setFullScreenDialog, this.setFullScreenDialog, this);\n this.parent.on(events.renderResponsiveColumnChooserDiv, this.renderResponsiveColumnChooserDiv, this);\n this.parent.on(events.renderResponsiveChangeAction, this.renderResponsiveChangeAction, this);\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n ColumnChooser.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.remove(document, 'click', this.clickHandler);\n this.parent.off(events.initialEnd, this.render);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.uiUpdate, this.enableAfterRenderEle);\n this.parent.off(events.rtlUpdated, this.rtlUpdate);\n this.parent.off(events.resetColumns, this.onResetColumns);\n this.parent.removeEventListener(events.dataBound, this.hideDialogFunction);\n this.parent.off(events.setFullScreenDialog, this.setFullScreenDialog);\n if (this.parent.enableAdaptiveUI) {\n this.parent.off(events.setFullScreenDialog, this.setFullScreenDialog);\n this.parent.off(events.renderResponsiveColumnChooserDiv, this.renderResponsiveColumnChooserDiv);\n this.parent.off(events.renderResponsiveChangeAction, this.renderResponsiveChangeAction);\n }\n };\n ColumnChooser.prototype.render = function () {\n this.l10n = this.serviceLocator.getService('localization');\n if (!this.parent.enableAdaptiveUI) {\n this.renderDlgContent();\n }\n this.getShowHideService = this.serviceLocator.getService('showHideService');\n };\n ColumnChooser.prototype.clickHandler = function (e) {\n var targetElement = e.target;\n if (!this.isCustomizeOpenCC) {\n if (!isNullOrUndefined(closest(targetElement, '.e-cc-toolbar')) || !isNullOrUndefined(closest(targetElement, '.e-cc'))) {\n if (targetElement.classList.contains('e-columnchooser-btn') || targetElement.classList.contains('e-cc-toolbar')) {\n if ((this.initialOpenDlg && this.dlgObj.visible) || !this.isDlgOpen) {\n this.isDlgOpen = true;\n return;\n }\n }\n else if (targetElement.classList.contains('e-cc-cancel')) {\n targetElement.parentElement.querySelector('.e-ccsearch').value = '';\n this.columnChooserSearch('');\n this.removeCancelIcon();\n this.refreshCheckboxButton();\n }\n }\n else {\n if (!isNullOrUndefined(this.dlgObj) && this.dlgObj.visible && !targetElement.classList.contains('e-toolbar-items')) {\n this.dlgObj.hide();\n this.clearActions();\n this.refreshCheckboxState();\n // this.unWireEvents();\n this.isDlgOpen = false;\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.targetdlg = e.target;\n }\n }\n if (this.isCustomizeOpenCC && e.target.classList.contains('e-cc-cancel')) {\n this.refreshCheckboxState();\n }\n if (!this.parent.enableAdaptiveUI) {\n this.rtlUpdate();\n }\n else {\n if (this.parent.enableRtl) {\n addClass([this.cBoxTrue, this.cBoxFalse], ['e-rtl']);\n }\n }\n };\n ColumnChooser.prototype.hideDialog = function () {\n if (!isNullOrUndefined(this.dlgObj) && this.dlgObj.visible) {\n this.dlgObj.hide();\n // this.unWireEvents();\n this.isDlgOpen = false;\n }\n };\n /**\n * To render columnChooser when showColumnChooser enabled.\n *\n * @param {number} x - specifies the position x\n * @param {number} y - specifies the position y\n * @param {Element} target - specifies the target\n * @returns {void}\n * @hidden\n */\n ColumnChooser.prototype.renderColumnChooser = function (x, y, target) {\n if (!this.dlgObj.visible && (this.parent.detailTemplate || this.parent.childGrid)) {\n this.hideOpenedDialog();\n }\n if (!this.dlgObj.visible) {\n var args = this.beforeOpenColumnChooserEvent();\n if (args.cancel) {\n return;\n }\n if (target) {\n this.targetdlg = target;\n }\n this.refreshCheckboxState();\n this.dlgObj.dataBind();\n this.dlgObj.element.style.maxHeight = '430px';\n var elementVisible = this.dlgObj.element.style.display;\n this.dlgObj.element.style.display = 'block';\n var isSticky = this.parent.getHeaderContent().classList.contains('e-sticky');\n var toolbarItem = closest(target, '.e-toolbar-item');\n var newpos = void 0;\n if (isSticky) {\n newpos = toolbarItem.getBoundingClientRect();\n this.dlgObj.element.classList.add('e-sticky');\n }\n else {\n this.dlgObj.element.classList.remove('e-sticky');\n newpos = calculateRelativeBasedPosition(toolbarItem, this.dlgObj.element);\n }\n this.dlgObj.element.style.display = elementVisible;\n this.dlgObj.element.style.top = newpos.top + closest(target, '.e-cc-toolbar').getBoundingClientRect().height + 'px';\n var dlgWidth = 250;\n if (!isNullOrUndefined(closest(target, '.e-bigger'))) {\n this.dlgObj.width = 258;\n }\n if (Browser.isDevice) {\n this.dlgObj.target = document.body;\n this.dlgObj.position = { X: 'center', Y: 'center' };\n this.dlgObj.refreshPosition();\n this.dlgObj.open = this.mOpenDlg.bind(this);\n }\n else {\n if (this.parent.enableRtl) {\n this.dlgObj.element.style.left = target.offsetLeft + 'px';\n }\n else {\n this.dlgObj.element.style.left = ((newpos.left - dlgWidth) + closest(target, '.e-cc-toolbar').clientWidth) + 2 + 'px';\n }\n }\n this.removeCancelIcon();\n this.dlgObj.show();\n this.parent.notify(events.columnChooserOpened, { dialog: this.dlgObj });\n }\n else {\n // this.unWireEvents();\n this.hideDialog();\n this.addcancelIcon();\n this.clearActions();\n this.refreshCheckboxState();\n }\n this.rtlUpdate();\n };\n /**\n * Column chooser can be displayed on screen by given position(X and Y axis).\n *\n * @param {number} X - Defines the X axis.\n * @param {number} Y - Defines the Y axis.\n * @return {void}\n */\n ColumnChooser.prototype.openColumnChooser = function (X, Y) {\n this.isCustomizeOpenCC = true;\n if (this.parent.enableAdaptiveUI) {\n if (!this.isColumnChooserOpen) {\n this.parent.showResponsiveCustomColumnChooser();\n }\n this.isColumnChooserOpen = false;\n this.renderDlgContent();\n }\n if (this.dlgObj.visible) {\n this.hideDialog();\n return;\n }\n var args = this.beforeOpenColumnChooserEvent();\n if (args.cancel) {\n return;\n }\n if (!this.isInitialOpen) {\n this.dlgObj.content = this.renderChooserList();\n this.updateIntermediateBtn();\n }\n else {\n this.refreshCheckboxState();\n }\n this.dlgObj.dataBind();\n this.dlgObj.position = { X: 'center', Y: 'center' };\n if (isNullOrUndefined(X)) {\n if (this.parent.enableAdaptiveUI) {\n this.dlgObj.position = { X: '', Y: '' };\n }\n this.dlgObj.refreshPosition();\n }\n else {\n this.dlgObj.element.style.top = '';\n this.dlgObj.element.style.left = '';\n this.dlgObj.element.style.top = Y + 'px';\n this.dlgObj.element.style.left = X + 'px';\n }\n this.dlgObj.beforeOpen = this.customDialogOpen.bind(this);\n this.dlgObj.show();\n this.isInitialOpen = true;\n this.dlgObj.beforeClose = this.customDialogClose.bind(this);\n };\n ColumnChooser.prototype.enableAfterRenderEle = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n }\n };\n ColumnChooser.prototype.keyUpHandler = function (e) {\n if (e.key === 'Escape') {\n this.resetColumnState();\n }\n this.setFocus(parentsUntil(e.target, 'e-cclist'));\n };\n ColumnChooser.prototype.setFocus = function (elem) {\n var prevElem = this.dlgDiv.querySelector('.e-colfocus');\n if (prevElem) {\n prevElem.classList.remove('e-colfocus');\n }\n if (elem) {\n elem.classList.add('e-colfocus');\n }\n };\n ColumnChooser.prototype.customDialogOpen = function () {\n var searchElement = this.dlgObj.content.querySelector('input.e-ccsearch');\n EventHandler.add(searchElement, 'keyup', this.columnChooserManualSearch, this);\n };\n ColumnChooser.prototype.customDialogClose = function () {\n var searchElement = this.dlgObj.content.querySelector('input.e-ccsearch');\n EventHandler.remove(searchElement, 'keyup', this.columnChooserManualSearch);\n };\n ColumnChooser.prototype.getColumns = function () {\n var columns = this.parent.getColumns().filter(function (column) { return (column.type !== 'checkbox'\n && column.showInColumnChooser === true) || (column.type === 'checkbox' && column.field !== undefined); });\n return columns;\n };\n ColumnChooser.prototype.renderDlgContent = function () {\n var isAdaptive = this.parent.enableAdaptiveUI;\n this.dlgDiv = this.parent.createElement('div', { className: 'e-ccdlg e-cc', id: this.parent.element.id + '_ccdlg' });\n if (!isAdaptive) {\n this.parent.element.appendChild(this.dlgDiv);\n }\n this.dlgObj = new Dialog({\n header: this.parent.enableAdaptiveUI ? null : this.l10n.getConstant('ChooseColumns'),\n showCloseIcon: false,\n closeOnEscape: false,\n locale: this.parent.locale,\n visible: false,\n enableRtl: this.parent.enableRtl,\n target: document.getElementById(this.parent.element.id),\n content: this.renderChooserList(),\n width: 250,\n cssClass: this.parent.cssClass ? 'e-cc' + ' ' + this.parent.cssClass : 'e-cc',\n animationSettings: { effect: 'None' }\n });\n if (!isAdaptive) {\n this.dlgObj.buttons = [{\n click: this.confirmDlgBtnClick.bind(this),\n buttonModel: {\n content: this.l10n.getConstant('OKButton'), isPrimary: true,\n cssClass: this.parent.cssClass ? 'e-cc e-cc_okbtn' + ' ' + this.parent.cssClass : 'e-cc e-cc_okbtn'\n }\n },\n {\n click: this.clearBtnClick.bind(this),\n buttonModel: {\n cssClass: this.parent.cssClass ?\n 'e-flat e-cc e-cc-cnbtn' + ' ' + this.parent.cssClass : 'e-flat e-cc e-cc-cnbtn',\n content: this.l10n.getConstant('CancelButton')\n }\n }];\n }\n var isStringTemplate = 'isStringTemplate';\n this.dlgObj[\"\" + isStringTemplate] = true;\n this.dlgObj.appendTo(this.dlgDiv);\n if (isAdaptive) {\n var responsiveCnt = document.querySelector('.e-responsive-dialog > .e-dlg-content > .e-mainfilterdiv');\n if (responsiveCnt) {\n responsiveCnt.appendChild(this.dlgDiv);\n }\n this.dlgObj.open = this.mOpenDlg.bind(this);\n this.dlgObj.target = document.querySelector('.e-rescolumnchooser > .e-dlg-content > .e-mainfilterdiv');\n }\n this.wireEvents();\n };\n ColumnChooser.prototype.renderChooserList = function () {\n this.mainDiv = this.parent.createElement('div', { className: 'e-main-div e-cc' });\n var searchDiv = this.parent.createElement('div', { className: 'e-cc-searchdiv e-cc e-input-group' });\n var ccsearchele = this.parent.createElement('input', {\n className: 'e-ccsearch e-cc e-input',\n attrs: { placeholder: this.l10n.getConstant('Search'), cssClass: this.parent.cssClass }\n });\n var ccsearchicon = this.parent.createElement('span', {\n className: 'e-ccsearch-icon e-icons e-cc e-input-group-icon',\n attrs: { title: this.l10n.getConstant('Search') }\n });\n var conDiv = this.parent.createElement('div', { className: 'e-cc-contentdiv' });\n this.innerDiv = this.parent.createElement('div', { className: 'e-innerdiv e-cc' });\n searchDiv.appendChild(ccsearchele);\n searchDiv.appendChild(ccsearchicon);\n this.searchBoxObj = new SearchBox(ccsearchele, this.serviceLocator);\n var innerDivContent = this.refreshCheckboxList(this.parent.getColumns());\n this.innerDiv.appendChild(innerDivContent);\n conDiv.appendChild(this.innerDiv);\n if (this.parent.enableAdaptiveUI) {\n var searchBoxDiv = this.parent.createElement('div', { className: 'e-cc-searchBox' });\n searchBoxDiv.appendChild(searchDiv);\n this.mainDiv.appendChild(searchBoxDiv);\n }\n else {\n this.mainDiv.appendChild(searchDiv);\n }\n this.mainDiv.appendChild(conDiv);\n return this.mainDiv;\n };\n ColumnChooser.prototype.confirmDlgBtnClick = function (args) {\n this.stateChangeColumns = [];\n this.changedStateColumns = [];\n this.changedColumns = (this.changedColumns.length > 0) ? this.changedColumns : this.unchangedColumns;\n this.changedColumnState(this.changedColumns);\n var uncheckedLength = this.ulElement.querySelector('.e-uncheck') &&\n this.ulElement.querySelectorAll('.e-uncheck:not(.e-selectall)').length;\n if (!isNullOrUndefined(args)) {\n if (uncheckedLength < this.parent.getColumns().length) {\n if (this.hideColumn.length) {\n this.columnStateChange(this.hideColumn, false);\n }\n if (this.showColumn.length) {\n this.columnStateChange(this.showColumn, true);\n }\n this.getShowHideService.setVisible(this.stateChangeColumns, this.changedStateColumns);\n this.clearActions();\n this.parent.notify(events.tooltipDestroy, { module: 'edit' });\n if (this.parent.getCurrentViewRecords().length === 0) {\n var emptyRowCell = this.parent.element.querySelector('.e-emptyrow').querySelector('td');\n emptyRowCell.setAttribute('colSpan', this.parent.getVisibleColumns().length.toString());\n }\n }\n if (this.parent.enableAdaptiveUI && this.parent.scrollModule) {\n this.parent.scrollModule.refresh();\n }\n if (this.parent.editSettings.showAddNewRow) {\n this.parent.notify(events.showAddNewRowFocus, {});\n }\n }\n };\n ColumnChooser.prototype.onResetColumns = function (e) {\n if (e.requestType === 'columnstate') {\n this.resetColumnState();\n return;\n }\n };\n ColumnChooser.prototype.renderResponsiveColumnChooserDiv = function (args) {\n if (args.action === 'open') {\n this.isColumnChooserOpen = true;\n this.openColumnChooser();\n }\n else if (args.action === 'clear') {\n this.clearBtnClick();\n }\n else if (args.action === 'confirm') {\n this.confirmDlgBtnClick(true);\n }\n };\n ColumnChooser.prototype.resetColumnState = function () {\n this.showColumn = [];\n this.hideColumn = [];\n this.changedColumns = [];\n this.filterColumns = [];\n this.searchValue = \"\";\n this.hideDialog();\n };\n ColumnChooser.prototype.changedColumnState = function (changedColumns) {\n for (var index = 0; index < changedColumns.length; index++) {\n var colUid = changedColumns[parseInt(index.toString(), 10)];\n var currentCol = this.parent.getColumnByUid(colUid);\n this.changedStateColumns.push(currentCol);\n }\n };\n ColumnChooser.prototype.columnStateChange = function (stateColumns, state) {\n for (var index = 0; index < stateColumns.length; index++) {\n var colUid = stateColumns[parseInt(index.toString(), 10)];\n var currentCol = this.parent.getColumnByUid(colUid);\n if (currentCol.type !== 'checkbox') {\n currentCol.visible = state;\n }\n this.stateChangeColumns.push(currentCol);\n }\n };\n ColumnChooser.prototype.clearActions = function () {\n this.resetColumnState();\n this.addcancelIcon();\n };\n ColumnChooser.prototype.clearBtnClick = function () {\n this.clearActions();\n this.parent.notify(events.columnChooserCancelBtnClick, { dialog: this.dlgObj });\n };\n ColumnChooser.prototype.checkstatecolumn = function (isChecked, coluid, selectAll) {\n if (selectAll === void 0) { selectAll = false; }\n var currentCol = this.parent.getColumnByUid(coluid);\n if (isChecked) {\n if (this.hideColumn.indexOf(coluid) !== -1) {\n this.hideColumn.splice(this.hideColumn.indexOf(coluid), 1);\n }\n if (this.showColumn.indexOf(coluid) === -1 && !(currentCol && currentCol.visible)) {\n this.showColumn.push(coluid);\n }\n }\n else {\n if (this.showColumn.indexOf(coluid) !== -1) {\n this.showColumn.splice(this.showColumn.indexOf(coluid), 1);\n }\n if (this.hideColumn.indexOf(coluid) === -1 && (currentCol && currentCol.visible)) {\n this.hideColumn.push(coluid);\n }\n }\n if (selectAll) {\n if (!isChecked) {\n this.changedColumns.push(coluid);\n }\n else {\n this.unchangedColumns.push(coluid);\n }\n }\n else if (this.changedColumns.indexOf(coluid) !== -1) {\n this.changedColumns.splice(this.changedColumns.indexOf(coluid), 1);\n }\n else {\n this.changedColumns.push(coluid);\n }\n };\n ColumnChooser.prototype.columnChooserSearch = function (searchVal) {\n var clearSearch = false;\n var okButton;\n var buttonEle = this.dlgDiv.querySelector('.e-footer-content');\n var selectedCbox = this.ulElement.querySelector('.e-check') &&\n this.ulElement.querySelectorAll('.e-check:not(.e-selectall)').length;\n this.isInitialOpen = true;\n if (buttonEle) {\n okButton = buttonEle.querySelector('.e-btn').ej2_instances[0];\n }\n if (searchVal === '') {\n this.removeCancelIcon();\n this.filterColumns = this.getColumns();\n clearSearch = true;\n }\n else {\n this.filterColumns = new DataManager(this.getColumns()).executeLocal(new Query()\n .where('headerText', this.searchOperator, searchVal, true, this.parent.columnChooserSettings.ignoreAccent));\n }\n if (this.filterColumns.length) {\n this.innerDiv.innerHTML = ' ';\n this.innerDiv.classList.remove('e-ccnmdiv');\n this.innerDiv.appendChild(this.refreshCheckboxList(this.filterColumns));\n if (!clearSearch) {\n this.addcancelIcon();\n this.refreshCheckboxButton();\n }\n else {\n if (okButton && selectedCbox) {\n okButton.disabled = false;\n }\n if (selectedCbox && this.parent.enableAdaptiveUI && this.responsiveDialogRenderer) {\n this.parent.notify(events.refreshCustomFilterOkBtn, { disabled: false });\n }\n }\n }\n else {\n var nMatchele = this.parent.createElement('span', { className: 'e-cc e-nmatch' });\n nMatchele.innerHTML = this.l10n.getConstant('Matchs');\n this.innerDiv.innerHTML = ' ';\n this.innerDiv.appendChild(nMatchele);\n this.innerDiv.classList.add('e-ccnmdiv');\n if (okButton) {\n okButton.disabled = true;\n }\n if (this.parent.enableAdaptiveUI && this.responsiveDialogRenderer) {\n this.parent.notify(events.refreshCustomFilterOkBtn, { disabled: true });\n }\n }\n this.flag = true;\n this.stopTimer();\n };\n ColumnChooser.prototype.wireEvents = function () {\n EventHandler.add(this.dlgObj.element, 'click', this.checkBoxClickHandler, this);\n EventHandler.add(this.searchBoxObj.searchBox, 'keyup', this.columnChooserManualSearch, this);\n EventHandler.add(this.dlgObj.element, 'keyup', this.keyUpHandler, this);\n this.searchBoxObj.wireEvent();\n };\n ColumnChooser.prototype.unWireEvents = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n if (this.dlgObj && this.dlgObj.element) {\n EventHandler.remove(this.dlgObj.element, 'click', this.checkBoxClickHandler);\n EventHandler.remove(this.dlgObj.element, 'keyup', this.keyUpHandler);\n }\n if (this.searchBoxObj) {\n EventHandler.remove(this.searchBoxObj.searchBox, 'keyup', this.columnChooserManualSearch);\n this.searchBoxObj.unWireEvent();\n }\n };\n ColumnChooser.prototype.checkBoxClickHandler = function (e) {\n var checkstate;\n var elem = parentsUntil(e.target, 'e-checkbox-wrapper');\n if (elem) {\n var selectAll = elem.querySelector('.e-selectall');\n if (selectAll) {\n this.updateSelectAll(!elem.querySelector('.e-check'));\n }\n else {\n toogleCheckbox(elem.parentElement);\n }\n elem.querySelector('.e-chk-hidden').focus();\n if (elem.querySelector('.e-check')) {\n checkstate = true;\n }\n else if (elem.querySelector('.e-uncheck')) {\n checkstate = false;\n }\n this.updateIntermediateBtn();\n var columnUid = parentsUntil(elem, 'e-ccheck').getAttribute('uid');\n var column = (this.searchValue && this.searchValue.length) ? this.filterColumns : this.parent.getColumns();\n if (columnUid === this.parent.element.id + '-selectAll') {\n this.changedColumns = [];\n this.unchangedColumns = [];\n for (var i = 0; i < column.length; i++) {\n if (column[parseInt(i.toString(), 10)].showInColumnChooser) {\n this.checkstatecolumn(checkstate, column[parseInt(i.toString(), 10)].uid, true);\n }\n }\n }\n else {\n this.checkstatecolumn(checkstate, columnUid);\n }\n this.refreshCheckboxButton();\n this.setFocus(parentsUntil(e.target, 'e-cclist'));\n }\n };\n ColumnChooser.prototype.updateIntermediateBtn = function () {\n var cnt = this.ulElement.children.length - 1;\n var className = [];\n var elem = this.ulElement.children[0].querySelector('.e-frame');\n var selected = this.ulElement.querySelectorAll('.e-check:not(.e-selectall)').length;\n var btn;\n if (!this.parent.enableAdaptiveUI) {\n btn = this.dlgObj.btnObj[0];\n btn.disabled = false;\n }\n else if (this.parent.enableAdaptiveUI && this.responsiveDialogRenderer) {\n this.parent.notify(events.refreshCustomFilterOkBtn, { disabled: false });\n }\n var inputElem = elem.parentElement.querySelector('input');\n if (cnt === selected) {\n className = ['e-check'];\n setChecked(inputElem, true);\n }\n else if (selected) {\n className = ['e-stop'];\n inputElem.indeterminate = true;\n }\n else {\n className = ['e-uncheck'];\n setChecked(inputElem, false);\n if (!this.parent.enableAdaptiveUI) {\n btn.disabled = true;\n }\n else if (this.parent.enableAdaptiveUI && this.responsiveDialogRenderer) {\n this.parent.notify(events.refreshCustomFilterOkBtn, { disabled: true });\n }\n }\n if (!this.parent.enableAdaptiveUI) {\n btn.dataBind();\n }\n removeClass([elem], ['e-check', 'e-stop', 'e-uncheck']);\n addClass([elem], className);\n };\n ColumnChooser.prototype.updateSelectAll = function (checked) {\n var cBoxes = [].slice.call(this.ulElement.getElementsByClassName('e-frame'));\n for (var _i = 0, cBoxes_1 = cBoxes; _i < cBoxes_1.length; _i++) {\n var cBox = cBoxes_1[_i];\n removeAddCboxClasses(cBox, checked);\n var cBoxInput = cBox.parentElement.querySelector('input');\n if (cBox.classList.contains('e-check')) {\n setChecked(cBoxInput, true);\n }\n else if (cBox.classList.contains('e-uncheck')) {\n setChecked(cBoxInput, false);\n }\n }\n };\n ColumnChooser.prototype.refreshCheckboxButton = function () {\n var visibleCols = this.parent.getVisibleColumns();\n for (var i = 0; i < visibleCols.length; i++) {\n var columnUID = visibleCols[parseInt(i.toString(), 10)].uid;\n if (this.prevShowedCols.indexOf(columnUID) === -1 && visibleCols[parseInt(i.toString(), 10)].type !== 'checkbox') {\n this.prevShowedCols.push(columnUID);\n }\n }\n for (var i = 0; i < this.hideColumn.length; i++) {\n var index = this.prevShowedCols.indexOf(this.hideColumn[parseInt(i.toString(), 10)]);\n if (index !== -1) {\n this.prevShowedCols.splice(index, 1);\n }\n }\n var selected = this.showColumn.length !== 0 ? 1 : this.prevShowedCols.length;\n var btn;\n if (!this.parent.enableAdaptiveUI) {\n btn = this.dlgDiv.querySelector('.e-footer-content').querySelector('.e-btn').ej2_instances[0];\n btn.disabled = false;\n }\n else if (this.parent.enableAdaptiveUI && this.responsiveDialogRenderer) {\n this.parent.notify(events.refreshCustomFilterOkBtn, { disabled: false });\n }\n var srchShowCols = [];\n var searchData = [].slice.call(this.parent.element.getElementsByClassName('e-cc-chbox'));\n for (var i = 0, itemsLen = searchData.length; i < itemsLen; i++) {\n var element = searchData[parseInt(i.toString(), 10)];\n var columnUID = parentsUntil(element, 'e-ccheck').getAttribute('uid');\n srchShowCols.push(columnUID);\n }\n var hideCols = this.showColumn.filter(function (column) { return srchShowCols.indexOf(column) !== -1; });\n if (selected === 0 && hideCols.length === 0) {\n if (!this.parent.enableAdaptiveUI) {\n btn.disabled = true;\n }\n else if (this.parent.enableAdaptiveUI && this.responsiveDialogRenderer) {\n this.parent.notify(events.refreshCustomFilterOkBtn, { disabled: true });\n }\n }\n if (!this.parent.enableAdaptiveUI) {\n btn.dataBind();\n }\n };\n ColumnChooser.prototype.refreshCheckboxList = function (gdCol) {\n this.ulElement = this.parent.createElement('ul', { className: 'e-ccul-ele e-cc' });\n var selectAllValue = this.l10n.getConstant('SelectAll');\n var cclist = this.parent.createElement('li', { className: 'e-cclist e-cc e-cc-selectall' });\n var selectAll = this.createCheckBox(selectAllValue, false, this.parent.element.id + '-selectAll');\n if (gdCol.length) {\n selectAll.querySelector('.e-checkbox-wrapper').firstElementChild.classList.add('e-selectall');\n selectAll.querySelector('.e-frame').classList.add('e-selectall');\n this.checkState(selectAll.querySelector('.e-icons'), true);\n cclist.appendChild(selectAll);\n this.ulElement.appendChild(cclist);\n }\n if (this.parent.cssClass) {\n if (this.parent.cssClass.indexOf(' ') !== -1) {\n addClass([selectAll], this.parent.cssClass.split(' '));\n }\n else {\n addClass([selectAll], [this.parent.cssClass]);\n }\n }\n for (var i = 0; i < gdCol.length; i++) {\n var columns = gdCol[parseInt(i.toString(), 10)];\n this.renderCheckbox(columns);\n }\n return this.ulElement;\n };\n ColumnChooser.prototype.refreshCheckboxState = function () {\n this.dlgObj.element.querySelector('.e-cc.e-input').value = '';\n this.columnChooserSearch('');\n var gridObject = this.parent;\n var currentCheckBoxColls = this.dlgObj.element.querySelectorAll('.e-cc-chbox:not(.e-selectall)');\n for (var i = 0, itemLen = currentCheckBoxColls.length; i < itemLen; i++) {\n var element = currentCheckBoxColls[parseInt(i.toString(), 10)];\n var columnUID = void 0;\n if (this.parent.childGrid || this.parent.detailTemplate) {\n columnUID = parentsUntil(this.dlgObj.element.querySelectorAll('.e-cc-chbox:not(.e-selectall)')[parseInt(i.toString(), 10)], 'e-ccheck').getAttribute('uid');\n }\n else {\n columnUID = parentsUntil(element, 'e-ccheck').getAttribute('uid');\n }\n var column = gridObject.getColumnByUid(columnUID);\n var uncheck = [].slice.call(element.parentElement.getElementsByClassName('e-uncheck'));\n if (column.visible && !uncheck.length) {\n element.checked = true;\n this.checkState(element.parentElement.querySelector('.e-icons'), true);\n }\n else {\n element.checked = false;\n this.checkState(element.parentElement.querySelector('.e-icons'), false);\n }\n }\n };\n ColumnChooser.prototype.checkState = function (element, state) {\n if (state) {\n classList(element, ['e-check'], ['e-uncheck']);\n }\n else {\n classList(element, ['e-uncheck'], ['e-check']);\n }\n };\n ColumnChooser.prototype.createCheckBox = function (label, checked, uid) {\n var cbox = checked ? this.cBoxTrue.cloneNode(true) : this.cBoxFalse.cloneNode(true);\n if (!this.parent.enableAdaptiveUI && this.parent.enableRtl && !cbox.classList.contains('e-rtl')) {\n cbox.classList.add('e-rtl');\n }\n var cboxLabel = cbox.querySelector('.e-label');\n var inputcbox = cbox.querySelector('input');\n setChecked(inputcbox, checked);\n cboxLabel.setAttribute('id', uid + 'label');\n cboxLabel.innerHTML = label;\n inputcbox.setAttribute('aria-labelledby', cboxLabel.id);\n return createCboxWithWrap(uid, cbox, 'e-ccheck');\n };\n ColumnChooser.prototype.renderCheckbox = function (column) {\n var cclist;\n var hideColState;\n var showColState;\n if (column.showInColumnChooser) {\n cclist = this.parent.createElement('li', { className: 'e-cclist e-cc', styles: 'list-style:None', id: 'e-ccli_' + column.uid });\n hideColState = this.hideColumn.indexOf(column.uid) === -1 ? false : true;\n showColState = this.showColumn.indexOf(column.uid) === -1 ? false : true;\n var cccheckboxlist = this.createCheckBox(column.headerText, (column.visible && !hideColState) || showColState, column.uid);\n cclist.appendChild(cccheckboxlist);\n if (this.parent.cssClass) {\n if (this.parent.cssClass.indexOf(' ') !== -1) {\n addClass([cccheckboxlist], this.parent.cssClass.split(' '));\n }\n else {\n addClass([cccheckboxlist], [this.parent.cssClass]);\n }\n }\n this.ulElement.appendChild(cclist);\n }\n if (this.isInitialOpen) {\n this.updateIntermediateBtn();\n }\n };\n ColumnChooser.prototype.columnChooserManualSearch = function (e) {\n this.addcancelIcon();\n this.searchValue = e.target.value;\n this.stopTimer();\n this.startTimer(e);\n };\n ColumnChooser.prototype.startTimer = function (e) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n var interval = !proxy.flag && e.keyCode !== 13 ? 500 : 0;\n this.timer = window.setInterval(function () { proxy.columnChooserSearch(proxy.searchValue); }, interval);\n };\n ColumnChooser.prototype.stopTimer = function () {\n window.clearInterval(this.timer);\n };\n ColumnChooser.prototype.addcancelIcon = function () {\n this.dlgDiv.querySelector('.e-cc.e-ccsearch-icon').classList.add('e-cc-cancel');\n this.dlgDiv.querySelector('.e-cc-cancel').setAttribute('title', this.l10n.getConstant('Clear'));\n };\n ColumnChooser.prototype.removeCancelIcon = function () {\n this.dlgDiv.querySelector('.e-cc.e-ccsearch-icon').classList.remove('e-cc-cancel');\n this.dlgDiv.querySelector('.e-cc.e-ccsearch-icon').setAttribute('title', this.l10n.getConstant('Search'));\n };\n ColumnChooser.prototype.mOpenDlg = function () {\n if (Browser.isDevice) {\n this.dlgObj.element.querySelector('.e-cc-searchdiv').classList.remove('e-input-focus');\n this.dlgObj.element.querySelectorAll('.e-cc-chbox')[0].focus();\n }\n if (this.parent.enableAdaptiveUI) {\n this.dlgObj.element.querySelector('.e-cc-searchdiv').classList.add('e-input-focus');\n }\n };\n // internally use\n ColumnChooser.prototype.getModuleName = function () {\n return 'columnChooser';\n };\n ColumnChooser.prototype.hideOpenedDialog = function () {\n var openCC = [].slice.call(document.getElementsByClassName('e-ccdlg')).filter(function (dlgEle) {\n return dlgEle.classList.contains('e-popup-open');\n });\n for (var i = 0, dlgLen = openCC.length; i < dlgLen; i++) {\n if (this.parent.element.id + '_ccdlg' !== openCC[parseInt(i.toString(), 10)].id || openCC[parseInt(i.toString(), 10)].classList.contains('e-dialog')) {\n openCC[parseInt(i.toString(), 10)].ej2_instances[0].hide();\n }\n }\n };\n ColumnChooser.prototype.beforeOpenColumnChooserEvent = function () {\n var args1 = {\n requestType: 'beforeOpenColumnChooser', element: this.parent.element,\n columns: this.getColumns(), cancel: false,\n searchOperator: this.parent.columnChooserSettings.operator\n };\n this.parent.trigger(events.beforeOpenColumnChooser, args1);\n this.searchOperator = args1.searchOperator;\n return args1;\n };\n ColumnChooser.prototype.renderResponsiveChangeAction = function (args) {\n this.responsiveDialogRenderer.action = args.action;\n };\n /**\n * To show the responsive custom sort dialog\n *\n * @param {boolean} enable - specifes dialog open\n * @returns {void}\n * @hidden\n */\n ColumnChooser.prototype.showCustomColumnChooser = function (enable) {\n this.responsiveDialogRenderer.isCustomDialog = enable;\n this.responsiveDialogRenderer.showResponsiveDialog();\n };\n return ColumnChooser;\n}());\nexport { ColumnChooser };\n","import { isNullOrUndefined, addClass, extend } from '@syncfusion/ej2-base';\nimport { appendChildren, setStyleAndAttributes, addFixedColumnBorder, addStickyColumnPosition, resetColandRowSpanStickyPosition } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * Edit render module is used to render grid edit row.\n *\n * @hidden\n */\nvar InlineEditRender = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent - returns the IGrid\n */\n function InlineEditRender(parent) {\n this.parent = parent;\n }\n InlineEditRender.prototype.addNew = function (elements, args) {\n this.isEdit = false;\n var tbody;\n if ((this.parent.frozenRows || ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) &&\n this.parent.editSettings.showAddNewRow)) && this.parent.editSettings.newRowPosition === 'Top') {\n tbody = this.parent.getHeaderTable().querySelector(literals.tbody);\n }\n else {\n tbody = this.parent.getContentTable().querySelector(literals.tbody);\n }\n args.row = this.parent.createElement('tr', { className: 'e-row e-addedrow' });\n if (this.parent.getContentTable().querySelector('.e-emptyrow') && !this.parent.editSettings.showAddNewRow) {\n var emptyRow = this.parent.getContentTable().querySelector('.e-emptyrow');\n emptyRow.parentNode.removeChild(emptyRow);\n if (this.parent.frozenRows && this.parent.element.querySelector('.e-frozenrow-empty')) {\n this.parent.element.querySelector('.e-frozenrow-empty').classList.remove('e-frozenrow-empty');\n }\n }\n if (this.parent.editSettings.newRowPosition === 'Top') {\n tbody.insertBefore(args.row, tbody.firstChild);\n }\n else {\n tbody.appendChild(args.row);\n }\n args.row.appendChild(this.getEditElement(elements, false, undefined, args, true));\n this.parent.editModule.checkLastRow(args.row, args);\n };\n InlineEditRender.prototype.update = function (elements, args) {\n this.isEdit = true;\n var tdElement = [].slice.call(args.row.querySelectorAll('td.e-rowcell'));\n args.row.innerHTML = '';\n args.row.appendChild(this.getEditElement(elements, true, tdElement, args, true));\n args.row.classList.add(literals.editedRow);\n this.parent.editModule.checkLastRow(args.row, args);\n };\n // eslint-disable-next-line max-len\n InlineEditRender.prototype.getEditElement = function (elements, isEdit, tdElement, args, isFrozen) {\n var gObj = this.parent;\n var gLen = 0;\n var isDetail = !isNullOrUndefined(gObj.detailTemplate) || !isNullOrUndefined(gObj.childGrid) ? 1 : 0;\n if (gObj.allowGrouping) {\n gLen = gObj.groupSettings.columns.length;\n }\n var td = this.parent.createElement('td', {\n className: 'e-editcell e-normaledit',\n attrs: {\n colspan: (gObj.getCurrentVisibleColumns(this.parent.enableColumnVirtualization).length +\n this.parent.getIndentCount()).toString()\n }\n });\n var form = args.form =\n this.parent.createElement('form', { id: gObj.element.id + 'EditForm', className: 'e-gridform' });\n if (this.parent.editSettings.template) {\n this.appendChildren(form, args.rowData, isFrozen);\n td.appendChild(form);\n return td;\n }\n var table = this.parent.createElement('table', { className: 'e-table e-inline-edit', attrs: { cellspacing: '0.25', role: 'grid' } });\n table.appendChild(gObj.getContentTable().querySelector(literals.colGroup).cloneNode(true));\n var tbody = this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n var tr = this.parent.createElement('tr');\n var i = 0;\n if (isDetail) {\n tr.insertBefore(this.parent.createElement('td', { className: 'e-detailrowcollapse' }), tr.firstChild);\n }\n if (gObj.isRowDragable()) {\n tr.appendChild(this.parent.createElement('td', { className: 'e-dragindentcell' }));\n }\n while (i < gLen) {\n tr.appendChild(this.parent.createElement('td', { className: 'e-indentcell' }));\n i++;\n }\n var m = 0;\n i = 0;\n var inputValue;\n var cols = args.isCustomFormValidation ? this.parent.columnModel : gObj.getColumns();\n while ((isEdit && m < tdElement.length && i < cols.length) || i < cols.length) {\n var span = isEdit && tdElement[parseInt(m.toString(), 10)] ?\n tdElement[parseInt(m.toString(), 10)].getAttribute('colspan') : null;\n var col = cols[parseInt(i.toString(), 10)];\n inputValue = (elements[col.uid]).value;\n var td_1 = this.parent.createElement('td', {\n className: literals.rowCell, attrs: { style: 'text-align:' + (col.textAlign ? col.textAlign : ''), 'colspan': span ? span : '' }\n });\n if (col.visible) {\n td_1.appendChild(elements[col.uid]);\n if (this.parent.rowRenderingMode === 'Vertical') {\n setStyleAndAttributes(td_1, { 'data-cell': col.headerText });\n if (i === 0) {\n td_1.classList.add('e-responsive-editcell');\n }\n }\n if (col.editType === 'booleanedit') {\n td_1.classList.add('e-boolcell');\n }\n else if (col.commands || col.commandsTemplate) {\n addClass([td_1], 'e-unboundcell');\n }\n }\n else {\n td_1.classList.add('e-hide');\n }\n if (this.parent.isFrozenGrid()) {\n addStickyColumnPosition(this.parent, col, td_1);\n if (this.parent.isSpan) {\n var colSpan = td_1.getAttribute('colspan') ? parseInt(td_1.getAttribute('colspan'), 10) : 1;\n resetColandRowSpanStickyPosition(this.parent, col, td_1, colSpan);\n }\n if (this.parent.enableColumnVirtualization) {\n if (col.freeze === 'Left' && !isNullOrUndefined(col.valueX)) {\n td_1.style.left = (col.valueX - this.parent.translateX) + 'px';\n }\n else if (col.freeze === 'Right' && !isNullOrUndefined(col.valueX)) {\n td_1.style.right = (col.valueX + this.parent.translateX) + 'px';\n }\n else if (col.freeze === 'Fixed') {\n td_1.style.left = (this.parent.leftrightColumnWidth('left') - this.parent.translateX) + 'px';\n td_1.style.right = (this.parent.leftrightColumnWidth('right') + this.parent.translateX) + 'px';\n }\n }\n }\n td_1.setAttribute('aria-label', inputValue + this.parent.localeObj.getConstant('ColumnHeader') + col.headerText);\n tr.appendChild(td_1);\n i = span ? i + parseInt(span, 10) : i + 1;\n m++;\n }\n addFixedColumnBorder(tr);\n tbody.appendChild(tr);\n table.appendChild(tbody);\n form.appendChild(table);\n td.appendChild(form);\n return td;\n };\n InlineEditRender.prototype.removeEventListener = function () {\n //To destroy the renderer\n };\n InlineEditRender.prototype.appendChildren = function (form, data, isFrozen) {\n var _this = this;\n var dummyData = extend({}, data, { isAdd: !this.isEdit, isFrozen: isFrozen }, true);\n var editTemplateID = this.parent.element.id + 'editSettingsTemplate';\n if (this.parent.isReact && typeof (this.parent.editSettings.template) !== 'string') {\n this.parent.getEditTemplate()(dummyData, this.parent, 'editSettingsTemplate', editTemplateID, null, null, form);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(form, this.parent.getEditTemplate()(dummyData, this.parent, 'editSettingsTemplate', editTemplateID, null, null, null, this.parent.root));\n }\n // eslint-disable-next-line\n var setRules = function () {\n var cols = _this.parent.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].validationRules) {\n _this.parent.editModule.formObj.rules[cols[parseInt(i.toString(), 10)].field] =\n cols[parseInt(i.toString(), 10)].validationRules;\n }\n }\n };\n };\n return InlineEditRender;\n}());\nexport { InlineEditRender };\n","import { classList } from '@syncfusion/ej2-base';\nimport * as literals from '../base/string-literals';\n/**\n * Edit render module is used to render grid edit row.\n *\n * @hidden\n */\nvar BatchEditRender = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent - specifies the IGrid\n */\n function BatchEditRender(parent) {\n this.parent = parent;\n }\n BatchEditRender.prototype.update = function (elements, args) {\n if (this.parent.isReact && args.columnObject && args.columnObject.template) {\n var parentRow = args.cell.parentElement;\n var newTd = args.cell.cloneNode(true);\n parentRow.insertBefore(newTd, args.cell);\n newTd.focus();\n args.cell.remove();\n args.cell = newTd;\n }\n args.cell.setAttribute('aria-label', args.cell.innerHTML + this.parent.localeObj.getConstant('ColumnHeader') + args.columnObject.field);\n args.cell.innerHTML = '';\n args.cell.appendChild(this.getEditElement(elements, args));\n args.cell.classList.add('e-editedbatchcell');\n classList(args.row, [literals.editedRow, 'e-batchrow'], []);\n };\n BatchEditRender.prototype.getEditElement = function (elements, args) {\n var gObj = this.parent;\n var form = this.parent\n .createElement('form', { id: gObj.element.id + 'EditForm', className: 'e-gridform' });\n form.appendChild(elements[args.columnObject.uid]);\n if (args.columnObject.editType === 'booleanedit') {\n args.cell.classList.add('e-boolcell');\n }\n if (!args.columnObject.editType) {\n args.cell.classList.add('e-inputbox');\n }\n return form;\n };\n return BatchEditRender;\n}());\nexport { BatchEditRender };\n","import { Dialog } from '@syncfusion/ej2-popups';\nimport { remove, extend, updateBlazorTemplate, initializeCSPTemplate } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { appendChildren, applyBiggerTheme, addBiggerDialog } from '../base/util';\nimport { ResponsiveDialogRenderer } from './responsive-dialog-renderer';\nimport { ResponsiveDialogAction } from '../base/enum';\nimport * as literals from '../base/string-literals';\n/**\n * Edit render module is used to render grid edit row.\n *\n * @hidden\n */\nvar DialogEditRender = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n */\n function DialogEditRender(parent, serviceLocator) {\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.dialogDestroy, this.destroy, this);\n this.parent.on(events.destroy, this.destroy, this);\n }\n DialogEditRender.prototype.setLocaleObj = function () {\n this.l10n = this.serviceLocator.getService('localization');\n };\n DialogEditRender.prototype.addNew = function (elements, args) {\n this.isEdit = false;\n this.createDialog(elements, args);\n };\n DialogEditRender.prototype.update = function (elements, args) {\n this.isEdit = true;\n this.createDialog(elements, args);\n };\n DialogEditRender.prototype.createDialogHeader = function (args) {\n var _this = this;\n var gObj = this.parent;\n var header;\n if (this.parent.enableAdaptiveUI) {\n var responsiveDlgRenderer = new ResponsiveDialogRenderer(this.parent, this.serviceLocator);\n responsiveDlgRenderer.action = this.isEdit ? ResponsiveDialogAction.isEdit : ResponsiveDialogAction.isAdd;\n return responsiveDlgRenderer.renderResponsiveHeader(undefined, args);\n }\n else {\n if (gObj.editSettings.headerTemplate) {\n header = initializeCSPTemplate(function () {\n return _this.getDialogEditTemplateElement('HeaderTemplate', args).outerHTML;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n });\n }\n else if (this.isEdit) {\n header = this.l10n.getConstant('EditFormTitle') + args.primaryKeyValue[0];\n }\n else {\n header = this.l10n.getConstant('AddFormTitle');\n }\n }\n return header;\n };\n DialogEditRender.prototype.createDialog = function (elements, args) {\n var _this = this;\n var gObj = this.parent;\n this.dialog = this.parent.createElement('div', { id: gObj.element.id + '_dialogEdit_wrapper', styles: 'width: auto' });\n if (gObj.enableAdaptiveUI) {\n this.dialog.classList.add('e-responsive-dialog');\n }\n gObj.element.appendChild(this.dialog);\n this.setLocaleObj();\n this.dialog.setAttribute('aria-label', this.l10n.getConstant('DialogEdit'));\n // let position: PositionDataModel = this.parent.element.getBoundingClientRect().height < 400 ?\n // { X: 'center', Y: 'top' } : { X: 'center', Y: 'center' };\n this.dialogObj = new Dialog(extend({\n header: this.createDialogHeader(args), isModal: true, visible: true,\n cssClass: this.parent.cssClass ? 'e-edit-dialog' + ' ' + this.parent.cssClass : 'e-edit-dialog',\n content: this.getEditElement(elements, args),\n showCloseIcon: true,\n allowDragging: true,\n // position: position,\n close: this.dialogClose.bind(this),\n created: this.dialogCreated.bind(this),\n closeOnEscape: true, width: gObj.editSettings.template ? 'auto' : '330px',\n target: args.target ? args.target : document.body, animationSettings: { effect: 'None' },\n footerTemplate: gObj.editSettings.footerTemplate ? initializeCSPTemplate(function () {\n return _this.getDialogEditTemplateElement('FooterTemplate', args).outerHTML;\n }) : null,\n buttons: [{\n click: this.btnClick.bind(this),\n buttonModel: { content: this.l10n.getConstant('SaveButton'),\n cssClass: this.parent.cssClass ? 'e-primary' + ' ' + this.parent.cssClass : 'e-primary',\n isPrimary: true }\n },\n { click: this.btnClick.bind(this),\n buttonModel: {\n cssClass: this.parent.cssClass ? 'e-flat' + ' ' + this.parent.cssClass : 'e-flat',\n content: this.l10n.getConstant('CancelButton')\n } }]\n }, gObj.editSettings.dialog ? (gObj.editSettings.dialog.params || {}) : {}));\n args.dialog = this.dialogObj;\n var isStringTemplate = 'isStringTemplate';\n this.dialogObj[\"\" + isStringTemplate] = true;\n this.renderResponsiveDialog();\n this.dialogObj.appendTo(this.dialog);\n applyBiggerTheme(this.parent.element, this.dialogObj.element.parentElement);\n if (gObj.enableAdaptiveUI) {\n this.dialogObj.show(true);\n }\n };\n DialogEditRender.prototype.dialogCreated = function () {\n addBiggerDialog(this.parent);\n };\n DialogEditRender.prototype.renderResponsiveDialog = function () {\n var _this = this;\n if (this.parent.enableAdaptiveUI) {\n if (this.parent.adaptiveDlgTarget) {\n this.dialogObj.target = this.parent.adaptiveDlgTarget;\n }\n this.dialogObj.buttons = [{}];\n this.dialogObj.showCloseIcon = true;\n this.dialogObj.visible = false;\n this.dialogObj.width = '100%';\n this.dialogObj.open = function () {\n _this.dialogObj.element.style.maxHeight = '100%';\n };\n }\n };\n DialogEditRender.prototype.btnClick = function (e) {\n if (this.l10n.getConstant('CancelButton').toLowerCase() === e.target.innerText.trim().toLowerCase()) {\n this.dialogClose();\n }\n else {\n this.parent.endEdit();\n }\n };\n DialogEditRender.prototype.dialogClose = function () {\n this.parent.closeEdit();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DialogEditRender.prototype.destroy = function (args) {\n var dialogEditTemplates = ['template', 'headerTemplate', 'footerTemplate'];\n for (var i = 0; i < dialogEditTemplates.length; i++) {\n if (this.parent.editSettings[dialogEditTemplates[parseInt(i.toString(), 10)]]) {\n var templateName = dialogEditTemplates[parseInt(i.toString(), 10)].charAt(0).toUpperCase()\n + dialogEditTemplates[parseInt(i.toString(), 10)].slice(1);\n var editTemplateID = this.parent.element.id + 'editSettings' + templateName;\n updateBlazorTemplate(editTemplateID, templateName, this.parent.editSettings);\n }\n }\n this.parent.notify(events.destroyForm, {});\n this.parent.isEdit = false;\n this.parent.notify(events.toolbarRefresh, {});\n if (this.dialog && !this.dialogObj.isDestroyed) {\n this.dialogObj.destroy();\n remove(this.dialog);\n }\n };\n DialogEditRender.prototype.getDialogEditTemplateElement = function (dialogTemp, args) {\n var tempDiv = this.parent.createElement('div', { className: 'e-dialog' + dialogTemp });\n var dummyData = extend({}, args.rowData, { isAdd: !this.isEdit }, true);\n var templateID = this.parent.element.id + 'editSettings' + dialogTemp;\n appendChildren(tempDiv, (dialogTemp === 'HeaderTemplate' ? this.parent.getEditHeaderTemplate() :\n this.parent.getEditFooterTemplate())(dummyData, this.parent, 'editSettings' + dialogTemp, templateID));\n updateBlazorTemplate(templateID, dialogTemp, this.parent.editSettings);\n return tempDiv;\n };\n DialogEditRender.prototype.getEditElement = function (elements, args) {\n var _this = this;\n var gObj = this.parent;\n var div = this.parent.createElement('div', { className: this.isEdit ? literals.editedRow : 'e-insertedrow' });\n var form = args.form =\n this.parent.createElement('form', { id: gObj.element.id + 'EditForm', className: 'e-gridform' });\n if (this.parent.editSettings.template) {\n var editTemplateID = this.parent.element.id + 'editSettingsTemplate';\n var dummyData = extend({}, args.rowData, { isAdd: !this.isEdit }, true);\n var isReactCompiler = this.parent.isReact && typeof (this.parent.editSettings.template) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n this.parent.getEditTemplate()(dummyData, this.parent, 'editSettingsTemplate', editTemplateID, null, null, form);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(form, this.parent.getEditTemplate()(dummyData, this.parent, 'editSettingsTemplate', editTemplateID, null, null, null, gObj.root));\n }\n var setRules = function () {\n var columns = _this.parent.getColumns();\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].validationRules) {\n _this.parent.editModule.formObj.rules[columns[parseInt(i.toString(), 10)].field] =\n columns[parseInt(i.toString(), 10)].validationRules;\n }\n }\n };\n updateBlazorTemplate(editTemplateID, 'Template', this.parent.editSettings, true, setRules);\n div.appendChild(form);\n return div;\n }\n var table = this.parent.createElement('table', { className: literals.table, attrs: { cellspacing: '6px', role: 'grid' } });\n var tbody = this.parent.createElement(literals.tbody, { attrs: { role: 'rowgroup' } });\n var cols = gObj.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (this.parent.editModule.checkColumnIsGrouped(cols[parseInt(i.toString(), 10)]) || cols[parseInt(i.toString(), 10)].commands\n || cols[parseInt(i.toString(), 10)].commandsTemplate || cols[parseInt(i.toString(), 10)].type === 'checkbox') {\n continue;\n }\n var tr = this.parent.createElement('tr', { attrs: { role: 'row' } });\n var dataCell = this.parent.createElement('td', {\n className: literals.rowCell, attrs: {\n style: 'text-align:' + (this.parent.enableRtl ? 'right' : 'left') + ';width:190px'\n }\n });\n elements[cols[parseInt(i.toString(), 10)].uid].classList.remove('e-input');\n dataCell.appendChild(elements[cols[parseInt(i.toString(), 10)].uid]);\n tr.appendChild(dataCell);\n tbody.appendChild(tr);\n }\n table.appendChild(tbody);\n form.appendChild(table);\n div.appendChild(form);\n return div;\n };\n DialogEditRender.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.dialogDestroy, this.destroy);\n this.parent.off(events.destroy, this.destroy);\n };\n return DialogEditRender;\n}());\nexport { DialogEditRender };\n","import { isNullOrUndefined, closest, extend } from '@syncfusion/ej2-base';\nimport { InlineEditRender } from './inline-edit-renderer';\nimport { BatchEditRender } from './batch-edit-renderer';\nimport { DialogEditRender } from './dialog-edit-renderer';\nimport { attributes, classList, select } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { getComplexFieldID, getObject, appendChildren, parentsUntil, extendObjWithFn, padZero } from '../base/util';\nimport * as events from '../base/constant';\nimport * as literals from '../base/string-literals';\n/**\n * Edit render module is used to render grid edit row.\n *\n * @hidden\n */\nvar EditRender = /** @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent -specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n */\n function EditRender(parent, serviceLocator) {\n //Internal variables\n this.editType = {\n 'Inline': InlineEditRender,\n 'Normal': InlineEditRender, 'Batch': BatchEditRender, 'Dialog': DialogEditRender\n };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.renderer = new this.editType[this.parent.editSettings.mode](parent, serviceLocator);\n this.focus = serviceLocator.getService('focus');\n }\n EditRender.prototype.addNew = function (args) {\n this.renderer.addNew(this.getEditElements(args), args);\n this.convertWidget(args);\n };\n EditRender.prototype.update = function (args) {\n this.renderer.update(this.getEditElements(args), args);\n var isCustomFormValidation = args.isCustomFormValidation;\n if (!isCustomFormValidation) {\n this.parent.notify(events.beforeStartEdit, args);\n this.convertWidget(args);\n }\n };\n EditRender.prototype.convertWidget = function (args) {\n var gObj = this.parent;\n var isFocused;\n var cell;\n var value;\n var form = gObj.editSettings.mode === 'Dialog' ?\n select('#' + gObj.element.id + '_dialogEdit_wrapper .e-gridform', document) : gObj.editSettings.showAddNewRow &&\n gObj.element.querySelector('.e-editedrow') ? gObj.element.querySelector('.e-editedrow').getElementsByClassName('e-gridform')[0]\n : gObj.element.getElementsByClassName('e-gridform')[0];\n var cols = gObj.editSettings.mode !== 'Batch' ? gObj.getColumns() : [gObj.getColumnByField(args.columnName)];\n for (var _i = 0, cols_1 = cols; _i < cols_1.length; _i++) {\n var col = cols_1[_i];\n if (this.parent.editSettings.template && !isNullOrUndefined(col.field)) {\n var cellArgs = extend({}, args);\n cellArgs.element = form.querySelector('[name=' + getComplexFieldID(col.field) + ']');\n if (typeof col.edit.write === 'string') {\n getObject(col.edit.write, window)(cellArgs);\n }\n else {\n col.edit.write(cellArgs);\n }\n continue;\n }\n if (this.parent.editModule.checkColumnIsGrouped(col) || col.commands) {\n continue;\n }\n // eslint-disable-next-line\n value = (col.valueAccessor(col.field, args.rowData, col));\n cell = form.querySelector('[e-mappinguid=' + col.uid + ']');\n var temp = col.edit.write;\n if (!isNullOrUndefined(cell)) {\n if (typeof temp === 'string') {\n temp = getObject(temp, window);\n temp({\n rowData: args.rowData, element: cell, column: col, requestType: args.requestType, row: args.row,\n foreignKeyData: col.isForeignColumn() && getObject(col.field, args.foreignKeyData)\n });\n }\n else {\n col.edit.write({\n rowData: args.rowData, element: cell, column: col, requestType: args.requestType, row: args.row,\n foreignKeyData: col.isForeignColumn() && getObject(col.field, args.foreignKeyData)\n });\n }\n if (!isFocused && isNullOrUndefined(cell.getAttribute('disabled')) && !parentsUntil(cell, 'e-checkbox-disabled')) {\n this.focusElement(cell, args.type);\n isFocused = true;\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n EditRender.prototype.focusElement = function (elem, type) {\n var chkBox = this.parent.element.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(chkBox) && chkBox.nextElementSibling) {\n chkBox.nextElementSibling.classList.add('e-focus');\n }\n if (this.parent.editSettings.mode === 'Batch') {\n this.focus.onClick({ target: closest(elem, 'td') }, true);\n }\n else {\n var isFocus = (this.parent.enableVirtualization || this.parent.enableColumnVirtualization) && this.parent.editSettings.mode === 'Normal' ? false : true;\n var focusElement = elem.classList.contains('e-dropdownlist') ? elem.parentElement : elem;\n if ((isFocus || ((this.parent.enableVirtualization || this.parent.enableColumnVirtualization) && this.parent.editSettings.newRowPosition === 'Bottom'\n && parentsUntil(elem, literals.addedRow))) && (!this.parent.editSettings.showAddNewRow ||\n (this.parent.editSettings.showAddNewRow && (!parentsUntil(elem, literals.addedRow)) || this.parent.addNewRowFocus))) {\n focusElement.focus();\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n focusElement.focus({ preventScroll: true });\n }\n }\n if (elem.classList.contains('e-defaultcell')) {\n elem.setSelectionRange(elem.value.length, elem.value.length);\n }\n };\n EditRender.prototype.getEditElements = function (args) {\n var gObj = this.parent;\n var elements = {};\n var cols = gObj.editSettings.mode !== 'Batch' ? gObj.getColumns() : [gObj.getColumnByField(args.columnName)];\n if (args.isCustomFormValidation) {\n cols = this.parent.columnModel;\n }\n if (this.parent.editSettings.template) {\n return {};\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n var col = cols[parseInt(i.toString(), 10)];\n if (col.commands || col.commandsTemplate) {\n var cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n var model = new RowModelGenerator(this.parent);\n var cellRenderer = cellRendererFact.getCellRenderer(CellType.CommandColumn);\n var cells = model.generateRows(args.rowData)[0].cells;\n var cell = cells.filter(function (cell) { return cell.rowID; });\n var td = cellRenderer.render(cell[parseInt(i.toString(), 10)], args.rowData, { 'index': args.row ? args.row.getAttribute(literals.dataRowIndex) : 0 }, this.parent.enableVirtualization);\n var div = td.firstElementChild;\n div.setAttribute('textAlign', td.getAttribute('textAlign'));\n elements[col.uid] = div;\n continue;\n }\n if (col.type === 'dateonly' && args.rowData[col.field] instanceof Date) {\n var cellValue = args.rowData[col.field];\n args.rowData[col.field] = cellValue.getFullYear() + '-' + padZero(cellValue.getMonth() + 1) + '-' + padZero(cellValue.getDate());\n }\n var value = (col.valueAccessor(col.field, args.rowData, col));\n var tArgs = { column: col, value: value, type: args.requestType, data: args.rowData };\n var temp = col.edit.create;\n var input = void 0;\n if (col.editTemplate) {\n input = this.parent.createElement('span', { attrs: { 'e-mappinguid': col.uid } });\n var tempID = this.parent.element.id + col.uid + 'editTemplate';\n var tempData = extendObjWithFn({}, args.rowData, { column: col });\n var isReactCompiler = this.parent.isReact && typeof (col.editTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n col.getEditTemplate()(extend({ 'index': args.rowIndex }, tempData), this.parent, 'editTemplate', tempID, null, null, input);\n this.parent.renderTemplates();\n }\n else {\n var template = col.getEditTemplate()(extend({ 'index': args.rowIndex }, tempData), this.parent, 'editTemplate', tempID, null, null, null, gObj.root);\n appendChildren(input, template);\n }\n }\n else {\n if (typeof temp === 'string') {\n temp = getObject(temp, window);\n input = temp(tArgs);\n }\n else {\n input = col.edit.create(tArgs);\n }\n if (typeof input === 'string') {\n var div = this.parent.createElement('div');\n div.innerHTML = input;\n input = div.firstChild;\n }\n var isInput = input.tagName !== 'input' && input.querySelectorAll('input').length;\n var complexFieldName = getComplexFieldID(col.field);\n attributes(isInput ? input.querySelector('input') : input, {\n name: complexFieldName, 'e-mappinguid': col.uid,\n id: gObj.element.id + complexFieldName\n });\n classList(input, ['e-input', 'e-field'], []);\n if (col.textAlign === 'Right') {\n input.classList.add('e-ralign');\n }\n if ((col.isPrimaryKey || col.isIdentity) && args.requestType === 'beginEdit' ||\n (col.isIdentity && args.requestType === 'add')) { // already disabled in cell plugins\n input.setAttribute('disabled', '');\n }\n }\n elements[col.uid] = input;\n }\n return elements;\n };\n EditRender.prototype.destroy = function () {\n this.renderer.removeEventListener();\n };\n return EditRender;\n}());\nexport { EditRender };\n","import { createEditElement } from '../base/util';\n/**\n * `DropDownEditCell` is used to handle dropdown cell type editing.\n *\n * @hidden\n */\nvar EditCellBase = /** @class */ (function () {\n function EditCellBase(parent) {\n this.parent = parent;\n }\n EditCellBase.prototype.create = function (args) {\n return createEditElement(this.parent, args.column, 'e-field', { type: 'text' });\n };\n EditCellBase.prototype.read = function (element) {\n return element.ej2_instances[0].value;\n };\n EditCellBase.prototype.destroy = function () {\n if (this.obj && !this.obj.isDestroyed) {\n if (this.removeEventHandler) {\n this.removeEventHandler();\n }\n this.obj.destroy();\n }\n };\n return EditCellBase;\n}());\nexport { EditCellBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CheckBox } from '@syncfusion/ej2-buttons';\nimport { extend } from '@syncfusion/ej2-base';\nimport { isEditable, addRemoveActiveClasses, createEditElement, getObject } from '../base/util';\nimport * as literals from '../base/string-literals';\nimport { EditCellBase } from './edit-cell-base';\n/**\n * `BooleanEditCell` is used to handle boolean cell type editing.\n *\n * @hidden\n */\nvar BooleanEditCell = /** @class */ (function (_super) {\n __extends(BooleanEditCell, _super);\n function BooleanEditCell() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.activeClasses = ['e-selectionbackground', 'e-active'];\n return _this;\n }\n BooleanEditCell.prototype.create = function (args) {\n var col = args.column;\n var classNames = 'e-field e-boolcell';\n if (col.type === 'checkbox') {\n classNames = 'e-field e-boolcell e-edit-checkselect';\n }\n this.removeEventHandler = this.removeEventListener;\n return createEditElement(this.parent, args.column, classNames, { type: 'checkbox', value: args.value });\n };\n BooleanEditCell.prototype.read = function (element) {\n return element.checked;\n };\n BooleanEditCell.prototype.write = function (args) {\n var selectChkBox;\n var chkState;\n if (!isNullOrUndefined(args.row)) {\n selectChkBox = args.row.querySelector('.e-edit-checkselect');\n }\n if (getObject(args.column.field, args.rowData)) {\n chkState = JSON.parse(getObject(args.column.field, args.rowData).toString().toLowerCase());\n }\n if (!isNullOrUndefined(selectChkBox) && args.column.type === 'checkbox') {\n this.editType = this.parent.editSettings.mode;\n this.editRow = args.row;\n if (args.requestType !== 'add') {\n var row = this.parent.getRowObjectFromUID(args.row.getAttribute('data-uid'));\n chkState = row ? row.isSelected : false;\n }\n addRemoveActiveClasses.apply(void 0, [[].slice.call(args.row.getElementsByClassName(literals.rowCell)), chkState].concat(this.activeClasses));\n }\n this.obj = new CheckBox(extend({\n label: this.parent.editSettings.mode !== 'Dialog' ? ' ' : args.column.headerText,\n checked: chkState,\n disabled: !isEditable(args.column, args.requestType, args.element), enableRtl: this.parent.enableRtl,\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n }, args.column.edit.params));\n this.addEventListener();\n this.obj.appendTo(args.element);\n };\n BooleanEditCell.prototype.addEventListener = function () {\n this.cbChange = this.checkBoxChange.bind(this);\n this.obj.addEventListener(literals.change, this.cbChange);\n };\n BooleanEditCell.prototype.removeEventListener = function () {\n if (this.obj.isDestroyed) {\n return;\n }\n this.obj.removeEventListener(literals.change, this.cbChange);\n };\n BooleanEditCell.prototype.checkBoxChange = function (args) {\n if (this.editRow && this.editType !== 'Dialog') {\n var add = false;\n if (!args.checked) {\n this.editRow.removeAttribute('aria-selected');\n }\n else {\n add = true;\n this.editRow.setAttribute('aria-selected', add.toString());\n }\n addRemoveActiveClasses.apply(void 0, [[].slice.call(this.editRow.getElementsByClassName(literals.rowCell)), add].concat(this.activeClasses));\n }\n };\n return BooleanEditCell;\n}(EditCellBase));\nexport { BooleanEditCell };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { extend, isNullOrUndefined, select } from '@syncfusion/ej2-base';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport { Query, DataManager, DataUtil, Predicate } from '@syncfusion/ej2-data';\nimport { isEditable, getComplexFieldID, getObject } from '../base/util';\nimport { parentsUntil } from '../base/util';\nimport { EditCellBase } from './edit-cell-base';\nimport * as literals from '../base/string-literals';\nimport * as events from '../base/constant';\n/**\n * `DropDownEditCell` is used to handle dropdown cell type editing.\n *\n * @hidden\n */\nvar DropDownEditCell = /** @class */ (function (_super) {\n __extends(DropDownEditCell, _super);\n function DropDownEditCell(parent) {\n var _this = \n //constructor\n _super.call(this) || this;\n _this.parent = parent;\n _this.flag = false;\n _this.removeEventHandler = _this.removeEventListener;\n return _this;\n }\n DropDownEditCell.prototype.write = function (args) {\n var isInline = this.parent.editSettings.mode !== 'Dialog';\n this.column = args.column;\n var pred = new Predicate(args.column.field, 'notequal', null, true, false);\n var params = {};\n if (args.column.edit.params) {\n var keys = Object.keys(args.column.edit.params);\n for (var i = 0; i < keys.length; i++) {\n params[keys[parseInt(i.toString(), 10)]] = keys[parseInt(i.toString(), 10)] === 'query' ?\n args.column.edit.params[keys[parseInt(i.toString(), 10)]].clone() :\n args.column.edit.params[keys[parseInt(i.toString(), 10)]];\n }\n }\n this.obj = new DropDownList(extend({\n dataSource: this.parent.dataSource instanceof DataManager ?\n this.parent.dataSource : new DataManager(this.parent.dataSource),\n query: new Query().where(pred).select(args.column.field), enabled: isEditable(args.column, args.requestType, args.element),\n fields: { value: args.column.field },\n value: getObject(args.column.field, args.rowData),\n enableRtl: this.parent.enableRtl,\n placeholder: isInline ? '' : args.column.headerText, popupHeight: '200px',\n floatLabelType: isInline ? 'Never' : 'Always',\n sortOrder: 'Ascending',\n cssClass: this.parent.cssClass ? this.parent.cssClass : null,\n close: this.dropDownClose.bind(this)\n }, params));\n if (this.parent.enableVirtualization) {\n if (params.dataSource) {\n this.obj.dataSource = params.dataSource;\n }\n else {\n this.obj.dataSource = args.column.isForeignColumn() ? [args.foreignKeyData[0]] : [args.rowData];\n }\n }\n this.addEventListener();\n this.obj.query.params = this.parent.query.params;\n this.obj.appendTo(args.element);\n /* tslint:disable-next-line:no-any */\n args.element.setAttribute('name', getComplexFieldID(args.column.field));\n };\n DropDownEditCell.prototype.dropDownClose = function (args) {\n if (args.event && args.event.action === 'escape') {\n this.parent.editModule.editCellDialogClose = true;\n }\n };\n DropDownEditCell.prototype.addEventListener = function () {\n this.ddCreated = this.dropdownCreated.bind(this);\n this.ddOpen = this.dropDownOpen.bind(this);\n this.ddBeforeOpen = this.dropdownBeforeOpen.bind(this);\n this.ddComplete = this.ddActionComplete.bind(this);\n this.obj.addEventListener(literals.create, this.ddCreated);\n this.obj.addEventListener(literals['open'], this.ddOpen);\n this.obj.addEventListener(literals.beforeOpen, this.ddBeforeOpen);\n this.obj.addEventListener(events.actionComplete, this.ddComplete);\n };\n DropDownEditCell.prototype.removeEventListener = function () {\n if (this.obj.isDestroyed) {\n return;\n }\n this.obj.removeEventListener(literals.create, this.ddCreated);\n this.obj.removeEventListener(literals['open'], this.ddOpen);\n this.obj.removeEventListener(literals.beforeOpen, this.ddBeforeOpen);\n this.obj.removeEventListener(events.actionComplete, this.ddComplete);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownEditCell.prototype.dropdownCreated = function (e) {\n this.flag = true;\n };\n DropDownEditCell.prototype.dropdownBeforeOpen = function () {\n if (this.parent.enableVirtualization) {\n if (this.column.edit.params && this.column.edit.params.dataSource) {\n this.obj.dataSource = this.column.edit.params.dataSource;\n }\n else {\n this.obj.dataSource = !this.column.isForeignColumn() ? (this.parent.dataSource instanceof DataManager ?\n this.parent.dataSource : new DataManager(this.parent.dataSource))\n : this.column.dataSource instanceof DataManager ?\n this.column.dataSource : new DataManager(this.column.dataSource);\n }\n }\n };\n DropDownEditCell.prototype.ddActionComplete = function (e) {\n e.result = DataUtil.distinct(e.result, this.obj.fields.value, true);\n if (this.flag && this.column.dataSource && !(this.column.edit.params &&\n this.column.edit.params.ddEditedData)) {\n if ('result' in this.column.dataSource) {\n this.column.dataSource.result = e.result;\n }\n else if (this.column.dataSource instanceof DataManager) {\n this.column.dataSource.dataSource.json = e.result;\n }\n }\n this.flag = false;\n };\n DropDownEditCell.prototype.dropDownOpen = function (args) {\n var dlgElement = parentsUntil(this.obj.element, 'e-dialog');\n if (this.parent.editSettings.mode === 'Dialog' && !isNullOrUndefined(dlgElement)) {\n var dlgObj = select('#' + dlgElement.id, document).ej2_instances[0];\n args.popup.element.style.zIndex = (dlgObj.zIndex + 1).toString();\n }\n };\n return DropDownEditCell;\n}(EditCellBase));\nexport { DropDownEditCell };\n","import { extend, Internationalization } from '@syncfusion/ej2-base';\nimport { NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { isEditable, getComplexFieldID, getObject, createEditElement } from '../base/util';\n/**\n * `NumericEditCell` is used to handle numeric cell type editing.\n *\n * @hidden\n */\nvar NumericEditCell = /** @class */ (function () {\n function NumericEditCell(parent) {\n this.parent = parent;\n }\n NumericEditCell.prototype.keyEventHandler = function (args) {\n if (args.keyCode === 13 || args.keyCode === 9) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent('change', false, true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dispatchEvent(evt);\n }\n };\n NumericEditCell.prototype.create = function (args) {\n this.instances = new Internationalization(this.parent.locale);\n return createEditElement(this.parent, args.column, 'e-field', {});\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n NumericEditCell.prototype.read = function (element) {\n return this.obj.value;\n };\n NumericEditCell.prototype.write = function (args) {\n var col = args.column;\n var isInline = this.parent.editSettings.mode !== 'Dialog';\n this.obj = new NumericTextBox(extend({\n value: parseFloat(getObject(args.column.field, args.rowData)),\n enableRtl: this.parent.enableRtl,\n placeholder: isInline ? '' : args.column.headerText,\n enabled: isEditable(args.column, args.requestType, args.element),\n floatLabelType: this.parent.editSettings.mode !== 'Dialog' ? 'Never' : 'Always',\n locale: this.parent.locale,\n cssClass: this.parent.cssClass ? this.parent.cssClass : null\n }, col.edit.params));\n args.element.setAttribute('name', getComplexFieldID(args.column.field));\n this.obj.appendTo(args.element);\n this.obj.element.addEventListener('keydown', this.keyEventHandler);\n };\n NumericEditCell.prototype.destroy = function () {\n if (this.obj && !this.obj.isDestroyed) {\n this.obj.element.removeEventListener('keydown', this.keyEventHandler);\n this.obj.destroy();\n }\n };\n return NumericEditCell;\n}());\nexport { NumericEditCell };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, Event, EventHandler, L10n, setValue, getValue, isNullOrUndefined, Browser } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, detach, Internationalization, getUniqueID, closest } from '@syncfusion/ej2-base';\nimport { addClass, removeClass } from '@syncfusion/ej2-base';\nimport { Input, containerAttributes, TEXTBOX_FOCUS } from '../input/input';\nvar HIDE_CLEAR = 'e-clear-icon-hide';\n/**\n * Represents the TextBox component that allows the user to enter the values based on it's type.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar TextBox = /** @class */ (function (_super) {\n __extends(TextBox, _super);\n /**\n *\n * @param {TextBoxModel} options - Specifies the TextBox model.\n * @param {string | HTMLInputElement | HTMLTextAreaElement} element - Specifies the element to render as component.\n * @private\n */\n function TextBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.previousValue = null;\n _this.isHiddenInput = false;\n _this.isForm = false;\n _this.inputPreviousValue = null;\n _this.textboxOptions = options;\n return _this;\n }\n /**\n * Calls internally if any of the property value is changed.\n *\n * @param {TextBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {TextBoxModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n TextBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'floatLabelType':\n Input.removeFloating(this.textboxWrapper);\n Input.addFloating(this.respectiveElement, this.floatLabelType, this.placeholder);\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.respectiveElement, this.floatLabelType, this.textboxWrapper.container);\n this.bindClearEvent();\n break;\n case 'width':\n Input.setWidth(newProp.width, this.textboxWrapper.container);\n break;\n case 'value':\n {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n if (!Input.isBlank(this.value)) {\n this.value = this.value.toString();\n }\n this.isProtectedOnChange = prevOnChange;\n Input.setValue(this.value, this.respectiveElement, this.floatLabelType, this.showClearButton);\n if (this.isHiddenInput) {\n this.element.value = this.respectiveElement.value;\n }\n this.inputPreviousValue = this.respectiveElement.value;\n /* istanbul ignore next */\n if ((this.isAngular || this.isVue) && this.preventChange === true) {\n this.previousValue = this.isAngular ? this.value : this.previousValue;\n this.preventChange = false;\n }\n else if (isNullOrUndefined(this.isAngular) || !this.isAngular\n || (this.isAngular && !this.preventChange) || (this.isAngular && isNullOrUndefined(this.preventChange))) {\n this.raiseChangeEvent();\n }\n }\n break;\n case 'htmlAttributes':\n {\n this.updateHTMLAttributesToElement();\n this.updateHTMLAttributesToWrapper();\n this.checkAttributes(true);\n if (this.multiline && !isNullOrUndefined(this.textarea)) {\n Input.validateInputType(this.textboxWrapper.container, this.textarea);\n }\n else {\n Input.validateInputType(this.textboxWrapper.container, this.element);\n }\n }\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.respectiveElement);\n break;\n case 'type':\n if (this.respectiveElement.tagName !== 'TEXTAREA') {\n this.respectiveElement.setAttribute('type', this.type);\n Input.validateInputType(this.textboxWrapper.container, this.element);\n this.raiseChangeEvent();\n }\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.respectiveElement, this.textboxWrapper);\n this.bindClearEvent();\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.textboxWrapper.container]);\n break;\n case 'placeholder':\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n Input.calculateWidth(this.respectiveElement, this.textboxWrapper.container);\n break;\n case 'autocomplete':\n if (this.autocomplete !== 'on' && this.autocomplete !== '') {\n this.respectiveElement.autocomplete = this.autocomplete;\n }\n else {\n this.removeAttributes(['autocomplete']);\n }\n break;\n case 'cssClass':\n Input.updateCssClass(newProp.cssClass, oldProp.cssClass, this.textboxWrapper.container);\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n break;\n }\n }\n };\n /**\n * Gets the component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n TextBox.prototype.getModuleName = function () {\n return 'textbox';\n };\n TextBox.prototype.preRender = function () {\n this.cloneElement = this.element.cloneNode(true);\n this.formElement = closest(this.element, 'form');\n if (!isNullOrUndefined(this.formElement)) {\n this.isForm = true;\n }\n /* istanbul ignore next */\n if (this.element.tagName === 'EJS-TEXTBOX') {\n var ejInstance = getValue('ej2_instances', this.element);\n var inputElement = this.multiline ?\n this.createElement('textarea') :\n this.createElement('input');\n var index = 0;\n for (index; index < this.element.attributes.length; index++) {\n var attributeName = this.element.attributes[index].nodeName;\n if (attributeName !== 'id' && attributeName !== 'class') {\n inputElement.setAttribute(attributeName, this.element.attributes[index].nodeValue);\n inputElement.innerHTML = this.element.innerHTML;\n if (attributeName === 'name') {\n this.element.removeAttribute('name');\n }\n }\n else if (attributeName === 'class') {\n inputElement.setAttribute(attributeName, this.element.className.split(' ').filter(function (item) { return item.indexOf('ng-') !== 0; }).join(' '));\n }\n }\n this.element.appendChild(inputElement);\n this.element = inputElement;\n setValue('ej2_instances', ejInstance, this.element);\n }\n this.updateHTMLAttributesToElement();\n this.checkAttributes(false);\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['value'] === undefined)) && this.element.value !== '') {\n this.setProperties({ value: this.element.value }, true);\n }\n if (this.element.tagName !== 'TEXTAREA') {\n this.element.setAttribute('type', this.type);\n }\n if (this.type === 'text' || (this.element.tagName === 'INPUT' && this.multiline && this.isReact)) {\n this.element.setAttribute('role', 'textbox');\n }\n this.globalize = new Internationalization(this.locale);\n var localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('textbox', localeText, this.locale);\n if (this.l10n.getConstant('placeholder') !== '') {\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n }\n if (!this.element.hasAttribute('id')) {\n this.element.setAttribute('id', getUniqueID('textbox'));\n }\n if (!this.element.hasAttribute('name')) {\n this.element.setAttribute('name', this.element.getAttribute('id'));\n }\n if (this.element.tagName === 'INPUT' && this.multiline) {\n this.isHiddenInput = true;\n this.textarea = this.createElement('textarea');\n this.element.parentNode.insertBefore(this.textarea, this.element);\n this.element.setAttribute('type', 'hidden');\n this.textarea.setAttribute('name', this.element.getAttribute('name'));\n this.element.removeAttribute('name');\n this.textarea.setAttribute('role', this.element.getAttribute('role'));\n this.element.removeAttribute('role');\n this.textarea.setAttribute('id', getUniqueID('textarea'));\n var apiAttributes = ['placeholder', 'disabled', 'value', 'readonly', 'type', 'autocomplete'];\n for (var index = 0; index < this.element.attributes.length; index++) {\n var attributeName = this.element.attributes[index].nodeName;\n if (this.element.hasAttribute(attributeName) && containerAttributes.indexOf(attributeName) < 0 &&\n !(attributeName === 'id' || attributeName === 'type' || attributeName === 'e-mappinguid')) {\n // e-mappinguid attribute is handled for Grid component.\n this.textarea.setAttribute(attributeName, this.element.attributes[index].nodeValue);\n if (apiAttributes.indexOf(attributeName) < 0) {\n this.element.removeAttribute(attributeName);\n index--;\n }\n }\n }\n }\n };\n TextBox.prototype.checkAttributes = function (isDynamic) {\n var attrs = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['placeholder', 'disabled', 'value', 'readonly', 'type', 'autocomplete'];\n for (var _i = 0, attrs_1 = attrs; _i < attrs_1.length; _i++) {\n var key = attrs_1[_i];\n if (!isNullOrUndefined(this.element.getAttribute(key))) {\n switch (key) {\n case 'disabled':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.element.getAttribute(key) === 'disabled' || this.element.getAttribute(key) === '' ||\n this.element.getAttribute(key) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.element.getAttribute(key) === 'readonly' || this.element.getAttribute(key) === ''\n || this.element.getAttribute(key) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.element.placeholder }, !isDynamic);\n }\n break;\n case 'autocomplete':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['autocomplete'] === undefined)) || isDynamic) {\n var autoCompleteTxt = this.element.autocomplete === 'off' ? 'off' : 'on';\n this.setProperties({ autocomplete: autoCompleteTxt }, !isDynamic);\n }\n break;\n case 'value':\n if (((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['value'] === undefined)) || isDynamic) && this.element.value !== '') {\n this.setProperties({ value: this.element.value }, !isDynamic);\n }\n break;\n case 'type':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['type'] === undefined)) || isDynamic) {\n this.setProperties({ type: this.element.type }, !isDynamic);\n }\n break;\n }\n }\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n TextBox.prototype.render = function () {\n var updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = Input.getInputValidClassList(this.cssClass);\n }\n this.respectiveElement = (this.isHiddenInput) ? this.textarea : this.element;\n this.textboxWrapper = Input.createInput({\n element: this.respectiveElement,\n floatLabelType: this.floatLabelType,\n properties: {\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n cssClass: updatedCssClassValue,\n readonly: this.readonly,\n placeholder: this.placeholder,\n showClearButton: this.showClearButton\n }\n });\n this.updateHTMLAttributesToWrapper();\n if (this.isHiddenInput) {\n this.respectiveElement.parentNode.insertBefore(this.element, this.respectiveElement);\n }\n this.wireEvents();\n if (!isNullOrUndefined(this.value)) {\n Input.setValue(this.value, this.respectiveElement, this.floatLabelType, this.showClearButton);\n if (this.isHiddenInput) {\n this.element.value = this.respectiveElement.value;\n }\n }\n if (!isNullOrUndefined(this.value)) {\n this.initialValue = this.value;\n this.setInitialValue();\n }\n if (this.autocomplete !== 'on' && this.autocomplete !== '') {\n this.respectiveElement.autocomplete = this.autocomplete;\n }\n else if (!isNullOrUndefined(this.textboxOptions) && (this.textboxOptions['autocomplete'] !== undefined)) {\n this.removeAttributes(['autocomplete']);\n }\n this.previousValue = this.value;\n this.inputPreviousValue = this.value;\n this.respectiveElement.defaultValue = this.respectiveElement.value;\n Input.setWidth(this.width, this.textboxWrapper.container);\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n if (!this.element.hasAttribute('aria-labelledby') && !this.element.hasAttribute('placeholder') && !this.element.hasAttribute('aria-label')) {\n this.element.setAttribute('aria-label', 'textbox');\n }\n this.renderComplete();\n };\n TextBox.prototype.updateHTMLAttributesToWrapper = function () {\n Input.updateHTMLAttributesToWrapper(this.htmlAttributes, this.textboxWrapper.container);\n };\n TextBox.prototype.updateHTMLAttributesToElement = function () {\n Input.updateHTMLAttributesToElement(this.htmlAttributes, this.respectiveElement ? this.respectiveElement :\n (this.multiline && !isNullOrUndefined(this.textarea) ? this.textarea : this.element));\n };\n TextBox.prototype.setInitialValue = function () {\n if (!this.isAngular) {\n this.respectiveElement.setAttribute('value', this.initialValue);\n }\n };\n TextBox.prototype.wireEvents = function () {\n EventHandler.add(this.respectiveElement, 'focus', this.focusHandler, this);\n EventHandler.add(this.respectiveElement, 'blur', this.focusOutHandler, this);\n EventHandler.add(this.respectiveElement, 'keydown', this.keydownHandler, this);\n EventHandler.add(this.respectiveElement, 'input', this.inputHandler, this);\n EventHandler.add(this.respectiveElement, 'change', this.changeHandler, this);\n if (this.isForm) {\n EventHandler.add(this.formElement, 'reset', this.resetForm, this);\n }\n this.bindClearEvent();\n if (!isNullOrUndefined(this.textboxWrapper.container.querySelector('.e-float-text')) && this.floatLabelType === 'Auto'\n && this.textboxWrapper.container.classList.contains('e-autofill') &&\n this.textboxWrapper.container.classList.contains('e-outline')) {\n EventHandler.add((this.textboxWrapper.container.querySelector('.e-float-text')), 'animationstart', this.animationHandler, this);\n }\n };\n TextBox.prototype.animationHandler = function () {\n this.textboxWrapper.container.classList.add('e-valid-input');\n var label = this.textboxWrapper.container.querySelector('.e-float-text');\n if (!isNullOrUndefined(label)) {\n label.classList.add('e-label-top');\n if (label.classList.contains('e-label-bottom')) {\n label.classList.remove('e-label-bottom');\n }\n }\n };\n TextBox.prototype.resetValue = function (value) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.value = value;\n if (value == null && this.textboxWrapper.container.classList.contains('e-valid-input')) {\n this.textboxWrapper.container.classList.remove('e-valid-input');\n }\n this.isProtectedOnChange = prevOnChange;\n };\n TextBox.prototype.resetForm = function () {\n if (this.isAngular) {\n this.resetValue('');\n }\n else {\n this.resetValue(this.initialValue);\n }\n if (!isNullOrUndefined(this.textboxWrapper)) {\n var label = this.textboxWrapper.container.querySelector('.e-float-text');\n if (!isNullOrUndefined(label) && this.floatLabelType !== 'Always') {\n if ((isNullOrUndefined(this.initialValue) || this.initialValue === '')) {\n label.classList.add('e-label-bottom');\n label.classList.remove('e-label-top');\n }\n else if (this.initialValue !== '') {\n label.classList.add('e-label-top');\n label.classList.remove('e-label-bottom');\n }\n }\n }\n };\n TextBox.prototype.focusHandler = function (args) {\n var eventArgs = {\n container: this.textboxWrapper.container,\n event: args,\n value: this.value\n };\n this.trigger('focus', eventArgs);\n };\n TextBox.prototype.focusOutHandler = function (args) {\n if (!(this.previousValue === null && this.value === null && this.respectiveElement.value === '') &&\n (this.previousValue !== this.value)) {\n this.raiseChangeEvent(args, true);\n }\n var eventArgs = {\n container: this.textboxWrapper.container,\n event: args,\n value: this.value\n };\n this.trigger('blur', eventArgs);\n };\n TextBox.prototype.keydownHandler = function (args) {\n if ((args.keyCode === 13 || args.keyCode === 9) && !((this.previousValue === null || this.previousValue === '') && (this.value === null || this.value === '') && this.respectiveElement.value === '')) {\n this.setProperties({ value: this.respectiveElement.value }, true);\n }\n };\n TextBox.prototype.inputHandler = function (args) {\n var textboxObj = null || this;\n var eventArgs = {\n event: args,\n value: this.respectiveElement.value,\n previousValue: this.inputPreviousValue,\n container: this.textboxWrapper.container\n };\n this.inputPreviousValue = this.respectiveElement.value;\n /* istanbul ignore next */\n if (this.isAngular) {\n textboxObj.localChange({ value: this.respectiveElement.value });\n this.preventChange = true;\n }\n if (this.isVue) {\n this.preventChange = true;\n }\n this.trigger('input', eventArgs);\n args.stopPropagation();\n };\n TextBox.prototype.changeHandler = function (args) {\n this.setProperties({ value: this.respectiveElement.value }, true);\n if (this.previousValue !== this.value) {\n this.raiseChangeEvent(args, true);\n }\n args.stopPropagation();\n };\n TextBox.prototype.raiseChangeEvent = function (event, interaction) {\n var eventArgs = {\n event: event,\n value: this.value,\n previousValue: this.previousValue,\n container: this.textboxWrapper.container,\n isInteraction: interaction ? interaction : false,\n isInteracted: interaction ? interaction : false\n };\n this.preventChange = false;\n this.trigger('change', eventArgs);\n this.previousValue = this.value;\n //EJ2CORE-738:For this task we update the textarea value to the input when input tag with multiline is present\n if (this.element.tagName === 'INPUT' && this.multiline && Browser.info.name === 'mozilla') {\n this.element.value = this.respectiveElement.value;\n }\n };\n TextBox.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\n if (this.enabled) {\n EventHandler.add(this.textboxWrapper.clearButton, 'mousedown touchstart', this.resetInputHandler, this);\n }\n else {\n EventHandler.remove(this.textboxWrapper.clearButton, 'mousedown touchstart', this.resetInputHandler);\n }\n }\n };\n TextBox.prototype.resetInputHandler = function (event) {\n event.preventDefault();\n if (!(this.textboxWrapper.clearButton.classList.contains(HIDE_CLEAR)) || this.textboxWrapper.container.classList.contains('e-static-clear')) {\n Input.setValue('', this.respectiveElement, this.floatLabelType, this.showClearButton);\n if (this.isHiddenInput) {\n this.element.value = this.respectiveElement.value;\n }\n this.setProperties({ value: this.respectiveElement.value }, true);\n var eventArgs = {\n event: event,\n value: this.respectiveElement.value,\n previousValue: this.inputPreviousValue,\n container: this.textboxWrapper.container\n };\n this.trigger('input', eventArgs);\n this.inputPreviousValue = this.respectiveElement.value;\n this.raiseChangeEvent(event, true);\n if (closest(this.element, 'form')) {\n var element = this.element;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n }\n };\n TextBox.prototype.unWireEvents = function () {\n EventHandler.remove(this.respectiveElement, 'focus', this.focusHandler);\n EventHandler.remove(this.respectiveElement, 'blur', this.focusOutHandler);\n EventHandler.remove(this.respectiveElement, 'keydown', this.keydownHandler);\n EventHandler.remove(this.respectiveElement, 'input', this.inputHandler);\n EventHandler.remove(this.respectiveElement, 'change', this.changeHandler);\n if (this.isForm) {\n EventHandler.remove(this.formElement, 'reset', this.resetForm);\n }\n if (!isNullOrUndefined(this.textboxWrapper.container.querySelector('.e-float-text')) && this.floatLabelType === 'Auto'\n && this.textboxWrapper.container.classList.contains('e-outline') &&\n this.textboxWrapper.container.classList.contains('e-autofill')) {\n EventHandler.remove((this.textboxWrapper.container.querySelector('.e-float-text')), 'animationstart', this.animationHandler);\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also, it maintains the initial TextBox element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n TextBox.prototype.destroy = function () {\n this.unWireEvents();\n if (this.showClearButton) {\n this.clearButton = document.getElementsByClassName('e-clear-icon')[0];\n }\n if (this.element.tagName === 'INPUT' && this.multiline) {\n detach(this.textboxWrapper.container.getElementsByTagName('textarea')[0]);\n this.respectiveElement = this.element;\n this.element.removeAttribute('type');\n }\n this.respectiveElement.value = this.respectiveElement.defaultValue;\n this.respectiveElement.classList.remove('e-input');\n this.removeAttributes(['aria-disabled', 'aria-readonly', 'aria-labelledby']);\n if (!isNullOrUndefined(this.textboxWrapper)) {\n this.textboxWrapper.container.insertAdjacentElement('afterend', this.respectiveElement);\n detach(this.textboxWrapper.container);\n }\n this.textboxWrapper = null;\n Input.destroy({\n element: this.respectiveElement,\n floatLabelType: this.floatLabelType,\n properties: this.properties\n }, this.clearButton);\n _super.prototype.destroy.call(this);\n };\n /**\n * Adding the icons to the TextBox component.\n *\n * @param { string } position - Specify the icon placement on the TextBox. Possible values are append and prepend.\n * @param { string | string[] } icons - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for TextBox.\n * @returns {void}\n */\n TextBox.prototype.addIcon = function (position, icons) {\n Input.addIcon(position, icons, this.textboxWrapper.container, this.respectiveElement, this.createElement);\n };\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n * @returns {string} Returns the persisted data.\n */\n TextBox.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Adding the multiple attributes as key-value pair to the TextBox element.\n *\n * @param {string} attributes - Specifies the attributes to be add to TextBox element.\n * @returns {void}\n */\n TextBox.prototype.addAttributes = function (attributes) {\n for (var _i = 0, _a = Object.keys(attributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (key === 'disabled') {\n this.setProperties({ enabled: false }, true);\n Input.setEnabled(this.enabled, this.respectiveElement, this.floatLabelType, this.textboxWrapper.container);\n }\n else if (key === 'readonly') {\n this.setProperties({ readonly: true }, true);\n Input.setReadonly(this.readonly, this.respectiveElement);\n }\n else if (key === 'class') {\n this.respectiveElement.classList.add(attributes[\"\" + key]);\n }\n else if (key === 'placeholder') {\n this.setProperties({ placeholder: attributes[\"\" + key] }, true);\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n }\n else if (key === 'rows' && this.respectiveElement.tagName === 'TEXTAREA') {\n this.respectiveElement.setAttribute(key, attributes[\"\" + key]);\n }\n else {\n this.respectiveElement.setAttribute(key, attributes[\"\" + key]);\n }\n }\n };\n /**\n * Removing the multiple attributes as key-value pair to the TextBox element.\n *\n * @param { string[] } attributes - Specifies the attributes name to be removed from TextBox element.\n * @returns {void}\n */\n TextBox.prototype.removeAttributes = function (attributes) {\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var key = attributes_1[_i];\n if (key === 'disabled') {\n this.setProperties({ enabled: true }, true);\n Input.setEnabled(this.enabled, this.respectiveElement, this.floatLabelType, this.textboxWrapper.container);\n }\n else if (key === 'readonly') {\n this.setProperties({ readonly: false }, true);\n Input.setReadonly(this.readonly, this.respectiveElement);\n }\n else if (key === 'placeholder') {\n this.setProperties({ placeholder: null }, true);\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n }\n else {\n this.respectiveElement.removeAttribute(key);\n }\n }\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n TextBox.prototype.focusIn = function () {\n if (document.activeElement !== this.respectiveElement && this.enabled) {\n this.respectiveElement.focus();\n if (this.textboxWrapper.container.classList.contains('e-input-group')\n || this.textboxWrapper.container.classList.contains('e-outline')\n || this.textboxWrapper.container.classList.contains('e-filled')) {\n addClass([this.textboxWrapper.container], [TEXTBOX_FOCUS]);\n }\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n TextBox.prototype.focusOut = function () {\n if (document.activeElement === this.respectiveElement && this.enabled) {\n this.respectiveElement.blur();\n if (this.textboxWrapper.container.classList.contains('e-input-group')\n || this.textboxWrapper.container.classList.contains('e-outline')\n || this.textboxWrapper.container.classList.contains('e-filled')) {\n removeClass([this.textboxWrapper.container], [TEXTBOX_FOCUS]);\n }\n }\n };\n __decorate([\n Property('text')\n ], TextBox.prototype, \"type\", void 0);\n __decorate([\n Property(false)\n ], TextBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], TextBox.prototype, \"value\", void 0);\n __decorate([\n Property('Never')\n ], TextBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property('')\n ], TextBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], TextBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property('on')\n ], TextBox.prototype, \"autocomplete\", void 0);\n __decorate([\n Property({})\n ], TextBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(false)\n ], TextBox.prototype, \"multiline\", void 0);\n __decorate([\n Property(true)\n ], TextBox.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], TextBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], TextBox.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], TextBox.prototype, \"width\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], TextBox.prototype, \"input\", void 0);\n TextBox = __decorate([\n NotifyPropertyChanges\n ], TextBox);\n return TextBox;\n}(Component));\nexport { TextBox };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { isEditable, createEditElement } from '../base/util';\nimport { TextBox } from '@syncfusion/ej2-inputs';\nimport { EditCellBase } from './edit-cell-base';\n/**\n * `DefaultEditCell` is used to handle default cell type editing.\n *\n * @hidden\n */\nvar DefaultEditCell = /** @class */ (function (_super) {\n __extends(DefaultEditCell, _super);\n function DefaultEditCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DefaultEditCell.prototype.create = function (args) {\n var attr = {\n type: 'text', value: !isNullOrUndefined(args.value) ? args.value : '', style: 'text-align:' + args.column.textAlign\n };\n return createEditElement(this.parent, args.column, 'e-field e-input e-defaultcell', attr);\n };\n DefaultEditCell.prototype.read = function (element) {\n if (element.type === 'hidden' && !isNullOrUndefined(element.ej2_instances[0]) &&\n !isNullOrUndefined(element.ej2_instances[0].textarea)) {\n return element.ej2_instances[0].value;\n }\n else {\n return element.value;\n }\n };\n DefaultEditCell.prototype.write = function (args) {\n var col = args.column;\n var isInline = this.parent.editSettings.mode !== 'Dialog';\n var props = {\n element: args.element, floatLabelType: this.parent.editSettings.mode !== 'Dialog' ? 'Never' : 'Always',\n enableRtl: this.parent.enableRtl, enabled: isEditable(args.column, args.requestType, args.element),\n placeholder: isInline ? '' : args.column.headerText,\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!isNullOrUndefined(col.edit) && !isNullOrUndefined(col.edit.params) && col.edit.params.multiline) {\n var cellValue = (col.valueAccessor(col.field, args.rowData, col));\n props['value'] = cellValue;\n }\n this.obj = new TextBox(extend(props, col.edit.params));\n this.obj.appendTo(args.element);\n if (this.parent.editSettings.mode === 'Batch') {\n this.obj.element.addEventListener('keydown', this.keyEventHandler);\n }\n };\n DefaultEditCell.prototype.keyEventHandler = function (args) {\n if (args.key === 'Enter' || args.key === 'Tab') {\n var evt = new Event('change', { bubbles: false, cancelable: true });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dispatchEvent(evt);\n }\n };\n DefaultEditCell.prototype.destroy = function () {\n if (this.obj && !this.obj.isDestroyed) {\n this.obj.element.removeEventListener('keydown', this.keyEventHandler);\n this.obj.destroy();\n }\n };\n return DefaultEditCell;\n}(EditCellBase));\nexport { DefaultEditCell };\n","import { extend, select } from '@syncfusion/ej2-base';\nimport { remove, isNullOrUndefined, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { parentsUntil, isGroupAdaptive, refreshForeignData, getObject } from '../base/util';\nimport * as events from '../base/constant';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { DataUtil } from '@syncfusion/ej2-data';\nimport { addRemoveEventListener, addFixedColumnBorder } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * `NormalEdit` module is used to handle normal('inline, dialog, external') editing actions.\n *\n * @hidden\n */\nvar NormalEdit = /** @class */ (function () {\n function NormalEdit(parent, serviceLocator, renderer) {\n this.args = {};\n this.currentVirtualData = {};\n this.parent = parent;\n this.renderer = renderer;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n NormalEdit.prototype.clickHandler = function (e) {\n var target = e.target;\n var gObj = this.parent;\n if (gObj.editSettings.showAddNewRow && isNullOrUndefined(gObj.element.querySelector('.' + literals.editedRow))) {\n return;\n }\n if ((((parentsUntil(target, literals.gridContent) &&\n parentsUntil(parentsUntil(target, literals.gridContent), 'e-grid').id === gObj.element.id)) || (gObj.frozenRows\n && parentsUntil(target, literals.headerContent) && !parentsUntil(target, 'e-columnheader')))\n && !parentsUntil(target, 'e-unboundcelldiv')) {\n this.rowIndex = parentsUntil(target, literals.rowCell)\n ? parseInt(target.parentElement.getAttribute(literals.dataRowIndex), 10) : -1;\n if (gObj.isEdit) {\n gObj.editModule.endEdit();\n }\n }\n };\n NormalEdit.prototype.dblClickHandler = function (e) {\n if (parentsUntil(e.target, literals.rowCell) && this.parent.editSettings.allowEditOnDblClick &&\n (!this.parent.editSettings.showAddNewRow || (this.parent.editSettings.showAddNewRow &&\n !parentsUntil(e.target, 'e-addedrow')))) {\n this.parent.editModule.startEdit(parentsUntil(e.target, literals.row));\n }\n };\n /**\n * The function used to trigger editComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n NormalEdit.prototype.editComplete = function (e) {\n this.parent.isEdit = this.parent.editSettings.showAddNewRow ? true : false;\n var action = 'action';\n switch (e.requestType) {\n case 'save':\n if (!(this.parent.isCheckBoxSelection || this.parent.selectionSettings.type === 'Multiple')\n || (!this.parent.isPersistSelection)) {\n if (e[\"\" + action] !== 'edit' && (!this.parent.editSettings.showAddNewRow ||\n (this.parent.editSettings.showAddNewRow && e[\"\" + action] !== 'add'))) {\n this.parent.selectRow(e['index']);\n }\n }\n this.parent.trigger(events.actionComplete, extend(e, {\n requestType: 'save',\n type: events.actionComplete\n }));\n break;\n case 'delete':\n this.parent.trigger(events.actionComplete, extend(e, {\n requestType: 'delete',\n type: events.actionComplete\n }));\n if (!this.parent.isCheckBoxSelection) {\n this.parent.selectRow(this.editRowIndex);\n }\n break;\n }\n };\n NormalEdit.prototype.getEditArgs = function (editedData, rowObj, isScroll) {\n var primaryKeys = this.parent.getPrimaryKeyFieldNames();\n var primaryKeyValues = [];\n for (var i = 0; i < primaryKeys.length; i++) {\n primaryKeyValues.push(getObject(primaryKeys[parseInt(i.toString(), 10)], editedData));\n }\n var args = {\n primaryKey: primaryKeys, primaryKeyValue: primaryKeyValues, requestType: 'beginEdit',\n rowData: editedData, rowIndex: this.rowIndex, type: 'edit', cancel: false,\n foreignKeyData: rowObj && rowObj.foreignKeyData, target: undefined, isScroll: isScroll\n };\n return args;\n };\n NormalEdit.prototype.startEdit = function (tr) {\n var _this = this;\n var gObj = this.parent;\n this.rowIndex = this.editRowIndex = parseInt(tr.getAttribute(literals.dataRowIndex), 10);\n if (gObj.enableVirtualization || gObj.enableColumnVirtualization || gObj.enableInfiniteScrolling) {\n var selector = '.e-row[data-rowindex=\"' + this.rowIndex + '\"]';\n var virtualRow = this.parent.element.querySelector(selector);\n if (!virtualRow) {\n return;\n }\n }\n var e = { data: undefined, index: this.rowIndex, isScroll: false };\n this.parent.notify(events.virtualScrollEditActionBegin, e);\n if (isGroupAdaptive(gObj)) {\n var rObj = gObj.getRowObjectFromUID(tr.getAttribute('data-uid'));\n this.previousData = rObj.data;\n }\n else if (this.parent.enableVirtualization || this.parent.enableColumnVirtualization ||\n (this.parent.enableInfiniteScrolling && !this.previousData)) {\n this.previousData = e.data;\n }\n else if (!this.parent.enableVirtualization) {\n this.previousData = extend({}, {}, this.parent.getForeignKeyColumns().length ?\n this.parent.getRowObjectFromUID(tr.getAttribute('data-uid')).data :\n gObj.getCurrentViewRecords()[this.rowIndex], true);\n }\n var editedData = extend({}, {}, e.data || this.previousData, true);\n this.uid = tr.getAttribute('data-uid');\n var rowObj = gObj.getRowObjectFromUID(this.uid);\n var args = this.getEditArgs(editedData, rowObj, e.isScroll);\n args.row = tr;\n if (!args.isScroll) {\n this.parent.notify(events.createVirtualValidationForm, { uid: this.uid, prevData: this.previousData, argsCreator: this.getEditArgs.bind(this), renderer: this.renderer });\n gObj.trigger(events.beginEdit, args, function (begineditargs) {\n begineditargs.type = 'actionBegin';\n gObj.trigger(events.actionBegin, begineditargs, function (editargs) {\n if (!editargs.cancel) {\n _this.inlineEditHandler(editargs, tr);\n }\n });\n });\n }\n else {\n this.inlineEditHandler(args, tr);\n }\n };\n NormalEdit.prototype.disabledShowAddRow = function (disable, prevent) {\n var addRow = this.parent.element.querySelector('.e-addedrow');\n var inputs = [].slice.call(addRow ? addRow.querySelectorAll('.e-input') : []);\n if (addRow && addRow.querySelector('.e-unboundcell')) {\n var buttons = [].slice.call(addRow.querySelector('.e-unboundcell').querySelectorAll('.e-btn'));\n for (var i = 0; i < buttons.length; i++) {\n if (!disable) {\n buttons[parseInt(i.toString(), 10)].classList.add('e-disabled');\n buttons[parseInt(i.toString(), 10)].setAttribute('disabled', 'disabled');\n }\n else {\n buttons[parseInt(i.toString(), 10)].classList.remove('e-disabled');\n buttons[parseInt(i.toString(), 10)].removeAttribute('disabled');\n }\n }\n }\n if (inputs.length) {\n for (var i = 0; i < inputs.length; i++) {\n var input = inputs[parseInt(i.toString(), 10)];\n var uid = input.getAttribute('e-mappinguid');\n var column = this.parent.getColumnByUid(uid);\n var error = parentsUntil(input, 'e-rowcell').querySelector('.e-error');\n if (error) {\n error.classList.remove('e-error');\n }\n if (input.ej2_instances) {\n if (prevent && isNullOrUndefined(column.defaultValue)) {\n input.ej2_instances[0].value = null;\n input.value = null;\n }\n if (!isNullOrUndefined(disable)) {\n input.ej2_instances[0].enabled = disable && column.allowEditing ? true : false;\n }\n }\n else {\n if (prevent && input.value && input.value.length &&\n isNullOrUndefined(column.defaultValue)) {\n input.value = null;\n }\n if (!isNullOrUndefined(disable)) {\n if (!disable) {\n input.classList.add('e-disabled');\n input.setAttribute('disabled', 'disabled');\n }\n else if (column.allowEditing) {\n input.classList.remove('e-disabled');\n input.removeAttribute('disabled');\n }\n }\n }\n }\n }\n };\n NormalEdit.prototype.inlineEditHandler = function (editargs, tr) {\n var gObj = this.parent;\n gObj.isEdit = true;\n editargs.row = editargs.row ? editargs.row : tr;\n if (gObj.editSettings.mode !== 'Dialog') {\n gObj.clearSelection();\n }\n if (gObj.editSettings.mode === 'Dialog' && gObj.selectionModule) {\n gObj.selectionModule.preventFocus = true;\n editargs.row.classList.add('e-dlgeditrow');\n }\n this.renderer.update(editargs);\n this.uid = tr.getAttribute('data-uid');\n gObj.editModule.applyFormValidation();\n if (gObj.editSettings.showAddNewRow && !tr.classList.contains('e-addedrow')) {\n this.disabledShowAddRow(false, true);\n }\n editargs.type = 'actionComplete';\n gObj.trigger(events.actionComplete, editargs);\n if (gObj.editSettings.template) {\n gObj.editModule.applyFormValidation(undefined, editargs.form.ej2_instances[0].rules);\n }\n this.args = editargs;\n if (this.parent.allowTextWrap) {\n this.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n };\n NormalEdit.prototype.updateRow = function (index, data) {\n var _this = this;\n var gObj = this.parent;\n this.editRowIndex = index;\n var args = {\n requestType: 'save', action: 'edit', type: events.actionBegin, data: data, cancel: false,\n previousData: gObj.getCurrentViewRecords()[parseInt(index.toString(), 10)],\n row: gObj.getRowByIndex(index)\n };\n gObj.showSpinner();\n if (gObj.enableInfiniteScrolling) {\n this.uid = args.row.getAttribute('data-uid');\n var index_1 = parseInt(args.row.getAttribute('data-rowindex'), 10);\n this.parent.notify(events.refreshInfiniteEditrowindex, { index: index_1 });\n }\n gObj.notify(events.updateData, args);\n if (args.promise) {\n args.promise.then(function () { return gObj.refresh(); }).catch(function (e) { return _this.edFail(e); });\n }\n else {\n if (!gObj.enableInfiniteScrolling) {\n gObj.refresh();\n }\n }\n };\n NormalEdit.prototype.editFormValidate = function () {\n var gObj = this.parent;\n var isValid = gObj.editModule.editFormValidate();\n var validationArgs = {\n prevData: this.previousData, isValid: true, editIdx: this.editRowIndex, addIdx: this.addedRowIndex\n };\n gObj.notify(events.validateVirtualForm, validationArgs);\n return (isValid && validationArgs.isValid);\n };\n NormalEdit.prototype.endEdit = function () {\n var _this = this;\n var gObj = this.parent;\n if (!this.parent.isEdit || !this.editFormValidate()) {\n return;\n }\n var editedData = extend({}, {}, this.previousData, true);\n var args = extend(this.args, {\n requestType: 'save', type: events.actionBegin, data: editedData, cancel: false,\n previousData: this.previousData, selectedRow: gObj.selectedRowIndex, foreignKeyData: {}\n });\n var isDlg = gObj.editSettings.mode === 'Dialog';\n var dlgWrapper = select('#' + gObj.element.id + '_dialogEdit_wrapper', document);\n var dlgForm = isDlg ? dlgWrapper.querySelector('.e-gridform') : gObj.editSettings.showAddNewRow &&\n gObj.element.querySelector('.' + literals.editedRow) ? gObj.element.querySelector('.' + literals.editedRow).getElementsByClassName('e-gridform')[0] : gObj.element.getElementsByClassName('e-gridform')[0];\n var data = {\n virtualData: extend({}, {}, this.previousData, true), isAdd: false, isScroll: false, endEdit: true\n };\n this.parent.notify(events.getVirtualData, data);\n if ((this.parent.enableVirtualization || this.parent.enableColumnVirtualization || this.parent.enableInfiniteScrolling)\n && this.parent.editSettings.mode === 'Normal' && Object.keys(data.virtualData).length) {\n if (this.parent.isEdit) {\n this.currentVirtualData = editedData = args.data = data.virtualData;\n }\n }\n else {\n editedData = gObj.editModule.getCurrentEditedData(dlgForm, editedData);\n }\n var eleLength = [].slice.call(gObj.element.getElementsByClassName(literals.editedRow)).length;\n if (!data.isAdd && Object.keys(this.currentVirtualData).length && !eleLength) {\n eleLength = 1;\n }\n if (isDlg ? dlgWrapper.getElementsByClassName(literals.editedRow).length : eleLength) {\n args.action = 'edit';\n gObj.trigger(events.actionBegin, args, function (endEditArgs) {\n if (endEditArgs.cancel) {\n return;\n }\n if (_this.parent.loadingIndicator.indicatorType === 'Spinner') {\n gObj.showSpinner();\n }\n if (_this.parent.loadingIndicator.indicatorType === 'Shimmer') {\n _this.parent.showMaskRow();\n }\n if (gObj.editSettings.showAddNewRow) {\n _this.disabledShowAddRow(true);\n }\n gObj.notify(events.updateData, endEditArgs);\n });\n }\n else {\n args.action = 'add';\n args.selectedRow = 0;\n args.index = this.addedRowIndex;\n gObj.notify(events.virtualScrollEditSuccess, {});\n gObj.notify(events.modelChanged, args);\n this.addedRowIndex = null;\n if (args.cancel) {\n return;\n }\n if (this.parent.editSettings.showAddNewRow) {\n this.parent.notify(events.showAddNewRowFocus, {});\n if (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) {\n this.disabledShowAddRow(true, true);\n }\n }\n }\n };\n NormalEdit.prototype.destroyElements = function () {\n var gObj = this.parent;\n if (!gObj.editSettings.showAddNewRow || (gObj.editSettings.showAddNewRow && gObj.element.querySelector('.e-editedrow'))) {\n gObj.editModule.destroyWidgets();\n gObj.editModule.destroyForm();\n }\n this.parent.notify(events.dialogDestroy, {});\n };\n NormalEdit.prototype.editHandler = function (args) {\n var _this = this;\n if (args.promise) {\n args.promise.then(function (e) { return _this.edSucc(e, args); }).catch(function (e) { return _this.edFail(e); });\n }\n else {\n this.editSuccess(args.data, args);\n }\n if (this.parent.editSettings.showAddNewRow) {\n this.parent.editModule.applyFormValidation();\n }\n };\n NormalEdit.prototype.edSucc = function (e, args) {\n this.editSuccess(e, args);\n };\n NormalEdit.prototype.edFail = function (e) {\n this.editFailure(e);\n };\n NormalEdit.prototype.updateCurrentViewData = function (data) {\n if (!this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling) {\n this.parent.getCurrentViewRecords()[this.editRowIndex] = data;\n }\n };\n NormalEdit.prototype.requestSuccess = function (args) {\n if (this.parent.editModule.formObj && !this.parent.editModule.formObj.isDestroyed) {\n this.destroyElements();\n this.stopEditStatus();\n if (this.parent.editSettings.mode === 'Dialog' && args.action !== 'add' &&\n this.parent.selectionModule) {\n this.parent.element.querySelector('.e-dlgeditrow').classList.remove('e-dlgeditrow');\n }\n }\n };\n NormalEdit.prototype.editSuccess = function (e, args) {\n if (!isNullOrUndefined(e) && !(e instanceof Array)) {\n var rowData = 'rowData';\n args.data = extend({}, extend({}, args[\"\" + rowData], args.data), e);\n }\n this.requestSuccess(args);\n this.parent.trigger(events.beforeDataBound, args);\n args.type = events.actionComplete;\n this.parent.isEdit = this.parent.editSettings.showAddNewRow ? true : false;\n this.refreshRow(args.data);\n this.parent.notify(events.virtualScrollEditSuccess, args);\n this.parent.editModule.checkLastRow(args.row);\n this.parent.editModule.isLastRow = false;\n this.updateCurrentViewData(args.data);\n this.blazorTemplate();\n this.editRowIndex = null;\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length\n && this.parent.groupSettings.showGroupedColumn) {\n var dragRow = args.row;\n var rows = this.parent.getRowsObject();\n var dragRowUid = dragRow.getAttribute('data-uid');\n var dragRowObject_1 = this.parent.getRowObjectFromUID(dragRowUid);\n var _loop_1 = function (i) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef = this_1;\n rows = rows.filter(function (data) {\n var flag = data.isDataRow && data !== dragRowObject_1;\n if (flag) {\n var groupedColumn = thisRef.parent.groupSettings.columns[parseInt(i.toString(), 10)].split('.');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var comparer1 = data.data[groupedColumn[0]];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var comparer2 = args.data[groupedColumn[0]];\n for (var j = 1; j < groupedColumn.length; j++) {\n comparer1 = comparer1[groupedColumn[j]];\n comparer2 = comparer2[groupedColumn[j]];\n }\n return flag && comparer1 === comparer2;\n }\n else {\n return flag;\n }\n });\n };\n var this_1 = this;\n for (var i = 0; i < this.parent.groupSettings.columns.length; i++) {\n _loop_1(i);\n }\n var dropRowObject = rows[0];\n if (!isNullOrUndefined(dragRowObject_1) && !isNullOrUndefined(dropRowObject) &&\n dragRowObject_1.parentUid !== dropRowObject.parentUid) {\n this.parent['groupModule'].groupedRowReorder(dragRowObject_1, dropRowObject);\n }\n else if (this.parent.aggregates.length) {\n this.parent.aggregateModule.refresh(args.data, this.parent.groupSettings.enableLazyLoading ? args.row : undefined);\n }\n }\n else if (this.parent.aggregates.length) {\n this.parent.aggregateModule.refresh(args.data, this.parent.groupSettings.enableLazyLoading ? args.row : undefined);\n }\n this.parent.trigger(events.actionComplete, args);\n if (!(this.parent.isCheckBoxSelection || this.parent.selectionSettings.type === 'Multiple')\n || (!this.parent.isPersistSelection) && !this.parent.selectionSettings.checkboxOnly) {\n if (this.parent.editSettings.mode !== 'Dialog') {\n this.parent.selectRow(this.rowIndex > -1 ? this.rowIndex : this.editRowIndex);\n }\n }\n if (this.parent.aggregates.length && this.parent.groupSettings.enableLazyLoading && this.parent.groupSettings.columns.length\n && (this.parent.groupModule.getGroupAggregateTemplates(true).length\n || this.parent.groupModule.getGroupAggregateTemplates(false).length)) {\n return;\n }\n this.parent.removeMaskRow();\n this.parent.hideSpinner();\n };\n NormalEdit.prototype.closeForm = function () {\n if (!this.cloneRow && this.parent.isEdit) {\n this.stopEditStatus();\n }\n if (this.cloneRow) {\n this.cloneRow.remove();\n this.cloneRow = null;\n this.originalRow.classList.remove('e-hiddenrow');\n }\n if (this.cloneFrozen) {\n this.cloneFrozen.remove();\n if (this.frozen) {\n this.frozen.classList.remove('e-hiddenrow');\n }\n }\n };\n NormalEdit.prototype.blazorTemplate = function () {\n var cols = this.parent.getColumns();\n if (this.parent.editSettings.template && this.parent.editSettings.mode === 'Normal') {\n updateBlazorTemplate(this.parent.element.id + 'editSettingsTemplate', 'Template', this.parent.editSettings);\n }\n for (var i = 0; i < cols.length; i++) {\n var col = cols[parseInt(i.toString(), 10)];\n if (col.template) {\n updateBlazorTemplate(this.parent.element.id + col.uid, 'Template', col, false);\n }\n if (col.editTemplate) {\n updateBlazorTemplate(this.parent.element.id + col.uid + 'editTemplate', 'EditTemplate', col);\n }\n }\n };\n NormalEdit.prototype.editFailure = function (e) {\n this.parent.removeMaskRow();\n this.parent.trigger(events.actionFailure, ({ error: e }));\n this.parent.hideSpinner();\n this.parent.log('actionfailure', { error: e });\n };\n NormalEdit.prototype.needRefresh = function () {\n var refresh = true;\n var editedRow = this.parent.element.querySelector('.e-gridform');\n if ((this.parent.enableVirtualization || this.parent.infiniteScrollSettings.enableCache)\n && this.parent.editSettings.mode === 'Normal' && !editedRow) {\n refresh = false;\n }\n return refresh;\n };\n NormalEdit.prototype.refreshRow = function (data) {\n var row = new RowRenderer(this.serviceLocator, null, this.parent);\n var rowObj = this.parent.getRowObjectFromUID(this.uid);\n if (rowObj) {\n rowObj.changes = data;\n this.parent.notify(events.refreshVirtualCache, { data: data });\n refreshForeignData(rowObj, this.parent.getForeignKeyColumns(), rowObj.changes);\n if (this.needRefresh()) {\n row.refresh(rowObj, this.parent.getColumns(), true);\n }\n var tr = [].slice.call(this.parent.element.querySelectorAll('[data-rowindex=\"' + rowObj.index + '\"]'));\n for (var i = 0; i < tr.length; i++) {\n addFixedColumnBorder(tr[parseInt(i.toString(), 10)]);\n if (this.parent.enableColumnVirtualization &&\n tr[parseInt(i.toString(), 10)].querySelectorAll('.e-leftfreeze,.e-rightfreeze,.e-fixedfreeze').length) {\n var cols = this.parent.getColumns();\n var leftrightCells = [].slice.call(tr[parseInt(i.toString(), 10)].querySelectorAll('.e-leftfreeze,.e-rightfreeze.e-fixedfreeze'));\n for (var j = 0; j < leftrightCells.length; j++) {\n if (leftrightCells[parseInt(j.toString(), 10)].classList.contains('e-leftfreeze')) {\n leftrightCells[parseInt(j.toString(), 10)].style.left = (cols[parseInt(j.toString(), 10)].valueX - this.parent.translateX) + 'px';\n }\n else if (leftrightCells[parseInt(j.toString(), 10)].classList.contains('e-rightfreeze')) {\n var idx = parseInt(leftrightCells[parseInt(j.toString(), 10)].getAttribute('data-colindex'), 10);\n leftrightCells[parseInt(j.toString(), 10)].style.right = ((cols[parseInt(idx.toString(), 10)].valueX + this.parent.translateX)) + 'px';\n }\n else {\n leftrightCells[parseInt(j.toString(), 10)].style.left = (this.parent.leftrightColumnWidth('left') -\n this.parent.translateX) + 'px';\n leftrightCells[parseInt(j.toString(), 10)].style.right = (this.parent.leftrightColumnWidth('right') +\n this.parent.translateX) + 'px';\n }\n }\n }\n }\n }\n };\n NormalEdit.prototype.closeEdit = function () {\n var _this = this;\n if (!this.parent.isEdit || (this.parent.editSettings.showAddNewRow && this.parent.element.querySelector('.e-addedrow') &&\n isNullOrUndefined(this.parent.element.querySelector('.' + literals.editedRow)))) {\n if (this.parent.editSettings.showAddNewRow) {\n this.disabledShowAddRow(true, true);\n this.parent.notify(events.showAddNewRowFocus, {});\n }\n return;\n }\n var gObj = this.parent;\n var args = extend(this.args, {\n requestType: 'cancel', type: events.actionBegin, cancel: false, data: this.previousData, selectedRow: gObj.selectedRowIndex\n });\n gObj.notify(events.virtualScrollEditCancel, args);\n this.blazorTemplate();\n gObj.trigger(events.actionBegin, args, function (closeEditArgs) {\n if (closeEditArgs.cancel) {\n return;\n }\n if (_this.parent.editSettings.mode === 'Dialog') {\n _this.parent.notify(events.dialogDestroy, {});\n }\n closeEditArgs.type = events.actionComplete;\n if (!_this.parent.editSettings.showAddNewRow) {\n gObj.isEdit = false;\n }\n if (gObj.editSettings.mode !== 'Dialog') {\n _this.refreshRow(closeEditArgs.data);\n }\n _this.stopEditStatus();\n gObj.isEdit = false;\n if (gObj.editSettings.showAddNewRow) {\n _this.disabledShowAddRow(true);\n gObj.editModule.applyFormValidation();\n gObj.isEdit = true;\n }\n var isLazyLoad = gObj.groupSettings.enableLazyLoading && gObj.groupSettings.columns.length\n && !gObj.getContentTable().querySelector('tr.e-emptyrow');\n if (!gObj.getContentTable().querySelector('tr.e-emptyrow') &&\n !gObj.getContentTable().querySelector('tr.e-row') && !isLazyLoad) {\n gObj.renderModule.emptyRow();\n }\n if (gObj.editSettings.mode !== 'Dialog') {\n gObj.selectRow(_this.rowIndex);\n }\n gObj.trigger(events.actionComplete, closeEditArgs);\n });\n };\n NormalEdit.prototype.addRecord = function (data, index) {\n var _this = this;\n var gObj = this.parent;\n this.addedRowIndex = index = !isNullOrUndefined(index) ? index : 0;\n if (data) {\n gObj.notify(events.modelChanged, {\n requestType: 'save', type: events.actionBegin, data: data, selectedRow: 0, action: 'add', index: index\n });\n return;\n }\n if (gObj.isEdit) {\n return;\n }\n this.previousData = {};\n this.uid = '';\n var cols = gObj.getColumns();\n var rowData = { virtualData: {}, isScroll: false };\n if (!gObj.editSettings.showAddNewRow) {\n this.parent.notify(events.getVirtualData, rowData);\n }\n for (var i = 0; i < cols.length; i++) {\n if (rowData.isScroll) {\n continue;\n }\n if (cols[parseInt(i.toString(), 10)].field) {\n if (cols[parseInt(i.toString(), 10)].type === 'string') {\n cols[parseInt(i.toString(), 10)].defaultValue = this.parent.sanitize(cols[parseInt(i.toString(), 10)].defaultValue);\n }\n DataUtil.setValue(cols[parseInt(i.toString(), 10)].field, cols[parseInt(i.toString(), 10)].defaultValue, this.previousData);\n }\n }\n var args = {\n cancel: false, foreignKeyData: {},\n requestType: 'add', data: this.previousData, type: events.actionBegin, index: index,\n rowData: this.previousData, target: undefined, isScroll: rowData.isScroll\n };\n if ((this.parent.enableVirtualization || this.parent.enableColumnVirtualization || this.parent.infiniteScrollSettings.enableCache)\n && Object.keys(rowData.virtualData).length) {\n args.data = args.rowData = rowData.virtualData;\n }\n if (!args.isScroll) {\n this.parent.notify(events.createVirtualValidationForm, { uid: this.uid, prevData: this.previousData, argsCreator: this.getEditArgs.bind(this), renderer: this.renderer });\n if (gObj.editSettings.showAddNewRow) {\n this.inlineAddHandler(args);\n }\n else {\n gObj.trigger(events.actionBegin, args, function (addArgs) {\n if (addArgs.cancel) {\n return;\n }\n _this.inlineAddHandler(addArgs);\n });\n }\n }\n else {\n this.inlineAddHandler(args);\n }\n };\n NormalEdit.prototype.inlineAddHandler = function (addArgs) {\n var gObj = this.parent;\n gObj.isEdit = true;\n if (gObj.editSettings.mode !== 'Dialog') {\n gObj.clearSelection();\n }\n this.renderer.addNew(addArgs);\n gObj.editModule.applyFormValidation();\n addArgs.type = events.actionComplete;\n addArgs.row = gObj.element.querySelector('.' + literals.addedRow);\n if (!gObj.editSettings.showAddNewRow) {\n gObj.trigger(events.actionComplete, addArgs);\n }\n if (gObj.editSettings.template) {\n gObj.editModule.applyFormValidation(undefined, addArgs.form.ej2_instances[0].rules);\n }\n this.args = addArgs;\n };\n NormalEdit.prototype.deleteRecord = function (fieldname, data) {\n this.editRowIndex = this.parent.selectedRowIndex;\n if (data) {\n data = (data instanceof Array) ? data : [data];\n var gObj = this.parent;\n var dataLen = Object.keys(data).length;\n fieldname = fieldname || this.parent.getPrimaryKeyFieldNames()[0];\n var _loop_2 = function (i) {\n var _a;\n var tmpRecord;\n var contained = gObj.currentViewData.some(function (record) {\n tmpRecord = record;\n return data[parseInt(i.toString(), 10)] === getObject(fieldname, record) || data[parseInt(i.toString(), 10)] === record;\n });\n data[parseInt(i.toString(), 10)] = contained ? tmpRecord : data[parseInt(i.toString(), 10)][\"\" + fieldname] ?\n data[parseInt(i.toString(), 10)] : (_a = {}, _a[fieldname] = data[parseInt(i.toString(), 10)], _a);\n };\n for (var i = 0; i < dataLen; i++) {\n _loop_2(i);\n }\n }\n var args = {\n requestType: 'delete', type: events.actionBegin, foreignKeyData: {},\n data: data ? data : this.parent.getSelectedRecords(), tr: this.parent.getSelectedRows(), cancel: false\n };\n if (!isNullOrUndefined(this.parent.commandDelIndex)) {\n args.data[0] =\n this.parent.getRowObjectFromUID(this.parent.getRowByIndex(this.parent.commandDelIndex).getAttribute('data-uid')).data;\n }\n this.parent.notify(events.modelChanged, args);\n };\n NormalEdit.prototype.stopEditStatus = function () {\n var gObj = this.parent;\n var addElements = [].slice.call(gObj.editSettings.showAddNewRow ? [] :\n gObj.element.getElementsByClassName(literals.addedRow));\n var editElements = [].slice.call(gObj.element.getElementsByClassName(literals.editedRow));\n for (var i = 0; i < addElements.length; i++) {\n remove(addElements[parseInt(i.toString(), 10)]);\n }\n for (var i = 0; i < editElements.length; i++) {\n editElements[parseInt(i.toString(), 10)].classList.remove(literals.editedRow);\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n NormalEdit.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.crudAction, handler: this.editHandler },\n { event: events.doubleTap, handler: this.dblClickHandler },\n { event: events.click, handler: this.clickHandler },\n { event: events.recordAdded, handler: this.requestSuccess },\n { event: events.dblclick, handler: this.dblClickHandler },\n { event: events.deleteComplete, handler: this.editComplete },\n { event: events.saveComplete, handler: this.editComplete },\n { event: events.rowModeChange, handler: this.closeEdit },\n { event: events.closeInline, handler: this.closeForm }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n NormalEdit.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n /**\n * @returns {void}\n * @hidden\n */\n NormalEdit.prototype.destroy = function () {\n this.removeEventListener();\n this.renderer.destroy();\n };\n return NormalEdit;\n}());\nexport { NormalEdit };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { NormalEdit } from './normal-edit';\n/**\n * `InlineEdit` module is used to handle inline editing actions.\n *\n * @hidden\n */\nvar InlineEdit = /** @class */ (function (_super) {\n __extends(InlineEdit, _super);\n function InlineEdit(parent, serviceLocator, renderer) {\n var _this = _super.call(this, parent, serviceLocator) || this;\n _this.parent = parent;\n _this.serviceLocator = serviceLocator;\n _this.renderer = renderer;\n return _this;\n }\n InlineEdit.prototype.closeEdit = function () {\n _super.prototype.closeEdit.call(this);\n };\n InlineEdit.prototype.addRecord = function (data, index) {\n _super.prototype.addRecord.call(this, data, index);\n };\n InlineEdit.prototype.endEdit = function () {\n _super.prototype.endEdit.call(this);\n };\n InlineEdit.prototype.updateRow = function (index, data) {\n _super.prototype.updateRow.call(this, index, data);\n };\n InlineEdit.prototype.deleteRecord = function (fieldname, data) {\n _super.prototype.deleteRecord.call(this, fieldname, data);\n };\n InlineEdit.prototype.startEdit = function (tr) {\n _super.prototype.startEdit.call(this, tr);\n };\n return InlineEdit;\n}(NormalEdit));\nexport { InlineEdit };\n","import { extend, addClass, removeClass, setValue, closest, select, EventHandler } from '@syncfusion/ej2-base';\nimport { remove, classList } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, isUndefined } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { parentsUntil, refreshForeignData, getObject, addRemoveEventListener, getCellFromRow } from '../base/util';\nimport { getCellByColAndRowIndex, addFixedColumnBorder } from '../base/util';\nimport * as events from '../base/constant';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { CellRenderer } from '../renderer/cell-renderer';\nimport { Row } from '../models/row';\nimport { Cell } from '../models/cell';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { DataUtil } from '@syncfusion/ej2-data';\nimport * as literals from '../base/string-literals';\n/**\n * `BatchEdit` module is used to handle batch editing actions.\n *\n * @hidden\n */\nvar BatchEdit = /** @class */ (function () {\n function BatchEdit(parent, serviceLocator, renderer) {\n this.cellDetails = {};\n this.originalCell = {};\n this.cloneCell = {};\n this.editNext = false;\n this.preventSaveCell = false;\n this.initialRender = true;\n this.validationColObj = [];\n /** @hidden */\n this.addBatchRow = false;\n this.prevEditedBatchCell = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.renderer = renderer;\n this.focus = serviceLocator.getService('focus');\n this.addEventListener();\n }\n /**\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: events.click, handler: this.clickHandler },\n { event: events.dblclick, handler: this.dblClickHandler },\n { event: events.beforeCellFocused, handler: this.onBeforeCellFocused },\n { event: events.cellFocused, handler: this.onCellFocused },\n { event: events.doubleTap, handler: this.dblClickHandler },\n { event: events.keyPressed, handler: this.keyDownHandler },\n { event: events.editNextValCell, handler: this.editNextValCell },\n { event: events.destroy, handler: this.destroy }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n EventHandler.add(this.parent.element, 'mousedown', this.mouseDownHandler, this);\n this.dataBoundFunction = this.dataBound.bind(this);\n this.batchCancelFunction = this.batchCancel.bind(this);\n this.parent.addEventListener(events.dataBound, this.dataBoundFunction);\n this.parent.addEventListener(events.batchCancel, this.batchCancelFunction);\n };\n /**\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n EventHandler.remove(this.parent.element, 'mousedown', this.mouseDownHandler);\n this.parent.removeEventListener(events.dataBound, this.dataBoundFunction);\n this.parent.removeEventListener(events.batchCancel, this.batchCancelFunction);\n };\n BatchEdit.prototype.batchCancel = function () {\n this.parent.focusModule.restoreFocus();\n };\n BatchEdit.prototype.dataBound = function () {\n this.parent.notify(events.toolbarRefresh, {});\n };\n /**\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.destroy = function () {\n this.removeEventListener();\n };\n BatchEdit.prototype.mouseDownHandler = function (e) {\n if (!isNullOrUndefined(this.parent.element.querySelector('.e-gridform'))) {\n this.mouseDownElement = e.target;\n }\n else {\n this.mouseDownElement = undefined;\n }\n };\n BatchEdit.prototype.clickHandler = function (e) {\n if (!parentsUntil(e.target, this.parent.element.id + '_add', true)) {\n if ((this.parent.isEdit && closest(this.form, 'td') !== closest(e.target, 'td'))\n && isNullOrUndefined(this.mouseDownElement) || this.mouseDownElement === e.target) {\n this.saveCell();\n this.editNextValCell();\n }\n if (parentsUntil(e.target, literals.rowCell) && !this.parent.isEdit) {\n this.setCellIdx(e.target);\n }\n }\n };\n BatchEdit.prototype.dblClickHandler = function (e) {\n var target = parentsUntil(e.target, literals.rowCell);\n var tr = parentsUntil(e.target, literals.row);\n var rowIndex = tr && parseInt(tr.getAttribute(literals.dataRowIndex), 10);\n var colIndex = target && parseInt(target.getAttribute(literals.dataColIndex), 10);\n if (!isNullOrUndefined(target) && !isNullOrUndefined(rowIndex) && !isNaN(colIndex)\n && !target.parentElement.classList.contains(literals.editedRow) &&\n this.parent.getColumns()[parseInt(colIndex.toString(), 10)].allowEditing) {\n this.editCell(rowIndex, this.parent.getColumns()[parseInt(colIndex.toString(), 10)].field, this.isAddRow(rowIndex));\n }\n };\n BatchEdit.prototype.onBeforeCellFocused = function (e) {\n if (this.parent.isEdit && this.validateFormObj() &&\n (e.byClick || (['tab', 'shiftTab', 'enter', 'shiftEnter'].indexOf(e.keyArgs.action) > -1))) {\n e.cancel = true;\n if (e.byClick) {\n e.clickArgs.preventDefault();\n }\n else {\n e.keyArgs.preventDefault();\n }\n }\n };\n BatchEdit.prototype.onCellFocused = function (e) {\n var clear = (!e.container.isContent || !e.container.isDataCell) && !(this.parent.frozenRows && e.container.isHeader);\n if (this.parent.focusModule.active) {\n this.prevEditedBatchCell = this.parent.focusModule.active.matrix.current.toString() === this.prevEditedBatchCellMatrix()\n .toString();\n this.crtRowIndex = [].slice.call(this.parent.focusModule.active.getTable().rows).indexOf(closest(e.element, 'tr'));\n }\n if (!e.byKey || clear) {\n if ((this.parent.isEdit && clear)) {\n this.saveCell();\n }\n return;\n }\n var _a = e.container.indexes, rowIndex = _a[0], cellIndex = _a[1];\n var actualIndex = e.element.getAttribute('data-colindex') ? parseInt(e.element.getAttribute('data-colindex'), 10) : cellIndex;\n if (actualIndex !== cellIndex) {\n cellIndex = actualIndex;\n }\n if (this.parent.frozenRows && e.container.isContent) {\n rowIndex += ((this.parent.getContent().querySelector('.e-hiddenrow') ? 0 : this.parent.frozenRows) +\n this.parent.getHeaderContent().querySelectorAll('.e-insertedrow').length);\n }\n var isEdit = this.parent.isEdit;\n if (!this.parent.element.getElementsByClassName('e-popup-open').length) {\n isEdit = isEdit && !this.validateFormObj();\n switch (e.keyArgs.action) {\n case 'tab':\n case 'shiftTab':\n // eslint-disable-next-line no-case-declarations\n var indent = this.parent.isRowDragable() && this.parent.isDetail() ? 2 :\n this.parent.isRowDragable() || this.parent.isDetail() ? 1 : 0;\n // eslint-disable-next-line no-case-declarations\n var col = this.parent.getColumns()[cellIndex - indent];\n if (col && !this.parent.isEdit) {\n this.editCell(rowIndex, col.field);\n }\n if (isEdit || this.parent.isLastCellPrimaryKey) {\n this.editCellFromIndex(rowIndex, cellIndex);\n }\n break;\n case 'enter':\n case 'shiftEnter':\n e.keyArgs.preventDefault();\n // eslint-disable-next-line no-case-declarations\n var args = { cancel: false, keyArgs: e.keyArgs };\n this.parent.notify('beforeFocusCellEdit', args);\n if (!args.cancel && isEdit) {\n this.editCell(rowIndex, this.cellDetails.column.field);\n }\n break;\n case 'f2':\n this.editCellFromIndex(rowIndex, cellIndex);\n this.focus.focus();\n break;\n }\n }\n };\n BatchEdit.prototype.isAddRow = function (index) {\n return this.parent.getDataRows()[parseInt(index.toString(), 10)].classList.contains('e-insertedrow');\n };\n BatchEdit.prototype.editCellFromIndex = function (rowIdx, cellIdx) {\n this.cellDetails.rowIndex = rowIdx;\n this.cellDetails.cellIndex = cellIdx;\n this.editCell(rowIdx, this.parent.getColumns()[parseInt(cellIdx.toString(), 10)].field, this.isAddRow(rowIdx));\n };\n BatchEdit.prototype.closeEdit = function () {\n var gObj = this.parent;\n var rows = this.parent.getRowsObject();\n var argument = { cancel: false, batchChanges: this.getBatchChanges() };\n gObj.notify(events.beforeBatchCancel, argument);\n if (argument.cancel) {\n return;\n }\n if (gObj.isEdit) {\n this.saveCell(true);\n }\n this.isAdded = false;\n gObj.clearSelection();\n for (var i = 0; i < rows.length; i++) {\n var isInsert = false;\n var isDirty = rows[parseInt(i.toString(), 10)].isDirty;\n isInsert = this.removeBatchElementChanges(rows[parseInt(i.toString(), 10)], isDirty);\n if (isInsert) {\n rows.splice(i, 1);\n }\n if (isInsert) {\n i--;\n }\n }\n if (!gObj.getContentTable().querySelector('tr.e-row')) {\n gObj.renderModule.renderEmptyRow();\n }\n var args = {\n requestType: 'batchCancel', rows: this.parent.getRowsObject()\n };\n gObj.notify(events.batchCancel, {\n rows: this.parent.getRowsObject().length ? this.parent.getRowsObject() :\n [new Row({ isDataRow: true, cells: [new Cell({ isDataCell: true, visible: true })] })]\n });\n gObj.selectRow(this.cellDetails.rowIndex);\n this.refreshRowIdx();\n gObj.notify(events.toolbarRefresh, {});\n this.parent.notify(events.tooltipDestroy, {});\n args = { requestType: 'batchCancel', rows: this.parent.getRowsObject() };\n gObj.trigger(events.batchCancel, args);\n };\n BatchEdit.prototype.removeBatchElementChanges = function (row, isDirty) {\n var gObj = this.parent;\n var rowRenderer = new RowRenderer(this.serviceLocator, null, this.parent);\n var isInstertedRemoved = false;\n if (isDirty) {\n row.isDirty = isDirty;\n var tr = gObj.getRowElementByUID(row.uid);\n if (tr) {\n if (tr.classList.contains('e-insertedrow')) {\n remove(tr);\n isInstertedRemoved = true;\n }\n else {\n refreshForeignData(row, this.parent.getForeignKeyColumns(), row.data);\n delete row.changes;\n delete row.edit;\n row.isDirty = false;\n classList(tr, [], ['e-hiddenrow', 'e-updatedtd']);\n rowRenderer.refresh(row, gObj.getColumns(), false);\n }\n if (this.parent.aggregates.length > 0) {\n var type = 'type';\n var editType = [];\n editType[\"\" + type] = 'cancel';\n this.parent.notify(events.refreshFooterRenderer, editType);\n if (this.parent.groupSettings.columns.length > 0) {\n this.parent.notify(events.groupAggregates, editType);\n }\n }\n }\n }\n return isInstertedRemoved;\n };\n BatchEdit.prototype.deleteRecord = function (fieldname, data) {\n this.saveCell();\n if (this.validateFormObj()) {\n this.saveCell(true);\n }\n this.isAdded = false;\n this.bulkDelete(fieldname, data);\n if (this.parent.aggregates.length > 0) {\n if (!(this.parent.isReact || this.parent.isVue)) {\n this.parent.notify(events.refreshFooterRenderer, {});\n }\n if (this.parent.groupSettings.columns.length > 0) {\n this.parent.notify(events.groupAggregates, {});\n }\n if (this.parent.isReact || this.parent.isVue) {\n this.parent.notify(events.refreshFooterRenderer, {});\n }\n }\n };\n BatchEdit.prototype.addRecord = function (data) {\n this.bulkAddRow(data);\n };\n BatchEdit.prototype.endEdit = function () {\n if (this.parent.isEdit && this.validateFormObj()) {\n return;\n }\n this.batchSave();\n };\n BatchEdit.prototype.validateFormObj = function () {\n return this.parent.editModule.formObj && !this.parent.editModule.formObj.validate();\n };\n BatchEdit.prototype.batchSave = function () {\n var gObj = this.parent;\n var deletedRecords = 'deletedRecords';\n if (gObj.isCheckBoxSelection) {\n var checkAllBox = gObj.element.querySelector('.e-checkselectall').parentElement;\n if (checkAllBox.classList.contains('e-checkbox-disabled') &&\n gObj.pageSettings.totalRecordsCount > gObj.currentViewData.length) {\n removeClass([checkAllBox], ['e-checkbox-disabled']);\n }\n }\n this.saveCell();\n if (gObj.isEdit || this.editNextValCell() || gObj.isEdit) {\n return;\n }\n var changes = this.getBatchChanges();\n if (this.parent.selectionSettings.type === 'Multiple' && changes[\"\" + deletedRecords].length &&\n this.parent.selectionSettings.persistSelection) {\n changes[\"\" + deletedRecords] = this.removeSelectedData;\n this.removeSelectedData = [];\n }\n var original = {\n changedRecords: this.parent.getRowsObject()\n .filter(function (row) { return row.isDirty && ['add', 'delete'].indexOf(row.edit) === -1; })\n .map(function (row) { return row.data; })\n };\n var args = { batchChanges: changes, cancel: false };\n gObj.trigger(events.beforeBatchSave, args, function (beforeBatchSaveArgs) {\n if (beforeBatchSaveArgs.cancel) {\n return;\n }\n gObj.showSpinner();\n gObj.notify(events.bulkSave, { changes: changes, original: original });\n });\n };\n BatchEdit.prototype.getBatchChanges = function () {\n var changes = {\n addedRecords: [],\n deletedRecords: [],\n changedRecords: []\n };\n var rows = this.parent.getRowsObject();\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n if (row.isDirty) {\n switch (row.edit) {\n case 'add':\n changes.addedRecords.push(row.changes);\n break;\n case 'delete':\n changes.deletedRecords.push(row.data);\n break;\n default:\n changes.changedRecords.push(row.changes);\n }\n }\n }\n return changes;\n };\n /**\n * @param {string} uid - specifes the uid\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.removeRowObjectFromUID = function (uid) {\n var rows = this.parent.getRowsObject();\n var i = 0;\n for (var len = rows.length; i < len; i++) {\n if (rows[parseInt(i.toString(), 10)].uid === uid) {\n break;\n }\n }\n rows.splice(i, 1);\n };\n /**\n * @param {Row} row - specifies the row object\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.addRowObject = function (row) {\n var gObj = this.parent;\n var isTop = gObj.editSettings.newRowPosition === 'Top';\n var rowClone = row.clone();\n if (isTop) {\n gObj.getRowsObject().unshift(rowClone);\n }\n else {\n gObj.getRowsObject().push(rowClone);\n }\n };\n // tslint:disable-next-line:max-func-body-length\n BatchEdit.prototype.bulkDelete = function (fieldname, data) {\n var _this = this;\n this.removeSelectedData = [];\n var gObj = this.parent;\n var index = gObj.selectedRowIndex;\n var selectedRows = gObj.getSelectedRows();\n var args = {\n primaryKey: this.parent.getPrimaryKeyFieldNames(),\n rowIndex: index,\n rowData: data ? data : gObj.getSelectedRecords()[0],\n cancel: false\n };\n if (data) {\n args.row = gObj.editModule.deleteRowUid ? gObj.getRowElementByUID(gObj.editModule.deleteRowUid)\n : gObj.getRows()[gObj.getCurrentViewRecords().indexOf(data)];\n }\n else {\n args.row = selectedRows[0];\n }\n if (!args.row) {\n return;\n }\n // tslint:disable-next-line:max-func-body-length\n gObj.trigger(events.beforeBatchDelete, args, function (beforeBatchDeleteArgs) {\n if (beforeBatchDeleteArgs.cancel) {\n return;\n }\n _this.removeSelectedData = gObj.getSelectedRecords();\n gObj.clearSelection();\n beforeBatchDeleteArgs.row = beforeBatchDeleteArgs.row ?\n beforeBatchDeleteArgs.row : data ? gObj.getRows()[parseInt(index.toString(), 10)] : selectedRows[0];\n if (selectedRows.length === 1 || data) {\n var uid = beforeBatchDeleteArgs.row.getAttribute('data-uid');\n uid = data && _this.parent.editModule.deleteRowUid ? uid = _this.parent.editModule.deleteRowUid : uid;\n if (beforeBatchDeleteArgs.row.classList.contains('e-insertedrow')) {\n _this.removeRowObjectFromUID(uid);\n remove(beforeBatchDeleteArgs.row);\n }\n else {\n var rowObj = gObj.getRowObjectFromUID(uid);\n rowObj.isDirty = true;\n rowObj.edit = 'delete';\n classList(beforeBatchDeleteArgs.row, ['e-hiddenrow', 'e-updatedtd'], []);\n if (gObj.frozenRows && index < gObj.frozenRows && gObj.getDataRows().length >= gObj.frozenRows) {\n gObj.getHeaderTable().querySelector(literals.tbody).appendChild(gObj.getRowByIndex(gObj.frozenRows - 1));\n }\n }\n delete beforeBatchDeleteArgs.row;\n }\n else {\n if (data) {\n index = parseInt(beforeBatchDeleteArgs.row.getAttribute(literals.dataRowIndex), 10);\n }\n for (var i = 0; i < selectedRows.length; i++) {\n var uniqueid = selectedRows[parseInt(i.toString(), 10)].getAttribute('data-uid');\n if (selectedRows[parseInt(i.toString(), 10)].classList.contains('e-insertedrow')) {\n _this.removeRowObjectFromUID(uniqueid);\n remove(selectedRows[parseInt(i.toString(), 10)]);\n }\n else {\n classList(selectedRows[parseInt(i.toString(), 10)], ['e-hiddenrow', 'e-updatedtd'], []);\n var selectedRow = gObj.getRowObjectFromUID(uniqueid);\n selectedRow.isDirty = true;\n selectedRow.edit = 'delete';\n delete selectedRows[parseInt(i.toString(), 10)];\n if (gObj.frozenRows && index < gObj.frozenRows && gObj.getDataRows().length >= gObj.frozenRows) {\n gObj.getHeaderTable().querySelector(literals.tbody).appendChild(gObj.getRowByIndex(gObj.frozenRows - 1));\n }\n }\n }\n }\n _this.refreshRowIdx();\n if (data) {\n gObj.editModule.deleteRowUid = undefined;\n }\n if (!gObj.isCheckBoxSelection) {\n gObj.selectRow(index);\n }\n gObj.trigger(events.batchDelete, beforeBatchDeleteArgs);\n gObj.notify(events.batchDelete, { rows: _this.parent.getRowsObject() });\n gObj.notify(events.toolbarRefresh, {});\n });\n };\n BatchEdit.prototype.refreshRowIdx = function () {\n var gObj = this.parent;\n var rows = gObj.getAllDataRows(true);\n var dataObjects = gObj.getRowsObject().filter(function (row) { return !row.isDetailRow; });\n for (var i = 0, j = 0, len = rows.length; i < len; i++) {\n if (rows[parseInt(i.toString(), 10)].classList.contains(literals.row) && !rows[parseInt(i.toString(), 10)].classList.contains('e-hiddenrow')) {\n rows[parseInt(i.toString(), 10)].setAttribute(literals.dataRowIndex, j.toString());\n rows[parseInt(i.toString(), 10)].setAttribute(literals.ariaRowIndex, (j + 1).toString());\n dataObjects[parseInt(i.toString(), 10)].index = j;\n j++;\n }\n else {\n rows[parseInt(i.toString(), 10)].removeAttribute(literals.dataRowIndex);\n rows[parseInt(i.toString(), 10)].removeAttribute(literals.ariaRowIndex);\n dataObjects[parseInt(i.toString(), 10)].index = -1;\n }\n }\n };\n BatchEdit.prototype.bulkAddRow = function (data) {\n var _this = this;\n var gObj = this.parent;\n if (!gObj.editSettings.allowAdding) {\n if (gObj.isEdit) {\n this.saveCell();\n }\n return;\n }\n if (gObj.isEdit) {\n this.saveCell();\n this.parent.notify(events.editNextValCell, {});\n }\n if (this.validateFormObj()) {\n return;\n }\n if (this.initialRender) {\n var visibleColumns = gObj.getVisibleColumns();\n for (var i = 0; i < visibleColumns.length; i++) {\n if (visibleColumns[parseInt(i.toString(), 10)].validationRules &&\n visibleColumns[parseInt(i.toString(), 10)].validationRules['required']) {\n var obj = { field: (visibleColumns[parseInt(i.toString(), 10)]['field']).slice(), cellIdx: i };\n this.validationColObj.push(obj);\n }\n }\n this.initialRender = false;\n }\n this.parent.element.classList.add('e-editing');\n var defaultData = data ? data : this.getDefaultData();\n var args = {\n defaultData: defaultData,\n primaryKey: gObj.getPrimaryKeyFieldNames(),\n cancel: false\n };\n gObj.trigger(events.beforeBatchAdd, args, function (beforeBatchAddArgs) {\n if (beforeBatchAddArgs.cancel) {\n return;\n }\n _this.isAdded = true;\n gObj.clearSelection();\n var row = new RowRenderer(_this.serviceLocator, null, _this.parent);\n var model = new RowModelGenerator(_this.parent);\n var modelData = model.generateRows([beforeBatchAddArgs.defaultData]);\n var tr = row.render(modelData[0], gObj.getColumns());\n addFixedColumnBorder(tr);\n var col;\n var index;\n for (var i = 0; i < _this.parent.groupSettings.columns.length; i++) {\n tr.insertBefore(_this.parent.createElement('td', { className: 'e-indentcell' }), tr.firstChild);\n modelData[0].cells.unshift(new Cell({ cellType: CellType.Indent }));\n }\n var tbody = gObj.getContentTable().querySelector(literals.tbody);\n tr.classList.add('e-insertedrow');\n if (tbody.querySelector('.e-emptyrow')) {\n var emptyRow = tbody.querySelector('.e-emptyrow');\n emptyRow.parentNode.removeChild(emptyRow);\n if (gObj.frozenRows && gObj.element.querySelector('.e-frozenrow-empty')) {\n gObj.element.querySelector('.e-frozenrow-empty').classList.remove('e-frozenrow-empty');\n }\n }\n if (gObj.frozenRows && gObj.editSettings.newRowPosition === 'Top') {\n tbody = gObj.getHeaderTable().querySelector(literals.tbody);\n }\n else {\n tbody = gObj.getContentTable().querySelector(literals.tbody);\n }\n if (_this.parent.editSettings.newRowPosition === 'Top') {\n tbody.insertBefore(tr, tbody.firstChild);\n }\n else {\n tbody.appendChild(tr);\n }\n addClass([].slice.call(tr.getElementsByClassName(literals.rowCell)), ['e-updatedtd']);\n modelData[0].isDirty = true;\n modelData[0].changes = extend({}, {}, modelData[0].data, true);\n modelData[0].edit = 'add';\n _this.addRowObject(modelData[0]);\n _this.refreshRowIdx();\n _this.focus.forgetPrevious();\n gObj.notify(events.batchAdd, { rows: _this.parent.getRowsObject() });\n var changes = _this.getBatchChanges();\n var btmIdx = _this.getBottomIndex();\n if (_this.parent.editSettings.newRowPosition === 'Top') {\n gObj.selectRow(0);\n }\n else {\n gObj.selectRow(btmIdx);\n }\n if (!data) {\n index = _this.findNextEditableCell(0, true);\n col = gObj.getColumns()[parseInt(index.toString(), 10)];\n if (_this.parent.editSettings.newRowPosition === 'Top') {\n _this.editCell(0, col.field, true);\n }\n else {\n _this.editCell(btmIdx, col.field, true);\n }\n }\n if (_this.parent.aggregates.length > 0 && (data || changes[literals.addedRecords].length)) {\n _this.parent.notify(events.refreshFooterRenderer, {});\n }\n var args1 = {\n defaultData: beforeBatchAddArgs.defaultData, row: tr,\n columnObject: col, columnIndex: index, primaryKey: beforeBatchAddArgs.primaryKey,\n cell: !isNullOrUndefined(index) ? tr.cells[parseInt(index.toString(), 10)] : undefined\n };\n gObj.trigger(events.batchAdd, args1);\n });\n };\n BatchEdit.prototype.findNextEditableCell = function (columnIndex, isAdd, isValOnly) {\n var cols = this.parent.getColumns();\n var endIndex = cols.length;\n var validation;\n for (var i = columnIndex; i < endIndex; i++) {\n validation = isValOnly ? isNullOrUndefined(cols[parseInt(i.toString(), 10)].validationRules) : false;\n // if (!isAdd && this.checkNPCell(cols[parseInt(i.toString(), 10)])) {\n // return i;\n // } else\n if (isAdd && (!cols[parseInt(i.toString(), 10)].template || cols[parseInt(i.toString(), 10)].field)\n && cols[parseInt(i.toString(), 10)].allowEditing && cols[parseInt(i.toString(), 10)].visible &&\n !(cols[parseInt(i.toString(), 10)].isIdentity && cols[parseInt(i.toString(), 10)].isPrimaryKey) && !validation) {\n return i;\n }\n }\n return -1;\n };\n BatchEdit.prototype.getDefaultData = function () {\n var gObj = this.parent;\n var data = {};\n var dValues = { 'number': 0, 'string': null, 'boolean': false, 'date': null, 'datetime': null };\n for (var _i = 0, _a = (gObj.columnModel); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.field) {\n setValue(col.field, Object.keys(col).indexOf('defaultValue') >= 0 ? col.defaultValue : dValues[col.type], data);\n }\n }\n return data;\n };\n BatchEdit.prototype.setCellIdx = function (target) {\n var gLen = 0;\n if (this.parent.allowGrouping) {\n gLen = this.parent.groupSettings.columns.length;\n }\n this.cellDetails.cellIndex = target.cellIndex - gLen;\n this.cellDetails.rowIndex = parseInt(target.getAttribute('index'), 10);\n };\n BatchEdit.prototype.editCell = function (index, field, isAdd) {\n var gObj = this.parent;\n var col = gObj.getColumnByField(field);\n this.index = index;\n this.field = field;\n this.isAdd = isAdd;\n var checkEdit = gObj.isEdit && !(this.cellDetails.column.field === field\n && (this.cellDetails.rowIndex === index && this.parent.getDataRows().length - 1 !== index && this.prevEditedBatchCell));\n if (gObj.editSettings.allowEditing) {\n if (!checkEdit && (col.allowEditing || (!col.allowEditing && gObj.focusModule.active\n && gObj.focusModule.active.getTable().rows[this.crtRowIndex]\n && gObj.focusModule.active.getTable().rows[this.crtRowIndex].classList.contains('e-insertedrow')))) {\n this.editCellExtend(index, field, isAdd);\n }\n else if (checkEdit) {\n this.editNext = true;\n this.saveCell();\n }\n }\n };\n BatchEdit.prototype.editCellExtend = function (index, field, isAdd) {\n var _this = this;\n var gObj = this.parent;\n var col = gObj.getColumnByField(field);\n var keys = gObj.getPrimaryKeyFieldNames();\n if (gObj.isEdit) {\n return;\n }\n var rowData = extend({}, {}, this.getDataByIndex(index), true);\n var row = gObj.getDataRows()[parseInt(index.toString(), 10)];\n rowData = extend({}, {}, this.getDataByIndex(index), true);\n if ((keys[0] === col.field && !row.classList.contains('e-insertedrow')) || col.columns ||\n (col.isPrimaryKey && col.isIdentity) || col.commands) {\n this.parent.isLastCellPrimaryKey = true;\n return;\n }\n this.parent.isLastCellPrimaryKey = false;\n this.parent.element.classList.add('e-editing');\n var rowObj = gObj.getRowObjectFromUID(row.getAttribute('data-uid'));\n var cells = [].slice.apply(row.cells);\n var args = {\n columnName: col.field, isForeignKey: !isNullOrUndefined(col.foreignKeyValue),\n primaryKey: keys, rowData: rowData,\n validationRules: extend({}, col.validationRules ? col.validationRules : {}),\n value: getObject(col.field, rowData),\n type: !isAdd ? 'edit' : 'add', cancel: false,\n foreignKeyData: rowObj && rowObj.foreignKeyData\n };\n args.cell = cells[this.getColIndex(cells, this.getCellIdx(col.uid))];\n args.row = row;\n args.columnObject = col;\n if (!args.cell) {\n return;\n }\n gObj.trigger(events.cellEdit, args, function (cellEditArgs) {\n if (cellEditArgs.cancel) {\n return;\n }\n cellEditArgs.cell = cellEditArgs.cell ? cellEditArgs.cell : cells[_this.getColIndex(cells, _this.getCellIdx(col.uid))];\n cellEditArgs.row = cellEditArgs.row ? cellEditArgs.row : row;\n cellEditArgs.columnObject = cellEditArgs.columnObject ? cellEditArgs.columnObject : col;\n // cellEditArgs.columnObject.index = isNullOrUndefined(cellEditArgs.columnObject.index) ? 0 : cellEditArgs.columnObject.index;\n _this.cellDetails = {\n rowData: rowData, column: col, value: cellEditArgs.value, isForeignKey: cellEditArgs.isForeignKey, rowIndex: index,\n cellIndex: parseInt(cellEditArgs.cell.getAttribute(literals.dataColIndex), 10),\n foreignKeyData: cellEditArgs.foreignKeyData\n };\n if (cellEditArgs.cell.classList.contains('e-updatedtd')) {\n _this.isColored = true;\n cellEditArgs.cell.classList.remove('e-updatedtd');\n }\n gObj.isEdit = true;\n gObj.clearSelection();\n if (!gObj.isCheckBoxSelection || !gObj.isPersistSelection) {\n gObj.selectRow(_this.cellDetails.rowIndex, true);\n }\n _this.renderer.update(cellEditArgs);\n _this.parent.notify(events.batchEditFormRendered, cellEditArgs);\n _this.form = select('#' + gObj.element.id + 'EditForm', gObj.element);\n gObj.editModule.applyFormValidation([col]);\n _this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n });\n };\n BatchEdit.prototype.updateCell = function (rowIndex, field, value) {\n var gObj = this.parent;\n var col = gObj.getColumnByField(field);\n var index = gObj.getColumnIndexByField(field);\n if (col && !col.isPrimaryKey && col.allowEditing) {\n var td_1 = this.parent.isSpan ? getCellFromRow(gObj, rowIndex, index) :\n getCellByColAndRowIndex(this.parent, col, rowIndex, index);\n if (this.parent.isSpan && !td_1) {\n return;\n }\n var rowObj_1 = gObj.getRowObjectFromUID(td_1.parentElement.getAttribute('data-uid'));\n if (gObj.isEdit ||\n (!rowObj_1.changes && ((!(value instanceof Date) && rowObj_1.data['' + field] !== value) ||\n ((value instanceof Date) && new Date(rowObj_1.data['' + field]).toString() !== new Date(value).toString()))) ||\n (rowObj_1.changes && ((!(value instanceof Date) && rowObj_1.changes['' + field] !== value) ||\n ((value instanceof Date) && new Date(rowObj_1.changes['' + field]).toString() !== new Date(value).toString())))) {\n this.refreshTD(td_1, col, rowObj_1, value);\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (((this.parent.isReact && this.parent.requireTemplateRef) || (isReactChild &&\n this.parent.parentDetails.parentInstObj.requireTemplateRef)) && col.template) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_1 = this;\n var newReactTd_1 = this.newReactTd;\n thisRef_1.parent.renderTemplates(function () {\n thisRef_1.parent.trigger(events.queryCellInfo, {\n cell: newReactTd_1 || td_1, column: col, data: rowObj_1.changes\n });\n });\n }\n else if ((this.parent.isReact || isReactChild) && col.template) {\n this.parent.renderTemplates();\n this.parent.trigger(events.queryCellInfo, {\n cell: this.newReactTd || td_1, column: col, data: rowObj_1.changes\n });\n }\n else {\n this.parent.trigger(events.queryCellInfo, {\n cell: this.newReactTd || td_1, column: col, data: rowObj_1.changes\n });\n }\n }\n }\n };\n BatchEdit.prototype.setChanges = function (rowObj, field, value) {\n if (!rowObj.changes) {\n rowObj.changes = extend({}, {}, rowObj.data, true);\n }\n if (!isNullOrUndefined(field)) {\n if (typeof value === 'string') {\n value = this.parent.sanitize(value);\n }\n DataUtil.setValue(field, value, rowObj.changes);\n }\n if (rowObj.data[\"\" + field] !== value) {\n var type = this.parent.getColumnByField(field).type;\n if ((type === 'date' || type === 'datetime')) {\n if (new Date(rowObj.data[\"\" + field]).toString() !== new Date(value).toString()) {\n rowObj.isDirty = true;\n }\n }\n else {\n rowObj.isDirty = true;\n }\n }\n };\n BatchEdit.prototype.updateRow = function (index, data) {\n var keys = Object.keys(data);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var col = keys_1[_i];\n this.updateCell(index, col, data[\"\" + col]);\n }\n };\n BatchEdit.prototype.getCellIdx = function (uid) {\n var cIdx = this.parent.getColumnIndexByUid(uid) + this.parent.groupSettings.columns.length;\n if (!isNullOrUndefined(this.parent.detailTemplate) || !isNullOrUndefined(this.parent.childGrid)) {\n cIdx++;\n }\n if (this.parent.isRowDragable()) {\n cIdx++;\n }\n return cIdx;\n };\n BatchEdit.prototype.refreshTD = function (td, column, rowObj, value) {\n var cell = new CellRenderer(this.parent, this.serviceLocator);\n value = column.type === 'number' && !isNullOrUndefined(value) ? parseFloat(value) : value;\n if (rowObj) {\n this.setChanges(rowObj, column.field, value);\n refreshForeignData(rowObj, this.parent.getForeignKeyColumns(), rowObj.changes);\n }\n var rowcell = rowObj ? rowObj.cells : undefined;\n var parentElement;\n var cellIndex;\n if (this.parent.isReact) {\n parentElement = td.parentElement;\n cellIndex = td.cellIndex;\n }\n var index = 0;\n if (rowObj) {\n cell.refreshTD(td, rowcell[this.getCellIdx(column.uid) - index], rowObj.changes, { 'index': this.getCellIdx(column.uid) });\n }\n if (this.parent.isReact) {\n this.newReactTd = parentElement.cells[parseInt(cellIndex.toString(), 10)];\n parentElement.cells[parseInt(cellIndex.toString(), 10)].classList.add('e-updatedtd');\n }\n else {\n td.classList.add('e-updatedtd');\n }\n td.classList.add('e-updatedtd');\n this.parent.notify(events.toolbarRefresh, {});\n };\n BatchEdit.prototype.getColIndex = function (cells, index) {\n var cIdx = 0;\n if (this.parent.allowGrouping && this.parent.groupSettings.columns) {\n cIdx = this.parent.groupSettings.columns.length;\n }\n if (!isNullOrUndefined(this.parent.detailTemplate) || !isNullOrUndefined(this.parent.childGrid)) {\n cIdx++;\n }\n if (this.parent.isRowDragable()) {\n cIdx++;\n }\n for (var m = 0; m < cells.length; m++) {\n var colIndex = parseInt(cells[parseInt(m.toString(), 10)].getAttribute(literals.dataColIndex), 10);\n if (colIndex === index - cIdx) {\n return m;\n }\n }\n return -1;\n };\n BatchEdit.prototype.editNextValCell = function () {\n var gObj = this.parent;\n var insertedRows = gObj.element.querySelectorAll('.e-insertedrow');\n var isSingleInsert = insertedRows.length === 1 ? true : false;\n if (isSingleInsert && this.isAdded && !gObj.isEdit) {\n var btmIdx = this.getBottomIndex();\n for (var i = this.cellDetails.cellIndex; i < gObj.getColumns().length; i++) {\n if (gObj.isEdit) {\n return;\n }\n var index = this.findNextEditableCell(this.cellDetails.cellIndex + 1, true, true);\n var col = gObj.getColumns()[parseInt(index.toString(), 10)];\n if (col) {\n if (this.parent.editSettings.newRowPosition === 'Bottom') {\n this.editCell(btmIdx, col.field, true);\n }\n else {\n var args = { index: 0, column: col };\n this.parent.notify(events.nextCellIndex, args);\n this.editCell(args.index, col.field, true);\n }\n this.saveCell();\n }\n }\n if (!gObj.isEdit) {\n this.isAdded = false;\n }\n }\n else if (!isSingleInsert && this.isAdded && !gObj.isEdit) {\n for (var i = 0; i < insertedRows.length; i++) {\n if (!gObj.isEdit) {\n for (var j = 0; j < this.validationColObj.length; j++) {\n if (gObj.isEdit) {\n break;\n }\n else if (insertedRows[parseInt(i.toString(), 10)].querySelectorAll('td:not(.e-hide)')[this.validationColObj[parseInt(j.toString(), 10)].cellIdx].innerHTML === '') {\n this.editCell(parseInt(insertedRows[parseInt(i.toString(), 10)].getAttribute('data-rowindex'), 10), this.validationColObj[parseInt(j.toString(), 10)].field);\n if (this.validateFormObj()) {\n this.saveCell();\n }\n }\n }\n }\n else {\n break;\n }\n }\n if (!gObj.isEdit) {\n this.isAdded = false;\n }\n }\n };\n BatchEdit.prototype.escapeCellEdit = function () {\n var args = this.generateCellArgs();\n args.value = args.previousValue;\n if (args.value || !this.cellDetails.column.validationRules) {\n this.successCallBack(args, args.cell.parentElement, args.column, true)(args);\n }\n };\n BatchEdit.prototype.generateCellArgs = function () {\n var gObj = this.parent;\n this.parent.element.classList.remove('e-editing');\n var column = this.cellDetails.column;\n var obj = {};\n obj[column.field] = getObject(column.field, this.cellDetails.rowData);\n var editedData = gObj.editModule.getCurrentEditedData(this.form, obj);\n var cloneEditedData = extend({}, editedData);\n editedData = extend({}, editedData, this.cellDetails.rowData);\n var value = getObject(column.field, cloneEditedData);\n if (!isNullOrUndefined(column.field) && !isUndefined(value)) {\n setValue(column.field, value, editedData);\n }\n var args = {\n columnName: column.field,\n value: getObject(column.field, editedData),\n rowData: this.cellDetails.rowData,\n column: column,\n previousValue: this.cellDetails.value,\n isForeignKey: this.cellDetails.isForeignKey,\n cancel: false\n };\n args.cell = this.form.parentElement;\n args.columnObject = column;\n return args;\n };\n BatchEdit.prototype.saveCell = function (isForceSave) {\n if (this.preventSaveCell || !this.form) {\n return;\n }\n var gObj = this.parent;\n if (!isForceSave && (!gObj.isEdit || this.validateFormObj())) {\n return;\n }\n this.preventSaveCell = true;\n var args = this.generateCellArgs();\n var tr = args.cell.parentElement;\n var col = args.column;\n args.cell.removeAttribute('aria-label');\n if (!isForceSave) {\n gObj.trigger(events.cellSave, args, this.successCallBack(args, tr, col));\n gObj.notify(events.batchForm, { formObj: this.form });\n }\n else {\n this.successCallBack(args, tr, col)(args);\n }\n };\n BatchEdit.prototype.successCallBack = function (cellSaveArgs, tr, column, isEscapeCellEdit) {\n var _this = this;\n return function (cellSaveArgs) {\n var gObj = _this.parent;\n cellSaveArgs.cell = cellSaveArgs.cell ? cellSaveArgs.cell : _this.form.parentElement;\n cellSaveArgs.columnObject = cellSaveArgs.columnObject ? cellSaveArgs.columnObject : column;\n // cellSaveArgs.columnObject.index = isNullOrUndefined(cellSaveArgs.columnObject.index) ? 0 : cellSaveArgs.columnObject.index;\n if (cellSaveArgs.cancel) {\n _this.preventSaveCell = false;\n if (_this.editNext) {\n _this.editNext = false;\n if (_this.cellDetails.rowIndex === _this.index && _this.cellDetails.column.field === _this.field) {\n return;\n }\n _this.editCellExtend(_this.index, _this.field, _this.isAdd);\n }\n return;\n }\n gObj.editModule.destroyWidgets([column]);\n gObj.isEdit = false;\n gObj.editModule.destroyForm();\n _this.parent.notify(events.tooltipDestroy, {});\n var rowObj = gObj.getRowObjectFromUID(tr.getAttribute('data-uid'));\n _this.refreshTD(cellSaveArgs.cell, column, rowObj, cellSaveArgs.value);\n if (_this.parent.isReact) {\n cellSaveArgs.cell = _this.newReactTd;\n }\n removeClass([tr], [literals.editedRow, 'e-batchrow']);\n removeClass([cellSaveArgs.cell], ['e-editedbatchcell', 'e-boolcell']);\n if (!isNullOrUndefined(cellSaveArgs.value) && cellSaveArgs.value.toString() ===\n (!isNullOrUndefined(_this.cellDetails.value) ? _this.cellDetails.value : '').toString() && !_this.isColored\n || (isNullOrUndefined(cellSaveArgs.value) && isNullOrUndefined(rowObj.data[column.field]) &&\n isNullOrUndefined(_this.cellDetails.value) && !cellSaveArgs.cell.parentElement.classList.contains('e-insertedrow'))) {\n cellSaveArgs.cell.classList.remove('e-updatedtd');\n }\n if (isNullOrUndefined(isEscapeCellEdit)) {\n var isReactCompiler = gObj.isReact && column.template && typeof (column.template) !== 'string';\n var isReactChild = gObj.parentDetails && gObj.parentDetails.parentInstObj\n && gObj.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n if (gObj.requireTemplateRef) {\n gObj.renderTemplates(function () {\n gObj.trigger(events.cellSaved, cellSaveArgs);\n });\n }\n else {\n gObj.renderTemplates();\n gObj.trigger(events.cellSaved, cellSaveArgs);\n }\n }\n else {\n gObj.trigger(events.cellSaved, cellSaveArgs);\n }\n }\n gObj.notify(events.toolbarRefresh, {});\n _this.isColored = false;\n if (_this.parent.aggregates.length > 0) {\n if (!(_this.parent.isReact || _this.parent.isVue)) {\n _this.parent.notify(events.refreshFooterRenderer, {});\n }\n if (_this.parent.groupSettings.columns.length > 0 && !_this.isAddRow(_this.cellDetails.rowIndex)) {\n _this.parent.notify(events.groupAggregates, {});\n }\n if (_this.parent.isReact || _this.parent.isVue) {\n _this.parent.notify(events.refreshFooterRenderer, {});\n }\n }\n _this.preventSaveCell = false;\n if (_this.editNext) {\n _this.editNext = false;\n if (_this.cellDetails.rowIndex === _this.index && _this.cellDetails.column.field === _this.field && _this.prevEditedBatchCell) {\n return;\n }\n var col = gObj.getColumnByField(_this.field);\n if (col && (col.allowEditing || (!col.allowEditing && gObj.focusModule.active\n && gObj.focusModule.active.getTable().rows[_this.crtRowIndex]\n && gObj.focusModule.active.getTable().rows[_this.crtRowIndex].classList.contains('e-insertedrow')))) {\n _this.editCellExtend(_this.index, _this.field, _this.isAdd);\n }\n }\n if (isEscapeCellEdit) {\n gObj.notify(events.restoreFocus, {});\n }\n };\n };\n BatchEdit.prototype.prevEditedBatchCellMatrix = function () {\n var editedBatchCellMatrix = [];\n var gObj = this.parent;\n var editedBatchCell = gObj.focusModule.active.getTable().querySelector('.e-editedbatchcell');\n if (editedBatchCell) {\n var tr = editedBatchCell.parentElement;\n var rowIndex = [].slice.call(this.parent.focusModule.active.getTable().rows).indexOf(tr);\n var cellIndex = [].slice.call(tr.cells).indexOf(editedBatchCell);\n editedBatchCellMatrix = [rowIndex, cellIndex];\n }\n return editedBatchCellMatrix;\n };\n BatchEdit.prototype.getDataByIndex = function (index) {\n var row = this.parent.getRowObjectFromUID(this.parent.getDataRows()[parseInt(index.toString(), 10)].getAttribute('data-uid'));\n return row.changes ? row.changes : row.data;\n };\n BatchEdit.prototype.keyDownHandler = function (e) {\n if (this.addBatchRow || ((e.action === 'tab' || e.action === 'shiftTab') && this.parent.isEdit)) {\n var gObj = this.parent;\n var btmIdx = this.getBottomIndex();\n var rowcell = parentsUntil(e.target, literals.rowCell);\n if (this.addBatchRow || (rowcell && !this.parent.isReact)) {\n var cell = void 0;\n if (rowcell) {\n cell = rowcell.querySelector('.e-field');\n }\n if (this.addBatchRow || cell) {\n var visibleColumns = this.parent.getVisibleColumns();\n var columnIndex = e.action === 'tab' ? visibleColumns.length - 1 : 0;\n if (this.addBatchRow\n || visibleColumns[parseInt(columnIndex.toString(), 10)].field === cell.getAttribute('id').slice(this.parent.element.id.length)) {\n if (this.cellDetails.rowIndex === btmIdx && e.action === 'tab') {\n if (gObj.editSettings.newRowPosition === 'Top') {\n gObj.editSettings.newRowPosition = 'Bottom';\n this.addRecord();\n gObj.editSettings.newRowPosition = 'Top';\n }\n else {\n this.addRecord();\n }\n this.addBatchRow = false;\n }\n else {\n this.saveCell();\n }\n }\n }\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.addCancelWhilePaging = function () {\n if (this.validateFormObj()) {\n this.parent.notify(events.destroyForm, {});\n this.parent.isEdit = false;\n this.editNext = false;\n this.mouseDownElement = undefined;\n this.isColored = false;\n }\n };\n BatchEdit.prototype.getBottomIndex = function () {\n var changes = this.getBatchChanges();\n return this.parent.getCurrentViewRecords().length + changes[literals.addedRecords].length -\n changes[literals.deletedRecords].length - 1;\n };\n return BatchEdit;\n}());\nexport { BatchEdit };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { NormalEdit } from './normal-edit';\n/**\n * `DialogEdit` module is used to handle dialog editing actions.\n *\n * @hidden\n */\nvar DialogEdit = /** @class */ (function (_super) {\n __extends(DialogEdit, _super);\n function DialogEdit(parent, serviceLocator, renderer) {\n var _this = \n //constructor\n _super.call(this, parent, serviceLocator) || this;\n _this.parent = parent;\n _this.serviceLocator = serviceLocator;\n _this.renderer = renderer;\n return _this;\n }\n DialogEdit.prototype.closeEdit = function () {\n //closeEdit\n _super.prototype.closeEdit.call(this);\n };\n DialogEdit.prototype.addRecord = function (data, index) {\n //addRecord\n _super.prototype.addRecord.call(this, data, index);\n };\n DialogEdit.prototype.endEdit = function () {\n //endEdit\n _super.prototype.endEdit.call(this);\n };\n DialogEdit.prototype.updateRow = function (index, data) {\n _super.prototype.updateRow.call(this, index, data);\n };\n DialogEdit.prototype.deleteRecord = function (fieldname, data) {\n //deleteRecord\n _super.prototype.deleteRecord.call(this, fieldname, data);\n };\n DialogEdit.prototype.startEdit = function (tr) {\n _super.prototype.startEdit.call(this, tr);\n };\n return DialogEdit;\n}(NormalEdit));\nexport { DialogEdit };\n","import { L10n, getValue, getDefaultDateObject, cldrData } from '@syncfusion/ej2-base';\nvar ARROWLEFT = 'ArrowLeft';\nvar ARROWRIGHT = 'ArrowRight';\nvar ARROWUP = 'ArrowUp';\nvar ARROWDOWN = 'ArrowDown';\nvar TAB = 'Tab';\nvar SHIFTTAB = 'shiftTab';\nvar END = 'End';\nvar HOME = 'Home';\nvar MaskedDateTime = /** @class */ (function () {\n function MaskedDateTime(parent) {\n this.mask = '';\n this.defaultConstant = {\n day: 'day',\n month: 'month',\n year: 'year',\n hour: 'hour',\n minute: 'minute',\n second: 'second',\n dayOfTheWeek: 'day of the week'\n };\n this.hiddenMask = '';\n this.validCharacters = 'dMyhmHfasz';\n this.isDayPart = false;\n this.isMonthPart = false;\n this.isYearPart = false;\n this.isHourPart = false;\n this.isMinutePart = false;\n this.isSecondsPart = false;\n this.isMilliSecondsPart = false;\n this.monthCharacter = '';\n this.periodCharacter = '';\n this.isHiddenMask = false;\n this.isComplete = false;\n this.isNavigate = false;\n this.navigated = false;\n this.isBlur = false;\n this.formatRegex = /EEEEE|EEEE|EEE|EE|E|dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yyy|yy|y|HH|H|hh|h|mm|m|fff|ff|f|aa|a|ss|s|zzzz|zzz|zz|z|'[^']*'|'[^']*'/g;\n this.isDeletion = false;\n this.isShortYear = false;\n this.isDeleteKey = false;\n this.isDateZero = false;\n this.isMonthZero = false;\n this.isYearZero = false;\n this.isLeadingZero = false;\n this.dayTypeCount = 0;\n this.monthTypeCount = 0;\n this.hourTypeCount = 0;\n this.minuteTypeCount = 0;\n this.secondTypeCount = 0;\n this.parent = parent;\n this.dateformat = this.getCulturedFormat();\n this.maskDateValue = this.parent.value != null ? new Date(+this.parent.value) : new Date();\n this.maskDateValue.setMonth(0);\n this.maskDateValue.setHours(0);\n this.maskDateValue.setMinutes(0);\n this.maskDateValue.setSeconds(0);\n this.previousDate = new Date(this.maskDateValue.getFullYear(), this.maskDateValue.getMonth(), this.maskDateValue.getDate(), this.maskDateValue.getHours(), this.maskDateValue.getMinutes(), this.maskDateValue.getSeconds());\n this.removeEventListener();\n this.addEventListener();\n }\n MaskedDateTime.prototype.getModuleName = function () {\n return 'MaskedDateTime';\n };\n MaskedDateTime.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on('createMask', this.createMask, this);\n this.parent.on('setMaskSelection', this.validCharacterCheck, this);\n this.parent.on('inputHandler', this.maskInputHandler, this);\n this.parent.on('keyDownHandler', this.maskKeydownHandler, this);\n this.parent.on('clearHandler', this.clearHandler, this);\n };\n MaskedDateTime.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('createMask', this.createMask);\n this.parent.off('setMaskSelection', this.validCharacterCheck);\n this.parent.off('inputHandler', this.maskInputHandler);\n this.parent.off('keyDownHandler', this.maskKeydownHandler);\n this.parent.off('clearHandler', this.clearHandler);\n };\n MaskedDateTime.prototype.createMask = function (mask) {\n this.isDayPart = this.isMonthPart = this.isYearPart = this.isHourPart = this.isMinutePart = this.isSecondsPart = false;\n this.dateformat = this.getCulturedFormat();\n if (this.parent.maskPlaceholder.day) {\n this.defaultConstant['day'] = this.parent.maskPlaceholder.day;\n }\n if (this.parent.maskPlaceholder.month) {\n this.defaultConstant['month'] = this.parent.maskPlaceholder.month;\n }\n if (this.parent.maskPlaceholder.year) {\n this.defaultConstant['year'] = this.parent.maskPlaceholder.year;\n }\n if (this.parent.maskPlaceholder.hour) {\n this.defaultConstant['hour'] = this.parent.maskPlaceholder.hour;\n }\n if (this.parent.maskPlaceholder.minute) {\n this.defaultConstant['minute'] = this.parent.maskPlaceholder.minute;\n }\n if (this.parent.maskPlaceholder.second) {\n this.defaultConstant['second'] = this.parent.maskPlaceholder.second;\n }\n if (this.parent.maskPlaceholder.dayOfTheWeek) {\n this.defaultConstant['dayOfTheWeek'] = this.parent.maskPlaceholder.dayOfTheWeek.toString();\n }\n this.getCUltureMaskFormat();\n var inputValue = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = true;\n this.hiddenMask = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = false;\n this.previousHiddenMask = this.hiddenMask;\n this.mask = this.previousValue = inputValue;\n this.parent.maskedDateValue = this.mask;\n if (this.parent.value) {\n this.navigated = true;\n this.isBlur = mask.isBlur;\n this.setDynamicValue();\n }\n };\n MaskedDateTime.prototype.getCUltureMaskFormat = function () {\n this.l10n = new L10n(this.parent.moduleName, this.defaultConstant, this.parent.locale);\n this.objectString = Object.keys(this.defaultConstant);\n for (var i = 0; i < this.objectString.length; i++) {\n this.defaultConstant[this.objectString[i].toString()] =\n this.l10n.getConstant(this.objectString[i].toString());\n }\n };\n MaskedDateTime.prototype.validCharacterCheck = function () {\n var start = this.parent.inputElement.selectionStart;\n if (this.parent.moduleName !== 'timepicker') {\n if (start === this.hiddenMask.length && this.mask === this.parent.inputElement.value) {\n start = 0;\n }\n }\n for (var i = start, j = start - 1; i < this.hiddenMask.length || j >= 0; i++, j--) {\n if (i < this.hiddenMask.length && this.validCharacters.indexOf(this.hiddenMask[i]) !== -1) {\n this.setSelection(this.hiddenMask[i]);\n return;\n }\n if (j >= 0 && this.validCharacters.indexOf(this.hiddenMask[j]) !== -1) {\n this.setSelection(this.hiddenMask[j]);\n return;\n }\n }\n };\n MaskedDateTime.prototype.setDynamicValue = function () {\n this.maskDateValue = new Date(+this.parent.value);\n this.isDayPart = this.isMonthPart = this.isYearPart = this.isHourPart = this.isMinutePart = this.isSecondsPart = true;\n this.updateValue();\n if (!this.isBlur) {\n this.validCharacterCheck();\n }\n };\n MaskedDateTime.prototype.setSelection = function (validChar) {\n var start = -1;\n var end = 0;\n for (var i = 0; i < this.hiddenMask.length; i++) {\n if (this.hiddenMask[i] === validChar) {\n end = i + 1;\n if (start === -1) {\n start = i;\n }\n }\n }\n if (start < 0) {\n start = 0;\n }\n this.parent.inputElement.setSelectionRange(start, end);\n };\n MaskedDateTime.prototype.maskKeydownHandler = function (args) {\n this.dayTypeCount = this.monthTypeCount = this.hourTypeCount = this.minuteTypeCount = this.secondTypeCount = 0;\n if (args.e.key === 'Delete') {\n this.isDeleteKey = true;\n return;\n }\n if ((!args.e.altKey && !args.e.ctrlKey) && (args.e.key === ARROWLEFT || args.e.key === ARROWRIGHT\n || args.e.key === SHIFTTAB || args.e.key === TAB || args.e.action === SHIFTTAB ||\n args.e.key === END || args.e.key === HOME)) {\n var start = this.parent.inputElement.selectionStart;\n var end = this.parent.inputElement.selectionEnd;\n var length_1 = this.parent.inputElement.value.length;\n if ((start === 0 && end === length_1) && (args.e.key === TAB || args.e.action === SHIFTTAB)) {\n var index = args.e.action === SHIFTTAB ? end : 0;\n this.parent.inputElement.selectionStart = this.parent.inputElement.selectionEnd = index;\n }\n if (args.e.key === END || args.e.key === HOME) {\n var range = args.e.key === END ? length_1 : 0;\n this.parent.inputElement.selectionStart = this.parent.inputElement.selectionEnd = range;\n }\n this.navigateSelection(args.e.key === ARROWLEFT || args.e.action === SHIFTTAB || args.e.key === END ? true : false);\n }\n if ((!args.e.altKey && !args.e.ctrlKey) && (args.e.key === ARROWUP || args.e.key === ARROWDOWN)) {\n var start = this.parent.inputElement.selectionStart;\n var formatText = '';\n if (this.validCharacters.indexOf(this.hiddenMask[start]) !== -1) {\n formatText = this.hiddenMask[start];\n }\n this.dateAlteration(args.e.key === ARROWDOWN ? true : false);\n var inputValue = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = true;\n this.hiddenMask = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = false;\n this.previousHiddenMask = this.hiddenMask;\n this.previousValue = inputValue;\n this.parent.inputElement.value = inputValue;\n for (var i = 0; i < this.hiddenMask.length; i++) {\n if (formatText === this.hiddenMask[i]) {\n start = i;\n break;\n }\n }\n this.parent.inputElement.selectionStart = start;\n this.validCharacterCheck();\n }\n };\n MaskedDateTime.prototype.isPersist = function () {\n var isPersist = this.parent.isFocused || this.navigated;\n return isPersist;\n };\n MaskedDateTime.prototype.differenceCheck = function () {\n var start = this.parent.inputElement.selectionStart;\n var inputValue = this.parent.inputElement.value;\n var previousVal = this.previousValue.substring(0, start + this.previousValue.length - inputValue.length);\n var newVal = inputValue.substring(0, start);\n var newDateValue = new Date(+this.maskDateValue);\n var maxDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth() + 1, 0).getDate();\n if (previousVal.indexOf(newVal) === 0 && (newVal.length === 0 ||\n this.previousHiddenMask[newVal.length - 1] !== this.previousHiddenMask[newVal.length])) {\n for (var i = newVal.length; i < previousVal.length; i++) {\n if (this.previousHiddenMask[i] !== '' && this.validCharacters.indexOf(this.previousHiddenMask[i]) >= 0) {\n this.isDeletion = this.handleDeletion(this.previousHiddenMask[i], false);\n }\n }\n if (this.isDeletion) {\n return;\n }\n }\n switch (this.previousHiddenMask[start - 1]) {\n case 'd':\n {\n var date = (this.isDayPart && newDateValue.getDate().toString().length < 2 &&\n !this.isPersist() ? newDateValue.getDate() * 10 : 0) + parseInt(newVal[start - 1], 10);\n this.isDateZero = (newVal[start - 1] === '0');\n this.parent.isFocused = this.parent.isFocused ? false : this.parent.isFocused;\n this.navigated = this.navigated ? false : this.navigated;\n if (isNaN(date)) {\n return;\n }\n for (var i = 0; date > maxDate; i++) {\n date = parseInt(date.toString().slice(1), 10);\n }\n if (date >= 1) {\n newDateValue.setDate(date);\n this.isNavigate = date.toString().length === 2;\n this.previousDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth(), newDateValue.getDate());\n if (newDateValue.getMonth() !== this.maskDateValue.getMonth()) {\n return;\n }\n this.isDayPart = true;\n this.dayTypeCount = this.dayTypeCount + 1;\n }\n else {\n this.isDayPart = false;\n this.dayTypeCount = this.isDateZero ? this.dayTypeCount + 1 : this.dayTypeCount;\n }\n break;\n }\n case 'M':\n {\n var month = void 0;\n if (newDateValue.getMonth().toString().length < 2 && !this.isPersist()) {\n month = (this.isMonthPart ? (newDateValue.getMonth() + 1) * 10 : 0) + parseInt(newVal[start - 1], 10);\n }\n else {\n month = parseInt(newVal[start - 1], 10);\n }\n this.parent.isFocused = this.parent.isFocused ? false : this.parent.isFocused;\n this.navigated = this.navigated ? false : this.navigated;\n this.isMonthZero = (newVal[start - 1] === '0');\n if (!isNaN(month)) {\n while (month > 12) {\n month = parseInt(month.toString().slice(1), 10);\n }\n if (month >= 1) {\n newDateValue.setMonth(month - 1);\n if (month >= 10 || month === 1) {\n if (this.isLeadingZero && month === 1) {\n this.isNavigate = month.toString().length === 1;\n this.isLeadingZero = false;\n }\n else {\n this.isNavigate = month.toString().length === 2;\n }\n }\n else {\n this.isNavigate = month.toString().length === 1;\n }\n if (newDateValue.getMonth() !== month - 1) {\n newDateValue.setDate(1);\n newDateValue.setMonth(month - 1);\n }\n if (this.isDayPart) {\n var previousMaxDate = new Date(this.previousDate.getFullYear(), this.previousDate.getMonth() + 1, 0).getDate();\n var currentMaxDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth() + 1, 0).getDate();\n if (this.previousDate.getDate() === previousMaxDate && currentMaxDate <= previousMaxDate) {\n newDateValue.setDate(currentMaxDate);\n }\n }\n this.previousDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth(), newDateValue.getDate());\n this.isMonthPart = true;\n this.monthTypeCount = this.monthTypeCount + 1;\n this.isLeadingZero = false;\n }\n else {\n newDateValue.setMonth(0);\n this.isLeadingZero = true;\n this.isMonthPart = false;\n this.monthTypeCount = this.isMonthZero ? this.monthTypeCount + 1 : this.monthTypeCount;\n }\n }\n else {\n var monthString = (this.getCulturedValue('months[stand-alone].wide'));\n var monthValue = Object.keys(monthString);\n this.monthCharacter += newVal[start - 1].toLowerCase();\n while (this.monthCharacter.length > 0) {\n var i = 1;\n for (var _i = 0, monthValue_1 = monthValue; _i < monthValue_1.length; _i++) {\n var months = monthValue_1[_i];\n if (monthString[i].toLowerCase().indexOf(this.monthCharacter) === 0) {\n newDateValue.setMonth(i - 1);\n this.isMonthPart = true;\n this.maskDateValue = newDateValue;\n return;\n }\n i++;\n }\n this.monthCharacter = this.monthCharacter.substring(1, this.monthCharacter.length);\n }\n }\n break;\n }\n case 'y':\n {\n var year = (this.isYearPart && (newDateValue.getFullYear().toString().length < 4\n && !this.isShortYear) ? newDateValue.getFullYear() * 10 : 0) + parseInt(newVal[start - 1], 10);\n var yearValue = (this.dateformat.match(/y/g) || []).length;\n yearValue = yearValue !== 2 ? 4 : yearValue;\n this.isShortYear = false;\n this.isYearZero = (newVal[start - 1] === '0');\n if (isNaN(year)) {\n return;\n }\n while (year > 9999) {\n year = parseInt(year.toString().slice(1), 10);\n }\n if (year < 1) {\n this.isYearPart = false;\n }\n else {\n newDateValue.setFullYear(year);\n if (year.toString().length === yearValue) {\n this.isNavigate = true;\n }\n this.previousDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth(), newDateValue.getDate());\n this.isYearPart = true;\n }\n break;\n }\n case 'h':\n this.hour = (this.isHourPart && (newDateValue.getHours() % 12 || 12).toString().length < 2\n && !this.isPersist() ? (newDateValue.getHours() % 12 || 12) * 10 : 0) + parseInt(newVal[start - 1], 10);\n this.parent.isFocused = this.parent.isFocused ? false : this.parent.isFocused;\n this.navigated = this.navigated ? false : this.navigated;\n if (isNaN(this.hour)) {\n return;\n }\n while (this.hour > 12) {\n this.hour = parseInt(this.hour.toString().slice(1), 10);\n }\n newDateValue.setHours(Math.floor(newDateValue.getHours() / 12) * 12 + (this.hour % 12));\n this.isNavigate = this.hour.toString().length === 2;\n this.isHourPart = true;\n this.hourTypeCount = this.hourTypeCount + 1;\n break;\n case 'H':\n this.hour = (this.isHourPart && newDateValue.getHours().toString().length < 2 &&\n !this.isPersist() ? newDateValue.getHours() * 10 : 0) + parseInt(newVal[start - 1], 10);\n this.parent.isFocused = this.parent.isFocused ? false : this.parent.isFocused;\n this.navigated = this.navigated ? false : this.navigated;\n if (isNaN(this.hour)) {\n return;\n }\n for (var i = 0; this.hour > 23; i++) {\n this.hour = parseInt(this.hour.toString().slice(1), 10);\n }\n newDateValue.setHours(this.hour);\n this.isNavigate = this.hour.toString().length === 2;\n this.isHourPart = true;\n this.hourTypeCount = this.hourTypeCount + 1;\n break;\n case 'm':\n {\n var minutes = (this.isMinutePart && newDateValue.getMinutes().toString().length < 2\n && !this.isPersist() ? newDateValue.getMinutes() * 10 : 0) + parseInt(newVal[start - 1], 10);\n this.parent.isFocused = this.parent.isFocused ? false : this.parent.isFocused;\n this.navigated = this.navigated ? false : this.navigated;\n if (isNaN(minutes)) {\n return;\n }\n for (var i = 0; minutes > 59; i++) {\n minutes = parseInt(minutes.toString().slice(1), 10);\n }\n newDateValue.setMinutes(minutes);\n this.isNavigate = minutes.toString().length === 2;\n this.isMinutePart = true;\n this.minuteTypeCount = this.minuteTypeCount + 1;\n break;\n }\n case 's':\n {\n var seconds = (this.isSecondsPart && newDateValue.getSeconds().toString().length < 2 &&\n !this.isPersist() ? newDateValue.getSeconds() * 10 : 0) + parseInt(newVal[start - 1], 10);\n this.parent.isFocused = this.parent.isFocused ? false : this.parent.isFocused;\n this.navigated = this.navigated ? false : this.navigated;\n if (isNaN(seconds)) {\n return;\n }\n for (var i = 0; seconds > 59; i++) {\n seconds = parseInt(seconds.toString().slice(1), 10);\n }\n newDateValue.setSeconds(seconds);\n this.isNavigate = seconds.toString().length === 2;\n this.isSecondsPart = true;\n this.secondTypeCount = this.secondTypeCount + 1;\n break;\n }\n case 'a':\n {\n this.periodCharacter += newVal[start - 1].toLowerCase();\n var periodString = (this.getCulturedValue('dayPeriods.format.wide'));\n var periodkeys = Object.keys(periodString);\n for (var i = 0; this.periodCharacter.length > 0; i++) {\n if ((periodString[periodkeys[0]].toLowerCase().indexOf(this.periodCharacter) === 0\n && newDateValue.getHours() >= 12) || (periodString[periodkeys[1]].toLowerCase().\n indexOf(this.periodCharacter) === 0 && newDateValue.getHours() < 12)) {\n newDateValue.setHours((newDateValue.getHours() + 12) % 24);\n this.maskDateValue = newDateValue;\n }\n this.periodCharacter = this.periodCharacter.substring(1, this.periodCharacter.length);\n }\n break;\n }\n default:\n break;\n }\n this.maskDateValue = newDateValue;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n MaskedDateTime.prototype.formatCheck = function () {\n var proxy = null || this;\n function formatValueSpecifier(formattext) {\n var result;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var daysAbbreviated = proxy.getCulturedValue('days[stand-alone].abbreviated');\n var dayKeyAbbreviated = Object.keys(daysAbbreviated);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var daysWide = (proxy.getCulturedValue('days[stand-alone].wide'));\n var dayKeyWide = Object.keys(daysWide);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var daysNarrow = (proxy.getCulturedValue('days[stand-alone].narrow'));\n var dayKeyNarrow = Object.keys(daysNarrow);\n var monthAbbreviated = (proxy.getCulturedValue('months[stand-alone].abbreviated'));\n var monthWide = (proxy.getCulturedValue('months[stand-alone].wide'));\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var periodString = (proxy.getCulturedValue('dayPeriods.format.wide'));\n var periodkeys = Object.keys(periodString);\n var milliseconds;\n var dateOptions;\n switch (formattext) {\n case 'ddd':\n case 'dddd':\n case 'd':\n result = proxy.isDayPart ? proxy.maskDateValue.getDate().toString() : proxy.defaultConstant['day'].toString();\n result = proxy.zeroCheck(proxy.isDateZero, proxy.isDayPart, result);\n if (proxy.dayTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.dayTypeCount = 0;\n }\n break;\n case 'dd':\n result = proxy.isDayPart ? proxy.roundOff(proxy.maskDateValue.getDate(), 2) : proxy.defaultConstant['day'].toString();\n result = proxy.zeroCheck(proxy.isDateZero, proxy.isDayPart, result);\n if (proxy.dayTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.dayTypeCount = 0;\n }\n break;\n case 'E':\n case 'EE':\n case 'EEE':\n result = proxy.isDayPart && proxy.isMonthPart && proxy.isYearPart ? daysAbbreviated[dayKeyAbbreviated[proxy.maskDateValue.getDay()]].toString() : proxy.defaultConstant['dayOfTheWeek'].toString();\n break;\n case 'EEEE':\n result = proxy.isDayPart && proxy.isMonthPart && proxy.isYearPart ? daysWide[dayKeyWide[proxy.maskDateValue.getDay()]].toString() : proxy.defaultConstant['dayOfTheWeek'].toString();\n break;\n case 'EEEEE':\n result = proxy.isDayPart && proxy.isMonthPart && proxy.isYearPart ? daysNarrow[dayKeyNarrow[proxy.maskDateValue.getDay()]].toString() : proxy.defaultConstant['dayOfTheWeek'].toString();\n break;\n case 'M':\n result = proxy.isMonthPart ? (proxy.maskDateValue.getMonth() + 1).toString() : proxy.defaultConstant['month'].toString();\n result = proxy.zeroCheck(proxy.isMonthZero, proxy.isMonthPart, result);\n if (proxy.monthTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.monthTypeCount = 0;\n }\n break;\n case 'MM':\n result = proxy.isMonthPart ? proxy.roundOff(proxy.maskDateValue.getMonth() + 1, 2) : proxy.defaultConstant['month'].toString();\n result = proxy.zeroCheck(proxy.isMonthZero, proxy.isMonthPart, result);\n if (proxy.monthTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.monthTypeCount = 0;\n }\n break;\n case 'MMM':\n result = proxy.isMonthPart ? monthAbbreviated[proxy.maskDateValue.getMonth() + 1] : proxy.defaultConstant['month'].toString();\n break;\n case 'MMMM':\n result = proxy.isMonthPart ? monthWide[proxy.maskDateValue.getMonth() + 1] : proxy.defaultConstant['month'].toString();\n break;\n case 'yy':\n result = proxy.isYearPart ? proxy.roundOff(proxy.maskDateValue.getFullYear() % 100, 2) : proxy.defaultConstant['year'].toString();\n result = proxy.zeroCheck(proxy.isYearZero, proxy.isYearPart, result);\n break;\n case 'y':\n case 'yyy':\n case 'yyyy':\n result = proxy.isYearPart ? proxy.roundOff(proxy.maskDateValue.getFullYear(), 4) : proxy.defaultConstant['year'].toString();\n result = proxy.zeroCheck(proxy.isYearZero, proxy.isYearPart, result);\n break;\n case 'h':\n result = proxy.isHourPart ? (proxy.maskDateValue.getHours() % 12 || 12).toString() : proxy.defaultConstant['hour'].toString();\n if (proxy.hourTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.hourTypeCount = 0;\n }\n break;\n case 'hh':\n result = proxy.isHourPart ? proxy.roundOff(proxy.maskDateValue.getHours() % 12 || 12, 2) : proxy.defaultConstant['hour'].toString();\n if (proxy.hourTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.hourTypeCount = 0;\n }\n break;\n case 'H':\n result = proxy.isHourPart ? proxy.maskDateValue.getHours().toString() : proxy.defaultConstant['hour'].toString();\n if (proxy.hourTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.hourTypeCount = 0;\n }\n break;\n case 'HH':\n result = proxy.isHourPart ? proxy.roundOff(proxy.maskDateValue.getHours(), 2) : proxy.defaultConstant['hour'].toString();\n if (proxy.hourTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.hourTypeCount = 0;\n }\n break;\n case 'm':\n result = proxy.isMinutePart ? proxy.maskDateValue.getMinutes().toString() : proxy.defaultConstant['minute'].toString();\n if (proxy.minuteTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.minuteTypeCount = 0;\n }\n break;\n case 'mm':\n result = proxy.isMinutePart ? proxy.roundOff(proxy.maskDateValue.getMinutes(), 2) : proxy.defaultConstant['minute'].toString();\n if (proxy.minuteTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.minuteTypeCount = 0;\n }\n break;\n case 's':\n result = proxy.isSecondsPart ? proxy.maskDateValue.getSeconds().toString() : proxy.defaultConstant['second'].toString();\n if (proxy.secondTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.secondTypeCount = 0;\n }\n break;\n case 'ss':\n result = proxy.isSecondsPart ? proxy.roundOff(proxy.maskDateValue.getSeconds(), 2) : proxy.defaultConstant['second'].toString();\n if (proxy.secondTypeCount === 2) {\n proxy.isNavigate = true;\n proxy.secondTypeCount = 0;\n }\n break;\n case 'f':\n result = Math.floor(proxy.maskDateValue.getMilliseconds() / 100).toString();\n break;\n case 'ff':\n milliseconds = proxy.maskDateValue.getMilliseconds();\n if (proxy.maskDateValue.getMilliseconds() > 99) {\n milliseconds = Math.floor(proxy.maskDateValue.getMilliseconds() / 10);\n }\n result = proxy.roundOff(milliseconds, 2);\n break;\n case 'fff':\n result = proxy.roundOff(proxy.maskDateValue.getMilliseconds(), 3);\n break;\n case 'a':\n case 'aa':\n result = proxy.maskDateValue.getHours() < 12 ? periodString['am'] : periodString['pm'];\n break;\n case 'z':\n case 'zz':\n case 'zzz':\n case 'zzzz':\n dateOptions = {\n format: formattext,\n type: 'dateTime', skeleton: 'yMd', calendar: proxy.parent.calendarMode\n };\n result = proxy.parent.globalize.formatDate(proxy.maskDateValue, dateOptions);\n break;\n }\n result = result !== undefined ? result : formattext.slice(1, formattext.length - 1);\n if (proxy.isHiddenMask) {\n var hiddenChar = '';\n for (var i = 0; i < result.length; i++) {\n hiddenChar += formattext[0];\n }\n return hiddenChar;\n }\n else {\n return result;\n }\n }\n return formatValueSpecifier;\n };\n MaskedDateTime.prototype.maskInputHandler = function () {\n var start = this.parent.inputElement.selectionStart;\n var formatText = '';\n if (this.validCharacters.indexOf(this.hiddenMask[start]) !== -1) {\n formatText = this.hiddenMask[start];\n }\n this.differenceCheck();\n var inputValue = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = true;\n this.hiddenMask = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isDateZero = this.isMonthZero = this.isYearZero = false;\n this.isHiddenMask = false;\n this.previousHiddenMask = this.hiddenMask;\n this.previousValue = inputValue;\n this.parent.inputElement.value = inputValue;\n this.parent.inputElement.value = inputValue;\n for (var i = 0; i < this.hiddenMask.length; i++) {\n if (formatText === this.hiddenMask[i]) {\n start = i;\n break;\n }\n }\n this.parent.inputElement.selectionStart = start;\n this.validCharacterCheck();\n if ((this.isNavigate || this.isDeletion) && !this.isDeleteKey) {\n var isbackward = this.isNavigate ? false : true;\n this.isNavigate = this.isDeletion = false;\n this.navigateSelection(isbackward);\n }\n if (this.isDeleteKey) {\n this.isDeletion = false;\n }\n this.isDeleteKey = false;\n };\n MaskedDateTime.prototype.navigateSelection = function (isbackward) {\n var start = this.parent.inputElement.selectionStart;\n var end = this.parent.inputElement.selectionEnd;\n var formatIndex = isbackward ? start - 1 : end;\n this.navigated = true;\n while (formatIndex < this.hiddenMask.length && formatIndex >= 0) {\n if (this.validCharacters.indexOf(this.hiddenMask[formatIndex]) >= 0) {\n this.setSelection(this.hiddenMask[formatIndex]);\n break;\n }\n formatIndex = formatIndex + (isbackward ? -1 : 1);\n }\n };\n MaskedDateTime.prototype.roundOff = function (val, count) {\n var valueText = val.toString();\n var length = count - valueText.length;\n var result = '';\n for (var i = 0; i < length; i++) {\n result += '0';\n }\n return result + valueText;\n };\n MaskedDateTime.prototype.zeroCheck = function (isZero, isDayPart, resultValue) {\n var result = resultValue;\n if (isZero && !isDayPart) {\n result = '0';\n }\n return result;\n };\n MaskedDateTime.prototype.handleDeletion = function (format, isSegment) {\n switch (format) {\n case 'd':\n this.isDayPart = isSegment;\n break;\n case 'M':\n this.isMonthPart = isSegment;\n if (!isSegment) {\n this.maskDateValue.setMonth(0);\n this.monthCharacter = '';\n }\n break;\n case 'y':\n this.isYearPart = isSegment;\n break;\n case 'H':\n case 'h':\n this.isHourPart = isSegment;\n if (!isSegment) {\n this.periodCharacter = '';\n }\n break;\n case 'm':\n this.isMinutePart = isSegment;\n break;\n case 's':\n this.isSecondsPart = isSegment;\n break;\n default:\n return false;\n }\n return true;\n };\n MaskedDateTime.prototype.dateAlteration = function (isDecrement) {\n var start = this.parent.inputElement.selectionStart;\n var formatText = '';\n if (this.validCharacters.indexOf(this.hiddenMask[start]) !== -1) {\n formatText = this.hiddenMask[start];\n }\n else {\n return;\n }\n var newDateValue = new Date(this.maskDateValue.getFullYear(), this.maskDateValue.getMonth(), this.maskDateValue.getDate(), this.maskDateValue.getHours(), this.maskDateValue.getMinutes(), this.maskDateValue.getSeconds());\n this.previousDate = new Date(this.maskDateValue.getFullYear(), this.maskDateValue.getMonth(), this.maskDateValue.getDate(), this.maskDateValue.getHours(), this.maskDateValue.getMinutes(), this.maskDateValue.getSeconds());\n var incrementValue = isDecrement ? -1 : 1;\n switch (formatText) {\n case 'd':\n newDateValue.setDate(newDateValue.getDate() + incrementValue);\n break;\n case 'M':\n {\n var newMonth = newDateValue.getMonth() + incrementValue;\n newDateValue.setDate(1);\n newDateValue.setMonth(newMonth);\n if (this.isDayPart) {\n var previousMaxDate = new Date(this.previousDate.getFullYear(), this.previousDate.getMonth() + 1, 0).getDate();\n var currentMaxDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth() + 1, 0).getDate();\n if (this.previousDate.getDate() === previousMaxDate && currentMaxDate <= previousMaxDate) {\n newDateValue.setDate(currentMaxDate);\n }\n else {\n newDateValue.setDate(this.previousDate.getDate());\n }\n }\n else {\n newDateValue.setDate(this.previousDate.getDate());\n }\n this.previousDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth(), newDateValue.getDate());\n break;\n }\n case 'y':\n newDateValue.setFullYear(newDateValue.getFullYear() + incrementValue);\n break;\n case 'H':\n case 'h':\n newDateValue.setHours(newDateValue.getHours() + incrementValue);\n break;\n case 'm':\n newDateValue.setMinutes(newDateValue.getMinutes() + incrementValue);\n break;\n case 's':\n newDateValue.setSeconds(newDateValue.getSeconds() + incrementValue);\n break;\n case 'a':\n newDateValue.setHours((newDateValue.getHours() + 12) % 24);\n break;\n default:\n break;\n }\n this.maskDateValue = newDateValue.getFullYear() > 0 ? newDateValue : this.maskDateValue;\n if (this.validCharacters.indexOf(this.hiddenMask[start]) !== -1) {\n this.handleDeletion(this.hiddenMask[start], true);\n }\n };\n MaskedDateTime.prototype.getCulturedValue = function (format) {\n var locale = this.parent.locale;\n var result;\n if (locale === 'en' || locale === 'en-US') {\n result = getValue(format, getDefaultDateObject());\n }\n else {\n result = getValue('main.' + '' + locale + ('.dates.calendars.gregorian.' + format), cldrData);\n }\n return result;\n };\n MaskedDateTime.prototype.getCulturedFormat = function () {\n var formatString = (this.getCulturedValue('dateTimeFormats[availableFormats].yMd')).toString();\n if (this.parent.moduleName === 'datepicker') {\n formatString = (this.getCulturedValue('dateTimeFormats[availableFormats].yMd')).toString();\n if (this.parent.format && this.parent.formatString) {\n formatString = this.parent.formatString;\n }\n }\n if (this.parent.moduleName === 'datetimepicker') {\n formatString = (this.getCulturedValue('dateTimeFormats[availableFormats].yMd')).toString();\n if (this.parent.dateTimeFormat) {\n formatString = this.parent.dateTimeFormat;\n }\n }\n if (this.parent.moduleName === 'timepicker') {\n formatString = this.parent.cldrTimeFormat();\n }\n return formatString;\n };\n MaskedDateTime.prototype.clearHandler = function () {\n this.isDayPart = this.isMonthPart = this.isYearPart = this.isHourPart = this.isMinutePart = this.isSecondsPart = false;\n this.updateValue();\n };\n MaskedDateTime.prototype.updateValue = function () {\n this.monthCharacter = this.periodCharacter = '';\n var inputValue = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = true;\n this.hiddenMask = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = false;\n this.previousHiddenMask = this.hiddenMask;\n this.previousValue = inputValue;\n this.parent.updateInputValue(inputValue);\n };\n MaskedDateTime.prototype.destroy = function () {\n this.removeEventListener();\n };\n return MaskedDateTime;\n}());\nexport { MaskedDateTime };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { extend } from '@syncfusion/ej2-base';\nimport { DatePicker, DateTimePicker, MaskedDateTime } from '@syncfusion/ej2-calendars';\nimport { isEditable, getObject, getCustomDateFormat } from '../base/util';\nimport { EditCellBase } from './edit-cell-base';\nDatePicker.Inject(MaskedDateTime);\n/**\n * `DatePickerEditCell` is used to handle datepicker cell type editing.\n *\n * @hidden\n */\nvar DatePickerEditCell = /** @class */ (function (_super) {\n __extends(DatePickerEditCell, _super);\n function DatePickerEditCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DatePickerEditCell.prototype.write = function (args) {\n this.edit = this.parent.editModule;\n if (args.column.editType === 'datepickeredit') {\n this.obj = new DatePicker(extend(dateanddatetimerender(args, this.parent.editSettings.mode, this.parent.enableRtl, this.parent.cssClass, this), args.column.edit.params));\n }\n else if (args.column.editType === 'datetimepickeredit') {\n this.obj = new DateTimePicker(extend(dateanddatetimerender(args, this.parent.editSettings.mode, this.parent.enableRtl, this.parent.cssClass, this), args.column.edit.params));\n }\n this.obj.appendTo(args.element);\n };\n return DatePickerEditCell;\n}(EditCellBase));\nexport { DatePickerEditCell };\n// eslint-disable-next-line\nfunction dateanddatetimerender(args, mode, rtl, css, datePickerEditCell) {\n var isInline = mode !== 'Dialog';\n var format = getCustomDateFormat(args.column.format, args.column.type);\n var value = getObject(args.column.field, args.rowData);\n value = value ? new Date(value) : null;\n return {\n floatLabelType: isInline ? 'Never' : 'Always',\n value: value,\n format: format,\n placeholder: isInline ?\n '' : args.column.headerText, enableRtl: rtl,\n enabled: isEditable(args.column, args.requestType, args.element),\n cssClass: css ? css : null,\n close: datePickerClose.bind(datePickerEditCell)\n };\n}\n// eslint-disable-next-line\nfunction datePickerClose(args) {\n if (args.event && args.event.action === 'escape') {\n this.edit.editCellDialogClose = true;\n }\n}\n","/**\n * `TemplateEditCell` is used to handle template cell.\n *\n * @hidden\n */\nvar TemplateEditCell = /** @class */ (function () {\n function TemplateEditCell(parent) {\n this.parent = parent;\n }\n TemplateEditCell.prototype.read = function (element, value) {\n return value;\n };\n TemplateEditCell.prototype.write = function () {\n //\n };\n TemplateEditCell.prototype.destroy = function () {\n //\n };\n return TemplateEditCell;\n}());\nexport { TemplateEditCell };\n","/**\n * public Enum for `PdfBorderOverlapStyle`.\n * @private\n */\nexport var PdfBorderOverlapStyle;\n(function (PdfBorderOverlapStyle) {\n /**\n * Specifies the type of `Overlap`.\n * @private\n */\n PdfBorderOverlapStyle[PdfBorderOverlapStyle[\"Overlap\"] = 0] = \"Overlap\";\n /**\n * Specifies the type of `Inside`.\n * @private\n */\n PdfBorderOverlapStyle[PdfBorderOverlapStyle[\"Inside\"] = 1] = \"Inside\";\n})(PdfBorderOverlapStyle || (PdfBorderOverlapStyle = {}));\n","import { closest, addClass, select } from '@syncfusion/ej2-base';\nimport { extend, getValue } from '@syncfusion/ej2-base';\nimport { remove } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { EditRender } from '../renderer/edit-renderer';\nimport { BooleanEditCell } from '../renderer/boolean-edit-cell';\nimport { DropDownEditCell } from '../renderer/dropdown-edit-cell';\nimport { NumericEditCell } from '../renderer/numeric-edit-cell';\nimport { DefaultEditCell } from '../renderer/default-edit-cell';\nimport { InlineEdit } from './inline-edit';\nimport { BatchEdit } from './batch-edit';\nimport { DialogEdit } from './dialog-edit';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { parentsUntil, getComplexFieldID, getParsedFieldID, setComplexFieldID, getScrollBarWidth, setValidationRuels } from '../base/util';\nimport { FormValidator } from '@syncfusion/ej2-inputs';\nimport { DatePickerEditCell } from '../renderer/datepicker-edit-cell';\nimport { calculateRelativeBasedPosition } from '@syncfusion/ej2-popups';\nimport { TemplateEditCell } from '../renderer/template-edit-cell';\nimport { DataUtil } from '@syncfusion/ej2-data';\nimport { addRemoveEventListener, padZero, getParentIns } from '../base/util';\nimport * as literals from '../base/string-literals';\n/**\n * The `Edit` module is used to handle editing actions.\n */\nvar Edit = /** @class */ (function () {\n /**\n * Constructor for the Grid editing module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the servicelocator\n * @hidden\n */\n function Edit(parent, serviceLocator) {\n /** @hidden */\n this.isShowAddedRowValidate = false;\n this.editType = { 'Inline': InlineEdit, 'Normal': InlineEdit, 'Batch': BatchEdit, 'Dialog': DialogEdit };\n this.fieldname = '';\n this.data = {};\n /* @hidden */\n this.editCellDialogClose = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.l10n = this.serviceLocator.getService('localization');\n this.addEventListener();\n this.updateEditObj();\n this.createAlertDlg();\n this.createConfirmDlg();\n }\n Edit.prototype.updateColTypeObj = function () {\n var cols = this.parent.columnModel;\n for (var i = 0; i < cols.length; i++) {\n if (this.parent.editSettings.template || cols[parseInt(i.toString(), 10)].editTemplate) {\n var templteCell = 'templateedit';\n cols[parseInt(i.toString(), 10)].edit = extend(new Edit.editCellType[\"\" + templteCell](this.parent), cols[parseInt(i.toString(), 10)].edit || {});\n }\n else {\n cols[parseInt(i.toString(), 10)].edit = extend(new Edit.editCellType[cols[parseInt(i.toString(), 10)].editType\n && Edit.editCellType[cols[parseInt(i.toString(), 10)].editType] ?\n cols[parseInt(i.toString(), 10)].editType : 'defaultedit'](this.parent, this.serviceLocator), cols[parseInt(i.toString(), 10)].edit || {});\n }\n }\n this.parent.log('primary_column_missing');\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Edit.prototype.getModuleName = function () {\n return 'edit';\n };\n /**\n * @param {NotifyArgs} e - specifies the notifyargs\n * @returns {void}\n * @hidden\n */\n Edit.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n var gObj = this.parent;\n for (var _i = 0, _a = Object.keys(e.properties); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowAdding':\n case 'allowDeleting':\n case 'allowEditing':\n if (gObj.editSettings.allowAdding || gObj.editSettings.allowEditing || gObj.editSettings.allowDeleting) {\n this.initialEnd();\n }\n break;\n case 'mode':\n this.updateEditObj();\n gObj.isEdit = gObj.editSettings.showAddNewRow ? true : false;\n gObj.refresh();\n break;\n }\n }\n };\n Edit.prototype.updateEditObj = function () {\n if (this.editModule) {\n this.editModule.destroy();\n }\n this.renderer = new EditRender(this.parent, this.serviceLocator);\n this.editModule = new this.editType[this.parent.editSettings.mode](this.parent, this.serviceLocator, this.renderer);\n };\n Edit.prototype.initialEnd = function () {\n this.updateColTypeObj();\n };\n /**\n * Edits any bound record in the Grid by TR element.\n *\n * @param {HTMLTableRowElement} tr - Defines the table row to be edited.\n * @returns {void}\n */\n Edit.prototype.startEdit = function (tr) {\n var gObj = this.parent;\n if (!gObj.editSettings.allowEditing || (gObj.isEdit && (!gObj.editSettings.showAddNewRow ||\n (gObj.editSettings.showAddNewRow && !isNullOrUndefined(gObj.element.querySelector('.' + literals.editedRow)))))\n || gObj.editSettings.mode === 'Batch') {\n return;\n }\n this.parent.element.classList.add('e-editing');\n if (!gObj.getSelectedRows().length || isNullOrUndefined(this.parent.getRowByIndex(parseInt(this.parent.getSelectedRows()[0].getAttribute('data-rowindex'), 10)))) {\n if (!tr) {\n this.showDialog('EditOperationAlert', this.alertDObj);\n return;\n }\n }\n else if (!tr) {\n tr = gObj.getSelectedRows()[0];\n }\n if (this.parent.enableVirtualization && this.parent.editSettings.mode === 'Normal') {\n var idx = parseInt(tr.getAttribute('data-rowindex'), 10);\n tr = this.parent.getRowByIndex(idx);\n }\n var lastTr = gObj.getContent().querySelector('tr:last-child');\n var hdrTbody = gObj.getHeaderContent().querySelector('tbody');\n if (gObj.frozenRows && isNullOrUndefined(lastTr) && hdrTbody && hdrTbody.querySelector('tr:last-child')) {\n this.isLastRow = tr.rowIndex === parseInt(gObj.getHeaderContent().querySelector('tbody').querySelector('tr:last-child').getAttribute('data-rowindex'), 10);\n }\n else if (lastTr) {\n this.isLastRow = tr.rowIndex === lastTr.rowIndex;\n }\n if (tr.style.display === 'none') {\n return;\n }\n this.editModule.startEdit(tr);\n this.refreshToolbar();\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n this.parent.notify('start-edit', {});\n if (gObj.editSettings.showAddNewRow) {\n this.destroyToolTip();\n }\n };\n /**\n * @param {Element} tr - specifies the tr element\n * @param {object} args - specifies the object\n * @param {Element} args.row -specfifes the row\n * @param {string} args.requestType - specifies the request type\n * @returns {void}\n * @hidden\n */\n Edit.prototype.checkLastRow = function (tr, args) {\n var checkLastRow = this.isLastRow;\n if (this.parent.height !== 'auto' && this.parent.editSettings.newRowPosition === 'Bottom' && args && args.requestType === 'add' &&\n this.parent.getContent().firstElementChild.offsetHeight > this.parent.getContentTable().scrollHeight) {\n addClass([].slice.call(tr.getElementsByClassName(literals.rowCell)), 'e-lastrowadded');\n }\n else if (checkLastRow && tr && tr.classList) {\n addClass([].slice.call(tr.getElementsByClassName(literals.rowCell)), 'e-lastrowcell');\n }\n };\n /**\n * Cancels edited state.\n *\n * @returns {void}\n */\n Edit.prototype.closeEdit = function () {\n if (this.parent.editSettings.mode === 'Batch' && this.parent.editSettings.showConfirmDialog\n && this.parent.element.getElementsByClassName('e-updatedtd').length) {\n this.showDialog('CancelEdit', this.dialogObj);\n return;\n }\n this.parent.element.classList.remove('e-editing');\n this.editModule.closeEdit();\n this.refreshToolbar();\n this.parent.notify(events.closeEdit, {});\n if (this.parent.editSettings.showAddNewRow) {\n this.destroyToolTip();\n }\n };\n Edit.prototype.refreshToolbar = function () {\n this.parent.notify(events.toolbarRefresh, {});\n };\n /**\n * To adds a new row at the top with the given data. When data is not passed, it will add empty rows.\n * > `editSettings.allowEditing` should be true.\n *\n * @param {Object} data - Defines the new add record data.\n * @param {number} index - Defines the row index to be added\n * @returns {void}\n */\n Edit.prototype.addRecord = function (data, index) {\n if (!this.parent.editSettings.allowAdding) {\n return;\n }\n var args = { startEdit: true };\n if (!data) {\n this.parent.notify(events.virtualScrollAddActionBegin, args);\n }\n if (args.startEdit) {\n this.parent.element.classList.add('e-editing');\n this.editModule.addRecord(data, index);\n this.refreshToolbar();\n this.parent.notify('start-add', {});\n }\n };\n /**\n * Deletes a record with the given options. If fieldname and data are not given, the Grid will delete the selected record.\n * > `editSettings.allowDeleting` should be true.\n *\n * @param {string} fieldname - Defines the primary key field name of the column.\n * @param {Object} data - Defines the JSON data record to be deleted.\n * @returns {void}\n */\n Edit.prototype.deleteRecord = function (fieldname, data) {\n var gObj = this.parent;\n if (!gObj.editSettings.allowDeleting) {\n return;\n }\n if (!data) {\n if (!gObj.getSelectedRecords().length && isNullOrUndefined(gObj.commandDelIndex)) {\n this.showDialog('DeleteOperationAlert', this.alertDObj);\n return;\n }\n }\n if (gObj.editSettings.showDeleteConfirmDialog) {\n this.fieldname = fieldname;\n this.data = data;\n this.showDialog('ConfirmDelete', this.dialogObj);\n return;\n }\n this.editModule.deleteRecord(fieldname, data);\n };\n /**\n * Deletes a visible row by TR element.\n *\n * @param {HTMLTableRowElement} tr - Defines the table row element.\n * @returns {void}\n */\n Edit.prototype.deleteRow = function (tr) {\n this.deleteRowUid = tr.getAttribute('data-uid');\n var rowObj = this.parent.getRowObjectFromUID(this.deleteRowUid);\n if (!isNullOrUndefined(rowObj)) {\n this.deleteRecord(null, rowObj.data);\n }\n };\n /**\n * If Grid is in editable state, you can save a record by invoking endEdit.\n *\n * @returns {void}\n */\n Edit.prototype.endEdit = function () {\n if (this.parent.editSettings.mode === 'Batch' && this.parent.editSettings.showConfirmDialog &&\n (isNullOrUndefined(this.formObj) || this.formObj.validate())) {\n this.parent.editModule.saveCell();\n this.parent.notify(events.editNextValCell, {});\n if (isNullOrUndefined(this.formObj) || this.formObj.validate()) {\n this.showDialog('BatchSaveConfirm', this.dialogObj);\n return;\n }\n }\n this.endEditing();\n };\n /**\n * To update the specified cell by given value without changing into edited state.\n *\n * @param {number} rowIndex Defines the row index.\n * @param {string} field Defines the column field.\n * @param {string | number | boolean | Date} value - Defines the value to be changed.\n * @returns {void}\n */\n Edit.prototype.updateCell = function (rowIndex, field, value) {\n this.editModule.updateCell(rowIndex, field, value);\n };\n /**\n * To update the specified row by given values without changing into edited state.\n *\n * @param {number} index Defines the row index.\n * @param {Object} data Defines the data object to be updated.\n * @returns {void}\n */\n Edit.prototype.updateRow = function (index, data) {\n this.editModule.updateRow(index, data);\n };\n /**\n * Resets added, edited, and deleted records in the batch mode.\n *\n * @returns {void}\n */\n Edit.prototype.batchCancel = function () {\n this.closeEdit();\n };\n /**\n * Bulk saves added, edited, and deleted records in the batch mode.\n *\n * @returns {void}\n */\n Edit.prototype.batchSave = function () {\n this.endEdit();\n };\n /**\n * Changes a particular cell into edited state based on the row index and field name provided in the `batch` mode.\n *\n * @param {number} index - Defines row index to edit a particular cell.\n * @param {string} field - Defines the field name of the column to perform batch edit.\n * @returns {void}\n */\n Edit.prototype.editCell = function (index, field) {\n this.editModule.editCell(index, field);\n };\n /**\n * Checks the status of validation at the time of editing. If validation is passed, it returns true.\n *\n * @returns {boolean} returns whether the form is validated\n */\n Edit.prototype.editFormValidate = function () {\n var form1 = this.formObj ? this.formObj.validate() : true;\n var form2 = this.mFormObj ? this.mFormObj.validate() : true;\n var form3 = this.frFormObj ? this.frFormObj.validate() : true;\n return form1 && form2 && form3;\n };\n /**\n * Gets the added, edited,and deleted data before bulk save to the DataSource in batch mode.\n *\n * @returns {Object} returns the Object\n */\n Edit.prototype.getBatchChanges = function () {\n return this.editModule.getBatchChanges ? this.editModule.getBatchChanges() : {};\n };\n /**\n * Gets the current value of the edited component.\n *\n * @returns {Object} returns the Object\n */\n Edit.prototype.getCurrentEditCellData = function () {\n var obj = this.getCurrentEditedData(this.formObj.element, {});\n return obj[Object.keys(obj)[0]];\n };\n /**\n * Saves the cell that is currently edited. It does not save the value to the DataSource.\n *\n * @returns {void}\n */\n Edit.prototype.saveCell = function () {\n this.editModule.saveCell();\n };\n Edit.prototype.endEditing = function () {\n if (!this.parent.editSettings.showAddNewRow) {\n this.parent.element.classList.remove('e-editing');\n }\n this.editModule.endEdit();\n this.isShowAddedRowValidate = false;\n this.refreshToolbar();\n };\n Edit.prototype.showDialog = function (content, obj) {\n obj.content = '
    ' + this.l10n.getConstant(content) + '
    ';\n obj.dataBind();\n obj.show();\n if (this.parent.enableRtl) {\n obj.refresh();\n }\n };\n Edit.prototype.getValueFromType = function (col, value) {\n var val = value;\n switch (col.type) {\n case 'number':\n val = !isNaN(parseFloat(value)) ? parseFloat(value) : null;\n break;\n case 'boolean':\n if (col.editType !== 'booleanedit') {\n val = value === this.l10n.getConstant('True') || value === true ? true : false;\n }\n break;\n case 'date':\n case 'datetime':\n if (col.editType !== 'datepickeredit' && col.editType !== 'datetimepickeredit'\n && value && value.length) {\n val = new Date(value);\n }\n else if (value === '') {\n val = null;\n }\n break;\n case 'dateonly':\n // eslint-disable-next-line no-cond-assign\n val = value && (value = new Date(value)) ?\n value.getFullYear() + '-' + padZero(value.getMonth() + 1) + '-' + padZero(value.getDate()) : null;\n break;\n }\n return val;\n };\n Edit.prototype.destroyToolTip = function () {\n var elements = [].slice.call(this.parent.element.getElementsByClassName('e-griderror'));\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var elem = elements_1[_i];\n remove(elem);\n }\n this.parent.getContent().firstElementChild.style.position = 'relative';\n if (this.parent.isFrozenGrid()) {\n if (this.parent.element.querySelector('.e-gridheader')) {\n this.parent.element.querySelector('.e-gridheader').style.position = '';\n }\n this.parent.element.querySelector('.e-gridcontent').style.position = '';\n }\n };\n Edit.prototype.createConfirmDlg = function () {\n this.dialogObj = this.dlgWidget([\n {\n click: this.dlgOk.bind(this),\n buttonModel: { content: this.l10n.getConstant('OKButton'),\n cssClass: this.parent.cssClass ? 'e-primary' + ' ' + this.parent.cssClass : 'e-primary',\n isPrimary: true }\n },\n {\n click: this.dlgCancel.bind(this),\n buttonModel: { cssClass: this.parent.cssClass ? 'e-flat' + ' ' + this.parent.cssClass : 'e-flat',\n content: this.l10n.getConstant('CancelButton') }\n }\n ], 'EditConfirm');\n };\n Edit.prototype.createAlertDlg = function () {\n this.alertDObj = this.dlgWidget([\n {\n click: this.alertClick.bind(this),\n buttonModel: { content: this.l10n.getConstant('OKButton'),\n cssClass: this.parent.cssClass ? 'e-flat' + ' ' + this.parent.cssClass : 'e-flat',\n isPrimary: true }\n }\n ], 'EditAlert');\n };\n Edit.prototype.alertClick = function () {\n this.alertDObj.hide();\n };\n Edit.prototype.dlgWidget = function (btnOptions, name) {\n var div = this.parent.createElement('div', { id: this.parent.element.id + name });\n this.parent.element.appendChild(div);\n var options = {\n showCloseIcon: false,\n isModal: true,\n visible: false,\n closeOnEscape: true,\n target: this.parent.element,\n width: '320px',\n animationSettings: { effect: 'None' },\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n };\n options.buttons = btnOptions;\n var obj = new Dialog(options);\n var isStringTemplate = 'isStringTemplate';\n obj[\"\" + isStringTemplate] = true;\n obj.appendTo(div);\n return obj;\n };\n Edit.prototype.dlgCancel = function () {\n if (this.parent.pagerModule) {\n this.parent.pagerModule.isForceCancel = false;\n }\n this.parent.focusModule.clearIndicator();\n this.parent.focusModule.restoreFocus();\n this.dialogObj.hide();\n this.parent.notify('cancelcnfrmDlg', {});\n };\n Edit.prototype.dlgOk = function () {\n switch (this.dialogObj.element.querySelector('.e-dlg-content').firstElementChild.innerText) {\n case this.l10n.getConstant('ConfirmDelete'):\n this.editModule.deleteRecord(this.fieldname, this.data);\n break;\n case this.l10n.getConstant('CancelEdit'):\n this.editModule.closeEdit();\n break;\n case this.l10n.getConstant('BatchSaveConfirm'):\n this.endEditing();\n break;\n case this.l10n.getConstant('BatchSaveLostChanges'):\n if (this.parent.editSettings.mode === 'Batch') {\n this.editModule.addCancelWhilePaging();\n }\n if (this.parent.pagerModule) {\n this.parent.pagerModule.isForceCancel = false;\n }\n this.executeAction();\n break;\n }\n this.dlgCancel();\n };\n Edit.prototype.destroyEditComponents = function () {\n if (this.parent.isEdit) {\n this.destroyWidgets();\n this.destroyForm();\n }\n this.destroy();\n };\n /**\n * @returns {void}\n * @hidden\n */\n Edit.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.eventDetails = [{ event: events.inBoundModelChanged, handler: this.onPropertyChanged },\n { event: events.initialEnd, handler: this.initialEnd },\n { event: events.keyPressed, handler: this.keyPressHandler },\n { event: events.autoCol, handler: this.updateColTypeObj },\n { event: events.tooltipDestroy, handler: this.destroyToolTip },\n { event: events.preventBatch, handler: this.preventBatch },\n { event: events.destroyForm, handler: this.destroyForm },\n { event: events.destroy, handler: this.destroyEditComponents }];\n addRemoveEventListener(this.parent, this.eventDetails, true, this);\n this.actionBeginFunction = this.onActionBegin.bind(this);\n this.actionCompleteFunction = this.actionComplete.bind(this);\n this.parent.addEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunction);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Edit.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.eventDetails, false);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunction);\n this.parent.removeEventListener(events.actionBegin, this.actionBeginFunction);\n };\n Edit.prototype.actionComplete = function (e) {\n var actions = ['add', 'beginEdit', 'save', 'delete', 'cancel', 'filterAfterOpen', 'filterchoicerequest'];\n if (actions.indexOf(e.requestType) < 0) {\n this.parent.isEdit = this.parent.editSettings.showAddNewRow ? true : false;\n }\n if (e.requestType === 'batchsave') {\n this.parent.focusModule.restoreFocus();\n }\n this.refreshToolbar();\n };\n /**\n * @param {Element} form - specifies the element\n * @param {Object} editedData - specifies the edited data\n * @returns {Object} returns the object\n * @hidden\n */\n Edit.prototype.getCurrentEditedData = function (form, editedData) {\n var gObj = this.parent;\n if (gObj.editSettings.template) {\n var elements = [].slice.call(form.elements);\n for (var k = 0; k < elements.length; k++) {\n if (((elements[parseInt(k.toString(), 10)].hasAttribute('name') && (elements[parseInt(k.toString(), 10)].className !== 'e-multi-hidden')) ||\n elements[parseInt(k.toString(), 10)].classList.contains('e-multiselect')) && !(elements[parseInt(k.toString(), 10)].type === 'hidden' &&\n (parentsUntil(elements[parseInt(k.toString(), 10)], 'e-switch-wrapper') || parentsUntil(elements[parseInt(k.toString(), 10)], 'e-checkbox-wrapper')))) {\n var field = (elements[parseInt(k.toString(), 10)].hasAttribute('name')) ? setComplexFieldID(elements[parseInt(k.toString(), 10)].getAttribute('name')) :\n setComplexFieldID(elements[parseInt(k.toString(), 10)].getAttribute('id'));\n var column = gObj.getColumnByField(field) || { field: field, type: elements[parseInt(k.toString(), 10)].getAttribute('type') };\n var value = void 0;\n if (column.type === 'checkbox' || column.type === 'boolean') {\n value = elements[parseInt(k.toString(), 10)].checked;\n }\n else if (elements[parseInt(k.toString(), 10)].value) {\n value = elements[parseInt(k.toString(), 10)].value;\n if (elements[parseInt(k.toString(), 10)].ej2_instances &&\n elements[parseInt(k.toString(), 10)].ej2_instances.length &&\n !isNullOrUndefined(elements[parseInt(k.toString(), 10)].ej2_instances[0].value)) {\n elements[parseInt(k.toString(), 10)].blur();\n value = elements[parseInt(k.toString(), 10)]\n .ej2_instances[0].value;\n }\n }\n else if (elements[parseInt(k.toString(), 10)].ej2_instances) {\n value = elements[parseInt(k.toString(), 10)]\n .ej2_instances[0].value;\n }\n if (column.edit && typeof column.edit.read === 'string') {\n value = getValue(column.edit.read, window)(elements[parseInt(k.toString(), 10)], value);\n }\n else if (column.edit && column.edit.read) {\n value = column.edit.read(elements[parseInt(k.toString(), 10)], value);\n }\n value = gObj.editModule.getValueFromType(column, value);\n if (elements[parseInt(k.toString(), 10)].type === 'radio') {\n if (elements[parseInt(k.toString(), 10)].checked) {\n DataUtil.setValue(column.field, value, editedData);\n }\n }\n else {\n if (typeof value === 'string') {\n this.parent.sanitize(value);\n }\n DataUtil.setValue(column.field, value, editedData);\n }\n }\n }\n return editedData;\n }\n var col = gObj.columnModel.filter(function (col) { return col.editTemplate; });\n for (var j = 0; j < col.length; j++) {\n if (form[getComplexFieldID(col[parseInt(j.toString(), 10)].field)]) {\n var inputElements = [].slice.call(form[getComplexFieldID(col[parseInt(j.toString(), 10)].field)])\n .filter(function (element) { return element.tagName.toLowerCase() === 'input'; });\n inputElements = inputElements.length ? inputElements : [form[getComplexFieldID(col[parseInt(j.toString(), 10)].field)]];\n var temp = inputElements.filter(function (e) {\n return !isNullOrUndefined((e.ej2_instances));\n });\n if (temp.length === 0) {\n temp = inputElements.filter(function (e) { return e.hasAttribute('name'); });\n }\n for (var k = 0; k < temp.length; k++) {\n var value = this.getValue(col[parseInt(j.toString(), 10)], temp[parseInt(k.toString(), 10)], editedData);\n if (col[parseInt(j.toString(), 10)].type === 'string') {\n value = this.parent.sanitize(value);\n }\n DataUtil.setValue(col[parseInt(j.toString(), 10)].field, value, editedData);\n }\n }\n }\n var inputs = [].slice.call(form.getElementsByClassName('e-field'));\n for (var i = 0, len = inputs.length; i < len; i++) {\n var col_1 = gObj.getColumnByUid(inputs[parseInt(i.toString(), 10)].getAttribute('e-mappinguid'));\n if (col_1 && col_1.field) {\n var value = this.getValue(col_1, inputs[parseInt(i.toString(), 10)], editedData);\n if (col_1.type === 'string' && !(col_1.isForeignColumn() && typeof value !== 'string')) {\n value = this.parent.sanitize(value);\n }\n DataUtil.setValue(col_1.field, value, editedData);\n }\n }\n return editedData;\n };\n Edit.prototype.getValue = function (col, input, editedData) {\n var value = input.ej2_instances ?\n input.ej2_instances[0].value : input.value;\n var gObj = this.parent;\n var temp = col.edit.read;\n if (col.type === 'checkbox' || col.type === 'boolean') {\n value = input.checked;\n }\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n value = gObj.editModule.getValueFromType(col, (temp)(input, value));\n }\n else {\n value = gObj.editModule.getValueFromType(col, col.edit.read(input, value));\n }\n if (isNullOrUndefined(editedData[col.field]) && value === '') {\n value = editedData[col.field];\n }\n return value;\n };\n /**\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Edit.prototype.onActionBegin = function (e) {\n if ((e.requestType === 'columnstate' || (this.parent.enableInfiniteScrolling && this.parent.infiniteScrollSettings.enableCache\n && e.requestType === 'sorting')) && this.parent.isEdit && this.parent.editSettings.mode !== 'Batch') {\n this.closeEdit();\n }\n else {\n var editRow = this.parent.element.querySelector('.' + literals.editedRow);\n var addRow = this.parent.element.querySelector('.' + literals.addedRow);\n if (editRow && this.parent.frozenRows && e.requestType === 'virtualscroll'\n && parseInt(parentsUntil(editRow, literals.row).getAttribute(literals.dataRowIndex), 10) < this.parent.frozenRows) {\n return;\n }\n var restrictedRequestTypes = ['filterAfterOpen', 'filterBeforeOpen', 'filterchoicerequest', 'filterSearchBegin', 'save', 'infiniteScroll', 'virtualscroll'];\n var isRestrict = restrictedRequestTypes.indexOf(e.requestType) === -1;\n var isAddRows = !this.parent.editSettings.showAddNewRow || (this.parent.editSettings.showAddNewRow &&\n !isNullOrUndefined(this.parent.element.querySelector('.e-editedrow')));\n var isDestroyVirtualForm = (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) && this.formObj\n && isAddRows && !this.formObj.isDestroyed && (editRow || addRow || e.requestType === 'cancel') && isRestrict;\n if ((!this.parent.enableVirtualization && isAddRows && this.parent.editSettings.mode !== 'Batch' && this.formObj && !this.formObj.isDestroyed\n && isRestrict && !e.cancel) || isDestroyVirtualForm) {\n this.destroyWidgets();\n this.destroyForm();\n }\n }\n };\n /**\n * @param {Column[]} cols - specfies the column\n * @returns {void}\n * @hidden\n */\n Edit.prototype.destroyWidgets = function (cols) {\n var gObj = this.parent;\n gObj.isWidgetsDestroyed = true;\n if (gObj.editSettings.template) {\n var parentIns = getParentIns(this.parent);\n parentIns = parentIns.isReact ? parentIns : this.parent;\n parentIns.destroyTemplate(['editSettingsTemplate']);\n if (this.parent.isReact) {\n this.parent.renderTemplates();\n }\n }\n cols = cols ? cols : this.parent.getCurrentVisibleColumns(this.parent.enableColumnVirtualization);\n if (cols.some(function (column) { return !isNullOrUndefined(column.editTemplate); })) {\n this.parent.destroyTemplate(['editTemplate']);\n if (this.parent.isReact) {\n this.parent.renderTemplates();\n }\n }\n for (var _i = 0, cols_1 = cols; _i < cols_1.length; _i++) {\n var col = cols_1[_i];\n var temp = col.edit.destroy;\n if (col.edit.destroy) {\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n temp();\n }\n else {\n col.edit.destroy();\n }\n }\n }\n var elements = [].slice.call(this.formObj.element.elements);\n for (var i = 0; i < elements.length; i++) {\n if (elements[parseInt(i.toString(), 10)].hasAttribute('name')) {\n var instanceElement = elements[parseInt(i.toString(), 10)].parentElement.classList.contains('e-ddl') ?\n elements[parseInt(i.toString(), 10)].parentElement.querySelector('input') : elements[parseInt(i.toString(), 10)];\n if (instanceElement.ej2_instances &&\n instanceElement.ej2_instances.length &&\n !instanceElement.ej2_instances[0].isDestroyed) {\n instanceElement.ej2_instances[0].destroy();\n }\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Edit.prototype.destroyForm = function () {\n this.destroyToolTip();\n var formObjects = [this.formObj, this.mFormObj, this.frFormObj, this.virtualFormObj];\n var col = this.parent.columnModel.filter(function (col) { return col.editTemplate; });\n for (var i = 0; i < formObjects.length; i++) {\n if (formObjects[parseInt(i.toString(), 10)] && formObjects[parseInt(i.toString(), 10)].element\n && !formObjects[parseInt(i.toString(), 10)].isDestroyed) {\n formObjects[parseInt(i.toString(), 10)].destroy();\n var parentIns = getParentIns(this.parent);\n if (parentIns.isReact && this.parent.editSettings.mode === 'Dialog'\n && (!isNullOrUndefined(this.parent.editSettings.template) || col.length)) {\n formObjects[parseInt(i.toString(), 10)].element.remove();\n }\n }\n }\n this.destroyToolTip();\n };\n /**\n * To destroy the editing.\n *\n * @returns {void}\n * @hidden\n */\n Edit.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement) {\n return;\n }\n var hasGridChild = gridElement.querySelector('.' + literals.gridHeader) &&\n gridElement.querySelector('.' + literals.gridContent) ? true : false;\n if (hasGridChild) {\n this.destroyForm();\n }\n this.removeEventListener();\n var elem = this.dialogObj.element;\n if (elem.childElementCount > 0) {\n this.dialogObj.destroy();\n remove(elem);\n }\n elem = this.alertDObj.element;\n if (elem.childElementCount > 0) {\n this.alertDObj.destroy();\n remove(elem);\n }\n if (!hasGridChild) {\n return;\n }\n if (this.editModule) {\n this.editModule.destroy();\n }\n };\n Edit.prototype.keyPressHandler = function (e) {\n var isMacLike = /(Mac)/i.test(navigator.platform);\n if (isMacLike && e.metaKey && e.action === 'ctrlEnter') {\n e.action = 'insert';\n }\n switch (e.action) {\n case 'insert':\n this.addRecord();\n break;\n case 'delete':\n if ((e.target.tagName !== 'INPUT' || e.target.classList.contains('e-checkselect'))\n && !document.querySelector('.e-popup-open.e-edit-dialog')) {\n this.deleteRecord();\n }\n break;\n case 'f2':\n this.startEdit();\n break;\n case 'enter':\n if (!parentsUntil(e.target, 'e-unboundcelldiv') && this.parent.editSettings.mode !== 'Batch' &&\n (parentsUntil(e.target, literals.gridContent) || ((this.parent.frozenRows ||\n (this.parent.editSettings.showAddNewRow && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)))\n && parentsUntil(e.target, literals.headerContent)))\n && !document.getElementsByClassName('e-popup-open').length) {\n e.preventDefault();\n this.endEdit();\n }\n break;\n case 'escape':\n if (this.parent.isEdit && !this.editCellDialogClose) {\n if (this.parent.editSettings.mode === 'Batch') {\n this.editModule.escapeCellEdit();\n }\n else {\n this.curretRowFocus(e);\n }\n }\n if (this.editCellDialogClose) {\n this.editCellDialogClose = false;\n }\n break;\n case 'tab':\n case 'shiftTab':\n this.curretRowFocus(e);\n break;\n }\n };\n Edit.prototype.curretRowFocus = function (e) {\n if (this.parent.isEdit && this.parent.editSettings.mode !== 'Batch') {\n this.parent.isWidgetsDestroyed = false;\n var editedRow = parentsUntil(e.target, 'e-editedrow') || parentsUntil(e.target, 'e-addedrow');\n if (editedRow) {\n var focusableEditCells = [].slice.call(editedRow.querySelectorAll('.e-input:not(.e-disabled)'));\n var commandColCell = [].slice.call(editedRow.querySelectorAll('.e-unboundcell'));\n if (commandColCell) {\n for (var i = 0; i < commandColCell.length; i++) {\n focusableEditCells = focusableEditCells.concat([].slice\n .call(commandColCell[parseInt(i.toString(), 10)].querySelectorAll('.e-btn:not(.e-hide)')));\n }\n }\n var rowCell = parentsUntil(e.target, 'e-rowcell');\n rowCell = rowCell && rowCell.classList.contains('e-unboundcell') ? e.target : rowCell;\n var lastCell = parentsUntil(focusableEditCells[focusableEditCells.length - 1], 'e-rowcell');\n lastCell = lastCell && lastCell.classList.contains('e-unboundcell') ?\n focusableEditCells[focusableEditCells.length - 1] : lastCell;\n if ((rowCell === lastCell && e.action === 'tab') || e.action === 'escape' ||\n (rowCell === parentsUntil(focusableEditCells[0], 'e-rowcell') && e.action === 'shiftTab' &&\n !this.parent.editSettings.showAddNewRow)) {\n var uid = editedRow.getAttribute('data-uid');\n var rows = this.parent.getRows();\n var rowIndex = rows.map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n if (this.parent.frozenRows && parentsUntil(editedRow, 'e-content')) {\n rowIndex = rowIndex - this.parent.frozenRows;\n }\n if (editedRow.classList.contains('e-addedrow')) {\n rowIndex = 0;\n }\n if (e.action === 'escape') {\n this.closeEdit();\n }\n else {\n this.isShowAddedRowValidate = true;\n this.parent.selectionModule.preventFocus = false;\n this.endEdit();\n this.isShowAddedRowValidate = false;\n }\n if (this.parent.focusModule.active && (!this.parent.editSettings.showAddNewRow ||\n editedRow.classList.contains('e-editedrow') || (this.parent.editSettings.showAddNewRow &&\n (editedRow.classList.contains('e-addedrow') && isNullOrUndefined(this.parent.element.querySelector('.e-griderror:not([style*=\"display: none\"])')))))) {\n var firstCellIndex = 0;\n var matrix = this.parent.focusModule.active.matrix;\n if (matrix && matrix.matrix.length && matrix.matrix[parseInt(rowIndex.toString(), 10)]) {\n var rowMatrix = matrix.matrix[parseInt(rowIndex.toString(), 10)];\n for (var i = 0; i < rowMatrix.length; i++) {\n if (matrix[parseInt(i.toString(), 10)] > 0) {\n firstCellIndex = i;\n break;\n }\n }\n }\n this.parent.focusModule.active.matrix.current = [rowIndex, firstCellIndex];\n }\n }\n if (this.parent.editSettings.showAddNewRow && e.action === 'tab' && parentsUntil(e.target, 'e-addedrow')) {\n this.isShowAddedRowValidate = true;\n }\n }\n }\n };\n Edit.prototype.preventBatch = function (args) {\n this.preventObj = args;\n this.showDialog('BatchSaveLostChanges', this.dialogObj);\n };\n Edit.prototype.executeAction = function () {\n this.preventObj.handler.call(this.preventObj.instance, this.preventObj.arg1, this.preventObj.arg2, this.preventObj.arg3, this.preventObj.arg4, this.preventObj.arg5, this.preventObj.arg6, this.preventObj.arg7, this.preventObj.arg8);\n };\n /**\n * @param {Column[]} cols - specifies the column\n * @param {Object} newRule - specifies the new rule object\n * @returns {void}\n * @hidden\n */\n Edit.prototype.applyFormValidation = function (cols, newRule) {\n var gObj = this.parent;\n var idx = 0;\n var form = this.parent.editSettings.mode !== 'Dialog' ?\n gObj.editSettings.showAddNewRow && gObj.element.querySelector('.' + literals.editedRow) ?\n gObj.element.querySelector('.' + literals.editedRow).getElementsByClassName('e-gridform')[parseInt(idx.toString(), 10)] :\n gObj.element.getElementsByClassName('e-gridform')[parseInt(idx.toString(), 10)] :\n select('#' + gObj.element.id + '_dialogEdit_wrapper .e-gridform', document);\n var index = 1;\n var rules = {};\n var mRules = {};\n var frRules = {};\n cols = cols ? cols : gObj.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (!cols[parseInt(i.toString(), 10)].visible && (gObj.editSettings.mode !== 'Dialog' || (gObj.groupSettings.columns.indexOf(cols[parseInt(i.toString(), 10)].field) === -1\n && gObj.editSettings.mode === 'Dialog'))) {\n continue;\n }\n if (cols[parseInt(i.toString(), 10)].validationRules && isNullOrUndefined(newRule)) {\n setValidationRuels(cols[parseInt(i.toString(), 10)], index, rules, mRules, frRules, cols.length);\n }\n }\n rules = extend(rules, mRules, frRules);\n this.parent.editModule.formObj = this.createFormObj(form, newRule ? newRule : rules);\n };\n /**\n * @param {HTMLFormElement} form - Defined Form element\n * @param {Object} rules - Defines form rules\n * @returns {FormValidator} Returns formvalidator instance\n * @hidden\n */\n Edit.prototype.createFormObj = function (form, rules) {\n var _this = this;\n return new FormValidator(form, {\n rules: rules,\n locale: this.parent.locale,\n validationComplete: function (args) {\n _this.validationComplete(args);\n },\n customPlacement: function (inputElement, error) {\n var uid = inputElement.getAttribute('e-mappinguid');\n var args = {\n column: _this.parent.getColumnByUid(uid),\n error: error,\n inputElement: inputElement,\n value: inputElement.value\n };\n if ((!(event && event['relatedTarget'] && event['relatedTarget'].classList.contains('e-cancelbutton')) &&\n !_this.parent.editSettings.showAddNewRow) || (_this.parent.editSettings.showAddNewRow && event && event.target &&\n (parentsUntil(event.target, _this.parent.element.id + '_update', true) ||\n (parentsUntil(event.target, 'e-grid-menu') && (event.target.classList.contains('e-save') ||\n event.target.querySelector('.e-save'))) || _this.isShowAddedRowValidate ||\n (parentsUntil(event.target, 'e-unboundcell') && parentsUntil(event.target, 'e-update')) ||\n (event['action'] === 'enter' && (parentsUntil(event.target, 'e-content') || parentsUntil(event.target, 'e-addedrow'))))) ||\n (_this.parent.editSettings.showAddNewRow && !isNullOrUndefined(_this.parent.element.querySelector('.' + literals.editedRow)))) {\n _this.valErrorPlacement(inputElement, error);\n }\n _this.isShowAddedRowValidate = false;\n _this.parent.notify(events.valCustomPlacement, args);\n }\n });\n };\n Edit.prototype.valErrorPlacement = function (inputElement, error) {\n if (this.parent.isEdit) {\n var id = error.getAttribute('for');\n var elem = this.getElemTable(inputElement).querySelector('#' + getParsedFieldID(id) + '_Error');\n if (!elem) {\n this.createTooltip(inputElement, error, id, '');\n }\n else {\n elem.querySelector('.e-tip-content').innerHTML = error.outerHTML;\n }\n }\n };\n Edit.prototype.getElemTable = function (inputElement) {\n var isFrozenHdr;\n var gObj = this.parent;\n var table;\n if (gObj.editSettings.mode !== 'Dialog') {\n isFrozenHdr = (gObj.frozenRows && closest(inputElement, '.' + literals.row) && gObj.frozenRows\n > (parseInt(closest(inputElement, '.' + literals.row).getAttribute(literals.dataRowIndex), 10) || 0));\n table = this.parent.isFrozenGrid() ? gObj.element : isFrozenHdr || (gObj.editSettings.showAddNewRow &&\n (gObj.enableVirtualization || gObj.enableInfiniteScrolling)) ? gObj.getHeaderTable() : gObj.getContentTable();\n }\n else {\n table = select('#' + gObj.element.id + '_dialogEdit_wrapper', document);\n }\n return table;\n };\n Edit.prototype.resetElemPosition = function (elem, args) {\n var td = parentsUntil(args.element, literals.rowCell);\n if (td) {\n var tdRight = td.getBoundingClientRect().right;\n var elemRight = elem.getBoundingClientRect().right;\n if (elemRight > tdRight) {\n var offSet = elemRight - tdRight;\n elem.style.left = (elem.offsetLeft - offSet) + 'px';\n }\n }\n };\n Edit.prototype.validationComplete = function (args) {\n if (this.parent.isEdit) {\n var elem = this.getElemTable(args.element).querySelector('#' + getParsedFieldID(args.inputName) + '_Error');\n if (this.parent.editSettings.showAddNewRow && !elem && args.element) {\n var error = parentsUntil(args.element, 'e-rowcell').querySelector('.e-error');\n if (error) {\n error.classList.remove('e-error');\n }\n }\n if (elem) {\n if (args.status === 'failure') {\n elem.style.display = '';\n this.resetElemPosition(elem, args);\n }\n else {\n elem.style.display = 'none';\n }\n }\n }\n };\n Edit.prototype.createTooltip = function (element, error, name, display) {\n var formObj = this.formObj.element;\n var customForm = parentsUntil(element, 'e-virtual-validation');\n if (customForm) {\n formObj = this.virtualFormObj.element;\n }\n var gcontent = this.parent.getContent().firstElementChild;\n var isScroll = gcontent.scrollHeight > gcontent.clientHeight || gcontent.scrollWidth > gcontent.clientWidth;\n var isInline = this.parent.editSettings.mode !== 'Dialog';\n var td = closest(element, '.' + literals.rowCell);\n var row = closest(element, '.' + literals.row);\n var isFHdr;\n var isFHdrLastRow = false;\n var validationForBottomRowPos;\n var isBatchModeLastRow = false;\n var isAddNewRow = this.parent.editSettings.showAddNewRow && !isNullOrUndefined(parentsUntil(element, literals.addedRow))\n && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling);\n var viewPortRowCount = Math.round(this.parent.getContent().clientHeight / this.parent.getRowHeight()) - 1;\n var rows = [].slice.call(this.parent.getContent().getElementsByClassName(literals.row));\n if (this.parent.editSettings.mode === 'Batch') {\n rows = [].slice.call(this.parent.getContent().querySelectorAll('.e-row:not(.e-hiddenrow)'));\n if (viewPortRowCount >= 1 && rows.length >= viewPortRowCount\n && rows[rows.length - 1].getAttribute(literals.dataRowIndex) === row.getAttribute(literals.dataRowIndex)) {\n isBatchModeLastRow = true;\n }\n }\n if (isInline) {\n if (this.parent.frozenRows || isAddNewRow) {\n var headerRows = this.parent.editSettings.showAddNewRow ? '.e-row:not(.e-hiddenrow.e-addedrow)' :\n '.e-row:not(.e-hiddenrow)';\n var fHearderRows = [].slice.call(this.parent.getHeaderTable().querySelector(literals.tbody).querySelectorAll(headerRows));\n isFHdr = fHearderRows.length > (parseInt(row.getAttribute(literals.dataRowIndex), 10) || 0);\n isFHdrLastRow = isFHdr && parseInt(row.getAttribute(literals.dataRowIndex), 10) === fHearderRows.length - 1;\n var insertRow = [].slice.call(this.parent.getHeaderTable().querySelector(literals.tbody).querySelectorAll('.e-row:not(.e-hiddenrow)'));\n if (insertRow.length === 1 && (insertRow[0].classList.contains('e-addedrow') || insertRow[0].classList.contains('e-insertedrow'))) {\n isFHdrLastRow = true;\n }\n }\n if (isFHdrLastRow || (viewPortRowCount >= 1 && rows.length >= viewPortRowCount\n && ((this.parent.editSettings.newRowPosition === 'Bottom' && (this.editModule.args\n && this.editModule.args.requestType === 'add')) || (td.classList.contains('e-lastrowcell')\n && !row.classList.contains(literals.addedRow)))) || isBatchModeLastRow) {\n validationForBottomRowPos = true;\n }\n }\n var table = isInline ?\n (isFHdr ? this.parent.getHeaderTable() : this.parent.getContentTable()) :\n select('#' + this.parent.element.id + '_dialogEdit_wrapper .e-dlg-content', document);\n var client = table.getBoundingClientRect();\n var left = isInline ?\n this.parent.element.getBoundingClientRect().left : client.left;\n var input = closest(element, 'td');\n var inputClient = input ? input.getBoundingClientRect() : element.parentElement.getBoundingClientRect();\n var div = this.parent.createElement('div', {\n className: 'e-tooltip-wrap e-lib e-control e-popup e-griderror',\n id: name + '_Error',\n styles: 'display:' + display + ';top:' +\n ((isFHdr ? inputClient.top + inputClient.height : inputClient.bottom - client.top) + table.scrollTop + 9) + 'px;left:' +\n (inputClient.left - left + table.scrollLeft + inputClient.width / 2) + 'px;' +\n 'max-width:' + inputClient.width + 'px;text-align:center;'\n });\n if (this.parent.cssClass) {\n div.classList.add(this.parent.cssClass);\n }\n if (isInline && client.left < left) {\n div.style.left = parseInt(div.style.left, 10) - client.left + left + 'px';\n }\n var content = this.parent.createElement('div', { className: 'e-tip-content' });\n content.appendChild(error);\n var arrow;\n if (validationForBottomRowPos) {\n arrow = this.parent.createElement('div', { className: 'e-arrow-tip e-tip-bottom' });\n arrow.appendChild(this.parent.createElement('div', { className: 'e-arrow-tip-outer e-tip-bottom' }));\n arrow.appendChild(this.parent.createElement('div', { className: 'e-arrow-tip-inner e-tip-bottom' }));\n }\n else {\n arrow = this.parent.createElement('div', { className: 'e-arrow-tip e-tip-top' });\n arrow.appendChild(this.parent.createElement('div', { className: 'e-arrow-tip-outer e-tip-top' }));\n arrow.appendChild(this.parent.createElement('div', { className: 'e-arrow-tip-inner e-tip-top' }));\n }\n div.appendChild(content);\n div.appendChild(arrow);\n if (!customForm && (this.parent.frozenRows || isAddNewRow) && this.parent.editSettings.mode !== 'Dialog') {\n var getEditCell = this.parent.editSettings.mode === 'Normal' ?\n closest(element, '.e-editcell') : closest(element, '.' + literals.table);\n getEditCell.style.position = 'relative';\n div.style.position = 'absolute';\n if (this.parent.editSettings.mode === 'Batch' ||\n (closest(element, '.' + literals.frozenContent) || closest(element, '.' + literals.frozenHeader))\n || (this.parent.frozenRows || isAddNewRow)) {\n if (this.parent.isFrozenGrid()) {\n if (td.classList.contains('e-unfreeze')) {\n addClass([div], 'e-unfreeze');\n formObj.appendChild(div);\n }\n else {\n var elem = closest(td, '.e-gridheader') ? this.parent.element.querySelector('.e-gridheader') :\n rows.length === 1 ? this.parent.element.querySelector('.e-gridcontent').querySelector('.e-content') :\n this.parent.element.querySelector('.e-gridcontent');\n elem.appendChild(div);\n elem.style.position = 'relative';\n }\n }\n else {\n formObj.appendChild(div);\n }\n }\n else {\n this.mFormObj.element.appendChild(div);\n }\n }\n else {\n if (customForm) {\n this.virtualFormObj.element.appendChild(div);\n }\n else {\n if (this.parent.editSettings.mode !== 'Dialog' && this.parent.isFrozenGrid()) {\n if (td.classList.contains('e-unfreeze')) {\n addClass([div], 'e-unfreeze');\n this.formObj.element.appendChild(div);\n }\n else {\n var elem = closest(td, '.e-gridheader') ? this.parent.element.querySelector('.e-gridheader') :\n rows.length === 1 ? this.parent.element.querySelector('.e-gridcontent').querySelector('.e-content') :\n this.parent.element.querySelector('.e-gridcontent');\n elem.appendChild(div);\n elem.style.position = 'relative';\n }\n }\n else {\n this.formObj.element.appendChild(div);\n }\n }\n }\n if (!isNullOrUndefined(td)) {\n if (td.classList.contains('e-fixedfreeze')) {\n div.classList.add('e-fixederror');\n }\n else if (td.classList.contains('e-leftfreeze') || td.classList.contains('e-rightfreeze')) {\n div.classList.add('e-freezeerror');\n }\n }\n if (!validationForBottomRowPos && isInline && gcontent.getBoundingClientRect().bottom < inputClient.bottom + inputClient.height) {\n var contentDiv = this.parent.getContent().querySelector('.e-content');\n if (this.parent.currentViewData.length === 0 && contentDiv.scrollTop === 0) {\n contentDiv.scrollTop = div.offsetHeight + arrow.scrollHeight;\n }\n else {\n gcontent.scrollTop = gcontent.scrollTop + div.offsetHeight + arrow.scrollHeight;\n }\n }\n var lineHeight = parseInt(document.defaultView.getComputedStyle(div, null).getPropertyValue('font-size'), 10);\n if (div.getBoundingClientRect().width < inputClient.width &&\n div.querySelector('label').getBoundingClientRect().height / (lineHeight * 1.2) >= 2) {\n div.style.width = div.style.maxWidth;\n }\n if ((this.parent.frozenRows || isAddNewRow) && this.parent.editSettings.mode !== 'Dialog') {\n div.style.left = input.offsetLeft + (input.offsetWidth / 2 - div.offsetWidth / 2) + 'px';\n }\n else {\n div.style.left = (parseInt(div.style.left, 10) - div.offsetWidth / 2) + 'px';\n }\n if (isInline && !isScroll && !this.parent.allowPaging || (this.parent.frozenRows || isAddNewRow)) {\n // gcontent.style.position = 'static';\n var pos = calculateRelativeBasedPosition(input, div);\n div.style.top = pos.top + inputClient.height + 9 + 'px';\n }\n if (validationForBottomRowPos) {\n if (isScroll && this.parent.height !== 'auto' && (!this.parent.frozenRows || !isAddNewRow)\n && !this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling && !(div.classList.contains('e-freezeerror')\n && div.classList.contains('e-fixederror'))) {\n var scrollWidth = gcontent.scrollWidth > gcontent.offsetWidth ? getScrollBarWidth() : 0;\n var gHeight = this.parent.height.toString().indexOf('%') === -1 ?\n parseInt(this.parent.height, 10) : gcontent.offsetHeight;\n div.style.bottom = (gHeight - gcontent.querySelector('table').offsetHeight\n - scrollWidth) + inputClient.height + 9 + 'px';\n }\n else {\n div.style.bottom = inputClient.height + 9 + 'px';\n }\n if (rows.length < viewPortRowCount && this.parent.editSettings.newRowPosition === 'Bottom' && (this.editModule.args\n && this.editModule.args.requestType === 'add')) {\n var rowsCount = this.parent.frozenRows ? (isAddNewRow ? this.parent.frozenRows + 1 : this.parent.frozenRows) +\n (rows.length - 1) : rows.length - 1;\n var rowsHeight = rowsCount * this.parent.getRowHeight();\n var position = this.parent.getContent().clientHeight - rowsHeight;\n div.style.bottom = position + 9 + 'px';\n }\n div.style.top = null;\n }\n };\n /**\n * @param {Column} col - specfies the column\n * @returns {boolean} returns the whether column is grouped\n * @hidden\n */\n Edit.prototype.checkColumnIsGrouped = function (col) {\n return !col.visible && !(this.parent.groupSettings.columns.indexOf(col.field) > -1);\n };\n /**\n * @param {object} editors -specfies the editors\n * @returns {void}\n * @hidden\n */\n Edit.AddEditors = function (editors) {\n Edit.editCellType = extend(Edit.editCellType, editors);\n };\n Edit.editCellType = {\n 'dropdownedit': DropDownEditCell, 'numericedit': NumericEditCell,\n 'datepickeredit': DatePickerEditCell, 'datetimepickeredit': DatePickerEditCell,\n 'booleanedit': BooleanEditCell, 'defaultedit': DefaultEditCell,\n 'templateedit': TemplateEditCell\n };\n return Edit;\n}());\nexport { Edit };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Component, EventHandler, Property, Event } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, isVisible, closest, attributes, detach, classList, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { selectAll, setStyleAttribute as setStyle, select } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, getUniqueID, formatUnit, Collection, compile as templateCompiler } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, Browser, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { calculatePosition } from '@syncfusion/ej2-popups';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { HScroll } from '../common/h-scroll';\nimport { VScroll } from '../common/v-scroll';\nvar CLS_VERTICAL = 'e-vertical';\nvar CLS_ITEMS = 'e-toolbar-items';\nvar CLS_ITEM = 'e-toolbar-item';\nvar CLS_RTL = 'e-rtl';\nvar CLS_SEPARATOR = 'e-separator';\nvar CLS_POPUPICON = 'e-popup-up-icon';\nvar CLS_POPUPDOWN = 'e-popup-down-icon';\nvar CLS_POPUPOPEN = 'e-popup-open';\nvar CLS_TEMPLATE = 'e-template';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_POPUPTEXT = 'e-toolbar-text';\nvar CLS_TBARTEXT = 'e-popup-text';\nvar CLS_TBAROVERFLOW = 'e-overflow-show';\nvar CLS_POPOVERFLOW = 'e-overflow-hide';\nvar CLS_TBARBTN = 'e-tbar-btn';\nvar CLS_TBARNAV = 'e-hor-nav';\nvar CLS_TBARSCRLNAV = 'e-scroll-nav';\nvar CLS_TBARRIGHT = 'e-toolbar-right';\nvar CLS_TBARLEFT = 'e-toolbar-left';\nvar CLS_TBARCENTER = 'e-toolbar-center';\nvar CLS_TBARPOS = 'e-tbar-pos';\nvar CLS_HSCROLLCNT = 'e-hscroll-content';\nvar CLS_VSCROLLCNT = 'e-vscroll-content';\nvar CLS_HSCROLLBAR = 'e-hscroll-bar';\nvar CLS_POPUPNAV = 'e-hor-nav';\nvar CLS_POPUPCLASS = 'e-toolbar-pop';\nvar CLS_POPUP = 'e-toolbar-popup';\nvar CLS_TBARBTNTEXT = 'e-tbar-btn-text';\nvar CLS_TBARNAVACT = 'e-nav-active';\nvar CLS_TBARIGNORE = 'e-ignore';\nvar CLS_POPPRI = 'e-popup-alone';\nvar CLS_HIDDEN = 'e-hidden';\nvar CLS_MULTIROW = 'e-toolbar-multirow';\nvar CLS_MULTIROWPOS = 'e-multirow-pos';\nvar CLS_MULTIROW_SEPARATOR = 'e-multirow-separator';\nvar CLS_EXTENDABLE_SEPARATOR = 'e-extended-separator';\nvar CLS_EXTEANDABLE_TOOLBAR = 'e-extended-toolbar';\nvar CLS_EXTENDABLECLASS = 'e-toolbar-extended';\nvar CLS_EXTENDPOPUP = 'e-expended-nav';\nvar CLS_EXTENDEDPOPOPEN = 'e-tbar-extended';\n/**\n * An item object that is used to configure Toolbar commands.\n */\nvar Item = /** @class */ (function (_super) {\n __extends(Item, _super);\n function Item() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Item.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"text\", void 0);\n __decorate([\n Property('auto')\n ], Item.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"showAlwaysInPopup\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"prefixIcon\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"suffixIcon\", void 0);\n __decorate([\n Property(true)\n ], Item.prototype, \"visible\", void 0);\n __decorate([\n Property('None')\n ], Item.prototype, \"overflow\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"template\", void 0);\n __decorate([\n Property('Button')\n ], Item.prototype, \"type\", void 0);\n __decorate([\n Property('Both')\n ], Item.prototype, \"showTextOn\", void 0);\n __decorate([\n Property(null)\n ], Item.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"tooltipText\", void 0);\n __decorate([\n Property('Left')\n ], Item.prototype, \"align\", void 0);\n __decorate([\n Event()\n ], Item.prototype, \"click\", void 0);\n __decorate([\n Property(-1)\n ], Item.prototype, \"tabIndex\", void 0);\n return Item;\n}(ChildProperty));\nexport { Item };\n/**\n * The Toolbar control contains a group of commands that are aligned horizontally.\n * ```html\n *
    \n * \n * ```\n */\nvar Toolbar = /** @class */ (function (_super) {\n __extends(Toolbar, _super);\n /**\n * Initializes a new instance of the Toolbar class.\n *\n * @param {ToolbarModel} options - Specifies Toolbar model properties as options.\n * @param { string | HTMLElement} element - Specifies the element that is rendered as a Toolbar.\n */\n function Toolbar(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.resizeContext = _this.resize.bind(_this);\n _this.orientationChangeContext = _this.orientationChange.bind(_this);\n /**\n * Contains the keyboard configuration of the Toolbar.\n */\n _this.keyConfigs = {\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow',\n popupOpen: 'enter',\n popupClose: 'escape',\n tab: 'tab',\n home: 'home',\n end: 'end'\n };\n return _this;\n }\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}.\n */\n Toolbar.prototype.destroy = function () {\n var _this = this;\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n var btnItems = this.element.querySelectorAll('.e-control.e-btn');\n [].slice.call(btnItems).forEach(function (el) {\n if (!isNOU(el) && !isNOU(el.ej2_instances) && !isNOU(el.ej2_instances[0]) && !(el.ej2_instances[0].isDestroyed)) {\n el.ej2_instances[0].destroy();\n }\n });\n this.unwireEvents();\n this.tempId.forEach(function (ele) {\n if (!isNOU(_this.element.querySelector(ele))) {\n document.body.appendChild(_this.element.querySelector(ele)).style.display = 'none';\n }\n });\n this.destroyItems();\n while (this.element.lastElementChild) {\n this.element.removeChild(this.element.lastElementChild);\n }\n if (this.trgtEle) {\n this.element.appendChild(this.ctrlTem);\n this.trgtEle = null;\n this.ctrlTem = null;\n }\n if (this.popObj) {\n this.popObj.destroy();\n detach(this.popObj.element);\n }\n if (this.activeEle) {\n this.activeEle = null;\n }\n this.popObj = null;\n this.tbarAlign = null;\n this.tbarItemsCol = [];\n this.remove(this.element, 'e-toolpop');\n if (this.cssClass) {\n removeClass([this.element], this.cssClass.split(' '));\n }\n this.element.removeAttribute('style');\n ['aria-disabled', 'aria-orientation', 'role'].forEach(function (attrb) {\n return _this.element.removeAttribute(attrb);\n });\n _super.prototype.destroy.call(this);\n };\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n Toolbar.prototype.preRender = function () {\n var eventArgs = { enableCollision: this.enableCollision, scrollStep: this.scrollStep };\n this.trigger('beforeCreate', eventArgs);\n this.enableCollision = eventArgs.enableCollision;\n this.scrollStep = eventArgs.scrollStep;\n this.scrollModule = null;\n this.popObj = null;\n this.tempId = [];\n this.tbarItemsCol = this.items;\n this.isVertical = this.element.classList.contains(CLS_VERTICAL) ? true : false;\n this.isExtendedOpen = false;\n this.popupPriCount = 0;\n if (this.enableRtl) {\n this.add(this.element, CLS_RTL);\n }\n };\n Toolbar.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n window.addEventListener('resize', this.resizeContext);\n window.addEventListener('orientationchange', this.orientationChangeContext);\n if (this.allowKeyboard) {\n this.wireKeyboardEvent();\n }\n };\n Toolbar.prototype.wireKeyboardEvent = function () {\n this.keyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs\n });\n EventHandler.add(this.element, 'keydown', this.docKeyDown, this);\n this.updateTabIndex('0');\n };\n Toolbar.prototype.updateTabIndex = function (tabIndex) {\n var ele = this.element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_DISABLE + ' ):not(.' + CLS_SEPARATOR + ' ):not(.' + CLS_HIDDEN + ' )');\n if (!isNOU(ele) && !isNOU(ele.firstElementChild)) {\n var dataTabIndex = ele.firstElementChild.getAttribute('data-tabindex');\n if (dataTabIndex && dataTabIndex === '-1' && ele.firstElementChild.tagName !== 'INPUT') {\n ele.firstElementChild.setAttribute('tabindex', tabIndex);\n }\n }\n };\n Toolbar.prototype.unwireKeyboardEvent = function () {\n if (this.keyModule) {\n EventHandler.remove(this.element, 'keydown', this.docKeyDown);\n this.keyModule.destroy();\n this.keyModule = null;\n }\n };\n Toolbar.prototype.docKeyDown = function (e) {\n if (e.target.tagName === 'INPUT') {\n return;\n }\n var popCheck = !isNOU(this.popObj) && isVisible(this.popObj.element) && this.overflowMode !== 'Extended';\n if (e.keyCode === 9 && e.target.classList.contains('e-hor-nav') === true && popCheck) {\n this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n var keyCheck = (e.keyCode === 40 || e.keyCode === 38 || e.keyCode === 35 || e.keyCode === 36);\n if (keyCheck) {\n e.preventDefault();\n }\n };\n Toolbar.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.clickHandler);\n this.destroyScroll();\n this.unwireKeyboardEvent();\n window.removeEventListener('resize', this.resizeContext);\n window.removeEventListener('orientationchange', this.orientationChangeContext);\n document.removeEventListener('scroll', this.clickEvent);\n document.removeEventListener('click', this.scrollEvent);\n this.scrollEvent = null;\n this.clickEvent = null;\n };\n Toolbar.prototype.clearProperty = function () {\n this.tbarEle = [];\n this.tbarAlgEle = { lefts: [], centers: [], rights: [] };\n };\n Toolbar.prototype.docEvent = function (e) {\n var popEle = closest(e.target, '.e-popup');\n if (this.popObj && isVisible(this.popObj.element) && !popEle && this.overflowMode === 'Popup') {\n this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n };\n Toolbar.prototype.destroyScroll = function () {\n if (this.scrollModule) {\n if (this.tbarAlign) {\n this.add(this.scrollModule.element, CLS_TBARPOS);\n }\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n };\n Toolbar.prototype.destroyItems = function () {\n if (this.element) {\n [].slice.call(this.element.querySelectorAll('.' + CLS_ITEM)).forEach(function (el) { detach(el); });\n }\n if (this.tbarAlign) {\n var tbarItems = this.element.querySelector('.' + CLS_ITEMS);\n [].slice.call(tbarItems.children).forEach(function (el) {\n detach(el);\n });\n this.tbarAlign = false;\n this.remove(tbarItems, CLS_TBARPOS);\n }\n this.clearProperty();\n };\n Toolbar.prototype.destroyMode = function () {\n if (this.scrollModule) {\n this.remove(this.scrollModule.element, CLS_RTL);\n this.destroyScroll();\n }\n this.remove(this.element, CLS_EXTENDEDPOPOPEN);\n this.remove(this.element, CLS_EXTEANDABLE_TOOLBAR);\n var tempEle = this.element.querySelector('.e-toolbar-multirow');\n if (tempEle) {\n this.remove(tempEle, CLS_MULTIROW);\n }\n if (this.popObj) {\n this.popupRefresh(this.popObj.element, true);\n }\n };\n Toolbar.prototype.add = function (ele, val) {\n ele.classList.add(val);\n };\n Toolbar.prototype.remove = function (ele, val) {\n ele.classList.remove(val);\n };\n Toolbar.prototype.elementFocus = function (ele) {\n var fChild = ele.firstElementChild;\n if (fChild) {\n fChild.focus();\n this.activeEleSwitch(ele);\n }\n else {\n ele.focus();\n }\n };\n Toolbar.prototype.clstElement = function (tbrNavChk, trgt) {\n var clst;\n if (tbrNavChk && this.popObj && isVisible(this.popObj.element)) {\n clst = this.popObj.element.querySelector('.' + CLS_ITEM);\n }\n else if (this.element === trgt || tbrNavChk) {\n clst = this.element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_DISABLE + ' ):not(.' + CLS_SEPARATOR + ' ):not(.' + CLS_HIDDEN + ' )');\n }\n else {\n clst = closest(trgt, '.' + CLS_ITEM);\n }\n return clst;\n };\n Toolbar.prototype.keyHandling = function (clst, e, trgt, navChk, scrollChk) {\n var popObj = this.popObj;\n var rootEle = this.element;\n var popAnimate = { name: 'FadeOut', duration: 100 };\n var value = e.action === 'moveUp' ? 'previous' : 'next';\n var ele;\n var nodes;\n switch (e.action) {\n case 'moveRight':\n if (this.isVertical) {\n return;\n }\n if (rootEle === trgt) {\n this.elementFocus(clst);\n }\n else if (!navChk) {\n this.eleFocus(clst, 'next');\n }\n break;\n case 'moveLeft':\n if (this.isVertical) {\n return;\n }\n if (!navChk) {\n this.eleFocus(clst, 'previous');\n }\n break;\n case 'home':\n case 'end':\n if (clst) {\n var popupCheck = closest(clst, '.e-popup');\n var extendedPopup = this.element.querySelector('.' + CLS_EXTENDABLECLASS);\n if (this.overflowMode === 'Extended' && extendedPopup && extendedPopup.classList.contains('e-popup-open')) {\n popupCheck = e.action === 'end' ? extendedPopup : null;\n }\n if (popupCheck) {\n if (isVisible(this.popObj.element)) {\n nodes = [].slice.call(popupCheck.children);\n if (e.action === 'home') {\n ele = this.focusFirstVisibleEle(nodes);\n }\n else {\n ele = this.focusLastVisibleEle(nodes);\n }\n }\n }\n else {\n nodes = this.element.querySelectorAll('.' + CLS_ITEMS + ' .' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + ')');\n if (e.action === 'home') {\n ele = this.focusFirstVisibleEle(nodes);\n }\n else {\n ele = this.focusLastVisibleEle(nodes);\n }\n }\n if (ele) {\n this.elementFocus(ele);\n }\n }\n break;\n case 'moveUp':\n case 'moveDown':\n if (!this.isVertical) {\n if (popObj && closest(trgt, '.e-popup')) {\n var popEle = popObj.element;\n var popFrstEle = popEle.firstElementChild;\n if ((value === 'previous' && popFrstEle === clst)) {\n popEle.lastElementChild.firstChild.focus();\n }\n else if (value === 'next' && popEle.lastElementChild === clst) {\n popFrstEle.firstChild.focus();\n }\n else {\n this.eleFocus(clst, value);\n }\n }\n else if (e.action === 'moveDown' && popObj && isVisible(popObj.element)) {\n this.elementFocus(clst);\n }\n }\n else {\n if (e.action === 'moveUp') {\n this.eleFocus(clst, 'previous');\n }\n else {\n this.eleFocus(clst, 'next');\n }\n }\n break;\n case 'tab':\n if (!scrollChk && !navChk) {\n var ele_1 = clst.firstElementChild;\n if (rootEle === trgt) {\n if (this.activeEle) {\n this.activeEle.focus();\n }\n else {\n this.activeEleRemove(ele_1);\n ele_1.focus();\n }\n }\n }\n break;\n case 'popupClose':\n if (popObj && this.overflowMode !== 'Extended') {\n popObj.hide(popAnimate);\n }\n break;\n case 'popupOpen':\n if (!navChk) {\n return;\n }\n if (popObj && !isVisible(popObj.element)) {\n popObj.element.style.top = rootEle.offsetHeight + 'px';\n popObj.show({ name: 'FadeIn', duration: 100 });\n }\n else {\n popObj.hide(popAnimate);\n }\n break;\n }\n };\n Toolbar.prototype.keyActionHandler = function (e) {\n var trgt = e.target;\n if (trgt.tagName === 'INPUT' || trgt.tagName === 'TEXTAREA' || this.element.classList.contains(CLS_DISABLE)) {\n return;\n }\n e.preventDefault();\n var tbrNavChk = trgt.classList.contains(CLS_TBARNAV);\n var tbarScrollChk = trgt.classList.contains(CLS_TBARSCRLNAV);\n var clst = this.clstElement(tbrNavChk, trgt);\n if (clst || tbarScrollChk) {\n this.keyHandling(clst, e, trgt, tbrNavChk, tbarScrollChk);\n }\n };\n /**\n * Specifies the value to disable/enable the Toolbar component.\n * When set to `true`, the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, Toolbar will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n Toolbar.prototype.disable = function (value) {\n var rootEle = this.element;\n if (value) {\n rootEle.classList.add(CLS_DISABLE);\n }\n else {\n rootEle.classList.remove(CLS_DISABLE);\n }\n if (this.activeEle) {\n this.activeEle.setAttribute('tabindex', this.activeEle.getAttribute('data-tabindex'));\n }\n if (this.scrollModule) {\n this.scrollModule.disable(value);\n }\n if (this.popObj) {\n if (isVisible(this.popObj.element) && this.overflowMode !== 'Extended') {\n this.popObj.hide();\n }\n rootEle.querySelector('#' + rootEle.id + '_nav').setAttribute('tabindex', !value ? '0' : '-1');\n }\n };\n Toolbar.prototype.eleContains = function (el) {\n return el.classList.contains(CLS_SEPARATOR) || el.classList.contains(CLS_DISABLE) || el.getAttribute('disabled') || el.classList.contains(CLS_HIDDEN) || !isVisible(el) || !el.classList.contains(CLS_ITEM);\n };\n Toolbar.prototype.focusFirstVisibleEle = function (nodes) {\n var element;\n var index = 0;\n while (index < nodes.length) {\n var ele = nodes[parseInt(index.toString(), 10)];\n if (!ele.classList.contains(CLS_HIDDEN) && !ele.classList.contains(CLS_DISABLE)) {\n return ele;\n }\n index++;\n }\n return element;\n };\n Toolbar.prototype.focusLastVisibleEle = function (nodes) {\n var element;\n var index = nodes.length - 1;\n while (index >= 0) {\n var ele = nodes[parseInt(index.toString(), 10)];\n if (!ele.classList.contains(CLS_HIDDEN) && !ele.classList.contains(CLS_DISABLE)) {\n return ele;\n }\n index--;\n }\n return element;\n };\n Toolbar.prototype.eleFocus = function (closest, pos) {\n var sib = Object(closest)[pos + 'ElementSibling'];\n if (sib) {\n var skipEle = this.eleContains(sib);\n if (skipEle) {\n this.eleFocus(sib, pos);\n return;\n }\n this.elementFocus(sib);\n }\n else if (this.tbarAlign) {\n var elem = Object(closest.parentElement)[pos + 'ElementSibling'];\n if (!isNOU(elem) && elem.children.length === 0) {\n elem = Object(elem)[pos + 'ElementSibling'];\n }\n if (!isNOU(elem) && elem.children.length > 0) {\n if (pos === 'next') {\n var el = elem.querySelector('.' + CLS_ITEM);\n if (this.eleContains(el)) {\n this.eleFocus(el, pos);\n }\n else {\n el.firstElementChild.focus();\n this.activeEleSwitch(el);\n }\n }\n else {\n var el = elem.lastElementChild;\n if (this.eleContains(el)) {\n this.eleFocus(el, pos);\n }\n else {\n this.elementFocus(el);\n }\n }\n }\n }\n else if (!isNOU(closest)) {\n var tbrItems = this.element.querySelectorAll('.' + CLS_ITEMS + ' .' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + ')' + ':not(.' + CLS_DISABLE + ')' + ':not(.' + CLS_HIDDEN + ')');\n if (pos === 'next' && tbrItems) {\n this.elementFocus(tbrItems[0]);\n }\n else if (pos === 'previous' && tbrItems) {\n this.elementFocus(tbrItems[tbrItems.length - 1]);\n }\n }\n };\n Toolbar.prototype.clickHandler = function (e) {\n var _this = this;\n var trgt = e.target;\n var ele = this.element;\n var isPopupElement = !isNOU(closest(trgt, '.' + CLS_POPUPCLASS));\n var clsList = trgt.classList;\n var popupNav = closest(trgt, ('.' + CLS_TBARNAV));\n if (!popupNav) {\n popupNav = trgt;\n }\n if (!ele.children[0].classList.contains('e-hscroll') && !ele.children[0].classList.contains('e-vscroll')\n && (clsList.contains(CLS_TBARNAV))) {\n clsList = trgt.querySelector('.e-icons').classList;\n }\n if (clsList.contains(CLS_POPUPICON) || clsList.contains(CLS_POPUPDOWN)) {\n this.popupClickHandler(ele, popupNav, CLS_RTL);\n }\n var itemObj;\n var clst = closest(e.target, '.' + CLS_ITEM);\n if ((isNOU(clst) || clst.classList.contains(CLS_DISABLE)) && !popupNav.classList.contains(CLS_TBARNAV)) {\n return;\n }\n if (clst) {\n var tempItem = this.items[this.tbarEle.indexOf(clst)];\n itemObj = tempItem;\n }\n var eventArgs = { originalEvent: e, item: itemObj };\n var isClickBinded = itemObj && !isNOU(itemObj.click) && typeof itemObj.click == 'object' ?\n !isNOU(itemObj.click.observers) && itemObj.click.observers.length > 0 :\n !isNOU(itemObj) && !isNOU(itemObj.click);\n if (isClickBinded) {\n this.trigger('items[' + this.tbarEle.indexOf(clst) + '].click', eventArgs);\n }\n if (!eventArgs.cancel) {\n this.trigger('clicked', eventArgs, function (clickedArgs) {\n if (!isNOU(_this.popObj) && isPopupElement && !clickedArgs.cancel && _this.overflowMode === 'Popup' &&\n clickedArgs.item && clickedArgs.item.type !== 'Input') {\n _this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n });\n }\n };\n Toolbar.prototype.popupClickHandler = function (ele, popupNav, CLS_RTL) {\n var popObj = this.popObj;\n if (isVisible(popObj.element)) {\n popupNav.classList.remove(CLS_TBARNAVACT);\n popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n else {\n if (ele.classList.contains(CLS_RTL)) {\n popObj.enableRtl = true;\n popObj.position = { X: 'left', Y: 'top' };\n }\n if (popObj.offsetX === 0 && !ele.classList.contains(CLS_RTL)) {\n popObj.enableRtl = false;\n popObj.position = { X: 'right', Y: 'top' };\n }\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '0px';\n popObj.width = this.getToolbarPopupWidth(this.element);\n }\n popObj.dataBind();\n popObj.refreshPosition();\n popObj.element.style.top = this.getElementOffsetY() + 'px';\n popupNav.classList.add(CLS_TBARNAVACT);\n popObj.show({ name: 'FadeIn', duration: 100 });\n }\n };\n Toolbar.prototype.getToolbarPopupWidth = function (ele) {\n var eleStyles = window.getComputedStyle(ele);\n return parseFloat(eleStyles.width) + ((parseFloat(eleStyles.borderRightWidth)) * 2);\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n Toolbar.prototype.render = function () {\n var _this = this;\n this.initialize();\n this.renderControl();\n this.wireEvents();\n this.clickEvent = this.docEvent.bind(this);\n this.scrollEvent = this.docEvent.bind(this);\n this.renderComplete();\n if (this.isReact && this.portals && this.portals.length > 0) {\n this.renderReactTemplates(function () {\n _this.refreshOverflow();\n });\n }\n };\n Toolbar.prototype.initialize = function () {\n var width = formatUnit(this.width);\n var height = formatUnit(this.height);\n if (Browser.info.name !== 'msie' || this.height !== 'auto' || this.overflowMode === 'MultiRow') {\n setStyle(this.element, { 'height': height });\n }\n setStyle(this.element, { 'width': width });\n var ariaAttr = {\n 'role': 'toolbar', 'aria-disabled': 'false',\n 'aria-orientation': !this.isVertical ? 'horizontal' : 'vertical'\n };\n attributes(this.element, ariaAttr);\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n };\n Toolbar.prototype.renderControl = function () {\n var ele = this.element;\n this.trgtEle = (ele.children.length > 0) ? ele.querySelector('div') : null;\n this.tbarAlgEle = { lefts: [], centers: [], rights: [] };\n this.renderItems();\n this.renderLayout();\n };\n Toolbar.prototype.renderLayout = function () {\n this.renderOverflowMode();\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n if (this.popObj && this.popObj.element.childElementCount > 1 && this.checkPopupRefresh(this.element, this.popObj.element)) {\n this.popupRefresh(this.popObj.element, false);\n }\n this.separator();\n };\n Toolbar.prototype.itemsAlign = function (items, itemEleDom) {\n var innerItem;\n var innerPos;\n if (!this.tbarEle) {\n this.tbarEle = [];\n }\n for (var i = 0; i < items.length; i++) {\n innerItem = this.renderSubComponent(items[parseInt(i.toString(), 10)], i);\n if (this.tbarEle.indexOf(innerItem) === -1) {\n this.tbarEle.push(innerItem);\n }\n if (!this.tbarAlign) {\n this.tbarItemAlign(items[parseInt(i.toString(), 10)], itemEleDom, i);\n }\n innerPos = itemEleDom.querySelector('.e-toolbar-' + items[parseInt(i.toString(), 10)].align.toLowerCase());\n if (innerPos) {\n if (!(items[parseInt(i.toString(), 10)].showAlwaysInPopup && items[parseInt(i.toString(), 10)].overflow !== 'Show')) {\n this.tbarAlgEle[(items[parseInt(i.toString(), 10)].align + 's').toLowerCase()].push(innerItem);\n }\n innerPos.appendChild(innerItem);\n }\n else {\n itemEleDom.appendChild(innerItem);\n }\n }\n if (this.isReact) {\n var portals = 'portals';\n this.notify('render-react-toolbar-template', this[\"\" + portals]);\n this.renderReactTemplates();\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Toolbar.prototype.changeOrientation = function () {\n var ele = this.element;\n if (this.isVertical) {\n ele.classList.remove(CLS_VERTICAL);\n this.isVertical = false;\n if (this.height === 'auto' || this.height === '100%') {\n ele.style.height = this.height;\n }\n ele.setAttribute('aria-orientation', 'horizontal');\n }\n else {\n ele.classList.add(CLS_VERTICAL);\n this.isVertical = true;\n ele.setAttribute('aria-orientation', 'vertical');\n setStyle(this.element, { 'height': formatUnit(this.height), 'width': formatUnit(this.width) });\n }\n this.destroyMode();\n this.refreshOverflow();\n };\n Toolbar.prototype.initScroll = function (element, innerItems) {\n if (!this.scrollModule && this.checkOverflow(element, innerItems[0])) {\n if (this.tbarAlign) {\n this.element.querySelector('.' + CLS_ITEMS + ' .' + CLS_TBARCENTER).removeAttribute('style');\n }\n if (this.isVertical) {\n this.scrollModule = new VScroll({ scrollStep: this.scrollStep, enableRtl: this.enableRtl }, innerItems[0]);\n }\n else {\n this.scrollModule = new HScroll({ scrollStep: this.scrollStep, enableRtl: this.enableRtl }, innerItems[0]);\n }\n if (this.cssClass) {\n addClass([innerItems[0]], this.cssClass.split(' '));\n }\n var scrollEle = this.scrollModule.element.querySelector('.' + CLS_HSCROLLBAR + ', .' + 'e-vscroll-bar');\n if (scrollEle) {\n scrollEle.removeAttribute('tabindex');\n }\n this.remove(this.scrollModule.element, CLS_TBARPOS);\n setStyle(this.element, { overflow: 'hidden' });\n }\n };\n Toolbar.prototype.itemWidthCal = function (items) {\n var _this = this;\n var width = 0;\n var style;\n [].slice.call(selectAll('.' + CLS_ITEM, items)).forEach(function (el) {\n if (isVisible(el)) {\n style = window.getComputedStyle(el);\n width += _this.isVertical ? el.offsetHeight : el.offsetWidth;\n width += parseFloat(_this.isVertical ? style.marginTop : style.marginRight);\n width += parseFloat(_this.isVertical ? style.marginBottom : style.marginLeft);\n }\n });\n return width;\n };\n Toolbar.prototype.getScrollCntEle = function (innerItem) {\n var trgClass = (this.isVertical) ? '.e-vscroll-content' : '.e-hscroll-content';\n return innerItem.querySelector(trgClass);\n };\n Toolbar.prototype.checkOverflow = function (element, innerItem) {\n if (isNOU(element) || isNOU(innerItem) || !isVisible(element)) {\n return false;\n }\n var eleWidth = this.isVertical ? element.offsetHeight : element.offsetWidth;\n var itemWidth = this.isVertical ? innerItem.offsetHeight : innerItem.offsetWidth;\n if (this.tbarAlign || this.scrollModule || (eleWidth === itemWidth)) {\n itemWidth = this.itemWidthCal(this.scrollModule ? this.getScrollCntEle(innerItem) : innerItem);\n }\n var popNav = element.querySelector('.' + CLS_TBARNAV);\n var scrollNav = element.querySelector('.' + CLS_TBARSCRLNAV);\n var navEleWidth = 0;\n if (popNav) {\n navEleWidth = this.isVertical ? popNav.offsetHeight : popNav.offsetWidth;\n }\n else if (scrollNav) {\n navEleWidth = this.isVertical ? (scrollNav.offsetHeight * (2)) : (scrollNav.offsetWidth * 2);\n }\n if (itemWidth > eleWidth - navEleWidth) {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * Refresh the whole Toolbar component without re-rendering.\n * - It is used to manually refresh the Toolbar overflow modes such as scrollable, popup, multi row, and extended.\n * - It will refresh the Toolbar component after loading items dynamically.\n *\n * @returns {void}.\n */\n Toolbar.prototype.refreshOverflow = function () {\n this.resize();\n };\n Toolbar.prototype.toolbarAlign = function (innerItems) {\n if (this.tbarAlign) {\n this.add(innerItems, CLS_TBARPOS);\n this.itemPositioning();\n }\n };\n Toolbar.prototype.renderOverflowMode = function () {\n var ele = this.element;\n var innerItems = ele.querySelector('.' + CLS_ITEMS);\n var priorityCheck = this.popupPriCount > 0;\n if (ele && ele.children.length > 0) {\n this.offsetWid = ele.offsetWidth;\n this.remove(this.element, 'e-toolpop');\n if (Browser.info.name === 'msie' && this.height === 'auto') {\n ele.style.height = '';\n }\n switch (this.overflowMode) {\n case 'Scrollable':\n if (isNOU(this.scrollModule)) {\n this.initScroll(ele, [].slice.call(ele.getElementsByClassName(CLS_ITEMS)));\n }\n break;\n case 'Popup':\n this.add(this.element, 'e-toolpop');\n if (this.tbarAlign) {\n this.removePositioning();\n }\n if (this.checkOverflow(ele, innerItems) || priorityCheck) {\n this.setOverflowAttributes(ele);\n }\n this.toolbarAlign(innerItems);\n break;\n case 'MultiRow':\n this.add(innerItems, CLS_MULTIROW);\n if (this.checkOverflow(ele, innerItems) && this.tbarAlign) {\n this.removePositioning();\n this.add(innerItems, CLS_MULTIROWPOS);\n }\n if (ele.style.overflow === 'hidden') {\n ele.style.overflow = '';\n }\n if (Browser.info.name === 'msie' || ele.style.height !== 'auto') {\n ele.style.height = 'auto';\n }\n break;\n case 'Extended':\n this.add(this.element, CLS_EXTEANDABLE_TOOLBAR);\n if (this.checkOverflow(ele, innerItems) || priorityCheck) {\n if (this.tbarAlign) {\n this.removePositioning();\n }\n this.setOverflowAttributes(ele);\n }\n this.toolbarAlign(innerItems);\n }\n }\n };\n Toolbar.prototype.setOverflowAttributes = function (ele) {\n this.createPopupEle(ele, [].slice.call(selectAll('.' + CLS_ITEMS + ' .' + CLS_ITEM, ele)));\n var ariaAttr = {\n 'tabindex': '0', 'role': 'button', 'aria-haspopup': 'true',\n 'aria-label': 'overflow'\n };\n attributes(this.element.querySelector('.' + CLS_TBARNAV), ariaAttr);\n };\n Toolbar.prototype.separator = function () {\n var element = this.element;\n var eleItem = [].slice.call(element.querySelectorAll('.' + CLS_SEPARATOR));\n var multiVar = element.querySelector('.' + CLS_MULTIROW_SEPARATOR);\n var extendVar = element.querySelector('.' + CLS_EXTENDABLE_SEPARATOR);\n var eleInlineItem = this.overflowMode === 'MultiRow' ? multiVar : extendVar;\n if (eleInlineItem !== null) {\n if (this.overflowMode === 'MultiRow') {\n eleInlineItem.classList.remove(CLS_MULTIROW_SEPARATOR);\n }\n else if (this.overflowMode === 'Extended') {\n eleInlineItem.classList.remove(CLS_EXTENDABLE_SEPARATOR);\n }\n }\n for (var i = 0; i <= eleItem.length - 1; i++) {\n if (eleItem[parseInt(i.toString(), 10)].offsetLeft < 30 && eleItem[parseInt(i.toString(), 10)].offsetLeft !== 0) {\n if (this.overflowMode === 'MultiRow') {\n eleItem[parseInt(i.toString(), 10)].classList.add(CLS_MULTIROW_SEPARATOR);\n }\n else if (this.overflowMode === 'Extended') {\n eleItem[parseInt(i.toString(), 10)].classList.add(CLS_EXTENDABLE_SEPARATOR);\n }\n }\n }\n };\n Toolbar.prototype.createPopupEle = function (ele, innerEle) {\n var innerNav = ele.querySelector('.' + CLS_TBARNAV);\n var vertical = this.isVertical;\n if (!innerNav) {\n this.createPopupIcon(ele);\n }\n innerNav = ele.querySelector('.' + CLS_TBARNAV);\n var innerNavDom = (vertical ? innerNav.offsetHeight : innerNav.offsetWidth);\n var eleWidth = ((vertical ? ele.offsetHeight : ele.offsetWidth) - (innerNavDom));\n this.element.classList.remove('e-rtl');\n setStyle(this.element, { direction: 'initial' });\n this.checkPriority(ele, innerEle, eleWidth, true);\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n this.element.style.removeProperty('direction');\n this.createPopup();\n };\n Toolbar.prototype.pushingPoppedEle = function (tbarObj, popupPri, ele, eleHeight, sepHeight) {\n var element = tbarObj.element;\n var poppedEle = [].slice.call(selectAll('.' + CLS_POPUP, element.querySelector('.' + CLS_ITEMS)));\n var nodes = selectAll('.' + CLS_TBAROVERFLOW, ele);\n var nodeIndex = 0;\n var nodePri = 0;\n poppedEle.forEach(function (el, index) {\n nodes = selectAll('.' + CLS_TBAROVERFLOW, ele);\n if (el.classList.contains(CLS_TBAROVERFLOW) && nodes.length > 0) {\n if (tbarObj.tbResize && nodes.length > index) {\n ele.insertBefore(el, nodes[parseInt(index.toString(), 10)]);\n ++nodePri;\n }\n else {\n ele.insertBefore(el, ele.children[nodes.length]);\n ++nodePri;\n }\n }\n else if (el.classList.contains(CLS_TBAROVERFLOW)) {\n ele.insertBefore(el, ele.firstChild);\n ++nodePri;\n }\n else if (tbarObj.tbResize && el.classList.contains(CLS_POPOVERFLOW) && ele.children.length > 0 && nodes.length === 0) {\n ele.insertBefore(el, ele.firstChild);\n ++nodePri;\n }\n else if (el.classList.contains(CLS_POPOVERFLOW)) {\n popupPri.push(el);\n }\n else if (tbarObj.tbResize) {\n ele.insertBefore(el, ele.childNodes[nodeIndex + nodePri]);\n ++nodeIndex;\n }\n else {\n ele.appendChild(el);\n }\n if (el.classList.contains(CLS_SEPARATOR)) {\n setStyle(el, { display: '', height: sepHeight + 'px' });\n }\n else {\n setStyle(el, { display: '', height: eleHeight + 'px' });\n }\n });\n popupPri.forEach(function (el) {\n ele.appendChild(el);\n });\n var tbarEle = selectAll('.' + CLS_ITEM, element.querySelector('.' + CLS_ITEMS));\n for (var i = tbarEle.length - 1; i >= 0; i--) {\n var tbarElement = tbarEle[parseInt(i.toString(), 10)];\n if (tbarElement.classList.contains(CLS_SEPARATOR) && this.overflowMode !== 'Extended') {\n setStyle(tbarElement, { display: 'none' });\n }\n else {\n break;\n }\n }\n };\n Toolbar.prototype.createPopup = function () {\n var element = this.element;\n var sepHeight;\n var sepItem;\n if (this.overflowMode === 'Extended') {\n sepItem = element.querySelector('.' + CLS_SEPARATOR);\n sepHeight =\n (element.style.height === 'auto' || element.style.height === '') ? null : (sepItem && sepItem.offsetHeight);\n }\n var eleItem = element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + '):not(.' + CLS_POPUP + ')');\n var eleHeight = (element.style.height === 'auto' || element.style.height === '') ? null : (eleItem && eleItem.offsetHeight);\n var ele;\n var popupPri = [];\n if (select('#' + element.id + '_popup.' + CLS_POPUPCLASS, element)) {\n ele = select('#' + element.id + '_popup.' + CLS_POPUPCLASS, element);\n }\n else {\n var extendEle = this.createElement('div', {\n id: element.id + '_popup', className: CLS_POPUPCLASS + ' ' + CLS_EXTENDABLECLASS\n });\n var popupEle = this.createElement('div', { id: element.id + '_popup', className: CLS_POPUPCLASS });\n ele = this.overflowMode === 'Extended' ? extendEle : popupEle;\n }\n this.pushingPoppedEle(this, popupPri, ele, eleHeight, sepHeight);\n this.popupInit(element, ele);\n };\n Toolbar.prototype.getElementOffsetY = function () {\n return (this.overflowMode === 'Extended' && window.getComputedStyle(this.element).getPropertyValue('box-sizing') === 'border-box' ?\n this.element.clientHeight : this.element.offsetHeight);\n };\n Toolbar.prototype.popupInit = function (element, ele) {\n if (!this.popObj) {\n element.appendChild(ele);\n if (this.cssClass) {\n addClass([ele], this.cssClass.split(' '));\n }\n setStyle(this.element, { overflow: '' });\n var popup = new Popup(null, {\n relateTo: this.element,\n offsetY: (this.isVertical) ? 0 : this.getElementOffsetY(),\n enableRtl: this.enableRtl,\n open: this.popupOpen.bind(this),\n close: this.popupClose.bind(this),\n collision: { Y: this.enableCollision ? 'flip' : 'none' },\n position: this.enableRtl ? { X: 'left', Y: 'top' } : { X: 'right', Y: 'top' }\n });\n if (this.overflowMode === 'Extended') {\n popup.width = this.getToolbarPopupWidth(this.element);\n popup.offsetX = 0;\n }\n popup.appendTo(ele);\n document.addEventListener('scroll', this.clickEvent);\n document.addEventListener('click', this.scrollEvent);\n if (this.overflowMode !== 'Extended') {\n popup.element.style.maxHeight = popup.element.offsetHeight + 'px';\n }\n if (this.isVertical) {\n popup.element.style.visibility = 'hidden';\n }\n if (this.isExtendedOpen) {\n var popupNav = this.element.querySelector('.' + CLS_TBARNAV);\n popupNav.classList.add(CLS_TBARNAVACT);\n classList(popupNav.firstElementChild, [CLS_POPUPICON], [CLS_POPUPDOWN]);\n this.element.querySelector('.' + CLS_EXTENDABLECLASS).classList.add(CLS_POPUPOPEN);\n }\n else {\n popup.hide();\n }\n this.popObj = popup;\n }\n else if (this.overflowMode !== 'Extended') {\n var popupEle = this.popObj.element;\n setStyle(popupEle, { maxHeight: '', display: 'block' });\n setStyle(popupEle, { maxHeight: popupEle.offsetHeight + 'px', display: '' });\n }\n };\n Toolbar.prototype.tbarPopupHandler = function (isOpen) {\n if (this.overflowMode === 'Extended') {\n if (isOpen) {\n this.add(this.element, CLS_EXTENDEDPOPOPEN);\n }\n else {\n this.remove(this.element, CLS_EXTENDEDPOPOPEN);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Toolbar.prototype.popupOpen = function (e) {\n var popObj = this.popObj;\n if (!this.isVertical) {\n popObj.offsetY = this.getElementOffsetY();\n popObj.dataBind();\n }\n var popupEle = this.popObj.element;\n var toolEle = this.popObj.element.parentElement;\n var popupNav = toolEle.querySelector('.' + CLS_TBARNAV);\n popupNav.setAttribute('aria-expanded', 'true');\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '';\n }\n else {\n setStyle(popObj.element, { height: 'auto', maxHeight: '' });\n popObj.element.style.maxHeight = popObj.element.offsetHeight + 'px';\n }\n var popupElePos = popupEle.offsetTop + popupEle.offsetHeight + calculatePosition(toolEle).top;\n var popIcon = popupNav.firstElementChild;\n popupNav.classList.add(CLS_TBARNAVACT);\n classList(popIcon, [CLS_POPUPICON], [CLS_POPUPDOWN]);\n this.tbarPopupHandler(true);\n var scrollVal = isNOU(window.scrollY) ? 0 : window.scrollY;\n if (!this.isVertical && ((window.innerHeight + scrollVal) < popupElePos) && (this.element.offsetTop < popupEle.offsetHeight)) {\n var overflowHeight = (popupEle.offsetHeight - ((popupElePos - window.innerHeight - scrollVal) + 5));\n popObj.height = overflowHeight + 'px';\n for (var i = 0; i <= popupEle.childElementCount; i++) {\n var ele = popupEle.children[parseInt(i.toString(), 10)];\n if (ele.offsetTop + ele.offsetHeight > overflowHeight) {\n overflowHeight = ele.offsetTop;\n break;\n }\n }\n if (this.overflowMode !== 'Extended') {\n setStyle(popObj.element, { maxHeight: overflowHeight + 'px' });\n }\n }\n else if (this.isVertical && this.overflowMode !== 'Extended') {\n var tbEleData = this.element.getBoundingClientRect();\n setStyle(popObj.element, { maxHeight: (tbEleData.top + this.element.offsetHeight) + 'px', bottom: 0, visibility: '' });\n }\n if (popObj) {\n var popupOffset = popupEle.getBoundingClientRect();\n if (popupOffset.right > document.documentElement.clientWidth && popupOffset.width > toolEle.getBoundingClientRect().width) {\n popObj.collision = { Y: 'none' };\n popObj.dataBind();\n }\n popObj.refreshPosition();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Toolbar.prototype.popupClose = function (e) {\n var element = this.element;\n var popupNav = element.querySelector('.' + CLS_TBARNAV);\n popupNav.setAttribute('aria-expanded', 'false');\n var popIcon = popupNav.firstElementChild;\n popupNav.classList.remove(CLS_TBARNAVACT);\n classList(popIcon, [CLS_POPUPDOWN], [CLS_POPUPICON]);\n this.tbarPopupHandler(false);\n };\n Toolbar.prototype.checkPriority = function (ele, inEle, eleWidth, pre) {\n var popPriority = this.popupPriCount > 0;\n var len = inEle.length;\n var eleWid = eleWidth;\n var eleOffset;\n var checkoffset;\n var sepCheck = 0;\n var itemCount = 0;\n var itemPopCount = 0;\n var checkClass = function (ele, val) {\n var rVal = false;\n val.forEach(function (cls) {\n if (ele.classList.contains(cls)) {\n rVal = true;\n }\n });\n return rVal;\n };\n for (var i = len - 1; i >= 0; i--) {\n var mrgn = void 0;\n var compuStyle = window.getComputedStyle(inEle[parseInt(i.toString(), 10)]);\n if (this.isVertical) {\n mrgn = parseFloat((compuStyle).marginTop);\n mrgn += parseFloat((compuStyle).marginBottom);\n }\n else {\n mrgn = parseFloat((compuStyle).marginRight);\n mrgn += parseFloat((compuStyle).marginLeft);\n }\n var fstEleCheck = inEle[parseInt(i.toString(), 10)] === this.tbarEle[0];\n if (fstEleCheck) {\n this.tbarEleMrgn = mrgn;\n }\n eleOffset = this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight : inEle[parseInt(i.toString(), 10)].offsetWidth;\n var eleWid_1 = fstEleCheck ? (eleOffset + mrgn) : eleOffset;\n if (checkClass(inEle[parseInt(i.toString(), 10)], [CLS_POPPRI]) && popPriority) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n if (this.isVertical) {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minHeight: eleWid_1 + 'px' });\n }\n else {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minWidth: eleWid_1 + 'px' });\n }\n itemPopCount++;\n }\n if (this.isVertical) {\n checkoffset =\n (inEle[parseInt(i.toString(), 10)].offsetTop + inEle[parseInt(i.toString(), 10)].offsetHeight + mrgn) > eleWidth;\n }\n else {\n checkoffset =\n (inEle[parseInt(i.toString(), 10)].offsetLeft + inEle[parseInt(i.toString(), 10)].offsetWidth + mrgn) > eleWidth;\n }\n if (checkoffset) {\n if (inEle[parseInt(i.toString(), 10)].classList.contains(CLS_SEPARATOR)) {\n if (this.overflowMode === 'Extended') {\n var sepEle = inEle[parseInt(i.toString(), 10)];\n if (checkClass(sepEle, [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n itemPopCount++;\n }\n itemCount++;\n }\n else if (this.overflowMode === 'Popup') {\n if (sepCheck > 0 && itemCount === itemPopCount) {\n var sepEle = inEle[i + itemCount + (sepCheck - 1)];\n if (checkClass(sepEle, [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n setStyle(sepEle, { display: 'none' });\n }\n }\n sepCheck++;\n itemCount = 0;\n itemPopCount = 0;\n }\n }\n else {\n itemCount++;\n }\n if (inEle[parseInt(i.toString(), 10)].classList.contains(CLS_TBAROVERFLOW) && pre) {\n eleWidth -= ((this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight :\n inEle[parseInt(i.toString(), 10)].offsetWidth) + (mrgn));\n }\n else if (!checkClass(inEle[parseInt(i.toString(), 10)], [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n if (this.isVertical) {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minHeight: eleWid_1 + 'px' });\n }\n else {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minWidth: eleWid_1 + 'px' });\n }\n itemPopCount++;\n }\n else {\n eleWidth -= ((this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight :\n inEle[parseInt(i.toString(), 10)].offsetWidth) + (mrgn));\n }\n }\n }\n if (pre) {\n var popedEle = selectAll('.' + CLS_ITEM + ':not(.' + CLS_POPUP + ')', this.element);\n this.checkPriority(ele, popedEle, eleWid, false);\n }\n };\n Toolbar.prototype.createPopupIcon = function (element) {\n var id = element.id.concat('_nav');\n var className = 'e-' + element.id.concat('_nav ' + CLS_POPUPNAV);\n className = this.overflowMode === 'Extended' ? className + ' ' + CLS_EXTENDPOPUP : className;\n var nav = this.createElement('div', { id: id, className: className });\n if (Browser.info.name === 'msie' || Browser.info.name === 'edge') {\n nav.classList.add('e-ie-align');\n }\n var navItem = this.createElement('div', { className: CLS_POPUPDOWN + ' e-icons' });\n nav.appendChild(navItem);\n nav.setAttribute('tabindex', '0');\n nav.setAttribute('role', 'button');\n element.appendChild(nav);\n };\n // eslint-disable-next-line max-len\n Toolbar.prototype.tbarPriRef = function (inEle, indx, sepPri, el, des, elWid, wid, ig, eleStyles) {\n var ignoreCount = ig;\n var popEle = this.popObj.element;\n var query = '.' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + '):not(.' + CLS_TBAROVERFLOW + ')';\n var priEleCnt = selectAll('.' + CLS_POPUP + ':not(.' + CLS_TBAROVERFLOW + ')', popEle).length;\n var checkClass = function (ele, val) {\n return ele.classList.contains(val);\n };\n if (selectAll(query, inEle).length === 0) {\n var eleSep = inEle.children[indx - (indx - sepPri) - 1];\n var ignoreCheck = (!isNOU(eleSep) && checkClass(eleSep, CLS_TBARIGNORE));\n if ((!isNOU(eleSep) && checkClass(eleSep, CLS_SEPARATOR) && !isVisible(eleSep)) || ignoreCheck) {\n eleSep.style.display = 'unset';\n var eleSepWidth = eleSep.offsetWidth + (parseFloat(window.getComputedStyle(eleSep).marginRight) * 2);\n var prevSep = eleSep.previousElementSibling;\n if ((elWid + eleSepWidth) < wid || des) {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - (indx - sepPri)]);\n if (!isNOU(prevSep)) {\n prevSep.style.display = '';\n }\n }\n else {\n setStyle(el, eleStyles);\n if (prevSep.classList.contains(CLS_SEPARATOR)) {\n prevSep.style.display = 'none';\n }\n }\n eleSep.style.display = '';\n }\n else {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - (indx - sepPri)]);\n }\n }\n else {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - priEleCnt]);\n }\n };\n Toolbar.prototype.popupRefresh = function (popupEle, destroy) {\n var _this = this;\n var ele = this.element;\n var isVer = this.isVertical;\n var innerEle = ele.querySelector('.' + CLS_ITEMS);\n var popNav = ele.querySelector('.' + CLS_TBARNAV);\n if (isNOU(popNav)) {\n return;\n }\n innerEle.removeAttribute('style');\n popupEle.style.display = 'block';\n var dimension;\n if (isVer) {\n dimension = ele.offsetHeight - (popNav.offsetHeight + innerEle.offsetHeight);\n }\n else {\n dimension = ele.offsetWidth - (popNav.offsetWidth + innerEle.offsetWidth);\n }\n var popupEleWidth = 0;\n [].slice.call(popupEle.children).forEach(function (el) {\n popupEleWidth += _this.popupEleWidth(el);\n setStyle(el, { 'position': '' });\n });\n if ((dimension + (isVer ? popNav.offsetHeight : popNav.offsetWidth)) > (popupEleWidth) && this.popupPriCount === 0) {\n destroy = true;\n }\n this.popupEleRefresh(dimension, popupEle, destroy);\n popupEle.style.display = '';\n if (popupEle.children.length === 0 && popNav && this.popObj) {\n detach(popNav);\n popNav = null;\n this.popObj.destroy();\n detach(this.popObj.element);\n this.popObj = null;\n }\n };\n Toolbar.prototype.ignoreEleFetch = function (index, innerEle) {\n var ignoreEle = [].slice.call(innerEle.querySelectorAll('.' + CLS_TBARIGNORE));\n var ignoreInx = [];\n var count = 0;\n if (ignoreEle.length > 0) {\n ignoreEle.forEach(function (ele) {\n ignoreInx.push([].slice.call(innerEle.children).indexOf(ele));\n });\n }\n else {\n return 0;\n }\n ignoreInx.forEach(function (val) {\n if (val <= index) {\n count++;\n }\n });\n return count;\n };\n Toolbar.prototype.checkPopupRefresh = function (root, popEle) {\n popEle.style.display = 'block';\n var elWid = this.popupEleWidth(popEle.firstElementChild);\n popEle.firstElementChild.style.removeProperty('Position');\n var tbarWidth = root.offsetWidth - root.querySelector('.' + CLS_TBARNAV).offsetWidth;\n var tbarItemsWid = root.querySelector('.' + CLS_ITEMS).offsetWidth;\n popEle.style.removeProperty('display');\n if (tbarWidth > (elWid + tbarItemsWid)) {\n return true;\n }\n return false;\n };\n Toolbar.prototype.popupEleWidth = function (el) {\n el.style.position = 'absolute';\n var elWidth = this.isVertical ? el.offsetHeight : el.offsetWidth;\n var btnText = el.querySelector('.' + CLS_TBARBTNTEXT);\n if (el.classList.contains('e-tbtn-align') || el.classList.contains(CLS_TBARTEXT)) {\n var btn = el.children[0];\n if (!isNOU(btnText) && el.classList.contains(CLS_TBARTEXT)) {\n btnText.style.display = 'none';\n }\n else if (!isNOU(btnText) && el.classList.contains(CLS_POPUPTEXT)) {\n btnText.style.display = 'block';\n }\n btn.style.minWidth = '0%';\n elWidth = parseFloat(!this.isVertical ? el.style.minWidth : el.style.minHeight);\n btn.style.minWidth = '';\n btn.style.minHeight = '';\n if (!isNOU(btnText)) {\n btnText.style.display = '';\n }\n }\n return elWidth;\n };\n Toolbar.prototype.popupEleRefresh = function (width, popupEle, destroy) {\n var popPriority = this.popupPriCount > 0;\n var eleSplice = this.tbarEle;\n var priEleCnt;\n var index;\n var innerEle = this.element.querySelector('.' + CLS_ITEMS);\n var ignoreCount = 0;\n var _loop_1 = function (el) {\n if (el.classList.contains(CLS_POPPRI) && popPriority && !destroy) {\n return \"continue\";\n }\n var elWidth = this_1.popupEleWidth(el);\n if (el === this_1.tbarEle[0]) {\n elWidth += this_1.tbarEleMrgn;\n }\n el.style.position = '';\n if (elWidth < width || destroy) {\n var inlineStyles = {\n minWidth: el.style.minWidth, height: el.style.height,\n minHeight: el.style.minHeight\n };\n setStyle(el, { minWidth: '', height: '', minHeight: '' });\n if (!el.classList.contains(CLS_POPOVERFLOW)) {\n el.classList.remove(CLS_POPUP);\n }\n index = this_1.tbarEle.indexOf(el);\n if (this_1.tbarAlign) {\n var pos = this_1.items[parseInt(index.toString(), 10)].align;\n index = this_1.tbarAlgEle[(pos + 's').toLowerCase()].indexOf(el);\n eleSplice = this_1.tbarAlgEle[(pos + 's').toLowerCase()];\n innerEle = this_1.element.querySelector('.' + CLS_ITEMS + ' .' + 'e-toolbar-' + pos.toLowerCase());\n }\n var sepBeforePri_1 = 0;\n if (this_1.overflowMode !== 'Extended') {\n eleSplice.slice(0, index).forEach(function (el) {\n if (el.classList.contains(CLS_TBAROVERFLOW) || el.classList.contains(CLS_SEPARATOR)) {\n if (el.classList.contains(CLS_SEPARATOR)) {\n el.style.display = '';\n width -= el.offsetWidth;\n }\n sepBeforePri_1++;\n }\n });\n }\n ignoreCount = this_1.ignoreEleFetch(index, innerEle);\n if (el.classList.contains(CLS_TBAROVERFLOW)) {\n this_1.tbarPriRef(innerEle, index, sepBeforePri_1, el, destroy, elWidth, width, ignoreCount, inlineStyles);\n width -= el.offsetWidth;\n }\n else if (index === 0) {\n innerEle.insertBefore(el, innerEle.firstChild);\n width -= el.offsetWidth;\n }\n else {\n priEleCnt = selectAll('.' + CLS_TBAROVERFLOW, this_1.popObj.element).length;\n innerEle.insertBefore(el, innerEle.children[(index + ignoreCount) - priEleCnt]);\n width -= el.offsetWidth;\n }\n el.style.height = '';\n }\n else {\n return \"break\";\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = [].slice.call(popupEle.children); _i < _a.length; _i++) {\n var el = _a[_i];\n var state_1 = _loop_1(el);\n if (state_1 === \"break\")\n break;\n }\n var checkOverflow = this.checkOverflow(this.element, this.element.getElementsByClassName(CLS_ITEMS)[0]);\n if (checkOverflow && !destroy) {\n this.renderOverflowMode();\n }\n };\n Toolbar.prototype.removePositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n if (isNOU(item) || !item.classList.contains(CLS_TBARPOS)) {\n return;\n }\n this.remove(item, CLS_TBARPOS);\n var innerItem = [].slice.call(item.childNodes);\n innerItem[1].removeAttribute('style');\n innerItem[2].removeAttribute('style');\n };\n Toolbar.prototype.refreshPositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n this.add(item, CLS_TBARPOS);\n this.itemPositioning();\n };\n Toolbar.prototype.itemPositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n var margin;\n if (isNOU(item) || !item.classList.contains(CLS_TBARPOS)) {\n return;\n }\n var popupNav = this.element.querySelector('.' + CLS_TBARNAV);\n var innerItem;\n if (this.scrollModule) {\n var trgClass = (this.isVertical) ? CLS_VSCROLLCNT : CLS_HSCROLLCNT;\n innerItem = [].slice.call(item.querySelector('.' + trgClass).children);\n }\n else {\n innerItem = [].slice.call(item.childNodes);\n }\n if (this.isVertical) {\n margin = innerItem[0].offsetHeight + innerItem[2].offsetHeight;\n }\n else {\n margin = innerItem[0].offsetWidth + innerItem[2].offsetWidth;\n }\n var tbarWid = this.isVertical ? this.element.offsetHeight : this.element.offsetWidth;\n if (popupNav) {\n tbarWid -= (this.isVertical ? popupNav.offsetHeight : popupNav.offsetWidth);\n var popWid = (this.isVertical ? popupNav.offsetHeight : popupNav.offsetWidth) + 'px';\n innerItem[2].removeAttribute('style');\n if (this.isVertical) {\n if (this.enableRtl) {\n innerItem[2].style.top = popWid;\n }\n else {\n innerItem[2].style.bottom = popWid;\n }\n }\n else {\n if (this.enableRtl) {\n innerItem[2].style.left = popWid;\n }\n else {\n innerItem[2].style.right = popWid;\n }\n }\n }\n if (tbarWid <= margin) {\n return;\n }\n var value = (((tbarWid - margin)) - (!this.isVertical ? innerItem[1].offsetWidth : innerItem[1].offsetHeight)) / 2;\n innerItem[1].removeAttribute('style');\n var mrgn = ((!this.isVertical ? innerItem[0].offsetWidth : innerItem[0].offsetHeight) + value) + 'px';\n if (this.isVertical) {\n if (this.enableRtl) {\n innerItem[1].style.marginBottom = mrgn;\n }\n else {\n innerItem[1].style.marginTop = mrgn;\n }\n }\n else {\n if (this.enableRtl) {\n innerItem[1].style.marginRight = mrgn;\n }\n else {\n innerItem[1].style.marginLeft = mrgn;\n }\n }\n };\n Toolbar.prototype.tbarItemAlign = function (item, itemEle, pos) {\n var _this = this;\n if (item.showAlwaysInPopup && item.overflow !== 'Show') {\n return;\n }\n var alignDiv = [];\n alignDiv.push(this.createElement('div', { className: CLS_TBARLEFT }));\n alignDiv.push(this.createElement('div', { className: CLS_TBARCENTER }));\n alignDiv.push(this.createElement('div', { className: CLS_TBARRIGHT }));\n if (pos === 0 && item.align !== 'Left') {\n alignDiv.forEach(function (ele) {\n itemEle.appendChild(ele);\n });\n this.tbarAlign = true;\n this.add(itemEle, CLS_TBARPOS);\n }\n else if (item.align !== 'Left') {\n var alignEle = itemEle.childNodes;\n var leftAlign_1 = alignDiv[0];\n [].slice.call(alignEle).forEach(function (el) {\n _this.tbarAlgEle.lefts.push(el);\n leftAlign_1.appendChild(el);\n });\n itemEle.appendChild(leftAlign_1);\n itemEle.appendChild(alignDiv[1]);\n itemEle.appendChild(alignDiv[2]);\n this.tbarAlign = true;\n this.add(itemEle, CLS_TBARPOS);\n }\n };\n Toolbar.prototype.ctrlTemplate = function () {\n var _this = this;\n this.ctrlTem = this.trgtEle.cloneNode(true);\n this.add(this.trgtEle, CLS_ITEMS);\n this.tbarEle = [];\n var innerEle = [].slice.call(this.trgtEle.children);\n innerEle.forEach(function (ele) {\n if (ele.tagName === 'DIV') {\n _this.tbarEle.push(ele);\n if (!isNOU(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'false');\n }\n _this.add(ele, CLS_ITEM);\n }\n });\n };\n Toolbar.prototype.renderItems = function () {\n var ele = this.element;\n var items = this.items;\n if (this.trgtEle != null) {\n this.ctrlTemplate();\n }\n else if (ele && items.length > 0) {\n var itemEleDom = void 0;\n if (ele && ele.children.length > 0) {\n itemEleDom = ele.querySelector('.' + CLS_ITEMS);\n }\n if (!itemEleDom) {\n itemEleDom = this.createElement('div', { className: CLS_ITEMS });\n }\n this.itemsAlign(items, itemEleDom);\n ele.appendChild(itemEleDom);\n }\n };\n Toolbar.prototype.setAttr = function (attr, element) {\n var key = Object.keys(attr);\n var keyVal;\n for (var i = 0; i < key.length; i++) {\n keyVal = key[parseInt(i.toString(), 10)];\n if (keyVal === 'class') {\n this.add(element, attr[\"\" + keyVal]);\n }\n else {\n element.setAttribute(keyVal, attr[\"\" + keyVal]);\n }\n }\n };\n /**\n * Enables or disables the specified Toolbar item.\n *\n * @param {number|HTMLElement|NodeList} items - DOM element or an array of items to be enabled or disabled.\n * @param {boolean} isEnable - Boolean value that determines whether the command should be enabled or disabled.\n * By default, `isEnable` is set to true.\n * @returns {void}.\n */\n Toolbar.prototype.enableItems = function (items, isEnable) {\n var elements = items;\n var len = elements.length;\n var ele;\n if (isNOU(isEnable)) {\n isEnable = true;\n }\n var enable = function (isEnable, ele) {\n if (isEnable) {\n ele.classList.remove(CLS_DISABLE);\n if (!isNOU(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'false');\n }\n }\n else {\n ele.classList.add(CLS_DISABLE);\n if (!isNOU(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'true');\n }\n }\n };\n if (!isNOU(len) && len >= 1) {\n for (var a = 0, element = [].slice.call(elements); a < len; a++) {\n var itemElement = element[parseInt(a.toString(), 10)];\n if (typeof (itemElement) === 'number') {\n ele = this.getElementByIndex(itemElement);\n if (isNOU(ele)) {\n return;\n }\n else {\n elements[parseInt(a.toString(), 10)] = ele;\n }\n }\n else {\n ele = itemElement;\n }\n enable(isEnable, ele);\n }\n if (isEnable) {\n removeClass(elements, CLS_DISABLE);\n }\n else {\n addClass(elements, CLS_DISABLE);\n }\n }\n else {\n if (typeof (elements) === 'number') {\n ele = this.getElementByIndex(elements);\n if (isNOU(ele)) {\n return;\n }\n }\n else {\n ele = items;\n }\n enable(isEnable, ele);\n }\n };\n Toolbar.prototype.getElementByIndex = function (index) {\n if (this.tbarEle[parseInt(index.toString(), 10)]) {\n return this.tbarEle[parseInt(index.toString(), 10)];\n }\n return null;\n };\n /**\n * Adds new items to the Toolbar that accepts an array as Toolbar items.\n *\n * @param {ItemModel[]} items - DOM element or an array of items to be added to the Toolbar.\n * @param {number} index - Number value that determines where the command is to be added. By default, index is 0.\n * @returns {void}.\n */\n Toolbar.prototype.addItems = function (items, index) {\n var innerItems;\n this.extendedOpen();\n var itemsDiv = this.element.querySelector('.' + CLS_ITEMS);\n if (isNOU(itemsDiv)) {\n this.itemsRerender(items);\n return;\n }\n var innerEle;\n var itemAgn = 'Left';\n if (isNOU(index)) {\n index = 0;\n }\n items.forEach(function (e) {\n if (!isNOU(e.align) && e.align !== 'Left' && itemAgn === 'Left') {\n itemAgn = e.align;\n }\n });\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var item = items_1[_i];\n if (isNOU(item.type)) {\n item.type = 'Button';\n }\n innerItems = selectAll('.' + CLS_ITEM, this.element);\n item.align = itemAgn;\n innerEle = this.renderSubComponent(item, index);\n if (this.tbarEle.length >= index && innerItems.length >= 0) {\n if (isNOU(this.scrollModule)) {\n this.destroyMode();\n }\n var algIndex = item.align[0] === 'L' ? 0 : item.align[0] === 'C' ? 1 : 2;\n var ele = void 0;\n if (!this.tbarAlign && itemAgn !== 'Left') {\n this.tbarItemAlign(item, itemsDiv, 1);\n this.tbarAlign = true;\n ele = closest(innerItems[0], '.' + CLS_ITEMS).children[parseInt(algIndex.toString(), 10)];\n ele.appendChild(innerEle);\n this.tbarAlgEle[(item.align + 's').toLowerCase()].push(innerEle);\n this.refreshPositioning();\n }\n else if (this.tbarAlign) {\n ele = closest(innerItems[0], '.' + CLS_ITEMS).children[parseInt(algIndex.toString(), 10)];\n ele.insertBefore(innerEle, ele.children[parseInt(index.toString(), 10)]);\n this.tbarAlgEle[(item.align + 's').toLowerCase()].splice(index, 0, innerEle);\n this.refreshPositioning();\n }\n else if (innerItems.length === 0) {\n innerItems = selectAll('.' + CLS_ITEMS, this.element);\n innerItems[0].appendChild(innerEle);\n }\n else {\n innerItems[0].parentNode.insertBefore(innerEle, innerItems[parseInt(index.toString(), 10)]);\n }\n this.items.splice(index, 0, item);\n if (item.template) {\n this.tbarEle.splice(this.tbarEle.length - 1, 1);\n }\n this.tbarEle.splice(index, 0, innerEle);\n index++;\n this.offsetWid = itemsDiv.offsetWidth;\n }\n }\n itemsDiv.style.width = '';\n this.renderOverflowMode();\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Removes the items from the Toolbar. Acceptable arguments are index of item/HTMLElement/node list.\n *\n * @param {number|HTMLElement|NodeList|HTMLElement[]} args\n * Index or DOM element or an Array of item which is to be removed from the Toolbar.\n * @returns {void}.\n */\n Toolbar.prototype.removeItems = function (args) {\n var elements = args;\n var index;\n var innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (typeof (elements) === 'number') {\n index = parseInt(args.toString(), 10);\n this.removeItemByIndex(index, innerItems);\n }\n else {\n if (elements && elements.length > 1) {\n for (var _i = 0, _a = [].slice.call(elements); _i < _a.length; _i++) {\n var ele = _a[_i];\n index = this.tbarEle.indexOf(ele);\n this.removeItemByIndex(index, innerItems);\n innerItems = selectAll('.' + CLS_ITEM, this.element);\n }\n }\n else {\n var ele = (elements && elements.length && elements.length === 1) ? elements[0] : args;\n index = innerItems.indexOf(ele);\n this.removeItemByIndex(index, innerItems);\n }\n }\n this.resize();\n };\n Toolbar.prototype.removeItemByIndex = function (index, innerItems) {\n if (this.tbarEle[parseInt(index.toString(), 10)] && innerItems[parseInt(index.toString(), 10)]) {\n var eleIdx = this.tbarEle.indexOf(innerItems[parseInt(index.toString(), 10)]);\n if (this.tbarAlign) {\n var indexAgn = this.tbarAlgEle[(this.items[parseInt(eleIdx.toString(), 10)].align + 's').toLowerCase()].indexOf(this.tbarEle[parseInt(eleIdx.toString(), 10)]);\n this.tbarAlgEle[(this.items[parseInt(eleIdx.toString(), 10)].align + 's').toLowerCase()].splice(parseInt(indexAgn.toString(), 10), 1);\n }\n if (this.isReact) {\n this.clearToolbarTemplate(innerItems[parseInt(index.toString(), 10)]);\n }\n var btnItem = innerItems[parseInt(index.toString(), 10)].querySelector('.e-control.e-btn');\n if (!isNOU(btnItem) && !isNOU(btnItem.ej2_instances[0]) && !(btnItem.ej2_instances[0].isDestroyed)) {\n btnItem.ej2_instances[0].destroy();\n }\n detach(innerItems[parseInt(index.toString(), 10)]);\n this.items.splice(eleIdx, 1);\n this.tbarEle.splice(eleIdx, 1);\n }\n };\n Toolbar.prototype.templateRender = function (templateProp, innerEle, item, index) {\n var itemType = item.type;\n var eleObj = templateProp;\n var isComponent;\n if (typeof (templateProp) === 'object') {\n isComponent = typeof (eleObj.appendTo) === 'function';\n }\n if (typeof (templateProp) === 'string' || !isComponent) {\n var templateFn = void 0;\n var val = templateProp;\n var regEx = new RegExp(/<(?=.*? .*?\\/ ?>|br|hr|input|!--|wbr)[a-z]+.*?>|<([a-z]+).*?<\\/\\1>/i);\n val = (typeof (templateProp) === 'string') ? templateProp.trim() : templateProp;\n try {\n if (typeof (templateProp) === 'object' && !isNOU(templateProp.tagName)) {\n innerEle.appendChild(templateProp);\n }\n else if (typeof (templateProp) === 'string' && regEx.test(val)) {\n innerEle.innerHTML = val;\n }\n else if (document.querySelectorAll(val).length) {\n var ele = document.querySelector(val);\n var tempStr = ele.outerHTML.trim();\n innerEle.appendChild(ele);\n ele.style.display = '';\n if (!isNOU(tempStr)) {\n this.tempId.push(val);\n }\n }\n else {\n templateFn = templateCompiler(val);\n }\n }\n catch (e) {\n templateFn = templateCompiler(val);\n }\n var tempArray = void 0;\n if (!isNOU(templateFn)) {\n var toolbarTemplateID = this.element.id + index + '_template';\n tempArray = templateFn({}, this, 'template', toolbarTemplateID, this.isStringTemplate, undefined, undefined, this.root);\n }\n if (!isNOU(tempArray) && tempArray.length > 0) {\n [].slice.call(tempArray).forEach(function (ele) {\n if (!isNOU(ele.tagName)) {\n ele.style.display = '';\n }\n innerEle.appendChild(ele);\n });\n }\n }\n else if (itemType === 'Input') {\n var ele = this.createElement('input');\n if (item.id) {\n ele.id = item.id;\n }\n else {\n ele.id = getUniqueID('tbr-ipt');\n }\n innerEle.appendChild(ele);\n eleObj.appendTo(ele);\n }\n this.add(innerEle, CLS_TEMPLATE);\n var firstChild = innerEle.firstElementChild;\n if (!isNOU(firstChild)) {\n firstChild.setAttribute('tabindex', isNOU(firstChild.getAttribute('tabIndex')) ? '-1' : this.getDataTabindex(firstChild));\n firstChild.setAttribute('data-tabindex', isNOU(firstChild.getAttribute('tabIndex')) ? '-1' : this.getDataTabindex(firstChild));\n }\n this.tbarEle.push(innerEle);\n };\n Toolbar.prototype.buttonRendering = function (item, innerEle) {\n var dom = this.createElement('button', { className: CLS_TBARBTN });\n dom.setAttribute('type', 'button');\n var textStr = item.text;\n var iconCss;\n var iconPos;\n if (item.id) {\n dom.id = item.id;\n }\n else {\n dom.id = getUniqueID('e-tbr-btn');\n }\n var btnTxt = this.createElement('span', { className: 'e-tbar-btn-text' });\n if (textStr) {\n btnTxt.innerHTML = this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(textStr) : textStr;\n dom.appendChild(btnTxt);\n dom.classList.add('e-tbtn-txt');\n }\n else {\n this.add(innerEle, 'e-tbtn-align');\n }\n if (item.prefixIcon || item.suffixIcon) {\n if ((item.prefixIcon && item.suffixIcon) || item.prefixIcon) {\n iconCss = item.prefixIcon + ' e-icons';\n iconPos = 'Left';\n }\n else {\n iconCss = item.suffixIcon + ' e-icons';\n iconPos = 'Right';\n }\n }\n var btnObj = new Button({ iconCss: iconCss, iconPosition: iconPos });\n btnObj.createElement = this.createElement;\n btnObj.appendTo(dom);\n if (item.width) {\n setStyle(dom, { 'width': formatUnit(item.width) });\n }\n return dom;\n };\n Toolbar.prototype.renderSubComponent = function (item, index) {\n var dom;\n var innerEle = this.createElement('div', { className: CLS_ITEM });\n var tempDom = this.createElement('div', {\n innerHTML: this.enableHtmlSanitizer && !isNOU(item.tooltipText) ?\n SanitizeHtmlHelper.sanitize(item.tooltipText) : item.tooltipText\n });\n if (!this.tbarEle) {\n this.tbarEle = [];\n }\n if (item.htmlAttributes) {\n this.setAttr(item.htmlAttributes, innerEle);\n }\n if (item.tooltipText) {\n innerEle.setAttribute('title', tempDom.textContent);\n }\n if (item.cssClass) {\n innerEle.className = innerEle.className + ' ' + item.cssClass;\n }\n if (item.template) {\n this.templateRender(item.template, innerEle, item, index);\n }\n else {\n switch (item.type) {\n case 'Button':\n dom = this.buttonRendering(item, innerEle);\n dom.setAttribute('tabindex', isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString());\n dom.setAttribute('data-tabindex', isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString());\n dom.setAttribute('aria-label', (item.text || item.tooltipText));\n dom.setAttribute('aria-disabled', 'false');\n innerEle.appendChild(dom);\n innerEle.addEventListener('click', this.itemClick.bind(this));\n break;\n case 'Separator':\n this.add(innerEle, CLS_SEPARATOR);\n break;\n }\n }\n if (item.showTextOn) {\n var sTxt = item.showTextOn;\n if (sTxt === 'Toolbar') {\n this.add(innerEle, CLS_POPUPTEXT);\n this.add(innerEle, 'e-tbtn-align');\n }\n else if (sTxt === 'Overflow') {\n this.add(innerEle, CLS_TBARTEXT);\n }\n }\n if (item.overflow) {\n var overflow = item.overflow;\n if (overflow === 'Show') {\n this.add(innerEle, CLS_TBAROVERFLOW);\n }\n else if (overflow === 'Hide') {\n if (!innerEle.classList.contains(CLS_SEPARATOR)) {\n this.add(innerEle, CLS_POPOVERFLOW);\n }\n }\n }\n if (item.overflow !== 'Show' && item.showAlwaysInPopup && !innerEle.classList.contains(CLS_SEPARATOR)) {\n this.add(innerEle, CLS_POPPRI);\n this.popupPriCount++;\n }\n if (item.disabled) {\n this.add(innerEle, CLS_DISABLE);\n }\n if (item.visible === false) {\n this.add(innerEle, CLS_HIDDEN);\n }\n return innerEle;\n };\n Toolbar.prototype.getDataTabindex = function (ele) {\n return isNOU(ele.getAttribute('data-tabindex')) ? '-1' : ele.getAttribute('data-tabindex');\n };\n Toolbar.prototype.itemClick = function (e) {\n this.activeEleSwitch(e.currentTarget);\n };\n Toolbar.prototype.activeEleSwitch = function (ele) {\n this.activeEleRemove(ele.firstElementChild);\n this.activeEle.focus();\n };\n Toolbar.prototype.activeEleRemove = function (curEle) {\n var previousEle = this.element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_DISABLE + ' ):not(.' + CLS_SEPARATOR + ' ):not(.' + CLS_HIDDEN + ' )');\n if (!isNOU(this.activeEle)) {\n this.activeEle.setAttribute('tabindex', this.getDataTabindex(this.activeEle));\n if (previousEle) {\n previousEle.removeAttribute('tabindex');\n }\n previousEle = this.activeEle;\n }\n this.activeEle = curEle;\n if (this.getDataTabindex(this.activeEle) === '-1') {\n if (isNOU(this.trgtEle) && !curEle.parentElement.classList.contains(CLS_TEMPLATE)) {\n if (!isNOU(this.element.querySelector('.e-hor-nav')) && this.element.querySelector('.e-hor-nav').classList.contains('e-nav-active')) {\n this.updateTabIndex('0');\n var tabindexValue = this.getDataTabindex(previousEle) === '-1' ? '0' : this.getDataTabindex(previousEle);\n previousEle.setAttribute('tabindex', tabindexValue);\n }\n else {\n this.updateTabIndex('-1');\n }\n curEle.removeAttribute('tabindex');\n }\n else {\n var tabIndex = parseInt(this.getDataTabindex(this.activeEle), 10) + 1;\n this.activeEle.setAttribute('tabindex', tabIndex.toString());\n }\n }\n };\n Toolbar.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - Returns the module name as string.\n * @private\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n Toolbar.prototype.itemsRerender = function (newProp) {\n this.items = this.tbarItemsCol;\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n this.destroyMode();\n this.destroyItems();\n this.items = newProp;\n this.tbarItemsCol = this.items;\n this.renderItems();\n this.renderOverflowMode();\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Toolbar.prototype.resize = function () {\n var ele = this.element;\n this.tbResize = true;\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n if (this.popObj && this.overflowMode === 'Popup') {\n this.popObj.hide();\n }\n var checkOverflow = this.checkOverflow(ele, ele.getElementsByClassName(CLS_ITEMS)[0]);\n if (!checkOverflow) {\n this.destroyScroll();\n var multirowele = ele.querySelector('.' + CLS_ITEMS);\n if (!isNOU(multirowele)) {\n this.remove(multirowele, CLS_MULTIROWPOS);\n if (this.tbarAlign) {\n this.add(multirowele, CLS_TBARPOS);\n }\n }\n }\n if (checkOverflow && this.scrollModule && (this.offsetWid === ele.offsetWidth)) {\n return;\n }\n if (this.offsetWid > ele.offsetWidth || checkOverflow) {\n this.renderOverflowMode();\n }\n if (this.popObj) {\n if (this.overflowMode === 'Extended') {\n this.popObj.width = this.getToolbarPopupWidth(this.element);\n }\n if (this.tbarAlign) {\n this.removePositioning();\n }\n this.popupRefresh(this.popObj.element, false);\n if (this.tbarAlign) {\n this.refreshPositioning();\n }\n }\n if (this.element.querySelector('.' + CLS_HSCROLLBAR)) {\n this.scrollStep = this.element.querySelector('.' + CLS_HSCROLLBAR).offsetWidth;\n }\n this.offsetWid = ele.offsetWidth;\n this.tbResize = false;\n this.separator();\n };\n Toolbar.prototype.orientationChange = function () {\n var _this = this;\n setTimeout(function () {\n _this.resize();\n }, 500);\n };\n Toolbar.prototype.extendedOpen = function () {\n var sib = this.element.querySelector('.' + CLS_EXTENDABLECLASS);\n if (this.overflowMode === 'Extended' && sib) {\n this.isExtendedOpen = sib.classList.contains(CLS_POPUPOPEN);\n }\n };\n Toolbar.prototype.updateHideEleTabIndex = function (ele, isHidden, isElement, eleIndex, innerItems) {\n if (isElement) {\n eleIndex = innerItems.indexOf(ele);\n }\n var nextEle = innerItems[++eleIndex];\n while (nextEle) {\n var skipEle = this.eleContains(nextEle);\n if (!skipEle) {\n var dataTabIndex = nextEle.firstElementChild.getAttribute('data-tabindex');\n if (isHidden && dataTabIndex === '-1') {\n nextEle.firstElementChild.setAttribute('tabindex', '0');\n }\n else if (dataTabIndex !== nextEle.firstElementChild.getAttribute('tabindex')) {\n nextEle.firstElementChild.setAttribute('tabindex', dataTabIndex);\n }\n break;\n }\n nextEle = innerItems[++eleIndex];\n }\n };\n Toolbar.prototype.clearToolbarTemplate = function (templateEle) {\n if (this.registeredTemplate && this.registeredTemplate[\"\" + 'template']) {\n var registeredTemplates = this.registeredTemplate;\n for (var index = 0; index < registeredTemplates[\"\" + 'template'].length; index++) {\n var registeredItem = registeredTemplates[\"\" + 'template'][parseInt(index.toString(), 10)].rootNodes[0];\n var closestItem = closest(registeredItem, '.' + CLS_ITEM);\n if (!isNOU(closestItem) && closestItem === templateEle) {\n this.clearTemplate(['template'], [registeredTemplates[\"\" + 'template'][parseInt(index.toString(), 10)]]);\n break;\n }\n }\n }\n else if (this.portals && this.portals.length > 0) {\n var portals = this.portals;\n for (var index = 0; index < portals.length; index++) {\n var portalItem = portals[parseInt(index.toString(), 10)];\n var closestItem = closest(portalItem.containerInfo, '.' + CLS_ITEM);\n if (!isNOU(closestItem) && closestItem === templateEle) {\n this.clearTemplate(['template'], index);\n break;\n }\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {ToolbarModel} newProp - It contains new value of the data.\n * @param {ToolbarModel} oldProp - It contains old value of the data.\n * @returns {void}\n * @private\n */\n Toolbar.prototype.onPropertyChanged = function (newProp, oldProp) {\n var tEle = this.element;\n this.extendedOpen();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'items':\n if (!(newProp.items instanceof Array && oldProp.items instanceof Array)) {\n var changedProb = Object.keys(newProp.items);\n for (var i = 0; i < changedProb.length; i++) {\n var index = parseInt(Object.keys(newProp.items)[parseInt(i.toString(), 10)], 10);\n var property = Object.keys(newProp.items[parseInt(index.toString(), 10)])[0];\n var newProperty = Object(newProp.items[parseInt(index.toString(), 10)])[\"\" + property];\n if (this.tbarAlign || property === 'align') {\n this.refresh();\n this.trigger('created');\n break;\n }\n var popupPriCheck = property === 'showAlwaysInPopup' && !newProperty;\n var booleanCheck = property === 'overflow' && this.popupPriCount !== 0;\n if ((popupPriCheck) || (this.items[parseInt(index.toString(), 10)].showAlwaysInPopup) && booleanCheck) {\n --this.popupPriCount;\n }\n if (isNOU(this.scrollModule)) {\n this.destroyMode();\n }\n var itemCol = [].slice.call(selectAll('.' + CLS_ITEMS + ' .' + CLS_ITEM, tEle));\n if (this.isReact && this.items[parseInt(index.toString(), 10)].template) {\n this.clearToolbarTemplate(itemCol[parseInt(index.toString(), 10)]);\n }\n detach(itemCol[parseInt(index.toString(), 10)]);\n this.tbarEle.splice(index, 1);\n this.addItems([this.items[parseInt(index.toString(), 10)]], index);\n this.items.splice(index, 1);\n if (this.items[parseInt(index.toString(), 10)].template) {\n this.tbarEle.splice(this.items.length, 1);\n }\n }\n }\n else {\n this.itemsRerender(newProp.items);\n }\n break;\n case 'width':\n setStyle(tEle, { 'width': formatUnit(newProp.width) });\n this.refreshOverflow();\n break;\n case 'height':\n setStyle(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'overflowMode':\n this.destroyMode();\n this.renderOverflowMode();\n if (this.enableRtl) {\n this.add(tEle, CLS_RTL);\n }\n this.refreshOverflow();\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.add(tEle, CLS_RTL);\n }\n else {\n this.remove(tEle, CLS_RTL);\n }\n if (!isNOU(this.scrollModule)) {\n if (newProp.enableRtl) {\n this.add(this.scrollModule.element, CLS_RTL);\n }\n else {\n this.remove(this.scrollModule.element, CLS_RTL);\n }\n }\n if (!isNOU(this.popObj)) {\n if (newProp.enableRtl) {\n this.add(this.popObj.element, CLS_RTL);\n }\n else {\n this.remove(this.popObj.element, CLS_RTL);\n }\n }\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n break;\n case 'scrollStep':\n if (this.scrollModule) {\n this.scrollModule.scrollStep = this.scrollStep;\n }\n break;\n case 'enableCollision':\n if (this.popObj) {\n this.popObj.collision = { Y: this.enableCollision ? 'flip' : 'none' };\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.split(' '));\n }\n break;\n case 'allowKeyboard':\n this.unwireKeyboardEvent();\n if (newProp.allowKeyboard) {\n this.wireKeyboardEvent();\n }\n break;\n }\n }\n };\n /**\n * Shows or hides the Toolbar item that is in the specified index.\n *\n * @param {number | HTMLElement} index - Index value of target item or DOM element of items to be hidden or shown.\n * @param {boolean} value - Based on this Boolean value, item will be hide (true) or show (false). By default, value is false.\n * @returns {void}.\n */\n Toolbar.prototype.hideItem = function (index, value) {\n var isElement = (typeof (index) === 'object') ? true : false;\n var eleIndex = index;\n var ele;\n if (!isElement && isNOU(eleIndex)) {\n return;\n }\n var innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (isElement) {\n ele = index;\n }\n else if (this.tbarEle[parseInt(eleIndex.toString(), 10)]) {\n var innerItems_1 = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n ele = innerItems_1[parseInt(eleIndex.toString(), 10)];\n }\n if (ele) {\n if (value) {\n ele.classList.add(CLS_HIDDEN);\n if (!ele.classList.contains(CLS_SEPARATOR)) {\n if (isNOU(ele.firstElementChild.getAttribute('tabindex')) ||\n ele.firstElementChild.getAttribute('tabindex') !== '-1') {\n this.updateHideEleTabIndex(ele, value, isElement, eleIndex, innerItems);\n }\n }\n }\n else {\n ele.classList.remove(CLS_HIDDEN);\n if (!ele.classList.contains(CLS_SEPARATOR)) {\n this.updateHideEleTabIndex(ele, value, isElement, eleIndex, innerItems);\n }\n }\n this.refreshOverflow();\n }\n };\n __decorate([\n Collection([], Item)\n ], Toolbar.prototype, \"items\", void 0);\n __decorate([\n Property('auto')\n ], Toolbar.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Toolbar.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Toolbar.prototype, \"cssClass\", void 0);\n __decorate([\n Property('Scrollable')\n ], Toolbar.prototype, \"overflowMode\", void 0);\n __decorate([\n Property()\n ], Toolbar.prototype, \"scrollStep\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"enableCollision\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"allowKeyboard\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"clicked\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"beforeCreate\", void 0);\n Toolbar = __decorate([\n NotifyPropertyChanges\n ], Toolbar);\n return Toolbar;\n}(Component));\nexport { Toolbar };\n","import { EventHandler, extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { remove, select, removeClass } from '@syncfusion/ej2-base';\nimport { Toolbar as tool } from '@syncfusion/ej2-navigations';\nimport * as events from '../base/constant';\nimport { templateCompiler, appendChildren, parentsUntil, addRemoveEventListener, applyBiggerTheme } from '../base/util';\nimport { ResponsiveToolbarAction } from '../base/enum';\nimport { ContextMenu as Menu } from '@syncfusion/ej2-navigations';\nimport { calculatePosition } from '@syncfusion/ej2-popups';\nimport { SearchBox } from '../services/focus-strategy';\n/**\n *\n * The `Toolbar` module is used to handle ToolBar actions.\n */\nvar Toolbar = /** @class */ (function () {\n function Toolbar(parent, serviceLocator) {\n this.predefinedItems = {};\n this.isSearched = false;\n this.items = ['Add', 'Edit', 'Update', 'Delete', 'Cancel', 'Print', 'Search',\n 'ColumnChooser', 'PdfExport', 'ExcelExport', 'CsvExport', 'WordExport'];\n this.isRightToolbarMenu = false;\n this.parent = parent;\n this.gridID = parent.element.id;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n Toolbar.prototype.render = function () {\n this.l10n = this.serviceLocator.getService('localization');\n var preItems = ['Add', 'Edit', 'Update', 'Delete', 'Cancel', 'Print',\n 'PdfExport', 'ExcelExport', 'WordExport', 'CsvExport'];\n var isAdaptive = this.parent.enableAdaptiveUI;\n var excludingItems = ['Edit', 'Delete', 'Update', 'Cancel'];\n for (var _i = 0, preItems_1 = preItems; _i < preItems_1.length; _i++) {\n var item = preItems_1[_i];\n var itemStr = item.toLowerCase();\n var localeName = itemStr[0].toUpperCase() + itemStr.slice(1);\n this.predefinedItems[\"\" + item] = {\n id: this.gridID + '_' + itemStr, prefixIcon: 'e-' + itemStr,\n text: this.l10n.getConstant(localeName), tooltipText: this.l10n.getConstant(localeName)\n };\n if (isAdaptive) {\n this.predefinedItems[\"\" + item].text = '';\n this.predefinedItems[\"\" + item].visible = excludingItems.indexOf(item) === -1;\n }\n }\n this.predefinedItems.Search = {\n id: this.gridID + '_search',\n tooltipText: this.l10n.getConstant('Search'), align: 'Right', cssClass: 'e-search-wrapper',\n type: 'Input'\n };\n this.isRightToolbarMenu = false;\n if (this.parent.enableAdaptiveUI && this.isResponsiveToolbarMenuItems(true) && ((this.parent.rowRenderingMode === 'Horizontal') ||\n (this.parent.rowRenderingMode === 'Vertical' && !this.parent.allowFiltering && !this.parent.allowSorting))) {\n this.isRightToolbarMenu = true;\n }\n if (isAdaptive && this.isResponsiveToolbarMenuItems(false)) {\n this.predefinedItems.responsiveToolbarItems = {\n id: this.gridID + '_' + 'responsivetoolbaritems', cssClass: 'e-responsive-toolbar-items e-menu-toolbar', suffixIcon: 'e-' + 'responsivetoolbaritems-btn',\n align: this.isRightToolbarMenu ? 'Left' : 'Right'\n };\n }\n else {\n this.predefinedItems.ColumnChooser = {\n id: this.gridID + '_' + 'columnchooser', cssClass: 'e-cc e-ccdiv e-cc-toolbar', suffixIcon: 'e-' + 'columnchooser-btn',\n text: isAdaptive ? '' : this.l10n.getConstant('Columnchooser'),\n tooltipText: this.l10n.getConstant('Columnchooser'), align: 'Right'\n };\n }\n if (this.parent.rowRenderingMode === 'Vertical') {\n if (this.parent.allowFiltering && this.parent.filterSettings.type !== 'FilterBar') {\n this.predefinedItems.responsiveFilter = {\n id: this.gridID + '_' + 'responsivefilter', cssClass: 'e-gridresponsiveicons e-icons',\n suffixIcon: 'e-' + 'resfilter-icon', tooltipText: this.l10n.getConstant('FilterButton')\n };\n }\n if (this.parent.allowSorting) {\n this.predefinedItems.responsiveSort = {\n id: this.gridID + '_' + 'responsivesort', cssClass: 'e-gridresponsiveicons e-icons',\n suffixIcon: 'e-' + 'ressort-icon', tooltipText: this.l10n.getConstant('Sort')\n };\n }\n }\n if (this.parent.enableAdaptiveUI && this.parent.toolbar && this.parent.toolbar.some(function (item) {\n return (typeof item === 'object' && item.text === 'Search') || item === 'Search';\n })) {\n this.predefinedItems.responsiveBack = {\n id: this.gridID + '_' + 'responsiveback', cssClass: 'e-gridresponsiveicons e-icons',\n suffixIcon: 'e-' + 'resback-icon', visible: false\n };\n }\n this.createToolbar();\n if (this.parent.enableAdaptiveUI) {\n if (isNullOrUndefined(this.responsiveToolbarMenu)) {\n this.renderResponsiveToolbarpopup();\n }\n if (this.toolbar.element) {\n this.toolbar.refreshOverflow();\n }\n }\n };\n Toolbar.prototype.isResponsiveToolbarMenuItems = function (isRight) {\n var items = isRight ? ['Add', 'Edit', 'Delete', 'Search'] : ['Print', 'ColumnChooser', 'PdfExport', 'ExcelExport', 'CsvExport'];\n var toolbarItems = this.parent.toolbar || [];\n for (var i = 0; i < items.length; i++) {\n if (toolbarItems.indexOf(items[parseInt(i.toString(), 10)]) >= 0) {\n return isRight ? false : true;\n }\n }\n return isRight ? true : false;\n };\n /**\n * Gets the toolbar of the Grid.\n *\n * @returns {Element} returns the element\n * @hidden\n */\n Toolbar.prototype.getToolbar = function () {\n return this.toolbar.element;\n };\n /**\n * Destroys the ToolBar.\n *\n * @function destroy\n * @returns {void}\n */\n Toolbar.prototype.destroy = function () {\n if (this.toolbar && !this.toolbar.isDestroyed) {\n if (this.responsiveToolbarMenu) {\n this.responsiveToolbarMenu.destroy();\n }\n if (!this.toolbar.element) {\n this.parent.destroyTemplate(['toolbarTemplate']);\n if (this.parent.isReact) {\n this.parent.renderTemplates();\n }\n }\n else {\n this.toolbar.off('render-react-toolbar-template', this.addReactToolbarPortals);\n this.toolbar.destroy();\n }\n this.unWireEvent();\n this.removeEventListener();\n if (this.element.parentNode) {\n remove(this.element);\n }\n }\n };\n Toolbar.prototype.bindSearchEvents = function () {\n this.searchElement = select('#' + this.gridID + '_searchbar', this.element);\n this.wireEvent();\n this.refreshToolbarItems();\n if (this.parent.searchSettings) {\n this.updateSearchBox();\n }\n };\n Toolbar.prototype.toolbarCreated = function (isNormal) {\n if (this.element.querySelector('.e-search-wrapper')) {\n if (!this.parent.enableAdaptiveUI || isNormal) {\n var classList = this.parent.cssClass ? 'e-input-group e-search ' + this.parent.cssClass\n : 'e-input-group e-search';\n this.element.querySelector('.e-search-wrapper').innerHTML = '
    \\\n \\\n \\\n \\\n
    ';\n }\n else {\n this.element.querySelector('.e-search-wrapper').innerHTML = '\\\n \\\n
    ';\n }\n }\n if (this.element.querySelector('.e-responsive-toolbar-items')) {\n this.element.querySelector('.e-responsive-toolbar-items').innerHTML = '
    \r\n );\r\n};\r\n\r\nexport default UnauthorizePage;\r\n","export const getToolbar = (situation) => {\r\n switch (situation) {\r\n case \"CRUD\":\r\n return [\"Add\", \"Edit\", \"Delete\"];\r\n case \"CRUD-EXPORT\":\r\n return [\"Add\", \"Edit\", \"Delete\", \"PdfExport\", \"ExcelExport\", \"CsvExport\"];\r\n case \"EXPORT\":\r\n return [\"PdfExport\", \"ExcelExport\", \"CsvExport\", \"Print\"];\r\n case \"EXCEL\":\r\n return [\"ExcelExport\", \"CsvExport\", \"Print\"];\r\n case \"RUD-EXPORT\":\r\n return [\r\n \"Edit\",\r\n \"Delete\",\r\n \"PdfExport\",\r\n \"ExcelExport\",\r\n \"CsvExport\",\r\n \"Print\",\r\n ];\r\n case \"MESSAGE-EXPORT\":\r\n return [\"SendMessage\", \"PdfExport\", \"ExcelExport\", \"CsvExport\", \"Print\"];\r\n default:\r\n return [];\r\n }\r\n};\r\n\r\nexport default getToolbar;\r\n","export const editSettings = {\r\n allowEditing: true,\r\n allowAdding: true,\r\n allowDeleting: true,\r\n showConfirmDialog: true,\r\n mode: \"Dialog\",\r\n headerTemplate: \"Ayrıntılar\"\r\n };\r\n \r\n export default editSettings;","/* eslint-disable valid-jsdoc, jsdoc/require-jsdoc, jsdoc/require-returns, jsdoc/require-param */\n/**\n * MaskedTextBox base module\n */\nimport { EventHandler, isNullOrUndefined, merge, attributes, addClass, removeClass, Browser, extend } from '@syncfusion/ej2-base';\nimport { Input } from '../../input/input';\nvar ERROR = 'e-error';\nvar INPUTGROUP = 'e-input-group';\nvar FLOATINPUT = 'e-float-input';\nvar UTILMASK = 'e-utility-mask';\nvar TOPLABEL = 'e-label-top';\nvar BOTTOMLABEL = 'e-label-bottom';\n/**\n * @hidden\n * Built-in masking elements collection.\n */\nexport var regularExpressions = {\n '0': '[0-9]',\n '9': '[0-9 ]',\n '#': '[0-9 +-]',\n 'L': '[A-Za-z]',\n '?': '[A-Za-z ]',\n '&': '[^\\x7f ]+',\n 'C': '[^\\x7f]+',\n 'A': '[A-Za-z0-9]',\n 'a': '[A-Za-z0-9 ]'\n};\n/**\n * Generate required masking elements to the MaskedTextBox from user mask input.\n *\n * @hidden\n */\nexport function createMask() {\n attributes(this.element, {\n 'role': 'textbox', 'autocomplete': 'off', 'autocapitalize': 'off',\n 'spellcheck': 'false', 'aria-live': 'assertive'\n });\n if (this.mask) {\n var splitMask = this.mask.split(']');\n for (var i = 0; i < splitMask.length; i++) {\n if (splitMask[i][splitMask[i].length - 1] === '\\\\') {\n splitMask[i] = splitMask[i] + ']';\n var splitInnerMask = splitMask[i].split('[');\n for (var j = 0; j < splitInnerMask.length; j++) {\n if (splitInnerMask[j][splitInnerMask[j].length - 1] === '\\\\') {\n splitInnerMask[j] = splitInnerMask[j] + '[';\n }\n pushIntoRegExpCollec.call(this, splitInnerMask[j]);\n }\n }\n else {\n var splitInnerMask = splitMask[i].split('[');\n if (splitInnerMask.length > 1) {\n var chkSpace = false;\n for (var j = 0; j < splitInnerMask.length; j++) {\n if (splitInnerMask[j] === '\\\\') {\n this.customRegExpCollec.push('[');\n this.hiddenMask += splitInnerMask[j] + '[';\n }\n else if (splitInnerMask[j] === '') {\n chkSpace = true;\n }\n else if ((splitInnerMask[j] !== '' && chkSpace) || j === splitInnerMask.length - 1) {\n this.customRegExpCollec.push('[' + splitInnerMask[j] + ']');\n this.hiddenMask += this.promptChar;\n chkSpace = false;\n }\n else {\n pushIntoRegExpCollec.call(this, splitInnerMask[j]);\n }\n }\n }\n else {\n pushIntoRegExpCollec.call(this, splitInnerMask[0]);\n }\n }\n }\n this.escapeMaskValue = this.hiddenMask;\n this.promptMask = this.hiddenMask.replace(/[09?LCAa#&]/g, this.promptChar);\n if (!isNullOrUndefined(this.customCharacters)) {\n for (var i = 0; i < this.promptMask.length; i++) {\n if (!isNullOrUndefined(this.customCharacters[this.promptMask[i]])) {\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n this.promptMask = this.promptMask.replace(new RegExp(this.promptMask[i], 'g'), this.promptChar);\n }\n }\n }\n var escapeNumber = 0;\n if (this.hiddenMask.match(new RegExp(/\\\\/))) {\n for (var i = 0; i < this.hiddenMask.length; i++) {\n var j = 0;\n if (i >= 1) {\n j = i;\n }\n escapeNumber = this.hiddenMask.length - this.promptMask.length;\n j = j - escapeNumber;\n if ((i > 0 && this.hiddenMask[i - 1] !== '\\\\') && (this.hiddenMask[i] === '>' ||\n this.hiddenMask[i] === '<' || this.hiddenMask[i] === '|')) {\n this.promptMask = this.promptMask.substring(0, j) +\n this.promptMask.substring((i + 1) - escapeNumber, this.promptMask.length);\n this.escapeMaskValue = this.escapeMaskValue.substring(0, j) +\n this.escapeMaskValue.substring((i + 1) - escapeNumber, this.escapeMaskValue.length);\n }\n if (this.hiddenMask[i] === '\\\\') {\n this.promptMask = this.promptMask.substring(0, j) + this.hiddenMask[i + 1] +\n this.promptMask.substring((i + 2) - escapeNumber, this.promptMask.length);\n this.escapeMaskValue = this.escapeMaskValue.substring(0, j) + this.escapeMaskValue[i + 1] +\n this.escapeMaskValue.substring((i + 2) - escapeNumber, this.escapeMaskValue.length);\n }\n }\n }\n else {\n this.promptMask = this.promptMask.replace(/[>|<]/g, '');\n this.escapeMaskValue = this.hiddenMask.replace(/[>|<]/g, '');\n }\n attributes(this.element, { 'aria-invalid': 'false' });\n }\n}\n/**\n * Apply mask ability with masking elements to the MaskedTextBox.\n *\n * @hidden\n */\nexport function applyMask() {\n setElementValue.call(this, this.promptMask);\n setMaskValue.call(this, this.value);\n}\n/**\n * To wire required events to the MaskedTextBox.\n *\n * @hidden\n */\nexport function wireEvents() {\n EventHandler.add(this.element, 'keydown', maskInputKeyDownHandler, this);\n EventHandler.add(this.element, 'keypress', maskInputKeyPressHandler, this);\n EventHandler.add(this.element, 'keyup', maskInputKeyUpHandler, this);\n EventHandler.add(this.element, 'input', maskInputHandler, this);\n EventHandler.add(this.element, 'focus', maskInputFocusHandler, this);\n EventHandler.add(this.element, 'blur', maskInputBlurHandler, this);\n EventHandler.add(this.element, 'paste', maskInputPasteHandler, this);\n EventHandler.add(this.element, 'cut', maskInputCutHandler, this);\n EventHandler.add(this.element, 'drop', maskInputDropHandler, this);\n EventHandler.add(this.element, 'mousedown', maskInputMouseDownHandler, this);\n EventHandler.add(this.element, 'mouseup', maskInputMouseUpHandler, this);\n if (this.enabled) {\n bindClearEvent.call(this);\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', resetFormHandler, this);\n }\n }\n}\n/**\n * To unwire events attached to the MaskedTextBox.\n *\n * @hidden\n */\nexport function unwireEvents() {\n EventHandler.remove(this.element, 'keydown', maskInputKeyDownHandler);\n EventHandler.remove(this.element, 'keypress', maskInputKeyPressHandler);\n EventHandler.remove(this.element, 'keyup', maskInputKeyUpHandler);\n EventHandler.remove(this.element, 'input', maskInputHandler);\n EventHandler.remove(this.element, 'focus', maskInputFocusHandler);\n EventHandler.remove(this.element, 'blur', maskInputBlurHandler);\n EventHandler.remove(this.element, 'paste', maskInputPasteHandler);\n EventHandler.remove(this.element, 'cut', maskInputCutHandler);\n EventHandler.remove(this.element, 'drop', maskInputDropHandler);\n EventHandler.remove(this.element, 'mousedown', maskInputMouseDownHandler);\n EventHandler.remove(this.element, 'mouseup', maskInputMouseUpHandler);\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', resetFormHandler);\n }\n}\n/**\n * To bind required events to the MaskedTextBox clearButton.\n *\n * @hidden\n */\nexport function bindClearEvent() {\n if (this.showClearButton) {\n EventHandler.add(this.inputObj.clearButton, 'mousedown touchstart', resetHandler, this);\n }\n}\nfunction resetHandler(e) {\n e.preventDefault();\n if (!this.inputObj.clearButton.classList.contains('e-clear-icon-hide') || (this.inputObj.container.classList.contains('e-static-clear'))) {\n clear.call(this, e);\n this.value = '';\n }\n}\nfunction clear(event) {\n var value = this.element.value;\n setElementValue.call(this, this.promptMask);\n this.redoCollec.unshift({\n value: this.promptMask, startIndex: this.element.selectionStart, endIndex: this.element.selectionEnd\n });\n triggerMaskChangeEvent.call(this, event, value);\n this.element.setSelectionRange(0, 0);\n}\nfunction resetFormHandler() {\n if (this.element.tagName === 'EJS-MASKEDTEXTBOX') {\n setElementValue.call(this, this.promptMask);\n }\n else {\n this.value = this.initInputValue;\n }\n}\n/**\n * To get masked value from the MaskedTextBox.\n *\n * @hidden\n */\nexport function unstrippedValue(element) {\n return element.value;\n}\n/**\n * To extract raw value from the MaskedTextBox.\n *\n * @hidden\n */\nexport function strippedValue(element, maskValues) {\n var value = '';\n var k = 0;\n var checkMask = false;\n var maskValue = (!isNullOrUndefined(maskValues)) ? maskValues : (!isNullOrUndefined(element) &&\n !isNullOrUndefined(this)) ? element.value : maskValues;\n if (maskValue !== this.promptMask) {\n for (var i = 0; i < this.customRegExpCollec.length; i++) {\n if (checkMask) {\n checkMask = false;\n }\n if (this.customRegExpCollec[k] === '>' || this.customRegExpCollec[k] === '<' ||\n this.customRegExpCollec[k] === '|' || this.customRegExpCollec[k] === '\\\\') {\n --i;\n checkMask = true;\n }\n if (!checkMask) {\n if ((maskValue[i] !== this.promptChar) && (!isNullOrUndefined(this.customRegExpCollec[k]) &&\n ((this._callPasteHandler || (!isNullOrUndefined(this.regExpCollec[this.customRegExpCollec[k]]) &&\n !this.maskedRegExp.includes(this.customRegExpCollec[k]))) ||\n (this.customRegExpCollec[k].length > 2 && this.customRegExpCollec[k][0] === '[' &&\n this.customRegExpCollec[k][this.customRegExpCollec[k].length - 1] === ']') ||\n (!isNullOrUndefined(this.customCharacters) &&\n (!isNullOrUndefined(this.customCharacters[this.customRegExpCollec[k]]))))) && (maskValue !== '')) {\n value += maskValue[i];\n }\n }\n ++k;\n }\n }\n if (this.mask === null || this.mask === '' && this.value !== undefined) {\n value = maskValue;\n }\n return value;\n}\nfunction pushIntoRegExpCollec(value) {\n for (var k = 0; k < value.length; k++) {\n this.hiddenMask += value[k];\n if (value[k] !== '\\\\') {\n this.customRegExpCollec.push(value[k]);\n }\n else if (value[k] === '\\\\' && !isNullOrUndefined(this.regExpCollec[value[k + 1]])) {\n this.maskedRegExp.push(value[k + 1]);\n }\n }\n}\nexport function maskInputMouseDownHandler() {\n this.isClicked = true;\n}\nexport function maskInputMouseUpHandler() {\n this.isClicked = false;\n}\nexport function maskInputFocusHandler(event) {\n var _this = this;\n var inputElement = this.element;\n var startIndex = 0;\n var modelValue = strippedValue.call(this, inputElement);\n var toAllowForward = false;\n var toAllowBackward = false;\n var eventArgs = {\n selectionStart: inputElement.selectionStart,\n event: event,\n value: this.value,\n maskedValue: inputElement.value,\n container: !isNullOrUndefined(this.inputObj) ? this.inputObj.container : this.inputObj,\n selectionEnd: inputElement.selectionEnd\n };\n if (!this.isClicked) {\n triggerFocus.call(this, eventArgs, inputElement);\n }\n if (this.mask) {\n if (!(!(modelValue === null || modelValue === '') || this.floatLabelType === 'Always' ||\n this.placeholder === null || this.placeholder === '')) {\n inputElement.value = this.promptMask;\n }\n setTimeout(function () {\n if (inputElement.selectionStart === _this.promptMask.length ||\n inputElement.value[inputElement.selectionStart] === _this.promptChar) {\n toAllowForward = true;\n }\n else {\n for (var i = inputElement.selectionStart; i < _this.promptMask.length; i++) {\n if (inputElement.value[i] !== _this.promptChar) {\n if ((inputElement.value[i] !== _this.promptMask[i])) {\n toAllowForward = false;\n break;\n }\n }\n else {\n toAllowForward = true;\n break;\n }\n }\n }\n });\n setTimeout(function () {\n var backSelectionStart = inputElement.selectionStart - 1;\n if (backSelectionStart === _this.promptMask.length - 1 ||\n inputElement.value[backSelectionStart] === _this.promptChar) {\n toAllowBackward = true;\n }\n else {\n for (var i = backSelectionStart; i >= 0; i--) {\n if (inputElement.value[i] !== _this.promptChar) {\n if ((inputElement.value[i] !== _this.promptMask[i])) {\n toAllowBackward = false;\n break;\n }\n }\n else {\n toAllowBackward = true;\n break;\n }\n }\n }\n });\n if ((this.isClicked || (this.floatLabelType !== 'Always' &&\n ((modelValue === null || modelValue === '') &&\n (this.placeholder !== null && this.placeholder !== ''))))) {\n for (startIndex = 0; startIndex < this.promptMask.length; startIndex++) {\n if (inputElement.value[startIndex] === this.promptChar) {\n setTimeout(function () {\n if (toAllowForward || toAllowBackward) {\n inputElement.selectionEnd = startIndex;\n inputElement.selectionStart = startIndex;\n }\n eventArgs = {\n selectionStart: inputElement.selectionStart,\n event: event,\n value: _this.value,\n maskedValue: inputElement.value,\n container: !isNullOrUndefined(_this.inputObj) ? _this.inputObj.container : _this.inputObj,\n selectionEnd: inputElement.selectionEnd\n };\n triggerFocus.call(_this, eventArgs, inputElement);\n }, 110);\n break;\n }\n }\n if (isNullOrUndefined(inputElement.value.match(escapeRegExp(this.promptChar)))) {\n eventArgs = {\n selectionStart: inputElement.selectionStart,\n event: event,\n value: this.value,\n maskedValue: inputElement.value,\n container: !isNullOrUndefined(this.inputObj) ? this.inputObj.container : this.inputObj,\n selectionEnd: inputElement.selectionEnd\n };\n triggerFocus.call(this, eventArgs, inputElement);\n }\n this.isClicked = false;\n }\n }\n}\nexport function triggerFocus(eventArgs, inputElement) {\n this.trigger('focus', eventArgs, function (eventArgs) {\n inputElement.selectionStart = eventArgs.selectionStart;\n inputElement.selectionEnd = eventArgs.selectionEnd;\n });\n}\nexport function escapeRegExp(text) {\n return !isNullOrUndefined(text) ? text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&') : text;\n}\nexport function maskInputBlurHandler(event) {\n this.blurEventArgs = {\n event: event,\n value: this.value,\n maskedValue: this.element.value,\n container: !isNullOrUndefined(this.inputObj) ? this.inputObj.container : this.inputObj\n };\n this.trigger('blur', this.blurEventArgs);\n if (this.mask) {\n this.isFocus = false;\n if (this.placeholder && this.element.value === this.promptMask && this.floatLabelType !== 'Always') {\n setElementValue.call(this, '');\n var labelElement = this.element.parentNode.querySelector('.e-float-text');\n if (this.floatLabelType === 'Auto' && !isNullOrUndefined(labelElement) && labelElement.classList.contains(TOPLABEL)) {\n removeClass([labelElement], TOPLABEL);\n }\n }\n }\n}\nfunction maskInputPasteHandler(event) {\n var _this = this;\n if (this.mask && !this.readonly) {\n var sIndex_1 = this.element.selectionStart;\n var eIndex_1 = this.element.selectionEnd;\n var oldValue_1 = this.element.value;\n setElementValue.call(this, '');\n this._callPasteHandler = true;\n setTimeout(function () {\n var value = _this.element.value.replace(/ /g, '');\n if (_this.redoCollec.length > 0 && _this.redoCollec[0].value === _this.element.value) {\n value = strippedValue.call(_this, _this.element);\n }\n setElementValue.call(_this, oldValue_1);\n _this.element.selectionStart = sIndex_1;\n _this.element.selectionEnd = eIndex_1;\n var i = 0;\n _this.maskKeyPress = true;\n do {\n validateValue.call(_this, value[i], false, null);\n ++i;\n } while (i < value.length);\n _this.maskKeyPress = false;\n _this._callPasteHandler = false;\n if (_this.element.value === oldValue_1) {\n var i_1 = 0;\n _this.maskKeyPress = true;\n do {\n validateValue.call(_this, value[i_1], false, null);\n ++i_1;\n } while (i_1 < value.length);\n _this.maskKeyPress = false;\n }\n else {\n triggerMaskChangeEvent.call(_this, event, oldValue_1);\n }\n }, 1);\n }\n}\nfunction maskInputCutHandler(event) {\n var _this = this;\n if (this.mask && !this.readonly) {\n var preValue_1 = this.element.value;\n var sIndex_2 = this.element.selectionStart;\n var eIndex = this.element.selectionEnd;\n this.undoCollec.push({ value: this.element.value, startIndex: this.element.selectionStart, endIndex: this.element.selectionEnd });\n var value_1 = this.element.value.substring(0, sIndex_2) + this.promptMask.substring(sIndex_2, eIndex) +\n this.element.value.substring(eIndex);\n setTimeout(function () {\n setElementValue.call(_this, value_1);\n _this.element.selectionStart = _this.element.selectionEnd = sIndex_2;\n if (_this.element.value !== preValue_1) {\n triggerMaskChangeEvent.call(_this, event, null);\n }\n }, 0);\n }\n}\nexport function maskInputDropHandler(event) {\n event.preventDefault();\n}\nfunction maskInputHandler(event) {\n if (Browser.isIE === true && this.element.value === '' && this.floatLabelType === 'Never') {\n return;\n }\n var eventArgs = { ctrlKey: false, keyCode: 229 };\n extend(event, eventArgs);\n if (this.mask) {\n if (this.element.value === '') {\n this.redoCollec.unshift({\n value: this.promptMask, startIndex: this.element.selectionStart, endIndex: this.element.selectionEnd\n });\n }\n if (this.element.value.length === 1) {\n this.element.value = this.element.value + this.promptMask;\n this.element.setSelectionRange(1, 1);\n }\n if (!this._callPasteHandler) {\n removeMaskInputValues.call(this, event);\n }\n if (this.element.value.length > this.promptMask.length) {\n var startIndex = this.element.selectionStart;\n var addedValues = this.element.value.length - this.promptMask.length;\n var value = this.element.value.substring(startIndex - addedValues, startIndex);\n this.maskKeyPress = false;\n var i = 0;\n do {\n validateValue.call(this, value[i], event.ctrlKey, event);\n ++i;\n } while (i < value.length);\n if (this.element.value !== this.preEleVal) {\n triggerMaskChangeEvent.call(this, event, null);\n }\n }\n var val = strippedValue.call(this, this.element);\n this.prevValue = val;\n this.value = val;\n if (val === '') {\n setElementValue.call(this, this.promptMask);\n this.element.setSelectionRange(0, 0);\n }\n }\n}\nfunction maskInputKeyDownHandler(event) {\n if (this.mask && !this.readonly) {\n if (event.keyCode !== 229) {\n if (event.ctrlKey && (event.keyCode === 89 || event.keyCode === 90)) {\n event.preventDefault();\n }\n removeMaskInputValues.call(this, event);\n }\n var startValue = this.element.value;\n if (event.ctrlKey && (event.keyCode === 89 || event.keyCode === 90)) {\n var collec = void 0;\n if (event.keyCode === 90 && this.undoCollec.length > 0 && startValue !== this.undoCollec[this.undoCollec.length - 1].value) {\n collec = this.undoCollec[this.undoCollec.length - 1];\n this.redoCollec.unshift({\n value: this.element.value, startIndex: this.element.selectionStart,\n endIndex: this.element.selectionEnd\n });\n setElementValue.call(this, collec.value);\n this.element.selectionStart = collec.startIndex;\n this.element.selectionEnd = collec.endIndex;\n this.undoCollec.splice(this.undoCollec.length - 1, 1);\n }\n else if (event.keyCode === 89 && this.redoCollec.length > 0 && startValue !== this.redoCollec[0].value) {\n collec = this.redoCollec[0];\n this.undoCollec.push({\n value: this.element.value, startIndex: this.element.selectionStart,\n endIndex: this.element.selectionEnd\n });\n setElementValue.call(this, collec.value);\n this.element.selectionStart = collec.startIndex;\n this.element.selectionEnd = collec.endIndex;\n this.redoCollec.splice(0, 1);\n }\n }\n }\n}\nexport function mobileRemoveFunction() {\n var collec;\n var sIndex = this.element.selectionStart;\n var eIndex = this.element.selectionEnd;\n if (this.redoCollec.length > 0) {\n collec = this.redoCollec[0];\n setElementValue.call(this, collec.value);\n if ((collec.startIndex - sIndex) === 1) {\n this.element.selectionStart = collec.startIndex;\n this.element.selectionEnd = collec.endIndex;\n }\n else {\n this.element.selectionStart = sIndex + 1;\n this.element.selectionEnd = eIndex + 1;\n }\n }\n else {\n setElementValue.call(this, this.promptMask);\n this.element.selectionStart = this.element.selectionEnd = sIndex;\n }\n}\nfunction autoFillMaskInputValues(isRemove, oldEventVal, event) {\n if (event.type === 'input') {\n isRemove = false;\n oldEventVal = this.element.value;\n setElementValue.call(this, this.promptMask);\n setMaskValue.call(this, oldEventVal);\n }\n return isRemove;\n}\nfunction removeMaskInputValues(event) {\n var isRemove = false;\n var oldEventVal;\n var isDeleted = false;\n if (this.element.value.length < this.promptMask.length) {\n isRemove = true;\n oldEventVal = this.element.value;\n isRemove = autoFillMaskInputValues.call(this, isRemove, oldEventVal, event);\n mobileRemoveFunction.call(this);\n }\n if (this.element.value.length >= this.promptMask.length && event.type === 'input') {\n isRemove = autoFillMaskInputValues.call(this, isRemove, oldEventVal, event);\n }\n var initStartIndex = this.element.selectionStart;\n var initEndIndex = this.element.selectionEnd;\n var startIndex = this.element.selectionStart;\n var endIndex = this.element.selectionEnd;\n var maskValue = this.hiddenMask.replace(/[>|\\\\<]/g, '');\n var curMask = maskValue[startIndex - 1];\n var deleteEndIndex = this.element.selectionEnd;\n if (isRemove || event.keyCode === 8 || event.keyCode === 46) {\n this.undoCollec.push({ value: this.element.value, startIndex: this.element.selectionStart, endIndex: endIndex });\n var multipleDel = false;\n var preValue = this.element.value;\n if (startIndex > 0 || ((event.keyCode === 8 || event.keyCode === 46) && startIndex < this.element.value.length\n && ((this.element.selectionEnd - startIndex) !== this.element.value.length))) {\n var index = startIndex;\n if (startIndex !== endIndex) {\n startIndex = endIndex;\n if (event.keyCode === 46) {\n multipleDel = true;\n }\n }\n else if (event.keyCode === 46) {\n ++index;\n }\n else {\n --index;\n }\n for (var k = startIndex; (event.keyCode === 8 || isRemove || multipleDel) ? k > index : k < index; (event.keyCode === 8 || isRemove || multipleDel) ? k-- : k++) {\n for (var i = startIndex; (event.keyCode === 8 || isRemove || multipleDel) ? i > 0 : i < this.element.value.length; (event.keyCode === 8 || isRemove || multipleDel) ? i-- : i++) {\n var sIndex = void 0;\n if (((event.keyCode === 8 || multipleDel) && ((initStartIndex !== initEndIndex && initStartIndex !== startIndex) ||\n (initStartIndex === initEndIndex))) || isRemove) {\n curMask = maskValue[i - 1];\n sIndex = startIndex - 1;\n }\n else {\n curMask = maskValue[i];\n sIndex = startIndex;\n ++startIndex;\n }\n var oldValue = this.element.value[sIndex];\n if ((isNullOrUndefined(this.regExpCollec[\"\" + curMask]) && (!isNullOrUndefined(this.customCharacters)\n && isNullOrUndefined(this.customCharacters[\"\" + curMask]))\n && ((this.hiddenMask[sIndex] !== this.promptChar && this.customRegExpCollec[sIndex][0] !== '['\n && this.customRegExpCollec[sIndex][this.customRegExpCollec[sIndex].length - 1] !== ']')))\n || (this.promptMask[sIndex] !== this.promptChar && isNullOrUndefined(this.customCharacters))) {\n this.element.selectionStart = this.element.selectionEnd = sIndex;\n event.preventDefault();\n if (event.keyCode === 46 && !multipleDel) {\n ++this.element.selectionStart;\n }\n }\n else {\n var value = this.element.value;\n var prompt_1 = this.promptChar;\n var elementValue = value.substring(0, sIndex) + prompt_1 + value.substring(startIndex, value.length);\n setElementValue.call(this, elementValue);\n event.preventDefault();\n if (event.keyCode === 46 && !multipleDel) {\n sIndex++;\n }\n this.element.selectionStart = this.element.selectionEnd = sIndex;\n isDeleted = true;\n }\n startIndex = this.element.selectionStart;\n if ((!isDeleted && event.keyCode === 8) || multipleDel || (!isDeleted && !(event.keyCode === 46))) {\n sIndex = startIndex - 1;\n }\n else {\n sIndex = startIndex;\n isDeleted = false;\n }\n oldValue = this.element.value[sIndex];\n if (((initStartIndex !== initEndIndex) && (this.element.selectionStart === initStartIndex))\n || (this.promptMask[sIndex] === this.promptChar) || ((oldValue !== this.promptMask[sIndex]) &&\n (this.promptMask[sIndex] !== this.promptChar) && !isNullOrUndefined(this.customCharacters))) {\n break;\n }\n }\n }\n }\n if (event.keyCode === 46 && multipleDel && isDeleted) {\n this.element.selectionStart = this.element.selectionEnd = deleteEndIndex;\n }\n if (this.element.selectionStart === 0 && (this.element.selectionEnd === this.element.value.length)) {\n setElementValue.call(this, this.promptMask);\n event.preventDefault();\n this.element.selectionStart = this.element.selectionEnd = startIndex;\n }\n this.redoCollec.unshift({\n value: this.element.value, startIndex: this.element.selectionStart,\n endIndex: this.element.selectionEnd\n });\n if (this.element.value !== preValue) {\n triggerMaskChangeEvent.call(this, event, oldEventVal);\n }\n }\n}\nfunction maskInputKeyPressHandler(event) {\n if (this.mask && !this.readonly) {\n var oldValue = this.element.value;\n if (!(event.ctrlKey || event.metaKey) || ((event.ctrlKey || event.metaKey) && event.code !== 'KeyA' && event.code !== 'KeyY'\n && event.code !== 'KeyZ' && event.code !== 'KeyX' && event.code !== 'KeyC' && event.code !== 'KeyV')) {\n this.maskKeyPress = true;\n var key = event.key;\n if (key === 'Spacebar') {\n key = String.fromCharCode(event.keyCode);\n }\n if (!key) {\n this.isIosInvalid = true;\n validateValue.call(this, String.fromCharCode(event.keyCode), event.ctrlKey, event);\n event.preventDefault();\n this.isIosInvalid = false;\n }\n else if (key && key.length === 1) {\n validateValue.call(this, key, event.ctrlKey, event);\n event.preventDefault();\n }\n if (event.keyCode === 32 && key === ' ' && this.promptChar === ' ') {\n this.element.selectionStart = this.element.selectionEnd = this.element.selectionStart - key.length;\n }\n }\n if (this.element.value !== oldValue) {\n triggerMaskChangeEvent.call(this, event, oldValue);\n }\n }\n}\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction triggerMaskChangeEvent(event, oldValue) {\n var prevOnChange = this.isProtectedOnChange;\n if (!isNullOrUndefined(this.changeEventArgs) && !this.isInitial) {\n var eventArgs = {};\n this.changeEventArgs = { value: this.element.value, maskedValue: this.element.value, isInteraction: false, isInteracted: false };\n if (this.mask) {\n this.changeEventArgs.value = strippedValue.call(this, this.element);\n }\n if (!isNullOrUndefined(event)) {\n this.changeEventArgs.isInteracted = true;\n this.changeEventArgs.isInteraction = true;\n this.changeEventArgs.event = event;\n }\n this.isProtectedOnChange = true;\n this.value = this.changeEventArgs.value;\n this.isProtectedOnChange = prevOnChange;\n merge(eventArgs, this.changeEventArgs);\n /* istanbul ignore next */\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n }\n this.preEleVal = this.element.value;\n this.prevValue = strippedValue.call(this, this.element);\n}\nfunction maskInputKeyUpHandler(event) {\n if (this.mask && !this.readonly) {\n var collec = void 0;\n if (!this.maskKeyPress && event.keyCode === 229) {\n var oldEventVal = void 0;\n if (this.element.value.length === 1) {\n this.element.value = this.element.value + this.promptMask;\n this.element.setSelectionRange(1, 1);\n }\n if (this.element.value.length > this.promptMask.length) {\n var startIndex = this.element.selectionStart;\n var addedValues = this.element.value.length - this.promptMask.length;\n var val_1 = this.element.value.substring(startIndex - addedValues, startIndex);\n if (this.undoCollec.length > 0) {\n collec = this.undoCollec[this.undoCollec.length - 1];\n var startIndex_1 = this.element.selectionStart;\n oldEventVal = collec.value;\n var oldVal = collec.value.substring(startIndex_1 - addedValues, startIndex_1);\n collec = this.redoCollec[0];\n val_1 = val_1.trim();\n var isSpace = Browser.isAndroid && val_1 === '';\n if (!isSpace && oldVal !== val_1 && collec.value.substring(startIndex_1 - addedValues, startIndex_1) !== val_1) {\n validateValue.call(this, val_1, event.ctrlKey, event);\n }\n else if (isSpace) {\n preventUnsupportedValues.call(this, event, startIndex_1 - 1, this.element.selectionEnd - 1, val_1, event.ctrlKey, false);\n }\n }\n else {\n oldEventVal = this.promptMask;\n validateValue.call(this, val_1, event.ctrlKey, event);\n }\n this.maskKeyPress = false;\n triggerMaskChangeEvent.call(this, event, oldEventVal);\n }\n }\n else {\n removeMaskError.call(this);\n }\n var val = strippedValue.call(this, this.element);\n if (!((this.element.selectionStart === 0) && (this.promptMask === this.element.value) && val === '')\n || (val === '' && this.value !== val)) {\n this.prevValue = val;\n this.value = val;\n }\n }\n else {\n triggerMaskChangeEvent.call(this, event);\n }\n if (this.element.selectionStart === 0 && this.element.selectionEnd === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var temp_1 = this.element;\n setTimeout(function () {\n temp_1.setSelectionRange(0, 0);\n }, 0);\n }\n}\nfunction mobileSwipeCheck(key) {\n if (key.length > 1 && ((this.promptMask.length + key.length) < this.element.value.length)) {\n var elementValue = this.redoCollec[0].value.substring(0, this.redoCollec[0].startIndex) + key +\n this.redoCollec[0].value.substring(this.redoCollec[0].startIndex, this.redoCollec[0].value.length);\n setElementValue.call(this, elementValue);\n this.element.selectionStart = this.element.selectionEnd = this.redoCollec[0].startIndex + key.length;\n }\n this.element.selectionStart = this.element.selectionStart - key.length;\n this.element.selectionEnd = this.element.selectionEnd - key.length;\n}\nfunction mobileValidation(key) {\n if (!this.maskKeyPress) {\n mobileSwipeCheck.call(this, key);\n }\n}\nfunction validateValue(key, isCtrlKey, event) {\n mobileValidation.call(this, key);\n if (isNullOrUndefined(this) || isNullOrUndefined(key)) {\n return;\n }\n var startIndex = this.element.selectionStart;\n var initStartIndex = startIndex;\n var curMask;\n var allowText = false;\n var value = this.element.value;\n var eventOldVal;\n var prevSupport = false;\n var isEqualVal = false;\n for (var k = 0; k < key.length; k++) {\n var keyValue = key[k];\n startIndex = this.element.selectionStart;\n if (!this.maskKeyPress && initStartIndex === startIndex) {\n startIndex = startIndex + k;\n }\n if ((!this.maskKeyPress || startIndex < this.promptMask.length)) {\n for (var i = startIndex; i < this.promptMask.length; i++) {\n var maskValue = this.escapeMaskValue;\n curMask = maskValue[startIndex];\n if (this.hiddenMask[startIndex] === '\\\\' && this.hiddenMask[startIndex + 1] === key) {\n isEqualVal = true;\n }\n if ((isNullOrUndefined(this.regExpCollec[\"\" + curMask]) && (isNullOrUndefined(this.customCharacters)\n || (!isNullOrUndefined(this.customCharacters) && isNullOrUndefined(this.customCharacters[\"\" + curMask])))\n && ((this.hiddenMask[startIndex] !== this.promptChar && this.customRegExpCollec[startIndex][0] !== '['\n && this.customRegExpCollec[startIndex][this.customRegExpCollec[startIndex].length - 1] !== ']')))\n || ((this.promptMask[startIndex] !== this.promptChar) && isNullOrUndefined(this.customCharacters))\n || (this.promptChar === curMask && this.escapeMaskValue === this.mask)) {\n this.element.selectionStart = this.element.selectionEnd = startIndex + 1;\n startIndex = this.element.selectionStart;\n curMask = this.hiddenMask[startIndex];\n }\n }\n if (!isNullOrUndefined(this.customCharacters) && !isNullOrUndefined(this.customCharacters[\"\" + curMask])) {\n var customValStr = this.customCharacters[\"\" + curMask];\n var customValArr = customValStr.split(',');\n for (var i = 0; i < customValArr.length; i++) {\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n if (keyValue.match(new RegExp('[' + customValArr[i] + ']'))) {\n allowText = true;\n break;\n }\n }\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n }\n else if (!isNullOrUndefined(this.regExpCollec[\"\" + curMask]) && keyValue.match(new RegExp(this.regExpCollec[\"\" + curMask]))\n && this.promptMask[startIndex] === this.promptChar) {\n allowText = true;\n }\n else if (this.promptMask[startIndex] === this.promptChar && this.customRegExpCollec[startIndex][0] === '['\n && this.customRegExpCollec[startIndex][this.customRegExpCollec[startIndex].length - 1] === ']'\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n && keyValue.match(new RegExp(this.customRegExpCollec[startIndex]))) {\n allowText = true;\n }\n if ((!this.maskKeyPress || startIndex < this.hiddenMask.length) && allowText) {\n if (k === 0) {\n if (this.maskKeyPress) {\n this.undoCollec.push({ value: value, startIndex: startIndex, endIndex: startIndex });\n }\n else {\n var sIndex = this.element.selectionStart;\n var eIndex = this.element.selectionEnd;\n if (this.redoCollec.length > 0) {\n eventOldVal = this.redoCollec[0].value;\n setElementValue.call(this, eventOldVal);\n this.undoCollec.push(this.redoCollec[0]);\n }\n else {\n this.undoCollec.push({ value: this.promptMask, startIndex: startIndex, endIndex: startIndex });\n eventOldVal = this.promptMask;\n setElementValue.call(this, eventOldVal);\n }\n this.element.selectionStart = sIndex;\n this.element.selectionEnd = eIndex;\n }\n }\n startIndex = this.element.selectionStart;\n applySupportedValues.call(this, event, startIndex, keyValue, eventOldVal, isEqualVal);\n prevSupport = true;\n if (k === key.length - 1) {\n this.redoCollec.unshift({\n value: this.element.value, startIndex: this.element.selectionStart, endIndex: this.element.selectionEnd\n });\n }\n allowText = false;\n }\n else {\n startIndex = this.element.selectionStart;\n preventUnsupportedValues.call(this, event, startIndex, initStartIndex, key, isCtrlKey, prevSupport);\n }\n if (k === key.length - 1 && !allowText) {\n if (!Browser.isAndroid || (Browser.isAndroid && startIndex < this.promptMask.length)) {\n this.redoCollec.unshift({\n value: this.element.value, startIndex: this.element.selectionStart, endIndex: this.element.selectionEnd\n });\n }\n }\n }\n else {\n if (key.length === 1 && !isCtrlKey && !isNullOrUndefined(event)) {\n addMaskErrorClass.call(this);\n }\n }\n }\n}\nfunction applySupportedValues(event, startIndex, keyValue, eventOldVal, isEqualVal) {\n if (this.hiddenMask.length > this.promptMask.length) {\n keyValue = changeToLowerUpperCase.call(this, keyValue, this.element.value);\n }\n if (!isEqualVal) {\n var value = this.element.value;\n var elementValue = value.substring(0, startIndex) + keyValue + value.substring(startIndex + 1, value.length);\n setElementValue.call(this, elementValue);\n this.element.selectionStart = this.element.selectionEnd = startIndex + 1;\n }\n}\nfunction preventUnsupportedValues(event, sIdx, idx, key, ctrl, chkSupport) {\n if (!this.maskKeyPress) {\n var value = this.element.value;\n if (sIdx >= this.promptMask.length) {\n setElementValue.call(this, value.substring(0, sIdx));\n }\n else {\n if (idx === sIdx) {\n setElementValue.call(this, value.substring(0, sIdx) + value.substring(sIdx + 1, value.length));\n }\n else {\n if (this.promptMask.length === this.element.value.length) {\n setElementValue.call(this, value.substring(0, sIdx) + value.substring(sIdx, value.length));\n }\n else {\n setElementValue.call(this, value.substring(0, idx) + value.substring(idx + 1, value.length));\n }\n }\n this.element.selectionStart = this.element.selectionEnd = (chkSupport ||\n this.element.value[idx] !== this.promptChar) ? sIdx : idx;\n }\n addMaskErrorClass.call(this);\n }\n if (key.length === 1 && !ctrl && !isNullOrUndefined(event)) {\n addMaskErrorClass.call(this);\n }\n}\nfunction addMaskErrorClass() {\n var _this = this;\n var parentElement = this.element.parentNode;\n var timer = 200;\n if (parentElement.classList.contains(INPUTGROUP) || parentElement.classList.contains(FLOATINPUT)) {\n addClass([parentElement], ERROR);\n }\n else {\n addClass([this.element], ERROR);\n }\n if (this.isIosInvalid === true) {\n timer = 400;\n }\n attributes(this.element, { 'aria-invalid': 'true' });\n setTimeout(function () {\n if (!_this.maskKeyPress) {\n removeMaskError.call(_this);\n }\n }, timer);\n}\nfunction removeMaskError() {\n var parentElement = this.element.parentNode;\n if (!isNullOrUndefined(parentElement)) {\n removeClass([parentElement], ERROR);\n }\n removeClass([this.element], ERROR);\n attributes(this.element, { 'aria-invalid': 'false' });\n}\n/**\n * Validates user input using masking elements '<' , '>' and '|'.\n *\n * @hidden\n */\nfunction changeToLowerUpperCase(key, value) {\n var promptMask;\n var i;\n var curVal = value;\n var caseCount = 0;\n for (i = 0; i < this.hiddenMask.length; i++) {\n if (this.hiddenMask[i] === '\\\\') {\n promptMask = curVal.substring(0, i) + '\\\\' + curVal.substring(i, curVal.length);\n }\n if (this.hiddenMask[i] === '>' || this.hiddenMask[i] === '<' || this.hiddenMask[i] === '|') {\n if (this.hiddenMask[i] !== curVal[i]) {\n promptMask = curVal.substring(0, i) + this.hiddenMask[i] + curVal.substring(i, curVal.length);\n }\n ++caseCount;\n }\n if (promptMask) {\n if (((promptMask[i] === this.promptChar) && (i > this.element.selectionStart)) ||\n (this.element.value.indexOf(this.promptChar) < 0 && (this.element.selectionStart + caseCount) === i)) {\n caseCount = 0;\n break;\n }\n curVal = promptMask;\n }\n }\n while (i >= 0 && promptMask) {\n if (i === 0 || promptMask[i - 1] !== '\\\\') {\n if (promptMask[i] === '>') {\n key = key.toUpperCase();\n break;\n }\n else if (promptMask[i] === '<') {\n key = key.toLowerCase();\n break;\n }\n else if (promptMask[i] === '|') {\n break;\n }\n }\n --i;\n }\n return key;\n}\n/**\n * To set updated values in the MaskedTextBox.\n *\n * @hidden\n */\nexport function setMaskValue(val) {\n if (this.mask && val !== undefined && (this.prevValue === undefined || this.prevValue !== val)) {\n this.maskKeyPress = true;\n setElementValue.call(this, this.promptMask);\n if (val !== '' && !(val === null && this.floatLabelType === 'Never' && this.placeholder)) {\n this.element.selectionStart = 0;\n this.element.selectionEnd = 0;\n }\n if (val !== null) {\n for (var i = 0; i < val.length; i++) {\n validateValue.call(this, val[i], false, null);\n }\n }\n var newVal = strippedValue.call(this, this.element);\n this.prevValue = newVal;\n this.value = newVal;\n triggerMaskChangeEvent.call(this, null, null);\n this.maskKeyPress = false;\n var labelElement = this.element.parentNode.querySelector('.e-float-text');\n if (this.element.value === this.promptMask && this.floatLabelType === 'Auto' && this.placeholder &&\n !isNullOrUndefined(labelElement) && labelElement.classList.contains(TOPLABEL) && !this.isFocus) {\n removeClass([labelElement], TOPLABEL);\n addClass([labelElement], BOTTOMLABEL);\n setElementValue.call(this, '');\n }\n }\n if (this.mask === null || this.mask === '' && this.value !== undefined) {\n setElementValue.call(this, this.value);\n }\n}\n/**\n * To set updated values in the input element.\n *\n * @hidden\n */\nexport function setElementValue(val, element) {\n if (!this.isFocus && this.floatLabelType === 'Auto' && this.placeholder && isNullOrUndefined(this.value)) {\n val = '';\n }\n var value = strippedValue.call(this, (element ? element : this.element), val);\n if (value === null || value === '') {\n Input.setValue(val, (element ? element : this.element), this.floatLabelType, false);\n if (this.showClearButton) {\n this.inputObj.clearButton.classList.add('e-clear-icon-hide');\n }\n }\n else {\n Input.setValue(val, (element ? element : this.element), this.floatLabelType, this.showClearButton);\n }\n}\n/**\n * Provide mask support to input textbox through utility method.\n *\n * @hidden\n */\nexport function maskInput(args) {\n var inputEle = getMaskInput(args);\n applyMask.call(inputEle);\n var val = strippedValue.call(this, this.element);\n this.prevValue = val;\n this.value = val;\n if (args.mask) {\n unwireEvents.call(inputEle);\n wireEvents.call(inputEle);\n }\n}\nfunction getMaskInput(args) {\n addClass([args.element], UTILMASK);\n var inputEle = {\n element: args.element,\n mask: args.mask,\n promptMask: '',\n hiddenMask: '',\n escapeMaskValue: '',\n promptChar: args.promptChar ? (args.promptChar.length > 1) ? args.promptChar = args.promptChar[0]\n : args.promptChar : '_',\n value: args.value ? args.value : null,\n regExpCollec: regularExpressions,\n customRegExpCollec: [],\n customCharacters: args.customCharacters,\n undoCollec: [],\n redoCollec: [],\n maskKeyPress: false,\n prevValue: ''\n };\n createMask.call(inputEle);\n return inputEle;\n}\n/**\n * Gets raw value of the textbox which has been masked through utility method.\n *\n * @hidden\n */\nexport function getVal(args) {\n return strippedValue.call(getUtilMaskEle(args), args.element);\n}\n/**\n * Gets masked value of the textbox which has been masked through utility method.\n *\n * @hidden\n */\nexport function getMaskedVal(args) {\n return unstrippedValue.call(getUtilMaskEle(args), args.element);\n}\nfunction getUtilMaskEle(args) {\n var inputEle;\n if (!isNullOrUndefined(args) && args.element.classList.contains(UTILMASK)) {\n inputEle = getMaskInput(args);\n }\n return inputEle;\n}\n/**\n * Arguments to perform undo and redo functionalities.\n *\n * @hidden\n */\nvar MaskUndo = /** @class */ (function () {\n function MaskUndo() {\n }\n return MaskUndo;\n}());\nexport { MaskUndo };\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nvar maskUndo = new MaskUndo();\n/* eslint-enable valid-jsdoc, jsdoc/require-jsdoc, jsdoc/require-returns, jsdoc/require-param */\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Event, Property, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit, getValue, setValue, addClass, detach } from '@syncfusion/ej2-base';\nimport { removeClass, Browser, closest } from '@syncfusion/ej2-base';\nimport { Input } from '../../input/input';\nimport { regularExpressions, createMask, applyMask, wireEvents, unwireEvents, unstrippedValue, strippedValue } from '../base/index';\nimport { setMaskValue, setElementValue, bindClearEvent } from '../base/index';\nvar ROOT = 'e-control-wrapper e-mask';\nvar INPUT = 'e-input';\nvar COMPONENT = 'e-maskedtextbox';\nvar CONTROL = 'e-control';\nvar MASKINPUT_FOCUS = 'e-input-focus';\nvar wrapperAttr = ['title', 'style', 'class'];\n/**\n * The MaskedTextBox allows the user to enter the valid input only based on the provided mask.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar MaskedTextBox = /** @class */ (function (_super) {\n __extends(MaskedTextBox, _super);\n /**\n *\n * @param {MaskedTextBoxModel} options - Specifies the MaskedTextBox model.\n * @param {string | HTMLElement | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function MaskedTextBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.initInputValue = '';\n _this.preventChange = false;\n _this.isClicked = false;\n _this.maskOptions = options;\n return _this;\n }\n /**\n * Gets the component name.\n *\n * @returns {string} Returns the component name.\n * @private\n */\n MaskedTextBox.prototype.getModuleName = function () {\n return 'maskedtextbox';\n };\n /**\n * Initializes the event handler\n *\n * @returns {void}\n * @private\n */\n MaskedTextBox.prototype.preRender = function () {\n this.promptMask = '';\n this.hiddenMask = '';\n this.escapeMaskValue = '';\n this.regExpCollec = regularExpressions;\n this.customRegExpCollec = [];\n this.maskedRegExp = [];\n this.undoCollec = [];\n this.redoCollec = [];\n this.changeEventArgs = {};\n this.focusEventArgs = {};\n this.blurEventArgs = {};\n this.maskKeyPress = false;\n this.isFocus = false;\n this.isInitial = false;\n this.isIosInvalid = false;\n var ejInstance = getValue('ej2_instances', this.element);\n this.cloneElement = this.element.cloneNode(true);\n removeClass([this.cloneElement], [CONTROL, COMPONENT, 'e-lib']);\n this.angularTagName = null;\n this.formElement = closest(this.element, 'form');\n if (this.element.tagName === 'EJS-MASKEDTEXTBOX') {\n this.angularTagName = this.element.tagName;\n var input = this.createElement('input');\n for (var i = 0; i < this.element.attributes.length; i++) {\n input.setAttribute(this.element.attributes[i].nodeName, this.element.attributes[i].nodeValue);\n input.innerHTML = this.element.innerHTML;\n }\n if (this.element.hasAttribute('id')) {\n this.element.removeAttribute('id');\n }\n if (this.element.hasAttribute('name')) {\n this.element.removeAttribute('name');\n }\n this.element.classList.remove('e-control', 'e-maskedtextbox');\n this.element.classList.add('e-mask-container');\n this.element.appendChild(input);\n this.element = input;\n setValue('ej2_instances', ejInstance, this.element);\n }\n this.updateHTMLAttrToElement();\n this.checkHtmlAttributes(false);\n if (this.formElement) {\n this.initInputValue = this.value;\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n * @returns {string}\n */\n MaskedTextBox.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Initializes the component rendering.\n *\n * @returns {void}\n * @private\n */\n MaskedTextBox.prototype.render = function () {\n if (this.element.tagName.toLowerCase() === 'input') {\n if (this.floatLabelType === 'Never') {\n addClass([this.element], INPUT);\n }\n this.createWrapper();\n this.updateHTMLAttrToWrapper();\n if (this.element.name === '') {\n this.element.setAttribute('name', this.element.id);\n }\n this.isInitial = true;\n this.resetMaskedTextBox();\n this.isInitial = false;\n this.setMaskPlaceholder(true, false);\n this.setWidth(this.width);\n this.preEleVal = this.element.value;\n if (!Browser.isDevice && (Browser.info.version === '11.0' || Browser.info.name === 'edge')) {\n this.element.blur();\n }\n if (Browser.isDevice && Browser.isIos) {\n this.element.blur();\n }\n if (this.element.getAttribute('value') || this.value) {\n this.element.setAttribute('value', this.element.value);\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n if (!this.element.hasAttribute('aria-labelledby') && !this.element.hasAttribute('placeholder')) {\n this.element.setAttribute('aria-label', 'maskedtextbox');\n }\n this.renderComplete();\n }\n };\n MaskedTextBox.prototype.updateHTMLAttrToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttr.indexOf(key) < 0) {\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n MaskedTextBox.prototype.updateCssClass = function (newClass, oldClass) {\n Input.setCssClass(this.getValidClassList(newClass), [this.inputObj.container], this.getValidClassList(oldClass));\n };\n MaskedTextBox.prototype.getValidClassList = function (maskClassName) {\n var result = maskClassName;\n if (!isNullOrUndefined(maskClassName) && maskClassName !== '') {\n result = (maskClassName.replace(/\\s+/g, ' ')).trim();\n }\n return result;\n };\n MaskedTextBox.prototype.updateHTMLAttrToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttr.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassValues = (this.htmlAttributes[\"\" + key].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValues !== '') {\n addClass([this.inputObj.container], updatedClassValues.split(' '));\n }\n }\n else if (key === 'style') {\n var maskStyle = this.inputObj.container.getAttribute(key);\n maskStyle = !isNullOrUndefined(maskStyle) ? (maskStyle + this.htmlAttributes[\"\" + key]) :\n this.htmlAttributes[\"\" + key];\n this.inputObj.container.setAttribute(key, maskStyle);\n }\n else {\n this.inputObj.container.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n };\n MaskedTextBox.prototype.resetMaskedTextBox = function () {\n this.promptMask = '';\n this.hiddenMask = '';\n this.escapeMaskValue = '';\n this.customRegExpCollec = [];\n this.undoCollec = [];\n this.redoCollec = [];\n if (this.promptChar.length > 1) {\n this.promptChar = this.promptChar[0];\n }\n createMask.call(this);\n applyMask.call(this);\n if (this.mask === null || this.mask === '' && this.value !== undefined) {\n setElementValue.call(this, this.value);\n }\n var val = strippedValue.call(this, this.element);\n this.prevValue = val;\n this.value = val;\n if (!this.isInitial) {\n unwireEvents.call(this);\n }\n wireEvents.call(this);\n };\n MaskedTextBox.prototype.setMaskPlaceholder = function (setVal, dynamicPlaceholder) {\n if (dynamicPlaceholder || this.placeholder) {\n Input.setPlaceholder(this.placeholder, this.element);\n if ((this.element.value === this.promptMask && setVal && this.floatLabelType !== 'Always') ||\n this.element.value === this.promptMask && this.floatLabelType === 'Never') {\n setElementValue.call(this, '');\n }\n }\n };\n MaskedTextBox.prototype.setWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.inputObj.container.style.width = formatUnit(width);\n this.element.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n var elementWidth = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n this.inputObj.container.style.width = elementWidth;\n this.element.style.width = elementWidth;\n }\n }\n };\n MaskedTextBox.prototype.checkHtmlAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes)\n : ['placeholder', 'disabled', 'value', 'readonly'];\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var key = attributes_1[_i];\n if (!isNullOrUndefined(this.element.getAttribute(key))) {\n switch (key) {\n case 'placeholder':\n if ((isNullOrUndefined(this.maskOptions) || (this.maskOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.element.placeholder }, !isDynamic);\n }\n break;\n case 'disabled':\n if ((isNullOrUndefined(this.maskOptions) || (this.maskOptions['enabled'] === undefined)) || isDynamic) {\n var isEnabled = this.element.getAttribute(key) === 'disabled' || this.element.getAttribute(key) === '' ||\n this.element.getAttribute(key) === 'true' ? false : true;\n this.setProperties({ enabled: isEnabled }, !isDynamic);\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.maskOptions) || (this.maskOptions['value'] === undefined)) || isDynamic) {\n this.setProperties({ value: this.element.value }, !isDynamic);\n }\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.maskOptions) || (this.maskOptions['readonly'] === undefined)) || isDynamic) {\n var isReadonly = this.element.getAttribute(key) === 'readonly' || this.element.getAttribute(key) === ''\n || this.element.getAttribute(key) === 'true' ? true : false;\n this.setProperties({ readonly: isReadonly }, !isDynamic);\n }\n break;\n }\n }\n }\n };\n MaskedTextBox.prototype.createWrapper = function () {\n var updatedCssClassValues = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValues = this.getValidClassList(this.cssClass);\n }\n this.inputObj = Input.createInput({\n element: this.element,\n floatLabelType: this.floatLabelType,\n properties: {\n enableRtl: this.enableRtl,\n cssClass: updatedCssClassValues,\n enabled: this.enabled,\n readonly: this.readonly,\n placeholder: this.placeholder,\n showClearButton: this.showClearButton\n }\n }, this.createElement);\n this.inputObj.container.setAttribute('class', ROOT + ' ' + this.inputObj.container.getAttribute('class'));\n };\n /**\n * Calls internally if any of the property value is changed.\n *\n * @param {MaskedTextBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {MaskedTextBoxModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @hidden\n */\n MaskedTextBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n setMaskValue.call(this, this.value);\n if (this.placeholder && !this.isFocus) {\n this.setMaskPlaceholder(false, false);\n }\n if (this.value === '' && oldProp.value != null) {\n this.element.selectionStart = 0;\n this.element.selectionEnd = 0;\n }\n break;\n case 'placeholder':\n this.setMaskPlaceholder(true, true);\n break;\n case 'width':\n this.setWidth(newProp.width);\n Input.calculateWidth(this.element, this.inputObj.container);\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enabled':\n Input.setEnabled(newProp.enabled, this.element, this.floatLabelType, this.inputObj.container);\n break;\n case 'readonly':\n Input.setReadonly(newProp.readonly, this.element);\n break;\n case 'enableRtl':\n Input.setEnableRtl(newProp.enableRtl, [this.inputObj.container]);\n break;\n case 'customCharacters':\n this.customCharacters = newProp.customCharacters;\n this.resetMaskedTextBox();\n break;\n case 'showClearButton':\n Input.setClearButton(newProp.showClearButton, this.element, this.inputObj, undefined, this.createElement);\n bindClearEvent.call(this);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputObj);\n Input.addFloating(this.element, this.floatLabelType, this.placeholder, this.createElement);\n break;\n case 'htmlAttributes':\n this.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n this.checkHtmlAttributes(true);\n break;\n case 'mask':\n {\n var strippedValue_1 = this.value;\n this.mask = newProp.mask;\n this.maskedRegExp = [];\n this.updateValue(strippedValue_1);\n }\n break;\n case 'promptChar': {\n if (newProp.promptChar.length > 1) {\n newProp.promptChar = newProp.promptChar[0];\n }\n if (newProp.promptChar) {\n this.promptChar = newProp.promptChar;\n }\n else {\n this.promptChar = '_';\n }\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n var value = this.element.value.replace(new RegExp('[' + oldProp.promptChar + ']', 'g'), this.promptChar);\n if (this.promptMask === this.element.value) {\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n value = this.promptMask.replace(new RegExp('[' + oldProp.promptChar + ']', 'g'), this.promptChar);\n }\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n this.promptMask = this.promptMask.replace(new RegExp('[' + oldProp.promptChar + ']', 'g'), this.promptChar);\n this.undoCollec = this.redoCollec = [];\n setElementValue.call(this, value);\n break;\n }\n }\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n };\n MaskedTextBox.prototype.updateValue = function (strippedVal) {\n this.resetMaskedTextBox();\n setMaskValue.call(this, strippedVal);\n };\n /**\n * Gets the value of the MaskedTextBox with the masked format.\n * By using `value` property, you can get the raw value of maskedtextbox without literals and prompt characters.\n *\n * @returns {string} Returns the value with the masked format.\n */\n MaskedTextBox.prototype.getMaskedValue = function () {\n return unstrippedValue.call(this, this.element);\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n MaskedTextBox.prototype.focusIn = function () {\n if (document.activeElement !== this.element && this.enabled) {\n this.isFocus = true;\n this.element.focus();\n addClass([this.inputObj.container], [MASKINPUT_FOCUS]);\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n MaskedTextBox.prototype.focusOut = function () {\n if (document.activeElement === this.element && this.enabled) {\n this.isFocus = false;\n this.element.blur();\n removeClass([this.inputObj.container], [MASKINPUT_FOCUS]);\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also it maintains the initial input element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n MaskedTextBox.prototype.destroy = function () {\n unwireEvents.call(this);\n if (this.showClearButton) {\n this.clearButton = document.getElementsByClassName('e-clear-icon')[0];\n }\n var attrArray = ['aria-labelledby', 'role', 'autocomplete', 'aria-readonly',\n 'aria-disabled', 'autocapitalize', 'spellcheck', 'aria-autocomplete', 'aria-live', 'aria-invalid'];\n for (var i = 0; i < attrArray.length; i++) {\n this.element.removeAttribute(attrArray[i]);\n }\n this.element.classList.remove('e-input');\n if (this.inputObj) {\n this.inputObj.container.insertAdjacentElement('afterend', this.element);\n detach(this.inputObj.container);\n }\n this.blurEventArgs = null;\n Input.destroy({\n element: this.element,\n floatLabelType: this.floatLabelType,\n properties: this.properties\n }, this.clearButton);\n this.changeEventArgs = null;\n this.inputObj = null;\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Property(null)\n ], MaskedTextBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], MaskedTextBox.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], MaskedTextBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property('Never')\n ], MaskedTextBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property({})\n ], MaskedTextBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(true)\n ], MaskedTextBox.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], MaskedTextBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(false)\n ], MaskedTextBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], MaskedTextBox.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], MaskedTextBox.prototype, \"mask\", void 0);\n __decorate([\n Property('_')\n ], MaskedTextBox.prototype, \"promptChar\", void 0);\n __decorate([\n Property(null)\n ], MaskedTextBox.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], MaskedTextBox.prototype, \"customCharacters\", void 0);\n __decorate([\n Event()\n ], MaskedTextBox.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], MaskedTextBox.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], MaskedTextBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], MaskedTextBox.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], MaskedTextBox.prototype, \"blur\", void 0);\n MaskedTextBox = __decorate([\n NotifyPropertyChanges\n ], MaskedTextBox);\n return MaskedTextBox;\n}(Component));\nexport { MaskedTextBox };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { MaskedTextBox } from '@syncfusion/ej2-inputs';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the React MaskedTextBox Component\n * ```html\n * \n * ```\n */\nvar MaskedTextBoxComponent = /** @class */ (function (_super) {\n __extends(MaskedTextBoxComponent, _super);\n function MaskedTextBoxComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.controlAttributes = ['name'];\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = true;\n _this.portals = [];\n return _this;\n }\n MaskedTextBoxComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement(React.Fragment, null, [].concat(React.createElement(\"input\", this.getDefaultAttributes()), this.portals));\n }\n };\n return MaskedTextBoxComponent;\n}(MaskedTextBox));\nexport { MaskedTextBoxComponent };\napplyMixins(MaskedTextBoxComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { ComboBox } from '@syncfusion/ej2-dropdowns';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n *The ComboBox component allows the user to type a value or choose an option from the list of predefined options.\n * ```\n * \n * ```\n */\nvar ComboBoxComponent = /** @class */ (function (_super) {\n __extends(ComboBoxComponent, _super);\n function ComboBoxComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = true;\n _this.statelessTemplateProps = [\"headerTemplate\", \"itemTemplate\"];\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n ComboBoxComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement(React.Fragment, null, [].concat(React.createElement(\"input\", this.getDefaultAttributes()), this.portals));\n }\n };\n return ComboBoxComponent;\n}(ComboBox));\nexport { ComboBoxComponent };\napplyMixins(ComboBoxComponent, [ComponentBase, React.Component]);\n","import React, { useEffect, useState } from \"react\";\r\nimport useTitle from \"../Hooks/useTitle\";\r\nimport Datagrid from \"../Components/Datagrid\";\r\nimport DatagridContext from \"../Context/datagridContext\";\r\nimport UnauthorizePage from \"./UnauthorizePage\";\r\nimport ForbiddenPage from \"./ForbiddenPage\";\r\nimport toolbar from \"../Config/toolbarConfig\";\r\nimport editSettings from \"../Config/editSettingsConfig\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { MaskedTextBoxComponent } from \"@syncfusion/ej2-react-inputs\";\r\nimport { ComboBoxComponent } from \"@syncfusion/ej2-react-dropdowns\";\r\n\r\nconst AccountsPage = () => {\r\n const [url, setUrl] = useState(\"\");\r\n const [from, setFrom] = useState(\"\");\r\n const [status, setStatus] = useState(null);\r\n const { t } = useTranslation();\r\n\r\n const baseUrl = process.env.REACT_APP_API_BASE_URL;\r\n\r\n useTitle(`${t(\"Accounts\")} | Netileti`);\r\n \r\n const fetchData = async () => {\r\n setUrl(`${baseUrl}/accounts`);\r\n setFrom(\"Accounts\");\r\n };\r\n\r\n useEffect(() => {\r\n fetchData();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n useEffect(() => {}, [status]);\r\n\r\n const editTemplate = (props) => {\r\n return (\r\n {\r\n if (props.onChange) {\r\n props.onChange({\r\n target: {\r\n name: \"phoneNumber\",\r\n value: e.value,\r\n },\r\n });\r\n }\r\n }}\r\n mask={\"+90 (000)-000-0000\"}\r\n value={props.phoneNumber || \"\"}\r\n floatLabelType=\"Always\"\r\n />\r\n );\r\n };\r\n\r\n const formatPhoneNumber = (value) => {\r\n if (!value) return \"\";\r\n const numericValue = value.replace(/[^0-9]/g, \"\");\r\n if (numericValue.length !== 12) return value;\r\n\r\n return `+${numericValue.slice(0, 2)} (${numericValue.slice(\r\n 2,\r\n 5\r\n )})-${numericValue.slice(5, 8)}-${numericValue.slice(8)}`;\r\n };\r\n\r\n const columns = [\r\n {\r\n field: \"id\",\r\n headerText: \"id\",\r\n allowEditing: false,\r\n isPrimaryKey: true,\r\n visible: false,\r\n },\r\n {\r\n field: \"firmName\",\r\n headerText: t(\"Firm Name\"),\r\n allowEditing: true,\r\n validationRules: { required: true, maxLength: 50 },\r\n },\r\n {\r\n field: \"firmVkNo\",\r\n headerText: t(\"Firm Vk No\"),\r\n allowEditing: true,\r\n validationRules: { number: true, maxLength: 50 },\r\n },\r\n {\r\n field: \"phoneNumber\",\r\n headerText: t(\"Phone Number\"),\r\n allowEditing: true,\r\n editTemplate: editTemplate,\r\n template: (props) => formatPhoneNumber(props.phoneNumber),\r\n },\r\n {\r\n field: \"isActive\",\r\n headerText: t(\"Active\"),\r\n allowEditing: false,\r\n type: \"Boolean\",\r\n isCheckbox: \"True\",\r\n textAlign: \"Center\",\r\n filterTemplate: () => (\r\n {\r\n const selectedValue = e.value;\r\n const gridElement = document.getElementById(\"adaptivebrowser\");\r\n if (gridElement) {\r\n const grid = gridElement.ej2_instances[0];\r\n\r\n if (grid) {\r\n if (selectedValue) {\r\n // Filtreyi uygula\r\n grid.filterByColumn(\"isActive\", \"equal\", selectedValue);\r\n } else {\r\n // Filtreyi temizle\r\n grid.removeFilteredColsByField(\"isActive\");\r\n }\r\n }\r\n }\r\n }}\r\n />\r\n ),\r\n },\r\n // {\r\n // field: \"isSelected\",\r\n // headerText: t(\"Selected\"),\r\n // allowEditing: false,\r\n // isCheckbox: \"True\",\r\n // textAlign: \"Center\",\r\n // },\r\n ];\r\n\r\n if (!url) {\r\n return
    ;\r\n }\r\n return (\r\n \r\n {status === 401 ? (\r\n \r\n ) : status === 403 ? (\r\n \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default AccountsPage;\r\n","import React, { useContext, useEffect, useState } from \"react\";\r\nimport useTitle from \"../Hooks/useTitle\";\r\nimport ToastContext from \"../Context/toastContext\";\r\nimport axiosClient from \"../Utils/axiosClient\";\r\nimport UnauthorizePage from \"./UnauthorizePage\";\r\nimport ForbiddenPage from \"./ForbiddenPage\";\r\nimport DatagridContext from \"../Context/datagridContext\";\r\nimport toolbar from \"../Config/toolbarConfig\";\r\nimport Datagrid from \"../Components/Datagrid\";\r\nimport editSettings from \"../Config/editSettingsConfig\";\r\nimport { ComboBoxComponent } from \"@syncfusion/ej2-react-dropdowns\";\r\nimport { ButtonComponent } from \"@syncfusion/ej2-react-buttons\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst CreditsPage = () => {\r\n const [url, setUrl] = useState(\"\");\r\n const [from, setFrom] = useState(\"\");\r\n const [usersData, setUsersData] = useState([]);\r\n const [status, setStatus] = useState(null);\r\n const [selectedUser, setSelectedUser] = useState(\"\");\r\n const [creditAmount, setCreditAmount] = useState(0);\r\n\r\n const { showToast } = useContext(ToastContext);\r\n const { t } = useTranslation();\r\n const baseUrl = process.env.REACT_APP_API_BASE_URL;\r\n const currentDate = new Date();\r\n\r\n useTitle(`${t(\"Credits\")} | Netileti`);\r\n\r\n //for the users data\r\n const fetchUsers = async () => {\r\n try {\r\n const response = await axiosClient.get(\"/Users\");\r\n\r\n if (response.status === 200) {\r\n setUsersData(response.data.result);\r\n } else {\r\n setStatus(response.status);\r\n showToast(\r\n `${t(\"Error\")}: ${response.statusText}`,\r\n \"Http status :\",\r\n response.status\r\n );\r\n }\r\n } catch (error) {\r\n setStatus(error.response?.status || 500);\r\n showToast(\r\n `${t(\"Failed to fetch data. Please try again.\")}`,\r\n `${t(\"Error\")}`\r\n );\r\n }\r\n };\r\n\r\n //for the credits data\r\n const fetchCredits = async () => {\r\n setUrl(`${baseUrl}/credits`);\r\n setFrom(\"Credits\");\r\n };\r\n\r\n useEffect(() => {\r\n fetchUsers();\r\n fetchCredits();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n useEffect(() => {\r\n setStatus(status);\r\n }, [status]);\r\n\r\n const onUserChange = (event) => {\r\n const selectedItem = event.itemData;\r\n\r\n setSelectedUser(selectedItem ? selectedItem.id : null);\r\n };\r\n\r\n const refreshGrid = () => {\r\n const gridElement = document.getElementById(\"adaptivebrowser\");\r\n if (gridElement) {\r\n const grid = gridElement.ej2_instances[0];\r\n grid.refresh();\r\n }\r\n };\r\n\r\n const onSubmit = async (event) => {\r\n event.preventDefault();\r\n\r\n if (!selectedUser) {\r\n showToast(`${t(\"Please select a user\")}.`, `${t(\"Error\")}`);\r\n return;\r\n }\r\n\r\n if (creditAmount <= 0) {\r\n showToast(`${t(\"Please enter valid credit amount\")}.`, `${t(\"Error\")}`);\r\n return;\r\n }\r\n\r\n const payload = {\r\n userId: selectedUser,\r\n creditAmount,\r\n timestamp: Math.floor(currentDate.getTime() / 1000).toString(),\r\n };\r\n\r\n try {\r\n const response = await axiosClient.post(\"/credits\", payload);\r\n\r\n if (response.status === 200) {\r\n refreshGrid();\r\n showToast(\r\n `${t(\"Credit\")} ${t(\"Added successfully!\")}`,\r\n `${t(\"Success\")}`\r\n );\r\n setSelectedUser(null);\r\n setCreditAmount(0);\r\n } else {\r\n showToast(\r\n `${t(\"Error\")}: ${response.statusText}, ${t(\"Status Code\")}: ${\r\n response.status\r\n }`,\r\n `${t(\"Error\")}`\r\n );\r\n }\r\n } catch (error) {\r\n showToast(`${t(\"Failed to add\")} : ${error.message}`, `${t(\"Error\")}`);\r\n }\r\n };\r\n\r\n const columns = [\r\n {\r\n field: \"id\",\r\n headerText: \"id\",\r\n allowEditing: false,\r\n isPrimaryKey: true,\r\n visible: false,\r\n },\r\n {\r\n field: \"userId\",\r\n headerText: \"userId\",\r\n allowEditing: false,\r\n isPrimaryKey: true,\r\n visible: false,\r\n },\r\n {\r\n field: \"userName\",\r\n headerText: t(\"User Name\"),\r\n allowEditing: false,\r\n },\r\n {\r\n field: \"creditAmount\",\r\n headerText: t(\"Credit\"),\r\n allowEditing: true,\r\n },\r\n {\r\n field: \"timestamp\",\r\n headerText: t(\"Time\"),\r\n allowEditing: false,\r\n },\r\n ];\r\n \r\n if (!url) {\r\n return
    ;\r\n }\r\n return (\r\n \r\n
    \r\n
    \r\n
    \r\n \r\n setCreditAmount(e.target.value)}\r\n required\r\n />\r\n \r\n {t(\"Add Credit\")}\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n {status === 401 ? (\r\n \r\n ) : status === 403 ? (\r\n \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default CreditsPage;\r\n","import React, { useContext, useEffect, useState } from \"react\";\r\nimport useTitle from \"../Hooks/useTitle\";\r\nimport axiosClient from \"../Utils/axiosClient\";\r\nimport UnauthorizePage from \"./UnauthorizePage\";\r\nimport ForbiddenPage from \"./ForbiddenPage\";\r\nimport DatagridContext from \"../Context/datagridContext\";\r\nimport Datagrid from \"../Components/Datagrid\";\r\nimport ToastContext from \"../Context/toastContext\";\r\nimport toolbar from \"../Config/toolbarConfig\";\r\nimport editSettings from \"../Config/editSettingsConfig\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { ComboBoxComponent } from \"@syncfusion/ej2-react-dropdowns\";\r\n\r\nconst CreditPage = () => {\r\n const [creditSetting, setCreditSetting] = useState(null);\r\n const [status, setStatus] = useState(null);\r\n const [from, setFrom] = useState(\"\");\r\n const [url, setUrl] = useState(\"\");\r\n\r\n const { t } = useTranslation();\r\n const { showToast } = useContext(ToastContext);\r\n const baseUrl = process.env.REACT_APP_API_BASE_URL;\r\n\r\n useTitle(`${t(\"Credit Settings\")} | Netileti`);\r\n\r\n //for the credit settings data\r\n const getData = async () => {\r\n setUrl(`${baseUrl}/creditsettings`);\r\n setFrom(\"CreditSettings\");\r\n };\r\n\r\n //For the latest credit amount\r\n const fetchData = async () => {\r\n try {\r\n const response = await axiosClient.get(\r\n `${baseUrl}/creditsettings/GetLatest`\r\n );\r\n if (response.status === 200) {\r\n setStatus(null);\r\n const data = await response.data;\r\n if (data) setCreditSetting(data);\r\n else setCreditSetting([]);\r\n } else {\r\n setStatus(response.status);\r\n showToast(\r\n `${t(\"Error\")}: ${response.statusText}`,\r\n \"Http status :\",\r\n response.status\r\n );\r\n }\r\n } catch (error) {\r\n setStatus(error.response?.status || 500);\r\n showToast(\r\n `${t(\"Failed to fetch data. Please try again.\")}`,\r\n `${t(\"Error\")}`\r\n );\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n fetchData();\r\n getData();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n const types = [\r\n { text: t(\"Whatsapp_Kredisi\"), value: 0 },\r\n { text: t(\"Sms_Kredisi\"), value: 1 },\r\n { text: t(\"Diğer\"), value: 2 },\r\n ];\r\n const typeParams = {\r\n params: {\r\n fields: { text: \"text\", value: \"value\" },\r\n sortOrder: \"none\",\r\n },\r\n };\r\n\r\n const columns = [\r\n {\r\n field: \"id\",\r\n headerText: \"id\",\r\n allowEditing: false,\r\n isPrimaryKey: true,\r\n visible: false,\r\n },\r\n {\r\n field: \"type\",\r\n headerText: t(\"Type\"),\r\n allowEditing: true,\r\n editType: \"dropdownedit\",\r\n edit: typeParams,\r\n template: (props) => {\r\n console.log(\"types[props.type].text\");\r\n return types[props.type].text || t(\"Unknown\");\r\n },\r\n filterTemplate: () => (\r\n {\r\n const selectedValue = e.value;\r\n const gridElement = document.getElementById(\"adaptivebrowser\");\r\n if (gridElement) {\r\n const grid = gridElement.ej2_instances[0];\r\n\r\n if (grid) {\r\n if (selectedValue) {\r\n grid.filterByColumn(\"type\", \"equal\", selectedValue);\r\n } else {\r\n grid.removeFilteredColsByField(\"type\");\r\n }\r\n }\r\n }\r\n }}\r\n />\r\n ),\r\n },\r\n {\r\n field: \"description\",\r\n headerText: t(\"Description\"),\r\n allowEditing: true,\r\n validationRules: { maxLength: 50 },\r\n },\r\n {\r\n field: \"amount\",\r\n headerText: t(\"Amount\"),\r\n allowEditing: true,\r\n validationRules: { required: true, number: true },\r\n },\r\n {\r\n field: \"beginDate\",\r\n headerText: t(\"Begin Date\"),\r\n allowEditing: true,\r\n editType: \"datepickeredit\",\r\n format: { type: \"date\", format: \"dd/MM/yyyy\" },\r\n edit: {\r\n params: {\r\n format: \"yyyy-MM-dd\",\r\n },\r\n },\r\n type: \"date\",\r\n },\r\n ];\r\n\r\n if (!creditSetting) {\r\n return
    ;\r\n }\r\n return (\r\n \r\n {/*
    */}\r\n {/*
    \r\n

    {t(\"Credit Settings\")}

    \r\n
    */}\r\n {/*
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {creditSetting.type}\r\n
    \r\n
    \r\n
    \r\n
    \r\n {creditSetting.beginDate} - {t(\"Now\")},{\" \"}\r\n \r\n {creditSetting.amount} {t(\"credit(s)\")}\r\n {\" \"}\r\n
    \r\n
    \r\n
    \r\n
    */}\r\n {/*
    */}\r\n {status === 401 ? (\r\n \r\n ) : status === 403 ? (\r\n \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n
    \r\n //
    \r\n //
    \r\n );\r\n};\r\n\r\nexport default CreditPage;\r\n","// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nvar getRandomValues;\nvar rnds8 = new Uint8Array(16);\nexport default function rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation. Also,\n // find the complete implementation of crypto (msCrypto) on IE11.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto) || typeof msCrypto !== 'undefined' && typeof msCrypto.getRandomValues === 'function' && msCrypto.getRandomValues.bind(msCrypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","export default /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;","import REGEX from './regex.js';\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && REGEX.test(uuid);\n}\n\nexport default validate;","import validate from './validate.js';\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\n\nvar byteToHex = [];\n\nfor (var i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n var uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nexport default stringify;","import rng from './rng.js';\nimport stringify from './stringify.js';\n\nfunction v4(options, buf, offset) {\n options = options || {};\n var rnds = options.random || (options.rng || rng)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (var i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return stringify(rnds);\n}\n\nexport default v4;","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, NotifyPropertyChanges, isNullOrUndefined, setValue, getValue } from '@syncfusion/ej2-base';\nimport { detach, getUniqueID, Event, EventHandler, Internationalization, L10n, addClass, removeClass, closest, formatUnit } from '@syncfusion/ej2-base';\nimport { Input, TEXTBOX_FOCUS } from '../input/input';\nvar HIDE_CLEAR = 'e-clear-icon-hide';\nvar AUTO_WIDTH = 'e-auto-width';\nvar RESIZE_X = 'e-resize-x';\nvar RESIZE_Y = 'e-resize-y';\nvar RESIZE_XY = 'e-resize-xy';\nvar RESIZE_NONE = 'e-resize-none';\nvar TextArea = /** @class */ (function (_super) {\n __extends(TextArea, _super);\n function TextArea(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.previousValue = null;\n _this.isForm = false;\n _this.inputPreviousValue = null;\n _this.textareaOptions = options;\n return _this;\n }\n /**\n * Calls internally if any of the property value is changed.\n *\n * @param {TextAreaModel} newProp - Returns the dynamic property value of the component.\n * @param {TextAreaModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n TextArea.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'floatLabelType':\n Input.removeFloating(this.textareaWrapper);\n Input.addFloating(this.element, this.floatLabelType, this.placeholder);\n if (this.floatLabelType === 'Never') {\n this.element.removeAttribute('aria-labelledby');\n }\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.element, this.floatLabelType, this.textareaWrapper.container);\n this.bindClearEvent();\n if (!this.enabled && this.resizeMode !== 'None') {\n this.element.classList.remove(this.getCurrentResizeClass(this.resizeMode));\n this.element.classList.add(RESIZE_NONE);\n }\n else {\n this.element.classList.add(this.getCurrentResizeClass(this.resizeMode));\n }\n break;\n case 'width':\n if (this.resizeMode !== 'None' && this.resizeMode !== 'Vertical') {\n this.setElementWidth(newProp.width);\n this.textareaWrapper.container.classList.add(AUTO_WIDTH);\n }\n else {\n if (this.textareaWrapper.container.classList.contains(AUTO_WIDTH)) {\n this.textareaWrapper.container.classList.remove(AUTO_WIDTH);\n }\n Input.setWidth(newProp.width, this.textareaWrapper.container);\n }\n break;\n case 'value':\n {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n if (!Input.isBlank(this.value)) {\n this.value = this.value.toString();\n }\n this.isProtectedOnChange = prevOnChange;\n Input.setValue(this.value, this.element, this.floatLabelType, this.showClearButton);\n this.inputPreviousValue = this.element.value;\n /* istanbul ignore next */\n if ((this.isAngular || this.isVue) && this.preventChange === true) {\n this.previousValue = this.isAngular ? this.value : this.previousValue;\n this.preventChange = false;\n }\n else if (isNullOrUndefined(this.isAngular) || !this.isAngular\n || (this.isAngular && !this.preventChange) || (this.isAngular && isNullOrUndefined(this.preventChange))) {\n this.raiseChangeEvent();\n }\n }\n break;\n case 'htmlAttributes':\n {\n this.updateHTMLAttributesToElement();\n this.updateHTMLAttributesToWrapper();\n this.checkAttributes(true);\n Input.validateInputType(this.textareaWrapper.container, this.element);\n }\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.element);\n if (this.readonly) {\n this.element.setAttribute('aria-readonly', 'true');\n }\n else {\n this.element.removeAttribute('aria-readonly');\n }\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.element, this.textareaWrapper);\n this.bindClearEvent();\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.textareaWrapper.container]);\n break;\n case 'placeholder':\n Input.setPlaceholder(this.placeholder, this.element);\n Input.calculateWidth(this.element, this.textareaWrapper.container);\n break;\n case 'cssClass':\n Input.updateCssClass(newProp.cssClass, oldProp.cssClass, this.textareaWrapper.container);\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.placeholder, this.element);\n break;\n case 'rows':\n if (this.rows) {\n this.element.setAttribute('rows', this.rows.toString());\n }\n break;\n case 'cols':\n if (this.cols) {\n this.element.setAttribute('cols', this.cols.toString());\n if (this.width == null) {\n this.textareaWrapper.container.classList.add(AUTO_WIDTH);\n }\n }\n break;\n case 'maxLength':\n if (this.maxLength) {\n this.element.setAttribute('maxlength', this.maxLength.toString());\n }\n break;\n case 'resizeMode':\n if (this.enabled) {\n if (this.element.classList.contains(this.getCurrentResizeClass(oldProp.resizeMode))) {\n this.element.classList.remove(this.getCurrentResizeClass(oldProp.resizeMode));\n }\n this.element.classList.add(this.getCurrentResizeClass(this.resizeMode));\n if (this.element.style.width && (this.resizeMode === 'None' || this.resizeMode === 'Vertical')) {\n Input.setWidth(this.element.style.width, this.textareaWrapper.container);\n }\n else {\n var currentWidth = this.element.offsetWidth;\n this.element.style.width = currentWidth + 'px';\n if (this.textareaWrapper.container.style.width) {\n this.textareaWrapper.container.style.width = '';\n }\n }\n this.setWrapperWidth();\n }\n break;\n }\n }\n };\n TextArea.prototype.preRender = function () {\n this.formElement = closest(this.element, 'form');\n if (!isNullOrUndefined(this.formElement)) {\n this.isForm = true;\n }\n /* istanbul ignore next */\n if (this.element.tagName === 'EJS-TEXTAREA') {\n var ejInstance = getValue('ej2_instances', this.element);\n var inputElement = this.createElement('textarea');\n var index = 0;\n for (index; index < this.element.attributes.length; index++) {\n var attributeName = this.element.attributes[index].nodeName;\n if (attributeName !== 'id' && attributeName !== 'class') {\n inputElement.setAttribute(attributeName, this.element.attributes[index].nodeValue);\n inputElement.innerHTML = this.element.innerHTML;\n if (attributeName === 'name') {\n this.element.removeAttribute('name');\n }\n }\n else if (attributeName === 'class') {\n inputElement.setAttribute(attributeName, this.element.className.split(' ').filter(function (item) { return item.indexOf('ng-') !== 0; }).join(' '));\n }\n }\n this.element.appendChild(inputElement);\n this.element = inputElement;\n setValue('ej2_instances', ejInstance, this.element);\n }\n this.updateHTMLAttributesToElement();\n this.checkAttributes(false);\n if ((isNullOrUndefined(this.textareaOptions) || (this.textareaOptions['value'] === undefined)) && this.element.value !== '') {\n this.setProperties({ value: this.element.value }, true);\n }\n this.globalize = new Internationalization(this.locale);\n var localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('textarea', localeText, this.locale);\n if (this.l10n.getConstant('placeholder') !== '') {\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n }\n if (!this.element.hasAttribute('id')) {\n this.element.setAttribute('id', getUniqueID('textbox'));\n }\n if (!this.element.hasAttribute('name')) {\n this.element.setAttribute('name', this.element.getAttribute('id'));\n }\n if (this.rows) {\n this.element.setAttribute('rows', this.rows.toString());\n }\n if (this.cols) {\n this.element.setAttribute('cols', this.cols.toString());\n }\n if (this.maxLength) {\n this.element.setAttribute('maxlength', this.maxLength.toString());\n }\n if (!this.element.style.resize && this.enabled) {\n this.element.classList.add(this.getCurrentResizeClass(this.resizeMode));\n }\n if (this.enabled) {\n this.element.setAttribute('aria-multiline', 'true');\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n TextArea.prototype.render = function () {\n var updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = Input.getInputValidClassList(this.cssClass);\n }\n this.textareaWrapper = Input.createInput({\n element: this.element,\n floatLabelType: this.floatLabelType,\n properties: {\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n cssClass: updatedCssClassValue,\n readonly: this.readonly,\n placeholder: this.placeholder,\n showClearButton: this.showClearButton\n }\n });\n this.updateHTMLAttributesToWrapper();\n this.wireEvents();\n if (!isNullOrUndefined(this.value)) {\n Input.setValue(this.value, this.element, this.floatLabelType, this.showClearButton);\n }\n if (!isNullOrUndefined(this.value)) {\n this.initialValue = this.value;\n if (!this.isAngular) {\n this.element.setAttribute('value', this.initialValue);\n }\n }\n this.previousValue = this.value;\n this.inputPreviousValue = this.value;\n this.element.defaultValue = this.element.value;\n Input.setWidth(this.width, this.textareaWrapper.container);\n this.setWrapperWidth();\n this.renderComplete();\n };\n TextArea.prototype.getModuleName = function () {\n return 'textarea';\n };\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n * @returns {string} - Returns the string value.\n */\n TextArea.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n TextArea.prototype.checkAttributes = function (isDynamic) {\n var attrs = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['placeholder', 'disabled', 'value', 'readonly'];\n for (var _i = 0, attrs_1 = attrs; _i < attrs_1.length; _i++) {\n var key = attrs_1[_i];\n if (!isNullOrUndefined(this.element.getAttribute(key))) {\n switch (key) {\n case 'disabled':\n if ((isNullOrUndefined(this.textareaOptions) || (this.textareaOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.element.getAttribute(key) === 'disabled' || this.element.getAttribute(key) === '' ||\n this.element.getAttribute(key) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.textareaOptions) || (this.textareaOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.element.getAttribute(key) === 'readonly' || this.element.getAttribute(key) === ''\n || this.element.getAttribute(key) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.textareaOptions) || (this.textareaOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.element.placeholder }, !isDynamic);\n }\n break;\n case 'value':\n if (((isNullOrUndefined(this.textareaOptions) || (this.textareaOptions['value'] === undefined)) || isDynamic) && this.element.value !== '') {\n this.setProperties({ value: this.element.value }, !isDynamic);\n }\n break;\n }\n }\n }\n };\n TextArea.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'blur', this.focusOutHandler, this);\n EventHandler.add(this.element, 'keydown', this.keydownHandler, this);\n EventHandler.add(this.element, 'input', this.inputHandler, this);\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n if (this.isForm) {\n EventHandler.add(this.formElement, 'reset', this.resetForm, this);\n }\n this.bindClearEvent();\n };\n TextArea.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'blur', this.focusOutHandler);\n EventHandler.remove(this.element, 'keydown', this.keydownHandler);\n EventHandler.remove(this.element, 'input', this.inputHandler);\n EventHandler.remove(this.element, 'change', this.changeHandler);\n if (this.isForm) {\n EventHandler.remove(this.formElement, 'reset', this.resetForm);\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also, it maintains the initial TextArea element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n TextArea.prototype.destroy = function () {\n this.unWireEvents();\n if (this.showClearButton) {\n this.clearButton = document.getElementsByClassName('e-clear-icon')[0];\n }\n this.element.value = this.element.defaultValue;\n this.element.classList.remove('e-input', RESIZE_X, RESIZE_Y, RESIZE_XY, RESIZE_NONE);\n this.removeAttributes(['aria-disabled', 'aria-readonly', 'aria-labelledby', 'aria-multiline']);\n if (!isNullOrUndefined(this.textareaWrapper)) {\n this.textareaWrapper.container.insertAdjacentElement('afterend', this.element);\n detach(this.textareaWrapper.container);\n }\n this.textareaWrapper = null;\n Input.destroy({\n element: this.element,\n floatLabelType: this.floatLabelType,\n properties: this.properties\n }, this.clearButton);\n this.formElement = null;\n _super.prototype.destroy.call(this);\n };\n TextArea.prototype.focusHandler = function (args) {\n var eventArgs = {\n container: this.textareaWrapper.container,\n event: args,\n value: this.value\n };\n this.trigger('focus', eventArgs);\n };\n TextArea.prototype.focusOutHandler = function (args) {\n if (!(this.previousValue === null && this.value === null) &&\n (this.previousValue !== this.value)) {\n this.raiseChangeEvent(args, true);\n }\n var eventArgs = {\n container: this.textareaWrapper.container,\n event: args,\n value: this.value\n };\n this.trigger('blur', eventArgs);\n };\n TextArea.prototype.keydownHandler = function (args) {\n if ((args.keyCode === 13 || args.keyCode === 9) && !((this.previousValue === null || this.previousValue === '') && (this.value === null || this.value === '') && this.element.value === '')) {\n this.setProperties({ value: this.element.value }, true);\n }\n };\n TextArea.prototype.inputHandler = function (args) {\n var textareaObj = null || this;\n var eventArgs = {\n event: args,\n value: this.element.value,\n previousValue: this.inputPreviousValue,\n container: this.textareaWrapper.container\n };\n this.inputPreviousValue = this.element.value;\n /* istanbul ignore next */\n if (this.isAngular) {\n textareaObj.localChange({ value: this.element.value });\n this.preventChange = true;\n }\n if (this.isVue) {\n this.preventChange = true;\n }\n this.trigger('input', eventArgs);\n args.stopPropagation();\n };\n TextArea.prototype.changeHandler = function (args) {\n this.setProperties({ value: this.element.value }, true);\n if (this.previousValue !== this.value) {\n this.raiseChangeEvent(args, true);\n }\n args.stopPropagation();\n };\n TextArea.prototype.raiseChangeEvent = function (event, interaction) {\n var eventArgs = {\n event: event,\n value: this.value,\n previousValue: this.previousValue,\n container: this.textareaWrapper.container,\n isInteraction: interaction ? interaction : false,\n isInteracted: interaction ? interaction : false\n };\n this.preventChange = false;\n this.trigger('change', eventArgs);\n this.previousValue = this.value;\n };\n TextArea.prototype.updateHTMLAttributesToWrapper = function () {\n Input.updateHTMLAttributesToWrapper(this.htmlAttributes, this.textareaWrapper.container);\n };\n TextArea.prototype.updateHTMLAttributesToElement = function () {\n Input.updateHTMLAttributesToElement(this.htmlAttributes, this.element);\n };\n TextArea.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\n if (this.enabled) {\n EventHandler.add(this.textareaWrapper.clearButton, 'mousedown touchstart', this.resetInputHandler, this);\n }\n else {\n EventHandler.remove(this.textareaWrapper.clearButton, 'mousedown touchstart', this.resetInputHandler);\n }\n }\n };\n TextArea.prototype.resetInputHandler = function (event) {\n event.preventDefault();\n if (!(this.textareaWrapper.clearButton.classList.contains(HIDE_CLEAR)) || this.textareaWrapper.container.classList.contains('e-static-clear')) {\n Input.setValue('', this.element, this.floatLabelType, this.showClearButton);\n this.setProperties({ value: this.element.value }, true);\n }\n var eventArgs = {\n event: event,\n value: this.element.value,\n previousValue: this.inputPreviousValue,\n container: this.textareaWrapper.container\n };\n this.trigger('input', eventArgs);\n this.inputPreviousValue = this.element.value;\n this.raiseChangeEvent(event, true);\n if (closest(this.element, 'form')) {\n var element = this.element;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n /**\n * Adding the multiple attributes as key-value pair to the TextArea element.\n *\n * @param {string} attributes - Specifies the attributes to be add to TextArea element.\n * @returns {void}\n */\n TextArea.prototype.addAttributes = function (attributes) {\n for (var _i = 0, _a = Object.keys(attributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (key === 'disabled') {\n this.setProperties({ enabled: false }, true);\n Input.setEnabled(this.enabled, this.element, this.floatLabelType, this.textareaWrapper.container);\n }\n else if (key === 'readonly') {\n this.setProperties({ readonly: true }, true);\n Input.setReadonly(this.readonly, this.element);\n }\n else if (key === 'class') {\n this.element.classList.add(attributes[\"\" + key]);\n }\n else if (key === 'placeholder') {\n this.setProperties({ placeholder: attributes[\"\" + key] }, true);\n Input.setPlaceholder(this.placeholder, this.element);\n }\n else {\n this.element.setAttribute(key, attributes[\"\" + key]);\n }\n }\n };\n /**\n * Removing the multiple attributes as key-value pair to the TextArea element.\n *\n * @param { string[] } attributes - Specifies the attributes name to be removed from TextArea element.\n * @returns {void}\n */\n TextArea.prototype.removeAttributes = function (attributes) {\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var key = attributes_1[_i];\n if (key === 'disabled') {\n this.setProperties({ enabled: true }, true);\n Input.setEnabled(this.enabled, this.element, this.floatLabelType, this.textareaWrapper.container);\n }\n else if (key === 'readonly') {\n this.setProperties({ readonly: false }, true);\n Input.setReadonly(this.readonly, this.element);\n }\n else if (key === 'placeholder') {\n this.setProperties({ placeholder: null }, true);\n Input.setPlaceholder(this.placeholder, this.element);\n }\n else {\n this.element.removeAttribute(key);\n }\n }\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n TextArea.prototype.focusIn = function () {\n if (document.activeElement !== this.element && this.enabled) {\n this.element.focus();\n if (this.textareaWrapper.container.classList.contains('e-input-group')\n || this.textareaWrapper.container.classList.contains('e-outline')\n || this.textareaWrapper.container.classList.contains('e-filled')) {\n addClass([this.textareaWrapper.container], [TEXTBOX_FOCUS]);\n }\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n TextArea.prototype.focusOut = function () {\n if (document.activeElement === this.element && this.enabled) {\n this.element.blur();\n if (this.textareaWrapper.container.classList.contains('e-input-group')\n || this.textareaWrapper.container.classList.contains('e-outline')\n || this.textareaWrapper.container.classList.contains('e-filled')) {\n removeClass([this.textareaWrapper.container], [TEXTBOX_FOCUS]);\n }\n }\n };\n /**\n * Sets up the width for the textarea wrapper.\n *\n * @returns {void}\n */\n TextArea.prototype.setWrapperWidth = function () {\n if (this.enabled && ((this.resizeMode !== 'None' && this.resizeMode !== 'Vertical') || (this.cols || this.element.getAttribute('cols')))) {\n if (this.resizeMode !== 'None' && this.resizeMode !== 'Vertical') {\n if (this.textareaWrapper.container.style.width) {\n this.setElementWidth(this.textareaWrapper.container.style.width);\n this.textareaWrapper.container.style.width = '';\n this.textareaWrapper.container.classList.add(AUTO_WIDTH);\n }\n }\n this.textareaWrapper.container.classList.add(AUTO_WIDTH);\n }\n else {\n if (this.textareaWrapper.container.classList.contains(AUTO_WIDTH)) {\n this.textareaWrapper.container.classList.remove(AUTO_WIDTH);\n }\n }\n };\n TextArea.prototype.resetForm = function () {\n if (this.isAngular) {\n this.resetValue('');\n }\n else {\n this.resetValue(this.initialValue);\n }\n if (!isNullOrUndefined(this.textareaWrapper)) {\n var label = this.textareaWrapper.container.querySelector('.e-float-text');\n if (!isNullOrUndefined(label) && this.floatLabelType !== 'Always') {\n if ((isNullOrUndefined(this.initialValue) || this.initialValue === '')) {\n label.classList.add('e-label-bottom');\n label.classList.remove('e-label-top');\n }\n else if (this.initialValue !== '') {\n label.classList.add('e-label-top');\n label.classList.remove('e-label-bottom');\n }\n }\n }\n };\n TextArea.prototype.resetValue = function (value) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.value = value;\n if (value == null && this.textareaWrapper.container.classList.contains('e-valid-input')) {\n this.textareaWrapper.container.classList.remove('e-valid-input');\n }\n this.isProtectedOnChange = prevOnChange;\n };\n TextArea.prototype.setElementWidth = function (width) {\n if (typeof width === 'number') {\n this.element.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.element.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n };\n TextArea.prototype.getCurrentResizeClass = function (resizeMode) {\n return resizeMode === 'None' ? RESIZE_NONE : (resizeMode === 'Both' ? RESIZE_XY : resizeMode === 'Horizontal' ? RESIZE_X : RESIZE_Y);\n };\n __decorate([\n Property(false)\n ], TextArea.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], TextArea.prototype, \"value\", void 0);\n __decorate([\n Property('Never')\n ], TextArea.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property('')\n ], TextArea.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], TextArea.prototype, \"placeholder\", void 0);\n __decorate([\n Property({})\n ], TextArea.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(true)\n ], TextArea.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], TextArea.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], TextArea.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], TextArea.prototype, \"width\", void 0);\n __decorate([\n Property('Both')\n ], TextArea.prototype, \"resizeMode\", void 0);\n __decorate([\n Property(null)\n ], TextArea.prototype, \"maxLength\", void 0);\n __decorate([\n Property(null)\n ], TextArea.prototype, \"cols\", void 0);\n __decorate([\n Property(null)\n ], TextArea.prototype, \"rows\", void 0);\n __decorate([\n Event()\n ], TextArea.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], TextArea.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], TextArea.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], TextArea.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], TextArea.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], TextArea.prototype, \"input\", void 0);\n TextArea = __decorate([\n NotifyPropertyChanges\n ], TextArea);\n return TextArea;\n}(Component));\nexport { TextArea };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { TextArea } from '@syncfusion/ej2-inputs';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the React TextArea Component\n * ```html\n * \n * ```\n */\nvar TextAreaComponent = /** @class */ (function (_super) {\n __extends(TextAreaComponent, _super);\n function TextAreaComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = true;\n _this.portals = [];\n return _this;\n }\n TextAreaComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement(React.Fragment, null, [].concat(React.createElement(\"textarea\", this.getDefaultAttributes()), this.portals));\n }\n };\n return TextAreaComponent;\n}(TextArea));\nexport { TextAreaComponent };\napplyMixins(TextAreaComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the React Tooltip component that displays a piece of information about the target element on mouse hover.\n * ```html\n * Show Tooltip\n * ```\n */\nvar TooltipComponent = /** @class */ (function (_super) {\n __extends(TooltipComponent, _super);\n function TooltipComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n TooltipComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement('div', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return TooltipComponent;\n}(Tooltip));\nexport { TooltipComponent };\napplyMixins(TooltipComponent, [ComponentBase, React.Component]);\n","import React, { useEffect, useState } from \"react\";\r\nimport {\r\n DialogComponent,\r\n TooltipComponent,\r\n} from \"@syncfusion/ej2-react-popups\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport Datagrid from \"./Datagrid\";\r\nimport DatagridContext from \"../Context/datagridContext\";\r\nimport { MaskedTextBoxComponent } from \"@syncfusion/ej2-react-inputs\";\r\n\r\nconst ContactModal = ({ isOpen, onClose, onSelectContact }) => {\r\n const [url, setUrl] = useState(\"\");\r\n const [from, setFrom] = useState(\"\");\r\n const [selectedContacts, setSelectedContacts] = useState([]);\r\n const { t } = useTranslation();\r\n const baseUrl = process.env.REACT_APP_API_BASE_URL;\r\n\r\n const fetchData = async () => {\r\n setUrl(`${baseUrl}/contacts`);\r\n setFrom(\"Contacts-Modal\");\r\n };\r\n\r\n useEffect(() => {\r\n fetchData();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n const handleSelectionChange = (selectedRecords) => {\r\n setSelectedContacts(selectedRecords);\r\n };\r\n\r\n const handleClose = () => {\r\n onSelectContact(selectedContacts);\r\n onClose();\r\n };\r\n\r\n const editTemplate = (props) => {\r\n return (\r\n {\r\n if (props.onChange) {\r\n props.onChange({\r\n target: {\r\n name: \"phoneNumber\",\r\n value: e.value,\r\n },\r\n });\r\n }\r\n }}\r\n mask={\"+90 (000)-000-0000\"}\r\n value={props.phoneNumber || \"\"}\r\n floatLabelType=\"Always\"\r\n />\r\n );\r\n };\r\n\r\n const formatPhoneNumber = (value) => {\r\n if (!value) return \"\";\r\n const numericValue = value.replace(/[^0-9]/g, \"\");\r\n if (numericValue.length !== 12) return value;\r\n\r\n return `+${numericValue.slice(0, 2)} (${numericValue.slice(\r\n 2,\r\n 5\r\n )})-${numericValue.slice(5, 8)}-${numericValue.slice(8)}`;\r\n };\r\n\r\n // console.log(selectedContacts);\r\n const columns = [\r\n {\r\n field: \"id\",\r\n headerText: \"id\",\r\n allowEditing: false,\r\n isPrimaryKey: true,\r\n visible: false,\r\n },\r\n {\r\n field: \"code\",\r\n headerText: t(\"Code\"),\r\n allowEditing: true,\r\n validationRules: { required: true },\r\n },\r\n {\r\n field: \"definition\",\r\n headerText: t(\"Definition\"),\r\n allowEditing: true,\r\n },\r\n {\r\n field: \"address\",\r\n headerText: t(\"Address\"),\r\n allowEditing: true,\r\n },\r\n {\r\n field: \"city\",\r\n headerText: t(\"City\"),\r\n allowEditing: true,\r\n },\r\n {\r\n field: \"country\",\r\n headerText: t(\"Country\"),\r\n allowEditing: true,\r\n },\r\n {\r\n field: \"inCharge\",\r\n headerText: t(\"InCharge\"),\r\n allowEditing: true,\r\n },\r\n {\r\n field: \"phoneNumber\",\r\n headerText: t(\"Phone Number\"),\r\n allowEditing: true,\r\n editTemplate: editTemplate,\r\n template: (props) => formatPhoneNumber(props.phoneNumber),\r\n \r\n },\r\n {\r\n field: \"isEnabled\",\r\n headerText: t(\"isEnabled\"),\r\n allowEditing: false,\r\n isCheckbox: \"True\",\r\n textAlign: \"Center\",\r\n },\r\n ];\r\n const settings = { effect: \"Zoom\", duration: 400, delay: 0 };\r\n\r\n function header() {\r\n return (\r\n
    \r\n {t(\"Contacts\")}\r\n ${t(\"Hold Ctrl to select multiple items\")}
    \r\n ${t(\"Use Shift to select a range of items\")}
    \r\n ${t(\"CtrlA\")}
    ${t(\"Only enabled\")}
    `}\r\n position=\"BottomCenter\"\r\n >\r\n \r\n \r\n \r\n );\r\n }\r\n\r\n const buttons = [\r\n {\r\n buttonModel: {\r\n content: t(\"Choose\"),\r\n cssClass: \"e-flat\",\r\n isPrimary: true,\r\n },\r\n click: () => {\r\n handleClose();\r\n },\r\n },\r\n {\r\n buttonModel: {\r\n content: t(\"Cancel\"),\r\n cssClass: \"e-flat\",\r\n },\r\n click: () => {\r\n handleClose();\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ContactModal;\r\n","import React, { useContext, useEffect, useState } from \"react\";\r\nimport useTitle from \"../Hooks/useTitle\";\r\nimport { ComboBoxComponent } from \"@syncfusion/ej2-react-dropdowns\";\r\nimport { ButtonComponent } from \"@syncfusion/ej2-react-buttons\";\r\nimport axiosClient from \"../Utils/axiosClient\";\r\nimport ToastContext from \"../Context/toastContext\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { v4 as uuidv4 } from \"uuid\";\r\nimport { TextAreaComponent } from \"@syncfusion/ej2-react-inputs\";\r\nimport ContactModal from \"../Components/ContactModal\";\r\nimport { useLocation } from \"react-router-dom\";\r\n\r\nconst SendMessagePage = () => {\r\n const location = useLocation();\r\n const [data, setData] = useState([]);\r\n const [selectedNumber, setSelectedNumber] = useState(null);\r\n const [selectedContacts, setSelectedContacts] = useState([]);\r\n const [message, setMessage] = useState(\"\");\r\n const [isModalOpen, setIsModalOpen] = useState(false);\r\n\r\n const { t } = useTranslation();\r\n const { showToast } = useContext(ToastContext);\r\n\r\n useTitle(`${t(\"Send Message\")} | Netileti`);\r\n\r\n useEffect(() => {\r\n if (location.state?.contact) {\r\n setSelectedContacts([{\r\n phoneNumber: location.state.contact.phoneNumber,\r\n definition: location.state.contact.definition\r\n }]);\r\n }\r\n }, [location.state]);\r\n\r\n const getData = async () => {\r\n try {\r\n const response = await axiosClient.get(\"/accounts\");\r\n\r\n if (response.status === 200) {\r\n const formattedData = response.data.result.map((item) => ({\r\n phoneNumber: `${item.firmName} (${item.phoneNumber})`,\r\n phoneNumberId: item.phoneNumberId,\r\n }));\r\n\r\n setData(formattedData);\r\n } else {\r\n showToast(\r\n `${t(\"Error\")}: ${response.statusText}`,\r\n \"Http status :\",\r\n response.status\r\n );\r\n }\r\n } catch (error) {\r\n showToast(\r\n `${t(\"Failed to fetch data. Please try again.\")},${error.message}`,\r\n `${t(\"Error\")}`\r\n );\r\n }\r\n };\r\n\r\n const onSubmit = async (event) => {\r\n event.preventDefault();\r\n if (!selectedNumber) {\r\n showToast(`${t(\"Please select a phone number\")}.`, `${t(\"Error\")}`);\r\n return;\r\n }\r\n if (!selectedContacts) {\r\n showToast(`${t(\"Please select receipent\")}.`, `${t(\"Error\")}`);\r\n return;\r\n }\r\n const envelopeId = uuidv4();\r\n const errorMessages = [];\r\n\r\n const promises = selectedContacts.map(async (contact) => {\r\n const payload = {\r\n to: contact.phoneNumber,\r\n body: message,\r\n envelopeId,\r\n };\r\n try {\r\n const response = await axiosClient.post(\r\n `/sendmessage/${selectedNumber}`,\r\n payload\r\n );\r\n\r\n if (response.status === 200) return true;\r\n else return false;\r\n } catch (error) {\r\n errorMessages.push({\r\n contact: contact.name || contact.phoneNumber,\r\n message: error.response.data,\r\n });\r\n return false;\r\n }\r\n });\r\n const results = await Promise.all(promises);\r\n\r\n const successCount = results.filter((res) => res === true).length;\r\n const failedCount = selectedContacts.length - successCount;\r\n if (successCount > 0) {\r\n showToast(\r\n `${successCount} ${t(\"Message sent successfully!\")}`,\r\n `${t(\"Success\")}`\r\n );\r\n }\r\n\r\n if (failedCount > 0) {\r\n showToast(\r\n `${failedCount} ${t(\"Failed to send message\")}`,\r\n `${t(\"Error\")}`\r\n );\r\n errorMessages.forEach((error) => {\r\n showToast(`${error.contact}: ${error.message}`, `${t(\"Error\")}`);\r\n });\r\n }\r\n\r\n setMessage(\"\");\r\n setSelectedNumber(null);\r\n setSelectedContacts([]);\r\n };\r\n\r\n const onPhoneNumberChange = (event) => {\r\n const selectedItem = event.itemData;\r\n setSelectedNumber(selectedItem ? selectedItem.phoneNumberId : null);\r\n };\r\n\r\n const onContactSelect = (contacts) => {\r\n setSelectedContacts(contacts);\r\n setIsModalOpen(false);\r\n };\r\n\r\n const openModal = () => {\r\n setIsModalOpen(true);\r\n };\r\n\r\n useEffect(() => {\r\n getData();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n if (!data) {\r\n return
    ;\r\n }\r\n return (\r\n \r\n
    \r\n
    \r\n \r\n \r\n {t(\"To\")}\r\n \r\n \r\n {selectedContacts.length <= 3\r\n ? selectedContacts\r\n .map((contact) =>\r\n contact.definition.split(\" \").slice(0, 2).join(\" \")\r\n )\r\n .join(\", \")\r\n : `${selectedContacts\r\n .slice(0, 3)\r\n .map((contact) =>\r\n contact.definition.split(\" \").slice(0, 2).join(\" \")\r\n )\r\n .join(\", \")} ${t(\"and\")} ${selectedContacts.length - 3} ${t(\r\n \"more\"\r\n )}`}\r\n \r\n setMessage(e.target.value)}\r\n required\r\n resizeMode=\"None\"\r\n rows={3}\r\n />\r\n \r\n {t(\"Send Message\")}\r\n \r\n \r\n setIsModalOpen(false)}\r\n onSelectContact={onContactSelect}\r\n />\r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default SendMessagePage;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport useTitle from \"../Hooks/useTitle\";\r\nimport DatagridContext from \"../Context/datagridContext\";\r\nimport ForbiddenPage from \"./ForbiddenPage\";\r\nimport UnauthorizePage from \"./UnauthorizePage\";\r\nimport Datagrid from \"../Components/Datagrid\";\r\nimport toolbar from \"../Config/toolbarConfig\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport { TooltipComponent } from \"@syncfusion/ej2-react-popups\";\r\nimport { ComboBoxComponent } from \"@syncfusion/ej2-react-dropdowns\";\r\n\r\nconst MessageStatusesPage = () => {\r\n const { t } = useTranslation();\r\n // const [data, setData] = useState([]);\r\n const [status, setStatus] = useState(null);\r\n const [from, setFrom] = useState(\"\");\r\n const [url, setUrl] = useState(\"\");\r\n const navigate = useNavigate();\r\n\r\n const baseUrl = process.env.REACT_APP_API_BASE_URL;\r\n useTitle(`${t(\"Messages\")} | Netileti`);\r\n\r\n const getData = async () => {\r\n setUrl(`${baseUrl}/webhook/Conversations`);\r\n setFrom(\"MessageStatuses\");\r\n };\r\n\r\n useEffect(() => {\r\n getData();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n const columns = [\r\n {\r\n field: \"envelopeId\",\r\n headerText: \"envelopeId\",\r\n allowEditing: false,\r\n isPrimaryKey: true,\r\n visible: false,\r\n },\r\n {\r\n field: \"timestamp\",\r\n headerText: t(\"Time\"),\r\n allowEditing: false,\r\n },\r\n {\r\n field: \"messageContent\",\r\n headerText: t(\"Message Content\"),\r\n allowEditing: false,\r\n width: \"35%\",\r\n },\r\n {\r\n field: \"receipentPhoneNr\",\r\n headerText: t(\"Receipent\"),\r\n allowEditing: false,\r\n },\r\n {\r\n field: \"senderPhoneNumber\",\r\n headerText: t(\"Sender\"),\r\n allowEditing: false,\r\n },\r\n {\r\n field: \"status\",\r\n headerText: t(\"Status\"),\r\n textAlign: \"Center\",\r\n allowEditing: false,\r\n template: ({ status }) => (\r\n \r\n \r\n \r\n ),\r\n filterTemplate: () => (\r\n {\r\n const selectedValue = e.value;\r\n const gridElement = document.getElementById(\"adaptivebrowser\");\r\n if (gridElement) {\r\n const grid = gridElement.ej2_instances[0];\r\n\r\n if (grid) {\r\n if (selectedValue) {\r\n // Filtreyi uygula\r\n grid.filterByColumn(\"status\", \"equal\", selectedValue);\r\n } else {\r\n // Filtreyi temizle\r\n grid.removeFilteredColsByField(\"status\");\r\n }\r\n }\r\n }\r\n }}\r\n />\r\n ),\r\n },\r\n {\r\n field: \"\",\r\n headerText: \"\",\r\n allowEditing: false,\r\n textAlign: \"center\",\r\n width: \"10%\",\r\n template: ({ envelopeId }) => (\r\n navigate(`/messages/${envelopeId}`)}\r\n className=\"e-btn e-primary e-outline e-small\"\r\n >\r\n {t(\"Details\")}\r\n \r\n ),\r\n },\r\n ];\r\n \r\n if (!url) {\r\n return
    ;\r\n }\r\n return (\r\n \r\n {status === 401 ? (\r\n \r\n ) : status === 403 ? (\r\n \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default MessageStatusesPage;\r\n","import React, { useState, useEffect } from \"react\";\r\nimport { useParams } from \"react-router-dom\";\r\nimport Datagrid from \"../Components/Datagrid\";\r\nimport UnauthorizePage from \"./UnauthorizePage\";\r\nimport ForbiddenPage from \"./ForbiddenPage\";\r\nimport DatagridContext from \"../Context/datagridContext\";\r\nimport toolbar from \"../Config/toolbarConfig\";\r\nimport useTitle from \"../Hooks/useTitle\";\r\nimport { useTranslation } from \"react-i18next\";\r\nimport { TooltipComponent } from \"@syncfusion/ej2-react-popups\";\r\nimport { ComboBoxComponent } from \"@syncfusion/ej2-react-dropdowns\";\r\nconst MessageDetailsPage = () => {\r\n const { envelopeId } = useParams();\r\n\r\n const [url, setUrl] = useState(\"\");\r\n const [from, setFrom] = useState(\"\");\r\n const [status, setStatus] = useState(null);\r\n\r\n const { t } = useTranslation();\r\n\r\n const baseUrl = process.env.REACT_APP_API_BASE_URL;\r\n\r\n useTitle(`${t(\"Message Details\")} | Netileti`);\r\n\r\n useEffect(() => {\r\n const fetchUserTransactions = async () => {\r\n setUrl(`${baseUrl}/webhook/Conversations/${envelopeId}`);\r\n setFrom(\"MessageDetails\");\r\n };\r\n\r\n fetchUserTransactions();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n const formatPhoneNumber = (value) => {\r\n if (!value) return '';\r\n const numericValue = value.replace(/[^0-9]/g, '');\r\n if (numericValue.length !== 12) return value;\r\n \r\n return `+${numericValue.slice(0, 2)} (${numericValue.slice(2, 5)})-${numericValue.slice(5, 8)}-${numericValue.slice(8)}`;\r\n };\r\n\r\n const columns = [\r\n {\r\n field: \"envelopeId\",\r\n headerText: \"envelopeId\",\r\n allowEditing: false,\r\n isPrimaryKey: true,\r\n visible: false,\r\n },\r\n {\r\n field: \"timestamp\",\r\n headerText: t(\"Time\"),\r\n allowEditing: false,\r\n template: ({ timestamp }) =>\r\n timestamp ? timestamp : t(\"MessageStatuses.no status.label\"),\r\n },\r\n {\r\n field: \"receipentPhoneNr\",\r\n headerText: t(\"Receipent\"),\r\n allowEditing: false,\r\n template: ({ receipentPhoneNr }) => {\r\n const phoneRegex = /\\(\\(.*?\\)\\)/;\r\n const match = receipentPhoneNr.match(phoneRegex);\r\n const phoneNumber = match\r\n ? match[0].replace(/\\(\\(|\\)\\)/g, \"\").trim()\r\n : \"\";\r\n const name = receipentPhoneNr.replace(phoneRegex, \"\").trim();\r\n\r\n return (\r\n
    \r\n \r\n
    {name}
    \r\n
    \r\n
    \r\n );\r\n },\r\n },\r\n {\r\n field: \"status\",\r\n headerText: t(\"Status\"),\r\n allowEditing: false,\r\n width: \"10%\",\r\n textAlign: \"Center\",\r\n template: ({ status }) => (\r\n \r\n \r\n \r\n ),\r\n filterTemplate: () => (\r\n {\r\n const selectedValue = e.value;\r\n const gridElement = document.getElementById(\"adaptivebrowser\");\r\n if (gridElement) {\r\n const grid = gridElement.ej2_instances[0];\r\n\r\n if (grid) {\r\n if (selectedValue) {\r\n // Filtreyi uygula\r\n grid.filterByColumn(\"status\", \"equal\", selectedValue);\r\n } else {\r\n // Filtreyi temizle\r\n grid.removeFilteredColsByField(\"status\");\r\n }\r\n }\r\n }\r\n }}\r\n />\r\n ),\r\n },\r\n {\r\n field: \"errorCode\",\r\n headerText: t(\"Error Code\"),\r\n allowEditing: false,\r\n },\r\n {\r\n field: \"errorMessage\",\r\n headerText: t(\"Error Message\"),\r\n allowEditing: false,\r\n },\r\n ];\r\n \r\n if (!url) {\r\n return
    ;\r\n }\r\n return (\r\n \r\n {status === 401 ? (\r\n \r\n ) : status === 403 ? (\r\n \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default MessageDetailsPage;\r\n","import React, { useContext, useEffect, useState } from \"react\";\r\nimport useTitle from \"../Hooks/useTitle\";\r\nimport { ButtonComponent } from \"@syncfusion/ej2-react-buttons\";\r\nimport ToastContext from \"../Context/toastContext\";\r\nimport axiosClient from \"../Utils/axiosClient\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst SettingsPage = () => {\r\n const [oldPass, setOldPass] = useState(\"\");\r\n const [newPass, setNewPass] = useState(\"\");\r\n const [isEmailConfirmed, setIsEmailConfirmed] = useState(false);\r\n const [isFb, setIsFb] = useState(false);\r\n\r\n const { showToast } = useContext(ToastContext);\r\n const { t } = useTranslation();\r\n\r\n useTitle(`${t(\"Settings\")} | Netileti`);\r\n\r\n \r\n\r\n const fetchWabaData = async () => {\r\n try {\r\n const response = await axiosClient.get(\r\n `/users/GetMy`\r\n );\r\n\r\n if (response.status === 200) {\r\n setIsEmailConfirmed(response.data.emailConfirmed);\r\n if (response.data.wabaid) {\r\n setIsFb(true);\r\n }\r\n } else {\r\n showToast(\r\n `${t(\"Error\")}: ${response.statusText}`,\r\n \"Http status :\",\r\n response.status\r\n );\r\n }\r\n } catch (error) {\r\n showToast(`${t(\"Error\")} : ${error.message}`, `${t(\"Error\")}`);\r\n }\r\n };\r\n\r\n const handleResetPass = async () => {\r\n if (!oldPass || !newPass) {\r\n showToast(`${t(\"Please enter valid password\")}`, `${t(\"Error\")}`);\r\n return 0;\r\n }\r\n try {\r\n const response = await axiosClient.post(`/manage/info`, {\r\n newEmail: localStorage.getItem(\"userEmail\"),\r\n newPassword: newPass,\r\n oldPassword: oldPass,\r\n });\r\n\r\n if (response.status === 200) {\r\n showToast(\r\n `${t(\"Password\")} ${t(\"updated successfully!\")}`,\r\n `${t(\"Success\")}`\r\n );\r\n } else {\r\n showToast(`${t(\"Failed to update\")}`, `${t(\"Error\")}`);\r\n }\r\n } catch (error) {\r\n showToast(`${t(\"wrongpass\")} : ${error.message}`, `${t(\"Error\")}`);\r\n }\r\n };\r\n\r\n const handleMailConfirmation = async () => {\r\n try {\r\n let email = localStorage.getItem(\"userEmail\");\r\n\r\n const response = await axiosClient.post(\"/resendConfirmationEmail\", {\r\n email: email,\r\n });\r\n if (response.status === 200) {\r\n showToast(`${t(\"mailSended\")}`, `${t(\"Success\")}`);\r\n } else {\r\n showToast(\r\n `${t(\"Error\")}: ${response.statusText}`,\r\n \"Http status :\",\r\n response.status\r\n );\r\n }\r\n } catch (error) {\r\n showToast(`${t(\"Error\")} : ${error.message}`, `${t(\"Error\")}`);\r\n }\r\n };\r\n\r\n const loadFbSDK = () => {\r\n if (!window.FB) {\r\n const script = document.createElement(\"script\");\r\n script.src = \"https://connect.facebook.net/en_US/sdk.js\";\r\n script.async = true;\r\n script.defer = true;\r\n script.crossOrigin = \"anonymous\";\r\n script.onload = () => {\r\n window.FB.init({\r\n appId: \"990475258691931\",\r\n autoLogAppEvents: true,\r\n xfbml: true,\r\n version: \"v19.0\",\r\n });\r\n };\r\n document.body.appendChild(script);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n loadFbSDK();\r\n fetchWabaData();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n const fetchBusinessId = async (accessToken) => {\r\n try {\r\n const response = await fetch(\r\n `https://graph.facebook.com/v19.0/me?fields=businesses&access_token=${accessToken}`\r\n );\r\n const data = await response.json();\r\n\r\n if (data.businesses.data && data.businesses.data.length > 0) {\r\n const businessId = data.businesses.data[0].id;\r\n fetchWabaId(businessId, accessToken);\r\n } else {\r\n console.log(\"İşletme hesabı bulunamadı.\");\r\n }\r\n } catch (error) {\r\n console.error(\"İşletme ID alınırken hata oluştu:\", error);\r\n }\r\n };\r\n\r\n const fetchWabaId = async (businessId, accessToken) => {\r\n try {\r\n const response = await fetch(\r\n `https://graph.facebook.com/v19.0/${businessId}/owned_whatsapp_business_accounts?access_token=${accessToken}`\r\n );\r\n const data = await response.json();\r\n\r\n if (data.data && data.data.length > 0) {\r\n try {\r\n const response = await axiosClient.patch(\r\n `/Users/updWabaId/${data.data[0].id}`\r\n );\r\n\r\n if (response.status === 200) {\r\n showToast(\r\n `Waba Id ${t(\"updated successfully!\")}`,\r\n `${t(\"Success\")}`\r\n );\r\n } else {\r\n showToast(`${t(\"Failed to update\")}`, `${t(\"Error\")}`);\r\n }\r\n } catch (error) {\r\n showToast(`${t(\"Error\")} : ${error.message}`, `${t(\"Error\")}`);\r\n }\r\n } else {\r\n console.log(\"WhatsApp Business hesabı bulunamadı.\");\r\n }\r\n } catch (error) {\r\n console.error(\"WABA ID alınırken hata oluştu:\", error);\r\n }\r\n };\r\n\r\n const handleFacebookLogin = () => {\r\n window.FB.login(\r\n (response) => {\r\n if (response.authResponse) {\r\n const accessToken = response.authResponse.accessToken;\r\n fetchBusinessId(accessToken);\r\n } else {\r\n console.log(\"Kullanıcı giriş yapmadı.\");\r\n }\r\n },\r\n {\r\n scope:\r\n \"public_profile,email,whatsapp_business_management,business_management\",\r\n }\r\n );\r\n };\r\n\r\n return (\r\n \r\n
    \r\n
    \r\n

    {t(\"Settings\")}

    \r\n
    \r\n
    \r\n {/* */}\r\n
    \r\n
    {t(\"Password\")}
    \r\n
    \r\n
    \r\n setOldPass(e.target.value)}\r\n required\r\n >\r\n setNewPass(e.target.value)}\r\n required\r\n >\r\n \r\n {t(\"Change\")}\r\n \r\n
    \r\n
    \r\n
    \r\n {/* */}\r\n {/* */}\r\n
    \r\n
    {t(\"E-mail Confirmation\")}
    \r\n
    \r\n
    \r\n \r\n {isEmailConfirmed\r\n ? localStorage.getItem(\"userEmail\")\r\n : t(\"Send E-mail\")}\r\n \r\n
    \r\n
    \r\n
    \r\n {/* */}\r\n {/* */}\r\n
    \r\n
    {t(\"Login with Facebook\")}
    \r\n
    \r\n
    \r\n \r\n {isFb ? t(\"LoggedIn\") : t(\"Login with Facebook\")}\r\n \r\n
    \r\n
    \r\n
    \r\n {/* */}\r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default SettingsPage;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport useTitle from \"../Hooks/useTitle\";\r\nimport UnauthorizePage from \"./UnauthorizePage\";\r\nimport ForbiddenPage from \"./ForbiddenPage\";\r\nimport DatagridContext from \"../Context/datagridContext\";\r\nimport Datagrid from \"../Components/Datagrid\";\r\nimport { useNavigate } from \"react-router-dom\";\r\nimport toolbar from \"../Config/toolbarConfig\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst UserTransactionsPage = () => {\r\n const [status, setStatus] = useState(null);\r\n const [url, setUrl] = useState(\"\");\r\n\r\n const { t } = useTranslation();\r\n const baseUrl = process.env.REACT_APP_API_BASE_URL;\r\n\r\n const navigate = useNavigate();\r\n\r\n useTitle(`${t(\"User Transactions\")} | Netileti`);\r\n\r\n const getData = async () => {\r\n setUrl(`${baseUrl}/credits/GetUsers`);\r\n };\r\n\r\n useEffect(() => {\r\n getData();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n const columns = [\r\n {\r\n field: \"userId\",\r\n headerText: \"Id\",\r\n allowEditing: false,\r\n isPrimaryKey: true,\r\n visible: false,\r\n },\r\n {\r\n field: \"userName\",\r\n headerText: t(\"User Name\"),\r\n allowEditing: false,\r\n },\r\n {\r\n field: \"creditAmount\",\r\n headerText: t(\"Credit\"),\r\n allowEditing: false,\r\n },\r\n {\r\n field: \"\",\r\n headerText: \"\",\r\n allowEditing: false,\r\n textAlign: \"center\",\r\n width: \"15%\",\r\n template: ({ userId }) => (\r\n navigate(`/usertransactions/${userId}`)}\r\n className=\"e-btn e-primary e-outline e-small\"\r\n >\r\n {t(\"Details\")}\r\n \r\n ),\r\n },\r\n ];\r\n \r\n if (!url) {\r\n return
    ;\r\n }\r\n return (\r\n \r\n {status === 401 ? (\r\n \r\n ) : status === 403 ? (\r\n \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default UserTransactionsPage;\r\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Component, Property, Event, EventHandler, L10n, compile, isNullOrUndefined, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, detach, append, Animation } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, KeyboardEvents, setValue, getValue, ChildProperty } from '@syncfusion/ej2-base';\nimport { Collection, Complex, Browser, Ajax, getUniqueID, closest, remove } from '@syncfusion/ej2-base';\nimport { createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { select, selectAll } from '@syncfusion/ej2-base';\nvar CONTROL_WRAPPER = 'e-upload e-control-wrapper';\nvar INPUT_WRAPPER = 'e-file-select';\nvar DROP_AREA = 'e-file-drop';\nvar DROP_WRAPPER = 'e-file-select-wrap';\nvar LIST_PARENT = 'e-upload-files';\nvar FILE = 'e-upload-file-list';\nvar STATUS = 'e-file-status';\nvar ACTION_BUTTONS = 'e-upload-actions';\nvar UPLOAD_BUTTONS = 'e-file-upload-btn e-css e-btn e-flat e-primary';\nvar CLEAR_BUTTONS = 'e-file-clear-btn e-css e-btn e-flat';\nvar FILE_NAME = 'e-file-name';\nvar FILE_TYPE = 'e-file-type';\nvar FILE_SIZE = 'e-file-size';\nvar REMOVE_ICON = 'e-file-remove-btn';\nvar DELETE_ICON = 'e-file-delete-btn';\nvar SPINNER_PANE = 'e-spinner-pane';\nvar ABORT_ICON = 'e-file-abort-btn';\nvar RETRY_ICON = 'e-file-reload-btn';\nvar DRAG_HOVER = 'e-upload-drag-hover';\nvar PROGRESS_WRAPPER = 'e-upload-progress-wrap';\nvar PROGRESSBAR = 'e-upload-progress-bar';\nvar PROGRESSBAR_TEXT = 'e-progress-bar-text';\nvar UPLOAD_INPROGRESS = 'e-upload-progress';\nvar UPLOAD_SUCCESS = 'e-upload-success';\nvar UPLOAD_FAILED = 'e-upload-fails';\nvar TEXT_CONTAINER = 'e-file-container';\nvar VALIDATION_FAILS = 'e-validation-fails';\nvar RTL = 'e-rtl';\nvar DISABLED = 'e-disabled';\nvar RTL_CONTAINER = 'e-rtl-container';\nvar ICON_FOCUSED = 'e-clear-icon-focus';\nvar PROGRESS_INNER_WRAPPER = 'e-progress-inner-wrap';\nvar PAUSE_UPLOAD = 'e-file-pause-btn';\nvar RESUME_UPLOAD = 'e-file-play-btn';\nvar RESTRICT_RETRY = 'e-restrict-retry';\nvar wrapperAttr = ['title', 'style', 'class'];\nvar FORM_UPLOAD = 'e-form-upload';\nvar HIDDEN_INPUT = 'e-hidden-file-input';\nvar INVALID_FILE = 'e-file-invalid';\nvar INFORMATION = 'e-file-information';\nvar FilesProp = /** @class */ (function (_super) {\n __extends(FilesProp, _super);\n function FilesProp() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], FilesProp.prototype, \"name\", void 0);\n __decorate([\n Property(null)\n ], FilesProp.prototype, \"size\", void 0);\n __decorate([\n Property('')\n ], FilesProp.prototype, \"type\", void 0);\n return FilesProp;\n}(ChildProperty));\nexport { FilesProp };\nvar ButtonsProps = /** @class */ (function (_super) {\n __extends(ButtonsProps, _super);\n function ButtonsProps() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Browse...')\n ], ButtonsProps.prototype, \"browse\", void 0);\n __decorate([\n Property('Upload')\n ], ButtonsProps.prototype, \"upload\", void 0);\n __decorate([\n Property('Clear')\n ], ButtonsProps.prototype, \"clear\", void 0);\n return ButtonsProps;\n}(ChildProperty));\nexport { ButtonsProps };\nvar AsyncSettings = /** @class */ (function (_super) {\n __extends(AsyncSettings, _super);\n function AsyncSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], AsyncSettings.prototype, \"saveUrl\", void 0);\n __decorate([\n Property('')\n ], AsyncSettings.prototype, \"removeUrl\", void 0);\n __decorate([\n Property(0)\n ], AsyncSettings.prototype, \"chunkSize\", void 0);\n __decorate([\n Property(3)\n ], AsyncSettings.prototype, \"retryCount\", void 0);\n __decorate([\n Property(500)\n ], AsyncSettings.prototype, \"retryAfterDelay\", void 0);\n return AsyncSettings;\n}(ChildProperty));\nexport { AsyncSettings };\n/**\n * The uploader component allows to upload images, documents, and other files from local to server.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar Uploader = /** @class */ (function (_super) {\n __extends(Uploader, _super);\n /**\n * Triggers when change the Uploader value.\n *\n * @param {UploaderModel} options - Specifies the Uploader model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function Uploader(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.initialAttr = { accept: null, multiple: false, disabled: false };\n _this.uploadedFilesData = [];\n _this.base64String = [];\n _this.isForm = false;\n _this.allTypes = false;\n _this.pausedData = [];\n _this.uploadMetaData = [];\n _this.tabIndex = '0';\n _this.btnTabIndex = '0';\n _this.disableKeyboardNavigation = false;\n _this.count = -1;\n _this.actionCompleteCount = 0;\n _this.flag = true;\n _this.selectedFiles = [];\n _this.uploaderName = 'UploadFiles';\n _this.fileStreams = [];\n _this.newFileRef = 0;\n _this.isFirstFileOnSelection = false;\n _this.dragCounter = 0;\n /**\n * Get the file item(li) which are shown in file list.\n *\n * @private\n */\n _this.fileList = [];\n /**\n * Get the data of files which are shown in file list.\n *\n * @private\n */\n _this.filesData = [];\n _this.uploaderOptions = options;\n return _this;\n }\n /**\n * Calls internally if any of the property value is changed.\n *\n * @param {UploaderModel} newProp - Returns the dynamic property value of the component.\n * @param {UploaderModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n Uploader.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowedExtensions':\n this.setExtensions(this.allowedExtensions);\n this.clearAll();\n break;\n case 'enabled':\n this.setControlStatus();\n break;\n case 'multiple':\n this.setMultipleSelection();\n break;\n case 'enableRtl':\n this.setRTL();\n this.reRenderFileList();\n break;\n case 'buttons':\n this.buttons.browse = isNullOrUndefined(this.buttons.browse) ? '' : this.buttons.browse;\n this.buttons.clear = isNullOrUndefined(this.buttons.clear) ? '' : this.buttons.clear;\n this.buttons.upload = isNullOrUndefined(this.buttons.upload) ? '' : this.buttons.upload;\n this.renderButtonTemplates();\n break;\n case 'dropArea':\n this.unBindDropEvents();\n this.updateDropArea();\n break;\n case 'htmlAttributes':\n this.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n this.checkHTMLAttributes(true);\n break;\n case 'files':\n this.renderPreLoadFiles();\n break;\n case 'directoryUpload':\n this.updateDirectoryAttributes();\n break;\n case 'template':\n if (this.isReact) {\n this.reRenderFileList();\n }\n else {\n this.clearAll();\n }\n break;\n case 'minFileSize':\n case 'maxFileSize':\n case 'autoUpload':\n this.clearAll();\n break;\n case 'sequentialUpload':\n this.clearAll();\n break;\n case 'locale':\n this.l10n.setLocale(this.locale);\n this.setLocalizedTexts();\n this.preLocaleObj = getValue('currentLocale', this.l10n);\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n }\n }\n };\n Uploader.prototype.setLocalizedTexts = function () {\n if (isNullOrUndefined(this.template)) {\n if (typeof (this.buttons.browse) === 'string') {\n this.browseButton.innerText = (this.buttons.browse === 'Browse...') ?\n this.localizedTexts('Browse') : this.buttons.browse;\n this.browseButton.setAttribute('title', this.browseButton.innerText);\n if (this.uploadWrapper && !isNullOrUndefined(this.uploadWrapper.querySelector('.' + DROP_AREA))) {\n this.uploadWrapper.querySelector('.' + DROP_AREA).innerHTML = this.localizedTexts('dropFilesHint');\n }\n }\n this.updateFileList();\n }\n };\n Uploader.prototype.getKeyValue = function (val) {\n var keyValue;\n for (var _i = 0, _a = Object.keys(this.preLocaleObj); _i < _a.length; _i++) {\n var key = _a[_i];\n if (this.preLocaleObj[\"\" + key] === val) {\n keyValue = key;\n }\n }\n return keyValue;\n };\n Uploader.prototype.updateFileList = function () {\n var element;\n /* istanbul ignore next */\n if (this.fileList.length > 0 && !isNullOrUndefined(this.uploadWrapper.querySelector('.' + LIST_PARENT))) {\n for (var i = 0; i < this.fileList.length; i++) {\n element = this.fileList[i].querySelector('.e-file-status');\n element.innerHTML = this.localizedTexts(this.getKeyValue(this.filesData[i].status));\n this.filesData[i].status = this.localizedTexts(this.getKeyValue(this.filesData[i].status));\n if (this.fileList[i].classList.contains(UPLOAD_SUCCESS)) {\n this.fileList[i].querySelector('.e-icons').setAttribute('title', this.localizedTexts('delete'));\n }\n if (this.fileList[i].querySelector('.e-file-play-btn')) {\n this.fileList[i].querySelector('.e-icons').setAttribute('title', this.localizedTexts('resume'));\n }\n if (this.fileList[i].querySelector('.e-file-remove-btn')) {\n this.fileList[i].querySelector('.e-icons').setAttribute('title', this.localizedTexts('remove'));\n }\n if (this.fileList[i].querySelector('.e-file-reload-btn')) {\n this.fileList[i].querySelector('.e-icons').setAttribute('title', this.localizedTexts('retry'));\n }\n if (!this.autoUpload) {\n this.uploadButton.innerText = (this.buttons.upload === 'Upload') ?\n this.localizedTexts('Upload') : this.buttons.upload;\n this.uploadButton.setAttribute('title', this.localizedTexts('Upload'));\n this.clearButton.innerText = (this.buttons.clear === 'Clear') ?\n this.localizedTexts('Clear') : this.buttons.clear;\n this.clearButton.setAttribute('title', this.localizedTexts('Clear'));\n }\n }\n }\n };\n Uploader.prototype.reRenderFileList = function () {\n if (this.listParent) {\n detach(this.listParent);\n this.listParent = null;\n this.fileList = [];\n this.internalCreateFileList(this.filesData);\n if (this.actionButtons) {\n this.removeActionButtons();\n this.renderActionButtons();\n this.checkActionButtonStatus();\n }\n }\n };\n Uploader.prototype.preRender = function () {\n this.localeText = { Browse: 'Browse...', Clear: 'Clear', Upload: 'Upload', invalidFileName: 'File Name is not allowed',\n dropFilesHint: 'Or drop files here', invalidMaxFileSize: 'File size is too large',\n invalidMinFileSize: 'File size is too small', invalidFileType: 'File type is not allowed',\n uploadFailedMessage: 'File failed to upload', uploadSuccessMessage: 'File uploaded successfully',\n removedSuccessMessage: 'File removed successfully', removedFailedMessage: 'Unable to remove file', inProgress: 'Uploading',\n readyToUploadMessage: 'Ready to upload', abort: 'Abort', remove: 'Remove', cancel: 'Cancel', delete: 'Delete file',\n pauseUpload: 'File upload paused', pause: 'Pause', resume: 'Resume', retry: 'Retry',\n fileUploadCancel: 'File upload canceled', invalidFileSelection: 'Invalid files selected', totalFiles: 'Total files',\n size: 'Size'\n };\n this.l10n = new L10n('uploader', this.localeText, this.locale);\n this.preLocaleObj = getValue('currentLocale', this.l10n);\n this.formRendered();\n this.updateHTMLAttrToElement();\n this.checkHTMLAttributes(false);\n var ejInstance = getValue('ej2_instances', this.element);\n /* istanbul ignore next */\n if (this.element.tagName === 'EJS-UPLOADER') {\n var inputElement = this.createElement('input', { attrs: { type: 'file' } });\n var index = 0;\n for (index; index < this.element.attributes.length; index++) {\n if (this.element.attributes[index].nodeName !== 'id') {\n inputElement.setAttribute(this.element.attributes[index].nodeName, this.element.attributes[index].nodeValue);\n }\n else if (this.element.attributes[index].nodeName === 'id') {\n inputElement.setAttribute(this.element.attributes[index].nodeName, getUniqueID('uploader'));\n }\n inputElement.innerHTML = this.element.innerHTML;\n }\n if (!inputElement.hasAttribute('name')) {\n inputElement.setAttribute('name', 'UploadFiles');\n }\n this.element.appendChild(inputElement);\n this.element = inputElement;\n setValue('ej2_instances', ejInstance, this.element);\n }\n /* istanbul ignore next */\n if (ejInstance[0].isPureReactComponent) {\n if (!isNullOrUndefined(ejInstance[0].props.name)) {\n this.element.setAttribute('name', ejInstance[0].props.name);\n }\n else if (!isNullOrUndefined(ejInstance[0].props.id) && isNullOrUndefined(ejInstance[0].props.name)) {\n this.element.setAttribute('name', ejInstance[0].props.id);\n }\n else {\n this.element.setAttribute('name', 'UploadFiles');\n }\n }\n if (isNullOrUndefined(this.element.getAttribute('name'))) {\n this.element.setAttribute('name', this.element.getAttribute('id'));\n }\n if (!this.element.hasAttribute('type')) {\n this.element.setAttribute('type', 'file');\n }\n this.updateDirectoryAttributes();\n this.keyConfigs = {\n enter: 'enter'\n };\n if (this.element.hasAttribute('tabindex')) {\n this.tabIndex = this.element.getAttribute('tabindex');\n }\n this.browserName = Browser.info.name;\n this.uploaderName = this.element.getAttribute('name');\n };\n Uploader.prototype.formRendered = function () {\n var parentEle = closest(this.element, 'form');\n if (!isNullOrUndefined(parentEle)) {\n for (; parentEle && parentEle !== document.documentElement; parentEle = parentEle.parentElement) {\n if (parentEle.tagName === 'FORM') {\n this.isForm = true;\n this.formElement = parentEle;\n parentEle.setAttribute('enctype', 'multipart/form-data');\n parentEle.setAttribute('encoding', 'multipart/form-data');\n }\n }\n }\n };\n Uploader.prototype.getPersistData = function () {\n return this.addOnPersist(['filesData']);\n };\n /**\n * Return the module name of the component.\n *\n * @returns {string} Returns the component name.\n */\n Uploader.prototype.getModuleName = function () {\n return 'uploader';\n };\n Uploader.prototype.updateDirectoryAttributes = function () {\n if (this.directoryUpload) {\n this.element.setAttribute('directory', 'true');\n this.element.setAttribute('webkitdirectory', 'true');\n }\n else {\n this.element.removeAttribute('directory');\n this.element.removeAttribute('webkitdirectory');\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n Uploader.prototype.render = function () {\n this.renderBrowseButton();\n this.initializeUpload();\n this.updateHTMLAttrToWrapper();\n this.wireEvents();\n this.setMultipleSelection();\n this.setExtensions(this.allowedExtensions);\n this.setRTL();\n this.renderPreLoadFiles();\n this.setControlStatus();\n this.setCSSClass();\n };\n Uploader.prototype.renderBrowseButton = function () {\n this.browseButton = this.createElement('button', { className: 'e-css e-btn', attrs: { 'type': 'button' } });\n this.browseButton.setAttribute('tabindex', this.tabIndex);\n if (typeof (this.buttons.browse) === 'string') {\n this.browseButton.textContent = (this.buttons.browse === 'Browse...') ?\n this.localizedTexts('Browse') : this.buttons.browse;\n this.browseButton.setAttribute('title', this.browseButton.innerText);\n }\n else {\n this.browseButton.appendChild(this.buttons.browse);\n }\n this.element.setAttribute('aria-label', 'Uploader');\n };\n Uploader.prototype.renderActionButtons = function () {\n this.element.setAttribute('tabindex', '-1');\n this.actionButtons = this.createElement('div', { className: ACTION_BUTTONS });\n this.uploadButton = this.createElement('button', { className: UPLOAD_BUTTONS,\n attrs: { 'type': 'button', 'tabindex': this.btnTabIndex, 'aria-label': this.localizedTexts('Upload') } });\n this.clearButton = this.createElement('button', { className: CLEAR_BUTTONS,\n attrs: { 'type': 'button', 'tabindex': this.btnTabIndex, 'aria-label': this.localizedTexts('Clear') } });\n this.actionButtons.appendChild(this.clearButton);\n this.actionButtons.appendChild(this.uploadButton);\n this.renderButtonTemplates();\n this.uploadWrapper.appendChild(this.actionButtons);\n this.browseButton.blur();\n if (!this.isPreloadFiles) {\n this.uploadButton.focus();\n }\n this.wireActionButtonEvents();\n };\n /* istanbul ignore next */\n Uploader.prototype.serverActionButtonsEventBind = function (element) {\n if (element && !this.isForm) {\n this.browseButton.blur();\n this.actionButtons = element;\n this.uploadButton = this.actionButtons.querySelector('.e-file-upload-btn');\n this.clearButton = this.actionButtons.querySelector('.e-file-clear-btn');\n this.uploadButton.focus();\n this.unwireActionButtonEvents();\n this.wireActionButtonEvents();\n this.checkActionButtonStatus();\n }\n };\n Uploader.prototype.wireActionButtonEvents = function () {\n EventHandler.add(this.uploadButton, 'click', this.uploadButtonClick, this);\n EventHandler.add(this.clearButton, 'click', this.clearButtonClick, this);\n };\n Uploader.prototype.unwireActionButtonEvents = function () {\n EventHandler.remove(this.uploadButton, 'click', this.uploadButtonClick);\n EventHandler.remove(this.clearButton, 'click', this.clearButtonClick);\n };\n Uploader.prototype.removeActionButtons = function () {\n if (this.actionButtons) {\n this.unwireActionButtonEvents();\n detach(this.actionButtons);\n this.actionButtons = null;\n }\n };\n Uploader.prototype.renderButtonTemplates = function () {\n if (typeof (this.buttons.browse) === 'string') {\n this.browseButton.textContent = (this.buttons.browse === 'Browse...') ?\n this.localizedTexts('Browse') : this.buttons.browse;\n this.browseButton.setAttribute('title', this.browseButton.textContent);\n }\n else {\n this.browseButton.innerHTML = '';\n this.browseButton.appendChild(this.buttons.browse);\n }\n if (this.uploadButton) {\n var uploadText = isNullOrUndefined(this.buttons.upload) ? 'Upload' : this.buttons.upload;\n this.buttons.upload = uploadText;\n if (typeof (this.buttons.upload) === 'string') {\n this.uploadButton.textContent = (this.buttons.upload === 'Upload') ?\n this.localizedTexts('Upload') : this.buttons.upload;\n this.uploadButton.setAttribute('title', this.uploadButton.textContent);\n }\n else {\n this.uploadButton.innerHTML = '';\n this.uploadButton.appendChild(this.buttons.upload);\n }\n }\n if (this.clearButton) {\n var clearText = isNullOrUndefined(this.buttons.clear) ? 'Clear' : this.buttons.clear;\n this.buttons.clear = clearText;\n if (typeof (this.buttons.clear) === 'string') {\n this.clearButton.textContent = (this.buttons.clear === 'Clear') ?\n this.localizedTexts('Clear') : this.buttons.clear;\n this.clearButton.setAttribute('title', this.clearButton.textContent);\n }\n else {\n this.clearButton.innerHTML = '';\n this.clearButton.appendChild(this.buttons.clear);\n }\n }\n };\n Uploader.prototype.initializeUpload = function () {\n this.element.setAttribute('tabindex', '-1');\n var inputWrapper = this.createElement('span', { className: INPUT_WRAPPER });\n this.element.parentElement.insertBefore(inputWrapper, this.element);\n this.dropAreaWrapper = this.createElement('div', { className: DROP_WRAPPER });\n this.element.parentElement.insertBefore(this.dropAreaWrapper, this.element);\n inputWrapper.appendChild(this.element);\n this.dropAreaWrapper.appendChild(this.browseButton);\n this.dropAreaWrapper.appendChild(inputWrapper);\n this.uploadWrapper = this.createElement('div', { className: CONTROL_WRAPPER });\n this.dropAreaWrapper.parentElement.insertBefore(this.uploadWrapper, this.dropAreaWrapper);\n this.uploadWrapper.appendChild(this.dropAreaWrapper);\n this.setDropArea();\n };\n Uploader.prototype.renderPreLoadFiles = function () {\n if (this.files.length) {\n if (this.enablePersistence && this.filesData.length) {\n this.internalCreateFileList(this.filesData);\n return;\n }\n if (isNullOrUndefined(this.files[0].size)) {\n return;\n }\n this.isPreloadFiles = true;\n var files = [].slice.call(this.files);\n var filesData = [];\n if (!this.multiple) {\n this.clearData();\n files = [files[0]];\n }\n for (var _i = 0, files_1 = files; _i < files_1.length; _i++) {\n var data = files_1[_i];\n var fileData = {\n name: data.name + '.' + data.type.split('.')[data.type.split('.').length - 1],\n rawFile: '',\n size: data.size,\n status: this.localizedTexts('uploadSuccessMessage'),\n type: data.type,\n validationMessages: { minSize: '', maxSize: '' },\n statusCode: '2'\n };\n filesData.push(fileData);\n this.filesData.push(fileData);\n }\n this.internalCreateFileList(filesData);\n if (!this.autoUpload && this.listParent && !this.actionButtons && (!this.isForm || this.allowUpload()) && this.showFileList) {\n this.renderActionButtons();\n }\n this.checkActionButtonStatus();\n if (this.sequentialUpload) {\n this.count = this.filesData.length - 1;\n }\n this.isPreloadFiles = false;\n }\n };\n Uploader.prototype.checkActionButtonStatus = function () {\n if (this.actionButtons) {\n var length_1 = this.uploadWrapper.querySelectorAll('.' + VALIDATION_FAILS).length +\n this.uploadWrapper.querySelectorAll('.e-upload-fails:not(.e-upload-progress)').length +\n this.uploadWrapper.querySelectorAll('span.' + UPLOAD_SUCCESS).length +\n this.uploadWrapper.querySelectorAll('span.' + UPLOAD_INPROGRESS).length;\n if (length_1 > 0 && length_1 === this.uploadWrapper.querySelectorAll('li').length) {\n this.uploadButton.setAttribute('disabled', 'disabled');\n }\n else {\n this.uploadButton.removeAttribute('disabled');\n }\n }\n };\n Uploader.prototype.setDropArea = function () {\n var dropTextArea = this.dropAreaWrapper.querySelector('.e-file-drop');\n if (this.dropArea) {\n this.dropZoneElement = (typeof (this.dropArea) !== 'string') ? this.dropArea :\n select(this.dropArea, document);\n var element = this.element;\n var enableDropText = false;\n while (element.parentNode) {\n element = element.parentNode;\n if (element === this.dropZoneElement) {\n enableDropText = true;\n if (!dropTextArea) {\n this.createDropTextHint();\n }\n else {\n dropTextArea.innerHTML = this.localizedTexts('dropFilesHint');\n }\n }\n }\n if (!enableDropText && dropTextArea) {\n remove(dropTextArea);\n }\n }\n else if (!isNullOrUndefined(this.uploaderOptions) && this.uploaderOptions.dropArea === undefined) {\n this.createDropTextHint();\n this.dropZoneElement = this.uploadWrapper;\n this.setProperties({ dropArea: this.uploadWrapper }, true);\n }\n this.bindDropEvents();\n };\n Uploader.prototype.updateDropArea = function () {\n if (this.dropArea) {\n this.setDropArea();\n }\n else {\n this.dropZoneElement = null;\n var dropTextArea = this.dropAreaWrapper.querySelector('.e-file-drop');\n if (dropTextArea) {\n remove(dropTextArea);\n }\n }\n };\n Uploader.prototype.createDropTextHint = function () {\n var fileDropArea = this.createElement('span', { className: DROP_AREA });\n fileDropArea.innerHTML = this.localizedTexts('dropFilesHint');\n this.dropAreaWrapper.appendChild(fileDropArea);\n };\n Uploader.prototype.updateHTMLAttrToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (wrapperAttr.indexOf(pro) < 0) {\n this.element.setAttribute(pro, this.htmlAttributes[\"\" + pro]);\n }\n }\n }\n };\n Uploader.prototype.updateHTMLAttrToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (wrapperAttr.indexOf(pro) > -1) {\n if (pro === 'class') {\n var updatedClassValues = (this.htmlAttributes[\"\" + pro].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValues !== '') {\n addClass([this.uploadWrapper], updatedClassValues.split(' '));\n }\n }\n else if (pro === 'style') {\n var uploadStyle = this.uploadWrapper.getAttribute(pro);\n uploadStyle = !isNullOrUndefined(uploadStyle) ? (uploadStyle + this.htmlAttributes[\"\" + pro]) :\n this.htmlAttributes[\"\" + pro];\n this.uploadWrapper.setAttribute(pro, uploadStyle);\n }\n else {\n this.uploadWrapper.setAttribute(pro, this.htmlAttributes[\"\" + pro]);\n }\n }\n }\n }\n };\n Uploader.prototype.setMultipleSelection = function () {\n if (this.multiple && !this.element.hasAttribute('multiple')) {\n var newAttr = document.createAttribute('multiple');\n newAttr.value = 'multiple';\n this.element.setAttributeNode(newAttr);\n }\n else if (!this.multiple) {\n this.element.removeAttribute('multiple');\n }\n };\n Uploader.prototype.checkAutoUpload = function (fileData) {\n if (this.autoUpload) {\n if (this.sequentialUpload) {\n /* istanbul ignore next */\n this.sequenceUpload(fileData);\n }\n else {\n this.upload(fileData);\n }\n this.removeActionButtons();\n }\n else if (!this.actionButtons) {\n this.renderActionButtons();\n }\n this.checkActionButtonStatus();\n };\n Uploader.prototype.sequenceUpload = function (fileData) {\n if (this.filesData.length - fileData.length === 0 ||\n this.filesData[(this.filesData.length - fileData.length - 1)].statusCode !== '1') {\n if (this.multiple || this.count < 0) {\n ++this.count;\n }\n var isFileListCreated = this.showFileList ? false : true;\n if (typeof this.filesData[this.count] === 'object') {\n this.isFirstFileOnSelection = false;\n this.upload(this.filesData[this.count], isFileListCreated);\n if (this.filesData[this.count].statusCode === '0') {\n this.sequenceUpload(fileData);\n }\n }\n else {\n --this.count;\n }\n }\n };\n Uploader.prototype.setCSSClass = function (oldCSSClass) {\n var updatedOldCssClass = oldCSSClass;\n if (!isNullOrUndefined(oldCSSClass)) {\n updatedOldCssClass = (oldCSSClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(oldCSSClass) && updatedOldCssClass !== '') {\n removeClass([this.uploadWrapper], updatedOldCssClass.split(' '));\n }\n var updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(this.cssClass) && updatedCssClassValue !== '') {\n addClass([this.uploadWrapper], updatedCssClassValue.split(updatedCssClassValue.indexOf(',') > -1 ? ',' : ' '));\n }\n };\n Uploader.prototype.wireEvents = function () {\n EventHandler.add(this.browseButton, 'click', this.browseButtonClick, this);\n EventHandler.add(this.element, 'change', this.onSelectFiles, this);\n EventHandler.add(document, 'click', this.removeFocus, this);\n this.keyboardModule = new KeyboardEvents(this.uploadWrapper, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n if (this.isForm) {\n EventHandler.add(this.formElement, 'reset', this.resetForm, this);\n }\n };\n Uploader.prototype.unWireEvents = function () {\n EventHandler.remove(this.browseButton, 'click', this.browseButtonClick);\n EventHandler.remove(this.element, 'change', this.onSelectFiles);\n EventHandler.remove(document, 'click', this.removeFocus);\n if (this.isForm) {\n EventHandler.remove(this.formElement, 'reset', this.resetForm);\n }\n if (this.keyboardModule) {\n this.keyboardModule.destroy();\n }\n };\n Uploader.prototype.resetForm = function () {\n this.clearAll();\n };\n Uploader.prototype.keyActionHandler = function (e) {\n var targetElement = e.target;\n switch (e.action) {\n case 'enter':\n if (e.target === this.clearButton) {\n this.clearButtonClick();\n }\n else if (e.target === this.uploadButton) {\n this.uploadButtonClick();\n }\n else if (e.target === this.browseButton) {\n this.browseButtonClick();\n }\n else if (targetElement.classList.contains(PAUSE_UPLOAD)) {\n var metaData = this.getCurrentMetaData(null, e);\n metaData.file.statusCode = '4';\n metaData.file.status = this.localizedTexts('pauseUpload');\n this.abortUpload(metaData, false);\n }\n else if (targetElement.classList.contains(RESUME_UPLOAD)) {\n this.resumeUpload(this.getCurrentMetaData(null, e), e);\n }\n else if (targetElement.classList.contains(RETRY_ICON)) {\n var metaData = this.getCurrentMetaData(null, e);\n if (!isNullOrUndefined(metaData)) {\n metaData.file.statusCode = '1';\n metaData.file.status = this.localizedTexts('readyToUploadMessage');\n this.chunkUpload(metaData.file);\n }\n else {\n var target = e.target.parentElement;\n var fileData = this.filesData[this.fileList.indexOf(target)];\n this.retry(fileData);\n }\n }\n else {\n this.removeFiles(e);\n if (!targetElement.classList.contains(ABORT_ICON)) {\n this.browseButton.focus();\n }\n }\n e.preventDefault();\n e.stopPropagation();\n break;\n }\n };\n Uploader.prototype.getCurrentMetaData = function (fileInfo, e) {\n var fileData;\n var targetMetaData;\n if (isNullOrUndefined(fileInfo)) {\n var target = e.target.parentElement;\n fileData = this.filesData[this.fileList.indexOf(target)];\n }\n else {\n fileData = fileInfo;\n }\n for (var i = 0; i < this.uploadMetaData.length; i++) {\n if (this.uploadMetaData[i].file.name === fileData.name) {\n targetMetaData = this.uploadMetaData[i];\n }\n }\n return targetMetaData;\n };\n Uploader.prototype.removeFocus = function () {\n if (this.uploadWrapper && this.listParent && this.listParent.querySelector('.' + ICON_FOCUSED)) {\n document.activeElement.blur();\n this.listParent.querySelector('.' + ICON_FOCUSED).classList.remove(ICON_FOCUSED);\n }\n };\n Uploader.prototype.browseButtonClick = function () {\n this.element.click();\n };\n Uploader.prototype.uploadButtonClick = function () {\n if (this.sequentialUpload) {\n this.sequenceUpload(this.filesData);\n }\n else {\n this.upload(this.filesData);\n }\n };\n Uploader.prototype.clearButtonClick = function () {\n this.clearAll();\n /* istanbul ignore next */\n if (this.sequentialUpload) {\n this.count = -1;\n }\n this.actionCompleteCount = 0;\n };\n Uploader.prototype.bindDropEvents = function () {\n if (this.dropZoneElement) {\n EventHandler.add(this.dropZoneElement, 'drop', this.dropElement, this);\n EventHandler.add(this.dropZoneElement, 'dragover', this.dragHover, this);\n EventHandler.add(this.dropZoneElement, 'dragleave', this.onDragLeave, this);\n EventHandler.add(this.dropZoneElement, 'paste', this.onPasteFile, this);\n EventHandler.add(this.dropZoneElement, 'dragenter', this.onDragEnter, this);\n }\n };\n Uploader.prototype.unBindDropEvents = function () {\n if (this.dropZoneElement) {\n EventHandler.remove(this.dropZoneElement, 'drop', this.dropElement);\n EventHandler.remove(this.dropZoneElement, 'dragover', this.dragHover);\n EventHandler.remove(this.dropZoneElement, 'dragleave', this.onDragLeave);\n EventHandler.remove(this.dropZoneElement, 'dragenter', this.onDragEnter);\n }\n };\n Uploader.prototype.onDragEnter = function (e) {\n if (!this.enabled) {\n return;\n }\n this.dropZoneElement.classList.add(DRAG_HOVER);\n this.dragCounter = this.dragCounter + 1;\n e.preventDefault();\n e.stopPropagation();\n };\n Uploader.prototype.onDragLeave = function () {\n if (!this.enabled) {\n return;\n }\n this.dragCounter = this.dragCounter - 1;\n if (!this.dragCounter) {\n this.dropZoneElement.classList.remove(DRAG_HOVER);\n }\n };\n Uploader.prototype.dragHover = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.dropEffect !== 'Default') {\n e.dataTransfer.dropEffect = this.dropEffect.toLowerCase();\n }\n e.preventDefault();\n e.stopPropagation();\n };\n /* istanbul ignore next */\n Uploader.prototype.dropElement = function (e) {\n this.dragCounter = 0;\n this.dropZoneElement.classList.remove(DRAG_HOVER);\n this.onSelectFiles(e);\n e.preventDefault();\n e.stopPropagation();\n };\n /* istanbul ignore next */\n Uploader.prototype.onPasteFile = function (event) {\n var item = event.clipboardData.items;\n if (event.type === 'paste' && this.browserName !== 'msie' && this.browserName !== 'edge' && this.browserName !== 'safari') {\n this.element.files = event.clipboardData.files;\n }\n if (item.length !== 1 && !this.multiple) {\n return;\n }\n for (var file = 0; file < item.length; file++) {\n var pasteFile = [].slice.call(item)[file];\n if ((pasteFile.kind === 'file') || pasteFile.type.match('^image/')) {\n this.renderSelectedFiles(event, [pasteFile.getAsFile()], false, true);\n }\n }\n };\n Uploader.prototype.getSelectedFiles = function (index) {\n var data = [];\n var liElement = this.fileList[index];\n var allFiles = this.getFilesData();\n var nameElements = +liElement.getAttribute('data-files-count');\n var startIndex = 0;\n for (var i = 0; i < index; i++) {\n startIndex += (+this.fileList[i].getAttribute('data-files-count'));\n }\n for (var j = startIndex; j < (startIndex + nameElements); j++) {\n data.push(allFiles[j]);\n }\n return data;\n };\n Uploader.prototype.removeFiles = function (args) {\n if (!this.enabled) {\n return;\n }\n var selectedElement = args.target.parentElement;\n var index = this.fileList.indexOf(selectedElement);\n var liElement = this.fileList[index];\n var formUpload = this.isFormUpload();\n var fileData = formUpload ? this.getSelectedFiles(index) : this.getFilesInArray(this.filesData[index]);\n if (isNullOrUndefined(fileData)) {\n return;\n }\n if (args.target.classList.contains(ABORT_ICON) && !formUpload) {\n fileData[0].statusCode = '5';\n if (!isNullOrUndefined(liElement)) {\n var spinnerTarget = liElement.querySelector('.' + ABORT_ICON);\n createSpinner({ target: spinnerTarget, width: '20px' });\n showSpinner(spinnerTarget);\n }\n if (this.sequentialUpload) {\n /* istanbul ignore next */\n this.uploadSequential();\n }\n if (!(liElement.classList.contains(RESTRICT_RETRY))) {\n this.checkActionComplete(true);\n }\n }\n else if (!closest(args.target, '.' + SPINNER_PANE)) {\n this.remove(fileData, false, false, true, args);\n }\n if (this.isForm && liElement && liElement.classList.contains(INVALID_FILE)) {\n this.element.value = '';\n }\n this.checkActionButtonStatus();\n };\n Uploader.prototype.removeFilesData = function (file, customTemplate) {\n var index;\n if (customTemplate) {\n if (!this.showFileList) {\n index = this.filesData.indexOf(file);\n this.filesData.splice(index, 1);\n }\n return;\n }\n var selectedElement = this.getLiElement(file);\n if (isNullOrUndefined(selectedElement)) {\n return;\n }\n this.element.value = '';\n detach(selectedElement);\n index = this.fileList.indexOf(selectedElement);\n this.fileList.splice(index, 1);\n this.filesData.splice(index, 1);\n if (this.fileList.length === 0 && !isNullOrUndefined(this.listParent)) {\n detach(this.listParent);\n this.listParent = null;\n this.removeActionButtons();\n }\n if (this.sequentialUpload) {\n /* istanbul ignore next */\n if (index <= this.count) {\n --this.count;\n }\n }\n };\n Uploader.prototype.removeUploadedFile = function (file, eventArgs, removeDirectly, custom) {\n var _this = this;\n var selectedFiles = file;\n var ajax = new Ajax(this.asyncSettings.removeUrl, 'POST', true, null);\n ajax.emitError = false;\n var formData = new FormData();\n ajax.beforeSend = function (e) {\n eventArgs.currentRequest = ajax.httpRequest;\n if (!removeDirectly) {\n _this.trigger('removing', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n e.cancel = true;\n }\n else {\n _this.removingEventCallback(eventArgs, formData, selectedFiles, file);\n }\n });\n }\n else {\n _this.removingEventCallback(eventArgs, formData, selectedFiles, file);\n }\n };\n ajax.onLoad = function (e) {\n _this.removeCompleted(e, selectedFiles, custom);\n return {};\n };\n /* istanbul ignore next */\n ajax.onError = function (e) {\n _this.removeFailed(e, selectedFiles, custom);\n return {};\n };\n ajax.send(formData);\n };\n Uploader.prototype.removingEventCallback = function (eventArgs, formData, selectedFiles, file) {\n /* istanbul ignore next */\n var name = this.element.getAttribute('name');\n var liElement = this.getLiElement(file);\n if (!isNullOrUndefined(liElement) && (!isNullOrUndefined(liElement.querySelector('.' + DELETE_ICON)) ||\n !isNullOrUndefined(liElement.querySelector('.' + REMOVE_ICON)))) {\n var spinnerTarget = liElement.querySelector('.' + DELETE_ICON) ?\n liElement.querySelector('.' + DELETE_ICON) :\n liElement.querySelector('.' + REMOVE_ICON);\n createSpinner({ target: spinnerTarget, width: '20px' });\n showSpinner(spinnerTarget);\n }\n if (eventArgs.postRawFile && !isNullOrUndefined(selectedFiles.rawFile) && selectedFiles.rawFile !== '') {\n formData.append(name, selectedFiles.rawFile, selectedFiles.name);\n }\n else {\n formData.append(name, selectedFiles.name);\n }\n this.updateFormData(formData, eventArgs.customFormData);\n };\n /* istanbul ignore next */\n Uploader.prototype.updateFormData = function (formData, customData) {\n if (customData.length > 0 && customData[0]) {\n var _loop_1 = function (i) {\n var data = customData[i];\n // eslint-disable-next-line @typescript-eslint/tslint/config\n var value = Object.keys(data).map(function (e) {\n return data[\"\" + e];\n });\n formData.append(Object.keys(data)[0], value);\n };\n for (var i = 0; i < customData.length; i++) {\n _loop_1(i);\n }\n }\n };\n /* istanbul ignore next */\n Uploader.prototype.updateCustomheader = function (request, currentRequest) {\n if (currentRequest.length > 0 && currentRequest[0]) {\n var _loop_2 = function (i) {\n var data = currentRequest[i];\n // eslint-disable-next-line @typescript-eslint/tslint/config\n var value = Object.keys(data).map(function (e) {\n return data[\"\" + e];\n });\n request.setRequestHeader(Object.keys(data)[0], value);\n };\n for (var i = 0; i < currentRequest.length; i++) {\n _loop_2(i);\n }\n }\n };\n Uploader.prototype.removeCompleted = function (e, files, customTemplate) {\n var response = e && e.currentTarget ? this.getResponse(e) : null;\n var status = e.target;\n if (status.readyState === 4 && status.status >= 200 && status.status <= 299) {\n var args = {\n e: e, response: response, operation: 'remove', file: this.updateStatus(files, this.localizedTexts('removedSuccessMessage'), '2')\n };\n this.trigger('success', args);\n this.removeFilesData(files, customTemplate);\n var index = this.uploadedFilesData.indexOf(files);\n this.uploadedFilesData.splice(index, 1);\n this.trigger('change', { files: this.uploadedFilesData });\n }\n else {\n this.removeFailed(e, files, customTemplate);\n }\n };\n Uploader.prototype.removeFailed = function (e, files, customTemplate) {\n var response = e && e.currentTarget ? this.getResponse(e) : null;\n var args = {\n e: e, response: response, operation: 'remove', file: this.updateStatus(files, this.localizedTexts('removedFailedMessage'), '0')\n };\n if (!customTemplate) {\n var index = this.filesData.indexOf(files);\n var rootElement = this.fileList[index];\n if (rootElement) {\n rootElement.classList.remove(UPLOAD_SUCCESS);\n rootElement.classList.add(UPLOAD_FAILED);\n var statusElement = rootElement.querySelector('.' + STATUS);\n if (statusElement) {\n statusElement.classList.remove(UPLOAD_SUCCESS);\n statusElement.classList.add(UPLOAD_FAILED);\n }\n }\n this.checkActionButtonStatus();\n }\n this.trigger('failure', args);\n var liElement = this.getLiElement(files);\n /* istanbul ignore next */\n if (!isNullOrUndefined(liElement) && !isNullOrUndefined(liElement.querySelector('.' + DELETE_ICON))) {\n var spinnerTarget = liElement.querySelector('.' + DELETE_ICON);\n hideSpinner(spinnerTarget);\n detach(liElement.querySelector('.e-spinner-pane'));\n }\n };\n /* istanbul ignore next */\n Uploader.prototype.getFilesFromFolder = function (event) {\n this.filesEntries = [];\n var items = this.multiple ?\n event.dataTransfer.items : [event.dataTransfer.items[0]];\n var validDirectoryUpload = this.checkDirectoryUpload(items);\n if (!validDirectoryUpload) {\n return;\n }\n var _loop_3 = function (i) {\n var item = items[i].webkitGetAsEntry();\n if (item.isFile) {\n var files_2 = [];\n (item).file(function (fileObj) {\n var path = item.fullPath;\n files_2.push({ 'path': path, 'file': fileObj });\n });\n this_1.renderSelectedFiles(event, files_2, true);\n }\n else if (item.isDirectory) {\n this_1.traverseFileTree(item, event);\n }\n };\n var this_1 = this;\n for (var i = 0; i < items.length; i++) {\n _loop_3(i);\n }\n };\n /* istanbul ignore next */\n Uploader.prototype.checkDirectoryUpload = function (items) {\n for (var i = 0; items && i < items.length; i++) {\n var item = items[i].webkitGetAsEntry();\n if (item.isDirectory) {\n return true;\n }\n }\n return false;\n };\n /* istanbul ignore next */\n Uploader.prototype.traverseFileTree = function (item, event) {\n if (item.isFile) {\n this.filesEntries.push(item);\n }\n else if (item.isDirectory) {\n var directoryReader = item.createReader();\n this.readFileFromDirectory(directoryReader, event);\n }\n };\n /* istanbul ignore next */\n Uploader.prototype.readFileFromDirectory = function (directoryReader, event) {\n var _this = this;\n directoryReader.readEntries(function (entries) {\n for (var i = 0; i < entries.length; i++) {\n _this.traverseFileTree(entries[i], event);\n }\n _this.pushFilesEntries(event);\n if (entries.length) {\n _this.readFileFromDirectory(directoryReader);\n }\n });\n };\n Uploader.prototype.pushFilesEntries = function (event) {\n var _this = this;\n var files = [];\n var _loop_4 = function (i) {\n this_2.filesEntries[i].file(function (fileObj) {\n if (_this.filesEntries.length) {\n var path = _this.filesEntries[i].fullPath;\n files.push({ 'path': path, 'file': fileObj });\n if (i === _this.filesEntries.length - 1) {\n _this.filesEntries = [];\n _this.renderSelectedFiles(event, files, true);\n }\n }\n });\n };\n var this_2 = this;\n for (var i = 0; i < this.filesEntries.length; i++) {\n _loop_4(i);\n }\n };\n Uploader.prototype.onSelectFiles = function (args) {\n if (!this.enabled) {\n return;\n }\n var targetFiles;\n /* istanbul ignore next */\n if (args.type === 'drop') {\n if (this.directoryUpload) {\n this.getFilesFromFolder(args);\n }\n else {\n var files = this.sortFilesList = args.dataTransfer.files;\n if (this.browserName !== 'msie' && this.browserName !== 'edge' && this.browserName !== 'safari') {\n this.element.files = files;\n }\n if (files.length > 0) {\n targetFiles = this.multiple ? this.sortFileList(files) : [files[0]];\n this.renderSelectedFiles(args, targetFiles);\n }\n }\n }\n else {\n targetFiles = [].slice.call(args.target.files);\n this.renderSelectedFiles(args, targetFiles);\n }\n if (this.isAngular || this.isReact) {\n args.stopPropagation();\n }\n };\n /* istanbul ignore next */\n Uploader.prototype.getBase64 = function (file) {\n return new Promise(function (resolve, reject) {\n var fileReader = new FileReader();\n fileReader.readAsDataURL(file);\n fileReader.onload = function () { return resolve(fileReader.result); };\n fileReader.onerror = function (error) { return reject(error); };\n });\n };\n /* istanbul ignore next */\n /* tslint:ignore */\n Uploader.prototype.renderSelectedFiles = function (args, targetFiles, directory, paste) {\n var _this = this;\n this.base64String = [];\n var eventArgs = {\n event: args,\n cancel: false,\n filesData: [],\n isModified: false,\n modifiedFilesData: [],\n progressInterval: '',\n isCanceled: false,\n currentRequest: null,\n customFormData: null\n };\n /* istanbul ignore next */\n if (targetFiles.length < 1) {\n eventArgs.isCanceled = true;\n this.trigger('selected', eventArgs);\n return;\n }\n this.flag = true;\n var fileData = [];\n if (!this.multiple) {\n this.clearData(true);\n this.actionCompleteCount = 0;\n targetFiles = [targetFiles[0]];\n }\n for (var i = 0; i < targetFiles.length; i++) {\n var file = directory ? targetFiles[i].file : targetFiles[i];\n this.updateInitialFileDetails(args, targetFiles, file, i, fileData, directory, paste);\n }\n eventArgs.filesData = fileData;\n if (this.allowedExtensions.indexOf('*') > -1) {\n this.allTypes = true;\n }\n if (this.enableHtmlSanitizer) {\n for (var i = 0; i < fileData.length; i++) {\n var sanitizeFile = SanitizeHtmlHelper.beforeSanitize();\n var sanitizeFileName = SanitizeHtmlHelper.serializeValue(sanitizeFile, fileData[parseInt(i.toString(), 10)].name);\n var currentFileName = fileData[parseInt(i.toString(), 10)].name;\n var isUTF8 = false;\n for (var i_1 = 0; i_1 < currentFileName.length; i_1++) {\n if (currentFileName.charCodeAt(i_1) > 127) {\n isUTF8 = true;\n break;\n }\n }\n var htmlTagRegex = /<([a-z][a-z0-9]*)\\b[^>]*>(.*?)<\\/\\1>/i;\n var hasHTMLString = htmlTagRegex.test(currentFileName);\n if ((sanitizeFileName !== fileData[parseInt(i.toString(), 10)].name) && !(isUTF8 && !hasHTMLString)) {\n var encodedFileName = targetFiles[parseInt(i.toString(), 10)].name.replace(/[\\u00A0-\\u9999<>\\\\&]/g, function (i) {\n return '&#' + i.charCodeAt(0) + ';';\n });\n fileData[parseInt(i.toString(), 10)].name = encodedFileName;\n fileData[parseInt(i.toString(), 10)].status = this.localizedTexts('invalidFileName');\n fileData[parseInt(i.toString(), 10)].statusCode = '0';\n }\n }\n }\n if (!this.allTypes) {\n fileData = this.checkExtension(fileData);\n }\n this.trigger('selected', eventArgs, function (eventArgs) {\n _this._internalRenderSelect(eventArgs, fileData);\n });\n };\n Uploader.prototype.updateInitialFileDetails = function (args, targetFiles, file, i, fileData, directory, paste) {\n var fileName = directory ? targetFiles[i].path.substring(1, targetFiles[i].path.length) : paste ?\n getUniqueID(file.name.substring(0, file.name.lastIndexOf('.'))) + '.' + this.getFileType(file.name) :\n this.directoryUpload ? targetFiles[i].webkitRelativePath : file.name;\n var fileDetails = {\n name: fileName,\n rawFile: file,\n size: file.size,\n status: this.localizedTexts('readyToUploadMessage'),\n type: this.getFileType(file.name),\n validationMessages: this.validatedFileSize(file.size),\n statusCode: '1',\n id: getUniqueID(file.name.substring(0, file.name.lastIndexOf('.'))) + '.' + this.getFileType(file.name)\n };\n /* istanbul ignore next */\n if (paste) {\n fileDetails.fileSource = 'paste';\n }\n fileDetails.status = fileDetails.validationMessages.minSize !== '' ? this.localizedTexts('invalidMinFileSize') :\n fileDetails.validationMessages.maxSize !== '' ? this.localizedTexts('invalidMaxFileSize') : fileDetails.status;\n if (fileDetails.validationMessages.minSize !== '' || fileDetails.validationMessages.maxSize !== '') {\n fileDetails.statusCode = '0';\n this.checkActionComplete(true);\n }\n fileData.push(fileDetails);\n };\n Uploader.prototype._internalRenderSelect = function (eventArgs, fileData) {\n if (!eventArgs.cancel) {\n /* istanbul ignore next */\n this.selectedFiles = this.selectedFiles.concat(fileData);\n this.btnTabIndex = this.disableKeyboardNavigation ? '-1' : '0';\n if (this.showFileList) {\n if (eventArgs.isModified && eventArgs.modifiedFilesData.length > 0) {\n for (var j = 0; j < eventArgs.modifiedFilesData.length; j++) {\n for (var k = 0; k < fileData.length; k++) {\n if (eventArgs.modifiedFilesData[j].id === fileData[k].id) {\n eventArgs.modifiedFilesData[j].rawFile = fileData[k].rawFile;\n }\n }\n }\n var dataFiles = this.allTypes ? eventArgs.modifiedFilesData :\n this.checkExtension(eventArgs.modifiedFilesData);\n this.updateSortedFileList(dataFiles);\n this.filesData = this.filesData.concat(dataFiles);\n if (!this.isForm || this.allowUpload()) {\n this.checkAutoUpload(dataFiles);\n }\n }\n else {\n this.internalCreateFileList(fileData);\n if (this.autoUpload && this.sequenceUpload && this.sequentialUpload && this.filesData.length > 0 && this.filesData[this.filesData.length - 1].statusCode !== '2' && this.filesData[this.filesData.length - 1].statusCode !== '0') {\n this.filesData = this.filesData.concat(fileData);\n return;\n }\n this.filesData = this.filesData.concat(fileData);\n if (!this.isForm || this.allowUpload()) {\n this.checkAutoUpload(fileData);\n }\n }\n if (!isNullOrUndefined(eventArgs.progressInterval) && eventArgs.progressInterval !== '') {\n this.progressInterval = eventArgs.progressInterval;\n }\n }\n else {\n this.filesData = this.filesData.concat(fileData);\n if (this.autoUpload) {\n this.upload(this.filesData, true);\n }\n }\n this.raiseActionComplete();\n this.isFirstFileOnSelection = true;\n }\n };\n Uploader.prototype.allowUpload = function () {\n var allowFormUpload = false;\n if (this.isForm && (!isNullOrUndefined(this.asyncSettings.saveUrl) && this.asyncSettings.saveUrl !== '')) {\n allowFormUpload = true;\n }\n return allowFormUpload;\n };\n Uploader.prototype.isFormUpload = function () {\n var isFormUpload = false;\n if (this.isForm && ((isNullOrUndefined(this.asyncSettings.saveUrl) || this.asyncSettings.saveUrl === '')\n && (isNullOrUndefined(this.asyncSettings.removeUrl) || this.asyncSettings.removeUrl === ''))) {\n isFormUpload = true;\n }\n return isFormUpload;\n };\n Uploader.prototype.clearData = function (singleUpload) {\n if (!isNullOrUndefined(this.listParent)) {\n detach(this.listParent);\n this.listParent = null;\n }\n if (this.browserName !== 'msie' && !singleUpload) {\n this.element.value = '';\n }\n this.fileList = [];\n this.filesData = [];\n this.removeActionButtons();\n };\n Uploader.prototype.updateSortedFileList = function (filesData) {\n var previousListClone = this.createElement('div', { id: 'clonewrapper' });\n var added = -1;\n if (this.listParent) {\n for (var i = 0; i < this.listParent.querySelectorAll('li').length; i++) {\n var liElement = this.listParent.querySelectorAll('li')[i];\n previousListClone.appendChild(liElement.cloneNode(true));\n }\n this.removeActionButtons();\n var oldList = [].slice.call(previousListClone.childNodes);\n this.createParentUL();\n for (var index = 0; index < filesData.length; index++) {\n for (var j = 0; j < this.filesData.length; j++) {\n if (this.filesData[j].name === filesData[index].name) {\n this.listParent.appendChild(oldList[j]);\n EventHandler.add(oldList[j].querySelector('.e-icons'), 'click', this.removeFiles, this);\n this.fileList.push(oldList[j]);\n added = index;\n }\n }\n if (added !== index) {\n this.internalCreateFileList([filesData[index]]);\n }\n }\n }\n else {\n this.internalCreateFileList(filesData);\n }\n };\n Uploader.prototype.isBlank = function (str) {\n return (!str || /^\\s*$/.test(str));\n };\n Uploader.prototype.checkExtension = function (files) {\n var dropFiles = files;\n if (!this.isBlank(this.allowedExtensions)) {\n var allowedExtensions = [];\n var extensions = this.allowedExtensions.split(',');\n for (var _i = 0, extensions_1 = extensions; _i < extensions_1.length; _i++) {\n var extension = extensions_1[_i];\n allowedExtensions.push(extension.trim().toLocaleLowerCase());\n }\n for (var i = 0; i < files.length; i++) {\n var checkFileType = files[i].type.indexOf('.') !== -1 ?\n files[i].type.replace('.', '') : files[i].type;\n if (allowedExtensions.indexOf(('.' + checkFileType).toLocaleLowerCase()) === -1) {\n files[i].status = this.localizedTexts('invalidFileType');\n files[i].statusCode = '0';\n }\n }\n }\n return dropFiles;\n };\n Uploader.prototype.validatedFileSize = function (fileSize) {\n var minSizeError = '';\n var maxSizeError = '';\n if (fileSize < this.minFileSize) {\n minSizeError = this.localizedTexts('invalidMinFileSize');\n }\n else if (fileSize > this.maxFileSize) {\n maxSizeError = this.localizedTexts('invalidMaxFileSize');\n }\n else {\n minSizeError = '';\n maxSizeError = '';\n }\n var errorMessage = { minSize: minSizeError, maxSize: maxSizeError };\n return errorMessage;\n };\n Uploader.prototype.isPreLoadFile = function (fileData) {\n var isPreload = false;\n for (var i = 0; i < this.files.length; i++) {\n if (this.files[i].name === fileData.name.slice(0, fileData.name.lastIndexOf('.')) &&\n this.files[i].type === fileData.type) {\n isPreload = true;\n }\n }\n return isPreload;\n };\n Uploader.prototype.createCustomfileList = function (fileData) {\n this.createParentUL();\n for (var _i = 0, fileData_1 = fileData; _i < fileData_1.length; _i++) {\n var listItem = fileData_1[_i];\n var listElement = this.createElement('li', { className: FILE, attrs: { 'data-file-name': listItem.name } });\n this.uploadTemplateFn = this.templateComplier(this.template);\n var liTempCompiler = this.uploadTemplateFn(listItem, this, 'template', this.element.id + 'Template', this.isStringTemplate, null, listElement);\n if (liTempCompiler) {\n var fromElements = [].slice.call(liTempCompiler);\n append(fromElements, listElement);\n }\n var index = fileData.indexOf(listItem);\n var eventArgs = {\n element: listElement,\n fileInfo: listItem,\n index: index,\n isPreload: this.isPreLoadFile(listItem)\n };\n var eventsArgs = {\n element: listElement,\n fileInfo: listItem,\n index: index,\n isPreload: this.isPreLoadFile(listItem)\n };\n this.trigger('rendering', eventArgs);\n this.trigger('fileListRendering', eventsArgs);\n this.listParent.appendChild(listElement);\n this.fileList.push(listElement);\n }\n this.renderReactTemplates();\n };\n Uploader.prototype.createParentUL = function () {\n if (isNullOrUndefined(this.listParent)) {\n this.listParent = this.createElement('ul', { className: LIST_PARENT });\n this.uploadWrapper.appendChild(this.listParent);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Uploader.prototype.formFileList = function (fileData, files) {\n var fileList = this.createElement('li', { className: FILE });\n fileList.setAttribute('data-files-count', fileData.length + '');\n var fileContainer = this.createElement('span', { className: TEXT_CONTAINER });\n var statusMessage;\n for (var _i = 0, fileData_2 = fileData; _i < fileData_2.length; _i++) {\n var listItem = fileData_2[_i];\n var fileNameEle = this.createElement('span', { className: FILE_NAME });\n fileNameEle.innerHTML = this.getFileNameOnly(listItem.name);\n var fileTypeEle = this.createElement('span', { className: FILE_TYPE });\n var fileType = this.getFileType(listItem.name);\n fileTypeEle.innerHTML = '.' + fileType;\n if (!fileType) {\n fileTypeEle.classList.add('e-hidden');\n }\n if (!this.enableRtl) {\n fileContainer.appendChild(fileNameEle);\n fileContainer.appendChild(fileTypeEle);\n }\n else {\n var rtlContainer = this.createElement('span', { className: RTL_CONTAINER });\n rtlContainer.appendChild(fileTypeEle);\n rtlContainer.appendChild(fileNameEle);\n fileContainer.appendChild(rtlContainer);\n }\n this.truncateName(fileNameEle);\n statusMessage = this.formValidateFileInfo(listItem, fileList);\n }\n fileList.appendChild(fileContainer);\n this.setListToFileInfo(fileData, fileList);\n var index = this.listParent.querySelectorAll('li').length;\n var infoEle = this.createElement('span');\n if (fileList.classList.contains(INVALID_FILE)) {\n infoEle.classList.add(STATUS);\n infoEle.classList.add(INVALID_FILE);\n infoEle.innerText = fileData.length > 1 ? this.localizedTexts('invalidFileSelection') : statusMessage;\n }\n else {\n infoEle.classList.add(fileData.length > 1 ? INFORMATION : FILE_SIZE);\n infoEle.innerText = fileData.length > 1 ? this.localizedTexts('totalFiles') + ': ' + fileData.length + ' , '\n + this.localizedTexts('size') + ': ' +\n this.bytesToSize(this.getFileSize(fileData)) : this.bytesToSize(fileData[0].size);\n this.createFormInput(fileData);\n }\n fileContainer.appendChild(infoEle);\n if (isNullOrUndefined(fileList.querySelector('.e-icons'))) {\n var iconElement = this.createElement('span', { className: 'e-icons', attrs: { 'tabindex': this.btnTabIndex } });\n /* istanbul ignore next */\n if (this.browserName === 'msie') {\n iconElement.classList.add('e-msie');\n }\n iconElement.setAttribute('title', this.localizedTexts('remove'));\n fileList.appendChild(fileContainer);\n fileList.appendChild(iconElement);\n EventHandler.add(iconElement, 'click', this.removeFiles, this);\n iconElement.classList.add(REMOVE_ICON);\n }\n var eventArgs = {\n element: fileList,\n fileInfo: this.mergeFileInfo(fileData, fileList),\n index: index,\n isPreload: this.isPreLoadFile(this.mergeFileInfo(fileData, fileList))\n };\n var eventsArgs = {\n element: fileList,\n fileInfo: this.mergeFileInfo(fileData, fileList),\n index: index,\n isPreload: this.isPreLoadFile(this.mergeFileInfo(fileData, fileList))\n };\n this.trigger('rendering', eventArgs);\n this.trigger('fileListRendering', eventsArgs);\n this.listParent.appendChild(fileList);\n this.fileList.push(fileList);\n };\n Uploader.prototype.formValidateFileInfo = function (listItem, fileList) {\n var statusMessage = listItem.status;\n var validationMessages = this.validatedFileSize(listItem.size);\n if (validationMessages.minSize !== '' || validationMessages.maxSize !== '') {\n this.addInvalidClass(fileList);\n statusMessage = validationMessages.minSize !== '' ? this.localizedTexts('invalidMinFileSize') :\n validationMessages.maxSize !== '' ? this.localizedTexts('invalidMaxFileSize') : statusMessage;\n }\n var typeValidationMessage = this.checkExtension(this.getFilesInArray(listItem))[0].status;\n if (typeValidationMessage === this.localizedTexts('invalidFileType')) {\n this.addInvalidClass(fileList);\n statusMessage = typeValidationMessage;\n }\n return statusMessage;\n };\n Uploader.prototype.addInvalidClass = function (fileList) {\n fileList.classList.add(INVALID_FILE);\n };\n Uploader.prototype.createFormInput = function (fileData) {\n if (this.browserName !== 'safari') {\n var inputElement = this.element.cloneNode(true);\n inputElement.classList.add(HIDDEN_INPUT);\n for (var _i = 0, fileData_3 = fileData; _i < fileData_3.length; _i++) {\n var listItem = fileData_3[_i];\n listItem.input = inputElement;\n }\n inputElement.setAttribute('id', getUniqueID('hiddenUploader'));\n inputElement.setAttribute('name', this.uploaderName);\n this.uploadWrapper.querySelector('.' + INPUT_WRAPPER).appendChild(inputElement);\n if (this.browserName !== 'msie' && this.browserName !== 'edge') {\n this.element.value = '';\n }\n }\n };\n Uploader.prototype.getFileSize = function (fileData) {\n var fileSize = 0;\n for (var _i = 0, fileData_4 = fileData; _i < fileData_4.length; _i++) {\n var file = fileData_4[_i];\n fileSize += file.size;\n }\n return fileSize;\n };\n Uploader.prototype.mergeFileInfo = function (fileData, fileList) {\n var result = {\n name: '',\n rawFile: '',\n size: 0,\n status: '',\n type: '',\n validationMessages: { minSize: '', maxSize: '' },\n statusCode: '1',\n list: fileList\n };\n var fileNames = [];\n var type = '';\n for (var _i = 0, fileData_5 = fileData; _i < fileData_5.length; _i++) {\n var listItem = fileData_5[_i];\n fileNames.push(listItem.name);\n type = listItem.type;\n }\n result.name = fileNames.join(', ');\n result.size = this.getFileSize(fileData);\n result.type = type;\n result.status = this.statusForFormUpload(fileData, fileList);\n return result;\n };\n Uploader.prototype.statusForFormUpload = function (fileData, fileList) {\n var isValid = true;\n var statusMessage;\n for (var _i = 0, fileData_6 = fileData; _i < fileData_6.length; _i++) {\n var listItem = fileData_6[_i];\n statusMessage = listItem.status;\n var validationMessages = this.validatedFileSize(listItem.size);\n if (validationMessages.minSize !== '' || validationMessages.maxSize !== '') {\n isValid = false;\n statusMessage = validationMessages.minSize !== '' ? this.localizedTexts('invalidMinFileSize') :\n validationMessages.maxSize !== '' ? this.localizedTexts('invalidMaxFileSize') : statusMessage;\n }\n var typeValidationMessage = this.checkExtension(this.getFilesInArray(listItem))[0].status;\n if (typeValidationMessage === this.localizedTexts('invalidFileType')) {\n isValid = false;\n statusMessage = typeValidationMessage;\n }\n }\n if (!isValid) {\n fileList.classList.add(INVALID_FILE);\n statusMessage = fileData.length > 1 ? this.localizedTexts('invalidFileSelection') : statusMessage;\n }\n else {\n statusMessage = this.localizedTexts('totalFiles') + ': ' + fileData.length + ' , '\n + this.localizedTexts('size') + ': ' +\n this.bytesToSize(this.getFileSize(fileData));\n }\n return statusMessage;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Uploader.prototype.formCustomFileList = function (fileData, files) {\n this.createParentUL();\n var fileList = this.createElement('li', { className: FILE });\n fileList.setAttribute('data-files-count', fileData.length + '');\n this.setListToFileInfo(fileData, fileList);\n var result = this.mergeFileInfo(fileData, fileList);\n fileList.setAttribute('data-file-name', result.name);\n this.uploadTemplateFn = this.templateComplier(this.template);\n var liTempCompiler = this.uploadTemplateFn(result, this, 'template', this.element.id + 'Template', this.isStringTemplate, null, fileList);\n if (liTempCompiler) {\n var fromElements = [].slice.call(liTempCompiler);\n append(fromElements, fileList);\n }\n var index = this.listParent.querySelectorAll('li').length;\n if (!fileList.classList.contains(INVALID_FILE)) {\n this.createFormInput(fileData);\n }\n var eventArgs = {\n element: fileList,\n fileInfo: result,\n index: index,\n isPreload: this.isPreLoadFile(result)\n };\n var eventsArgs = {\n element: fileList,\n fileInfo: result,\n index: index,\n isPreload: this.isPreLoadFile(result)\n };\n this.trigger('rendering', eventArgs);\n this.trigger('fileListRendering', eventsArgs);\n this.listParent.appendChild(fileList);\n this.fileList.push(fileList);\n this.renderReactTemplates();\n };\n /**\n * Create the file list for specified files data.\n *\n * @param { FileInfo[] } fileData - Specifies the files data for file list creation.\n * @returns {void}\n */\n Uploader.prototype.createFileList = function (fileData) {\n this.filesData = this.filesData && this.filesData.length > 0 ? this.filesData.concat(fileData) : fileData;\n this.internalCreateFileList(fileData);\n };\n Uploader.prototype.internalCreateFileList = function (fileData) {\n this.createParentUL();\n if (this.template !== '' && !isNullOrUndefined(this.template)) {\n if (this.isFormUpload()) {\n this.uploadWrapper.classList.add(FORM_UPLOAD);\n this.formCustomFileList(fileData, this.element.files);\n }\n else {\n this.createCustomfileList(fileData);\n }\n }\n else if (this.isFormUpload()) {\n this.uploadWrapper.classList.add(FORM_UPLOAD);\n this.formFileList(fileData, this.element.files);\n }\n else {\n for (var _i = 0, fileData_7 = fileData; _i < fileData_7.length; _i++) {\n var listItem = fileData_7[_i];\n var liElement = this.createElement('li', {\n className: FILE,\n attrs: { 'data-file-name': listItem.name, 'data-files-count': '1' }\n });\n var textContainer = this.createElement('span', { className: TEXT_CONTAINER });\n var textElement = this.createElement('span', { className: FILE_NAME, attrs: { 'title': listItem.name } });\n textElement.innerHTML = this.getFileNameOnly(listItem.name);\n var fileExtension = this.createElement('span', { className: FILE_TYPE });\n var fileType = this.getFileType(listItem.name);\n fileExtension.innerHTML = '.' + fileType;\n if (!fileType) {\n fileExtension.classList.add('e-hidden');\n }\n if (!this.enableRtl) {\n textContainer.appendChild(textElement);\n textContainer.appendChild(fileExtension);\n }\n else {\n var rtlContainer = this.createElement('span', { className: RTL_CONTAINER });\n rtlContainer.appendChild(fileExtension);\n rtlContainer.appendChild(textElement);\n textContainer.appendChild(rtlContainer);\n }\n var fileSize = this.createElement('span', { className: FILE_SIZE });\n fileSize.innerHTML = this.bytesToSize(listItem.size);\n textContainer.appendChild(fileSize);\n var statusElement = this.createElement('span', { className: STATUS });\n textContainer.appendChild(statusElement);\n statusElement.innerHTML = listItem.status;\n liElement.appendChild(textContainer);\n var iconElement = this.createElement('span', { className: ' e-icons',\n attrs: { 'tabindex': this.btnTabIndex } });\n /* istanbul ignore next */\n if (this.browserName === 'msie') {\n iconElement.classList.add('e-msie');\n }\n iconElement.setAttribute('title', this.localizedTexts('remove'));\n liElement.appendChild(iconElement);\n EventHandler.add(iconElement, 'click', this.removeFiles, this);\n if (listItem.statusCode === '2') {\n statusElement.classList.add(UPLOAD_SUCCESS);\n iconElement.classList.add(DELETE_ICON);\n iconElement.setAttribute('title', this.localizedTexts('delete'));\n }\n else if (listItem.statusCode !== '1') {\n statusElement.classList.remove(UPLOAD_SUCCESS);\n statusElement.classList.add(VALIDATION_FAILS);\n }\n if (this.autoUpload && listItem.statusCode === '1' && this.asyncSettings.saveUrl !== '') {\n statusElement.innerHTML = '';\n }\n if (!iconElement.classList.contains(DELETE_ICON)) {\n iconElement.classList.add(REMOVE_ICON);\n iconElement.setAttribute('aria-label', this.localizedTexts('remove'));\n }\n var index = fileData.indexOf(listItem);\n var eventArgs = {\n element: liElement,\n fileInfo: listItem,\n index: index,\n isPreload: this.isPreLoadFile(listItem)\n };\n var eventsArgs = {\n element: liElement,\n fileInfo: listItem,\n index: index,\n isPreload: this.isPreLoadFile(listItem)\n };\n this.trigger('rendering', eventArgs);\n this.trigger('fileListRendering', eventsArgs);\n this.listParent.appendChild(liElement);\n this.fileList.push(liElement);\n this.truncateName(textElement);\n var preventActionComplete = this.flag;\n if (this.isPreLoadFile(listItem)) {\n this.flag = false;\n this.checkActionComplete(true);\n this.flag = preventActionComplete;\n }\n }\n }\n };\n Uploader.prototype.getSlicedName = function (nameElement) {\n var text = nameElement.textContent;\n nameElement.dataset.tail = text.slice(text.length - 10);\n };\n Uploader.prototype.setListToFileInfo = function (fileData, fileList) {\n for (var _i = 0, fileData_8 = fileData; _i < fileData_8.length; _i++) {\n var listItem = fileData_8[_i];\n listItem.list = fileList;\n }\n };\n Uploader.prototype.truncateName = function (name) {\n var nameElement = name;\n if (this.browserName !== 'edge' && nameElement.offsetWidth < nameElement.scrollWidth) {\n this.getSlicedName(nameElement);\n /* istanbul ignore next */\n }\n else if (nameElement.offsetWidth + 1 < nameElement.scrollWidth) {\n this.getSlicedName(nameElement);\n }\n };\n Uploader.prototype.getFileType = function (name) {\n var extension;\n var index = name.lastIndexOf('.');\n if (index >= 0) {\n extension = name.substring(index + 1);\n }\n return extension ? extension : '';\n };\n Uploader.prototype.getFileNameOnly = function (name) {\n var type = this.getFileType(name);\n var names = name.split('.' + type);\n return type = names[0];\n };\n Uploader.prototype.setInitialAttributes = function () {\n if (this.initialAttr.accept) {\n this.element.setAttribute('accept', this.initialAttr.accept);\n }\n if (this.initialAttr.disabled) {\n this.element.setAttribute('disabled', 'disabled');\n }\n if (this.initialAttr.multiple) {\n var newAttr = document.createAttribute('multiple');\n this.element.setAttributeNode(newAttr);\n }\n };\n Uploader.prototype.filterfileList = function (files) {\n var filterFiles = [];\n var li;\n for (var i = 0; i < files.length; i++) {\n li = this.getLiElement(files[i]);\n if (!isNullOrUndefined(li) && !li.classList.contains(UPLOAD_SUCCESS)) {\n filterFiles.push(files[i]);\n }\n else if (!this.showFileList && files[i].status !== 'File uploaded successfully') {\n filterFiles.push(files[i]);\n }\n }\n return filterFiles;\n };\n Uploader.prototype.updateStatus = function (files, status, statusCode, updateLiStatus) {\n if (updateLiStatus === void 0) { updateLiStatus = true; }\n if (!(status === '' || isNullOrUndefined(status)) && !(statusCode === '' || isNullOrUndefined(statusCode))) {\n files.status = status;\n files.statusCode = statusCode;\n }\n if (updateLiStatus) {\n var li = this.getLiElement(files);\n if (!isNullOrUndefined(li)) {\n if (!isNullOrUndefined(li.querySelector('.' + STATUS)) && !((status === '' || isNullOrUndefined(status)))) {\n li.querySelector('.' + STATUS).textContent = status;\n }\n }\n }\n return files;\n };\n Uploader.prototype.getLiElement = function (files) {\n var index;\n for (var i = 0; i < this.filesData.length; i++) {\n if (!isNullOrUndefined(files) && ((!isNullOrUndefined(this.filesData[i].id) &&\n !isNullOrUndefined(files.id)) ? (this.filesData[i].name === files.name &&\n this.filesData[i].id === files.id) : this.filesData[i].name === files.name)) {\n index = i;\n }\n }\n return this.fileList[index];\n };\n Uploader.prototype.createProgressBar = function (liElement) {\n var progressbarWrapper = this.createElement('span', { className: PROGRESS_WRAPPER });\n var progressBar = this.createElement('progressbar', { className: PROGRESSBAR, attrs: { value: '0', max: '100' } });\n var progressbarInnerWrapper = this.createElement('span', { className: PROGRESS_INNER_WRAPPER });\n progressBar.setAttribute('style', 'width: 0%');\n var progressbarText = this.createElement('span', { className: PROGRESSBAR_TEXT });\n progressbarText.textContent = '0%';\n progressbarInnerWrapper.appendChild(progressBar);\n progressbarWrapper.appendChild(progressbarInnerWrapper);\n progressbarWrapper.appendChild(progressbarText);\n liElement.querySelector('.' + TEXT_CONTAINER).appendChild(progressbarWrapper);\n };\n /* istanbul ignore next */\n Uploader.prototype.updateProgressbar = function (e, li) {\n if (!isNaN(Math.round((e.loaded / e.total) * 100)) && !isNullOrUndefined(li.querySelector('.' + PROGRESSBAR))) {\n if (!isNullOrUndefined(this.progressInterval) && this.progressInterval !== '') {\n var value = (Math.round((e.loaded / e.total) * 100)) % parseInt(this.progressInterval, 10);\n if (value === 0 || value === 100) {\n this.changeProgressValue(li, Math.round((e.loaded / e.total) * 100).toString() + '%');\n }\n }\n else {\n this.changeProgressValue(li, Math.round((e.loaded / e.total) * 100).toString() + '%');\n }\n }\n };\n Uploader.prototype.changeProgressValue = function (li, progressValue) {\n li.querySelector('.' + PROGRESSBAR).setAttribute('style', 'width:' + progressValue);\n li.querySelector('.' + PROGRESSBAR_TEXT).textContent = progressValue;\n };\n Uploader.prototype.uploadInProgress = function (e, files, customUI, request) {\n var li = this.getLiElement(files);\n if (isNullOrUndefined(li) && (!customUI)) {\n return;\n }\n if (!isNullOrUndefined(li)) {\n /* istanbul ignore next */\n if (files.statusCode === '5') {\n this.cancelUploadingFile(files, e, request, li);\n }\n if (!(li.querySelectorAll('.' + PROGRESS_WRAPPER).length > 0) && li.querySelector('.' + STATUS)) {\n li.querySelector('.' + STATUS).classList.add(UPLOAD_INPROGRESS);\n this.createProgressBar(li);\n this.updateProgressBarClasses(li, UPLOAD_INPROGRESS);\n li.querySelector('.' + STATUS).classList.remove(UPLOAD_FAILED);\n }\n this.updateProgressbar(e, li);\n var iconEle = li.querySelector('.' + REMOVE_ICON);\n if (!isNullOrUndefined(iconEle)) {\n iconEle.classList.add(ABORT_ICON, UPLOAD_INPROGRESS);\n iconEle.setAttribute('title', this.localizedTexts('abort'));\n iconEle.classList.remove(REMOVE_ICON);\n }\n }\n else {\n this.cancelUploadingFile(files, e, request);\n }\n var args = { e: e, operation: 'upload', file: this.updateStatus(files, this.localizedTexts('inProgress'), '3') };\n this.trigger('progress', args);\n };\n /* istanbul ignore next */\n Uploader.prototype.cancelUploadingFile = function (files, e, request, li) {\n var _this = this;\n if (files.statusCode === '5') {\n var eventArgs = {\n event: e,\n fileData: files,\n cancel: false,\n customFormData: [],\n currentRequest: null\n };\n this.trigger('canceling', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n files.statusCode = '3';\n if (!isNullOrUndefined(li)) {\n var spinnerTarget = li.querySelector('.' + ABORT_ICON);\n if (!isNullOrUndefined(spinnerTarget)) {\n hideSpinner(spinnerTarget);\n detach(li.querySelector('.e-spinner-pane'));\n }\n }\n }\n else {\n request.emitError = false;\n request.httpRequest.abort();\n var formData = new FormData();\n if (files.statusCode === '5') {\n var name_1 = _this.element.getAttribute('name');\n formData.append(name_1, files.name);\n formData.append('cancel-uploading', files.name);\n _this.updateFormData(formData, eventArgs.customFormData);\n var ajax_1 = new Ajax(_this.asyncSettings.removeUrl, 'POST', true, null);\n ajax_1.emitError = false;\n ajax_1.beforeSend = function (e) {\n if (eventArgs.currentRequest) {\n _this.updateCustomheader(ajax_1.httpRequest, eventArgs.currentRequest);\n }\n };\n ajax_1.onLoad = function (e) {\n _this.removecanceledFile(e, files);\n return {};\n };\n ajax_1.send(formData);\n }\n }\n });\n }\n };\n Uploader.prototype.removecanceledFile = function (e, file) {\n var liElement = this.getLiElement(file);\n if (isNullOrUndefined(liElement) || liElement.querySelector('.' + RETRY_ICON) || isNullOrUndefined(liElement.querySelector('.' + ABORT_ICON))) {\n return;\n }\n this.updateStatus(file, this.localizedTexts('fileUploadCancel'), '5');\n this.renderFailureState(e, file, liElement);\n var spinnerTarget = liElement.querySelector('.' + REMOVE_ICON);\n if (!isNullOrUndefined(liElement)) {\n hideSpinner(spinnerTarget);\n if (!isNullOrUndefined(liElement.querySelector('.e-spinner-pane'))) {\n detach(liElement.querySelector('.e-spinner-pane'));\n }\n }\n var requestResponse = e && e.currentTarget ? this.getResponse(e) : null;\n var args = { event: e, response: requestResponse, operation: 'cancel', file: file };\n this.trigger('success', args);\n };\n Uploader.prototype.renderFailureState = function (e, file, liElement) {\n var _this = this;\n this.updateProgressBarClasses(liElement, UPLOAD_FAILED);\n this.removeProgressbar(liElement, 'failure');\n if (!isNullOrUndefined(liElement.querySelector('.e-file-status'))) {\n liElement.querySelector('.e-file-status').classList.add(UPLOAD_FAILED);\n }\n var deleteIcon = liElement.querySelector('.' + ABORT_ICON);\n if (isNullOrUndefined(deleteIcon)) {\n return;\n }\n deleteIcon.classList.remove(ABORT_ICON, UPLOAD_INPROGRESS);\n deleteIcon.classList.add(REMOVE_ICON);\n deleteIcon.setAttribute('title', this.localizedTexts('remove'));\n this.pauseButton = this.createElement('span', { className: 'e-icons e-file-reload-btn', attrs: { 'tabindex': this.btnTabIndex } });\n deleteIcon.parentElement.insertBefore(this.pauseButton, deleteIcon);\n this.pauseButton.setAttribute('title', this.localizedTexts('retry'));\n this.pauseButton.setAttribute('aria-label', this.localizedTexts('retry'));\n var retryElement = liElement.querySelector('.' + RETRY_ICON);\n /* istanbul ignore next */\n retryElement.addEventListener('click', function (e) {\n _this.reloadcanceledFile(e, file, liElement, false);\n }, false);\n };\n Uploader.prototype.reloadcanceledFile = function (e, file, liElement, custom) {\n file.statusCode = '1';\n file.status = this.localizedTexts('readyToUploadMessage');\n if (!custom) {\n if (!isNullOrUndefined(liElement.querySelector('.' + STATUS))) {\n liElement.querySelector('.' + STATUS).classList.remove(UPLOAD_FAILED);\n }\n if (!isNullOrUndefined(liElement.querySelector('.' + RETRY_ICON))) {\n detach(liElement.querySelector('.' + RETRY_ICON));\n }\n this.pauseButton = null;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(liElement)) {\n liElement.classList.add(RESTRICT_RETRY);\n }\n this.upload([file]);\n };\n /* istanbul ignore next */\n Uploader.prototype.uploadComplete = function (e, file, customUI) {\n var status = e.target;\n if (status.readyState === 4 && status.status >= 200 && status.status <= 299) {\n var li = this.getLiElement(file);\n if (isNullOrUndefined(li) && (!customUI || isNullOrUndefined(customUI)) && this.showFileList) {\n return;\n }\n if (!isNullOrUndefined(li)) {\n this.updateProgressBarClasses(li, UPLOAD_SUCCESS);\n this.removeProgressbar(li, 'success');\n var iconEle = li.querySelector('.' + ABORT_ICON);\n if (!isNullOrUndefined(iconEle)) {\n iconEle.classList.add(DELETE_ICON);\n iconEle.setAttribute('title', this.localizedTexts('delete'));\n iconEle.setAttribute('aria-label', this.localizedTexts('delete'));\n iconEle.classList.remove(ABORT_ICON);\n iconEle.classList.remove(UPLOAD_INPROGRESS);\n }\n }\n this.raiseSuccessEvent(e, file);\n }\n else {\n this.uploadFailed(e, file);\n }\n };\n Uploader.prototype.getResponse = function (e) {\n var target = e.currentTarget;\n var response = {\n readyState: target.readyState,\n statusCode: target.status,\n statusText: target.statusText,\n headers: target.getAllResponseHeaders(),\n withCredentials: target.withCredentials\n };\n return response;\n };\n Uploader.prototype.raiseSuccessEvent = function (e, file) {\n var _this = this;\n var response = e && e.currentTarget ? this.getResponse(e) : null;\n var statusMessage = this.localizedTexts('uploadSuccessMessage');\n var args = {\n e: e, response: response, operation: 'upload', file: this.updateStatus(file, statusMessage, '2', false), statusText: statusMessage\n };\n var liElement = this.getLiElement(file);\n if (!isNullOrUndefined(liElement)) {\n var spinnerEle = liElement.querySelector('.' + SPINNER_PANE);\n if (!isNullOrUndefined(spinnerEle)) {\n hideSpinner(liElement);\n detach(spinnerEle);\n }\n }\n this.trigger('success', args, function (args) {\n _this.updateStatus(file, args.statusText, '2');\n _this.multiple ? _this.uploadedFilesData.push(file) : _this.uploadedFilesData = [file];\n _this.trigger('change', { file: _this.uploadedFilesData });\n _this.checkActionButtonStatus();\n if (_this.fileList.length > 0) {\n if ((!(_this.getLiElement(file)).classList.contains(RESTRICT_RETRY))) {\n _this.uploadSequential();\n _this.checkActionComplete(true);\n }\n else {\n /* istanbul ignore next */\n (_this.getLiElement(file)).classList.remove(RESTRICT_RETRY);\n }\n }\n else if (!_this.showFileList) {\n _this.checkActionComplete(true);\n }\n });\n };\n Uploader.prototype.uploadFailed = function (e, file) {\n var _this = this;\n var li = this.getLiElement(file);\n var response = e && e.currentTarget ? this.getResponse(e) : null;\n var statusMessage = this.localizedTexts('uploadFailedMessage');\n var args = {\n e: e, response: response, operation: 'upload', file: this.updateStatus(file, statusMessage, '0', false), statusText: statusMessage\n };\n if (!isNullOrUndefined(li)) {\n this.renderFailureState(e, file, li);\n }\n this.trigger('failure', args, function (args) {\n _this.updateStatus(file, args.statusText, '0');\n _this.checkActionButtonStatus();\n _this.uploadSequential();\n _this.checkActionComplete(true);\n });\n };\n Uploader.prototype.uploadSequential = function () {\n if (this.sequentialUpload) {\n if (this.autoUpload) {\n /* istanbul ignore next */\n this.checkAutoUpload(this.filesData);\n }\n else {\n this.uploadButtonClick();\n }\n }\n };\n Uploader.prototype.checkActionComplete = function (increment) {\n if (increment) {\n ++this.actionCompleteCount;\n }\n else {\n --this.actionCompleteCount;\n }\n this.raiseActionComplete();\n };\n Uploader.prototype.raiseActionComplete = function () {\n if ((this.filesData.length === this.actionCompleteCount) && this.flag) {\n this.flag = false;\n var eventArgs = {\n fileData: []\n };\n eventArgs.fileData = this.getSelectedFileStatus(this.selectedFiles);\n this.trigger('actionComplete', eventArgs);\n }\n };\n Uploader.prototype.getSelectedFileStatus = function (selectedFiles) {\n var matchFiles = [];\n var matchFilesIndex = 0;\n for (var selectFileIndex = 0; selectFileIndex < selectedFiles.length; selectFileIndex++) {\n var selectedFileData = selectedFiles[selectFileIndex];\n for (var fileDataIndex = 0; fileDataIndex < this.filesData.length; fileDataIndex++) {\n if (this.filesData[fileDataIndex].name === selectedFileData.name &&\n this.filesData[fileDataIndex].status === selectedFileData.status) {\n matchFiles[matchFilesIndex] = this.filesData[fileDataIndex];\n ++matchFilesIndex;\n }\n }\n }\n return matchFiles;\n };\n Uploader.prototype.updateProgressBarClasses = function (li, className) {\n var progressBar = li.querySelector('.' + PROGRESSBAR);\n if (!isNullOrUndefined(progressBar)) {\n progressBar.classList.add(className);\n }\n };\n Uploader.prototype.removeProgressbar = function (li, callType) {\n var _this = this;\n if (!isNullOrUndefined(li.querySelector('.' + PROGRESS_WRAPPER))) {\n this.progressAnimation = new Animation({ duration: 1250 });\n this.progressAnimation.animate(li.querySelector('.' + PROGRESS_WRAPPER), { name: 'FadeOut' });\n this.progressAnimation.animate(li.querySelector('.' + PROGRESSBAR_TEXT), { name: 'FadeOut' });\n setTimeout(function () {\n _this.animateProgressBar(li, callType);\n }, 750);\n }\n };\n /* istanbul ignore next */\n Uploader.prototype.animateProgressBar = function (li, callType) {\n if (callType === 'success') {\n li.classList.add(UPLOAD_SUCCESS);\n if (!isNullOrUndefined(li.querySelector('.' + STATUS))) {\n li.querySelector('.' + STATUS).classList.remove(UPLOAD_INPROGRESS);\n this.progressAnimation.animate(li.querySelector('.' + STATUS), { name: 'FadeIn' });\n li.querySelector('.' + STATUS).classList.add(UPLOAD_SUCCESS);\n }\n }\n else {\n if (!isNullOrUndefined(li.querySelector('.' + STATUS))) {\n li.querySelector('.' + STATUS).classList.remove(UPLOAD_INPROGRESS);\n this.progressAnimation.animate(li.querySelector('.' + STATUS), { name: 'FadeIn' });\n li.querySelector('.' + STATUS).classList.add(UPLOAD_FAILED);\n }\n }\n if (li.querySelector('.' + PROGRESS_WRAPPER)) {\n detach(li.querySelector('.' + PROGRESS_WRAPPER));\n }\n };\n Uploader.prototype.setExtensions = function (extensions) {\n if (extensions !== '' && !isNullOrUndefined(extensions)) {\n this.element.setAttribute('accept', extensions);\n }\n else {\n this.element.removeAttribute('accept');\n }\n };\n Uploader.prototype.templateComplier = function (uploadTemplate) {\n if (uploadTemplate) {\n try {\n if (typeof uploadTemplate !== 'function' && selectAll(uploadTemplate, document).length) {\n return compile(select(uploadTemplate, document).innerHTML.trim());\n }\n else {\n return compile(uploadTemplate);\n }\n }\n catch (exception) {\n return compile(uploadTemplate);\n }\n }\n return undefined;\n };\n Uploader.prototype.setRTL = function () {\n if (this.enableRtl) {\n addClass([this.uploadWrapper], RTL);\n }\n else {\n removeClass([this.uploadWrapper], RTL);\n }\n };\n Uploader.prototype.localizedTexts = function (localeText) {\n this.l10n.setLocale(this.locale);\n return this.l10n.getConstant(localeText);\n };\n Uploader.prototype.setControlStatus = function () {\n if (!this.enabled) {\n this.uploadWrapper.classList.add(DISABLED);\n this.element.setAttribute('disabled', 'disabled');\n this.browseButton.setAttribute('disabled', 'disabled');\n if (!isNullOrUndefined(this.clearButton)) {\n this.clearButton.setAttribute('disabled', 'disabled');\n }\n if (!isNullOrUndefined(this.uploadButton)) {\n this.uploadButton.setAttribute('disabled', 'disabled');\n }\n }\n else {\n if (this.uploadWrapper.classList.contains(DISABLED)) {\n this.uploadWrapper.classList.remove(DISABLED);\n }\n if (!isNullOrUndefined(this.browseButton) && this.element.hasAttribute('disabled')) {\n this.element.removeAttribute('disabled');\n this.browseButton.removeAttribute('disabled');\n }\n if (!isNullOrUndefined(this.clearButton) && this.clearButton.hasAttribute('disabled')) {\n this.clearButton.removeAttribute('disabled');\n }\n if (!isNullOrUndefined(this.uploadButton) && this.uploadButton.hasAttribute('disabled')) {\n this.uploadButton.hasAttribute('disabled');\n }\n }\n };\n Uploader.prototype.checkHTMLAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['accept', 'multiple', 'disabled'];\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.element.getAttribute(prop))) {\n switch (prop) {\n case 'accept':\n if ((isNullOrUndefined(this.uploaderOptions) || (this.uploaderOptions['allowedExtensions'] === undefined))\n || isDynamic) {\n this.setProperties({ allowedExtensions: this.element.getAttribute('accept') }, !isDynamic);\n this.initialAttr.accept = this.allowedExtensions;\n }\n break;\n case 'multiple':\n if ((isNullOrUndefined(this.uploaderOptions) || (this.uploaderOptions['multiple'] === undefined)) || isDynamic) {\n var isMutiple = this.element.getAttribute(prop) === 'multiple' ||\n this.element.getAttribute(prop) === '' || this.element.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ multiple: isMutiple }, !isDynamic);\n this.initialAttr.multiple = true;\n }\n break;\n case 'disabled':\n if ((isNullOrUndefined(this.uploaderOptions) || (this.uploaderOptions['enabled'] === undefined)) || isDynamic) {\n var isDisabled = this.element.getAttribute(prop) === 'disabled' ||\n this.element.getAttribute(prop) === '' || this.element.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: isDisabled }, !isDynamic);\n this.initialAttr.disabled = true;\n }\n }\n }\n }\n };\n Uploader.prototype.chunkUpload = function (file, custom, fileIndex) {\n var start = 0;\n var end = Math.min(this.asyncSettings.chunkSize, file.size);\n var index = 0;\n var blob = file.rawFile.slice(start, end);\n var metaData = { chunkIndex: index, blob: blob, file: file, start: start, end: end, retryCount: 0, request: null };\n this.sendRequest(file, metaData, custom, fileIndex);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Uploader.prototype.sendRequest = function (file, metaData, custom, fileIndex) {\n var _this = this;\n var formData = new FormData();\n var blob = file.rawFile.slice(metaData.start, metaData.end);\n formData.append(this.uploaderName, blob, file.name);\n formData.append('chunk-index', metaData.chunkIndex.toString());\n formData.append('chunkIndex', metaData.chunkIndex.toString());\n var totalChunk = Math.max(Math.ceil(file.size / this.asyncSettings.chunkSize), 1);\n formData.append('total-chunk', totalChunk.toString());\n formData.append('totalChunk', totalChunk.toString());\n var ajax = new Ajax({ url: this.asyncSettings.saveUrl, type: 'POST', async: true, contentType: null });\n ajax.emitError = false;\n ajax.onLoad = function (e) {\n _this.chunkUploadComplete(e, metaData, custom);\n return {};\n };\n ajax.onUploadProgress = function (e) {\n _this.chunkUploadInProgress(e, metaData, custom);\n return {};\n };\n var eventArgs = {\n fileData: file,\n customFormData: [],\n cancel: false,\n chunkSize: this.asyncSettings.chunkSize === 0 ? null : this.asyncSettings.chunkSize\n };\n ajax.beforeSend = function (e) {\n eventArgs.currentRequest = ajax.httpRequest;\n eventArgs.currentChunkIndex = metaData.chunkIndex;\n if (eventArgs.currentChunkIndex === 0) {\n // This event is currently not required but to avoid breaking changes for previous customer, we have included.\n _this.trigger('uploading', eventArgs, function (eventArgs) {\n _this.uploadingEventCallback(formData, eventArgs, e, file);\n });\n }\n else {\n _this.trigger('chunkUploading', eventArgs, function (eventArgs) {\n _this.uploadingEventCallback(formData, eventArgs, e, file);\n });\n }\n };\n /* istanbul ignore next */\n ajax.onError = function (e) {\n _this.chunkUploadFailed(e, metaData, custom);\n return {};\n };\n ajax.send(formData);\n metaData.request = ajax;\n };\n Uploader.prototype.uploadingEventCallback = function (formData, eventArgs, e, file) {\n if (eventArgs.cancel) {\n this.eventCancelByArgs(e, eventArgs, file);\n }\n else {\n this.updateFormData(formData, eventArgs.customFormData);\n }\n };\n Uploader.prototype.eventCancelByArgs = function (e, eventArgs, file) {\n var _this = this;\n e.cancel = true;\n if (eventArgs.fileData.statusCode === '5') {\n return;\n }\n eventArgs.fileData.statusCode = '5';\n eventArgs.fileData.status = this.localizedTexts('fileUploadCancel');\n var liElement = this.getLiElement(eventArgs.fileData);\n if (liElement) {\n if (!isNullOrUndefined(liElement.querySelector('.' + STATUS))) {\n liElement.querySelector('.' + STATUS).innerHTML = this.localizedTexts('fileUploadCancel');\n liElement.querySelector('.' + STATUS).classList.add(UPLOAD_FAILED);\n }\n this.pauseButton = this.createElement('span', { className: 'e-icons e-file-reload-btn', attrs: { 'tabindex': this.btnTabIndex } });\n var removeIcon = liElement.querySelector('.' + REMOVE_ICON);\n if (removeIcon) {\n removeIcon.parentElement.insertBefore(this.pauseButton, removeIcon);\n }\n this.pauseButton.setAttribute('title', this.localizedTexts('retry'));\n /* istanbul ignore next */\n this.pauseButton.addEventListener('click', function (e) {\n _this.reloadcanceledFile(e, file, liElement);\n }, false);\n this.checkActionButtonStatus();\n }\n };\n Uploader.prototype.checkChunkUpload = function () {\n return (this.asyncSettings.chunkSize <= 0 || isNullOrUndefined(this.asyncSettings.chunkSize)) ? false : true;\n };\n Uploader.prototype.chunkUploadComplete = function (e, metaData, custom) {\n var _this = this;\n var response = e.target;\n var liElement;\n if (response.readyState === 4 && response.status >= 200 && response.status < 300) {\n var requestResponse = e && e.currentTarget ? this.getResponse(e) : null;\n var totalChunk = Math.max(Math.ceil(metaData.file.size / this.asyncSettings.chunkSize), 1);\n var eventArgs = {\n event: e,\n file: metaData.file,\n chunkIndex: metaData.chunkIndex,\n totalChunk: totalChunk,\n chunkSize: this.asyncSettings.chunkSize,\n response: requestResponse\n };\n this.trigger('chunkSuccess', eventArgs);\n if (isNullOrUndefined(custom) || !custom) {\n liElement = this.getLiElement(metaData.file);\n }\n this.updateMetaData(metaData);\n if (metaData.end === metaData.file.size) {\n metaData.file.statusCode = '3';\n }\n if (metaData.file.statusCode === '5') {\n var eventArgs_1 = { event: e, fileData: metaData.file, cancel: false, customFormData: [] };\n this.trigger('canceling', eventArgs_1, function (eventArgs) {\n /* istanbul ignore next */\n if (eventArgs.cancel) {\n metaData.file.statusCode = '3';\n var spinnerTarget = liElement.querySelector('.' + ABORT_ICON);\n if (!isNullOrUndefined(liElement) && !isNullOrUndefined(spinnerTarget)) {\n hideSpinner(spinnerTarget);\n detach(liElement.querySelector('.e-spinner-pane'));\n }\n _this.sendNextRequest(metaData);\n }\n else {\n metaData.request.emitError = false;\n response.abort();\n var formData = new FormData();\n var name_2 = _this.element.getAttribute('name');\n formData.append(name_2, metaData.file.name);\n formData.append('cancel-uploading', metaData.file.name);\n formData.append('cancelUploading', metaData.file.name);\n _this.updateFormData(formData, eventArgs.customFormData);\n var ajax = new Ajax(_this.asyncSettings.removeUrl, 'POST', true, null);\n ajax.emitError = false;\n ajax.onLoad = function (e) {\n _this.removeChunkFile(e, metaData, custom);\n return {};\n };\n ajax.send(formData);\n }\n });\n }\n else {\n if ((totalChunk - 1) === metaData.chunkIndex && totalChunk > metaData.chunkIndex) {\n var index = this.pausedData.indexOf(metaData);\n if (index >= 0) {\n this.pausedData.splice(index, 1);\n }\n if (isNullOrUndefined(this.template) && (isNullOrUndefined(custom) || !custom) && liElement) {\n if (liElement && !isNullOrUndefined(liElement.querySelector('.' + PAUSE_UPLOAD))) {\n detach(liElement.querySelector('.' + PAUSE_UPLOAD));\n }\n this.removeChunkProgressBar(metaData);\n }\n this.raiseSuccessEvent(e, metaData.file);\n return;\n }\n if (metaData.file.statusCode !== '4') {\n this.sendNextRequest(metaData);\n }\n }\n }\n else {\n this.chunkUploadFailed(e, metaData);\n }\n };\n Uploader.prototype.sendNextRequest = function (metaData) {\n metaData.start = metaData.end;\n metaData.end += this.asyncSettings.chunkSize;\n metaData.end = Math.min(metaData.end, metaData.file.size);\n metaData.chunkIndex += 1;\n this.sendRequest(metaData.file, metaData);\n };\n Uploader.prototype.removeChunkFile = function (e, metaData, custom) {\n if (isNullOrUndefined(this.template) && (isNullOrUndefined(custom) && !custom)) {\n var liElement = this.getLiElement(metaData.file);\n var deleteIcon = liElement.querySelector('.' + ABORT_ICON);\n var spinnerTarget = deleteIcon;\n this.updateStatus(metaData.file, this.localizedTexts('fileUploadCancel'), '5');\n this.updateProgressBarClasses(liElement, UPLOAD_FAILED);\n this.removeProgressbar(liElement, 'failure');\n if (deleteIcon) {\n deleteIcon.classList.remove(ABORT_ICON);\n deleteIcon.classList.add(REMOVE_ICON);\n deleteIcon.setAttribute('title', this.localizedTexts('remove'));\n }\n var pauseIcon = liElement.querySelector('.' + PAUSE_UPLOAD);\n if (pauseIcon) {\n pauseIcon.classList.add(RETRY_ICON);\n pauseIcon.classList.remove(PAUSE_UPLOAD);\n pauseIcon.setAttribute('title', this.localizedTexts('retry'));\n }\n if (!isNullOrUndefined(liElement) && !isNullOrUndefined(deleteIcon)\n && !isNullOrUndefined(liElement.querySelector('.e-spinner-pane'))) {\n hideSpinner(spinnerTarget);\n detach(liElement.querySelector('.e-spinner-pane'));\n }\n }\n };\n Uploader.prototype.pauseUpload = function (metaData, e, custom) {\n metaData.file.statusCode = '4';\n metaData.file.status = this.localizedTexts('pause');\n this.updateMetaData(metaData);\n var eventArgs = {\n event: e ? e : null,\n file: metaData.file,\n chunkIndex: metaData.chunkIndex,\n chunkCount: Math.round(metaData.file.size / this.asyncSettings.chunkSize),\n chunkSize: this.asyncSettings.chunkSize\n };\n this.abortUpload(metaData, custom, eventArgs);\n };\n Uploader.prototype.abortUpload = function (metaData, custom, eventArgs) {\n if (metaData.file.statusCode !== '4') {\n metaData.request.emitError = false;\n metaData.request.httpRequest.abort();\n }\n var liElement = this.getLiElement(metaData.file);\n if (isNullOrUndefined(this.template) && (isNullOrUndefined(custom) || !custom)) {\n var targetElement = liElement.querySelector('.' + PAUSE_UPLOAD);\n targetElement.classList.remove(PAUSE_UPLOAD);\n targetElement.classList.add(RESUME_UPLOAD);\n targetElement.setAttribute('title', this.localizedTexts('resume'));\n targetElement.nextElementSibling.classList.add(REMOVE_ICON);\n targetElement.nextElementSibling.classList.remove(ABORT_ICON);\n targetElement.nextElementSibling.setAttribute('title', this.localizedTexts('remove'));\n }\n for (var i = 0; i < this.pausedData.length; i++) {\n if (this.pausedData[i].file.name === metaData.file.name) {\n this.pausedData.splice(i, 1);\n }\n }\n this.pausedData.push(metaData);\n this.trigger('pausing', eventArgs);\n };\n Uploader.prototype.resumeUpload = function (metaData, e, custom) {\n var liElement = this.getLiElement(metaData.file);\n var targetElement;\n if (!isNullOrUndefined(liElement)) {\n targetElement = liElement.querySelector('.' + RESUME_UPLOAD);\n }\n if (!isNullOrUndefined(targetElement) && (isNullOrUndefined(custom) || !custom)) {\n targetElement.classList.remove(RESUME_UPLOAD);\n targetElement.classList.add(PAUSE_UPLOAD);\n targetElement.setAttribute('title', this.localizedTexts('pause'));\n targetElement.nextElementSibling.classList.remove(REMOVE_ICON);\n targetElement.nextElementSibling.classList.add(ABORT_ICON);\n targetElement.nextElementSibling.setAttribute('title', this.localizedTexts('abort'));\n }\n metaData.file.status = this.localizedTexts('inProgress');\n metaData.file.statusCode = '3';\n this.updateMetaData(metaData);\n var eventArgs = {\n event: e ? e : null,\n file: metaData.file,\n chunkIndex: metaData.chunkIndex,\n chunkCount: Math.round(metaData.file.size / this.asyncSettings.chunkSize),\n chunkSize: this.asyncSettings.chunkSize\n };\n this.trigger('resuming', eventArgs);\n for (var i = 0; i < this.pausedData.length; i++) {\n if (this.pausedData[i].end === this.pausedData[i].file.size) {\n this.chunkUploadComplete(e, metaData, custom);\n }\n else {\n if (this.pausedData[i].file.name === metaData.file.name) {\n this.pausedData[i].start = this.pausedData[i].end;\n this.pausedData[i].end = this.pausedData[i].end + this.asyncSettings.chunkSize;\n this.pausedData[i].end = Math.min(this.pausedData[i].end, this.pausedData[i].file.size);\n this.pausedData[i].chunkIndex = this.pausedData[i].chunkIndex + 1;\n this.sendRequest(this.pausedData[i].file, this.pausedData[i], custom);\n }\n }\n }\n };\n Uploader.prototype.updateMetaData = function (metaData) {\n if (this.uploadMetaData.indexOf(metaData) === -1) {\n this.uploadMetaData.push(metaData);\n }\n else {\n this.uploadMetaData.splice(this.uploadMetaData.indexOf(metaData), 1);\n this.uploadMetaData.push(metaData);\n }\n };\n Uploader.prototype.removeChunkProgressBar = function (metaData) {\n var liElement = this.getLiElement(metaData.file);\n if (!isNullOrUndefined(liElement)) {\n this.updateProgressBarClasses(liElement, UPLOAD_SUCCESS);\n this.removeProgressbar(liElement, 'success');\n var cancelButton = liElement.querySelector('.' + ABORT_ICON);\n if (!isNullOrUndefined(cancelButton)) {\n cancelButton.classList.add(DELETE_ICON);\n cancelButton.setAttribute('title', this.localizedTexts('delete'));\n cancelButton.classList.remove(ABORT_ICON, UPLOAD_INPROGRESS);\n }\n }\n };\n Uploader.prototype.chunkUploadFailed = function (e, metaData, custom) {\n var _this = this;\n var chunkCount = Math.max(Math.ceil(metaData.file.size / this.asyncSettings.chunkSize), 1);\n var liElement;\n if (isNullOrUndefined(this.template) && (isNullOrUndefined(custom) || !custom)) {\n liElement = this.getLiElement(metaData.file);\n }\n var requestResponse = e && e.currentTarget ? this.getResponse(e) : null;\n var eventArgs = {\n event: e,\n file: metaData.file,\n chunkIndex: metaData.chunkIndex,\n totalChunk: chunkCount,\n chunkSize: this.asyncSettings.chunkSize,\n cancel: false,\n response: requestResponse\n };\n this.trigger('chunkFailure', eventArgs, function (eventArgs) {\n // To prevent triggering of failure event\n if (!eventArgs.cancel) {\n if (metaData.retryCount < _this.asyncSettings.retryCount) {\n setTimeout(function () {\n _this.retryRequest(liElement, metaData, custom);\n }, _this.asyncSettings.retryAfterDelay);\n }\n else {\n if (!isNullOrUndefined(liElement)) {\n var pauseButton = liElement.querySelector('.' + PAUSE_UPLOAD) ?\n liElement.querySelector('.' + PAUSE_UPLOAD) : liElement.querySelector('.' + RESUME_UPLOAD);\n if (!isNullOrUndefined(pauseButton)) {\n pauseButton.classList.add(RETRY_ICON);\n pauseButton.classList.remove(PAUSE_UPLOAD, RESUME_UPLOAD);\n }\n _this.updateProgressBarClasses(liElement, UPLOAD_FAILED);\n _this.removeProgressbar(liElement, 'failure');\n liElement.querySelector('.e-icons').classList.remove(UPLOAD_INPROGRESS);\n var iconElement = liElement.querySelector('.' + ABORT_ICON) ?\n liElement.querySelector('.' + ABORT_ICON) : liElement.querySelector('.' + REMOVE_ICON);\n iconElement.classList.remove(ABORT_ICON);\n if (!isNullOrUndefined(liElement.querySelector('.' + PAUSE_UPLOAD))) {\n detach(liElement.querySelector('.' + PAUSE_UPLOAD));\n }\n if (metaData.start > 0) {\n iconElement.classList.add(DELETE_ICON);\n iconElement.setAttribute('title', _this.localizedTexts('delete'));\n }\n else {\n iconElement.classList.add(REMOVE_ICON);\n iconElement.setAttribute('title', _this.localizedTexts('remove'));\n }\n }\n metaData.retryCount = 0;\n var file_1 = metaData.file;\n var failureMessage = _this.localizedTexts('uploadFailedMessage');\n var args = {\n e: e, response: requestResponse,\n operation: 'upload',\n file: _this.updateStatus(file_1, failureMessage, '0', false),\n statusText: failureMessage\n };\n _this.trigger('failure', args, function (args) {\n _this.updateStatus(file_1, args.statusText, '0');\n _this.uploadSequential();\n _this.checkActionComplete(true);\n });\n }\n }\n });\n };\n Uploader.prototype.retryRequest = function (liElement, metaData, custom) {\n if (isNullOrUndefined(this.template) && (isNullOrUndefined(custom) || !custom) && liElement) {\n this.updateProgressBarClasses(liElement, UPLOAD_FAILED);\n }\n metaData.retryCount += 1;\n this.sendRequest(metaData.file, metaData);\n };\n Uploader.prototype.checkPausePlayAction = function (e) {\n var targetElement = e.target;\n var selectedElement = e.target.parentElement;\n var index = this.fileList.indexOf(selectedElement);\n var fileData = this.filesData[index];\n var metaData = this.getCurrentMetaData(fileData);\n if (targetElement.classList.contains(PAUSE_UPLOAD)) {\n /* istanbul ignore next */\n this.pauseUpload(metaData, e);\n }\n else if (targetElement.classList.contains(RESUME_UPLOAD)) {\n /* istanbul ignore next */\n this.resumeUpload(metaData, e);\n }\n else if (targetElement.classList.contains(RETRY_ICON)) {\n if (metaData.file.status === this.localizedTexts('fileUploadCancel')) {\n this.retryUpload(metaData, false);\n }\n else {\n this.retryUpload(metaData, true);\n }\n }\n };\n Uploader.prototype.retryUpload = function (metaData, fromcanceledStage) {\n if (fromcanceledStage) {\n metaData.end = metaData.end + this.asyncSettings.chunkSize;\n metaData.start = metaData.start + this.asyncSettings.chunkSize;\n this.sendRequest(metaData.file, metaData);\n }\n else {\n metaData.file.statusCode = '1';\n metaData.file.status = this.localizedTexts('readyToUploadMessage');\n this.chunkUpload(metaData.file);\n }\n /* istanbul ignore next */\n (this.getLiElement(metaData.file)).classList.add(RESTRICT_RETRY);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Uploader.prototype.chunkUploadInProgress = function (e, metaData, custom) {\n var _this = this;\n if (metaData.file.statusCode === '4') {\n return;\n }\n if (metaData.file.statusCode !== '4' && metaData.file.statusCode !== '5') {\n metaData.file.statusCode = '3';\n metaData.file.status = this.localizedTexts('inProgress');\n }\n this.updateMetaData(metaData);\n var liElement = this.getLiElement(metaData.file);\n if (isNullOrUndefined(liElement)) {\n return;\n }\n var retryElement = liElement.querySelector('.' + RETRY_ICON);\n if (!isNullOrUndefined(retryElement)) {\n retryElement.classList.add(PAUSE_UPLOAD);\n retryElement.setAttribute('title', this.localizedTexts('pause'));\n retryElement.classList.remove(RETRY_ICON);\n }\n if (!isNullOrUndefined(liElement)) {\n if (!(liElement.querySelectorAll('.' + PROGRESS_WRAPPER).length > 0)) {\n var statusElement = liElement.querySelector('.' + STATUS);\n if (isNullOrUndefined(this.template)) {\n statusElement.classList.add(UPLOAD_INPROGRESS);\n statusElement.classList.remove(UPLOAD_FAILED);\n this.createProgressBar(liElement);\n this.updateProgressBarClasses(liElement, UPLOAD_INPROGRESS);\n }\n var clearIcon = liElement.querySelector('.' + REMOVE_ICON) ? liElement.querySelector('.' + REMOVE_ICON) :\n liElement.querySelector('.' + DELETE_ICON);\n if (!isNullOrUndefined(clearIcon)) {\n clearIcon.classList.add(ABORT_ICON);\n clearIcon.setAttribute('title', this.localizedTexts('abort'));\n clearIcon.classList.remove(REMOVE_ICON);\n }\n }\n if (!isNaN(Math.round((e.loaded / e.total) * 100)) && isNullOrUndefined(this.template) && metaData.file.statusCode !== '4') {\n var progressVal = void 0;\n var totalChunks = Math.ceil(metaData.file.size / this.asyncSettings.chunkSize) - 1;\n if (this.asyncSettings.chunkSize && totalChunks) {\n progressVal = Math.round(metaData.chunkIndex / totalChunks * 100);\n this.changeProgressValue(liElement, progressVal.toString() + '%');\n }\n }\n if (metaData.chunkIndex === 0) {\n this.checkActionButtonStatus();\n }\n }\n if (isNullOrUndefined(liElement.querySelector('.' + PAUSE_UPLOAD)) && isNullOrUndefined(this.template)\n && isNullOrUndefined(liElement.querySelector('.' + DELETE_ICON))) {\n this.pauseButton = this.createElement('span', { className: 'e-icons e-file-pause-btn', attrs: { 'tabindex': this.btnTabIndex } });\n if (this.browserName === 'msie') {\n this.pauseButton.classList.add('e-msie');\n }\n var abortIcon = liElement.querySelector('.' + ABORT_ICON);\n abortIcon.parentElement.insertBefore(this.pauseButton, abortIcon);\n this.pauseButton.setAttribute('title', this.localizedTexts('pause'));\n this.pauseButton.addEventListener('click', function (e) {\n _this.checkPausePlayAction(e);\n }, false);\n }\n };\n /**\n * It is used to convert bytes value into kilobytes or megabytes depending on the size based\n * on [binary prefix](https://en.wikipedia.org/wiki/Binary_prefix).\n *\n * @param { number } bytes - Specifies the file size in bytes.\n * @returns {string} - Returns the file size.\n */\n Uploader.prototype.bytesToSize = function (bytes) {\n var i = -1;\n if (!bytes) {\n return '0.0 KB';\n }\n do {\n bytes = bytes / 1024;\n i++;\n } while (bytes > 99);\n if (i >= 2) {\n bytes = bytes * 1024;\n i = 1;\n }\n return Math.max(bytes, 0).toFixed(1) + ' ' + ['KB', 'MB'][i];\n };\n /**\n * Allows you to sort the file data alphabetically based on its file name clearly.\n *\n * @param { FileList } filesData - specifies the files data for upload.\n * @returns {File[]}\n */\n /* istanbul ignore next */\n Uploader.prototype.sortFileList = function (filesData) {\n filesData = filesData ? filesData : this.sortFilesList;\n var files = filesData;\n var fileNames = [];\n for (var i = 0; i < files.length; i++) {\n fileNames.push(files[i].name);\n }\n var sortedFileNames = fileNames.sort();\n var sortedFilesData = [];\n for (var _i = 0, sortedFileNames_1 = sortedFileNames; _i < sortedFileNames_1.length; _i++) {\n var name_3 = sortedFileNames_1[_i];\n for (var i = 0; i < files.length; i++) {\n if (name_3 === files[i].name) {\n sortedFilesData.push(files[i]);\n }\n }\n }\n return sortedFilesData;\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n Uploader.prototype.destroy = function () {\n this.element.value = null;\n this.clearTemplate();\n this.clearAll();\n this.unWireEvents();\n this.unBindDropEvents();\n if (this.multiple) {\n this.element.removeAttribute('multiple');\n }\n if (!this.enabled) {\n this.element.removeAttribute('disabled');\n }\n this.element.removeAttribute('accept');\n this.setInitialAttributes();\n var attributes = ['aria-label', 'directory', 'webkitdirectory', 'tabindex'];\n for (var _i = 0, attributes_2 = attributes; _i < attributes_2.length; _i++) {\n var key = attributes_2[_i];\n this.element.removeAttribute(key);\n }\n if (!isNullOrUndefined(this.uploadWrapper)) {\n this.uploadWrapper.parentElement.appendChild(this.element);\n detach(this.uploadWrapper);\n }\n this.uploadWrapper = null;\n this.uploadWrapper = null;\n this.browseButton = null;\n this.dropAreaWrapper = null;\n this.dropZoneElement = null;\n this.dropArea = null;\n this.keyboardModule = null;\n this.clearButton = null;\n this.uploadButton = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Allows you to call the upload process manually by calling save URL action.\n * To process the selected files (added in upload queue), pass an empty argument otherwise\n * upload the specific file based on its argument.\n *\n * @param { FileInfo | FileInfo[] } files - Specifies the files data for upload.\n * @param {boolean} custom - Specifies whether the uploader is rendered with custom file list.\n * @returns {void}\n */\n Uploader.prototype.upload = function (files, custom) {\n var _this = this;\n files = files ? files : this.filesData;\n if (this.sequentialUpload && (this.isFirstFileOnSelection || custom)) {\n this.sequenceUpload(files);\n }\n else {\n var uploadFiles_1 = this.getFilesInArray(files);\n var eventArgs = {\n customFormData: [],\n currentRequest: null,\n cancel: false\n };\n this.trigger('beforeUpload', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.uploadFiles(uploadFiles_1, custom);\n }\n });\n }\n };\n Uploader.prototype.getFilesInArray = function (files) {\n var uploadFiles = [];\n if (files instanceof Array) {\n uploadFiles = files;\n }\n else {\n uploadFiles.push(files);\n }\n return uploadFiles;\n };\n /* istanbul ignore next */\n Uploader.prototype.serverReadFileBase64 = function (fileIndex, position, totalCount) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n var file = _this.fileStreams[fileIndex].rawFile;\n try {\n var reader = new FileReader();\n reader.onload = (function (args) {\n return function () {\n try {\n var contents = args.result;\n var data = contents ? contents.split(';base64,')[1] : null;\n resolve(data);\n }\n catch (e) {\n reject(e);\n }\n };\n })(reader);\n reader.readAsDataURL(file.slice(position, position + totalCount));\n }\n catch (e) {\n reject(e);\n }\n });\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n /* istanbul ignore next */\n Uploader.prototype.uploadFileCount = function (ele) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n var files = this.filesData;\n if (!files || files.length === 0) {\n return -1;\n }\n var result = files.length;\n return result;\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n /* istanbul ignore next */\n Uploader.prototype.getFileRead = function (index, ele) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n var files = this.filesData;\n if (!files || files.length === 0) {\n return -1;\n }\n var file = files[index];\n var fileCount = this.newFileRef++;\n this.fileStreams[fileCount] = file;\n return fileCount;\n };\n Uploader.prototype.uploadFiles = function (files, custom) {\n var selectedFiles = [];\n if (this.asyncSettings.saveUrl === '' || isNullOrUndefined(this.asyncSettings.saveUrl)) {\n return;\n }\n if (!custom || isNullOrUndefined(custom)) {\n if (!this.multiple) {\n var file = [];\n file.push(files[0]);\n selectedFiles = this.filterfileList(file);\n }\n else {\n selectedFiles = this.filterfileList(files);\n }\n }\n else {\n selectedFiles = files;\n }\n for (var i = 0; i < selectedFiles.length; i++) {\n this.uploadFilesRequest(selectedFiles, i, custom);\n }\n };\n Uploader.prototype.uploadFilesRequest = function (selectedFiles, i, custom) {\n var _this = this;\n var chunkEnabled = this.checkChunkUpload();\n var ajax = new Ajax(this.asyncSettings.saveUrl, 'POST', true, null);\n ajax.emitError = false;\n var eventArgs = {\n fileData: selectedFiles[i],\n customFormData: [],\n cancel: false\n };\n var formData = new FormData();\n ajax.beforeSend = function (e) {\n eventArgs.currentRequest = ajax.httpRequest;\n _this.trigger('uploading', eventArgs, function (eventArgs) {\n /* istanbul ignore next */\n if (eventArgs.cancel) {\n _this.eventCancelByArgs(e, eventArgs, selectedFiles[i]);\n }\n _this.updateFormData(formData, eventArgs.customFormData);\n });\n };\n if (selectedFiles[i].statusCode === '1') {\n var name_4 = this.element.getAttribute('name');\n formData.append(name_4, selectedFiles[i].rawFile, selectedFiles[i].name);\n if (chunkEnabled && selectedFiles[i].size > this.asyncSettings.chunkSize) {\n this.chunkUpload(selectedFiles[i], custom, i);\n }\n else {\n ajax.onLoad = function (e) {\n if (eventArgs.cancel) {\n return {};\n }\n else {\n _this.uploadComplete(e, selectedFiles[i], custom);\n return {};\n }\n };\n ajax.onUploadProgress = function (e) {\n if (eventArgs.cancel) {\n return {};\n }\n else {\n _this.uploadInProgress(e, selectedFiles[i], custom, ajax);\n return {};\n }\n };\n /* istanbul ignore next */\n ajax.onError = function (e) {\n _this.uploadFailed(e, selectedFiles[i]);\n return {};\n };\n ajax.send(formData);\n }\n }\n };\n Uploader.prototype.spliceFiles = function (liIndex) {\n var liElement = this.fileList[liIndex];\n var allFiles = this.getFilesData();\n var nameElements = +liElement.getAttribute('data-files-count');\n var startIndex = 0;\n for (var i = 0; i < liIndex; i++) {\n startIndex += (+this.fileList[i].getAttribute('data-files-count'));\n }\n var endIndex = (startIndex + nameElements) - 1;\n for (var j = endIndex; j >= startIndex; j--) {\n allFiles.splice(j, 1);\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Remove the uploaded file from server manually by calling the remove URL action.\n * If you pass an empty argument to this method, the complete file list can be cleared,\n * otherwise remove the specific file based on its argument (“file_data”).\n *\n * @param { FileInfo | FileInfo[] } fileData - specifies the files data to remove from file list/server.\n * @param { boolean } customTemplate - Set true if the component rendering with customize template.\n * @param { boolean } removeDirectly - Set true if files remove without removing event.\n * @param { boolean } postRawFile - Set false, to post file name only to the remove action.\n * @returns {void}\n */\n Uploader.prototype.remove = function (fileData, customTemplate, removeDirectly, postRawFile, args) {\n var _this = this;\n if (isNullOrUndefined(postRawFile)) {\n postRawFile = true;\n }\n var eventArgs = {\n event: args,\n cancel: false,\n filesData: [],\n customFormData: [],\n postRawFile: postRawFile,\n currentRequest: null\n };\n var beforeEventArgs = {\n cancel: false,\n customFormData: [],\n currentRequest: null\n };\n this.trigger('beforeRemove', beforeEventArgs, function (beforeEventArgs) {\n if (!beforeEventArgs.cancel) {\n if (_this.isFormUpload()) {\n eventArgs.filesData = fileData;\n _this.trigger('removing', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n var removingFiles = _this.getFilesInArray(fileData);\n var isLiRemoved = false;\n var liIndex = void 0;\n for (var _i = 0, removingFiles_1 = removingFiles; _i < removingFiles_1.length; _i++) {\n var data = removingFiles_1[_i];\n if (!isLiRemoved) {\n liIndex = _this.fileList.indexOf(data.list);\n }\n if (liIndex > -1) {\n var inputElement = !isNullOrUndefined(data.input) ? data.input : null;\n if (inputElement) {\n detach(inputElement);\n }\n _this.spliceFiles(liIndex);\n detach(_this.fileList[liIndex]);\n _this.fileList.splice(liIndex, 1);\n isLiRemoved = true;\n liIndex = -1;\n }\n }\n }\n });\n }\n else if (_this.isForm && (isNullOrUndefined(_this.asyncSettings.removeUrl) || _this.asyncSettings.removeUrl === '')) {\n eventArgs.filesData = _this.getFilesData();\n _this.trigger('removing', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.clearAll();\n }\n });\n }\n else {\n var removeFiles = [];\n fileData = !isNullOrUndefined(fileData) ? fileData : _this.filesData;\n if (fileData instanceof Array) {\n removeFiles = fileData;\n }\n else {\n removeFiles.push(fileData);\n }\n eventArgs.filesData = removeFiles;\n var removeUrl = _this.asyncSettings.removeUrl;\n var validUrl = (removeUrl === '' || isNullOrUndefined(removeUrl)) ? false : true;\n var _loop_5 = function (files) {\n var fileUploadedIndex = _this.uploadedFilesData.indexOf(files);\n if ((files.statusCode === '2' || files.statusCode === '4' || (files.statusCode === '0' &&\n fileUploadedIndex !== -1)) && validUrl) {\n _this.removeUploadedFile(files, eventArgs, removeDirectly, customTemplate);\n }\n else {\n if (!removeDirectly) {\n _this.trigger('removing', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.removeFilesData(files, customTemplate);\n }\n });\n }\n else {\n _this.removeFilesData(files, customTemplate);\n }\n }\n if (args && !args.target.classList.contains(REMOVE_ICON)) {\n _this.checkActionComplete(false);\n }\n };\n for (var _i = 0, removeFiles_1 = removeFiles; _i < removeFiles_1.length; _i++) {\n var files = removeFiles_1[_i];\n _loop_5(files);\n }\n }\n }\n });\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n /**\n * Clear all the file entries from list that can be uploaded files or added in upload queue.\n *\n * @returns {void}\n */\n Uploader.prototype.clearAll = function () {\n var _this = this;\n if (isNullOrUndefined(this.listParent)) {\n if (this.browserName !== 'msie') {\n this.element.value = '';\n }\n this.filesData = [];\n return;\n }\n var eventArgs = {\n cancel: false,\n filesData: this.filesData\n };\n this.trigger('clearing', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.clearData();\n _this.actionCompleteCount = 0;\n _this.count = -1;\n }\n });\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Get the data of files which are shown in file list.\n *\n * @param { number } index - specifies the file list item(li) index.\n * @returns {FileInfo[]}\n */\n Uploader.prototype.getFilesData = function (index) {\n if (isNullOrUndefined(index)) {\n return this.filesData;\n }\n else {\n return this.getSelectedFiles(index);\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Pauses the in-progress chunked upload based on the file data.\n *\n * @param { FileInfo | FileInfo[] } fileData - specifies the files data to pause from uploading.\n * @param { boolean } custom - Set true if used custom UI.\n * @returns {void}\n */\n Uploader.prototype.pause = function (fileData, custom) {\n fileData = fileData ? fileData : this.filesData;\n var fileDataFiles = this.getFilesInArray(fileData);\n this.pauseUploading(fileDataFiles, custom);\n };\n Uploader.prototype.pauseUploading = function (fileData, custom) {\n var files = this.getFiles(fileData);\n for (var i = 0; i < files.length; i++) {\n if (files[i].statusCode === '3') {\n this.pauseUpload(this.getCurrentMetaData(files[i], null), null, custom);\n }\n }\n };\n Uploader.prototype.getFiles = function (fileData) {\n var files = [];\n if (!isNullOrUndefined(fileData) && !(fileData instanceof Array)) {\n files.push(fileData);\n }\n else {\n files = fileData;\n }\n return files;\n };\n /**\n * Resumes the chunked upload that is previously paused based on the file data.\n *\n * @param { FileInfo | FileInfo[] } fileData - specifies the files data to resume the paused file.\n * @param { boolean } custom - Set true if used custom UI.\n * @returns {void}\n */\n Uploader.prototype.resume = function (fileData, custom) {\n fileData = fileData ? fileData : this.filesData;\n var fileDataFiles = this.getFilesInArray(fileData);\n this.resumeFiles(fileDataFiles, custom);\n };\n Uploader.prototype.resumeFiles = function (fileData, custom) {\n var files = this.getFiles(fileData);\n for (var i = 0; i < files.length; i++) {\n if (files[i].statusCode === '4') {\n this.resumeUpload(this.getCurrentMetaData(files[i], null), null, custom);\n }\n }\n };\n /**\n * Retries the canceled or failed file upload based on the file data.\n *\n * @param { FileInfo | FileInfo[] } fileData - specifies the files data to retry the canceled or failed file.\n * @param { boolean } fromcanceledStage - Set true to retry from canceled stage and set false to retry from initial stage.\n * @param {boolean} custom -Specifies whether the uploader is rendered with custom file list.\n * @returns {void}\n */\n Uploader.prototype.retry = function (fileData, fromcanceledStage, custom) {\n fileData = fileData ? fileData : this.filesData;\n var fileDataFiles = this.getFilesInArray(fileData);\n if (this.sequentialUpload && this.isFirstFileOnSelection) {\n this.isFirstFileOnSelection = false;\n }\n this.retryFailedFiles(fileDataFiles, fromcanceledStage, custom);\n };\n Uploader.prototype.retryFailedFiles = function (fileData, fromcanceledStage, custom) {\n var files = this.getFiles(fileData);\n for (var i = 0; i < files.length; i++) {\n if (files[i].statusCode === '5' || files[i].statusCode === '0') {\n if (this.asyncSettings.chunkSize > 0 && this.getCurrentMetaData(files[i], null)) {\n this.retryUpload(this.getCurrentMetaData(files[i], null), fromcanceledStage);\n }\n else {\n var liElement = void 0;\n if (!custom) {\n liElement = this.fileList[this.filesData.indexOf(files[i])];\n }\n this.reloadcanceledFile(null, files[i], liElement, custom);\n }\n }\n }\n };\n /**\n * Stops the in-progress chunked upload based on the file data.\n * When the file upload is canceled, the partially uploaded file is removed from server.\n *\n * @param { FileInfo | FileInfo[] } fileData - specifies the files data to cancel the progressing file.\n * @returns {void}\n */\n Uploader.prototype.cancel = function (fileData) {\n fileData = fileData ? fileData : this.filesData;\n var cancelingFiles = this.getFilesInArray(fileData);\n this.cancelUpload(cancelingFiles);\n };\n Uploader.prototype.cancelUpload = function (fileData) {\n var files = this.getFiles(fileData);\n if (this.asyncSettings.chunkSize > 0) {\n for (var i = 0; i < files.length; i++) {\n if (files[i].statusCode === '3') {\n var metaData = this.getCurrentMetaData(files[i], null);\n metaData.file.statusCode = '5';\n metaData.file.status = this.localizedTexts('fileUploadCancel');\n this.updateMetaData(metaData);\n this.showHideUploadSpinner(files[i]);\n }\n }\n }\n else {\n for (var i = 0; i < files.length; i++) {\n if (files[i].statusCode === '3') {\n files[i].statusCode = '5';\n files[i].status = this.localizedTexts('fileUploadCancel');\n this.showHideUploadSpinner(files[i]);\n }\n }\n }\n };\n Uploader.prototype.showHideUploadSpinner = function (files) {\n var liElement = this.getLiElement(files);\n if (!isNullOrUndefined(liElement) && isNullOrUndefined(this.template)) {\n var spinnerTarget = liElement.querySelector('.' + ABORT_ICON);\n createSpinner({ target: spinnerTarget, width: '20px' });\n showSpinner(spinnerTarget);\n }\n };\n __decorate([\n Complex({ saveUrl: '', removeUrl: '' }, AsyncSettings)\n ], Uploader.prototype, \"asyncSettings\", void 0);\n __decorate([\n Property(false)\n ], Uploader.prototype, \"sequentialUpload\", void 0);\n __decorate([\n Property({})\n ], Uploader.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('')\n ], Uploader.prototype, \"cssClass\", void 0);\n __decorate([\n Property(true)\n ], Uploader.prototype, \"enabled\", void 0);\n __decorate([\n Property(null)\n ], Uploader.prototype, \"template\", void 0);\n __decorate([\n Property(true)\n ], Uploader.prototype, \"multiple\", void 0);\n __decorate([\n Property(true)\n ], Uploader.prototype, \"autoUpload\", void 0);\n __decorate([\n Property(true)\n ], Uploader.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Complex({}, ButtonsProps)\n ], Uploader.prototype, \"buttons\", void 0);\n __decorate([\n Property('')\n ], Uploader.prototype, \"allowedExtensions\", void 0);\n __decorate([\n Property(0)\n ], Uploader.prototype, \"minFileSize\", void 0);\n __decorate([\n Property(30000000)\n ], Uploader.prototype, \"maxFileSize\", void 0);\n __decorate([\n Property(null)\n ], Uploader.prototype, \"dropArea\", void 0);\n __decorate([\n Collection([{}], FilesProp)\n ], Uploader.prototype, \"files\", void 0);\n __decorate([\n Property(true)\n ], Uploader.prototype, \"showFileList\", void 0);\n __decorate([\n Property(false)\n ], Uploader.prototype, \"directoryUpload\", void 0);\n __decorate([\n Property('Default')\n ], Uploader.prototype, \"dropEffect\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"rendering\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"beforeUpload\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"fileListRendering\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"selected\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"uploading\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"success\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"failure\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"removing\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"beforeRemove\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"clearing\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"progress\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"chunkSuccess\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"chunkFailure\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"chunkUploading\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"canceling\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"pausing\", void 0);\n __decorate([\n Event()\n ], Uploader.prototype, \"resuming\", void 0);\n Uploader = __decorate([\n NotifyPropertyChanges\n ], Uploader);\n return Uploader;\n}(Component));\nexport { Uploader };\n/* eslint-enable @typescript-eslint/no-explicit-any */\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { Uploader } from '@syncfusion/ej2-inputs';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * Represents the React Uploader Component\n * ```html\n * \n * ```\n */\nvar UploaderComponent = /** @class */ (function (_super) {\n __extends(UploaderComponent, _super);\n function UploaderComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = false;\n _this.directivekeys = { 'files': 'uploadedFiles' };\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n UploaderComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement(React.Fragment, null, [].concat(React.createElement(\"input\", this.getDefaultAttributes()), this.portals));\n }\n };\n return UploaderComponent;\n}(Uploader));\nexport { UploaderComponent };\napplyMixins(UploaderComponent, [ComponentBase, React.Component]);\n","import React from \"react\";\r\nimport { UploaderComponent } from \"@syncfusion/ej2-react-inputs\";\r\n\r\nconst Uploader = () => {\r\n const path = {\r\n saveUrl: process.env.REACT_APP_API_BASE_URL + \"/contacts/upload\",\r\n };\r\n\r\n const onUploadSuccess = (args) => {\r\n if (args.operation === \"upload\") {\r\n console.log(\"File uploaded successfully\", args);\r\n }\r\n };\r\n const onUploadFailure = (args) => {\r\n console.log(\"File failed to upload\", args);\r\n };\r\n\r\n const uploading = (args) => {\r\n const token = localStorage.getItem(\"accessToken\");\r\n if (token)\r\n args.currentRequest.setRequestHeader(\"Authorization\", `Bearer ${token}`);\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default Uploader;\r\n","import React, { useEffect, useState } from \"react\";\nimport useTitle from \"../Hooks/useTitle\";\nimport Datagrid from \"../Components/Datagrid\";\nimport DatagridContext from \"../Context/datagridContext\";\nimport UnauthorizePage from \"./UnauthorizePage\";\nimport ForbiddenPage from \"./ForbiddenPage\";\nimport toolbar from \"../Config/toolbarConfig\";\nimport editSettings from \"../Config/editSettingsConfig\";\nimport { useTranslation } from \"react-i18next\";\nimport Uploader from \"../Components/Uploader\";\nimport { ButtonComponent } from \"@syncfusion/ej2-react-buttons\";\nimport { useNavigate } from \"react-router-dom\";\nimport { MaskedTextBoxComponent } from \"@syncfusion/ej2-react-inputs\";\nimport { ComboBoxComponent } from \"@syncfusion/ej2-react-dropdowns\";\nconst ContactsPage = () => {\n const [url, setUrl] = useState(\"\");\n const [from, setFrom] = useState(\"\");\n const [status, setStatus] = useState(null);\n const { t } = useTranslation();\n\n const baseUrl = process.env.REACT_APP_API_BASE_URL;\n\n useTitle(`${t(\"Contacts\")} | Netileti`);\n const navigate = useNavigate();\n const getData = async () => {\n setUrl(`${baseUrl}/contacts`);\n setFrom(\"Contacts\");\n };\n\n // const refreshGrid = () => {\n // const gridElement = document.getElementById(\"adaptivebrowser\");\n // if (gridElement) {\n // const grid = gridElement.ej2_instances[0];\n // grid.refresh();\n // }\n // };\n\n useEffect(() => {\n getData();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n useEffect(() => {}, [status]);\n\n const editTemplate = (props) => {\n return (\n {\n if (props.onChange) {\n props.onChange({\n target: {\n name: \"phoneNumber\",\n value: e.value,\n },\n });\n }\n }}\n mask={\"+90 (000)-000-0000\"}\n value={props.phoneNumber || \"\"}\n floatLabelType=\"Always\"\n />\n );\n };\n\n const formatPhoneNumber = (value) => {\n if (!value) return \"\";\n const numericValue = value.replace(/[^0-9]/g, \"\");\n if (numericValue.length !== 12) return value;\n\n return `+${numericValue.slice(0, 2)} (${numericValue.slice(\n 2,\n 5\n )})-${numericValue.slice(5, 8)}-${numericValue.slice(8)}`;\n };\n\n const columns = [\n {\n field: \"id\",\n headerText: \"id\",\n allowEditing: false,\n isPrimaryKey: true,\n visible: false,\n },\n {\n field: \"code\",\n headerText: t(\"Code\"),\n allowEditing: true,\n validationRules: { required: true, maxLength: 50 },\n },\n {\n field: \"taxNumber\",\n headerText: t(\"TaxNumber\"),\n allowEditing: true,\n validationRules: { required: true, number: true, maxLength: 11 },\n },\n {\n field: \"definition\",\n headerText: t(\"Definition\"),\n allowEditing: true,\n validationRules: { maxLength: 50 },\n },\n {\n field: \"address\",\n headerText: t(\"Address\"),\n allowEditing: true,\n validationRules: { maxLength: 100 },\n },\n {\n field: \"city\",\n headerText: t(\"City\"),\n allowEditing: true,\n validationRules: { maxLength: 50 },\n },\n {\n field: \"country\",\n headerText: t(\"Country\"),\n allowEditing: true,\n validationRules: { maxLength: 50 },\n },\n {\n field: \"inCharge\",\n headerText: t(\"InCharge\"),\n allowEditing: true,\n validationRules: { maxLength: 50 },\n },\n {\n field: \"phoneNumber\",\n headerText: t(\"Phone Number\"),\n allowEditing: true,\n editTemplate: editTemplate,\n template: (props) => formatPhoneNumber(props.phoneNumber),\n },\n {\n field: \"isEnabled\",\n headerText: t(\"isEnabled\"),\n allowEditing: true,\n editType: \"booleanedit\",\n isCheckbox: \"True\",\n textAlign: \"Center\",\n filterTemplate: () => (\n {\n const selectedValue = e.value;\n const gridElement = document.getElementById(\"adaptivebrowser\");\n if (gridElement) {\n const grid = gridElement.ej2_instances[0];\n \n if (grid) {\n if (selectedValue) {\n // Filtreyi uygula\n grid.filterByColumn(\"isEnabled\", \"equal\", selectedValue);\n } else {\n // Filtreyi temizle\n grid.removeFilteredColsByField(\"isEnabled\");\n }\n }\n }\n }}\n />\n ),\n },\n {\n field: \"\",\n headerText: \"\",\n allowEditing: false,\n textAlign: \"center\",\n width: \"10%\",\n template: ({ id, phoneNumber, definition, isEnabled }) => (\n \n navigate(`/sendmessage`, {\n state: { contact: { phoneNumber, definition } },\n })\n }\n className={`e-btn e-primary`}\n >\n {/* {t(\"SendMessage\")} */}\n \n \n ),\n },\n ];\n \n if (!url) {\n return
    ;\n }\n return (\n \n {status === 401 ? (\n \n ) : status === 403 ? (\n \n ) : (\n
    \n \n \n \n
    \n

    \n {t(\"AddFromExcel\")}\n

    \n \n

    \n window.open(`${baseUrl}/contacts/download`)}\n >\n {t(\"TemplateExcel\")}\n \n

    \n
    \n
    \n )}\n \n );\n};\n\nexport default ContactsPage;\n","import React, { useState, useEffect } from \"react\";\r\nimport { useParams } from \"react-router-dom\";\r\nimport Datagrid from \"../Components/Datagrid\";\r\nimport UnauthorizePage from \"./UnauthorizePage\";\r\nimport ForbiddenPage from \"./ForbiddenPage\";\r\nimport DatagridContext from \"../Context/datagridContext\";\r\nimport toolbar from \"../Config/toolbarConfig\";\r\nimport useTitle from \"../Hooks/useTitle\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst TransactionDetailPage = () => {\r\n const { userId } = useParams();\r\n\r\n const [url, setUrl] = useState(\"\");\r\n const [from, setFrom] = useState(\"\");\r\n const [status, setStatus] = useState(null);\r\n\r\n const { t } = useTranslation();\r\n const baseUrl = process.env.REACT_APP_API_BASE_URL;\r\n\r\n useTitle(`${t(\"Transaction Details\")} | Netileti`);\r\n\r\n // const convertTimestamp = (unixTimestamp) => {\r\n // const date = new Date(unixTimestamp * 1000);\r\n // return date.toLocaleString();\r\n // };\r\n\r\n useEffect(() => {\r\n const fetchUserTransactions = async () => {\r\n setUrl(`${baseUrl}/credits/GetTransactions/${userId}`);\r\n setFrom(\"TransactionDetails\");\r\n };\r\n\r\n fetchUserTransactions();\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, []);\r\n\r\n const columns = [\r\n {\r\n field: \"id\",\r\n headerText: \"id\",\r\n allowEditing: false,\r\n isPrimaryKey: true,\r\n visible: false,\r\n },\r\n {\r\n field: \"type\",\r\n headerText: t(\"Transaction Type\"),\r\n allowEditing: false,\r\n },\r\n {\r\n field: \"creditAmount\",\r\n headerText: t(\"Amount\"),\r\n allowEditing: false,\r\n },\r\n {\r\n field: \"timestamp\",\r\n headerText: t(\"Time\"),\r\n allowEditing: false,\r\n },\r\n ];\r\n \r\n if (!url) {\r\n return
    ;\r\n }\r\n return (\r\n \r\n {status === 401 ? (\r\n \r\n ) : status === 403 ? (\r\n \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default TransactionDetailPage;\r\n","import React, { useEffect } from \"react\";\r\nimport useTitle from \"../Hooks/useTitle\";\r\nimport { useTranslation } from \"react-i18next\";\r\n\r\nconst NotFoundPage = () => {\r\n useTitle(\"Not Found | Netileti\");\r\n useEffect(() => {\r\n const timer = setTimeout(() => {\r\n window.location.href = \"/login\";\r\n }, 5000);\r\n\r\n return () => clearTimeout(timer);\r\n }, []);\r\n const { t } = useTranslation();\r\n return (\r\n \r\n

    404 - {t(\"Not Found\")}

    \r\n

    {t(\"redirected\")}

    \r\n \r\n );\r\n};\r\n\r\nexport default NotFoundPage;\r\n","import type {\n FormEncType,\n HTMLFormMethod,\n RelativeRoutingType,\n} from \"@remix-run/router\";\nimport { stripBasename, UNSAFE_warning as warning } from \"@remix-run/router\";\n\nexport const defaultMethod: HTMLFormMethod = \"get\";\nconst defaultEncType: FormEncType = \"application/x-www-form-urlencoded\";\n\nexport function isHtmlElement(object: any): object is HTMLElement {\n return object != null && typeof object.tagName === \"string\";\n}\n\nexport function isButtonElement(object: any): object is HTMLButtonElement {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"button\";\n}\n\nexport function isFormElement(object: any): object is HTMLFormElement {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"form\";\n}\n\nexport function isInputElement(object: any): object is HTMLInputElement {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"input\";\n}\n\ntype LimitedMouseEvent = Pick<\n MouseEvent,\n \"button\" | \"metaKey\" | \"altKey\" | \"ctrlKey\" | \"shiftKey\"\n>;\n\nfunction isModifiedEvent(event: LimitedMouseEvent) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nexport function shouldProcessLinkClick(\n event: LimitedMouseEvent,\n target?: string\n) {\n return (\n event.button === 0 && // Ignore everything but left clicks\n (!target || target === \"_self\") && // Let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // Ignore clicks with modifier keys\n );\n}\n\nexport type ParamKeyValuePair = [string, string];\n\nexport type URLSearchParamsInit =\n | string\n | ParamKeyValuePair[]\n | Record\n | URLSearchParams;\n\n/**\n * Creates a URLSearchParams object using the given initializer.\n *\n * This is identical to `new URLSearchParams(init)` except it also\n * supports arrays as values in the object form of the initializer\n * instead of just strings. This is convenient when you need multiple\n * values for a given key, but don't want to use an array initializer.\n *\n * For example, instead of:\n *\n * let searchParams = new URLSearchParams([\n * ['sort', 'name'],\n * ['sort', 'price']\n * ]);\n *\n * you can do:\n *\n * let searchParams = createSearchParams({\n * sort: ['name', 'price']\n * });\n */\nexport function createSearchParams(\n init: URLSearchParamsInit = \"\"\n): URLSearchParams {\n return new URLSearchParams(\n typeof init === \"string\" ||\n Array.isArray(init) ||\n init instanceof URLSearchParams\n ? init\n : Object.keys(init).reduce((memo, key) => {\n let value = init[key];\n return memo.concat(\n Array.isArray(value) ? value.map((v) => [key, v]) : [[key, value]]\n );\n }, [] as ParamKeyValuePair[])\n );\n}\n\nexport function getSearchParamsForLocation(\n locationSearch: string,\n defaultSearchParams: URLSearchParams | null\n) {\n let searchParams = createSearchParams(locationSearch);\n\n if (defaultSearchParams) {\n // Use `defaultSearchParams.forEach(...)` here instead of iterating of\n // `defaultSearchParams.keys()` to work-around a bug in Firefox related to\n // web extensions. Relevant Bugzilla tickets:\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1414602\n // https://bugzilla.mozilla.org/show_bug.cgi?id=1023984\n defaultSearchParams.forEach((_, key) => {\n if (!searchParams.has(key)) {\n defaultSearchParams.getAll(key).forEach((value) => {\n searchParams.append(key, value);\n });\n }\n });\n }\n\n return searchParams;\n}\n\n// Thanks https://github.com/sindresorhus/type-fest!\ntype JsonObject = { [Key in string]: JsonValue } & {\n [Key in string]?: JsonValue | undefined;\n};\ntype JsonArray = JsonValue[] | readonly JsonValue[];\ntype JsonPrimitive = string | number | boolean | null;\ntype JsonValue = JsonPrimitive | JsonObject | JsonArray;\n\nexport type SubmitTarget =\n | HTMLFormElement\n | HTMLButtonElement\n | HTMLInputElement\n | FormData\n | URLSearchParams\n | JsonValue\n | null;\n\n// One-time check for submitter support\nlet _formDataSupportsSubmitter: boolean | null = null;\n\nfunction isFormDataSubmitterSupported() {\n if (_formDataSupportsSubmitter === null) {\n try {\n new FormData(\n document.createElement(\"form\"),\n // @ts-expect-error if FormData supports the submitter parameter, this will throw\n 0\n );\n _formDataSupportsSubmitter = false;\n } catch (e) {\n _formDataSupportsSubmitter = true;\n }\n }\n return _formDataSupportsSubmitter;\n}\n\n/**\n * Submit options shared by both navigations and fetchers\n */\ninterface SharedSubmitOptions {\n /**\n * The HTTP method used to submit the form. Overrides `
    `.\n * Defaults to \"GET\".\n */\n method?: HTMLFormMethod;\n\n /**\n * The action URL path used to submit the form. Overrides ``.\n * Defaults to the path of the current route.\n */\n action?: string;\n\n /**\n * The encoding used to submit the form. Overrides ``.\n * Defaults to \"application/x-www-form-urlencoded\".\n */\n encType?: FormEncType;\n\n /**\n * Determines whether the form action is relative to the route hierarchy or\n * the pathname. Use this if you want to opt out of navigating the route\n * hierarchy and want to instead route based on /-delimited URL segments\n */\n relative?: RelativeRoutingType;\n\n /**\n * In browser-based environments, prevent resetting scroll after this\n * navigation when using the component\n */\n preventScrollReset?: boolean;\n\n /**\n * Enable flushSync for this submission's state updates\n */\n unstable_flushSync?: boolean;\n}\n\n/**\n * Submit options available to fetchers\n */\nexport interface FetcherSubmitOptions extends SharedSubmitOptions {}\n\n/**\n * Submit options available to navigations\n */\nexport interface SubmitOptions extends FetcherSubmitOptions {\n /**\n * Set `true` to replace the current entry in the browser's history stack\n * instead of creating a new one (i.e. stay on \"the same page\"). Defaults\n * to `false`.\n */\n replace?: boolean;\n\n /**\n * State object to add to the history stack entry for this navigation\n */\n state?: any;\n\n /**\n * Indicate a specific fetcherKey to use when using navigate=false\n */\n fetcherKey?: string;\n\n /**\n * navigate=false will use a fetcher instead of a navigation\n */\n navigate?: boolean;\n\n /**\n * Enable view transitions on this submission navigation\n */\n unstable_viewTransition?: boolean;\n}\n\nconst supportedFormEncTypes: Set = new Set([\n \"application/x-www-form-urlencoded\",\n \"multipart/form-data\",\n \"text/plain\",\n]);\n\nfunction getFormEncType(encType: string | null) {\n if (encType != null && !supportedFormEncTypes.has(encType as FormEncType)) {\n warning(\n false,\n `\"${encType}\" is not a valid \\`encType\\` for \\`\\`/\\`\\` ` +\n `and will default to \"${defaultEncType}\"`\n );\n\n return null;\n }\n return encType;\n}\n\nexport function getFormSubmissionInfo(\n target: SubmitTarget,\n basename: string\n): {\n action: string | null;\n method: string;\n encType: string;\n formData: FormData | undefined;\n body: any;\n} {\n let method: string;\n let action: string | null;\n let encType: string;\n let formData: FormData | undefined;\n let body: any;\n\n if (isFormElement(target)) {\n // When grabbing the action from the element, it will have had the basename\n // prefixed to ensure non-JS scenarios work, so strip it since we'll\n // re-prefix in the router\n let attr = target.getAttribute(\"action\");\n action = attr ? stripBasename(attr, basename) : null;\n method = target.getAttribute(\"method\") || defaultMethod;\n encType = getFormEncType(target.getAttribute(\"enctype\")) || defaultEncType;\n\n formData = new FormData(target);\n } else if (\n isButtonElement(target) ||\n (isInputElement(target) &&\n (target.type === \"submit\" || target.type === \"image\"))\n ) {\n let form = target.form;\n\n if (form == null) {\n throw new Error(\n `Cannot submit a \r\n \r\n\r\n {/* Firma Tanıtım Bölümü */}\r\n
    \r\n

    \r\n {t(\"message.unsubscribe.companyTitle\")}\r\n

    \r\n

    {t(\"message.unsubscribe.companyInfo\")}

    \r\n
    \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default UnsubscribePage;\r\n","import \"./App.css\";\nimport { Routes, Route, useLocation, Navigate } from \"react-router-dom\";\nimport { useEffect, useState } from \"react\";\n\nimport LoginLayout from \"./Layout/LoginLayout\";\nimport MainLayout from \"./Layout/MainLayout\";\n\nimport DashboardPage from \"./Pages/DashboardPage\";\nimport LoginPage from \"./Pages/LoginPage\";\nimport AccountsPage from \"./Pages/AccountsPage\";\nimport CreditsPage from \"./Pages/CreditsPage\";\nimport CreditSettingsPage from \"./Pages/CreditSettingsPage\";\nimport SendMessagePage from \"./Pages/SendMessagePage\";\nimport MessagesPage from \"./Pages/MessagesPage\";\nimport MessageDetailsPage from \"./Pages/MessageDetailsPage\";\nimport SettingsPage from \"./Pages/SettingsPage\";\nimport UserTransactionsPage from \"./Pages/UserTransactionsPage\";\nimport ContactsPage from \"./Pages/ContactsPage\";\nimport TransactionDetailPage from \"./Pages/TransactionDetailPage\";\nimport NotFoundPage from \"./Pages/NotFoundPage\";\nimport ResetPasswordPage from \"./Pages/ResetPasswordPage\";\nimport UsersPage from \"./Pages/UsersPage\";\nimport ContactUsPage from \"./Pages/ContactUsPage\";\nimport UserLicencePage from \"./Pages/UserLicencePage\";\nimport AdminsPage from \"./Pages/AdminsPage\";\n\nimport { ToastProvider } from \"./Context/toastContext\";\nimport Toast from \"./Components/Toast\";\n\nimport { L10n, setCulture } from \"@syncfusion/ej2-base\";\nimport trTranslations from \"./Assets/Localization/tr.json\";\nimport enTranslations from \"./Assets/Localization/en-US.json\";\nimport UnsubscribePage from \"./Pages/UnsubscribePage\";\n\nfunction App() {\n const location = useLocation();\n const [isAuthenticated, setIsAuthenticated] = useState(null);\n const [isSidebarOpen, setIsSidebarOpen] = useState(true);\n const isLoginPage =\n location.pathname === \"/login\" ||\n location.pathname.startsWith(\"/reset-password\") ||\n location.pathname.startsWith(\"/unsubscribe\") ||\n location.pathname.startsWith(\"/contactus\");\n\n useEffect(() => {\n const token = localStorage.getItem(\"accessToken\");\n setIsAuthenticated(!!token);\n }, []);\n\n useEffect(() => {\n const handleResize = () => {\n const width = window.innerWidth;\n if (width < 1024) {\n setIsSidebarOpen(false);\n } else {\n setIsSidebarOpen(true);\n }\n };\n\n handleResize();\n window.addEventListener(\"resize\", handleResize);\n\n return () => {\n window.removeEventListener(\"resize\", handleResize);\n };\n }, []);\n\n useEffect(() => {\n const language =\n navigator.language ||\n navigator.userLanguage ||\n localStorage.getItem(\"language\") ||\n \"en\";\n\n if (language === \"tr\" || language === \"tr-TR\") {\n L10n.load(trTranslations);\n setCulture(\"tr\");\n localStorage.setItem(\"i18nextLng\", \"tr\");\n } else {\n L10n.load(enTranslations);\n setCulture(\"en-US\");\n localStorage.setItem(\"i18nextLng\", \"en\");\n }\n }, []);\n\n if (isAuthenticated === null) {\n return null; // Sayfa yüklenirken hiçbir şey gösterme\n }\n\n if (!isAuthenticated && !isLoginPage) {\n return ;\n }\n\n const onSidebarToggle = (isOpen) => {\n setIsSidebarOpen(isOpen);\n };\n\n return (\n \n
    \n \n {isLoginPage ? (\n \n ) : (\n \n )}\n
    \n
    \n \n } />\n } />\n } />\n } />\n } />\n } />\n } />\n }\n />\n } />\n } />\n } />\n }\n />\n }\n />\n } />\n } />\n } />\n } />\n }\n />\n } />\n \n
    \n
    \n
    \n
    \n );\n}\n\nexport default App;\n","const reportWebVitals = onPerfEntry => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from \"react\";\nimport ReactDOM from \"react-dom/client\";\nimport \"./index.css\";\nimport App from \"./App\";\nimport { registerLicense } from \"@syncfusion/ej2-base\";\nimport reportWebVitals from \"./reportWebVitals\";\nimport { BrowserRouter } from \"react-router-dom\";\n\nregisterLicense(\n \"Ngo9BigBOggjHTQxAR8/V1NCaF5cXmZCf1FpRmJGdld5fUVHYVZUTXxaS00DNHVRdkdnWXhfcHRSRWhfUUR3W0U=\"\n);\n\nconst root = ReactDOM.createRoot(document.getElementById(\"root\"));\nroot.render(\n \n \n \n);\n\nreportWebVitals();\n"],"names":["aa","require","ca","p","a","b","c","arguments","length","encodeURIComponent","da","Set","ea","fa","ha","add","ia","window","document","createElement","ja","Object","prototype","hasOwnProperty","ka","la","ma","v","d","e","f","g","this","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","type","sanitizeURL","removeEmptyString","z","split","forEach","toLowerCase","ra","sa","toUpperCase","ta","slice","pa","isNaN","qa","call","test","oa","removeAttribute","setAttribute","setAttributeNS","replace","xlinkHref","ua","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","Symbol","for","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","iterator","Ka","La","A","assign","Ma","Error","stack","trim","match","Na","Oa","prepareStackTrace","defineProperty","set","Reflect","construct","l","h","k","displayName","includes","name","Pa","tag","render","Qa","$$typeof","_context","_payload","_init","Ra","Sa","Ta","nodeName","Va","_valueTracker","getOwnPropertyDescriptor","constructor","get","configurable","enumerable","getValue","setValue","stopTracking","Ua","Wa","checked","value","Xa","activeElement","body","Ya","defaultChecked","defaultValue","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","cb","db","ownerDocument","eb","Array","isArray","fb","options","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","children","hb","ib","jb","textContent","kb","lb","mb","nb","namespaceURI","innerHTML","valueOf","toString","firstChild","removeChild","appendChild","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeType","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","sb","style","indexOf","setProperty","keys","charAt","substring","tb","menuitem","area","base","br","col","embed","hr","img","input","keygen","link","meta","param","source","track","wbr","ub","vb","is","wb","xb","target","srcElement","correspondingUseElement","parentNode","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","push","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","addEventListener","removeEventListener","Nb","apply","m","onError","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","flags","Wb","memoizedState","dehydrated","Xb","Zb","child","sibling","current","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","B","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","Math","clz32","pc","qc","log","LN2","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","C","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Map","Pc","Qc","Rc","Sc","delete","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","dispatchEvent","shift","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","dd","ed","transition","fd","gd","hd","id","Uc","stopPropagation","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","cancelBubble","persist","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","Date","now","isTrusted","td","ud","view","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","clipboardData","Jd","Ld","data","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","key","String","fromCharCode","code","location","repeat","locale","which","Rd","Td","width","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","color","date","datetime","email","month","number","password","range","search","tel","text","time","url","week","me","ne","oe","event","listeners","pe","qe","re","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","node","offset","nextSibling","Le","contains","compareDocumentPosition","Me","HTMLIFrameElement","contentWindow","href","Ne","contentEditable","Oe","focusedElem","selectionRange","documentElement","start","end","selectionStart","selectionEnd","min","defaultView","getSelection","extend","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","element","left","scrollLeft","top","scrollTop","focus","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","animation","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","concat","nf","Ub","instance","listener","D","of","has","pf","qf","rf","random","sf","bind","capture","passive","n","t","J","x","u","w","F","tf","uf","parentWindow","vf","wf","na","xa","$a","ba","je","char","ke","unshift","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","setTimeout","Gf","clearTimeout","Hf","Promise","Jf","queueMicrotask","resolve","then","catch","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","E","G","Vf","H","Wf","Xf","Yf","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","childContextTypes","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","I","zg","Ag","Bg","elementType","deletions","Cg","pendingProps","overflow","treeContext","retryLane","Dg","mode","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","ref","_owner","_stringRef","refs","Mg","join","Ng","Og","index","Pg","Qg","props","Rg","implementation","Sg","Tg","q","r","y","next","done","Ug","Vg","Wg","Xg","Yg","Zg","$g","ah","_currentValue","bh","childLanes","ch","dependencies","firstContext","lanes","dh","eh","context","memoizedValue","fh","gh","hh","interleaved","ih","jh","kh","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","lh","mh","eventTime","lane","payload","callback","nh","K","oh","ph","qh","rh","sh","th","uh","vh","wh","xh","yh","tagName","zh","Ah","Bh","L","Ch","revealOrder","Dh","Eh","_workInProgressVersionPrimary","Fh","ReactCurrentDispatcher","Gh","Hh","M","N","O","Ih","Jh","Kh","Lh","P","Mh","Nh","Oh","Ph","Qh","Rh","Sh","Th","baseQueue","queue","Uh","Vh","Wh","lastRenderedReducer","action","hasEagerState","eagerState","lastRenderedState","dispatch","Xh","Yh","Zh","$h","ai","getSnapshot","bi","ci","Q","di","lastEffect","stores","ei","fi","gi","hi","ii","create","destroy","deps","ji","ki","li","mi","ni","oi","pi","qi","ri","si","ti","ui","vi","wi","xi","yi","zi","Ai","R","Bi","readContext","useCallback","useContext","useEffect","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ci","defaultProps","Di","Ei","isMounted","_reactInternals","enqueueSetState","enqueueReplaceState","enqueueForceUpdate","Fi","shouldComponentUpdate","isPureReactComponent","Gi","contextType","state","updater","Hi","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","Ii","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","Ji","message","digest","Ki","Li","console","error","Mi","WeakMap","Ni","Oi","Pi","Qi","getDerivedStateFromError","componentDidCatch","Ri","componentStack","Si","pingCache","Ti","Ui","Vi","Wi","ReactCurrentOwner","Xi","Yi","Zi","$i","aj","compare","bj","cj","dj","baseLanes","cachePool","transitions","ej","fj","gj","hj","ij","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","jj","kj","pendingContext","lj","zj","Aj","Bj","Cj","mj","nj","oj","fallback","pj","qj","sj","dataset","dgst","tj","uj","_reactRetry","rj","subtreeFlags","vj","wj","isBackwards","rendering","renderingStartTime","last","tail","tailMode","xj","Dj","S","Ej","Fj","wasMultiple","multiple","suppressHydrationWarning","onClick","onclick","size","createElementNS","autoFocus","createTextNode","T","Gj","Hj","Ij","Jj","U","Kj","WeakSet","V","Lj","W","Mj","Nj","Pj","Qj","Rj","Sj","Tj","Uj","Vj","insertBefore","_reactRootContainer","Wj","X","Xj","Yj","Zj","onCommitFiberUnmount","componentWillUnmount","ak","bk","ck","dk","ek","isHidden","fk","gk","display","hk","ik","jk","kk","__reactInternalSnapshotBeforeUpdate","src","Vk","lk","ceil","mk","nk","ok","Y","Z","pk","qk","rk","sk","tk","Infinity","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Ek","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","finishedWork","finishedLanes","Pk","timeoutHandle","Qk","Rk","Sk","Tk","Uk","mutableReadLanes","Bc","Oj","onCommitFiberRoot","mc","onRecoverableError","Wk","onPostCommitFiberRoot","Xk","Yk","$k","isReactComponent","pendingChildren","al","mutableSourceEagerHydrationData","bl","cache","pendingSuspenseBoundaries","dl","el","fl","gl","hl","il","yj","Zk","kl","reportError","ll","_internalRoot","ml","nl","ol","pl","rl","ql","unmount","unstable_scheduleHydration","splice","querySelectorAll","JSON","stringify","form","sl","usingClientEntryPoint","Events","tl","findFiberByHostInstance","bundleType","version","rendererPackageName","ul","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","vl","isDisabled","supportsFiber","inject","exports","createPortal","cl","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","err","module","__self","__source","Fragment","jsx","jsxs","setState","forceUpdate","escape","_status","_result","default","Children","map","count","toArray","only","Component","Profiler","PureComponent","StrictMode","Suspense","act","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","createFactory","createRef","forwardRef","isValidElement","lazy","memo","startTransition","unstable_act","pop","sortIndex","performance","setImmediate","startTime","expirationTime","priorityLevel","navigator","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","postMessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","floor","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","delay","unstable_wrapCallback","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","getter","__esModule","leafPrototypes","getProto","getPrototypeOf","obj","ns","def","getOwnPropertyNames","definition","o","chunkId","all","reduce","promises","miniCssF","prop","inProgress","dataWebpackPrefix","script","needAttach","scripts","getElementsByTagName","i","s","getAttribute","charset","timeout","nc","onScriptComplete","prev","onerror","onload","doneFns","fn","head","toStringTag","installedChunks","j","installedChunkData","promise","reject","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","some","chunkLoadingGlobal","self","Action","PopStateEventType","invariant","warning","cond","warn","getHistoryState","usr","idx","createLocation","to","_extends","pathname","hash","parsePath","substr","createPath","_ref","path","parsedPath","hashIndex","searchIndex","getUrlBasedHistory","getLocation","createHref","validateLocation","v5Compat","globalHistory","history","Pop","getIndex","handlePop","nextIndex","delta","createURL","origin","URL","replaceState","listen","encodeLocation","Push","historyState","pushState","DOMException","Replace","go","ResultType","matchRoutes","routes","locationArg","basename","matchRoutesImpl","allowPartial","stripBasename","branches","flattenRoutes","sort","score","siblings","every","compareIndexes","routesMeta","childrenIndex","rankRouteBranches","matches","decoded","decodePath","matchRouteBranch","parentsMeta","parentPath","flattenRoute","route","relativePath","caseSensitive","startsWith","joinPaths","computeScore","_route$path","exploded","explodeOptionalSegments","segments","first","rest","isOptional","endsWith","required","restExploded","result","subpath","paramRe","dynamicSegmentValue","indexRouteValue","emptySegmentValue","staticSegmentValue","splatPenalty","isSplat","initialScore","filter","segment","branch","matchedParams","matchedPathname","remainingPathname","matchPath","params","pathnameBase","normalizePathname","pattern","matcher","compiledParams","regexpSource","_","paramName","RegExp","compilePath","captureGroups","splatValue","decodeURIComponent","startIndex","nextChar","getInvalidPathError","field","dest","getPathContributingMatches","getResolveToMatches","v7_relativeSplatPath","pathMatches","resolveTo","toArg","routePathnames","locationPathname","isPathRelative","from","isEmptyPath","toPathname","routePathnameIndex","toSegments","fromPathname","resolvePathname","normalizeSearch","normalizeHash","resolvePath","hasExplicitTrailingSlash","hasCurrentTrailingSlash","paths","isRouteErrorResponse","status","statusText","internal","validMutationMethodsArr","validRequestMethodsArr","DataRouterContext","React","DataRouterStateContext","NavigationContext","LocationContext","RouteContext","outlet","isDataRoute","RouteErrorContext","useInRouterContext","useLocation","UNSAFE_invariant","useIsomorphicLayoutEffect","static","useNavigate","router","useDataRouterContext","DataRouterHook","UseNavigateStable","useCurrentRouteId","DataRouterStateHook","activeRef","navigate","fromRouteId","useNavigateStable","dataRouterContext","future","routePathnamesJson","UNSAFE_getResolveToMatches","parse","relative","useNavigateUnstable","useParams","routeMatch","useRoutesImpl","dataRouterState","parentMatches","parentParams","parentPathnameBase","locationFromContext","_parsedLocationArg$pa","parsedLocationArg","parentSegments","renderedMatches","_renderMatches","navigationType","DefaultErrorComponent","_state$errors","useDataRouterState","UseRouteError","routeId","errors","useRouteError","lightgrey","preStyles","padding","backgroundColor","fontStyle","defaultErrorElement","RenderErrorBoundary","super","revalidation","errorInfo","routeContext","component","RenderedRoute","staticContext","errorElement","ErrorBoundary","_deepestRenderedBoundaryId","_dataRouterState","_future","v7_partialHydration","initialized","errorIndex","findIndex","renderFallback","fallbackIndex","HydrateFallback","hydrateFallbackElement","loaderData","needsToRunLoader","loader","reduceRight","shouldRenderHydrateFallback","alreadyWarned","getChildren","hookName","ctx","useRouteContext","thisRoute","Navigate","_ref4","isStatic","jsonPath","Route","_props","Router","_ref5","basenameProp","locationProp","staticProp","navigationContext","locationContext","trailingPathname","Routes","_ref6","createRoutesFromChildren","treePath","hasErrorBoundary","shouldRevalidate","handle","LoginLayout","_jsx","_Fragment","warnOnce","_len2","args","_key2","isString","_len","_key","loadedClb","i18n","isInitialized","off","on","loadNamespaces","loadLanguages","lng","matchHtmlEntity","htmlEntities","unescapeHtmlEntity","defaultOptions","bindI18n","bindI18nStore","transEmptyNodeValue","transSupportBasicHtmlNodes","transWrapTextNodes","transKeepBasicHtmlNodesFor","useSuspense","unescape","i18nInstance","initReactI18next","init","setDefaults","react","setI18n","I18nContext","ReportNamespaces","usedNamespaces","addUsedNamespaces","namespaces","getUsedNamespaces","alwaysNewT","language","namespace","keyPrefix","getFixedT","useTranslation","i18nFromProps","i18nFromContext","defaultNS","defaultNSFromContext","reportNamespaces","notReadyT","optsOrDefaultValue","retNotReady","ready","wait","i18nOptions","initializedStoreOnce","languages","hasLoadedNamespace","precheck","loadNotPending","services","backendConnector","backend","isLanguageChangingTo","memoGetT","useMemoizedT","nsMode","getT","getNewT","setT","joinedNS","previousJoinedNS","usePrevious","ignore","boundReset","store","ret","consoleLogger","output","Logger","concreteLogger","prefix","logger","debug","forward","_len3","_key3","deprecate","_len4","_key4","lvl","debugOnly","moduleName","clone","baseLogger","EventEmitter","observers","events","numListeners","emit","entries","observer","numTimesAdded","_ref2","defer","res","rej","makeString","object","lastOfPathSeparatorRegExp","cleanKey","canNotTraverseDeeper","getLastOfPath","Empty","stackIndex","setPath","newValue","getPath","deepExtend","overwrite","regexEscape","str","_entityMap","chars","looksLikeObjectPathRegExpCache","capacity","regExpMap","regExpQueue","getRegExp","regExpFromCache","regExpNew","deepFind","keySeparator","tokens","nextPath","getCleanedCode","ResourceStore","ignoreJSONStructure","addNamespaces","removeNamespaces","getResource","addResource","silent","addResources","resources","addResourceBundle","deep","skipCopy","pack","removeResourceBundle","hasResourceBundle","getResourceBundle","compatibilityAPI","getDataByLanguage","hasLanguageSomeTranslations","find","toJSON","postProcessor","processors","addPostProcessor","translator","processor","process","checkedLoadedFor","Translator","copy","changeLanguage","exists","interpolation","resolved","extractFromKey","nsSeparator","wouldCheckForNsInKey","seemsNaturalLanguage","userDefinedKeySeparator","userDefinedNsSeparator","looksLikeObjectPath","possibleChars","matched","interpolator","nestingRegexp","parts","translate","lastKey","overloadTranslationOptionHandler","returnDetails","appendNamespaceToCIMode","usedKey","exactUsedKey","usedLng","usedNS","usedParams","getUsedParamsDetails","resUsedKey","resExactUsedKey","resType","joinArrays","handleAsObjectInI18nFormat","i18nFormat","handleAsObject","returnObjects","returnedObjectHandler","resTypeIsArray","newKeyToUse","deepKey","extendTranslation","usedDefault","needsPluralHandling","hasDefaultValue","defaultValueSuffix","pluralResolver","getSuffix","defaultValueSuffixOrdinalFallback","ordinal","needsZeroSuffixLookup","shouldUseIntlApi","pluralSeparator","isValidLookup","resForMissing","missingKeyNoValueFallbackToKey","updateMissing","lngs","fallbackLngs","languageUtils","getFallbackCodes","fallbackLng","saveMissingTo","toResolveHierarchy","send","specificDefaultValue","defaultForMissing","missingKeyHandler","saveMissing","saveMissingPlurals","suffixes","getSuffixes","suffix","appendNamespaceToMissingKey","parseMissingKeyHandler","_this","defaultVariables","skipInterpolation","skipOnVariables","nestBef","interpolate","nest","reset","postProcess","postProcessorNames","applyPostProcessor","postProcessPassResolved","i18nResolved","found","extracted","fallbackNS","needsContextHandling","codes","utils","finalKeys","addLookupKeys","pluralSuffix","zeroSuffix","ordinalPrefix","contextKey","contextSeparator","possibleKey","returnNull","returnEmptyString","resourceStore","optionsKeys","useOptionsReplaceForData","option","capitalize","string","LanguageUtil","supportedLngs","getScriptPartFromCode","formatLanguageCode","getLanguagePartFromCode","specialCases","lowerCaseLng","part","cleanCode","isSupportedCode","load","nonExplicitSupportedLngs","getBestMatchFromCodes","cleanedLng","lngOnly","supportedLng","fallbacks","fallbackCode","fallbackCodes","addCode","sets","nr","_rulesPluralsTypes","Number","nonIntlVersions","intlVersions","suffixesOrder","zero","one","two","few","many","other","PluralResolver","compatibilityJSON","Intl","PluralRules","rules","createRules","numbers","plurals","pluralRulesCache","addRule","clearCache","getRule","cleanedCode","cacheKey","rule","needsPlural","resolvedOptions","pluralCategories","getPluralFormsOfKey","pluralCategory1","pluralCategory2","pluralCategory","prepend","select","getSuffixRetroCompatible","noAbs","abs","simplifyPluralSuffix","returnSuffix","deepFindWithDefaults","defaultData","getPathWithDefaults","regexSafe","val","Interpolator","format","escapeValue","escape$1","useRawValueToEscape","prefixEscaped","suffixEscaped","formatSeparator","unescapeSuffix","unescapePrefix","nestingPrefix","nestingPrefixEscaped","nestingSuffix","nestingSuffixEscaped","nestingOptionsSeparator","maxReplaces","alwaysFormat","resetRegExp","getOrResetRegExp","existingRegExp","lastIndex","regexp","regexpUnescape","replaces","handleFormat","interpolationkey","missingInterpolationHandler","regex","safeValue","todo","exec","matchedVar","temp","clonedOptions","handleHasOptions","inheritedOptions","sep","optionsString","matchedSingleQuotes","matchedDoubleQuotes","formatters","doReduce","elem","createCachedFormatter","optForCache","formatParams","formatter","Formatter","formats","opt","NumberFormat","currency","DateTimeFormat","relativetime","RelativeTimeFormat","list","ListFormat","iOpts","addCached","mem","formatName","formatOptions","formatStr","optStr","trimmedKey","parseInt","parseFormatStr","formatted","valOptions","Connector","waitingReads","maxParallelReads","readingCalls","maxRetries","retryTimeout","queueLoad","toLoad","toLoadLanguages","toLoadNamespaces","hasAllNamespaces","reload","pendingCount","loaded","pushPath","removePending","loadedKeys","read","fcName","tried","resolver","prepareLoading","loadOne","fallbackValue","isUpdate","clb","opts","initImmediate","preload","partialBundledLanguages","tDescription","transformOptions","noop","I18n","inst","modules","external","isClone","isInitializing","defOpts","createClassOnDemand","ClassOrObject","lu","languageDetector","detection","deferred","finish","loadResources","usedCallback","append","resolvedLanguage","setResolvedLanguage","reloadResources","use","lngInLngs","_this2","setLngProps","setLng","cacheUserLanguage","async","detect","_this3","fixedT","resultKey","setDefaultNamespace","lastLng","loadState","preResult","preloaded","newLngs","dir","createInstance","cloneInstance","forkResourceStore","mergedOptions","fieldContentRegExp","cookie","minutes","domain","cookieOptions","sameSite","expires","setTime","getTime","serializeCookie","maxAge","TypeError","toUTCString","httpOnly","secure","nameEQ","remove","cookie$1","lookup","lookupCookie","cookieMinutes","cookieDomain","querystring","lookupQuerystring","pos","hasLocalStorageSupport","localStorageAvailable","localStorage","testKey","setItem","removeItem","lookupLocalStorage","getItem","hasSessionStorageSupport","sessionStorageAvailable","sessionStorage","lookupSessionStorage","navigator$1","userLanguage","htmlTag","internalHtmlTag","lookupFromPathIndex","subdomain","lookupFromSubdomainIndex","internalLookupFromSubdomainIndex","hostname","Browser","detectors","defaults","caches","excludeCacheFor","convertDetectedLanguage","lookupFromUrlIndex","addDetector","detector","detectionOrder","detected","detectorName","cacheName","LanguageDetector","en","translation","enTranslations","tr","trTranslations","onSidebarToggle","userEmail","setUserEmail","userRole","setUserRole","isMobile","setIsMobile","isSidebarOpen","setSidebarOpen","activeMenu","setActiveMenu","sidebarRef","handleResize","innerWidth","role","menuItems","icon","_jsxs","className","toggleSidebar","alt","onSendMessageClick","onContactClick","handleLogout","item","title","ToastContext","ToastProvider","toast","setToast","show","showToast","thisArg","kindOf","thing","kindOfTest","typeOfTest","isUndefined","isArrayBuffer","isFunction","isNumber","isObject","isPlainObject","isDate","isFile","isBlob","isFileList","isURLSearchParams","isReadableStream","isRequest","isResponse","isHeaders","allOwnKeys","len","findKey","_global","globalThis","global","isContextDefined","isTypedArray","TypedArray","Uint8Array","isHTMLForm","isRegExp","reduceDescriptors","reducer","descriptors","getOwnPropertyDescriptors","reducedDescriptors","descriptor","defineProperties","ALPHA","DIGIT","ALPHABET","ALPHA_DIGIT","isAsyncFn","_setImmediate","setImmediateSupported","postMessageSupported","token","callbacks","asap","nextTick","isBuffer","isFormData","kind","FormData","isArrayBufferView","ArrayBuffer","isView","buffer","isBoolean","isStream","pipe","merge","caseless","assignValue","targetKey","stripBOM","content","charCodeAt","inherits","superConstructor","toFlatObject","sourceObj","destObj","propFilter","merged","searchString","position","arr","forEachEntry","pair","matchAll","regExp","hasOwnProp","freezeMethods","writable","toObjectSet","arrayOrString","delimiter","define","toCamelCase","p1","p2","toFiniteNumber","isFinite","generateString","alphabet","isSpecCompliantForm","toJSONObject","visit","reducedValue","isThenable","AxiosError","config","response","captureStackTrace","description","fileName","lineNumber","columnNumber","customProps","axiosError","cause","isVisitable","removeBrackets","renderKey","dots","predicates","formData","metaTokens","indexes","visitor","defaultVisitor","useBlob","Blob","convertValue","toISOString","Buffer","isFlatArray","exposedHelpers","build","encode","charMap","AxiosURLSearchParams","_pairs","toFormData","encoder","_encode","buildURL","serializeFn","serialize","serializedParams","hashmarkIndex","handlers","fulfilled","rejected","synchronous","runWhen","eject","clear","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","isBrowser","classes","URLSearchParams","protocols","hasBrowserEnv","_navigator","hasStandardBrowserEnv","product","hasStandardBrowserWebWorkerEnv","WorkerGlobalScope","importScripts","platform","buildPath","isNumericKey","isLast","arrayToObject","parsePropPath","transitional","transitionalDefaults","adapter","transformRequest","headers","contentType","getContentType","hasJSONContentType","isObjectPayload","formDataToJSON","setContentType","helpers","isNode","toURLEncodedForm","formSerializer","_FormData","env","rawValue","parser","stringifySafely","transformResponse","JSONRequested","responseType","strictJSONParsing","ERR_BAD_RESPONSE","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","common","method","ignoreDuplicateOf","$internals","normalizeHeader","header","normalizeValue","matchHeaderValue","isHeaderNameFilter","AxiosHeaders","valueOrRewrite","rewrite","setHeader","_value","_header","_rewrite","lHeader","setHeaders","rawHeaders","parsed","line","parseHeaders","tokensRE","parseTokens","deleted","deleteHeader","normalize","normalized","formatHeader","targets","asStrings","computed","accessor","accessors","defineAccessor","accessorName","methodName","arg1","arg2","arg3","buildAccessors","mapped","headerValue","transformData","fns","isCancel","__CANCEL__","CanceledError","ERR_CANCELED","settle","ERR_BAD_REQUEST","samplesCount","bytes","timestamps","firstSampleTS","chunkLength","startedAt","bytesCount","passed","round","freq","lastArgs","timer","timestamp","threshold","invoke","flush","progressEventReducer","isDownloadStream","bytesNotified","_speedometer","speedometer","throttle","total","lengthComputable","progressBytes","rate","progress","estimated","progressEventDecorator","throttled","asyncDecorator","msie","userAgent","urlParsingNode","originURL","resolveURL","protocol","host","port","requestURL","write","toGMTString","buildFullPath","baseURL","requestedURL","relativeURL","combineURLs","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","paramsSerializer","timeoutMessage","withCredentials","withXSRFToken","onUploadProgress","onDownloadProgress","decompress","beforeRedirect","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding","configValue","newConfig","auth","btoa","username","Boolean","isURLSameOrigin","xsrfValue","cookies","XMLHttpRequest","_config","resolveConfig","requestData","requestHeaders","onCanceled","uploadThrottled","downloadThrottled","flushUpload","flushDownload","unsubscribe","signal","onloadend","responseHeaders","getAllResponseHeaders","responseText","open","onreadystatechange","readyState","responseURL","onabort","ECONNABORTED","ERR_NETWORK","ontimeout","timeoutErrorMessage","ETIMEDOUT","setRequestHeader","upload","cancel","abort","subscribe","aborted","parseProtocol","composeSignals","signals","controller","AbortController","reason","streamChunk","chunk","chunkSize","byteLength","readStream","stream","asyncIterator","reader","getReader","trackStream","onProgress","onFinish","iterable","readBytes","_onFinish","ReadableStream","pull","close","loadedBytes","enqueue","highWaterMark","isFetchSupported","fetch","Request","Response","isReadableStreamSupported","encodeText","TextEncoder","arrayBuffer","supportsRequestStream","duplexAccessed","hasContentType","duplex","supportsResponseStream","resolvers","ERR_NOT_SUPPORT","resolveBodyLength","getContentLength","_request","getBodyLength","fetchOptions","composedSignal","toAbortSignal","requestContentLength","contentTypeHeader","isCredentialsSupported","credentials","isStreamResponse","responseContentLength","responseData","knownAdapters","http","xhr","xhrAdapter","fetchAdapter","renderReason","isResolvedHandle","adapters","nameOrAdapter","rejectedReasons","reasons","throwIfCancellationRequested","throwIfRequested","dispatchRequest","VERSION","validators","deprecatedWarnings","validator","formatMessage","desc","ERR_DEPRECATED","assertOptions","schema","allowUnknown","ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","Axios","instanceConfig","interceptors","InterceptorManager","configOrUrl","dummy","boolean","function","contextHeaders","requestInterceptorChain","synchronousRequestInterceptors","interceptor","responseInterceptorChain","chain","onFulfilled","onRejected","getUri","generateHTTPMethod","isForm","CancelToken","executor","resolvePromise","_listeners","onfulfilled","_resolve","HttpStatusCode","Continue","SwitchingProtocols","Processing","EarlyHints","Created","Accepted","NonAuthoritativeInformation","NoContent","ResetContent","PartialContent","MultiStatus","AlreadyReported","ImUsed","MultipleChoices","MovedPermanently","Found","SeeOther","NotModified","UseProxy","Unused","TemporaryRedirect","PermanentRedirect","BadRequest","Unauthorized","PaymentRequired","Forbidden","NotFound","MethodNotAllowed","NotAcceptable","ProxyAuthenticationRequired","RequestTimeout","Conflict","Gone","LengthRequired","PreconditionFailed","PayloadTooLarge","UriTooLong","UnsupportedMediaType","RangeNotSatisfiable","ExpectationFailed","ImATeapot","MisdirectedRequest","UnprocessableEntity","Locked","FailedDependency","TooEarly","UpgradeRequired","PreconditionRequired","TooManyRequests","RequestHeaderFieldsTooLarge","UnavailableForLegalReasons","InternalServerError","NotImplemented","BadGateway","ServiceUnavailable","GatewayTimeout","HttpVersionNotSupported","VariantAlsoNegotiates","InsufficientStorage","LoopDetected","NotExtended","NetworkAuthenticationRequired","axios","defaultConfig","Cancel","spread","isAxiosError","formToJSON","getAdapter","axiosClient","originalRequest","_retry","refreshToken","newToken","post","accessToken","isBlazorPlatform","classFunction","arrayParam","Function","handler","unbind","num","Uint16Array","msCrypto","crypto","getRandomValues","secret","combineArray","messageHandler","nameSpace","splits","fromObj","isNullOrUndefined","containerObject","destination","temrObj","tempProp","deepmerge","_i","keys_1","copied","second","_loop_1","obj1","isArrayChanged","blazorEventExtend","isBlazor","Event","compareElementParent","parent","throwError","HijriParser","defaultNumberingSystem","defaultNumberSymbols","latnNumberSystem","ParserBase","getMainObject","cName","getNumberingSystem","numberingSystems","reverseObject","propKeys_1","getSymbolRegex","regexStr","getSymbolMatch","matchKeys_1","constructRegex","convertValueParts","getDefaultNumberingSystem","nSystem","getCurrentNumericOptions","curObj","numberSystem","needSymbols","blazorMode","cur","digits","numericPair","numberParseRegex","numericRegex","symbolNumberSystem","symbolMatch","getNumberMapper","mapper","numberSymbols","timeSeparator","latnNumberSystem_1","nPair","nRegex","blazorCurrencyData","dateCorrection","getHijriDate","gDate","day","getDate","getMonth","year","getFullYear","tMonth","tYear","yPrefix","julilanOffset","julianNumber","tempMonth","modifiedJulianDate","iyear","cyc","iy","im","tempDay","iln","hYear","hmonth","hDate","toGregorian","julianDate","gDay","gMonth","gYear","abbreviateRegexGlobal","standalone","weekdayKey","timeSetter","datePartMatcher","DateFormat","dateFormat","culture","cldr","dependable","getDependables","calendar","numObject","dateObject","isIslamic","islamicRegex","isServerRendered","compareBlazorDateFormats","resPattern","getResultantPattern","skeleton","dateSeperator","getDateSeparator","ConvertDateToWeekFormat","numMapper","parserObject","patternMatch_1","weekday","monthIndex","days","designator","eText","era","timeZone","intDateFormatter","dateParseRegex","dObject","getCurrentDateValue","matches_1","length_1","curval","curvalstr","processNumber","curstr","getDay","curlength","desig","getHours","dec","retu","timezone","getTimezoneOffset","pattern_1","hourFormat","gmtZeroFormat","getTimeZoneValue","gmtFormat","getWeekOfYear","checkTwodigitNumber","latnParseRegex","tVal","curPattern","no","ishour","errorText","numberFormatter","symbolPattern","fOptions","cOptions","dOptions","numericObject","numberMapper","currencySymbol","getCurrencySymbol","defaultCurrencyCode","altSymbol","ignoreCurrency","percentSymbol","minusSymbol","symbols","formatRegex","customFormat","useGrouping","pData","getProperNumericSkeleton","isCurrency","isPercent","getSymbolPattern","isAccount","groupOne","checkValueRange","maximumSignificantDigits","minimumSignificantDigits","maximumFractionDigits","minimumFractionDigits","fractionDigits","defaultCurrency","nData","replaceBlazorCurrency","getFormatData","groupSeparator","groupData","getGroupingDetails","minimumFraction","mval","maximumFraction","mfrac","lfrac","intNumberFormatter","negativeDataRegex","lastIndexOf","primary","secondary","val1","val2","checkbothExist","isFraction","decide","dint","str1","str2","checkRange","curData","zeroData","fValue","processSignificantDigits","processFraction","minimumIntegerDigits","processMinimumIntegers","isCustomFormat","decimalPart","toExponential","customPivotFormat","groupNumbers","nlead","nend","max","toPrecision","level1","decimalSymbol","level2","flag","toFixed","lead","_a","decimal","latnRegex","minute","hour","milliseconds","DateParser","dateParser","numOptions","parseOptions","hourOnly","regexString","evalposition","patternMatch","gmtCorrection","zCorrectTemp","isgmtTraversed","nRegx","canUpdate","charKey","optional","weekData","weekObject","monthData","hour12","periodValur","tzone","hpattern","parseTimeZoneRegx","parserRegex","parsedDateParts","internalDateParse","dobj","tDate","ystrig","is2DigitYear","getDateObject","setMilliseconds","setFullYear","tKeys_1","tValue","setDate","pDate","lDate","lastDay","setHours","tzValue","setMinutes","getMinutes","retOptions","props_1","curObject","matchString","internalNumberParser","tmatch","getZoneValue","tZone","cRegex","splitStr","ival","parseRegex","groupRegex","NumberParser","numberParser","custom","symbolpattern","symbolRegex","infinity","getParsedNumber","isNegative","tempValue","NaN","exponent","parseFloat","convertMaxFracDigits","decimalSplitValue","Observer","ranArray","boundedEvents","property","cntxt","notExist","isHandlerPresent","indexLocation","notify","argument","successHandler","errorHandler","blazorCallback","curObject_1","objs","isTrigger","obj_1","isJson","dateReviver","offIntlEvents","eventsArr","curContext","detectFunction","randomId","isRendered","boundedEvents_1","onIntlChange","rightToLeft","cldrData","defaultCulture","Internationalization","cultureName","getDateFormat","getCulture","getNumberFormat","getDateParser","getNumberParser","formatNumber","formatDate","parseDate","parseNumber","getDatePattern","isExcelFormat","IntlBase","getActualDateTimeFormat","getNumberPattern","isExcel","getActualNumberFormat","getFirstDayOfWeek","getWeekData","blazorCultureFormats","customRegex","fractionRegex","patternRegex","dateConverterMapper","firstDayMapper","currencyFormatRegex","curWithoutNumberRegex","typeMapper","blazorCulture","iType","basicPatterns","dPattern","tPattern","calendartype","blazorDefaultObject","defaultObject","dateString","numSystem","convertMapper","tempString","curFormatMapper","patternMatcher","needFraction","cSymbol","fractionOnly","changeCurrencySymbol","groupPattern","fraction","fmatch","sym","currencyCode","customNumberFormat","integerPart","spaceCapture","spaceGrouping","fractionPart","isCurrencyPercent","actual","symbol","loc","processSymbol","fractionDigitsPattern","minDigits","maxDigits","diff","minimumIntegerPattern","integer","groupingPattern","formatSplit","dateObj","actualPattern","tLength","timeZonePattern","options_1","minFrac","numrericObject","curMatch","curCode","hasNegativePattern","cPattern","firstDay","iCulture","aCurrency","rCurrency","iCurrency","pData_1","weeknum","newYear","daynum","nday","headerRegex","Fetch","Ajax","emitError","eventArgs","httpRequest","stateChange","onLoad","onprogress","onAbort","beforeSend","onSuccess","failureHandler","onFailure","dataType","getResponseHeader","isNOU","contentTypes","fetchRequest","triggerEvent","fetchResponse","returnVal","REGX_MOBILE","REGX_IE","REGX_IE11","REGX_IOS","REGX_IOS7","REGX_ANDROID","REGX_WINDOWS","REGX_VERSION","REGX_BROWSER","OPERA","EDGE","CHROME","PANTHOMEJS","SAFARI","WEBKIT","MSIE","MOZILLA","browserDetails","extractBrowserDetail","browserInfo","clientInfo","getEvent","isPointer","isTouch","isDevice","move","getTouchStartEvent","getTouchEndEvent","getTouchMoveEvent","getTouchCancelEvent","isSafari","isIos","regX","maxTouchPoints","uA","info","isMSPointer","isWebView","cordova","PhoneGap","phonegap","forge","touchStartEvent","touchMoveEvent","touchEndEvent","touchCancelEvent","EventHandler","addOrGetEventData","__eventList","eventName","bindTo","intDebounce","debounceListener","eventData","eventFunction","out","debounce","isIE","clearEvents","copyData","parseValue","trigger","eventProp","eventData_1","event_1","SVG_REG","properties","styles","attrs","attributes","ele","iKey","addClass","elements","classList","getClassList","_b","classList_1","curClass","removeClass","classList_2","classArr","isVisible","visibility","offsetWidth","detach","selector","needsVDOM","querySelectId","querySelector","charRegex","idList","splitId","setId","closest","setStyleAttribute","msMatchesSelector","webkitMatchesSelector","proxyToRaw","isColEName","Base","isComplexArraySetter","allowServerDataBinding","isProtectedOnChange","changedProperties","oldProperties","bulkChanges","refreshing","ignoreCollectionWatch","finalUpdate","childChangedProperties","modelObserver","addInstance","setProperties","isDestroyed","muteOnChange","prevDetection","dataBind","serverDataBind","callChildDataBind","clearChanges","newChanges","oldChanges","onPropertyChanged","sfBlazor","updateModel","saveChanges","oldValue","moduleClass","getModuleName","ej2_instances","getObject","curKey","getObjectArray","isSetter","isFactory","curType","propertyGetter","propertySetter","oldVal","complexGetter","complexSetter","complexArrayGetter","defCollection","controlParent","extendFunc","complexArrayDefinedCallback","complexArraySetter","oldValueCollection","newValCollection","dFunc","keyString","propName","getParentKey","newValueParse","model","getArrayModel","ejsAction","isControlParent","arrayFunction","modelObject","Property","propertyDescriptor","addPropertyCollection","Complex","Collection","eventDescriptor","finalContext","getParentContext","NotifyPropertyChanges","classConstructor","propertyType","propList","complexProps","colProps","propNames","complexPropNames","colPropNames","eventNames","curText","__extends","extendStatics","setPrototypeOf","__proto__","__","__decorate","decorators","decorate","Animation","_super","easing","ease","linear","easeIn","easeOut","easeInOut","elasticInOut","elasticIn","elasticOut","Animation_1","animate","getModel","elements_1","element_1","delayAnimation","stop","animationId","frameId","cancelAnimationFrame","animationMode","GlobalAnimationMode","Disable","begin","applyAnimation","step","timerId","prevTimeStamp","duration","startAnimation","avg","timingFunction","requestAnimationFrame","fail","newProp","oldProp","accountURL","ModuleLoader","loadedModules","requiredModules","moduleList","reqLength","clearUnusedModule","modl","moduleList_1","modName","member","isModuleLoaded","moduleObject","memberName","getMemberName","isProperty","loadedModule","clean","getNonInjectedModules","usedModules","arg","removableModule_1","mod","ChildProperty","parentObj","isParentArray","updateChange","updateTimeOut","changeTime_1","curIndex","restrictServerDataBind","isSaveChanges","parent_1","parentKey","complexKeys","isFinal","valueLength","componentList","bypassKey","LicenseValidator","isValidated","isLicensed","noLicense","trailExpired","versionMismatched","platformMismatched","invalidKey","manager","licKey","setKey","getKey","npxManager","validate","convertToChar","validateMsg","validateURL","getInfoFromKey","result_1","invalidPlatform","expiryDate","expDate","currDate","licenseContent","errorDiv","getDecryptedData","atob","pkey","decryptedStr","resultArray","isNpxKey","licKeySplit","licKeySplit_1","lKey","decodeStr","buffr","decryptedKey","licenseValidator","cArr","cArr_1","lastPageID","validateLicense","registerLicense","componentCount","lastHistoryLen","instancecount","isvalid","isBannerAdded","versionBasedStatePersistence","uniqueID","isStringTemplate","needsID","isReactHybrid","isAngular","isReact","isVue","enableRtl","moduleLoader","localObserver","appendTo","enablePersistence","setPersistData","detachUnloadEvent","refresh","preRender","injectModules","accessMount","mount","getRootElement","actualElement","getLocalData","eleId","ej2StatePersistenceVersion","attachUnloadEvent","handleUnload","getUniqueID","mergePersistData","ignoredComponents","schedule","diagram","PdfViewer","grid","richtexteditor","treegrid","gantt","chart","accumulationchart","modulesRequired","componentName","bannerTemplate","errorBackground","createLicenseOverlay","renderComplete","wrapperElement","event_2","getInjectedModules","injectedModules","Inject","isVDOM","triggerStateChange","currentContext","calls","getPersistData","renderReactTemplates","clearTemplate","templateName","definedName","isHistoryChanged","pageID","addOnPersist","persistObj","objValue","getActualProperties","ignoreOnPersist","iterateJsonProperties","ignoreList","newObj","newList","this_1","defaultPosition","bottom","right","isDraggedObject","isDragged","Position","Draggable","dragLimit","Draggable_1","getDefaultPosition","borderWidth","diffX","prevLeft","prevTop","dragProcessStarted","eleTop","tapHoldTimer","externalInitialize","diffY","parentScrollX","parentScrollY","droppables","toggleEvents","scope","isUnWire","enableTapHold","mobileInitialize","initialize","evt","removeTapholdTimer","tapHoldThreshold","getScrollableParent","axis","tempScrollHeight","scrollHeight","tempScrollWidth","scrollWidth","getScrollableValues","curTarget","currentStateTarget","isDragStarted","abortSelectors","intCoord","getCoordinates","initialPosition","getBoundingClientRect","relativeXPosition","relativeYPosition","intDragStart","intDestroy","isPreventSelect","isChangeTouch","intCordinate","styleProp","getComputedStyle","margin","marginLeft","marginTop","marginRight","marginBottom","dragTarget","intClosest","isReplaceDragEle","currentStateCheck","calculateParentPosition","getMousePosition","isDragScroll","sqrt","distance","getHelperElement","dragTargetElement","helperElement","parentClientRect","offsetParent","dragStart","getProperTargetElement","bindEvents","bindDragEvents","dragElement","dragArea","setDragArea","enableTailMode","enableScrollHandler","posValue","getProcessedPositionValue","dragElePosition","getDragPosition","intDrag","intDragStop","setGlobalDroppables","elementInViewport","offsetTop","offsetLeft","offsetHeight","pageYOffset","pageXOffset","innerHeight","queryPositionInfo","rect","docHeight","getDocumentWidthHeight","docWidth","drag","eleObj","checkTargetElement","hoverObject","triggerOutFunction","dragData","intOver","helper","tLeft","tTop","pagex","pagey","dLeft","dTop","enableAutoScroll","skipDistanceCheck","helperWidth","helperHeight","draEleTop","draEleLeft","iTop","iLeft","isDialogEle","tempDraEleTop","dragValue","scrollIntoView","getPathElements","scrollParent","getScrollParent","getScrollPosition","reverse","hasScroll","nodeEl","clientHeight","scrollingElement","nodeEle","docScrollTop","helperClientHeight","elementTop","elementLeft","elementsFromPoint","intOut","docBody","docEle","dragStop","dragStopCalled","intDrop","change","eleWidthBound","eleHeightBound","elementArea","tborder","tpadding","lowerKey","prevStyle","pointerEvents","elementFromPoint","oldEle","isdragscroll","dragEle","isOffsetParent","isVerticalScroll","clientWidth","cursorAt","sender","draggable","draggedElement","dropIns","getDropInstance","parentElement","drop","eleInst","eleInst_1","Droppable","mouseOver","wireEvents","accept","isDrag","isDropArea","canDrop","droppedElement","coord","L10n","KeyboardEvents","keyPressHandler","isAltKey","isCtrlKey","isShiftKey","curkeyCode","keyConfigs","configCollection_1","rconfig","rKeyObj","KeyboardEvents_1","getKeyConfigData","keyAction","unwireEvents","configCache","keyData","getKeyCode","keyVal","controlName","localeStrings","setLocale","intLocale","intGetControlConstant","currentLocale","localeObject","getConstant","SwipeSettings","swipeRegex","Touch","touchAction","tapCount","startEvent","point","updateChangeTouches","isTouchMoved","movedDirection","startPoint","lastMovedPoint","startEventData","hScrollLocked","vScrollLocked","tStampStart","timeOutTapHold","tapHoldEvent","moveEvent","endEvent","cancelEvent","movedPoint","eScrollArgs","calcScrollPoints","startEvents","originalEvent","startX","startY","distanceX","distanceY","scrollDirection","velocity","getVelocity","timeOutTap","swipeFn","tap","tapThreshold","modeclear","endPoint","calcPoints","swipeArgs","swipeDirection","tDistance","swipeSettings","swipeThresholdDistance","eSwipeArgs","defaultArgs","canTrigger","scrollBool","isScrollable","moved","checkSwipe","modeClear","lastTapTime","eleStyle","overflowX","overflowY","eTapArgs","pnt","newX","newY","newT","xDist","yDist","interval","LINES","QUOTES","IF_STMT","ELSEIF_STMT","ELSE_STMT","FOR_STMT","IF_OR_FOR","CALL_FUNCTION","NOT_NUMBER","WORD","DBL_QUOTED_STR","WORDIF","exp","ARR_OBJ","SINGLE_SLASH","DOUBLE_SLASH","WORDFUNC","WINDOWFUNC","compile","template","ignorePrefix","argName","evalExpResult","varCOunt","localKeys","isClass","singleSpace","insideBraces","outputString","cnt","matchStr","SPECIAL_CHAR","rlStr","addNameSpace","strs","HandleSpecialCharArrObj","rlStr_1","mtc","fnStr","fNameSpace","ftArray","splRegexp","arrObj","SlashReplace","NameSpaceForspecialChar","evalExp","addNS","tempStr","nameSpaceNew","quotes","NameSpaceArrObj","HAS_ROW","HAS_SVG","blazorTemplates","templateString","compiler","engineObj","templateId","root","blazorTemplateId","blazorId","childNodes","updateBlazorTemplate","comp","isEmpty","callBack","updateTemplate","resetBlazorTemplate","templateDiv","getElementById","innerTemplates","getElementsByClassName","tempId","tempElement","Engine","removeTags","removeAttrs","attribute","jsEvents","SanitizeHtmlHelper","beforeSanitize","selectors","tags","sanitize","serializeValue","wrapElement","removeXssTags","removeJsEvents","removeXssAttrs","tempEleValue","removeElement","nodes","localName","attr","hasAttribute","Location","Font","CenterLabel","fontFamily","Border","Offset","Margin","TooltipSettings","EmptyPointSettings","Indexes","CornerRadius","ContainerPadding","titleBorder","titleSettings","ChartArea","DragSettings","Periods","Index","PeriodSelectorSettings","StockTooltipSettings","seriesIndex","pointIndex","series","Query","subQuery","isChild","distincts","queries","fKey","fromTable","lookups","expands","sortedColumns","groupedColumns","lazyLoad","using","dataManager","execute","always","executeQuery","DataUtil","executeLocal","cloned","subQuerySelector","isCountRequired","tableName","addParams","distinct","fields","expand","tables","where","fieldName","operator","ignoreCase","ignoreAccent","matchCase","predicate","Predicate","searchKey","fieldNames","comparer","fnOperators","sortBy","isFromGroup","sortByForeignKey","direction","sorts","fnSort","filterQueries","sortByDesc","group","page","pageIndex","pageSize","take","nos","skip","hierarchy","query","selectorFn","foreignKey","requiresCount","aggregate","filterQueryLists","singles","filtered","isComplex","processOperator","condition","and","combinePredicates","combine","or","ornot","andnot","fromJson","json","fromJSONData","pred","record","isAnd","toJson","preds","consts","GroupGuid","notEndsWith","notStartsWith","wildCard","asteriskSplit","optionalSplit","like","fnAscending","fnDescending","localeCompare","extractFields","jsonArray","newData","aggregates","level","groupDs","isLazyLoad","jsonData","guid","items","indx","childLevels","grouped","groupedArray","records","_loop_2","this_2","getVal","tempObj","_loop_3","aggs","buildHierarchy","pKey","grp","fKeyData","getFieldList","copyObj","lowerCaseNameSpace","upperCaseNameSpace","casing","ds","middle","ignoreDiacritics","diacritics","array","callAdaptorFunction","adaptor","fnName","param1","param2","getAddParams","adp","dm","req","reqParams","isCors","getGuid","rand","isNull","getItemFromComparer","castRequired","requiresCompleteRecord","tmp","processData","prepareQuery","sampledata","DataManager","requiresCounts","parseJson","predicateList","getPredicate","sorted","mainPred","childPred","cpre","serverTimezoneOffset","timeZoneHandling","sum","average","truecount","falsecount","operatorSymbols","odBiOperator","odUniOperator","odv4UniOperator","equal","expected","notequal","lessthan","greaterthan","lessthanorequal","greaterthanorequal","doesnotcontain","isnotnull","isnull","startswith","doesnotstartwith","isempty","isnotempty","wildcard","endswith","doesnotendwith","processSymbols","jsonText","iterateAndReviveArray","iterateAndReviveJson","jsonReviver","keys_2","ms","offSet","dateParse","toTimeZone","isUTC","secondsMs","getUTCMilliseconds","utcFormat","hrs","mins","addSelfOffset","isGuid","replacer","jsonReplacer","arrayReplacer","keys_3","jsonDateReplacer","toUTC","utc","unix","toLocalTime","datefn","differenceString","localtimefn","norm","getSeconds","Adaptor","requestType","dataSource","pvt","processResponse","JsonAdaptor","processQuery","countFlg","keyCount","agg","isGroupByFormat","lazyLoadData","lazyLoadGroup","getAggregate","onDemandGroupInfo","field_1","onSortBy","onPage","formGroupResult","onWhere","uid","childLevel","aggQuery","batchRequest","changes","deletedRecordsLen","deletedRecords","addedRecords","insert","changedRecords","update","onAggregates","onSearch","isLazyLoadGroupSort","fnCompare","onGroup","onRange","onTake","onSkip","onSelect","keyField","UrlAdaptor","hierarchyFilters","getQueryRequest","groups","filters","searches","getFiltersFrom","getRequestQuery","pvtData","convertToQueryString","request1","selects","handleTimeZone","requests","isExpand","formRemoteGroupedData","getAggregateResult","getGroupedRecords","hasRecords","childGroupedRecords","original","batchUrl","crudUrl","removeUrl","changed","added","table","settings","insertUrl","keyColumn","updateUrl","predicats","aggregateData","isServerGrouping","groupQuery","ODataAdaptor","multipartAccept","batch","changeSet","batchPre","contentId","batchContent","changeSetContent","batchChangeSetContentType","updateType","onPredicate","requiresCast","getField","splittedStringValue","splittedValue","onComplexPredicate","onEachWhere","onEachSearch","onEachSort","onCount","metaCheck","rootUrl","dataUrls","resourceTableName","dataCopy","results","metaData","emptyAndBatch","processBatchResponse","versionCheck","oDataCount","requiresFormat","keys_4","localTimeReplacer","convertObj","localTime","compareAndRemove","initialGuid","cid","cSet","generateInsertRequest","generateUpdateRequest","generateDeleteRequest","stat","generateBodyContent","org","cIdx","jsonObj","exVal","changeGuid","RemoteSaveAdaptor","ODataV4Adaptor","onExpand","expanded","exArr","sel","close_1","combineVal","expandQueryIndex","ex","onDistinct","distinctFields","metaName","metaV4Name","dataUrl","dataCount","dataV4Count","WebApiAdaptor","Count","Items","WebMethodAdaptor","updateKey","CustomDataAdaptor","getData","addRecord","updateRecord","deleteRecord","batchUpdate","CacheAdaptor","GraphQLAdaptor","getVariables","getQuery","datamanager","urlQuery","vars","variables","resData","inserted","generateCrudData","bData","crudData","getMutation","isCrudAction","isInsertAction","cacheAdaptor","guidId","setInterval","forDel","currentTime","requestTime","generateKey","currentFilter","newQuery","cachedItems","crossDomain","persistQuery","isInitialLoad","offline","timeTillExpiration","cachingPageSize","enableCaching","jsonp","defaultQuery","isDataAvailable","getPersistedData","persistedData","persistData","setPersistQuery","persistedQuery","keyword","allPredicates","predicateObj","nestedPredicates","nestedPredicate","setDefaultQuery","makeRequest","deffered","Deferred","isCustomDataAdaptor","getDeferedArgs","extendRequest","fnSuccess","fnFail","isSelector","virtualSelectRecords","fnQueryChild","subDeffer","childArgs","subUrl","childReq","subData","isGraphQLAdaptor","fetchReqOption","virtualRecords","fetch_1","pResult","cResult","dofetchRequest","deff_1","fetch_2","successFunc","failureFunc","fetchDeffered","fetchFunc","fetch_3","clearPersistence","SvgRenderer","rootID","svgLink","rootId","getOptionValue","createSvg","svgObj","setElementAttributes","setSVGSize","drawPath","drawLine","drawRectangle","rectangle","drawCircle","circle","drawPolyline","polyline","drawEllipse","ellipse","drawPolygon","polygon","drawImage","preserveAspectRatio","createText","label","createTSpan","tSpan","createTitle","createDefs","createClipPath","clipPath","createForeignObject","foreignObject","createGroup","createPattern","createRadialGradient","colors","colorName","colorStop","newOptions","cx","cy","fx","fy","drawGradient","createLinearGradient","x1","y1","x2","y2","gradientType","defs","gradient","stop_1","cssText","drawClipPath","drawCircularClipPath","createCanvas","CanvasRenderer","canvasObj","getContext","setCanvasSize","setAttributes","lineWidth","dashArray","dashArrayString","setLineDash","strokeStyle","save","beginPath","stroke","moveTo","lineTo","restore","canvasTranslate","canvasCtx","cornerRadius","rx","globalAlpha","drawCornerRadius","fill","fillStyle","fillRect","arcTo","closePath","dataSplit","innerR","q1","q2","quadraticCurveTo","c1","c2","c3","c4","bezierCurveTo","arc","radius","counterClockWise","PI","transX","transY","dy","isTSpan","fontSize","font","anchor","textAlign","baseline","textBaseline","txtlngth","rotate","labelRotation","fillText","points","circumference","ry","scaleX","scaleY","scale","imageObj","Image","myGradient","setGradientValues","newColorStop","stopColor","addColorStop","values","updateCanvasAttributes","img_1","clearRect","canvasClip","clip","canvasRestore","measureText","themeFontStyle","isHeader","breakText","htmlObject","textArray","headerTextSize","whiteSpace","fontWidth","fontHeight","Size","withInAreaBounds","areaBounds","Rect","Side","isRight","isBottom","CustomizeOption","TextOption","transform","baseLine","getElement","drawSymbol","shape","renderer","functionName","locX","locY","eq","xValue","yValue","cos","sin","cornerPoints","outerRadius","innerRadius","angle","starPath","renderOption","calculateShapes","PathOption","TooltipLocation","TextStyle","TooltipBorder","AreaBounds","ToolLocation","Tooltip","initPrivateVariable","isCanvas","removeSVG","createTooltipElement","themeStyle","theme","tooltipFill","tooltipBoldLabel","tooltipLightLabel","tooltipHeaderLine","textStyle","boldTextSize","getTooltipThemeColor","formattedText","highlightPadding","areaMargin","isFirst","markerPoint","svgObject","templateObject","blazorTemplate","fadeOuted","updateTemplateFn","createTemplate","renderText","argsData","tooltip","markerSide","renderTooltipElement","drawMarker","markerSize","textElements","enableRTL","groupElement","pathElement","border","shapes","shapeOption","markerGroup","elementSize","marginX","arrowPadding","palette","tooltipContent","getTooltipTextContent","tooltipDiv","arrowLocation","tipLocation","isTop","isLeft","marginY","isFixed","sharedTooltipLocation","tooltipLocation","inverted","clipBounds","allowHighlight","wrapPadding","wrapHeader","isWrap","wrappedText","headerSize","pathElement_1","pointRect","enableAnimation","crosshair","updateDiv","animateTooltipDiv","tooltipPlacement","rX","rY","tipX","tipY","findDirection","enableShadow","shadowId","shadow","defElement","borderColor","changeText","revert","findFormattedText","isRender","lines","tspanElement","textCollection","tspanOption","subWidth","tspanStyle","leftSpace","rightSpace","headerContent","isBoldTag","headerWidth","isLeftSpace","isRightSpace","headerSpace","isRow","isColumn","subStringLength","markerPadding","labelColor","contentWidth","textHeight","renderOptions","textElement","withoutHeader","pointsLength","isTextWrap","len_1","isRTLText","textFont","width_1","renderContentRTL","contentWidthIndex","tooltipText","characterCollection","isRtlText","isValidHTMLElement","firstElement","firstElementChild","templateElement","sharedTemplateElement","templateFn","controlInstance","outerHTML","tooltipRect","tooltipRendered","rect1","thisObject_1","tooltipRect1","bounds","getCurrentPosition","symbolLocation","clipX","clipY","markerHeight","boundsX","boundsY","outOfBounds","currenDiff","templateComplier","fadeOut","tooltipElement","tooltipGroup_1","Node","ELEMENT_NODE","opacity_1","progressAnimation","endAnimation","tooltipGroup","DoubleRange","mStart","mEnd","Double","isStacking","calculateNumericNiceInterval","actualDesiredIntervalsCount","getActualDesiredIntervalsCount","niceInterval","desiredIntervals","isAutoIntervalOnBothAxis","minInterval","pow","logBase","intervalDivs","currentInterval","zoomFactor","zoomPosition","enableAutoIntervalOnZooming","getActualRange","initializeDoubleRange","startFromZero","actualRange","doubleRange","minimum","POSITIVE_INFINITY","maximum","NEGATIVE_INFINITY","valueType","calculateRangeAndInterval","calculateRange","applyRangePadding","calculateVisibleLabels","setRange","visible","paddingInterval","maxPointLength","orientation","xAxis","rangePadding","getMinPointsDelta","requireInvertedAxis","yAxisRange","findMinMax","xMin","xMax","drawType","dragSettings","enable","dragY","visibleRange","yMax","yMin","cumulativeMax","cumulativeValue","yData","intermediateSumIndexes","sumIndexes","getRangePadding","findAdditional","findNormal","updateActualRange","calculateVisibleRange","startValue","chartAreaType","zoomingScrollBar","calculateVisibleRangeOnZooming","duplicateTempInterval","tempInterval","triggerRangeRender","visibleLabels","labelStyle","getFormat","isCustom","intervalDigits","formatDigits","labelFormat","intl","useGroupingSeparator","startLabel","endLabel","withIn","triggerLabelRender","formatValue","getMaxLabelWidth","isStack100","labelValue","toLocaleString","legendClick","legendRender","textRender","pointRender","sharedTooltipRender","seriesRender","axisLabelRender","axisRangeCalculated","tooltipRender","chartMouseMove","chartMouseClick","chartDoubleClick","pointClick","pointMove","chartMouseLeave","chartMouseDown","chartMouseUp","resized","beforeResize","beforePrint","regSub","regSup","ChartAnnotationSettings","LabelBorder","MultiLevelCategories","StripLineSettings","MultiLevelLabels","ScrollbarSettingsRange","ScrollbarSettings","Row","axes","nearSizes","farSizes","insideFarSizes","insideNearSizes","computeSize","scrollBarHeight","innerPadding","labelPosition","internalVisibility","findTickSize","crossInAxis","findLabelSize","lineStyle","isAxisOpposedPosition","Column","MajorGridLines","MinorGridLines","AxisLine","MajorTickLines","MinorTickLines","CrosshairTooltip","Axis","axisBottomLine","crossAt","updatedRect","multiLevelLabelHeight","isChart","isIntervalInDecimal","titleCollection","titleSize","isRTLEnabled","crossAxis","tickPosition","isInside","majorTickLines","inside","isHorizontal","titleRotation","titleStyle","axisTitleFont","rotateTextSize","getTitle","labelSize","titlePadding","labelPadding","maxLabelSize","placeNextToAxisLine","findDifference","updateCrossValue","valueToCoefficient","isAxisInverse","isZoomSet","baseRange","baseModule","stockChart","pointX","isAxisLabelBreak","previousEnd","isIntersect","labelIntersectAction","isBreakLabel","originalText","axisLabelFont","breakLabelSize","enableTrim","rotatedLabel","width1","edgeLabelPlacement","findMultiRows","result1","textWrap","height_1","isHorizontalAngle","multiLevelLabelModule","multiLevelLabels","getMultilevelLabelsHeight","currentX","currentLabel","isBreakLabels","width2","getModule","firstToLowerCase","setIsInversedAndOpposedPosition","isPolar","opposedPosition","isInversed","updateAxis","chartAxisLayoutPanel","axisCollections","axisElement","axisLineElement","outsideElement","findAxisPosition","drawAxis","enableCanvas","appendChildElement","redraw","VisibleLabels","getVisiblePoints","tempPoint","tempPoints","transformValue","labelText","initialClipRect","delayRedraw","axisSvgObject","svgRenderer","box","pointsAdded","textWidth","angleInRadians","rotatedTextWidth","rotatedTextHeight","showTooltip","areaWidth","isTitleOrLegendEnabled","bound","innerText","logWithIn","withInRange","previousPoint","currentPoint","nextPoint","zoomModule","zoomSettings","mX2","mX1","mX3","xStart","xEnd","values_1","subtractThickness","thickness","subtractRect","degreeToLocation","degree","center","radian","ChartLocation","degreeToRadian","getRotatedRectangleCoordinates","actualPoints","centerX","centerY","coordinatesAfterRotation","tempX","tempY","rotatedX","rotatedY","isRotatedRectIntersect","minA","maxA","projected","i1","minB","maxB","polygons","i2","normal","subArray","TransformToVisible","yAxis","isInverted","labelPlacement","coefficient","startAngle","CoefficientToVector","valueToPolarCoefficient","primaryXAxis","clipRect","indexFinder","isPoint","ids","dateTimeInterval","findCrosshairDirection","withInBounds","getValueXByPoint","getValueYByPoint","findClipRect","seriesCollection","xValues","minVal","seriesMin","minDelta","MAX_VALUE","stackingGroups","xAxisName","stackingGroup","timeOffset","index_1","getAnimationFunction","effect","endValue","markerAnimate","isLabel","annotations","pathAnimation","previousDirection","animateDuration","currentDireciton","startDirections","splitDirections","endDirections","startPath","endPath","directions","animateAddPoints","removeDirection","currentDirection","startPathCommands","endPathCommands","maxLength","startPathCommand","endPathCommand","startCoords","endCoords","interpolatedCoords","startCoord","endCoord","interpolatedValue","appendClipElement","clipElement","redrawElement","isLineBreakLabels","text_1","maxWidth","labelCollection","breakLabels","i_1","lineBreakLabelTrim","maximumLabelWidth","textTrim","availableSize","desiredIntervalsCount","maximumLabels","templateAnimate","isRemove","isChartControl","control","chartRenderer","xVal","yVal","isBulletChart","sizeBullet","targetWidth","lx","ly","space","cartesianlarge","cartesiansmall","getAccumulationLegend","calculateLegendShapes","Int32Array","accReactTemplate","childElement","isTemplate","datalabelGroup","dataLabel","clientRect","accumulationDataLabelModule","calculateLabelSize","chartReactTemplate","labelIndex","category","dataLabelCollections","dataLabelModule","calculateTemplateLabelSize","marker","dataLabelId","getTemplateFunction","tempObject","elementData","reactCallback","getFontStyle","measureElementRect","isReactCallback","getPoint","xLength","yLength","isAnimate","forceAnimate","isRect","previousRect","scatterElement","currentTransform","previousTranslate","existChild","currentRect","setStyle","animateRectElement","previousTranform","newTransform","previousTransform","pointAnimation","isDiv","rotateX","rotateY","animateRedrawElement","replaceChild","stopTimer","clearInterval","isCollide","collections","isOverlap","calculateRect","textSize","convertToHexCode","componentToHex","hex","convertHexToColor","ColorValue","colorNameToHex","isRGBValue","getSaturationColor","factor","colorCode","rgb","isRtlEnabled","stringToNumber","containerSize","animateTextElement","customLabelFormat","formatText_1","currentValue","isMinus","seriesClipRect","isRotatedLabelIntersect","isDataLabelWrap","dx","calculateSize","containerWidth","containerHeight","marginHeight","tooltipSpace","periodHeight","periodSelectorSettings","periods","enableGrouping","disableRangeSelector","canvasRender","chartObject","selectorObject","textOverflow","titlePositionX","textAlignment","maximumWidth","wrapAnyWhere","textWrapAnyWhere","getUnicodeText","digit","digitSpecific","convertedText","unicodeSub","unicodeSup","blazorTemplatesReset","StackValues","startValues","endValues","RectOption","ImageOption","CircleOption","Thickness","PointData","lierIndex","AccPointData","getColorByValue","colorMap","rbgColorValue","previousColor","nextColor","previousOffset","nextOffset","percent","full","length_2","splitColorValueOffset","splitColor","previous","prevColor","getPercentage","getPercentageColor","getGradientColor","getTextAnchor","alignment","getSeriesColor","getThemeColor","canvas","darkBackground","axisLabel","axisTitle","axisLine","majorGridLine","minorGridLine","majorTickLine","minorTickLine","chartTitle","legendLabel","background","areaBorder","errorBar","crosshairLine","crosshairFill","crosshairLabel","markerShadow","selectionRectFill","selectionRectStroke","selectionCircleStroke","tabColor","bearFillColor","bullFillColor","toolkitSelectionColor","toolkitFill","toolkitIconRectOverFill","toolkitIconRectSelectionFill","toolkitIconRect","chartTitleFont","legendTitleFont","legendLabelFont","tooltipLabelFont","datalabelFont","chartSubTitleFont","crosshairLabelFont","stripLineLabelFont","histogram","BaseSelection","seriesStyles","seriesclass","styleId","selectionPattern","highlightPattern","highlightColor","visibleSeries","patternName","pointColorMapping","rangeColorSettings","interior","selectionStyle","highlightMode","legendSettings","enableHighlight","isRectSeries","unSelectOpacity","selectionModule","selectionMode","unselected","svg","pathOptions","patternGroup","heightStr","widthStr","loadPattern","concatIndexes","userIndexes","localIndexes","checkVisibility","selectedIndexes","uniqueSeries","selectedIndexes_1","uniqueSeries_1","addSvgClass","elementClassName","removeSvgClass","LegendSettings","BaseLegend","maxItemHeight","rowHeights","pageHeights","columnHeights","pageXCollections","chartRowCount","legendTitleCollections","legendRegions","pagingRegions","legend","legendID","isAccChartControl","isBulletChartControl","isStockChartControl","bulletChart","fivePixel","rowCount","pageButtonSize","maxColumns","currentPage","backwardArrowOpacity","forwardArrowOpacity","arrowWidth","arrowHeight","isTitle","currentPageNumber","calculateLegendBounds","previousLegendBounds","getPosition","legendBounds","isVertical","itemPadding","library","get3DLegendBounds","getLegendBounds","containerPadding","accumulation","setBounds","computedWidth","computedHeight","titleHeight","titlePosition","legendTitleSize","isPaging","enablePages","calculateLegendTitle","labelIns","ticklIns","categoryFieldValue","categoryField","legendHeight","legendWidth","alignLegend","axisTextSize","verticalAxes","legendSize","renderLegend","titlePlusArrowWidth","requireLegendBounds","firstLegend","findFirstLegendPosition","legendCollections","upArrowHeight","legendGroup","legendTranslateGroup","createLegendElements","maxHeight","pageCount","totalPages","shapeHeight","isRtlEnable","getLinearLegend","legendSeriesGroup","previousLegend","startPadding","shapeWidth","xLocation","textOptions","textPadding","shapePadding","legendIndex","bottomSapce","legendOption","isReverse","accessbilityText","generateId","getRenderPoint","renderSymbol","toggleVisibility","renderPagingElements","translateX","translateY","xmlns","nextLegend","linerGradientEle","fillColors","numberItems","diffValue","colorsLength","calculatedValue","_c","fillColor","offsetValue","stopEle","startLabelY","endLabelY","startLabelX","endLabelX","startTextSize","endTextSize","otherSpaces","linearBarWidth","linearBarHeight","diffWidth","diffHeight","fontcolor","translatePage","gradientLegend","legendCollection","legendCollection_1","maximumTitleWidth","renderLegendTitle","topPadding","legendTitleTextOptions","legendItemsGroup","clippath","pagingClipRect","regionPadding","symbolColor","isStrokeWidth","isCustomBorder","strokewidth","markerShape","seriesBorder","isLineShapemarker","symbolOption","markerVisibility","region","textOption","pageTextElement","paginggroup","grayColor","pageUp","pageDown","iconSize","titleWidth","cursor","clipPathHeight","totalNoOfPages","calTotalPage","getPageHeight","pagingText","pageNumber","changePage","backwardArrow","forwardArrow","pageText","hideArrow","showArrow","arrowElement","mouseX","mouseY","targetId","clearTooltip","LegendOptions","AccumulationAnnotationSettings","AccumulationDataLabelSettings","PieCenter","AccPoints","labelRegion","labelVisible","regions","isExplode","isClubbed","isSliced","isLabelUpdated","initialLabelRegion","AccumulationSeries","clubbedPoints","sumOfPoints","rightSidePoints","leftSidePoints","refreshDataManager","dateSource","dataModule","generateQuery","dataManagerSuccess","resultData","getPoints","seriesCounts","refreshChart","findSumOfPoints","sumOfClub","palettes","clubValue","groupTo","setPoints","isClub","pushPoints","lastGroupTo","clubPoint_1","generateClubPoint","pointsLength_1","explode","explodeAll","explodeIndex","clubPoint","sliceRadius","groupMode","yName","xName","legendImageUrl","tooltipMappingName","separatorY","setAccEmptyPoint","renderSeries","seriesGroup","renderPoints","animateSeries","renderDataLabel","findMaxBounds","labelBound","accumulationBound","pieSeriesModule","borderRadius","accumulationLegendModule","explodeDistance","previouRadius","previousCenter","patternFill","pointId","patterns","percentage","emptyPointSettings","applyPattern","renderPoint","getSeriesElement","findAreaRect","firstQuarter","secondQuarter","showZero","midAngle","drawDataLabels","childElementCount","dataLabelCallBack","totalbound","findMaxLabelWidth","setData","samePoints","chartDuration","initProperties","centerLabel","renderCenterLabel","annotationModule","renderAnnotations","addPoint","dataPoint","visiblepoints","updateSeries","removePoint","removepoints","maxLabelWidth","updatePoint","previousRadius","legendShape","subTitleHeight","subTitle","subTitleStyle","subTitleCollection","getSmartLegendLocation","pointByIndex","points_1","Data","initDataManager","dataQuery","dataManagerDeferred_1","AccumulationBase","pieCenter","pieBaseCenter","pieRadius","pieBaseRadius","pieLabelRadius","pieBaseLabelRadius","isCircular","isVariousRadius","isRadiusMapped","processExplode","explodePoints","deExplodeAll","invokeExplode","pointExplode","accumulationSelectionModule","selectedDataIndexes","animationDuration","deExplodeSlice","clubPointsExploded","clubPointExplode","getSum","explodeSlice","sliceId","performAnimation","setTranslate","setElementTransform","endX","endY","PieBase","initAngles","radiusCollection","minRadius","maxRadius","seriesRadius","connectorStyle","labelRadius","explodeOffset","findCenter","defaultLabelBound","totalAngle","getLabelRadius","accumulationRect","getSeriesBound","accumulationRectCenter","endAngle","getRectFromAngle","nextQuandrant","lastQuadrant","getPathArc","isBorder","seriesPoints","getDoughnutPath","getPiePath","clockWise","sliceCheck","atan2","adjustCornerRadius","cx2","cy2","cx1","cy1","innerStart","innerEnd","x3","y3","x4","y4","cx3","cy3","cx4","cy4","anglePerSlice","adjustedCornerRadius","isOneSlice","doAnimation","annotationElement","PieSeries","getPathOption","findSeries","toggleInnerPoint","createBorderEle","accumulationId","borderElement","srcElem","innerPie","seriousGroup","borderExplode","removeBorder","previouCenter","seriesElement","curentDegree","currentStartAngle","currentRadius","previouCenterx","previouCentery","accBaseModule","previousCenterX","previousCenterY","groupId","clipslice","PrintUtils","print","printWindow","outerHeight","outerWidth","resizeTo","screen","availWidth","availHeight","htmlContent","getHTMLContent","div","links","blinks","reference","cloneNode","Element","childIndex","actualBackgroundColor","isSVG","AccumulationChart","animateselected","currentLegendIndex","currentPointIndex","previousTargetId","isLegendClicked","chartid","temIndex","tempcolor","tempindex","tempindex1","currentSeries","datasource","currentSeries_1","entry1","entry2","accPoint","missing","calculateBounds","renderElements","removeSvg","refreshPoints","unWireEvents","setCulture","collection","setTheme","loadEventData","calculateVisibleSeries","isIE11Pointer","accumulationMouseMove","accumulationMouseEnd","accumulationMouseStart","accumulationOnMouseClick","accumulationOnDoubleClick","accumulationRightClick","accumulationMouseLeave","accumulationChartKeyDown","documentKeyHandler","accumulationChartKeyUp","accumulationResizeBound","accumulationResize","setMouseXY","svgRectElement","svgRect","touchArg","titleTooltip","hoverTextFormat","updateCenterLabel","previousSize","currentSize","beforeResizeArgs","cancelResizedEvent","refreshSeries","export","exportModule","afterExport","getDataUrl","msTouchAction","msContentZooming","msUserSelect","webkitUserSelect","setAnnotationValue","annotationIndex","annotation","processAnnotation","triggerPointEvent","enableBorderOnMouseMove","actionKey","chartKeyboardNavigations","legendElement","pagingElement","setTabIndex","focusTarget","getActualIndex","currentLegend","lastElementChild","totalLength","previousElement","currentElement","accumulationHighlightModule","pointRegion","targetElement","calculateSelectedElements","accumulationTooltipModule","enableTooltip","renderSeriesTooltip","legendItemsId","legendSelection","click","focusChild","removeTooltip","createPieSvg","hasChildNodes","createSecondaryElement","doGrouppingProcess","getLegendOptions","renderBorder","renderTitle","processSelection","renderAnnotation","setSecondaryElementPosition","tooltipParent","backGroundImage","backgroundImage","image","invokeSelection","invokeHighlight","redrawSelection","getAnchor","expodeValue","renderSubTitle","getPieData","parseFormat","dataIndex","textValue","dataValue","isanimate","initialPositions","tspan","ypos","maxwidth","centerLabelSize","collectionLength","tspanElements","animateTspan","centerLabelDelay","startx","starty","endx","endy","currentY","subTitleElementSize","subTitleOption","findDatalabelVisibility","enableExport","allowExport","changeVisibleSeries","visibleSeries_1","refreshElements","refreshBounds","seriesRefresh","blazorProp","neckHeight","neckWidth","previousPoints","defaulthtmlkeys","delayUpdate","ComponentBase","mountingState","attrKeys","cachedTimeOut","isAppendCalled","initRenderCalled","isReactForeceUpdate","isshouldComponentUpdateCalled","isCreated","refreshChild","canDelayUpdate","renderReactComponent","portals","updateProperties","reactElement","nextProps","dProps","prevProps","statelessTemplates","propkey","isClassName","htmlattributes","compareValues","clsName","propsClsName","dpropsClsName","refreshProperties","processComplexTemplate","compTemplate","complexTemplate","PropVal","getDefaultAttributes","propKeys","ignoreProps","controlAttributes","reactUid","multiline","clsList","onChange","syntheticEvent","value1","value2","tempVal","tempVal2","compareObjects","oldProps","newProps","lenSimilarity","diffArray","templateProps","_j","checkInjectedModules","prevModule","curModule_1","getInjectedServices","directivekeys","changedProps","directiveValue","validateChildren","skipRefresh","prevProperties","dKeys","compareOutput","_c1","allColumns","propInstance","changedProps_1","hasModule","appendReactElement","container","portal","ReactDOM","templateNames","tempPortal","propIndexCount","childCache","childs_1","ifield","getChildType","childProps","getChildProps","isDirective","subChild","subChild_1","accessProp","cacheVal","cachedValue","childs_2","isService","applyMixins","derivedClass","baseClass","classObj","ComplexBase","stringCompiler","CSPTemplate","cEle","actTemplate","actData","rele","AccumulationChartComponent","statelessTemplateProps","immediateRender","AccumulationLegend","titleRect","mouseMove","mouseEnd","legendItemsId_1","seriesType","extraWidth","extraHeight","titlePlusArrowSpace","legendEventArgs","rowWidth","columnWidth","pageWidth","pageRowWidth","previousRowCount","columnHeight","convertHtmlEntities","getLegendHeight","getPageWidth","totalRowCount","getMaxColumn","legendText","maxPageColumn","maxColumnWidth","columns_1","prevPage","getAvailWidth","tx","prevLegend","previousLocation","textStartLoc","previousBound","isWithinBounds","availablewidth","legendBound","getTitleRect","legendByIndex","legendCollections_1","legendItemsId_2","legendClickArgs","sliceVisibility","sliceAnimate","ChartData","currentPoints","insideRegion","commonXvalues","isTransposed","markerWidth","getRectPoint","isSelected","rectPoints","fromCenterX","fromCenterY","clickAngle","distanceFromCenter","arcAngle","isScrolling","regionData","currentXPosition","isPointInThresholdRegion","checkRegionContainsPoint","regionRect","isBar","heightValue","getClosest","xvalues","xData","leftSideNearest","rightSideNearest","binarySearch","getClosestX","isDescending","sortData","symbolLocations","mergeXvalues","getDistinctValues","commonXValue","commonXValues","intial","BaseTooltip","getTooltipElement","isTooltip","isStockChart","pushData","enable3D","stopAnimation","removeHighlight","highlightPoint","highlight","isSelectedElement","highlightPoints","createTooltip","clipLocation","crosshairEnabled","extraPoints","templatePoint","customTemplate","tooltipModule","tooltip3DModule","svgTooltip","SVGTooltip","headerText","findPalette","enableTextWrap","updatePreviousPoint","animationComplete","findColor","svgElement","valueX","valueY","removeHighlightedMarker","markerRender","data_1","removeText","toolTipInterval","AccumulationTooltip","mouseLeaveHandler","mouseMoveHandler","mouseUpHandler","fadeOutDuration","triggerTooltipRender","getTooltipText","findHeader","pointY","pointText","seriesName","tooltipSuccess","enableMarker","getSeriesFromIndex","parseTemplate","pointValue","AccumulationDataLabel","rightSideRenderingPoints","leftSideRenderingPoints","getDataLabelPosition","getLabelDistance","getLabelRegion","marginValue","labelAngle","enableSmartLabels","getSmartLabel","getLabelLocation","calculateLabelCollection","areaRect","getTextSize","circular","findPreviousPoint","enableRotation","isOverlapping","isConnectorLineOverlapping","setOuterSmartLabel","labelRadius_1","location_1","textTrimming","setPointVisibileFalse","setPointVisibleTrue","textsize","getOverlappedAngle","setSmartLabelForSegments","prevPoint","textRegion","overlapHeight","getEdgeOfLabel","previousstart","previousend","isLineRectangleIntersect","line1","line2","isLinesIntersect","point1","point2","point11","point12","a1","b1","a2","b2","lies","getAngle","getConnectorPath","connector","getConnectorStartPoint","getPerpendicularDistance","getPolyLinePath","controlPoints","getBezierPoint","p0","labelshape","edge","labelLocation","extraSpace","triangleSize","labelOffset","location_2","argsFont","getDatalabelText","getTemplateSize","correctLabelRegion","modifiedPoints","extendedLabelsCalculation","modifiedPoints_1","finalizeDatalabels","location_3","setTemplateStyle","startLocation","getSaturatedColor","dataLabelClipPath","legendModule","getLabelBackground","doTemplateAnimation","saturatedColor","rgbValue","contrast","halfSidePoints","skipPoints","arrangeLeftSidePoints","isIncreaseAngle","arrangeRightSidePoints","startFresh","angleChanged","checkAngle","rightSideRenderPoints","lastPoint","changeLabelAngle","isOverlapWithNext","decreaseAngle","increaseAngle","leftSideRenderPoints","isOverlapWithPrevious","isRightSide","newAngle","variableR","halfsidePoints","angleDiff","prevAngleDiff","secondPrevPoint","thirdAngleDiff","AccumulationSeriesDirective","AccumulationSeriesCollectionDirective","PieChart","statusMapping","delivered","sent","colorMapping","formattedData","getChart","tilt","placeItems","CartesianAxisLayoutPanel","chartModule","measureAxis","chartAreaWidth","chartArea","leftSize","rightSize","topSize","bottomSize","measureRowAxis","measureColumnAxis","calculateAxisSize","calculateFixedChartArea","refreshAxis","rows","row","calculateRowSize","arrangeAxis","measureDefinition","column","calculateColumnSize","scrollbarSettings","scrollBarModule","enableScrollbar","enableScrollbarOnZooming","isZoomed","axisOffset","nearCount","farCount","plotOffset","len_2","span","computedTop","plotOffsetTop","getAxisOffsetValue","plotOffsetBottom","len_3","len_4","computedLeft","plotOffsetLeft","plotOffsetRight","measure","actualIndex","getActualRow","pushAxis","horizontalAxes","getActualColumn","position1","position2","crossesAt","crossesInAxis","updateCrossAt","primaryYAxis","dateFormatter","labels","axisCollection","actualLength","columnIndex","rowIndex","rowTop","remainingHeight","columnLeft","remainingWidth","renderAxes","axisVisibility","yAxisName","paretoOptions","showAxis","drawPaneLines","renderScrollbar","isScrollUI","scrollElement","drawBottomLine","axisName","drawAxisLine","majorGridLines","minorTickLines","minorGridLines","optionsLine","definitionName","plotX","plotY","plotBottom","plotTop","plotLeft","plotRight","drawYAxisGridLine","minorGridDirection","isLogAxis","isCategoryAxis","majorGrid","majorTick","isOpposed","tickSize","axisLineSize","ticksbwtLabel","isTickInside","ticks","chartThemeStyle","zoomRedraw","updateAxisElement","renderGridLine","minorTicksPerInterval","renderMinorGridOnZooming","drawAxisMinorLine","previousYLabel","pointYValue","endIndex","drawYAxisLabels","isAxisBreakLabel","RotatedWidth","labelSpace","isLabelInside","isVerticalAngle","maxLineWidth","intervalLength","labelHeight","yAxisLabelX","labelElement","isInverse","isLabelOnAxisLineLeft","sizeWidth","breakLabelSizeWidth","LabelMaxWidth","breakLabelMaxWidth","previousYValue","currentYValue","optionsY","createZoomingLabel","rangeAnimate","animateElement","previousXLabel","getAxisLabelXvalue","lineBreakAlignment","drawYAxisBorder","gap","labelBorder","createAxisBorderElement","renderYAxisMultiLevelLabels","drawYAxisTitle","isRotated","drawXAxisGridLine","minorDirection","numericIDs","calculateGridLineId","pointsRemoved","pointXValue","isPointRemoved","elementArray","elementsLength","numericIds","isFirstLabel","logStart","coor","logInterval","logPosition","ticksX","ticksY","minorGird","minorTick","findLogNumeric","drawXAxisLabels","labelWidth","islabelInside","tickSpace","newPoints","textPoints","rotatedLabelSize","isLabelUnderAxisLine","axislabelElement","removeAxisLabelElements","isEndAnchor","paddingForBreakLabel","breakLabelWidth","getLabelText","xValue2","rect_1","xAdjustment","yAdjustment","rectCoordinates","getRectanglePoints","rectCenterX","rectCenterY","rotateAngle","textRect","textRectCoordinates","newRect","interSectPoint","calculateIntersection","rectPoint1","rectPoint2","trimValue","optionsX","gridDirection","elementId","isGrid","visibleLabelTexts_1","childNode","p3","p4","c2x","c3x","c2y","c3y","u1","u4","findAxisLabel","drawXAxisBorder","axisRect","renderXAxisMultiLevelLabels","drawXAxisTitle","gridModel","gridId","gridIndex","themeColor","removeIndex","isRemoved","findParentNode","zoomElement","chartRect","createZoomingLabels","DataLabelSettings","MarkerSettings","ParetoOptions","Points","isSelect","isPointInRange","verticalError","verticalNegativeError","horizontalError","horizontalNegativeError","verticalPositiveError","horizontalPositiveError","Trendline","setDataSource","trendLineModule","initDataSource","visibleSeriesCount","ErrorBarCapSettings","ChartSegment","ErrorBarSettings","SeriesBase","rangeColorPoints","isAdvancedColor","currentViewData","isRectTypeSeries","removedPointIndex","processJsonData","Series","textMappingName","processInternalData","paretoSeriesModule","performCumulativeCalculation","sizeMax","getSeriesType","pushCategoryPoint","pushDateTimePoint","pushDoublePoint","updateSplineValue","pushCategoryData","setEmptyPoint","rangeColorsInterior","isArea","isRange","findSplinePoint","calculateBinValues","histogramValues","binWidth","getObjectValueByMappingString","enableComplexProperty","getObjectValue","high","low","volume","errorBarColor","errorBarColorMapping","isAdvancedColorSupported","rangeColorName","colorValue","getPointFillColor","pointFill","rangeMap","mappingName","findVisibility","getAverage","yValues","yAxisMin","yAxisMax","setXYMinMax","setHiloMinMax","seriesMinY","isNegativeValue","isIndexed","indexLabels","isRemoteData","localData","findCurrentData","recordsCount","refreshTechnicalIndicator","trendlines","refreshBound","initialRender","stockChartDataManagerSuccess","drawPoints","lowDrawPoints","delayedAnimation","currentData","refreshAxisLabel","findSeriesCollection","isStack","rowSeries","_d","_e","_f","_g","rectSeriesInChart","calculateStackedValue","isStacking100","columnItem","calculateStackingValues","lastValue","lastPositive","lastNegative","frequencies","findFrequencies","groupingValues","visiblePoints","stackingSeies","stackedValues","seriesCollection_1","isColumnBarType","findPercentageOfStacking","stackingSeies_1","seriesCollection_3","createSeriesElements","errorBarModule","appendSeriesElement","seriesElements","explodeValue","markerMaxValue","clipRectElement","symbolElement","checkTabindex","errorBarElement","dataLabelElements","shapeElement","isStockChartRendered","doErrorBarAnimation","doMarkerAnimation","doDataLabelAnimation","setPointColor","setBorderColor","removeTrackballElements","calculateStackValues","renderMarker","updateChartAxis","updatePointsAfterRemoval","baseId","trackball0","trackball1","baseClassPattern","pointIndexMatch","updatedData","isSameData","isXAxisChanged","rotatedDataLabelCollections","newHistogramData","existingPoint","newPoint","updateDirection","renderAreaBorder","stripLineModule","renderStripLine","seriesCollection_4","point_1","MarkerExplode","markerMove","startMove","explodeSeries","pointData","showNearestPoint","chartSeries","isPointMouseDown","markerExplode","drawTrackBall","maxPointCount","seriesMarker","highlightModule","generateStyle","symbolId","markerElement","trackElement","imageUrl","selectionId","seletionElem","endAnimate","rectElements","trackballAnimate","delays","durations","trackballElements","markerShapes","Marker","previousPath","circlePath","isBoxPlot","isFilled","findlElement","outliers","markerFill","markerBorder","markerOpacity","imageURL","markerClipRect","getRangeLowPoint","calculateDistance","markerElements","animated","markerDelay","pathLength","getTotalLength","distances","incFactor","lowPoint","TechnicalIndicator","targetSeries","RangeColorSetting","CrosshairSettings","ZoomSettings","Chart","checkResize","clickCount","singleClickTimer","isCrosshair","currentSeriesIndex","previousPageX","previousPageY","allowPan","mergePersistChartData","dataObj","isIdHasSpecialCharacter","numberRegex","childElementId","markerIndex","refreshDefinition","elementid","svgId","cartesianChartRendering","applyZoomkit","beforeRenderData","createChartSvg","calculateAreaType","initTechnicalIndicators","initTrendLines","calculateVisibleAxis","mouseMoveEvent","getLocalizedLabel","rangeFound","enablePeriodSelector","enableSelector","removeSelection","isCalculateStacking","rectCount","filterArray","calculateDragSelectedElements","renderSeriesElements","performSelection","yAxisElements","mainObject","initializeModuleElements","indicators","indicatorElements","hasTrendlines","trendLineElements","isTrendline","tooltipdiv","initializeIndicator","initializeTrendLine","appendElementsAfterSeries","sourceIndex","renderCanvasSeries","seriesSvg","indicator","createIndicatorElements","getTrendLineElements","calculateStockEvents","enablePan","performedUI","showToolbar","applyZoomToolkit","check","prevPointCount","initializeDataModule","techIndicator","elementSpacing","marginTotal","stockLegendModule","exportChart","trendIndex","trendLine","initSeriesCollection","polarSeriesModule","radarSeriesModule","paretoAxes","isPanning","isAxisZoomed","scrollSettingEnabled","initAxis","injectTo","isSeries","zOrder","isSecondaryAxis","initSeries","positionY","positionX","rotation","subtitleSize","borderOptions","subTitleOptions","addSeries","scrollTo","removeSeries","clearSeries","addAxes","axisCollection_1","removeAxis","highlightElement","stopEvent","chartOnMouseDown","chartOnMouseClick","chartOnDoubleClick","chartRightClick","mouseLeave","chartKeyDown","chartKeyUp","resizeBound","touchObject","chartResize","longPressBound","longPress","tapHold","crosshairModule","zooming","disableScroll","enableSelectionZooming","enablePinchZooming","isOrientation","chartOnMouseMove","onPanning","chartOnMouseLeave","isChartDrag","removeLegendHighlightStyles","enableDeferredZooming","enableMouseWheelZooming","titleElement","blur","legendElement_1","seriesIndexes","highlightChart","completeSelection","toolkit","zoomInOutCalculation","performZoomRedraw","yArrowPadding","xArrowPadding","doPan","XYvalues","FindXYPointValue","timeInterval","axisData","pointDoubleClick","axisLabelClick","triggerAxisLabelClickEvent","Xvalue","Yvalue","clickEvt","axisIndex","currentAxis","labelID","axisTooltip","dataEditingModule","pointMouseMove","texts","categories","mouseDownX","previousMouseMoveX","mouseDownY","previousMouseMoveY","isDoubleTap","pointMouseDown","chartOnMouseUp","pointMouseUp","setLocaleConstants","defaultLocalConstants","ZoomIn","Zoom","ZoomOut","Pan","Reset","ResetZoom","enableAnnotation","errorBarVisible","isPointDrag","dataLabelEnable","isLegend","currentModule","findIndicatorModules","findTrendLineModules","findAxisModule","datetimeEnabled","categoryEnabled","logarithmicEnabled","striplineEnabled","dateTimeCategoryEnabled","multiLevelEnabled","axisCollections_1","findStriplineVisibility","stripLines","macdEnable","bandEnable","isLine","isSpline","markerEnable","trendline","striplines","striplines_1","removeLength","pinchTarget","containerCollection","definitions","definitions_1","axisChange","getVisibleSeries","refreshLiveData","removeStyles","mousemove","createEvent","initMouseEvent","hideTooltip","showCrosshair","hideCrosshair","removeCrosshair","crosshairTooltip","isClosed","boxPlotMode","showMean","binInterval","currentMode","highlightDataIndexes","isMultiSelect","ChartComponent","LineBase","tempPoints2","xVisibleRange","yVisibleRange","xTolerance","previousX","yTolerance","previousY","prevXValue","prevYValue","seriesPoints_1","getLineDirection","firstPoint","secondPoint","getPointLocation","appendLinePath","appendPathElement","addPath","minLength","addAreaPath","doProgressiveAnimation","strokeDashArray","storePointLocation","withinYRange","GetStepLineDirection","stepLineType","command","noRisers","getFirstLastVisiblePoint","getBorderDirection","coordinates","stackingAreaSeriesModule","stackingStepAreaSeriesModule","removeEmptyPointsBorder","borderDirection","doLinearAnimation","elementHeight","elementWidth","xCenter","yCenter","animateRect","LineSeries","pointAnimate","pointUpdate","isDrop","getCoordinate","visiblePoints_1","commonId","Legend","visibleSeriesCollection","visibleSeriesCollection_1","verticalArrowSpace","titleSpace","availwidth","LegendClick","changeDetection","changeSeriesVisiblity","refreshLegendToggle","redrawSeriesElements","series_1","legendRegion","checkWithinBounds","cRender","canvasRect","canvasPageUp","canvasPageDown","fadeOutMode","findData","disableTrackTooltip","isStockSvg","renderGroupedTooltip","findShapes","isPointDragging","findMouseValue","tooltipTemplate","chartTooltipSuccess","getSymbolLocation","findMarkerHeight","getTemplateText","getBoxLocation","getWaterfallRegion","getRangeArea","formatPointValue","lastData","dataCollection","tempData","closestXValue","closetYValue","dataCollection_1","triggerSharedTooltip","toolbarHeight","sharedTooltip","findSharedLocation","isXPoint","isYPoint","tooltipFormat","getIndicatorTooltipFormat","textX","data_2","DataLabel","errorHeight","initPrivateVariables","calculateErrorHeight","chartBackground","positiveHeight","negativeHeight","yAxisInversed","labelLength","xPos","yPos","shapeRect","isDataLabelOverlap","dataLabelElement","median","upperQuartile","lowerQuartile","liers","fontBackground","isDataLabelShape","createDataLabelTemplate","calculateTextPosition","visibleAxisLabelRect","rectRegion","actualRect","isDataLabelOverlapWithChartBound","isShape","textAnchor","oldText","elementRect","vAxis","hAxis","locationY","alignmentValue","calculateAlignment","calculateRectPosition","locationX","calculatePathPosition","calculatePolarRectPosition","dataLabelOutRegion","columnRadius","chartWidth","alignmentSign","textLength","calculateRectActualPosition","calculateTopAndOuterPosition","seriesLength","nextSeries","nextSeriesPoint","calculatePathActualPosition","labelRect","isOverLap","finalPosition","actualPosition","updateLabelLocation","yLocation","positionIndex","slope","intersectY","shapeElements","textNode","NiceInterval","calculateDateTimeNiceInterval","startDate","endDate","totalDays","actualIntervalType","intervalType","getSkeleton","previousValue","findCustomFormats","Category","SeriesDirective","SeriesCollectionDirective","getRandomColor","randomIndex","LineChart","instances","deleteObject","getEnumValue","enumObject","enumValue","formatUnit","getInstance","getNumericObject","symbPattern","getDefaultDateObject","fromElements","isEval","docFrag","createDocumentFragment","executeScript","NodeList","selectAll","addClasses","removeClasses","rippleEffect","rippleOptions","rippleModel","rippleFlag","isCenterRipple","getRippleModel","isRippleEnabled","rippleHandler","rippleUpHandler","rippleLeaveHandler","offsetX","offsetY","diameter","rippleElement","getPropertyValue","removeRipple","rippleElements","initializeCSPTemplate","boundFunc","toPixel","maxDimension","appendPath","gauge","isCompleteAngle","getDegree","getAngleFromValue","maximumValue","minimumValue","isClockWise","getAngleFromLocation","getLocationFromAngle","GaugeLocation","startWidth","endWidth","startRadius","isLinearCircularGradient","endRadius","arcRadius","insideArcRadius","insideEndRadius","insideStartRadius","endArc","widthDifference","arcWidthPath","roundedCornerRadius","arcWidthPathCalculation","getRangePath","getCirclePath","arcRoundedPath","outerOldEnd","innerOldEnd","arcStartOne","arcEndOne","arcStartTwo","arcEndTwo","innerOldStart","outerOldStart","pointPosition","roundedPath","roundedArcWidthPathCalculation","startValueToAngle","endRadii","centerStartDistance","centerDistance","arcPath","arcStart","arcEnd","angleValueDirection","endRadiusValue","arcTwo","startGreater","arcOne","degreeAngle","degreeValueOne","degreeValueTwo","startAddArc","startSubArc","getRoundedPathArc","actualStart","actualEnd","oldStart","oldEnd","isVue3","getPointer","tempStringArray","pointerIndex","getLabelFormat","Theme","setStyles","getValueFromAngle","RangeTooltip","AnnotationTooltip","Line","Label","Range","Tick","Cap","NeedleTail","Annotation","Pointer","isPointerAnimation","gaugeMouseLeave","gaugeMouseUp","dragMove","dragEnd","Annotations","allowLoadingAnimation","annotationAnimation","annotationAnimate","tempOpacity","loadingAnimationDuration","isOverAllAnimationComplete","autoAngle","observedArgs","updateLocation","midPoint","clientTop","clientLeft","getElementSize","tooltipData","templateLength","isTitleTouch","rangeIndex","legends","GaugeTooltip","tooltipId","renderTooltip","gaugeId","samePointerEle","isTooltipRender","pointerEle","svgRect_1","axisRect_1","currentPointer","pointers","angle_1","tooltipEle","enablePointerDrag","showAtMousePosition","roundValue","roundedValue","pointerContent","tooltipArgs","pointer","appendInBodyTag","findPosition","pointerTextStyle","tooltipFontColor","tooltipTextOpacity","tooltipFontSize","svgTooltipCreate","arrowInverted","tooltipFillOpacity","tooltipPosition","rangeSvgRect_1","rangeElementRect","rangeAxisRect_1","rect_2","currentRange","ranges","rangeAngle_1","rangeTooltipFormat","rangeSettings","rangeFormat","roundStartValue","roundEndValue","startData_1","endData_1","rangeContent","rangeTooltipArgs","rangeTooltipTextStyle_1","rangeTemplate","checkParentAnnotationId","annotationTargetElement","annotationSvgRect","annotationElementRect","rect_3","currentAnnotation","annotationAngle","annotationContent","annotationSettings","annotationTooltipArgs","annotationTemplate","elementSizeAn","annotationTextStyle","gaugeRect","tooltipLeft","tooltipArg","borderObject","tooltipBorderColor","tooltipFillColor","roundingPlaces","addLeft","addTop","addHeight","addWidth","isTooltipRemoved","getRangeColor","rangeColor","AxisRenderer","drawAxisOuterLine","setRangeColor","checkAngles","lineColor","allowComponentRender","drawAxisLabels","currentTextWidth","currentTextHeight","currentLocation","lastLabelLocation","lastLabelAngle","lastLabelAnchor","lastTextWidth","lastTextHeight","checkLabelOpposed","labelsVisible","majorTicks","minorTicks","shouldMaintainPadding","nearSize","farSize","hideIntersectingLabel","findAnchor","showLastLabel","hiddenLabel","offsetAxisLabelsize","getAxisLabelStartPosition","labelFontFamily","lastlabel","FindAxisLabelCollision","labelTextElement","useRangeColor","previousWidth","previousHeight","currentWidth","currentHeight","actualLocation","anchorPosition","drawMinorTickLines","minorTickElements","minorLineStyle","minorInterval","isRangeColor","minorTickColor","majorValues","calculateTicks","drawMajorTickLines","majorTickElements","majorLineStyle","majorTickColor","axisLineWidth","drawRangePath","rangeElement","colorIndex","roundedStartAngle","roundedEndAngle","gradientRangeColor","rangeSplitValue","linearGradient","rangeStart","rangeEnd","isAngleCross360","rangeGap","startAndEndRangeGap","degreeValue","gradientModule","radialGradient","rangeColorLength","degreeRange","degreeRangeValue","gradientDegree","gradientAngle","gradientAntiAngle","getGradientColorString","roundedRangeAppendPathCalculation","rangeAppendPathCalculation","drawAxisRange","startEndDifference","previousEndWidth","previousStartWidth","currentDistanceFromScale","calculateRangeRadius","calculateRangeRadiusWithPosition","rangeColors","getRangePalette","getCompleteArc","checkMinValue","getCompletePath","PdfPageOrientation","PdfPageRotateAngle","PdfNumberStyle","PdfDockStyle","PdfAlignmentStyle","TemplateType","PointerRenderer","drawPointers","pointerElement","calculatePointerRadius","setPointerValue","isPropertyChange","doPointerAnimation","pointerRadiusForPosition","pointerSize","markerOffset","rangeBarOffset","pointerWidth","drawNeedlePointer","pointerRadius","rectDirection","gradientColor","gradientTailColor","gradientCapColor","needle","needleTail","cap","needleStartWidth","needleEndWidth","mid","needleColor","needleTailColor","capColor","oldStartValue","oldEndValue","angleValue","roundStartAngle","roundEndAngle","calculateTextElement","textangle","textlocation","drawMarkerPointer","gradientMarkerColor","shapeBasedOnPosition","pointerColor","textObject","animatePointer","drawRangeBarPointer","gradientBarColor","performRangeBarAnimation","performTextAnimation","performNeedleAnimation","isAnimationProgress","annotationsModule","sweepAngle","pointAngle","pointerValue","AxisLayoutPanel","axisOption","prevAnimatedMajorTickValue","prevAnimatedMajorTickIndex","prevAnimatedMinorTickValue","prevAnimatedMinorTickIndex","allowAxisCount","rangeAnimationCount","axisRenderer","pointerRenderer","measureAxisSize","calculateAxesRadius","totalRadius","rangeMaximumRadius","xMarginDiff","yMarginDiff","moveToCenter","centerXpoint","centerYpoint","xDiff","yDiff","startXDiff","endXDiff","startYDiff","endYDiff","calculateNumericInterval","calculateSum","calculateAxisValues","calculateNiceInterval","maxValue","minValue","axisLabelRenderSuccess","lastLabel","maxVal","lineSize","heightForCross","majorTickOffset","minorTickOffset","axes_1","axesElements","allowRangePreRender","durationSplitUp","labelElementAnimation","elementLabelAnimation","tickIndex","axisLabelCount","rangeAnimation","axisLineCalculation","axisWidth","axisLineAnimation","prevAnimatedTickType","isAxisLine","pointerValue_1","timeStamp_1","axisElement_1","start_1","end_1","val_1","axisAnimation","isMajorTick","isMinorTick","tickElementAnimation","labelRangeAnimation","majorTickCount","tickElement","minorTickCount","currentTickValue","minorTickInterval","minorTickValue","majorTickValue","isAxisLabel","rangesElement","rangeElementAnimation","isRangeAbsent","axisindex","gaugeAxisLayoutPanel","splitUpCount","axisCount","labelCount","isrange","toggledIndexes","shapeBorder","legendAxisGroup","legendTextElement","toggledIndex","isToggled","rangeID","shapeID","textID","textElement_1","hiddenColor","borderStyle","legendBorderColor","legendBorderWidth","legendRenderingCollections","PdfWriter","streamWriter","pdfDocument","overload","tempOverload","defaultToString","ObjectStatus","Dictionary","toStringFunction","nElements","toStr","keysArray","namesOfKeys","index1","pair1","valuesArray","namesOfValues","index2","pair2","containsKey","PdfMainObjectCollection","objectCollections","mainObjectCollection","primitiveObjectCollection","isNew","objInfo","ObjectInfo","Registered","lookFor","getReference","wasNew","trySetReference","setReference","pdfObject","isSaving","objectCollectionIndex","pdfReference","Encoding","includeBom","emitBOM","encodingType","initBOM","getByteCount","validateNullOrUndefined","utf8Len","getByteCountInternal","codePoint","isHighSurrogate","codeUnit","toCodepoint","highCodeUnit","lowCodeUnit","charIndex","charCount","byteCount","isUtf8","getBytes","RangeError","getBytesOfUtf8Encoding","getBytesOfUnicodeEncoding","getBytesOfAnsiEncoding","getString","byteCal","getStringOfUtf8Encoding","byteUnicode","getStringofUnicodeEncoding","bufview","charcode","uint","uint16","byteUni","byte16","InternalEnum","Save","extension","mimeType","getMimeType","isMicrosoftBrowser","msSaveBlob","downloadLink","saveInternal","hasDownloadAttribute","download","dataUrl_1","createObjectURL","initEvent","revokeObjectURL","reader_1","FileReader","readAsDataURL","StreamWriter","encoding","bufferBlob","bufferText","enc","setBomByte","arrayUnicode","uint8","arrayUtf8","utf8","bufferArray","writeLine","PdfDocumentBase","isStreamCopied","PdfDocument","objects","pdfCrossTable","currentSavingObject","pdfCatalog","viewerPreferences","setMainObjectCollection","setCrossTable","cTable","setCatalog","catalog","filename","SW","encoding_1","SW_1","blobData","docSave","PdfName","stringStartMark","internalValue","isSaving6","position6","status6","index6","writer","escapeString","crossTable","newName","stringValue","delimiters","replacements","Operators","forTest","endObj","slash","newLine","endStream","xref","trailer","startxref","eof","beginText","endText","appendLineSegment","fillEvenOdd","fillStroke","fillStrokeEvenOdd","appendbeziercurve","appendRectangle","saveState","restoreState","paintXObject","modifyCtm","modifyTM","setLineWidth","setLineCapStyle","setLineJoinStyle","setDashPattern","setFlatnessTolerance","closeStrokePath","closeFillStrokePath","setCharacterSpace","setWordSpace","setHorizontalScaling","setTextLeading","setFont","setRenderingMode","setTextRise","setTextScaling","setCoords","goToNextLine","setText","setTextWithFormatting","setTextOnNewLine","selectcolorspaceforstroking","selectcolorspacefornonstroking","setrbgcolorforstroking","setrbgcolorfornonstroking","setcmykcolorforstroking","setcmykcolorfornonstroking","setgraycolorforstroking","setgraycolorfornonstroking","clipPathEvenOdd","setGraphicsState","comment","evenOdd","setMiterLimit","setColorAndPattern","setColorAndPatternStroking","DictionaryProperties","pages","kids","mediaBox","decodeParms","type1","baseFont","subtype","contents","procset","colorSpace","extGState","xObject","bitsPerComponent","dctdecode","blackIs1","predictor","deviceRgb","annot","uri","annots","CA","xyz","fit","BM","flatedecode","bBox","cIDFontType2","cIDToGIDMap","identity","dw","fontDescriptor","cIDSystemInfo","fontName","fontBBox","missingWidth","stemV","italicAngle","capHeight","ascent","descent","leading","avgWidth","fontFile2","xHeight","stemH","registry","ordering","supplement","type0","identityH","toUnicode","descendantFonts","shading","matrix","antiAlias","shadingType","coords","functionType","bitsPerSample","patternType","paintType","tilingType","xStep","yStep","centerWindow","displayTitle","fitWindow","hideMenuBar","hideToolBar","hideWindowUI","pageMode","pageLayout","printScaling","PdfDictionary","dictionary","position7","primitiveItems","archive","isResource","encrypt","dictionaryProperties","freezeChanges","status7","isSaving7","index7","getArchive","setArchive","setEncrypt","modify","getEncrypt","freezer","bChanged","onBeginSave","beginSave","onFontDictionaryBeginSave","fontDictionaryBeginSave","onDescendantFontBeginSave","descendantFontBeginSave","onTemplateBeginSave","pageBeginDrawTemplate","pageBeginSave","onBeginAnnotationSave","annotationBeginSave","onSectionBeginSave","saveEvent","sectionBeginSave","bRaiseEvent","saveItems","SaveSectionCollectionEventHandler","SaveDescendantFontEventHandler","SaveFontDictionaryEventHandler","SaveAnnotationEventHandler","SaveSectionEventHandler","SaveTemplateEventHandler","PdfNumber","position5","status5","isSaving5","index5","intValue","floatToString","returnString","PdfArray","startMark","endMark","position9","clonedObject9","isFont","internalElements","tempArray","tempNumberArray","pdfNumber","status9","isSaving9","index9","markedChange","inputElement","getItems","newArray","fromRectangle","tempElements","markChanged","removeAt","ARR_LITERAL_CODES","Int16Array","ARR_LITERAL_LENGTHS","ARR_DISTANCE_CODES","ARR_DISTANCE_LENGTHS","CompressedStreamWriter","noWrap","pendingBuffer","pendingBufLength","pendingBufCache","pendingBufBitsInCache","bufferPosition","extraBits","currentHash","matchStart","matchLength","matchPrevAvail","blockStart","stringStart","lookAhead","totalBytesIn","inputOffset","inputEnd","windowSize","windowMask","hashSize","hashMask","hashShift","maxDist","checkSum","isHuffmanTreeInitiated","initHuffmanTree","treeLiteral","CompressorHuffmanTree","treeDistances","treeCodeLengths","arrDistances","arrLiterals","dataWindow","hashHead","hashPrevious","writeZLibHeader","compressedString","inputBuffer","ChecksumCalculator","checksumUpdate","pendingBufferFlush","compressData","headerDate","pendingBufferWriteShortBytes","success","fillWindow","canFlush","compressSlow","lookAheadCompleted","slideWindow","prevMatch","prevLen","discardMatch","matchPreviousBest","matchPreviousAvailable","huffmanIsFull","insertString","findLongestMatch","huffmanTallyLit","huffmanTallyDist","huffmanFlushBlock","lastBlock","more","subarray","updateHash","chainLen","niceLen","scan","bestEnd","bestLength","limit","stringEnd","scanEnd1","scanEnd","literal","codeFrequencies","dist","huffmanLengthCode","huffmanDistanceCode","stored","storedOffset","storedLength","buildTree","calculateBLFreq","blTreeCodes","codeLengths","huffCodeLengthOrders","opt_len","getEncodedLength","static_len","huffmanFlushStoredBlock","pendingBufferWriteBits","setStaticCodes","huffmanCompressBlock","huffmanReset","huffmanSendAllTrees","pendingBufferAlignToByte","pendingBufferWriteShort","pendingBufferWriteByteBlock","buildCodes","treeLength","rank","writeTree","literalLen","writeCodeToStream","bits","Uint32Array","pendingBufferFlushBits","isClose","bitReverse","elementCount","minCodes","codeMinCount","codeFrequency","lengthCount","codeCount","codeLength","lengths","lengthTemp","nextCode","bitsCount","reverseBits","blTree","maxCount","minCount","curLen","nextLen","maxRepeatCount","minRepeatCount","currentRepeatCount","currentCodeLength","codesCount","arrTree","pPos","nodesCount","iIndex","constructHuffmanTree","buildLength","lastVal","minDepth","numNodes","numLeafs","calculateOptimalCodeLength","iIncreasableLength","recreateTree","nodePtr","childPtr","bitLength","checksum","checksum_uint","s1","s2","checkSumBitOffset","steps","checksumIterationCount","checksumBase","PdfStream","dicPrefix","dicSuffix","clonedObject2","bCompress","dataStream2","bCompress2","clearStream","internalStream","writeBytes","onCmapBeginSave","cmapBeginSave","onFontProgramBeginSave","fontProgramBeginSave","compressContent","byteArray","dataArray","sw","getCompressedString","addFilter","filterName","PdfReferenceHolder","bytesToString","SaveCmapEventHandler","SaveFontProgramEventHandler","SourceType","ForceEncoding","ObjectType","PdfString","bHex","clonedObject1","bDecrypted","isParentDecrypted","isPacked","isFormField","isColorSpace","isHexString","status1","isSaving1","bConverted","bForceEncoding","bytesToHex","Ascii","pdfEncode","stringMark","escapeSymbols","CrossTable","newString","toUnicodeArray","bAddPrefix","byteToString","hexStringMark","hexFormatPattern","PdfReference","objNumber","genNumber","index3","position3","status3","isSaving3","obj2","index4","position4","objectIndex","status4","isSaving4","primitiveObject","PdfPageMode","PdfPageLayout","DuplexMode","PageScalingMode","PdfBoolean","currentPosition","objectStatus","saving","boolToStr","PdfViewerPreferences","_dictionaryProperties","_centerWindow","_fitWindow","_displayTitle","_splitWindow","_hideMenuBar","_hideToolBar","_hideWindowUI","_pageMode","UseNone","_pageLayout","SinglePage","_dictionary","_duplex","None","_catalog","_mapPageMode","_mapDuplexMode","_mapPageLayout","_pageScaling","AppDefault","Simplex","DuplexFlipShortEdge","DuplexFlipLongEdge","UseOutlines","UseThumbs","FullScreen","UseOC","UseAttachments","layout","OneColumn","TwoColumnLeft","TwoColumnRight","TwoPageLeft","TwoPageRight","PdfHorizontalAlignment","PdfVerticalAlignment","PdfTextAlignment","TextRenderingMode","PdfLineJoin","PdfLineCap","PdfDashStyle","PdfFillMode","PdfColorSpace","PdfBlendMode","PdfGraphicsUnit","PdfGridImagePosition","PdfTextDirection","PdfFontStyle","PdfFontFamily","PdfFontType","PdfWordWrapType","PdfSubSuperScript","FontEncoding","TtfCmapFormat","TtfCmapEncoding","TtfPlatformID","TtfMicrosoftEncodingID","TtfMacintoshEncodingID","FontDescriptorFlags","TtfCompositeGlyphFlags","PdfCatalog","sections","tempDictionaryProperties","_viewerPreferences","PdfCrossTable","maxGenNumIndex","objectCount","merging","internalTrailer","pdfObjects","saveHead","mappedReferences","markTrailerReferences","saveObjects","saveCount","xrefPos","registerObject","saveSections","saveTrailer","saveTheEndess","objectCollection","prevXRef","objectNum","prepareSubsection","saveSubsection","Free","generation","isFree","addOffsetLength","addGenNumberLength","generateFileVersion","bNew","getSubReference","objnumber","nextObjNumber","tempIndex","tempkey","tempvalue","bForceNew","saveIndirectObject","currentSavingObj","doSaveObject","free","RegisteredObject","dereference","tempOffset","offsetNumber","tempReference","Normal","PointF","SizeF","RectangleF","arg4","pointf","sizef","Rectangle","topLeft","PdfPageSize","letter","note","legal","a0","a3","a4","a5","a6","a7","a8","a9","a10","b0","b3","b4","b5","archE","archD","archC","archB","archA","flsa","halfLetter","letter11x17","ledger","PdfMargins","pdfMargin","setMargins","leftMargin","topMargin","rightMargin","bottomMargin","margin1","margin2","margin3","margin4","PdfPageSettings","margins","pageMargins","RotateAngle0","pageOrientation","Portrait","pageOrigin","isRotation","setSize","updateSize","Landscape","getActualSize","LineType","PdfStreamWriter","dictionaryName","writeOperator","executeObject","useEvenOddRule","fillStrokePath","fillPath","closeFillPath","textScaling","strokePath","restoreGraphicsState","saveGraphicsState","startNextLine","writePoint","showText","checkTextParam","writeText","setLeading","setTextRenderingMode","renderingMode","setCharacterSpacing","charSpacing","setWordSpacing","wordSpacing","showNextLineText","setColorSpace","temparg1","op","temparg2","opcode","updateY","builder","writeComment","setColorAndSpace","forStroking","setLineDashPattern","patternOffset","setLineDashPatternHelper","tempPattern","miterLimit","setLineCap","lineCapStyle","setLineJoin","lineJoinStyle","appendBezierSegment","arg5","arg6","setColourWithPattern","colours","PdfColor","color1","color2","color3","color4","assignRGB","filled","redColor","greenColor","blueColor","gray","alpha","maxColourChannelValue","cyanColor","magentaColor","yellowColor","blackColor","assignCMYK","red","green","blue","black","cyan","magenta","yellow","Rgb","rgbToString","GrayScale","grayScaleToString","Cmyk","cmykToString","ifStroking","colour","grayStringsSroke","grayStringsFill","rgbStrings","PdfBrush","PdfSolidBrush","pdfColor","monitorChanges","brush","getResources","currentColorSpace","resetChanges","PdfPen","dashOffsetValue","penDashPattern","pdfDashStyle","Solid","pdfLineCap","pdfLineJoin","penWidth","internalMiterLimit","setBrush","Custom","Dash","Dot","DashDot","DashDotDot","sBrush","pdfBrush","currentPen","dashControl","lineJoin","lineCap","pen","getPattern","dashOffset","dashPattern","PdfStringFormat","scalingFactor","wordWrapType","Word","internalLineLimit","verticalAlignment","Top","isRightToLeft","internalCharacterSpacing","internalWordSpacing","pdfSubSuperScript","internalParagraphIndent","firstLineIndent","trailingSpaces","isNoClip","initialLineIndent","StringTokenizer","getCharsCount","numSymbols","readLine","text2","peekLine","readWord","peekWord","word","peek","readToEnd","tab","spaces","whiteSpacePattern","PdfStringLayouter","isOverloadWithPosition","arg7","clientSize","doLayout","rectSize","pageHeight","PdfStringLayoutResult","lineResult","lineIndent","getLineIndent","layoutLine","numSymbolsInserted","returnedValue","copyToResult","numInserted","finalizeResult","firstLine","paragraphIndent","getLineHeight","lineSpacing","getLineWidth","layoutLineHeight","lineType","FirstParagraphLine","addToLineResult","NewLineBreak","curLine","curIndent","curLineWidth","getWrapType","WordOnly","textRemainder","wordWrap","Character","ln","LayoutBreak","LastParagraphLine","layoutLines","breakType","LineInfo","actualSize","allowPartialLines","lineLimit","expHeight","trimLine","size1","empty","PdfLayoutType","PdfLayoutBreakType","PathPointType","PdfFont","Regular","metrics","getHeight","Bold","Italic","Strikeout","Underline","fontMetrics","pdfFontInternals","measureString","layoutArea","temparg3","equalsTo","equalsToFont","getInternals","setInternals","internals","applyFormatSettings","realWidth","characterSpacing","charSizeMultiplier","syncObject","PdfTransformationMatrix","radDegFactor","transformationMatrix","Matrix","multiply","degreesToRadians","degreesX","degRadFactor","radiansToDegrees","radians","metrixElements","tempMatrix","dispose","ProcedureSets","pdf","imageB","imageC","imageI","TemporaryDictionary","mKeys","mValues","ReferenceError","PdfTransparency","PdfAutomaticFieldInfoCollection","automaticFieldsInformation","fieldInfo","automaticFields","PdfGraphicsElement","drawHelper","graphics","bNeedSave","gState","translateTransform","drawInternal","PdfAutomaticField","internalBounds","internalTemplateSize","internalFont","internalBrush","internalPen","internalStringFormat","performDrawHelper","scalingX","scalingY","getFont","stringFormat","draw","PdfAutomaticFieldInfo","getSize","getBrush","defaultFont","getPageFromGraphics","pageNumberFieldLocation","pageNumberField","ByteArray","mPosition","dataView","DataView","readByte","getBuffer","writeFromBase64String","base64","encodedString","chr1","chr2","chr3","enc2","enc3","keyStr","resultIndex","readNextTwoBytes","TtfTableInfo","TtfNameTable","TtfNameRecord","TtfHeadTable","TtfMetrics","macStyle","TtfHorizontalHeaderTable","TtfOS2Table","TtfPostTable","TtfLongHorMetric","TtfCmapSubTable","TtfCmapTable","TtfGlyphInfo","compareTo","glyph","TtfLocaTable","TtfAppleCmapSubTable","TtfMicrosoftCmapSubTable","TtfTrimmedCmapSubTable","TtfGlyphHeader","BigEndianWriter","int32Size","int16Size","int64Size","bufferLength","internalPosition","writeShort","writeInt","i3","i4","writeUInt","buff","writeString","TtfReader","fontData","isTtcFont","isMacTtf","metricsName","isMacTTF","missedGlyphs","tableNames","entrySelectors","macintoshDictionary","microsoftDictionary","internalMacintoshGlyphs","internalMicrosoftGlyphs","readFontDictionary","nameTable","readNameTable","headTable","readHeadTable","initializeFontName","checkPreambula","numTables","readInt16","tableDirectory","tableKey","readString","readInt32","lowestPosition","fixOffsets","minOffset","tableKeys","tableInfo","getTable","formatSelector","readUInt16","nameRecords","platformID","encodingID","languageID","nameID","unicode","readFixed","fontRevision","checkSumAdjustment","readUInt32","magicNumber","unitsPerEm","created","readInt64","modified","lowestReadableSize","fontDirectionHint","indexToLocalFormat","glyphDataFormat","readHorizontalHeaderTable","ascender","descender","lineGap","advanceWidthMax","minLeftSideBearing","minRightSideBearing","xMaxExtent","caretSlopeRise","caretSlopeRun","metricDataFormat","numberOfHMetrics","readOS2Table","xAvgCharWidth","usWeightClass","usWidthClass","fsType","ySubscriptXSize","ySubscriptYSize","ySubscriptXOffset","ySubscriptYOffset","ySuperscriptXSize","ySuperscriptYSize","ySuperscriptXOffset","ySuperscriptYOffset","yStrikeoutSize","yStrikeoutPosition","sFamilyClass","panose","ulUnicodeRange1","ulUnicodeRange2","ulUnicodeRange3","ulUnicodeRange4","vendorIdentifier","fsSelection","usFirstCharIndex","usLastCharIndex","sTypoAscender","sTypoDescender","sTypoLineGap","usWinAscent","usWinDescent","ulCodePageRange1","ulCodePageRange2","sxHeight","sCapHeight","usDefaultChar","usBreakChar","usMaxContext","readPostTable","formatType","underlinePosition","underlineThickness","isFixedPitch","minType42","maxType42","minType1","maxType1","readWidthTable","glyphCount","advanceWidth","lsb","glyphWidth","readCmapTable","tablesCount","subTables","subTable","readCmapSubTable","getCmapEncoding","Macintosh","Microsoft","Unknown","Apple","readAppleCmapTable","readMicrosoftCmapTable","Trimmed","readTrimmedCmapTable","maxMacIndex","glyphInfo","getWidth","macintosh","addGlyph","Unicode","microsoft","segCountX2","searchRange","entrySelector","rangeShift","segCount","endCount","readUshortArray","reservedPad","startCount","idDelta","idRangeOffset","glyphID","codeOffset","firstCode","entryCount","postScriptName","glyphCode","Undefined","Roman","microsoftGlyphs","macintoshGlyphs","initializeMetrics","horizontalHeadTable","os2Table","postTable","cmapTables","bSymbol","isSymbol","winAscent","macAscent","winDescent","macDescent","fontBox","widthTable","updateWidth","subScriptSizeFactor","superscriptSizeFactor","getGlyph","byteToProcess","getDefaultGlyph","readLocaTable","bShort","offsets","updateGlyphChars","glyphChars","locaTable","glyphCharKeys","nextKey","processCompositeGlyph","glyphOffset","glyphHeader","numberOfContours","skipBytes","glyphIndex","MoreComponents","Arg1And2AreWords","WeHaveScale","WeHaveAnXyScale","WeHaveTwoByTwo","generateGlyphTable","newLocaTable","newGlyphTable","activeGlyphs","glyphSize","glyphSizeAligned","align","nextGlyphOffset","nextGlyphIndex","oldGlyphOffset","oldNextGlyphOffset","glyphTableSize","updateLocaTable","bLocaIsShort","newLocaTableOut","newLocaUpdated","newLocaSize","getFontProgram","locaTableSize","getFontProgramLength","fontProgramLength","writeCheckSums","writeGlyphs","usedTablesSize","nextTableSize","calculateCheckSum","byte1","byte2","byte3","byte4","setOffset","createInternals","bIsLocaShort","isFontPresent","getGlyphChars","charKeys","getAllGlyphs","allGlyphInfo","readFontProgram","result2","convertString","getCharWidth","isUnicode","written","PdfFontMetrics","getAscent","getDescent","getLineGap","clearTypeFonts","clearTypeFontCollection","subSuperScript","SubScript","SuperScript","WidthTable","internalWidthTable","StandardWidthTable","widths","UnicodeTrueTypeFont","base64String","nameString","isCompress","isEmbedFont","cmapPrefix","cmapEndCodespaceRange","cmapBeginRange","cmapEndRange","cmapSuffix","fontString","Initialize","ttfReader","internalBuffer","ttfMetrics","fontDictionary","fontProgram","cmap","descendantFont","subsetName","getFontName","createDescendantFont","createCmap","createFontDictionary","createFontProgram","isBold","createFontDescriptor","systemInfo","createSystemInfo","getDescriptorFlags","getBoundBox","descFonts","usedChars","getDescendantWidth","generateCmap","generateFontProgram","chLen","firstGlyphIndex","lastGlyphIndex","firstGlyphIndexWasSet","widthDetails","middlePart","toHexString","nextRange","FixedPitch","Symbolic","Nonsymbolic","isItalic","ForceBold","isCaseChange","setSymbols","ArabicShapeRenderer","arabicCharTable","alef","alefHamza","alefHamzaBelow","alefMadda","lam","hamza","zeroWidthJoiner","hamzaAbove","hamzaBelow","wawHamza","yehHamza","waw","alefMaksura","yeh","farsiYeh","shadda","madda","lwa","lwawh","lwawhb","lwawm","bwhb","fathatan","superScriptalef","vowel","arabicMapTable","getCharacterShape","doShape","ArabicShape","present","ligature","shapeCount","getShapeCount","Shapes","Value","Ligature","Type","shapeValue","shapeType","shapeVowel","shapeLigature","shapeShapes","Bidi","indexLevels","mirroringShapeCharacters","doMirrorShaping","getLogicalToVisualString","inputText","isRtl","rtlCharacters","RtlCharacters","getVisualOrder","setDefaultIndexLevel","doOrder","resultBuilder","sIndex","eIndex","odd","even","pstart","pend","reArrange","types","textOrder","rtlCharacterTypes","LRE","LRO","AL","RLE","RLO","PDF","EN","ES","ET","AN","CS","NSM","BN","WS","ON","charTypes","getCharacterCode","doVisualOrder","levels","characterCodes","setDefaultLevels","setLevels","updateLevels","getEmbeddedCharactersLength","preview","preType","checkNSM","checkEmbeddedCharacters","startType","endType","charType","checkEuropeanDigits","checkArabicCharacters","checkEuropeanNumberSeparator","checkEuropeanNumberTerminator","getLength","checkOtherNeutrals","checkOtherCharacters","pst","checkCommanCharacters","validSet","byte","lt","tt","rt","RtlRenderer","openBracket","closeBracket","rtl","wordSpace","customLayout","splitLayout","customSplitLayout","getGlyphIndex","glyphs","fontInternal","textDirection","layouted","txt","words","addChars","ImageFormat","PdfGradientBrush","mbackground","mbStroking","mfunction","mpatternDictionary","mcolorSpace","csValue","colorSpaceToDeviceName","mshading","patternDictionary","mmatrix","resetFunction","name_1","getName","resetPatternDictionary","cloneAntiAliasingValue","cloneBackgroundValue","PdfTemplate","writeTransformation","tempSize","templateSize","pdfGraphics","gr","GetResourceEventHandler","PdfGraphics","initializeCoordinates","PdfResources","addType","addSubType","ImageDecoder","sof1Marker","sof2Marker","sof3Marker","sof5Marker","sof6Marker","sof7Marker","sof9Marker","sof10Marker","sof11Marker","sof13Marker","sof14Marker","sof15Marker","mFormat","mbitsPerComponent","mStream","mHeight","mWidth","mImageData","checkIfJpeg","Jpeg","parseJpegImage","imgData","isLengthExceed","readExceededJPGImage","mJpegHeader","getImageDictionary","imageData","imageStream","decodedString","imageDataAsNumberArray","compress","getColorSpace","getDecodeParams","decodeParams","isContinueReading","getMarker","skipStream","noOfBytes","markerLength","mPngHeader","GIF_HEADER","BMP_HEADER","PdfUnitConverter","dpi","updateProportionsHelper","convertUnits","convertFromPixels","convertToPixels","proportions","pixelPerInch","horizontalResolution","verticalResolution","PdfImage","imageWidth","imageHeight","imagePhysicalDimension","getPointSize","dpiX","dpiY","ucX","ucY","ptWidth","Pixel","Point","ptHeight","PdfBitmap","imageStatus","loadImage","initializeAsync","decoder","baseDictionary","getNames","primitive","names","sName","generateName","PdfTilingBrush","pdfNames","fonts","requireProcedureSet","procedureSetName","procSets","removeFont","Guid","getNewGuidString","xobjects","savable","transDic","parentXObjects","hasSameImageStream","oldReference","mStroking","mLocation","mDictionaryProperties","PdfPage","mPage","brushStream","mResources","setBox","setObligatoryFields","mTransformationMatrix","tempBrushStream","tempResource","mBox","tileTransform","mGraphics","name1","previousTextRenderingMode","Fill","previousCharacterSpacing","previousWordSpacing","previousTextScaling","procedureSets","isNormalRender","isUseFontSize","isEmfTextScaled","isEmf","isEmfPlus","isBaselineFormat","emfScalingFactor","colorSpaceChanged","isPointOverload","currentColorSpaces","isImageOptimized","graphicsState","istransparencySet","internalAutomaticFields","startCutIndex","canvasSize","pdfStreamWriter","pdfStringLayoutResult","internalMediaBoxUpperRightBound","pageLayer","bStateSaved","currentBrush","currentFont","bCSInitialized","currentStringFormat","drawPdfTemplate","bNeedScale","getTranslateTransform","getScaleTransform","newLocation","drawString","arg8","arg9","temparg4","temparg5","temparg6","temparg7","temparg8","temparg9","checkCorrectLayoutRectangle","drawStringLayoutResult","stateControl","xOffset","yOffset","layer","drawPathHelper","drawRoundedRectangle","_pathPoints","_pathTypes","startFigure","_addArc","CloseSubpath","_drawPath","Alternate","_getBezierArcPoints","_addArcPoints","Bezier3","pointType","_addPoint","Start","_getLastPoint","e1","fragAngle","numFragments","xcen","ycen","halfAng","kappa","pointList","theta0","theta1","cos0","cos1","sin0","sin1","Winding","isPen","isBrush","isEvenOdd","physicalDimension","name_2","setResources","resource","getLineBounds","lineIndex","layoutRectangle","lineCount","getTextVerticalAlignShift","hShift","getHorizontalAlignShift","shouldJustify","layoutedRectangle","Center","lineAlignment","Middle","Bottom","setLayer","pageSave","performDraw","applyStringSettings","horizontalScalingFactor","resultHeight","remainingString","drawLayoutResult","underlineStrikeoutText","getNextPage","section","getPages","setClip","tm","getTextRenderingMode","cs","ws","boundsHeight","vAlignShift","ttfFont","lineInfo","hAlignShift","drawUnicodeLine","drawAsciiLine","justifyLine","useWordSpace","Justify","rtlRender","blocks","rightAlign","RightToLeft","drawUnicodeBlocks","breakUnicodeLine","convertToUnicode","getUnicodeString","xShift","spaceWidth","tokenWidth","converted","boundsWidth","hasWordSpacing","whitespacesCount","justifyStyle","goodWidth","hasSpaces","goodLineBreakStyle","underline","strikeout","linePen","createUnderlineStikeoutPen","vShift","underlineYOffset","strikeoutYOffset","FillStroke","Stroke","ClipFlag","layoutBounds","firstParagraphLine","lastDocumentCS","lastGraphicsCS","initCurrentColorSpace","penControl","brushControl","fontControl","colorspace","lgb","curSubSuper","prevSubSuper","setTransparency","trasparencies","transp","TransparencyData","name_3","clipTranslateMargins","clipArea","scaleTransform","rotateTransform","getRotateTransform","mediaBoxUpperRightBound","cropBox","PdfGraphicsState","textRenderingMode","doRestoreState","pathPoints","pathTypes","fillMode","buildUpPath","drawArc","constructArcPath","typeValue","pathTypesValuesMask","getBezierPoints","checkFlags","startAng","getBezierArc","pt","numX1","numY1","numX2","numY2","fragAngle1","pointsList","thetaValue0","thetaValue1","transparencyObject","internalTextRenderingMode","internalTextScaling","pdfColorSpace","pdfPen","pdfFont","alphaPen","alphaBrush","blendMode","PdfPageLayer","streamClipPageTemplates","sublayer","contentLength","pdfPage","clipPageTemplates","layerid","layerName","initializeGraphics","PdfPageLayerCollection","sign","oPage","isSame","getActualBounds","pageSettings","PdfCollection","parentLayerCount","optionalContent","PdfPageBase","lPage","parseLayers","firstArgument","secondArgument","addLayer","insertLayer","loadedPage","saveStream","restoreStream","saveData","defLayerIndex","pageDictionary","pdfSection","layers","defaultLayerIndex","layerCollection","PdfAnnotationCollection","alreadyExistsAnnotationError","missingAnnotationException","internalAnnotations","lists","doAdd","setPage","layoutResult","lastPosition","setColor","annotationCollection","defaultLayer","parentDocument","setSection","resetProgress","isProgressOn","getClientSize","doc","drawPageTemplates","containsTemplates","backLayer","drawTemplates","frontLayer","PageAddedEventArgs","PdfSectionPageCollection","PdfDocumentTemplate","leftTemplate","checkElement","topTemplate","rightTemplate","bottomTemplate","evenLeft","evenTop","evenRight","evenBottom","oddLeft","oddTop","oddRight","oddBottom","getLeft","isEven","EvenLeft","OddLeft","getTop","EvenTop","OddTop","getRight","EvenRight","OddRight","getBottom","EvenBottom","OddBottom","pageCollectionIndex","PdfSectionTemplate","leftValue","topValue","rightValue","bottomValue","stampValue","PdfSection","pageAdded","pdfPages","initialSettings","sectionCollection","pagesReferences","pageTemplate","pagesCollection","pointToNativePdf","setPageSettings","PageSettingsState","foreground","documentHeaders","getDocumentTemplates","sectionTemplates","getSectionTemplates","templates","applyDocumentTopTemplate","applyDocumentBottomTemplate","applyDocumentLeftTemplate","applyDocumentRightTemplate","page_1","checkPresence","pageAddedMethod","onPageAdded","document_1","getLeftIndentWidth","top_1","getTopIndentHeight","getRightIndentWidth","getBottomIndentHeight","includeMargins","templateWidth","docTemplateWidth","templateHeight","docTemplateHeight","temproaryPages","applyPageSettings","parentSettings","PdfSectionCollection","rotateFactor","sectionHeaders","drawTemplatesHelper","pageRotate","sectionCount","pdfSectionCollection","section_1","checkSection","countPages","PdfDocumentPageCollection","pdfPageCollectionIndex","getLastSection","getPageByIndex","getPage","sectionStartIndex","numPages","PdfCacheCollection","referenceObjects","pdfFontCollection","getGroup","createNewGroup","tGroup","representative","removeGroup","PdfStandardFontMetricsFactory","getMetrics","Helvetica","getHelveticaMetrics","Courier","getCourierMetrics","TimesRoman","getTimesMetrics","getSymbolMetrics","ZapfDingbats","getZapfDingbatsMetrics","subSuperScriptFactor","helveticaBoldItalicAscent","helveticaBoldItalicDescent","helveticaBoldItalicName","arialBoldWidth","helveticaBoldAscent","helveticaBoldDescent","helveticaBoldName","helveticaItalicAscent","helveticaItalicDescent","helveticaItalicName","arialWidth","helveticaAscent","helveticaDescent","helveticaName","courierBoldItalicAscent","courierBoldItalicDescent","courierBoldItalicName","fixedWidth","courierBoldAscent","courierBoldDescent","courierBoldName","courierItalicAscent","courierItalicDescent","courierItalicName","courierAscent","courierDescent","courierName","timesBoldItalicAscent","timesBoldItalicDescent","timesBoldItalicName","timesRomanBoldItalicWidths","timesBoldAscent","timesBoldDescent","timesBoldName","timesRomanBoldWidth","timesItalicAscent","timesItalicDescent","timesItalicName","timesRomanItalicWidth","timesAscent","timesDescent","timesName","timesRomanWidth","symbolAscent","symbolDescent","symbolName","symbolWidth","zapfDingbatsAscent","zapfDingbatsDescent","zapfDingbatsName","zapfDingbatsWidth","PdfStandardFont","fontFamilyPrototype","encodings","pdfFontFamily","checkStyle","initializeInternals","convert","getCharWidthInternal","stFont","fontFamilyEqual","lineReducer","styleEqual","WinAnsiEncoding","charOffset","isMerging","defaultMargin","isMerge","cacheCollection","documentPageCollection","defaultStandardFont","isCacheEnabled","checkPagesPresence","PdfExport","allowDownload","exportElement","XMLSerializer","serializeToString","imageString","toDataURL","ImageExport","isDownload","svgData","triggerDownload","image_1","context_1","toLocaleLowerCase","MouseEvent","Print","beforePrintArgs","printFunction","backgroundElement","ColorStop","GradientPosition","Gradient","LinearGradient","RadialGradient","calculateLinearGradientPosition","getLinearGradientColor","getCircularGradientColor","gradientCount","gradientPosition","getRadialGradientColor","outerPosition","innerPosition","CircularGauge","isRangeUpdate","isResize","CircularGauge_1","renderAnimation","titleFontColor","titleFontWeight","getThemeStyle","gaugeOnMouseDown","gaugeOnMouseClick","gaugeRightClick","resizeEvent","gaugeResize","setGaugeStyle","getMouseArgs","dragArgs","enableRangeDrag","activePointer","dragPointInd","dragAxisInd","activeAxis","pointerDrag","activeRange","dragRangeInd","rangeDrag","previousValue1","setRangeValue","pointInd","axisInd","getRange","rangeInd","pointerInd","calculateSvgSize","radiusAndCenterCalculation","isUpperAngle","isLowerAngle","isFullPercent","radiusPercent","isUpper","isLower","widthRadius","allowMargin","heightRadius","difference","trimmedTitle","tabIndex","enableAnimation_1","isElementExist","secondaryElement","allowPrint","printModule","allowPdfExport","pdfExportModule","allowImageExport","imageExportModule","axisRange","oldRangeStart","oldRangeEnd","annotationEnable","refreshWithoutAnimation","isPointerValueSame","axesPropertyLength","collection_1","pointerPropertyLength","setTemplateEngine","CircularGaugeComponent","AxisDirective","AxesDirective","PointerDirective","PointersDirective","RangeDirective","RangesDirective","GaugeChart","randomValue","fetchWhatsappQuality","popupRect","globalTimeOut","DEFT_MAT_WIDTH","DEFT_MAT3_WIDTH","DEFT_FAB_WIDTH","DEFT_FLUENT_WIDTH","DEFT_FLUENT2_WIDTH","DEFT_BOOT_WIDTH","DEFT_BOOT4_WIDTH","DEFT_BOOT5_WIDTH","CLS_SHOWSPIN","CLS_HIDESPIN","CLS_MATERIALSPIN","CLS_MATERIAL3SPIN","CLS_FABRICSPIN","CLS_FLUENTSPIN","CLS_FLUENT2SPIN","CLS_TAILWINDSPIN","CLS_BOOTSPIN","CLS_BOOT4SPIN","CLS_BOOT5SPIN","CLS_HIGHCONTRASTSPIN","CLS_SPINWRAP","CLS_SPININWRAP","CLS_SPINCIRCLE","CLS_SPINARC","CLS_SPINLABEL","CLS_SPINTEMPLATE","spinTemplate","spinCSSClass","createSpinner","internalCreateElement","makeElement","spinnerContainer","spinnerInnerContainer","wrap","inner_wrap","create_spinner_container","cssClass","classNames","getTheme","defaultSize","calculateRadius","labelEle","createLabel","replaceContent","innerContainer","random_generator","timeOut","create_material_element","mat_calculate_attributes","createMaterialSpinner","createMaterial3Spinner","create_fabric_element","fb_calculate_attributes","createFabricSpinner","createFluentSpinner","createFluent2Spinner","svgBoot","viewBoxValue","trans","defaultRadius","bootCircle","create_bootstrap_element","rad","startArc","defineArcPoints","circleEle","boot_calculate_attributes","createBootstrapSpinner","createHighContrastSpinner","createBootstrap4Spinner","createBootstrap5Spinner","createTailwindSpinner","generateSeries","increment","formSeries","innerCon","themeClass","svgFabric","fabricCirclePath","fabricCircleArc","cls","svgMaterial","matCirclePath","animateMaterial","spinnerInfo","globalInfo","previousId","strokeSize","getStrokeSize","mat_animation","updatePath","getDashOffset","createCircle","easeAnimation","transformOrigin","timecount","innerConainer","trgClass","defineCircle","defineArc","showSpinner","showHideSpinner","isHide","spinnerWrap","spinWrapCollection","inner","svgEle","globalObject","globalVariables","timeOutVar","startMatAnimate","boot_animate","animateBootstrap","hideSpinner","targetContainer","fixedParent","calculateRelativeBasedPosition","fixedElement","anchorPos","tempAnchor","calculatePosition","targetValues","posX","posY","setPosx","getElementHCenter","setPosy","getElementTop","getElementRight","getElementVCenter","getElementLeft","getElementBottom","updatePosition","getBodyScrollTop","getBodyScrollLeft","popupWidth","viewPortElement","elemData","getTargetContainerWidth","getViewPortWidth","containerLeft","ContainerLeft","containerRight","ContainerRight","overLeft","overRight","getTargetContainerHeight","getViewPortHeight","containerTop","ContainerTop","containerBottom","ContainerBottom","overTop","overBottom","elemOffset","topCollideCheck","leftCollideCheck","topSide","rightSide","leftSide","bottomSide","flip","tEdge","TL","TR","BL","BR","eEdge","oldVisibility","removeProperty","updateElementData","setPosition","leftFlip","topFlip","tranformElement","getTransformElement","transformStyle","DOMMatrix","setPopup","eStatus","deepCheck","collideSide","getTargetContainerLeft","getTargetContainerTop","windowWidth","documentReact","PositionData","CLASSNAMES","Popup","setEnableRtl","refreshPosition","setContent","actionOnScroll","wireScrollEvents","unwireScrollEvents","resolveCollision","checkCollision","relateTo","collisionDestroy","orientationOnChange","getRelateToElement","scrollRefresh","parent_2","relateToElement","hide","targetVisible","isElementOnViewport","targetInvisibleStatus","scrollParents","parent_3","isElementVisible","checkGetBoundingClientRect","win","windowView","scrollY","scrollX","elementView","parent_4","reposition","relateToElem","collision","checkFixedParent","parentDisplay","getAnchorPosition","anchorEle","eleRect","anchorRect","targetType","callFlip","callFit","viewPortRect","horz","vert","animationOptions","relativeElement","fmDialogContainer","zIndexElement","getZindexPartial","showAnimation","hideAnimation","parentStyle","overflowRegex","parentZindex","childrenZindex","isEqualNode","siblingsZindex","finalValue","currentZindexValue","ROOT","RTL","ICON","CLOSE","TOOLTIP_WRAP","CONTENT","ARROW_TIP","ARROW_TIP_OUTER","ARROW_TIP_INNER","TIP_BOTTOM","TIP_TOP","TIP_LEFT","TIP_RIGHT","POPUP_ROOT","POPUP_OPEN","POPUP_CLOSE","POPUP_LIB","POPUP_CONTAINER","mouseMoveTarget","containerElement","isBodyContainer","formatPosition","tooltipPositionY","tooltipPositionX","renderArrow","setTipClass","tip","tipClass","renderPopup","elePos","mouseTrail","getTooltipPosition","popupObj","openPopupHandler","closePopupHandler","getScalingFactor","scalingFactors","elementsWithTransform","matrixValues","parentWithZoomStyle","offsetPos","calculateTooltipOffset","collisionPosition","calculateElementPosition","collisionLeft","collisionTop","collisionFlipFit","windowResize","findTarget","needTemplateReposition","tooltipEventArgs","opensOn","tooltipAfterCloseEventArgs","isInteracted","xScalingFactor","yScalingFactor","tipWidth","tipHeight","tooltipEleWidth","tooltipEleHeight","arrowEle","tipAdjust","tipHeightAdjust","tipWidthAdjust","tooltipEleRect","arrowEleRect","showTipPointer","updateTipPosition","selEle","adjustArrow","tipPosExclude","tooltipWidth","tooltipHeight","arrowInnerELe","tipPointerPosition","POINTER_ADJUST","renderContent","HTMLElement","enableHtmlSanitizer","enableHtmlParse","tempArr","tempFunction","templateFunction","renderCloseIcon","isSticky","tipClose","onStickyClose","existingCloseIcon","addDescribedBy","describedby","removeDescribedBy","orgdescribedby","tapHoldHandler","autoCloseTimer","targetHover","touchEndHandler","targetClick","closeDelay","targetList_1","ctrlId","target_1","restoreElement","mouseMoveBeforeOpen","mouseMoveBeforeRemove","showTimer","hideTimer","openDelay","beforeRenderArgs","beforeRenderCallback","tooltipBeforeRender","tooltipAfterRender","PopupAnimation","appendContainer","ctrlObj","beforeOpenCallback","openAnimation_1","onMouseMove","wireMouseEvents","viewContainerRef","horizontal","vertical","affectedPos","checkCollideTarget","newpos","collidedPosition","elePosVertical","elePosHorizontal","getOffSetPosition","elePosition","eleOffset","windowCollision","arrowleft","positionString","newPos","offsetType","isTooltipOpen","tooltipHide","popupHide","closeAnimation","unwireMouseEvents","tooltipHover","tooltipMouseOut","onMouseOut","enteredElement","checkForTooltipElement","tooltipElementMouseOut","eventPageX","eventPageY","colpos","keyDown","touchEnd","scrollHandler","triggerList_1","getTriggerList","wireFocusEvents","touchModule","windowResizeBound","keyDownBound","touchEndBound","scrollWheelBound","targetList","targetsList","targetList_2","triggerList_2","unwireFocusEvents","targetList_3","triggerList_3","currentTarget_1","ValueFormatter","getFormatFunction","getParserFunction","fromView","toView","disableHtmlEncode","allowSorting","allowResizing","allowFiltering","allowGrouping","allowReordering","showColumnMenu","enableGroupByFormat","allowEditing","showInColumnChooser","edit","allowSearching","autoFit","sortDirection","getEditTemplate","editTemplateFn","getFilterTemplate","filterTemplateFn","editType","getUid","valueFormatter","setFormatter","setParser","commands","commandsTemplate","templateCompiler","headerTemplate","headerTemplateFn","itemTemplate","fltrTemplateFn","editTemplate","filterTemplate","isForeignColumn","ddEditedData","foreignKeyField","foreignKeyValue","sortComparer","a_1","xObj","yObj","getForeignData","getSortDirection","setSortDirection","getFreezeTableName","freezeTable","cols_1","refreshReactColumnTemplateByUid","refreshReactHeaderTemplateByUid","getFormatter","formatFn","getParser","parserFn","getColumnTemplate","getHeaderTemplate","getFilterItemTemplate","getDomSetter","GridColumn","CommandColumnModel","StackedColumn","rowDataBound","queryCellInfo","headerCellInfo","actionBegin","actionComplete","actionFailure","dataBound","rowSelecting","rowSelected","rowDeselecting","rowDeselected","cellSelecting","cellSelected","cellDeselecting","cellDeselected","columnSelecting","columnSelected","columnDragStart","columnDrag","columnDrop","printComplete","toolbarClick","batchAdd","batchCancel","batchDelete","cellSaved","beforeDataBound","beforeOpenAdaptiveDialog","resizeStop","filterChoiceRequest","filterAfterOpen","filterBeforeOpen","exportGroupCaption","initialLoad","initialEnd","dataReady","contentReady","uiUpdate","onEmpty","inBoundModelChanged","modelChanged","colGroupRefresh","headerRefreshed","sortComplete","filterComplete","searchComplete","groupComplete","ungroupComplete","groupAggregates","refreshFooterRenderer","refreshAggregateCell","destroyAutoFillElements","beforeCellFocused","cellFocused","keyPressed","columnVisibilityChanged","scroll","columnWidthChanged","columnPositionChanged","rowsAdded","rowsRemoved","headerDrop","dataSourceModified","dblclick","toolbarRefresh","bulkSave","autoCol","tooltipDestroy","updateData","preventBatch","dialogDestroy","crudAction","addDeleteAction","destroyForm","doubleTap","exportDetailDataBound","exportDetailTemplate","pdfExportComplete","freezeRender","filterOpen","filterDialogCreated","filterMenuClose","getForeignKeyData","showEmptyGrid","foreignKeyData","dataStateChange","dataSourceChanged","rtlUpdated","beforeFragAppend","textWrapRefresh","recordAdded","cancelBegin","editNextValCell","hierarchyPrint","exportRowDataBound","partialRefresh","columnsPrepared","cBoxFltrBegin","cBoxFltrComplete","fltrPrevent","restoreFocus","detailIndentCellInfo","virtualScrollEditSuccess","getVirtualData","infiniteEditHandler","closeFilterDialog","resetColumns","groupCollapse","refreshHandlers","beforeRefreshOnDataChange","filterDialogClose","refreshCustomFilterOkBtn","refreshCustomFilterClearBtn","renderResponsiveCmenu","filterCmenuSelect","customFilterClose","setFullScreenDialog","refreshExpandandCollapse","rowModeChange","enterKeyHandler","selectRowOnContextOpen","pagerRefresh","closeEdit","createVirtualValidationForm","refreshInfinitePersistSelection","afterFilterColumnMenuClose","refreshFrozenPosition","refreshResizePosition","refreshSplitFrozenColumn","renderResponsiveChangeAction","renderResponsiveColumnChooserDiv","showAddNewRowFocus","rowCell","gridHeader","gridContent","gridFooter","movableContent","movableHeader","gridChkBox","editedRow","addedRow","leftRight","frozenRight","dataColIndex","ariaColIndex","dataRowIndex","ariaRowIndex","tbody","colGroup","beforeOpen","initialFrozenColumnIndex","scrollModule","isAsyncPrint","defered","isContentReady","actionBeginFunction","isPrintGrid","hierarchyPrintMode","childGrid","removeColGroup","printGridObj","renderPrintGrid","gObj","printGrid","Grid","getPrintGridModel","isFrozenGrid","getFrozenColumns","freeze","isPrinting","injectedModues","setInjectedModules","printgrid","registeredTemplate","selectedRows","getContentTable","cssProps","getCssProperties","contentDiv","literals","headerDiv","groupSettings","waitingPop","printGridElement","printWind","depth","groupCaption","colSpan","colGroups","contentColGroups","footerColGroups","hideColGroup","printGridProp","wrapperInitialize","WRAPPER","ejInstance","getTextNode","childnode","createCheckBox","enableRipple","wrapper","rippleSpan","frameSpan","labelSpan","rippleMouseHandler","IconPosition","selectedHandler","minHeight","minWidth","resizeWestWidth","cssClassName","Button","removeRippleEffect","tempContent","setIconCss","controlStatus","iconCss","iconPosition","isToggle","btnClickHandler","focusIn","elementClass","RESIZE_HANDLER","FOCUSED_HANDLER","DIALOG_RESIZABLE","RESTRICT_LEFT","RESIZE_WITHIN_VIEWPORT","dialogBorderResize","originalWidth","originalHeight","originalX","originalY","originalMouseX","originalMouseY","resizeStart","resize","resizeEnd","setLeft","setWidth","setBorderResizeElm","calculateValues","borderBottom","getDOMElement","domElement","resizers","onMouseDown","onTouchStart","borderResizers","getEventType","targetEle","onMouseUp","dialogResizeElement","resizeTowards","resizeSouth","resizeNorth","resizeWest","resizeEast","getClientRectValues","containerRectValues","documentHeight","calculateValue","currentpageY","targetRectValues","calculatedHeight","borderValue","topWithoutborder","targetTop","calculatedTop","boundaryRectValues","rectValues","documentWidth","calculatedWidth","left_1","removeResize","DialogUtility","ButtonProps","AnimationSettings","DLG_HEADER_CONTENT","DLG_HEADER","DLG_FOOTER_CONTENT","MODAL_DLG","DLG_CLOSE_ICON","DLG_TARGET","SCROLL_DISABLED","DEVICE","FULLSCREEN","DLG_CLOSE_ICON_BTN","DLG_SHOW","DLG_UTIL_DEFAULT_TITLE","DLG_UTIL_ROOT","DLG_UTIL_ALERT","DLG_UTIL_CONFIRM","DLG_RESIZABLE","DLG_RESTRICT_LEFT_VALUE","DLG_RESTRICT_WIDTH_VALUE","DLG_USER_ACTION_CLOSED","Dialog","initRender","enableResize","setResize","animationSettings","getMinHeight","initializeValue","dlgClosedBy","allowMaxHeight","preventVisibility","clonedEle","closeIconClickEventHandler","dlgOverlayClickEventHandler","preventFocus","overlayClickEventArgs","focusContent","l10n","checkPositionData","prevOnChange","updatePersistData","dragObj","isNumberValue","getEle","computedHeaderHeight","computedFooterHeight","footerEle","minimumHeight","headerHeight","footerHeight","onResizeStart","dialogObj","onResizing","onResizeComplete","isBlazorServerRender","resizeHandles","directionValue","isModal","resizeBegin","resizing","resizeComplete","boundary","resizeHandler","proxy","createResize","wireWindowResizeEvent","unWireWindowResizeEvent","getFocusElement","buttonObj","btnObj","ftrTemplateContent","contentEle","focusableElements","isTagName","isContentEdit","closeOnEscape","primaryButtonEle","buttonIndex_1","firstPrimary","buttonModel","setCSSClass","setMaxHeight","setzIndex","calculatezIndex","setTargetContent","footerTemplate","setButton","setFooterTemplate","allowDragging","setAllowDragging","setIsModal","dlgContainer","dlgOverlay","parentEle","refElement","resetResizeIcon","openEventArgs","unBindEvent","closeArgs","activeEle","storeActiveElement","positionChange","setEnableRTL","setOverlayZindex","getTargetContainer","setPopupPosition","targetValue","dialogConHeight","resizeIcon","zIndexValue","handleContent","dragEventArgs","IsDragStop","buttonContent","buttonType","btn","footerBtn","buttonClickHandler","isFlat","headerEle","innerContentElement","setTemplate","templateValue","sanitizeHelper","dialogItem","isContent","createHeaderContent","showCloseIcon","closeIcon","closeIconBtnObj","closeIconTitle","oldCSSClass","getValidFocusNode","disableElement","getAutoFocusNode","validNode","elementMatch","msGetRegionContent","bindEvent","updateSanitizeContent","insertAdjacentHTML","updateIsModal","unWireButtonEvents","destroyButtons","setTarget","setPopupZindex","currentzIndex","windowResizeHandler","removeAllChildren","classArray","boundWindowResizeHandler","getDimension","isFullScreen","fullScreen","eventArgs_1","beforeOpenArgs","openAnimation","dialogOpen","closedBy","beforeCloseArgs","getButtons","createDialog","dialogObject","formOptions","isDraggable","formButtonModel","buttonPropModel","buttonProps","alert","alertDialogObj","dialogElement","alertButtonModel","okButton","setAlertButtonModel","alertOptions","confirm","confirmDialogObj","okButtonModel","cancelButtonModel","cancelButton","setConfirmButtonModel","confirmOptions","Input","containerAttributes","TEXTBOX_FOCUS","isBindClearAction","bindInitialEvent","checkInputValue","floatLabelType","focusHandler","getParentNode","calculateWidth","bindFocusEventHandler","blurHandler","bindBlurEventHandler","inputHandler","bindInputEventHandler","__eventHandlers","inputValue","inputParent","grandParent","_focusFn","_blurFn","wireFloatingEvents","unwireFloatingEvents","createFloatingInput","inputObject","createInputContainer","customTag","floatLinelement","floatLabelElement","placeholder","encodePlaceHolder","inputWrap","updateLabelState","inputFloatHandler","validateLabel","inputEventHandler","blurFloatHandler","blurEventHandler","unWireFloatLabelEvents","checkFloatLabelType","updateIconState","readonly","wireClearBtnEvents","clickHandlerEvent","readOnly","clickHandler","inputHandlerEvent","focusHandlerEvent","blurHandlerEvent","tagClass","spanEle","setCssClass","oldClass","_isElementVisible","setPlaceholder","floatTextContent","setReadonly","isReadonly","setEnabled","isEnable","inputContainer","disabledAttrs","considerWrapper","removeAttributes","addAttributes","setClearButton","isClear","initial","clearButton","insertAdjacentElement","createClearButton","createSpanElement","labelSpanElement","_internalRipple","isRipple","argsButton","_onMouseDownRipple","_onMouseUpRipple","createIconEle","iconClass","prependSpan","innerWrapper","appendSpan","validateInputType","getInputValidClassList","inputClassName","createInput","bindClearAction","showClearButton","enabled","setPropertyValue","focusHandler_1","blurHandler_1","inputHandler_1","unbindInitialEvent","unWireClearBtnEvents","removeFloating","inputEle","addFloating","iconEle","inputObj","isPrependIcon","floatLine","floatText","setRipple","addIcon","icons","internalCreate","result_2","updateHTMLAttributesToElement","htmlAttributes","updateCssClass","newClass","updateHTMLAttributesToWrapper","updatedClassValues","isBlank","inputString","CheckBoxFilterBase","isExecuteLocal","existingPredicate","foreignKeyQuery","filterState","renderEmpty","isCheckboxFilterTemplate","infiniteRenderMod","infiniteInitialLoad","infiniteSearchValChange","infinitePermenantLocalData","infiniteQueryExecutionPending","infiniteSkipCnt","infiniteScrollAppendDiff","prevInfiniteScrollDirection","infiniteLoadedElem","infiniteDataCount","infiniteLocalSelectAll","localInfiniteSelectAllClicked","localInfiniteSelectionInteracted","infiniteManualSelectMaintainPred","cBoxTrue","cBoxFalse","closeDialog","dlg","keyupHandler","searchHandler","searchBoxKeyUp","foreignKeyFilter","fColl","mPredicate","fPredicate","filterCollection","columnData","ejpredicate","fpred","searchBoxClick","sInput","refreshCheckboxes","updateSearchIcon","loadingIndicator","indicatorType","showMaskRow","sIcon","localeObj","updateDataSource","actualPredicate","filteredColumns","filterSettings","allowCaseSensitive","isFiltered","enableInfiniteScrolling","infiniteUnloadParentExistPred","getAndSetChkElem","sBox","hideSearchbox","searchBox","inputargs","spinner","cBox","showDialog","columnName","columnType","parentsUntil","btnClick","dialogCreated","renderResponsiveFilter","dialogLabel","isResponsiveFilter","enableAdaptiveUI","getAllData","getListHeight","showMask","getFilterMenuPostion","openDialog","isRemote","isBlanks","filterTemplateCol","filterItemTemplate","destroyTemplate","clearReactVueTemplates","clearFilter","fltrBtnHandler","focusModule","filterfocus","appendChildren","searchInput","optr","ddlValue","isMenuNotEqual","caseSen","isNotEqual","itemsCnt","coll","infiniteSearchPred","infiniteFltrBtnHandler","predicateIterate","addCurrSelection","existingPredicate_1","initiateFilter","checkBoxChecked","fObj","generateNullValuePredicates","notifyFilterPrevEvent","dummyDefaults","parentCurrentViewDataCount","firstVal","foreignQuery","predicte","padZero","addDistinct","filterModel","filterChoiceCount","itemsCount","filterargs","filterObj","getDatePredicate","emptyValPredicte","generatePredicate","fullData","makeInfiniteScrollRequest","filterEvent","processSearch","getPredicateFromCols","getForeignKeyColumns","foreignColumn","getColumnByField","getColumnByForeignKeyValue","customQuery","getDataModule","queryGenerate","processDataOperation","filteredColumn","parentFilteredLocalRecords","defObj","eventPromise","dataSuccess","infiniteScrollMouseKeyDownHandler","infiniteScrollHandler","infiniteScrollMouseKeyUpHandler","Global","listDiv","getShimmerTemplate","maskItemHeight","maskRowCount","maskList","wrapperElem","removeMask","computedStyle","liHeight","maskTemplate","maskSpan","maskLists","infiniteRemoveElements","infiniteAppendElements","removeElem","appendElem","infiniteQuery","existQuery","isInitial","allPromise","runArray","colData","executeQueryOperations","args1","filteredData","getDistinct","processDataSource","searchSettings","searchQuery","cols","filterColumn","updateResult","createFilterItems","updateAllCBoxes","toogleCheckbox","updateInfiniteManualSelectPred","parentTotalDataCount","updateIndeterminatenBtn","setFocus","predmdl","focusNextOrPrev","nextElement","prevElem","cBoxes_1","removeAddCboxClasses","setChecked","createCheckbox","dummyData","extendObjWithFn","checkboxUid","isReactCompiler","isReactChild","parentDetails","parentInstObj","renderTemplates","indeterminate","cBoxes","nullCounter","selectAllValue","innerDiv","checkBox","createCboxWithWrap","isColFiltered","predicateCheckBox","predicateElement","checkBoxListElem","reduceHeight","increaseHeight","isRndere","args_1","updateInfiniteUnLoadedCheckboxExistPred","checkbox","getCheckedState","selectAllParent","addCurrSelectionParent","updatePredArr","checkState","checkboxFilter","isForeignKey","currentFilterValue","enableCaseSensitivity","foreignDataObj","updateDateFilter","getCaseValue","valueAccessor","getUpdateUsingRaf","updateFunction","isExportColumns","exportProperties","updateColumnTypeForExportColumns","exportColumns","gridColumns","getCollapsedRowsCount","gSummary","gLen","dataRowCnt","agrCnt","indent","gLevel","recursive","nLevel","iterateArrayOrObject","iterateExtend","baseExtend","validSelector","baseTemplateComplier","setStyleAndAttributes","customAttributes","copyAttr","exclude","setColumnIndex","columnModel","ind","prepareColumns","autoWidth","setCssInGridPopUp","popUp","popUpSpan","targetPosition","isBottomTail","popup","getPopupLeftPosition","isID","getActualPropFromColl","calculateAggregate","customAggregate","rowHeight","CellType","RenderType","ToolbarItem","ResponsiveDialogAction","ResponsiveToolbarAction","getScrollBarWidth","divNode","isComplexField","getComplexFieldID","getParsedFieldID","setComplexFieldID","isEditable","isOldRow","isIdentity","isPrimaryKey","isActionPrevent","editSettings","showConfirmDialog","clName","serviceLocator","fmtr","getService","addRemoveActiveClasses","cells","elementVisible","dlgWidth","leftPos","getZIndexCalcualtion","refreshForeignData","lValue","fField","fdata","filterObject","datePredicate","prevDate","nextDate","prevObj","nextObj","setSeconds","predicateSt","predicateEnd","dateOnlyString","isGroupAdaptive","enableVirtualization","isVirtualAdaptive","enableLazyLoading","newCase","getCustomDateFormat","colType","printGridModel","getColumns","printMode","detailTemplate","expandedRows","rows_1","getRowsObject","isDetailRow","allowPaging","getExpandedState","getPrototypesOfObj","cpy","cln","measureColumnDepth","checkDepth","indices","getTransformValues","replacedTv","applyBiggerTheme","rootElement","getScrollWidth","scrollElem","getContent","resetColspanGroupCaption","colspan","isRowDragable","gridWidth","groupCaptionRowLeftRightPos","frozenCount","getVisibleFrozenLeftCount","applyStickyLeftRightPosition","newColspan","uid_1","getColumnByUid","adaptr","getStateEventArgument","ispercentageWidth","getVisibleColumns","percentageCol","undefinedWidthCol","showGroupedColumn","resetRowIndex","rowElms","startRowIndex","isDataRow","isAltRow","enableAltRow","renderModule","emptyRow","compareChanges","dataToBeUpdated","isChildColumn","uids","pushuid","frozenDirection","isFrozen","addFixedColumnBorder","resetColandRowSpanStickyPosition","getCellFromRow","colIndex","getRowByIndex","addStickyColumnPosition","getIndentCount","enableColumnVirtualization","getFrozenMode","getCellsByTableName","getDataRows","getCellByColAndRowIndex","setValidationRuels","mRules","frRules","validationRules","numberFormat","mtch_1","addBiggerDialog","dialogs","performComplexDataOperation","mapObject","returnObj","duplicateMap","addRemoveEventListener","isOn","evt_1","createEditElement","complexFieldName","getColumnModelByFieldName","registerEventHandlers","evts","eventHandlers","removeEventHandlers","getParentIns","findCellIndex","checkActiveMatrix","checkCellIndex","activeMatrix","cellIndex","currentCellIndexPass","dataState","isPending","foreignKeyDataState","addRows","reorderRows","removeRows","crudActions","refreshFilteredCols","getCurrentViewRecords","toIndex","fromIndex","isQueryInvokedFromData","skipPage","isAutoCompleteCall","columnQueryMode","selectQueryFields","filterQuery","aggregateQuery","sortQuery","virtualGroupPageQuery","pageQuery","infiniteScrollModule","pagerModule","pagerObj","isAllPage","isManualRefresh","isGrpFmt","formatGroupColumn","sortSettings","sortGrp","fcolumn","sSettings","getSearchColumnFieldNames","needForeignKeySearch","fGeneratePredicate","predList","skipFoerign","foreignColEmpty","actualFilter","foreignCols","defaultFltrCols","grabColumnByFieldFromAllCols","excelPredicate","foreignCols_1","column_1","grabColumnByUidFromAllCols","getPrimaryKeyFieldNames","crud","deferred_1","getMilliseconds","pr","previousData","deff","endEdit","getState","getForeignKeyDataState","setForeignKeyDataState","dataArgs","disablePageWiseAggregates","isDataChanged","editArgs_1","cancelEdit","colFieldNames","columns_2","filteredCols","refreshFilteredColsUid","cell","setRowValue","setRowData","setCellValue","pKeyField","makechanges","Cell","isSpanned","isRowSpanned","CellMergeRender","cellArgs","spannedCell","cellRenderer","getCellRenderer","cellType","cellSpan","rowSpan","rowsObject","targetCell_1","colSpanLen","colSpanRange","rowSpanRange","spanText","backupMergeCells","fName","setMergeCells","generteKey","fname","splitKey","getMergeCells","mergeCells","updateVirtualCells","mCells","getIndexFromAllColumns","vColumnIndices","getColumnIndexesInView","RowRenderer","isSpan","rowTemplate","refreshRow","isChanged","refreshMergeCells","tempCells","cells_1","isEdit","rowArgs","chekBoxEnable","selIndex","getSelectedRowIndexes","isCheckBoxSelection","checkAllRows","buildAttributeFromRow","cellRendererFact","isColumnSelected","DetailExpand","Filter","CommandColumn","requireTemplateRef","thisRef_1","ariaAttr","requestTypeAction","prevRowCells","prevRowCell","resetrowSpanvalue","frozenRows","getFrozenRightColumnsCount","getFrozenLeftCount","movableCount","cellIdx","cellMerge","currentRowCell","nextRowCell","emptyColspan","getFrozenLeftColumnsCount","freezeCells","oldColspan","tabindex","eventArg_1","isSelectable","cellTemplate","thisRef_2","disableRowSelection","selectionSettings","persistSelection","primaryKey_1","pKey_1","SelectedRecords","partialSelectedRecords","disableSelectedRecords","lazyLoadCssClass","rowRenderingMode","allowTextWrap","textWrapSettings","wrapMode","summarycell","thisRef","eventArg","isPartialSelection","selRowIndex","chkBox","isDetail","isCaptionRow","isAggregateRow","parentUid","class","RowModelGenerator","generateRows","getInfiniteIndex","enableImmutableMode","generateRow","ensureColumns","generateCell","RowDragIcon","pid","tIndex","parentGid","refreshForeignKeyRow","generateCells","foreignKeyColumns","dummies","rowId","oIndex","isDataCell","refreshRows","SummaryModelGenerator","groupFooterTemplate","groupCaptionTemplate","columnSelector","loadSummaryOnEmpty","buildSummaryData","getGeneratedRow","summaryRow","raw","indents","getIndentByLevel","isDetailGridAlone","indentLength","allowRowDragAndDrop","getGeneratedCell","getCellType","DetailFooterIntent","Indent","sColumn","scolumn","summaryRows","single","disp","disablePageWiseAggregatesGroup","Summary","GroupSummaryModelGenerator","GroupSummary","CaptionSummaryModelGenerator","CaptionSummary","GroupModelGenerator","infiniteChildCount","renderInfiniteAgg","summaryModelGen","captionModelGen","isInfiniteScroll","isCollapseStateEnabled","ensureRowVisibility","parentid","childId","generateDataRows","preCaption","captionRow","generateCaptionRow","getPreCaption","isRenderAggregate","rowCnt","aggregatesCount","setInfiniteRowVisibility","preCap","rowObj","groupKey","getCaptionRowCells","visibles","groupedLen","generateIndentCell","Expand","captionCells","cIndex_1","wFlag","tmpFlag","GroupCaption","GroupCaptionEmpty","parentID","childID","childGid","cRow","caption","childRow","ContentRender","freezeRows","movableRows","freezeRowElements","currentInfo","prevCurrentView","isLoaded","infiniteCache","visibleRows","visibleFrozenRows","rightFreezeRows","isAddRows","isInfiniteFreeze","useGroupCache","tempFreezeRows","rafCallback","ariaService","setBusy","getPanel","setRowsInLazyGroup","infiniteScrollSettings","enableCache","maxBlock","maxBlocks","rowIdx","rowElements","showAddNewRow","addNewRowFocus","preventAdjustColumns","setFirstFocusableTabIndex","case","setPadding","removePadding","widthService","enableDeepCompare","generator","getModelGenerator","setVisible","enableAfterRender","refreshContentRows","droppableDestroy","byKey","keyArgs","pressedKey","renderPanel","setOptions","busy","setPanel","renderHorizontalScrollbar","scrollbarHeight","setScrollbarHeight","renderTable","virtualTable","virtualTrack","createContentTable","setTable","multiselectable","initializeContentDrop","getHeaderContent","cellspacing","setColGroup","getHeaderTable","getColGroup","editModule","formObj","currentMovableRows","frag","initialPageRecords","refFrag","refHdrfrag","hdrfrag","hdrTbody","trElement","isColumnVirtualInfiniteProcess","isInfiniteColumnvirtualization","modelData","isGroupFrozenHdr","emptyVcRows","checkCache","setGroupCache","registeredTemplates","templatetoclear","rootNodes","blockLoad","vcRows","virtualInfo","offsets_1","vGroupOffsets","bSize","contentModule","isEndBlock","blockIndexes","contentPanel","rowObject","isVFFrozenOnly","sentinelInfo","bIndex","mhdrData","vgenerator","virtualFrozenHdrRefresh","lazyLoadRender","refRowsObj","setInfiniteVisibleRows","getBlockSize","rowTemplateID","getRowTemplate","colcount","isTR","isVFreorder","ensureFrozenHeaderRender","ensureVirtualFrozenHeaderRender","removeMaskRow","parentTable","setHeight","resetStickyLeftPos","refreshFrozenScrollbar","appendContent","newRow","startAdd","isAddNewRow","getVisibleFrozenRightCount","enableCacheOnInfiniteColumnVirtual","vRows","headerCellHeight","boxSizing","maintainRows","getGroupCache","initialGroupRows","getCurrentBlockInfiniteRecords","getRows","getReorderedRows","getReorderedFrozenRows","fhdrData","getInfiniteRows","getInfiniteMovableRows","infiniteCacheRows","panel","contentTable","infiniteRows","getRowElements","setRowElements","colgroup","testRow","needFullRefresh","infiniteData","infiniteRowVisibility","contentrows","clen","getNormalizedColumnIndex","colIdx","getColumnIndexByUid","displayVal","setDisplayNone","invokedFromMedia","hideAtMedia","updateMediaColumns","trs","setDisplayValue","isFreeze","getHeaderColGroup","droppable","canSkip","setSelection","clearAll","getInfiniteRowIndex","fRows","firstRowIndex","getVirtualRowIndex","setRowObjects","immutableModeRendering","oldKeys","newKeys","newRowObjs","oldIndexes","oldRowObjs","batchChangeKeys","getBatchEditedRecords","newIndexes","hasBatch","oldRowElements","currentLen","oldIndex","refreshImmutableContent","isEqual","objectEqualityChecker","old","primaryKey","getBatchChanges","newRowPosition","isDirty","updateCellIndex","rowEle","HeaderRender","frzIdx","notfrzIdx","isFirstCol","visualElement","headercelldiv","getStackedHeaderColumnByHeaderText","lockColumn","getColumnIndexByField","colPosRefresh","renderCustomToolbar","updateCustomResponsiveToolbar","toggleStackClass","createHeaderTable","initializeHeaderDrag","initializeHeaderDrop","headerPanel","headerTable","tHead","createTable","createHeader","tableEle","findHeaderRow","thead","bodyCell","rowBody","updateColGroup","colHeader","rowRenderer","Header","headerRow","colDepth","getHeaderCells","RowDragHIcon","headerTemplateColumn","HeaderIndent","DetailHeader","lockcolPositionCount","lockColsRendered","appendCells","isFirstObj","isLastCol","isMovable","isStackLastCol","lastCol","isLockColumn","getCellCnt","stackedLockColsCount","getStackedLockColsCount","StackedHeader","getColSpan","isFirstCol_1","isLaststackedCol","frozenColumns","lockColsCount","refreshUI","freezeReorder","setWidthToColumns","updateDefaultCursor","gCells","isXaxis","firstHeaderCell","showDropArea","toolbar","toolbarItems","toolbarLeft","toolbarItem","showResponsiveCustomSort","showResponsiveCustomFilter","resToolbar","CellRenderer","locator","localizer","rowChkBox","getGui","evaluate","fData","literals_1","templateID","invokeFormatter","checkFor","refreshCell","refreshTD","parentRow","newTD","cloneAttributes","arialabelText","innerHtml","displayAsCheckBox","localeStr","fromFormatter","appendHtml","checkWrap","rowID","buildAttributeFromCell","clipMode","isCheckBoxType","AriaService","setStateAndProperties","setExpand","setSort","isBusy","invalid","setGrabbed","isGrabbed","grabbed","setDropTarget","isTarget","dropeffect","datarole","haspopup","rowcount","HeaderCellRenderer","hTxtEle","sortEle","gui","chkAllBox","fltrMenuEle","prepareHeader","hValueAccer","elementDesc","innerDIV","headerValueAccessor","checkAllWrap","matchFlColumns","extendPrepareHeader","gridObj","headerTempID","isReactChild_1","headerTextAlign","titleElem","matchFilteredColumns","StackedHeaderCellRenderer","toolTip","IndentCellRenderer","GroupCaptionCellRenderer","cellUid","fKeyValue","gTemplateValue","domSetter","gCaptionTemp","getTemplate","tempValue_1","captionTemplate","tempID","GroupCaptionEmptyCellRenderer","ExpandCellRenderer","HeaderIndentCellRenderer","DetailHeaderIndentCellRenderer","DetailExpandCellRenderer","RowDragDropRenderer","nodeElement","RowDragDropHeaderRenderer","Render","emptyGrid","counter","headerRenderer","getRenderer","contentRenderer","Content","isLayoutRendered","filterModule","filterObjIndex","prevFilterObject","flIcon","checkboxPrevFilterObject","Columns","headerCell","getColumnHeaderByField","allowSelection","pageSizes","checkAll","dataLength","totalRecordsCount","prevPageMoving","resetTemplates","detailTemplateID","toolbarTemplate","refreshComplete","maskRow","enableVirtualMaskRow","isCaptionCollapse","isFActon","isNeedForeignAction","getFData","foreignKeyLength","deffered_1","validateGroupRecords","dataManagerFailure","sendBulkRequest","dmSuccess","dmFailure","renderEmptyRow","spanCount","rowDropSettings","targetID","emptyRecordTemplate","emptyRecordTemplateID","getEmptyRecordTemplate","dynamicColumnChange","updateColumnType","cFormat","equalTo","isColTypeDef","actionArgs","isInfiniteDelete","isInfiniteEnd","totalDataRecordsCount","updatesOnInitialRender","setRowCount","dataRowCount","isEmptyCol","buildColumns","isAutoGen","iterateComplexColumns","complexCols","instantiateRenderer","addRenderer","cellrender","addCellRenderer","group0","groupN","addWhere","curFilter","rPredicate","updateGroupInfo","untouched","updatedGroup","itemGroup","updatedGroupItem","CellRendererFactory","cellRenderMap","ResponsiveDialogRenderer","sortedCols","sortPredicate","isCustomDialog","evtHandlers","closeCustomDialog","renderResponsiveContextMenu","renderCustomFilterDiv","customExFilterClose","onActionCompleteFn","editComplate","isCustomDlgRender","customResponsiveDlg","closeBtn","saveBtn","backBtn","customExcelFilterParent","isFilter","isOpen","filterClearBtn","getHeaderTitle","columnChooserModule","responsiveDialogRenderer","columnMenuResponsiveContent","cDiv","customColumnDiv","renderResponsiveContent","isColumnChooser","filterParent","isColMenu","sortColumns","showColumnChooser","sortBtnParent","isSort","getSortedFieldsAndDirections","buttonInnerText","sortButtonClickHandler","divIcon","iconSpan","customFilterColumnClickHandler","allowMultiSorting","isSortApplied","resetSortButtons","directionTxt","setSortedCols","getCurrentSortedFields","menuCol","filteredCol","autoFitColumns","closeCustomFilter","groupColumn","ungroupColumn","sortColumn","showResponsiveCustomColumnChooser","isRowResponsive","showResponsiveDialog","colDiv","isDialogClose","clearCustomFilter","removeCustomDlgFilterEle","renderCustomFilterDialog","renderResponsiveDialog","setFilterModel","createOptions","setTopToChildDialog","checkBoxBase","excelFilterBase","dialogEle","colMenu","outerDiv","customFilterDlg","getDialogOptions","isCustomFilter","adaptiveDlgTarget","beforeDialogClose","renderResponsiveHeader","sortField","closeResponsiveDialog","keyHandler","clearSorting","primaryKeyValue","isAdd","getDialogName","getButtonText","titleDiv","dialogHdrBtnClickHandler","id_1","clearBtn","clearFiltering","filterClear","removeCustomFilterElement","custommenu","applyCustomFilter","destroyCustomFilterDialog","customEle","ServiceLocator","register","registerAdaptiveService","isAdaptiveUI","RendererFactory","rendererMap","rName","ColumnWidthService","totalColumnsWidth","setColumnWidth","getTableWidth","setMinwidthBycalculation","maxWidthColumns","tWidth","tmWidth","isWidthUndefined","setUndefinedColumnWidth","cWidth","tgridWidth","setWidthToTable","fWidth","headerCol","contentCol","editTableCol","movableScrollbar","movableWidth","placeHolder","getSiblingsHeight","getHeightFromDirection","isWidUndefCount","isAutoColumn","isMaxWidth","isAutoResize","resizeSettings","FocusStrategy","oneTime","swap","virtualSelectionInfo","forget","skipFocus","focusByClick","firstHeaderCellClick","prevIndexes","refMatrix","refreshMatrix","actions","isVirtualScroll","groupedFrozenRow","rowModelGen","focusCheck","onFocus","setActive","enableHeaderFocus","generate","passiveFocus","firstHeaderCellIndex","active","elementToFocus","skipAction","onBlur","isGantt","nextElementSibling","removeFocus","setLastContentCellTabIndex","groupModule","focusableGroupedItems","getFocusableGroupedItems","toolbarElement","toolbarModule","focusableToolbarItems","getFocusableToolbarItems","force","beforeArgs","byClick","clickArgs","handleFilterNavigation","inputSelector","buttonSelector","onKeyPress","pagerElement","focusablePagerElements","getFocusablePagerElements","allowToPaging","checkPagerHasFocus","lastHeaderCellIndex","isValidBatchEditCell","findBatchEditCell","getDropDownPage","changePagerFocus","parentCell","setPagerFocus","checkFirstPagerFocus","lastRow","lastColumn","skipOn","lastCell","setLastContentCellActive","focusOutFromChildGrid","focusFirstHeaderCell","activeKey","bValue","prevBatchValue","outline","swapInfo","jump","toHeader","getNextCurrent","setActiveByKey","lastIdxCell","nextHeaderCellIndex","firstContentCellIndex","previousCellIndex","focusOutFromHeader","addBatchRow","clearIndicator","setPagerContainerFocus","cellColIndex","cellCol","currentCellIndex","limitRow","tempCellIndex","cellIndexObtain","prevTempCellIndex","lastContentCellIndex","parentGrid","parentRows","parentRowIndex","nextFocusCell","rowCells","allowAdding","commandColumnFocusElement","inputTarget","addNewRow","filterCell","inputElements","firstEditCell","lastEditCell","focusElement","focusVirtualElement","virtualData","isKeyFocus","selectedRowIndex","preventScroll","getFocusedElement","setFocusedElement","addFocus","getFocusInfo","cellElem","getCellFromIndex","addOutline","focusHeader","resetFocus","isFocused","isJump","getInfo","focusedColumnUid","getColumnByIndex","ContentFocus","HeaderFocus","cFocus","frozenRow","batchLen","updateRow","isRowTemplate","matrixcs","hdrLen","headerModule","isScroll","lastRowHeaderIdx","refreshAddNewRowMatrix","handlerInstance","bool","isGroup","cellPosition","gridPosition","passiveHandler","restoreFocusWithAction","internalCellFocus","startIdx","startCellIdx","headrIdx","findNextCellFocus","addedrow","groupSortFocus","groupTextFocus","groupCancelFocus","getPrevIndexes","forgetPrevious","toFrozen","focusEle","getFocusable","commandButtons","allow","emptyTable","inValid","vector","incrementNumber","columnsCount","rowColumns","currentColumnCount","keyActions","indexesByKey","navigators","getCurrentFromAction","editNextRow","allowNextRowEdit","isLastCellPrimaryKey","visibleIndex","isPresent","shouldFocusChange","rN","cN","oRowIndex","oCellIndex","nextRowFocusValidate","previousRowFocusValidate","firstIndex","enterFrozen","headerSwap","isHeaderFocus","optionals","defaultLen","rIndex","cIndex","isData","isCellWidth","getGridSeletion","allowColumnSelection","isLastCell","current1","checkFilterColumn","getHeaderType","SearchBox","searchFocus","searchBlur","wireEvent","unWireEvent","PageSettings","ColumnChooserSettings","Selection","selectedRowIndexes","selectedRowCellIndexes","selectedRecords","selectedColumnsIndexes","checkBoxState","isMultiShiftRequest","isMultiCtrlRequest","isMultiCtrlRequestCell","enableSelectMultiTouch","clearRowCheck","selectRowCheck","selectedRowState","unSelectedRowState","chkAllCollec","isCheckedOnAdd","persistSelectedData","deSelectedData","isHdrSelectAllClicked","needColumnSelection","isCancelDeSelect","isPreventCellSelect","disableUI","isPersisted","cmdKeyPressed","cellselected","isMultiSelection","isAddRowsToSelection","initialRowSelection","isPrevRowSelection","isKeyAction","isRowDragSelected","rmtHdrChkbxClicked","isCheckboxReset","isRowDeselect","autoFillRLselection","right_bottom","bottom_left","top_right","top_left","top_bottom","top_right_bottom","top_bottom_left","top_right_left","right_bottom_left","all_border","factory","initializeSelection","onActionBegin","fDataUpdate","getRowObj","currentIndex","onActionComplete","gridElement","hidePopUp","clearSelection","mouseDownHandler","isEditing","isPersistSelection","getCurrentBatchRecordChanges","currentRecords","selectRow","enableSimpleMultiRowSelection","addRowsToSelection","selectedRow","getRowObjectFromUID","selectData","selectedIndex","isAvailable","getSelectedRecords","clearRowSelection","isRowType","isRowSelected","activeTarget","isCheckboxModeResetOnRowClick","checkboxMode","isSelectionTypeMultiple","can","rowDeselect","actualTarget","selectRowIndex","rowSelectingCallBack","isCtrlPressed","isShiftPressed","previousRow","prevRowIndex","previousRowIndex","isHeaderCheckboxClicked","toggle","removed","clearSelectedRow","selectRowCallBack","clearRow","disableInteracted","updateRowSelection","isHeaderCheckBoxClicked","rowIndexes","updateRowProps","selectRowsByRange","selectRows","getCollectionFromIndexes","selectedDataUpdate","selectedData","selectableRowIndex","currentRow","isSingleSel","prevRow","selectRowFn","selectableRowIndex_1","checkboxOnly","checkboxColumn","rowIndexes_1","isUnSelected","enableToggle","addRemoveClassesForRow","clearRowCallBack","selectedEle","updatePersistCollection","updateCheckBoxes","getPkValue","pkField","chkState","ensureCheckboxFieldSelection","updatePersistDelete","checkedTarget","setCheckAllState","contextMenuModule","mouseButton","checkSelectAllClicked","clearCellSelection","clearColumnSelection","prevCIdxs","prevECIdxs","row_1","rowIndex_1","foreignKeyData_1","isRowClicked","getCheckAllStatus","updatePersistSelectedData","mRow","rowDeselectCallBack","frozenRightRow","isSingleDeSel","rowDeselectObj","rowInString","rowidxex","dataTxt","selectCell","isCellType","selectedCell","getColIndex","isCellSelected","successCallBack","previousRowCell","getCellIndex","cellSelectingArgs","currentCell","clearCell","updateCellSelection","selectedRowCellIndex","updateCellProps","rIdx","selectCellsByRange","cellIndexes","stIndex","edIndex","cellSelectionMode","getLastColIndex","addAttribute","cellSelectedArgs","selectCells","rowCellIndexes","cellSelectArgs","cellLen","addRowCellIndex","addCellsToSelection","hideAutoFill","cellIndexes_1","prvRowCellIndex","selectedCellIdx","cellDeselect","rowCellIndex","isRowAvail","selectedCells","getSelectedCellsElement","cLen","bdrElement","showHideBorders","gBRect","isCellDrag","startAFCell","startCell","endAFCell","selectLikeExcel","startDIndex","updateScrollPosition","mouseEvent","timer1","setScrollPosition","getRowHeight","timer2","isAutoFillSel","nextElement_1","findNextCell","positionAFBorders","mouseEvent_1","siblingEles","nextEleInd","showAFBorders","selectLikeAutoFill","startDCellIndex","drawBorders","setFrozenBorders","bdrStr","fixedCells","firstRowIdx","firstColIdx","lastRowIdx","lastColIdx","preCell","nextCell","refreshFrozenBorders","frcBdrElement","fhBdrElement","frhBdrElement","createBorders","positionBorders","isLastRow","isFirstRow","isFirstCell","setBorders","stOff","endOff","parentOff","leftOffset","rightOffset","selectDirection","updateStartEndCells","mcBdrElement","mhBdrElement","applyBorders","applyBothFrozenBorders","drawAFBorders","bdrAFBottom","createAFBorders","bdrAFLeft","firstCellTop","firstCellLeft","parentRect","sTop","sLeft","totalHeight","getFooterContent","totalWidth","scrolloffSet","borderAFRightValue","bdrAFRight","bdrAFTop","leftRemove","topRemove","autofill","hideAFBorders","updateValue","createBeforeAutoFill","updateCell","getAutoFillCells","isApply","startrowIdx","endrowIdx","endCellIdx","rowLen","colLen","endCell","startCellIndex","trIdx","mUPTarget","closeRowCell","updateAutoFillPosition","updateStartCellsIndex","enableAutoFill","rindex","isFrozenRow","isFrozenRight","colWidth","enableDrag","postion","clearSelAfterRefresh","pkValue","onCellFocused","refreshHeader","actionCompleteFunction","addEventListener_checkbox","removeEventListener_checkbox","isMacOS","keyDownHandler","keyUpHandler","allowKeyboard","getCheckAllBox","initPerisistSelection","prevColIndex","checkBoxSelectionChanged","gobj","chkField","proxy_1","refreshPersistSelection","setRowSelection","selectedStateKeys","unSelectedRowStateKeys","rowData_1","rowObj_1","selectedData_1","getAvailableSelectedData","filteredSearchedSelectedData","editChkBox","onDataBound","getSelectedRows","totalRecords","checkSelectAllAction","cRenderer","editForm","checkSelectAll","stateStr","updateSelectedRowIndexes","triggerChkChangeEvent","checkSelect","rowCellSelectionHandler","moveIntoUncheckCollection","rowObj_2","rowObj_3","updateSelectedRowIndex","selectedVal","isAllSelected","isSelectAllRowCount","someDataSelected","isInteraction","checkToSelectAll","checkedLen","getRecord","targetHeadCell","targetRowCell","popUpClickHandler","chkSelect","showPopup","headerSelectionHandler","checkboxColumnIndexCheck","headerAction","hdrLength","getKeyColIndex","targetLabel","applyDownUpKey","applyRightLeftKey","shiftDownKey","applyShiftLeftRightKey","applyHomeEndKey","applyCtrlHomeEndKey","clipboardModule","ctrlPlusA","applySpaceSelection","stackedHeader","innerColumn","getstackedColumns","applyUpDown","selectColumn","selectColumnsByRange","innerColumnIndexes","detailIndentCell","dragdropIndentCell","selectedCol","getColumnHeaderByUid","isColSelected","isMultiColumns","clearColDependency","previousColumnIndex","updateColSelection","selectedArgs","updateColProps","selectColumns","columnIndexes","getselectedCols","selectingArgs","selectColumnWithExisting","newCol","clearIndex","deselectedArgs","columnDeselect","selectedHeader","getSelectedColumnCells","seletedcells","selectionString","onDataBoundFunction","setCheckAllForEmptyGrid","actionCompleteFunc","actionCompleteHandler","resizeEndFn","checkAllBox","isInfinitecroll","isSelectedRowIndexUpdating","Search","hasNonNumericCharacters","decimalFound","searchString_1","refreshSearch","onSearchComplete","cancelBeginEvent","ShowHide","colName","isShowHide","batchChanges","resetColumnState","changedCol","showBy","getToggleFields","hideBy","getKeyBy","batchActionPrevent","changedStateColumns","showHideArgs","currentViewCols","col1","col2","isModeChg","previousValues","oneTimeReady","uiupdate","tlbrElement","tlbrLeftElement","tlbrCenterElement","tlbrRightElement","tlbrItems","tlbrLeftWidth","tlbrCenterWidth","tlbrRightWidth","tlbrItemsWidth","tlbrWidth","refreshOverflow","mHdrHeight","ensureOverflow","getThreshold","hDiv","footerDiv","setScrollLeft","setPageXY","onTouchScroll","mScrollBar","onCustomScrollbarScroll","contentScrollHandler","headerScrollHandler","onContentScroll","scrollTarget","isPreventScrollEvent","errorFreeze","errorFixed","isDown","scrollDown","isFooter","cont","hdr","pageXY","getPointXY","mHdr","mCont","getScrollbleParent","addStickyListener","eventElement","makeStickyHeader","resizeFrozenRowBorder","frzCols","enableStickyHeader","sHeight","setLastRowCell","css","contentRect","getClientRects","toolbarEle","groupHeaderEle","parentTop","colMenuEle","elemTop","setSticky","ccDlg","topStyle","AggregateColumn","setPropertiesSilent","AggregateRow","Clipboard","copyContent","pasteHandler","isMacLike","getSelectedRowCellIndexes","clipBoardTextArea","x_1","y_1","paste","setCopyData","withHeader","headerTextArray","getCopyData","leftCols","checkBoxSelection","colIndexes","getColumnHeaderByIndex","setSelectionRange","isCell","isElement","queryCommandSupported","execCommand","rowCellIndxes","BASE_DOC_URL","DOC_URL","WARNING","ERROR","INFO","patchadaptor","detailLists","cOp","logType","generateMessage","module_missing","injected","promise_enabled","primary_column_missing","selection_key_missing","actionfailure","formatError","formatErrorHandler","ajaxError","ajaxErrorHandler","locale_missing","lObj","limitation","check_datasource_columns","virtual_height","grid_remote_edit","grid_sort_comparer","resize_min_max","action_disabled_column","destColumn","exporting_begin","exporting_complete","foreign_key_failure","initial_action","frozen_rows_columns","column_type_missing","datasource_syntax_mismatch","jsonResult","SortDescriptor","SortSettings","InfiniteScrollSettings","FilterSettings","SelectionSettings","SearchSettings","RowDropSettings","TextWrapSettings","ResizeSettings","GroupSettings","EditSettings","LoadingIndicator","_this_1","inViewIndexes","keyA","frozenRightCount","freezeColumnRefresh","rightcount","frozenLeftCount","leftcount","movablecount","fixedcount","fixedCount","visibleFrozenLeft","visibleFrozenFixed","isPreparedFrozenColumns","visibleFrozenRight","visibleMovable","frozenLeftColumns","frozenRightColumns","movableColumns","fixedColumns","stackedLeft","stackedRight","stackedFixed","stackedMovable","stackedarrayLeft","stackedarrayRight","stackedarrayFixed","stackedarrayMovable","media","autoFitColumnsResize","tableIndex","componentRefresh","isChangeDataSourceCall","mergedColumns","rowUid","isAutoFitColumns","islazyloadRequest","pageTemplateChange","isAutoGenerateColumns","pageRequireRefresh","mediaBindInstance","commandDelIndex","asyncTimeOut","isExportGrid","isWidgetsDestroyed","enableLogger","Grid_1","mergePersistGridData","keyEntity","scrollPosition","currentObject","captionTemplateRef","isAngularCaptionTemplate","pagerTemplate","setFrozenCount","enableInfiniteAggrgate","allowExcelExport","resizeCheck","isCommandColumn","allowDeleting","extendRequiredModules","contextMenuItems","isForeignKeyEnabled","columnMenu","columnMenuItems","contextMenu","initializeServices","mediaCol","filterOperators","greaterThan","greaterThanOrEqual","lessThan","lessThanOrEqual","notEqual","notNull","defaultLocale","EmptyRecord","True","False","InvalidFilterMessage","GroupDropArea","UnGroup","UnGroupButton","GroupDisable","FilterbarTitle","EmptyDataSourceError","Add","Edit","Update","Delete","Pdfexport","Excelexport","Wordexport","Csvexport","Columnchooser","Item","EditOperationAlert","DeleteOperationAlert","SaveButton","OKButton","CancelButton","EditFormTitle","AddFormTitle","BatchSaveConfirm","BatchSaveLostChanges","ConfirmDelete","CancelEdit","ChooseColumns","ColumnMenu","SearchColumns","Matchs","FilterButton","ClearButton","StartsWith","NotStartsWith","Like","EndsWith","NotEndsWith","Contains","NotContains","IsNull","NotNull","IsEmpty","IsNotEmpty","Equal","NotEqual","LessThan","LessThanOrEqual","GreaterThan","GreaterThanOrEqual","ChooseDate","EnterValue","Copy","Group","Ungroup","GroupButton","UnGroupAria","GroupSeperator","UnGroupIcon","GroupedSortIcon","GroupedDrag","CheckBoxLabel","SelectAllCheckbox","SelectRow","autoFitAll","AutoFitAll","AutoFit","Export","FirstPage","LastPage","PreviousPage","NextPage","SortAscending","SortDescending","EditRecord","DeleteRecord","FilterMenu","SelectAll","AddCurrentSelection","Blanks","FilterTrue","FilterFalse","NoResult","ClearFilter","Clear","NumberFilter","TextFilter","DateFilter","DateTimeFilter","MatchCase","Between","CustomFilter","CustomFilterPlaceHolder","CustomFilterDatePlaceHolder","AND","OR","ShowRowsWhere","ToolbarMenuDialogARIA","FilterMenuDialogARIA","ExcelFilterDialogARIA","CheckBoxFilterDialogARIA","DialogEditARIA","ColumnMenuDialogARIA","CustomFilterDialogARIA","SortAtoZ","SortZtoA","SortByOldest","SortByNewest","SortSmallestToLargest","SortLargestToSmallest","Sort","FilterDescription","SortDescription","ColumnMenuDescription","GroupDescription","ColumnHeader","TemplateCell","CommandColumnAria","DialogEdit","ClipBoard","AscendingText","DescendingText","NoneText","Expanded","Collapsed","downArrow","upArrow","rightArrow","leftArrow","shiftDown","shiftUp","shiftRight","shiftLeft","home","ctrlHome","ctrlEnd","ctrlAltPageUp","ctrlAltPageDown","altPageUp","altPageDown","altDownArrow","altUpArrow","ctrlDownArrow","ctrlUpArrow","ctrlPlusP","f2","enter","ctrlEnter","shiftEnter","shiftTab","ctrlPlusC","ctrlShiftPlusH","ctrlSpace","ctrlLeftArrow","ctrlRightArrow","searchModule","enableQueryString","pageValue","searchParams","currentPageValue","updateColumnModel","getMediaColumns","setInitialFrozenColumnIndex","checkLockColumns","processModel","gridRender","addListener","updateStackedFilter","refreshMaskRow","axisDirection","dialogHolder","paddingRight","paddingLeft","contentHeight","maskTableHeight","contentRowCount","headerMaskTable","createEmptyMaskTable","contentMaskTable","maskRowContentScroll","createMaskTable","getContentMaskColumns","gridFooterContent","footerContentMaskTable","footerContent","translateMaskRow","maskElement","footer","gridContentScrollHeight","maskTable","maskColgroup","createMaskRow","frzTd","maskTHead","maskTBody","rowCountElement","altRow","addEditRow","addEditRowIndex","applyMaskRow","addEditMaskRow","tfoot","maskTFoot","minScrollTop","maskCells","maskCell","displayAsCheckBoxCell","refColgroup","refColumns","localTD","addShimmerEffect","maskTables","refreshMaskRowColgroupWidth","gcol","getShowHideService","pushMediaColumn","updateFrozenColumnsWidth","matchMedia","mediaQueryUpdate","mediaColumn","showHider","refreshMediaCol","enableHover","removeMediaListener","removeListener","eventInitializer","hasGridChild","destroyDependentModules","toolTipObj","keyboardModule","enableBoxSelection","checkCursor","requireRefresh","requireGridRefresh","freezeRefresh","childGridParent","parentInstance","isEllipsisTooltip","updateColumnObject","properties_1","rowTemplateFn","emptyRecordTemplateFn","detailTemplateFn","childGridObject","currentParent","currentParentInstance","currentChildObject","restoreAdjustColumns","extendedPropertyChange","maintainSelection","updateRTL","getToolbar","getContextMenu","columnMenuModule","getColumnMenu","showFilterBarOperator","resizeModule","updateResizeLines","updateGridLines","applyTextWrap","removeTextWrap","pending_1","deepWatch","gResult","enableVerticalRendering","fn_1","refreshFilter","getTablesCount","headerCells","stdHdrCell","isRecursion","updateLockableColumns","frozenName","leftrightColumnWidth","getFrozenLeftColumns","getFrozenRightColumns","isRefresh","inview","vLen","movable","isLeftRightFrozen","individualColumn","stackedColumn","getLocaleConstants","setColumnIndexesInView","getCurrentVisibleColumns","setGridHeaderContent","setGridContentTable","setGridContent","setGridHeaderTable","footerElement","getFooterContentTable","getPager","gridPager","setGridPager","getMovableRowByIndex","getFrozenRowByIndex","getFrozenRightRowByIndex","getRowInfo","rowData","row_2","getMovableRows","getFrozenRightRows","getAllDataRows","includeAdd","addMovableRows","mrows","includAdd","dRows","getMovableDataRows","getAllMovableDataRows","getFrozenDataRows","getAllFrozenDataRows","getFrozenRightDataRows","getAllFrozenRightDataRows","pkName","fieldIdx","sRow","columnUid","isChildGrid","refreshReactTemplateTD","childIndent","isChildRow","rowsObj","refreshGroupCaptionFooterTemplate","dataUid","headerCellRenderer","filterElement","rowObjects","selectRowEle","fRowTr","setFrozenRowData","fTr","getMovableCellFromIndex","getFrozenRightCellFromIndex","getMovableColumnHeaderByIndex","getFrozenRightColumnHeaderByIndex","getFrozenLeftColumnHeaderByIndex","getMovableRowsObject","getFrozenRightRowsObject","getStackedColumns","getUidByColumnField","getColumnFieldNames","columnNames","getDetailTemplate","getEditHeaderTemplate","editHeaderTemplateFn","getEditFooterTemplate","editFooterTemplateFn","getSelectedColumnsUid","showColumns","hideColumns","getFrozenCount","getMovableColumnsCount","isAutoWidth","autoCol_1","difference_1","autoWidth_1","isFrozenAuto","tWidth_1","gWidth","isPercentageWidthGrid","splitFrozenCount","getVisibleMovableCount","getMovableColumns","splitStackedColumns","pushStackedColumns","stackedcol","stockCol","pushallcol","text1","isTrue","resetStackedColumns","headercol","gridcolumns","tempHead","firstcol","frozenLeftBorderColumns","lastVisibleLeftCol","frozenRightBorderColumns","firstVisibleRightCol","isVisibleColumns","getVisibleFrozenColumns","getVisibleFrozenColumnsCount","getVisibleFrozenCount","getFilterUIInfo","visibleFrozenColumns","goToPage","pageNo","updateExternalMessage","isMultiSort","sortModule","changeDataSource","removeSortColumn","clearGridActions","filterByColumn","filterOperator","filterValue","actualFilterValue","actualOperator","removeFilteredColsByField","isClearFilterBar","fieldname","startEdit","deleteRow","editCell","saveCell","enableToolbarItems","enableItems","recalcIndentWidth","indentWidth","perPixel","parentOffset","applyWidth","newWidth","resetIndentWidth","reorderColumns","fromFName","toFName","reorderModule","reorderColumnByIndex","reorderColumnByTargetIndex","fromIndexes","rowDragAndDropModule","refreshDataSource","disableRowDD","headerRows","disValue","endRowIndex","tableWidth","percentageWidth","unit","widthUnit","defaultIndentWidth","indentWidthUnitFormat","headerIndentCol","contentIndentCol","tableWidthUnitFormat","indentWidthUnitFormat_1","createColumnchooser","renderColumnChooser","valueFormatterService","gCols","sCols","sLen","this_3","parentKeyFieldValue","queryString","initForeignColumn","rendererFactory","createGridPopUpElement","gridLines","getTooltipStatus","headerDivTag","htable","ctable","prevElement","innerElement","myTableDiv","mySubDiv","myTable","myTr","mytd","onKeyPressed","mouseClickHandler","focusOutHandler","dblClickHandler","keyActionHandler","tapEvent","dataBoundFunction","checkEdit","dataRow","ariaOwns","keyPress","editFormValidate","isShowAddedRowValidate","mergeColumns","storedColumn","storedColumns","_loop_4","localCol","tCol","this_4","presskey","stopImmediatePropagation","collapse","refreshColumns","excelExport","excelExportProperties","isMultipleExport","workbook","exportGrids","gridIds","exportMultipleExcelGrids","excelExportModule","csvExport","pdfExport","pdfExportProperties","pdfDoc","exportMultiplePdfGrids","currentGridId","currentGridInstance","exportedGridResults","groupExpandAll","expandAll","groupCollapseAll","collapseAll","clearGrouping","openColumnChooser","detailCollapseAll","detailRowModule","detailExpandAll","isContextMenuOpen","ensureModuleInjected","propertyNames","loggerModule","getPreviousRowData","hideScroll","getRowIndexByPrimaryKey","pKvalue","getFilteredRecords","getUserAgent","getRowUid","getRowElementByUID","cntRows","rows_2","getHiddenColumns","calculatePageSizeByParentHeight","pagesize","getNoncontentHeight","getSummaryValues","summaryCol","summaryData","serverExcelExport","exportGrid","serverPdfExport","serverCsvExport","setHeaderText","gridInput","submit","include","updateRowValue","setForeignKeyData","colpending","resetFilterDlgPosition","filterDlg","gClient","fClient","processRowChanges","batchAsyncUpdate","processBulkRowChanges","loopstring","setNewData","oldValues","bulkRefresh","deleteRowElement","out_i_1","_loop_5","this_5","_loop_6","isRowExist","this_6","renderRowElement","addRowObject","updateVisibleExpandCollapseRows","isInteger","getFrozenRightContent","getFrozenRightHeader","getMovableHeaderTbody","getMovableContentTbody","getFrozenHeaderTbody","getFrozenLeftContentTbody","getFrozenRightHeaderTbody","getFrozenRightContentTbody","showCustomFilter","showCustomSort","showCustomColumnChooser","showAdaptiveFilterDialog","showAdaptiveSortDialog","isColVirtualization","gridCols_1","GridComponent","ColumnDirective","ColumnsDirective","Datagrid","fetchLastMessages","boxShadow","ForbiddenPage","useTitle","flexDirection","justifyContent","alignItems","StepStatus","StepperOrientation","Step","NotStarted","StepLabelPosition","StepType","StepperBase","updateOrientaion","renderProgressBar","progressStep","progressbar","beforeLabel","stepsContainer","progressBarPosition","setProgressPosition","stepItemContainer","stepItemEle","topPos","lastEle","leftPost","Horizontal","ICONCSS","TEXTCSS","SELECTED","INPROGRESS","NOTSTARTED","FOCUS","COMPLETED","DISABLED","READONLY","PROGRESSVALUE","TEMPLATE","LABELAFTER","LABELBEFORE","VERTICALSTEP","HORIZSTEP","STEPICON","STEPTEXT","TEXT","STEPSLABEL","LABEL","STEPINDICATOR","LABELINDICATOR","INDICATORICON","STEPPERTOOLTIP","LINEARSTEP","StepperAnimationSettings","Stepper","stepperItemElements","downarrow","leftarrow","rightarrow","uparrow","tooltipOpen","navigationHandler","activeStep","updateStepperStatus","stepperItemList","updateStepType","updateTemplateFunction","renderItems","checkValidStep","updateAnimation","updateTooltip","wireKeyboardEvent","beforeLabelWidth","textEleWidth","renderDefault","progressEle","stepType","labelContainer","clearLabelPosition","navigateToStep","updateStepFocus","isKeyNavFocus","isFocus","status_1","InProgress","itemElement","updateStatusClass","currentStep","isInprogress","stepItem","Completed","stepperItemContainer","stepSpan","isIndicator","isValid","itemIcon","textSpan","checkValidState","updateLabelPosition","optionalSpan","renderItemContent","wireItemsEvents","calculateProgressBarPosition","listItems","isBeforeLabel","iconOnly","textEle","itemWidth","updateCurrentLabel","before","removeCss","indicatorEle","textLabelIcon","validStep","tooltipObj","linearModeValue","stepClickHandler","openStepperTooltip","closeStepperTooltip","updateTooltipContent","tooltipPopupClass","content_1","clickEventArgs","previousStep","isrerender","removeItemContent","updateContent","tempEle","isUpdated","previousStep_1","stepStatus","Itemslength","progressPos","totalLiWidth","activeLiWidth","progressValue","prevOnChange_1","updateStepInteractions","isPreviousStep","isNextStep","removeItemElements","nextStep","refreshProgressbar","updateElementClassArray","textContainer","keyboardModuleStepper","handleNavigation","isRTL","focusedEle","stepItems","prevIndex","isupdateFocus","renderStepperItems","isStepType","stepCounts","changedPropsCount","Default","StepperComponent","StepDirective","StepsDirective","setCurrentStep","stepperIcon","step1","step2","step3","step4","step5","fetchSteps","stepClick","HomePage","credit","setCredit","messageStat","setMessageStat","setStatus","remainPercentage","setRemainPercentage","usedPercentage","setUsedPercentage","remain","lastPurchase","used","fetchCredit","fetchMessageStatuses","pieChartContainer","pieChartComponent","lineChartContainer","lineChartComponent","gaugeChartContainer","gaugeChartComponent","messageStatStyle","progressBarColor","daily","weekly","monthly","yearly","DashboardDatagrid","ButtonComponent","DialogComponent","LoginPage","setEmail","setPassword","isModalOpen","setModalOpen","forgotPasswordEmailRef","baseUrl","closeForgotPassModal","enteredEmail","resetPasswordClicked","textDecoration","openForgotPassModal","roleResponse","dialogRef","NumericContainer","renderNumericContainer","refreshNumericLinks","updateTotalPages","updateLinksHtml","refreshAriaAttrLabel","updateStyles","auxiliaryClickHandler","renderFirstNPrev","renderPrevPagerSet","renderNextPagerSet","renderNextNLast","pagerContainer","prevPager","PP","nextPager","NP","previousPageNo","currentPageSet","isLastSet","numItems","isPagerResized","focusedItem","focusedorTarget","prevFocused","nextFocused","firstFocused","lastFocused","numItemFocused","npFocused","ppFocused","isPageAvailable","customText","ppIndex","avgNumItems","NPIndex","updateFirstNPrevStyles","updatePrevPagerSetStyles","updateNextPagerSetStyles","updateNextNLastStyles","currentPageIndex","firstPage","firstPageDisabled","prevPageDisabled","lastPage","lastPageDisabled","nextPage","nextPageDisabled","PagerMessage","pageNoMsgElem","pageCountMsgElem","hideMessage","showMessage","regx","Pager","hasParent","pageRefresh","firstPagerFocus","enableExternalMessage","checkpagesizes","defaultConstants","currentPageInfo","totalItemsInfo","totalItemInfo","firstPageTooltip","lastPageTooltip","nextPageTooltip","previousPageTooltip","nextPagerTooltip","previousPagerTooltip","pagerDropDown","pagerAllDropDown","CurrentPageInfo","TotalItemsInfo","FirstPageTooltip","LastPageTooltip","NextPageTooltip","PreviousPageTooltip","NextPagerTooltip","PreviousPagerTooltip","PagerDropDown","PagerAllDropDown","All","Container","Information","ExternalMsg","Page","Pages","containerModule","pagerMessageModule","initLocalization","isReactTemplate","renderFirstPrevDivForDevice","enablePagerMessage","renderNextLastDivForDevice","pagerdropdownModule","addAriaLabel","externalMessageModule","checkGoToPage","currentPageChanged","setDropDownValue","resizePager","onFocusIn","onFocusOut","getFocusedTabindexElement","dropDownPage","focusedElement","setTabIndexForFocusLastElement","setPagerFocusForActiveElement","currentActivePage","getActiveElement","changeFocusByShiftTab","changeFocusByTab","navigateToPageByEnterOrSpace","navigateToPageByKey","focusedTabIndexElement","tabindexElements","currentItemPagerFocus","decrementNumber","selectedClass","getClass","classElement","getElementByClass","checkFocusInAdaptiveMode","changeFocusInAdaptiveMode","actionClass","pagingItem","removeTabindexLastElements","tabIndexElements","dropDownPageHolder","currentClass","previousElements","targetChildrens","pagerElements","tabindexElement","addFocusClass","removeFocusClass","setPageSize","newPageNo","oldPageNo","updateQueryString","getPagerTemplate","updatedUrl","getUpdatedURL","calculateActualWidth","actualWidth","isStyleApplied","pagerWidth","hiddenNumItems","hideFrom","bufferWidth","detailItems","totDetailWidth_1","averageDetailWidth","numericItemWidth","numToHide","hideIndex","pagerDetailItemsWidth","detailtoHide","hiddenDetailItems","numToShow","lesserIndexItems","greaterIndexItems","showItems","showItem","prevString","tempQueryString","prevElementId","incrementalSearch","queryStringUpdated","isVirtual","strLength","indexUpdated","inputVal","searchType","itemData","queryStr","itemsData","checkField_1","fieldValue_1","state_1","ListBase","hasChild","collapsible","iconWrapper","anchorWrap","navigable","getFieldValues","dataItem","fieldData","dataField","compileTemplate","defaultMappedFields","isChecked","hasChildren","urlAttributes","imageAttributes","groupBy","defaultAriaAttributes","listRole","itemRole","groupItemRole","itemText","wrapperRole","defaultListBaseOptions","showCheckBox","showIcon","expandCollapse","ariaAttributes","listClass","itemClass","processSubChild","sortOrder","groupTemplate","expandIconClass","expandIconPosition","itemNavigable","createListFromArray","isSingleLevel","componentInstance","generateUL","createListItemFromArray","curOpt","getModuleClass","itemCreating","generateSingleLevelLI","generateLI","itemCreated","createListItemFromJson","checkboxElement","anchorElement","typeofData","curItem","innerEle","tooltipTextElement","imageElemnt","iconElement","createListFromJson","addSorting","getDataSource","typeof","elementAttributes","getAllAttributes","subDS","subLi","innerElements","grpLI","elementID","anchorTag","isFullNavigation","anchorWrapper","uID","compiledString","compiledElement","groupTemplateID","liElement","ulElement","createList","getSiblingLI","isPrevious","siblingLI","liIndex","liCollections","groupDataSource","curFields","cusQuery","itemObj","grpItem","newtext","_id","createJsonFromElement","curEle","jsonAr","childs","attributes_1","renderContentTemplate","liCollection","currentID","renderGroupTemplate","headerItems","headerItems_1","headerData","generateIcon","SkeletonType","ShimmerEffect","TEXTSHAPE","CIRCLESHAPE","SQUARESHAPE","RECTANGLESHAPE","WAVEEFFECT","PULSEEFFECT","FADEEFFECT","VISIBLENONE","Skeleton","updateDimension","updateShape","updateEffect","updateVisibility","shapeCss","shimmerEffect","FieldSettings","dropDownBaseClasses","DropDownBase","preventChange","isPreventChange","isDynamicDataChange","addedNewItem","isAddNewItemTemplate","isRequesting","isVirtualizationEnabled","isCustomDataUpdated","isAllowFiltering","virtualizedItemsCount","totalItemCount","remoteDataCount","isRemoteDataUpdated","isIncrementalRequest","itemCount","virtualListHeight","isVirtualScrolling","isPreventScrollAction","scrollPreStartIndex","isScrollActionTriggered","previousStartIndex","isMouseScrollAction","isKeyBoardAction","isScrollChanged","isUpwardScrolling","isPreventKeyAction","generatedDataObject","skeletonCount","isVirtualTrackHeight","virtualSelectAll","incrementalQueryString","incrementalEndIndex","incrementalStartIndex","incrementalPreQueryString","isObjectCustomValue","appendUncheckList","getInitialData","preventPopupOpen","virtualSelectAllState","CurrentEvent","virtualListInfo","viewPortInfo","selectedValueInfo","getPropObject","newProperty","oldProperty","getValueByText","listData","checkValueCase","isTextByValue","typeOfData","dataSource_1","checkingAccent","checkIgnoreCase","getItemValue","checkNonIgnoreCase","compareValue_1","itemValue","textItem","typedText","getFormattedValue","baseTemplate","checkTemplate","exception","l10nUpdate","noRecordsTemplate","actionFailureTemplate","actionFailureTemplateId","noRecordsTemplateId","tempaltecheck","noDataElement","liElem","Text","componentLocale","getLocaleName","checkAndResetCache","virtualItemStartIndex","virtualItemEndIndex","updateIncrementalInfo","updateVirtualItemIndex","resetList","updateIncrementalView","UpdateSkeleton","getFilteringSkeletonCount","currentSkeletonCount","getSkeletonCount","skeletonUpdated","GetVirtualTrackHeight","virualElement","retainSkeleton","listContainerHeight","actualCount","listItemHeight","virtualItemCount","heightDimension","isSkeletonCountChange","isContainSkeleton","isContainVirtualList","totalSkeletonCount","getTextByValue","allowCustomValue","enableRtlElements","jsonElement","setListData","renderItemsBySelect","updateDataAttribute","invalidAttr","getJSONfromOption","optionGroup","updateFields","scrollTimer","isRequested","isDataFetched","itemTemplateId","displayTemplateId","spinnerTemplateId","valueTemplateId","groupTemplateId","headerTemplateId","footerTemplateId","isActive","isWhereExist_1","emptyDataRequest","isReOrder","queryElements","bindChildItems","setCurrentView","keyboardEvent","handleVirtualKeyboardActions","virtualSelectAllData","virtualSelectionAll","onActionFailure","virtualGroupDataSource","localDataArgs","updateDataList","updatePopupState","updateRemoteData","remainingItems","sortedData","updateListValues","raiseDataBound","isObjectInArray","objectToFind","findListElement","findNode","listArr","dataBoundEventArgs","spliceData","listElements","templateListItem","listOption","fixedHeaderElement","postRender","listElement","disableListItem","focusItem","selectedItem","updateVirtualizationProperties","filtering","isCheckbox","listEle","groupcheck","groupValue","tempHeaders","isGroupChecking","createListItems","getSortedDataSource","fieldValues","setFloatingHeader","setFixedHeader","scrollStop","isDownkey","getValidLi","topIndex","virtualListCount","isCount","updateGroupHeader","getPageCount","returnExactCount","updateGroupFixedHeader","isCheckBoxUpdate","oldUlElement","virtualUlElement","reOrderList","updateListElements","createVirtualContent","incrementalLiCollections","incrementalUlElement","incrementalListData","itemcheck","liWidth","firstLi","textField","getIndexByValue","getIndexByValueFilter","setFields","updateSelectElementData","isFiltering","updateSelection","renderList","setUpdateInitial","setZIndex","isEmptyData","rippleFun","removeScrollEvent","addItem","itemIndex","isListboxEmpty","selectedItemValue","itemCheck","addItemTemplate","updateActionCompleteData","updateAddItemList","listGroupItem","tempLi","isDisabledElement","isDisabledItemByIndex","validationAttribute","hidden","getDataByValue","dropDownListClasses","hover","disable","inputFocus","iconAnimation","device","backIcon","filterBarClearIcon","filterInput","mobileFilter","clearIcon","clearIconHide","popupFullScreen","disableIcon","hiddenElement","virtualList","DropDownList","isListSearched","isTouched","IsScrollerAtEnd","valueTempElement","initializeData","activeIndex","isPopupOpen","isDocumentClick","isFilterFocus","beforePopupOpen","initialRemoteRender","isNotSearchList","isTyped","preventAutoFill","isValidKey","typedString","isEscapeKey","isPreventBlur","isTabKey","actionCompleteData","actionData","prevSelectPoints","isSelectCustom","isDropDownClick","preventAltUp","isSecondClick","keyConfigure","down","up","unWireListEvents","wireListEvents","floatLabelChange","floatElement","inputWrapper","resetHandler","previousEndIndex","resetFocusElement","removeHover","previousItemData","resetSelection","getItemData","allowObjectBinding","allowCustom","onChangeEvent","updateInitialData","selectedLI","cloneElements","setHTMLAttributes","htmlAttr","updatedClassValue","setEnable","defaultAttr","getAriaAttributes","hidePopup","preventTabIndex","getNgDirective","getElementByText","getElementByValue","listItems_1","liItem","initValue","updateValues","isDisableItemValue","objectValue","setHiddenValue","onBlurHandler","isFilterLayout","focusOutAction","focusOut","resetValueHandler","formElement","dropDownClick","bindCommonEvent","mobileKeyActionHandler","bindClearEvent","unBindCommonEvent","onMouseClick","onMouseOver","onMouseLeave","searchKeyEvent","onServerIncrementalSearch","isValidLI","back","closePopup","currentLi","setHover","hoveredItem","updateIncrementalItemIndex","updatingincrementalindex","selectedLiOffsetTop","enableLiCollections","spinnerElement","filterInputObj","preventAction","preventHomeEnd","isNavigation","isEditTextBox","isTabAction","updateUpDownAction","pageUpSelection","pageDownSelection","updateHomeEndAction","focusDropDown","selectCurrentItem","selectCurrentValueOnTab","isVirtualKeyAction","value_1","filterIndex","isSelectFocusItem","virtualIndex","nextItem","value_2","value_3","focusAtFirstElement","value_4","findLi","previousItem","PageUpDownSelection","checkSelector","onDocumentClick","activeStateChange","updateSelectedItem","preventSelect","isSelection","selectEventCallback","setSelectOptions","detachChanges","checkFieldValue","activeItem","valueTemplate","setValueTemplate","clearElement","previousSelectedLI","dropdownCompiler","dropdownTemplate","valuecheck","valueCompTemp","selectedItems","dataText","eve","isCustomValue","datas","foundIndex","detachChangeEvent","preItems","selectedElement","onFilterUp","firstItem","searchLists","onFilterDown","getSelectionPoints","removeFillSelection","selection","filterType","customFilterQuery","takeValue","getTakeValue","alreadySkipAdded","queryTakeValue","querySkipValue","queryElements_1","queryElements_2","queryElements_3","preventDefaultAction","filteringAction","baseEventArgs","isNoData","popupContentElement","focusIndexItem","setSearchBox","popupElement","filterBarPlaceholder","clearIconElement","clearText","searchKeyModule","onInput","updateActionCompleteDataValues","tempItemCount","value_5","checkVal","setInputValue","isValueInList","addNewItem","valueToFind","fieldValue","checkField","newElement","value_6","isExist","actionCompleteDataUpdate","updateSelectionList","findEle","highlightedItem","refreshPopup","popupEle","popupHeight","setHeaderTemplate","listitems","searchBoxHeight","getOffsetValue","isEmptyList","textIndent","borderLeftWidth","createPopup","setSearchBoxPosition","backIconElement","clickOnBackIcon","scrollParentElements_1","selectedElementID","scrollBottom","destroyPopup","popupStyles","borderTop","borderTopWidth","borderBottomWidth","actionList","targetExitViewport","isElementInViewport","popupOffset","lastItem","listHeight","paddingBottom","isInitialSelection","lastElementValue","currentOffset","nextBottom","isScrollerCHanged","paddingTop","boxRange","currentElementValue","liCount","firstElementValue","isPageUpKeyAction","isPopupButton","setEleWidth","isFilterValue","scrollableParentElements_1","dataSourceCount","animModel","fixedHeader","preselectedIndex","updatedCssClassValues","setReadOnly","selectElement","onselect","onchange","listParent","listParentHeight","footercheck","footerCompTemp","headercheck","headerCompTemp","setOldText","setOldValue","checkData","isChangeValue","isChangeText","checkCustomValue","updateInputFields","checkValidLi","setSelectionData","listLength_1","listLength_2","value_7","ddlProps","invokeRenderPopup","proxy_2","onpopstate","renderHightSearch","isSelectVal","disableItem","HTMLLIElement","parsedData","attrArray","pagerDropDownDiv","dropDownDiv","defaultTextDiv","pagerCons","pageSizesModule","pageSizesArray","dropDownListObject","isPageSizeAll","beforeValueChange","pageSizeValue","isbeforeAll","ExternalMessage","externalMessage","isInitialRender","pagerDestroy","gridExtend","dropDownChanged","addAriaAttr","renderReactPagerTemplate","numericContainerNew","numericContainer","numericContainerDiv","isAddAction","isForceCancel","previousPage","appendToElement","complete","updateLayout","inboundChange","FilterCellRenderer","fltrData","filterBarTemplate","clearIconElem","operatorIconRender","templateWrite","operators","fbicon","dropOptr","internalEvent","customOperators","spanElmt","FlMenuOptrUI","customFltrOperators","ddOpen","dropDownOpen","customFilterOperators","destroyDropDownList","renderOperatorUI","dlgConetntEle","dlgObj","optrData","customOptr","dropDatasource","selectedValue","dropSelectedVal","optrDiv","optrInput","valInput","renderResponsiveDropDownList","selValue","selectedField","optrLen","getFlOperator","SPINNER_CLASS","ComboBox","preventBlur","targetFocus","customValue","valueMuteChange","changeData","fields_1","isvalidTextField_1","isValidValue_1","doesItemExist","currentValue_1","setHoverList","inlineSearch","fixedHead","setAutoFill","isHover","currentFillValue","isAndroidAutoFill","setAutoFillSelection","isAndroid","prevEnd","curEnd","prevStart","curStart","isKeyNavigate","previousValue_1","updateCustomValueCallback","emptyObject","comboProps","isEscape","searchItem","highlightSearch","ignoreRegex","findTextNode","revertHighlightSearch","contentElement","TimePickerBase","AutoComplete","searchList","mapping","suggestionCount","filterAction","isNoDataElement","postBackAction","fieldsSettings","itemCreated_1","showPopupButton","checkFields_1_1","_this_2","atcProps","isHighlight","StringFilterUI","serLocator","getAutoCompleteOptions","foreignColumnQuery","autoComplete","localizeText","acFocus","acComplete","acOpen","openPopup","actObj","afterRenderFilterUI","filteredValue","filterOptr","actuiObj","getOptrInstance","mapObj","SPINICON","SPINUP","INCREMENT","DECREMENT","INTREGEXP","NUMERIC_FOCUS","wrapperAttributes","selectionTimeOut","NumericTextBox","isDynamicChange","numericOptions","isPrevFocused","decimalSeparator","intRegExp","isCalled","angularTagName","formEle","localeText","incrementTitle","decrementTitle","isValidState","inputStyle","inputName","cultureInfo","initCultureInfo","initCultureFunc","prevValue","updateHTMLAttrToElement","checkAttributes","inputEleValue","validateMinMax","validateStep","updatePlaceholder","createWrapper","showSpinButton","spinBtnCreation","setElementWidth","changeValue","strictMode","decimals","roundNumber","hiddenInput","elementPrevValue","isDynamic","setNumber","stepValue","updatedCssClassValue","getNumericValidClassList","updateHTMLAttrToWrapper","pro","numericClassName","numericStyle","spinDown","spinUp","wireSpinBtnEvents","formattedValue","operation","isInteract","performAction","raiseChangeEvent","checkErrorClass","setElementValue","keyupEvent","resetFormHandler","setSpinButton","changeHandler","mouseDownOnSpinner","mouseUpOnSpinner","touchMoveOnSpinner","unwireSpinBtnEvents","parsedInput","changeEventArgs","beforeUpdate","preventHandler","iOS","currentPos","prevPos","valArray","ignoreKeyCode","prevVal","nextEle","cursorPosChanged","validateDecimalOnType","numerictextboxObj","parsedValue","localChange","updatedValue","correctRounding","floatExp","floatValue","floatStep","valueCount","stepCount","precision","divide","updateCurrency","propVal","numberOfDecimals","getNumberOfDecimals","modifyText","validateState","elementValue","serverDecimalSeparator","EXPREGEXP","valueString","currentChar","isAlterNumPadDecimalChar","fractionRule","mouseWheel","rawEvent","focusEventArgs","formatValue_1","blurEventArgs","ele_1","focusEvent","getElementData","mouseUpClick","touchEvent","floatLabelTypeUpdate","decrement","getText","updateSpinButton","updateClearButton","propValue","NumberFilterUI","keyEventHandler","numericTxtObj","numberuiObj","BooleanFilterUI","dropInstance","ddComplete","drpuiObj","OTHERMONTH","OTHERDECADE","CONTENTTABLE","YEAR","MONTH","DECADE","OVERLAY","WEEKNUMBER","FOCUSEDDATE","FOCUSEDCELL","OTHERMONTHROW","TODAY","LINK","CELL","ZOOMIN","DAYHEADERLONG","dayMilliSeconds","CalendarBase","isPopupClicked","isDateSelected","isTodayClicked","previousDates","rangeValidation","calendarEleCopy","calendarMode","globalize","firstDayOfWeek","todayDisabled","todayDate","calendarElement","createContent","getDefaultKeyConfig","defaultKeyConfigs","controlUp","controlDown","moveDown","moveUp","moveLeft","moveRight","shiftPageUp","shiftPageDown","controlHome","controlEnd","spacebar","altRightArrow","altLeftArrow","validateDate","checkDateValue","checkValue","currentDate","setOverlayIndex","popupWrapper","modal","minMaxUpdate","tabIndexAttr","headerElement","iconContainer","previousIcon","nextIcon","headerTitleElement","adjustLongHeaderSize","createContentHeader","createContentBody","showTodayButton","createContentFooter","addContentFocus","removeContentFocus","focusedDate","tableBodyElement","selectedDate","getCultureValues","cldrObj","culShortNames","dayFormat","dayHeaderFormat","getCultureObjects","toCapitalize","html","tableHeadElement","weekNumber","shortNames","shiftArray","renderYears","renderDecades","renderMonths","updateFooter","todayElement","l10","today","todayButtonClick","keyConfig","navigateTitle","keyActionHandle","dateWireEvents","serverModuleName","isCustomDate","currentView","getViewNumber","navigateTo","resetCalendar","renderDayCellArgs","multiSelection","depthValue","levelRestrict","keyboardNavigate","selectDate","contentClick","navigateNext","navigatePrevious","addMonths","addYears","isMonthYearRange","addDay","isMinMaxRange","navigatePreviousHandler","navigateNextHandler","navigateHandler","triggerNavigate","minMaxDate","localDate","minDate","maxDate","tdEles","numCells","renderDays","islamicModule","islamicRenderDays","renderTemplate","islamicRenderTemplate","isTodayDate","currentMonth","titleUpdate","setStartDate","weekEle","weekAnchor","numberOfDays","weekRule","finalDate","getWeek","dateFormatOptions","tdEle","dayCell","dayLink","isOutOfRange","renderDayCellEvent","argsDate","otherMnthBool","disabledCls","getDateVal","copyValues","formatOptions_1","updateFocus","otherMonth","tableElement","removeTableHeadElement","valueUtil","curDate","mon","yr","curYrs","minYr","minMonth","maxYr","maxMonth","setMonth","localMonth","localYr","startYr","endYr","startFullYr","endFullYr","startHdrYr","endHdrYr","startYear","rowIterator","lastDate","findLastDay","classNm","trEle","otherMonthCell","iconHandler","islamicIconHandler","setAriaActiveDescendant","clickEventEmitter","getIdValue","islamicPreviousHeader","islamicDate","getIslamicDate","switchView","validateValues","checkView","skipIndex","tempValueString","minFormatOption","minString","maxFormatOption","maxString","setValueUpdate","dayFormatOptions","monthFormatOptions","setActiveDescendant","previousIconHandler","compareMonth","nextIconHandler","compareYear","compareDecade","todayButtonEvent","stringVal","islamicPrevious","islamicNext","gregorianFormat","islamicFormat","tzOffset","tzOffsetDiff","getMaxDays","setDateDecade","setDateYear","checkPresentDate","dates","checkPrevious","navigatedEvent","navigatedArgs","modifier","findNextTD","rangeValue","tmpDate","inValue","Calendar","tempValues","copyDate","setClass","formResetHandler","setTimeZone","newCssClass","oldCssClass","isDayLightSaving","secondOffset","firstOffset","timeZoneDiff","changedArgs","generateTodayVal","triggerChange","previousDate","previousDateTime","tempDays","islamicRenderYears","islamicRenderDecade","storeView","tempDate","addDate","tempDates","removeDate","setTodayDate","changeEvent","POPUPWRAPPER","INPUTFOCUS","ACTIVE","OVERFLOW","NONEDIT","containerAttr","DatePicker","isDateIconClicked","isAltKeyPressed","invalidValueString","checkPreviousValue","maskedDateValue","isIconClicked","isDynamicValueChanged","isBlur","datepickerOptions","updateInput","setAllowEdit","allowEdit","checkInvalidValue","enableMask","updateHtmlAttributeToWrapper","updateInputValue","previousElementValue","inputValueCopy","ariaAttrs","l10nLocale","fullScreenMode","INPUTWRAPPER","isCalendar","disabledDates","minMaxUpdates","dateValue","tempFormat","formatString","dateTimeFormat","errorClass","checkStringValue","returnDate","formatDateTime","valueDate","basicISOString","bindInputEvent","dateIconHandler","inputFocusHandler","inputBlurHandler","keydownHandler","inputChangeHandler","keyboardModules","inputKeyActionHandle","unBindEvents","restoreValue","clearedArgs","popupUpdate","preventEventBubbling","interopAdaptor","invokeMethodAsync","updateHtmlAttributeToElement","calendarKeyActionHandle","focusArguments","openOnFocus","strictModeUpdate","changeTrigger","blurArguments","calendarKeyboardModules","documentHandler","clickedView","defaultAction","targetdate","dateOptions","modifiedValue","toLocaleUpperCase","createCalendar","modelHeader","iconRight","swipe","CalendarSwipeHandler","TouchStartHandler","preventArgs","setAriaAttributes","touchStart","setAriaDisabled","yearHeading","h2","daySpan","monthSpan","modelCloseIcon","modelCloseHandler","modelTodayButton","selectCalendar","prevent_1","outOfRange","mobilePopupWrapper","prevent_2","closeEventCallback","prevent","inputElementCopy","ensureInputAttribute","ngTag","checkHtmlAttributes","nameAttribute","checkFormat","skeletonString","dynamic","valueCopy","previousValCopy","renderDayCell","dateIdString","isDisabledDate","dayOfTheWeek","POPUPDIMENSION","DAY","HOVER","NAVIGATION","LISTCLASS","EDITABLE","createdEl","timeFormat","timeCollections","TimeMaskPlaceholder","TimePicker","disableItemCollection","timeOptions","angularTag","openPopupEventArgs","createInputElement","setTimeAllowEdit","validateInterval","validateDisable","checkErrorState","clientTimeZoneDiff","clearIconState","setMinMax","initMin","initMax","popupCreation","valueIsDisable","resetState","checkTimeFormat","checkInValue","isNavigate","isTextSelected","valueWithMinutes","updatedCssClassesValue","isNullOrEmpty","getCldrDateTimeFormat","cldrFormat","isInvalid","valueExp","valueExpression","setCurrentDate","getCultureTimeObject","enableElement","rippleFn","listTag","propertyList","generateList","listWrapper","addSelection","getPopupHeight","containerStyle","setPopupWidth","modelTitleSpan","timePopupCloseHandler","createDateObj","updatedClassesValue","timeStyle","cssClassNew","cssClassOld","removeErrorClass","disableTimeIcon","selectInputText","setCursorToEnd","getMeridianText","meridian","getCursorSelection","setScrollTo","findScrollTop","initialTime","scrollTime","cldrTimeFormat","cldrDateFormat","getCultureDateObject","dateToNumeric","getExactDateTime","compareFormatChange","updatePlaceHolder","popupHandler","curPos","cursorDetails","focusSelection","isSeparator","objToString","createMask","previousState","documentClickHandler","mobileTimePopupWrap","disposeServerPopup","checkValueChange","valueProcess","dateVal","strictOperation","clearHandler","inputEvent","timeValue","raiseClearedEvent","getTextFormat","strArray","validateValue","newval","findNextElement","textVal","timeVal","selectNextItem","validLiElement","backward","elementIndex","isCheck","getHoverItem","setActiveClass","timeParse","listBaseOptions","getProperty","popupAlignment","timePopupElement","formatValues","HOUR","MINUTE","SECOND","MILLISECOND","DATETIMEPOPUPWRAPPER","POPUP","ICONANIMATION","DateTimePicker","scrollInvoked","dateFormatString","dateTimeOptions","isTimePopupOpen","popupObject","dateTimeWrapper","keyboardHandler","unBindInputEvents","timeIcon","timekeyConfigure","cldrDateTimeFormat","bindInputEvents","validateMinMaxRange","isDateObject","disablePopupButton","isDisable","renderTimeIcon","timeHandler","dateHandler","inputKeyAction","getCldrFormat","isDatePopupOpen","listCreation","TimePopupFormat","endTime","listDetails","wireTimeListEvents","addTimeSelection","setTimeScrollPosition","timeModal","modelWrapper","timeKeyActionHandle","unWireTimeListEvents","dateTimeCloseHandler","setDimension","setTimeHover","removeTimeHover","getFullDateTime","combineDateTime","seconds","setTimeActiveClass","setTimeActiveDescendant","removeTimeSelection","getTimeHoverItem","calculateStartEnd","hours","tempStartValue","tempMin","formatCount","formattext","tempEndValue","tempMax","getUTCFullYear","dateTimeCloseEventCallback","maskedDateModule","getTimeActiveElement","millisecond","findNextTimeElement","dateTimeVal","listCount","timeElementValue","setTimeValue","timeKeyHandler","nextItemValue","DateFilterUI","dpOpen","fltrSettings","inputElem","datePickerObj","FilterMenuRenderer","fltrObj","isDialogOpen","isMenuCheck","colTypes","flMuiObj","menuFilterBase","clearBtnClick","filterBtnClick","renderDlgContent","mainDiv","dlgDiv","currentDialogCreatedColumn","renderFilterUI","writeMethod","renderFlValueUI","menuOperator","valueDiv","instanceofFilterUI","dlgContentEle","flValue","targ","flOptrValue","fltrValue","eControl","renderCheckBoxMenu","CheckBoxFilter","isresetFocus","actionPrevent","RIPPLE","ATTRIBUTES","RadioButton","RadioButton_1","radioGrp","getRadioGroup","angularValue","radioWrap","getLabel","getSelectedValue","getWrapper","initialCheckedValue","initWrapper","updateHtmlAttribute","setDisabled","labelMouseDownHandler","labelMouseLeaveHandler","labelMouseUpHandler","formControlName","textLabel","rippleLabel","CHECK","FRAME","INDETERMINATE","RIPPLECHECK","RIPPLEINDETERMINATE","CheckBox","isMouseClick","clickTriggered","validCheck","changeState","isInitialize","updateVueArrayModel","setHiddenInput","rippleElem","labelWrap","formElem","CLS_RTL","CLS_DISABLE","CLS_NAVARROW","CLS_NAVRIGHTARROW","CLS_NAVLEFTARROW","CLS_HSCROLLNAV","CLS_HSCROLLNAVRIGHT","CLS_HSCROLLNAVLEFT","CLS_DEVICE","CLS_OVERLAY","CLS_RIGHTOVERLAY","CLS_LEFTOVERLAY","HScroll","browser","browserCheck","customStep","ieCheck","uniqueId","touchHandler","swipeHandler","scrollEle","createOverlay","createNavIcon","setScrollState","scrollStep","scrollDiv","innerEle_1","scrollItems","nav","overlay","navEles","rightOverlayEle","clsRight","rightEle","navItem","leftEle","eventBinding","rightAttributes","clsLeft","leftAttributes","navEle","navLeftItem","keyTimer","keyTimeout","eleScrolling","onKeyUp","tabHoldHandler","repeatScroll","clickEventHandler","trgt","scrollDis","isContinuous","rootEle","frameScrollRequest","swipeEle","scrollUpdating","scrollVal","scrollValue","arrowDisabling","addDisable","removeDisable","arrowIcon","navLeftEle","navRightEle","leftOverlay","rightOverlay","disEle","CLS_NAVUPARROW","CLS_NAVDOWNARROW","CLS_VSCROLLNAV","CLS_VSCROLLNAVUP","CLS_VSCROLLNAVDOWN","CLS_UPOVERLAY","CLS_DOWNOVERLAY","VScroll","scrollEventHandler","createOverlayElement","wheelEventHandler","scrollCnt","buildTag","scrollBar","navs","overlays","downOverlayEle","clsDown","downEle","upEle","clsUp","navElement","navUpItem","ev","swipeElement","addDisableCls","removeDisableCls","navUpEle","navDownEle","upOverlay","downOverlay","addScrolling","scrollType","containerOffset","contentOffset","parentElem","createScrollbar","destroyScroll","scrollObj","skipEle","menu","ErrorOption","ENTER","ESCAPE","FOCUSED","HEADER","SEPARATOR","UPARROW","DOWNARROW","LEFTARROW","RIGHTARROW","HOME","END","TAB","CARET","ITEM","HIDE","ICONS","MenuItem","MenuAnimationSettings","MenuBase","navIdx","isTapHold","tempItem","showSubMenuOn","isMenu","ejInst","clonedElement","refEle","enableScrolling","hamburgerMode","createHeaderContainer","defaultOption","showItemOnClick","removeChildElement","createItems","setBlankIconStyle","targetElems","menuHeaderClickHandler","cmenuHandler","delegateMoverHandler","moverHandler","delegateMouseDownHandler","delegateClickHandler","keyBoardHandler","closeMenu","actionName","actionNeeded","removeLIStateByClass","upDownKeyHandler","rightEnterKeyHandler","leftEscKeyHandler","cul","getUlByNavIdx","defaultIdx","fliIdx","fli","getLIByClass","getIdx","cli","navIdxLen","popups_1","keyType","openMenu","aEle","sli","isCMenu","canOpen","ulIndex","isIterated","isMenuVisible","item_1","items_1","wrapper_1","popups","getPopups","ul_1","liElem_1","getLI","parentItem","observedCloseArgs","trgtliId","closedLi","trgtLi","popupId","unWireKeyboardEvent","isContextMenuClosed","toggleAnimation","showSubMenu","updateReactTemplate","trgtpopUp","submenus","afterCloseMenu","isMenusClosed","isCmenuHover","sli_1","cliIdx","item_2","removeStateWrapper","getMenuItemModel","getFields","separator","lItem","elemId","uList","hdata","hli","isNestedOrVertical","generatePopup","calculateIndentSize","hoverDelay","triggerBeforeOpen","targetEvent","copyObject","liStyle","liIndent","blankIconElem","menuIconElem","menuIconElemStyle","blankIconIndent","triggerOpen","spanElem","tempTitle","spanTitle","spanIcon","openHamburgerMenu","closeHamburgerMenu","observedHamburgerCloseArgs","menuType","observedOpenArgs","checkScrollOffset","collide","offWidth","blankIconList","iconLi","cssProp","iconCssProps","offsetEle","offsetRight","px","toggleVisiblity","newTop","xCollision","hasField","liTrgt","hdrWrapper","isDifferentElem","menuWrapper","cliWrapper","isInstLI","cliWrapperId","setLISelected","culIdx","classname","getItemIndex","isUniqueId","isText","newItem","setItems","newItems","skipHdr","updateItemsByNavIdx","updateItem","ul_2","ul_3","getChangedItemIndex","insertAfter","ul1","popStr","uls","targetSelctor","isMenuOpen","pUlHeight","pElement","nIndex","isCallBack","skipItem","showHideItems","hideItems","ishide","validUl","removeItems","iitems","insertItems","isAfter","itemId","parentId","ContextMenu","ExcelFilterBase","childRefs","focusedMenuItem","getCMenuDS","dateonly","unwireExEvents","menuObj","destroyCMenu","removeDialog","createMenu","isCheckIcon","eleOptions","hdrele","colIsSort","isAsc","isDesc","ascName","descName","createMenuElem","ensureTextFilter","iconName","isSubMenu","wireExEvents","hoverHandler","clickExHandler","keyUp","menuItem","focusNextOrPrevElement","focusClassName","focusClass","excelSetFocus","cmenu","isCMenuOpen","contextKeyDownHandler","focused","submenu","selectedMenu","menuOptions","selectHandler","onClose","beforeClose","preventClose","client","contextRect","getContextBounds","getCMenuYPosition","isFilterBack","contextWidth","targetBorder","filterLength","renderDialogue","overlayClick","dropDownList","templateField_1","createdDialog","rowResponsiveDlg","removeObjects","renderCustomFilter","dialog","dlgFields","fieldSet","checkBoxValue","colValue","fOperator","sValue","sOperator","firstOperator","firstValue","secondOperator","secondValue","fieldElement","xlfloptr","menuText","dropDownValueChange","removeHandlersFromComponent","getSelectedText","renderRadioButton","radioDiv","frstpredicate","secndpredicate","renderMatchCase","andRadio","orRadio","isFilteredCol","fltrPredicates","columnObj","getExcelFilterData","valueInput","renderAutoComplete","renderNumericTextBox","renderDate","renderDateTime","predIndex","matchCaseDiv","matchCaseInput","datePicker","dateTimePicker","completeAction","distinctStringValues","numericTextBox","colObj","acActionComplete","columnvalue","ExcelFilter","contentRefresh","filterByMethod","cellText","nextFlMenuOpen","fltrDlgDetails","skipNumberInput","skipStringInput","getLocalizedCustomOperators","fltrElem","rowdrag","updateFilterMsg","dropdownlist","destroyFn","filterBarElement","getFilteredColsIndexByField","arrayVal","currentFilterObject","currentFilteringColumn","keyUpHandlerImmediate","refreshFilterValue","refreshFilterValueFn","docClickHandler","refreshClearIcon","columnMenuFilter","filterIconClickHandler","targetText","previousElementSibling","getOperatorName","checkForSkipInput","filterStatusMsg","applyColumnFormat","predObj","fColumn","checkAlreadyColFiltered","getFlvalue","setFormatForFlColumn","skipUid","actualData","checkboxFilterObject","col_1","filterIconElement","updateFilterIcon","refreshFilterSettings","updateFilter","getFilterBarElement","fltrIconElement","colUid","filteredcols","fltrElement","checkDateColumnValue","colDate","filterDate","filterDialogOpen","filterHandler","localizedStrings","fCell","filteredColsUid","currentPred","currentFilterColumn","closeHeaderEle","dropDownListInput","processFilter","openMenuByField","updateCrossIcon","getFormatFlValue","showFilterBarStatus","isSkip","startTimer","onTimerTick","immediateModeDelay","templateRead","validateFilterValue","skipInput","getOperator","singleOp","multipleOp","numOptr","stringOperator","numberOperator","dateOperator","datetimeOperator","dateonlyOperator","booleanOperator","filterOperatorElement","inputId","datepickerEle","hasDialog","hasDialogClosed","refreshFilterIcon","addFilteredClass","renderCheckboxOnFilterMenu","isModelChanged","aria","sortedColumn","getSortedColsIndexByField","sCol","getSortColumnFromField","lastSortedCol","backupSettings","removeSortIcons","updateSortedCols","lastSortedCols","lastCols","restoreSettings","refreshSortSettings","addSortIcons","refreshSortIcons","initiateSort","showPopUp","enableSortMultiTouch","allowUnsort","updateAriaAttr","ColumnChooser","filterColumns","showColumn","hideColumn","changedColumns","unchangedColumns","isDlgOpen","isColumnChooserOpen","initialOpenDlg","stateChangeColumns","isInitialOpen","isCustomizeOpenCC","searchOperator","prevShowedCols","hideDialogFunction","hideDialog","rtlUpdate","enableAfterRenderEle","onResetColumns","clearActions","refreshCheckboxState","columnChooserSearch","removeCancelIcon","refreshCheckboxButton","targetdlg","hideOpenedDialog","addcancelIcon","beforeOpenColumnChooserEvent","mOpenDlg","renderChooserList","updateIntermediateBtn","customDialogOpen","customDialogClose","searchElement","columnChooserManualSearch","isAdaptive","confirmDlgBtnClick","responsiveCnt","searchDiv","ccsearchele","ccsearchicon","conDiv","searchBoxObj","innerDivContent","refreshCheckboxList","searchBoxDiv","changedColumnState","uncheckedLength","columnStateChange","searchValue","currentCol","stateColumns","checkstatecolumn","coluid","searchVal","clearSearch","buttonEle","selectedCbox","columnChooserSettings","nMatchele","checkBoxClickHandler","checkstate","updateSelectAll","cBoxInput","visibleCols","columnUID","srchShowCols","searchData","itemsLen","hideCols","gdCol","cclist","renderCheckbox","gridObject","currentCheckBoxColls","itemLen","uncheck","cbox","cboxLabel","inputcbox","hideColState","showColState","cccheckboxlist","openCC","dlgEle","dlgLen","InlineEditRender","addNew","getEditElement","checkLastRow","tdElement","isCustomFormValidation","td_1","editTemplateID","BatchEditRender","columnObject","newTd","DialogEditRender","setLocaleObj","createDialogHeader","responsiveDlgRenderer","getDialogEditTemplateElement","dialogClose","dialogEditTemplates","dialogTemp","tempDiv","checkColumnIsGrouped","dataCell","EditRender","getEditElements","convertWidget","cellValue","tArgs","isInput","EditCellBase","removeEventHandler","BooleanEditCell","activeClasses","selectChkBox","editRow","cbChange","checkBoxChange","DropDownEditCell","isInline","dropDownClose","editCellDialogClose","ddCreated","dropdownCreated","ddBeforeOpen","dropdownBeforeOpen","ddActionComplete","dlgElement","NumericEditCell","TextBox","isHiddenInput","inputPreviousValue","textboxOptions","textboxWrapper","respectiveElement","textarea","autocomplete","apiAttributes","attrs_1","autoCompleteTxt","setInitialValue","resetForm","animationHandler","resetValue","textboxObj","interaction","resetInputHandler","DefaultEditCell","NormalEdit","currentVirtualData","allowEditOnDblClick","editComplete","editRowIndex","getEditArgs","editedData","primaryKeys","primaryKeyValues","rObj","inlineEditHandler","prevData","argsCreator","begineditargs","editargs","disabledShowAddRow","addRow","inputs","applyFormValidation","edFail","validationArgs","editIdx","addIdx","addedRowIndex","isDlg","dlgWrapper","dlgForm","getCurrentEditedData","eleLength","endEditArgs","destroyElements","destroyWidgets","editHandler","edSucc","editSuccess","editFailure","updateCurrentViewData","requestSuccess","stopEditStatus","dragRow","dragRowUid","dragRowObject_1","groupedColumn","comparer1","comparer2","dropRowObject","aggregateModule","groupedRowReorder","getGroupAggregateTemplates","closeForm","cloneRow","originalRow","cloneFrozen","frozen","needRefresh","leftrightCells","closeEditArgs","inlineAddHandler","addArgs","dataLen","tmpRecord","contained","addElements","editElements","InlineEdit","BatchEdit","cellDetails","originalCell","cloneCell","editNext","preventSaveCell","validationColObj","prevEditedBatchCell","onBeforeCellFocused","batchCancelFunction","mouseDownElement","setCellIdx","isAddRow","validateFormObj","prevEditedBatchCellMatrix","crtRowIndex","editCellFromIndex","isAdded","isInsert","removeBatchElementChanges","refreshRowIdx","isInstertedRemoved","bulkDelete","bulkAddRow","batchSave","removeSelectedData","beforeBatchSaveArgs","removeRowObjectFromUID","rowClone","deleteRowUid","beforeBatchDeleteArgs","uniqueid","dataObjects","visibleColumns","getDefaultData","beforeBatchAddArgs","btmIdx","getBottomIndex","findNextEditableCell","isValOnly","validation","dValues","editCellExtend","getDataByIndex","getCellIdx","cellEditArgs","isColored","newReactTd_1","newReactTd","setChanges","rowcell","insertedRows","isSingleInsert","escapeCellEdit","generateCellArgs","cloneEditedData","isForceSave","cellSaveArgs","isEscapeCellEdit","editedBatchCellMatrix","editedBatchCell","addCancelWhilePaging","EMAIL","DATE_ISO","DIGITS","PHONE","CREDITCARD","FormValidator","validated","errorRules","allowSubmit","infoElement","selectQuery","localyMessage","defaultMessages","dateIso","creditcard","rangeLength","localeFunc","afterLocalization","createHTML5Rules","FormValidator_1","addRules","removeRules","validateRules","rules_1","clearForm","getInputElement","validClass","elements_2","getErrorElement","defRules","acceptedTypes","allRule","defRules_1","defRule","annotationRule","ruleCon","ruleName","rulesList","ruleFirstName","ruleSecondName","minvalue","maxvalue","customMessage","annotationMessage","getErrorMessage","isCheckable","submitHandler","hiddenType","validateHiddenType","vhPos","hPos","rules_2","errorMessage","errorRule","removeErrorRules","createErrorElement","optionalValidationStatus","refer","currentRule","checkValidator","ruleValue","errorOption","Message","errorContainer","customPlacement","checkRequired","inputType","uNum","ARROWLEFT","ARROWDOWN","SHIFTTAB","MaskedDateTime","mask","defaultConstant","hiddenMask","validCharacters","isDayPart","isMonthPart","isYearPart","isHourPart","isMinutePart","isSecondsPart","isMilliSecondsPart","monthCharacter","periodCharacter","isHiddenMask","isComplete","navigated","isDeletion","isShortYear","isDeleteKey","isDateZero","isMonthZero","isYearZero","isLeadingZero","dayTypeCount","monthTypeCount","hourTypeCount","minuteTypeCount","secondTypeCount","dateformat","getCulturedFormat","maskDateValue","validCharacterCheck","maskInputHandler","maskKeydownHandler","maskPlaceholder","getCUltureMaskFormat","formatCheck","previousHiddenMask","setDynamicValue","objectString","validChar","navigateSelection","formatText","dateAlteration","isPersist","differenceCheck","previousVal","newVal","newDateValue","handleDeletion","monthString","getCulturedValue","monthValue","monthValue_1","previousMaxDate","currentMaxDate","yearValue","periodString","periodkeys","daysAbbreviated","dayKeyAbbreviated","daysWide","dayKeyWide","daysNarrow","dayKeyNarrow","monthAbbreviated","monthWide","zeroCheck","roundOff","hiddenChar","isbackward","formatIndex","valueText","isZero","resultValue","isSegment","isDecrement","incrementValue","newMonth","DatePickerEditCell","dateanddatetimerender","datePickerEditCell","datePickerClose","PdfBorderOverlapStyle","TemplateEditCell","updateEditObj","createAlertDlg","createConfirmDlg","updateColTypeObj","editCellType","alertDObj","lastTr","refreshToolbar","destroyToolTip","showDeleteConfirmDialog","endEditing","form1","form2","mFormObj","form3","frFormObj","getCurrentEditCellData","getValueFromType","dlgWidget","dlgOk","dlgCancel","alertClick","btnOptions","executeAction","destroyEditComponents","eventDetails","isRestrict","isDestroyVirtualForm","parentIns","instanceElement","formObjects","virtualFormObj","curretRowFocus","focusableEditCells","commandColCell","firstCellIndex","rowMatrix","preventObj","newRule","createFormObj","validationComplete","valErrorPlacement","getElemTable","isFrozenHdr","resetElemPosition","tdRight","elemRight","customForm","isFHdr","validationForBottomRowPos","gcontent","isFHdrLastRow","isBatchModeLastRow","viewPortRowCount","fHearderRows","insertRow","inputClient","arrow","gHeight","rowsHeight","AddEditors","editors","CLS_VERTICAL","CLS_ITEMS","CLS_ITEM","CLS_SEPARATOR","CLS_POPUPICON","CLS_POPUPDOWN","CLS_POPUPOPEN","CLS_TEMPLATE","CLS_POPUPTEXT","CLS_TBARTEXT","CLS_TBAROVERFLOW","CLS_POPOVERFLOW","CLS_TBARNAV","CLS_TBARSCRLNAV","CLS_TBARCENTER","CLS_TBARPOS","CLS_HSCROLLBAR","CLS_POPUPCLASS","CLS_POPUP","CLS_TBARNAVACT","CLS_TBARIGNORE","CLS_POPPRI","CLS_HIDDEN","CLS_MULTIROW","CLS_MULTIROWPOS","CLS_MULTIROW_SEPARATOR","CLS_EXTENDABLE_SEPARATOR","CLS_EXTEANDABLE_TOOLBAR","CLS_EXTENDABLECLASS","CLS_EXTENDEDPOPOPEN","Toolbar","resizeContext","orientationChangeContext","orientationChange","popupOpen","popupClose","btnItems","destroyItems","trgtEle","ctrlTem","popObj","tbarAlign","tbarItemsCol","attrb","enableCollision","isExtendedOpen","popupPriCount","keyModule","docKeyDown","updateTabIndex","dataTabIndex","unwireKeyboardEvent","popCheck","overflowMode","clickEvent","scrollEvent","clearProperty","tbarEle","tbarAlgEle","lefts","centers","rights","docEvent","popEle","tbarItems","destroyMode","popupRefresh","elementFocus","fChild","activeEleSwitch","clstElement","tbrNavChk","keyHandling","clst","navChk","scrollChk","popAnimate","eleFocus","popupCheck","extendedPopup","focusFirstVisibleEle","focusLastVisibleEle","popFrstEle","activeEleRemove","tbarScrollChk","eleContains","sib","tbrItems","isPopupElement","popupNav","popupClickHandler","clickedArgs","getToolbarPopupWidth","getElementOffsetY","eleStyles","borderRightWidth","renderControl","renderLayout","renderOverflowMode","itemPositioning","checkPopupRefresh","itemsAlign","itemEleDom","innerItem","innerPos","renderSubComponent","tbarItemAlign","showAlwaysInPopup","changeOrientation","initScroll","innerItems","checkOverflow","itemWidthCal","getScrollCntEle","eleWidth","popNav","scrollNav","navEleWidth","toolbarAlign","priorityCheck","offsetWid","removePositioning","setOverflowAttributes","createPopupEle","eleItem","multiVar","extendVar","eleInlineItem","innerNav","createPopupIcon","innerNavDom","checkPriority","pushingPoppedEle","tbarObj","popupPri","eleHeight","sepHeight","poppedEle","nodeIndex","nodePri","tbResize","tbarElement","sepItem","extendEle","popupInit","tbarPopupHandler","toolEle","popupElePos","popIcon","overflowHeight","tbEleData","inEle","pre","popPriority","eleWid","sepCheck","itemPopCount","checkClass","rVal","mrgn","compuStyle","fstEleCheck","tbarEleMrgn","eleWid_1","sepEle","popedEle","tbarPriRef","sepPri","des","elWid","wid","ignoreCount","priEleCnt","eleSep","ignoreCheck","eleSepWidth","prevSep","isVer","dimension","popupEleWidth","popupEleRefresh","ignoreEleFetch","ignoreEle","ignoreInx","tbarWidth","tbarItemsWid","elWidth","btnText","eleSplice","inlineStyles","sepBeforePri_1","refreshPositioning","tbarWid","popWid","itemEle","alignDiv","alignEle","leftAlign_1","ctrlTemplate","setAttr","getElementByIndex","addItems","extendedOpen","itemsDiv","itemsRerender","itemAgn","algIndex","removeItemByIndex","eleIdx","indexAgn","clearToolbarTemplate","btnItem","templateRender","templateProp","isComponent","itemType","regEx","getDataTabindex","buttonRendering","dom","iconPos","textStr","btnTxt","prefixIcon","suffixIcon","tempDom","itemClick","showTextOn","sTxt","previousEle","tabindexValue","multirowele","updateHideEleTabIndex","eleIndex","templateEle","closestItem","tEle","changedProb","popupPriCheck","booleanCheck","itemCol","hideItem","predefinedItems","isSearched","isRightToolbarMenu","gridID","excludingItems","preItems_1","itemStr","localeName","isResponsiveToolbarMenuItems","responsiveToolbarItems","responsiveFilter","responsiveSort","responsiveBack","createToolbar","responsiveToolbarMenu","renderResponsiveToolbarpopup","addReactToolbarPortals","bindSearchEvents","refreshToolbarItems","updateSearchBox","toolbarCreated","isNormal","tool","clicked","toolbarClickHandler","viewStr","ID","renderResponsiveSearch","refreshResponsiveToolbarItems","isSearch","toolbarChildren","disableItems","hasData","getItemObject","toolbarItems_1","itemObject","itemName","gID","openResponsiveToolbarMenuPopup","newArgs","toolbarargs","tarElement","toolbarMenuElement","getMenuItems","toolbarItems_2","getLocaleText","ResponsiveToolbarMenuItemClick","setFocusToolbarItem","getFocusToolbarElements","getFocusToolbarItems","keyPressedHandler","targetParent","reRenderToolbar","removeResponsiveSearch","rowSelectedFunction","rowDeSelectedFunction","PdfBorders","defaultBorderPenLeft","dashStyle","defaultBorderPenRight","defaultBorderPenTop","defaultBorderPenBottom","leftPen","rightPen","topPen","bottomPen","PdfPaddings","hasLeftPad","hasRightPad","hasTopPad","hasBottomPad","leftPad","rightPad","bottomPad","topPad","PdfHorizontalOverflowType","PdfGridStyleBase","gridBackgroundBrush","gridTextBrush","gridTextPen","gridFont","gridBackgroundImage","PdfGridStyle","_isDefaultPadding","gridBorderOverlapStyle","Overlap","bAllowHorizontalOverflow","gridHorizontalOverflowType","gridCellSpacing","gridCellPadding","PdfGridCellStyle","gridCellBorders","PdfGridRowStyle","gridRowBackgroundBrush","setBackgroundBrush","getCell","backgroundBrush","gridRowTextBrush","setTextBrush","textBrush","gridRowTextPen","setTextPen","textPen","gridRowFont","gridRowBorder","setBorder","borders","setParent","gridRowBackgroundImage","setBackgroundImage","ElementLayouter","layoutElement","layoutInternal","Layouter","getPaginateBounds","usePaginateBounds","paginateBounds","PdfLayoutFormat","baseFormat","break","boundsSet","layoutType","layoutPaginateBounds","PdfLayoutParams","layoutFormat","PdfLayoutResult","PdfLayoutElement","beginPageLayout","endPageLayout","onBeginPageLayout","onEndPageLayout","bEmbedFonts","newBound","TextLayouter","currentBounds","pageResult","TextPageLayoutResult","remainder","layoutOnPage","getLayoutResult","PdfTextLayoutResult","lastLineBounds","checkCorrectBounds","stringResult","textFinished","FitElement","PdfTextWebLink","getTextPageBounds","verticalShift","remainderText","lastLineTextBounds","PdfTextElement","hasPointOverload","isPdfTextElement","drawText","stringLayoutResult","previousPosition","calculateResultBounds","startPosition","PdfAnnotation","pdfDictionary","internalColor","darkness","nativeRectangle","initialHeight","tempLoacation","PdfLinkAnnotation","PdfActionLinkAnnotation","pdfAction","getSetAction","PdfAction","PdfUriAction","uniformResourceIdentifier","PdfUriAnnotation","pdfUriAction","uriAction","uniformResourceLocator","uriAnnotation","recalculateBounds","defaultBorder","previousFontStyle","drawMultipleLineWithPoint","drawMultipleLineWithBounds","PdfGridCell","cellWidth","cellHeight","tempval","fontSpilt","finsh","rowSpanRemainingHeight","hasRowSpan","hasColSpan","isFinish","internalIsCellMergeContinue","internalIsRowMergeContinue","internalIsCellMergeStart","internalIsRowMergeStart","remaining","PdfGrid","isSingleGrid","ParentCell","getRow","colCount","rowSpanExists","hasRowSpanSpan","cellStyle","measureHeight","columnSpanExists","measureWidth","layouter","getTextFont","webLink","cellPadding","cellSpacing","drawCellBackground","getBackgroundBrush","getBackgroundImage","adjustContentLayoutArea","returnBounds","cancelSubsequentSpans","allowHorizontalOverflow","rowOverflowIndex","adjustOuterLayoutArea","getTextPen","getTextBrush","strFormat","getStringFormat","innerLayoutArea","allowRowBreakAcrossPages","_rowHeight","splitChildRowIndex","rowFontSplit","repeatFlag","layoutRect","PdfGridLayouter","PdfGridLayoutFormat","LayoutFormat","Paginate","setSpan","checkSpan","childGridResult","rowBreakHeightValue","rowBreakHeight","NestedGridLayoutResult","imageBounds","drawCellBorders","borderOverlapStyle","Inside","Square","currentColIndex","columnSpan","isCellMergeContinue","compWidth","getColumn","currentRowIndex","rowCollection","getHeader","rowMergeComplete","internalWidth","tempWidth","PdfGridCellCollection","tempcell","PdfGridColumn","isCustomWidth","PdfGridColumnCollection","internalColumns","measureColumnsWidth","initialWidth","isPageWidth","getDefaultWidths","subFactor","PdfGridRow","gridRowOverflowIndex","isrowFinish","isRowSpanRowHeightSet","noOfPageCount","isRowHeightSet","isPageBreakRowSpanApplied","isRowMergeComplete","isHeaderRow","pdfGrid","bRowSpanExists","gridCells","rowStyle","gridRowBreakHeight","gridResult","bColumnSpanExists","cellIn","rowin","rowWid","PdfGridRowCollection","temprow","PdfGridHeaderCollection","gridSize","isGridSplit","isRearranged","pageBounds","listOfNavigatePages","parentCellIndex","breakRow","hasColumnSpan","beginCellDraw","endCellDraw","bRepeatHeader","gridRows","gridHeaders","gridInitialWidth","gridStyle","ispageWidth","ischildGrid","onBeginCellDraw","raiseBeginCellDraw","onEndCellDraw","raiseEndCellDraw","hasChanged","gridLocation","maxSpan","isRowMergeContinue","isCellMergeStart","isRowMergeStart","maximumRowSpan","cellcolSpan","cellrowSpan","cellmaxSpan","childGridColumnWidth","colCount_1","colCount_2","RowCount","ColCount","childGridColWidth","childheight","columnRanges","slr","isPaginate","gridLayoutFormat","currentPageBounds","currentGraphics","FitColumnsToPage","hType","horizontalOverflowType","determineColumnDrawRanges","startColumn","endColumn","cellWidths","availableWidth","subWidths","layoutedPages","startPage","cellBounds","cellStartIndex","cellEndIndex","returnObject","raiseBeforePageLayout","drawHeader","headerResult","drawRow","repeatRowIndex","OnePage","getNextPageformat","repeatRow","rowResult","tempResult","raisePageLayouted","isRowBreaksNextPage","i_2","repeatHeader","j_1","headerRepeat","j_2","tempResult1","i_3","checkIsFisished","i_4","i_5","recalHeight","ReCalculateHeight","pageGraphics","totalwidth","i_6","bottomPadding","isPdfGrid","maximumCellBoundsWidth","largeNavigatePage","rowLayoutBoundsWidth","reArrangePages","FinishedDrawingCell","pageindex","CheckIfDefaultFormat","defaultFormat","measureTrailingSpaces","noClip","RaiseBeforeCellDraw","PdfGridBeginCellDrawEventArgs","raiseAfterCellDraw","cellstyle","PdfGridEndCellDrawEventArgs","count_1","PdfGridLayoutResult","newHeight","raiseBeginPageLayout","PdfGridBeginPageLayoutEventArgs","PdfGridEndPageLayoutEventArgs","raiseEndPageLayout","RowLayoutResult","rowHeightWithSpan","currRowIndex","FitPage","drawRowWithBreak","repeatRowNumber","isFit","isFitToCell","location_4","cancelSpans","calculateHeight","gridHeight","gridColumnWidth","cellstyle1","rowBreakPageHeightCellIndex","GridCellEventArgs","gridRowIndex","gridCellIndex","gridBounds","bSkip","PdfCancelEventArgs","BeginPageLayoutEventArgs","EndPageLayoutEventArgs","nextPdfPage","startRow","layoutedBounds","bIsFinished","PdfPageTemplateElement","InitiateBounds","dockStyle","resetAlignment","alignmentStyle","setAlignment","isForeground","pdfTemplate","templateType","updateDocking","dock","canBeSet","TopLeft","MiddleLeft","BottomLeft","TopCenter","TopRight","MiddleRight","BottomRight","BottomCenter","MiddleCenter","getAlignmentBounds","getDockBounds","getSimpleAlignmentBounds","getTemplateAlignmentBounds","actualBounds","convertSign","getSimpleDockBounds","getTemplateDockBounds","PdfNumbersConvertor","intArabic","numberStyle","Numeric","LowerLatin","arabicToLetter","LowerRoman","arabicToRoman","UpperLatin","UpperRoman","retval","retvalM","generateNumber","retvalCM","retvalD","retvalCD","retvalC","retvalXC","retvalL","retvalXL","retvalX","retvalIX","retvalV","retvalIV","retvalI","arabic","convertToLetter","appendChar","magnitude","numberstring","letterLimit","acsiiStartIndex","PdfTemplateValuePair","PdfMultipleValueField","drawLocation","PdfPageNumberField","internalNumberStyle","internalGetValue","PdfCompositeField","internalText","automaticField","PdfSingleValueField","painterGraphics","PdfPageCountField","PdfTrueTypeFont","createFontInternal","getUnicodeLineWidth","codeWidth","calculateStyle","iStyle","equalFont","isEmbed","isUnicodeFont","glyphIndices","resultGlyph","ExportHelper","hideColumnInclude","getGridRowModel","processColumns","childGridLevel","getColumnData","columnPromise","fColumns","getHeaders","isHideColumnInclude","processHeaderCells","generateActualColumns","getConvertedWidth","actualColumns","getCellCount","appendGridCells","isIgnoreFirstCell","checkAndExport","gridPool","globalResolve","childGridObj","createChildGrid","exportType","getGridModel","parentPrimaryKeys","parentKeyField","parentRowData","exportId","getGridExportColumns","actualGridColumns","ExportValueFormatter","internationalization","returnFormattedValue","formatCellValue","customDataSource","isGrouping","headerOnPages","drawPosition","xPosition","yPosition","exportValueFormatter","isExporting","pdfPageSettings","exportWithData","returnType","processExport","blobPromise","gridInstance","hierarchyExportMode","headerPageNumbers","gridDrawPosition","allPromise_1","query_1","multipleExport","processSectionExportProperties","processGridExport","blankSpace","getPageSize","gridTheme","processExportProperties","headerThemeStyle","getHeaderThemeStyle","headerFont","headerBrush","processGridHeaders","setColumnProperties","captionThemeStyle","getSummaryCaptionThemeStyle","processGroupedRecords","processRecord","summaryModel","sRows","prepareSummaryInfo","processAggregates","getFontFamily","fontColor","penBrushColor","hexToRgb","borderCaption","getBorderStyle","getGridPdfFont","isTrueType","headerStyle","fontFamily_1","captionFont","captionSize","captionStyle","fontFamily_2","recordFont","recordSize","recordStyle","fontFamily_3","groupIndex","dataSourceItems","cArgs","captionText","processCellStyle","captionSummaryModel","eCols","rowNumber","applyTextAndSpan","pdfCell","getHorizontalAlignment","getVerticalAlignment","gridCell","evtArgs","setCellBorder","setCellFont","setHeaderBrush","hyperLink","setHyperLink","recuHeader","spanCnt","isRoot","cidx","newSpanCnt","fromBottom","drawPageTemplate","includeHiddenColumn","fromTop","headerTemplate_1","processContentValidation","drawPageNumber","getBrushFromContent","textPenColor","penColor","setContentFormat","documentHeader","textBrushColor","brushColor","compositeField","getPageNumberStyle","pageNumberType","getPenFromContent","penSize","getDashStyle","isCaption","isGroupedFooter","isAggregate","sRows_1","leastCaptionSummaryIndex","aggIdx","getSummaryWithoutTemplate","Sum","Average","Max","Min","TrueCount","FalseCount","setRecordThemeStyle","borderRecord","cellLength","gridRow_1","startIndexVal","childGridCell","processDetailTemplate","templateData","columnHeader","border_1","headerFont_1","headerBrush_1","processRow","backColor","pdfTextAlignment","pdfVerticalAlignment","pdfTextPenColor","bold","italic","strikeThrough","pdfBorder","pdfParagraphIndent","pdfCellPadding","textLink","displayText","verticalAlign","hAlign","vAlign","bigint","Worksheets","Worksheet","isSummaryRowBelow","showGridLines","HyperLink","Grouping","FreezePane","MergeCell","MergeCells","mergeCell","mCell","isIntersecting","intersectingCell","Width","Height","CellStyle","numFmtId","wrapText","Borders","isGlobalStyle","sz","strike","CellXfs","Alignment","CellStyleXfs","CellStyles","xfId","NumFmt","formatCode","mLine","mColor","Rows","Cells","Utils","bitConverterToInt32","bitConverterToInt16","bitConverterToUInt32","bitConverterToUInt16","bitConverterUintToInt32","bitConverterInt32ToUint","bitConverterInt32ToInt16","byteIntToString","arrayCopy","destinationIndex","dataToCopy","mergeArray","arrayOne","arrayTwo","mergedArray","encode2","encode3","encode4","DecompressorHuffmanTree","m_LengthTree","m_DistanceTree","prepareData","blCount","treeSize","MAX_BITLEN","treeFromData","tree","revcode","subTree","treeLen","m_Tree","unpackSymbol","lookahead","peekBits","skipBits","subtree","bitlen","availableBits","ChecksumUpdate","checkSumUInt","DEF_CHECKSUM_BIT_OFFSET","DEF_CHECKSUM_ITERATIONSCOUNT","DEF_CHECKSUM_BASE","ChecksumGenerate","CompressedStreamReader","bNoWrap","defaultHuffmanDynamicTree","DEF_HEADER_METHOD_MASK","DEF_HEADER_INFO_MASK","DEF_HEADER_FLAGS_FCHECK","DEF_HEADER_FLAGS_FDICT","DEF_HEADER_FLAGS_FLEVEL","DEF_MAX_WINDOW_SIZE","DEF_HUFFMAN_REPEATE_MAX","DEF_HUFFMAN_END_BLOCK","DEF_HUFFMAN_LENGTH_MINIMUMCODE","DEF_HUFFMAN_LENGTH_MAXIMUMCODE","DEF_HUFFMAN_DISTANCE_MAXIMUMCODE","mCheckSum","tBuffer","mBufferedBits","mTempBuffer","mBlockBuffer","mbNoWrap","mWindowSize","mCurrentPosition","mDataLength","mbCanReadNextBlock","mbCanReadMoreData","mbCheckSumRead","mInputStream","Stream","readZLibHeader","decodeBlockHeader","fillBuffer","bitMask","mBuffer","bytesRead","readBits","bFinalBlock","blockType","mbReadingUncompressed","skipToBoundary","readInt16Inverted","mUncompressedDataLength","mCurrentLengthTree","mCurrentDistanceTree","lengthTree","distanceTree","trees","decodeDynamicHeader","bLastSymbol","iLengthsCount","iDistancesCount","iCodeLengthsCount","iResultingCodeLengthsCount","arrResultingCodeLengths","arrDecoderCodeLengths","iCurrentCode","treeInternalDecoder","bNeedBreak","miRepSymbol","DEF_HUFFMAN_DYNTREE_REPEAT_BITS","DEF_HUFFMAN_DYNTREE_REPEAT_MINIMUMS","readHuffman","dataRead","readdata","numDataRead","iRepeatLength","DEF_HUFFMAN_REPEAT_LENGTH_BASE","iRepeatExtraBits","DEF_HUFFMAN_REPEAT_LENGTH_EXTENSION","extra","DEF_HUFFMAN_REPEAT_DISTANCE_BASE","iRepeatDistance","DEF_HUFFMAN_REPEAT_DISTANCE_EXTENSION","initialLength","inBlockPosition","oldDataLength","dataToRead","readPackedBytes","DEF_REVERSE_BITS","inputStream","toByteArray","CRC32TABLE","BufferSize","ZipArchive","initCrc32Table","files","file","ZipArchiveItem","addDirectory","directoryName","zipByteArray","lCentralDirEndPosition","findValueFromEnd","lCentralDirPosition","ReadInt32","readCentralDirectoryDataAndExtractItems","itemHelper","ZipArchiveItemHelper","readCentralDirectoryData","readData","checkCrc","decompressData","unCompressedStream","zipArchive","saveAsBlob","blob","skipFileSave","zipData","dirLength","getCompressedData","constructZippedObject","isDirectory","writeZippedContent","crc32Value","compressedData","compressedSize","uncompressedDataSize","compressionType","calculateCrc32Value","readAsArrayBuffer","crc32Table","compressor","zipParts","extFileAttr","writeHeader","localHeader","centralDir","writeCentralDirectory","zipHeader","getModifiedTime","getModifiedDate","localDirLen","cenDirLen","getArrayBuffer","writeFooter","externalFileAttribute","centralLength","localLength","modTime","modiDate","lStreamSize","arrBuffer","lLastPos","lCurrentPosition","uiCurValue","bFound","ReadInt16","ReadUInt16","headerSignature","crc32","compressionMethod","originalSize","iFileNameLength","iExtraFieldLenth","iCommentLength","externalAttributes","localHeaderOffset","m_strItemName","readLocalHeader","readCompressedData","decompressDataOld","decompressedData","compressedStream","iReadBytes","iNameLength","iExtraLength","dataStream","iBytesLeft","iBytesToRead","decompressedStream","CsvHelper","csvStr","globalStyles","worksheets","parseWorksheet","parseRows","parseRow","parseCell","csv","parseCellValue","dwlLink","encodeString","BlobHelper","getBlob","AutoFilters","Workbook","saveType","currencyString","sharedStringCount","unitsProportions","hyperlinkStyle","mSaveType","mArchive","sharedString","mFonts","mBorders","mStyles","printTitles","cellStyles","mNumFmt","mFills","mCellXfs","mCellStyleXfs","drawingCount","imageCount","parserCellStyle","cellStylesIn","tFormat","parserWorksheets","builtInProperties","BuiltInProperties","parserBuiltInProperties","csvHelper","jsonBuiltInProperties","author","comments","company","subject","createdDate","modifiedDate","jsonSheet","sheet","mergedCellsStyle","mHyperLinks","parserColumns","parserRows","parserFreezePanes","printTitle","parserPrintTitle","pageSetup","images","parserImages","autoFilters","parseFilters","hyperLinks","mergeOptions","applyProperties","sourceJson","destJson","getCellName","getColumnName","strColumnName","iCurrentDigit","titleRowName","titleColName","printTitleName","fromRow","toRow","fromColumn","toColumn","freezePanes","leftCell","columnsLength","rowsLength","parserRow","insertMergedCellsStyle","rowToInsert","createCell","insertIndex","styleIndex","cellToInsert","refName","grouping","parseGrouping","parseCells","outlineLevel","isCollapsed","cellsLength","spanMin","spanMax","cellId","jsonCell","hyperlink","getCellValueType","rId","formula","parseCellType","processMergeCells","spans","GetColors","processColor","colorVal","rgbColors","processCellValue","processedVal","startindex","processString","subString","subSplit","subSplit_1","applyGlobalStyle","defStyleIndex","parserBorder","leftBorder","rightBorder","topBorder","bottomBorder","switchNumberFormat","numFmt","cellStyleXfs","cellXfs","changeNumberFormats","returnFormat","processNumFormatId","compareResult","compareStyle","isNewFont","toCompareStyle","isNewBorder","bStyle","isAllBorder","toCompareBorder","allBorderStyle","baseStyle","toOADate","sstvalue","imagesLength","parserImage","horizontalFlip","verticalFlip","blobSaveType","proxyUrl","xlsxMatch","csvMatch","saveWorkbook","saveWorksheets","saveSharedString","saveStyles","saveApp","saveCore","saveContentType","saveTopLevelRelation","saveWorkbookRelation","workbookTemp","sheets","sheetName","printTitle_1","addToArchive","saveWorksheet","sheetBlob","sheetString","saveSheetView","colString","pixelsToColumnWidth","rowString","pixelsToRowHeight","_h","hLink","saveDrawings","saveSheetRelations","drawings","sheetDrawingString","imgId","pic","updatelastRowOffset","updatelastColumnOffSet","lastRowOffset","lastColOffset","convertBase64toImage","saveDrawingRelations","picture","iCurHeight","iCurRow","iCurOffset","iRowHeight","iSpaceInCell","rowHiddenHeight","iCurWidth","iCurCol","iColWidth","ColumnWidthToPixels","colHiddenWidth","byteStr","drawingRelation","pixels","dDigitWidth","trunc","fileWidth","relStr","paneString","sstStart","updateCellXfsStyleXfs","styleTemp","saveNumberFormats","saveFonts","saveFills","saveBorders","saveCellStyleXfs","saveCellXfs","saveCellStyles","compareFontResult","fontId","fillId","borderId","applyAlignment","numFmtStyle_1","fillsStyle","bordersStyle","cellStyleString","cellXfsStyle","cellStyleXf","saveAlignment","cellXf","alignString","appString","coreString","wbRelation","contentTypeString","sheetsOverride","drawingIndex","xmlString","archiveItem","updatedMergedCellStyles","sCell","eCell","dateToTicks","isLeapYear","timeToTicks","daysTo1899","ExcelExport","book","workSheet","rowLength","expType","isCsvExport","isElementIdChanged","grpFooterTemplates","footerTemplates","aggIndex","totalAggregates","isCsv","processRecords","exportingSuccess","processInnerRecords","groupedColLength","blankRows","isExportPropertiesPresent","processExcelHeader","organisedRows","organiseRows","processExcelFooter","enableFilter","headerRowLen","initialIndex","childRows","excelRows","gColumns","groupIndent","processHeaderContent","processRecordContent","capTemplate","currentViewRecords","excelRow","processRecordRows","processGroupedRows","getCaptionThemeStyle","groupCaptionSummaryRows","fillAggregates","lIndex","hIndex","tCell","templateRowHeight","gCell","fkData","excelCellArgs","setImage","getColumnStyle","detailCellIndex","processCell_1","getRecordThemeStyle","excelHAlign","excelVAlign","excelRotation","excelBorders","excelNumberFormat","excelType","excelDetailCells","detailCell","excelImage","excelExportProps","gRow","intent","rec","byGroup","groupSummaryRows","customIndex","columnsDetails","getAggreateValue","aggregateStyle","gridCellStyle","dummyGrouping","JSON1","JSON2","attrname","headerRotation","spannedCells","parseStyles","excelHeaderCellArgs","updateThemeStyle","themestyle","noRows","updatedCellIndex","footerRows","spannedCells_1","resizeClassList","Resize","tapped","isDblClk","resizeProcess","isCancelAutoFit","findColumn","isMaxWidthCount","newarray","getCellElementsByColumnIndex","resizeColumn","footerTable","footerTextClone","contentDivTag","footerDivTag","headerTextClone","contentTextClone","columnIndexByField","indentWidthClone","detailsElement","contentText","footerText","wHeader","wFooter","wContent","columnbyindex","colMaxWidth","calcTableWidth","refreshResizefrzCols","adaptiveClass","offsetWidthValue","refreshHeight","setHandlerHeight","getResizeHandlers","touchResizeStart","callAutoFit","getTargetColumn","cancelResizeAction","refreshColumnWidth","refreshStackedColumnWidth","parentElementWidth","appendHelper","getPointX","minMove","removeHelper","updateCursor","removeEvents","updateResizeEleHeight","getColData","refreshResizeFixedCols","colSpanwidth","calculateColspanWidth","isAutoFitCol","frzHdrRefresh","width_2","columnsRight","refreshGroupCaptionRow","capRow","getParticularCol","setHelperHeight","finalColumns","getSubColumns","calulateColumnsWidth","finalColumns_1","updateHelper","subColumns","isFrozenColResized","doubleTapEvent","columns_3","getStackedWidth","headerRows_1","calcPos","timeoutHandler","sortRequired","isAppliedGroup","isAppliedUnGroup","isAppliedCaptionRowBorder","reorderingColumns","animateDropper","draggableType","preventDrop","rearrangeGroup","dragField","dropTarget","dropField","dropIndex","dragIndex","addColToGroupDrop","addLabel","removeColFromGroupDrop","groupGenerator","dragLabel","dropArea","onGroupAggregates","updateExpand","grpRow","expandCollapseRows","applySortFromTarget","unGroupFromTarget","focusableGroupedHeaderItems","auxilaryclickHandler","addOrRemoveFocus","toogleGroupFromHeader","showToggleButton","gHeader","rowNodes","updateVirtualRows","captionExpand","captionCollapse","rowObjs","rowsState","cacheStartIdx","lastCaptionRowBorder","isCollapse","borderCells","nRows","actualRows","updatecloneRow","prevInfo","renderGroupDropArea","initDragAndDrop","refreshToggleBtn","groupElem","updateGroupDropArea","initializeGHeaderDrop","initializeGHeaderDrag","groupAddSortingQuery","animator","childDiv","showUngroupButton","createSeparator","getGHeaderCell","updateGroupedColumn","updateButtonVisibility","updateLazyLoadGroupAggregates","iterateGroupAggregates","updateSummaryRows","remoteResult","groupCaptionTemplates","groupFooterTemplates","groupedCols","groupLazyLoadRenderer","currentPageGroupCache","groupField","groupCaptionRowObject","getGroupCaptionRowObject","prevGroupField","prevGroupKey_1","updateLazyLoadGroupAggregatesRow","currentLevelCaptionRowObjects","filterCols","generateExpandPredicates","getPredicates","destroyRefreshGroupCaptionFooterTemplate","updatedGroupCaptionData","updateLazyLoadGroupAggregatesCell","groupFooterRowObject","captionFooterRowObject","captionFooterTemplates","prevCaptionFooterData","updatedGroupCaptionDataAggregates","groupCaptionIndex","parentCaptionRowObject","aggregateRows","aggr","fromRowObj","toRowObj","dropRow","dropArgs","groupReorderHandler","dropRObj","rowObjectDropIndex","orderChangeRowObjects","orderChangeRowObject","resetInfiniteCache","groupReorderRowObject","rowElement","resetCachedRowIndex","dragRowObject","dragRowObjectData","dropRowObjectData","groupAggregateTemplate","dropParentRowObject","dragParentRowObject","dropRootParentRowObjects","dragRootParentRowObjects","groupColumns","updatedCurrentViewData","dragRowObjects","dropRowObjects","updatedDragCurrentViewData","updatedDropCurrentViewData","updatedRowObject","dragRootParentAggregateRowObject","dropRootParentAggregateRowObject","getGroupParentFooterAggregateRowObject","updatedRowObjChange","groupReorderRefreshHandler","rootParentRowObjects","updatedRowObjects","isDraggedRow","virtualCacheRowObjects","keyPresent","parentRowObject","isParentKeyPresent","nextParentObject","groupedData","vIndex","evaluateGroupAggregateValueChange","vcIndex","parentRowObjects","parentFooterAggregates","gettingVirtualData","parentRowObjs","curViewRec","pK","draggedData_1","initData","dragParentRowObjects","dropParentRowObjects","dropRootKey","dragRootKey","isInfiniteGroup","deletedCols","changeds","mergeData","pKeyVal","cItem","eData","aggrds","types_1","lastGroupKey","groups_1","predicate_1","updatedGroupData","closestParent","menuClass","batchEdit","editIcon","pager","ungroup","excel","fPage","nPage","pPage","ascending","descending","groupHeader","touchPop","defaultItems","hiddenItems","setLocaleKey","enableAfterRenderMenu","contextMenuItemClick","contextMenuBeforeOpen","onOpen","contextMenuOpen","contextMenuOnClose","exportItems","getDefaultItems","buildDefaultItems","exportGroup","getLastPage","totalpage","getKeyFromId","targetColumn","rowInfo","targetRowdata","updateItemStatus","closestGrid","hideSepItems","showSepItems","dItem","ensureDisabledStatus","ensureTarget","ensureFrozenHeader","generateID","DatagridContext","usePhoneNumberIdUpdater","whatsappInfo","accountUpdated","datum","cleanPhoneNumber","display_phone_number","account","phoneNumber","phoneNumberId","updateResponse","put","onSelectionChange","headerQuery","datagridContext","phoneNumberIdUpdater","sendMessageToolbar","divStyle","CustomAdaptor","From","HeaderQuery","_args$error$","_args$error$2","_args$error$2$error","errorData","idUpdateData","exportableColumns","UnauthorizePage","situation","INPUTGROUP","FLOATINPUT","TOPLABEL","BOTTOMLABEL","regularExpressions","splitMask","splitInnerMask","pushIntoRegExpCollec","chkSpace","customRegExpCollec","promptChar","escapeMaskValue","promptMask","customCharacters","escapeNumber","applyMask","setMaskValue","maskInputKeyDownHandler","maskInputKeyPressHandler","maskInputKeyUpHandler","maskInputFocusHandler","maskInputBlurHandler","maskInputPasteHandler","maskInputCutHandler","maskInputDropHandler","maskInputMouseDownHandler","maskInputMouseUpHandler","redoCollec","triggerMaskChangeEvent","initInputValue","unstrippedValue","strippedValue","maskValues","checkMask","maskValue","_callPasteHandler","regExpCollec","maskedRegExp","isClicked","modelValue","toAllowForward","toAllowBackward","maskedValue","triggerFocus","backSelectionStart","sIndex_1","eIndex_1","oldValue_1","maskKeyPress","preValue_1","sIndex_2","undoCollec","removeMaskInputValues","addedValues","preEleVal","collec","mobileRemoveFunction","autoFillMaskInputValues","oldEventVal","isDeleted","initStartIndex","initEndIndex","curMask","deleteEndIndex","multipleDel","preValue","prompt_1","isIosInvalid","removeMaskError","startIndex_1","isSpace","preventUnsupportedValues","temp_1","mobileSwipeCheck","mobileValidation","eventOldVal","allowText","prevSupport","isEqualVal","keyValue","customValArr","applySupportedValues","addMaskErrorClass","changeToLowerUpperCase","sIdx","ctrl","chkSupport","curVal","caseCount","MASKINPUT_FOCUS","wrapperAttr","MaskedTextBox","maskOptions","resetMaskedTextBox","setMaskPlaceholder","getValidClassList","maskClassName","maskStyle","setVal","dynamicPlaceholder","isEnabled","strippedValue_1","strippedVal","getMaskedValue","MaskedTextBoxComponent","ComboBoxComponent","AccountsPage","setUrl","setFrom","fetchData","numericValue","formatPhoneNumber","CreditsPage","usersData","setUsersData","selectedUser","setSelectedUser","creditAmount","setCreditAmount","_error$response","fetchUsers","fetchCredits","onSubmit","userId","refreshGrid","CreditPage","creditSetting","setCreditSetting","rnds8","rng","uuid","REGEX","byteToHex","buf","rnds","AUTO_WIDTH","RESIZE_X","RESIZE_Y","RESIZE_XY","RESIZE_NONE","TextArea","textareaOptions","textareaWrapper","resizeMode","getCurrentResizeClass","setWrapperWidth","textareaObj","TextAreaComponent","TooltipComponent","onSelectContact","selectedContacts","setSelectedContacts","handleClose","SendMessagePage","selectedNumber","setSelectedNumber","setMessage","setIsModalOpen","_location$state","contact","firmName","envelopeId","uuidv4","errorMessages","successCount","failedCount","openModal","ContactModal","contacts","MessageStatusesPage","MessageDetailsPage","fetchUserTransactions","receipentPhoneNr","phoneRegex","_ref3","SettingsPage","oldPass","setOldPass","newPass","setNewPass","isEmailConfirmed","setIsEmailConfirmed","isFb","setIsFb","loadFbSDK","FB","crossOrigin","appId","autoLogAppEvents","xfbml","emailConfirmed","wabaid","fetchWabaData","fetchWabaId","businessId","patch","newEmail","newPassword","oldPassword","handleFacebookLogin","login","authResponse","businesses","fetchBusinessId","UserTransactionsPage","INPUT_WRAPPER","DROP_AREA","LIST_PARENT","FILE","STATUS","FILE_NAME","FILE_TYPE","FILE_SIZE","REMOVE_ICON","DELETE_ICON","SPINNER_PANE","ABORT_ICON","RETRY_ICON","DRAG_HOVER","PROGRESS_WRAPPER","PROGRESSBAR","PROGRESSBAR_TEXT","UPLOAD_INPROGRESS","UPLOAD_SUCCESS","UPLOAD_FAILED","TEXT_CONTAINER","VALIDATION_FAILS","RTL_CONTAINER","ICON_FOCUSED","PAUSE_UPLOAD","RESUME_UPLOAD","RESTRICT_RETRY","FORM_UPLOAD","INVALID_FILE","FilesProp","ButtonsProps","AsyncSettings","Uploader","initialAttr","uploadedFilesData","allTypes","pausedData","uploadMetaData","btnTabIndex","disableKeyboardNavigation","actionCompleteCount","selectedFiles","uploaderName","fileStreams","newFileRef","isFirstFileOnSelection","dragCounter","fileList","filesData","uploaderOptions","setExtensions","allowedExtensions","setControlStatus","setMultipleSelection","setRTL","reRenderFileList","browse","renderButtonTemplates","unBindDropEvents","updateDropArea","checkHTMLAttributes","renderPreLoadFiles","updateDirectoryAttributes","setLocalizedTexts","preLocaleObj","browseButton","localizedTexts","uploadWrapper","updateFileList","getKeyValue","autoUpload","uploadButton","internalCreateFileList","actionButtons","removeActionButtons","renderActionButtons","checkActionButtonStatus","Browse","Upload","invalidFileName","dropFilesHint","invalidMaxFileSize","invalidMinFileSize","invalidFileType","uploadFailedMessage","uploadSuccessMessage","removedSuccessMessage","removedFailedMessage","readyToUploadMessage","pauseUpload","pause","resume","retry","fileUploadCancel","invalidFileSelection","totalFiles","formRendered","browserName","directoryUpload","renderBrowseButton","initializeUpload","isPreloadFiles","wireActionButtonEvents","serverActionButtonsEventBind","unwireActionButtonEvents","uploadButtonClick","clearButtonClick","uploadText","dropAreaWrapper","setDropArea","clearData","files_1","fileData","rawFile","validationMessages","minSize","maxSize","statusCode","allowUpload","showFileList","sequentialUpload","dropTextArea","dropZoneElement","enableDropText","createDropTextHint","bindDropEvents","fileDropArea","uploadStyle","newAttr","createAttribute","setAttributeNode","checkAutoUpload","sequenceUpload","isFileListCreated","updatedOldCssClass","browseButtonClick","onSelectFiles","getCurrentMetaData","abortUpload","resumeUpload","chunkUpload","removeFiles","fileInfo","targetMetaData","dropElement","dragHover","onDragLeave","onPasteFile","onDragEnter","dropEffect","pasteFile","renderSelectedFiles","getAsFile","getSelectedFiles","allFiles","getFilesData","nameElements","formUpload","isFormUpload","getFilesInArray","spinnerTarget","uploadSequential","checkActionComplete","removeFilesData","getLiElement","removeUploadedFile","removeDirectly","ajax","asyncSettings","currentRequest","removingEventCallback","removeCompleted","removeFailed","postRawFile","updateFormData","customFormData","customData","updateCustomheader","getResponse","updateStatus","statusElement","getFilesFromFolder","filesEntries","checkDirectoryUpload","webkitGetAsEntry","files_2","fileObj","fullPath","traverseFileTree","directoryReader","createReader","readFileFromDirectory","readEntries","pushFilesEntries","targetFiles","sortFilesList","sortFileList","getBase64","fileReader","directory","isModified","modifiedFilesData","progressInterval","isCanceled","updateInitialFileDetails","sanitizeFile","sanitizeFileName","currentFileName","isUTF8","hasHTMLString","encodedFileName","checkExtension","_internalRenderSelect","fileDetails","getFileType","webkitRelativePath","validatedFileSize","fileSource","dataFiles","updateSortedFileList","raiseActionComplete","allowFormUpload","saveUrl","singleUpload","previousListClone","oldList","createParentUL","dropFiles","extensions_1","checkFileType","fileSize","minSizeError","maxSizeError","minFileSize","maxFileSize","isPreLoadFile","isPreload","createCustomfileList","fileData_1","listItem","uploadTemplateFn","liTempCompiler","eventsArgs","formFileList","statusMessage","fileContainer","fileData_2","fileNameEle","getFileNameOnly","fileTypeEle","fileType","rtlContainer","truncateName","formValidateFileInfo","setListToFileInfo","infoEle","bytesToSize","getFileSize","createFormInput","mergeFileInfo","addInvalidClass","typeValidationMessage","fileData_3","fileData_4","fileNames","fileData_5","statusForFormUpload","fileData_6","formCustomFileList","createFileList","fileData_7","fileExtension","preventActionComplete","getSlicedName","nameElement","fileData_8","setInitialAttributes","filterfileList","filterFiles","updateLiStatus","createProgressBar","progressbarWrapper","progressBar","progressbarInnerWrapper","progressbarText","updateProgressbar","changeProgressValue","uploadInProgress","customUI","cancelUploadingFile","updateProgressBarClasses","ajax_1","removecanceledFile","renderFailureState","removeProgressbar","deleteIcon","pauseButton","reloadcanceledFile","uploadComplete","raiseSuccessEvent","uploadFailed","spinnerEle","getSelectedFileStatus","matchFiles","matchFilesIndex","selectFileIndex","selectedFileData","fileDataIndex","callType","animateProgressBar","extensions","uploadTemplate","isMutiple","fileIndex","chunkIndex","retryCount","sendRequest","totalChunk","chunkUploadComplete","chunkUploadInProgress","currentChunkIndex","uploadingEventCallback","chunkUploadFailed","eventCancelByArgs","removeIcon","checkChunkUpload","requestResponse","updateMetaData","sendNextRequest","removeChunkFile","removeChunkProgressBar","pauseIcon","chunkCount","retryRequest","retryAfterDelay","file_1","failureMessage","checkPausePlayAction","retryUpload","fromcanceledStage","retryElement","progressVal","totalChunks","abortIcon","sortedFilesData","sortedFileNames_1","attributes_2","uploadFiles_1","uploadFiles","serverReadFileBase64","totalCount","uploadFileCount","getFileRead","fileCount","uploadFilesRequest","chunkEnabled","name_4","spliceFiles","beforeEventArgs","isLiRemoved","removingFiles_1","validUrl","fileUploadedIndex","removeFiles_1","fileDataFiles","pauseUploading","getFiles","resumeFiles","retryFailedFiles","cancelingFiles","cancelUpload","showHideUploadSpinner","UploaderComponent","failure","uploading","ContactsPage","alignSelf","TransactionDetailPage","NotFoundPage","createSearchParams","__reactRouterVersion","startTransitionImpl","BrowserRouter","historyRef","setStateImpl","v7_startTransition","newState","useSearchParams","defaultInit","defaultSearchParamsRef","hasSetSearchParamsRef","locationSearch","defaultSearchParams","getAll","getSearchParamsForLocation","setSearchParams","nextInit","navigateOptions","newSearchParams","ResetPasswordPage","resetCode","setResetCode","setNewPassword","confirmPassword","setConfirmPassword","setErrors","emailParam","tokenParam","uppercase","lowercase","special","validationErrors","validatePassword","_error$response$data$","InvalidToken","UsersPage","TextBoxComponent","ContactUsPage","setPhoneNumber","unmaskedPhoneNumber","messageContent","onValueChange","chipSet","chip","avatar","singleSelection","chipWrapper","ChipList","multiSelectedChip","chipType","chips","createChip","setRtl","selectedChips","rippleFunction","chipCreation","chipListArray","attributeArray","fieldsData","attributesValue","chipArray","elementCreation","avatarIconCss","avatarText","leadingIconCss","enableDelete","chipEnabled","trailingIconCss","leadingIconUrl","trailingIconUrl","chipAvatarElement","chipIconElement","chipTextElement","chipdeleteElement","chipIconsElement","chipData","chipElement","chipModel","chipsData","selectionType","callFromProperty","chipNodes","chipValue","chipElements","selectionHandler","chipElements_1","chipCollection_1","deleteHandler","getSelectedChips","focusInHandler","del","chipDataArgs","chipData_1","deletedItemArgs","selectedItemArgs","clickedItemArgs","updateSelectedChips","chipListEle","chipCollIndex","chipCollValue","deletedChipData","removeMultipleAttributes","ChipListComponent","UserLicencePage","setHeaderQuery","user","setUser","setType","setName","fetchLicences","fetchUser","orderTimestamp","endTimestamp","AdminsPage","ToastUtility","CONTAINER","TITLE","WIDTHFULL","MESSAGE","PROGRESS","CLOSEBTN","ToastPosition","ButtonModelProps","ToastAnimations","ToastAnimationSettings","Toast","toastCollection","isBlazorServer","progressObj","intervalId","contentTemplate","toastTemplate","initRenderClass","toastObj","collectionObj","templateChanges","toastContainer","getContainer","setPositioning","isToastModel","toastEle","setWidthHeight","personalizeToast","templateRendering","setProgress","setCloseButton","setAria","appendToTarget","hideToast","clearContentTemplate","clearToastTemplate","fetchEle","interactionType","newestOnTop","destroyToast","prob","tempVar","tmpArray","clo","clearProgress","removeToastContainer","clearContainerPos","customPosition","toastBeforeClose","hideAnimate","toastClose","toastBeforeCloseArgs","setIcon","setTitle","showCloseButton","hideEta","maxHideTime","timeOutId","extendedTimeout","toastHoverAction","delayedToastProgress","showProgressBar","progressBarEle","updateProgressBar","progressDirection","titleEle","msgContainer","tempEle_1","appendMessageContainer","actionBtnContainer","actionBtn","btnDom","toastBeforeOpen","toastBeforeOpenArgs","displayToast","clickToClose","isCloseIcon","toastClickArgs","showAnimate","toastOpen","toastContainerElement","untilToastsModel","ToastComponent","toastRef","UnsubscribePage","sendUnsubscribe","isAuthenticated","setIsAuthenticated","setIsSidebarOpen","isLoginPage","MainLayout","DashboardPage","MessagesPage","CreditSettingsPage","onPerfEntry","getCLS","getFID","getFCP","getLCP","getTTFB","App","reportWebVitals"],"sourceRoot":""}